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,9 +142,6 @@ 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)
except Exception as e:

View File

@@ -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:

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:
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

View File

@@ -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