irc is the top level namespace of libircpp, this contains all of the compoents required to use the library.
Namespaces | |
| ctcp | |
| CTCP namespace. | |
Classes | |
| class | channel |
| IRC channel class. More... | |
| class | connection |
| IRC connection class. More... | |
| struct | message |
| IRC message struct. More... | |
| struct | prefix |
| irc::message prefix. More... | |
| class | session |
| IRC session class. More... | |
| class | user |
| The user class models and IRC user. More... | |
|
strong |
Reply codes and errors.
RFC 2812: Error replies are found in the range from 400 to 599.
| Enumerator | |
|---|---|
| RPL_WELCOME |
RFC 2812: "Welcome to the Internet Relay Network <nick>!<user>@<host>". |
| RPL_YOURHOST |
RFC 2812: "Your host is <servername>, running version <ver>". |
| RPL_CREATED |
RFC 2812: "This server was created <date>". |
| RPL_MYINFO |
RFC 2812: "<servername> <version> <available user modes> <available channel modes>".
|
| RPL_BOUNCE |
RFC 2812: "Try server <server name>, port <port number>".
|
| RPL_TRACELINK |
RFC 2812: "Link <version & debug level> <destination> <next server> V<protocol version> <link uptime in seconds> <backstream sendq> <upstream sendq>". |
| RPL_TRACECONNECTING |
RFC 2812: "Try. <class> <server>". |
| RPL_TRACEHANDSHAKE |
RFC 2812: "H.S. <class> <server>". |
| RPL_TRACEUNKNOWN |
RFC 2812: "???? <class> [<client IP address in dot form>]". |
| RPL_TRACEOPERATOR |
RFC 2812: "Oper <class> <nick>". |
| RPL_TRACEUSER |
RFC 2812: "User <class> <nick>". |
| RPL_TRACESERVER |
RFC 2812: "Serv <class> <int>S <int>C <server> <nick!user|*!*>@<host|server> V<protocol version>". |
| RPL_TRACESERVICE |
RFC 2812: "Service <class> <name> <type> <active type>". |
| RPL_TRACENEWTYPE |
RFC 2812: "<newtype> 0 <client name>". |
| RPL_TRACECLASS |
RFC 2812: "Class <class> <count>". |
| RPL_TRACERECONNECT |
RFC 2812: Unused. |
| RPL_STATSLINKINFO |
RFC 2812: "<linkname> <sendq> <sent messages> <sent Kbytes> <received messages> <received Kbytes> <time open>".
|
| RPL_STATSCOMMANDS |
RFC 2812: "<command> <count> <byte count> <remote count>".
|
| RPL_STATSCLINE |
RFC 1459: "C <host> * <name> <port> <class>" RFC 2812: Unused / reserved / non-generic 'feature'. |
| RPL_STATSNLINE |
RFC 1459: "N <host> * <name> <port> <class>" RFC 2812: Unused / reserved / non-generic 'feature'. |
| RPL_STATSILINE |
RFC 1459: "I <host> * <host> <port> <class>" RFC 2812: Unused / reserved / non-generic 'feature'. |
| RPL_STATSKLINE |
RFC 1459: "K <host> * <username> <port> <class>" RFC 2812: Unused / reserved / non-generic 'feature'. |
| RPL_STATSQLINE |
RFC 1459,2812: Unused / reserved / non-generic 'feature'. |
| RPL_STATSYLINE |
RFC 1459: "Y <class> <ping frequency> <connect frequency> <max sendq>" RFC 2812: Unused / reserved / non-generic 'feature'. |
| RPL_ENDOFSTATS |
RFC 2812: "<stats letter> :End of STATS report". |
| RPL_UMODEIS |
RFC 2812: "<user mode string>".
|
| RPL_SERVICEINFO |
RFC 1459,2812: Unused / reserved / non-generic 'feature'. |
| RPL_ENDOFSERVICES |
RFC 1459,2812: Unused / reserved / non-generic 'feature'. |
| RPL_SERVICE |
RFC 1459,2812: Unused / reserved / non-generic 'feature'. |
| RPL_SERVLIST |
RFC 2812: "<name> <server> <mask> <type> <hopcount> <info>". |
| RPL_SERVLISTEND |
RFC 2812: "<mask> <type> :End of service listing".
|
| RPL_STATSVLINE |
RFC 2812: Unused / reserved / non-generic 'feature'. |
| RPL_STATSLLINE |
RFC 2812: Unused / reserved / non-generic 'feature'. |
| RPL_STATSUPTIME |
RFC 2812: ":Server Up %d days %d:%02d:%02d". |
| RPL_STATSOLINE |
RFC 2812: "O <hostmask> * <name>".
|
| RPL_STATSHLINE |
RFC 1459: "H <hostmask> * <servername>" RFC 2812: Unused / reserved / non-generic 'feature'. |
| RPL_STATSPING |
RFC 2812: Unused / reserved / non-generic 'feature'. |
| RPL_STATSBLINE |
RFC 2812: Unused / reserved / non-generic 'feature'. |
| RPL_STATSDLINE |
RFC 2812: Unused / reserved / non-generic 'feature'. |
| RPL_LUSERCLIENT |
RFC 2812: ":There are <integer> users and <integer> services on <integer> servers". |
| RPL_LUSEROP |
RFC 2812: "<integer> :operator(s) online". |
| RPL_LUSERUNKNOWN |
RFC 2812: "<integer> :unknown connection(s)". |
| RPL_LUSERCHANNELS |
RFC 2812: "<integer> :channels formed". |
| RPL_LUSERME |
RFC 2812: ":I have <integer> clients and <integer> servers".
|
| RPL_ADMINME |
RFC 2812: "<server> :Administrative info". |
| RPL_ADMINLOC1 |
RFC 2812:":<admin info>". |
| RPL_ADMINLOC2 |
RFC 2812: ":<admin info>". |
| RPL_ADMINEMAIL |
RFC 2812: ":<admin info>". |
| RPL_TRACELOG |
RFC 2812: "File <logfile> <debug level>".
|
| RPL_TRACEEND |
RFC 2812: "<server name> <version & debug level> :End of TRACE".
|
| RPL_TRYAGAIN |
RFC 2812: "<command> :Please wait a while and try again.".
|
| RPL_NONE |
RFC 1459: Dummy reply number, not used. RFC 2812: Unused / reserved / non-generic 'feature'. |
| RPL_AWAY |
RFC 2812: "<nick> :<away message>". |
| RPL_USERHOST |
RFC 2812: ":*1<reply> *( " " <reply> )".
|
| RPL_ISON |
RFC 2812: ":*1<nick> *( " " <nick> )".
|
| RPL_UNAWAY |
RFC 2812: ":You are no longer marked as being away". |
| RPL_NOWAWAY |
RFC 2812: ":You have been marked as being away".
|
| RPL_WHOISUSER |
RFC 2812: "<nick> <user> <host> * :<real name>". |
| RPL_WHOISSERVER |
RFC 2812: "<nick> <server> :<server info>". |
| RPL_WHOISOPERATOR |
RFC 2812: "<nick> :is an IRC operator". |
| RPL_WHOWASUSER |
RFC 2812: "<nick> <user> <host> * :<real name>". |
| RPL_ENDOFWHO |
RFC 2812: "<name> :End of WHO list".
|
| RPL_WHOISCHANOP |
RFC 1459,2812: Unused / reserved / non-generic 'feature'. |
| RPL_WHOISIDLE |
RFC 2812: "<nick> <integer> :seconds idle". |
| RPL_ENDOFWHOIS |
RFC 2812: "<nick> :End of WHOIS list". |
| RPL_WHOISCHANNELS |
RFC 2812: "<nick> :*( ( "" / "+" ) <channel> " " )".
|
| RPL_LISTSTART |
RFC 2812: Obsolete. Not used. |
| RPL_LIST |
RFC 2812: "<channel> <# visible> :<topic>". |
| RPL_LISTEND |
RFC 2812: ":End of LIST".
|
| RPL_CHANNELMODEIS |
RFC 2812: "<channel> <mode> <mode params>". |
| RPL_UNIQOPIS |
RFC 2812: "<channel> <nickname>". |
| RPL_NOTOPIC |
RFC 2812: "<channel> :No topic is set". |
| RPL_TOPIC |
RFC 2812: "<channel> :<topic>".
|
| RPL_INVITING |
RFC 2812: "<channel> <nick>".
|
| RPL_SUMMONING |
RFC 2812: "<user> :Summoning user to IRC".
|
| RPL_INVITELIST |
RFC 2812: "<channel> <invitemask>". |
| RPL_ENDOFINVITELIST |
RFC 2812: "<channel> :End of channel invite list".
|
| RPL_EXCEPTLIST |
RFC 2812: "<channel> <exceptionmask>". |
| RPL_ENDOFEXCEPTLIST |
RFC 2812: "<channel> :End of channel exception list".
|
| RPL_VERSION |
RFC 2812: "<version>.<debuglevel> <server> :<comments>".
The "comments" field may contain any comments about the version or further version details. |
| RPL_WHOREPLY |
RFC 2812: "<channel> <user> <host> <server> <nick> ( "H" / "G" > ["*"] [ ( "" / "+" ) ] :<hopcount> <real name>". |
| RPL_NAMREPLY |
RFC 2812: "( "=" / "*" / "" ) <channel> :[ "@" / "+" ] <nick> *( " " [ "@" / "+" ] <nick> )
|
| RPL_KILLDONE |
RFC 1459,2812: Unused / reserved / non-generic 'feature'. |
| RPL_CLOSING |
RFC 1459,2812: Unused / reserved / non-generic 'feature'. |
| RPL_CLOSEEND |
RFC 1459,2812: Unused / reserved / non-generic 'feature'. |
| RPL_LINKS |
RFC 2812: "<mask> <server> :<hopcount> <server info>". |
| RPL_ENDOFLINKS |
RFC 2812: "<mask> :End of LINKS list".
|
| RPL_ENDOFNAMES |
RFC 2812: "<channel> :End of NAMES list".
|
| RPL_BANLIST |
RFC 2812: "<channel> <banmask>". |
| RPL_ENDOFBANLIST |
RFC 2812: "<channel> :End of channel ban list".
|
| RPL_ENDOFWHOWAS |
RFC 2812: "<nick> :End of WHOWAS".
|
| RPL_INFO |
RFC 2812: ":<string>". |
| RPL_MOTD |
RFC 2812: ":- <text>". |
| RPL_INFOSTART |
RFC 1459,2812: Unused / reserved / non-generic 'feature'. |
| RPL_ENDOFINFO |
RFC 2812: ":End of INFO list".
|
| RPL_MOTDSTART |
RFC 2812: ":- <server> Message of the day - ". |
| RPL_ENDOFMOTD |
RFC 2812: ":End of MOTD command".
|
| RPL_YOUREOPER |
RFC 2812: ":You are now an IRC operator".
|
| RPL_REHASHING |
RFC 2812: "<config file> :Rehashing".
|
| RPL_YOURESERVICE |
RFC 2812: "You are service <servicename>".
|
| RPL_MYPORTIS |
RFC 1459,2812: Unused / reserved / non-generic 'feature'. |
| RPL_TIME |
RFC 2812: "<server> :<string showing server's local time>".
|
| RPL_USERSSTART |
RFC 2812: ":UserID Terminal Host". |
| RPL_USERS |
RFC 2812: ":<username> <ttyline> <hostname>". |
| RPL_ENDOFUSERS |
RFC 2812: ":End of users". |
| RPL_NOUSERS |
RFC 2812: ":Nobody logged in".
|
| ERR_NOSUCHNICK |
RFC 2812: "<nickname> :No such nick/channel".
|
| ERR_NOSUCHSERVER |
RFC 2812: "<server name> :No such server".
|
| ERR_NOSUCHCHANNEL |
RFC 2812: "<channel name> :No such channel".
|
| ERR_CANNOTSENDTOCHAN |
RFC 2812: "<channel name> :Cannot send to channel".
|
| ERR_TOOMANYCHANNELS |
RFC 2812: "<channel name> :You have joined too many channels".
|
| ERR_WASNOSUCHNICK |
RFC 2812: "<nickname> :There was no such nickname".
|
| ERR_TOOMANYTARGETS |
RFC 2812: "<target> :<error code> recipients. <abort message>".
|
| ERR_NOSUCHSERVICE |
RFC 2812: "<service name> :No such service".
|
| ERR_NOORIGIN |
RFC 2812: ":No origin specified".
|
| ERR_NORECIPIENT |
RFC 2812: ":No recipient given (<command>)". |
| ERR_NOTEXTTOSEND |
RFC 2812: ":No text to send". |
| ERR_NOTOPLEVEL |
RFC 2812: "<mask> :No toplevel domain specified". |
| ERR_WILDTOPLEVEL |
RFC 2812: "<mask> :Wildcard in toplevel domain". |
| ERR_BADMASK |
RFC 2812: "<mask> :Bad Server/host mask".
|
| ERR_UNKNOWNCOMMAND |
RFC 2812: "<command> :Unknown command".
|
| ERR_NOMOTD |
RFC 2812: ":MOTD File is missing".
|
| ERR_NOADMININFO |
RFC 2812: "<server> :No administrative info available".
|
| ERR_FILEERROR |
RFC 2812: ":File error doing <file op> on <file>".
|
| ERR_NONICKNAMEGIVEN |
RFC 2812: ":No nickname given".
|
| ERR_ERRONEUSNICKNAME |
RFC 2812: "<nick> :Erroneous nickname".
|
| ERR_NICKNAMEINUSE |
RFC 2812: "<nick> :Nickname is already in use".
|
| ERR_NICKCOLLISION |
RFC 2812: "<nick> :Nickname collision KILL from <user>@<host>".
|
| ERR_UNAVAILRESOURCE |
RFC 2812: "<nick/channel> :Nick/channel is temporarily unavailable".
|
| ERR_USERNOTINCHANNEL |
RFC 2812: "<nick> <channel> :They aren't on that channel".
|
| ERR_NOTONCHANNEL |
RFC 2812: "<channel> :You're not on that channel".
|
| ERR_USERONCHANNEL |
RFC 2812: "<user> <channel> :is already on channel".
|
| ERR_NOLOGIN |
RFC 2812: "<user> :User not logged in".
|
| ERR_SUMMONDISABLED |
RFC 2812: ":SUMMON has been disabled".
|
| ERR_USERSDISABLED |
RFC 2812: ":USERS has been disabled".
|
| ERR_NOTREGISTERED |
RFC 2812: ":You have not registered".
|
| ERR_NEEDMOREPARAMS |
RFC 2812: "<command> :Not enough parameters".
|
| ERR_ALREADYREGISTRED |
RFC 2812: ":Unauthorized command (already registered)".
|
| ERR_NOPERMFORHOST |
RFC 2812: ":Your host isn't among the privileged".
|
| ERR_PASSWDMISMATCH |
RFC 2812: ":Password incorrect".
|
| ERR_YOUREBANNEDCREEP |
RFC 2812: ":You are banned from this server".
|
| ERR_YOUWILLBEBANNED |
RFC 2812: - Sent by a server to a user to inform that access to the server will soon be denied. |
| ERR_KEYSET |
RFC 2812: "<channel> :Channel key already set". |
| ERR_CHANNELISFULL |
RFC 2812: "<channel> :Cannot join channel (+l)". |
| ERR_UNKNOWNMODE |
RFC 2812: "<char> :is unknown mode char to me for <channel>". |
| ERR_INVITEONLYCHAN |
RFC 2812: "<channel> :Cannot join channel (+i)". |
| ERR_BANNEDFROMCHAN |
RFC 2812: "<channel> :Cannot join channel (+b)". |
| ERR_BADCHANNELKEY |
RFC 2812: "<channel> :Cannot join channel (+k)". |
| ERR_BADCHANMASK |
RFC 2812: "<channel> :Bad Channel Mask". |
| ERR_NOCHANMODES |
RFC 2812: "<channel> :Channel doesn't support modes". |
| ERR_BANLISTFULL |
RFC 2812: "<channel> <char> :Channel list is full". |
| ERR_NOPRIVILEGES |
RFC 2812: ":Permission Denied- You're not an IRC operator".
|
| ERR_CHANOPRIVSNEEDED |
RFC 2812: "<channel> :You're not channel operator".
|
| ERR_CANTKILLSERVER |
RFC 2812: ":You can't kill a server!".
|
| ERR_RESTRICTED |
RFC 2812: ":Your connection is restricted!".
|
| ERR_UNIQOPPRIVSNEEDED |
RFC 2812: ":You're not the original channel operator".
|
| ERR_NOOPERHOST |
RFC 2812: ":No O-lines for your host".
|
| ERR_NOSERVICEHOST |
RFC 1459,2812: Unused / reserved / non-generic 'feature'. |
| ERR_UMODEUNKNOWNFLAG |
RFC 2812: ":Unknown MODE flag".
|
| ERR_USERSDONTMATCH |
RFC 2812: ":Cannot change mode for other users".
|
| error |
Parameters: <error message> The ERROR command is for use by servers when reporting a serious or fatal error to its peers. It may also be sent from one server to another but MUST NOT be accepted from any normal unknown clients. Only an ERROR message SHOULD be used for reporting errors which occur with a server-to-server link. An ERROR message is sent to the server at the other end (which reports it to appropriate local users and logs) and to appropriate local users and logs. It is not to be passed onto any other servers by a server if it is received from a server. The ERROR message is also used before terminating a client connection. When a server sends a received ERROR message to its operators, the message SHOULD be encapsulated inside a NOTICE message, indicating that the client was not responsible for the error. Numerics:
Examples: ERROR :Server *.fi already exists NOTICE WiZ :ERROR from csd.bu.edu – Server *.fi already exists |
| join |
Parameters: ( <channel> *( "," <channel> ) [ <key> *( "," <key> ) ] ) / "0". The JOIN command is used by a user to request to start listening to the specific channel. Servers MUST be able to parse arguments in the form of a list of target, but SHOULD NOT use lists when sending JOIN messages to clients. Once a user has joined a channel, he receives information about all commands his server receives affecting the channel. This includes command::join, command::mode, command::kick, command::part, command::quit and of course command::privmsg / command::notice. This allows channel members to keep track of the other channel members, as well as channel modes. If a JOIN is successful, the user receives a JOIN message as confirmation and is then sent the channel's topic (using RPL_TOPIC) and the list of users who are on the channel (using RPL_NAMREPLY), which MUST include the user joining. Note that this message accepts a special argument ("0"), which is a special request to leave all channels the user is currently a member of. The server will process this message as if the user had sent a command::part command (See Section 3.2.2) for each channel he is a member of. Numeric Replies:
Examples: JOIN #foobar JOIN &foo fubar |
| kick |
Parameters: <channel> *( "," <channel> ) <user> *( "," <user> ) [<comment>]. The KICK command can be used to request the forced removal of a user from a channel. It causes the <user> to PART from the <channel> by force. For the message to be syntactically correct, there MUST be either one channel parameter and multiple user parameter, or as many channel parameters as there are user parameters. If a "comment" is given, this will be sent instead of the default message, the nickname of the user issuing the KICK. The server MUST NOT send KICK messages with multiple channels or users to clients. This is necessarily to maintain backward compatibility with old client software. Numeric Replies:
Examples: KICK &Melbourne Matthew KICK #Finnish John :Speaking English :WiZ!jto@tolsun.oulu.fi KICK #Finnish John |
| mode |
Parameters: <nickname> *( ( "+" / "-" ) *( "i" / "w" / "o" / "O" / "r" ) ) The user MODE's are typically changes which affect either how the client is seen by others or what 'extra' messages the client is sent. A user MODE command MUST only be accepted if both the sender of the message and the nickname given as a parameter are both the same. If no other parameter is given, then the server will return the current settings for the nick. The available modes are as follows:
Additional modes may be available later on. The flag 'a' SHALL NOT be toggled by the user using the MODE command, instead use of the AWAY command is REQUIRED. If a user attempts to make themselves an operator using the "+o" or "+O" flag, the attempt SHOULD be ignored as users could bypass the authentication mechanisms of the OPER command. There is no restriction, however, on anyone `deopping' themselves (using "-o" or "-O"). On the other hand, if a user attempts to make themselves unrestricted using the "-r" flag, the attempt SHOULD be ignored. There is no restriction, however, on anyone `deopping' themselves (using "+r"). This flag is typically set by the server upon connection for administrative reasons. While the restrictions imposed are left up to the implementation, it is typical that a restricted user not be allowed to change nicknames, nor make use of the channel operator status on channels. The flag 's' is obsolete but MAY still be used. Numeric Replies:
Examples: MODE WiZ -w MODE Angel +i MODE WiZ -o |
| nick |
Parameters: <nickname> NICK command is used to give user a nickname or change the existing one. Numeric Replies:
Examples: NICK Wiz :WiZ!jto@tolsun.oulu.fi NICK Kilroy |
| notice |
Parameters: <msgtarget> <text> The NOTICE command is used similarly to PRIVMSG. The difference between NOTICE and PRIVMSG is that automatic replies MUST NEVER be sent in response to a NOTICE message. This rule applies to servers too
This command is available to services as well as users. This is typically used by services, and automatons (clients with either an AI or other interactive program controlling their actions).
|
| part |
Parameters: <channel> *( "," <channel> ) [ <Part Message> ]. The PART command causes the user sending the message to be removed from the list of active members for all given channels listed in the parameter string. If a "Part Message" is given, this will be sent instead of the default message, the nickname. This request is always granted by the server. Servers MUST be able to parse arguments in the form of a list of target, but SHOULD NOT use lists when sending PART messages to clients. Numeric Replies: Examples: PART #twilight_zone PART #oz-ops,&group5 :WiZ!jto@tolsun.oulu.fi PART #playzone :I lost |
| ping |
Parameters: <server1> [ <server2> ]. The PING command is used to test the presence of an active client or server at the other end of the connection. Servers send a PING message at regular intervals if no other activity detected coming from a connection. If a connection fails to respond to a PING message within a set amount of time, that connection is closed. A PING message MAY be sent even if the connection is active. When a PING message is received, the appropriate PONG message MUST be sent as reply to <server1> (server which sent the PING message out) as soon as possible. If the <server2> parameter is specified, it represents the target of the ping, and the message gets forwarded there. Numeric Replies: Examples: PING tolsun.oulu.fi PING WiZ tolsun.oulu.fi PING :irc.funet.fi |
| pong |
Parameters: <server> [ <server2> ]. PONG message is a reply to ping message. If parameter <server2> is given, this message MUST be forwarded to given target. The <server> parameter is the name of the entity who has responded to PING message and generated this message. Numeric Replies: Example: PONG csd.bu.edu tolsun.oulu.fi |
| privmsg |
Parameters: <msgtarget> <text to be sent> PRIVMSG is used to send private messages between users, as well as to send messages to channels. <msgtarget> is usually the nickname of the recipient of the message, or a channel name. The <msgtarget> parameter may also be a host mask (#<mask>) or server mask ($<mask>). In both cases the server will only send the PRIVMSG to those who have a server or host matching the mask. The mask MUST have at least 1 (one) "." in it and no wildcards following the last ".". This requirement exists to prevent people sending messages to "#*" or "$*", which would broadcast to all users. Wildcards are the '*' and '?' characters. This extension to the PRIVMSG command is only available to operators. Numeric Replies:
Examples: :Angel!wings@irc.org PRIVMSG Wiz :Are you receiving this message ? PRIVMSG Angel :yes I'm receiving it ! PRIVMSG jto@tolsun.oulu.fi :Hello ! PRIVMSG kaltmillennium.stealth.net@irc.stealth.net :Are you a frog? PRIVMSG kaltmillennium.stealth.net :Do you like cheese? PRIVMSG Wiz!jto@tolsun.oulu.fi :Hello ! PRIVMSG $*.fi :Server tolsun.oulu.fi rebooting. PRIVMSG #*.edu :NSFNet is undergoing work, expect interruptions |
| quit |
Parameters: [ <Quit Message> ]. A client session is terminated with a quit message. The server acknowledges this by sending an ERROR message to the client. Numeric Replies:
Example: QUIT :Gone to have lunch :syrk!kalt@millennium.stealth.net QUIT :Gone to have lunch |
| topic |
Parameters: <channel> [ <topic> ]. The TOPIC command is used to change or view the topic of a channel. The topic for channel <channel> is returned if there is no <topic> given. If the <topic> parameter is present, the topic for that channel will be changed, if this action is allowed for the user requesting it. If the <topic> parameter is an empty string, the topic for that channel will be removed. Numeric Replies:
Examples: :WiZ!jto@tolsun.oulu.fi TOPIC #test TOPIC #test :another topic TOPIC #test : TOPIC #test |