Fix voice message forwarding and playback
This commit is contained in:
@@ -686,8 +686,12 @@ async def normalize_attachment(client: Client, message: Any, att: Any, sort_orde
|
||||
req = await client.get_video_by_id(int(chat_id), int(message_id), int(data["video_id"]))
|
||||
req_data = dump_model(req)
|
||||
remote_url = req_data.get("url") or remote_url
|
||||
except Exception: # noqa: BLE001
|
||||
pass
|
||||
except Exception as exc: # noqa: BLE001
|
||||
print(
|
||||
f"Failed to resolve MAX {kind} download URL "
|
||||
f"(chat_id={chat_id}, message_id={message_id}): {type(exc).__name__}: {exc}",
|
||||
flush=True,
|
||||
)
|
||||
|
||||
if kind == "photo":
|
||||
content_type = "image/jpeg"
|
||||
@@ -1247,6 +1251,24 @@ async def send_attachment(request: web.Request) -> web.Response:
|
||||
return json_response({"success": bool(external_id), "externalMessageId": external_id or None, "error": None if external_id else "PyMax returned no message id.", "chatUrl": f"pymax://chat/{chat_id}"})
|
||||
|
||||
|
||||
@route_errors
|
||||
async def forward_message(request: web.Request) -> web.Response:
|
||||
data = await read_json(request)
|
||||
client = await runtime.get_client()
|
||||
chat_id = parse_chat_id(data.get("externalChatId"))
|
||||
source_chat_id = parse_chat_id(data.get("sourceExternalChatId"))
|
||||
source_message_id = str(data.get("sourceExternalMessageId") or "").strip()
|
||||
if not source_message_id:
|
||||
raise ValueError("sourceExternalMessageId is required")
|
||||
sent = await client.forward_message(
|
||||
chat_id=chat_id,
|
||||
message_id=source_message_id,
|
||||
source_chat_id=source_chat_id,
|
||||
)
|
||||
external_id = clean_id(getattr(sent, "id", None))
|
||||
return json_response({"success": bool(external_id), "externalMessageId": external_id or None, "error": None if external_id else "PyMax returned no forwarded message id.", "chatUrl": f"pymax://chat/{chat_id}"})
|
||||
|
||||
|
||||
@route_errors
|
||||
async def media_fetch(request: web.Request) -> web.StreamResponse:
|
||||
remote_url = request.query.get("url")
|
||||
@@ -1297,6 +1319,7 @@ def create_app() -> web.Application:
|
||||
app.router.add_post("/chat/delete", chat_delete)
|
||||
app.router.add_post("/send/text", send_text)
|
||||
app.router.add_post("/send/attachment", send_attachment)
|
||||
app.router.add_post("/message/forward", forward_message)
|
||||
app.router.add_post("/message/edit", disabled_action)
|
||||
app.router.add_post("/message/delete", disabled_action)
|
||||
app.router.add_post("/message/reaction", disabled_action)
|
||||
|
||||
Reference in New Issue
Block a user