Module Irc
In: lib/rbot/botuser.rb
lib/rbot/config-compat.rb
lib/rbot/config.rb
lib/rbot/dbhash.rb
lib/rbot/irc.rb
lib/rbot/ircbot.rb
lib/rbot/ircsocket.rb
lib/rbot/language.rb
lib/rbot/maskdb.rb
lib/rbot/message.rb
lib/rbot/messagemapper.rb
lib/rbot/pkgconfig.rb
lib/rbot/plugins.rb
lib/rbot/rbotconfig.rb
lib/rbot/registry.rb
lib/rbot/rfc2812.rb

This module defines the Irc::Client class, a class that can handle and dispatch messages based on RFC 2821 (Internet Relay Chat: Client Protocol)

Methods

color   find_color  

Classes and Modules

Module Irc::BotConfig
Module Irc::PKGConfig
Module Irc::ServerOrCasemap
Class Irc::AsciiCasemap
Class Irc::BasicUserMessage
Class Irc::Bot
Class Irc::Casemap
Class Irc::Channel
Class Irc::ChannelList
Class Irc::Client
Class Irc::DBHash
Class Irc::DBTree
Class Irc::InviteMessage
Class Irc::JoinMessage
Class Irc::KickMessage
Class Irc::MessageQueue
Class Irc::ModeChangeMessage
Class Irc::MotdMessage
Class Irc::NamesMessage
Class Irc::Netmask
Class Irc::NetmaskDb
Class Irc::NetmaskList
Class Irc::NickMessage
Class Irc::NoticeMessage
Class Irc::PartMessage
Class Irc::PrivMessage
Class Irc::QueueRing
Class Irc::QuitMessage
Class Irc::RfcCasemap
Class Irc::Server
Class Irc::Socket
Class Irc::StrictRfcCasemap
Class Irc::TopicMessage
Class Irc::UnknownMessage
Class Irc::User
Class Irc::UserList
Class Irc::UserMessage
Class Irc::WelcomeMessage
Class Irc::WhoisMessage

Constants

Config = Bot::Config
Bold = "\002"   Define standard IRC attriubtes (not so standard actually, but the closest thing we have …)
Underline = "\037"
Reverse = "\026"
Italic = "\011"
NormalText = "\017"
AttributeRx = /#{Bold}|#{Underline}|#{Reverse}|#{Italic}|#{NormalText}/
Color = "\003"   Color is prefixed by \003 and followed by optional foreground and background specifications, two-digits-max numbers separated by a comma. One of the two parts must be present.
ColorRx = /#{Color}\d?\d?(?:,\d\d?)?/
FormattingRx = /#{AttributeRx}|#{ColorRx}/
ColorCode = { :black => 1, :blue => 2, :navyblue => 2, :navy_blue => 2, :green => 3, :red => 4, :brown => 5, :purple => 6, :olive => 7, :yellow => 8, :limegreen => 9, :lime_green => 9, :teal => 10, :aqualight => 11, :aqua_light => 11, :royal_blue => 12, :hotpink => 13, :hot_pink => 13, :darkgray => 14, :dark_gray => 14, :lightgray => 15, :light_gray => 15, :white => 16   Standard color codes
RPL_WELCOME = 001   "Welcome to the Internet Relay Network <nick>!<user>@<host>"
RPL_YOURHOST = 002   "Your host is <servername>, running version <ver>"
RPL_CREATED = 003   "This server was created <date>"
RPL_MYINFO = 004   "<servername> <version> <available user modes> <available channel modes>"
RPL_ISUPPORT = 005   "005 nick PREFIX=(ov)@+ CHANTYPES=#& :are supported by this server"

defines the capabilities supported by the server.

Previous RFCs defined message 005 as follows:

  • Sent by the server to a user to suggest an alternative server. This is often used when the connection is refused because the server is already full.

# "Try server <server name>, port <port number>"

RPL_BOUNCE=005

RPL_USERHOST = 302   ":*1<reply> *( " " <reply> )"
  • Reply format used by USERHOST to list replies to the query list. The reply string is composed as follows:

reply = nickname [ "*" ] "=" ( "+" / "-" ) hostname

The ’*’ indicates whether the client has registered as an Operator. The ’-’ or ’+’ characters represent whether the client has set an AWAY message or not respectively.

RPL_ISON = 303   ":*1<nick> *( " " <nick> )"
  • Reply format used by ISON to list replies to the query list.
RPL_AWAY = 301   "<nick> :<away message>"
RPL_UNAWAY = 305   ":You are no longer marked as being away"
RPL_NOWAWAY = 306   ":You have been marked as being away"
RPL_WHOISUSER = 311   "<nick> <user> <host> * :<real name>"
RPL_WHOISSERVER = 312   "<nick> <server> :<server info>"
RPL_WHOISOPERATOR = 313   "<nick> :is an IRC operator"
RPL_WHOISIDLE = 317   "<nick> <integer> :seconds idle"
RPL_ENDOFWHOIS = 318   "<nick> :End of WHOIS list"
RPL_WHOISCHANNELS = 319   "<nick> :*( ( "@" / "+" ) <channel> " " )"
RPL_WHOWASUSER = 314   "<nick> <user> <host> * :<real name>"
RPL_ENDOFWHOWAS = 369   "<nick> :End of WHOWAS"
RPL_LISTSTART = 321   Obsolete. Not used.
RPL_LIST = 322   "<channel> <# visible> :<topic>"
RPL_LISTEND = 323   ":End of LIST"
RPL_UNIQOPIS = 325   "<channel> <nickname>"
RPL_CHANNELMODEIS = 324   "<channel> <mode> <mode params>"
RPL_CREATIONTIME = 329   "<channel> <unixtime>"
RPL_CHANNEL_URL = 328   "<channel> <url>"
RPL_NOTOPIC = 331   "<channel> :No topic is set"
RPL_TOPIC = 332   "<channel> :<topic>"
RPL_TOPIC_INFO = 333   <channel> <set by> <unixtime>
RPL_INVITING = 341   "<channel> <nick>"
  • Returned by the server to indicate that the attempted INVITE message was successful and is being passed onto the end client.
RPL_SUMMONING = 342   "<user> :Summoning user to IRC"
  • Returned by a server answering a SUMMON message to indicate that it is summoning that user.
RPL_INVITELIST = 346   "<channel> <invitemask>"
RPL_ENDOFINVITELIST = 347   "<channel> :End of channel invite list"
  • When listing the ‘invitations masks’ for a given channel, a server is required to send the list back using the RPL_INVITELIST and RPL_ENDOFINVITELIST messages. A separate RPL_INVITELIST is sent for each active mask. After the masks have been listed (or if none present) a RPL_ENDOFINVITELIST MUST be sent.
RPL_EXCEPTLIST = 348   "<channel> <exceptionmask>"
RPL_ENDOFEXCEPTLIST = 349   "<channel> :End of channel exception list"
  • When listing the ‘exception masks’ for a given channel, a server is required to send the list back using the RPL_EXCEPTLIST and RPL_ENDOFEXCEPTLIST messages. A separate RPL_EXCEPTLIST is sent for each active mask. After the masks have been listed (or if none present) a RPL_ENDOFEXCEPTLIST MUST be sent.
RPL_VERSION = 351   "<version>.<debuglevel> <server> :<comments>"
  • Reply by the server showing its version details.

The <version> is the version of the software being used (including any patchlevel revisions) and the <debuglevel> is used to indicate if the server is running in "debug mode".

The "comments" field may contain any comments about the version or further version details.

RPL_WHOREPLY = 352   "<channel> <user> <host> <server> <nick> ( "H" / "G" > ["*"] [ ( "@" / "+" ) ] :<hopcount> <real name>"
RPL_ENDOFWHO = 315   "<name> :End of WHO list"
RPL_NAMREPLY = 353   "( "=" / "*" / "@" ) <channel> :[ "@" / "+" ] <nick> *( " " [ "@" / "+" ] <nick> )
  • "@" is used for secret channels, "*" for private

channels, and "=" for others (public channels).

RPL_ENDOFNAMES = 366   "<channel> :End of NAMES list"
RPL_LINKS = 364   "<mask> <server> :<hopcount> <server info>"
RPL_ENDOFLINKS = 365   "<mask> :End of LINKS list"
RPL_BANLIST = 367   "<channel> <banmask>"
RPL_ENDOFBANLIST = 368   "<channel> :End of channel ban list"
RPL_INFO = 371   ":<string>"
RPL_ENDOFINFO = 374   ":End of INFO list"
RPL_MOTDSTART = 375   ":- <server> Message of the day - "
RPL_MOTD = 372   ":- <text>"
RPL_ENDOFMOTD = 376   ":End of MOTD command"
RPL_YOUREOPER = 381   ":You are now an IRC operator"
  • RPL_YOUREOPER is sent back to a client which has just successfully issued an OPER message and gained operator status.
RPL_REHASHING = 382   "<config file> :Rehashing"
  • If the REHASH option is used and an operator sends a REHASH message, an RPL_REHASHING is sent back to the operator.
RPL_YOURESERVICE = 383   "You are service <servicename>"
  • Sent by the server to a service upon successful registration.
RPL_TIME = 391   "<server> :<string showing server‘s local time>"
  • When replying to the TIME message, a server MUST send the reply using the RPL_TIME format above. The string showing the time need only contain the correct day and time there. There is no further requirement for the time string.
RPL_USERSSTART = 392   ":UserID Terminal Host"
RPL_USERS = 393   ":<username> <ttyline> <hostname>"
RPL_ENDOFUSERS = 394   ":End of users"
RPL_NOUSERS = 395   ":Nobody logged in"
RPL_TRACELINK = 200   "Link <version & debug level> <destination> <next server> V<protocol version> <link uptime in seconds> <backstream sendq> <upstream sendq>"
RPL_TRACECONNECTING = 201   "Try. <class> <server>"
RPL_TRACEHANDSHAKE = 202   "H.S. <class> <server>"
RPL_TRACEUNKNOWN = 203   "???? <class> [<client IP address in dot form>]"
RPL_TRACEOPERATOR = 204   "Oper <class> <nick>"
RPL_TRACEUSER = 205   "User <class> <nick>"
RPL_TRACESERVER = 206   "Serv <class> <int>S <int>C <server> <nick!user|*!*>@<host|server> V<protocol version>"
RPL_TRACESERVICE = 207   "Service <class> <name> <type> <active type>"
RPL_TRACENEWTYPE = 208   "<newtype> 0 <client name>"
RPL_TRACECLASS = 209   "Class <class> <count>"
RPL_TRACERECONNECT = 210   Unused.
RPL_TRACELOG = 261   "File <logfile> <debug level>"
RPL_TRACEEND = 262   "<server name> <version & debug level> :End of TRACE"
RPL_LOCALUSERS = 265   ":Current local users: 3 Max: 4"
RPL_GLOBALUSERS = 266   ":Current global users: 3 Max: 4"
RPL_STATSCONN = 250   "::Highest connection count: 4 (4 clients) (251 since server was (re)started)"
RPL_STATSLINKINFO = 211   "<linkname> <sendq> <sent messages> <sent Kbytes> <received messages> <received Kbytes> <time open>"
  • reports statistics on a connection. <linkname> identifies the particular connection, <sendq> is the amount of data that is queued and waiting to be sent <sent messages> the number of messages sent, and <sent Kbytes> the amount of data sent, in Kbytes. <received messages> and <received Kbytes> are the equivalent of <sent messages> and <sent Kbytes> for received data, respectively. <time open> indicates how long ago the connection was opened, in seconds.
RPL_STATSCOMMANDS = 212   "<command> <count> <byte count> <remote count>"
  • reports statistics on commands usage.
RPL_ENDOFSTATS = 219   "<stats letter> :End of STATS report"
RPL_STATSUPTIME = 242   ":Server Up %d days %d:%02d:%02d"
  • reports the server uptime.
RPL_STATSOLINE = 243   "O <hostmask> * <name>"
  • reports the allowed hosts from where user may become IRC operators.
RPL_UMODEIS = 221   "<user mode string>"
  • To answer a query about a client‘s own mode, RPL_UMODEIS is sent back.
RPL_SERVLIST = 234   "<name> <server> <mask> <type> <hopcount> <info>"
RPL_SERVLISTEND = 235   "<mask> <type> :End of service listing"
RPL_LUSERCLIENT = 251   ":There are <integer> users and <integer> services on <integer> servers"
RPL_LUSEROP = 252   "<integer> :operator(s) online"
RPL_LUSERUNKNOWN = 253   "<integer> :unknown connection(s)"
RPL_LUSERCHANNELS = 254   "<integer> :channels formed"
RPL_LUSERME = 255   ":I have <integer> clients and <integer> servers"
RPL_ADMINME = 256   "<server> :Administrative info"
RPL_ADMINLOC1 = 257   ":<admin info>"
RPL_ADMINLOC2 = 258   ":<admin info>"
RPL_ADMINEMAIL = 259   ":<admin info>"
RPL_TRYAGAIN = 263   "<command> :Please wait a while and try again."
  • When a server drops a command without processing it, it MUST use the reply RPL_TRYAGAIN to inform the originating client.
ERR_NOSUCHNICK = 401   "<nickname> :No such nick/channel"
  • Used to indicate the nickname parameter supplied to a command is currently unused.
ERR_NOSUCHSERVER = 402   "<server name> :No such server"
  • Used to indicate the server name given currently does not exist.
ERR_NOSUCHCHANNEL = 403   "<channel name> :No such channel"
  • Used to indicate the given channel name is invalid.
ERR_CANNOTSENDTOCHAN = 404   "<channel name> :Cannot send to channel"
  • Sent to a user who is either (a) not on a channel which is mode +n or (b) not a chanop (or mode +v) on a channel which has mode +m set or where the user is banned and is trying to send a PRIVMSG message to that channel.
ERR_TOOMANYCHANNELS = 405   "<channel name> :You have joined too many channels"
  • Sent to a user when they have joined the maximum number of allowed channels and they try to join another channel.
ERR_WASNOSUCHNICK = 406   "<nickname> :There was no such nickname"
  • Returned by WHOWAS to indicate there is no history information for that nickname.
ERR_TOOMANYTARGETS = 407   "<target> :<error code> recipients. <abort message>"
  • Returned to a client which is attempting to send a PRIVMSG/NOTICE using the user@host destination format and for a user@host which has several occurrences.
  • Returned to a client which trying to send a PRIVMSG/NOTICE to too many recipients.
  • Returned to a client which is attempting to JOIN a safe channel using the shortname when there are more than one such channel.
ERR_NOSUCHSERVICE = 408   "<service name> :No such service"
  • Returned to a client which is attempting to send a SQUERY to a service which does not exist.
ERR_NOORIGIN = 409   ":No origin specified"
  • PING or PONG message missing the originator parameter.
ERR_NORECIPIENT = 411   ":No recipient given (<command>)"
ERR_NOTEXTTOSEND = 412   ":No text to send"
ERR_NOTOPLEVEL = 413   "<mask> :No toplevel domain specified"
ERR_WILDTOPLEVEL = 414   "<mask> :Wildcard in toplevel domain"
ERR_BADMASK = 415   "<mask> :Bad Server/host mask"
ERR_UNKNOWNCOMMAND = 421   "<command> :Unknown command"
  • Returned to a registered client to indicate that the command sent is unknown by the server.
ERR_NOMOTD = 422   ":MOTD File is missing"
  • Server‘s MOTD file could not be opened by the server.
ERR_NOADMININFO = 423   "<server> :No administrative info available"
  • Returned by a server in response to an ADMIN message when there is an error in finding the appropriate information.
ERR_FILEERROR = 424   ":File error doing <file op> on <file>"
  • Generic error message used to report a failed file operation during the processing of a message.
ERR_NONICKNAMEGIVEN = 431   ":No nickname given"
  • Returned when a nickname parameter expected for a command and isn‘t found.
ERR_ERRONEUSNICKNAME = 432   "<nick> :Erroneous nickname"
  • Returned after receiving a NICK message which contains characters which do not fall in the defined set. See section 2.3.1 for details on valid nicknames.
ERR_NICKNAMEINUSE = 433   "<nick> :Nickname is already in use"
  • Returned when a NICK message is processed that results in an attempt to change to a currently existing nickname.
ERR_NICKCOLLISION = 436   "<nick> :Nickname collision KILL from <user>@<host>"
  • Returned by a server to a client when it detects a nickname collision (registered of a NICK that already exists by another server).
ERR_UNAVAILRESOURCE = 437   "<nick/channel> :Nick/channel is temporarily unavailable"
  • Returned by a server to a user trying to join a channel currently blocked by the channel delay mechanism.
  • Returned by a server to a user trying to change nickname when the desired nickname is blocked by the nick delay mechanism.
ERR_USERNOTINCHANNEL = 441   "<nick> <channel> :They aren‘t on that channel"
  • Returned by the server to indicate that the target user of the command is not on the given channel.
ERR_NOTONCHANNEL = 442   "<channel> :You‘re not on that channel"
  • Returned by the server whenever a client tries to perform a channel affecting command for which the client isn‘t a member.
ERR_USERONCHANNEL = 443   "<user> <channel> :is already on channel"
  • Returned when a client tries to invite a user to a channel they are already on.
ERR_NOLOGIN = 444   "<user> :User not logged in"
  • Returned by the summon after a SUMMON command for a user was unable to be performed since they were not logged in.
ERR_SUMMONDISABLED = 445   ":SUMMON has been disabled"
  • Returned as a response to the SUMMON command. MUST be returned by any server which doesn‘t implement it.
ERR_USERSDISABLED = 446   ":USERS has been disabled"
  • Returned as a response to the USERS command. MUST be returned by any server which does not implement it.
ERR_NOTREGISTERED = 451   ":You have not registered"
  • Returned by the server to indicate that the client MUST be registered before the server will allow it to be parsed in detail.
ERR_NEEDMOREPARAMS = 461   "<command> :Not enough parameters"
  • Returned by the server by numerous commands to indicate to the client that it didn‘t supply enough parameters.
ERR_ALREADYREGISTRED = 462   ":Unauthorized command (already registered)"
  • Returned by the server to any link which tries to change part of the registered details (such as password or user details from second USER message).
ERR_NOPERMFORHOST = 463   ":Your host isn‘t among the privileged"
  • Returned to a client which attempts to register with a server which does not been setup to allow connections from the host the attempted connection is tried.
ERR_PASSWDMISMATCH = 464   ":Password incorrect"
  • Returned to indicate a failed attempt at registering a connection for which a password was required and was either not given or incorrect.
ERR_YOUREBANNEDCREEP = 465   ":You are banned from this server"
  • Returned after an attempt to connect and register yourself with a server which has been setup to explicitly deny connections to you.
ERR_YOUWILLBEBANNED = 466  
  • Sent by a server to a user to inform that access to the server will soon be denied.
ERR_KEYSET = 467   "<channel> :Channel key already set"
ERR_CHANNELISFULL = 471   "<channel> :Cannot join channel (+l)"
ERR_UNKNOWNMODE = 472   "<char> :is unknown mode char to me for <channel>"
ERR_INVITEONLYCHAN = 473   "<channel> :Cannot join channel (+i)"
ERR_BANNEDFROMCHAN = 474   "<channel> :Cannot join channel (+b)"
ERR_BADCHANNELKEY = 475   "<channel> :Cannot join channel (+k)"
ERR_BADCHANMASK = 476   "<channel> :Bad Channel Mask"
ERR_NOCHANMODES = 477   "<channel> :Channel doesn‘t support modes"
ERR_BANLISTFULL = 478   "<channel> <char> :Channel list is full"
ERR_NOPRIVILEGES = 481   ":Permission Denied- You‘re not an IRC operator"
  • Any command requiring operator privileges to operate MUST return this error to indicate the attempt was unsuccessful.
ERR_CHANOPRIVSNEEDED = 482   "<channel> :You‘re not channel operator"
  • Any command requiring ‘chanop’ privileges (such as MODE messages) MUST return this error if the client making the attempt is not a chanop on the specified channel.
ERR_CANTKILLSERVER = 483   ":You can‘t kill a server!"
  • Any attempts to use the KILL command on a server are to be refused and this error returned directly to the client.
ERR_RESTRICTED = 484   ":Your connection is restricted!"
  • Sent by the server to a user upon connection to indicate the restricted nature of the connection (user mode "+r").
ERR_UNIQOPPRIVSNEEDED = 485   ":You‘re not the original channel operator"
  • Any MODE requiring "channel creator" privileges MUST return this error if the client making the attempt is not a chanop on the specified channel.
ERR_NOOPERHOST = 491   ":No O-lines for your host"
  • If a client sends an OPER message and the server has not been configured to allow connections from the client‘s host as an operator, this error MUST be returned.
ERR_UMODEUNKNOWNFLAG = 501   ":Unknown MODE flag"
  • Returned by the server to indicate that a MODE message was sent with a nickname parameter and that the a mode flag sent was not recognized.
ERR_USERSDONTMATCH = 502   ":Cannot change mode for other users"
  • Error sent to any user trying to view or change the user mode for a user other than themselves.
RPL_SERVICEINFO = 231   5.3 Reserved numerics

These numerics are not described above since they fall into one of the following categories:

  1. no longer in use;
  2. reserved for future planned use;
  3. in current use but are part of a non-generic ‘feature’ of the current IRC server.
RPL_ENDOFSERVICES = 232
RPL_SERVICE = 233
RPL_NONE = 300
RPL_WHOISCHANOP = 316
RPL_KILLDONE = 361
RPL_CLOSING = 362
RPL_CLOSEEND = 363
RPL_INFOSTART = 373
RPL_MYPORTIS = 384
RPL_STATSCLINE = 213
RPL_STATSNLINE = 214
RPL_STATSILINE = 215
RPL_STATSKLINE = 216
RPL_STATSQLINE = 217
RPL_STATSYLINE = 218
RPL_STATSVLINE = 240
RPL_STATSLLINE = 241
RPL_STATSHLINE = 244
RPL_STATSSLINE = 244
RPL_STATSPING = 246
RPL_STATSBLINE = 247
ERR_NOSERVICEHOST = 492
RPL_DATASTR = 290

Public Class methods

Insert the full color code for a given foreground/background combination.

Convert a String or Symbol into a color number

[Validate]