diff --git a/Powers/__init__.py b/Powers/__init__.py
index c7f5ed607942c4708e1b3cdf1b64b0931c9d24d5..b2e36f9bbe960425e38ba9289b7d0f8a01a46ff2 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"
@@ -103,7 +103,8 @@ 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}")
@@ -144,6 +145,7 @@ 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 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..59d3755f0f81b0a96706c3c76d1018ea295abd13 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 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..8e0f1b6e45cc8e327b6827596b1efbd1722aee56 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()
@@ -66,7 +66,8 @@ 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 2295038466416694c6963b049ba417357e9b723d..f4a4493cefd1cc74cb2691ff62ef14036601b55a 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,7 +110,8 @@ 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 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..b573e1bd683f0fd70605ee90e5e355093c6111e6 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,9 +146,11 @@ 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 3df3c6e3dfc356971f2750040ee887cecd8a585b..fa6c3dc52f8a2c415cc8a03fef16ab1006649af5 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,7 +71,8 @@ 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 84ef6c21e25ee19be99b17954f6fe9ca98d0c5c7..b1ca8800cb85e5866be04c1d3c5327cc51d0de7d 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()
@@ -128,7 +128,8 @@ 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 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..ec3294065959ef1aee95f632c0adf49220e69d41 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,7 +57,8 @@ 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 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..2e936f928b14a2f8958357873fac925b368d372c 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,9 +42,11 @@ 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 a0cfe90c96cc4e1fa9b5ac0d6714b4e0841b8831..0704cd89a0d0a9452ef10b5730d2e5ab53000de9 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,7 +68,8 @@ 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 45ad1183a1752ce7813c34edb6bc059fbd1e4ac0..d913505561e6c9fe81e45c653774f468fa96d98c 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,7 +67,8 @@ 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 696dcdb8fac64bb167ea5973c8ed44a8e139db23..48c0a5bbf884e85b1718d8081796b11dbbac2cf9 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,12 +89,14 @@ 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,
@@ -103,7 +105,8 @@ 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
@@ -119,9 +122,11 @@ 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 fb81444dbee722a7cb931936c33971a4333c0403..39ff8676b87a7d3865d96a7f6208599ca6e6702b 100644
--- a/Powers/plugins/admin.py
+++ b/Powers/plugins/admin.py
@@ -1,24 +1,26 @@
-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 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
+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
@Gojo.on_message(command("adminlist"))
@@ -37,7 +39,8 @@ 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 51c2ec5f0e3ef4efe9a89ee36f4dcf0a2502b50c..127c9b64a6a2353d8f7bb57b0a44e51687b096d5 100644
--- a/Powers/plugins/antispam.py
+++ b/Powers/plugins/antispam.py
@@ -1,18 +1,18 @@
-from io import BytesIO
from datetime import datetime
-from Powers.vars import Config
+from io import BytesIO
from traceback import format_exc
+
+from Powers import LOGGER, MESSAGE_DUMP, SUPPORT_GROUP, SUPPORT_STAFF
from Powers.bot_class import Gojo
-from pyrogram.types import Message
-from Powers.database.users_db import Users
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
+from pyrogram.errors import MessageTooLong, PeerIdInvalid, UserIsBlocked
+from pyrogram.types import Message
# Initialize
db = GBan()
diff --git a/Powers/plugins/approve.py b/Powers/plugins/approve.py
index 2949c33ffa4251b59fb022695462615d2cdec618..71df6ccc73bbf5fb86ccedd69fdfead7b1091964 100644
--- a/Powers/plugins/approve.py
+++ b/Powers/plugins/approve.py
@@ -1,14 +1,14 @@
-from pyrogram import filters
-from Powers.bot_class import Gojo
-from Powers.utils.kbhelpers import ikb
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 Powers.utils.kbhelpers import ikb
+from Powers.utils.parser import mention_html
+from pyrogram import filters
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 pyrogram.errors import PeerIdInvalid, RPCError, UserNotParticipant
+from pyrogram.types import CallbackQuery, Message
@Gojo.on_message(command("approve") & admin_filter)
@@ -89,7 +89,8 @@ 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:
@@ -159,7 +160,8 @@ 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 54e576be97d121f081e541eeb9a76b18abc4105a..108b1240ad61f80d74d5d439e6d299d1510c77fc 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 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 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
+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)
@Gojo.on_message(command("tban") & restrict_filter)
@@ -908,7 +908,8 @@ 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 3f2230cf77cc0109907f5a1458ae2384a2c5ea89..9f26c3ed34a9cd5ad4c5227f320c91eddb139bbf 100644
--- a/Powers/plugins/blacklist.py
+++ b/Powers/plugins/blacklist.py
@@ -1,12 +1,13 @@
from html import escape
+
from Powers import LOGGER
-from pyrogram import filters
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
+from pyrogram import filters
+from pyrogram.enums import ChatMemberStatus as CMS
+from pyrogram.types import CallbackQuery, Message
@Gojo.on_message(command("blacklist") & filters.group)
@@ -56,7 +57,8 @@ 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!"
@@ -111,10 +113,12 @@ 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!"
@@ -149,7 +153,8 @@ 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 b9808ad372132020260357d79d0a059e4c7977dc..6cdb9e189cbc5f15ed071a4e1294203589164ed8 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 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
+from Powers.utils.parser import mention_html
+from pyrogram.errors import RPCError
+from pyrogram.types import Message
@Gojo.on_message(command("botstaff", dev_cmd=True))
diff --git a/Powers/plugins/chat_blacklist.py b/Powers/plugins/chat_blacklist.py
index 89a6dc4b6d921482bb2029f8875c85fbea8237e8..80bb21f8ba34e58965ebd0bd0a1d7a7804139b2e 100644
--- a/Powers/plugins/chat_blacklist.py
+++ b/Powers/plugins/chat_blacklist.py
@@ -1,11 +1,11 @@
-from Powers import LOGGER
from traceback import format_exc
+
+from Powers import LOGGER
from Powers.bot_class import Gojo
-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.utils.custom_filters import command
+from pyrogram.errors import PeerIdInvalid, RPCError
+from pyrogram.types import Message
# initialise database
db = GroupBlacklist()
@@ -42,7 +42,8 @@ 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 a919777b40fc30bbe877dfd27d62e5deb8d17ae6..650e44f957ba5b1a3082e6d14c84b45a37f03e1e 100644
--- a/Powers/plugins/dev.py
+++ b/Powers/plugins/dev.py
@@ -1,19 +1,20 @@
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 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)
+from pyrogram.errors import (ChannelInvalid, ChannelPrivate, ChatAdminRequired,
+ EntityBoundsInvalid, FloodWait, MessageTooLong,
+ PeerIdInvalid, RPCError)
+from pyrogram.types import Message
@Gojo.on_message(command("ping", sudo_cmd=True))
@@ -139,7 +140,8 @@ 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 e4249ef6a7ac41bbb72583388f131f2aaf32d6eb..7a92f4d285122d6957edfd5a57efd74f403924cd 100644
--- a/Powers/plugins/disable.py
+++ b/Powers/plugins/disable.py
@@ -1,13 +1,14 @@
from html import escape
-from pyrogram import filters
+
+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 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 (
- Message, CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup)
-from Powers.utils.custom_filters import (
- command, admin_filter, owner_filter, can_change_filter)
+from pyrogram.types import (CallbackQuery, InlineKeyboardButton,
+ InlineKeyboardMarkup, Message)
@Gojo.on_message(command("disable") & can_change_filter)
@@ -117,7 +118,8 @@ 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 ed49aa7b9e7b4e8486e95186284f2efd156a50cc..f54febc30e0a63d1adea269465c7838ab30ee57f 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.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)
+from pyrogram import filters
+from pyrogram.enums import ChatMemberStatus as CMS
+from pyrogram.errors import RPCError
+from pyrogram.types import CallbackQuery, InlineKeyboardMarkup, Message
# Initialise
db = Filters()
@@ -96,7 +96,8 @@ 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}!",
@@ -120,7 +121,8 @@ 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}.",
)
@@ -281,7 +283,8 @@ 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 9c378d11f17e5e5304d24c8ecbbaa5e960f1c610..2ef42e21b17cb660b000b508ea766ea2839d61a9 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 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
+from pyrogram import enums, filters
+from pyrogram.types import CallbackQuery, Message
async def gen_formatting_kb(m):
diff --git a/Powers/plugins/fun.py b/Powers/plugins/fun.py
index f806ad0d8965213b39ea28aed4af4602c2aa3b64..50c902dfca2f49c7afad670b9a1c60205760f77a 100644
--- a/Powers/plugins/fun.py
+++ b/Powers/plugins/fun.py
@@ -1,14 +1,16 @@
from html import escape
from random import choice
-from pyrogram import enums
-from Powers.utils import extras
+
+from Powers import DEV_USERS, LOGGER
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 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
+from pyrogram import enums
+from pyrogram.errors import MessageTooLong
+from pyrogram.types import Message
@Gojo.on_message(command("shout"))
@@ -72,7 +74,8 @@ 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
@@ -111,7 +114,8 @@ 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 a6bea2a459a871b7c838ac4a686db6f9a1c8a4ff..e3200b5c2f731c0e500cc06e790867c9c3c7f440 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 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
+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
# Initialize
gdb = GBan()
diff --git a/Powers/plugins/info.py b/Powers/plugins/info.py
index d0b80b103040507ac17360e2f179103109f370b6..4052151161b9f34c75d6986bbdd1024e2ef2baa1 100644
--- a/Powers/plugins/info.py
+++ b/Powers/plugins/info.py
@@ -1,20 +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 pyrogram.enums import ChatType
from Powers.database.antispam_db import GBan
from Powers.utils.custom_filters import command
from Powers.utils.extract_user import extract_user
-from Powers import (
- LOGGER, DEV_USERS, SUDO_USERS, SUPPORT_STAFF, WHITELIST_USERS)
-from pyrogram.errors import (
- RPCError, MessageTooLong, EntityBoundsInvalid, MediaCaptionTooLong)
-
+from Powers.vars import Config
+from pyrogram import enums
+from pyrogram.errors import EntityBoundsInvalid, MediaCaptionTooLong, RPCError
+from pyrogram.types import Message
gban_db = GBan()
@@ -189,17 +187,12 @@ async def chat_info(c: Gojo, chat, already=False):
@Gojo.on_message(command(["info", "whois"]))
async def info_func(c: Gojo, message: Message):
- try:
- user, _, user_name = await extract_user(c, message)
- except Exception as e:
- return await message.reply_text(
- f"Got an error while running extract_user function error is {e}.....Give this message in supoort group"
- )
+ user, _, user_name = await extract_user(c, message)
if not user:
await message.reply_text("Can't find user to fetch info!")
- m = await message.reply_text(f"Fetching 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 3cbd7790a1166ff24db5c43cb0338d0d1788c8ab..4bacaa8a700ad04f7157bead19e1e8c9e91e421f 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 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 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
+from pyrogram import filters
+from pyrogram.errors import RPCError
+from pyrogram.types import Message
@Gojo.on_message(filters.group, group=4)
diff --git a/Powers/plugins/locks.py b/Powers/plugins/locks.py
index 44f470e52880da521d48aa07951b0f73d21602ab..a5d2d7b24b5c85f062218d841a7c3e5421ef98cc 100644
--- a/Powers/plugins/locks.py
+++ b/Powers/plugins/locks.py
@@ -1,10 +1,11 @@
-from Powers import LOGGER
from asyncio import sleep
+
+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
+from pyrogram.errors import ChatAdminRequired, ChatNotModified, RPCError
+from pyrogram.types import ChatPermissions, Message
@Gojo.on_message(command("locktypes"))
@@ -55,7 +56,8 @@ 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:
@@ -122,7 +124,8 @@ 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,
@@ -130,7 +133,8 @@ 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:
@@ -212,7 +216,8 @@ 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:
@@ -285,7 +290,8 @@ 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 dd9199026d549596225417898f1619fbb4b903dd..cebc27e02f8bf08354bd0230d98c7ebb45bef5a2 100644
--- a/Powers/plugins/muting.py
+++ b/Powers/plugins/muting.py
@@ -1,19 +1,20 @@
from random import choice
-from Powers.vars import Config
+
+from Powers import LOGGER, OWNER_ID, SUPPORT_GROUP, SUPPORT_STAFF
from Powers.bot_class import Gojo
-from pyrogram.filters import regex
+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
+from pyrogram.errors import (ChatAdminRequired, RightForbidden, RPCError,
+ UserNotParticipant)
+from pyrogram.filters import regex
+from pyrogram.types import (CallbackQuery, ChatPermissions,
+ InlineKeyboardButton, InlineKeyboardMarkup,
+ Message)
@Gojo.on_message(command("tmute") & restrict_filter)
diff --git a/Powers/plugins/notes.py b/Powers/plugins/notes.py
index a25aa2b879c8c968105d5d306716bc1a82a469a7..dd9670e1dabcbaac10ee0f71397748537a8a06e3 100644
--- a/Powers/plugins/notes.py
+++ b/Powers/plugins/notes.py
@@ -1,20 +1,21 @@
-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 pyrogram import enums, filters
-from pyrogram.errors import RPCError
-from Powers.utils.kbhelpers import ikb
+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
+from pyrogram import enums, filters
+from pyrogram.enums import ChatMemberStatus as CMS
+from pyrogram.errors import RPCError
+from pyrogram.types import CallbackQuery, InlineKeyboardMarkup, Message
# Initialise
db = Notes()
@@ -74,7 +75,8 @@ 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(
@@ -300,11 +302,13 @@ 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"
@@ -312,7 +316,8 @@ 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 d14e39259d04c9d0bf0e9db781cdd49ad4c2ca20..b0b14c52db3a0908a94354cb32fb60de635c8e91 100644
--- a/Powers/plugins/pin.py
+++ b/Powers/plugins/pin.py
@@ -1,14 +1,15 @@
-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 pyrogram.types import Message, CallbackQuery
+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.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 pyrogram.errors import ChatAdminRequired, RightForbidden, RPCError
+from pyrogram.filters import regex
+from pyrogram.types import CallbackQuery, Message
@Gojo.on_message(command("pin") & admin_filter)
@@ -36,10 +37,16 @@ async def pin_message(_, m: Message):
# If chat does not have a username, use this
link_chat_id = (str(m.chat.id)).replace("-100", "")
message_link = f"https://t.me/c/{link_chat_id}/{m.reply_to_message.id}"
- await m.reply_text(
- text=f"I have Pinned [this message]({message_link})!",
- disable_web_page_preview=True,
- )
+ if not disable_notification:
+ await m.reply_text(
+ text=f"I have Pinned and Notified [this message]({message_link})!",
+ disable_web_page_preview=True,
+ )
+ else:
+ await m.reply_text(
+ text=f"I have Pinned [this message]({message_link})!",
+ disable_web_page_preview=True,
+ )
except ChatAdminRequired:
await m.reply_text(text="I'm not admin or I don't have rights.")
@@ -89,7 +96,8 @@ 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
@@ -112,7 +120,8 @@ 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.")
@@ -140,11 +149,13 @@ 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(
@@ -196,7 +207,8 @@ 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 809ad45f43ba31d7530d4b018353ce541043e90c..aa369f069684f90b9f0574dc71730d8741efcb26 100644
--- a/Powers/plugins/purge.py
+++ b/Powers/plugins/purge.py
@@ -1,10 +1,11 @@
from asyncio import sleep
+
from Powers import SUPPORT_GROUP
from Powers.bot_class import Gojo
-from pyrogram.types import Message
+from Powers.utils.custom_filters import admin_filter, command
from pyrogram.enums import ChatType
-from pyrogram.errors import RPCError, MessageDeleteForbidden
-from Powers.utils.custom_filters import command, admin_filter
+from pyrogram.errors import MessageDeleteForbidden, RPCError
+from pyrogram.types import Message
@Gojo.on_message(command("purge") & admin_filter)
@@ -19,7 +20,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))
@@ -66,7 +67,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 3e08e17952e77a57c936799aa69a4b7e1638af3a..fdfa6ed01dcd0a1a30c2ae08237125ec1ccc5549 100644
--- a/Powers/plugins/report.py
+++ b/Powers/plugins/report.py
@@ -1,14 +1,16 @@
-from pyrogram import filters
from traceback import format_exc
+
+from Powers import LOGGER, SUPPORT_STAFF
from Powers.bot_class import Gojo
-from pyrogram.errors import RPCError
+from Powers.database.reporting_db import Reporting
+from Powers.utils.custom_filters import admin_filter, command
from Powers.utils.kbhelpers import ikb
-from Powers import LOGGER, SUPPORT_STAFF
from Powers.utils.parser import mention_html
-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
+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
@Gojo.on_message(
diff --git a/Powers/plugins/rules.py b/Powers/plugins/rules.py
index bf4af588d1bfe64059f0e18f7b02a9fdc30dc781..ab8ff95b7df07bda74b4f31b4423a495e489c4e1 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.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
+from pyrogram import filters
+from pyrogram.types import CallbackQuery, Message
@Gojo.on_message(command("rules") & filters.group)
@@ -93,11 +93,13 @@ 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
"
@@ -107,7 +109,8 @@ 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 74fd3536aae16de0b4bf7089c3620b7e3af0fd4e..cc332862c16f17771c3b354c2c18e96d78f27909 100644
--- a/Powers/plugins/start.py
+++ b/Powers/plugins/start.py
@@ -1,17 +1,18 @@
from random import choice
-from Powers.vars import Config
+
+from Powers import HELP_COMMANDS, LOGGER
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 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
+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
@Gojo.on_message(
@@ -69,7 +70,8 @@ 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
@@ -92,7 +94,7 @@ Hey [{m.from_user.first_name}](http://t.me/{m.from_user.username})! My self Gojo
I'm here to help you manage your groups!
Hit /help to find out more about how to use me in my full potential!
-Join my [News Channel](https://t.me/gojo_updates) to get information on all the latest updates."""
+Join my [News Channel](https://t.me/gojo_bots_network) to get information on all the latest updates."""
await m.reply_photo(
photo=choice(StartPic),
@@ -131,7 +133,7 @@ Hey [{q.from_user.first_name}](http://t.me/{q.from_user.username})! My name is G
I'm here to help you manage your groups!
Hit /help to find out more about how to use me in my full potential!
-Join my [News Channel](http://t.me/gojo_updates) to get information on all the latest updates."""
+Join my [News Channel](http://t.me/gojo_bots_network) to get information on all the latest updates."""
await q.edit_message_caption(
caption=cpt,
@@ -147,7 +149,7 @@ Join my [News Channel](http://t.me/gojo_updates) to get information on all the l
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"""
@@ -179,7 +181,8 @@ 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(
@@ -220,7 +223,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 d35439153e8c7f222ac01449e35c0ceb921622cb..b4b834d99a5535edd48e47ea1a710cd44014b4ac 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.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
+from pyrogram import enums
+from pyrogram.types import Message
@Gojo.on_message(command("stats", dev_cmd=True))
diff --git a/Powers/plugins/utils.py b/Powers/plugins/utils.py
index af9d5c7f9a4d485ac954003fab100ce7e09b02fb..489ceecbdf80e170423688bdc183d3f7d4d06a94 100644
--- a/Powers/plugins/utils.py
+++ b/Powers/plugins/utils.py
@@ -1,21 +1,22 @@
-import re
import asyncio
+import re
+from io import BytesIO
+from os import remove
+
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 gpytranslate import Translator
+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 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 Powers.utils.clean_file import remove_markdown_and_html
-from wikipedia.exceptions import PageError, DisambiguationError
-from pyrogram.types import Message, InlineKeyboardButton, InlineKeyboardMarkup
+from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
+from wikipedia import summary
+from wikipedia.exceptions import DisambiguationError, PageError
@Gojo.on_message(command("wiki"))
diff --git a/Powers/plugins/warns.py b/Powers/plugins/warns.py
index aa9c7036d9f7f2b23cc5e3e644a70db33b866045..1cb65a0bb204cd191dd4785c44fb49ee4e729711 100644
--- a/Powers/plugins/warns.py
+++ b/Powers/plugins/warns.py
@@ -1,19 +1,20 @@
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 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
+from pyrogram import filters
+from pyrogram.errors import RPCError
+from pyrogram.types import (CallbackQuery, ChatPermissions,
+ InlineKeyboardButton, InlineKeyboardMarkup,
+ Message)
@Gojo.on_message(
@@ -204,7 +205,8 @@ 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 3fc6b68029bda61fd0d6e019ea68f231dee5ce4a..72165b5bccc92d0b7537bd64251bc45344345775 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 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
+from pyrogram import filters
+from pyrogram.errors import ChatAdminRequired, RPCError, UserAdminInvalid
+from pyrogram.types import ChatPermissions, Message
# Initialise
gban_db = GBan()
@@ -29,7 +29,8 @@ 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}")
@@ -38,7 +39,8 @@ 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())
@@ -189,7 +191,8 @@ 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 2bb13075df1b2052686b09c28f94411b739321a8..222cbefcd1f33f4ef0b8053f914df5efe24fc823 100644
--- a/Powers/utils/admin_check.py
+++ b/Powers/utils/admin_check.py
@@ -1,8 +1,8 @@
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 Powers import DEV_USERS, LOGGER, OWNER_ID, SUDO_USERS
+from pyrogram.enums import ChatMemberStatus as CMS
+from pyrogram.types import CallbackQuery, Message
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..2d405b8c66874fa9505fa1db9431da827ffad44b 100644
--- a/Powers/utils/caching.py
+++ b/Powers/utils/caching.py
@@ -1,13 +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 Powers import LOGGER
from pyrogram.enums import ChatMembersFilter
+from pyrogram.types import CallbackQuery
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 5ed3126e12a79b164e3065c9bef0cb8c89c7674e..4ea798227ca4261f4f19b71066b9111b5e931a17 100644
--- a/Powers/utils/custom_filters.py
+++ b/Powers/utils/custom_filters.py
@@ -1,15 +1,17 @@
+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.filters import create
-from re import escape, compile as compile_re
+
+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
+from pyrogram.enums import ChatMemberStatus as CMS
+from pyrogram.enums import ChatType
+from pyrogram.errors import RPCError, UserNotParticipant
+from pyrogram.filters import create
+from pyrogram.types import CallbackQuery, Message
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..12a1c35db74cb2d389b0986a6cb97efc1ef0b03e 100644
--- a/Powers/utils/extract_user.py
+++ b/Powers/utils/extract_user.py
@@ -1,6 +1,7 @@
+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
@@ -28,7 +29,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 6fbbc1bdbb4421b39f9b5b82efeb4cf40daba6fa..9614633566fadee6b026a366885469dcbe404744 100644
--- a/Powers/utils/extras.py
+++ b/Powers/utils/extras.py
@@ -514,7 +514,8 @@ 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 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 bf52bd56083401a01160e6639495ea061313d059..be3166ee806e99267a19e8f51cc8b5ecc3ea2ed2 100644
--- a/Powers/utils/kbhelpers.py
+++ b/Powers/utils/kbhelpers.py
@@ -12,9 +12,9 @@ def ikb(rows=None, back=False):
button = btn(btn_text, button) # InlineKeyboardButton
line.append(button)
lines.append(line)
- if back:
- back_btn = [(btn("Back", "start_back"))]
- lines.append(back_btn)
+ if back:
+ back_btn = [(btn("Back", "start_back"))]
+ 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/regex_utils.py b/Powers/utils/regex_utils.py
index 5cade1fede354ad1ed702d1d30e38e2e1bc8ff37..7a0efe8e98a32274a7d6710eaf4df80a66e6b230 100644
--- a/Powers/utils/regex_utils.py
+++ b/Powers/utils/regex_utils.py
@@ -1,7 +1,8 @@
-from regex import search
-from Powers import LOGGER
from traceback import format_exc
+from Powers import LOGGER
+from regex import search
+
async def regex_searcher(regex_string: str, string: str) -> str:
"""Search for Regex in string."""
diff --git a/Powers/utils/start_utils.py b/Powers/utils/start_utils.py
index 73198c2210d6b99cc169c1ef71608c6dbb7eff31..77926fcebcaa733b2d673de94042254743692a85 100644
--- a/Powers/utils/start_utils.py
+++ b/Powers/utils/start_utils.py
@@ -1,20 +1,21 @@
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 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
+from pyrogram.errors import RPCError
+from pyrogram.types import CallbackQuery, InlineKeyboardButton, Message
# Initialize
notes_db = Notes()
@@ -28,7 +29,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 c5d3826f9b1e0022b37319ff8aa112ffcea6080c..cbc5ed897c70e0f23105c24070bf33653b1e5716 100644
--- a/Powers/utils/string.py
+++ b/Powers/utils/string.py
@@ -1,13 +1,14 @@
-from time import time
from html import escape
-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 time import time
+from typing import List
+from Powers.utils.parser import escape_markdown
+from pyrogram.enums import ChatType
+from pyrogram.types import InlineKeyboardButton, Message
-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):
@@ -52,8 +53,9 @@ 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:
@@ -97,7 +99,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 += "{{"
@@ -170,7 +172,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 0d9a970f9caa85a1a47a98cd45de3f343b42a577..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)])
@@ -41,8 +41,8 @@ class Config:
DB_NAME = config("DB_NAME", default="")
NO_LOAD = config("NO_LOAD", default="").split()
PREFIX_HANDLER = config("PREFIX_HANDLER", default="/").split()
- SUPPORT_GROUP = config("SUPPORT_GROUP", default="gojo_update")
- SUPPORT_CHANNEL = config("SUPPORT_CHANNEL", default="gojo_updates")
+ SUPPORT_GROUP = config("SUPPORT_GROUP", default="gojo_bots_network")
+ SUPPORT_CHANNEL = config("SUPPORT_CHANNEL", default="gojo_bots_network")
VERSION = config("VERSION", default="v2.0")
WORKERS = int(config("WORKERS", default=16))
BOT_USERNAME = ""
diff --git a/README.md b/README.md
index 6409eb172bb420cf23ebb32a45b8ceea7936d862..978ab02628123468802e13736f19f981dfc50a47 100644
--- a/README.md
+++ b/README.md
@@ -51,7 +51,7 @@ Mainly:
The Gojo Satoru is a powerful Group Management bot with awesome plugins and features.
- **If you counter any problem or face any bugs for help join 🌟 [Gojo Updates](https://telegram.dog/gojo_updates) 🌟 and then join the gc and ask your problem.**
+ **If you counter any problem or face any bugs for help join 🌟 [ɢօʝօ ɮօȶֆ](https://telegram.dog/gojo_bots_network) 🌟 and then join the gc and ask your problem.**
## Features
diff --git a/app.json b/app.json
index 67eb4437b2664320f03a4f0100255d0258f2cdd0..48edcd8c3e3470a754d92093cdc884c82a2fa361 100644
--- a/app.json
+++ b/app.json
@@ -46,7 +46,7 @@
"SUPPORT_GROUP": {
"description": "Your Telegram support group chat username where user's can contact in case of a problem..",
"required": true,
- "value": "gojo_update"
+ "value": "gojo_bots_network"
},
"MESSAGE_DUMP": {
"description": "Event logs channel where bot will send updates.",
@@ -70,7 +70,7 @@
},
"SUPPORT_CHANNEL": {
"description": "Channel where bot uodates will be posted!",
- "value": "gojo_updates"
+ "value": "gojo_bots_network"
},
"SUDO_USERS": {
"description": "A space separated list of user IDs who you want to assign as sudo users.",