模块管理优化
This commit is contained in:
@@ -139,10 +139,10 @@ class PluginManager:
|
|||||||
plugin_class = None
|
plugin_class = None
|
||||||
for name, obj in inspect.getmembers(module):
|
for name, obj in inspect.getmembers(module):
|
||||||
if (inspect.isclass(obj) and
|
if (inspect.isclass(obj) and
|
||||||
issubclass(obj, PluginInterface) and
|
issubclass(obj, PluginInterface) and
|
||||||
obj != PluginInterface and
|
obj != PluginInterface and
|
||||||
obj != MessagePluginInterface and
|
obj != MessagePluginInterface and
|
||||||
obj != ScheduledPluginInterface):
|
obj != ScheduledPluginInterface):
|
||||||
plugin_class = obj
|
plugin_class = obj
|
||||||
break
|
break
|
||||||
|
|
||||||
@@ -407,31 +407,31 @@ class PluginManager:
|
|||||||
return success
|
return success
|
||||||
|
|
||||||
def find_plugin_by_name(self, plugin_name: str) -> Tuple[Optional[str], Optional[PluginInterface]]:
|
def find_plugin_by_name(self, plugin_name: str) -> Tuple[Optional[str], Optional[PluginInterface]]:
|
||||||
"""
|
"""
|
||||||
根据插件名称或模块名查找插件
|
根据插件名称或模块名查找插件
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
plugin_name: 插件名称或模块名
|
plugin_name: 插件名称或模块名
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
(插件显示名称, 插件实例) 元组,未找到返回 (None, None)
|
(插件显示名称, 插件实例) 元组,未找到返回 (None, None)
|
||||||
"""
|
"""
|
||||||
# 直接通过显示名称查找
|
# 直接通过显示名称查找
|
||||||
if plugin_name in self.plugins:
|
if plugin_name in self.plugins:
|
||||||
return plugin_name, self.plugins[plugin_name]
|
return plugin_name, self.plugins[plugin_name]
|
||||||
|
|
||||||
# 通过模块名查找
|
# 通过模块名查找
|
||||||
if plugin_name in self.module_to_plugin:
|
if plugin_name in self.module_to_plugin:
|
||||||
display_name = self.module_to_plugin[plugin_name]
|
display_name = self.module_to_plugin[plugin_name]
|
||||||
return display_name, self.plugins.get(display_name)
|
return display_name, self.plugins.get(display_name)
|
||||||
|
|
||||||
# 遍历所有插件查找匹配的模块名
|
# 遍历所有插件查找匹配的模块名
|
||||||
for name, plugin in self.plugins.items():
|
for name, plugin in self.plugins.items():
|
||||||
try:
|
try:
|
||||||
module_name = plugin.__class__.__module__.split('.')[-2]
|
module_name = plugin.__class__.__module__.split('.')[-2]
|
||||||
if module_name == plugin_name:
|
if module_name == plugin_name:
|
||||||
return name, plugin
|
return name, plugin
|
||||||
except (IndexError, AttributeError):
|
except (IndexError, AttributeError):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
return None, None
|
return None, None
|
||||||
|
|||||||
Reference in New Issue
Block a user