from pyrogram.types import Message from userbot.modules.capture import capture_message from userbot.modules.capture.chat_meta import meta_from_chat from userbot.modules.client import PyroClient from userbot.modules.stt import is_transcribable from userbot.modules.stt.gate import safe_transcribe from userbot.modules.watches.seen import seen_message from utils.events import notify_bg_event @PyroClient.on_message() async def on_message(client: PyroClient, message: Message) -> None: ctx = client.capture if ( ctx is None or message.empty or message.scheduled or message.chat is None or message.date is None ): return meta = meta_from_chat(message.chat, ctx.contacts.ids) await ctx.watches.on_message(seen_message(meta.chat_id, message)) toggles = ctx.resolve(meta) if not toggles.messages: return await capture_message(client, message, ctx, toggles) await notify_bg_event( ctx.pool, "message", ctx.account_id, chat_id=meta.chat_id, message_id=message.id ) if ( toggles.stt and is_transcribable(message) and (message.outgoing or message.unread_media is False) ): await safe_transcribe(client, ctx, meta.chat_id, message.id) handlers = on_message.handlers # ty: ignore[unresolved-attribute]