aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jesopo2018-12-02 09:16:17 +0000
committerGravatar jesopo2018-12-02 09:16:17 +0000
commitda81b20c01b66e67fb626a969a282c9981236b3c (patch)
treeea8835ccd77bb7438b5a062a0a083b6bbf1bc252
parentOmit 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.py30
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")