ketracel/src/ketracel/bots/commands.moon

39 lines
936 B
Plaintext

ln = require "ln"
stringx = require "pl.stringx"
class CommandRouter
new: (bot, cmdchar = "?") =>
@bot = bot
@cmdchar = cmdchar
@commands = {}
register: (verb, action) =>
self.commands[verb] = action
run: (sender, target, verb, args) =>
verb = string.upper verb
cmd = self.commands[verb]
if cmd == nil
@bot.irc\NOTICE @bot.name, sender, "unknown command verb " .. verb
return
cmd sender, target, verb, args
privmsg: (sender, params) =>
cmdchar = params[2]\sub 1, 1
destsigil = params[1]\sub 1, 1
if params[1]\lower! == @bot.name\lower!
sp = stringx.split params[2]
cmd = sp[1]
table.remove sp, 1
@run sender[1], params[1], cmd, sp
if cmdchar == @cmdchar and destsigil == "#"
sp = stringx.split params[2]
cmd = string.sub sp[1], (#@cmdchar + 1)
table.remove sp, 1
@run sender[1], params[1], cmd, sp
CommandRouter