From 0a16df283746f15456f79a665e992df256b03b50 Mon Sep 17 00:00:00 2001 From: rin <3184015596@qq.com> Date: Mon, 16 Mar 2026 01:48:11 +0800 Subject: [PATCH 1/2] fix: add missing logger import --- .../aiocqhttp/aiocqhttp_message_event.py | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py index 4b642d8ce5..2525546d9e 100644 --- a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +++ b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py @@ -4,6 +4,7 @@ from aiocqhttp import CQHttp, Event +from astrbot.api import logger from astrbot.api.event import AstrMessageEvent, MessageChain from astrbot.api.message_components import ( At, @@ -156,8 +157,29 @@ async def send_message( payload["user_id"] = session_id await bot.call_action("send_private_forward_msg", **payload) elif isinstance(seg, File): - d = await cls._from_segment_to_dict(seg) - await cls._dispatch_send(bot, event, is_group, session_id, [d]) + # 使用 OneBot V11 文件 API 发送文件 + file_path = seg.file_ or seg.url + if not file_path: + logger.warning("无法发送文件:文件路径或 URL 为空。") + continue + + file_name = seg.name or "file" + session_id_int = ( + int(session_id) if session_id and session_id.isdigit() else None + ) + + if session_id_int is None: + logger.warning(f"无法发送文件:无效的 session_id: {session_id}") + continue + + if is_group: + await bot.send_group_file( + group_id=session_id_int, file=file_path, name=file_name + ) + else: + await bot.send_private_file( + user_id=session_id_int, file=file_path, name=file_name + ) (refactor: improve file sending logic robustness) else: messages = await cls._parse_onebot_json(MessageChain([seg])) if not messages: From 7cce05c45977b470af110a10bd9f6e56d4e4f6a3 Mon Sep 17 00:00:00 2001 From: Rin Date: Mon, 16 Mar 2026 14:37:52 +0800 Subject: [PATCH 2/2] fix: remove accidentally added commit message from code --- .../core/platform/sources/aiocqhttp/aiocqhttp_message_event.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py index 2525546d9e..686624d117 100644 --- a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +++ b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py @@ -179,7 +179,7 @@ async def send_message( else: await bot.send_private_file( user_id=session_id_int, file=file_path, name=file_name - ) (refactor: improve file sending logic robustness) + ) else: messages = await cls._parse_onebot_json(MessageChain([seg])) if not messages: