ketracel/src/ketracel/bots/ketracel.moon

49 lines
1.3 KiB
Plaintext

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 <your.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
}