minerbot-phoenix/plugin.py

54 lines
1.2 KiB
Python

cmds = {}
help = {}
listeners = {}
class CommandGroup:
def __init__(self,f,default="help"):
self.base = f
self.subcmds = {}
self.default = default
def command(self,name):
def _register_subcmd(f):
self.subcmds[name]=f
return f
return _register_subcmd
def __call__(self,bot,channel,nick,subcmd,*args):
print("Calling base")
if self.base(bot,channel,nick,subcmd,*args):
return
print("Calling subcommand {}".format(subcmd if subcmd in self.subcmds else self.default))
if subcmd in self.subcmds:
return self.subcmds[subcmd](bot,channel,nick,subcmd,*args)
else:
return self.subcmds[self.default](bot,channel,nick,subcmd,*args)
def clear():
cmds.clear()
help.clear()
listeners.clear()
def command(name,helptext="No help available for this command."):
def _register_cmd(func):
cmds[name]=func
help[name]=helptext
return func
return _register_cmd
def group(name,helptext=""):
def _register_group(f):
gr = CommandGroup(f)
cmds[name]=gr
help[name]=helptext
return gr
return _register_group
def listener(name):
def _register_cmd(func):
listeners[name]=func
return func
return _register_cmd
def alias(name,target):
cmds[name]=cmds[target]
help[name]=help[target]