Initial Commit

Co-Authored-By: Aditya <me@xditya.me>
Co-Authored-By: Amit Sharma <48654350+buddhhu@users.noreply.github.com>
Co-Authored-By: hellboi_atul <68107352+hellboi-atul@users.noreply.github.com>
Co-Authored-By: Sρι∂у <68327188+sppidy@users.noreply.github.com>
Co-Authored-By: Anonymous <69723581+New-dev0@users.noreply.github.com>
Co-Authored-By: Danish <72792730+1Danish-00@users.noreply.github.com>
Co-Authored-By: Arnab Paryali <arnabxd@pm.me>
Co-Authored-By: Programming Error <75001577+programmingerror@users.noreply.github.com>
This commit is contained in:
xditya
2021-02-22 06:19:43 +05:30
commit c4966f772a
60 changed files with 8598 additions and 0 deletions

503
plugins/_inline.py Normal file
View File

@@ -0,0 +1,503 @@
# 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/>.
import os
import random
import re
import time
from datetime import datetime
from math import ceil
from platform import python_version as pyver
from git import Repo
from support import *
from telethon import Button, __version__
from telethon.tl.types import InputWebDocument
from . import *
# ================================================#
notmine = "This bot is for {}".format(OWNER_NAME)
ULTROID_PIC = "https://telegra.ph/file/11245cacbffe92e5d5b14.jpg"
helps = """
[Uʟᴛʀɪᴅ Sᴘᴘʀᴛ](t.me/ultroidsupport)
**Hᴇʟᴘ Mᴇɴ{}.
ɢɪɴs ~ {}**
"""
if Var.ADDONS:
zhelps = """
[Uʟᴛʀɪᴅ Sᴘᴘʀᴛ](t.me/ultroidsupport)
**Hᴇʟᴘ Mᴇɴ{}.
Aᴅᴅɴs ~ {}**
"""
else:
zhelps = """
[Uʟᴛʀɪᴅ Sᴘᴘʀᴛ](t.me/ultroidsupport)
**Hᴇʟᴘ Mᴇɴ{}.
Aᴅᴅɴs ~ {}
G Aɴᴅ Aᴅᴅ ADDON Vᴀʀ Wɪᴛʜ Vᴀʟᴇ Tʀᴇ**
"""
# ============================================#
@inline
@in_owner
async def e(o):
if len(o.text) == 0:
b = o.builder
uptime = grt((time.time() - start_time))
ALIVEMSG = """
**The Ultroid Userbot...**\n\n
✵ **Owner** - `{}`
✵ **Ultroid** - `{}`
✵ **UpTime** - `{}`
✵ **Python** - `{}`
✵ **Telethon** - `{}`
✵ **Branch** - `{}`
""".format(
OWNER_NAME,
ultroid_version,
uptime,
pyver(),
__version__,
Repo().active_branch,
)
res = [
b.article(
title="Ultroid Userbot",
url="https://t.me/TeamUltroid",
description="Userbot | Telethon ",
text=ALIVEMSG,
thumb=InputWebDocument(ULTROID_PIC, 0, "image/jpeg", []),
)
]
await o.answer(res, switch_pm=f"👥 ULTROID PORTAL", switch_pm_param="start")
if Var.BOT_USERNAME is not None and asst is not None:
@inline
@in_owner
async def inline_handler(event):
builder = event.builder
result = None
query = event.text
if event.query.user_id in sed and query.startswith("ultd"):
result = builder.article(
title="Help Menu",
description="Help Menu - UserBot | Telethon ",
url="https://t.me/TheUltroid",
thumb=InputWebDocument(ULTROID_PIC, 0, "image/jpeg", []),
text=f"** Bᴛ Oғ {OWNER_NAME}\n\nMᴀɪɴ Mᴇɴ\n\nɢɪɴs ~ {len(PLUGINS) - 4}\nAᴅᴅɴs ~ {len(ADDONS)}**",
buttons=[
[
Button.inline("• Pʟɢɪɴs", data="hrrrr"),
Button.inline("• Aᴅᴅɴs", data="frrr"),
],
[Button.inline("Oɴᴇʀ•ᴛʟ", data="ownr")],
[Button.inline("Iɴʟɪɴᴇ•Pʟɢɪɴs", data="inlone")],
[Button.inline("••Cʟᴇ••", data="close")],
],
)
await event.answer([result] if result else None)
elif event.query.user_id in sed and query.startswith("paste"):
ok = query.split("-")[1]
link = f"https://nekobin.com/{ok}"
link_raw = f"https://nekobin.com/raw/{ok}"
result = builder.article(
title="Paste",
text="Pᴀsᴛᴇᴅ T Nᴇᴋʙɪɴ!",
buttons=[
[
Button.url("NekoBin", url=f"{link}"),
Button.url("Raw", url=f"{link_raw}"),
]
],
)
await event.answer([result] if result else None)
@inline
@in_owner
@callback("ownr")
@owner
async def setting(event):
await event.edit(
buttons=[
[
Button.inline("•Pɪɴɢ•", data="pkng"),
Button.inline("•Uᴘᴛɪᴍᴇ•", data="upp"),
],
[Button.inline("•Rᴇsᴛᴀʀᴛ•", data="rstrt")],
[Button.inline("<- Bᴀ", data="open")],
],
)
@callback("pkng")
async def _(event):
start = datetime.now()
end = datetime.now()
ms = (end - start).microseconds / 1000
pin = f"🌋Pɪɴɢ = {ms}ms"
await event.answer(pin, cache_time=0, alert=True)
@callback("upp")
async def _(event):
uptime = grt((time.time() - start_time))
pin = f"🙋Uᴘᴛɪᴍᴇ = {uptime}"
await event.answer(pin, cache_time=0, alert=True)
@callback("inlone")
@owner
async def _(e):
button = [
[
Button.switch_inline(
"Sᴇɴᴅ Oғғɪɪᴀʟ Pʟɢɪɴs",
query="send all",
same_peer=True,
)
],
[
Button.switch_inline(
"Pʟᴀʏ Sᴛʀᴇ Aᴘᴘs",
query="app telegram",
same_peer=True,
)
],
[
Button.switch_inline(
"Mᴅᴅᴇᴅ Aᴘᴘs",
query="mods minecraft",
same_peer=True,
)
],
[
Button.switch_inline(
"Sᴇᴀʀʜ Oɴ Gɢʟᴇ",
query="go TeamUltroid",
same_peer=True,
)
],
[
Button.switch_inline(
"Sᴇᴀʀʜ Oɴ Yᴀʜ",
query="yahoo TeamUltroid",
same_peer=True,
)
],
[
Button.switch_inline(
"YTʙᴇ Dɴʟᴀᴅᴇʀ",
query="yt How to Deploy Ultroid Userbot",
same_peer=True,
)
],
[
Button.switch_inline(
"ɪᴘAʀᴛ Sᴇᴀʀʜ",
query="clipart frog",
same_peer=True,
)
],
[
Button.inline(
"<- Bᴀ",
data="open",
)
],
]
await e.edit(buttons=button, link_preview=False)
@callback("hrrrr")
@owner
async def on_plug_in_callback_query_handler(event):
xhelps = helps.format(OWNER_NAME, len(PLUGINS) - 4)
buttons = paginate_help(0, PLUGINS, "helpme")
await event.edit(f"{xhelps}", buttons=buttons, link_preview=False)
@callback("frrr")
@owner
async def addon(event):
halp = zhelps.format(OWNER_NAME, len(ADDONS))
if len(ADDONS) > 0:
buttons = paginate_addon(0, ADDONS, "addon")
await event.edit(f"{halp}", buttons=buttons, link_preview=False)
else:
await event.answer(
"• Iɴsᴛᴀʟʟ A Pʟɢɪɴ Mᴀɴᴀʟʟʏ Oʀ Aᴅᴅ Vᴀʀ ADDON Wɪᴛʜ Vᴀʟᴇ Tʀ",
cache_time=0,
alert=True,
link_preview=False,
)
@callback("rstrt")
@owner
async def rrst(ult):
await restart(ult)
@callback(
re.compile(
rb"helpme_next\((.+?)\)",
),
)
@owner
async def on_plug_in_callback_query_handler(event):
current_page_number = int(event.data_match.group(1).decode("UTF-8"))
buttons = paginate_help(current_page_number + 1, PLUGINS, "helpme")
await event.edit(buttons=buttons, link_preview=False)
@callback(
re.compile(
rb"helpme_prev\((.+?)\)",
),
)
@owner
async def on_plug_in_callback_query_handler(event):
current_page_number = int(event.data_match.group(1).decode("UTF-8"))
buttons = paginate_help(current_page_number - 1, PLUGINS, "helpme")
await event.edit(buttons=buttons, link_preview=False)
@callback(
re.compile(
rb"addon_next\((.+?)\)",
),
)
@owner
async def on_plug_in_callback_query_handler(event):
current_page_number = int(event.data_match.group(1).decode("UTF-8"))
buttons = paginate_addon(current_page_number + 1, ADDONS, "addon")
await event.edit(buttons=buttons, link_preview=False)
@callback(
re.compile(
rb"addon_prev\((.+?)\)",
),
)
@owner
async def on_plug_in_callback_query_handler(event):
current_page_number = int(event.data_match.group(1).decode("UTF-8"))
buttons = paginate_addon(current_page_number - 1, ADDONS, "addon")
await event.edit(buttons=buttons, link_preview=False)
@callback("back")
@owner
async def backr(event):
xhelps = helps.format(OWNER_NAME, len(PLUGINS) - 4)
current_page_number = 0
buttons = paginate_help(current_page_number, PLUGINS, "helpme")
await event.edit(f"{xhelps}", buttons=buttons, link_preview=False)
@callback("buck")
@owner
async def backr(event):
xhelps = zhelps.format(OWNER_NAME, len(ADDONS))
current_page_number = 0
buttons = paginate_addon(current_page_number, ADDONS, "addon")
await event.edit(f"{xhelps}", buttons=buttons, link_preview=False)
@callback("open")
@owner
async def opner(event):
buttons = [
[
Button.inline("• Pʟɢɪɴs ", data="hrrrr"),
Button.inline("• Aᴅᴅɴs", data="frrr"),
],
[Button.inline("Oɴᴇʀ•Tʟ", data="ownr")],
[Button.inline("Iɴʟɪɴᴇ•Pʟɢɪɴs", data="inlone")],
[Button.inline("••Cʟᴇ••", data="close")],
]
await event.edit(
f"** Bᴛ Oғ {OWNER_NAME}\n\nMᴀɪɴ Mᴇɴ\n\nOꜰꜰɪɪᴀʟ Pʟɢɪɴs ~ {len(PLUGINS) - 4}\nꜰꜰɪɪᴀʟ Pʟɢɪɴs ~ {len(ADDONS)}**",
buttons=buttons,
link_preview=False,
)
@callback("close")
@owner
async def on_plug_in_callback_query_handler(event):
await event.edit(
"**Mᴇɴ Hᴀs Bᴇᴇɴ Cʟsᴇᴅ**",
buttons=Button.inline("Oᴘᴇɴ Mᴀɪɴ Mᴇɴ Aɢᴀɪɴ", data="open"),
)
@callback(
re.compile(
b"us_plugin_(.*)",
),
)
@owner
async def on_plug_in_callback_query_handler(event):
plugin_name = event.data_match.group(1).decode("UTF-8")
help_string = f"Plugin Name - `{plugin_name}`\n"
try:
for i in HELP[plugin_name]:
help_string += i
except BaseException:
pass
if help_string == "":
reply_pop_up_alert = "{} has no detailed help...".format(plugin_name)
else:
reply_pop_up_alert = help_string
reply_pop_up_alert += "\n© @TheUltroid"
try:
if event.query.user_id in sed:
await event.edit(
reply_pop_up_alert,
buttons=[
Button.inline("<- Bᴀ", data="back"),
Button.inline("••Cʟᴇ••", data="close"),
],
)
else:
reply_pop_up_alert = notmine
await event.answer(reply_pop_up_alert, cache_time=0)
except BaseException:
halps = "Do .help {} to get the list of commands.".format(plugin_name)
await event.edit(halps)
@callback(
re.compile(
b"add_plugin_(.*)",
),
)
@owner
async def on_plug_in_callback_query_handler(event):
plugin_name = event.data_match.group(1).decode("UTF-8")
help_string = ""
try:
for i in HELP[plugin_name]:
help_string += i
except BaseException:
try:
for u in CMD_HELP[plugin_name]:
help_string = (
f"Plugin Name-{plugin_name}\n\n✘ Commands Available-\n\n"
)
help_string += str(CMD_HELP[plugin_name])
except BaseException:
try:
if plugin_name in LIST:
help_string = (
f"Plugin Name-{plugin_name}\n\n✘ Commands Available-\n\n"
)
for d in LIST[plugin_name]:
help_string += Var.HNDLR + d
help_string += "\n"
except BaseException:
pass
if help_string == "":
reply_pop_up_alert = "{} has no detailed help...".format(plugin_name)
else:
reply_pop_up_alert = help_string
reply_pop_up_alert += "\n© @TheUltroid"
try:
if event.query.user_id in sed:
await event.edit(
reply_pop_up_alert,
buttons=[
Button.inline("<- Bᴀ", data="buck"),
Button.inline("••Cʟᴇ••", data="close"),
],
)
else:
reply_pop_up_alert = notmine
await event.answer(reply_pop_up_alert, cache_time=0)
except BaseException:
halps = "Do .help {} to get the list of commands.".format(plugin_name)
await event.edit(halps)
def paginate_help(page_number, loaded_plugins, prefix):
number_of_rows = 5
number_of_cols = 2
multi = os.environ.get("EMOJI_TO_DESPLAY_IN_HELP", "")
mult2i = os.environ.get("EMOJI2_TO_DESPLAY_IN_HELP", "")
helpable_plugins = []
for p in loaded_plugins:
if not p.startswith("_"):
helpable_plugins.append(p)
helpable_plugins = sorted(helpable_plugins)
modules = [
Button.inline(
"{} {} {}".format(
random.choice(list(multi)), x, random.choice(list(mult2i))
),
data="us_plugin_{}".format(x),
)
for x in helpable_plugins
]
pairs = list(zip(modules[::number_of_cols], modules[1::number_of_cols]))
if len(modules) % number_of_cols == 1:
pairs.append((modules[-1],))
max_num_pages = ceil(len(pairs) / number_of_rows)
modulo_page = page_number % max_num_pages
if len(pairs) > number_of_rows:
pairs = pairs[
modulo_page * number_of_rows : number_of_rows * (modulo_page + 1)
] + [
(
Button.inline(
"<- Pʀᴇɪs", data="{}_prev({})".format(prefix, modulo_page)
),
Button.inline("-Bᴀᴋ-", data="open"),
Button.inline(
"Nᴇxᴛ ->", data="{}_next({})".format(prefix, modulo_page)
),
)
]
return pairs
def paginate_addon(page_number, loaded_plugins, prefix):
number_of_rows = 5
number_of_cols = 2
multi = os.environ.get("EMOJI_TO_DESPLAY_IN_HELP", "")
mult2i = os.environ.get("EMOJI2_TO_DESPLAY_IN_HELP", "")
helpable_plugins = []
for p in loaded_plugins:
if not p.startswith("_"):
helpable_plugins.append(p)
helpable_plugins = sorted(helpable_plugins)
modules = [
Button.inline(
"{} {} {}".format(
random.choice(list(multi)), x, random.choice(list(mult2i))
),
data="add_plugin_{}".format(x),
)
for x in helpable_plugins
]
pairs = list(zip(modules[::number_of_cols], modules[1::number_of_cols]))
if len(modules) % number_of_cols == 1:
pairs.append((modules[-1],))
max_num_pages = ceil(len(pairs) / number_of_rows)
modulo_page = page_number % max_num_pages
if len(pairs) > number_of_rows:
pairs = pairs[
modulo_page * number_of_rows : number_of_rows * (modulo_page + 1)
] + [
(
Button.inline(
"<- Pʀᴇɪs", data="{}_prev({})".format(prefix, modulo_page)
),
Button.inline("-Bᴀᴋ-", data="open"),
Button.inline(
"Nᴇxᴛ ->", data="{}_next({})".format(prefix, modulo_page)
),
)
]
return pairs