azils3/bash
0
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 