diff --git a/Powers/__init__.py b/Powers/__init__.py index b2e36f9bbe960425e38ba9289b7d0f8a01a46ff2..c7f5ed607942c4708e1b3cdf1b64b0931c9d24d5 100644 --- a/Powers/__init__.py +++ b/Powers/__init__.py @@ -1,12 +1,12 @@ -from datetime import datetime -from importlib import import_module as imp_mod -from logging import (INFO, WARNING, FileHandler, StreamHandler, basicConfig, - getLogger) -from os import environ, mkdir, path -from sys import exit as sysexit -from sys import stdout, version_info from time import time +from datetime import datetime from traceback import format_exc +from os import path, mkdir, environ +from importlib import import_module as imp_mod +from sys import exit as sysexit, stdout, version_info +from logging import ( + INFO, WARNING, FileHandler, StreamHandler, getLogger, basicConfig) + LOG_DATETIME = datetime.now().strftime("%d_%m_%Y-%H_%M_%S") LOGDIR = f"{__name__}/logs" @@ -103,8 +103,7 @@ async def load_cmds(all_plugins): for single in all_plugins: # If plugin in NO_LOAD, skip the plugin if single.lower() in [i.lower() for i in Config.NO_LOAD]: - LOGGER.warning( - f"Not loading '{single}' s it's added in NO_LOAD list") + LOGGER.warning(f"Not loading '{single}' s it's added in NO_LOAD list") continue imported_module = imp_mod(f"Powers.plugins.{single}") @@ -145,7 +144,6 @@ async def load_cmds(all_plugins): LOGGER.warning(f"Not loading Plugins - {NO_LOAD}") return ( - ", ".join((i.split(".")[1]).capitalize() - for i in list(HELP_COMMANDS.keys())) + ", ".join((i.split(".")[1]).capitalize() for i in list(HELP_COMMANDS.keys())) + "\n" ) diff --git a/Powers/bot_class.py b/Powers/bot_class.py index 73a4a7302aef46950dda629400b52ed589fe674e..1bc5dba7198d5ceb094066201aa811ee97884bd0 100644 --- a/Powers/bot_class.py +++ b/Powers/bot_class.py @@ -1,16 +1,16 @@ -from platform import python_version from threading import RLock -from time import gmtime, strftime, time - +from Powers.vars import Config from aiohttp import ClientSession -from pyrogram import Client, __version__ from pyrogram.raw.all import layer - -from Powers import (API_HASH, API_ID, BOT_TOKEN, LOG_DATETIME, LOGFILE, LOGGER, - MESSAGE_DUMP, NO_LOAD, UPTIME, WORKERS, load_cmds) from Powers.database import MongoDB +from platform import python_version from Powers.plugins import all_plugins -from Powers.vars import Config +from time import time, gmtime, strftime +from pyrogram import Client, __version__ +from Powers import ( + API_ID, LOGGER, UPTIME, LOGFILE, NO_LOAD, WORKERS, API_HASH, BOT_TOKEN, + LOG_DATETIME, MESSAGE_DUMP, load_cmds) + INITIAL_LOCK = RLock() diff --git a/Powers/database/__init__.py b/Powers/database/__init__.py index 59d3755f0f81b0a96706c3c76d1018ea295abd13..b96d862f80f3a2539a18f40e0a939b1cdca7e569 100644 --- a/Powers/database/__init__.py +++ b/Powers/database/__init__.py @@ -1,8 +1,8 @@ from sys import exit as exiter - -from Powers import DB_NAME, DB_URI, LOGGER from pymongo import MongoClient from pymongo.errors import PyMongoError +from Powers import DB_URI, LOGGER, DB_NAME + try: Powers_db_client = MongoClient(DB_URI) diff --git a/Powers/database/antispam_db.py b/Powers/database/antispam_db.py index 3acfd26dc9c1c042195f6b5712d94aac64be79e3..bb1f457dd1cda96753a249b46408aa0e1f4dcbf2 100644 --- a/Powers/database/antispam_db.py +++ b/Powers/database/antispam_db.py @@ -1,8 +1,8 @@ -from datetime import datetime from threading import RLock - +from datetime import datetime from Powers.database import MongoDB + INSERTION_LOCK = RLock() ANTISPAM_BANNED = set() diff --git a/Powers/database/approve_db.py b/Powers/database/approve_db.py index 8e0f1b6e45cc8e327b6827596b1efbd1722aee56..617e4716cdd6e027f46164e48b74711d686fd318 100644 --- a/Powers/database/approve_db.py +++ b/Powers/database/approve_db.py @@ -1,8 +1,8 @@ -from threading import RLock - from Powers import LOGGER +from threading import RLock from Powers.database import MongoDB + INSERTION_LOCK = RLock() @@ -66,8 +66,7 @@ class Approve(MongoDB): if not chat_data: new_data = {"_id": self.chat_id, "users": []} self.insert_one(new_data) - LOGGER.info( - f"Initialized Approve Document for chat {self.chat_id}") + LOGGER.info(f"Initialized Approve Document for chat {self.chat_id}") return new_data return chat_data diff --git a/Powers/database/blacklist_db.py b/Powers/database/blacklist_db.py index f4a4493cefd1cc74cb2691ff62ef14036601b55a..2295038466416694c6963b049ba417357e9b723d 100644 --- a/Powers/database/blacklist_db.py +++ b/Powers/database/blacklist_db.py @@ -1,9 +1,9 @@ -from threading import RLock from time import time - from Powers import LOGGER +from threading import RLock from Powers.database import MongoDB + INSERTION_LOCK = RLock() @@ -110,8 +110,7 @@ class Blacklist(MongoDB): "reason": "Automated blacklisted word: {{}}", } self.insert_one(new_data) - LOGGER.info( - f"Initialized Blacklist Document for chat {self.chat_id}") + LOGGER.info(f"Initialized Blacklist Document for chat {self.chat_id}") return new_data return chat_data diff --git a/Powers/database/chats_db.py b/Powers/database/chats_db.py index b4029a4141fc2a62ca1cac9777e27c5159664ae1..0ce13d5bb20cfd9704fb0bb36ab897715ae4cc39 100644 --- a/Powers/database/chats_db.py +++ b/Powers/database/chats_db.py @@ -1,9 +1,9 @@ -from threading import RLock from time import time - from Powers import LOGGER +from threading import RLock from Powers.database import MongoDB + INSERTION_LOCK = RLock() diff --git a/Powers/database/disable_db.py b/Powers/database/disable_db.py index b573e1bd683f0fd70605ee90e5e355093c6111e6..fb2c294b78631eded649d645477f4289c3376f93 100644 --- a/Powers/database/disable_db.py +++ b/Powers/database/disable_db.py @@ -1,9 +1,9 @@ -from threading import RLock from time import time - from Powers import LOGGER +from threading import RLock from Powers.database import MongoDB + INSERTION_LOCK = RLock() DISABLED_CMDS = {} @@ -146,11 +146,9 @@ class Disabling(MongoDB): "commands": [], "action": "none", } - DISABLED_CMDS[self.chat_id] = { - "commands": [], "action": "none"} + DISABLED_CMDS[self.chat_id] = {"commands": [], "action": "none"} self.insert_one(new_data) - LOGGER.info( - f"Initialized Disabling Document for chat {self.chat_id}") + LOGGER.info(f"Initialized Disabling Document for chat {self.chat_id}") return new_data DISABLED_CMDS[self.chat_id] = chat_data return chat_data diff --git a/Powers/database/filters_db.py b/Powers/database/filters_db.py index fa6c3dc52f8a2c415cc8a03fef16ab1006649af5..3df3c6e3dfc356971f2750040ee887cecd8a585b 100644 --- a/Powers/database/filters_db.py +++ b/Powers/database/filters_db.py @@ -1,8 +1,8 @@ from threading import RLock - from Powers.database import MongoDB from Powers.utils.msg_types import Types + INSERTION_LOCK = RLock() @@ -71,8 +71,7 @@ class Filters(MongoDB): curr = self.find_all() if curr: return len( - [z for z in (i["keyword"].split("|") - for i in curr) if len(z) >= 2], + [z for z in (i["keyword"].split("|") for i in curr) if len(z) >= 2], ) return 0 diff --git a/Powers/database/greetings_db.py b/Powers/database/greetings_db.py index b1ca8800cb85e5866be04c1d3c5327cc51d0de7d..84ef6c21e25ee19be99b17954f6fe9ca98d0c5c7 100644 --- a/Powers/database/greetings_db.py +++ b/Powers/database/greetings_db.py @@ -1,8 +1,8 @@ -from threading import RLock - from Powers import LOGGER +from threading import RLock from Powers.database import MongoDB + INSERTION_LOCK = RLock() @@ -128,8 +128,7 @@ class Greetings(MongoDB): "goodbye": True, } self.insert_one(new_data) - LOGGER.info( - f"Initialized Greetings Document for chat {self.chat_id}") + LOGGER.info(f"Initialized Greetings Document for chat {self.chat_id}") return new_data return chat_data diff --git a/Powers/database/group_blacklist.py b/Powers/database/group_blacklist.py index 5ab7eaa01194048ac7803eaa2af4459e074c5d9c..d47260522c738e1848d9edb1e00b89cfa562d07c 100644 --- a/Powers/database/group_blacklist.py +++ b/Powers/database/group_blacklist.py @@ -1,8 +1,8 @@ from threading import RLock - from Powers.database import MongoDB from Powers.database.chats_db import Chats + INSERTION_LOCK = RLock() BLACKLIST_CHATS = [] diff --git a/Powers/database/notes_db.py b/Powers/database/notes_db.py index ec3294065959ef1aee95f632c0adf49220e69d41..fb9afe66a681a190f65252b039cc8b2631fc0c9c 100644 --- a/Powers/database/notes_db.py +++ b/Powers/database/notes_db.py @@ -1,10 +1,10 @@ +from time import time from hashlib import md5 from threading import RLock -from time import time - from Powers.database import MongoDB from Powers.utils.msg_types import Types + INSERTION_LOCK = RLock() @@ -57,8 +57,7 @@ class Notes(MongoDB): def get_all_notes(self, chat_id: int): with INSERTION_LOCK: curr = self.find_all({"chat_id": chat_id}) - note_list = sorted([(note["note_name"], note["hash"]) - for note in curr]) + note_list = sorted([(note["note_name"], note["hash"]) for note in curr]) return note_list def rm_note(self, chat_id: int, note_name: str): diff --git a/Powers/database/pins_db.py b/Powers/database/pins_db.py index ade8999eb8abf3c27f8571f4d7ac87895daa15a3..884d8a48c56f16f13d291e4545b2a27529f0b8e6 100644 --- a/Powers/database/pins_db.py +++ b/Powers/database/pins_db.py @@ -1,8 +1,8 @@ -from threading import RLock - from Powers import LOGGER +from threading import RLock from Powers.database import MongoDB + INSERTION_LOCK = RLock() diff --git a/Powers/database/reporting_db.py b/Powers/database/reporting_db.py index 2e936f928b14a2f8958357873fac925b368d372c..fb0385c4934b9fd702d29b2de8f4a8b2535f922d 100644 --- a/Powers/database/reporting_db.py +++ b/Powers/database/reporting_db.py @@ -1,9 +1,9 @@ -from threading import RLock from time import time - from Powers import LOGGER +from threading import RLock from Powers.database import MongoDB + INSERTION_LOCK = RLock() @@ -42,11 +42,9 @@ class Reporting(MongoDB): chat_data = self.find_one({"_id": self.chat_id}) if not chat_data: chat_type = self.get_chat_type() - new_data = {"_id": self.chat_id, - "status": True, "chat_type": chat_type} + new_data = {"_id": self.chat_id, "status": True, "chat_type": chat_type} self.insert_one(new_data) - LOGGER.info( - f"Initialized Language Document for chat {self.chat_id}") + LOGGER.info(f"Initialized Language Document for chat {self.chat_id}") return new_data return chat_data diff --git a/Powers/database/rules_db.py b/Powers/database/rules_db.py index 0704cd89a0d0a9452ef10b5730d2e5ab53000de9..a0cfe90c96cc4e1fa9b5ac0d6714b4e0841b8831 100644 --- a/Powers/database/rules_db.py +++ b/Powers/database/rules_db.py @@ -1,9 +1,9 @@ -from threading import RLock from time import time - from Powers import LOGGER +from threading import RLock from Powers.database import MongoDB + INSERTION_LOCK = RLock() @@ -68,8 +68,7 @@ class Rules(MongoDB): if not chat_data: new_data = {"_id": self.chat_id, "privrules": False, "rules": ""} self.insert_one(new_data) - LOGGER.info( - f"Initialized Language Document for chat {self.chat_id}") + LOGGER.info(f"Initialized Language Document for chat {self.chat_id}") return new_data return chat_data diff --git a/Powers/database/users_db.py b/Powers/database/users_db.py index d913505561e6c9fe81e45c653774f468fa96d98c..45ad1183a1752ce7813c34edb6bc059fbd1e4ac0 100644 --- a/Powers/database/users_db.py +++ b/Powers/database/users_db.py @@ -1,9 +1,9 @@ -from threading import RLock from time import time - from Powers import LOGGER +from threading import RLock from Powers.database import MongoDB + INSERTION_LOCK = RLock() @@ -67,8 +67,7 @@ class Users(MongoDB): def __ensure_in_db(self): chat_data = self.find_one({"_id": self.user_id}) if not chat_data: - new_data = {"_id": self.user_id, - "username": "", "name": "unknown_till_now"} + new_data = {"_id": self.user_id, "username": "", "name": "unknown_till_now"} self.insert_one(new_data) LOGGER.info(f"Initialized User Document for {self.user_id}") return new_data diff --git a/Powers/database/warns_db.py b/Powers/database/warns_db.py index 48c0a5bbf884e85b1718d8081796b11dbbac2cf9..696dcdb8fac64bb167ea5973c8ed44a8e139db23 100644 --- a/Powers/database/warns_db.py +++ b/Powers/database/warns_db.py @@ -1,9 +1,9 @@ -from threading import RLock from time import time - from Powers import LOGGER +from threading import RLock from Powers.database import MongoDB + INSERTION_LOCK = RLock() @@ -89,14 +89,12 @@ class Warns(MongoDB): f"Repairing Approve Database - setting '{key}:{val}' for {data['user_id']} in {data['chat_id']}", ) collection.update( - {"chat_id": data["chat_id"], - "user_id": data["user_id"]}, + {"chat_id": data["chat_id"], "user_id": data["user_id"]}, {key: val}, ) def __ensure_in_db(self, user_id: int): - chat_data = self.find_one( - {"chat_id": self.chat_id, "user_id": user_id}) + chat_data = self.find_one({"chat_id": self.chat_id, "user_id": user_id}) if not chat_data: new_data = { "chat_id": self.chat_id, @@ -105,8 +103,7 @@ class Warns(MongoDB): "num_warns": 0, } self.insert_one(new_data) - LOGGER.info( - f"Initialized Warn Document for {user_id} in {self.chat_id}") + LOGGER.info(f"Initialized Warn Document for {user_id} in {self.chat_id}") return new_data return chat_data @@ -122,11 +119,9 @@ class WarnSettings(MongoDB): def __ensure_in_db(self): chat_data = self.find_one({"_id": self.chat_id}) if not chat_data: - new_data = {"_id": self.chat_id, - "warn_mode": "none", "warn_limit": 3} + new_data = {"_id": self.chat_id, "warn_mode": "none", "warn_limit": 3} self.insert_one(new_data) - LOGGER.info( - f"Initialized Warn Settings Document for {self.chat_id}") + LOGGER.info(f"Initialized Warn Settings Document for {self.chat_id}") return new_data return chat_data diff --git a/Powers/plugins/admin.py b/Powers/plugins/admin.py index 39ff8676b87a7d3865d96a7f6208599ca6e6702b..fb81444dbee722a7cb931936c33971a4333c0403 100644 --- a/Powers/plugins/admin.py +++ b/Powers/plugins/admin.py @@ -1,26 +1,24 @@ -from asyncio import sleep -from html import escape from os import remove +from html import escape +from asyncio import sleep +from pyrogram import filters +from Powers.vars import Config from traceback import format_exc - -from Powers import DEV_USERS, LOGGER, OWNER_ID, SUPPORT_GROUP, SUPPORT_STAFF from Powers.bot_class import Gojo +from Powers.utils.parser import mention_html from Powers.database.approve_db import Approve from Powers.database.reporting_db import Reporting -from Powers.utils.caching import (ADMIN_CACHE, TEMP_ADMIN_CACHE_BLOCK, - admin_cache_reload) -from Powers.utils.custom_filters import (DEV_LEVEL, admin_filter, command, - owner_filter, promote_filter) from Powers.utils.extract_user import extract_user -from Powers.utils.parser import mention_html -from Powers.vars import Config -from pyrogram import filters -from pyrogram.enums import ChatMemberStatus as CMS -from pyrogram.enums import ChatType -from pyrogram.errors import (ChatAdminInviteRequired, ChatAdminRequired, - FloodWait, RightForbidden, RPCError, - UserAdminInvalid) -from pyrogram.types import ChatPrivileges, Message +from pyrogram.types import Message, ChatPrivileges +from pyrogram.enums import ChatType, ChatMemberStatus as CMS +from Powers import LOGGER, OWNER_ID, DEV_USERS, SUPPORT_GROUP, SUPPORT_STAFF +from Powers.utils.caching import ( + ADMIN_CACHE, TEMP_ADMIN_CACHE_BLOCK, admin_cache_reload) +from Powers.utils.custom_filters import ( + DEV_LEVEL, command, admin_filter, owner_filter, promote_filter) +from pyrogram.errors import ( + RPCError, FloodWait, RightForbidden, UserAdminInvalid, ChatAdminRequired, + ChatAdminInviteRequired) @Gojo.on_message(command("adminlist")) @@ -39,8 +37,7 @@ async def adminlist_show(_, m: Message): note = "Note: These are up-to-date values!" adminstr = f"Admins in {m.chat.title}:" + "\n\n" bot_admins = [i for i in admin_list if (i[1].lower()).endswith("bot")] - user_admins = [i for i in admin_list if not ( - i[1].lower()).endswith("bot")] + user_admins = [i for i in admin_list if not (i[1].lower()).endswith("bot")] # format is like: (user_id, username/name,anonyamous or not) mention_users = [ ( diff --git a/Powers/plugins/antispam.py b/Powers/plugins/antispam.py index 127c9b64a6a2353d8f7bb57b0a44e51687b096d5..51c2ec5f0e3ef4efe9a89ee36f4dcf0a2502b50c 100644 --- a/Powers/plugins/antispam.py +++ b/Powers/plugins/antispam.py @@ -1,18 +1,18 @@ -from datetime import datetime from io import BytesIO +from datetime import datetime +from Powers.vars import Config from traceback import format_exc - -from Powers import LOGGER, MESSAGE_DUMP, SUPPORT_GROUP, SUPPORT_STAFF from Powers.bot_class import Gojo -from Powers.database.antispam_db import GBan +from pyrogram.types import Message from Powers.database.users_db import Users -from Powers.utils.clean_file import remove_markdown_and_html +from Powers.database.antispam_db import GBan +from Powers.utils.parser import mention_html from Powers.utils.custom_filters import command from Powers.utils.extract_user import extract_user -from Powers.utils.parser import mention_html -from Powers.vars import Config -from pyrogram.errors import MessageTooLong, PeerIdInvalid, UserIsBlocked -from pyrogram.types import Message +from Powers.utils.clean_file import remove_markdown_and_html +from Powers import LOGGER, MESSAGE_DUMP, SUPPORT_GROUP, SUPPORT_STAFF +from pyrogram.errors import PeerIdInvalid, UserIsBlocked, MessageTooLong + # Initialize db = GBan() diff --git a/Powers/plugins/approve.py b/Powers/plugins/approve.py index 71df6ccc73bbf5fb86ccedd69fdfead7b1091964..2949c33ffa4251b59fb022695462615d2cdec618 100644 --- a/Powers/plugins/approve.py +++ b/Powers/plugins/approve.py @@ -1,14 +1,14 @@ -from Powers import LOGGER, SUPPORT_GROUP +from pyrogram import filters from Powers.bot_class import Gojo -from Powers.database.approve_db import Approve -from Powers.utils.custom_filters import admin_filter, command, owner_filter -from Powers.utils.extract_user import extract_user from Powers.utils.kbhelpers import ikb +from Powers import LOGGER, SUPPORT_GROUP from Powers.utils.parser import mention_html -from pyrogram import filters +from Powers.database.approve_db import Approve +from pyrogram.types import Message, CallbackQuery +from Powers.utils.extract_user import extract_user from pyrogram.enums import ChatMemberStatus as CMS -from pyrogram.errors import PeerIdInvalid, RPCError, UserNotParticipant -from pyrogram.types import CallbackQuery, Message +from pyrogram.errors import RPCError, PeerIdInvalid, UserNotParticipant +from Powers.utils.custom_filters import command, admin_filter, owner_filter @Gojo.on_message(command("approve") & admin_filter) @@ -89,8 +89,7 @@ async def disapprove_user(c: Gojo, m: Message): except UserNotParticipant: if already_approved: # If user is approved and not in chat, unapprove them. db.remove_approve(user_id) - LOGGER.info( - f"{user_id} disapproved in {m.chat.id} as UserNotParticipant") + LOGGER.info(f"{user_id} disapproved in {m.chat.id} as UserNotParticipant") await m.reply_text("This user is not in this chat, unapproved them.") return except RPCError as ef: @@ -160,8 +159,7 @@ async def check_approval(c: Gojo, m: Message): except Exception: return check_approve = db.check_approve(user_id) - LOGGER.info( - f"{m.from_user.id} checking approval of {user_id} in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} checking approval of {user_id} in {m.chat.id}") if not user_id: await m.reply_text( diff --git a/Powers/plugins/bans.py b/Powers/plugins/bans.py index 108b1240ad61f80d74d5d439e6d299d1510c77fc..54e576be97d121f081e541eeb9a76b18abc4105a 100644 --- a/Powers/plugins/bans.py +++ b/Powers/plugins/bans.py @@ -1,21 +1,21 @@ from random import choice +from pyrogram import enums +from Powers.vars import Config from traceback import format_exc - -from Powers import LOGGER, OWNER_ID, SUPPORT_GROUP, SUPPORT_STAFF from Powers.bot_class import Gojo -from Powers.utils.caching import ADMIN_CACHE, admin_cache_reload -from Powers.utils.custom_filters import command, restrict_filter -from Powers.utils.extract_user import extract_user -from Powers.utils.extras import BAN_GIFS, KICK_GIFS +from pyrogram.filters import regex from Powers.utils.parser import mention_html from Powers.utils.string import extract_time -from Powers.vars import Config -from pyrogram import enums -from pyrogram.errors import (ChatAdminRequired, PeerIdInvalid, RightForbidden, - RPCError, UserAdminInvalid) -from pyrogram.filters import regex -from pyrogram.types import (CallbackQuery, InlineKeyboardButton, - InlineKeyboardMarkup, Message) +from Powers.utils.extract_user import extract_user +from Powers.utils.extras import BAN_GIFS, KICK_GIFS +from Powers.utils.caching import ADMIN_CACHE, admin_cache_reload +from Powers.utils.custom_filters import command, restrict_filter +from Powers import LOGGER, OWNER_ID, SUPPORT_GROUP, SUPPORT_STAFF +from pyrogram.types import ( + Message, CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup) +from pyrogram.errors import ( + RPCError, PeerIdInvalid, RightForbidden, UserAdminInvalid, + ChatAdminRequired) @Gojo.on_message(command("tban") & restrict_filter) @@ -908,8 +908,7 @@ async def kickme(_, m: Message): if len(m.text.split()) >= 2: reason = m.text.split(None, 1)[1] try: - LOGGER.info( - f"{m.from_user.id} kickme used by {m.from_user.id} in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} kickme used by {m.from_user.id} in {m.chat.id}") await m.chat.ban_member(m.from_user.id) txt = "Why not let me help you!" txt += f"\nReason: {reason}" if reason else "" diff --git a/Powers/plugins/blacklist.py b/Powers/plugins/blacklist.py index 9f26c3ed34a9cd5ad4c5227f320c91eddb139bbf..3f2230cf77cc0109907f5a1458ae2384a2c5ea89 100644 --- a/Powers/plugins/blacklist.py +++ b/Powers/plugins/blacklist.py @@ -1,13 +1,12 @@ from html import escape - from Powers import LOGGER +from pyrogram import filters from Powers.bot_class import Gojo -from Powers.database.blacklist_db import Blacklist -from Powers.utils.custom_filters import command, owner_filter, restrict_filter from Powers.utils.kbhelpers import ikb -from pyrogram import filters +from pyrogram.types import Message, CallbackQuery +from Powers.database.blacklist_db import Blacklist from pyrogram.enums import ChatMemberStatus as CMS -from pyrogram.types import CallbackQuery, Message +from Powers.utils.custom_filters import command, owner_filter, restrict_filter @Gojo.on_message(command("blacklist") & filters.group) @@ -57,8 +56,7 @@ async def add_blacklist(_, m: Message): ", ".join([f"{i}" for i in bl_words]) + " already added in blacklist, skipped them!" ) - LOGGER.info( - f"{m.from_user.id} added new blacklists ({bl_words}) in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} added new blacklists ({bl_words}) in {m.chat.id}") trigger = ", ".join(f"{i}" for i in bl_words) await m.reply_text( text=f"Added {trigger} in blacklist words!" @@ -113,12 +111,10 @@ async def rm_blacklist(_, m: Message): if non_found_words: rep_text = ( - "Could not find " + - ", ".join(f"{i}" for i in non_found_words) + "Could not find " + ", ".join(f"{i}" for i in non_found_words) ) + " in blcklisted words, skipped them." - LOGGER.info( - f"{m.from_user.id} removed blacklists ({bl_words}) in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} removed blacklists ({bl_words}) in {m.chat.id}") bl_words = ", ".join(f"{i}" for i in bl_words) await m.reply_text( text=f"Removed {bl_words} from blacklist words!" @@ -153,8 +149,7 @@ async def set_bl_action(_, m: Message): await m.reply_text(text=f"Set action for blacklist for this to {action}") elif len(m.text.split()) == 1: action = db.get_action() - LOGGER.info( - f"{m.from_user.id} checking blacklist action in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} checking blacklist action in {m.chat.id}") await m.reply_text( text=f"""The current action for blacklists in this chat is {action} All blacklist modes delete the message containing blacklist word.""" diff --git a/Powers/plugins/botstaff.py b/Powers/plugins/botstaff.py index 6cdb9e189cbc5f15ed071a4e1294203589164ed8..b9808ad372132020260357d79d0a059e4c7977dc 100644 --- a/Powers/plugins/botstaff.py +++ b/Powers/plugins/botstaff.py @@ -1,9 +1,9 @@ -from Powers import DEV_USERS, LOGGER, OWNER_ID, SUDO_USERS, WHITELIST_USERS from Powers.bot_class import Gojo -from Powers.utils.custom_filters import command -from Powers.utils.parser import mention_html -from pyrogram.errors import RPCError from pyrogram.types import Message +from pyrogram.errors import RPCError +from Powers.utils.parser import mention_html +from Powers.utils.custom_filters import command +from Powers import LOGGER, OWNER_ID, DEV_USERS, SUDO_USERS, WHITELIST_USERS @Gojo.on_message(command("botstaff", dev_cmd=True)) diff --git a/Powers/plugins/chat_blacklist.py b/Powers/plugins/chat_blacklist.py index 80bb21f8ba34e58965ebd0bd0a1d7a7804139b2e..89a6dc4b6d921482bb2029f8875c85fbea8237e8 100644 --- a/Powers/plugins/chat_blacklist.py +++ b/Powers/plugins/chat_blacklist.py @@ -1,11 +1,11 @@ -from traceback import format_exc - from Powers import LOGGER +from traceback import format_exc from Powers.bot_class import Gojo -from Powers.database.group_blacklist import GroupBlacklist -from Powers.utils.custom_filters import command -from pyrogram.errors import PeerIdInvalid, RPCError from pyrogram.types import Message +from Powers.utils.custom_filters import command +from pyrogram.errors import RPCError, PeerIdInvalid +from Powers.database.group_blacklist import GroupBlacklist + # initialise database db = GroupBlacklist() @@ -42,8 +42,7 @@ async def unblacklist_chat(c: Gojo, m: Message): if len(m.text.split()) >= 2: chat_ids = m.text.split()[1:] replymsg = await m.reply_text(f"Removing {len(chat_ids)} chats from blacklist") - LOGGER.info( - f"{m.from_user.id} removed blacklisted {chat_ids} groups for bot") + LOGGER.info(f"{m.from_user.id} removed blacklisted {chat_ids} groups for bot") bl_chats = db.list_all_chats() for chat in chat_ids: try: diff --git a/Powers/plugins/dev.py b/Powers/plugins/dev.py index 650e44f957ba5b1a3082e6d14c84b45a37f03e1e..a919777b40fc30bbe877dfd27d62e5deb8d17ae6 100644 --- a/Powers/plugins/dev.py +++ b/Powers/plugins/dev.py @@ -1,20 +1,19 @@ import sys -from asyncio import create_subprocess_shell, sleep, subprocess from io import BytesIO, StringIO -from time import gmtime, strftime, time from traceback import format_exc - -from Powers import LOGFILE, LOGGER, MESSAGE_DUMP, UPTIME from Powers.bot_class import Gojo +from pyrogram.types import Message +from Powers.utils.http_helper import * +from time import time, gmtime, strftime from Powers.database.chats_db import Chats -from Powers.utils.clean_file import remove_markdown_and_html from Powers.utils.custom_filters import command -from Powers.utils.http_helper import * from Powers.utils.parser import mention_markdown -from pyrogram.errors import (ChannelInvalid, ChannelPrivate, ChatAdminRequired, - EntityBoundsInvalid, FloodWait, MessageTooLong, - PeerIdInvalid, RPCError) -from pyrogram.types import Message +from Powers import LOGGER, UPTIME, LOGFILE, MESSAGE_DUMP +from Powers.utils.clean_file import remove_markdown_and_html +from asyncio import sleep, subprocess, create_subprocess_shell +from pyrogram.errors import ( + RPCError, FloodWait, PeerIdInvalid, ChannelInvalid, ChannelPrivate, + MessageTooLong, ChatAdminRequired, EntityBoundsInvalid) @Gojo.on_message(command("ping", sudo_cmd=True)) @@ -140,8 +139,7 @@ async def evaluate_code(c: Gojo, m: Message): async def aexec(code, c, m): - exec("async def __aexec(c, m): " + - "".join(f"\n {l}" for l in code.split("\n"))) + exec("async def __aexec(c, m): " + "".join(f"\n {l}" for l in code.split("\n"))) return await locals()["__aexec"](c, m) diff --git a/Powers/plugins/disable.py b/Powers/plugins/disable.py index 7a92f4d285122d6957edfd5a57efd74f403924cd..e4249ef6a7ac41bbb72583388f131f2aaf32d6eb 100644 --- a/Powers/plugins/disable.py +++ b/Powers/plugins/disable.py @@ -1,14 +1,13 @@ from html import escape - -from Powers import HELP_COMMANDS, LOGGER +from pyrogram import filters from Powers.bot_class import Gojo +from Powers import LOGGER, HELP_COMMANDS from Powers.database.disable_db import Disabling -from Powers.utils.custom_filters import (admin_filter, can_change_filter, - command, owner_filter) -from pyrogram import filters from pyrogram.enums import ChatMemberStatus as CMS -from pyrogram.types import (CallbackQuery, InlineKeyboardButton, - InlineKeyboardMarkup, Message) +from pyrogram.types import ( + Message, CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup) +from Powers.utils.custom_filters import ( + command, admin_filter, owner_filter, can_change_filter) @Gojo.on_message(command("disable") & can_change_filter) @@ -118,8 +117,7 @@ async def rm_alldisbl(_, m: Message): "Confirm", callback_data="enableallcmds", ), - InlineKeyboardButton( - "Cancel", callback_data="close_admin"), + InlineKeyboardButton("Cancel", callback_data="close_admin"), ], ], ), diff --git a/Powers/plugins/filters.py b/Powers/plugins/filters.py index f54febc30e0a63d1adea269465c7838ab30ee57f..ed49aa7b9e7b4e8486e95186284f2efd156a50cc 100644 --- a/Powers/plugins/filters.py +++ b/Powers/plugins/filters.py @@ -1,21 +1,21 @@ -from re import escape as re_escape from secrets import choice +from pyrogram import filters from traceback import format_exc - +from re import escape as re_escape +from pyrogram.errors import RPCError +from Powers.utils.kbhelpers import ikb from Powers.bot_class import LOGGER, Gojo -from Powers.database.filters_db import Filters from Powers.utils.cmd_senders import send_cmd -from Powers.utils.custom_filters import admin_filter, command, owner_filter -from Powers.utils.kbhelpers import ikb -from Powers.utils.msg_types import Types, get_filter_type -from Powers.utils.regex_utils import regex_searcher -from Powers.utils.string import (build_keyboard, - escape_mentions_using_curly_brackets, - parse_button, split_quotes) -from pyrogram import filters +from Powers.database.filters_db import Filters from pyrogram.enums import ChatMemberStatus as CMS -from pyrogram.errors import RPCError -from pyrogram.types import CallbackQuery, InlineKeyboardMarkup, Message +from Powers.utils.regex_utils import regex_searcher +from Powers.utils.msg_types import Types, get_filter_type +from pyrogram.types import Message, CallbackQuery, InlineKeyboardMarkup +from Powers.utils.custom_filters import command, admin_filter, owner_filter +from Powers.utils.string import ( + parse_button, split_quotes, build_keyboard, + escape_mentions_using_curly_brackets) + # Initialise db = Filters() @@ -96,8 +96,7 @@ async def add_filter(_, m: Message): ) add = db.save_filter(m.chat.id, keyword, teks, msgtype, file_id) - LOGGER.info( - f"{m.from_user.id} added new filter ({keyword}) in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} added new filter ({keyword}) in {m.chat.id}") if add: await m.reply_text( f"Saved filter for '{', '.join(keyword.split('|'))}' in {m.chat.title}!", @@ -121,8 +120,7 @@ async def stop_filter(_, m: Message): for keyword in act_filters: if keyword == m.text.split(None, 1)[1].lower(): db.rm_filter(m.chat.id, m.text.split(None, 1)[1].lower()) - LOGGER.info( - f"{m.from_user.id} removed filter ({keyword}) in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} removed filter ({keyword}) in {m.chat.id}") await m.reply_text( f"Okay, I'll stop replying to that filter and it's aliases in {m.chat.title}.", ) @@ -283,8 +281,7 @@ async def filters_watcher(c: Gojo, m: Message): if match: try: msgtype = await send_filter_reply(c, m, trigger) - LOGGER.info( - f"Replied with {msgtype} to {trigger} in {m.chat.id}") + LOGGER.info(f"Replied with {msgtype} to {trigger} in {m.chat.id}") except Exception as ef: await m.reply_text(f"Error: {ef}") LOGGER.error(ef) diff --git a/Powers/plugins/formatting.py b/Powers/plugins/formatting.py index 2ef42e21b17cb660b000b508ea766ea2839d61a9..9c378d11f17e5e5304d24c8ecbbaa5e960f1c610 100644 --- a/Powers/plugins/formatting.py +++ b/Powers/plugins/formatting.py @@ -1,9 +1,9 @@ from Powers import LOGGER from Powers.bot_class import Gojo -from Powers.utils.custom_filters import command -from Powers.utils.kbhelpers import ikb from pyrogram import enums, filters -from pyrogram.types import CallbackQuery, Message +from Powers.utils.kbhelpers import ikb +from Powers.utils.custom_filters import command +from pyrogram.types import Message, CallbackQuery async def gen_formatting_kb(m): diff --git a/Powers/plugins/fun.py b/Powers/plugins/fun.py index 50c902dfca2f49c7afad670b9a1c60205760f77a..f806ad0d8965213b39ea28aed4af4602c2aa3b64 100644 --- a/Powers/plugins/fun.py +++ b/Powers/plugins/fun.py @@ -1,16 +1,14 @@ from html import escape from random import choice - -from Powers import DEV_USERS, LOGGER -from Powers.bot_class import Gojo +from pyrogram import enums from Powers.utils import extras +from Powers.bot_class import Gojo +from pyrogram.types import Message +from Powers import LOGGER, DEV_USERS +from pyrogram.errors import MessageTooLong from Powers.utils.custom_filters import command from Powers.utils.extract_user import extract_user -from Powers.utils.extras import NOWYES as NO -from Powers.utils.extras import YESWNO as YES -from pyrogram import enums -from pyrogram.errors import MessageTooLong -from pyrogram.types import Message +from Powers.utils.extras import NOWYES as NO, YESWNO as YES @Gojo.on_message(command("shout")) @@ -74,8 +72,7 @@ async def fun_slap(c: Gojo, m: Message): hit = choice(extras.HIT) throw = choice(extras.THROW) - reply = temp.format(user1=user1, user2=user2, - item=item, hits=hit, throws=throw) + reply = temp.format(user1=user1, user2=user2, item=item, hits=hit, throws=throw) await reply_text(reply) LOGGER.info(f"{m.from_user.id} slaped in {m.chat.id}") return @@ -114,8 +111,7 @@ async def insult(c: Gojo, m: Message): m.reply_to_message.reply_text if m.reply_to_message else m.reply_text ) await reply_text(Insult_omp) - LOGGER.info( - f"{m.from_user.id} insulted {user_first_name} in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} insulted {user_first_name} in {m.chat.id}") @Gojo.on_message(command("yes")) diff --git a/Powers/plugins/greetings.py b/Powers/plugins/greetings.py index e3200b5c2f731c0e500cc06e790867c9c3c7f440..a6bea2a459a871b7c838ac4a686db6f9a1c8a4ff 100644 --- a/Powers/plugins/greetings.py +++ b/Powers/plugins/greetings.py @@ -1,20 +1,20 @@ from html import escape from secrets import choice - from Powers import DEV_USERS +from Powers.vars import Config from Powers.bot_class import Gojo +from pyrogram import enums, filters from Powers.database.antispam_db import GBan from Powers.database.greetings_db import Greetings -from Powers.utils.custom_filters import admin_filter, bot_admin_filter, command -from Powers.utils.msg_types import Types, get_wlcm_type -from Powers.utils.parser import escape_markdown, mention_html -from Powers.utils.string import (build_keyboard, escape_invalid_curly_brackets, - parse_button) -from Powers.vars import Config -from pyrogram import enums, filters from pyrogram.enums import ChatMemberStatus as CMS -from pyrogram.errors import ChatAdminRequired, RPCError -from pyrogram.types import ChatMemberUpdated, InlineKeyboardMarkup, Message +from Powers.utils.msg_types import Types, get_wlcm_type +from pyrogram.errors import RPCError, ChatAdminRequired +from Powers.utils.parser import mention_html, escape_markdown +from pyrogram.types import Message, ChatMemberUpdated, InlineKeyboardMarkup +from Powers.utils.custom_filters import command, admin_filter, bot_admin_filter +from Powers.utils.string import ( + parse_button, build_keyboard, escape_invalid_curly_brackets) + # Initialize gdb = GBan() diff --git a/Powers/plugins/info.py b/Powers/plugins/info.py index 4052151161b9f34c75d6986bbdd1024e2ef2baa1..dc20c2907d4bfb651a8fdc4e0775831ae645ee3a 100644 --- a/Powers/plugins/info.py +++ b/Powers/plugins/info.py @@ -1,18 +1,18 @@ import os from asyncio import sleep +from pyrogram import enums from datetime import datetime +from Powers.vars import Config from traceback import format_exc - -from Powers import (DEV_USERS, LOGGER, SUDO_USERS, SUPPORT_STAFF, - WHITELIST_USERS) from Powers.bot_class import Gojo +from pyrogram.types import Message from Powers.database.antispam_db import GBan from Powers.utils.custom_filters import command from Powers.utils.extract_user import extract_user -from Powers.vars import Config -from pyrogram import enums -from pyrogram.errors import EntityBoundsInvalid, MediaCaptionTooLong, RPCError -from pyrogram.types import Message +from pyrogram.errors import RPCError, EntityBoundsInvalid, MediaCaptionTooLong +from Powers import ( + LOGGER, DEV_USERS, SUDO_USERS, SUPPORT_STAFF, WHITELIST_USERS) + gban_db = GBan() @@ -192,7 +192,9 @@ async def info_func(c: Gojo, message: Message): if not user: await message.reply_text("Can't find user to fetch info!") - m = await message.reply_text(f"Fetching {('@' + user_name) if user_name else 'user'} info from telegram's database...") + m = await message.reply_text( + f"Fetching {('@' + user_name) if user_name else 'user'} info from telegram's database..." + ) try: info_caption, photo_id = await user_info(c, user) diff --git a/Powers/plugins/initial.py b/Powers/plugins/initial.py index 4bacaa8a700ad04f7157bead19e1e8c9e91e421f..3cbd7790a1166ff24db5c43cb0338d0d1788c8ab 100644 --- a/Powers/plugins/initial.py +++ b/Powers/plugins/initial.py @@ -1,19 +1,19 @@ from Powers import LOGGER +from pyrogram import filters from Powers.bot_class import Gojo -from Powers.database.approve_db import Approve -from Powers.database.blacklist_db import Blacklist +from pyrogram.types import Message +from pyrogram.errors import RPCError +from Powers.database.pins_db import Pins from Powers.database.chats_db import Chats -from Powers.database.disable_db import Disabling +from Powers.database.rules_db import Rules +from Powers.database.users_db import Users +from Powers.database.approve_db import Approve from Powers.database.filters_db import Filters +from Powers.database.disable_db import Disabling +from Powers.database.blacklist_db import Blacklist from Powers.database.greetings_db import Greetings -from Powers.database.notes_db import Notes, NotesSettings -from Powers.database.pins_db import Pins from Powers.database.reporting_db import Reporting -from Powers.database.rules_db import Rules -from Powers.database.users_db import Users -from pyrogram import filters -from pyrogram.errors import RPCError -from pyrogram.types import Message +from Powers.database.notes_db import Notes, NotesSettings @Gojo.on_message(filters.group, group=4) diff --git a/Powers/plugins/locks.py b/Powers/plugins/locks.py index a5d2d7b24b5c85f062218d841a7c3e5421ef98cc..44f470e52880da521d48aa07951b0f73d21602ab 100644 --- a/Powers/plugins/locks.py +++ b/Powers/plugins/locks.py @@ -1,11 +1,10 @@ -from asyncio import sleep - from Powers import LOGGER +from asyncio import sleep from Powers.bot_class import Gojo from Powers.database.approve_db import Approve +from pyrogram.types import Message, ChatPermissions from Powers.utils.custom_filters import command, restrict_filter -from pyrogram.errors import ChatAdminRequired, ChatNotModified, RPCError -from pyrogram.types import ChatPermissions, Message +from pyrogram.errors import RPCError, ChatNotModified, ChatAdminRequired @Gojo.on_message(command("locktypes")) @@ -56,8 +55,7 @@ async def lock_perm(c: Gojo, m: Message): if lock_type == "all": try: await c.set_chat_permissions(chat_id, ChatPermissions()) - LOGGER.info( - f"{m.from_user.id} locked all permissions in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} locked all permissions in {m.chat.id}") except ChatNotModified: pass except ChatAdminRequired: @@ -124,8 +122,7 @@ async def lock_perm(c: Gojo, m: Message): ChatPermissions( can_send_messages=msg, can_send_media_messages=media, - can_send_other_messages=any( - [stickers, animations, games, inlinebots]), + can_send_other_messages=any([stickers, animations, games, inlinebots]), can_add_web_page_previews=webprev, can_send_polls=polls, can_change_info=info, @@ -133,8 +130,7 @@ async def lock_perm(c: Gojo, m: Message): can_pin_messages=pin, ), ) - LOGGER.info( - f"{m.from_user.id} locked selected permissions in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} locked selected permissions in {m.chat.id}") except ChatNotModified: pass except ChatAdminRequired: @@ -216,8 +212,7 @@ async def unlock_perm(c: Gojo, m: Message): can_pin_messages=True, ), ) - LOGGER.info( - f"{m.from_user.id} unlocked all permissions in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} unlocked all permissions in {m.chat.id}") except ChatNotModified: pass except ChatAdminRequired: @@ -290,8 +285,7 @@ async def unlock_perm(c: Gojo, m: Message): return try: - LOGGER.info( - f"{m.from_user.id} unlocked selected permissions in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} unlocked selected permissions in {m.chat.id}") await c.set_chat_permissions( chat_id, ChatPermissions( diff --git a/Powers/plugins/muting.py b/Powers/plugins/muting.py index cebc27e02f8bf08354bd0230d98c7ebb45bef5a2..dd9199026d549596225417898f1619fbb4b903dd 100644 --- a/Powers/plugins/muting.py +++ b/Powers/plugins/muting.py @@ -1,20 +1,19 @@ from random import choice - -from Powers import LOGGER, OWNER_ID, SUPPORT_GROUP, SUPPORT_STAFF +from Powers.vars import Config from Powers.bot_class import Gojo -from Powers.utils.caching import ADMIN_CACHE, admin_cache_reload -from Powers.utils.custom_filters import command, restrict_filter -from Powers.utils.extract_user import extract_user +from pyrogram.filters import regex from Powers.utils.extras import MUTE_GIFS from Powers.utils.parser import mention_html from Powers.utils.string import extract_time -from Powers.vars import Config -from pyrogram.errors import (ChatAdminRequired, RightForbidden, RPCError, - UserNotParticipant) -from pyrogram.filters import regex -from pyrogram.types import (CallbackQuery, ChatPermissions, - InlineKeyboardButton, InlineKeyboardMarkup, - Message) +from Powers.utils.extract_user import extract_user +from Powers.utils.caching import ADMIN_CACHE, admin_cache_reload +from Powers.utils.custom_filters import command, restrict_filter +from Powers import LOGGER, OWNER_ID, SUPPORT_GROUP, SUPPORT_STAFF +from pyrogram.errors import ( + RPCError, RightForbidden, ChatAdminRequired, UserNotParticipant) +from pyrogram.types import ( + Message, CallbackQuery, ChatPermissions, InlineKeyboardButton, + InlineKeyboardMarkup) @Gojo.on_message(command("tmute") & restrict_filter) diff --git a/Powers/plugins/notes.py b/Powers/plugins/notes.py index dd9670e1dabcbaac10ee0f71397748537a8a06e3..a25aa2b879c8c968105d5d306716bc1a82a469a7 100644 --- a/Powers/plugins/notes.py +++ b/Powers/plugins/notes.py @@ -1,21 +1,20 @@ +from Powers import LOGGER from secrets import choice +from Powers.vars import Config from traceback import format_exc - -from Powers import LOGGER from Powers.bot_class import Gojo -from Powers.database.notes_db import Notes, NotesSettings -from Powers.utils.cmd_senders import send_cmd -from Powers.utils.custom_filters import admin_filter, command, owner_filter -from Powers.utils.kbhelpers import ikb -from Powers.utils.msg_types import Types, get_note_type -from Powers.utils.string import (build_keyboard, - escape_mentions_using_curly_brackets, - parse_button) -from Powers.vars import Config from pyrogram import enums, filters -from pyrogram.enums import ChatMemberStatus as CMS from pyrogram.errors import RPCError -from pyrogram.types import CallbackQuery, InlineKeyboardMarkup, Message +from Powers.utils.kbhelpers import ikb +from Powers.utils.cmd_senders import send_cmd +from pyrogram.enums import ChatMemberStatus as CMS +from Powers.utils.msg_types import Types, get_note_type +from Powers.database.notes_db import Notes, NotesSettings +from pyrogram.types import Message, CallbackQuery, InlineKeyboardMarkup +from Powers.utils.custom_filters import command, admin_filter, owner_filter +from Powers.utils.string import ( + parse_button, build_keyboard, escape_mentions_using_curly_brackets) + # Initialise db = Notes() @@ -75,8 +74,7 @@ async def get_note_func(c: Gojo, m: Message, note_name, priv_notes_status): if priv_notes_status: - note_hash = next(i[1] for i in db.get_all_notes( - m.chat.id) if i[0] == note_name) + note_hash = next(i[1] for i in db.get_all_notes(m.chat.id) if i[0] == note_name) await reply_text( f"Click on the button to get the note {note_name}", reply_markup=ikb( @@ -302,13 +300,11 @@ async def priv_notes(_, m: Message): option = (m.text.split())[1] if option in ("on", "yes"): db_settings.set_privatenotes(chat_id, True) - LOGGER.info( - f"{m.from_user.id} enabled privatenotes in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} enabled privatenotes in {m.chat.id}") msg = "Set private notes to On" elif option in ("off", "no"): db_settings.set_privatenotes(chat_id, False) - LOGGER.info( - f"{m.from_user.id} disabled privatenotes in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} disabled privatenotes in {m.chat.id}") msg = "Set private notes to Off" else: msg = "Enter correct option" @@ -316,8 +312,7 @@ async def priv_notes(_, m: Message): elif len(m.text.split()) == 1: curr_pref = db_settings.get_privatenotes(m.chat.id) msg = msg = f"Private Notes: {curr_pref}" - LOGGER.info( - f"{m.from_user.id} fetched privatenotes preference in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} fetched privatenotes preference in {m.chat.id}") await m.reply_text(msg) else: await m.replt_text("Check help on how to use this command!") diff --git a/Powers/plugins/pin.py b/Powers/plugins/pin.py index b0b14c52db3a0908a94354cb32fb60de635c8e91..a4e4e37c2bec6e3a77f62ebcd2b8de572911d922 100644 --- a/Powers/plugins/pin.py +++ b/Powers/plugins/pin.py @@ -1,15 +1,14 @@ +from Powers.bot_class import Gojo +from pyrogram.filters import regex +from Powers.utils.kbhelpers import ikb from html import escape as escape_html - from Powers import LOGGER, SUPPORT_GROUP -from Powers.bot_class import Gojo from Powers.database.pins_db import Pins -from Powers.utils.custom_filters import admin_filter, command -from Powers.utils.kbhelpers import ikb -from Powers.utils.string import build_keyboard, parse_button +from pyrogram.types import Message, CallbackQuery from pyrogram.enums import ChatMemberStatus as CMS -from pyrogram.errors import ChatAdminRequired, RightForbidden, RPCError -from pyrogram.filters import regex -from pyrogram.types import CallbackQuery, Message +from Powers.utils.string import parse_button, build_keyboard +from Powers.utils.custom_filters import command, admin_filter +from pyrogram.errors import RPCError, RightForbidden, ChatAdminRequired @Gojo.on_message(command("pin") & admin_filter) @@ -96,8 +95,7 @@ async def unpin_message(c: Gojo, m: Message): async def unpinall_message(_, m: Message): await m.reply_text( "Do you really want to unpin all messages in this chat?", - reply_markup=ikb( - [[("Yes", "unpin all in this chat"), ("No", "close_admin")]]), + reply_markup=ikb([[("Yes", "unpin all in this chat"), ("No", "close_admin")]]), ) return @@ -120,8 +118,7 @@ async def unpinall_calllback(c: Gojo, q: CallbackQuery): return try: await c.unpin_all_chat_messages(q.message.chat.id) - LOGGER.info( - f"{q.from_user.id} unpinned all messages in {q.message.chat.id}") + LOGGER.info(f"{q.from_user.id} unpinned all messages in {q.message.chat.id}") await q.message.edit_text(text="Unpinned all messages in this chat.") except ChatAdminRequired: await q.message.edit_text(text="I'm not admin or I don't have rights.") @@ -149,13 +146,11 @@ async def anti_channel_pin(_, m: Message): if len(m.text.split()) == 2: if m.command[1] in ("yes", "on", "true"): pinsdb.antichannelpin_on() - LOGGER.info( - f"{m.from_user.id} enabled antichannelpin in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} enabled antichannelpin in {m.chat.id}") msg = "Turned on AntiChannelPin, now all message pinned by channel will be unpinned automtically!" elif m.command[1] in ("no", "off", "false"): pinsdb.antichannelpin_off() - LOGGER.info( - f"{m.from_user.id} disabled antichannelpin in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} disabled antichannelpin in {m.chat.id}") msg = "Turned off AntiChannelPin, now all message pinned by channel will stay pinned!" else: await m.reply_text( @@ -207,8 +202,7 @@ async def clean_linked(_, m: Message): msg = "Turned on CleanLinked! Now all the messages from linked channel will be deleted!" elif m.command[1] in ("no", "off", "false"): pinsdb.cleanlinked_off() - LOGGER.info( - f"{m.from_user.id} disabled CleanLinked in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} disabled CleanLinked in {m.chat.id}") msg = "Turned off CleanLinked! Messages from linked channel will not be deleted!" else: await m.reply_text( diff --git a/Powers/plugins/purge.py b/Powers/plugins/purge.py index aa369f069684f90b9f0574dc71730d8741efcb26..809ad45f43ba31d7530d4b018353ce541043e90c 100644 --- a/Powers/plugins/purge.py +++ b/Powers/plugins/purge.py @@ -1,11 +1,10 @@ from asyncio import sleep - from Powers import SUPPORT_GROUP from Powers.bot_class import Gojo -from Powers.utils.custom_filters import admin_filter, command -from pyrogram.enums import ChatType -from pyrogram.errors import MessageDeleteForbidden, RPCError from pyrogram.types import Message +from pyrogram.enums import ChatType +from pyrogram.errors import RPCError, MessageDeleteForbidden +from Powers.utils.custom_filters import command, admin_filter @Gojo.on_message(command("purge") & admin_filter) @@ -20,7 +19,7 @@ async def purge(c: Gojo, m: Message): def divide_chunks(l: list, n: int = 100): for i in range(0, len(l), n): - yield l[i: i + n] + yield l[i : i + n] # Dielete messages in chunks of 100 messages m_list = list(divide_chunks(message_ids)) @@ -67,7 +66,7 @@ async def spurge(c: Gojo, m: Message): def divide_chunks(l: list, n: int = 100): for i in range(0, len(l), n): - yield l[i: i + n] + yield l[i : i + n] # Dielete messages in chunks of 100 messages m_list = list(divide_chunks(message_ids)) diff --git a/Powers/plugins/report.py b/Powers/plugins/report.py index fdfa6ed01dcd0a1a30c2ae08237125ec1ccc5549..3e08e17952e77a57c936799aa69a4b7e1638af3a 100644 --- a/Powers/plugins/report.py +++ b/Powers/plugins/report.py @@ -1,16 +1,14 @@ +from pyrogram import filters from traceback import format_exc - -from Powers import LOGGER, SUPPORT_STAFF from Powers.bot_class import Gojo -from Powers.database.reporting_db import Reporting -from Powers.utils.custom_filters import admin_filter, command +from pyrogram.errors import RPCError from Powers.utils.kbhelpers import ikb +from Powers import LOGGER, SUPPORT_STAFF from Powers.utils.parser import mention_html -from pyrogram import filters -from pyrogram.enums import ChatMembersFilter as cmf -from pyrogram.enums import ChatType -from pyrogram.errors import RPCError -from pyrogram.types import CallbackQuery, Message +from pyrogram.types import Message, CallbackQuery +from Powers.database.reporting_db import Reporting +from Powers.utils.custom_filters import command, admin_filter +from pyrogram.enums import ChatType, ChatMembersFilter as cmf @Gojo.on_message( diff --git a/Powers/plugins/rules.py b/Powers/plugins/rules.py index ab8ff95b7df07bda74b4f31b4423a495e489c4e1..bf4af588d1bfe64059f0e18f7b02a9fdc30dc781 100644 --- a/Powers/plugins/rules.py +++ b/Powers/plugins/rules.py @@ -1,11 +1,11 @@ from Powers import LOGGER +from pyrogram import filters +from Powers.vars import Config from Powers.bot_class import Gojo -from Powers.database.rules_db import Rules -from Powers.utils.custom_filters import admin_filter, command from Powers.utils.kbhelpers import ikb -from Powers.vars import Config -from pyrogram import filters -from pyrogram.types import CallbackQuery, Message +from Powers.database.rules_db import Rules +from pyrogram.types import Message, CallbackQuery +from Powers.utils.custom_filters import command, admin_filter @Gojo.on_message(command("rules") & filters.group) @@ -93,13 +93,11 @@ async def priv_rules(_, m: Message): option = (m.text.split())[1] if option in ("on", "yes"): db.set_privrules(True) - LOGGER.info( - f"{m.from_user.id} enabled privaterules in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} enabled privaterules in {m.chat.id}") msg = f"Private Rules have been turned on for chat {m.chat.title}" elif option in ("off", "no"): db.set_privrules(False) - LOGGER.info( - f"{m.from_user.id} disbaled privaterules in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} disbaled privaterules in {m.chat.id}") msg = f"Private Rules have been turned off for chat {m.chat.title}" else: msg = "Option not valid, choose from on, yes, off, no" @@ -109,8 +107,7 @@ async def priv_rules(_, m: Message): msg = ( f"Current Preference for Private rules in this chat is: {curr_pref}" ) - LOGGER.info( - f"{m.from_user.id} fetched privaterules preference in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} fetched privaterules preference in {m.chat.id}") await m.reply_text(msg) else: await m.reply_text(text="Please check help on how to use this this command.") diff --git a/Powers/plugins/start.py b/Powers/plugins/start.py index cc332862c16f17771c3b354c2c18e96d78f27909..1c6ce953ff5f0836ea6dd8f9036af170dbabac0f 100644 --- a/Powers/plugins/start.py +++ b/Powers/plugins/start.py @@ -1,18 +1,17 @@ from random import choice - -from Powers import HELP_COMMANDS, LOGGER -from Powers.bot_class import Gojo -from Powers.utils.custom_filters import command -from Powers.utils.extras import StartPic -from Powers.utils.kbhelpers import ikb -from Powers.utils.start_utils import (gen_cmds_kb, gen_start_kb, get_help_msg, - get_private_note, get_private_rules) from Powers.vars import Config +from Powers.bot_class import Gojo from pyrogram import enums, filters -from pyrogram.enums import ChatMemberStatus as CMS -from pyrogram.enums import ChatType -from pyrogram.errors import MessageNotModified, QueryIdInvalid, UserIsBlocked -from pyrogram.types import CallbackQuery, Message +from Powers.utils.kbhelpers import ikb +from Powers import LOGGER, HELP_COMMANDS +from Powers.utils.extras import StartPic +from Powers.utils.custom_filters import command +from pyrogram.types import Message, CallbackQuery +from pyrogram.enums import ChatType, ChatMemberStatus as CMS +from pyrogram.errors import UserIsBlocked, QueryIdInvalid, MessageNotModified +from Powers.utils.start_utils import ( + gen_cmds_kb, gen_start_kb, get_help_msg, get_private_note, + get_private_rules) @Gojo.on_message( @@ -70,8 +69,7 @@ async def start(c: Gojo, m: Message): await get_private_note(c, m, help_option) return if help_option.startswith("rules"): - LOGGER.info( - f"{m.from_user.id} fetched privaterules in {m.chat.id}") + LOGGER.info(f"{m.from_user.id} fetched privaterules in {m.chat.id}") await get_private_rules(c, m, help_option) return @@ -149,7 +147,7 @@ Join my [News Channel](http://t.me/gojo_bots_network) to get information on all async def commands_menu(_, q: CallbackQuery): cmds = sorted(list(HELP_COMMANDS.keys())) kb = [cmd.lower() for cmd in cmds] - ou = [kb[i: i + 3] for i in range(0, len(kb), 3)] + ou = [kb[i : i + 3] for i in range(0, len(kb), 3)] keyboard = ikb(ou, True) try: cpt = f""" @@ -181,8 +179,7 @@ async def help_menu(_, m: Message): help_msg, help_kb = await get_help_msg(m, help_option) if not help_msg: - LOGGER.error( - f"No help_msg found for help_option - {help_option}!!") + LOGGER.error(f"No help_msg found for help_option - {help_option}!!") return LOGGER.info( @@ -223,7 +220,7 @@ async def help_menu(_, m: Message): if m.chat.type == ChatType.PRIVATE: cmds = sorted(list(HELP_COMMANDS.keys())) kb = [cmd.lower() for cmd in cmds] - ou = [kb[i: i + 3] for i in range(0, len(kb), 3)] + ou = [kb[i : i + 3] for i in range(0, len(kb), 3)] keyboard = ikb(ou, True) msg = f""" Hey **[{m.from_user.first_name}](http://t.me/{m.from_user.username})**!My name is Gojo✨. diff --git a/Powers/plugins/stats.py b/Powers/plugins/stats.py index b4b834d99a5535edd48e47ea1a710cd44014b4ac..d35439153e8c7f222ac01449e35c0ceb921622cb 100644 --- a/Powers/plugins/stats.py +++ b/Powers/plugins/stats.py @@ -1,19 +1,19 @@ +from pyrogram import enums from Powers.bot_class import Gojo +from pyrogram.types import Message +from Powers.database.pins_db import Pins +from Powers.database.chats_db import Chats +from Powers.database.rules_db import Rules +from Powers.database.users_db import Users from Powers.database.antispam_db import GBan from Powers.database.approve_db import Approve -from Powers.database.blacklist_db import Blacklist -from Powers.database.chats_db import Chats -from Powers.database.disable_db import Disabling from Powers.database.filters_db import Filters +from Powers.utils.custom_filters import command +from Powers.database.disable_db import Disabling +from Powers.database.blacklist_db import Blacklist from Powers.database.greetings_db import Greetings -from Powers.database.notes_db import Notes, NotesSettings -from Powers.database.pins_db import Pins -from Powers.database.rules_db import Rules -from Powers.database.users_db import Users from Powers.database.warns_db import Warns, WarnSettings -from Powers.utils.custom_filters import command -from pyrogram import enums -from pyrogram.types import Message +from Powers.database.notes_db import Notes, NotesSettings @Gojo.on_message(command("stats", dev_cmd=True)) diff --git a/Powers/plugins/utils.py b/Powers/plugins/utils.py index 489ceecbdf80e170423688bdc183d3f7d4d06a94..af9d5c7f9a4d485ac954003fab100ce7e09b02fb 100644 --- a/Powers/plugins/utils.py +++ b/Powers/plugins/utils.py @@ -1,22 +1,21 @@ -import asyncio import re -from io import BytesIO -from os import remove - +import asyncio import aiofiles -from gpytranslate import Translator from Powers import * +from os import remove +from io import BytesIO +from wikipedia import summary from Powers.bot_class import Gojo -from Powers.database.users_db import Users -from Powers.utils.clean_file import remove_markdown_and_html -from Powers.utils.custom_filters import command -from Powers.utils.http_helper import * +from gpytranslate import Translator from pyrogram import enums, filters from pyrogram.enums import ChatType +from Powers.utils.http_helper import * +from Powers.database.users_db import Users from pyrogram.errors import MessageTooLong -from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message -from wikipedia import summary -from wikipedia.exceptions import DisambiguationError, PageError +from Powers.utils.custom_filters import command +from Powers.utils.clean_file import remove_markdown_and_html +from wikipedia.exceptions import PageError, DisambiguationError +from pyrogram.types import Message, InlineKeyboardButton, InlineKeyboardMarkup @Gojo.on_message(command("wiki")) diff --git a/Powers/plugins/warns.py b/Powers/plugins/warns.py index 1cb65a0bb204cd191dd4785c44fb49ee4e729711..aa9c7036d9f7f2b23cc5e3e644a70db33b866045 100644 --- a/Powers/plugins/warns.py +++ b/Powers/plugins/warns.py @@ -1,20 +1,19 @@ from time import time - -from Powers import LOGGER, SUPPORT_STAFF +from pyrogram import filters +from Powers.vars import Config from Powers.bot_class import Gojo +from pyrogram.errors import RPCError +from Powers import LOGGER, SUPPORT_STAFF from Powers.database.rules_db import Rules from Powers.database.users_db import Users +from Powers.utils.parser import mention_html +from Powers.utils.extract_user import extract_user from Powers.database.warns_db import Warns, WarnSettings from Powers.utils.caching import ADMIN_CACHE, admin_cache_reload -from Powers.utils.custom_filters import admin_filter, command, restrict_filter -from Powers.utils.extract_user import extract_user -from Powers.utils.parser import mention_html -from Powers.vars import Config -from pyrogram import filters -from pyrogram.errors import RPCError -from pyrogram.types import (CallbackQuery, ChatPermissions, - InlineKeyboardButton, InlineKeyboardMarkup, - Message) +from Powers.utils.custom_filters import command, admin_filter, restrict_filter +from pyrogram.types import ( + Message, CallbackQuery, ChatPermissions, InlineKeyboardButton, + InlineKeyboardMarkup) @Gojo.on_message( @@ -205,8 +204,7 @@ async def list_warns(c: Gojo, m: Message): await m.reply_text("This user has no warns!") return msg = f"{(await mention_html(user_first_name,user_id))} has {num_warns}/{warn_settings['warn_limit']} warns!\n\nReasons:\n" - msg += "\n".join( - [("- No reason" if i is None else f" - {i}") for i in warns]) + msg += "\n".join([("- No reason" if i is None else f" - {i}") for i in warns]) await m.reply_text(msg) return diff --git a/Powers/plugins/watchers.py b/Powers/plugins/watchers.py index 72165b5bccc92d0b7537bd64251bc45344345775..3fc6b68029bda61fd0d6e019ea68f231dee5ce4a 100644 --- a/Powers/plugins/watchers.py +++ b/Powers/plugins/watchers.py @@ -1,21 +1,21 @@ -from re import escape as re_escape from time import time +from pyrogram import filters from traceback import format_exc - -from Powers import LOGGER, MESSAGE_DUMP, SUPPORT_STAFF from Powers.bot_class import Gojo -from Powers.database.antispam_db import ANTISPAM_BANNED, GBan +from re import escape as re_escape +from Powers.database.pins_db import Pins +from Powers.utils.parser import mention_html from Powers.database.approve_db import Approve from Powers.database.blacklist_db import Blacklist -from Powers.database.group_blacklist import BLACKLIST_CHATS -from Powers.database.pins_db import Pins +from Powers.utils.regex_utils import regex_searcher +from pyrogram.types import Message, ChatPermissions +from Powers import LOGGER, MESSAGE_DUMP, SUPPORT_STAFF from Powers.database.warns_db import Warns, WarnSettings +from Powers.database.group_blacklist import BLACKLIST_CHATS +from Powers.database.antispam_db import ANTISPAM_BANNED, GBan from Powers.utils.caching import ADMIN_CACHE, admin_cache_reload -from Powers.utils.parser import mention_html -from Powers.utils.regex_utils import regex_searcher -from pyrogram import filters -from pyrogram.errors import ChatAdminRequired, RPCError, UserAdminInvalid -from pyrogram.types import ChatPermissions, Message +from pyrogram.errors import RPCError, UserAdminInvalid, ChatAdminRequired + # Initialise gban_db = GBan() @@ -29,8 +29,7 @@ async def antichanpin_cleanlinked(c: Gojo, m: Message): curr = pins_db.get_settings() if curr["antichannelpin"]: await c.unpin_chat_message(chat_id=m.chat.id, message_id=msg_id) - LOGGER.info( - f"AntiChannelPin: msgid-{m.id} unpinned in {m.chat.id}") + LOGGER.info(f"AntiChannelPin: msgid-{m.id} unpinned in {m.chat.id}") if curr["cleanlinked"]: await c.delete_messages(m.chat.id, msg_id) LOGGER.info(f"CleanLinked: msgid-{m.id} cleaned in {m.chat.id}") @@ -39,8 +38,7 @@ async def antichanpin_cleanlinked(c: Gojo, m: Message): "Disabled antichannelpin as I don't have enough admin rights!", ) pins_db.antichannelpin_off() - LOGGER.warning( - f"Disabled antichannelpin in {m.chat.id} as i'm not an admin.") + LOGGER.warning(f"Disabled antichannelpin in {m.chat.id} as i'm not an admin.") except Exception as ef: LOGGER.error(ef) LOGGER.error(format_exc()) @@ -191,8 +189,7 @@ async def gban_watcher(c: Gojo, m: Message): To get unbanned, appeal at @{SUPPORT_GROUP}""" ) - LOGGER.info( - f"Banned user {m.from_user.id} in {m.chat.id} due to antispam") + LOGGER.info(f"Banned user {m.from_user.id} in {m.chat.id} due to antispam") return except (ChatAdminRequired, UserAdminInvalid): # Bot not admin in group and hence cannot ban users! diff --git a/Powers/utils/admin_check.py b/Powers/utils/admin_check.py index 222cbefcd1f33f4ef0b8053f914df5efe24fc823..2bb13075df1b2052686b09c28f94411b739321a8 100644 --- a/Powers/utils/admin_check.py +++ b/Powers/utils/admin_check.py @@ -1,8 +1,8 @@ from traceback import format_exc - -from Powers import DEV_USERS, LOGGER, OWNER_ID, SUDO_USERS +from pyrogram.types import Message, CallbackQuery from pyrogram.enums import ChatMemberStatus as CMS -from pyrogram.types import CallbackQuery, Message +from Powers import LOGGER, OWNER_ID, DEV_USERS, SUDO_USERS + SUDO_LEVEL = SUDO_USERS + DEV_USERS + [int(OWNER_ID)] DEV_LEVEL = DEV_USERS + [int(OWNER_ID)] diff --git a/Powers/utils/caching.py b/Powers/utils/caching.py index 2d405b8c66874fa9505fa1db9431da827ffad44b..f7c51fb031bff9729eb17327832ed06752dba151 100644 --- a/Powers/utils/caching.py +++ b/Powers/utils/caching.py @@ -1,13 +1,13 @@ -from threading import RLock -from time import perf_counter, time from typing import List - -from cachetools import TTLCache from Powers import LOGGER -from pyrogram.enums import ChatMembersFilter +from threading import RLock +from cachetools import TTLCache +from time import time, perf_counter from pyrogram.types import CallbackQuery +from pyrogram.enums import ChatMembersFilter from pyrogram.types.messages_and_media.message import Message + THREAD_LOCK = RLock() # admins stay cached for 30 mins diff --git a/Powers/utils/custom_filters.py b/Powers/utils/custom_filters.py index 4ea798227ca4261f4f19b71066b9111b5e931a17..5ed3126e12a79b164e3065c9bef0cb8c89c7674e 100644 --- a/Powers/utils/custom_filters.py +++ b/Powers/utils/custom_filters.py @@ -1,17 +1,15 @@ -from re import compile as compile_re -from re import escape from shlex import split +from Powers.vars import Config from typing import List, Union - -from Powers import DEV_USERS, OWNER_ID, SUDO_USERS +from pyrogram.filters import create +from re import escape, compile as compile_re from Powers.database.disable_db import Disabling -from Powers.utils.caching import ADMIN_CACHE, admin_cache_reload -from Powers.vars import Config -from pyrogram.enums import ChatMemberStatus as CMS -from pyrogram.enums import ChatType +from pyrogram.types import Message, CallbackQuery +from Powers import OWNER_ID, DEV_USERS, SUDO_USERS from pyrogram.errors import RPCError, UserNotParticipant -from pyrogram.filters import create -from pyrogram.types import CallbackQuery, Message +from pyrogram.enums import ChatType, ChatMemberStatus as CMS +from Powers.utils.caching import ADMIN_CACHE, admin_cache_reload + SUDO_LEVEL = set(SUDO_USERS + DEV_USERS + [int(OWNER_ID)]) DEV_LEVEL = set(DEV_USERS + [int(OWNER_ID)]) diff --git a/Powers/utils/extract_user.py b/Powers/utils/extract_user.py index 12a1c35db74cb2d389b0986a6cb97efc1ef0b03e..aacd51e7a0ec94449718be833262b40e07a2a331 100644 --- a/Powers/utils/extract_user.py +++ b/Powers/utils/extract_user.py @@ -1,7 +1,6 @@ -from traceback import format_exc from typing import Tuple - from Powers import LOGGER +from traceback import format_exc from Powers.bot_class import Gojo from Powers.database.users_db import Users from pyrogram.enums import MessageEntityType as entity @@ -29,7 +28,7 @@ async def extract_user(c: Gojo, m: Message) -> Tuple[int, str, str]: elif required_entity.type in (entity.MENTION, entity.PHONE_NUMBER): # new long user ids are identified as phone_number user_found = m.text[ - required_entity.offset: ( + required_entity.offset : ( required_entity.offset + required_entity.length ) ] diff --git a/Powers/utils/extras.py b/Powers/utils/extras.py index 9614633566fadee6b026a366885469dcbe404744..6fbbc1bdbb4421b39f9b5b82efeb4cf40daba6fa 100644 --- a/Powers/utils/extras.py +++ b/Powers/utils/extras.py @@ -514,8 +514,7 @@ TOSS = ( ) -DECIDE = ("Yes.", "No.", "Maybe.", "Who the hell cares?", - "No one give a damn about it") +DECIDE = ("Yes.", "No.", "Maybe.", "Who the hell cares?", "No one give a damn about it") INSULT_STRINGS = [ "`Owww ... Such a stupid idiot.`", diff --git a/Powers/utils/http_helper.py b/Powers/utils/http_helper.py index fa9848ea15aaa1705caba3f186ebbc01e819efba..2fb5d88e69bc0c20f1b341a6e5b388636f8d3eb6 100644 --- a/Powers/utils/http_helper.py +++ b/Powers/utils/http_helper.py @@ -1,5 +1,4 @@ from asyncio import gather - from Powers.bot_class import aiohttpsession as session diff --git a/Powers/utils/msg_types.py b/Powers/utils/msg_types.py index 53af4b18c5f2dc1d03ece2672d9c1c6c4a1e670b..6c4b1382eb2de08c3f8bcef735ceeed708a195b9 100644 --- a/Powers/utils/msg_types.py +++ b/Powers/utils/msg_types.py @@ -1,5 +1,4 @@ from enum import IntEnum, unique - from pyrogram.types import Message diff --git a/Powers/utils/regex_utils.py b/Powers/utils/regex_utils.py index 7a0efe8e98a32274a7d6710eaf4df80a66e6b230..5cade1fede354ad1ed702d1d30e38e2e1bc8ff37 100644 --- a/Powers/utils/regex_utils.py +++ b/Powers/utils/regex_utils.py @@ -1,7 +1,6 @@ -from traceback import format_exc - -from Powers import LOGGER from regex import search +from Powers import LOGGER +from traceback import format_exc async def regex_searcher(regex_string: str, string: str) -> str: diff --git a/Powers/utils/start_utils.py b/Powers/utils/start_utils.py index 77926fcebcaa733b2d673de94042254743692a85..73198c2210d6b99cc169c1ef71608c6dbb7eff31 100644 --- a/Powers/utils/start_utils.py +++ b/Powers/utils/start_utils.py @@ -1,21 +1,20 @@ from html import escape from secrets import choice +from Powers.vars import Config from traceback import format_exc - -from Powers import HELP_COMMANDS, LOGGER, SUPPORT_GROUP from Powers.bot_class import Gojo +from pyrogram.errors import RPCError +from Powers.utils.kbhelpers import ikb +from Powers.utils.msg_types import Types from Powers.database.chats_db import Chats from Powers.database.notes_db import Notes from Powers.database.rules_db import Rules from Powers.utils.cmd_senders import send_cmd -from Powers.utils.kbhelpers import ikb -from Powers.utils.msg_types import Types -from Powers.utils.string import (build_keyboard, - escape_mentions_using_curly_brackets, - parse_button) -from Powers.vars import Config -from pyrogram.errors import RPCError -from pyrogram.types import CallbackQuery, InlineKeyboardButton, Message +from Powers import LOGGER, HELP_COMMANDS, SUPPORT_GROUP +from pyrogram.types import Message, CallbackQuery, InlineKeyboardButton +from Powers.utils.string import ( + parse_button, build_keyboard, escape_mentions_using_curly_brackets) + # Initialize notes_db = Notes() @@ -29,7 +28,7 @@ async def gen_cmds_kb(m: Message or CallbackQuery): cmds = sorted(list(HELP_COMMANDS.keys())) kb = [cmd.lower() for cmd in cmds] - return [kb[i: i + 3] for i in range(0, len(kb), 3)] + return [kb[i : i + 3] for i in range(0, len(kb), 3)] async def gen_start_kb(q: Message or CallbackQuery): diff --git a/Powers/utils/string.py b/Powers/utils/string.py index cbc5ed897c70e0f23105c24070bf33653b1e5716..c5d3826f9b1e0022b37319ff8aa112ffcea6080c 100644 --- a/Powers/utils/string.py +++ b/Powers/utils/string.py @@ -1,14 +1,13 @@ -from html import escape -from re import compile as compile_re from time import time +from html import escape from typing import List - -from Powers.utils.parser import escape_markdown from pyrogram.enums import ChatType -from pyrogram.types import InlineKeyboardButton, Message +from re import compile as compile_re +from Powers.utils.parser import escape_markdown +from pyrogram.types import Message, InlineKeyboardButton + -BTN_URL_REGEX = compile_re( - r"(\[([^\[]+?)\]\(buttonurl:(?:/{0,2})(.+?)(:same)?\))") +BTN_URL_REGEX = compile_re(r"(\[([^\[]+?)\]\(buttonurl:(?:/{0,2})(.+?)(:same)?\))") async def extract_time(m: Message, time_val: str): @@ -53,9 +52,8 @@ async def parse_button(text: str): # if even, not escaped -> create button if n_escapes % 2 == 0: # create a thruple with button label, url, and newline status - buttons.append( - (match.group(2), match.group(3), bool(match.group(4)))) - note_data += markdown_note[prev: match.start(1)] + buttons.append((match.group(2), match.group(3), bool(match.group(4)))) + note_data += markdown_note[prev : match.start(1)] prev = match.end(1) # if odd, escaped -> move along else: @@ -99,7 +97,7 @@ async def escape_invalid_curly_brackets(text: str, valids: List[str]) -> str: success = True break if success: - new_text += text[idx: idx + len(v) + 2] + new_text += text[idx : idx + len(v) + 2] idx += len(v) + 2 continue new_text += "{{" @@ -172,7 +170,7 @@ async def split_quotes(text: str): # 1 to avoid starting quote, and counter is exclusive so avoids ending key = await remove_escapes(text[1:counter].strip()) # index will be in range, or `else` would have been executed and returned - rest = text[counter + 1:].strip() + rest = text[counter + 1 :].strip() if not key: key = text[0] + text[0] return list(filter(None, [key, rest])) diff --git a/Powers/vars.py b/Powers/vars.py index c1bffaf0246ddef44bb4a1bfe586d4db52c92c3a..100dc8cd76be5f76cb8d07e0d5420fd155cf77a6 100644 --- a/Powers/vars.py +++ b/Powers/vars.py @@ -1,8 +1,8 @@ from os import getcwd - from prettyconf import Configuration from prettyconf.loaders import EnvFile, Environment + env_file = f"{getcwd()}/.env" config = Configuration(loaders=[Environment(), EnvFile(filename=env_file)])