From 438bcc4f59b10cdfce022c70a7bd58c11cbb319f Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Wed, 20 Aug 2025 11:41:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(chat):=20=E4=BF=AE=E5=A4=8D=E4=B8=BB?= =?UTF-8?q?=E5=8A=A8=E6=80=9D=E8=80=83=E8=8C=83=E5=9B=B4=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=8F=8A=E7=A9=BA=E7=94=A8=E6=88=B7ID=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 增加对 `proactive_thinking_chat_scope` 配置值的有效性验证,防止因无效配置导致意外行为。(乱填参数是吧,我跟你爆了) - 修复了当 `user_id` 为 `None` 时可能引发的 `get_person_id` 调用错误,确保在这种情况下程序能够稳定运行。 --- src/chat/chat_loop/heartFC_chat.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/chat/chat_loop/heartFC_chat.py b/src/chat/chat_loop/heartFC_chat.py index 9eea43b62..d0c069a8d 100644 --- a/src/chat/chat_loop/heartFC_chat.py +++ b/src/chat/chat_loop/heartFC_chat.py @@ -66,6 +66,7 @@ class HeartFChatting: 用于在特定聊天流中生成回复。 其生命周期现在由其关联的 SubHeartflow 的 FOCUSED 状态控制。 """ + VALID_PROACTIVE_SCOPES = {"private", "group", "all"} def __init__( self, @@ -154,6 +155,9 @@ class HeartFChatting: 请根据当前情况做出选择。如果选择回复,请直接发送你想说的内容;如果选择保持沉默,请只回复"沉默"(注意:这个词不会被发送到群聊中)。""", } self.proactive_thinking_chat_scope = global_config.chat.The_scope_that_proactive_thinking_can_trigger + if self.proactive_thinking_chat_scope not in self.VALID_PROACTIVE_SCOPES: + logger.error(f"无效的主动思考范围: '{self.proactive_thinking_chat_scope}'。有效值为: {self.VALID_PROACTIVE_SCOPES}") + raise ValueError(f"配置错误:无效的主动思考范围 '{self.proactive_thinking_chat_scope}'") #乱填参数是吧,我跟你爆了 async def start(self): """检查是否需要启动主循环,如果未激活则启动。""" @@ -293,7 +297,6 @@ class HeartFChatting: continue if self.proactive_thinking_chat_scope == "private" and self.chat_stream.group_info is not None: continue - current_time = time.time() silence_duration = current_time - self.last_message_time @@ -497,7 +500,8 @@ class HeartFChatting: message_data.get("chat_info_platform") or message_data.get("user_platform") or self.chat_stream.platform ) user_id = message_data.get("user_id") - + if user_id is None: + user_id = "" person_id = person_info_manager.get_person_id(platform, user_id) person_name = await person_info_manager.get_value(person_id, "person_name") return f"{person_name}:{message_data.get('processed_plain_text')}"