🐛 fix(command): 回调回复图片时解析本地文件路径

- 复用 message handler 的 _resolve_url 解析上传文件的相对路径
- 回调返回的 image/video/file url 若为已上传文件则补全为绝对路径
- 修复本地文件名被当作 URL 发送导致识别失败的问题
This commit is contained in:
2026-05-03 00:51:07 +08:00
parent a7f52e33fb
commit 84f671741b

View File

@@ -4,7 +4,8 @@ import re
import aiohttp
from ..config import COMMAND_CALLBACK_TIMEOUT, COMMAND_CALLBACK_URL, COMMAND_LENGTH_MAX, COMMAND_LENGTH_MIN, COMMAND_PREFIX
from ..config import COMMAND_CALLBACK_TIMEOUT, COMMAND_CALLBACK_URL, COMMAND_LENGTH_MAX, COMMAND_LENGTH_MIN, COMMAND_PREFIX, UPLOAD_DIR
from ..handlers.message import _resolve_url
def build_command_pattern() -> re.Pattern:
@@ -128,9 +129,9 @@ async def _handle_reply(result: dict, msg_event, api, logger) -> None:
if msg_type == "text":
text_parts.append(msg.get("msg", ""))
elif msg_type == "image":
image_url = msg.get("url")
image_url = _resolve_url(msg.get("url", ""))
elif msg_type == "video":
video_url = msg.get("url")
video_url = _resolve_url(msg.get("url", ""))
elif msg_type == "file":
file_msgs.append(msg)
@@ -146,7 +147,7 @@ async def _handle_reply(result: dict, msg_event, api, logger) -> None:
await api.qq.post_private_array_msg(user_id=user_id, msg=reply_msg)
# 文件单独发
for fm in file_msgs:
url = fm.get("url", "")
url = _resolve_url(fm.get("url", ""))
filename = url.split("/")[-1]
if group_id:
await api.qq.send_group_file(group_id=group_id, file=url, name=filename)