diff --git a/src/plugins/built_in/affinity_flow_chatter/affinity_chatter.py b/src/plugins/built_in/affinity_flow_chatter/affinity_chatter.py index 1e36f0dff..fadce6bf8 100644 --- a/src/plugins/built_in/affinity_flow_chatter/affinity_chatter.py +++ b/src/plugins/built_in/affinity_flow_chatter/affinity_chatter.py @@ -139,6 +139,24 @@ class AffinityChatter(BaseChatter): """ return self.planner.get_relationship_stats() + def get_current_mood_state(self) -> str: + """ + 获取当前聊天的情绪状态 + + Returns: + 当前情绪状态描述 + """ + return self.planner.get_current_mood_state() + + def get_mood_stats(self) -> Dict[str, Any]: + """ + 获取情绪状态统计信息 + + Returns: + 情绪状态统计信息字典 + """ + return self.planner.get_mood_stats() + def get_user_relationship(self, user_id: str) -> float: """ 获取用户关系分 diff --git a/src/plugins/built_in/affinity_flow_chatter/planner.py b/src/plugins/built_in/affinity_flow_chatter/planner.py index 0e0b0b361..e438d2d27 100644 --- a/src/plugins/built_in/affinity_flow_chatter/planner.py +++ b/src/plugins/built_in/affinity_flow_chatter/planner.py @@ -11,6 +11,7 @@ from src.plugins.built_in.affinity_flow_chatter.plan_filter import ChatterPlanFi from src.plugins.built_in.affinity_flow_chatter.plan_generator import ChatterPlanGenerator from src.plugins.built_in.affinity_flow_chatter.interest_scoring import ChatterInterestScoringSystem from src.plugins.built_in.affinity_flow_chatter.relationship_tracker import ChatterRelationshipTracker +from src.mood.mood_manager import mood_manager from src.common.logger import get_logger @@ -117,6 +118,12 @@ class ChatterActionPlanner: logger.info(f"兴趣度不足 ({latest_score.total_score:.2f}),移除回复") reply_not_available = True + # 更新情绪状态 - 使用最新消息的兴趣度 + if latest_message and score > 0: + chat_mood = mood_manager.get_mood_by_chat_id(self.chat_id) + await chat_mood.update_mood_by_message(latest_message, score) + logger.debug(f"已更新聊天 {self.chat_id} 的情绪状态,兴趣度: {score:.3f}") + # base_threshold = self.interest_scoring.reply_threshold # 检查兴趣度是否达到非回复动作阈值 non_reply_action_interest_threshold = global_config.affinity_flow.non_reply_action_interest_threshold @@ -233,5 +240,20 @@ class ChatterActionPlanner: "max_tracking_users": self.relationship_tracker.max_tracking_users, } + def get_current_mood_state(self) -> str: + """获取当前聊天的情绪状态""" + chat_mood = mood_manager.get_mood_by_chat_id(self.chat_id) + return chat_mood.mood_state + + def get_mood_stats(self) -> Dict[str, any]: + """获取情绪状态统计""" + chat_mood = mood_manager.get_mood_by_chat_id(self.chat_id) + return { + "current_mood": chat_mood.mood_state, + "is_angry_from_wakeup": chat_mood.is_angry_from_wakeup, + "regression_count": chat_mood.regression_count, + "last_change_time": chat_mood.last_change_time, + } + # 全局兴趣度评分系统实例 - 在 individuality 模块中创建