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)