🐛 fix(command): 回调回复图片时解析本地文件路径
- 复用 message handler 的 _resolve_url 解析上传文件的相对路径 - 回调返回的 image/video/file url 若为已上传文件则补全为绝对路径 - 修复本地文件名被当作 URL 发送导致识别失败的问题
This commit is contained in:
@@ -4,7 +4,8 @@ import re
|
|||||||
|
|
||||||
import aiohttp
|
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:
|
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":
|
if msg_type == "text":
|
||||||
text_parts.append(msg.get("msg", ""))
|
text_parts.append(msg.get("msg", ""))
|
||||||
elif msg_type == "image":
|
elif msg_type == "image":
|
||||||
image_url = msg.get("url")
|
image_url = _resolve_url(msg.get("url", ""))
|
||||||
elif msg_type == "video":
|
elif msg_type == "video":
|
||||||
video_url = msg.get("url")
|
video_url = _resolve_url(msg.get("url", ""))
|
||||||
elif msg_type == "file":
|
elif msg_type == "file":
|
||||||
file_msgs.append(msg)
|
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)
|
await api.qq.post_private_array_msg(user_id=user_id, msg=reply_msg)
|
||||||
# 文件单独发
|
# 文件单独发
|
||||||
for fm in file_msgs:
|
for fm in file_msgs:
|
||||||
url = fm.get("url", "")
|
url = _resolve_url(fm.get("url", ""))
|
||||||
filename = url.split("/")[-1]
|
filename = url.split("/")[-1]
|
||||||
if group_id:
|
if group_id:
|
||||||
await api.qq.send_group_file(group_id=group_id, file=url, name=filename)
|
await api.qq.send_group_file(group_id=group_id, file=url, name=filename)
|
||||||
|
|||||||
Reference in New Issue
Block a user