feat(sleep): 引入休眠阶段消息唤醒机制与愤怒情绪模式
- 扩展日程休眠逻辑,支持在睡眠时段通过@/私聊唤醒 - 新增 WakeUpManager 持续追踪唤醒阈值并触发愤怒状态 - MoodManager 中追加“被吵醒”情绪标识与愤怒提示模板 - HeartFChat 主循环集成唤醒处理管线,兼容原逻辑 - 配置中心开放阈值、衰减、持续时间等可调参数 此举允许机器人即便在“睡觉”时也能被重要消息强行“闹醒”,并以生气口吻做出回应,提升拟人化交互体验。
This commit is contained in:
@@ -57,6 +57,7 @@ class ChatMood:
|
||||
self.log_prefix = f"[{self.chat_stream.group_info.group_name if self.chat_stream.group_info else self.chat_stream.user_info.user_nickname}]"
|
||||
|
||||
self.mood_state: str = "感觉很平静"
|
||||
self.is_angry_from_wakeup: bool = False # 是否因被吵醒而愤怒
|
||||
|
||||
self.regression_count: int = 0
|
||||
|
||||
@@ -241,9 +242,33 @@ class MoodManager:
|
||||
if mood.chat_id == chat_id:
|
||||
mood.mood_state = "感觉很平静"
|
||||
mood.regression_count = 0
|
||||
mood.is_angry_from_wakeup = False
|
||||
return
|
||||
self.mood_list.append(ChatMood(chat_id))
|
||||
|
||||
def set_angry_from_wakeup(self, chat_id: str):
|
||||
"""设置因被吵醒而愤怒的状态"""
|
||||
mood = self.get_mood_by_chat_id(chat_id)
|
||||
mood.is_angry_from_wakeup = True
|
||||
mood.mood_state = "被人吵醒了非常生气"
|
||||
mood.last_change_time = time.time()
|
||||
logger.info(f"{mood.log_prefix} 因被吵醒设置为愤怒状态")
|
||||
|
||||
def clear_angry_from_wakeup(self, chat_id: str):
|
||||
"""清除因被吵醒而愤怒的状态"""
|
||||
mood = self.get_mood_by_chat_id(chat_id)
|
||||
if mood.is_angry_from_wakeup:
|
||||
mood.is_angry_from_wakeup = False
|
||||
mood.mood_state = "感觉很平静"
|
||||
logger.info(f"{mood.log_prefix} 清除被吵醒的愤怒状态")
|
||||
|
||||
def get_angry_prompt_addition(self, chat_id: str) -> str:
|
||||
"""获取愤怒状态下的提示词补充"""
|
||||
mood = self.get_mood_by_chat_id(chat_id)
|
||||
if mood.is_angry_from_wakeup:
|
||||
return "你被人吵醒了非常生气,说话带着怒气"
|
||||
return ""
|
||||
|
||||
|
||||
init_prompt()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user