Skip to content

Commit

Permalink
feat(bot): Bot 类添加 load_plugin_from_class() 方法
Browse files Browse the repository at this point in the history
  • Loading branch information
st1020 committed Apr 29, 2022
1 parent 1c5f08b commit f00bbab
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions alicebot/__init__.py
Expand Up @@ -309,12 +309,19 @@ async def _wrapper(_event):
if not self.should_exit.is_set():
raise GetEventTimeout

def _load_plugin(self, plugin_class: Type[Plugin]):
def load_plugin_from_class(self, plugin_class: Type[Plugin], config_class: Type[BaseModel] = None) -> None:
"""从插件类中手动加载插件。
Args:
plugin_class: 插件类。
config_class: 配置类。
"""
if type(plugin_class.priority) is int and plugin_class.priority >= 0:
if plugin_class.priority in self.plugins_priority_dict:
self.plugins_priority_dict[plugin_class.priority].append(plugin_class)
else:
self.plugins_priority_dict[plugin_class.priority] = [plugin_class]
self._update_config(config_class)
else:
raise LoadModuleError(f'Plugin class priority incorrect in the module "{plugin_class!r}"')

Expand All @@ -329,11 +336,10 @@ def load_plugin(self, name: str) -> Optional[Type[Plugin]]:
"""
try:
plugin_class, config_class = load_module(name, Plugin)
self._load_plugin(plugin_class)
self.load_plugin_from_class(plugin_class, config_class)
except Exception as e:
logger.error(f'Import plugin "{name}" failed: {e!r}')
else:
self._update_config(config_class)
logger.info(f'Succeeded to import plugin "{name}"')
return plugin_class

Expand Down Expand Up @@ -364,14 +370,13 @@ def load_plugins_from_dir(self, path: Iterable[str]):
"""
for module, config_class, module_info in load_modules_from_dir(self._module_path_finder, path, Plugin):
try:
self._load_plugin(module)
self.load_plugin_from_class(module)
except Exception as e:
# noinspection PyUnresolvedReferences
logger.error(
f'Import plugin "{module_info.name}" from path "{module_info.module_finder.path}" failed: {e!r}'
)
else:
self._update_config(config_class)
# noinspection PyUnresolvedReferences
logger.info(
f'Succeeded to import plugin "{module_info.name}" from path "{module_info.module_finder.path}"'
Expand Down

0 comments on commit f00bbab

Please sign in to comment.