30 lines
1.1 KiB
Python
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)
|