diff options
| author | 2020-02-09 10:15:08 +0000 | |
|---|---|---|
| committer | 2020-02-09 10:17:40 +0000 | |
| commit | f3ac154fe2bffb0148b12adb5ad9dce763383775 (patch) | |
| tree | 44cbcaf6c734b2da14a2e28051f54ff6f99ddd31 /src/ModuleManager.py | |
| parent | insert 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.py | 14 |
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( |
