From 983f3b50ca1859a3b3a3aeaca8bc63d5c487018e Mon Sep 17 00:00:00 2001 From: "sourcery-ai[bot]" <58596630+sourcery-ai[bot]@users.noreply.github.com> Date: Thu, 8 Dec 2022 12:11:49 +0700 Subject: [PATCH] Sourcery refactored master branch (#3) * 'Refactored by Sourcery' * reformating: code Co-authored-by: Sourcery AI <> Co-authored-by: yasirarism --- database/afk_db.py | 4 +- database/filters_db.py | 8 +- database/karma_db.py | 4 +- database/notes_db.py | 12 +- database/users_chats_db.py | 8 +- database/warn_db.py | 4 +- misskaty/__init__.py | 2 +- misskaty/core/decorator/permissions.py | 12 +- misskaty/helper/functions.py | 7 +- misskaty/helper/misc.py | 12 +- misskaty/helper/tools.py | 2 +- misskaty/plugins/__init__.py | 20 +- misskaty/plugins/admin.py | 119 +++-------- misskaty/plugins/afk.py | 67 +++--- misskaty/plugins/auto_approve.py | 24 +-- misskaty/plugins/auto_forwarder.py | 13 +- misskaty/plugins/banned.py | 8 +- misskaty/plugins/broadcast.py | 8 +- misskaty/plugins/bypass.py | 19 +- misskaty/plugins/chatbot.py | 10 +- misskaty/plugins/code_tester.py | 8 +- misskaty/plugins/detect_afk.py | 4 +- misskaty/plugins/dev.py | 18 +- misskaty/plugins/download_upload.py | 45 +--- misskaty/plugins/filter_request.py | 85 ++------ misskaty/plugins/filters.py | 15 +- misskaty/plugins/genss.py | 24 +-- misskaty/plugins/grup_tools.py | 104 +++------- misskaty/plugins/inkick_user.py | 85 ++------ misskaty/plugins/inline_search.py | 151 +++----------- misskaty/plugins/karma.py | 38 +--- misskaty/plugins/mediainfo.py | 28 +-- misskaty/plugins/memify.py | 12 +- misskaty/plugins/misc_tools.py | 273 +++++-------------------- misskaty/plugins/nightmode.py | 16 +- misskaty/plugins/notes.py | 14 +- misskaty/plugins/ocr.py | 4 +- misskaty/plugins/paste.py | 40 +--- misskaty/plugins/ping.py | 8 +- misskaty/plugins/quotly.py | 65 +----- misskaty/plugins/scrapwebsite.py | 136 +++--------- misskaty/plugins/sed.py | 4 +- misskaty/plugins/sub_extractor.py | 22 +- misskaty/plugins/ubot_plugin.py | 37 +--- misskaty/plugins/ytdl_download.py | 73 ++----- misskaty/vars.py | 8 +- utils.py | 15 +- 47 files changed, 389 insertions(+), 1306 deletions(-) diff --git a/database/afk_db.py b/database/afk_db.py index c44cc9f7..043ef57c 100644 --- a/database/afk_db.py +++ b/database/afk_db.py @@ -47,9 +47,7 @@ async def is_afk(user_id: int) -> bool: async def add_afk(user_id: int, mode): - await usersdb.update_one( - {"user_id": user_id}, {"$set": {"reason": mode}}, upsert=True - ) + await usersdb.update_one({"user_id": user_id}, {"$set": {"reason": mode}}, upsert=True) async def remove_afk(user_id: int): diff --git a/database/filters_db.py b/database/filters_db.py index 6ce2bbfa..ed52091d 100644 --- a/database/filters_db.py +++ b/database/filters_db.py @@ -6,9 +6,7 @@ filtersdb = dbname.filters async def _get_filters(chat_id: int) -> Dict[str, int]: _filters = await filtersdb.find_one({"chat_id": chat_id}) - if not _filters: - return {} - return _filters["filters"] + return _filters["filters"] if _filters else {} async def delete_filter(chat_id: int, name: str) -> bool: @@ -28,9 +26,7 @@ async def delete_filter(chat_id: int, name: str) -> bool: async def get_filter(chat_id: int, name: str) -> Union[bool, dict]: name = name.lower().strip() _filters = await _get_filters(chat_id) - if name in _filters: - return _filters[name] - return False + return _filters[name] if name in _filters else False async def get_filters_names(chat_id: int) -> List[str]: diff --git a/database/karma_db.py b/database/karma_db.py index 20b71c65..f4516683 100644 --- a/database/karma_db.py +++ b/database/karma_db.py @@ -42,9 +42,7 @@ async def update_karma(chat_id: int, name: str, karma: dict): name = name.lower().strip() karmas = await get_karmas(chat_id) karmas[name] = karma - await karmadb.update_one( - {"chat_id": chat_id}, {"$set": {"karma": karmas}}, upsert=True - ) + await karmadb.update_one({"chat_id": chat_id}, {"$set": {"karma": karmas}}, upsert=True) async def is_karma_on(chat_id: int) -> bool: diff --git a/database/notes_db.py b/database/notes_db.py index 412356c1..31c9a7f0 100644 --- a/database/notes_db.py +++ b/database/notes_db.py @@ -6,9 +6,7 @@ notesdb = dbname.notes async def _get_notes(chat_id: int) -> Dict[str, int]: _notes = await notesdb.find_one({"chat_id": chat_id}) - if not _notes: - return {} - return _notes["notes"] + return _notes["notes"] if _notes else {} async def delete_note(chat_id: int, name: str) -> bool: @@ -28,9 +26,7 @@ async def delete_note(chat_id: int, name: str) -> bool: async def get_note(chat_id: int, name: str) -> Union[bool, dict]: name = name.lower().strip() _notes = await _get_notes(chat_id) - if name in _notes: - return _notes[name] - return False + return _notes[name] if name in _notes else False async def get_note_names(chat_id: int) -> List[str]: @@ -45,6 +41,4 @@ async def save_note(chat_id: int, name: str, note: dict): _notes = await _get_notes(chat_id) _notes[name] = note - await notesdb.update_one( - {"chat_id": chat_id}, {"$set": {"notes": _notes}}, upsert=True - ) + await notesdb.update_one({"chat_id": chat_id}, {"$set": {"notes": _notes}}, upsert=True) diff --git a/database/users_chats_db.py b/database/users_chats_db.py index 03474408..f7c4b03b 100644 --- a/database/users_chats_db.py +++ b/database/users_chats_db.py @@ -79,18 +79,14 @@ class Database: is_disabled=False, reason="", ) - await self.grp.update_one( - {"id": int(id)}, {"$set": {"chat_status": chat_status}} - ) + await self.grp.update_one({"id": int(id)}, {"$set": {"chat_status": chat_status}}) async def disable_chat(self, chat, reason="No Reason"): chat_status = dict( is_disabled=True, reason=reason, ) - await self.grp.update_one( - {"id": int(chat)}, {"$set": {"chat_status": chat_status}} - ) + await self.grp.update_one({"id": int(chat)}, {"$set": {"chat_status": chat_status}}) async def total_chat_count(self): return await self.grp.count_documents({}) diff --git a/database/warn_db.py b/database/warn_db.py index 06ce9086..c1734a90 100644 --- a/database/warn_db.py +++ b/database/warn_db.py @@ -31,9 +31,7 @@ async def add_warn(chat_id: int, name: str, warn: dict): warns = await get_warns(chat_id) warns[name] = warn - await warnsdb.update_one( - {"chat_id": chat_id}, {"$set": {"warns": warns}}, upsert=True - ) + await warnsdb.update_one({"chat_id": chat_id}, {"$set": {"warns": warns}}, upsert=True) async def remove_warns(chat_id: int, name: str) -> bool: diff --git a/misskaty/__init__.py b/misskaty/__init__.py index f62120a5..2b613c36 100644 --- a/misskaty/__init__.py +++ b/misskaty/__init__.py @@ -40,4 +40,4 @@ BOT_NAME = bot.first_name BOT_USERNAME = bot.username UBOT_ID = ubot.id UBOT_NAME = ubot.first_name -UBOT_USERNAME = ubot.username \ No newline at end of file +UBOT_USERNAME = ubot.username diff --git a/misskaty/core/decorator/permissions.py b/misskaty/core/decorator/permissions.py index a6964e37..ed529d7b 100644 --- a/misskaty/core/decorator/permissions.py +++ b/misskaty/core/decorator/permissions.py @@ -49,12 +49,7 @@ async def list_admins(chat_id: int): admins_in_chat[chat_id] = { "last_updated_at": time(), - "data": [ - member.user.id - async for member in app.get_chat_members( - chat_id, filter=enums.ChatMembersFilter.ADMINISTRATORS - ) - ], + "data": [member.user.id async for member in app.get_chat_members(chat_id, filter=enums.ChatMembersFilter.ADMINISTRATORS)], } return admins_in_chat[chat_id]["data"] @@ -76,11 +71,8 @@ async def authorised(func, subFunc2, client, message, *args, **kwargs): async def unauthorised(message: Message, permission, subFunc2): + text = f"You don't have the required permission to perform this action.\n**Permission:** __{permission}__" chatID = message.chat.id - text = ( - "You don't have the required permission to perform this action." - + f"\n**Permission:** __{permission}__" - ) try: await message.reply_text(text) except ChatWriteForbidden: diff --git a/misskaty/helper/functions.py b/misskaty/helper/functions.py index 389c8de3..0a614038 100644 --- a/misskaty/helper/functions.py +++ b/misskaty/helper/functions.py @@ -113,11 +113,8 @@ def extract_text_and_keyb(ikb, text: str, row_width: int = 2): keyboard = {} try: text = text.strip() - if text.startswith("`"): - text = text[1:] - if text.endswith("`"): - text = text[:-1] - + text = text.removeprefix("`") + text = text.removesuffix("`") text, keyb = text.split("~") keyb = findall(r"\[.+\,.+\]", keyb) diff --git a/misskaty/helper/misc.py b/misskaty/helper/misc.py index e45bf0e6..8c9b2cc0 100644 --- a/misskaty/helper/misc.py +++ b/misskaty/helper/misc.py @@ -63,15 +63,9 @@ def paginate_modules(page_n, module_dict, prefix, chat=None): if len(pairs) > COLUMN_SIZE: pairs = pairs[modulo_page * COLUMN_SIZE : COLUMN_SIZE * (modulo_page + 1)] + [ ( - EqInlineKeyboardButton( - "ā®", callback_data=f"{prefix}_prev({modulo_page})" - ), - EqInlineKeyboardButton( - "Back", callback_data=f"{prefix}_home({modulo_page})" - ), - EqInlineKeyboardButton( - "āÆ", callback_data=f"{prefix}_next({modulo_page})" - ), + EqInlineKeyboardButton("ā®", callback_data=f"{prefix}_prev({modulo_page})"), + EqInlineKeyboardButton("Back", callback_data=f"{prefix}_home({modulo_page})"), + EqInlineKeyboardButton("āÆ", callback_data=f"{prefix}_next({modulo_page})"), ) ] diff --git a/misskaty/helper/tools.py b/misskaty/helper/tools.py index c348b51d..385b664d 100644 --- a/misskaty/helper/tools.py +++ b/misskaty/helper/tools.py @@ -3,7 +3,7 @@ import string import psutil import time import os -from misskaty import botStartTime, user, app, UBOT_NAME, BOT_NAME +from misskaty import BOT_NAME, UBOT_NAME, botStartTime from misskaty.plugins import ALL_MODULES from misskaty.helper.human_read import get_readable_time from misskaty.helper.http import http diff --git a/misskaty/plugins/__init__.py b/misskaty/plugins/__init__.py index 5c112b76..1287b949 100644 --- a/misskaty/plugins/__init__.py +++ b/misskaty/plugins/__init__.py @@ -19,32 +19,18 @@ def __list_all_modules(): # This generates a list of modules in this # folder for the * in __main__ to work. mod_paths = glob.glob(f"{dirname(__file__)}/*.py") - all_modules = [ - basename(f)[:-3] - for f in mod_paths - if isfile(f) - and f.endswith(".py") - and not f.endswith("__init__.py") - and not f.endswith("__main__.py") - ] + all_modules = [basename(f)[:-3] for f in mod_paths if isfile(f) and f.endswith(".py") and not f.endswith("__init__.py") and not f.endswith("__main__.py")] if MOD_LOAD or MOD_NOLOAD: to_load = MOD_LOAD if to_load: - if not all( - any(mod == module_name for module_name in all_modules) - for mod in to_load - ): + if not all(any(mod == module_name for module_name in all_modules) for mod in to_load): sys.exit() else: to_load = all_modules - return ( - [item for item in to_load if item not in MOD_NOLOAD] - if MOD_NOLOAD - else to_load - ) + return [item for item in to_load if item not in MOD_NOLOAD] if MOD_NOLOAD else to_load return all_modules diff --git a/misskaty/plugins/admin.py b/misskaty/plugins/admin.py index 3e3690d5..8af66787 100644 --- a/misskaty/plugins/admin.py +++ b/misskaty/plugins/admin.py @@ -59,12 +59,7 @@ async def admin_cache_func(_, cmu): if cmu.old_chat_member and cmu.old_chat_member.promoted_by: admins_in_chat[cmu.chat.id] = { "last_updated_at": time(), - "data": [ - member.user.id - async for member in app.get_chat_members( - cmu.chat.id, filter=enums.ChatMembersFilter.ADMINISTRATORS - ) - ], + "data": [member.user.id async for member in app.get_chat_members(cmu.chat.id, filter=enums.ChatMembersFilter.ADMINISTRATORS)], } LOGGER.info(f"Updated admin cache for {cmu.chat.id} [{cmu.chat.title}]") @@ -146,9 +141,7 @@ async def kickFunc(_, message): # Ban/DBan/TBan User -@app.on_message( - filters.command(["ban", "dban", "tban"], COMMAND_HANDLER) & ~filters.private -) +@app.on_message(filters.command(["ban", "dban", "tban"], COMMAND_HANDLER) & ~filters.private) @adminsOnly("can_restrict_members") async def banFunc(_, message): user_id, reason = await extract_user_and_reason(message, sender_chat=True) @@ -160,23 +153,14 @@ async def banFunc(_, message): if user_id in SUDO: return await message.reply_text("You Wanna Ban The Elevated One?, RECONSIDER!") if user_id in (await list_admins(message.chat.id)): - return await message.reply_text( - "I can't ban an admin, You know the rules, so do i." - ) + return await message.reply_text("I can't ban an admin, You know the rules, so do i.") try: mention = (await app.get_users(user_id)).mention except IndexError: - mention = ( - message.reply_to_message.sender_chat.title - if message.reply_to_message - else "Anon" - ) + mention = message.reply_to_message.sender_chat.title if message.reply_to_message else "Anon" - msg = ( - f"**Banned User:** {mention}\n" - f"**Banned By:** {message.from_user.mention if message.from_user else 'Anon'}\n" - ) + msg = f"**Banned User:** {mention}\n" f"**Banned By:** {message.from_user.mention if message.from_user else 'Anon'}\n" if message.command[0][0] == "d": await message.reply_to_message.delete() if message.command[0] == "tban": @@ -221,33 +205,25 @@ async def unban_func(_, message): elif len(message.command) == 1 and reply: user = message.reply_to_message.from_user.id else: - return await message.reply_text( - "Provide a username or reply to a user's message to unban." - ) + return await message.reply_text("Provide a username or reply to a user's message to unban.") await message.chat.unban_member(user) umention = (await app.get_users(user)).mention await message.reply_text(f"Unbanned! {umention}") # Ban users listed in a message -@app.on_message( - filters.user(SUDO) & filters.command("listban", COMMAND_HANDLER) & ~filters.private -) +@app.on_message(filters.user(SUDO) & filters.command("listban", COMMAND_HANDLER) & ~filters.private) async def list_ban_(c, message): userid, msglink_reason = await extract_user_and_reason(message) if not userid or not msglink_reason: - return await message.reply_text( - "Provide a userid/username along with message link and reason to list-ban" - ) + return await message.reply_text("Provide a userid/username along with message link and reason to list-ban") if len(msglink_reason.split(" ")) == 1: # message link included with the reason return await message.reply_text("You must provide a reason to list-ban") # seperate messge link from reason lreason = msglink_reason.split() messagelink, reason = lreason[0], " ".join(lreason[1:]) - if not re.search( - r"(https?://)?t(elegram)?\.me/\w+/\d+", messagelink - ): # validate link + if not re.search(r"(https?://)?t(elegram)?\.me/\w+/\d+", messagelink): # validate link return await message.reply_text("Invalid message link provided") if userid == 1507530289: @@ -256,9 +232,7 @@ async def list_ban_(c, message): return await message.reply_text("You Wanna Ban The Elevated One?, RECONSIDER!") splitted = messagelink.split("/") uname, mid = splitted[-2], int(splitted[-1]) - m = await message.reply_text( - "`Banning User from multiple groups. This may take some time`" - ) + m = await message.reply_text("`Banning User from multiple groups. This may take some time`") try: msgtext = (await app.get_messages(uname, mid)).text gusernames = re.findall("@\w+", msgtext) @@ -287,17 +261,11 @@ async def list_ban_(c, message): # Unban users listed in a message -@app.on_message( - filters.user(SUDO) - & filters.command("listunban", COMMAND_HANDLER) - & ~filters.private -) +@app.on_message(filters.user(SUDO) & filters.command("listunban", COMMAND_HANDLER) & ~filters.private) async def list_unban_(c, message): userid, msglink = await extract_user_and_reason(message) if not userid or not msglink: - return await message.reply_text( - "Provide a userid/username along with message link to list-unban" - ) + return await message.reply_text("Provide a userid/username along with message link to list-unban") if not re.search(r"(https?://)?t(elegram)?\.me/\w+/\d+", msglink): # validate link return await message.reply_text("Invalid message link provided") @@ -344,9 +312,7 @@ async def deleteFunc(_, message): # Promote Members -@app.on_message( - filters.command(["promote", "fullpromote"], COMMAND_HANDLER) & ~filters.private -) +@app.on_message(filters.command(["promote", "fullpromote"], COMMAND_HANDLER) & ~filters.private) @adminsOnly("can_promote_members") async def promoteFunc(_, message): user_id = await extract_user(message) @@ -450,15 +416,10 @@ async def mute(_, message): if user_id in SUDO: return await message.reply_text("You wanna mute the elevated one?, RECONSIDER!") if user_id in (await list_admins(message.chat.id)): - return await message.reply_text( - "I can't mute an admin, You know the rules, so do i." - ) + return await message.reply_text("I can't mute an admin, You know the rules, so do i.") mention = (await app.get_users(user_id)).mention keyboard = ikb({"🚨 Unmute 🚨": f"unmute_{user_id}"}) - msg = ( - f"**Muted User:** {mention}\n" - f"**Muted By:** {message.from_user.mention if message.from_user else 'Anon'}\n" - ) + msg = f"**Muted User:** {mention}\n" f"**Muted By:** {message.from_user.mention if message.from_user else 'Anon'}\n" if message.command[0] == "tmute": split = reason.split(None, 1) time_value = split[0] @@ -534,9 +495,7 @@ async def warn_user(_, message): if user_id in SUDO: return await message.reply_text("You Wanna Warn The Elevated One?, RECONSIDER!") if user_id in (await list_admins(chat_id)): - return await message.reply_text( - "I can't warn an admin, You know the rules, so do i." - ) + return await message.reply_text("I can't warn an admin, You know the rules, so do i.") user, warns = await asyncio.gather( app.get_users(user_id), get_warn(chat_id, await int_to_alpha(user_id)), @@ -569,8 +528,7 @@ async def remove_warning(_, cq): permission = "can_restrict_members" if permission not in permissions: return await cq.answer( - "You don't have enough permissions to perform this action.\n" - + f"Permission needed: {permission}", + "You don't have enough permissions to perform this action.\n" + f"Permission needed: {permission}", show_alert=True, ) user_id = cq.data.split("_")[1] @@ -595,8 +553,7 @@ async def unmute_user(_, cq): permission = "can_restrict_members" if permission not in permissions: return await cq.answer( - "You don't have enough permissions to perform this action.\n" - + f"Permission needed: {permission}", + "You don't have enough permissions to perform this action.\n" + f"Permission needed: {permission}", show_alert=True, ) user_id = cq.data.split("_")[1] @@ -615,8 +572,7 @@ async def unban_user(_, cq): permission = "can_restrict_members" if permission not in permissions: return await cq.answer( - "You don't have enough permissions to perform this action.\n" - + f"Permission needed: {permission}", + "You don't have enough permissions to perform this action.\n" + f"Permission needed: {permission}", show_alert=True, ) user_id = cq.data.split("_")[1] @@ -633,9 +589,7 @@ async def unban_user(_, cq): @adminsOnly("can_restrict_members") async def remove_warnings(_, message): if not message.reply_to_message: - return await message.reply_text( - "Reply to a message to remove a user's warnings." - ) + return await message.reply_text("Reply to a message to remove a user's warnings.") user_id = message.reply_to_message.from_user.id mention = message.reply_to_message.from_user.mention chat_id = message.chat.id @@ -666,13 +620,7 @@ async def check_warns(_, message): # Report User in Group -@app.on_message( - ( - filters.command("report", COMMAND_HANDLER) - | filters.command(["admins", "admin"], prefixes="@") - ) - & ~filters.private -) +@app.on_message((filters.command("report", COMMAND_HANDLER) | filters.command(["admins", "admin"], prefixes="@")) & ~filters.private) @capture_err async def report_user(_, message): if not message.reply_to_message: @@ -687,28 +635,13 @@ async def report_user(_, message): linked_chat = (await app.get_chat(message.chat.id)).linked_chat if linked_chat is None: if reply_id in list_of_admins or reply_id == message.chat.id: - return await message.reply_text( - "Do you know that the user you are replying is an admin ?" - ) + return await message.reply_text("Do you know that the user you are replying is an admin ?") - elif ( - reply_id in list_of_admins - or reply_id == message.chat.id - or reply_id == linked_chat.id - ): - return await message.reply_text( - "Do you know that the user you are replying is an admin ?" - ) - user_mention = ( - reply.from_user.mention if reply.from_user else reply.sender_chat.title - ) + elif reply_id in list_of_admins or reply_id == message.chat.id or reply_id == linked_chat.id: + return await message.reply_text("Do you know that the user you are replying is an admin ?") + user_mention = reply.from_user.mention if reply.from_user else reply.sender_chat.title text = f"Reported {user_mention} to admins!" - admin_data = [ - m - async for m in app.get_chat_members( - message.chat.id, filter=enums.ChatMembersFilter.ADMINISTRATORS - ) - ] + admin_data = [m async for m in app.get_chat_members(message.chat.id, filter=enums.ChatMembersFilter.ADMINISTRATORS)] for admin in admin_data: if admin.user.is_bot or admin.user.is_deleted: # return bots or deleted admins diff --git a/misskaty/plugins/afk.py b/misskaty/plugins/afk.py index f30dc064..02d3d7e0 100644 --- a/misskaty/plugins/afk.py +++ b/misskaty/plugins/afk.py @@ -9,7 +9,7 @@ # # Modified plugin by me from https://github.com/TeamYukki/YukkiAFKBot to make compatible with pyrogram v2 -import time, asyncio +import time from misskaty import app from utils import put_cleanmode from pyrogram import filters @@ -18,7 +18,6 @@ from database.afk_db import ( remove_afk, is_afk, add_afk, - is_cleanmode_on, cleanmode_off, cleanmode_on, ) @@ -49,39 +48,41 @@ async def active_afk(_, message): data = reasondb["data"] reasonafk = reasondb["reason"] seenago = get_readable_time2((int(time.time() - timeafk))) - if afktype == "text": + if afktype == "animation": + send = ( + await message.reply_animation( + data, + caption=f"**{message.from_user.first_name}** is back online and was away for {seenago}", + ) + if str(reasonafk) == "None" + else await message.reply_animation( + data, + caption=f"**{message.from_user.first_name}** is back online and was away for {seenago}\n\nReason: `{reasonafk}`", + ) + ) + elif afktype == "photo": + send = ( + await message.reply_photo( + photo=f"downloads/{user_id}.jpg", + caption=f"**{message.from_user.first_name}** is back online and was away for {seenago}", + ) + if str(reasonafk) == "None" + else await message.reply_photo( + photo=f"downloads/{user_id}.jpg", + caption=f"**{message.from_user.first_name}** is back online and was away for {seenago}\n\nReason: `{reasonafk}`", + ) + ) + elif afktype == "text": send = await message.reply_text( f"**{message.from_user.first_name}** is back online and was away for {seenago}", disable_web_page_preview=True, ) - if afktype == "text_reason": + elif afktype == "text_reason": send = await message.reply_text( f"**{message.from_user.first_name}** is back online and was away for {seenago}\n\nReason: `{reasonafk}`", disable_web_page_preview=True, ) - if afktype == "animation": - if str(reasonafk) == "None": - send = await message.reply_animation( - data, - caption=f"**{message.from_user.first_name}** is back online and was away for {seenago}", - ) - else: - send = await message.reply_animation( - data, - caption=f"**{message.from_user.first_name}** is back online and was away for {seenago}\n\nReason: `{reasonafk}`", - ) - if afktype == "photo": - if str(reasonafk) == "None": - send = await message.reply_photo( - photo=f"downloads/{user_id}.jpg", - caption=f"**{message.from_user.first_name}** is back online and was away for {seenago}", - ) - else: - send = await message.reply_photo( - photo=f"downloads/{user_id}.jpg", - caption=f"**{message.from_user.first_name}** is back online and was away for {seenago}\n\nReason: `{reasonafk}`", - ) - except Exception as e: + except Exception: send = await message.reply_text( f"**{message.from_user.first_name}** is back online", disable_web_page_preview=True, @@ -146,9 +147,7 @@ async def active_afk(_, message): "reason": None, } else: - await app.download_media( - message.reply_to_message, file_name=f"{user_id}.jpg" - ) + await app.download_media(message.reply_to_message, file_name=f"{user_id}.jpg") details = { "type": "photo", "time": time.time(), @@ -165,9 +164,7 @@ async def active_afk(_, message): "reason": _reason, } else: - await app.download_media( - message.reply_to_message, file_name=f"{user_id}.jpg" - ) + await app.download_media(message.reply_to_message, file_name=f"{user_id}.jpg") details = { "type": "photo", "time": time.time(), @@ -183,9 +180,7 @@ async def active_afk(_, message): } await add_afk(user_id, details) - send = await message.reply_text( - f"{message.from_user.mention} [{message.from_user.id}] is now AFK!." - ) + send = await message.reply_text(f"{message.from_user.mention} [{message.from_user.id}] is now AFK!.") await put_cleanmode(message.chat.id, send.id) diff --git a/misskaty/plugins/auto_approve.py b/misskaty/plugins/auto_approve.py index 39aab085..a55c5d3f 100644 --- a/misskaty/plugins/auto_approve.py +++ b/misskaty/plugins/auto_approve.py @@ -19,12 +19,8 @@ async def approve_join_chat(c, m): markup = InlineKeyboardMarkup( [ [ - InlineKeyboardButton( - text="Sudah", callback_data=f"approve_{m.chat.id}" - ), - InlineKeyboardButton( - text="Belum", callback_data=f"declined_{m.chat.id}" - ), + InlineKeyboardButton(text="Sudah", callback_data=f"approve_{m.chat.id}"), + InlineKeyboardButton(text="Belum", callback_data=f"declined_{m.chat.id}"), ] ] ) @@ -42,14 +38,10 @@ async def approve_join_chat(c, m): async def approve_chat(c, q): i, chat = q.data.split("_") try: - await q.message.edit( - "Yeayy, selamat kamu bisa bergabung di Channel YMovieZ Reborn..." - ) + await q.message.edit("Yeayy, selamat kamu bisa bergabung di Channel YMovieZ Reborn...") await c.approve_chat_join_request(chat, q.from_user.id) except UserAlreadyParticipant: - await q.message.edit( - "Kamu sudah di acc join grup, jadi ga perlu menekan button." - ) + await q.message.edit("Kamu sudah di acc join grup, jadi ga perlu menekan button.") except Exception as err: await q.message.edit(err) @@ -58,13 +50,9 @@ async def approve_chat(c, q): async def decline_chat(c, q): i, chat = q.data.split("_") try: - await q.message.edit( - "Yahh, kamu ditolak join channel. Biasakan rajin membaca yahhh.." - ) + await q.message.edit("Yahh, kamu ditolak join channel. Biasakan rajin membaca yahhh..") await c.decline_chat_join_request(chat, q.from_user.id) except UserAlreadyParticipant: - await q.message.edit( - "Kamu sudah di acc join grup, jadi ga perlu menekan button." - ) + await q.message.edit("Kamu sudah di acc join grup, jadi ga perlu menekan button.") except Exception as err: await q.message.edit(err) diff --git a/misskaty/plugins/auto_forwarder.py b/misskaty/plugins/auto_forwarder.py index eec5bf7f..dcbc3ff1 100644 --- a/misskaty/plugins/auto_forwarder.py +++ b/misskaty/plugins/auto_forwarder.py @@ -18,9 +18,7 @@ LOGGER = getLogger(__name__) async def FilterMessage(message: Message): - if (message.forward_from or message.forward_from_chat) and ( - "forwarded" not in FORWARD_FILTERS - ): + if (message.forward_from or message.forward_from_chat) and ("forwarded" not in FORWARD_FILTERS): return 400 if (len(FORWARD_FILTERS) == 9) or ( (message.video and ("video" in FORWARD_FILTERS)) @@ -44,10 +42,7 @@ async def CheckBlockedExt(event: Message): if (media is not None) and (media.file_name is not None): _file = media.file_name.rsplit(".", 1) if len(_file) == 2: - return ( - _file[-1].lower() in BLOCKED_EXTENSIONS - or _file[-1].upper() in BLOCKED_EXTENSIONS - ) + return _file[-1].lower() in BLOCKED_EXTENSIONS or _file[-1].upper() in BLOCKED_EXTENSIONS else: return False @@ -81,9 +76,7 @@ async def ForwardMessage(client: user, msg: Message): LOGGER.warning(f"#FloodWait: Stopped Forwarder for {e.x}s!") await ForwardMessage(client, msg) except Exception as err: - LOGGER.warning( - f"#ERROR: {err}\n\nUnable to Forward Message to {str(FORWARD_TO_CHAT_ID[i])}, reason: {err}" - ) + LOGGER.warning(f"#ERROR: {err}\n\nUnable to Forward Message to {str(FORWARD_TO_CHAT_ID[i])}, reason: {err}") except Exception as err: LOGGER.warning(f"#ERROR: {err}") diff --git a/misskaty/plugins/banned.py b/misskaty/plugins/banned.py index 0b368afb..34a09efd 100644 --- a/misskaty/plugins/banned.py +++ b/misskaty/plugins/banned.py @@ -8,9 +8,7 @@ from misskaty import app async def banned_users(_, client, message: Message): - return ( - message.from_user is not None or not message.sender_chat - ) and message.from_user.id in temp.BANNED_USERS + return (message.from_user is not None or not message.sender_chat) and message.from_user.id in temp.BANNED_USERS banned_user = filters.create(banned_users) @@ -26,9 +24,7 @@ disabled_group = filters.create(disabled_chat) @app.on_message(filters.private & banned_user & filters.incoming) async def ban_reply(bot, message): ban = await db.get_ban_status(message.from_user.id) - await message.reply( - f'Sorry Dude, You are Banned to use Me. \nBan Reason: {ban["ban_reason"]}' - ) + await message.reply(f'Sorry Dude, You are Banned to use Me. \nBan Reason: {ban["ban_reason"]}') @app.on_message(filters.group & disabled_group & filters.incoming) diff --git a/misskaty/plugins/broadcast.py b/misskaty/plugins/broadcast.py index ebf0bbba..626f3d77 100644 --- a/misskaty/plugins/broadcast.py +++ b/misskaty/plugins/broadcast.py @@ -35,10 +35,6 @@ async def broadcast(bot, message): done += 1 await asyncio.sleep(2) if not done % 20: - await sts.edit( - f"Broadcast in progress:\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nBlocked: {blocked}\nDeleted: {deleted}" - ) + await sts.edit(f"Broadcast in progress:\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nBlocked: {blocked}\nDeleted: {deleted}") time_taken = datetime.timedelta(seconds=int(time.time() - start_time)) - await sts.edit( - f"Broadcast Completed:\nCompleted in {time_taken} seconds.\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nBlocked: {blocked}\nDeleted: {deleted}" - ) + await sts.edit(f"Broadcast Completed:\nCompleted in {time_taken} seconds.\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nBlocked: {blocked}\nDeleted: {deleted}") diff --git a/misskaty/plugins/bypass.py b/misskaty/plugins/bypass.py index 742bcc43..7195bec6 100644 --- a/misskaty/plugins/bypass.py +++ b/misskaty/plugins/bypass.py @@ -42,10 +42,7 @@ async def pling_bypass(url): res = await http.get(link) json_dic_files = res.json().pop("files") msg = f"\n**Source Link** :\n`{url}`\n**Direct Link :**\n" - msg += "\n".join( - f'**→ [{i["name"]}]({unquote(i["url"])}) ({get_readable_file_size(int(i["size"]))})**' - for i in json_dic_files - ) + msg += "\n".join(f'**→ [{i["name"]}]({unquote(i["url"])}) ({get_readable_file_size(int(i["size"]))})**' for i in json_dic_files) return msg except Exception as e: return e @@ -78,9 +75,7 @@ def wetransfer_bypass(url: str) -> str: r = s.get("https://wetransfer.com/") m = re.search('name="csrf-token" content="([^"]+)"', r.text) s.headers.update({"x-csrf-token": m[1], "x-requested-with": "XMLHttpRequest"}) - r = s.post( - f"https://wetransfer.com/api/v4/transfers/{transfer_id}/download", json=j - ) + r = s.post(f"https://wetransfer.com/api/v4/transfers/{transfer_id}/download", json=j) j = r.json() dl_url = j["direct_link"] @@ -91,11 +86,9 @@ def wetransfer_bypass(url: str) -> str: @capture_err async def bypass(_, message): if len(message.command) == 1: - return await message.reply( - f"Gunakan perintah /{message.command[0]} untuk bypass url" - ) + return await message.reply(f"Gunakan perintah /{message.command[0]} untuk bypass url") url = message.command[1] - host = urllib.parse.urlparse(url).netloc + urllib.parse.urlparse(url).netloc msg = await message.reply("Bypassing URL..", quote=True) mention = f"**Bypasser:** {message.from_user.mention} ({message.from_user.id})" if re.match(r"https?://(store.kde.org|www.pling.com)\/p\/(\d+)", url): @@ -117,8 +110,6 @@ async def bypass(_, message): reply_markup=markup, disable_web_page_preview=True, ) - elif "we.tl" or "wetransfer.com" in host: + else: data = wetransfer_bypass(url) await msg.edit(f"{data}\n\n{mention}") - else: - await msg.edit("Unsupported link..") diff --git a/misskaty/plugins/chatbot.py b/misskaty/plugins/chatbot.py index fff8e301..46f3d660 100644 --- a/misskaty/plugins/chatbot.py +++ b/misskaty/plugins/chatbot.py @@ -7,9 +7,7 @@ from misskaty.helper.http import http @app.on_message(filters.command("ask", COMMAND_HANDLER)) async def chatbot(c, m): if len(m.command) == 1: - return await m.reply( - f"Gunakan perintah /{m.command[0]} [pertanyaan] untuk menanyakan pertanyaan menggunakan AI." - ) + return await m.reply(f"Gunakan perintah /{m.command[0]} [pertanyaan] untuk menanyakan pertanyaan menggunakan AI.") pertanyaan = m.text.split(" ", maxsplit=1)[1] headers = { "Content-Type": "application/json", @@ -24,11 +22,7 @@ async def chatbot(c, m): } msg = await m.reply("Wait a moment looking for your answer..") try: - response = ( - await http.post( - "https://api.openai.com/v1/completions", headers=headers, json=json_data - ) - ).json() + response = (await http.post("https://api.openai.com/v1/completions", headers=headers, json=json_data)).json() await msg.edit(response["choices"][0]["text"]) except: await msg.edit("Yahh, sorry i can't get your answer.") diff --git a/misskaty/plugins/code_tester.py b/misskaty/plugins/code_tester.py index 1367e5e8..5038eee0 100644 --- a/misskaty/plugins/code_tester.py +++ b/misskaty/plugins/code_tester.py @@ -66,9 +66,7 @@ async def glot(lang, langcode, code): "content-type": "application/json", "Authorization": "Token b8a2b75a-a078-4089-869c-e53d448b1ebb", } - r = await session.post( - f"https://glot.io/api/run/{lang}/latest", headers=headers, json=data - ) + r = await session.post(f"https://glot.io/api/run/{lang}/latest", headers=headers, json=data) return await r.json() @@ -76,9 +74,7 @@ async def glot(lang, langcode, code): async def list_lang(client, message): daftarlang = await listcode() list_ = "".join(f"~> {i['name']}\n" for i in daftarlang) - return await message.reply( - f"List of Supported Programming Languages:\n{list_}" - ) + return await message.reply(f"List of Supported Programming Languages:\n{list_}") @app.on_message(filters.command(["assembly"], "!")) diff --git a/misskaty/plugins/detect_afk.py b/misskaty/plugins/detect_afk.py index 694e9413..e2b08126 100644 --- a/misskaty/plugins/detect_afk.py +++ b/misskaty/plugins/detect_afk.py @@ -192,9 +192,7 @@ async def chat_watcher_func(_, message): reasonafk = reasondb["reason"] seenago = get_readable_time2((int(time.time() - timeafk))) if afktype == "text": - msg += ( - f"**{first_name[:25]}** is AFK since {seenago} ago.\n\n" - ) + msg += f"**{first_name[:25]}** is AFK since {seenago} ago.\n\n" if afktype == "text_reason": msg += f"**{first_name[:25]}** is AFK since {seenago} ago.\n\n**Reason:** {reasonafk}\n\n" if afktype == "animation": diff --git a/misskaty/plugins/dev.py b/misskaty/plugins/dev.py index 244f45cf..cfca01b7 100644 --- a/misskaty/plugins/dev.py +++ b/misskaty/plugins/dev.py @@ -6,7 +6,6 @@ import asyncio from pyrogram import filters, enums from misskaty import app from misskaty.vars import COMMAND_HANDLER, SUDO -from misskaty.core.custom_filter import edited __MODULE__ = "DevCommand" __HELP__ = """ @@ -37,9 +36,7 @@ async def donate(_, message): ) -@app.on_message( - filters.command(["balas"], COMMAND_HANDLER) & filters.user(SUDO) & filters.reply -) +@app.on_message(filters.command(["balas"], COMMAND_HANDLER) & filters.user(SUDO) & filters.reply) async def balas(c, m): pesan = m.text.split(" ", 1) await m.delete() @@ -53,9 +50,7 @@ async def neofetch(c, m): @app.on_message(filters.command(["shell", "sh"], COMMAND_HANDLER) & filters.user(SUDO)) -@app.on_edited_message( - filters.command(["shell", "sh"], COMMAND_HANDLER) & filters.user(SUDO) -) +@app.on_edited_message(filters.command(["shell", "sh"], COMMAND_HANDLER) & filters.user(SUDO)) async def shell(client, message): cmd = message.text.split(" ", 1) if len(cmd) == 1: @@ -127,17 +122,12 @@ async def evaluation_cmd_t(client, message): async def aexec(code, client, message): - exec( - "async def __aexec(client, message): " - + "".join(f"\n {l_}" for l_ in code.split("\n")) - ) + exec("async def __aexec(client, message): " + "".join(f"\n {l_}" for l_ in code.split("\n"))) return await locals()["__aexec"](client, message) async def shell_exec(code, treat=True): - process = await asyncio.create_subprocess_shell( - code, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.STDOUT - ) + process = await asyncio.create_subprocess_shell(code, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.STDOUT) stdout = (await process.communicate())[0] if treat: diff --git a/misskaty/plugins/download_upload.py b/misskaty/plugins/download_upload.py index f5e22335..8f7f8ddb 100644 --- a/misskaty/plugins/download_upload.py +++ b/misskaty/plugins/download_upload.py @@ -2,11 +2,8 @@ import time import asyncio import math import os -import aiohttp -import json from misskaty.helper.http import http from logging import getLogger -from bs4 import BeautifulSoup from misskaty import app from pySmartDL import SmartDL from datetime import datetime @@ -54,15 +51,7 @@ async def upload(bot, message): text = callapi.json() output = f'File Uploaded to Anonfile\n\nšŸ“‚ File Name: {text["data"]["file"]["metadata"]["name"]}\n\nšŸ“¦ File Size: {text["data"]["file"]["metadata"]["size"]["readable"]}\n\nšŸ“„ Download Link: {text["data"]["file"]["url"]["full"]}' - btn = InlineKeyboardMarkup( - [ - [ - InlineKeyboardButton( - "šŸ“„ Download šŸ“„", url=f"{text['data']['file']['url']['full']}" - ) - ] - ] - ) + btn = InlineKeyboardMarkup([[InlineKeyboardButton("šŸ“„ Download šŸ“„", url=f"{text['data']['file']['url']['full']}")]]) await m.edit(output, reply_markup=btn) except Exception as e: await bot.send_message(message.chat.id, text=f"Something Went Wrong!\n\n{e}") @@ -83,9 +72,7 @@ async def download(client, message): ) end_t = datetime.now() ms = (end_t - start_t).seconds - await pesan.edit( - f"Downloaded to {the_real_download_location} in {ms} seconds." - ) + await pesan.edit(f"Downloaded to {the_real_download_location} in {ms} seconds.") elif len(message.command) > 1: start_t = datetime.now() the_url_parts = " ".join(message.command[1:]) @@ -121,14 +108,10 @@ async def download(client, message): current_message += f"File Name: {custom_file_name}\n" current_message += f"Speed: {speed}\n" current_message += f"{progress_str}\n" - current_message += ( - f"{humanbytes(downloaded)} of {humanbytes(total_length)}\n" - ) + current_message += f"{humanbytes(downloaded)} of {humanbytes(total_length)}\n" current_message += f"ETA: {estimated_total_time}" if round(diff % 10.00) == 0 and current_message != display_message: - await pesan.edit( - disable_web_page_preview=True, text=current_message - ) + await pesan.edit(disable_web_page_preview=True, text=current_message) display_message = current_message await asyncio.sleep(10) except Exception as e: @@ -136,22 +119,16 @@ async def download(client, message): if os.path.exists(download_file_path): end_t = datetime.now() ms = (end_t - start_t).seconds - await pesan.edit( - f"Downloaded to {download_file_path} in {ms} seconds" - ) + await pesan.edit(f"Downloaded to {download_file_path} in {ms} seconds") else: - await pesan.edit( - "Reply to a Telegram Media, to download it to my local server." - ) + await pesan.edit("Reply to a Telegram Media, to download it to my local server.") @app.on_message(filters.command(["tiktokdl"], COMMAND_HANDLER)) @capture_err async def tiktokdl(client, message): if len(message.command) == 1: - return await message.reply( - f"Use command /{message.command[0]} [link] to download tiktok video." - ) + return await message.reply(f"Use command /{message.command[0]} [link] to download tiktok video.") link = message.command[1] msg = await message.reply("Trying download...") try: @@ -170,9 +147,7 @@ async def tiktokdl(client, message): @capture_err async def fbdl(client, message): if len(message.command) == 1: - return await message.reply( - f"Use command /{message.command[0]} [link] to download Facebook video." - ) + return await message.reply(f"Use command /{message.command[0]} [link] to download Facebook video.") link = message.command[1] msg = await message.reply("Trying download...") try: @@ -194,7 +169,5 @@ async def fbdl(client, message): except: pass except Exception as e: - await message.reply( - f"Failed to download Facebook video..\n\nReason: {e}" - ) + await message.reply(f"Failed to download Facebook video..\n\nReason: {e}") await msg.delete() diff --git a/misskaty/plugins/filter_request.py b/misskaty/plugins/filter_request.py index 57d65311..11c4dedd 100644 --- a/misskaty/plugins/filter_request.py +++ b/misskaty/plugins/filter_request.py @@ -17,28 +17,17 @@ async def start(_, message): await message.reply_text(text=f"Wa'alaikumsalam {message.from_user.mention} šŸ˜‡") -@app.on_message( - filters.regex(r"#request|#req", re.I) - & (filters.text | filters.photo) - & filters.chat(-1001255283935) - & ~filters.channel -) +@app.on_message(filters.regex(r"#request|#req", re.I) & (filters.text | filters.photo) & filters.chat(-1001255283935) & ~filters.channel) @capture_err async def request_user(client, message): if message.sender_chat: - return await message.reply( - f"{message.from_user.mention} mohon gunakan akun asli saat request." - ) + return await message.reply(f"{message.from_user.mention} mohon gunakan akun asli saat request.") is_in_gap, sleep_time = await check_time_gap(message.from_user.id) if is_in_gap: return await message.reply("Sabar dikit napa.. šŸ™„") markup = InlineKeyboardMarkup( [ - [ - InlineKeyboardButton( - text="šŸ’¬ Lihat Pesan", url=f"https://t.me/c/1255283935/{message.id}" - ) - ], + [InlineKeyboardButton(text="šŸ’¬ Lihat Pesan", url=f"https://t.me/c/1255283935/{message.id}")], [ InlineKeyboardButton( text="🚫 Tolak", @@ -70,9 +59,7 @@ async def request_user(client, message): else: REQUEST_DB[user_id] = 1 if REQUEST_DB[user_id] > 3: - return await message.reply( - f"Mohon maaf {message.from_user.mention}, maksimal request hanya 3x perhari. Kalo mau tambah 5k per request šŸ˜šŸ˜." - ) + return await message.reply(f"Mohon maaf {message.from_user.mention}, maksimal request hanya 3x perhari. Kalo mau tambah 5k per request šŸ˜šŸ˜.") if message.text: forward = await client.send_message( -1001575525902, @@ -153,36 +140,18 @@ async def _callbackreq(c, q): if q.message.caption: await q.message.edit_text( f"COMPLETED\n\n{q.message.caption}", - reply_markup=InlineKeyboardMarkup( - [ - [ - InlineKeyboardButton( - text="āœ… Request Completed", callback_data="reqcompl" - ) - ] - ] - ), + reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(text="āœ… Request Completed", callback_data="reqcompl")]]), ) else: await q.message.edit_text( f"COMPLETED\n\n{q.message.text}", - reply_markup=InlineKeyboardMarkup( - [ - [ - InlineKeyboardButton( - text="āœ… Request Completed", callback_data="reqcompl" - ) - ] - ] - ), + reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(text="āœ… Request Completed", callback_data="reqcompl")]]), ) await q.answer("Request berhasil diselesaikan āœ…") else: await q.answer("Apa motivasi kamu menekan tombol ini?", show_alert=True) except UserNotParticipant: - return await q.answer( - "Apa motivasi kamu menekan tombol ini?", show_alert=True, cache_time=10 - ) + return await q.answer("Apa motivasi kamu menekan tombol ini?", show_alert=True, cache_time=10) except PeerIdInvalid: return await q.answer( "Silahkan kirim pesan digrup supaya bot bisa merespon.", @@ -238,9 +207,7 @@ async def _callbackreqada(c, q): else: await q.answer("Apa motivasi kamu menekan tombol ini?", show_alert=True) except UserNotParticipant: - return await q.answer( - "Apa motivasi kamu menekan tombol ini?", show_alert=True, cache_time=10 - ) + return await q.answer("Apa motivasi kamu menekan tombol ini?", show_alert=True, cache_time=10) except PeerIdInvalid: return await q.answer( "Silahkan kirim pesan digrup supaya bot bisa merespon.", @@ -267,36 +234,18 @@ async def _callbackreject(c, q): if q.message.caption: await q.message.edit_text( f"REJECTED\n\n{q.message.caption}", - reply_markup=InlineKeyboardMarkup( - [ - [ - InlineKeyboardButton( - text="🚫 Request Rejected", callback_data="reqreject" - ) - ] - ] - ), + reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(text="🚫 Request Rejected", callback_data="reqreject")]]), ) else: await q.message.edit_text( f"REJECTED\n\n{q.message.text}", - reply_markup=InlineKeyboardMarkup( - [ - [ - InlineKeyboardButton( - text="🚫 Request Rejected", callback_data="reqreject" - ) - ] - ] - ), + reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(text="🚫 Request Rejected", callback_data="reqreject")]]), ) await q.answer("Request berhasil ditolak 🚫") else: await q.answer("Apa motivasi kamu menekan tombol ini?", show_alert=True) except UserNotParticipant: - await q.answer( - "Apa motivasi kamu menekan tombol ini?", show_alert=True, cache_time=10 - ) + await q.answer("Apa motivasi kamu menekan tombol ini?", show_alert=True, cache_time=10) except PeerIdInvalid: return await q.answer( "Silahkan kirim pesan digrup supaya bot bisa merespon.", @@ -348,9 +297,7 @@ async def _callbackunav(c, q): ] ), ) - await q.answer( - "Request tidak tersedia, mungkin belum rilis atau memang tidak tersedia versi digital." - ) + await q.answer("Request tidak tersedia, mungkin belum rilis atau memang tidak tersedia versi digital.") else: await q.answer( "Apa motivasi kamu menekan tombol ini?", @@ -358,9 +305,7 @@ async def _callbackunav(c, q): cache_time=1000, ) except UserNotParticipant: - await q.answer( - "Apa motivasi kamu menekan tombol ini?", show_alert=True, cache_time=10 - ) + await q.answer("Apa motivasi kamu menekan tombol ini?", show_alert=True, cache_time=10) except PeerIdInvalid: return await q.answer( "Silahkan kirim pesan digrup supaya bot bisa merespon.", @@ -398,9 +343,7 @@ async def _callbackaft_unav(c, q): @app.on_callback_query(filters.regex(r"^reqavailable$")) async def _callbackaft_dahada(c, q): - await q.answer( - "Request ini sudah ada, silahkan cari šŸ” di channelnya yaa šŸ˜‰..", show_alert=True - ) + await q.answer("Request ini sudah ada, silahkan cari šŸ” di channelnya yaa šŸ˜‰..", show_alert=True) scheduler = AsyncIOScheduler(timezone="Asia/Jakarta") diff --git a/misskaty/plugins/filters.py b/misskaty/plugins/filters.py index 91f83f35..eb779669 100644 --- a/misskaty/plugins/filters.py +++ b/misskaty/plugins/filters.py @@ -48,13 +48,9 @@ You can use markdown or html to save text too. @adminsOnly("can_change_info") async def save_filters(_, message): if len(message.command) == 1 or not message.reply_to_message: - return await message.reply_text( - "**Usage:**\nReply to a text or sticker with /filter [FILTER_NAME] to save it." - ) + return await message.reply_text("**Usage:**\nReply to a text or sticker with /filter [FILTER_NAME] to save it.") if not message.reply_to_message.text and not message.reply_to_message.sticker: - return await message.reply_text( - "__**You can only save text or stickers in filters for now.**__" - ) + return await message.reply_text("__**You can only save text or stickers in filters for now.**__") name = message.text.split(None, 1)[1].strip() if not name: return await message.reply_text("**Usage:**\n__/filter [FILTER_NAME]__") @@ -62,9 +58,7 @@ async def save_filters(_, message): _type = "text" if message.reply_to_message.text else "sticker" _filter = { "type": _type, - "data": message.reply_to_message.text.markdown - if _type == "text" - else message.reply_to_message.sticker.file_id, + "data": message.reply_to_message.text.markdown if _type == "text" else message.reply_to_message.sticker.file_id, } await save_filter(chat_id, name, _filter) await message.reply(f"__**Saved filter {name}.**__") @@ -119,8 +113,7 @@ async def filters_re(_, message): if data_type == "text": keyb = None if re.findall(r"\[.+\,.+\]", data): - keyboard = extract_text_and_keyb(ikb, data) - if keyboard: + if keyboard := extract_text_and_keyb(ikb, data): data, keyb = keyboard if message.reply_to_message: diff --git a/misskaty/plugins/genss.py b/misskaty/plugins/genss.py index 16c5672b..4f63bd36 100644 --- a/misskaty/plugins/genss.py +++ b/misskaty/plugins/genss.py @@ -50,16 +50,12 @@ async def genss(client, message): chat_id=message.chat.id, message_id=process.id, ) - await client.send_chat_action( - chat_id=message.chat.id, action=enums.ChatAction.UPLOAD_PHOTO - ) + await client.send_chat_action(chat_id=message.chat.id, action=enums.ChatAction.UPLOAD_PHOTO) try: await gather( *[ - message.reply_document( - images, reply_to_message_id=message.id - ), + message.reply_document(images, reply_to_message_id=message.id), message.reply_photo(images, reply_to_message_id=message.id), ] ) @@ -67,9 +63,7 @@ async def genss(client, message): await sleep(e.value) await gather( *[ - message.reply_document( - images, reply_to_message_id=message.id - ), + message.reply_document(images, reply_to_message_id=message.id), message.reply_photo(images, reply_to_message_id=message.id), ] ) @@ -100,13 +94,9 @@ async def genss_link(client, message): try: link = message.text.split(" ")[1] if link.startswith("https://file.yasirweb.my.id"): - link = link.replace( - "https://file.yasirweb.my.id", "https://file.yasiraris.workers.dev" - ) + link = link.replace("https://file.yasirweb.my.id", "https://file.yasiraris.workers.dev") if link.startswith("https://link.yasirweb.my.id"): - link = link.replace( - "https://link.yasirweb.my.id", "https://yasirrobot.herokuapp.com" - ) + link = link.replace("https://link.yasirweb.my.id", "https://yasirrobot.herokuapp.com") process = await message.reply_text("`Processing, please wait..`") tmp_directory_for_each_user = f"./MissKaty_Genss/{str(message.from_user.id)}" if not os.path.isdir(tmp_directory_for_each_user): @@ -118,9 +108,7 @@ async def genss_link(client, message): chat_id=message.chat.id, message_id=process.id, ) - await client.send_chat_action( - chat_id=message.chat.id, action=enums.ChatAction.UPLOAD_PHOTO - ) + await client.send_chat_action(chat_id=message.chat.id, action=enums.ChatAction.UPLOAD_PHOTO) try: await message.reply_media_group(images, reply_to_message_id=message.id) except FloodWait as e: diff --git a/misskaty/plugins/grup_tools.py b/misskaty/plugins/grup_tools.py index 547cde24..2e0b1575 100644 --- a/misskaty/plugins/grup_tools.py +++ b/misskaty/plugins/grup_tools.py @@ -45,9 +45,7 @@ def draw_multiple_line_text(image, text, font, text_start_height): lines = textwrap.wrap(text, width=50) for line in lines: line_width, line_height = font.getsize(line) - draw.text( - ((image_width - line_width) / 2, y_text), line, font=font, fill="black" - ) + draw.text(((image_width - line_width) / 2, y_text), line, font=font, fill="black") y_text += line_height @@ -57,12 +55,8 @@ def welcomepic(pic, user, chat, count, id): background = background.resize((1024, 500), Image.ANTIALIAS) pfp = Image.open(pic).convert("RGBA") pfp = circle(pfp) - pfp = pfp.resize( - (265, 265) - ) # Resizes the Profilepicture so it fits perfectly in the circle - font = ImageFont.truetype( - "Calistoga-Regular.ttf", 37 - ) # <- Text Font of the Member Count. Change the text size for your preference + pfp = pfp.resize((265, 265)) # Resizes the Profilepicture so it fits perfectly in the circle + font = ImageFont.truetype("Calistoga-Regular.ttf", 37) # <- Text Font of the Member Count. Change the text size for your preference member_text = f"User#{count}, Selamat Datang {user}" # <- Text under the Profilepicture with the Membercount draw_multiple_line_text(background, member_text, font, 395) draw_multiple_line_text(background, chat, font, 47) @@ -73,22 +67,14 @@ def welcomepic(pic, user, chat, count, id): size=20, align="right", ) - background.paste( - pfp, (379, 123), pfp - ) # Pastes the Profilepicture on the Background Image - background.save( - f"downloads/welcome#{id}.png" - ) # Saves the finished Image in the folder with the filename + background.paste(pfp, (379, 123), pfp) # Pastes the Profilepicture on the Background Image + background.save(f"downloads/welcome#{id}.png") # Saves the finished Image in the folder with the filename return f"downloads/welcome#{id}.png" @app.on_chat_member_updated(filters.group & filters.chat(-1001128045651)) async def member_has_joined(c: app, member: ChatMemberUpdated): - if ( - not member.new_chat_member - or member.new_chat_member.status in {"banned", "left", "restricted"} - or member.old_chat_member - ): + if not member.new_chat_member or member.new_chat_member.status in {"banned", "left", "restricted"} or member.old_chat_member: return user = member.new_chat_member.user if member.new_chat_member else member.from_user if user.id in SUDO: @@ -107,21 +93,15 @@ async def member_has_joined(c: app, member: ChatMemberUpdated): pass mention = f"{user.first_name}" joined_date = datetime.fromtimestamp(time.time()).strftime("%Y.%m.%d %H:%M:%S") - first_name = ( - f"{user.first_name} {user.last_name}" if user.last_name else user.first_name - ) + first_name = f"{user.first_name} {user.last_name}" if user.last_name else user.first_name id = user.id dc = user.dc_id or "Member tanpa PP" count = await app.get_chat_members_count(member.chat.id) try: - pic = await app.download_media( - user.photo.big_file_id, file_name=f"pp{user.id}.png" - ) + pic = await app.download_media(user.photo.big_file_id, file_name=f"pp{user.id}.png") except AttributeError: pic = "img/profilepic.png" - welcomeimg = await welcomepic( - pic, user.first_name, member.chat.title, count, user.id - ) + welcomeimg = await welcomepic(pic, user.first_name, member.chat.title, count, user.id) temp.MELCOW[f"welcome-{member.chat.id}"] = await c.send_photo( member.chat.id, photo=welcomeimg, @@ -130,30 +110,18 @@ async def member_has_joined(c: app, member: ChatMemberUpdated): userspammer = "" # Spamwatch Detection try: - headers = { - "Authorization": "Bearer XvfzE4AUNXkzCy0DnIVpFDlxZi79lt6EnwKgBj8Quuzms0OSdHvf1k6zSeyzZ_lz" - } - apispamwatch = ( - await http.get( - f"https://api.spamwat.ch/banlist/{user.id}", headers=headers - ) - ).json() + headers = {"Authorization": "Bearer XvfzE4AUNXkzCy0DnIVpFDlxZi79lt6EnwKgBj8Quuzms0OSdHvf1k6zSeyzZ_lz"} + apispamwatch = (await http.get(f"https://api.spamwat.ch/banlist/{user.id}", headers=headers)).json() if not apispamwatch.get("error"): - await app.ban_chat_member( - member.chat.id, user.id, datetime.now() + timedelta(seconds=30) - ) + await app.ban_chat_member(member.chat.id, user.id, datetime.now() + timedelta(seconds=30)) userspammer += f"#SpamWatch Federation Ban\nUser {mention} [{user.id}] has been kicked because {apispamwatch.get('reason')}.\n" except Exception as err: LOGGER.error(f"ERROR in Spamwatch Detection. {err}") # Combot API Detection try: - apicombot = ( - await http.get(f"https://api.cas.chat/check?user_id={user.id}") - ).json() + apicombot = (await http.get(f"https://api.cas.chat/check?user_id={user.id}")).json() if apicombot.get("ok") == "true": - await app.ban_chat_member( - member.chat.id, user.id, datetime.now() + timedelta(seconds=30) - ) + await app.ban_chat_member(member.chat.id, user.id, datetime.now() + timedelta(seconds=30)) userspammer += f"#CAS Federation Ban\nUser {mention} [{user.id}] detected as spambot and has been kicked. Powered by Combot AntiSpam." except Exception as err: LOGGER.error(f"ERROR in Combot API Detection. {err}") @@ -181,9 +149,7 @@ async def save_group(bot, message): await db.add_chat(message.chat.id, message.chat.title) if message.chat.id in temp.BANNED_CHATS: # Inspired from a boat of a banana tree - buttons = [ - [InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")] - ] + buttons = [[InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]] reply_markup = InlineKeyboardMarkup(buttons) k = await message.reply( text="CHAT NOT ALLOWED šŸž\n\nMy admins has restricted me from working here ! If you want to know more about it contact support..", @@ -198,9 +164,7 @@ async def save_group(bot, message): return buttons = [ [ - InlineKeyboardButton( - "ā„¹ļø Help", url=f"https://t.me/{temp.U_NAME}?start=help" - ), + InlineKeyboardButton("ā„¹ļø Help", url=f"https://t.me/{temp.U_NAME}?start=help"), InlineKeyboardButton("šŸ“¢ Updates", url="https://t.me/YasirPediaChannel"), ] ] @@ -213,14 +177,10 @@ async def save_group(bot, message): for u in message.new_chat_members: count = await app.get_chat_members_count(message.chat.id) try: - pic = await app.download_media( - u.photo.big_file_id, file_name=f"pp{u.id}.png" - ) + pic = await app.download_media(u.photo.big_file_id, file_name=f"pp{u.id}.png") except AttributeError: pic = "img/profilepic.png" - welcomeimg = await welcomepic( - pic, u.first_name, message.chat.title, count, u.id - ) + welcomeimg = await welcomepic(pic, u.first_name, message.chat.title, count, u.id) if (temp.MELCOW).get(f"welcome-{message.chat.id}") is not None: try: await (temp.MELCOW[f"welcome-{message.chat.id}"]).delete() @@ -251,9 +211,7 @@ async def leave_a_chat(bot, message): except: chat = chat try: - buttons = [ - [InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")] - ] + buttons = [[InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]] reply_markup = InlineKeyboardMarkup(buttons) await bot.send_message( chat_id=chat, @@ -285,16 +243,12 @@ async def disable_chat(bot, message): if not cha_t: return await message.reply("Chat Not Found In DB") if cha_t["is_disabled"]: - return await message.reply( - f"This chat is already disabled:\nReason- {cha_t['reason']} " - ) + return await message.reply(f"This chat is already disabled:\nReason- {cha_t['reason']} ") await db.disable_chat(chat_, reason) temp.BANNED_CHATS.append(chat_) await message.reply("Chat Succesfully Disabled") try: - buttons = [ - [InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")] - ] + buttons = [[InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]] reply_markup = InlineKeyboardMarkup(buttons) await bot.send_message( chat_id=chat_, @@ -339,9 +293,7 @@ async def gen_invite(bot, message): try: link = await bot.create_chat_invite_link(chat) except ChatAdminRequired: - return await message.reply( - "Invite Link Generation Failed, Iam Not Having Sufficient Rights" - ) + return await message.reply("Invite Link Generation Failed, Iam Not Having Sufficient Rights") except Exception as e: return await message.reply(f"Error {e}") await message.reply(f"Here is your Invite Link {link.invite_link}") @@ -354,15 +306,11 @@ async def adminlist(_, message): return await message.reply("Perintah ini hanya untuk grup") try: administrators = [] - async for m in app.get_chat_members( - message.chat.id, filter=enums.ChatMembersFilter.ADMINISTRATORS - ): + async for m in app.get_chat_members(message.chat.id, filter=enums.ChatMembersFilter.ADMINISTRATORS): administrators.append(f"{m.user.first_name}") res = "".join(f"~ {i}\n" for i in administrators) - return await message.reply( - f"Daftar Admin di {message.chat.title} ({message.chat.id}):\n~ {res}" - ) + return await message.reply(f"Daftar Admin di {message.chat.title} ({message.chat.id}):\n~ {res}") except Exception as e: await message.reply(f"ERROR: {str(e)}") @@ -380,9 +328,7 @@ async def kickme(_, message): await message.reply_text(txt) await message.unban_member(message.from_user.id) except RPCError as ef: - await message.reply_text( - f"Sepertinya ada error, silahkan report ke owner saya. \nERROR: {str(ef)}" - ) + await message.reply_text(f"Sepertinya ada error, silahkan report ke owner saya. \nERROR: {str(ef)}") return diff --git a/misskaty/plugins/inkick_user.py b/misskaty/plugins/inkick_user.py index ace0aa7c..77ee2195 100644 --- a/misskaty/plugins/inkick_user.py +++ b/misskaty/plugins/inkick_user.py @@ -17,67 +17,48 @@ __HELP__ = """" """ -@app.on_message( - filters.incoming & ~filters.private & filters.command(["inkick"], COMMAND_HANDLER) -) +@app.on_message(filters.incoming & ~filters.private & filters.command(["inkick"], COMMAND_HANDLER)) async def inkick(_, message): user = await app.get_chat_member(message.chat.id, message.from_user.id) if user.status.value in ("administrator", "owner"): if len(message.command) > 1: input_str = message.command - sent_message = await message.reply_text( - "🚮**Sedang membersihkan user, mungkin butuh waktu beberapa saat...**" - ) + sent_message = await message.reply_text("🚮**Sedang membersihkan user, mungkin butuh waktu beberapa saat...**") count = 0 async for member in app.get_chat_members(message.chat.id): if member.user.is_bot: continue - if ( - member.user.status.value in input_str - and member.status.value not in ("administrator", "owner") - ): + if member.user.status.value in input_str and member.status.value not in ("administrator", "owner"): try: await message.chat.ban_member(member.user.id) count += 1 await sleep(1) await message.chat.unban_member(member.user.id) except (ChatAdminRequired, UserAdminInvalid): - await sent_message.edit( - "ā—**Oh tidaakk, saya bukan admin disini**\n__Saya pergi dari sini, tambahkan aku kembali dengan perijinan banned pengguna.__" - ) + await sent_message.edit("ā—**Oh tidaakk, saya bukan admin disini**\n__Saya pergi dari sini, tambahkan aku kembali dengan perijinan banned pengguna.__") await app.leave_chat(message.chat.id) break except FloodWait as e: await sleep(e.value) try: - await sent_message.edit( - f"āœ”ļø **Berhasil menendang {count} pengguna berdasarkan argumen.**" - ) + await sent_message.edit(f"āœ”ļø **Berhasil menendang {count} pengguna berdasarkan argumen.**") except ChatWriteForbidden: await app.leave_chat(message.chat.id) else: - await message.reply_text( - "ā— **Arguments Required**\n__See /help in personal message for more information.__" - ) + await message.reply_text("ā— **Arguments Required**\n__See /help in personal message for more information.__") else: - sent_message = await message.reply_text( - "ā— **You have to be the group creator to do that.**" - ) + sent_message = await message.reply_text("ā— **You have to be the group creator to do that.**") await sleep(5) await sent_message.delete() # Kick User Without Username -@app.on_message( - filters.incoming & ~filters.private & filters.command(["uname"], COMMAND_HANDLER) -) +@app.on_message(filters.incoming & ~filters.private & filters.command(["uname"], COMMAND_HANDLER)) async def uname(_, message): user = await app.get_chat_member(message.chat.id, message.from_user.id) if user.status.value in ("administrator", "owner"): - sent_message = await message.reply_text( - "🚮**Sedang membersihkan user, mungkin butuh waktu beberapa saat...**" - ) + sent_message = await message.reply_text("🚮**Sedang membersihkan user, mungkin butuh waktu beberapa saat...**") count = 0 async for member in app.get_chat_members(message.chat.id): if not member.user.username and member.status.value not in ( @@ -90,37 +71,27 @@ async def uname(_, message): await sleep(1) await message.chat.unban_member(member.user.id) except (ChatAdminRequired, UserAdminInvalid): - await sent_message.edit( - "ā—**Oh tidaakk, saya bukan admin disini**\n__Saya pergi dari sini, tambahkan aku kembali dengan perijinan banned pengguna.__" - ) + await sent_message.edit("ā—**Oh tidaakk, saya bukan admin disini**\n__Saya pergi dari sini, tambahkan aku kembali dengan perijinan banned pengguna.__") await app.leave_chat(message.chat.id) break except FloodWait as e: await sleep(e.value) try: - await sent_message.edit( - f"āœ”ļø **Berhasil menendang {count} pengguna berdasarkan argumen.**" - ) + await sent_message.edit(f"āœ”ļø **Berhasil menendang {count} pengguna berdasarkan argumen.**") except ChatWriteForbidden: await app.leave_chat(message.chat.id) else: - sent_message = await message.reply_text( - "ā— **You have to be the group creator to do that.**" - ) + sent_message = await message.reply_text("ā— **You have to be the group creator to do that.**") await sleep(5) await sent_message.delete() -@app.on_message( - filters.incoming & ~filters.private & filters.command(["dkick"], COMMAND_HANDLER) -) +@app.on_message(filters.incoming & ~filters.private & filters.command(["dkick"], COMMAND_HANDLER)) async def dkick(client, message): user = await app.get_chat_member(message.chat.id, message.from_user.id) if user.status.value in ("administrator", "owner"): - sent_message = await message.reply_text( - "🚮**Sedang membersihkan user, mungkin butuh waktu beberapa saat...**" - ) + sent_message = await message.reply_text("🚮**Sedang membersihkan user, mungkin butuh waktu beberapa saat...**") count = 0 async for member in app.get_chat_members(message.chat.id): if member.user.is_deleted and member.status.value not in ( @@ -133,9 +104,7 @@ async def dkick(client, message): await sleep(1) await message.chat.unban_member(member.user.id) except (ChatAdminRequired, UserAdminInvalid): - await sent_message.edit( - "ā—**Oh tidaakk, saya bukan admin disini**\n__Saya pergi dari sini, tambahkan aku kembali dengan perijinan banned pengguna.__" - ) + await sent_message.edit("ā—**Oh tidaakk, saya bukan admin disini**\n__Saya pergi dari sini, tambahkan aku kembali dengan perijinan banned pengguna.__") await app.leave_chat(message.chat.id) break except FloodWait as e: @@ -145,16 +114,12 @@ async def dkick(client, message): except ChatWriteForbidden: await app.leave_chat(message.chat.id) else: - sent_message = await message.reply_text( - "ā— **Kamu harus jadi admin atau owner grup untuk melakukan tindakan ini.**" - ) + sent_message = await message.reply_text("ā— **Kamu harus jadi admin atau owner grup untuk melakukan tindakan ini.**") await sleep(5) await sent_message.delete() -@app.on_message( - filters.incoming & ~filters.private & filters.command(["instatus"], COMMAND_HANDLER) -) +@app.on_message(filters.incoming & ~filters.private & filters.command(["instatus"], COMMAND_HANDLER)) async def instatus(client, message): start_time = time.perf_counter() user = await app.get_chat_member(message.chat.id, message.from_user.id) @@ -163,9 +128,7 @@ async def instatus(client, message): enums.ChatMemberStatus.ADMINISTRATOR, enums.ChatMemberStatus.OWNER, ): - sent_message = await message.reply_text( - "**Sedang mengumpulkan informasi pengguna...**" - ) + sent_message = await message.reply_text("**Sedang mengumpulkan informasi pengguna...**") recently = 0 within_week = 0 within_month = 0 @@ -177,13 +140,9 @@ async def instatus(client, message): banned = 0 uncached = 0 bot = 0 - async for ban in app.get_chat_members( - message.chat.id, filter=enums.ChatMembersFilter.BANNED - ): + async for ban in app.get_chat_members(message.chat.id, filter=enums.ChatMembersFilter.BANNED): banned += 1 - async for restr in app.get_chat_members( - message.chat.id, filter=enums.ChatMembersFilter.RESTRICTED - ): + async for restr in app.get_chat_members(message.chat.id, filter=enums.ChatMembersFilter.RESTRICTED): restricted += 1 async for member in app.get_chat_members(message.chat.id): user = member.user @@ -226,8 +185,6 @@ async def instatus(client, message): ) ) else: - sent_message = await message.reply_text( - "ā— **Kamu harus jadi admin atau owner grup untuk melakukan tindakan ini.**" - ) + sent_message = await message.reply_text("ā— **Kamu harus jadi admin atau owner grup untuk melakukan tindakan ini.**") await sleep(5) await sent_message.delete() diff --git a/misskaty/plugins/inline_search.py b/misskaty/plugins/inline_search.py index 83d81775..63e8d0a6 100644 --- a/misskaty/plugins/inline_search.py +++ b/misskaty/plugins/inline_search.py @@ -38,12 +38,7 @@ PRVT_MSGS = {} async def inline_menu(_, inline_query: InlineQuery): if inline_query.query.strip().lower().strip() == "": buttons = InlineKeyboard(row_width=2) - buttons.add( - *[ - (InlineKeyboardButton(text=i, switch_inline_query_current_chat=i)) - for i in keywords_list - ] - ) + buttons.add(*[(InlineKeyboardButton(text=i, switch_inline_query_current_chat=i)) for i in keywords_list]) btn = InlineKeyboard(row_width=2) bot_state = "Alive" if await app.get_me() else "Dead" @@ -67,27 +62,21 @@ async def inline_menu(_, inline_query: InlineQuery): InlineQueryResultArticle( title="Inline Commands", description="Help Related To Inline Usage.", - input_message_content=InputTextMessageContent( - "Click A Button To Get Started." - ), + input_message_content=InputTextMessageContent("Click A Button To Get Started."), thumb_url="https://hamker.me/cy00x5x.png", reply_markup=buttons, ), InlineQueryResultArticle( title="Github Repo", description="Github Repo of This Bot.", - input_message_content=InputTextMessageContent( - f"Github Repo @{BOT_USERNAME}\n\nhttps://github.com/yasirarism/MissKatyPyro" - ), + input_message_content=InputTextMessageContent(f"Github Repo @{BOT_USERNAME}\n\nhttps://github.com/yasirarism/MissKatyPyro"), thumb_url="https://hamker.me/gjc9fo3.png", ), InlineQueryResultArticle( title="Alive", description="Check Bot's Stats", thumb_url="https://yt3.ggpht.com/ytc/AMLnZu-zbtIsllERaGYY8Aecww3uWUASPMjLUUEt7ecu=s900-c-k-c0x00ffffff-no-rj", - input_message_content=InputTextMessageContent( - msg, disable_web_page_preview=True - ), + input_message_content=InputTextMessageContent(msg, disable_web_page_preview=True), reply_markup=btn, ), ] @@ -100,13 +89,8 @@ async def inline_menu(_, inline_query: InlineQuery): switch_pm_parameter="inline", ) judul = inline_query.query.split(None, 1)[1].strip() - headers = { - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " - "Chrome/61.0.3163.100 Safari/537.36" - } - search_results = await http.get( - f"https://www.google.com/search?q={judul}&num=20", headers=headers - ) + headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/61.0.3163.100 Safari/537.36"} + search_results = await http.get(f"https://www.google.com/search?q={judul}&num=20", headers=headers) soup = BeautifulSoup(search_results.text, "lxml") data = [] for result in soup.select(".tF2Cxc"): @@ -129,9 +113,7 @@ async def inline_menu(_, inline_query: InlineQuery): url=link, description=snippet, thumb_url="https://te.legra.ph/file/ed8ea62ae636793000bb4.jpg", - reply_markup=InlineKeyboardMarkup( - [[InlineKeyboardButton(text="Open Website", url=link)]] - ), + reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(text="Open Website", url=link)]]), ) ) await inline_query.answer( @@ -169,11 +151,7 @@ async def inline_menu(_, inline_query: InlineQuery): ) prvte_msg = InlineKeyboardMarkup( [ - [ - InlineKeyboardButton( - "Show Message šŸ”", callback_data=f"prvtmsg({inline_query.id})" - ) - ], + [InlineKeyboardButton("Show Message šŸ”", callback_data=f"prvtmsg({inline_query.id})")], [ InlineKeyboardButton( "Destroyā˜ ļø this msg", @@ -182,15 +160,9 @@ async def inline_menu(_, inline_query: InlineQuery): ], ] ) - mention = ( - f"@{penerima.username}" - if penerima.username - else f"{penerima.first_name}" - ) + mention = f"@{penerima.username}" if penerima.username else f"{penerima.first_name}" - msg_c = ( - f"šŸ”’ A private message to {mention} [{penerima.id}], " - ) + msg_c = f"šŸ”’ A private message to {mention} [{penerima.id}], " msg_c += "Only he/she can open it." results = [ InlineQueryResultArticle( @@ -210,9 +182,7 @@ async def inline_menu(_, inline_query: InlineQuery): switch_pm_parameter="inline", ) query = inline_query.query.split(None, 1)[1].strip() - search_results = await http.get( - f"https://api.github.com/search/repositories?q={query}" - ) + search_results = await http.get(f"https://api.github.com/search/repositories?q={query}") srch_results = json.loads(search_results.text) item = srch_results.get("items") data = [] @@ -235,9 +205,7 @@ async def inline_menu(_, inline_query: InlineQuery): url=link, description=deskripsi, thumb_url="https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png", - reply_markup=InlineKeyboardMarkup( - [[InlineKeyboardButton(text="Open Github Link", url=link)]] - ), + reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(text="Open Github Link", url=link)]]), ) ) await inline_query.answer( @@ -256,9 +224,7 @@ async def inline_menu(_, inline_query: InlineQuery): switch_pm_parameter="inline", ) query = inline_query.query.split(None, 1)[1].strip() - search_results = await http.get( - f"https://api.hayo.my.id/api/pypi?package={query}" - ) + search_results = await http.get(f"https://api.hayo.my.id/api/pypi?package={query}") srch_results = json.loads(search_results.text) data = [] for sraeo in srch_results: @@ -279,9 +245,7 @@ async def inline_menu(_, inline_query: InlineQuery): url=link, description=deskripsi, thumb_url="https://raw.githubusercontent.com/github/explore/666de02829613e0244e9441b114edb85781e972c/topics/pip/pip.png", - reply_markup=InlineKeyboardMarkup( - [[InlineKeyboardButton(text="Open Link", url=link)]] - ), + reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(text="Open Link", url=link)]]), ) ) await inline_query.answer( @@ -300,9 +264,7 @@ async def inline_menu(_, inline_query: InlineQuery): switch_pm_parameter="inline", ) judul = inline_query.query.split(None, 1)[1].strip() - search_results = await http.get( - f"https://api.abir-hasan.tk/youtube?query={judul}" - ) + search_results = await http.get(f"https://api.abir-hasan.tk/youtube?query={judul}") srch_results = json.loads(search_results.text) asroe = srch_results.get("results") oorse = [] @@ -314,9 +276,7 @@ async def inline_menu(_, inline_query: InlineQuery): durasi = sraeo.get("accessibility").get("duration") publishTime = sraeo.get("publishedTime") try: - deskripsi = "".join( - f"{i['text']} " for i in sraeo.get("descriptionSnippet") - ) + deskripsi = "".join(f"{i['text']} " for i in sraeo.get("descriptionSnippet")) except: deskripsi = "-" message_text = f"{title}\n" @@ -335,9 +295,7 @@ async def inline_menu(_, inline_query: InlineQuery): url=link, description=deskripsi, thumb_url=thumb, - reply_markup=InlineKeyboardMarkup( - [[InlineKeyboardButton(text="Watch Video šŸ“¹", url=link)]] - ), + reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton(text="Watch Video šŸ“¹", url=link)]]), ) ) await inline_query.answer( @@ -356,9 +314,7 @@ async def inline_menu(_, inline_query: InlineQuery): switch_pm_parameter="inline", ) movie_name = inline_query.query.split(None, 1)[1].strip() - search_results = await http.get( - f"https://yasirapi.eu.org/imdb-search?q={movie_name}" - ) + search_results = await http.get(f"https://yasirapi.eu.org/imdb-search?q={movie_name}") res = json.loads(search_results.text).get("result") oorse = [] for midb in res: @@ -367,11 +323,7 @@ async def inline_menu(_, inline_query: InlineQuery): stars = midb.get("s", "") imdb_url = f"https://imdb.com/title/{midb.get('id')}" year = f"({midb.get('y')})" if midb.get("y") else "" - image_url = ( - midb.get("i").get("imageUrl").replace(".jpg", "._V1_UX360.jpg") - if midb.get("i") - else "https://te.legra.ph/file/e263d10ff4f4426a7c664.jpg" - ) + image_url = midb.get("i").get("imageUrl").replace(".jpg", "._V1_UX360.jpg") if midb.get("i") else "https://te.legra.ph/file/e263d10ff4f4426a7c664.jpg" caption = f"šŸŽ¬" caption += f"{title} {year}" oorse.append( @@ -446,83 +398,46 @@ async def imdb_inl(_, query): url = f"https://www.imdb.com/title/{movie}/" resp = await get_content(url) sop = BeautifulSoup(resp, "lxml") - r_json = json.loads( - sop.find("script", attrs={"type": "application/ld+json"}).contents[0] - ) + r_json = json.loads(sop.find("script", attrs={"type": "application/ld+json"}).contents[0]) res_str = "" type = f"{r_json['@type']}" if r_json.get("@type") else "" if r_json.get("name"): try: - tahun = ( - sop.select('ul[data-testid="hero-title-block__metadata"]')[0] - .find(class_="sc-8c396aa2-2 itZqyK") - .text - ) + tahun = sop.select('ul[data-testid="hero-title-block__metadata"]')[0].find(class_="sc-8c396aa2-2 itZqyK").text except: tahun = "-" res_str += f"šŸ“¹ Judul: {r_json['name']} [{tahun}] ({type})\n" if r_json.get("alternateName"): - res_str += ( - f"šŸ“¢ AKA: {r_json.get('alternateName')}\n\n" - ) + res_str += f"šŸ“¢ AKA: {r_json.get('alternateName')}\n\n" else: res_str += "\n" if sop.select('li[data-testid="title-techspec_runtime"]'): - durasi = ( - sop.select('li[data-testid="title-techspec_runtime"]')[0] - .find(class_="ipc-metadata-list-item__content-container") - .text - ) + durasi = sop.select('li[data-testid="title-techspec_runtime"]')[0].find(class_="ipc-metadata-list-item__content-container").text res_str += f"Durasi: {GoogleTranslator('auto', 'id').translate(durasi)}\n" if r_json.get("contentRating"): res_str += f"Kategori: {r_json['contentRating']} \n" if r_json.get("aggregateRating"): res_str += f"Peringkat: {r_json['aggregateRating']['ratingValue']}ā­ļø dari {r_json['aggregateRating']['ratingCount']} pengguna \n" if sop.select('li[data-testid="title-details-releasedate"]'): - rilis = ( - sop.select('li[data-testid="title-details-releasedate"]')[0] - .find( - class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link" - ) - .text - ) - rilis_url = sop.select('li[data-testid="title-details-releasedate"]')[ - 0 - ].find( - class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link" - )[ - "href" - ] + rilis = sop.select('li[data-testid="title-details-releasedate"]')[0].find(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link").text + rilis_url = sop.select('li[data-testid="title-details-releasedate"]')[0].find(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link")["href"] res_str += f"Rilis: {rilis}\n" if r_json.get("genre"): - genre = "".join( - f"{GENRES_EMOJI[i]} #{i.replace('-', '_').replace(' ', '_')}, " - if i in GENRES_EMOJI - else f"#{i.replace('-', '_').replace(' ', '_')}, " - for i in r_json["genre"] - ) + genre = "".join(f"{GENRES_EMOJI[i]} #{i.replace('-', '_').replace(' ', '_')}, " if i in GENRES_EMOJI else f"#{i.replace('-', '_').replace(' ', '_')}, " for i in r_json["genre"]) genre = genre[:-2] res_str += f"Genre: {genre}\n" if sop.select('li[data-testid="title-details-origin"]'): country = "".join( f"{demoji(country.text)} #{country.text.replace(' ', '_').replace('-', '_')}, " - for country in sop.select('li[data-testid="title-details-origin"]')[ - 0 - ].findAll( - class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link" - ) + for country in sop.select('li[data-testid="title-details-origin"]')[0].findAll(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link") ) country = country[:-2] res_str += f"Negara: {country}\n" if sop.select('li[data-testid="title-details-languages"]'): language = "".join( f"#{lang.text.replace(' ', '_').replace('-', '_')}, " - for lang in sop.select('li[data-testid="title-details-languages"]')[ - 0 - ].findAll( - class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link" - ) + for lang in sop.select('li[data-testid="title-details-languages"]')[0].findAll(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link") ) language = language[:-2] res_str += f"Bahasa: {language}\n" @@ -553,9 +468,7 @@ async def imdb_inl(_, query): actors = actors[:-2] res_str += f"Pemeran: {actors}\n\n" if r_json.get("description"): - summary = GoogleTranslator("auto", "id").translate( - r_json.get("description") - ) + summary = GoogleTranslator("auto", "id").translate(r_json.get("description")) res_str += f"šŸ“œ Plot: {summary}\n\n" if r_json.get("keywords"): keywords = r_json["keywords"].split(",") @@ -566,11 +479,7 @@ async def imdb_inl(_, query): key_ = key_[:-2] res_str += f"šŸ”„ Kata Kunci: {key_} \n" if sop.select('li[data-testid="award_information"]'): - awards = ( - sop.select('li[data-testid="award_information"]')[0] - .find(class_="ipc-metadata-list-item__list-content-item") - .text - ) + awards = sop.select('li[data-testid="award_information"]')[0].find(class_="ipc-metadata-list-item__list-content-item").text res_str += f"šŸ† Penghargaan: {GoogleTranslator('auto', 'id').translate(awards)}\n\n" else: res_str += "\n" diff --git a/misskaty/plugins/karma.py b/misskaty/plugins/karma.py index 9c0bfcdf..20bb08fb 100644 --- a/misskaty/plugins/karma.py +++ b/misskaty/plugins/karma.py @@ -24,9 +24,7 @@ Give reputation to other people in group. karma_positive_group = 3 karma_negative_group = 4 -regex_upvote = ( - r"^(\+|\+\+|\+1|thx|tnx|ty|thank you|thanx|thanks|pro|cool|good|makasih|šŸ‘|\+\+ .+)$" -) +regex_upvote = r"^(\+|\+\+|\+1|thx|tnx|ty|thank you|thanx|thanks|pro|cool|good|makasih|šŸ‘|\+\+ .+)$" regex_downvote = r"^(-|--|-1|šŸ‘Ž|-- .+)$" n = "\n" @@ -47,30 +45,18 @@ def section( text = (bold_ul(title) + n) if underline else bold(title) + n for key, value in body.items(): - text += ( - indent * w - + bold(key) - + ((value[0] + n) if isinstance(value, list) else mono(value)) - ) + text += indent * w + bold(key) + ((value[0] + n) if isinstance(value, list) else mono(value)) return text async def get_user_id_and_usernames(client) -> dict: with client.storage.lock, client.storage.conn: - users = client.storage.conn.execute( - 'SELECT * FROM peers WHERE type in ("user", "bot") AND username NOT null' - ).fetchall() + users = client.storage.conn.execute('SELECT * FROM peers WHERE type in ("user", "bot") AND username NOT null').fetchall() return {user[0]: user[3] for user in users} @app.on_message( - filters.text - & filters.group - & filters.incoming - & filters.reply - & filters.regex(regex_upvote, re.IGNORECASE) - & ~filters.via_bot - & ~filters.bot, + filters.text & filters.group & filters.incoming & filters.reply & filters.regex(regex_upvote, re.IGNORECASE) & ~filters.via_bot & ~filters.bot, group=karma_positive_group, ) @capture_err @@ -94,19 +80,11 @@ async def upvote(_, message): karma = 1 new_karma = {"karma": karma} await update_karma(chat_id, await int_to_alpha(user_id), new_karma) - await message.reply_text( - f"Incremented Karma of {user_mention} By 1 \nTotal Points: {karma}" - ) + await message.reply_text(f"Incremented Karma of {user_mention} By 1 \nTotal Points: {karma}") @app.on_message( - filters.text - & filters.group - & filters.incoming - & filters.reply - & filters.regex(regex_downvote, re.IGNORECASE) - & ~filters.via_bot - & ~filters.bot, + filters.text & filters.group & filters.incoming & filters.reply & filters.regex(regex_downvote, re.IGNORECASE) & ~filters.via_bot & ~filters.bot, group=karma_negative_group, ) @capture_err @@ -131,9 +109,7 @@ async def downvote(_, message): karma = 1 new_karma = {"karma": karma} await update_karma(chat_id, await int_to_alpha(user_id), new_karma) - await message.reply_text( - f"Decremented Karma Of {user_mention} By 1 \nTotal Points: {karma}" - ) + await message.reply_text(f"Decremented Karma Of {user_mention} By 1 \nTotal Points: {karma}") @app.on_message(filters.command("karma") & filters.group) diff --git a/misskaty/plugins/mediainfo.py b/misskaty/plugins/mediainfo.py index ff5039cf..fcf09483 100644 --- a/misskaty/plugins/mediainfo.py +++ b/misskaty/plugins/mediainfo.py @@ -25,9 +25,7 @@ from misskaty.helper.pyro_progress import ( @capture_err async def mediainfo(client, message): if message.reply_to_message and message.reply_to_message.media: - process = await message.reply_text( - "`Sedang memproses, lama waktu tergantung ukuran file kamu...`", quote=True - ) + process = await message.reply_text("`Sedang memproses, lama waktu tergantung ukuran file kamu...`", quote=True) file_info = get_file_id(message.reply_to_message) if file_info is None: await process.edit_text("Balas ke format media yang valid") @@ -63,22 +61,14 @@ async def mediainfo(client, message): try: link = message.text.split(" ", maxsplit=1)[1] if link.startswith("https://file.yasirweb.my.id"): - link = link.replace( - "https://file.yasirweb.my.id", "https://file.yasiraris.workers.dev" - ) + link = link.replace("https://file.yasirweb.my.id", "https://file.yasiraris.workers.dev") if link.startswith("https://link.yasirweb.my.id"): - link = link.replace( - "https://link.yasirweb.my.id", "https://yasirrobot.herokuapp.com" - ) + link = link.replace("https://link.yasirweb.my.id", "https://yasirrobot.herokuapp.com") process = await message.reply_text("`Mohon tunggu sejenak...`") try: - output = subprocess.check_output(["mediainfo", f"{link}"]).decode( - "utf-8" - ) + output = subprocess.check_output(["mediainfo", f"{link}"]).decode("utf-8") except Exception: - return await process.edit( - "Sepertinya link yang kamu kirim tidak valid, pastikan direct link dan bisa di download." - ) + return await process.edit("Sepertinya link yang kamu kirim tidak valid, pastikan direct link dan bisa di download.") title = "MissKaty Bot Mediainfo" body_text = f""" @@ -89,9 +79,7 @@ async def mediainfo(client, message): # response = await http.post(siteurl, data={"content": output, "extension": 'txt'} ) # response = response.json() # spacebin = "https://spaceb.in/"+response['payload']['id'] - markup = InlineKeyboardMarkup( - [[InlineKeyboardButton(text="šŸ’¬ Telegraph", url=tgraph)]] - ) + markup = InlineKeyboardMarkup([[InlineKeyboardButton(text="šŸ’¬ Telegraph", url=tgraph)]]) with io.BytesIO(str.encode(output)) as out_file: out_file.name = "MissKaty_Mediainfo.txt" await message.reply_document( @@ -101,6 +89,4 @@ async def mediainfo(client, message): ) await process.delete() except IndexError: - return await message.reply_text( - "Gunakan command /mediainfo [link], atau reply telegram media dengan /mediainfo." - ) + return await message.reply_text("Gunakan command /mediainfo [link], atau reply telegram media dengan /mediainfo.") diff --git a/misskaty/plugins/memify.py b/misskaty/plugins/memify.py index 3884d80d..819e574b 100644 --- a/misskaty/plugins/memify.py +++ b/misskaty/plugins/memify.py @@ -133,9 +133,7 @@ async def draw_meme_text(image_path, text): @app.on_message(filters.command(["mmf"], COMMAND_HANDLER)) @capture_err async def memify(client, message): - if message.reply_to_message and ( - message.reply_to_message.sticker or message.reply_to_message.photo - ): + if message.reply_to_message and (message.reply_to_message.sticker or message.reply_to_message.photo): try: file = await message.reply_to_message.download() res = await draw_meme_text(file, message.text.split(None, 1)[1].strip()) @@ -145,10 +143,6 @@ async def memify(client, message): except: pass except: - await message.reply( - "Gunakan command /mmf dengan reply ke sticker, pisahkan dengan ; untuk membuat posisi text dibawah." - ) + await message.reply("Gunakan command /mmf dengan reply ke sticker, pisahkan dengan ; untuk membuat posisi text dibawah.") else: - await message.reply( - "Gunakan command /mmf dengan reply ke sticker, pisahkan dengan ; untuk membuat posisi text dibawah." - ) + await message.reply("Gunakan command /mmf dengan reply ke sticker, pisahkan dengan ; untuk membuat posisi text dibawah.") diff --git a/misskaty/plugins/misc_tools.py b/misskaty/plugins/misc_tools.py index 5459e8e3..5f9bb37f 100644 --- a/misskaty/plugins/misc_tools.py +++ b/misskaty/plugins/misc_tools.py @@ -52,20 +52,12 @@ def remove_html_tags(text): async def stackoverflow(client, message): if len(message.command) == 1: return await message.reply("Give a query to search in StackOverflow!") - r = ( - await http.get( - f"https://api.stackexchange.com/2.3/search/excerpts?order=asc&sort=relevance&q={message.command[1]}&accepted=True&migrated=False¬ice=False&wiki=False&site=stackoverflow" - ) - ).json() + r = (await http.get(f"https://api.stackexchange.com/2.3/search/excerpts?order=asc&sort=relevance&q={message.command[1]}&accepted=True&migrated=False¬ice=False&wiki=False&site=stackoverflow")).json() hasil = "" for count, data in enumerate(r["items"], start=1): question = data["question_id"] title = data["title"] - snippet = ( - remove_html_tags(data["excerpt"])[:80].replace("\n", "").replace(" ", "") - if len(remove_html_tags(data["excerpt"])) > 80 - else remove_html_tags(data["excerpt"]).replace("\n", "").replace(" ", "") - ) + snippet = remove_html_tags(data["excerpt"])[:80].replace("\n", "").replace(" ", "") if len(remove_html_tags(data["excerpt"])) > 80 else remove_html_tags(data["excerpt"]).replace("\n", "").replace(" ", "") hasil += f"{count}. {title}\n{snippet}\n" try: await message.reply(hasil) @@ -84,10 +76,7 @@ async def gsearch(client, message): query = message.text.split(" ", maxsplit=1)[1] msg = await message.reply_text(f"**Googling** for `{query}` ...") try: - headers = { - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " - "Chrome/61.0.3163.100 Safari/537.36" - } + headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/61.0.3163.100 Safari/537.36"} html = await http.get( f"https://www.google.com/search?q={query}&gl=id&hl=id&num=17", headers=headers, @@ -116,9 +105,7 @@ async def gsearch(client, message): arr = json.dumps(data, indent=2, ensure_ascii=False) parse = json.loads(arr) total = len(parse) - res = "".join( - f"{i['title']}\n{i['snippet']}\n\n" for i in parse - ) + res = "".join(f"{i['title']}\n{i['snippet']}\n\n" for i in parse) except Exception: exc = traceback.format_exc() return await msg.edit(exc) @@ -131,9 +118,7 @@ async def gsearch(client, message): @app.on_message(filters.command(["tr", "trans", "translate"], COMMAND_HANDLER)) @capture_err async def translate(client, message): - if message.reply_to_message and ( - message.reply_to_message.text or message.reply_to_message.caption - ): + if message.reply_to_message and (message.reply_to_message.text or message.reply_to_message.caption): target_lang = "id" if len(message.command) == 1 else message.text.split()[1] text = message.reply_to_message.text or message.reply_to_message.caption else: @@ -145,28 +130,20 @@ async def translate(client, message): text = message.text.split(None, 2)[2] msg = await message.reply("Menerjemahkan...") try: - tekstr = ( - await http.get( - f"https://script.google.com/macros/s/AKfycbyhNk6uVgrtJLEFRUT6y5B2pxETQugCZ9pKvu01-bE1gKkDRsw/exec?q={text}&target={target_lang}" - ) - ).json()["text"] + tekstr = (await http.get(f"https://script.google.com/macros/s/AKfycbyhNk6uVgrtJLEFRUT6y5B2pxETQugCZ9pKvu01-bE1gKkDRsw/exec?q={text}&target={target_lang}")).json()["text"] except Exception as err: return await msg.edit(f"Error: {str(err)}") try: await msg.edit(f"{tekstr}") except MessageTooLong: url = await rentry(tekstr.text) - await msg.edit( - f"Your translated text pasted to rentry because has long text:\n{url}" - ) + await msg.edit(f"Your translated text pasted to rentry because has long text:\n{url}") @app.on_message(filters.command(["tts"], COMMAND_HANDLER)) @capture_err async def tts(_, message): - if message.reply_to_message and ( - message.reply_to_message.text or message.reply_to_message.caption - ): + if message.reply_to_message and (message.reply_to_message.text or message.reply_to_message.caption): if len(message.text.split()) == 1: target_lang = "id" else: @@ -218,16 +195,12 @@ async def topho(client, message): if not message.reply_to_message or not message.reply_to_message.sticker: return await message.reply_text("Reply ke sticker untuk mengubah ke foto") if message.reply_to_message.sticker.is_animated: - return await message.reply_text( - "Ini sticker animasi, command ini hanya untuk sticker biasa." - ) + return await message.reply_text("Ini sticker animasi, command ini hanya untuk sticker biasa.") photo = await client.download_media( message.reply_to_message.sticker.file_id, f"tostick_{message.from_user.id}.jpg", ) - await message.reply_photo( - photo=photo, caption=f"Sticker -> Image\n@{BOT_USERNAME}" - ) + await message.reply_photo(photo=photo, caption=f"Sticker -> Image\n@{BOT_USERNAME}") os.remove(photo) except Exception as e: @@ -260,16 +233,10 @@ async def showid(client, message): ) file_info = get_file_id(message.reply_to_message) else: - _id += ( - "āž² User ID: " - f"{message.from_user.id if message.from_user else 'Anonymous'}\n" - ) + _id += "āž² User ID: " f"{message.from_user.id if message.from_user else 'Anonymous'}\n" file_info = get_file_id(message) if file_info: - _id += ( - f"{file_info.message_type}: " - f"{file_info.file_id}\n" - ) + _id += f"{file_info.message_type}: " f"{file_info.file_id}\n" await message.reply_text(_id, quote=True) @@ -300,12 +267,8 @@ async def who_is(client, message): if message.chat.type in (("supergroup", "channel")): try: chat_member_p = await message.chat.get_member(from_user.id) - joined_date = datetime.fromtimestamp( - chat_member_p.joined_date or time.time() - ).strftime("%Y.%m.%d %H:%M:%S") - message_out_str += ( - "āž²Joined this Chat on: " f"{joined_date}" "\n" - ) + joined_date = datetime.fromtimestamp(chat_member_p.joined_date or time.time()).strftime("%Y.%m.%d %H:%M:%S") + message_out_str += "āž²Joined this Chat on: " f"{joined_date}" "\n" except UserNotParticipant: pass if chat_photo := from_user.photo: @@ -332,9 +295,7 @@ async def who_is(client, message): await status_message.delete() -headers = { - "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10" -} +headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10"} async def get_content(url): @@ -387,22 +348,16 @@ async def mdl_callback(bot: Client, query: CallbackQuery): try: res = (await http.get(f"https://kuryana.vercel.app/id/{slug}")).json() result += f"Title: {res['data']['title']}\n" - result += ( - f"AKA: {res['data']['others']['also_known_as']}\n\n" - ) + result += f"AKA: {res['data']['others']['also_known_as']}\n\n" result += f"Rating: {res['data']['details']['score']}\n" result += f"Content Rating: {res['data']['details']['content_rating']}\n" result += f"Type: {res['data']['details']['type']}\n" - result += ( - f"Country: {res['data']['details']['country']}\n" - ) + result += f"Country: {res['data']['details']['country']}\n" if res["data"]["details"]["type"] == "Movie": result += f"Release Date: {res['data']['details']['release_date']}\n" elif res["data"]["details"]["type"] == "Drama": result += f"Episode: {res['data']['details']['episodes']}\n" - result += ( - f"Aired: {res['data']['details']['aired']}\n" - ) + result += f"Aired: {res['data']['details']['aired']}\n" try: result += f"Aired on: {res['data']['details']['aired_on']}\n" except: @@ -411,17 +366,11 @@ async def mdl_callback(bot: Client, query: CallbackQuery): result += f"Original Network: {res['data']['details']['original_network']}\n" except: pass - result += ( - f"Duration: {res['data']['details']['duration']}\n" - ) - result += ( - f"Genre: {res['data']['others']['genres']}\n\n" - ) + result += f"Duration: {res['data']['details']['duration']}\n" + result += f"Genre: {res['data']['others']['genres']}\n\n" result += f"Synopsis: {res['data']['synopsis']}\n" result += f"Tags: {res['data']['others']['tags']}\n" - btn = InlineKeyboardMarkup( - [[InlineKeyboardButton("šŸŽ¬ Open MyDramaList", url=res["data"]["link"])]] - ) + btn = InlineKeyboardMarkup([[InlineKeyboardButton("šŸŽ¬ Open MyDramaList", url=res["data"]["link"])]]) await query.message.edit_text(result, reply_markup=btn) except Exception as e: await query.message.edit_text(f"ERROR:\n{e}") @@ -435,13 +384,9 @@ async def mdl_callback(bot: Client, query: CallbackQuery): async def imdb1_search(client, message): BTN = [] if message.sender_chat: - return await message.reply( - "Mohon maaf fitur tidak tersedia untuk akun channel, harap ganti ke akun biasa.." - ) + return await message.reply("Mohon maaf fitur tidak tersedia untuk akun channel, harap ganti ke akun biasa..") if len(message.command) == 1: - return await message.reply( - "Berikan aku nama series atau movie yang ingin dicari. šŸ¤·šŸ»ā€ā™‚ļø", quote=True - ) + return await message.reply("Berikan aku nama series atau movie yang ingin dicari. šŸ¤·šŸ»ā€ā™‚ļø", quote=True) r, judul = message.text.split(None, 1) k = await message.reply("šŸ”Ž Sedang mencari di Database IMDB..", quote=True) msg = "" @@ -458,11 +403,7 @@ async def imdb1_search(client, message): type = movie.get("q").replace("feature", "movie").capitalize() movieID = re.findall(r"tt(\d+)", movie.get("id"))[0] msg += f"{count}. {title} {year} ~ {type}\n" - BTN.append( - InlineKeyboardButton( - text=count, callback_data=f"imdbid#{message.from_user.id}#{movieID}" - ) - ) + BTN.append(InlineKeyboardButton(text=count, callback_data=f"imdbid#{message.from_user.id}#{movieID}")) buttons.add(*BTN) await k.edit(msg, reply_markup=buttons) except Exception as err: @@ -480,18 +421,12 @@ async def imdbcb_backup(bot: Client, query: CallbackQuery): url = f"https://www.imdb.com/title/tt{movie}/" resp = await get_content(url) sop = BeautifulSoup(resp, "lxml") - r_json = json.loads( - sop.find("script", attrs={"type": "application/ld+json"}).contents[0] - ) + r_json = json.loads(sop.find("script", attrs={"type": "application/ld+json"}).contents[0]) res_str = "" type = f"{r_json['@type']}" if r_json.get("@type") else "" if r_json.get("name"): try: - tahun = ( - sop.select('ul[data-testid="hero-title-block__metadata"]')[0] - .find(class_="sc-8c396aa2-2 itZqyK") - .text - ) + tahun = sop.select('ul[data-testid="hero-title-block__metadata"]')[0].find(class_="sc-8c396aa2-2 itZqyK").text except: tahun = "-" res_str += f"šŸ“¹ Judul: {r_json['name']} [{tahun}] ({type})\n" @@ -500,63 +435,31 @@ async def imdbcb_backup(bot: Client, query: CallbackQuery): else: res_str += "\n" if sop.select('li[data-testid="title-techspec_runtime"]'): - durasi = ( - sop.select('li[data-testid="title-techspec_runtime"]')[0] - .find(class_="ipc-metadata-list-item__content-container") - .text - ) + durasi = sop.select('li[data-testid="title-techspec_runtime"]')[0].find(class_="ipc-metadata-list-item__content-container").text res_str += f"Durasi: {GoogleTranslator('auto', 'id').translate(durasi)}\n" if r_json.get("contentRating"): res_str += f"Kategori: {r_json['contentRating']} \n" if r_json.get("aggregateRating"): res_str += f"Peringkat: {r_json['aggregateRating']['ratingValue']}ā­ļø dari {r_json['aggregateRating']['ratingCount']} pengguna \n" if sop.select('li[data-testid="title-details-releasedate"]'): - rilis = ( - sop.select('li[data-testid="title-details-releasedate"]')[0] - .find( - class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link" - ) - .text - ) - rilis_url = sop.select('li[data-testid="title-details-releasedate"]')[ - 0 - ].find( - class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link" - )[ - "href" - ] - res_str += ( - f"Rilis: {rilis}\n" - ) + rilis = sop.select('li[data-testid="title-details-releasedate"]')[0].find(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link").text + rilis_url = sop.select('li[data-testid="title-details-releasedate"]')[0].find(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link")["href"] + res_str += f"Rilis: {rilis}\n" if r_json.get("genre"): - genre = "".join( - f"{GENRES_EMOJI[i]} #{i.replace('-', '_').replace(' ', '_')}, " - if i in GENRES_EMOJI - else f"#{i.replace('-', '_').replace(' ', '_')}, " - for i in r_json["genre"] - ) + genre = "".join(f"{GENRES_EMOJI[i]} #{i.replace('-', '_').replace(' ', '_')}, " if i in GENRES_EMOJI else f"#{i.replace('-', '_').replace(' ', '_')}, " for i in r_json["genre"]) genre = genre[:-2] res_str += f"Genre: {genre}\n" if sop.select('li[data-testid="title-details-origin"]'): country = "".join( f"{demoji(country.text)} #{country.text.replace(' ', '_').replace('-', '_')}, " - for country in sop.select('li[data-testid="title-details-origin"]')[ - 0 - ].findAll( - class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link" - ) + for country in sop.select('li[data-testid="title-details-origin"]')[0].findAll(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link") ) country = country[:-2] res_str += f"Negara: {country}\n" if sop.select('li[data-testid="title-details-languages"]'): language = "".join( - f"#{lang.text.replace(' ', '_').replace('-', '_')}, " - for lang in sop.select('li[data-testid="title-details-languages"]')[ - 0 - ].findAll( - class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link" - ) + f"#{lang.text.replace(' ', '_').replace('-', '_')}, " for lang in sop.select('li[data-testid="title-details-languages"]')[0].findAll(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link") ) language = language[:-2] res_str += f"Bahasa: {language}\n" @@ -587,9 +490,7 @@ async def imdbcb_backup(bot: Client, query: CallbackQuery): actors = actors[:-2] res_str += f"Pemeran: {actors}\n\n" if r_json.get("description"): - summary = GoogleTranslator("auto", "id").translate( - r_json.get("description") - ) + summary = GoogleTranslator("auto", "id").translate(r_json.get("description")) res_str += f"šŸ“œ Plot: {summary}\n\n" if r_json.get("keywords"): keywords = r_json["keywords"].split(",") @@ -600,11 +501,7 @@ async def imdbcb_backup(bot: Client, query: CallbackQuery): key_ = key_[:-2] res_str += f"šŸ”„ Kata Kunci: {key_} \n" if sop.select('li[data-testid="award_information"]'): - awards = ( - sop.select('li[data-testid="award_information"]')[0] - .find(class_="ipc-metadata-list-item__list-content-item") - .text - ) + awards = sop.select('li[data-testid="award_information"]')[0].find(class_="ipc-metadata-list-item__list-content-item").text res_str += f"šŸ† Penghargaan: {GoogleTranslator('auto', 'id').translate(awards)}\n\n" else: res_str += "\n" @@ -614,23 +511,13 @@ async def imdbcb_backup(bot: Client, query: CallbackQuery): markup = InlineKeyboardMarkup( [ [ - InlineKeyboardButton( - "šŸŽ¬ Open IMDB", url=f"https://www.imdb.com{r_json['url']}" - ), + InlineKeyboardButton("šŸŽ¬ Open IMDB", url=f"https://www.imdb.com{r_json['url']}"), InlineKeyboardButton("ā–¶ļø Trailer", url=trailer_url), ] ] ) else: - markup = InlineKeyboardMarkup( - [ - [ - InlineKeyboardButton( - "šŸŽ¬ Open IMDB", url=f"https://www.imdb.com{r_json['url']}" - ) - ] - ] - ) + markup = InlineKeyboardMarkup([[InlineKeyboardButton("šŸŽ¬ Open IMDB", url=f"https://www.imdb.com{r_json['url']}")]]) if thumb := r_json.get("image"): try: await query.message.reply_photo( @@ -657,9 +544,7 @@ async def imdbcb_backup(bot: Client, query: CallbackQuery): ) await query.message.delete() else: - await query.message.edit( - res_str, reply_markup=markup, disable_web_page_preview=False - ) + await query.message.edit(res_str, reply_markup=markup, disable_web_page_preview=False) await query.answer() except MessageNotModified: pass @@ -696,11 +581,7 @@ async def imdb_en_search(client, message): type = movie.get("qid").replace("feature", "movie").capitalize() movieID = re.findall(r"tt(\d+)", movie.get("id"))[0] msg += f"{count}. {titles} {year} ~ {type}\n" - BTN.append( - InlineKeyboardButton( - text=count, callback_data=f"imdben#{message.from_user.id}#{movieID}" - ) - ) + BTN.append(InlineKeyboardButton(text=count, callback_data=f"imdben#{message.from_user.id}#{movieID}")) buttons.add(*BTN) await k.edit(msg, reply_markup=buttons) except Exception as err: @@ -719,18 +600,12 @@ async def imdb_en_callback(bot: Client, query: CallbackQuery): url = f"https://www.imdb.com/title/tt{movie}/" resp = await get_content(url) sop = BeautifulSoup(resp, "lxml") - r_json = json.loads( - sop.find("script", attrs={"type": "application/ld+json"}).contents[0] - ) + r_json = json.loads(sop.find("script", attrs={"type": "application/ld+json"}).contents[0]) res_str = "" type = f"{r_json['@type']}" if r_json.get("@type") else "" if r_json.get("name"): try: - tahun = ( - sop.select('ul[data-testid="hero-title-block__metadata"]')[0] - .find(class_="sc-8c396aa2-2 itZqyK") - .text - ) + tahun = sop.select('ul[data-testid="hero-title-block__metadata"]')[0].find(class_="sc-8c396aa2-2 itZqyK").text except: tahun = "-" res_str += f"šŸ“¹ Title: {r_json['name']} [{tahun}] ({type})\n" @@ -739,61 +614,31 @@ async def imdb_en_callback(bot: Client, query: CallbackQuery): else: res_str += "\n" if sop.select('li[data-testid="title-techspec_runtime"]'): - durasi = ( - sop.select('li[data-testid="title-techspec_runtime"]')[0] - .find(class_="ipc-metadata-list-item__content-container") - .text - ) + durasi = sop.select('li[data-testid="title-techspec_runtime"]')[0].find(class_="ipc-metadata-list-item__content-container").text res_str += f"Duration: {durasi}\n" if r_json.get("contentRating"): res_str += f"Category: {r_json['contentRating']} \n" if r_json.get("aggregateRating"): res_str += f"Rating: {r_json['aggregateRating']['ratingValue']}ā­ļø from {r_json['aggregateRating']['ratingCount']} user \n" if sop.select('li[data-testid="title-details-releasedate"]'): - rilis = ( - sop.select('li[data-testid="title-details-releasedate"]')[0] - .find( - class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link" - ) - .text - ) - rilis_url = sop.select('li[data-testid="title-details-releasedate"]')[ - 0 - ].find( - class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link" - )[ - "href" - ] + rilis = sop.select('li[data-testid="title-details-releasedate"]')[0].find(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link").text + rilis_url = sop.select('li[data-testid="title-details-releasedate"]')[0].find(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link")["href"] res_str += f"Release Data: {rilis}\n" if r_json.get("genre"): - genre = "".join( - f"{GENRES_EMOJI[i]} #{i.replace('-', '_').replace(' ', '_')}, " - if i in GENRES_EMOJI - else f"#{i.replace('-', '_').replace(' ', '_')}, " - for i in r_json["genre"] - ) + genre = "".join(f"{GENRES_EMOJI[i]} #{i.replace('-', '_').replace(' ', '_')}, " if i in GENRES_EMOJI else f"#{i.replace('-', '_').replace(' ', '_')}, " for i in r_json["genre"]) genre = genre[:-2] res_str += f"Genre: {genre}\n" if sop.select('li[data-testid="title-details-origin"]'): country = "".join( f"{demoji(country.text)} #{country.text.replace(' ', '_').replace('-', '_')}, " - for country in sop.select('li[data-testid="title-details-origin"]')[ - 0 - ].findAll( - class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link" - ) + for country in sop.select('li[data-testid="title-details-origin"]')[0].findAll(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link") ) country = country[:-2] res_str += f"Country: {country}\n" if sop.select('li[data-testid="title-details-languages"]'): language = "".join( - f"#{lang.text.replace(' ', '_').replace('-', '_')}, " - for lang in sop.select('li[data-testid="title-details-languages"]')[ - 0 - ].findAll( - class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link" - ) + f"#{lang.text.replace(' ', '_').replace('-', '_')}, " for lang in sop.select('li[data-testid="title-details-languages"]')[0].findAll(class_="ipc-metadata-list-item__list-content-item ipc-metadata-list-item__list-content-item--link") ) language = language[:-2] res_str += f"Language: {language}\n" @@ -834,11 +679,7 @@ async def imdb_en_callback(bot: Client, query: CallbackQuery): key_ = key_[:-2] res_str += f"šŸ”„ Keywords: {key_} \n" if sop.select('li[data-testid="award_information"]'): - awards = ( - sop.select('li[data-testid="award_information"]')[0] - .find(class_="ipc-metadata-list-item__list-content-item") - .text - ) + awards = sop.select('li[data-testid="award_information"]')[0].find(class_="ipc-metadata-list-item__list-content-item").text res_str += f"šŸ† Awards: {awards}\n\n" else: res_str += "\n" @@ -848,23 +689,13 @@ async def imdb_en_callback(bot: Client, query: CallbackQuery): markup = InlineKeyboardMarkup( [ [ - InlineKeyboardButton( - "šŸŽ¬ Open IMDB", url=f"https://www.imdb.com{r_json['url']}" - ), + InlineKeyboardButton("šŸŽ¬ Open IMDB", url=f"https://www.imdb.com{r_json['url']}"), InlineKeyboardButton("ā–¶ļø Trailer", url=trailer_url), ] ] ) else: - markup = InlineKeyboardMarkup( - [ - [ - InlineKeyboardButton( - "šŸŽ¬ Open IMDB", url=f"https://www.imdb.com{r_json['url']}" - ) - ] - ] - ) + markup = InlineKeyboardMarkup([[InlineKeyboardButton("šŸŽ¬ Open IMDB", url=f"https://www.imdb.com{r_json['url']}")]]) if thumb := r_json.get("image"): try: await query.message.reply_photo( @@ -891,9 +722,7 @@ async def imdb_en_callback(bot: Client, query: CallbackQuery): ) await query.message.delete() else: - await query.message.edit( - res_str, reply_markup=markup, disable_web_page_preview=False - ) + await query.message.edit(res_str, reply_markup=markup, disable_web_page_preview=False) await query.answer() except Exception: exc = traceback.format_exc() diff --git a/misskaty/plugins/nightmode.py b/misskaty/plugins/nightmode.py index 607ebbe8..cf176be0 100644 --- a/misskaty/plugins/nightmode.py +++ b/misskaty/plugins/nightmode.py @@ -47,9 +47,7 @@ async def job_close(): jam = now.strftime("%H:%M") try: # version = check_output(["git log -1 --date=format:v%y.%m%d.%H%M --pretty=format:%cd"], shell=True).decode() - reply_markup = InlineKeyboardMarkup( - [[InlineKeyboardButton(text="ā¤ļø", callback_data="nightmd")]] - ) + reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton(text="ā¤ļø", callback_data="nightmd")]]) await app.set_chat_permissions( -1001128045651, ChatPermissions(can_send_messages=False, can_invite_users=True), @@ -87,9 +85,7 @@ async def job_close_ymoviez(): jam = now.strftime("%H:%M") try: # version = check_output(["git log -1 --date=format:v%y.%m%d.%H%M --pretty=format:%cd"], shell=True).decode() - reply_markup = InlineKeyboardMarkup( - [[InlineKeyboardButton(text="ā¤ļø", callback_data="nightmd")]] - ) + reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton(text="ā¤ļø", callback_data="nightmd")]]) await app.set_chat_permissions( -1001255283935, ChatPermissions(can_send_messages=False, can_invite_users=True), @@ -126,9 +122,7 @@ async def job_open(): jam = now.strftime("%H:%M") try: # version = check_output(["git log -1 --date=format:v%y.%m%d.%H%M --pretty=format:%cd"], shell=True).decode() - reply_markup = InlineKeyboardMarkup( - [[InlineKeyboardButton(text="ā¤ļø", callback_data="nightmd")]] - ) + reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton(text="ā¤ļø", callback_data="nightmd")]]) await app.set_chat_permissions( -1001128045651, ChatPermissions( @@ -172,9 +166,7 @@ async def job_open_ymoviez(): jam = now.strftime("%H:%M") try: # version = check_output(["git log -1 --date=format:v%y.%m%d.%H%M --pretty=format:%cd"], shell=True).decode() - reply_markup = InlineKeyboardMarkup( - [[InlineKeyboardButton(text="ā¤ļø", callback_data="nightmd")]] - ) + reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton(text="ā¤ļø", callback_data="nightmd")]]) await app.set_chat_permissions( -1001255283935, ChatPermissions( diff --git a/misskaty/plugins/notes.py b/misskaty/plugins/notes.py index 94c81442..2095d6ae 100644 --- a/misskaty/plugins/notes.py +++ b/misskaty/plugins/notes.py @@ -24,7 +24,6 @@ SOFTWARE. from re import findall from pyrogram import filters from misskaty import app -from misskaty.vars import COMMAND_HANDLER from misskaty.core.decorator.errors import capture_err from misskaty.core.decorator.permissions import adminsOnly from misskaty.core.keyboard import ikb @@ -64,11 +63,9 @@ async def save_notee(_, message): _type = "text" if message.reply_to_message.text else "sticker" note = { "type": _type, - "data": message.reply_to_message.text.markdown - if _type == "text" - else message.reply_to_message.sticker.file_id, + "data": message.reply_to_message.text.markdown if _type == "text" else message.reply_to_message.sticker.file_id, } - prefix = message.text.split()[0][0] + message.text.split()[0][0] chat_id = message.chat.id await save_note(chat_id, name, note) await message.reply(f"__**Saved note {name}.**__") @@ -77,7 +74,7 @@ async def save_notee(_, message): @app.on_message(filters.command("notes") & ~filters.private) @capture_err async def get_notes(_, message): - prefix = message.text.split()[0][0] + message.text.split()[0][0] chat_id = message.chat.id _notes = await get_note_names(chat_id) @@ -104,8 +101,7 @@ async def get_one_note(_, message): data = _note["data"] keyb = None if findall(r"\[.+\,.+\]", data): - keyboard = extract_text_and_keyb(ikb, data) - if keyboard: + if keyboard := extract_text_and_keyb(ikb, data): data, keyb = keyboard await message.reply_text( data, @@ -125,7 +121,7 @@ async def del_note(_, message): if not name: return await message.reply("**Usage**\n__/delete [NOTE_NAME]__") - prefix = message.text.split()[0][0] + message.text.split()[0][0] chat_id = message.chat.id deleted = await delete_note(chat_id, name) diff --git a/misskaty/plugins/ocr.py b/misskaty/plugins/ocr.py index 56300c68..f0d5b3f6 100644 --- a/misskaty/plugins/ocr.py +++ b/misskaty/plugins/ocr.py @@ -22,9 +22,7 @@ __HELP__ = "/ocr [reply to photo] - Read Text From Image" async def ocr(_, message): reply = message.reply_to_message if not reply or not reply.photo and not reply.sticker: - return await message.reply_text( - f"Reply photo with /{message.command[0]} command" - ) + return await message.reply_text(f"Reply photo with /{message.command[0]} command") msg = await message.reply("Reading image...") try: file_path = await reply.download() diff --git a/misskaty/plugins/paste.py b/misskaty/plugins/paste.py index 104dfa13..94f723fe 100644 --- a/misskaty/plugins/paste.py +++ b/misskaty/plugins/paste.py @@ -64,18 +64,14 @@ async def create(_, message): reply = message.reply_to_message target = str(message.command[0]).split("@", maxsplit=1)[0] if not reply and len(message.command) < 2: - return await message.reply_text( - f"**Reply To A Message With /{target} or with command**" - ) + return await message.reply_text(f"**Reply To A Message With /{target} or with command**") msg = await message.reply_text("`Pasting to Rentry...`") data = "" limit = 1024 * 1024 if reply and reply.document: if reply.document.file_size > limit: - return await msg.edit( - f"**You can only paste files smaller than {humanbytes(limit)}.**" - ) + return await msg.edit(f"**You can only paste files smaller than {humanbytes(limit)}.**") if not pattern.search(reply.document.mime_type): return await msg.edit("**Only text files can be pasted.**") file = await reply.download() @@ -98,9 +94,7 @@ async def create(_, message): if message.from_user.username: uname = f"@{message.from_user.username}" else: - uname = ( - f"[{message.from_user.first_name}](tg://user?id={message.from_user.id})" - ) + uname = f"[{message.from_user.first_name}](tg://user?id={message.from_user.id})" else: uname = message.sender_chat.title @@ -113,13 +107,7 @@ async def create(_, message): if not url: return await msg.edit("Text Too Short Or File Problems") button = [[InlineKeyboardButton("Open Link", url=url)]] - button.append( - [ - InlineKeyboardButton( - "Share Link", url=f"https://telegram.me/share/url?url={url}" - ) - ] - ) + button.append([InlineKeyboardButton("Share Link", url=f"https://telegram.me/share/url?url={url}")]) pasted = f"**Successfully pasted your data to Rentry.\n\nPaste by {uname}**" await msg.edit(pasted, reply_markup=InlineKeyboardMarkup(button)) @@ -130,18 +118,14 @@ async def create(_, message): reply = message.reply_to_message target = str(message.command[0]).split("@", maxsplit=1)[0] if not reply and len(message.command) < 2: - return await message.reply_text( - f"**Reply To A Message With /{target} or with command**" - ) + return await message.reply_text(f"**Reply To A Message With /{target} or with command**") msg = await message.reply_text("`Pasting to TempPaste...`") data = "" limit = 1024 * 1024 if reply and reply.document: if reply.document.file_size > limit: - return await msg.edit( - f"**You can only paste files smaller than {humanbytes(limit)}.**" - ) + return await msg.edit(f"**You can only paste files smaller than {humanbytes(limit)}.**") if not pattern.search(reply.document.mime_type): return await msg.edit("**Only text files can be pasted.**") file = await reply.download() @@ -164,9 +148,7 @@ async def create(_, message): if message.from_user.username: uname = f"@{message.from_user.username}" else: - uname = ( - f"[{message.from_user.first_name}](tg://user?id={message.from_user.id})" - ) + uname = f"[{message.from_user.first_name}](tg://user?id={message.from_user.id})" else: uname = message.sender_chat.title @@ -190,13 +172,7 @@ async def create(_, message): if not url: return await msg.edit("Text Too Short Or File Problems") button = [[InlineKeyboardButton("Open Link", url=url)]] - button.append( - [ - InlineKeyboardButton( - "Share Link", url=f"https://telegram.me/share/url?url={url}" - ) - ] - ) + button.append([InlineKeyboardButton("Share Link", url=f"https://telegram.me/share/url?url={url}")]) pasted = f"**Successfully pasted your data to Tempaste.\n\nPaste by {uname}**" await msg.edit(pasted, reply_markup=InlineKeyboardMarkup(button)) diff --git a/misskaty/plugins/ping.py b/misskaty/plugins/ping.py index e0c1b7cb..3b06315c 100644 --- a/misskaty/plugins/ping.py +++ b/misskaty/plugins/ping.py @@ -23,9 +23,7 @@ async def ping(_, message): end_t = time.time() time_taken_s = round(end_t - start_t, 3) try: - await rm.edit( - f"🐈 MissKatyBot online.\n\nPing: {time_taken_s} detik\nUptime: {currentTime}" - ) + await rm.edit(f"🐈 MissKatyBot online.\n\nPing: {time_taken_s} detik\nUptime: {currentTime}") except Exception: pass @@ -51,9 +49,7 @@ async def ping_handler(_, message): check=True, capture_output=True, ) - resp_time = findall(r"time=.+m?s", shell.stdout, MULTILINE)[0].replace( - "time=", "" - ) + resp_time = findall(r"time=.+m?s", shell.stdout, MULTILINE)[0].replace("time=", "") text += f" **{dc.upper()}:** {resp_time} āœ…\n" except Exception: diff --git a/misskaty/plugins/quotly.py b/misskaty/plugins/quotly.py index 5b2c988e..2894310d 100644 --- a/misskaty/plugins/quotly.py +++ b/misskaty/plugins/quotly.py @@ -38,11 +38,7 @@ async def get_message_sender_name(m: Message): if m.forward_sender_name: return m.forward_sender_name elif m.forward_from: - return ( - f"{m.forward_from.first_name} {m.forward_from.last_name}" - if m.forward_from.last_name - else m.forward_from.first_name - ) + return f"{m.forward_from.first_name} {m.forward_from.last_name}" if m.forward_from.last_name else m.forward_from.first_name elif m.forward_from_chat: return m.forward_from_chat.title @@ -61,42 +57,22 @@ async def get_message_sender_name(m: Message): async def get_custom_emoji(m: Message): if m.forward_date: - return ( - "" - if m.forward_sender_name - or not m.forward_from - and m.forward_from_chat - or not m.forward_from - else m.forward_from.emoji_status.custom_emoji_id - ) + return "" if m.forward_sender_name or not m.forward_from and m.forward_from_chat or not m.forward_from else m.forward_from.emoji_status.custom_emoji_id return m.from_user.emoji_status.custom_emoji_id if m.from_user else "" async def get_message_sender_username(m: Message): if m.forward_date: - if ( - not m.forward_sender_name - and not m.forward_from - and m.forward_from_chat - and m.forward_from_chat.username - ): + if not m.forward_sender_name and not m.forward_from and m.forward_from_chat and m.forward_from_chat.username: return m.forward_from_chat.username - elif ( - not m.forward_sender_name - and not m.forward_from - and m.forward_from_chat - or m.forward_sender_name - or not m.forward_from - ): + elif not m.forward_sender_name and not m.forward_from and m.forward_from_chat or m.forward_sender_name or not m.forward_from: return "" else: return m.forward_from.username or "" elif m.from_user and m.from_user.username: return m.from_user.username - elif ( - m.from_user or m.sender_chat and not m.sender_chat.username or not m.sender_chat - ): + elif m.from_user or m.sender_chat and not m.sender_chat.username or not m.sender_chat: return "" else: return m.sender_chat.username @@ -104,25 +80,14 @@ async def get_message_sender_username(m: Message): async def get_message_sender_photo(m: Message): if m.forward_date: - if ( - not m.forward_sender_name - and not m.forward_from - and m.forward_from_chat - and m.forward_from_chat.photo - ): + if not m.forward_sender_name and not m.forward_from and m.forward_from_chat and m.forward_from_chat.photo: return { "small_file_id": m.forward_from_chat.photo.small_file_id, "small_photo_unique_id": m.forward_from_chat.photo.small_photo_unique_id, "big_file_id": m.forward_from_chat.photo.big_file_id, "big_photo_unique_id": m.forward_from_chat.photo.big_photo_unique_id, } - elif ( - not m.forward_sender_name - and not m.forward_from - and m.forward_from_chat - or m.forward_sender_name - or not m.forward_from - ): + elif not m.forward_sender_name and not m.forward_from and m.forward_from_chat or m.forward_sender_name or not m.forward_from: return "" else: return ( @@ -200,16 +165,10 @@ async def pyrogram_to_quotly(messages): the_message_dict_to_append["avatar"] = True the_message_dict_to_append["from"] = {} the_message_dict_to_append["from"]["id"] = await get_message_sender_id(message) - the_message_dict_to_append["from"]["name"] = await get_message_sender_name( - message - ) - the_message_dict_to_append["from"][ - "username" - ] = await get_message_sender_username(message) + the_message_dict_to_append["from"]["name"] = await get_message_sender_name(message) + the_message_dict_to_append["from"]["username"] = await get_message_sender_username(message) the_message_dict_to_append["from"]["type"] = message.chat.type.name.lower() - the_message_dict_to_append["from"]["photo"] = await get_message_sender_photo( - message - ) + the_message_dict_to_append["from"]["photo"] = await get_message_sender_photo(message) if message.reply_to_message: the_message_dict_to_append["replyMessage"] = { "name": await get_message_sender_name(message.reply_to_message), @@ -265,9 +224,7 @@ async def msg_quotly_cmd(c: Client, m: Message): except Exception: return await m.reply_text("šŸ¤·šŸ»ā€ā™‚ļø") try: - messages_one = await c.get_messages( - chat_id=m.chat.id, message_ids=m.reply_to_message.id, replies=-1 - ) + messages_one = await c.get_messages(chat_id=m.chat.id, message_ids=m.reply_to_message.id, replies=-1) messages = [messages_one] except Exception: return await m.reply_text("šŸ¤·šŸ»ā€ā™‚ļø") diff --git a/misskaty/plugins/scrapwebsite.py b/misskaty/plugins/scrapwebsite.py index 85c4b409..43fb5b8a 100644 --- a/misskaty/plugins/scrapwebsite.py +++ b/misskaty/plugins/scrapwebsite.py @@ -8,7 +8,6 @@ # This plugin to scrape from melongmovie, and lk21 from bs4 import BeautifulSoup -import aiohttp import re import traceback from misskaty import app, BOT_USERNAME @@ -41,9 +40,7 @@ async def nodrakor(_, message): msg = await message.reply("Sedang proses scrap, mohon tunggu..") try: - headers = { - "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" - } + headers = {"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"} html = await http.get(f"https://109.234.34.246/?s={judul}", headers=headers) soup = BeautifulSoup(html.text, "lxml") res = soup.find_all(class_="content-thumbnail text-center") @@ -55,9 +52,7 @@ async def nodrakor(_, message): if not data: return await msg.edit("Oops, data film tidak ditemukan.") res = "".join(f"{i['judul']}\n{i['link']}\n\n" for i in data) - await msg.edit( - f"Hasil Pencarian di Nodrakor:\n{res}\nScraped by @{BOT_USERNAME}" - ) + await msg.edit(f"Hasil Pencarian di Nodrakor:\n{res}\nScraped by @{BOT_USERNAME}") except Exception as e: await msg.edit(f"ERROR: {str(e)}") @@ -72,13 +67,9 @@ async def ngefilm21(_, message): msg = await message.reply("Sedang proses scrap, mohon tunggu..") try: - headers = { - "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" - } + headers = {"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"} - html = await http.get( - f"http://185.237.253.209/search?q={title}", headers=headers - ) + html = await http.get(f"http://185.237.253.209/search?q={title}", headers=headers) soup = BeautifulSoup(html.text, "lxml") res = soup.find_all("h2") data = [] @@ -105,19 +96,12 @@ async def movikucc(_, message): judul = message.text.split(" ", maxsplit=1)[1] msg = await message.reply("Sedang proses scrap, mohon tunggu..") try: - headers = { - "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" - } + headers = {"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"} html = await http.get(f"https://107.152.39.187/?s={judul}", headers=headers) soup = BeautifulSoup(html.text, "lxml") data = soup.find_all(class_="bx") - res = "".join( - f"Judul: {i.find_all('a')[0]['title']}\nLink: {i.find_all('a')[0]['href']}\n\n" - for i in data - ) - await msg.edit( - f"Hasil Scrap di Movieku.cc:\n{res} āš ļø Gunakan command /movieku_scrap [link] untuk mengambil link download (hanya untuk movie)." - ) + res = "".join(f"Judul: {i.find_all('a')[0]['title']}\nLink: {i.find_all('a')[0]['href']}\n\n" for i in data) + await msg.edit(f"Hasil Scrap di Movieku.cc:\n{res} āš ļø Gunakan command /movieku_scrap [link] untuk mengambil link download (hanya untuk movie).") except Exception as e: await msg.edit(f"ERROR: {str(e)}") @@ -131,13 +115,9 @@ async def savefilm21(_, message): judul = "" msg = await message.reply("Sedang proses scrap, mohon tunggu..") try: - headers = { - "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" - } + headers = {"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"} - html = await http.get( - f"http://185.99.135.215/?s={judul}", headers=headers, follow_redirects=False - ) + html = await http.get(f"http://185.99.135.215/?s={judul}", headers=headers, follow_redirects=False) soup = BeautifulSoup(html.text, "lxml") res = soup.find_all(class_="entry-title") data = [] @@ -148,12 +128,8 @@ async def savefilm21(_, message): data.append({"judul": judul, "link": link}) if not data: return await msg.edit("Oops, data film tidak ditemukan") - res = "".join( - f"Judul: {i['judul']}\nLink: {i['link']}\n\n" for i in data - ) - await msg.edit( - f"Hasil Scrap {judul} dari Savefilm21:\n{res}\n\nāš ļø Gunakan /savefilm21_scrap [link] untuk mengambil link downloadnya." - ) + res = "".join(f"Judul: {i['judul']}\nLink: {i['link']}\n\n" for i in data) + await msg.edit(f"Hasil Scrap {judul} dari Savefilm21:\n{res}\n\nāš ļø Gunakan /savefilm21_scrap [link] untuk mengambil link downloadnya.") except Exception as e: await msg.edit(f"ERROR: {str(e)}") @@ -168,9 +144,7 @@ async def melongmovie(_, message): msg = await message.reply("Sedang proses scrap, mohon tunggu..") try: - headers = { - "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" - } + headers = {"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"} html = await http.get(f"http://167.99.31.48/?s={judul}", headers=headers) soup = BeautifulSoup(html.text, "lxml") @@ -186,10 +160,7 @@ async def melongmovie(_, message): data.append({"judul": title, "link": url, "kualitas": kualitas}) if not data: return await msg.edit("Oops, data film tidak ditemukan di melongmovie") - res = "".join( - f"Judul: {i['judul']}\nKualitas: {i['kualitas']}\nLink: {i['link']}\n\n" - for i in data - ) + res = "".join(f"Judul: {i['judul']}\nKualitas: {i['kualitas']}\nLink: {i['link']}\n\n" for i in data) # return await message.reply(json.dumps(data, indent=2, ensure_ascii=False)) return await msg.edit(res) except Exception as e: @@ -202,10 +173,7 @@ async def terbit21_scrap(_, message): if len(message.command) == 1: r = await http.get("https://yasirapi.eu.org/terbit21") res = r.json() - data = "".join( - f"**Judul: {i['judul']}**\n`{i['kategori']}`\n{i['link']}\n**Download:** [Klik Disini]({i['dl']})\n\n" - for i in res["result"] - ) + data = "".join(f"**Judul: {i['judul']}**\n`{i['kategori']}`\n{i['link']}\n**Download:** [Klik Disini]({i['dl']})\n\n" for i in res["result"]) try: return await message.reply( f"**Daftar rilis movie terbaru di web Terbit21**:\n{data}", @@ -213,17 +181,12 @@ async def terbit21_scrap(_, message): ) except MessageTooLong: msg = await rentry(data) - return await message.reply( - f"Karena hasil scrape terlalu panjang, maka hasil scrape di post ke rentry.\n\n{msg}" - ) + return await message.reply(f"Karena hasil scrape terlalu panjang, maka hasil scrape di post ke rentry.\n\n{msg}") judul = message.text.split(" ", maxsplit=1)[1] msg = await message.reply(f"Mencari film di Terbit21 dg keyword {judul}..") r = await http.get(f"https://yasirapi.eu.org/terbit21?q={judul}") res = r.json() - data = "".join( - f"**Judul: {i['judul']}**\n`{i['kategori']}`\n{i['link']}\n**Download:** [Klik Disini]({i['dl']})\n\n" - for i in res["result"] - ) + data = "".join(f"**Judul: {i['judul']}**\n`{i['kategori']}`\n{i['link']}\n**Download:** [Klik Disini]({i['dl']})\n\n" for i in res["result"]) if not res["result"]: return await msg.edit("Yahh, ga ada hasil ditemukan") try: @@ -233,9 +196,7 @@ async def terbit21_scrap(_, message): ) except MessageTooLong: pesan = await rentry(data) - await msg.edit( - f"Karena hasil scrape terlalu panjang, maka hasil scrape di post ke rentry.\n\n{pesan}" - ) + await msg.edit(f"Karena hasil scrape terlalu panjang, maka hasil scrape di post ke rentry.\n\n{pesan}") @app.on_message(filters.command(["lk21"], COMMAND_HANDLER)) @@ -247,10 +208,7 @@ async def lk21_scrap(_, message): res = r.json() if res.get("detail", None): return await msg.edit(f"ERROR: {res['detail']}") - data = "".join( - f"**Judul: {i['judul']}**\n`{i['kategori']}`\n{i['link']}\n**Download:** [Klik Disini]({i['dl']})\n\n" - for i in res["result"] - ) + data = "".join(f"**Judul: {i['judul']}**\n`{i['kategori']}`\n{i['link']}\n**Download:** [Klik Disini]({i['dl']})\n\n" for i in res["result"]) try: return await msg.edit( f"**Daftar rilis movie terbaru di web LK21**:\n{data}", @@ -258,19 +216,14 @@ async def lk21_scrap(_, message): ) except MessageTooLong: msg = await rentry(data) - await msg.edit( - f"Karena hasil scrape terlalu panjang, maka hasil scrape di post ke rentry.\n\n{msg}" - ) + await msg.edit(f"Karena hasil scrape terlalu panjang, maka hasil scrape di post ke rentry.\n\n{msg}") judul = message.text.split(" ", maxsplit=1)[1] msg = await message.reply(f"Mencari film di lk21 dg keyword {judul}..") r = await http.get(f"https://yasirapi.eu.org/lk21?q={judul}") res = r.json() if res.get("detail", None): return await msg.edit(f"ERROR: {res['detail']}") - data = "".join( - f"**Judul: {i['judul']}**\n`{i['kategori']}`\n{i['link']}\n**Download:** [Klik Disini]({i['dl']})\n\n" - for i in res["result"] - ) + data = "".join(f"**Judul: {i['judul']}**\n`{i['kategori']}`\n{i['link']}\n**Download:** [Klik Disini]({i['dl']})\n\n" for i in res["result"]) if not res["result"]: return await msg.edit("Yahh, ga ada hasil ditemukan") try: @@ -280,9 +233,7 @@ async def lk21_scrap(_, message): ) except MessageTooLong: pesan = await rentry(data) - return await msg.edit( - f"Karena hasil scrape terlalu panjang, maka hasil scrape di post ke rentry.\n\n{pesan}" - ) + return await msg.edit(f"Karena hasil scrape terlalu panjang, maka hasil scrape di post ke rentry.\n\n{pesan}") @app.on_message(filters.command(["gomov"], COMMAND_HANDLER)) @@ -295,9 +246,7 @@ async def gomov_scrap(_, message): msg = await message.reply("Scraping GoMov Website..") try: - headers = { - "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" - } + headers = {"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"} html = await http.get(f"https://185.173.38.216/?s={judul}", headers=headers) soup = BeautifulSoup(html.text, "lxml") @@ -310,9 +259,7 @@ async def gomov_scrap(_, message): if not DATA: return await msg.edit("Oops, data film tidak ditemukan di GoMov") res = "".join(f"Judul: {i['judul']}\n{i['link']}\n\n" for i in DATA) - await msg.edit( - f"Hasil Pencarian di website GoMov:\n{res}\nScraped by @{BOT_USERNAME}" - ) + await msg.edit(f"Hasil Pencarian di website GoMov:\n{res}\nScraped by @{BOT_USERNAME}") except Exception: exc = traceback.format_exc() await msg.edit(f"ERROR: {exc}") @@ -323,9 +270,7 @@ async def gomov_scrap(_, message): async def savefilm21_scrap(_, message): try: link = message.text.split(" ", maxsplit=1)[1] - headers = { - "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" - } + headers = {"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"} html = await http.get(link, headers=headers, follow_redirects=False) soup = BeautifulSoup(html.text, "lxml") @@ -333,9 +278,7 @@ async def savefilm21_scrap(_, message): res = "".join(f"{i.text}\n{i['href']}\n\n" for i in res) await message.reply(f"Hasil Scrap dari {link}:\n\n{res}") except IndexError: - return await message.reply( - "Gunakan command /savefilm21_scrap [link] untuk scrap link download" - ) + return await message.reply("Gunakan command /savefilm21_scrap [link] untuk scrap link download") except Exception as e: await message.reply(f"ERROR: {str(e)}") @@ -345,18 +288,14 @@ async def savefilm21_scrap(_, message): async def nodrakor_scrap(_, message): try: link = message.text.split(" ", maxsplit=1)[1] - headers = { - "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" - } + headers = {"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"} html = await http.get(link, headers=headers, follow_redirects=False) soup = BeautifulSoup(html.text, "lxml") hasil = soup.find_all(class_="gmr-download-wrap clearfix")[0] await message.reply(f"Hasil Scrap dari {link}:\n{hasil}") except IndexError: - return await message.reply( - "Gunakan command /nodrakor_scrap [link] untuk scrap link download" - ) + return await message.reply("Gunakan command /nodrakor_scrap [link] untuk scrap link download") except Exception as e: await message.reply(f"ERROR: {str(e)}") @@ -367,9 +306,7 @@ async def nodrakor_scrap(_, message): async def muviku_scrap(_, message): try: link = message.text.split(" ", maxsplit=1)[1] - headers = { - "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" - } + headers = {"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"} html = await http.get(link, headers=headers) soup = BeautifulSoup(html.text, "lxml") @@ -386,24 +323,17 @@ async def muviku_scrap(_, message): res = "".join(f"Host: {i['kualitas']}\n{i['link']}\n\n" for i in data) await message.reply(res) except IndexError: - return await message.reply( - "Gunakan command /movieku_scrap [link] untuk scrap link download" - ) + return await message.reply("Gunakan command /movieku_scrap [link] untuk scrap link download") except Exception as e: await message.reply(f"ERROR: {str(e)}") -@app.on_message( - filters.command(["melong"], COMMAND_HANDLER) - & filters.user([617426792, 1985689491, 1172699512, 2024984460]) -) +@app.on_message(filters.command(["melong"], COMMAND_HANDLER) & filters.user([617426792, 1985689491, 1172699512, 2024984460])) @capture_err async def melong_scrap(_, message): try: link = message.text.split(" ", maxsplit=1)[1] - headers = { - "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" - } + headers = {"User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"} html = await http.get(link, headers=headers) soup = BeautifulSoup(html.text, "lxml") @@ -413,6 +343,4 @@ async def melong_scrap(_, message): rep = f"{hardsub}\n{softsub}" await message.reply(rep) except IndexError: - await message.reply( - "Gunakan command /melong [link] untuk scrap link download" - ) + await message.reply("Gunakan command /melong [link] untuk scrap link download") diff --git a/misskaty/plugins/sed.py b/misskaty/plugins/sed.py index cc623873..b6124360 100644 --- a/misskaty/plugins/sed.py +++ b/misskaty/plugins/sed.py @@ -33,9 +33,7 @@ async def sed(c: app, m: Message): return try: - res = regex.sub( - pattern, replace_with, text, count=count, flags=rflags, timeout=1 - ) + res = regex.sub(pattern, replace_with, text, count=count, flags=rflags, timeout=1) except TimeoutError: return await m.reply_text("Oops, your regex pattern has run for too long.") except regex.error as e: diff --git a/misskaty/plugins/sub_extractor.py b/misskaty/plugins/sub_extractor.py index b3ebb23d..e40147aa 100644 --- a/misskaty/plugins/sub_extractor.py +++ b/misskaty/plugins/sub_extractor.py @@ -46,18 +46,12 @@ def get_subname(url, format): async def ceksub(_, m): cmd = m.text.split(" ", 1) if len(cmd) == 1: - return await m.reply( - f"Gunakan command /{m.command[0]} [link] untuk mengecek subtitle dan audio didalam video." - ) + return await m.reply(f"Gunakan command /{m.command[0]} [link] untuk mengecek subtitle dan audio didalam video.") link = cmd[1] start_time = perf_counter() pesan = await m.reply("Sedang memproses perintah..", quote=True) try: - res = ( - await shell_exec( - f"ffprobe -loglevel 0 -print_format json -show_format -show_streams {link}" - ) - )[0] + res = (await shell_exec(f"ffprobe -loglevel 0 -print_format json -show_format -show_streams {link}"))[0] details = json.loads(res) buttons = [] for stream in details["streams"]: @@ -101,15 +95,11 @@ ALLOWED_USER = [978550890, 617426792, 2024984460, 1533008300, 1985689491] async def convertsrt(_, m): reply = m.reply_to_message if not reply and reply.document: - return await m.reply( - f"Gunakan command /{m.command[0]} dengan mereply ke file ass untuk convert subtitle ke srt." - ) + return await m.reply(f"Gunakan command /{m.command[0]} dengan mereply ke file ass untuk convert subtitle ke srt.") msg = await m.reply("Sedang memproses perintah...") dl = await reply.download() (await shell_exec(f"mediaextract -i {dl} {os.path.basename(dl)}.srt"))[0] - await m.reply_document( - f"{os.path.basename(dl)}.srt", caption=f"{os.path.basename(dl)}.srt" - ) + await m.reply_document(f"{os.path.basename(dl)}.srt", caption=f"{os.path.basename(dl)}.srt") await msg.delete() try: os.remove(dl) @@ -143,9 +133,7 @@ async def stream_extract(bot, update): format == "ass" start_time = perf_counter() namafile = get_subname(link, format) - extract = (await shell_exec(f"mediaextract -i {link} -map 0:{map} {namafile}"))[ - 0 - ] + extract = (await shell_exec(f"mediaextract -i {link} -map 0:{map} {namafile}"))[0] end_time = perf_counter() timelog = "{:.2f}".format(end_time - start_time) + " second" await update.message.reply_document( diff --git a/misskaty/plugins/ubot_plugin.py b/misskaty/plugins/ubot_plugin.py index 41c94b3d..381478af 100644 --- a/misskaty/plugins/ubot_plugin.py +++ b/misskaty/plugins/ubot_plugin.py @@ -39,22 +39,12 @@ async def add_keep(_, message: Message): # @user.on_deleted_messages(filters.chat([-1001455886928, -1001255283935])) async def del_msg(client, message): - async for a in user.get_chat_event_log( - message[0].chat.id, limit=1, filters=ChatEventFilter(deleted_messages=True) - ): + async for a in user.get_chat_event_log(message[0].chat.id, limit=1, filters=ChatEventFilter(deleted_messages=True)): try: - ustat = ( - await user.get_chat_member( - message[0].chat.id, a.deleted_message.from_user.id - ) - ).status + ustat = (await user.get_chat_member(message[0].chat.id, a.deleted_message.from_user.id)).status except: ustat = enums.ChatMemberStatus.MEMBER - if ( - ustat - in [enums.ChatMemberStatus.ADMINISTRATOR, enums.ChatMemberStatus.OWNER] - or a.deleted_message.from_user.is_bot - ): + if ustat in [enums.ChatMemberStatus.ADMINISTRATOR, enums.ChatMemberStatus.OWNER] or a.deleted_message.from_user.is_bot: return if a.user.id == a.deleted_message.from_user.id: if a.deleted_message.text: @@ -72,9 +62,7 @@ async def del_msg(client, message): # @user.on_edited_message(filters.text & filters.chat(-1001455886928)) async def edit_msg(client, message): try: - ustat = ( - await user.get_chat_member(message.chat.id, message.from_user.id) - ).status + ustat = (await user.get_chat_member(message.chat.id, message.from_user.id)).status except: ustat = enums.ChatMemberStatus.MEMBER if message.from_user.is_bot or ustat in [ @@ -82,12 +70,8 @@ async def edit_msg(client, message): enums.ChatMemberStatus.OWNER, ]: return - async for a in user.get_chat_event_log( - message.chat.id, limit=1, filters=ChatEventFilter(edited_messages=True) - ): - if a.old_message.text.startswith( - ("/mirror", "/leech", "/unzipmirror", "/unzipleech") - ): + async for a in user.get_chat_event_log(message.chat.id, limit=1, filters=ChatEventFilter(edited_messages=True)): + if a.old_message.text.startswith(("/mirror", "/leech", "/unzipmirror", "/unzipleech")): await app.send_message( message.chat.id, f"#EDITED_MESSAGE\n\n{a.user.first_name} mengedit pesannya 🧐.\nPesan: {a.old_message.text}", @@ -139,10 +123,7 @@ async def join_date(app, message: Message): with open("joined_date.txt", "w", encoding="utf8") as f: f.write("Join Date First Name\n") for member in members: - f.write( - str(datetime.fromtimestamp(member[1]).strftime("%y-%m-%d %H:%M")) - + f" {member[0]}\n" - ) + f.write(str(datetime.fromtimestamp(member[1]).strftime("%y-%m-%d %H:%M")) + f" {member[0]}\n") await user.send_document(message.chat.id, "joined_date.txt") os.remove("joined_date.txt") @@ -169,9 +150,7 @@ async def recent_act(client, message): limit=0, ) ) - with open( - f"recent_actions_{message.chat.id}.txt", "w", encoding="utf8" - ) as log_file: + with open(f"recent_actions_{message.chat.id}.txt", "w", encoding="utf8") as log_file: log_file.write(str(full_log)) await message.reply_document(f"recent_actions_{message.chat.id}.txt") diff --git a/misskaty/plugins/ytdl_download.py b/misskaty/plugins/ytdl_download.py index e8067b40..2f8f525d 100644 --- a/misskaty/plugins/ytdl_download.py +++ b/misskaty/plugins/ytdl_download.py @@ -5,7 +5,6 @@ from pyrogram import filters from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup from misskaty.vars import COMMAND_HANDLER from datetime import datetime -from logging import getLogger from hachoir.metadata import extractMetadata from hachoir.parser import createParser from misskaty.helper.ytdl_helper import random_char, DownLoadFile @@ -21,15 +20,11 @@ user_time = {} @capture_err async def ytdown(_, message): if len(message.command) == 1: - return await message.reply( - f"Gunakan command /{message.command[0]} YT_LINK untuk download video dengan YT-DLP." - ) + return await message.reply(f"Gunakan command /{message.command[0]} YT_LINK untuk download video dengan YT-DLP.") userLastDownloadTime = user_time.get(message.chat.id) try: if userLastDownloadTime > datetime.now(): - wait_time = round( - (userLastDownloadTime - datetime.now()).total_seconds() / 60, 2 - ) + wait_time = round((userLastDownloadTime - datetime.now()).total_seconds() / 60, 2) await message.reply_text(f"Wait {wait_time} Minutes before next request..") return except: @@ -53,9 +48,7 @@ async def ytdown(_, message): save_ytdl_json_path = f"YT_Down/{str(message.from_user.id)}{randem}.json" with open(save_ytdl_json_path, "w", encoding="utf8") as outfile: json.dump(response_json, outfile, ensure_ascii=False) - duration = None - if "duration" in response_json: - duration = response_json["duration"] + duration = response_json["duration"] if "duration" in response_json else None if "formats" in response_json: for formats in response_json["formats"]: format_id = formats.get("format_id") @@ -129,27 +122,19 @@ async def ytdown(_, message): format_id = response_json["format_id"] format_ext = response_json["ext"] cb_string_file = f"ytdl|file|{format_id}|{format_ext}|{randem}" - cb_string_video = f'ytdl|{"video"}|{format_id}|{format_ext}|{randem}' + cb_string_video = f"ytdl|video|{format_id}|{format_ext}|{randem}" inline_keyboard.append( [ - InlineKeyboardButton( - "SVideo", callback_data=(cb_string_video).encode("UTF-8") - ), - InlineKeyboardButton( - "DFile", callback_data=(cb_string_file).encode("UTF-8") - ), + InlineKeyboardButton("SVideo", callback_data=(cb_string_video).encode("UTF-8")), + InlineKeyboardButton("DFile", callback_data=(cb_string_file).encode("UTF-8")), ] ) - cb_string_file = f'{"file"}={format_id}={format_ext}' - cb_string_video = f'{"video"}={format_id}={format_ext}' + cb_string_file = f"file={format_id}={format_ext}" + cb_string_video = f"video={format_id}={format_ext}" inline_keyboard.append( [ - InlineKeyboardButton( - "video", callback_data=(cb_string_video).encode("UTF-8") - ), - InlineKeyboardButton( - "file", callback_data=(cb_string_file).encode("UTF-8") - ), + InlineKeyboardButton("video", callback_data=(cb_string_video).encode("UTF-8")), + InlineKeyboardButton("file", callback_data=(cb_string_file).encode("UTF-8")), ] ) reply_markup = InlineKeyboardMarkup(inline_keyboard) @@ -175,23 +160,19 @@ async def ytdown(_, message): ) else: - cb_string_file = f'{"file"}={"LFO"}={"NONE"}' - cb_string_video = f'{"video"}={"OFL"}={"ENON"}' + cb_string_file = "file=LFO=NONE" + cb_string_video = "video=OFL=ENON" inline_keyboard.append( [ - InlineKeyboardButton( - "SVideo", callback_data=(cb_string_video).encode("UTF-8") - ), - InlineKeyboardButton( - "DFile", callback_data=(cb_string_file).encode("UTF-8") - ), + InlineKeyboardButton("SVideo", callback_data=(cb_string_video).encode("UTF-8")), + InlineKeyboardButton("DFile", callback_data=(cb_string_file).encode("UTF-8")), ] ) reply_markup = InlineKeyboardMarkup(inline_keyboard) await message.reply_photo( photo="https://telegra.ph/file/ce37f8203e1903feed544.png", quote=True, - caption=f"""Select the desired format: file size might be approximate""", + caption="Select the desired format: file size might be approximate", reply_markup=reply_markup, reply_to_message_id=message.id, ) @@ -214,15 +195,11 @@ async def youtube_dl_call_back(bot, update): await update.message.delete() return False - custom_file_name = ( - f"{str(response_json.get('title'))}_{youtube_dl_format}.{youtube_dl_ext}" - ) + custom_file_name = f"{str(response_json.get('title'))}_{youtube_dl_format}.{youtube_dl_ext}" custom_file_name = "%(title,fulltitle,alt_title)s %(height& |)s%(height|)s%(height&p|)s%(fps|)s%(fps&fps|)s%(tbr& |)s%(tbr|)d.%(ext)s" youtube_dl_url = update.message.reply_to_message.text.split(" ", 1)[1] await update.message.edit_caption("Trying to download media...") - tmp_directory_for_each_user = os.path.join( - f"downloads/{str(update.from_user.id)}{random_char(5)}" - ) + tmp_directory_for_each_user = os.path.join(f"downloads/{str(update.from_user.id)}{random_char(5)}") if not os.path.isdir(tmp_directory_for_each_user): os.makedirs(tmp_directory_for_each_user) download_directory = os.path.join(tmp_directory_for_each_user, custom_file_name) @@ -243,9 +220,7 @@ async def youtube_dl_call_back(bot, update): download_directory_dirname = os.path.dirname(download_directory) download_directory_contents = os.listdir(download_directory_dirname) for download_directory_c in download_directory_contents: - current_file_name = os.path.join( - download_directory_dirname, download_directory_c - ) + current_file_name = os.path.join(download_directory_dirname, download_directory_c) file_size = os.stat(current_file_name).st_size if file_size == 0: @@ -254,11 +229,7 @@ async def youtube_dl_call_back(bot, update): return if file_size > 2097152000: - await update.message.edit_caption( - caption="I cannot upload files greater than 1.95GB due to Telegram API limitations. This file has size {}.".format( - get_readable_file_size(file_size) - ) - ) + await update.message.edit_caption(caption=f"I cannot upload files greater than 1.95GB due to Telegram API limitations. This file has size {get_readable_file_size(file_size)}.") asyncio.create_task(clendir(thumb_image_path)) asyncio.create_task(clendir(tmp_directory_for_each_user)) return @@ -353,11 +324,7 @@ async def youtube_dl_call_back(bot, update): LOGGER.info("Did this happen? :\\") end_two = datetime.now() time_taken_for_upload = (end_two - end_one).seconds - await update.message.edit_caption( - caption="Downloaded in {} seconds.\nUploaded in {} seconds.".format( - time_taken_for_download, time_taken_for_upload - ) - ) + await update.message.edit_caption(caption=f"Downloaded in {time_taken_for_download} seconds.\nUploaded in {time_taken_for_upload} seconds.") asyncio.create_task(clendir(thumb_image_path)) asyncio.create_task(clendir(tmp_directory_for_each_user)) await asyncio.sleep(5) diff --git a/misskaty/vars.py b/misskaty/vars.py index ab30118c..8d205a41 100644 --- a/misskaty/vars.py +++ b/misskaty/vars.py @@ -52,13 +52,9 @@ FORWARD_FROM_CHAT_ID = list( } ) # Forward To Chat ID -FORWARD_TO_CHAT_ID = list( - {int(x) for x in environ.get("FORWARD_TO_CHAT_ID", "-1001210537567").split()} -) +FORWARD_TO_CHAT_ID = list({int(x) for x in environ.get("FORWARD_TO_CHAT_ID", "-1001210537567").split()}) FORWARD_FILTERS = list(set(environ.get("FORWARD_FILTERS", "video document").split())) -BLOCK_FILES_WITHOUT_EXTENSIONS = bool( - environ.get("BLOCK_FILES_WITHOUT_EXTENSIONS", True) -) +BLOCK_FILES_WITHOUT_EXTENSIONS = bool(environ.get("BLOCK_FILES_WITHOUT_EXTENSIONS", True)) BLOCKED_EXTENSIONS = list( set( environ.get( diff --git a/utils.py b/utils.py index e9ab60ed..e55b92eb 100644 --- a/utils.py +++ b/utils.py @@ -39,14 +39,13 @@ async def auto_clean(): if not await is_cleanmode_on(chat_id): continue for x in cleanmode[chat_id]: - if datetime.now() > x["timer_after"]: - try: - await app.delete_messages(chat_id, x["msg_id"]) - except FloodWait as e: - await asyncio.sleep(e.value) - except: - continue - else: + if datetime.now() <= x["timer_after"]: + continue + try: + await app.delete_messages(chat_id, x["msg_id"]) + except FloodWait as e: + await asyncio.sleep(e.value) + except: continue except: continue