fix(chat): 兼容 target_message_id 为 int 或缺少前缀 M 的情况

在 FOCUS 模式下,对 `target_message_id` 进行处理,以确保其为字符串格式并以 "M" 为前缀。这修复了当传入的 ID 为整数或缺少前缀时可能导致消息查找失败的问题。
This commit is contained in:
minecraft1024a
2025-08-21 18:36:00 +08:00
parent 6cc073ce5b
commit 15e53742f5

View File

@@ -189,6 +189,11 @@ class ActionPlanner:
# 在FOCUS模式下非no_reply动作需要target_message_id
if mode == ChatMode.FOCUS and action != "no_reply":
if target_message_id := parsed_json.get("target_message_id"):
if isinstance(target_message_id, int):
target_message_id = str(target_message_id)
if isinstance(target_message_id, str) and not target_message_id.startswith('M'):
target_message_id = f"M{target_message_id}"
# 根据target_message_id查找原始消息
target_message = self.find_message_by_id(target_message_id, message_id_list)
# target_message = None