aboutsummaryrefslogtreecommitdiff
path: root/src/core_modules/modules.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/core_modules/modules.py')
-rw-r--r--src/core_modules/modules.py84
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))