From 638eee0d685c06d258cb55287204ca97bca7c344 Mon Sep 17 00:00:00 2001 From: jesopo Date: Tue, 10 Dec 2019 05:27:35 +0000 Subject: move core modules to src/core_modules, make them uneffected by white/black list --- modules/help.py | 124 -------------------------------------------------------- 1 file changed, 124 deletions(-) delete mode 100644 modules/help.py (limited to 'modules/help.py') diff --git a/modules/help.py b/modules/help.py deleted file mode 100644 index 58659d9d..00000000 --- a/modules/help.py +++ /dev/null @@ -1,124 +0,0 @@ -#--depends-on commands -from src import IRCBot, ModuleManager, utils - -class Module(ModuleManager.BaseModule): - def _get_help(self, hook): - return hook.get_kwarg("help", None) or hook.docstring.description - def _get_usage(self, hook, command, command_prefix=""): - command = "%s%s" % (command_prefix, command) - usage = hook.get_kwarg("usage", None) - if usage: - usages = [usage] - else: - usages = hook.docstring.var_items.get("usage", None) - - if usages: - return " | ".join( - "%s %s" % (command, usage) for usage in usages) - return usage - - def _get_hook(self, command): - hooks = self.events.on("received.command").on(command).get_hooks() - if hooks: - return hooks[0] - else: - return None - - @utils.hook("received.command.help") - def help(self, event): - if event["args"]: - command = event["args_split"][0].lower() - hook = self._get_hook(command) - - if hook == None: - raise utils.EventError("Unknown command '%s'" % command) - help = self._get_help(hook) - usage = self._get_usage(hook, command, event["command_prefix"]) - - out = help - if usage: - out += ". Usage: %s" % usage - - if out: - event["stdout"].write("%s: %s" % (command, out)) - else: - event["stderr"].write("No help for %s" % command) - else: - modules_command = utils.irc.bold( - "%smodules" % event["command_prefix"]) - commands_command = utils.irc.bold( - "%scommands " % event["command_prefix"]) - help_command = utils.irc.bold( - "%shelp " % event["command_prefix"]) - - event["stdout"].write("I'm %s. use '%s' to list modules, " - "'%s' to list commands and " - "'%s' to see help text for a command" % - (IRCBot.URL, modules_command, commands_command, help_command)) - - def _all_command_hooks(self): - all_hooks = {} - for child_name in self.events.on("received.command").get_children(): - hooks = self.events.on("received.command").on(child_name - ).get_hooks() - if hooks: - all_hooks[child_name.lower()] = hooks[0] - return all_hooks - - @utils.hook("received.command.modules") - def modules(self, event): - contexts = {} - for command, command_hook in self._all_command_hooks().items(): - if not command_hook.context in contexts: - module = self.bot.modules.from_context(command_hook.context) - contexts[module.context] = module.name - - modules_available = sorted(contexts.values()) - event["stdout"].write("Modules: %s" % ", ".join(modules_available)) - - @utils.hook("received.command.commands", min_args=1) - def commands(self, event): - module_name = event["args_split"][0] - module = self.bot.modules.from_name(module_name) - if module == None: - raise utils.EventError("No such module '%s'" % module_name) - - commands = [] - for command, command_hook in self._all_command_hooks().items(): - if command_hook.context == module.context: - commands.append(command) - - event["stdout"].write("Commands for %s module: %s" % ( - module.name, ", ".join(commands))) - - @utils.hook("received.command.which") - @utils.kwarg("min_args", 1) - @utils.kwarg("help", "Find where a command is provided") - @utils.kwarg("usage", "") - def which(self, event): - command = event["args_split"][0].lower() - hooks = self.events.on("received.command").on(command).get_hooks() - if not hooks: - raise utils.EventError("Unknown command '%s'" % command) - - hook = hooks[0] - module = self.bot.modules.from_context(hook.context) - event["stdout"].write("%s%s is provided by %s.%s" % ( - event["command_prefix"], command, module.name, - hook.function.__name__)) - - @utils.hook("received.command.apropos") - @utils.kwarg("min_args", 1) - @utils.kwarg("help", "Show commands with a given string in them") - @utils.kwarg("usage", "") - def apropos(self, event): - query = event["args_split"][0] - query_lower = query.lower() - - commands = [] - for command, hook in self._all_command_hooks().items(): - if query_lower in command.lower(): - commands.append("%s%s" % (event["command_prefix"], command)) - if commands: - event["stdout"].write("Apropos of '%s': %s" % - (query, ", ".join(commands))) -- cgit v1.3.1-10-gc9f91