diff --git a/EMBot/__init__.py b/EMBot/__init__.py deleted file mode 100644 index aaf1a54..0000000 --- a/EMBot/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ - -from telethon import TelegramClient -import logging -from Configs import Config - -logging.basicConfig(format='[%(levelname) 5s/%(asctime)s] %(name)s: %(message)s', - level=logging.INFO) - -bot = TelegramClient('Evil', api_id=Config.APP_ID, api_hash=Config.API_HASH) -Evil = bot.start(bot_token=Config.TOKEN) diff --git a/EMBot/__main__.py b/EMBot/__main__.py deleted file mode 100644 index c3e0347..0000000 --- a/EMBot/__main__.py +++ /dev/null @@ -1,22 +0,0 @@ -import glob -from pathlib import Path -from EMBot.utils import load_plugins -import logging -from EMBot import Evil - -logging.basicConfig(format='[%(levelname) 5s/%(asctime)s] %(name)s: %(message)s', - level=logging.INFO) - -path = "EMBot/plugins/*.py" -files = glob.glob(path) -for name in files: - with open(name) as a: - patt = Path(a.name) - plugin_name = patt.stem - load_plugins(plugin_name.replace(".py", "")) - -print("Successfully Started Bot!") -print("Running As Usain Bolt") - -if __name__ == "__main__": - Evil.run_until_disconnected() diff --git a/EMBot/plugins/__init__.py b/EMBot/plugins/__init__.py deleted file mode 100644 index 35f3782..0000000 --- a/EMBot/plugins/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""No need of init here.""" diff --git a/EMBot/plugins/admin.py b/EMBot/plugins/admin.py deleted file mode 100644 index 2fe448c..0000000 --- a/EMBot/plugins/admin.py +++ /dev/null @@ -1,89 +0,0 @@ -from telethon import events, Button -from EMBot import Evil -from EMBot.status import * -from telethon.tl.functions.channels import EditAdminRequest -from telethon.tl.types import ChatAdminRights -from telethon.tl.functions.users import GetFullUserRequest -from telethon.tl.functions.messages import ExportChatInviteRequest - -@Evil.on(events.callbackquery.CallbackQuery(data="admin")) -async def _(event): - - await event.edit(ADMIN_TEXT, buttons=[[Button.inline("« Bᴀᴄᴋ", data="help")]]) - -@Evil.on(events.NewMessage(pattern="^[!?/]promote ?(.*)")) -@is_admin -async def promote(event, perm): - if event.is_private: - await event.reply("This cmd is made to be used in groups, not in PM!") - return - - if not perm.add_admins: - await event.reply("You are missing the following rights to use this command:CanAddAdmins!") - return - input_str = event.pattern_match.group(1) - user = await event.get_reply_message() - if not input_str and not user: - await event.reply("Reply to a user or give its username to promote him!") - return - sed = await Evil(GetFullUserRequest(id=user.sender_id or input_str)) - await Evil(EditAdminRequest(event.chat_id, user.sender_id or input_str, ChatAdminRights( - add_admins=False, - invite_users=True, - change_info=False, - ban_users=True, - delete_messages=True, - pin_messages=True), rank="Admin")) - - if not input_str: - await event.reply(f"Successfully Promoted [{sed.user.first_name}](tg://user?id={user.sender_id}) in {event.chat.title}!") - return - - await event.reply(f"Succesfully Promoted {input_str} in {event.chat.title}") - -@Evil.on(events.NewMessage(pattern="^[!?/]demote ?(.*)")) -@is_admin -async def promote(event, perm): - if event.is_private: - await event.reply("This cmd is made to be used in groups, not in PM!") - return - if not perm.add_admins: - await event.reply("You are missing the following rights to use this command:CanAddAdmins!") - return - input_str = event.pattern_match.group(1) - user = await event.get_reply_message() - if not input_str and not user: - await event.reply("Reply to a user or give its username to demote him!") - return - sed = await Evil(GetFullUserRequest(id=user.sender_id or input_str)) - await Evil(EditAdminRequest(event.chat_id, user.sender_id or input_str, ChatAdminRights( - add_admins=False, - invite_users=None, - change_info=None, - ban_users=None, - delete_messages=None, - pin_messages=None), rank="Not Admin")) - - if not input_str: - await event.reply(f"Successfully Demoted [{sed.user.first_name}](tg://user?id={user.sender_id}) in {event.chat.title}!") - return - - await event.reply(f"Succesfully Demoted {input_str} in {event.chat.title}") - - -@Evil.on(events.NewMessage(pattern="^[!?/]invitelink")) -async def invitelink(event): - - if event.is_private: - await event.reply("This cmd is made to be used in groups, not in PM!") - return - link = await Evil(ExportChatInviteRequest(event.chat_id)) - await event.reply(f"Group link of {event.chat.title} is [here]({link.link})", link_preview=False) - -ADMIN_TEXT = """ -**✘ A module from which admins of the chat can use!** - -‣ `?promote` - To Promote a user in the chat. -‣ `?demote` - To Demote a user in the chat. -‣ `?invitelink` - To get invitelink of a chat. -""" diff --git a/EMBot/plugins/bans.py b/EMBot/plugins/bans.py deleted file mode 100644 index 42bdbb9..0000000 --- a/EMBot/plugins/bans.py +++ /dev/null @@ -1,172 +0,0 @@ -from EMBot import Evil -from EMBot.status import * -from telethon import events, Button -from telethon.tl.functions.channels import EditBannedRequest -from telethon.tl.types import ChatBannedRights - -BANS_TEXT = """ -**✘ Some people need to be publicly banned; spammers, annoyances, or just trolls.** - -‣ `?kickme` - To self Kick you from a chat. -‣ `?kick` - To kick someone from a chat. -‣ `?unban` - To unban a member from the chat. -‣ `?ban` - To Ban Someone from a chat. -‣ `?dban` - To delete the replied msg and bans the user. -‣ `?sban` - To delete the replied msg and kicks the user. -‣ `?skick` - To Delete Your msg and kicks the user -‣ `?dkick` - To delete your msg and and kicks the replied user. -""" - -@Evil.on(events.NewMessage(pattern="^[!?/]kick ?(.*)")) -@is_admin -async def kick(event, perm): - - if event.is_private: - await event.reply("This cmd is made to be used in groups not PM") - return - if not perm.ban_users: - await event.reply("You are missing the following rights to use this command:CanBanUsers!") - return - input_str = event.pattern_match.group(1) - msg = await event.get_reply_message() - if not input_str and not msg: - await event.reply("Reply to a user or give its username to kick him") - return - - replied_user = msg.sender_id - us = msg.sender.username - info = await Evil.get_entity(us) - await Evil.kick_participant(event.chat_id, input_str or replied_user) - await event.reply(f"Succesfully Kicked [{info.first_name}](tg://user?id={replied_user}) from {event.chat.title}") - -@Evil.on(events.NewMessage(pattern="^[!?/]kickme")) -async def kickme(event): - - if event.is_private: - await event.reply("This cmd is made to be used in groups not PM") - return - - check = await Evil.get_permissions(event.chat_id, event.sender_id) - if check.is_admin: - await event.reply("Sorry but I can't kick admins!") - return - - await event.reply("Ok, as your wish") - await Evil.kick_participant(event.chat_id, event.sender_id) - -@Evil.on(events.NewMessage(pattern="^[!?/]ban ?(.*)")) -@is_admin -async def ban(event, perm): - if event.is_private: - await event.reply("This cmd is made to be used in groups not PM") - return - if not perm.ban_users: - await event.reply("You are missing the following rights to use this command:CanBanUsers!") - return - input_str = event.pattern_match.group(1) - msg = await event.get_reply_message() - if not input_str and not msg: - await event.reply("Reply to a user or give its username to ban him") - return - replied_user = msg.sender_id - us = msg.sender.username - info = await Evil.get_entity(us) - await Evil(EditBannedRequest(event.chat_id, replied_user, ChatBannedRights(until_date=None, view_messages=True))) - await event.reply(f"Succesfully Banned [{info.first_name}](tg://user?id={replied_user}) in {event.chat.title}") - -@Evil.on(events.NewMessage(pattern="^[!?/]unban ?(.*)")) -@is_admin -async def unban(event, perm): - if event.is_private: - await event.reply("This cmd is made to be used in groups not PM") - return - if not perm.ban_users: - await event.reply("You are missing the following rights to use this command:CanBanUsers!") - return - input_str = event.pattern_match.group(1) - msg = await event.get_reply_message() - if not input_str and not msg: - await event.reply("Reply to a user or give its username to unban him") - return - replied_user = msg.sender_id - us = msg.sender.username - info = await Evil.get_entity(us) - await Evil(EditBannedRequest(event.chat_id, replied_user, ChatBannedRights(until_date=None, view_messages=False))) - await event.reply(f"Succesfully Unbanned [{info.first_name}](tg://user?id={replied_user}) in {event.chat.title}") - -@Evil.on(events.NewMessage(pattern="^[!?/]skick")) -@is_admin -async def skick(event, perm): - if not perm.ban_users: - await event.reply("You are missing the following rights to use this command:CanBanUsers!") - return - reply_msg = await event.get_reply_message() - if not reply_msg: - await event.reply("Reply to someone to delete it and kick the user!") - return - - us = reply_msg.sender.username - info = await Evil.get_entity(us) - x = (await event.get_reply_message()).sender_id - zx = (await event.get_reply_message()) - await event.delete() - await Evil.kick_participant(event.chat_id, x) - await event.reply(f"Succesfully Kicked [{info.first_name}](tg://user?id={replied_user}) from {event.chat.title}") - -@Evil.on(events.NewMessage(pattern="^[!?/]dkick")) -@is_admin -async def dkick(event, perm): - if not perm.ban_users: - await event.reply("You are missing the following rights to use this command:CanBanUsers!") - return - reply_msg = await event.get_reply_message() - if not reply_msg: - await event.reply("Reply to someone to delete it and kick the user!") - return - us = reply_msg.sender.username - info = await Evil.get_entity(us) - x = await event.get_reply_message() - await x.delete() - await Evil.kick_participant(event.chat_id, x.sender_id) - await event.reply(f"Succesfully Kicked [{info.first_name}](tg://user?id={replied_user}) from {event.chat.title}") - -@Evil.on(events.NewMessage(pattern="^[!?/]dban")) -@is_admin -async def dban(event, perm): - if not perm.ban_users: - await event.reply("You are missing the following rights to use this command:CanBanUsers!") - return - reply_msg = await event.get_reply_message() - if not reply_msg: - await event.reply("Reply to someone to delete the message and ban the user!") - return - us = reply_msg.sender.username - info = await Evil.get_entity(us) - x = (await event.get_reply_message()).sender_id - zx = (await event.get_reply_message()) - await zx.delete() - await Evil(EditBannedRequest(event.chat_id, x, ChatBannedRights(until_date=None, view_messages=True))) - await event.reply("Successfully Banned!") - await event.reply(f"Succesfully Banned [{info.first_name}](tg://user?id={replied_user}) from {event.chat.title}") - -@Evil.on(events.NewMessage(pattern="^[!?/]sban")) -@is_admin -async def sban(event, perm): - if not perm.ban_users: - await event.reply("You are missing the following rights to use this command:CanBanUsers!") - return - reply_msg = await event.get_reply_message() - if not reply_msg: - await event.reply("Reply to someone to delete the message and ban the user!") - return - us = reply_msg.sender.username - info = await Evil.get_entity(us) - x = (await event.get_reply_message()).sender_id - zx = (await event.get_reply_message()) - await event.delete() - await Evil(EditBannedRequest(event.chat_id, x, ChatBannedRights(until_date=None, view_messages=True))) - await event.reply(f"Succesfully Banned [{info.first_name}](tg://user?id={replied_user}) from {event.chat.title}") - -@Evil.on(events.callbackquery.CallbackQuery(data="bans")) -async def banhelp(event): - await event.edit(BANS_TEXT, buttons=[[Button.inline("« Bᴀᴄᴋ", data="help")]]) diff --git a/EMBot/plugins/chat_cleaner.py b/EMBot/plugins/chat_cleaner.py deleted file mode 100644 index a563c14..0000000 --- a/EMBot/plugins/chat_cleaner.py +++ /dev/null @@ -1,93 +0,0 @@ -from telethon import events, Button -from telethon.errors import ChatAdminRequiredError, UserAdminInvalidError -from telethon.tl.functions.channels import EditBannedRequest -from telethon.tl.types import ChannelParticipantsAdmins, ChatBannedRights -from EMBot import Evil -from EMBot.status import * - - -CLEANER_HELP = """ -**✘ This is A Module To Remove Deleted Accounts From Your Groups!** - -‣ `?zombies` - To find zombies accounts in your chat. -‣ `?zombies clean` - To remove the deleted accounts from your chat. -""" - - -BANNED_RIGHTS = ChatBannedRights( - until_date=None, - view_messages=True, - send_messages=True, - send_media=True, - send_stickers=True, - send_gifs=True, - send_games=True, - send_inline=True, - embed_links=True, -) - -UNBAN_RIGHTS = ChatBannedRights( - until_date=None, - send_messages=None, - send_media=None, - send_stickers=None, - send_gifs=None, - send_games=None, - send_inline=None, - embed_links=None, -) - - -@Evil.on(events.NewMessage(pattern="^[!?/]zombies ?(.*)")) -@is_admin -async def clean(event, perm): - if not perm.ban_users: - await event.reply("You don't have enough rights") - return - input_str = event.pattern_match.group(1) - stats = "Group is clean." - deleted = 0 - - if "clean" not in input_str: - zombies = await event.respond("Searching For Zombies/Deleted Accounts...") - async for user in event.client.iter_participants(event.chat_id): - - if user.deleted: - deleted += 1 - if deleted > 0: - stats = f"Found **{deleted}** Zombies In This Group.\ - \nClean Them By Using - `/zombies clean`" - await zombies.edit(stats) - return - - cleaning_zombies = await event.respond("Cleaning Zombies/Deleted Accounts...") - del_u = 0 - del_a = 0 - - async for user in event.client.iter_participants(event.chat_id): - if user.deleted: - try: - await event.client( - EditBannedRequest(event.chat_id, user.id, BANNED_RIGHTS) - ) - except ChatAdminRequiredError: - await cleaning_zombies.edit("I Don't Have Ban Rights In This Group.") - return - except UserAdminInvalidError: - del_u -= 1 - del_a += 1 - await event.client(EditBannedRequest(event.chat_id, user.id, UNBAN_RIGHTS)) - del_u += 1 - - if del_u > 0: - stats = f"Cleaned `{del_u}` Zombies" - - if del_a > 0: - stats = f"Cleaned `{del_u}` Zombies \ - \n`{del_a}` Zombie Admin Accounts Are Not Removed!" - - await cleaning_zombies.edit(stats) - -@Evil.on(events.callbackquery.CallbackQuery(data="zombies")) -async def _(event): - await event.edit(CLEANER_HELP, buttons=[[Button.inline("« Bᴀᴄᴋ", data="help")]]) diff --git a/EMBot/plugins/extras.py b/EMBot/plugins/extras.py deleted file mode 100644 index a78ffed..0000000 --- a/EMBot/plugins/extras.py +++ /dev/null @@ -1,38 +0,0 @@ -from EMBot import Evil -from telethon import events, Button -from EMBot.status import * -from datetime import timedelta -import os -import requests - -@Evil.on(events.NewMessage(pattern="[!?/]spem")) -@is_admin -async def spam(event, perm): - if not perm.ban_users: - await event.reply("You are missing the following rights to use this command:CanBanUsers!") - return - msg = await event.get_reply_message() - if not msg: - await event.reply("That's not a user!") - return - ree = (await event.get_reply_message()).sender_id - check = await Evil.get_permissions(event.chat_id, ree) - - if check.is_admin: - await event.reply("He can be a spammer, but he is also an admin!") - return - elif check.is_creator: - await event.delete() - await event.reply("He is chat creator") - return - elif msg.sender.bot: - await event.delete() - await event.reply("Its a bot!") - return - - re = (await event.get_reply_message()).sender_id - user = await Evil.get_entity(ree) - await event.delete() - await Evil.edit_permissions(event.chat_id, re, timedelta(hours=1), send_messages=False) - await Evil.send_message(event.chat_id, f"[{user.first_name}](tg://user?id={re}) it looks like you are spamming the chat!\nAnd so has been muted for 1 hour") - diff --git a/EMBot/plugins/greetings.py b/EMBot/plugins/greetings.py deleted file mode 100644 index 6a1eb86..0000000 --- a/EMBot/plugins/greetings.py +++ /dev/null @@ -1,30 +0,0 @@ -from EMBot import Evil -from telethon import events, Button -from telethon.tl.functions.users import GetFullUserRequest -from datetime import timedelta -from Configs import Config - -@Evil.on(events.CallbackQuery(pattern=r"check-bot-(\d+)")) -async def check(event): - - user_id = int(event.pattern_match.group(1)) - chat_id = event.chat_id - if not event.sender_id == user_id: - await event.answer("You can already speak freely!", alert=True) - return - if event.sender_id == user_id: - await Evil.edit_permissions(chat_id, event.sender_id, send_messages=True) - await event.answer("You are succesfully unmuted!") - await event.edit(Config.WELCOME_TEXT, buttons=[ - [Button.url("Chat Rules!", "t.me/{}?start=rules".format(Config.BOT_US))] - ], parse_mode="HTML", link_preview=False) - - -@Evil.on(events.ChatAction) -async def join(event): - - if event.user_joined: - await Evil.edit_permissions(event.chat_id, event.user_id, send_messages=False) - await event.reply(Config.WELCOME_TEXT, parse_mode="HTML", link_preview=False, buttons=[ - [Button.inline("Click Here to unmute yourslef!", data=f"check-bot-{event.user_id}")] - ]) diff --git a/EMBot/plugins/help.py b/EMBot/plugins/help.py deleted file mode 100644 index c48fa4c..0000000 --- a/EMBot/plugins/help.py +++ /dev/null @@ -1,40 +0,0 @@ -from telethon import events, Button -from EMBot import Evil -from Configs import Config - -btn =[ - [Button.inline("Admin", data="admin"), Button.inline("Bans", data="bans")], - [Button.inline("Pins", data="pins"), Button.inline("Pugres", data="purges")], - [Button.inline("Locks", data="locks"), Button.inline("Misc", data="misc")], - [Button.inline("Chat Cleaner", data="zombies")]] - -HELP_TEXT = """ -**Heya {} help menu here:** - -/start - To Start Me ;) -/help - To Get Available Help Menu - -__Report Bugs At--->__ **@TgxSupportChat** -All cmd can be used with ! or ? or /. -""".format(Config.BOT_US) - - -@Evil.on(events.NewMessage(pattern="[!?/]help")) -async def help(event): - - if event.is_group: - await event.reply("Contact me in PM to get available help menu!", buttons=[ - [Button.url("Help And Commands!", "T.me/{}?start=help".format(Config.BOT_US))]]) - return - - await event.reply(HELP_TEXT, buttons=btn) - -@Evil.on(events.NewMessage(pattern="^/start help")) -async def _(event): - - await event.reply(HELP_TEXT, buttons=btn) - -@Evil.on(events.callbackquery.CallbackQuery(data="help")) -async def _(event): - - await event.edit(HELP_TEXT, buttons=btn) diff --git a/EMBot/plugins/locks.py b/EMBot/plugins/locks.py deleted file mode 100644 index 786423c..0000000 --- a/EMBot/plugins/locks.py +++ /dev/null @@ -1,137 +0,0 @@ -from telethon import events, Button, types -from EMBot import Evil -from EMBot.status import * - -LOCKS_HELP = """ -**✘ Do stickers annoy you? or want to avoid people sharing links? or pictures? You're in the right place!** - -‣ `?lock` - To lock a module in the chat. -‣ `?unlock` - To unlock a module in the chat. -‣ `?locktypes` - To get a list of modules can be locked -""" - -@Evil.on(events.NewMessage(pattern="^[!?/]lock ?(.*)")) -@is_admin -async def lock(event, perm): - if not perm.change_info: - await event.reply("You are missing the following rights to use this command:CanChangeInfo") - return - input_str = event.pattern_match.group(1) - if not input_str: - await event.reply("You haven't specified anything to lock.") - return - if "text" in input_str: - await Evil.edit_permissions(event.chat_id, send_messages=False) - await event.reply("Locked `text`.") - elif "media" in input_str: - await Evil.edit_permissions(event.chat_id, send_media=False) - await event.reply("Locked `media`.") - elif "sticker" in input_str: - await Evil.edit_permissions(event.chat_id, send_stickers=False) - await event.reply("Locked `sticker`.") - elif "gifs" in input_str: - await Evil.edit_permissions(event.chat_id, send_gifs=False) - await event.reply("Locked `gifs`.") - elif "forward" in input_str: - await Evil.edit_permissions(event.chat_id, forwards=False) - await event.reply("Locked `forward`.") - elif "games" in input_str: - await Evil.edit_permissions(event.chat_id, send_games=False) - await event.reply("Locked `games`.") - elif "inline" in input_str: - await Evil.edit_permissions(event.chat_id, send_inline=False) - await event.reply("Locked `inline`.") - elif "polls" in input_str: - await Evil.edit_permissions(event.chat_id, send_polls=False) - await event.reply("Locked `polls`.") - elif "preview" in input_str: - await Evil.edit_permissions(event.chat_id, embed_link_previews=False) - await event.reply("Locked `preview`.") - elif "all" in input_str: - await Evil.edit_permissions(event.chat_id, - send_messages=False, - send_media=False, - send_stickers=False, - send_gifs=False, - send_games=False, - send_inline=False, - send_polls=False, - embed_link_previews=False) - await event.reply("Locked `all`.") - - -@Evil.on(events.NewMessage(pattern="^[!?/]unlock ?(.*)")) -@is_admin -async def unlock(event, perm): - if not perm.change_info: - await event.reply("You are missing the following rights to use this command:CanChangeInfo") - return - input_str = event.pattern_match.group(1) - if not input_str: - await event.reply("You haven't specified anything to unlock.") - return - if "text" in input_str: - await Evil.edit_permissions(event.chat_id, send_messages=True) - await event.reply("Unlocked `text`.") - elif "media" in input_str: - await Evil.edit_permissions(event.chat_id, send_media=True) - await event.reply("Unlocked `media`.") - elif "sticker" in input_str: - await Evil.edit_permissions(event.chat_id, send_stickers=True) - await event.reply("Unlocked `sticker`.") - elif "gifs" in input_str: - await Evil.edit_permissions(event.chat_id, send_gifs=True) - await event.reply("Unlocked `gifs`.") - elif "forward" in input_str: - await Evil.edit_permissions(event.chat_id, forwards=True) - await event.reply("Unlocked `forward`.") - elif "games" in input_str: - await Evil.edit_permissions(event.chat_id, send_games=True) - await event.reply("Unlocked `games`.") - elif "inline" in input_str: - await Evil.edit_permissions(event.chat_id, send_inline=True) - await event.reply("Unlocked `inline`.") - elif "polls" in input_str: - await Evil.edit_permissions(event.chat_id, send_polls=True) - await event.reply("Unlocked `polls`.") - elif "preview" in input_str: - await Evil.edit_permissions(event.chat_id, embed_link_previews=True) - await event.reply("Unlocked `preview`.") - elif "all" in input_str: - await Evil.edit_permissions(event.chat_id, - send_messages=True, - send_media=True, - send_stickers=True, - send_gifs=True, - send_games=True, - send_inline=True, - send_polls=True, - embed_link_previews=True) - await event.reply("Unlocked `all`.") - - -@Evil.on(events.NewMessage(pattern="^[!?/]locktypes")) -async def locktypes(event): - TEXT = """ -**Locks:** - -‣ Text -‣ Media -‣ Sticker -‣ Gifs -‣ Videos -‣ Contacts -‣ Games -‣ Inline -‣ all -""" - await event.reply(TEXT) - -@Evil.on(events.callbackquery.CallbackQuery(data="locks")) -async def _(event): - - await event.edit(LOCKS_HELP, buttons=[[Button.inline("« Bᴀᴄᴋ", data="help")]]) - - - - diff --git a/EMBot/plugins/misc.py b/EMBot/plugins/misc.py deleted file mode 100644 index ad29f08..0000000 --- a/EMBot/plugins/misc.py +++ /dev/null @@ -1,74 +0,0 @@ -from telethon import events, Button, types -from EMBot import Evil -from EMBot.status import * -from telethon.tl.types import ChannelParticipantsAdmins -from datetime import timedelta -from telethon.tl.functions.photos import GetUserPhotosRequest as P -from telethon.tl.functions.users import GetFullUserRequest - - -MISC_HELP = """ -**✘ An "odds and ends" module for small, simple commands which don't really fit anywhere.** - -‣ `?id` - To get current chat id or replied user id. -‣ `?info` - To get info of a user. -""" - -@Evil.on(events.NewMessage(pattern="^[!?/]id")) -async def id(event): - - if event.is_private: - await event.reply(f"Your id is `{event.sender_id}`.") - return - - ID = """ -**Chat-ID:** `{}` -**User-ID:** `{}` -""" - - msg = await event.get_reply_message() - if not msg: - await event.reply(ID.format(event.chat_id, event.sender_id)) - return - - await event.reply(f"User {msg.sender.first_name} id is `{msg.sender_id}`.") - -@Evil.on(events.NewMessage(pattern="^[!?/]info ?(.*)")) -async def info(event): - - sed = await Evil(P(user_id=event.sender_id, offset=42, max_id=0, limit=80)) - hn = await Evil(GetFullUserRequest(event.sender_id)) - text = "**✘ UserInfo:**\n\n" - text += "**» Fɪʀsᴛ Nᴀᴍᴇ:** {}\n" - text += "**» Lᴀsᴛ Nᴀᴍᴇ:** {}\n" - text += "**» Usᴇʀ-ID:** `{}`\n" - text += "**» Usᴇʀɴᴀᴍᴇ:** @{}\n" - text += "**» Nᴏ. Oғ Pғᴘs:** `{}`\n" - text += "**» Usᴇʀ-Bɪᴏ:** `{}`\n" - text += "**» PᴇʀᴍᴀLɪɴᴋ:** [Link](tg://user?id={})\n" - - input_str = event.pattern_match.group(1) - if not input_str: - await Evil.send_message(event.chat_id, text.format(hn.user.first_name, hn.user.last_name, event.sender_id, event.sender.username, sed.count, hn.about, event.sender_id)) - return - - input_str = event.pattern_match.group(1) - ha = await Evil.get_entity(input_str) - hu = await Evil(GetFullUserRequest(id=input_str)) - sedd = await Evil(P(user_id=input_str, offset=42, max_id=0, limit=80)) - - textn = "**✘ UserInfo:**\n\n" - textn += "**» Fɪʀsᴛ Nᴀᴍᴇ:** {}\n" - textn += "**» Lᴀsᴛ Nᴀᴍᴇ:** {}\n" - textn += "**» Usᴇʀ-ID:** `{}`\n" - textn += "**» Usᴇʀɴᴀᴍᴇ:** @{}\n" - textn += "**» Nᴏ. Oғ Pғᴘs:** `{}`\n" - textn += "**» Usᴇʀ-Bɪᴏ:** `{}`\n" - textn += "**» PᴇʀᴍᴀLɪɴᴋ:** [Link](tg://user?id={})\n" - - await event.reply(textn.format(ha.first_name, ha.last_name, ha.id, ha.username, sedd.count, hu.about, ha.id)) - - -@Evil.on(events.callbackquery.CallbackQuery(data="misc")) -async def _(event): - await event.edit(MISC_HELP, buttons=[[Button.inline("« Bᴀᴄᴋ", data="help")]]) diff --git a/EMBot/plugins/pins.py b/EMBot/plugins/pins.py deleted file mode 100644 index 10ee929..0000000 --- a/EMBot/plugins/pins.py +++ /dev/null @@ -1,104 +0,0 @@ -from telethon import events, Button, types -from EMBot import Evil -from EMBot.status import * - -PINS_TEXT = """ -**✘ All the pin related commands can be found here; keep your chat up to date on the latest news with a simple pinned message!** - -‣ `?pin` - To pinned a reply msg. -‣ `?unpin` - To Unpin the latest pinned msg. -‣ `?unpinall` - To unpinall all pinned msgs at once. -‣ `?pinned` - To get current pinned msg. - -**➥Note:** __Add `notify` after ?pin to notify all chat members.__ -""" - -@Evil.on(events.NewMessage(pattern="^[?!/]pinned")) -async def get_pinned(event): - chat_id = (str(event.chat_id)).replace("-100", "") - - Ok = await Evil.get_messages(event.chat_id, ids=types.InputMessagePinned()) - tem = f"The pinned message in {event.chat.title} is here." - await event.reply(tem, parse_mode="html", link_preview=False) - -@Evil.on(events.NewMessage(pattern="^[!?/]pin ?(.*)")) -@is_admin -async def pin(event, perm): - if not perm.pin_messages: - await event.reply("You are missing the following rights to use this command:CanPinMsgs.") - return - msg = await event.get_reply_message() - if not msg: - await event.reply("Reply to a msg to pin it!") - return - input_str = event.pattern_match.group(1) - if "notify" in input_str: - await Evil.pin_message(event.chat_id, msg, notify=True) - return - await Evil.pin_message(event.chat_id, msg) - -@Evil.on(events.NewMessage(pattern="^[!?/]unpin ?(.*)")) -@is_admin -async def unpin(event, perm): - if not perm.pin_messages: - await event.reply("You are missing the following rights to use this command:CanPinMsgs.") - return - chat_id = (str(event.chat_id)).replace("-100", "") - ok = await Evil.get_messages(event.chat_id, ids=types.InputMessagePinned()) - await Evil.unpin_message(event.chat_id, ok) - await event.reply(f"Successfully unpinned [this](t.me/{event.chat.username}/{ok.id}) message.", link_preview=False) - -@Evil.on(events.NewMessage(pattern="^[!?/]permapin")) -@is_admin -async def permapin(event, perm): - if not perm.pin_messages: - await event.reply("You are missing the following rights to use this command:CanPinMsgs.") - return - msg = await event.get_reply_message() - if not msg: - await event.reply("Reply to a msg to permapin it.") - return - hn = await Evil.send_message(event.chat_id, msg.message) - await Evil.pin_message(event.chat_id, hn, notify=True) - - -@Evil.on(events.NewMessage(pattern="^[!?/]unpinall")) -async def unpinall(event, perm): - if not perm.pin_messages: - await event.reply("You are missing the following rights to use this command:CanPinMsgs!") - return - UNPINALL = """ -Are you sure you want to -unpin all msgs? -This action can't be undone! -""" - - await Evil.send_message(event.chat_id, UNPINALL, buttons=[ - [Button.inline("Confirm", data="unpin")], - [Button.inline("Cancel", data="cancel")]]) - -@Evil.on(events.callbackquery.CallbackQuery(data="unpin")) -async def confirm(event): - check = await event.client.get_permissions(event.chat_id, event.sender_id) - if check.is_creator: - await Evil.unpin_message(event.chat_id) - await event.edit("Unpinned All Msgs!") - return - - await event.answer("Group Creator Required!") - -@Evil.on(events.callbackquery.CallbackQuery(data="cancel")) -async def cancel(event): - - check = await event.client.get_permissions(event.chat_id, event.sender_id) - if check.is_creator: - await event.edit("Unpinning of all msgs has been cancelled!") - return - - await event.answer("Group Creator Required!") - - -@Evil.on(events.callbackquery.CallbackQuery(data="pins")) -async def _(event): - - await event.edit(PINS_TEXT, buttons=[[Button.inline("« Bᴀᴄᴋ", data="help")]]) diff --git a/EMBot/plugins/purges.py b/EMBot/plugins/purges.py deleted file mode 100644 index f154c83..0000000 --- a/EMBot/plugins/purges.py +++ /dev/null @@ -1,83 +0,0 @@ -from telethon import events, Button -from EMBot import Evil -from EMBot.status import * -import time - -PR_HELP = """ -**✘ Need to delete lots of messages? That's what purges are for!** - -‣ `?purge` - Reply to a msg to delete msgs from there. -‣ `?spurge` - Same as purge, but doesnt send the final confirmation message. -‣ `?del` - Deletes the replied to message. -""" - -@Evil.on(events.NewMessage(pattern=r"^[?!]purge")) -@is_admin -async def purge_messages(event, perm): - if not perm.delete_messages: - await event.reply("You are missing the following rights to use this command:CanDelMsgs!") - return - start = time.perf_counter() - reply_msg = await event.get_reply_message() - if not reply_msg: - await event.reply( - "Reply to a message to select where to start purging from.") - return - messages = [] - message_id = reply_msg.id - delete_to = event.message.id - - messages.append(event.reply_to_msg_id) - for msg_id in range(message_id, delete_to + 1): - messages.append(msg_id) - if len(messages) == 100: - await event.client.delete_messages(event.chat_id, messages) - messages = [] - - await event.client.delete_messages(event.chat_id, messages) - time_ = time.perf_counter() - start - text = f"Purged in {time_:0.2f} Second(s)" - await event.respond(text, parse_mode='markdown') - -@Evil.on(events.NewMessage(pattern="^[!?/]spurge")) -@is_admin -async def spurge(event, perm): - if not perm.delete_messages: - await event.reply("You are missing the following rights to use this command:CanDelMsgs!") - return - start = time.perf_counter() - reply_msg = await event.get_reply_message() - if not reply_msg: - await event.reply( - "Reply to a message to select where to start purging from.") - return - messages = [] - message_id = reply_msg.id - delete_to = event.message.id - - messages.append(event.reply_to_msg_id) - for msg_id in range(message_id, delete_to + 1): - messages.append(msg_id) - if len(messages) == 100: - await event.client.delete_messages(event.chat_id, messages) - messages = [] - - await event.client.delete_messages(event.chat_id, messages) - -@Evil.on(events.NewMessage(pattern="^[!?/]del$")) -@is_admin -async def delete_messages(event, perm): - if not perm.delete_messages: - await event.reply("You are missing the following rights to use this command:CanDelMsgs!") - return - msg = await event.get_reply_message() - if not msg: - await event.reply("Reply to a msg to delete it.") - return - - await msg.delete() - await event.delete() - -@Evil.on(events.callbackquery.CallbackQuery(data="purges")) -async def _(event): - await event.edit(PR_HELP, buttons=[[Button.inline("« Bᴀᴄᴋ", data="help")]]) diff --git a/EMBot/plugins/rules.py b/EMBot/plugins/rules.py deleted file mode 100644 index 7eebcdb..0000000 --- a/EMBot/plugins/rules.py +++ /dev/null @@ -1,44 +0,0 @@ -from EMBot import Evil -from telethon import events, Button -from Configs import Config - -RULES = Config.RULES - -@Evil.on(events.NewMessage(pattern="^[!?/]rules")) -async def rules(event): - - msg = await event.get_reply_message() - if not msg and event.is_group: - await event.delete() - await event.respond("Please read the rules before chatting here!", buttons=[ - [Button.url("Chat Rules", "t.me/{}?start=rules".format(Config.BOT_US)) -]]) - return - - re = (await event.get_reply_message()).id - await event.delete() - await Evil.send_message(event.chat_id, "Please read the rules before chatting here!", buttons=[ - [Button.url("Chat Rules", "t.me/{}?start=rules".format(Config.BOT_US)) - ]], reply_to=re) - return - - await event.reply(RULES) - -@Evil.on(events.NewMessage(pattern="^/start rules")) -async def rules(event): - - if event.is_group: - await event.reply("Please read the rules before chatting here!", buttons=[ - [Button.url("Chat Rules", "t.me/{}?start=rules".format(Config.BOT_US)) - ]]) - return - - await event.reply(RULES) - -@Evil.on(events.callbackquery.CallbackQuery(data="rules")) -async def _(event): - - await event.edit(RULES, buttons=[ - [Button.inline("« Bᴀᴄᴋ", data="start")] - ]) - diff --git a/EMBot/plugins/start.py b/EMBot/plugins/start.py deleted file mode 100644 index 12c8dbf..0000000 --- a/EMBot/plugins/start.py +++ /dev/null @@ -1,22 +0,0 @@ -from EMBot import Evil -from telethon import events, Button - -PM_START_TEXT = """ -**Hɪ {}** -Mʏ Sᴇʟғ Gʀᴏᴜᴘ Mᴀɴᴀɢᴇʀ Bʙᴛ Wɪᴛʜ Mᴀʙʏ Oᴛʜᴇʀ Mɪᴅᴜᴋᴇs Tʜᴀᴛ Wɪʟʟ Mᴀᴋᴇ Yᴏᴜʀ TG Lɪғᴇ Eᴀsʏ As Fᴜ*ᴋ. - -**Cʟɪᴄᴋ Tʜᴇ Hᴇʟᴘ Bᴜᴛᴛᴏɴ Tᴏ Sᴇᴇ Wʜᴀʀ I Cᴀɴ Fᴏ** -""" - -@Evil.on(events.NewMessage(pattern="^[?!/]start$")) -async def start(event): - - if event.is_private: - await event.reply(PM_START_TEXT.format(event.sender.first_name), buttons=[ - [Button.inline("Help And Command 👨‍🔧", data="help")], - [Button.inline("Donate ❤️ ", data= "donate")]]) - return - - if event.is_group: - await event.reply("**I am alive sir!**") - return diff --git a/EMBot/status.py b/EMBot/status.py deleted file mode 100644 index b305483..0000000 --- a/EMBot/status.py +++ /dev/null @@ -1,18 +0,0 @@ -import functools - -def is_admin(func): - @functools.wraps(func) - async def a_c(event): - is_admin = False - if not event.is_private: - try: - _s = await event.client.get_permissions(event.chat_id, event.sender_id) - if _s.is_admin: - is_admin = True - except: - is_admin = False - if is_admin: - await func(event, _s) - else: - await event.reply("Only Admins can execute this command!") - return a_c diff --git a/EMBot/utils.py b/EMBot/utils.py deleted file mode 100644 index 658f780..0000000 --- a/EMBot/utils.py +++ /dev/null @@ -1,15 +0,0 @@ -import sys -import logging -import importlib -from pathlib import Path - -def load_plugins(plugin_name): - path = Path(f"EMBot/plugins/{plugin_name}.py") - name = "EMBot.plugins.{}".format(plugin_name) - spec = importlib.util.spec_from_file_location(name, path) - load = importlib.util.module_from_spec(spec) - load.logger = logging.getLogger(plugin_name) - spec.loader.exec_module(load) - sys.modules["EMBot.plugins." + plugin_name] = load - print("Bot has Started " + plugin_name) -