49 lines
1.3 KiB
Plaintext
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
|
|
}
|