Files
beavergram/backend/src/userbot/modules/jobs/handlers/fetch_media.py
T

30 lines
1.1 KiB
Python

from userbot.modules.jobs.context import JobContext
from userbot.modules.jobs.registry import register
from userbot.modules.media import capture_media
from utils.policy.models import CaptureToggles
@register("fetch_media")
async def fetch_media(ctx: JobContext) -> None:
client = ctx.client
if client is None:
return
capture = getattr(client, "capture", None)
if capture is None:
return
chat_id = ctx.job.params["chat_id"]
message_id = ctx.job.params["message_id"]
message = await client.get_messages(chat_id, message_id)
if isinstance(message, list):
message = message[0] if message else None
if message is None or message.empty:
msg = f"message {chat_id}/{message_id} is unavailable"
raise RuntimeError(msg)
toggles = CaptureToggles(media=True, self_destruct_media=True)
ok = await capture_media(
client, message, capture, chat_id, message_id, toggles, force=True
)
if not ok:
msg = f"media download failed for {chat_id}/{message_id}"
raise RuntimeError(msg)