Files
zoitechat/docs/plugin-api-additions/events.md
T

1.3 KiB

Semantic IRC hooks

on_join, on_part, on_quit, on_nick, on_kick, on_message, and on_notice accept (callback, userdata=None, priority=PRI_NORM). The general form is hook_event(command, callback, userdata=None, priority=PRI_NORM). Callbacks receive (event, userdata), where the immutable IRCEvent has command, prefix, nick, user, host, params, context, connection_id and time. params preserves the trailing parameter, including spaces; JOIN parameters also retain extended-join account/realname data when supplied by the server.

These wrappers use existing server hooks, before core command processing; return the ordinary EAT_* constants. EAT_ZOITECHAT suppresses the entire IRC command (including client state updates), not just its text. Use EAT_NONE for observation. Other plugins' priority and eating rules remain unchanged. The context is the core-selected context, which can be the server tab when a query/channel does not yet exist. QUIT is one event per incoming command, not one callback per affected channel. event.time is the existing server-time attribute (zero when unavailable); other message tags are not exposed here.

def joined(event, userdata):
    event.context.prnt('{} joined {}'.format(event.nick, event.params[0]))
    return zoitechat.EAT_NONE

zoitechat.on_join(joined)