USING: accessors combinators irc.client kernel math namespaces quotations sequences strings vectors ; IN: irc.bot TUPLE: bot { servers vector } ; TUPLE: server { host string } { port integer } { nick string } { password string } { channels vector } { nickserv string initial: "nickserv" } { chanserv string initial: "chanserv" } { trusted vector } ; TUPLE: channel { name string } { password string } { handler quotation initial: [ drop ] } ; SYMBOL: current-listener : bot-write ( string -- ) current-listener get write-message ; : bot-server ( server -- ) { [ host>> ] [ port>> ] [ nick>> ] [ password>> ] } cleave ; : start-bot ( bot -- ) servers>> [ bot-server ] each ;