======================== :mod:`irc3.rfc` RFC1459 ======================== Replies (REPL) ============== 259 - RPL_ADMINEMAIL -------------------- Format ``:{srv} 259 {nick} :{admin_info}`` Match ``^:(?P\S+) 259 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ADMINEMAIL) def myevent(bot, srv=None, me=None, data=None): # do something 257 - RPL_ADMINLOC1 ------------------- Format ``:{srv} 257 {nick} :{admin_info}`` Match ``^:(?P\S+) 257 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ADMINLOC1) def myevent(bot, srv=None, me=None, data=None): # do something 258 - RPL_ADMINLOC2 ------------------- Format ``:{srv} 258 {nick} :{admin_info}`` Match ``^:(?P\S+) 258 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ADMINLOC2) def myevent(bot, srv=None, me=None, data=None): # do something 256 - RPL_ADMINME ----------------- Format ``:{srv} 256 {nick} {server} :Administrative info`` Match ``^:(?P\S+) 256 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ADMINME) def myevent(bot, srv=None, me=None, server=None, data=None): # do something 301 - RPL_AWAY -------------- Format ``:{srv} 301 {nick} {nick} :{away_message}`` Match ``^:(?P\S+) 301 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_AWAY) def myevent(bot, srv=None, me=None, nick=None, data=None): # do something 367 - RPL_BANLIST ----------------- Format ``:{srv} 367 {nick} {channel} {banid}`` Match ``^:(?P\S+) 367 (?P\S+) (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_BANLIST) def myevent(bot, srv=None, me=None, channel=None, banid=None): # do something 324 - RPL_CHANNELMODEIS ----------------------- Format ``:{srv} 324 {nick} {channel} {mode} {mode_params}`` Match ``^:(?P\S+) 324 (?P\S+) (?P\S+) (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_CHANNELMODEIS) def myevent(bot, srv=None, me=None, channel=None, mode=None, mode_params=None): # do something 368 - RPL_ENDOFBANLIST ---------------------- Format ``:{srv} 368 {nick} {channel} :End of channel ban list`` Match ``^:(?P\S+) 368 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ENDOFBANLIST) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 374 - RPL_ENDOFINFO ------------------- Format ``:{srv} 374 {nick} :End of /INFO list`` Match ``^:(?P\S+) 374 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ENDOFINFO) def myevent(bot, srv=None, me=None, data=None): # do something 365 - RPL_ENDOFLINKS -------------------- Format ``:{srv} 365 {nick} {mask} :End of /LINKS list`` Match ``^:(?P\S+) 365 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ENDOFLINKS) def myevent(bot, srv=None, me=None, mask=None, data=None): # do something 376 - RPL_ENDOFMOTD ------------------- Format ``:{srv} 376 {nick} :End of /MOTD command`` Match ``^:(?P\S+) 376 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ENDOFMOTD) def myevent(bot, srv=None, me=None, data=None): # do something 366 - RPL_ENDOFNAMES -------------------- Format ``:{srv} 366 {nick} {channel} :End of /NAMES list`` Match ``^:(?P\S+) 366 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ENDOFNAMES) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 219 - RPL_ENDOFSTATS -------------------- Format ``:{srv} 219 {nick} {stats_letter} :End of /STATS report`` Match ``^:(?P\S+) 219 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ENDOFSTATS) def myevent(bot, srv=None, me=None, stats_letter=None, data=None): # do something 394 - RPL_ENDOFUSERS -------------------- Format ``:{srv} 394 {nick} :End of users`` Match ``^:(?P\S+) 394 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ENDOFUSERS) def myevent(bot, srv=None, me=None, data=None): # do something 315 - RPL_ENDOFWHO ------------------ Format ``:{srv} 315 {nick} {nick} :End of /WHO list`` Match ``^:(?P\S+) 315 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ENDOFWHO) def myevent(bot, srv=None, me=None, nick=None, data=None): # do something 318 - RPL_ENDOFWHOIS -------------------- Format ``:{srv} 318 {nick} {nick} :End of /WHOIS list`` Match ``^:(?P\S+) 318 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ENDOFWHOIS) def myevent(bot, srv=None, me=None, nick=None, data=None): # do something 369 - RPL_ENDOFWHOWAS --------------------- Format ``:{srv} 369 {nick} {nick} :End of WHOWAS`` Match ``^:(?P\S+) 369 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ENDOFWHOWAS) def myevent(bot, srv=None, me=None, nick=None, data=None): # do something 371 - RPL_INFO -------------- Format ``:{srv} 371 {nick} :{string}`` Match ``^:(?P\S+) 371 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_INFO) def myevent(bot, srv=None, me=None, data=None): # do something 341 - RPL_INVITING ------------------ Format ``:{srv} 341 {nick} {channel} {nick}`` Match ``^:(?P\S+) 341 (?P\S+) (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_INVITING) def myevent(bot, srv=None, me=None, channel=None, nick=None): # do something 303 - RPL_ISON -------------- Format ``:{srv} 303 {nick} :{nicknames}`` Match ``^:(?P\S+) 303 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_ISON) def myevent(bot, srv=None, me=None, data=None): # do something 364 - RPL_LINKS --------------- Format ``:{srv} 364 {nick} {mask} {server} :{hopcount} {server_info}`` Match ``^:(?P\S+) 364 (?P\S+) (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_LINKS) def myevent(bot, srv=None, me=None, mask=None, server=None, data=None): # do something 322 - RPL_LIST -------------- Format ``:{srv} 322 {nick} {channel} {visible} :{topic}`` Match ``^:(?P\S+) 322 (?P\S+) (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_LIST) def myevent(bot, srv=None, me=None, channel=None, visible=None, data=None): # do something 323 - RPL_LISTEND ----------------- Format ``:{srv} 323 {nick} :End of /LIST`` Match ``^:(?P\S+) 323 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_LISTEND) def myevent(bot, srv=None, me=None, data=None): # do something 321 - RPL_LISTSTART ------------------- Format ``:{srv} 321 {nick} Channel :Users Name`` Match ``^:(?P\S+) 321 (?P\S+) Channel :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_LISTSTART) def myevent(bot, srv=None, me=None, data=None): # do something 254 - RPL_LUSERCHANNELS ----------------------- Format ``:{srv} 254 {nick} {x} :channels formed`` Match ``^:(?P\S+) 254 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_LUSERCHANNELS) def myevent(bot, srv=None, me=None, x=None, data=None): # do something 251 - RPL_LUSERCLIENT --------------------- Format ``:{srv} 251 {nick} :There are {x} users and {y} invisible on {z} servers`` Match ``^:(?P\S+) 251 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_LUSERCLIENT) def myevent(bot, srv=None, me=None, data=None): # do something 255 - RPL_LUSERME ----------------- Format ``:{srv} 255 {nick} :I have {x} clients and {y}`` Match ``^:(?P\S+) 255 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_LUSERME) def myevent(bot, srv=None, me=None, data=None): # do something 252 - RPL_LUSEROP ----------------- Format ``:{srv} 252 {nick} {x} :operator(s) online`` Match ``^:(?P\S+) 252 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_LUSEROP) def myevent(bot, srv=None, me=None, x=None, data=None): # do something 253 - RPL_LUSERUNKNOWN ---------------------- Format ``:{srv} 253 {nick} {x} :unknown connection(s)`` Match ``^:(?P\S+) 253 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_LUSERUNKNOWN) def myevent(bot, srv=None, me=None, x=None, data=None): # do something 372 - RPL_MOTD -------------- Format ``:{srv} 372 {nick} :- {text}`` Match ``^:(?P\S+) 372 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_MOTD) def myevent(bot, srv=None, me=None, data=None): # do something 375 - RPL_MOTDSTART ------------------- Format ``:{srv} 375 {nick} :- {server} Message of the day -`` Match ``^:(?P\S+) 375 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_MOTDSTART) def myevent(bot, srv=None, me=None, data=None): # do something 353 - RPL_NAMREPLY ------------------ Format ``:{srv} 353 {nick} {m} {channel} :{nicknames}`` Match ``^:(?P\S+) 353 (?P\S+) (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_NAMREPLY) def myevent(bot, srv=None, me=None, m=None, channel=None, data=None): # do something 331 - RPL_NOTOPIC ----------------- Format ``:{srv} 331 {nick} {channel} :No topic is set`` Match ``^:(?P\S+) 331 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_NOTOPIC) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 395 - RPL_NOUSERS ----------------- Format ``:{srv} 395 {nick} :Nobody logged in`` Match ``^:(?P\S+) 395 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_NOUSERS) def myevent(bot, srv=None, me=None, data=None): # do something 306 - RPL_NOWAWAY ----------------- Format ``:{srv} 306 {nick} :You have been marked as being away`` Match ``^:(?P\S+) 306 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_NOWAWAY) def myevent(bot, srv=None, me=None, data=None): # do something 382 - RPL_REHASHING ------------------- Format ``:{srv} 382 {nick} {config_file} :Rehashing`` Match ``^:(?P\S+) 382 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_REHASHING) def myevent(bot, srv=None, me=None, config_file=None, data=None): # do something 213 - RPL_STATSCLINE -------------------- Format ``:{srv} 213 {nick} C {host} * {nick} {port} {class}`` Match ``^:(?P\S+) 213 (?P\S+) C (?P\S+) . (?P\S+) (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_STATSCLINE) def myevent(bot, srv=None, me=None, host=None, nick=None, port=None, class=None): # do something 212 - RPL_STATSCOMMANDS ----------------------- Format ``:{srv} 212 {nick} {cmd} {count}`` Match ``^:(?P\S+) 212 (?P\S+) (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_STATSCOMMANDS) def myevent(bot, srv=None, me=None, cmd=None, count=None): # do something 244 - RPL_STATSHLINE -------------------- Format ``:{srv} 244 {nick} H {hostmask} * {servername}`` Match ``^:(?P\S+) 244 (?P\S+) H (?P\S+) . (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_STATSHLINE) def myevent(bot, srv=None, me=None, hostmask=None, servername=None): # do something 215 - RPL_STATSILINE -------------------- Format ``:{srv} 215 {nick} I {host} * {host1} {port} {class}`` Match ``^:(?P\S+) 215 (?P\S+) I (?P\S+) . (?P\S+) (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_STATSILINE) def myevent(bot, srv=None, me=None, host=None, host1=None, port=None, class=None): # do something 216 - RPL_STATSKLINE -------------------- Format ``:{srv} 216 {nick} K {host} * {username} {port} {class}`` Match ``^:(?P\S+) 216 (?P\S+) K (?P\S+) . (?P\S+) (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_STATSKLINE) def myevent(bot, srv=None, me=None, host=None, username=None, port=None, class=None): # do something 211 - RPL_STATSLINKINFO ----------------------- Format ``:{srv} 211 {nick} :{linkname} {sendq} {sent_messages} {received_bytes} {time_open}`` Match ``^:(?P\S+) 211 (?P\S+) (?P\S+) (?P\S+) (?P\S+) (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_STATSLINKINFO) def myevent(bot, srv=None, me=None, linkname=None, sendq=None, sent_messages=None, received_bytes=None, time_open=None): # do something 241 - RPL_STATSLLINE -------------------- Format ``:{srv} 241 {nick} L {hostmask} * {servername} {maxdepth}`` Match ``^:(?P\S+) 241 (?P\S+) L (?P\S+) . (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_STATSLLINE) def myevent(bot, srv=None, me=None, hostmask=None, servername=None, maxdepth=None): # do something 214 - RPL_STATSNLINE -------------------- Format ``:{srv} 214 {nick} N {host} * {nick} {port} {class}`` Match ``^:(?P\S+) 214 (?P\S+) N (?P\S+) . (?P\S+) (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_STATSNLINE) def myevent(bot, srv=None, me=None, host=None, nick=None, port=None, class=None): # do something 243 - RPL_STATSOLINE -------------------- Format ``:{srv} 243 {nick} O {hostmask} * {nick}`` Match ``^:(?P\S+) 243 (?P\S+) O (?P\S+) . (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_STATSOLINE) def myevent(bot, srv=None, me=None, hostmask=None, nick=None): # do something 242 - RPL_STATSUPTIME --------------------- Format ``:{srv} 242 {nick} :Server Up{days}days {hours}`` Match ``^:(?P\S+) 242 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_STATSUPTIME) def myevent(bot, srv=None, me=None, data=None): # do something 218 - RPL_STATSYLINE -------------------- Format ``:{srv} 218 {nick} frequency> {max_sendq}`` Match ``^:(?P\S+) 218 (?P\S+) frequency> (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_STATSYLINE) def myevent(bot, srv=None, me=None, max_sendq=None): # do something 342 - RPL_SUMMONING ------------------- Format ``:{srv} 342 {nick} {nick} :Summoning user to IRC`` Match ``^:(?P\S+) 342 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_SUMMONING) def myevent(bot, srv=None, me=None, nick=None, data=None): # do something 391 - RPL_TIME -------------- Format ``:{srv} 391 {nick} {server} :{string_showing_server's_local_time}`` Match ``^:(?P\S+) 391 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_TIME) def myevent(bot, srv=None, me=None, server=None, data=None): # do something 332 - RPL_TOPIC --------------- Format ``:{srv} 332 {nick} {channel} :{topic}`` Match ``^:(?P\S+) 332 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_TOPIC) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 201 - RPL_TRACECONNECTING ------------------------- Format ``:{srv} 201 {nick} Try. {class} {server}`` Match ``^:(?P\S+) 201 (?P\S+) Try. (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_TRACECONNECTING) def myevent(bot, srv=None, me=None, class=None, server=None): # do something 202 - RPL_TRACEHANDSHAKE ------------------------ Format ``:{srv} 202 {nick} H.S. {class} {server}`` Match ``^:(?P\S+) 202 (?P\S+) H.S. (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_TRACEHANDSHAKE) def myevent(bot, srv=None, me=None, class=None, server=None): # do something 200 - RPL_TRACELINK ------------------- Format ``:{srv} 200 {nick} {next_server}`` Match ``^:(?P\S+) 200 (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_TRACELINK) def myevent(bot, srv=None, me=None, next_server=None): # do something 261 - RPL_TRACELOG ------------------ Format ``:{srv} 261 {nick} File {logfile} {debug_level}`` Match ``^:(?P\S+) 261 (?P\S+) File (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_TRACELOG) def myevent(bot, srv=None, me=None, logfile=None, debug_level=None): # do something 208 - RPL_TRACENEWTYPE ---------------------- Format ``:{srv} 208 {nick} {newtype} 0 {client}`` Match ``^:(?P\S+) 208 (?P\S+) (?P\S+) 0 (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_TRACENEWTYPE) def myevent(bot, srv=None, me=None, newtype=None, client=None): # do something 204 - RPL_TRACEOPERATOR ----------------------- Format ``:{srv} 204 {nick} Oper {class} {nick}`` Match ``^:(?P\S+) 204 (?P\S+) Oper (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_TRACEOPERATOR) def myevent(bot, srv=None, me=None, class=None, nick=None): # do something 206 - RPL_TRACESERVER --------------------- Format ``:{srv} 206 {nick} {mask}`` Match ``^:(?P\S+) 206 (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_TRACESERVER) def myevent(bot, srv=None, me=None, mask=None): # do something 203 - RPL_TRACEUNKNOWN ---------------------- Format ``:{srv} 203 {nick} ???? {class} [{clientip}]`` Match ``^:(?P\S+) 203 (?P\S+) \S+ (?P\S+) [(?P\S+)]`` Example: .. code-block:: python @irc3.event(rfc.RPL_TRACEUNKNOWN) def myevent(bot, srv=None, me=None, class=None, clientip=None): # do something 205 - RPL_TRACEUSER ------------------- Format ``:{srv} 205 {nick} User {class} {nick}`` Match ``^:(?P\S+) 205 (?P\S+) User (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_TRACEUSER) def myevent(bot, srv=None, me=None, class=None, nick=None): # do something 221 - RPL_UMODEIS ----------------- Format ``:{srv} 221 {nick} {user_mode_string}`` Match ``^:(?P\S+) 221 (?P\S+) (?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.RPL_UMODEIS) def myevent(bot, srv=None, me=None, user_mode_string=None): # do something 305 - RPL_UNAWAY ---------------- Format ``:{srv} 305 {nick} :You are no longer marked as being away`` Match ``^:(?P\S+) 305 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_UNAWAY) def myevent(bot, srv=None, me=None, data=None): # do something 302 - RPL_USERHOST ------------------ Format ``:{srv} 302 {nick} :[{reply}{{space}{reply}}]`` Match ``^:(?P\S+) 302 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_USERHOST) def myevent(bot, srv=None, me=None, data=None): # do something 393 - RPL_USERS --------------- Format ``:{srv} 393 {nick} {x} {y} {z}`` Match ``^:(?P\S+) 393 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_USERS) def myevent(bot, srv=None, me=None, data=None): # do something 392 - RPL_USERSSTART -------------------- Format ``:{srv} 392 {nick} :UserID Terminal Host`` Match ``^:(?P\S+) 392 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_USERSSTART) def myevent(bot, srv=None, me=None, data=None): # do something 351 - RPL_VERSION ----------------- Format ``:{srv} 351 {nick} {version}.{debuglevel} {server} :{comments}`` Match ``^:(?P\S+) 351 (?P\S+) (?P\S+).(?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_VERSION) def myevent(bot, srv=None, me=None, version=None, debuglevel=None, server=None, data=None): # do something 319 - RPL_WHOISCHANNELS ----------------------- Format ``:{srv} 319 {nick} :{channels}`` Match ``^:(?P\S+) 319 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_WHOISCHANNELS) def myevent(bot, srv=None, me=None, data=None): # do something 317 - RPL_WHOISIDLE ------------------- Format ``:{srv} 317 {nick} {nick} {x} :seconds idle`` Match ``^:(?P\S+) 317 (?P\S+) (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_WHOISIDLE) def myevent(bot, srv=None, me=None, nick=None, x=None, data=None): # do something 313 - RPL_WHOISOPERATOR ----------------------- Format ``:{srv} 313 {nick} {nick} :is an IRC operator`` Match ``^:(?P\S+) 313 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_WHOISOPERATOR) def myevent(bot, srv=None, me=None, nick=None, data=None): # do something 312 - RPL_WHOISSERVER --------------------- Format ``:{srv} 312 {nick} {nick} {server} :{server_info}`` Match ``^:(?P\S+) 312 (?P\S+) (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_WHOISSERVER) def myevent(bot, srv=None, me=None, nick=None, server=None, data=None): # do something 311 - RPL_WHOISUSER ------------------- Format ``:{srv} 311 {nick} {nick} {username} {host} {m} :{realname}`` Match ``^:(?P\S+) 311 (?P\S+) (?P\S+) (?P\S+) (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_WHOISUSER) def myevent(bot, srv=None, me=None, nick=None, username=None, host=None, m=None, data=None): # do something 352 - RPL_WHOREPLY ------------------ Format ``:{srv} 352 {nick} :{channel} {username} {host} {server} {nick} {modes} :{hopcount} {realname}`` Match ``^:(?P\S+) 352 (?P\S+) (?P\S+) (?P\S+) (?P\S+) (?P\S+) (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_WHOREPLY) def myevent(bot, srv=None, me=None, channel=None, username=None, host=None, server=None, nick=None, modes=None, data=None): # do something 314 - RPL_WHOWASUSER -------------------- Format ``:{srv} 314 {nick} {nick} {username} {host} * :{realname}`` Match ``^:(?P\S+) 314 (?P\S+) (?P\S+) (?P\S+) (?P\S+) . :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_WHOWASUSER) def myevent(bot, srv=None, me=None, nick=None, username=None, host=None, data=None): # do something 381 - RPL_YOUREOPER ------------------- Format ``:{srv} 381 {nick} :You are now an IRC operator`` Match ``^:(?P\S+) 381 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.RPL_YOUREOPER) def myevent(bot, srv=None, me=None, data=None): # do something Errors (ERR) ============ 462 - ERR_ALREADYREGISTRED -------------------------- Format ``:{srv} 462 {nick} :You may not reregister`` Match ``^:(?P\S+) 462 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_ALREADYREGISTRED) def myevent(bot, srv=None, me=None, data=None): # do something 475 - ERR_BADCHANNELKEY ----------------------- Format ``:{srv} 475 {nick} {channel} :Cannot join channel (+k)`` Match ``^:(?P\S+) 475 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_BADCHANNELKEY) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 474 - ERR_BANNEDFROMCHAN ------------------------ Format ``:{srv} 474 {nick} {channel} :Cannot join channel (+b)`` Match ``^:(?P\S+) 474 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_BANNEDFROMCHAN) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 404 - ERR_CANNOTSENDTOCHAN -------------------------- Format ``:{srv} 404 {nick} {channel} :Cannot send to channel`` Match ``^:(?P\S+) 404 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_CANNOTSENDTOCHAN) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 483 - ERR_CANTKILLSERVER ------------------------ Format ``:{srv} 483 {nick} :You cant kill a server!`` Match ``^:(?P\S+) 483 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_CANTKILLSERVER) def myevent(bot, srv=None, me=None, data=None): # do something 471 - ERR_CHANNELISFULL ----------------------- Format ``:{srv} 471 {nick} {channel} :Cannot join channel (+l)`` Match ``^:(?P\S+) 471 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_CHANNELISFULL) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 482 - ERR_CHANOPRIVSNEEDED -------------------------- Format ``:{srv} 482 {nick} {channel} :You're not channel operator`` Match ``^:(?P\S+) 482 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_CHANOPRIVSNEEDED) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 432 - ERR_ERRONEUSNICKNAME -------------------------- Format ``:{srv} 432 {nick} {nick} :Erroneus nickname`` Match ``^:(?P\S+) 432 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_ERRONEUSNICKNAME) def myevent(bot, srv=None, me=None, nick=None, data=None): # do something 473 - ERR_INVITEONLYCHAN ------------------------ Format ``:{srv} 473 {nick} {channel} :Cannot join channel (+i)`` Match ``^:(?P\S+) 473 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_INVITEONLYCHAN) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 467 - ERR_KEYSET ---------------- Format ``:{srv} 467 {nick} {channel} :Channel key already set`` Match ``^:(?P\S+) 467 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_KEYSET) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 461 - ERR_NEEDMOREPARAMS ------------------------ Format ``:{srv} 461 {nick} {cmd} :Not enough parameters`` Match ``^:(?P\S+) 461 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NEEDMOREPARAMS) def myevent(bot, srv=None, me=None, cmd=None, data=None): # do something ERR_NICK -------- Match ``^(@(?P\S+) )?:(?P\S+) (?P(432|433|436)) (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NICK) def myevent(bot, srv=None, retcode=None, me=None, nick=None, data=None, tags=None): # do something 436 - ERR_NICKCOLLISION ----------------------- Format ``:{srv} 436 {nick} {nick} :Nickname collision KILL`` Match ``^:(?P\S+) 436 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NICKCOLLISION) def myevent(bot, srv=None, me=None, nick=None, data=None): # do something 433 - ERR_NICKNAMEINUSE ----------------------- Format ``:{srv} 433 {nick} {nick} :Nickname is already in use`` Match ``^:(?P\S+) 433 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NICKNAMEINUSE) def myevent(bot, srv=None, me=None, nick=None, data=None): # do something 423 - ERR_NOADMININFO --------------------- Format ``:{srv} 423 {nick} {server} :No administrative info available`` Match ``^:(?P\S+) 423 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOADMININFO) def myevent(bot, srv=None, me=None, server=None, data=None): # do something 444 - ERR_NOLOGIN ----------------- Format ``:{srv} 444 {nick} {nick} :User not logged in`` Match ``^:(?P\S+) 444 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOLOGIN) def myevent(bot, srv=None, me=None, nick=None, data=None): # do something 422 - ERR_NOMOTD ---------------- Format ``:{srv} 422 {nick} :MOTD File is missing`` Match ``^:(?P\S+) 422 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOMOTD) def myevent(bot, srv=None, me=None, data=None): # do something 431 - ERR_NONICKNAMEGIVEN ------------------------- Format ``:{srv} 431 {nick} :No nickname given`` Match ``^:(?P\S+) 431 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NONICKNAMEGIVEN) def myevent(bot, srv=None, me=None, data=None): # do something 491 - ERR_NOOPERHOST -------------------- Format ``:{srv} 491 {nick} :No O-lines for your host`` Match ``^:(?P\S+) 491 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOOPERHOST) def myevent(bot, srv=None, me=None, data=None): # do something 409 - ERR_NOORIGIN ------------------ Format ``:{srv} 409 {nick} :No origin specified`` Match ``^:(?P\S+) 409 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOORIGIN) def myevent(bot, srv=None, me=None, data=None): # do something 463 - ERR_NOPERMFORHOST ----------------------- Format ``:{srv} 463 {nick} :Your host isn't among the privileged`` Match ``^:(?P\S+) 463 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOPERMFORHOST) def myevent(bot, srv=None, me=None, data=None): # do something 481 - ERR_NOPRIVILEGES ---------------------- Format ``:{srv} 481 {nick} :Permission Denied- You're not an IRC operator`` Match ``^:(?P\S+) 481 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOPRIVILEGES) def myevent(bot, srv=None, me=None, data=None): # do something 411 - ERR_NORECIPIENT --------------------- Format ``:{srv} 411 {nick} :No recipient given ({cmd})`` Match ``^:(?P\S+) 411 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NORECIPIENT) def myevent(bot, srv=None, me=None, data=None): # do something 403 - ERR_NOSUCHCHANNEL ----------------------- Format ``:{srv} 403 {nick} {channel} :No such channel`` Match ``^:(?P\S+) 403 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOSUCHCHANNEL) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 401 - ERR_NOSUCHNICK -------------------- Format ``:{srv} 401 {nick} {nick} :No such nick/channel`` Match ``^:(?P\S+) 401 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOSUCHNICK) def myevent(bot, srv=None, me=None, nick=None, data=None): # do something 402 - ERR_NOSUCHSERVER ---------------------- Format ``:{srv} 402 {nick} {server} :No such server`` Match ``^:(?P\S+) 402 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOSUCHSERVER) def myevent(bot, srv=None, me=None, server=None, data=None): # do something 412 - ERR_NOTEXTTOSEND ---------------------- Format ``:{srv} 412 {nick} :No text to send`` Match ``^:(?P\S+) 412 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOTEXTTOSEND) def myevent(bot, srv=None, me=None, data=None): # do something 442 - ERR_NOTONCHANNEL ---------------------- Format ``:{srv} 442 {nick} {channel} :You're not on that channel`` Match ``^:(?P\S+) 442 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOTONCHANNEL) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 413 - ERR_NOTOPLEVEL -------------------- Format ``:{srv} 413 {nick} {mask} :No toplevel domain specified`` Match ``^:(?P\S+) 413 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOTOPLEVEL) def myevent(bot, srv=None, me=None, mask=None, data=None): # do something 451 - ERR_NOTREGISTERED ----------------------- Format ``:{srv} 451 {nick} :You have not registered`` Match ``^:(?P\S+) 451 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_NOTREGISTERED) def myevent(bot, srv=None, me=None, data=None): # do something 464 - ERR_PASSWDMISMATCH ------------------------ Format ``:{srv} 464 {nick} :Password incorrect`` Match ``^:(?P\S+) 464 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_PASSWDMISMATCH) def myevent(bot, srv=None, me=None, data=None): # do something 445 - ERR_SUMMONDISABLED ------------------------ Format ``:{srv} 445 {nick} :SUMMON has been disabled`` Match ``^:(?P\S+) 445 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_SUMMONDISABLED) def myevent(bot, srv=None, me=None, data=None): # do something 405 - ERR_TOOMANYCHANNELS ------------------------- Format ``:{srv} 405 {nick} {channel} :You have joined too many channels`` Match ``^:(?P\S+) 405 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_TOOMANYCHANNELS) def myevent(bot, srv=None, me=None, channel=None, data=None): # do something 407 - ERR_TOOMANYTARGETS ------------------------ Format ``:{srv} 407 {nick} {target} :Duplicate recipients. No message delivered`` Match ``^:(?P\S+) 407 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_TOOMANYTARGETS) def myevent(bot, srv=None, me=None, target=None, data=None): # do something 501 - ERR_UMODEUNKNOWNFLAG -------------------------- Format ``:{srv} 501 {nick} :Unknown MODE flag`` Match ``^:(?P\S+) 501 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_UMODEUNKNOWNFLAG) def myevent(bot, srv=None, me=None, data=None): # do something 421 - ERR_UNKNOWNCOMMAND ------------------------ Format ``:{srv} 421 {nick} {cmd} :Unknown command`` Match ``^:(?P\S+) 421 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_UNKNOWNCOMMAND) def myevent(bot, srv=None, me=None, cmd=None, data=None): # do something 472 - ERR_UNKNOWNMODE --------------------- Format ``:{srv} 472 {nick} {char} :is unknown mode char to me`` Match ``^:(?P\S+) 472 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_UNKNOWNMODE) def myevent(bot, srv=None, me=None, char=None, data=None): # do something 441 - ERR_USERNOTINCHANNEL -------------------------- Format ``:{srv} 441 {nick} {nick} {channel} :They aren't on that channel`` Match ``^:(?P\S+) 441 (?P\S+) (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_USERNOTINCHANNEL) def myevent(bot, srv=None, me=None, nick=None, channel=None, data=None): # do something 443 - ERR_USERONCHANNEL ----------------------- Format ``:{srv} 443 {nick} {nick} {channel} :is already on channel`` Match ``^:(?P\S+) 443 (?P\S+) (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_USERONCHANNEL) def myevent(bot, srv=None, me=None, nick=None, channel=None, data=None): # do something 446 - ERR_USERSDISABLED ----------------------- Format ``:{srv} 446 {nick} :USERS has been disabled`` Match ``^:(?P\S+) 446 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_USERSDISABLED) def myevent(bot, srv=None, me=None, data=None): # do something 502 - ERR_USERSDONTMATCH ------------------------ Format ``:{srv} 502 {nick} :Cant change mode for other users`` Match ``^:(?P\S+) 502 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_USERSDONTMATCH) def myevent(bot, srv=None, me=None, data=None): # do something 406 - ERR_WASNOSUCHNICK ----------------------- Format ``:{srv} 406 {nick} {nick} :There was no such nickname`` Match ``^:(?P\S+) 406 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_WASNOSUCHNICK) def myevent(bot, srv=None, me=None, nick=None, data=None): # do something 414 - ERR_WILDTOPLEVEL ---------------------- Format ``:{srv} 414 {nick} {mask} :Wildcard in toplevel domain`` Match ``^:(?P\S+) 414 (?P\S+) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_WILDTOPLEVEL) def myevent(bot, srv=None, me=None, mask=None, data=None): # do something 465 - ERR_YOUREBANNEDCREEP -------------------------- Format ``:{srv} 465 {nick} :You are banned from this server`` Match ``^:(?P\S+) 465 (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.ERR_YOUREBANNEDCREEP) def myevent(bot, srv=None, me=None, data=None): # do something Misc ==== CONNECTED --------- Match ``^:(?P\S+) (376|422) (?P\S+) :(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.CONNECTED) def myevent(bot, srv=None, me=None, data=None): # do something CTCP ---- Match ``^(@(?P\S+) )?:(?P\S+!\S+@\S+) (?P(PRIVMSG|NOTICE)) {nick} :(?P.*)$`` Example: .. code-block:: python @irc3.event(rfc.CTCP) def myevent(bot, mask=None, event=None, ctcp=None, tags=None): # do something Out Match ``^(?P(PRIVMSG|NOTICE)) (?P\S+) :(?P.*)$`` Example: .. code-block:: python @irc3.event(rfc.CTCP, iotype="out") def myevent(bot, event=None, target=None, ctcp=None): # do something INVITE ------ Match ``^(@(?P\S+) )?:(?P\S+!\S+@\S+) INVITE {nick} :?(?P\S+)$`` Example: .. code-block:: python @irc3.event(rfc.INVITE) def myevent(bot, mask=None, channel=None, tags=None): # do something JOIN ---- Match ``^(@(?P\S+) )?:(?P\S+) JOIN :?(?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.JOIN) def myevent(bot, mask=None, channel=None, tags=None): # do something Out Match ``^JOIN :?(?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.JOIN, iotype="out") def myevent(bot, channel=None): # do something JOIN_PART_QUIT -------------- Match ``^(@(?P\S+) )?:(?P\S+) (?PJOIN|PART|QUIT)\s*:*(?P\S*)(\s+:(?P.*)|$)`` Example: .. code-block:: python @irc3.event(rfc.JOIN_PART_QUIT) def myevent(bot, mask=None, event=None, channel=None, data=None, tags=None): # do something Out Match ``^(?PJOIN|PART|QUIT)\s*:*(?P\S*)(\s+:(?P.*)|$)`` Example: .. code-block:: python @irc3.event(rfc.JOIN_PART_QUIT, iotype="out") def myevent(bot, event=None, channel=None, data=None): # do something KICK ---- Match ``^(@(?P\S+) )?:(?P\S+) (?PKICK)\s+(?P\S+)\s*(?P\S+)(\s+:(?P.*)|$)`` Example: .. code-block:: python @irc3.event(rfc.KICK) def myevent(bot, mask=None, event=None, channel=None, target=None, data=None, tags=None): # do something Out Match ``^(?PKICK)\s+(?P\S+)\s*(?P\S+)(\s+:(?P.*)|$)`` Example: .. code-block:: python @irc3.event(rfc.KICK, iotype="out") def myevent(bot, event=None, channel=None, target=None, data=None): # do something MODE ---- Match ``^(@(?P\S+) )?:(?P\S+) (?PMODE)\s+(?P\S+)\s+(?P\S+)(\s+(?P.*)|$)`` Example: .. code-block:: python @irc3.event(rfc.MODE) def myevent(bot, mask=None, event=None, target=None, modes=None, data=None, tags=None): # do something Out Match ``^(?PMODE)\s+(?P\S+)\s+(?P\S+)(\s+(?P.*)|$)`` Example: .. code-block:: python @irc3.event(rfc.MODE, iotype="out") def myevent(bot, event=None, target=None, modes=None, data=None): # do something MY_PRIVMSG ---------- Match ``^(@(?P\S+) )?:(?P\S+!\S+@\S+) (?P(PRIVMSG|NOTICE)) (?P(#\S+|{nick})) :{nick}[:,\s]\s*(?P\S+.*)$`` Example: .. code-block:: python @irc3.event(rfc.MY_PRIVMSG) def myevent(bot, mask=None, event=None, target=None, data=None, tags=None): # do something Out Match ``^(?P(PRIVMSG|NOTICE)) (?P\S+) :(?P.*)$`` Example: .. code-block:: python @irc3.event(rfc.MY_PRIVMSG, iotype="out") def myevent(bot, event=None, target=None, data=None): # do something NEW_NICK -------- Match ``^(@(?P\S+) )?:(?P\S+) NICK :?(?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.NEW_NICK) def myevent(bot, nick=None, new_nick=None, tags=None): # do something Out Match ``^NICK :?(?P\S+)`` Example: .. code-block:: python @irc3.event(rfc.NEW_NICK, iotype="out") def myevent(bot, new_nick=None): # do something PART ---- Match ``^(@(?P\S+) )?:(?P\S+) PART (?P\S+)(\s+:(?P.*)|$)`` Example: .. code-block:: python @irc3.event(rfc.PART) def myevent(bot, mask=None, channel=None, data=None, tags=None): # do something Out Match ``PART (?P\S+)(\s+:(?P.*)|$)`` Example: .. code-block:: python @irc3.event(rfc.PART, iotype="out") def myevent(bot, channel=None, data=None): # do something PING ---- Match ``^PING :?(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.PING) def myevent(bot, data=None): # do something PONG ---- Match ``^(@(?P\S+) )?:(?P\S+) PONG (?P=server) :?(?P.*)`` Example: .. code-block:: python @irc3.event(rfc.PONG) def myevent(bot, server=None, data=None, tags=None): # do something PRIVMSG ------- Match ``^(@(?P\S+) )?:(?P\S+!\S+@\S+) (?P(PRIVMSG|NOTICE)) (?P\S+) :(?P.*)$`` Example: .. code-block:: python @irc3.event(rfc.PRIVMSG) def myevent(bot, mask=None, event=None, target=None, data=None, tags=None): # do something Out Match ``^(?P(PRIVMSG|NOTICE)) (?P\S+) :(?P.*)$`` Example: .. code-block:: python @irc3.event(rfc.PRIVMSG, iotype="out") def myevent(bot, event=None, target=None, data=None): # do something QUIT ---- Match ``^(@(?P\S+) )?:(?P\S+) QUIT(\s+:(?P.*)|$)`` Example: .. code-block:: python @irc3.event(rfc.QUIT) def myevent(bot, mask=None, data=None, tags=None): # do something Out Match ``^QUIT(\s+:(?P.*)|$)`` Example: .. code-block:: python @irc3.event(rfc.QUIT, iotype="out") def myevent(bot, data=None): # do something TOPIC ----- Match ``^(@(?P\S+) )?:(?P\S+!\S+@\S+) TOPIC (?P\S+) :(?P.*)$`` Example: .. code-block:: python @irc3.event(rfc.TOPIC) def myevent(bot, mask=None, channel=None, data=None, tags=None): # do something Out Match ``^TOPIC (?P\S+) :(?P.*)$`` Example: .. code-block:: python @irc3.event(rfc.TOPIC, iotype="out") def myevent(bot, channel=None, data=None): # do something