fix:修复注册顺序问题

Update person_info.py

Update relationship_manager.py
This commit is contained in:
SengokuCola
2025-08-12 15:35:18 +08:00
parent f0fff5a039
commit ca69e9af15
4 changed files with 22 additions and 10 deletions

View File

@@ -142,10 +142,7 @@ class HeartFCMessageReceiver:
else: else:
logger.info(f"[{mes_name}]{userinfo.user_nickname}:{processed_plain_text}[兴趣度:{interested_rate:.2f}]") # type: ignore logger.info(f"[{mes_name}]{userinfo.user_nickname}:{processed_plain_text}[兴趣度:{interested_rate:.2f}]") # type: ignore
person = Person.register_person(platform=message.message_info.platform, user_id=message.message_info.user_info.user_id,nickname=userinfo.user_nickname)
# 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)
except Exception as e: except Exception as e:
logger.error(f"消息处理失败: {e}") logger.error(f"消息处理失败: {e}")

View File

@@ -640,6 +640,9 @@ def get_chat_type_and_target_info(chat_id: str) -> Tuple[bool, Optional[Dict]]:
try: try:
# Assume get_person_id is sync (as per original code), keep using to_thread # Assume get_person_id is sync (as per original code), keep using to_thread
person = Person(platform=platform, user_id=user_id) 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_id = person.person_id
person_name = None person_name = None
if person_id: if person_id:

View File

@@ -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: def is_person_known(person_id: str = None,user_id: str = None,platform: str = None,person_name: str = None) -> bool:
if person_id: 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 return person.is_known if person else False
elif user_id and platform: elif user_id and platform:
person_id = get_person_id(platform, user_id) person_id = get_person_id(platform, user_id)
@@ -119,8 +119,13 @@ class Person:
return person return person
def __init__(self, platform: str = "", user_id: str = "",person_id: str = "",person_name: str = ""): def __init__(self, platform: str = "", user_id: str = "",person_id: str = "",person_name: str = ""):
if not is_person_known(person_id=person_id): if platform == global_config.bot.platform and user_id == global_config.bot.qq_account:
logger.warning(f"用户 {person_name} 尚未认识") 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 return
@@ -137,6 +142,11 @@ class Person:
logger.error("Person 初始化失败,缺少必要参数") logger.error("Person 初始化失败,缺少必要参数")
return 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.is_known = False
self.platform = platform self.platform = platform
self.user_id = user_id self.user_id = user_id

View File

@@ -355,6 +355,8 @@ class RelationshipManager:
# 遍历消息,构建映射 # 遍历消息,构建映射
for msg in user_messages: 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")) 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: if msg_person.user_id == global_config.bot.qq_account:
@@ -386,10 +388,10 @@ class RelationshipManager:
print(name_mapping) print(name_mapping)
person = await self.get_points( await self.get_points(
readable_messages=readable_messages, name_mapping=name_mapping, timestamp=timestamp, person=person) 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) 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_neuroticism(readable_messages=readable_messages, timestamp=timestamp, person=person)
person.know_times = know_times + 1 person.know_times = know_times + 1
person.last_know = timestamp person.last_know = timestamp