From f627a2d8e12cd88acfaa6dd332760017af05c540 Mon Sep 17 00:00:00 2001 From: SXP-Simon Date: Fri, 6 Mar 2026 17:45:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=BC=95=E5=85=A5=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E7=94=9F=E5=91=BD=E5=91=A8=E6=9C=9F=E7=AE=A1=E7=90=86=EF=BC=8C?= =?UTF-8?q?=E5=BC=BA=E5=88=B6=E9=80=80=E5=87=BA=E4=BF=9D=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index bf3502a..c95e5c6 100644 --- a/main.py +++ b/main.py @@ -142,7 +142,7 @@ class GroupDailyAnalysis(Star): self._initialized = False self._discovery_run = False # 是否已尝试过运行发现逻辑 # 异步注册任务,处理插件重载情况 - asyncio.create_task(self._run_initialization("Plugin Reload/Init")) + self._init_task = asyncio.create_task(self._run_initialization("Plugin Reload/Init")) # orchestrators 缓存已移至 应用层逻辑 (分析服务) 或 暂时移除以简化。 # 如果需要高性能缓存,后续可由 AnalysisApplicationService 内部维护。 @@ -167,6 +167,10 @@ class GroupDailyAnalysis(Star): # 针对极少数环境,2秒可能不足以让平台管理器就绪,增加到 5秒 await asyncio.sleep(5) + # [加固] 如果在等待期间插件已被卸载(terminate),则直接退出 + if not self.bot_manager: + return + try: # 注册 TraceID 过滤器 trace_filter = TraceLogFilter() @@ -214,6 +218,10 @@ class GroupDailyAnalysis(Star): async def terminate(self): """插件被卸载/停用时调用,清理资源""" try: + # 取消正在进行的初始化任务 + if hasattr(self, "_init_task") and self._init_task and not self._init_task.done(): + self._init_task.cancel() + logger.info("开始清理QQ群日常分析插件资源...") # 停止自动调度器