From 856b57849b89b4417d0f86d3faf7bca1960fa690 Mon Sep 17 00:00:00 2001 From: Venus Yan Date: Tue, 23 Dec 2025 03:36:49 +0800 Subject: [PATCH 1/3] Handle unsupported message types with logging MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 解决else 分支中对未知消息类型毫无防御,直接索引ComponentTypes[t],导致新类型markdown类信息报错并炸掉事件管道,且对应群聊单群永久不响应插件;尝试支持markdown类型进行支持但未经过测试 --- .../aiocqhttp/aiocqhttp_platform_adapter.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py index 52dd21d56..9a5d36b68 100644 --- a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +++ b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py @@ -385,10 +385,21 @@ async def _convert_handle_message_event( logger.error(f"获取 @ 用户信息失败: {e},此消息段将被忽略。") message_str += "".join(at_parts) + elif t == "markdown": + text = m["data"].get("markdown") or m["data"].get("content", "") + abm.message.append(Text(text=text)) + message_str += text else: for m in m_group: - a = ComponentTypes[t](**m["data"]) - abm.message.append(a) + try: + if t not in ComponentTypes: + logger.warning(f"不支持的消息段类型,已忽略: {t}, data={m['data']}") + continue + a = ComponentTypes[t](**m["data"]) + abm.message.append(a) + except Exception as e: + logger.exception(f"消息段解析失败: type={t}, data={m['data']}") + continue abm.timestamp = int(time.time()) abm.message_str = message_str From ab257c6ebdfe25d368d843fd08221c155d60dedb Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Tue, 23 Dec 2025 21:28:34 +0800 Subject: [PATCH 2/3] chore: ruff format --- .../sources/aiocqhttp/aiocqhttp_platform_adapter.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py index 9a5d36b68..80d2f481d 100644 --- a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +++ b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py @@ -387,18 +387,20 @@ async def _convert_handle_message_event( message_str += "".join(at_parts) elif t == "markdown": text = m["data"].get("markdown") or m["data"].get("content", "") - abm.message.append(Text(text=text)) + abm.message.append(Plain(text=text)) message_str += text else: for m in m_group: try: if t not in ComponentTypes: - logger.warning(f"不支持的消息段类型,已忽略: {t}, data={m['data']}") + logger.warning( + f"不支持的消息段类型,已忽略: {t}, data={m['data']}" + ) continue a = ComponentTypes[t](**m["data"]) abm.message.append(a) except Exception as e: - logger.exception(f"消息段解析失败: type={t}, data={m['data']}") + logger.exception(f"消息段解析失败: type={t}, data={m['data']}. {e}") continue abm.timestamp = int(time.time()) From 89ec15b1d128eafc9b9ea0d001ccfaa531791a65 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Tue, 23 Dec 2025 21:30:51 +0800 Subject: [PATCH 3/3] chore: ruff format --- .../platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py index 80d2f481d..496726822 100644 --- a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +++ b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py @@ -400,7 +400,9 @@ async def _convert_handle_message_event( a = ComponentTypes[t](**m["data"]) abm.message.append(a) except Exception as e: - logger.exception(f"消息段解析失败: type={t}, data={m['data']}. {e}") + logger.exception( + f"消息段解析失败: type={t}, data={m['data']}. {e}" + ) continue abm.timestamp = int(time.time())