Merge pull request #46 from Eric-Terminal/dev
修复(聊天): 为 message_process 增加 message_info 防御性检查
This commit is contained in:
@@ -379,19 +379,31 @@ class ChatBot:
|
|||||||
# 确保所有任务已启动
|
# 确保所有任务已启动
|
||||||
await self._ensure_started()
|
await self._ensure_started()
|
||||||
|
|
||||||
platform = message_data["message_info"].get("platform")
|
# 控制握手等消息可能缺少 message_info,这里直接跳过避免 KeyError
|
||||||
|
if not isinstance(message_data, dict):
|
||||||
|
logger.warning(f"收到无法解析的消息类型: {type(message_data)},已跳过")
|
||||||
|
return
|
||||||
|
message_info = message_data.get("message_info")
|
||||||
|
if not isinstance(message_info, dict):
|
||||||
|
logger.debug(
|
||||||
|
"收到缺少 message_info 的消息,已跳过。可用字段: %s",
|
||||||
|
", ".join(message_data.keys()),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
|
platform = message_info.get("platform")
|
||||||
|
|
||||||
if platform == "amaidesu_default":
|
if platform == "amaidesu_default":
|
||||||
await self.do_s4u(message_data)
|
await self.do_s4u(message_data)
|
||||||
return
|
return
|
||||||
|
|
||||||
if message_data["message_info"].get("group_info") is not None:
|
if message_info.get("group_info") is not None:
|
||||||
message_data["message_info"]["group_info"]["group_id"] = str(
|
message_info["group_info"]["group_id"] = str(
|
||||||
message_data["message_info"]["group_info"]["group_id"]
|
message_info["group_info"]["group_id"]
|
||||||
)
|
)
|
||||||
if message_data["message_info"].get("user_info") is not None:
|
if message_info.get("user_info") is not None:
|
||||||
message_data["message_info"]["user_info"]["user_id"] = str(
|
message_info["user_info"]["user_id"] = str(
|
||||||
message_data["message_info"]["user_info"]["user_id"]
|
message_info["user_info"]["user_id"]
|
||||||
)
|
)
|
||||||
# print(message_data)
|
# print(message_data)
|
||||||
# logger.debug(str(message_data))
|
# logger.debug(str(message_data))
|
||||||
|
|||||||
Reference in New Issue
Block a user