From 0e034f0fbd7296d0b12f1926320a800b56e9d5ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=AA=E8=AA=9E?= <167516635+itismygo@users.noreply.github.com> Date: Mon, 1 Dec 2025 13:36:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20aiocqhttp=20=E9=80=82=E9=85=8D=E5=99=A8?= =?UTF-8?q?=20NapCat=20=E6=96=87=E4=BB=B6=E5=90=8D=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=20(#3853)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * aiocqhttp 适配器 NapCat 文件名获取为空 修复使用 NapCat 时,文件消息的 File.name 为空的问题。原代码硬编码 name="",导致下游插件无法获取文件名和扩展名 * Enhance file name retrieval from message data Updated file name extraction logic to check multiple fields for better accuracy. --- .../aiocqhttp/aiocqhttp_platform_adapter.py | 17 +++++++++++++++-- 1 file changed, 15 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 91a16c697..8e8bcdb30 100644 --- a/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +++ b/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py @@ -246,7 +246,13 @@ class AiocqhttpAdapter(Platform): if m["data"].get("url") and m["data"].get("url").startswith("http"): # Lagrange logger.info("guessing lagrange") - file_name = m["data"].get("file_name", "file") + # 检查多个可能的文件名字段 + file_name = ( + m["data"].get("file_name", "") + or m["data"].get("name", "") + or m["data"].get("file", "") + or "file" + ) abm.message.append(File(name=file_name, url=m["data"]["url"])) else: try: @@ -265,7 +271,14 @@ class AiocqhttpAdapter(Platform): ) if ret and "url" in ret: file_url = ret["url"] # https - a = File(name="", url=file_url) + # 优先从 API 返回值获取文件名,其次从原始消息数据获取 + file_name = ( + ret.get("file_name", "") + or ret.get("name", "") + or m["data"].get("file", "") + or m["data"].get("file_name", "") + ) + a = File(name=file_name, url=file_url) abm.message.append(a) else: logger.error(f"获取文件失败: {ret}")