diff options
Diffstat (limited to 'src/core_modules/modules.py')
| -rw-r--r-- | src/core_modules/modules.py | 84 |
1 files changed, 50 insertions, 34 deletions
diff --git a/src/core_modules/modules.py b/src/core_modules/modules.py index a93afaea..e3acdcef 100644 --- a/src/core_modules/modules.py +++ b/src/core_modules/modules.py @@ -18,14 +18,36 @@ class Module(ModuleManager.BaseModule): raise utils.EventError("Failed to reload module '%s': %s" % ( name, str(e))) - @utils.hook("received.command.loadmodule", min_args=1) + @utils.hook("received.command.modinfo") + @utils.spec("!<module>string") + def info(self, event): + name = event["spec"][0] + if not name in self.bot.modules.modules: + raise + module = self.bot.modules.modules[name] + + event_calls = 0 + for event_name, hooks in self.events.all_hooks().items(): + for hook in hooks: + if hook.context == module.context: + event_calls += hook.call_count + + event_str = "event" if event_calls == 1 else "events" + + loaded_at = utils.datetime.format.datetime_human(module.loaded_at) + if module.commit: + loaded_at = "%s (git @%s)" % (loaded_at, module.commit) + + event["stdout"].write("%s: '%s' was loaded at %s and has handled %d %s" + % (event["user"].nickname, module.name, loaded_at, event_calls, + event_str)) + + @utils.hook("received.command.loadmodule") + @utils.kwarg("help", "Load a module") + @utils.kwarg("permission", "loadmodule") + @utils.spec("!<name>wordlower") def load(self, event): - """ - :help: Load a module - :usage: <module name> - :permission: load-module - """ - name = event["args_split"][0].lower() + name = event["spec"][0] if name in self.bot.modules.modules: raise utils.EventError("Module '%s' is already loaded" % name) definition = self._catch(name, @@ -34,14 +56,12 @@ class Module(ModuleManager.BaseModule): self._catch(name, lambda: self.bot.modules.load_module(self.bot, definition)) event["stdout"].write("Loaded '%s'" % name) - @utils.hook("received.command.unloadmodule", min_args=1) + @utils.hook("received.command.unloadmodule") + @utils.kwarg("help", "Unload a module") + @utils.kwarg("permission", "unloadmodule") + @utils.spec("!<name>wordlower") def unload(self, event): - """ - :help: Unload a module - :usage: <module name> - :permission: unload-module - """ - name = event["args_split"][0].lower() + name = event["spec"][0] if not name in self.bot.modules.modules: raise utils.EventError("Module '%s' isn't loaded" % name) @@ -53,24 +73,19 @@ class Module(ModuleManager.BaseModule): definition = self._catch(name, lambda: self.bot.modules.find_module(name)) self.bot.modules.load_module(self.bot, definition) - @utils.hook("received.command.reloadmodule", min_args=1) + @utils.hook("received.command.reloadmodule") + @utils.kwarg("help", "Reload a module") + @utils.kwarg("permission", "reloadmodule") + @utils.spec("!<name>wordlower") def reload(self, event): - """ - :help: Reload a module - :usage: <module name> - :permission: reload-module - """ - name = event["args_split"][0].lower() - + name = event["spec"][0] self._catch(name, lambda: self._reload(name)) event["stdout"].write("Reloaded '%s'" % name) @utils.hook("received.command.reloadallmodules") + @utils.kwarg("help", "Reload all modules") + @utils.kwarg("permission", "reloadallmodules") def reload_all(self, event): - """ - :help: Reload all modules - :permission: reload-all-modules - """ result = self.bot.try_reload_modules() if result.success: event["stdout"].write(result.message) @@ -78,10 +93,11 @@ class Module(ModuleManager.BaseModule): event["stderr"].write(result.message) def _get_blacklist(self): - return self.bot.config.get_list("module-blacklist") - def _save_blacklist(self, modules): - self.bot.config.set_list("module-blacklist", modules) - self.bot.config.save() + config = self.bot.get_config("modules") + return config, config.get_list("blacklist") + def _save_blacklist(self, config, modules): + config.set_list("blacklist", sorted(modules)) + config.save() @utils.hook("received.command.enablemodule") @utils.kwarg("min_args", 1) @@ -91,12 +107,12 @@ class Module(ModuleManager.BaseModule): def enable(self, event): name = event["args_split"][0].lower() - blacklist = self._get_blacklist() + config, blacklist = self._get_blacklist() if not name in blacklist: raise utils.EventError("Module '%s' isn't disabled" % name) blacklist.remove(name) - self._save_blacklist(blacklist) + self._save_blacklist(config, blacklist) event["stdout"].write("Module '%s' has been enabled and can now " "be loaded" % name) @@ -112,11 +128,11 @@ class Module(ModuleManager.BaseModule): self.bot.modules.unload_module(name) and_unloaded = " and unloaded" - blacklist = self._get_blacklist() + config, blacklist = self._get_blacklist() if name in blacklist: raise utils.EventError("Module '%s' is already disabled" % name) blacklist.append(name) - self._save_blacklist(blacklist) + self._save_blacklist(config, blacklist) event["stdout"].write("Module '%s' has been disabled%s" % ( name, and_unloaded)) |
