Correctly return errors for load/unload, not just reload (modules.py)
This commit is contained in:
parent
eb0c13971a
commit
da81b20c01
1 changed files with 18 additions and 12 deletions
|
@ -1,6 +1,18 @@
|
||||||
from src import ModuleManager, utils
|
from src import ModuleManager, utils
|
||||||
|
|
||||||
class Module(ModuleManager.BaseModule):
|
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)
|
@utils.hook("received.command.loadmodule", min_args=1)
|
||||||
def load(self, event):
|
def load(self, event):
|
||||||
"""
|
"""
|
||||||
|
@ -11,7 +23,8 @@ class Module(ModuleManager.BaseModule):
|
||||||
name = event["args_split"][0].lower()
|
name = event["args_split"][0].lower()
|
||||||
if name in self.bot.modules.modules:
|
if name in self.bot.modules.modules:
|
||||||
raise utils.EventError("Module '%s' is already loaded" % name)
|
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)
|
event["stdout"].write("Loaded '%s'" % name)
|
||||||
|
|
||||||
@utils.hook("received.command.unloadmodule", min_args=1)
|
@utils.hook("received.command.unloadmodule", min_args=1)
|
||||||
|
@ -24,7 +37,8 @@ class Module(ModuleManager.BaseModule):
|
||||||
name = event["args_split"][0].lower()
|
name = event["args_split"][0].lower()
|
||||||
if not name in self.bot.modules.modules:
|
if not name in self.bot.modules.modules:
|
||||||
raise utils.EventError("Module '%s' isn't loaded" % name)
|
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)
|
event["stdout"].write("Unloaded '%s'" % name)
|
||||||
|
|
||||||
def _reload(self, name):
|
def _reload(self, name):
|
||||||
|
@ -39,16 +53,8 @@ class Module(ModuleManager.BaseModule):
|
||||||
:permission: reload-module
|
:permission: reload-module
|
||||||
"""
|
"""
|
||||||
name = event["args_split"][0].lower()
|
name = event["args_split"][0].lower()
|
||||||
try:
|
|
||||||
self._reload(name)
|
self._catch(lambda: _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)))
|
|
||||||
event["stdout"].write("Reloaded '%s'" % name)
|
event["stdout"].write("Reloaded '%s'" % name)
|
||||||
|
|
||||||
@utils.hook("received.command.reloadallmodules")
|
@utils.hook("received.command.reloadallmodules")
|
||||||
|
|
Loading…
Reference in a new issue