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}")