From c534e3dcb86dde28079558d5f3959727869fe33e Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 15 Jun 2025 09:55:20 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=9C=AA=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E7=9A=84=E6=8F=92=E4=BB=B6=EF=BC=8C=E4=B8=8D=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/plugin.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/app/core/plugin.py b/app/core/plugin.py index 2dbcec69..26ba2828 100644 --- a/app/core/plugin.py +++ b/app/core/plugin.py @@ -122,6 +122,8 @@ class PluginManager(metaclass=Singleton): return False return True + # 已安装插件 + installed_plugins = SystemConfigOper().get(SystemConfigKey.UserInstalledPlugins) or [] # 扫描插件目录 if pid: # 加载指定插件 @@ -130,13 +132,11 @@ class PluginManager(metaclass=Singleton): filter_func=lambda name, obj: check_module(obj) and name == pid ) else: - # 加载所有插件 + # 加载已安装插件 plugins = ModuleHelper.load( "app.plugins", - filter_func=lambda _, obj: check_module(obj) + filter_func=lambda name, obj: check_module(obj) and name in installed_plugins ) - # 已安装插件 - installed_plugins = SystemConfigOper().get(SystemConfigKey.UserInstalledPlugins) or [] # 排序 plugins.sort(key=lambda x: x.plugin_order if hasattr(x, "plugin_order") else 0) for plugin in plugins: @@ -152,11 +152,6 @@ class PluginManager(metaclass=Singleton): continue # 存储Class self._plugins[plugin_id] = plugin - # 未安装的不加载 - if plugin_id not in installed_plugins: - # 设置事件状态为不可用 - eventmanager.disable_event_handler(plugin) - continue # 生成实例 plugin_obj = plugin() # 生效插件配置 @@ -201,7 +196,7 @@ class PluginManager(metaclass=Singleton): logger.info(f"正在停止插件 {pid}...") plugin_obj = self._running_plugins.get(pid) if not plugin_obj: - logger.warning(f"插件 {pid} 不存在或未加载") + logger.debug(f"插件 {pid} 不存在或未加载") return plugins = {pid: plugin_obj} else: @@ -213,6 +208,7 @@ class PluginManager(metaclass=Singleton): # 清空对像 if pid: # 清空指定插件 + self._plugins.pop(pid, None) self._running_plugins.pop(pid, None) else: # 清空