SYMBOL: current-irc-client ! Built-in bot type in library TUPLE: irc-client ; TUPLE: log-bot < irc-client ; ! Parse messages into tuples with the raw string and a timestamp in each one TUPLE: irc-message raw timestamp ; TUPLE: ping < irc-message sender ; TUPLE: privmsg < irc-message sender receiver string ; ! Hooks that the bot implementor can override for each kind of irc message HOOK: raw current-irc-client ( irc-message -- ) HOOK: ping current-irc-client ( ping -- ) HOOK: privmsg current-irc-client ( privmsg -- ) ! Default handler for ping, you won't have to override this unless you need special behavior M: irc-client ping sender>> "PONG " prepend send-irc ; ! Log pings for some reason M: log-bot ping [ timestamp>> timestamp>rfc822 "Ping received at " prepend log-it ] [ handle-next-method ] bi ; M: log-bot privmsg ... ;