Download telebot/plugins/_inline.py from thenamk3/cc: direct link, hf CLI and curl.
- Browser
- Download file 17 kB
-
https://huggingface.co/spaces/thenamk3/cc/resolve/main/telebot/plugins/_inline.py
- Command line
-
hf download hf://spaces/thenamk3/cc/telebot/plugins/_inline.py
-
curl -L -o _inline.py https://huggingface.co/spaces/thenamk3/cc/resolve/main/telebot/plugins/_inline.py
17 kB
| # TeleBot - UserBot | |
| # Copyright (C) 2020 TeleBot | |
| # This program is free software: you can redistribute it and/or modify | |
| # it under the terms of the GNU Affero General Public License as published by | |
| # the Free Software Foundation, either version 3 of the License, or | |
| # (at your option) any later version. | |
| # This program is distributed in the hope that it will be useful, | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| # GNU Affero General Public License for more details. | |
| # You should have received a copy of the GNU Affero General Public License | |
| # along with this program. If not, see <https://www.gnu.org/licenses/>. | |
| import asyncio | |
| import html | |
| import os | |
| import re | |
| from math import ceil | |
| from telethon import Button, custom, events, functions | |
| from telethon.tl.functions.users import GetFullUserRequest | |
| from telebot import ALIVE_NAME, CMD_HELP, CMD_LIST, CUSTOM_PMPERMIT, bot | |
| from telebot.plugins import telestats | |
| from telebot.telebotConfig import Var | |
| PMPERMIT_PIC = os.environ.get("PMPERMIT_PIC", None) | |
| TELEPIC = ( | |
| PMPERMIT_PIC | |
| if PMPERMIT_PIC | |
| else "https://telegra.ph/file/92cfbab6598148837c2e4.jpg" | |
| ) | |
| PM_WARNS = {} | |
| PREV_REPLY_MESSAGE = {} | |
| myid = bot.uid | |
| mybot = Var.TG_BOT_USER_NAME_BF_HER | |
| if mybot.startswith("@"): | |
| botname = mybot | |
| else: | |
| botname = f"@{mybot}" | |
| LOG_GP = Var.PRIVATE_GROUP_ID | |
| MESAG = ( | |
| str(CUSTOM_PMPERMIT) | |
| if CUSTOM_PMPERMIT | |
| else "`TeleBot PM security! Please wait for me to approve you. 😊" | |
| ) | |
| DEFAULTUSER = str(ALIVE_NAME) if ALIVE_NAME else "TeleBot User" | |
| USER_BOT_WARN_ZERO = "`I had warned you not to spam. Now you have been blocked and reported until further notice.`\n\n**GoodBye!** " | |
| if Var.LOAD_MYBOT == "True": | |
| USER_BOT_NO_WARN = ( | |
| "**PM Security of [{}](tg://user?id={})**\n\n" | |
| "{}\n\n" | |
| "For immediate help, PM me via {}" | |
| "\nPlease choose why you are here, from the available options\n\n".format( | |
| DEFAULTUSER, myid, MESAG, botname | |
| ) | |
| ) | |
| elif Var.LOAD_MYBOT == "False": | |
| USER_BOT_NO_WARN = ( | |
| "**PM Security of [{}](tg://user?id={})**\n\n" | |
| "{}\n" | |
| "\nPlease choose why you are here, from the available options\n".format( | |
| DEFAULTUSER, myid, MESAG | |
| ) | |
| ) | |
| CUSTOM_HELP_EMOJI = os.environ.get("CUSTOM_HELP_EMOJI", "⚡") | |
| HELP_ROWS = int(os.environ.get("HELP_ROWS", 5)) | |
| HELP_COLOUMNS = int(os.environ.get("HELP_COLOUMNS", 3)) | |
| if Var.TG_BOT_USER_NAME_BF_HER is not None and tgbot is not None: | |
| # pylint:disable=E0602 | |
| async def inline_handler(event): | |
| builder = event.builder | |
| result = None | |
| query = event.text | |
| if event.query.user_id == bot.uid and query.startswith("`Userbot"): | |
| rev_text = query[::-1] | |
| buttons = paginate_help(0, CMD_LIST, "helpme") | |
| result = builder.article( | |
| "© TeleBot Help", | |
| text="{}\nCurrently Loaded Plugins: {}".format(query, len(CMD_LIST)), | |
| buttons=buttons, | |
| link_preview=False, | |
| ) | |
| elif event.query.user_id == bot.uid and query == "stats": | |
| result = builder.article( | |
| title="Stats", | |
| text=f"**TeleBot Stats For [{DEFAULTUSER}](tg://user?id={myid})**\n\n__Bot is functioning normally, master!__\n\n(c) @TeleBotSupport", | |
| buttons=[ | |
| [custom.Button.inline("Stats", data="statcheck")], | |
| [Button.url("Repo", "https://github.com/xditya/TeleBot")], | |
| [ | |
| Button.url( | |
| "Deploy Now!", | |
| "https://dashboard.heroku.com/new?button-url=https%3A%2F%2Fgithub.com%2Fxditya%2FTeleBot&template=https%3A%2F%2Fgithub.com%2Fxditya%2FTeleBot", | |
| ) | |
| ], | |
| ], | |
| ) | |
| elif event.query.user_id == bot.uid and query.startswith("**PM"): | |
| TELEBT = USER_BOT_NO_WARN.format(DEFAULTUSER, myid, MESAG) | |
| result = builder.photo( | |
| file=TELEPIC, | |
| text=TELEBT, | |
| buttons=[ | |
| [ | |
| custom.Button.inline("Request ", data="req"), | |
| custom.Button.inline("Chat 💭", data="chat"), | |
| ], | |
| [custom.Button.inline("To spam 🚫", data="heheboi")], | |
| [custom.Button.inline("What is this ❓", data="pmclick")], | |
| ], | |
| ) | |
| elif event.query.user_id == bot.uid and query == "repo": | |
| result = builder.article( | |
| title="Repository", | |
| text=f"TeleBot - Telegram Userbot.", | |
| buttons=[ | |
| [ | |
| Button.url("Repo", "https://github.com/xditya/TeleBot"), | |
| Button.url( | |
| "Deploy", | |
| "https://dashboard.heroku.com/new?button-url=https%3A%2F%2Fgithub.com%2Fxditya%2FTeleBot&template=https%3A%2F%2Fgithub.com%2Fxditya%2FTeleBot", | |
| ), | |
| ], | |
| [Button.url("Support", "https://t.me/TeleBotSupport")], | |
| ], | |
| ) | |
| else: | |
| result = builder.article( | |
| "Source Code", | |
| text="**Welcome to TeleBot**\n\n`Click below buttons for more`", | |
| buttons=[ | |
| [custom.Button.url("Creator👨🦱", "https://t.me/its_xditya")], | |
| [ | |
| custom.Button.url( | |
| "👨💻Source Code💻", "https://github.com/xditya/TeleBot" | |
| ), | |
| custom.Button.url( | |
| "Deploy 🌀", | |
| "https://dashboard.heroku.com/new?template=https%3A%2F%2Fgithub.com%2Fxditya%2FTeleBot", | |
| ), | |
| ], | |
| [ | |
| custom.Button.url( | |
| "Updates and Support Group↗️", "https://t.me/TeleBotSupport" | |
| ) | |
| ], | |
| ], | |
| link_preview=False, | |
| ) | |
| await event.answer([result] if result else None) | |
| async def on_plug_in_callback_query_handler(event): | |
| if event.query.user_id == bot.uid: # pylint:disable=E0602 | |
| current_page_number = int(event.data_match.group(1).decode("UTF-8")) | |
| buttons = paginate_help(current_page_number + 1, CMD_LIST, "helpme") | |
| # https://t.me/TelethonChat/115200 | |
| await event.edit(buttons=buttons) | |
| else: | |
| reply_pop_up_alert = ( | |
| "Please get your own Userbot from @TeleBotHelp , and don't use mine!" | |
| ) | |
| await event.answer(reply_pop_up_alert, cache_time=0, alert=True) | |
| async def on_pm_click(event): | |
| if event.query.user_id == bot.uid: | |
| reply_pop_up_alert = "This ain't for you, master!" | |
| await event.answer(reply_pop_up_alert, cache_time=0, alert=True) | |
| else: | |
| await event.edit( | |
| f"This is the PM Security for {DEFAULTUSER} to keep away spammers and retards.\n\nProtected by [TeleBot](t.me/TeleBotSupport)" | |
| ) | |
| async def megic(event): | |
| if event.query.user_id == bot.uid: | |
| buttons = paginate_help(0, CMD_LIST, "helpme") | |
| await event.edit("Menu Re-opened", buttons=buttons) | |
| else: | |
| reply_pop_up_alert = "This bot ain't for u!!" | |
| await event.answer(reply_pop_up_alert, cache_time=0, alert=True) | |
| async def on_pm_click(event): | |
| if event.query.user_id == bot.uid: | |
| reply_pop_up_alert = "This ain't for you, master!" | |
| await event.answer(reply_pop_up_alert, cache_time=0, alert=True) | |
| else: | |
| await event.edit( | |
| f"Okay, `{DEFAULTUSER}` would get back to you soon!\nTill then please **wait patienly and don't spam here.**" | |
| ) | |
| target = await event.client(GetFullUserRequest(event.query.user_id)) | |
| first_name = html.escape(target.user.first_name) | |
| ok = event.query.user_id | |
| if first_name is not None: | |
| first_name = first_name.replace("\u2060", "") | |
| tosend = f"Hey {DEFAULTUSER}, [{first_name}](tg://user?id={ok}) is **requesting** something in PM!" | |
| await tgbot.send_message(LOG_GP, tosend) | |
| async def on_pm_click(event): | |
| event.query.user_id | |
| if event.query.user_id == bot.uid: | |
| reply_pop_up_alert = "This ain't for you, master!" | |
| await event.answer(reply_pop_up_alert, cache_time=0, alert=True) | |
| else: | |
| await event.edit( | |
| f"Oho, you want to chat...\nPlease wait and see if {DEFAULTUSER} is in a mood to chat, if yes, he will be replying soon!\nTill then, **do not spam.**" | |
| ) | |
| target = await event.client(GetFullUserRequest(event.query.user_id)) | |
| ok = event.query.user_id | |
| first_name = html.escape(target.user.first_name) | |
| if first_name is not None: | |
| first_name = first_name.replace("\u2060", "") | |
| tosend = f"Hey {DEFAULTUSER}, [{first_name}](tg://user?id={ok}) wants to PM you for **Random Chatting**!" | |
| await tgbot.send_message(LOG_GP, tosend) | |
| async def on_pm_click(event): | |
| if event.query.user_id == bot.uid: | |
| reply_pop_up_alert = "This ain't for you, master!" | |
| await event.answer(reply_pop_up_alert, cache_time=0, alert=True) | |
| else: | |
| await event.edit( | |
| f"Oh!\n{DEFAULTUSER} would be glad to help you out...\nPlease leave your message here **in a single line** and wait till I respond 😊" | |
| ) | |
| target = await event.client(GetFullUserRequest(event.query.user_id)) | |
| first_name = html.escape(target.user.first_name) | |
| ok = event.query.user_id | |
| if first_name is not None: | |
| first_name = first_name.replace("\u2060", "") | |
| tosend = f"Hey {DEFAULTUSER}, [{first_name}](tg://user?id={ok}) wants to PM you for **help**!" | |
| await tgbot.send_message(LOG_GP, tosend) | |
| async def on_pm_click(event): | |
| if event.query.user_id == bot.uid: | |
| reply_pop_up_alert = "This ain't for you, master!" | |
| await event.answer(reply_pop_up_alert, cache_time=0, alert=True) | |
| else: | |
| await event.edit( | |
| f"Oh, so you are here to spam 😤\nGoodbye.\nYour message has been read and successfully ignored." | |
| ) | |
| await borg(functions.contacts.BlockRequest(event.query.user_id)) | |
| target = await event.client(GetFullUserRequest(event.query.user_id)) | |
| ok = event.query.user_id | |
| first_name = html.escape(target.user.first_name) | |
| if first_name is not None: | |
| first_name = first_name.replace("\u2060", "") | |
| first_name = html.escape(target.user.first_name) | |
| await tgbot.send_message( | |
| LOG_GP, | |
| f"[{first_name}](tg://user?id={ok}) tried to **spam** your inbox.\nHenceforth, **blocked**", | |
| ) | |
| async def on_plug_in_callback_query_handler(event): | |
| if event.query.user_id == bot.uid: | |
| await event.edit( | |
| "Menu Closed!!", buttons=[Button.inline("Re-open Menu", data="reopen")] | |
| ) | |
| else: | |
| reply_pop_up_alert = "Please get your own userbot from @TeleBotSupport " | |
| await event.answer(reply_pop_up_alert, cache_time=0, alert=True) | |
| async def rip(event): | |
| text = telestats | |
| await event.answer(text, alert=True) | |
| async def on_plug_in_callback_query_handler(event): | |
| if event.query.user_id == bot.uid: # pylint:disable=E0602 | |
| current_page_number = int(event.data_match.group(1).decode("UTF-8")) | |
| buttons = paginate_help( | |
| current_page_number - 1, CMD_LIST, "helpme" # pylint:disable=E0602 | |
| ) | |
| # https://t.me/TelethonChat/115200 | |
| await event.edit(buttons=buttons) | |
| else: | |
| reply_pop_up_alert = "Please get your own Userbot, and don't use mine!" | |
| await event.answer(reply_pop_up_alert, cache_time=0, alert=True) | |
| async def on_plug_in_callback_query_handler(event): | |
| if event.query.user_id == bot.uid: | |
| plugin_name = event.data_match.group(1).decode("UTF-8") | |
| help_string = "" | |
| help_string += f"Commands Available in {plugin_name} - \n" | |
| try: | |
| if plugin_name in CMD_HELP: | |
| for i in CMD_HELP[plugin_name]: | |
| help_string += i | |
| help_string += "\n" | |
| else: | |
| for i in CMD_LIST[plugin_name]: | |
| help_string += i | |
| help_string += "\n" | |
| except BaseException: | |
| pass | |
| if help_string == "": | |
| reply_pop_up_alert = "{} has no detailed info.\nUse .help {}".format( | |
| plugin_name, plugin_name | |
| ) | |
| else: | |
| reply_pop_up_alert = help_string | |
| reply_pop_up_alert += "\n Use .unload {} to remove this plugin\n\ | |
| © Telebot".format( | |
| plugin_name | |
| ) | |
| if len(help_string) >= 140: | |
| oops = "List too long!\nCheck your saved messages!" | |
| await event.answer(oops, cache_time=0, alert=True) | |
| help_string += "\n\nThis will be auto-deleted in 1 minute!" | |
| if bot is not None and event.query.user_id == bot.uid: | |
| ok = await bot.send_message("me", help_string) | |
| await asyncio.sleep(60) | |
| await ok.delete() | |
| else: | |
| await event.answer(reply_pop_up_alert, cache_time=0, alert=True) | |
| else: | |
| reply_pop_up_alert = "Please get your own Userbot, and don't use mine!" | |
| await event.answer(reply_pop_up_alert, cache_time=0, alert=True) | |
| def paginate_help(page_number, loaded_plugins, prefix): | |
| number_of_rows = HELP_ROWS | |
| number_of_cols = HELP_COLOUMNS | |
| tele = CUSTOM_HELP_EMOJI | |
| helpable_plugins = [] | |
| for p in loaded_plugins: | |
| if not p.startswith("_"): | |
| helpable_plugins.append(p) | |
| helpable_plugins = sorted(helpable_plugins) | |
| modules = [ | |
| custom.Button.inline( | |
| "{} {} {}".format(tele, x, tele), 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) | |
| ] + [ | |
| ( | |
| custom.Button.inline( | |
| "⫷ Previous", data="{}_prev({})".format(prefix, modulo_page) | |
| ), | |
| custom.Button.inline("║ Close ║", data="close"), | |
| custom.Button.inline( | |
| "Next ⫸", data="{}_next({})".format(prefix, modulo_page) | |
| ), | |
| ) | |
| ] | |
| return pairs | |
| async def userinfo(event): | |
| target = await event.client(GetFullUserRequest(event.query.user_id)) | |
| first_name = html.escape(target.user.first_name) | |
| if first_name is not None: | |
| first_name = first_name.replace("\u2060", "") | |
| return first_name | |