From 0e4ba5f85227de917f16f31c8eefa7ebbe8335b3 Mon Sep 17 00:00:00 2001 From: Windpicker-owo <3431391539@qq.com> Date: Tue, 23 Sep 2025 23:19:55 +0800 Subject: [PATCH] =?UTF-8?q?refactor(mood):=20=E6=94=AF=E6=8C=81=20Database?= =?UTF-8?q?Messages=20=E7=B1=BB=E5=9E=8B=E5=B9=B6=E6=94=B9=E8=BF=9B?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 扩展 update_mood_by_message 方法参数类型,使其支持 MessageRecv 和 DatabaseMessages 两种消息类型。重构时间获取逻辑,通过类型检查分别处理不同消息对象的时间字段,提高代码健壮性和可复用性。 --- src/mood/mood_manager.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/mood/mood_manager.py b/src/mood/mood_manager.py index 95a365b41..c39eb0d29 100644 --- a/src/mood/mood_manager.py +++ b/src/mood/mood_manager.py @@ -5,6 +5,7 @@ import time from src.common.logger import get_logger from src.config.config import global_config, model_config from src.chat.message_receive.message import MessageRecv +from src.common.data_models.database_data_model import DatabaseMessages from src.chat.message_receive.chat_stream import get_chat_manager from src.chat.utils.prompt import Prompt, global_prompt_manager from src.chat.utils.chat_message_builder import build_readable_messages, get_raw_msg_by_timestamp_with_chat_inclusive @@ -65,7 +66,7 @@ class ChatMood: self.last_change_time: float = 0 - async def update_mood_by_message(self, message: MessageRecv, interested_rate: float): + async def update_mood_by_message(self, message: MessageRecv | DatabaseMessages, interested_rate: float): # 如果当前聊天处于失眠状态,则锁定情绪,不允许更新 if self.chat_id in mood_manager.insomnia_chats: logger.debug(f"{self.log_prefix} 处于失眠状态,情绪已锁定,跳过更新。") @@ -73,7 +74,13 @@ class ChatMood: self.regression_count = 0 - during_last_time = message.message_info.time - self.last_change_time # type: ignore + # 处理不同类型的消息对象 + if isinstance(message, MessageRecv): + message_time = message.message_info.time + else: # DatabaseMessages + message_time = message.time + + during_last_time = message_time - self.last_change_time base_probability = 0.05 time_multiplier = 4 * (1 - math.exp(-0.01 * during_last_time)) @@ -96,8 +103,6 @@ class ChatMood: logger.debug( f"{self.log_prefix} 更新情绪状态,感兴趣度: {interested_rate:.2f}, 更新概率: {update_probability:.2f}" ) - - message_time: float = message.message_info.time # type: ignore message_list_before_now = get_raw_msg_by_timestamp_with_chat_inclusive( chat_id=self.chat_id, timestamp_start=self.last_change_time,