summaryrefslogtreecommitdiff
path: root/lib/rbot/rfc2812.rb
AgeCommit message (Collapse)Author
2009-01-08rfc2812: better handling of incomplete mode linesGiuseppe Bilotta
Sometimes the bot may receive incomplete or malformed mode lines. This can be seen for example by kicking repeatedly and at very short intervals the bot from a channel with +l set to some numbers (at least on freenode). We (don't) handle these malformed modelines by skipping them rather than crashing.
2009-01-07rfc2812: handle server ERRORGiuseppe Bilotta
2008-08-11rfc2812: always return the actual Channel or User when handledGiuseppe Bilotta
For consistency, all delegations now return the actual Channel object in data[:channel] and the actual User object in data[:nick].
2008-08-11rfc2812: handle ERR_NOSUCHNICK and ERR_NOSUCHCHANNELGiuseppe Bilotta
Delete the corresponding user/channel from the server list (if present), and notify the client about the error.
2008-08-11rfc2812: create channels and users for al commands when neededGiuseppe Bilotta
Always create a user or channel when we receive information about it. This makes server message parsing much more robust (no more crashes about NilClass not having user/channel methods) but has a few subtle implications about the server state: for example, channels may exist in the Server object even when the bot is not in the channel itself.
2008-08-10+ handle WHOIS queriesGiuseppe Bilotta
The bot now exposes a whois(nick) method to make WHOIS queries to the server. The extended syntax whois(nick, server) is also supported, allowing another server to be queried (this is useful to retrieve info which is only available on nick's server, such as idle time and signon date). Most if not all RFC-compliant replies are handled, although some of the data received is currently ignored. Non-RFC extended replies such as nickserv identification status are not hanlded yet, since they are highly server-specific, both in numeric reply choice (e.g. 307 vs 320) and in reply message syntax and meaning. A new WhoisMessage is also introduced, for plugin delegation. The source is the originating server, the target is the user for which information was requested. A #whois() method is provided holding all retrieved information.
2008-08-10rfc2812.rb: support RPL_AWAY replyGiuseppe Bilotta
2008-08-09+ support channel URL and creation timeGiuseppe Bilotta
2008-06-28New IRC framework: allow RPL_TOPIC(_INFO) for channels we are not on, since ↵Giuseppe Bilotta
some networks allow it
2008-06-23rfc2812.rb: skip unknown channel modes altogetherGiuseppe Bilotta
Some servers set non-advertized channel modes. Since we cannot handle them (as we don't know what type they are) and setting them crashes the bot, we remove them.
2008-06-23rfc2812.rb: warn about unhandled numeric replies tooGiuseppe Bilotta
2008-06-23rfc2812.rb: refactor MODE parsing to use it for RPL_CHANNELMODEIS (324) tooGiuseppe Bilotta
2008-06-18rfc2812: be compatible with ruby < 1.8.7Giuseppe Bilotta
String#each_char is only available in ruby 1.8.7, so use each_byte followed by .chr
2008-06-18rfc2812: fix MODE line parsingGiuseppe Bilotta
2008-05-01rfc2812.rb: handle mode changes like -o+bGiuseppe Bilotta
2008-04-13rfc2812: parse User mode changes, even though they aren't handled yetGiuseppe Bilotta
2008-04-13rfc2812: clean up channel mode handlingGiuseppe Bilotta
2008-04-12+ WelcomeMessage classGiuseppe Bilotta
2008-03-11Documentation cleanupsGiuseppe Bilotta
Fix typos, be more rdocish, and use the README as the main file
2008-02-15rfc2812: fix a bug in Client.resetGiuseppe Bilotta
similarly to commit a13ef0352, an empty user should be set with *!*@*
2008-02-13rfc2812: fix a bug in Client.user initializationGiuseppe Bilotta
2007-11-06New Irc Framework: methods to convert channel user modes (op, voice, etc) ↵Giuseppe Bilotta
from mode (o, v, ...) to prefix (@, +, ...) and back
2007-09-13more rdoc-ificationGiuseppe Bilotta
2007-07-31Store the real_name information from WHO repliesGiuseppe Bilotta
2007-07-31New IRC Framework: WHO the channels we join, so that we get as much user ↵Giuseppe Bilotta
information as possible about the user on channel
2007-05-10Be slightly less anal about non-RFC-compliant MOTD, and issue a warning ↵Giuseppe Bilotta
instead of causing an error further down
2007-04-06New IRC Framework: topic setter should be a Netmask, not a User. Also ↵Giuseppe Bilotta
improve display of Netmasks with unknown (generic) user/host components
2007-04-06* (rfc2812) fixed 'Welcome' message parsingDmitry Kim
2007-03-16Server hostname was not being set properlyGiuseppe Bilotta
2007-03-08Previous attempt at cleaning up the prefix matcher were too restrictive, try ↵Giuseppe Bilotta
using a different approach
2007-03-05Previous commit wasn't that good, too restrictive. Relax, and differentiate ↵Giuseppe Bilotta
between user id and mask
2007-03-05Rework netmask/hostname detection code to work around non-RFC-compliant serversGiuseppe Bilotta
2007-02-20Use ASCII KCODE to prevent problems like missing characters or matching ↵Giuseppe Bilotta
failures when clients send messages in something else than UTF-8
2007-02-20New IRC Framework: bot now keeps track of his nick correctly across disconnectsGiuseppe Bilotta
2007-02-18Initial steps towards a namespace rationalizationGiuseppe Bilotta
2007-02-18Plugin header boilerplating.Giuseppe Bilotta
New plugin.header file provided, to be used as model for the header of new plugins. Many existing plugins have been adjusted to provide the same info the same way. I might have misplaced some information, so please let me know if this is the case. Also augmented a couple of copyright notices to include the 'rbot development team' alongside Tom Gilbert.
2007-02-18More fixes for nickname handling on connectionGiuseppe Bilotta
2007-02-17New IRC Framework: optimize processing of server messages by using Symbols ↵Giuseppe Bilotta
instead of Strings, and try a better fix for mismatching nicks on Welcome messages
2007-02-17New IRC Framework: fix initial handling and guessing of nick/user/host for ↵Giuseppe Bilotta
the bot on connection
2007-02-10Handle server connections (e.g. through a bip proxy) that do not use the ↵Giuseppe Bilotta
full user hostmask as a prefix of user messages
2007-01-06Irc framework: fix errors in filling up the user lists for channelsGiuseppe Bilotta
2006-10-28Move irc_send_penalty method of string in ircsocket.rb, and rework flood ↵Giuseppe Bilotta
control to be more reactive while still preventing excessive flood disconnections
2006-10-27Penalty-based flood protectionGiuseppe Bilotta
2006-08-20Improve NOTICE and PRIVMSG robustness when target is not a simple channel or ↵Giuseppe Bilotta
user
2006-08-10Fix exception when a QUITting user was not in the first channel of the list ↵Giuseppe Bilotta
of channels
2006-08-05Fix a disconnect on topic changeGiuseppe Bilotta
2006-08-04Commit [369] was bogus. This one cleans up and sanitizes the Irc framework.Giuseppe Bilotta
2006-08-04Fix stupid bug introduced with the new debugging messages. switch to ↵Giuseppe Bilotta
kind_of? instead of .class<=
2006-08-03Fix bug when users changed nickGiuseppe Bilotta
2006-08-03Lots of fixes all around, in preparation for the new auth coremoduleGiuseppe Bilotta