#include <libirc_events.h>
All the communication with the IRC network is based on events. Generally speaking, event is anything generated by someone else in the network, or by the IRC server itself. "Someone sends you a message", "Someone has joined the channel", "Someone has quits IRC" - all these messages are events.
Every event has its own event handler, which is called when the appropriate event is received. You don't have to define all the event handlers; define only the handlers for the events you need to intercept.
Most event callbacks are the types of irc_event_callback_t. There are also events, which generate irc_eventcode_callback_t, irc_event_dcc_chat_t and irc_event_dcc_send_t callbacks.
The "channel" event is triggered upon receipt of a PRIVMSG message to an entire channel, which means that someone on a channel with the client has said something aloud. Your own messages don't trigger PRIVMSG event.
origin | the person, who generates the message. | |
params[0] | mandatory, contains the channel name. | |
params[1] | optional, contains the message text |
The "channel_notice" event is triggered upon receipt of a NOTICE message which means that someone has sent the client a public notice. According to RFC 1459, the only difference between NOTICE and PRIVMSG is that you should NEVER automatically reply to NOTICE messages. Unfortunately, this rule is frequently violated by IRC servers itself - for example, NICKSERV messages require reply, and are NOTICEs.
origin | the person, who generates the message. | |
params[0] | mandatory, contains the channel name. | |
params[1] | optional, contains the message text |
The "on_connect" event is triggered when the client successfully connects to the server, and could send commands to the server. No extra params supplied; params is 0.
The "action" event is triggered when the client receives the CTCP ACTION message. These messages usually looks like:
[23:32:55] * Tim gonna sleep.
origin | the person, who generates the message. | |
params[0] | mandatory, the ACTION message. |
The "ctcp" event is triggered when the client receives the CTCP reply.
origin | the person, who generates the message. | |
params[0] | mandatory, the CTCP message itself with its arguments. |
The "ctcp" event is triggered when the client receives the CTCP request. By default, the built-in CTCP request handler is used. The build-in handler automatically replies on most CTCP messages, so you will rarely need to override it.
origin | the person, who generates the message. | |
params[0] | mandatory, the complete CTCP message, including its arguments. |
libirc_event_ctcp_internal
function to see how to write your own CTCP request handler. Also you may find useful this question in FAQ: What is CTCP, and why do I need my own handler?
The "dcc chat" event is triggered when someone requests a DCC CHAT from you.
See the params in irc_event_dcc_chat_t specification.
The "dcc chat" event is triggered when someone wants to send a file to you via DCC SEND request.
See the params in irc_event_dcc_send_t specification.
The "invite" event is triggered upon receipt of an INVITE message, which means that someone is permitting the client's entry into a +i channel.
origin | the person, who INVITEs you. | |
params[0] | mandatory, contains your nick. | |
params[1] | mandatory, contains the channel name you're invited into. |
The "join" event is triggered upon receipt of a JOIN message, which means that someone has entered a channel that the client is on.
origin | the person, who joins the channel. By comparing it with your own nickname, you can check whether your JOIN command succeed. | |
params[0] | mandatory, contains the channel name. |
The "kick" event is triggered upon receipt of a KICK message, which means that someone on a channel with the client (or possibly the client itself!) has been forcibly ejected.
origin | the person, who kicked the poor. | |
params[0] | mandatory, contains the channel name. | |
params[0] | optional, contains the nick of kicked person. | |
params[1] | optional, contains the kick text |
The "mode" event is triggered upon receipt of a channel MODE message, which means that someone on a channel with the client has changed the channel's parameters.
origin | the person, who changed the channel mode. | |
params[0] | mandatory, contains the channel name. | |
params[1] | mandatory, contains the changed channel mode, like '+t', '-i' and so on. | |
params[2] | optional, contains the mode argument (for example, a key for +k mode, or user who got the channel operator status for +o mode) |
The "nick" event is triggered when the client receives a NICK message, meaning that someone (including you) on a channel with the client has changed their nickname.
origin | the person, who changes the nick. Note that it can be you! | |
params[0] | mandatory, contains the new nick. |
The "notice" event is triggered upon receipt of a NOTICE message which means that someone has sent the client a public or private notice. According to RFC 1459, the only difference between NOTICE and PRIVMSG is that you should NEVER automatically reply to NOTICE messages. Unfortunately, this rule is frequently violated by IRC servers itself - for example, NICKSERV messages require reply, and are NOTICEs.
origin | the person, who generates the message. | |
params[0] | mandatory, contains the target nick name. | |
params[1] | optional, contains the message text |
The "numeric" event is triggered upon receipt of any numeric response from the server. There is a lot of such responses, see the full list here: Numeric reply codes from RFC1459.
See the params in irc_eventcode_callback_t specification.
The "part" event is triggered upon receipt of a PART message, which means that someone has left a channel that the client is on.
origin | the person, who leaves the channel. By comparing it with your own nickname, you can check whether your PART command succeed. | |
params[0] | mandatory, contains the channel name. | |
params[1] | optional, contains the reason message (user-defined). |
The "privmsg" event is triggered upon receipt of a PRIVMSG message which is addressed to one or more clients, which means that someone is sending the client a private message.
origin | the person, who generates the message. | |
params[0] | mandatory, contains your nick. | |
params[1] | optional, contains the message text |
The "quit" event is triggered upon receipt of a QUIT message, which means that someone on a channel with the client has disconnected.
origin | the person, who is disconnected | |
params[0] | optional, contains the reason message (user-specified). |
The "topic" event is triggered upon receipt of a TOPIC message, which means that someone on a channel with the client has changed the channel's topic.
origin | the person, who changes the channel topic. | |
params[0] | mandatory, contains the channel name. | |
params[1] | optional, contains the new topic. |
The "umode" event is triggered upon receipt of a user MODE message, which means that your user mode has been changed.
origin | the person, who changed the channel mode. | |
params[0] | mandatory, contains the user changed mode, like '+t', '-i' and so on. |
The "unknown" event is triggered upon receipt of any number of unclassifiable miscellaneous messages, which aren't handled by the library.