diff options
| author | 2018-12-02 09:16:17 +0000 | |
|---|---|---|
| committer | 2018-12-02 09:16:17 +0000 | |
| commit | da81b20c01b66e67fb626a969a282c9981236b3c (patch) | |
| tree | ea8835ccd77bb7438b5a062a0a083b6bbf1bc252 | |
| parent | Omit Config keys that have falsey values (empty) (diff) | |
| signature | ||
Correctly return errors for load/unload, not just reload (modules.py)
| -rw-r--r-- | modules/modules.py | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/modules/modules.py b/modules/modules.py index 7762c230..f435909e 100644 --- a/modules/modules.py +++ b/modules/modules.py @@ -1,6 +1,18 @@ from src import ModuleManager, utils class Module(ModuleManager.BaseModule): + def _catch(self, func): + try: + func() + except ModuleManager.ModuleNotFoundException: + raise utils.EventError("Module '%s' isn't loaded" % name) + except ModuleManager.ModuleWarning as warning: + raise utils.EventError("Module '%s' not loaded: %s" % ( + name, str(warning))) + except Exception as e: + raise utils.EventError("Failed to reload module '%s': %s" % ( + name, str(e))) + @utils.hook("received.command.loadmodule", min_args=1) def load(self, event): """ @@ -11,7 +23,8 @@ class Module(ModuleManager.BaseModule): name = event["args_split"][0].lower() if name in self.bot.modules.modules: raise utils.EventError("Module '%s' is already loaded" % name) - self.bot.modules.load_module(self.bot, name) + + self._catch(lambda: self.bot.modules.load_module(self.bot, name)) event["stdout"].write("Loaded '%s'" % name) @utils.hook("received.command.unloadmodule", min_args=1) @@ -24,7 +37,8 @@ class Module(ModuleManager.BaseModule): name = event["args_split"][0].lower() if not name in self.bot.modules.modules: raise utils.EventError("Module '%s' isn't loaded" % name) - self.bot.modules.unload_module(name) + + self._catch(lambda: self.bot.modules.unload_module(name)) event["stdout"].write("Unloaded '%s'" % name) def _reload(self, name): @@ -39,16 +53,8 @@ class Module(ModuleManager.BaseModule): :permission: reload-module """ name = event["args_split"][0].lower() - try: - self._reload(name) - except ModuleManager.ModuleNotFoundException: - raise utils.EventError("Module '%s' isn't loaded" % name) - except ModuleManager.ModuleWarning as warning: - raise utils.EventError("Module '%s' not loaded: %s" % ( - name, str(warning))) - except Exception as e: - raise utils.EventError("Failed to reload module '%s': %s" % ( - name, str(e))) + + self._catch(lambda: _reload(name)) event["stdout"].write("Reloaded '%s'" % name) @utils.hook("received.command.reloadallmodules") |
