将PFC加回来,修复一大堆PFC的神秘报错

This commit is contained in:
墨梓柒
2026-01-16 03:36:25 +08:00
parent 77725ba9d8
commit 7bdd394bf0
17 changed files with 303 additions and 286 deletions

View File

@@ -1,13 +1,40 @@
from typing import List, Optional, Dict, Any, Set
from maim_message import UserInfo
import time
from src.common.logger import get_module_logger
from src.common.logger import get_logger
from .chat_observer import ChatObserver
from .chat_states import NotificationHandler, NotificationType, Notification
from src.chat.utils.chat_message_builder import build_readable_messages
from src.common.data_models.database_data_model import DatabaseMessages, DatabaseUserInfo
import traceback # 导入 traceback 用于调试
logger = get_module_logger("observation_info")
logger = get_logger("observation_info")
def dict_to_database_message(msg_dict: Dict[str, Any]) -> DatabaseMessages:
"""Convert PFC dict format to DatabaseMessages object
Args:
msg_dict: Message in PFC dict format with nested user_info
Returns:
DatabaseMessages object compatible with build_readable_messages()
"""
user_info_dict: Dict[str, Any] = msg_dict.get("user_info", {})
return DatabaseMessages(
message_id=msg_dict.get("message_id", ""),
time=msg_dict.get("time", 0.0),
chat_id=msg_dict.get("chat_id", ""),
processed_plain_text=msg_dict.get("processed_plain_text", ""),
display_message=msg_dict.get("display_message", ""),
is_mentioned=msg_dict.get("is_mentioned", False),
is_command=msg_dict.get("is_command", False),
user_id=user_info_dict.get("user_id", ""),
user_nickname=user_info_dict.get("user_nickname", ""),
user_cardname=user_info_dict.get("user_cardname"),
user_platform=user_info_dict.get("platform", ""),
)
class ObservationInfoHandler(NotificationHandler):
@@ -366,10 +393,11 @@ class ObservationInfo:
# 更新历史记录字符串 (只使用最近一部分生成例如20条)
history_slice_for_str = self.chat_history[-20:]
try:
self.chat_history_str = await build_readable_messages(
history_slice_for_str,
# Convert dict format to DatabaseMessages objects
db_messages = [dict_to_database_message(m) for m in history_slice_for_str]
self.chat_history_str = build_readable_messages(
db_messages,
replace_bot_name=True,
merge_messages=False,
timestamp_mode="relative",
read_mark=0.0, # read_mark 可能需要根据逻辑调整
)