fix(chat): 修复戳一戳等notice事件无法触发聊天流程的问题

该修复解决了机器人对“戳一戳”等 notice 事件没有响应的 bug。

问题根源在于 MessageManager 在处理 notice 消息时,仅将其添加到全局通知管理器后便直接返回,导致消息无法进入后续的聊天处理流程,即使相关配置已开启。

主要变更:

修改 Elysia/Bot/src/chat/message_manager/message_manager.py,在处理 notice 消息时,增加对 bot_config.toml 中 enable_notice_trigger_chat 配置的判断。只有在该配置为 false 时才中断流程,否则将消息继续送入聊天上下文。
修复了 _get_notice_ttl 函数中因 notice_type 可能为 None 而引发的潜在 TypeError。
将 Bot/src/config/official_configs.py 中 enable_notice_trigger_chat 的默认值从 False 修改为 True,以提供更合理的开箱即用体验。
This commit is contained in:
tt-P607
2025-10-24 14:33:24 +08:00
committed by Windpicker-owo
parent ebf283a891
commit fcb11e464d
4 changed files with 28 additions and 20 deletions

View File

@@ -156,7 +156,7 @@ class MessageReceiveConfig(ValidatedConfigBase):
class NoticeConfig(ValidatedConfigBase):
"""Notice消息配置类"""
enable_notice_trigger_chat: bool = Field(default=False, description="是否允许notice消息触发聊天流程")
enable_notice_trigger_chat: bool = Field(default=True, description="是否允许notice消息触发聊天流程")
notice_in_prompt: bool = Field(default=True, description="是否在提示词中展示最近的notice消息")
notice_prompt_limit: int = Field(default=5, ge=1, le=20, description="在提示词中展示的最大notice数量")
notice_time_window: int = Field(default=3600, ge=60, le=86400, description="notice时间窗口(秒)")