aboutsummaryrefslogtreecommitdiff
path: root/src/ModuleManager.py
diff options
context:
space:
mode:
authorGravatar jesopo2020-02-09 10:15:08 +0000
committerGravatar jesopo2020-02-09 10:17:40 +0000
commitf3ac154fe2bffb0148b12adb5ad9dce763383775 (patch)
tree44cbcaf6c734b2da14a2e28051f54ff6f99ddd31 /src/ModuleManager.py
parentinsert new hooks at the start of their priority, to prevent duplicates on reload (diff)
signature
add ModuleManager.try_reload_module(), use it for !reloadmodule
Diffstat (limited to 'src/ModuleManager.py')
-rw-r--r--src/ModuleManager.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/ModuleManager.py b/src/ModuleManager.py
index 2ad086ea..b8dcd107 100644
--- a/src/ModuleManager.py
+++ b/src/ModuleManager.py
@@ -402,6 +402,20 @@ class ModuleManager(object):
[loaded_module.name,
", ".join([str(referrer) for referrer in referrers])])
+ def try_reload_module(self, bot: "IRCBot.Bot", name: str):
+ loaded_module = self.modules.pop(name)
+ loaded_module.module.on_pause()
+
+ new_definition = self.find_module(name)
+ try:
+ self.load_module(bot, new_definition)
+ except:
+ loaded_module.module.on_resume()
+ self.modules[name] = loaded_module
+ raise
+
+ self._unload_module(loaded_module)
+
def try_reload_modules(self, bot: "IRCBot.Bot",
whitelist: typing.List[str], blacklist: typing.List[str]):
loadable, nonloadable = self._list_valid_modules(