Files
Ultroid-fork/assistant/start.py
2021-03-13 17:26:44 +05:30

147 lines
4.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ultroid - UserBot
# Copyright (C) 2020 TeamUltroid
#
# This file is a part of < https://github.com/TeamUltroid/Ultroid/ >
# PLease read the GNU Affero General Public License in
# <https://www.github.com/TeamUltroid/Ultroid/blob/main/LICENSE/>.
from datetime import datetime
from pyUltroid.functions.asst_fns import *
from telethon import Button, custom, events
from plugins import *
from . import *
@asst_cmd("start")
async def assistant(event):
if event.is_group and event.sender_id in sed:
return await eor(event, "`I dont work in groups`")
else:
if not is_added(event.sender_id) and event.sender_id not in sed:
add_user(event.sender_id)
await asst.send_message(
OWNER_ID,
f"Bot started by [{event.sender_id}](tg://user?id={event.sender_id})",
)
ok = ""
if udB.get("MSG_FRWD") == True:
ok = "You can contact me using this bot!!"
if event.is_private and event.sender_id in sed:
return
await event.reply(
f"Hey there, this is Ultroid Assistant of {OWNER_NAME}!\n\n{ok}",
buttons=[Button.url("Know More", url="https://t.me/TeamUltroid")],
)
@asst_cmd("start")
@owner
async def ultroid(event):
if event.is_group:
return
name = event.sender.first_name
if event.sender.last_name:
name += f" {event.sender.last_name}"
await asst.send_message(
event.chat_id,
get_string("ast_3").format(name),
buttons=[
[
Button.inline("Language 🌐", data="lang"),
Button.inline("Sᴇᴛᴛɪɴɢs ⚙️", data="setter"),
],
[
Button.inline("Sᴛᴀᴛs ✨", data="stat"),
Button.inline("ᴀᴅᴀsᴛ 📻", data="bcast"),
],
],
)
# aah, repeat the codes..
@callback("mainmenu")
@owner
async def ultroid(event):
if event.is_group:
return
await event.edit(
get_string("ast_3").format(OWNER_NAME),
buttons=[
[
Button.inline("Language 🌐", data="lang"),
Button.inline("Sᴇᴛᴛɪɴɢs ⚙️", data="setter"),
],
[
Button.inline("Sᴛᴀᴛs ✨", data="stat"),
Button.inline("ᴀᴅᴀsᴛ 📻", data="bcast"),
],
],
)
@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=[
[Button.inline("API Kᴇʏs", data="apiset")],
[
Button.inline("ɪ", data="alvcstm"),
Button.inline("PᴍPᴇʀᴍɪ", data="pmset"),
],
[Button.inline("Fᴇᴀᴛʀᴇs", data="otvars")],
[Button.inline("« Bᴀ", data="mainmenu")],
],
)