module Irc
The move of everything rbot-related to the Irc::Bot::* namespace from Irc::* would cause off-repo plugins to fail if they register any configuration key, so we have to handle this case.
- Author
-
Giuseppe Bilotta (giuseppe.bilotta@gmail.com)
- Author
-
Giuseppe “Oblomov” Bilotta <giuseppe.bilotta@gmail.com>
- Author
-
Giuseppe “Oblomov” Bilotta <giuseppe.bilotta@gmail.com>
This file collects methods to handle 'stream filters', a generic mechanism to transform text+attributes into other text+attributes
- Author
-
Giuseppe “Oblomov” Bilotta <giuseppe.bilotta@gmail.com>
These routines read a string and return the number of seconds they represent.
This module takes care of language handling for rbot: setting the core.language value, loading the appropriate .lang file etc.
This module defines the Irc::Client class, a class that can handle and dispatch messages based on RFC 2821 (Internet Relay Chat: Client Protocol)
Constants
- AttributeRx
- Bold
Define standard IRC attriubtes (not so standard actually, but the closest thing we have …)
- Color
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.
- ColorCode
Standard color codes
- ColorRx
- Config
- ERR_ALREADYREGISTRED
“: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_BADCHANMASK
“<channel> :Bad Channel Mask”
- ERR_BADCHANNELKEY
“<channel> :Cannot join channel (+k)”
- ERR_BADMASK
“<mask> :Bad Server/host mask”
- ERR_BANLISTFULL
“<channel> <char> :Channel list is full”
- ERR_BANNEDFROMCHAN
“<channel> :Cannot join channel (+b)”
- ERR_CANNOTSENDTOCHAN
“<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_CANTKILLSERVER
“: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_CHANNELISFULL
“<channel> :Cannot join channel (+l)”
- ERR_CHANOPRIVSNEEDED
“<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_ERRONEUSNICKNAME
“<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_FILEERROR
“:File error doing <file op> on <file>”
-
Generic error message used to report a failed file operation during the processing of a message.
-
- ERR_INVITEONLYCHAN
“<channel> :Cannot join channel (+i)”
- ERR_KEYSET
“<channel> :Channel key already set”
- ERR_NEEDMOREPARAMS
“<command> :Not enough parameters”
-
Returned by the server by numerous commands to indicate to the client that it didn't supply enough parameters.
-
- ERR_NICKCOLLISION
“<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_NICKNAMEINUSE
“<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_NOADMININFO
“<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_NOCHANMODES
“<channel> :Channel doesn't support modes”
- ERR_NOLOGIN
“<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_NOMOTD
“:MOTD File is missing”
-
Server's MOTD file could not be opened by the server.
-
- ERR_NONICKNAMEGIVEN
“:No nickname given”
-
Returned when a nickname parameter expected for a command and isn't found.
-
- ERR_NOOPERHOST
“: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_NOORIGIN
“:No origin specified”
-
PING or PONG message missing the originator parameter.
-
- ERR_NOPERMFORHOST
“: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_NOPRIVILEGES
“: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_NORECIPIENT
“:No recipient given (<command>)”
- ERR_NOSERVICEHOST
- ERR_NOSUCHCHANNEL
“<channel name> :No such channel”
-
Used to indicate the given channel name is invalid.
-
- ERR_NOSUCHNICK
“<nickname> :No such nick/channel”
-
Used to indicate the nickname parameter supplied to a command is currently unused.
-
- ERR_NOSUCHSERVER
“<server name> :No such server”
-
Used to indicate the server name given currently does not exist.
-
- ERR_NOSUCHSERVICE
“<service name> :No such service”
-
Returned to a client which is attempting to send a SQUERY to a service which does not exist.
-
- ERR_NOTEXTTOSEND
“:No text to send”
- ERR_NOTONCHANNEL
“<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_NOTOPLEVEL
“<mask> :No toplevel domain specified”
- ERR_NOTREGISTERED
“: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_PASSWDMISMATCH
“: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_RESTRICTED
“: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_SUMMONDISABLED
“:SUMMON has been disabled”
-
Returned as a response to the SUMMON command. MUST be returned by any server which doesn't implement it.
-
- ERR_TOOMANYCHANNELS
“<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_TOOMANYTARGETS
“<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_UMODEUNKNOWNFLAG
“: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_UNAVAILRESOURCE
“<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_UNIQOPPRIVSNEEDED
“: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_UNKNOWNCOMMAND
“<command> :Unknown command”
-
Returned to a registered client to indicate that the command sent is unknown by the server.
-
- ERR_UNKNOWNMODE
“<char> :is unknown mode char to me for <channel>”
- ERR_USERNOTINCHANNEL
“<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_USERONCHANNEL
“<user> <channel> :is already on channel”
-
Returned when a client tries to invite a user to a channel they are already on.
-
- ERR_USERSDISABLED
“:USERS has been disabled”
-
Returned as a response to the USERS command. MUST be returned by any server which does not implement it.
-
- ERR_USERSDONTMATCH
“: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.
-
- ERR_WASNOSUCHNICK
“<nickname> :There was no such nickname”
-
Returned by WHOWAS to indicate there is no history information for that nickname.
-
- ERR_WILDTOPLEVEL
“<mask> :Wildcard in toplevel domain”
- ERR_YOUREBANNEDCREEP
“: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
-
Sent by a server to a user to inform that access to the server will soon be denied.
-
- FormattingRx
- Italic
- NormalText
- RPL_ADMINEMAIL
“:<admin info>”
- RPL_ADMINLOC1
“:<admin info>”
- RPL_ADMINLOC2
“:<admin info>”
- RPL_ADMINME
“<server> :Administrative info”
- RPL_AWAY
“<nick> :<away message>”
- RPL_BANLIST
“<channel> <banmask>”
- RPL_CHANNELMODEIS
“<channel> <mode> <mode params>”
- RPL_CHANNEL_URL
“<channel> <url>”
- RPL_CLOSEEND
- RPL_CLOSING
- RPL_CREATED
“This server was created <date>”
- RPL_CREATIONTIME
“<channel> <unixtime>”
- RPL_DATASTR
- RPL_ENDOFBANLIST
“<channel> :End of channel ban list”
- RPL_ENDOFEXCEPTLIST
“<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_ENDOFINFO
“:End of INFO list”
- RPL_ENDOFINVITELIST
“<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_ENDOFLINKS
“<mask> :End of LINKS list”
- RPL_ENDOFMOTD
“:End of MOTD command”
- RPL_ENDOFNAMES
“<channel> :End of NAMES list”
- RPL_ENDOFSERVICES
- RPL_ENDOFSTATS
“<stats letter> :End of STATS report”
- RPL_ENDOFUSERS
“:End of users”
- RPL_ENDOFWHO
“<name> :End of WHO list”
- RPL_ENDOFWHOIS
“<nick> :End of WHOIS list”
- RPL_ENDOFWHOWAS
“<nick> :End of WHOWAS”
- RPL_EXCEPTLIST
“<channel> <exceptionmask>”
- RPL_GLOBALUSERS
“:Current global users: 3 Max: 4”
- RPL_INFO
“:<string>”
- RPL_INFOSTART
- RPL_INVITELIST
“<channel> <invitemask>”
- RPL_INVITING
“<channel> <nick>”
-
Returned by the server to indicate that the attempted INVITE message was successful and is being passed onto the end client.
-
- RPL_ISON
“:*1<nick> *( ” “ <nick> )”
-
Reply format used by ISON to list replies to the query list.
-
- RPL_ISUPPORT
“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_KILLDONE
- RPL_LINKS
“<mask> <server> :<hopcount> <server info>”
- RPL_LIST
“<channel> <# visible> :<topic>”
- RPL_LISTEND
“:End of LIST”
- RPL_LISTSTART
Obsolete. Not used.
- RPL_LOCALUSERS
“:Current local users: 3 Max: 4”
- RPL_LUSERCHANNELS
“<integer> :channels formed”
- RPL_LUSERCLIENT
“:There are <integer> users and <integer> services on <integer> servers”
- RPL_LUSERME
“:I have <integer> clients and <integer> servers”
- RPL_LUSEROP
“<integer> :operator(s) online”
- RPL_LUSERUNKNOWN
“<integer> :unknown connection(s)”
- RPL_MOTD
“:- <text>”
- RPL_MOTDSTART
“:- <server> Message of the day - ”
- RPL_MYINFO
“<servername> <version> <available user modes> <available channel modes>”
- RPL_MYPORTIS
- RPL_NAMREPLY
“( ”=“ / ”*“ / ”@“ ) <channel> :[ ”@“ / ”+“ ] <nick> *( ” “ [ ”@“ / ”+“ ] <nick> )
-
“@” is used for secret channels, “*” for private
channels, and “=” for others (public channels).
-
- RPL_NONE
- RPL_NOTOPIC
“<channel> :No topic is set”
- RPL_NOUSERS
“:Nobody logged in”
- RPL_NOWAWAY
“:You have been marked as being away”
- RPL_REHASHING
“<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_SERVICE
- RPL_SERVICEINFO
5.3 Reserved numerics
These numerics are not described above since they fall into one of the following categories:
-
no longer in use;
-
reserved for future planned use;
-
in current use but are part of a non-generic 'feature' of the current IRC server.
-
- RPL_SERVLIST
“<name> <server> <mask> <type> <hopcount> <info>”
- RPL_SERVLISTEND
“<mask> <type> :End of service listing”
- RPL_STATSBLINE
- RPL_STATSCLINE
- RPL_STATSCOMMANDS
“<command> <count> <byte count> <remote count>”
-
reports statistics on commands usage.
-
- RPL_STATSCONN
“::Highest connection count: 4 (4 clients) (251 since server was (re)started)”
- RPL_STATSHLINE
- RPL_STATSILINE
- RPL_STATSKLINE
- RPL_STATSLINKINFO
“<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_STATSLLINE
- RPL_STATSNLINE
- RPL_STATSOLINE
“O <hostmask> * <name>”
-
reports the allowed hosts from where user may become IRC operators.
-
- RPL_STATSPING
- RPL_STATSQLINE
- RPL_STATSSLINE
- RPL_STATSUPTIME
“:Server Up %d days %d:%02d:%02d”
-
reports the server uptime.
-
- RPL_STATSVLINE
- RPL_STATSYLINE
- RPL_SUMMONING
“<user> :Summoning user to IRC”
-
Returned by a server answering a SUMMON message to indicate that it is summoning that user.
-
- RPL_TIME
“<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_TOPIC
“<channel> :<topic>”
- RPL_TOPIC_INFO
<channel> <set by> <unixtime>
- RPL_TRACECLASS
“Class <class> <count>”
- RPL_TRACECONNECTING
“Try. <class> <server>”
- RPL_TRACEEND
“<server name> <version & debug level> :End of TRACE”
- RPL_TRACEHANDSHAKE
“H.S. <class> <server>”
- RPL_TRACELINK
“Link <version & debug level> <destination> <next server> V<protocol version> <link uptime in seconds> <backstream sendq> <upstream sendq>”
- RPL_TRACELOG
“File <logfile> <debug level>”
- RPL_TRACENEWTYPE
“<newtype> 0 <client name>”
- RPL_TRACEOPERATOR
“Oper <class> <nick>”
- RPL_TRACERECONNECT
Unused.
- RPL_TRACESERVER
“Serv <class> <int>S <int>C <server> <nick!user|*!*>@<host|server> V<protocol version>”
- RPL_TRACESERVICE
“Service <class> <name> <type> <active type>”
- RPL_TRACEUNKNOWN
“???? <class> [<client IP address in dot form>]”
- RPL_TRACEUSER
“User <class> <nick>”
- RPL_TRYAGAIN
“<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.
-
- RPL_UMODEIS
“<user mode string>”
-
To answer a query about a client's own mode, RPL_UMODEIS is sent back.
-
- RPL_UNAWAY
“:You are no longer marked as being away”
- RPL_UNIQOPIS
“<channel> <nickname>”
- RPL_USERHOST
“:*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_USERS
“:<username> <ttyline> <hostname>”
- RPL_USERSSTART
“:UserID Terminal Host”
- RPL_VERSION
“<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_WELCOME
“Welcome to the Internet Relay Network <nick>!<user>@<host>”
- RPL_WHOISCHANNELS
“<nick> :*( ( ”@“ / ”+“ ) <channel> ” “ )”
- RPL_WHOISCHANOP
- RPL_WHOISIDLE
“<nick> <integer> :seconds idle”
- RPL_WHOISOPERATOR
“<nick> :is an IRC operator”
- RPL_WHOISSERVER
“<nick> <server> :<server info>”
- RPL_WHOISUSER
“<nick> <user> <host> * :<real name>”
- RPL_WHOREPLY
“<channel> <user> <host> <server> <nick> ( ”H“ / ”G“ > [”*“] [ ( ”@“ / ”+“ ) ] :<hopcount> <real name>”
- RPL_WHOWASUSER
“<nick> <user> <host> * :<real name>”
- RPL_YOUREOPER
“: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_YOURESERVICE
“You are service <servicename>”
-
Sent by the server to a service upon successful registration.
-
- RPL_YOURHOST
“Your host is <servername>, running version <ver>”
- Reverse
- Underline
Public Class Methods
Insert the full color code for a given foreground/background combination.
# File lib/rbot/message.rb, line 98 def Irc.color(fg=nil,bg=nil) str = Color.dup if fg str << Irc.find_color(fg) end if bg str << "," << Irc.find_color(bg) end return str end