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)])