fix:修复一些问题

update
This commit is contained in:
SengokuCola
2025-08-12 14:41:55 +08:00
parent ae254de494
commit 99135f5e01
3 changed files with 24 additions and 26 deletions

View File

@@ -26,7 +26,7 @@ from src.chat.express.expression_selector import expression_selector
from src.chat.memory_system.memory_activator import MemoryActivator
from src.chat.memory_system.instant_memory import InstantMemory
from src.mood.mood_manager import mood_manager
from src.person_info.person_info import Person
from src.person_info.person_info import Person, get_person_id_by_person_name
from src.plugin_system.base.component_types import ActionInfo, EventType
from src.plugin_system.apis import llm_api
@@ -301,8 +301,8 @@ class DefaultReplyer:
return ""
# 获取用户ID
person = Person(platform=self.chat_stream.platform, user_id=sender)
person_id = person.person_id
person_id = get_person_id_by_person_name(sender)
person = Person(person_id=person_id)
if not person_id:
logger.warning(f"未找到用户 {sender} 的ID跳过信息提取")
return f"你完全不认识{sender}不理解ta的相关信息。"

View File

@@ -154,7 +154,7 @@ class Person:
if record.likeness_confidence is not None:
self.likeness_confidence = float(record.likeness_confidence)
logger.info(f"已从数据库加载用户 {self.person_id} 的信息")
logger.debug(f"已从数据库加载用户 {self.person_id} 的信息")
else:
self.sync_to_database()
logger.info(f"用户 {self.person_id} 在数据库中不存在,使用默认值并创建")
@@ -309,9 +309,6 @@ class PersonInfoManager:
except Exception as e:
logger.error(f"从 Peewee 加载 person_name_list 失败: {e}")
def get_person(self, platform: str, user_id: Union[int, str]) -> Person:
person = Person(platform, user_id)
return person
@staticmethod

View File

@@ -125,8 +125,6 @@ class RelationshipManager:
)
async def get_points(self,
person_name: str,
nickname: str,
readable_messages: str,
name_mapping: Dict[str, str],
timestamp: float,
@@ -138,8 +136,8 @@ class RelationshipManager:
"relation_points",
bot_name = global_config.bot.nickname,
alias_str = alias_str,
person_name = person_name,
nickname = nickname,
person_name = person.person_name,
nickname = person.nickname,
current_time = current_time,
readable_messages = readable_messages)
@@ -156,7 +154,7 @@ class RelationshipManager:
logger.info(f"points: {points}")
if not points:
logger.info(f"{person_name} 没啥新印象")
logger.info(f"{person.person_name} 没啥新印象")
return
# 解析JSON并转换为元组列表
@@ -190,7 +188,7 @@ class RelationshipManager:
points_list.append(point)
if points_list or discarded_count > 0:
logger_str = f"了解了有关{person_name}的新印象:\n"
logger_str = f"了解了有关{person.person_name}的新印象:\n"
for point in points_list:
logger_str += f"{point[0]},重要性:{point[1]}\n"
if discarded_count > 0:
@@ -238,7 +236,7 @@ class RelationshipManager:
person.points = remaining_points
return person
async def get_attitude_to_me(self, person_name, nickname, readable_messages, timestamp, person: Person):
async def get_attitude_to_me(self, readable_messages, timestamp, person: Person):
alias_str = ", ".join(global_config.bot.alias_names)
current_time = datetime.fromtimestamp(timestamp).strftime("%Y-%m-%d %H:%M:%S")
# 解析当前态度值
@@ -249,8 +247,8 @@ class RelationshipManager:
"attitude_to_me_prompt",
bot_name = global_config.bot.nickname,
alias_str = alias_str,
person_name = person_name,
nickname = nickname,
person_name = person.person_name,
nickname = person.nickname,
readable_messages = readable_messages,
current_time = current_time,
)
@@ -284,7 +282,7 @@ class RelationshipManager:
return person
async def get_neuroticism(self, person_name, nickname, readable_messages, timestamp, person: Person):
async def get_neuroticism(self, readable_messages, timestamp, person: Person):
alias_str = ", ".join(global_config.bot.alias_names)
current_time = datetime.fromtimestamp(timestamp).strftime("%Y-%m-%d %H:%M:%S")
# 解析当前态度值
@@ -295,8 +293,8 @@ class RelationshipManager:
"neuroticism_prompt",
bot_name = global_config.bot.nickname,
alias_str = alias_str,
person_name = person_name,
nickname = nickname,
person_name = person.person_name,
nickname = person.nickname,
readable_messages = readable_messages,
current_time = current_time,
)
@@ -364,12 +362,12 @@ class RelationshipManager:
continue
# 跳过目标用户
if msg_person.person_name == person_name:
if msg_person.person_name == person_name and msg_person.person_name is not None:
name_mapping[msg_person.person_name] = f"{person_name}"
continue
# 其他用户映射
if msg_person.person_name not in name_mapping:
if msg_person.person_name not in name_mapping and msg_person.person_name is not None:
if current_user > "Z":
current_user = "A"
user_count += 1
@@ -382,13 +380,16 @@ class RelationshipManager:
for original_name, mapped_name in name_mapping.items():
# print(f"original_name: {original_name}, mapped_name: {mapped_name}")
# 确保 original_name 和 mapped_name 都不为 None
if original_name is not None and mapped_name is not None:
readable_messages = readable_messages.replace(f"{original_name}", f"{mapped_name}")
print(name_mapping)
person = await self.get_points(person_name, nickname, readable_messages, name_mapping, timestamp, person)
person = await self.get_attitude_to_me(person_name, nickname, readable_messages, timestamp, person)
person = await self.get_neuroticism(person_name, nickname, readable_messages, timestamp, person)
person = 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)
person.know_times = know_times + 1
person.last_know = timestamp