54 lines
1.2 KiB
Python
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]
|