diff --git a/src/chat/heart_flow/heartflow_message_processor.py b/src/chat/heart_flow/heartflow_message_processor.py index cc63e62c0..57f60dba5 100644 --- a/src/chat/heart_flow/heartflow_message_processor.py +++ b/src/chat/heart_flow/heartflow_message_processor.py @@ -142,10 +142,7 @@ class HeartFCMessageReceiver: else: logger.info(f"[{mes_name}]{userinfo.user_nickname}:{processed_plain_text}[兴趣度:{interested_rate:.2f}]") # type: ignore - - # 4. 关系处理 - if global_config.relationship.enable_relationship: - person = Person.register_person(platform=message.message_info.platform, user_id=message.message_info.user_info.user_id,nickname=userinfo.user_nickname) + person = Person.register_person(platform=message.message_info.platform, user_id=message.message_info.user_info.user_id,nickname=userinfo.user_nickname) except Exception as e: logger.error(f"消息处理失败: {e}") diff --git a/src/chat/utils/utils.py b/src/chat/utils/utils.py index 9a91ca173..aefc694e5 100644 --- a/src/chat/utils/utils.py +++ b/src/chat/utils/utils.py @@ -640,6 +640,9 @@ def get_chat_type_and_target_info(chat_id: str) -> Tuple[bool, Optional[Dict]]: try: # Assume get_person_id is sync (as per original code), keep using to_thread person = Person(platform=platform, user_id=user_id) + if not person.is_known: + logger.warning(f"用户 {user_info.user_nickname} 尚未认识") + return False, None person_id = person.person_id person_name = None if person_id: diff --git a/src/person_info/person_info.py b/src/person_info/person_info.py index 6d5de429d..ebc02b9b9 100644 --- a/src/person_info/person_info.py +++ b/src/person_info/person_info.py @@ -35,7 +35,7 @@ def get_person_id_by_person_name(person_name: str) -> str: def is_person_known(person_id: str = None,user_id: str = None,platform: str = None,person_name: str = None) -> bool: if person_id: - person = PersonInfo.get_or_none(PersonInfo.person_id == person_id) is not None + person = PersonInfo.get_or_none(PersonInfo.person_id == person_id) return person.is_known if person else False elif user_id and platform: person_id = get_person_id(platform, user_id) @@ -119,8 +119,13 @@ class Person: return person def __init__(self, platform: str = "", user_id: str = "",person_id: str = "",person_name: str = ""): - if not is_person_known(person_id=person_id): - logger.warning(f"用户 {person_name} 尚未认识") + if platform == global_config.bot.platform and user_id == global_config.bot.qq_account: + self.is_known = True + self.person_id = get_person_id(platform, user_id) + self.user_id = user_id + self.platform = platform + self.nickname = global_config.bot.nickname + self.person_name = global_config.bot.nickname return @@ -137,6 +142,11 @@ class Person: logger.error("Person 初始化失败,缺少必要参数") return + if not is_person_known(person_id=self.person_id): + self.is_known = False + logger.warning(f"用户 {platform}:{user_id}:{person_name}:{person_id} 尚未认识") + return + self.is_known = False self.platform = platform self.user_id = user_id diff --git a/src/person_info/relationship_manager.py b/src/person_info/relationship_manager.py index bc3e8d28c..b3c327a30 100644 --- a/src/person_info/relationship_manager.py +++ b/src/person_info/relationship_manager.py @@ -355,6 +355,8 @@ class RelationshipManager: # 遍历消息,构建映射 for msg in user_messages: + if msg.get("user_id") == "system": + continue msg_person = Person(user_id=msg.get("user_id"), platform=msg.get("chat_info_platform")) # 跳过机器人自己 if msg_person.user_id == global_config.bot.qq_account: @@ -386,10 +388,10 @@ class RelationshipManager: print(name_mapping) - person = await self.get_points( + await self.get_points( readable_messages=readable_messages, name_mapping=name_mapping, timestamp=timestamp, person=person) - person = await self.get_attitude_to_me(readable_messages=readable_messages, timestamp=timestamp, person=person) - person = await self.get_neuroticism(readable_messages=readable_messages, timestamp=timestamp, person=person) + await self.get_attitude_to_me(readable_messages=readable_messages, timestamp=timestamp, person=person) + await self.get_neuroticism(readable_messages=readable_messages, timestamp=timestamp, person=person) person.know_times = know_times + 1 person.last_know = timestamp