diff --git a/src/chat/chat_loop/heartFC_chat.py b/src/chat/chat_loop/heartFC_chat.py index 1b9343df5..a9f4de426 100644 --- a/src/chat/chat_loop/heartFC_chat.py +++ b/src/chat/chat_loop/heartFC_chat.py @@ -464,10 +464,12 @@ class HeartFChatting: async def build_reply_to_str(self, message_data: dict): person_info_manager = get_person_info_manager() - person_id = person_info_manager.get_person_id( - message_data.get("chat_info_platform"), # type: ignore - message_data.get("user_id"), # type: ignore - ) + + # 获取平台信息,优先使用chat_info_platform,如果为None则使用user_platform + platform = message_data.get("chat_info_platform") or message_data.get("user_platform") or self.chat_stream.platform + user_id = message_data.get("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')}" @@ -486,10 +488,12 @@ class HeartFChatting: # 存储reply action信息 person_info_manager = get_person_info_manager() - person_id = person_info_manager.get_person_id( - action_message.get("chat_info_platform", ""), - action_message.get("user_id", ""), - ) + + # 获取平台信息,优先使用chat_info_platform,如果为空则使用user_platform + platform = action_message.get("chat_info_platform") or action_message.get("user_platform") or self.chat_stream.platform + user_id = action_message.get("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") action_prompt_display = f"你对{person_name}进行了回复:{reply_text}" diff --git a/src/person_info/person_info.py b/src/person_info/person_info.py index fb418f78e..5b22aaa37 100644 --- a/src/person_info/person_info.py +++ b/src/person_info/person_info.py @@ -87,6 +87,10 @@ class PersonInfoManager: @staticmethod def get_person_id(platform: str, user_id: Union[int, str]) -> str: """获取唯一id""" + # 检查platform是否为None或空 + if platform is None: + platform = "unknown" + if "-" in platform: platform = platform.split("-")[1] diff --git a/src/person_info/relationship_manager.py b/src/person_info/relationship_manager.py index 9d7a48b97..72c684e4c 100644 --- a/src/person_info/relationship_manager.py +++ b/src/person_info/relationship_manager.py @@ -85,14 +85,18 @@ class RelationshipManager: # 遍历消息,构建映射 for msg in user_messages: + # 获取平台信息,优先使用chat_info_platform,如果为None则使用user_platform + platform = msg.get("chat_info_platform") or msg.get("user_platform", "unknown") + user_id = msg.get("user_id") + await person_info_manager.get_or_create_person( - platform=msg.get("chat_info_platform"), # type: ignore - user_id=msg.get("user_id"), # type: ignore + platform=platform, # type: ignore + user_id=user_id, # type: ignore nickname=msg.get("user_nickname"), # type: ignore user_cardname=msg.get("user_cardname"), # type: ignore ) replace_user_id: str = msg.get("user_id") # type: ignore - replace_platform: str = msg.get("chat_info_platform") # type: ignore + replace_platform: str = platform # type: ignore replace_person_id = PersonInfoManager.get_person_id(replace_platform, replace_user_id) replace_person_name = await person_info_manager.get_value(replace_person_id, "person_name")