fix(chat): 修复睡眠和情绪系统中的空值和逻辑问题
修复了两个问题: 1. 在睡眠状态下,如果没有设置起床时间,且当天也无法从日程中获取新的起床时间,程序会错误地继续执行后续的唤醒判断逻辑,而不是直接返回并继续睡眠。 2. 在更新情绪状态时,如果消息的`interest_value`为`None`,会导致类型错误。已增加空值检查,将其默认处理为 0.0。
This commit is contained in:
committed by
Windpicker-owo
parent
73a40ad830
commit
b5549ff81f
@@ -58,20 +58,21 @@ class SleepLogic:
|
|||||||
# 核心逻辑:两段式检测
|
# 核心逻辑:两段式检测
|
||||||
# 如果 state_manager 中还没有起床时间,说明是昨晚入睡,需要等待今天凌晨的新日程。
|
# 如果 state_manager 中还没有起床时间,说明是昨晚入睡,需要等待今天凌晨的新日程。
|
||||||
sleep_start_time = sleep_state_manager.get_sleep_start_time()
|
sleep_start_time = sleep_state_manager.get_sleep_start_time()
|
||||||
if not wake_up_time and sleep_start_time and now.date() > sleep_start_time.date():
|
if not wake_up_time:
|
||||||
logger.debug("当前为睡眠状态但无起床时间,尝试从新日程中解析...")
|
if sleep_start_time and now.date() > sleep_start_time.date():
|
||||||
_, new_wake_up_time = self._get_wakeup_times_from_schedule(now)
|
logger.debug("当前为睡眠状态但无起床时间,尝试从新日程中解析...")
|
||||||
|
_, new_wake_up_time = self._get_wakeup_times_from_schedule(now)
|
||||||
|
|
||||||
if new_wake_up_time:
|
if new_wake_up_time:
|
||||||
logger.info(f"成功从新日程获取到起床时间: {new_wake_up_time.strftime('%H:%M')}")
|
logger.info(f"成功从新日程获取到起床时间: {new_wake_up_time.strftime('%H:%M')}")
|
||||||
sleep_state_manager.set_wake_up_time(new_wake_up_time)
|
sleep_state_manager.set_wake_up_time(new_wake_up_time)
|
||||||
wake_up_time = new_wake_up_time
|
wake_up_time = new_wake_up_time
|
||||||
|
else:
|
||||||
|
logger.debug("未能获取到新的起床时间,继续睡眠。")
|
||||||
|
return
|
||||||
else:
|
else:
|
||||||
logger.debug("未能获取到新的起床时间,继续睡眠。")
|
logger.info("还没有到达第二天,继续睡眠。")
|
||||||
return
|
logger.info(f"尚未到苏醒时间,苏醒时间在{wake_up_time}")
|
||||||
else:
|
|
||||||
logger.info("还没有到达第二天,继续睡眠。")
|
|
||||||
|
|
||||||
if wake_up_time and now >= wake_up_time:
|
if wake_up_time and now >= wake_up_time:
|
||||||
logger.info(f"当前时间 {now.strftime('%H:%M')} 已到达或超过预定起床时间 {wake_up_time.strftime('%H:%M')}。")
|
logger.info(f"当前时间 {now.strftime('%H:%M')} 已到达或超过预定起床时间 {wake_up_time.strftime('%H:%M')}。")
|
||||||
sleep_state_manager.set_state(SleepState.AWAKE)
|
sleep_state_manager.set_state(SleepState.AWAKE)
|
||||||
|
|||||||
@@ -588,6 +588,8 @@ class ChatBot:
|
|||||||
if global_config.mood.enable_mood:
|
if global_config.mood.enable_mood:
|
||||||
# 获取兴趣度用于情绪更新
|
# 获取兴趣度用于情绪更新
|
||||||
interest_rate = getattr(message, "interest_value", 0.0)
|
interest_rate = getattr(message, "interest_value", 0.0)
|
||||||
|
if interest_rate is None:
|
||||||
|
interest_rate = 0.0
|
||||||
logger.debug(f"开始更新情绪状态,兴趣度: {interest_rate:.2f}")
|
logger.debug(f"开始更新情绪状态,兴趣度: {interest_rate:.2f}")
|
||||||
|
|
||||||
# 获取当前聊天的情绪对象并更新情绪状态
|
# 获取当前聊天的情绪对象并更新情绪状态
|
||||||
|
|||||||
Reference in New Issue
Block a user