修复插件注册中由于引用导致的重复
This commit is contained in:
@@ -77,7 +77,11 @@ class PluginInterface(ABC):
|
||||
'''
|
||||
将插件注册, 使其可以被命令匹配
|
||||
'''
|
||||
PluginInterface.plugin_instances[command] = self
|
||||
if command in PluginInterface.plugin_instances:
|
||||
config.Log("Warning", f"插件{PluginInterface.plugin_instances[command].__class__.__name__}已注册命令{command}, 将被新插件{self.__class__.__name__}覆盖")
|
||||
else:
|
||||
config.Log("Info", f"插件{self.__class__.__name__}已注册命令{command}")
|
||||
PluginInterface.plugin_instances[command] = self
|
||||
|
||||
def register_db_model(self) -> DatabaseModel:
|
||||
'''
|
||||
@@ -109,6 +113,7 @@ def ImportPlugins(app: FastAPI, plugin_dir:str = "Plugins") -> None:
|
||||
if plugin_tool_dir.IsDir() == False:
|
||||
config.Log("Error", f"插件目录不是目录: {plugin_tool_dir.GetFullPath()}")
|
||||
return
|
||||
plugin_registered_class = set[type[PluginInterface]]()
|
||||
for dir_name, sub_dirs, files in plugin_tool_dir.DirWalk():
|
||||
for file_name in files:
|
||||
module_file = ToolFile(dir_name)|file_name
|
||||
@@ -119,7 +124,8 @@ def ImportPlugins(app: FastAPI, plugin_dir:str = "Plugins") -> None:
|
||||
plugin_class = getattr(module, class_name)
|
||||
if not isinstance(plugin_class, type):
|
||||
continue
|
||||
if issubclass(plugin_class, PluginInterface):
|
||||
if issubclass(plugin_class, PluginInterface) and plugin_class not in plugin_registered_class:
|
||||
plugin_registered_class.add(plugin_class)
|
||||
plugin = plugin_class()
|
||||
if plugin.is_enable_plugin() == False:
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user