This module defines the Irc::Client class, a class that can handle and dispatch messages based on RFC 2821 (Internet Relay Chat: Client Protocol)
| 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:
# "Try server <server name>, port <port number>" RPL_BOUNCE=005 |
|
| RPL_USERHOST | = | 302 |
":*1<reply> *( " " <reply> )"
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> )"
|
|
| 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>"
|
|
| RPL_SUMMONING | = | 342 |
"<user> :Summoning user to IRC"
|
|
| RPL_INVITELIST | = | 346 | "<channel> <invitemask>" | |
| RPL_ENDOFINVITELIST | = | 347 |
"<channel> :End of channel invite list"
|
|
| RPL_EXCEPTLIST | = | 348 | "<channel> <exceptionmask>" | |
| RPL_ENDOFEXCEPTLIST | = | 349 |
"<channel> :End of channel exception list"
|
|
| RPL_VERSION | = | 351 |
"<version>.<debuglevel> <server>
:<comments>"
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> )
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_REHASHING | = | 382 |
"<config file> :Rehashing"
|
|
| RPL_YOURESERVICE | = | 383 |
"You are service <servicename>"
|
|
| RPL_TIME | = | 391 |
"<server> :<string showing server‘s local
time>"
|
|
| 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>"
|
|
| RPL_STATSCOMMANDS | = | 212 |
"<command> <count> <byte count> <remote
count>"
|
|
| RPL_ENDOFSTATS | = | 219 | "<stats letter> :End of STATS report" | |
| RPL_STATSUPTIME | = | 242 |
":Server Up %d days %d:%02d:%02d"
|
|
| RPL_STATSOLINE | = | 243 |
"O <hostmask> * <name>"
|
|
| RPL_UMODEIS | = | 221 |
"<user mode string>"
|
|
| 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."
|
|
| ERR_NOSUCHNICK | = | 401 |
"<nickname> :No such nick/channel"
|
|
| ERR_NOSUCHSERVER | = | 402 |
"<server name> :No such server"
|
|
| ERR_NOSUCHCHANNEL | = | 403 |
"<channel name> :No such channel"
|
|
| ERR_CANNOTSENDTOCHAN | = | 404 |
"<channel name> :Cannot send to channel"
|
|
| ERR_TOOMANYCHANNELS | = | 405 |
"<channel name> :You have joined too many channels"
|
|
| ERR_WASNOSUCHNICK | = | 406 |
"<nickname> :There was no such nickname"
|
|
| ERR_TOOMANYTARGETS | = | 407 |
"<target> :<error code> recipients. <abort
message>"
|
|
| ERR_NOSUCHSERVICE | = | 408 |
"<service name> :No such service"
|
|
| ERR_NOORIGIN | = | 409 |
":No origin specified"
|
|
| 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"
|
|
| ERR_NOMOTD | = | 422 |
":MOTD File is missing"
|
|
| ERR_NOADMININFO | = | 423 |
"<server> :No administrative info available"
|
|
| ERR_FILEERROR | = | 424 |
":File error doing <file op> on <file>"
|
|
| ERR_NONICKNAMEGIVEN | = | 431 |
":No nickname given"
|
|
| ERR_ERRONEUSNICKNAME | = | 432 |
"<nick> :Erroneous nickname"
|
|
| ERR_NICKNAMEINUSE | = | 433 |
"<nick> :Nickname is already in use"
|
|
| ERR_NICKCOLLISION | = | 436 |
"<nick> :Nickname collision KILL from
<user>@<host>"
|
|
| ERR_UNAVAILRESOURCE | = | 437 |
"<nick/channel> :Nick/channel is temporarily unavailable"
|
|
| ERR_USERNOTINCHANNEL | = | 441 |
"<nick> <channel> :They aren‘t on that channel"
|
|
| ERR_NOTONCHANNEL | = | 442 |
"<channel> :You‘re not on that channel"
|
|
| ERR_USERONCHANNEL | = | 443 |
"<user> <channel> :is already on channel"
|
|
| ERR_NOLOGIN | = | 444 |
"<user> :User not logged in"
|
|
| ERR_SUMMONDISABLED | = | 445 |
":SUMMON has been disabled"
|
|
| ERR_USERSDISABLED | = | 446 |
":USERS has been disabled"
|
|
| ERR_NOTREGISTERED | = | 451 |
":You have not registered"
|
|
| ERR_NEEDMOREPARAMS | = | 461 |
"<command> :Not enough parameters"
|
|
| ERR_ALREADYREGISTRED | = | 462 |
":Unauthorized command (already registered)"
|
|
| ERR_NOPERMFORHOST | = | 463 |
":Your host isn‘t among the privileged"
|
|
| ERR_PASSWDMISMATCH | = | 464 |
":Password incorrect"
|
|
| ERR_YOUREBANNEDCREEP | = | 465 |
":You are banned from this server"
|
|
| ERR_YOUWILLBEBANNED | = | 466 |
|
|
| 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"
|
|
| ERR_CHANOPRIVSNEEDED | = | 482 |
"<channel> :You‘re not channel operator"
|
|
| ERR_CANTKILLSERVER | = | 483 |
":You can‘t kill a server!"
|
|
| ERR_RESTRICTED | = | 484 |
":Your connection is restricted!"
|
|
| ERR_UNIQOPPRIVSNEEDED | = | 485 |
":You‘re not the original channel operator"
|
|
| ERR_NOOPERHOST | = | 491 |
":No O-lines for your host"
|
|
| ERR_UMODEUNKNOWNFLAG | = | 501 |
":Unknown MODE flag"
|
|
| ERR_USERSDONTMATCH | = | 502 |
":Cannot change mode for other users"
|
|
| RPL_SERVICEINFO | = | 231 |
5.3 Reserved numerics
These numerics are not described above since they fall into one of the following categories:
|
|
| 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 |