From 804af4d8bedaed1f3a276192a23eeefb55a55bde Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Sun, 12 Oct 2025 13:48:05 +0800 Subject: [PATCH] =?UTF-8?q?fix(chatter):=20=E4=BF=AE=E5=A4=8D=E7=A7=81?= =?UTF-8?q?=E8=81=8A=E5=9C=BA=E6=99=AF=E4=B8=8B=E7=9B=AE=E6=A0=87=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=B1=BB=E5=9E=8B=E4=B8=8D=E5=8C=B9=E9=85=8D=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在 affinity_flow_chatter 插件中,处理私聊上下文时,`plan.target_info` 可能是一个字典(dict)类型,而不是预期的对象类型。这会导致在访问 `plan.target_info.person_name` 等属性时引发 `AttributeError`。 本次提交通过增加类型检查来处理这种情况,确保无论是对象还是字典类型的 `target_info` 都能被正确解析,从而增强了代码的健壮性并修复了潜在的运行时错误。 --- src/plugins/built_in/affinity_flow_chatter/plan_filter.py | 5 ++++- .../built_in/maizone_refactored/services/qzone_service.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/built_in/affinity_flow_chatter/plan_filter.py b/src/plugins/built_in/affinity_flow_chatter/plan_filter.py index edcd7dbbe..95f3b4193 100644 --- a/src/plugins/built_in/affinity_flow_chatter/plan_filter.py +++ b/src/plugins/built_in/affinity_flow_chatter/plan_filter.py @@ -279,7 +279,10 @@ class ChatterPlanFilter: is_group_chat = plan.chat_type == ChatType.GROUP chat_context_description = "你现在正在一个群聊中" if not is_group_chat and plan.target_info: - chat_target_name = plan.target_info.person_name or plan.target_info.user_nickname or "对方" + if isinstance(plan.target_info, dict): + chat_target_name = plan.target_info.get("person_name") or plan.target_info.get("user_nickname") or "对方" + else: + chat_target_name = plan.target_info.person_name or plan.target_info.user_nickname or "对方" chat_context_description = f"你正在和 {chat_target_name} 私聊" action_options_block = await self._build_action_options(plan.available_actions) diff --git a/src/plugins/built_in/maizone_refactored/services/qzone_service.py b/src/plugins/built_in/maizone_refactored/services/qzone_service.py index af71a281e..8b231496c 100644 --- a/src/plugins/built_in/maizone_refactored/services/qzone_service.py +++ b/src/plugins/built_in/maizone_refactored/services/qzone_service.py @@ -458,7 +458,7 @@ class QZoneService: raise RuntimeError(f"获取 cookie 失败: {data}") return data["data"] - except aiohttp.ClientError as e: + except aiohttp.ClientError as e: # noqa: PERF203 if attempt < max_retries - 1: logger.warning(f"无法连接到Napcat服务(尝试 {attempt + 1}/{max_retries}): {url},错误: {e!s}") await asyncio.sleep(retry_delay)