]> jfr.im git - erebus.git/blobdiff - modules/help.py
help - dont allow args to SHOWCOMMANDS
[erebus.git] / modules / help.py
index 9c66731ea286136320333c6942145393e66de7aa..252353656713c8268d7c64788c26dc8c2602dfbc 100644 (file)
@@ -24,6 +24,7 @@ def modstart(parent, *args, **kwargs):
 modstop = lib.modstop
 
 # module code
+import functools
 import os.path
 helps = {}
 cmds  = {}
@@ -63,6 +64,7 @@ def dereghelp(func, *args, **kwargs):
                del cmds[c]
        del helps[func]
 
+@functools.total_ordering
 class HelpLine(object):
        def __init__(self, cmd, syntax, shorthelp, admin, glevel, module, clevel):
                self.cmd = cmd
@@ -73,6 +75,15 @@ class HelpLine(object):
                self.module = module
                self.clevel = clevel
 
+       def __lt__(self, other):
+               if self.glevel == other.glevel:
+                       return self.cmd < other.cmd
+               else:
+                       return self.glevel < other.glevel
+
+       def __eq__(self, other):
+               return self.glevel == other.glevel and self.cmd == other.cmd
+
        def __cmp__(self, other):
                if self.glevel == other.glevel:
                        return cmp(self.cmd, other.cmd)
@@ -166,10 +177,13 @@ def help(bot, user, chan, realtarget, *args):
 
 @lib.hook(needchan=False)
 @lib.help(None, "provides command list")
+@lib.argsEQ(0)
 def showcommands(bot, user, chan, realtarget, *args):
+       if bot.parent.cfg.getboolean('erebus', 'nofakelag'):
+               return help_nolag(bot, user, chan, realtarget, *args)
        if bot.parent.cfg.getboolean('help', 'autogen'):
                try:
-                       _genhelp(bot, user, chan, realtarget, *args)
+                       _genhelp(bot, user, chan, realtarget)
                except: pass
 
        url = bot.parent.cfg.get('help', 'url', default=None)
@@ -186,7 +200,7 @@ def help_nolag(bot, user, chan, realtarget, *args):
        if len(args) == 0: # list commands
                lines = []
                for func in helps.values():
-                       lines += _mkhelp(user, func)
+                       lines += _mkhelp(user.glevel, func)
                for line in sorted(lines):
                        bot.slowmsg(user, str(line))
                bot.slowmsg(user, "End of command listing.")
@@ -195,7 +209,7 @@ def help_nolag(bot, user, chan, realtarget, *args):
                mod = args[0][1:].lower()
                for func in helps.values():
                        if func.module == mod:
-                               lines += _mkhelp(user, func)
+                               lines += _mkhelp(user.glevel, func)
                for line in sorted(lines):
                        bot.slowmsg(user, str(line))
                bot.slowmsg(user, "End of command listing.")