diff --git a/Powers/__init__.py b/Powers/__init__.py index c7f5ed607942c4708e1b3cdf1b64b0931c9d24d5..e8cb0d0a6cc19665fc24f8ea8ef412acfb400e68 100644 --- a/Powers/__init__.py +++ b/Powers/__init__.py @@ -1,12 +1,12 @@ -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) - +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 traceback import format_exc LOG_DATETIME = datetime.now().strftime("%d_%m_%Y-%H_%M_%S") LOGDIR = f"{__name__}/logs" diff --git a/Powers/__main__.py b/Powers/__main__.py index 9ad6e292cee01902fbaff41eb377f6455b07ac12..496ea89fe87b3bc2083f709c373b24717ee6d326 100644 --- a/Powers/__main__.py +++ b/Powers/__main__.py @@ -1,5 +1,4 @@ from Powers.bot_class import Gojo - if __name__ == "__main__": Gojo().run() diff --git a/Powers/bot_class.py b/Powers/bot_class.py index 1bc5dba7198d5ceb094066201aa811ee97884bd0..73a4a7302aef46950dda629400b52ed589fe674e 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 Powers.vars import Config +from time import gmtime, strftime, time + 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 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) - +from Powers.vars import Config INITIAL_LOCK = RLock() diff --git a/Powers/database/__init__.py b/Powers/database/__init__.py index b96d862f80f3a2539a18f40e0a939b1cdca7e569..eed4ce9c8038400668e44db39cce7a4442c582c6 100644 --- a/Powers/database/__init__.py +++ b/Powers/database/__init__.py @@ -1,8 +1,9 @@ from sys import exit as exiter + from pymongo import MongoClient from pymongo.errors import PyMongoError -from Powers import DB_URI, LOGGER, DB_NAME +from Powers import DB_NAME, DB_URI, LOGGER try: Powers_db_client = MongoClient(DB_URI) diff --git a/Powers/database/antispam_db.py b/Powers/database/antispam_db.py index bb1f457dd1cda96753a249b46408aa0e1f4dcbf2..3acfd26dc9c1c042195f6b5712d94aac64be79e3 100644 --- a/Powers/database/antispam_db.py +++ b/Powers/database/antispam_db.py @@ -1,7 +1,7 @@ -from threading import RLock from datetime import datetime -from Powers.database import MongoDB +from threading import RLock +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 617e4716cdd6e027f46164e48b74711d686fd318..dbcbf760b4d6eebe2a4969d251db09d14dedd18b 100644 --- a/Powers/database/approve_db.py +++ b/Powers/database/approve_db.py @@ -1,7 +1,7 @@ -from Powers import LOGGER from threading import RLock -from Powers.database import MongoDB +from Powers import LOGGER +from Powers.database import MongoDB INSERTION_LOCK = RLock() diff --git a/Powers/database/blacklist_db.py b/Powers/database/blacklist_db.py index 2295038466416694c6963b049ba417357e9b723d..895f3ca0f2afd6c9338700635dfba5ce990a4a6c 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() diff --git a/Powers/database/chats_db.py b/Powers/database/chats_db.py index 0ce13d5bb20cfd9704fb0bb36ab897715ae4cc39..b4029a4141fc2a62ca1cac9777e27c5159664ae1 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 fb2c294b78631eded649d645477f4289c3376f93..b452ac9c618bed76150333835ae3ce4f8d6ef3be 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 = {} diff --git a/Powers/database/filters_db.py b/Powers/database/filters_db.py index 3df3c6e3dfc356971f2750040ee887cecd8a585b..d3fda53d9daeb4ae9f8a07953fbb9f97879dc742 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() diff --git a/Powers/database/greetings_db.py b/Powers/database/greetings_db.py index 84ef6c21e25ee19be99b17954f6fe9ca98d0c5c7..3419bed4d1c9e676ddb101dff465489ae1bede18 100644 --- a/Powers/database/greetings_db.py +++ b/Powers/database/greetings_db.py @@ -1,7 +1,7 @@ -from Powers import LOGGER from threading import RLock -from Powers.database import MongoDB +from Powers import LOGGER +from Powers.database import MongoDB INSERTION_LOCK = RLock() diff --git a/Powers/database/group_blacklist.py b/Powers/database/group_blacklist.py index d47260522c738e1848d9edb1e00b89cfa562d07c..5ab7eaa01194048ac7803eaa2af4459e074c5d9c 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 fb9afe66a681a190f65252b039cc8b2631fc0c9c..1cf1fdea9fbc4f25c921efcb3fddfdaf1dfc1429 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() diff --git a/Powers/database/pins_db.py b/Powers/database/pins_db.py index 884d8a48c56f16f13d291e4545b2a27529f0b8e6..ade8999eb8abf3c27f8571f4d7ac87895daa15a3 100644 --- a/Powers/database/pins_db.py +++ b/Powers/database/pins_db.py @@ -1,7 +1,7 @@ -from Powers import LOGGER from threading import RLock -from Powers.database import MongoDB +from Powers import LOGGER +from Powers.database import MongoDB INSERTION_LOCK = RLock() diff --git a/Powers/database/reporting_db.py b/Powers/database/reporting_db.py index fb0385c4934b9fd702d29b2de8f4a8b2535f922d..07a4e433a82fb506eb240c5c3cbda890b04ead65 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() diff --git a/Powers/database/rules_db.py b/Powers/database/rules_db.py index a0cfe90c96cc4e1fa9b5ac0d6714b4e0841b8831..3e82a247cf597c0f7b52c925e1f1fbc5096faa89 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() diff --git a/Powers/database/users_db.py b/Powers/database/users_db.py index 45ad1183a1752ce7813c34edb6bc059fbd1e4ac0..08d9f16d42e54323dfb03db8a1821c0ac7c8af12 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() diff --git a/Powers/database/warns_db.py b/Powers/database/warns_db.py index 696dcdb8fac64bb167ea5973c8ed44a8e139db23..2c39cb9cb83b76ce797dacdb7379cbe6705ccf5f 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() diff --git a/Powers/plugins/__init__.py b/Powers/plugins/__init__.py index d9647d7f56bfcaeb695dd71e7c810009c1b412f0..0d944791dd400f63a745dac4ec9f0d6170c060eb 100644 --- a/Powers/plugins/__init__.py +++ b/Powers/plugins/__init__.py @@ -3,7 +3,7 @@ async def all_plugins(): # work. from glob import glob - from os.path import isfile, dirname, basename + from os.path import basename, dirname, isfile mod_paths = glob(dirname(__file__) + "/*.py") all_plugs = [ diff --git a/Powers/plugins/admin.py b/Powers/plugins/admin.py index fb81444dbee722a7cb931936c33971a4333c0403..090fc8bb5a2ee1a4d867a23befd475e8e556e02e 100644 --- a/Powers/plugins/admin.py +++ b/Powers/plugins/admin.py @@ -1,24 +1,27 @@ -from os import remove -from html import escape from asyncio import sleep -from pyrogram import filters -from Powers.vars import Config +from html import escape +from os import remove from traceback import format_exc + +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 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 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) +from Powers.utils.parser import mention_html +from Powers.vars import Config @Gojo.on_message(command("adminlist")) diff --git a/Powers/plugins/antispam.py b/Powers/plugins/antispam.py index 51c2ec5f0e3ef4efe9a89ee36f4dcf0a2502b50c..cb75d10e9f7819431f2c8df230da66008dd874e5 100644 --- a/Powers/plugins/antispam.py +++ b/Powers/plugins/antispam.py @@ -1,18 +1,19 @@ -from io import BytesIO from datetime import datetime -from Powers.vars import Config +from io import BytesIO from traceback import format_exc -from Powers.bot_class import Gojo + +from pyrogram.errors import MessageTooLong, PeerIdInvalid, UserIsBlocked from pyrogram.types import Message -from Powers.database.users_db import Users + +from Powers import LOGGER, MESSAGE_DUMP, SUPPORT_GROUP, SUPPORT_STAFF +from Powers.bot_class import Gojo from Powers.database.antispam_db import GBan -from Powers.utils.parser import mention_html +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.extract_user import extract_user -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 - +from Powers.utils.parser import mention_html +from Powers.vars import Config # Initialize db = GBan() diff --git a/Powers/plugins/approve.py b/Powers/plugins/approve.py index 2949c33ffa4251b59fb022695462615d2cdec618..0ae51235111639a5007bfce928f8b2de88146e18 100644 --- a/Powers/plugins/approve.py +++ b/Powers/plugins/approve.py @@ -1,14 +1,15 @@ from pyrogram import filters -from Powers.bot_class import Gojo -from Powers.utils.kbhelpers import ikb +from pyrogram.enums import ChatMemberStatus as CMS +from pyrogram.errors import PeerIdInvalid, RPCError, UserNotParticipant +from pyrogram.types import CallbackQuery, Message + from Powers import LOGGER, SUPPORT_GROUP -from Powers.utils.parser import mention_html +from Powers.bot_class import Gojo from Powers.database.approve_db import Approve -from pyrogram.types import Message, CallbackQuery +from Powers.utils.custom_filters import admin_filter, command, owner_filter from Powers.utils.extract_user import extract_user -from pyrogram.enums import ChatMemberStatus as CMS -from pyrogram.errors import RPCError, PeerIdInvalid, UserNotParticipant -from Powers.utils.custom_filters import command, admin_filter, owner_filter +from Powers.utils.kbhelpers import ikb +from Powers.utils.parser import mention_html @Gojo.on_message(command("approve") & admin_filter) diff --git a/Powers/plugins/bans.py b/Powers/plugins/bans.py index 54e576be97d121f081e541eeb9a76b18abc4105a..d805a918316748be2c49ee39bcc004d5e98eba09 100644 --- a/Powers/plugins/bans.py +++ b/Powers/plugins/bans.py @@ -1,21 +1,22 @@ from random import choice -from pyrogram import enums -from Powers.vars import Config from traceback import format_exc -from Powers.bot_class import Gojo + +from pyrogram import enums +from pyrogram.errors import (ChatAdminRequired, PeerIdInvalid, RightForbidden, + RPCError, UserAdminInvalid) from pyrogram.filters import regex -from Powers.utils.parser import mention_html -from Powers.utils.string import extract_time -from Powers.utils.extract_user import extract_user -from Powers.utils.extras import BAN_GIFS, KICK_GIFS +from pyrogram.types import (CallbackQuery, InlineKeyboardButton, + InlineKeyboardMarkup, Message) + +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 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) +from Powers.utils.extract_user import extract_user +from Powers.utils.extras import BAN_GIFS, KICK_GIFS +from Powers.utils.parser import mention_html +from Powers.utils.string import extract_time +from Powers.vars import Config @Gojo.on_message(command("tban") & restrict_filter) diff --git a/Powers/plugins/blacklist.py b/Powers/plugins/blacklist.py index 3f2230cf77cc0109907f5a1458ae2384a2c5ea89..9203096475f20b7b926cf70a2b82c287ecaffe7f 100644 --- a/Powers/plugins/blacklist.py +++ b/Powers/plugins/blacklist.py @@ -1,12 +1,14 @@ from html import escape -from Powers import LOGGER + from pyrogram import filters +from pyrogram.enums import ChatMemberStatus as CMS +from pyrogram.types import CallbackQuery, Message + +from Powers import LOGGER from Powers.bot_class import Gojo -from Powers.utils.kbhelpers import ikb -from pyrogram.types import Message, CallbackQuery from Powers.database.blacklist_db import Blacklist -from pyrogram.enums import ChatMemberStatus as CMS from Powers.utils.custom_filters import command, owner_filter, restrict_filter +from Powers.utils.kbhelpers import ikb @Gojo.on_message(command("blacklist") & filters.group) diff --git a/Powers/plugins/botstaff.py b/Powers/plugins/botstaff.py index b9808ad372132020260357d79d0a059e4c7977dc..6c547bb51049c8d298b9765537d446d18c814ef2 100644 --- a/Powers/plugins/botstaff.py +++ b/Powers/plugins/botstaff.py @@ -1,9 +1,10 @@ -from Powers.bot_class import Gojo -from pyrogram.types import Message from pyrogram.errors import RPCError -from Powers.utils.parser import mention_html +from pyrogram.types import Message + +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 import LOGGER, OWNER_ID, DEV_USERS, SUDO_USERS, WHITELIST_USERS +from Powers.utils.parser import mention_html @Gojo.on_message(command("botstaff", dev_cmd=True)) diff --git a/Powers/plugins/chat_blacklist.py b/Powers/plugins/chat_blacklist.py index 89a6dc4b6d921482bb2029f8875c85fbea8237e8..b6c25b90814b9602558d1ba169e6fd6dee23231b 100644 --- a/Powers/plugins/chat_blacklist.py +++ b/Powers/plugins/chat_blacklist.py @@ -1,11 +1,12 @@ -from Powers import LOGGER from traceback import format_exc -from Powers.bot_class import Gojo + +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 +from Powers import LOGGER +from Powers.bot_class import Gojo +from Powers.database.group_blacklist import GroupBlacklist +from Powers.utils.custom_filters import command # initialise database db = GroupBlacklist() diff --git a/Powers/plugins/dev.py b/Powers/plugins/dev.py index a919777b40fc30bbe877dfd27d62e5deb8d17ae6..d1bb0090c0f0141359c6220545266f4af6c41aad 100644 --- a/Powers/plugins/dev.py +++ b/Powers/plugins/dev.py @@ -1,19 +1,21 @@ 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.bot_class import Gojo + +from pyrogram.errors import (ChannelInvalid, ChannelPrivate, ChatAdminRequired, + EntityBoundsInvalid, FloodWait, MessageTooLong, + PeerIdInvalid, RPCError) from pyrogram.types import Message -from Powers.utils.http_helper import * -from time import time, gmtime, strftime + +from Powers import LOGFILE, LOGGER, MESSAGE_DUMP, UPTIME +from Powers.bot_class import Gojo 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 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)) diff --git a/Powers/plugins/disable.py b/Powers/plugins/disable.py index e4249ef6a7ac41bbb72583388f131f2aaf32d6eb..21e0804e9b9fb5e0bd5270318e5e2f77651b521b 100644 --- a/Powers/plugins/disable.py +++ b/Powers/plugins/disable.py @@ -1,13 +1,15 @@ from html import escape + from pyrogram import filters +from pyrogram.enums import ChatMemberStatus as CMS +from pyrogram.types import (CallbackQuery, InlineKeyboardButton, + InlineKeyboardMarkup, Message) + +from Powers import HELP_COMMANDS, LOGGER from Powers.bot_class import Gojo -from Powers import LOGGER, HELP_COMMANDS from Powers.database.disable_db import Disabling -from pyrogram.enums import ChatMemberStatus as CMS -from pyrogram.types import ( - Message, CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup) -from Powers.utils.custom_filters import ( - command, admin_filter, owner_filter, can_change_filter) +from Powers.utils.custom_filters import (admin_filter, can_change_filter, + command, owner_filter) @Gojo.on_message(command("disable") & can_change_filter) diff --git a/Powers/plugins/filters.py b/Powers/plugins/filters.py index ed49aa7b9e7b4e8486e95186284f2efd156a50cc..2556d0d9e4a6ec6a494241aa54ac6f60bc4eecc4 100644 --- a/Powers/plugins/filters.py +++ b/Powers/plugins/filters.py @@ -1,21 +1,22 @@ +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 import filters +from pyrogram.enums import ChatMemberStatus as CMS from pyrogram.errors import RPCError -from Powers.utils.kbhelpers import ikb +from pyrogram.types import CallbackQuery, InlineKeyboardMarkup, Message + from Powers.bot_class import LOGGER, Gojo -from Powers.utils.cmd_senders import send_cmd from Powers.database.filters_db import Filters -from pyrogram.enums import ChatMemberStatus as CMS -from Powers.utils.regex_utils import regex_searcher +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 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) - +from Powers.utils.regex_utils import regex_searcher +from Powers.utils.string import (build_keyboard, + escape_mentions_using_curly_brackets, + parse_button, split_quotes) # Initialise db = Filters() diff --git a/Powers/plugins/formatting.py b/Powers/plugins/formatting.py index 9c378d11f17e5e5304d24c8ecbbaa5e960f1c610..68fa46fe93e5359f31e551394280b4a2e8735621 100644 --- a/Powers/plugins/formatting.py +++ b/Powers/plugins/formatting.py @@ -1,9 +1,10 @@ +from pyrogram import enums, filters +from pyrogram.types import CallbackQuery, Message + from Powers import LOGGER from Powers.bot_class import Gojo -from pyrogram import enums, filters -from Powers.utils.kbhelpers import ikb from Powers.utils.custom_filters import command -from pyrogram.types import Message, CallbackQuery +from Powers.utils.kbhelpers import ikb async def gen_formatting_kb(m): @@ -14,8 +15,9 @@ async def gen_formatting_kb(m): ("Fillings", "formatting.fillings"), ], [("Random Content", "formatting.random_content")], - [("« " + "Back", "commands")], ], + True, + "commands" ) diff --git a/Powers/plugins/fun.py b/Powers/plugins/fun.py index f806ad0d8965213b39ea28aed4af4602c2aa3b64..494dec11752349d2ca78be75337361802594196c 100644 --- a/Powers/plugins/fun.py +++ b/Powers/plugins/fun.py @@ -1,14 +1,17 @@ from html import escape from random import choice + 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 pyrogram.types import Message + +from Powers import DEV_USERS, LOGGER +from Powers.bot_class import Gojo +from Powers.utils import extras from Powers.utils.custom_filters import command from Powers.utils.extract_user import extract_user -from Powers.utils.extras import NOWYES as NO, YESWNO as YES +from Powers.utils.extras import NOWYES as NO +from Powers.utils.extras import YESWNO as YES @Gojo.on_message(command("shout")) diff --git a/Powers/plugins/greetings.py b/Powers/plugins/greetings.py index a6bea2a459a871b7c838ac4a686db6f9a1c8a4ff..7f5f42538f2147e29999c0f9127cfdf6dd328896 100644 --- a/Powers/plugins/greetings.py +++ b/Powers/plugins/greetings.py @@ -1,20 +1,21 @@ from html import escape from secrets import choice + +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 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 pyrogram.enums import ChatMemberStatus as CMS +from Powers.utils.custom_filters import admin_filter, bot_admin_filter, command 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) - +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 # Initialize gdb = GBan() diff --git a/Powers/plugins/info.py b/Powers/plugins/info.py index dc20c2907d4bfb651a8fdc4e0775831ae645ee3a..929d2ed41002a8dbb73e0e5d5f7ee19a634b4871 100644 --- a/Powers/plugins/info.py +++ b/Powers/plugins/info.py @@ -1,18 +1,19 @@ 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.bot_class import Gojo + +from pyrogram import enums +from pyrogram.errors import EntityBoundsInvalid, MediaCaptionTooLong, RPCError from pyrogram.types import Message + +from Powers import (DEV_USERS, LOGGER, SUDO_USERS, SUPPORT_STAFF, + WHITELIST_USERS) +from Powers.bot_class import Gojo from Powers.database.antispam_db import GBan from Powers.utils.custom_filters import command from Powers.utils.extract_user import extract_user -from pyrogram.errors import RPCError, EntityBoundsInvalid, MediaCaptionTooLong -from Powers import ( - LOGGER, DEV_USERS, SUDO_USERS, SUPPORT_STAFF, WHITELIST_USERS) - +from Powers.vars import Config gban_db = GBan() diff --git a/Powers/plugins/initial.py b/Powers/plugins/initial.py index 3cbd7790a1166ff24db5c43cb0338d0d1788c8ab..6cc6a675d210becee6b1b4d5f3a97f82cc984aaf 100644 --- a/Powers/plugins/initial.py +++ b/Powers/plugins/initial.py @@ -1,19 +1,20 @@ -from Powers import LOGGER from pyrogram import filters -from Powers.bot_class import Gojo -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.rules_db import Rules -from Powers.database.users_db import Users +from pyrogram.types import Message + +from Powers import LOGGER +from Powers.bot_class import Gojo 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.chats_db import Chats +from Powers.database.disable_db import Disabling +from Powers.database.filters_db import Filters from Powers.database.greetings_db import Greetings -from Powers.database.reporting_db import Reporting 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 @Gojo.on_message(filters.group, group=4) diff --git a/Powers/plugins/locks.py b/Powers/plugins/locks.py index 44f470e52880da521d48aa07951b0f73d21602ab..26a974a311a3e3fad8beb7d7f09d8f1f9d0e7660 100644 --- a/Powers/plugins/locks.py +++ b/Powers/plugins/locks.py @@ -1,10 +1,12 @@ -from Powers import LOGGER from asyncio import sleep + +from pyrogram.errors import ChatAdminRequired, ChatNotModified, RPCError +from pyrogram.types import ChatPermissions, Message + +from Powers import LOGGER 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 RPCError, ChatNotModified, ChatAdminRequired @Gojo.on_message(command("locktypes")) diff --git a/Powers/plugins/muting.py b/Powers/plugins/muting.py index dd9199026d549596225417898f1619fbb4b903dd..ea6faf363fe9ede6c326483987fd8b05b5cb9338 100644 --- a/Powers/plugins/muting.py +++ b/Powers/plugins/muting.py @@ -1,19 +1,21 @@ from random import choice -from Powers.vars import Config -from Powers.bot_class import Gojo + +from pyrogram.errors import (ChatAdminRequired, RightForbidden, RPCError, + UserNotParticipant) from pyrogram.filters import regex +from pyrogram.types import (CallbackQuery, ChatPermissions, + InlineKeyboardButton, InlineKeyboardMarkup, + Message) + +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 MUTE_GIFS from Powers.utils.parser import mention_html from Powers.utils.string import extract_time -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) +from Powers.vars import Config @Gojo.on_message(command("tmute") & restrict_filter) diff --git a/Powers/plugins/notes.py b/Powers/plugins/notes.py index a25aa2b879c8c968105d5d306716bc1a82a469a7..7dedd5b5cf31bd4823337d76237447725b514edc 100644 --- a/Powers/plugins/notes.py +++ b/Powers/plugins/notes.py @@ -1,20 +1,22 @@ -from Powers import LOGGER from secrets import choice -from Powers.vars import Config from traceback import format_exc -from Powers.bot_class import Gojo + from pyrogram import enums, filters +from pyrogram.enums import ChatMemberStatus as CMS from pyrogram.errors import RPCError -from Powers.utils.kbhelpers import ikb +from pyrogram.types import CallbackQuery, InlineKeyboardMarkup, Message + +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 pyrogram.enums import ChatMemberStatus as CMS +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.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) - +from Powers.utils.string import (build_keyboard, + escape_mentions_using_curly_brackets, + parse_button) +from Powers.vars import Config # Initialise db = Notes() diff --git a/Powers/plugins/pin.py b/Powers/plugins/pin.py index a4e4e37c2bec6e3a77f62ebcd2b8de572911d922..5999e1720c055b28e87eac38b1f17b5ce00781f5 100644 --- a/Powers/plugins/pin.py +++ b/Powers/plugins/pin.py @@ -1,14 +1,16 @@ -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 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 import LOGGER, SUPPORT_GROUP +from Powers.bot_class import Gojo from Powers.database.pins_db import Pins -from pyrogram.types import Message, CallbackQuery -from pyrogram.enums import ChatMemberStatus as CMS -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 +from Powers.utils.custom_filters import admin_filter, command +from Powers.utils.kbhelpers import ikb +from Powers.utils.string import build_keyboard, parse_button @Gojo.on_message(command("pin") & admin_filter) diff --git a/Powers/plugins/purge.py b/Powers/plugins/purge.py index 809ad45f43ba31d7530d4b018353ce541043e90c..02e80b59a1dc72642a6a5c46de3d6b1fa025e0c6 100644 --- a/Powers/plugins/purge.py +++ b/Powers/plugins/purge.py @@ -1,10 +1,12 @@ from asyncio import sleep + +from pyrogram.enums import ChatType +from pyrogram.errors import MessageDeleteForbidden, RPCError +from pyrogram.types import Message + from Powers import SUPPORT_GROUP from Powers.bot_class import Gojo -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 +from Powers.utils.custom_filters import admin_filter, command @Gojo.on_message(command("purge") & admin_filter) diff --git a/Powers/plugins/report.py b/Powers/plugins/report.py index 3e08e17952e77a57c936799aa69a4b7e1638af3a..49ad91789a43e159f483e4be1a1f78180603de81 100644 --- a/Powers/plugins/report.py +++ b/Powers/plugins/report.py @@ -1,14 +1,17 @@ -from pyrogram import filters from traceback import format_exc -from Powers.bot_class import Gojo + +from pyrogram import filters +from pyrogram.enums import ChatMembersFilter as cmf +from pyrogram.enums import ChatType from pyrogram.errors import RPCError -from Powers.utils.kbhelpers import ikb +from pyrogram.types import CallbackQuery, Message + from Powers import LOGGER, SUPPORT_STAFF -from Powers.utils.parser import mention_html -from pyrogram.types import Message, CallbackQuery +from Powers.bot_class import Gojo from Powers.database.reporting_db import Reporting -from Powers.utils.custom_filters import command, admin_filter -from pyrogram.enums import ChatType, ChatMembersFilter as cmf +from Powers.utils.custom_filters import admin_filter, command +from Powers.utils.kbhelpers import ikb +from Powers.utils.parser import mention_html @Gojo.on_message( diff --git a/Powers/plugins/rules.py b/Powers/plugins/rules.py index bf4af588d1bfe64059f0e18f7b02a9fdc30dc781..0ae0a00fd653e860d7c5f639854b0940c7c6037e 100644 --- a/Powers/plugins/rules.py +++ b/Powers/plugins/rules.py @@ -1,11 +1,12 @@ -from Powers import LOGGER from pyrogram import filters -from Powers.vars import Config +from pyrogram.types import CallbackQuery, Message + +from Powers import LOGGER from Powers.bot_class import Gojo -from Powers.utils.kbhelpers import ikb from Powers.database.rules_db import Rules -from pyrogram.types import Message, CallbackQuery -from Powers.utils.custom_filters import command, admin_filter +from Powers.utils.custom_filters import admin_filter, command +from Powers.utils.kbhelpers import ikb +from Powers.vars import Config @Gojo.on_message(command("rules") & filters.group) diff --git a/Powers/plugins/start.py b/Powers/plugins/start.py index 1c6ce953ff5f0836ea6dd8f9036af170dbabac0f..e9e5e5393b528498c92655298124a6130ddce93d 100644 --- a/Powers/plugins/start.py +++ b/Powers/plugins/start.py @@ -1,17 +1,19 @@ from random import choice -from Powers.vars import Config -from Powers.bot_class import Gojo + from pyrogram import enums, filters -from Powers.utils.kbhelpers import ikb -from Powers import LOGGER, HELP_COMMANDS -from Powers.utils.extras import StartPic +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 import HELP_COMMANDS, LOGGER +from Powers.bot_class import Gojo 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) +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 @Gojo.on_message( @@ -145,9 +147,7 @@ Join my [News Channel](http://t.me/gojo_bots_network) to get information on all @Gojo.on_callback_query(filters.regex("^commands$")) 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 = await gen_cmds_kb(q.message) keyboard = ikb(ou, True) try: cpt = f""" @@ -218,9 +218,7 @@ async def help_menu(_, m: Message): else: 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 = await gen_cmds_kb(m) keyboard = ikb(ou, True) msg = f""" Hey **[{m.from_user.first_name}](http://t.me/{m.from_user.username})**!My name is Gojo✨. @@ -247,15 +245,13 @@ Commands available: async def get_module_info(_, q: CallbackQuery): module = q.data.split(".", 1)[1] - help_msg = (f"**{str(module)}:**\n\n" + HELP_COMMANDS[module]["help_msg"],) + help_msg = (f"**{str(module)}:**\n\n" + HELP_COMMANDS[f"plugins.{module}"]["help_msg"],) - help_kb = HELP_COMMANDS[module]["buttons"] + [ - [("« " + "Back", "commands")], - ] + help_kb = HELP_COMMANDS[f"plugins.{module}"]["buttons"] await q.edit_message_caption( caption=help_msg, parse_mode=enums.ParseMode.MARKDOWN, - reply_markup=ikb(help_kb), + reply_markup=ikb(help_kb, True, todo="commands"), ) await q.answer() return diff --git a/Powers/plugins/stats.py b/Powers/plugins/stats.py index d35439153e8c7f222ac01449e35c0ceb921622cb..8eb9f3e1bda1647c1dae73da5d611e51124d6f38 100644 --- a/Powers/plugins/stats.py +++ b/Powers/plugins/stats.py @@ -1,19 +1,20 @@ 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.bot_class import Gojo from Powers.database.antispam_db import GBan from Powers.database.approve_db import Approve -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.chats_db import Chats +from Powers.database.disable_db import Disabling +from Powers.database.filters_db import Filters from Powers.database.greetings_db import Greetings -from Powers.database.warns_db import Warns, WarnSettings 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 @Gojo.on_message(command("stats", dev_cmd=True)) diff --git a/Powers/plugins/utils.py b/Powers/plugins/utils.py index af9d5c7f9a4d485ac954003fab100ce7e09b02fb..cf038a7c0c0621579baa091e2b8f898cc1fa74fa 100644 --- a/Powers/plugins/utils.py +++ b/Powers/plugins/utils.py @@ -1,21 +1,23 @@ -import re import asyncio -import aiofiles -from Powers import * -from os import remove +import re from io import BytesIO -from wikipedia import summary -from Powers.bot_class import Gojo +from os import remove + +import aiofiles 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 Powers.utils.custom_filters import command +from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message +from wikipedia import summary +from wikipedia.exceptions import DisambiguationError, PageError + +from Powers import * +from Powers.bot_class import Gojo +from Powers.database.users_db import Users from Powers.utils.clean_file import remove_markdown_and_html -from wikipedia.exceptions import PageError, DisambiguationError -from pyrogram.types import Message, InlineKeyboardButton, InlineKeyboardMarkup +from Powers.utils.custom_filters import command +from Powers.utils.http_helper import * @Gojo.on_message(command("wiki")) diff --git a/Powers/plugins/warns.py b/Powers/plugins/warns.py index aa9c7036d9f7f2b23cc5e3e644a70db33b866045..87c7768910f89d2bfa047ab7eb2a13b9d3f700f0 100644 --- a/Powers/plugins/warns.py +++ b/Powers/plugins/warns.py @@ -1,19 +1,21 @@ from time import time + from pyrogram import filters -from Powers.vars import Config -from Powers.bot_class import Gojo from pyrogram.errors import RPCError +from pyrogram.types import (CallbackQuery, ChatPermissions, + InlineKeyboardButton, InlineKeyboardMarkup, + Message) + from Powers import LOGGER, SUPPORT_STAFF +from Powers.bot_class import Gojo 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 command, admin_filter, restrict_filter -from pyrogram.types import ( - Message, CallbackQuery, ChatPermissions, InlineKeyboardButton, - InlineKeyboardMarkup) +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 @Gojo.on_message( diff --git a/Powers/plugins/watchers.py b/Powers/plugins/watchers.py index 3fc6b68029bda61fd0d6e019ea68f231dee5ce4a..ee7001d3ca705adf839c733350383e494f880f62 100644 --- a/Powers/plugins/watchers.py +++ b/Powers/plugins/watchers.py @@ -1,21 +1,22 @@ +from re import escape as re_escape from time import time -from pyrogram import filters from traceback import format_exc + +from pyrogram import filters +from pyrogram.errors import ChatAdminRequired, RPCError, UserAdminInvalid +from pyrogram.types import ChatPermissions, Message + +from Powers import LOGGER, MESSAGE_DUMP, SUPPORT_STAFF from Powers.bot_class import Gojo -from re import escape as re_escape -from Powers.database.pins_db import Pins -from Powers.utils.parser import mention_html +from Powers.database.antispam_db import ANTISPAM_BANNED, GBan from Powers.database.approve_db import Approve from Powers.database.blacklist_db import Blacklist -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.database.pins_db import Pins +from Powers.database.warns_db import Warns, WarnSettings from Powers.utils.caching import ADMIN_CACHE, admin_cache_reload -from pyrogram.errors import RPCError, UserAdminInvalid, ChatAdminRequired - +from Powers.utils.parser import mention_html +from Powers.utils.regex_utils import regex_searcher # Initialise gban_db = GBan() diff --git a/Powers/utils/admin_check.py b/Powers/utils/admin_check.py index 2bb13075df1b2052686b09c28f94411b739321a8..d5a14c43c7897cc5d9fe90fb9ebe14aa83e41da0 100644 --- a/Powers/utils/admin_check.py +++ b/Powers/utils/admin_check.py @@ -1,8 +1,9 @@ from traceback import format_exc -from pyrogram.types import Message, CallbackQuery + from pyrogram.enums import ChatMemberStatus as CMS -from Powers import LOGGER, OWNER_ID, DEV_USERS, SUDO_USERS +from pyrogram.types import CallbackQuery, Message +from Powers import DEV_USERS, LOGGER, OWNER_ID, 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 f7c51fb031bff9729eb17327832ed06752dba151..f6e102da9e960a040eef9bb16dd9bcdcb7f9f46e 100644 --- a/Powers/utils/caching.py +++ b/Powers/utils/caching.py @@ -1,12 +1,13 @@ -from typing import List -from Powers import LOGGER from threading import RLock +from time import perf_counter, time +from typing import List + from cachetools import TTLCache -from time import time, perf_counter -from pyrogram.types import CallbackQuery from pyrogram.enums import ChatMembersFilter +from pyrogram.types import CallbackQuery from pyrogram.types.messages_and_media.message import Message +from Powers import LOGGER THREAD_LOCK = RLock() diff --git a/Powers/utils/custom_filters.py b/Powers/utils/custom_filters.py index 5ed3126e12a79b164e3065c9bef0cb8c89c7674e..f5d51185db9e7984c0c0f9d350d6216cdf34ad98 100644 --- a/Powers/utils/custom_filters.py +++ b/Powers/utils/custom_filters.py @@ -1,15 +1,18 @@ +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 pyrogram.enums import ChatMemberStatus as CMS +from pyrogram.enums import ChatType +from pyrogram.errors import RPCError, UserNotParticipant from pyrogram.filters import create -from re import escape, compile as compile_re +from pyrogram.types import CallbackQuery, Message + +from Powers import DEV_USERS, OWNER_ID, SUDO_USERS from Powers.database.disable_db import Disabling -from pyrogram.types import Message, CallbackQuery -from Powers import OWNER_ID, DEV_USERS, SUDO_USERS -from pyrogram.errors import RPCError, UserNotParticipant -from pyrogram.enums import ChatType, ChatMemberStatus as CMS from Powers.utils.caching import ADMIN_CACHE, admin_cache_reload - +from Powers.vars import Config 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 aacd51e7a0ec94449718be833262b40e07a2a331..7f9798bffb0f46f325236f9a61e6795185a9be1e 100644 --- a/Powers/utils/extract_user.py +++ b/Powers/utils/extract_user.py @@ -1,10 +1,12 @@ +from traceback import format_exc from typing import Tuple + +from pyrogram.enums import MessageEntityType as entity +from pyrogram.types.messages_and_media.message import Message + 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 -from pyrogram.types.messages_and_media.message import Message async def extract_user(c: Gojo, m: Message) -> Tuple[int, str, str]: diff --git a/Powers/utils/http_helper.py b/Powers/utils/http_helper.py index 2fb5d88e69bc0c20f1b341a6e5b388636f8d3eb6..fa9848ea15aaa1705caba3f186ebbc01e819efba 100644 --- a/Powers/utils/http_helper.py +++ b/Powers/utils/http_helper.py @@ -1,4 +1,5 @@ from asyncio import gather + from Powers.bot_class import aiohttpsession as session diff --git a/Powers/utils/kbhelpers.py b/Powers/utils/kbhelpers.py index be3166ee806e99267a19e8f51cc8b5ecc3ea2ed2..8e41cd6b351e226d2bf030996d07190a831c23c5 100644 --- a/Powers/utils/kbhelpers.py +++ b/Powers/utils/kbhelpers.py @@ -1,19 +1,25 @@ from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup -def ikb(rows=None, back=False): +def ikb(rows=None, back=False, todo="start_back"): if rows is None: rows = [] lines = [] for row in rows: line = [] - for button in row: - btn_text = button.split(".")[1].upper() - button = btn(btn_text, button) # InlineKeyboardButton - line.append(button) - lines.append(line) + try: + for button in row: + btn_text = button.split(".")[1].upper() + button = btn(btn_text, button) # InlineKeyboardButton + line.append(button) + lines.append(line) + except AttributeError: + for button in row: + button = btn(*button) # InlineKeyboardButton + line.append(button) + lines.append(line) if back: - back_btn = [(btn("Back", "start_back"))] + back_btn = [(btn("« Back", todo))] lines.append(back_btn) return InlineKeyboardMarkup(inline_keyboard=lines) diff --git a/Powers/utils/msg_types.py b/Powers/utils/msg_types.py index 6c4b1382eb2de08c3f8bcef735ceeed708a195b9..53af4b18c5f2dc1d03ece2672d9c1c6c4a1e670b 100644 --- a/Powers/utils/msg_types.py +++ b/Powers/utils/msg_types.py @@ -1,4 +1,5 @@ from enum import IntEnum, unique + from pyrogram.types import Message diff --git a/Powers/utils/parser.py b/Powers/utils/parser.py index 1ed67756078f9a2441605d008d369faa04bfc614..9b3556825a13873e8300a51568d04bc78ef19c05 100644 --- a/Powers/utils/parser.py +++ b/Powers/utils/parser.py @@ -1,5 +1,6 @@ from html import escape -from re import sub, compile as compilere +from re import compile as compilere +from re import sub async def cleanhtml(raw_html: str) -> str: diff --git a/Powers/utils/regex_utils.py b/Powers/utils/regex_utils.py index 5cade1fede354ad1ed702d1d30e38e2e1bc8ff37..bf843cce7802e1d2d7a88bfb053fce7b7885c3d7 100644 --- a/Powers/utils/regex_utils.py +++ b/Powers/utils/regex_utils.py @@ -1,6 +1,8 @@ +from traceback import format_exc + 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 73198c2210d6b99cc169c1ef71608c6dbb7eff31..749effd9611ddd6c476e25d21f567b578c34afa7 100644 --- a/Powers/utils/start_utils.py +++ b/Powers/utils/start_utils.py @@ -1,20 +1,22 @@ from html import escape from secrets import choice -from Powers.vars import Config from traceback import format_exc -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 pyrogram.types import CallbackQuery, InlineKeyboardButton, Message + +from Powers import HELP_COMMANDS, LOGGER, SUPPORT_GROUP +from Powers.bot_class import Gojo 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 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) - +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 # Initialize notes_db = Notes() @@ -233,11 +235,12 @@ async def get_help_msg(m: Message or CallbackQuery, help_option: str): if help_option in HELP_COMMANDS[i]["alt_cmds"] ) help_option_value = help_option_name["help_msg"] - help_kb = next( + ou = next( HELP_COMMANDS[i]["buttons"] for i in HELP_COMMANDS if help_option in HELP_COMMANDS[i]["alt_cmds"] - ) + [[("« " + "Back", "commands")]] + ) + help_kb = ikb(ou, True, "commands") help_msg = f"**{(help_option_value)}:**" LOGGER.info( f"{m.from_user.id} fetched help for {help_option} in {m.chat.id}", @@ -250,7 +253,9 @@ Commands available: * /start: Start the bot * /help: Give's you this message. """ - help_kb = [ + ou = await gen_cmds_kb(m) + help_kb = ikb(ou, True) + """help_kb = [ *(await gen_cmds_kb(m)), [ InlineKeyboardButton( @@ -258,6 +263,6 @@ Commands available: callback_data="start_back", ), ], - ] + ]""" return help_msg, help_kb diff --git a/Powers/utils/string.py b/Powers/utils/string.py index c5d3826f9b1e0022b37319ff8aa112ffcea6080c..a5e97a703ecfcf7fd28ec7f42064a8028ac88046 100644 --- a/Powers/utils/string.py +++ b/Powers/utils/string.py @@ -1,11 +1,12 @@ -from time import time from html import escape +from re import compile as compile_re +from time import time from typing import List + from pyrogram.enums import ChatType -from re import compile as compile_re -from Powers.utils.parser import escape_markdown -from pyrogram.types import Message, InlineKeyboardButton +from pyrogram.types import InlineKeyboardButton, Message +from Powers.utils.parser import escape_markdown BTN_URL_REGEX = compile_re(r"(\[([^\[]+?)\]\(buttonurl:(?:/{0,2})(.+?)(:same)?\))") diff --git a/Powers/vars.py b/Powers/vars.py index 100dc8cd76be5f76cb8d07e0d5420fd155cf77a6..c1bffaf0246ddef44bb4a1bfe586d4db52c92c3a 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)])