# Ultroid - UserBot # Copyright (C) 2021 TeamUltroid # # This file is a part of < https://github.com/TeamUltroid/Ultroid/ > # PLease read the GNU Affero General Public License in # . from datetime import datetime from pyUltroid.functions.asst_fns import * from pyUltroid.misc import owner_and_sudos from telethon import events from telethon.utils import get_display_name from plugins import * from . import * Owner_info_msg = f""" **Owner** - {OWNER_NAME} **OwnerID** - `{OWNER_ID}` **Message Forwards** - {udB.get("PMBOT")} __Ultroid {ultroid_version}, powered by @TeamUltroid__ """ _settings = [ [ Button.inline("API Kᴇʏs", data="apiset"), Button.inline("Pᴍ Bᴏᴛ", data="chatbot"), ], [ Button.inline("Aʟɪᴠᴇ", data="alvcstm"), Button.inline("PᴍPᴇʀᴍɪᴛ", data="ppmset"), ], [Button.inline("Fᴇᴀᴛᴜʀᴇs", data="otvars")], [Button.inline("VC Sᴏɴɢ Bᴏᴛ", data="vcb")], [Button.inline("« Bᴀᴄᴋ", data="mainmenu")], ] _start = [ [ Button.inline("Lᴀɴɢᴜᴀɢᴇ 🌐", data="lang"), Button.inline("Sᴇᴛᴛɪɴɢs ⚙️", data="setter"), ], [ Button.inline("Sᴛᴀᴛs ✨", data="stat"), Button.inline("Bʀᴏᴀᴅᴄᴀsᴛ 📻", data="bcast"), ], ] @callback("ownerinfo") async def own(event): await event.edit( Owner_info_msg, buttons=[Button.inline("Close", data=f"closeit")], ) @callback("closeit") async def closet(lol): await lol.delete() @asst_cmd("start ?(.*)") async def ultroid(event): if event.is_group: if str(event.sender_id) in owner_and_sudos(): return await event.reply( "`I dont work in groups`", buttons=[ Button.url( "⚙️Sᴛᴀʀᴛ⚙️", url=f"https://t.me/{asst.me.username}?start=set" ) ], ) else: if ( not is_added(event.sender_id) and str(event.sender_id) not in owner_and_sudos() ): add_user(event.sender_id) if str(event.sender_id) not in owner_and_sudos(): ok = "" u = await event.client.get_entity(event.chat_id) if not udB.get("STARTMSG"): if udB.get("PMBOT") == "True": ok = "You can contact my master using this bot!!\n\nSend your Message, I will Deliver it To Master." await event.reply( f"Hey there [{get_display_name(u)}](tg://user?id={u.id}), this is Ultroid Assistant of [{ultroid_bot.me.first_name}](tg://user?id={ultroid_bot.uid})!\n\n{ok}", buttons=[Button.inline("Info.", data="ownerinfo")], ) else: me = f"[{ultroid_bot.me.first_name}](tg://user?id={ultroid_bot.uid})" mention = f"[{get_display_name(u)}](tg://user?id={u.id})" await event.reply( Redis("STARTMSG").format(me=me, mention=mention), buttons=[Button.inline("Info.", data="ownerinfo")], ) else: name = get_display_name(event.sender_id) if event.pattern_match.group(1) == "set": await event.reply( "Choose from the below options -", buttons=_settings, ) else: await event.reply( get_string("ast_3").format(name), buttons=_start, ) @callback("mainmenu") @owner async def ultroid(event): if event.is_group: return await event.edit( get_string("ast_3").format(OWNER_NAME), buttons=_start, ) @callback("stat") @owner async def botstat(event): ok = len(get_all_users()) msg = """Ultroid Assistant - Stats Total Users - {}""".format( ok, ) await event.answer(msg, cache_time=0, alert=True) @callback("bcast") @owner async def bdcast(event): ok = get_all_users() await event.edit(f"Broadcast to {len(ok)} users.") async with event.client.conversation(OWNER_ID) as conv: await conv.send_message( "Enter your broadcast message.\nUse /cancel to stop the broadcast.", ) response = conv.wait_event(events.NewMessage(chats=OWNER_ID)) response = await response themssg = response.message.message if themssg == "/cancel": return await conv.send_message("Cancelled!!") else: success = 0 fail = 0 await conv.send_message(f"Starting a broadcast to {len(ok)} users...") start = datetime.now() for i in ok: try: await asst.send_message(int(i), f"{themssg}") success += 1 except BaseException: fail += 1 end = datetime.now() time_taken = (end - start).seconds await conv.send_message( f""" Broadcast completed in {time_taken} seconds. Total Users in Bot - {len(ok)} Sent to {success} users. Failed for {fail} user(s).""", ) @callback("setter") @owner async def setting(event): await event.edit( "Choose from the below options -", buttons=_settings, )