48 lines
1.3 KiB
Plaintext
48 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 ...
|
||
|
self.router = router
|
||
|
|
||
|
burst: =>
|
||
|
@irc\NICK "Ketracel", "white", "the.dominion", "+io", "Ketracel White"
|
||
|
@irc\NJOIN "#ketracel", "&@Ketracel"
|
||
|
|
||
|
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
|
||
|
}
|