Team Ai
Apppublic

azils3/bash

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
_assistant.py151 linesDownload Raw Back to _misc
1# Ultroid - UserBot2# Copyright (C) 2021-2025 TeamUltroid3#4# This file is a part of < https://github.com/TeamUltroid/Ultroid/ >5# PLease read the GNU Affero General Public License in6# <https://github.com/TeamUltroid/pyUltroid/blob/main/LICENSE>.7 8import inspect9import re10from traceback import format_exc11 12from telethon import Button13from telethon.errors import QueryIdInvalidError14from telethon.events import CallbackQuery, InlineQuery, NewMessage15from telethon.tl.types import InputWebDocument16 17from .. import LOGS, asst, udB, ultroid_bot18from ..fns.admins import admin_check19from . import append_or_update, owner_and_sudos20 21OWNER = ultroid_bot.full_name22 23MSG = f"""24**Ultroid - UserBot**25➖➖➖➖➖➖➖➖➖➖26**Owner**: [{OWNER}](tg://user?id={ultroid_bot.uid})27**Support**: @TeamUltroid28➖➖➖➖➖➖➖➖➖➖29"""30 31IN_BTTS = [32    [33        Button.url(34            "Repository",35            url="https://github.com/TeamUltroid/Ultroid",36        ),37        Button.url("Support", url="https://t.me/UltroidSupportChat"),38    ]39]40 41 42# decorator for assistant43 44 45def asst_cmd(pattern=None, load=None, owner=False, **kwargs):46    """Decorator for assistant's command"""47    name = inspect.stack()[1].filename.split("/")[-1].replace(".py", "")48    kwargs["forwards"] = False49 50    def ult(func):51        if pattern:52            kwargs["pattern"] = re.compile(f"^/{pattern}")53 54        async def handler(event):55            if owner and event.sender_id not in owner_and_sudos():56                return57            try:58                await func(event)59            except Exception as er:60                LOGS.exception(er)61 62        asst.add_event_handler(handler, NewMessage(**kwargs))63        if load is not None:64            append_or_update(load, func, name, kwargs)65 66    return ult67 68 69def callback(data=None, from_users=[], admins=False, owner=False, **kwargs):70    """Assistant's callback decorator"""71    if "me" in from_users:72        from_users.remove("me")73        from_users.append(ultroid_bot.uid)74 75    def ultr(func):76        async def wrapper(event):77            if admins and not await admin_check(event):78                return79            if from_users and event.sender_id not in from_users:80                return await event.answer("Not for You!", alert=True)81            if owner and event.sender_id not in owner_and_sudos():82                return await event.answer(f"This is {OWNER}'s bot!!")83            try:84                await func(event)85            except Exception as er:86                LOGS.exception(er)87 88        asst.add_event_handler(wrapper, CallbackQuery(data=data, **kwargs))89 90    return ultr91 92 93def in_pattern(pattern=None, owner=False, **kwargs):94    """Assistant's inline decorator."""95 96    def don(func):97        async def wrapper(event):98            if owner and event.sender_id not in owner_and_sudos():99                res = [100                    await event.builder.article(101                        title="Ultroid Userbot",102                        url="https://t.me/TeamUltroid",103                        description="(c) TeamUltroid",104                        text=MSG,105                        thumb=InputWebDocument(106                            "https://graph.org/file/dde85d441fa051a0d7d1d.jpg",107                            0,108                            "image/jpeg",109                            [],110                        ),111                        buttons=IN_BTTS,112                    )113                ]114                return await event.answer(115                    res,116                    switch_pm=f"🤖: Assistant of {OWNER}",117                    switch_pm_param="start",118                )119            try:120                await func(event)121            except QueryIdInvalidError:122                pass123            except Exception as er:124                err = format_exc()125 126                def error_text():127                    return f"**#ERROR #INLINE**\n\nQuery: `{asst.me.username} {pattern}`\n\n**Traceback:**\n`{format_exc()}`"128 129                LOGS.exception(er)130                try:131                    await event.answer(132                        [133                            await event.builder.article(134                                title="Unhandled Exception has Occured!",135                                text=error_text(),136                                buttons=Button.url(137                                    "Report", "https://t.me/UltroidSupportChat"138                                ),139                            )140                        ]141                    )142                except QueryIdInvalidError:143                    LOGS.exception(err)144                except Exception as er:145                    LOGS.exception(er)146                    await asst.send_message(udB.get_key("LOG_CHANNEL"), error_text())147 148        asst.add_event_handler(wrapper, InlineQuery(pattern=pattern, **kwargs))149 150    return don151