41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
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]
|