irce = require "irce" ln = require "ln" moon = require "moon" stringx = require "pl.stringx" CommandRouter = require "ketracel.bots.commands" class Ketracel new: (irc) => @name = "Ketracel" @irc = irc router = CommandRouter self router\register "DIE", (sender, target, verb, args) -> @die sender, target, verb, args router\register "VHOST", (...) -> @set_vhost ... router\register "STATE", -> router\register "EVAL", -> @router = router burst: => @irc\NICK @name, "white", "the.dominion", "+io", "Ketracel White" njoin: (chan) => @irc\NJOIN chan, "Ketracel" die: (sender, target, verb, args) => @irc\handle "DIE", string.format("%s asked me to die in %s", sender, target) set_vhost: (sender, target, verb, args) => if #args > 0 ln.log :sender, vhost: args[1], action: "setting vhost" @irc\VHOST sender, args[1] @irc\NOTICE "Ketracel", sender, "your vhost is now " ..args[1] else @irc\NOTICE "Ketracel", sender, "usage: VHOST " { init: (state) => state.bot = Ketracel self hooks: ["376"]: (state) => state.bot\burst! ["NJOIN"]: (state, chan) => state.bot\njoin chan ["PRIVMSG"]: (state, sender, params) => state.bot.router\privmsg sender, params }