diff options
Diffstat (limited to 'src/ModuleManager.py')
| -rw-r--r-- | src/ModuleManager.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/ModuleManager.py b/src/ModuleManager.py index f764b445..49d00772 100644 --- a/src/ModuleManager.py +++ b/src/ModuleManager.py @@ -193,14 +193,26 @@ class ModuleManager(object): return loaded_module def load_modules(self, bot: "IRCBot.Bot", whitelist: typing.List[str]=[], - blacklist: typing.List[str]=[]): + blacklist: typing.List[str]=[], safe: bool=False + ) -> typing.Tuple[typing.List[str], typing.List[str]]: + fail = [] + success = [] for type, path in self.list_modules(): name = self._module_name(path) if name in whitelist or (not whitelist and not name in blacklist): try: self.load_module(bot, name) except ModuleWarning: - pass + fail.append(name) + continue + except Exception as e: + if safe: + fail.append(name) + continue + else: + raise + success.append(name) + return success, fail def unload_module(self, name: str): if not name in self.modules: |
