diff --git a/modules/admintool.py b/modules/admintool.py
index 893b953..044ddca 100644
--- a/modules/admintool.py
+++ b/modules/admintool.py
@@ -16,7 +16,7 @@
from contextlib import suppress
-from pyrogram import Client, ContinuePropagation, filters, enums
+from pyrogram import Client, ContinuePropagation, filters
from pyrogram.errors import (
UserAdminInvalid,
ChatAdminRequired,
@@ -93,7 +93,6 @@ async def admintool_handler(_, message: Message):
await message.reply(
db_cache.get(f"welcome_text{message.chat.id}"),
disable_web_page_preview=True,
- parse_mode=enums.ParseMode.HTML,
)
raise ContinuePropagation
diff --git a/modules/admlist.py b/modules/admlist.py
index 9811a46..ebfbc1a 100644
--- a/modules/admlist.py
+++ b/modules/admlist.py
@@ -17,11 +17,10 @@
# import json
# from html import escape as t
from time import perf_counter
-from typing import AsyncGenerator, Optional, List, Union
+from typing import AsyncGenerator, List, Optional, Union
-from pyrogram import Client, filters
# from pyrogram.errors.exceptions.flood_420 import FloodWait
-from pyrogram import types, raw, utils, enums
+from pyrogram import Client, enums, filters, raw, types, utils
from pyrogram.types.object import Object
from utils.misc import modules_help, prefix
@@ -112,9 +111,7 @@ class Chat(Object):
username=user.username,
first_name=user.first_name,
last_name=user.last_name,
- photo=types.ChatPhoto._parse(
- client, user.photo, peer_id, user.access_hash
- ),
+ photo=types.ChatPhoto._parse(client, user.photo, peer_id, user.access_hash),
restrictions=types.List(
[types.Restriction._parse(r) for r in user.restriction_reason]
)
@@ -142,7 +139,7 @@ class Chat(Object):
has_protected_content=getattr(chat, "noforwards", None),
client=client,
is_admin=True if getattr(chat, "admin_rights", False) else False,
- deactivated=getattr(chat, "deactivated"),
+ deactivated=chat.deactivated,
)
@staticmethod
@@ -152,9 +149,11 @@ class Chat(Object):
return Chat(
id=peer_id,
- type=enums.ChatType.SUPERGROUP
- if getattr(channel, "megagroup", None)
- else enums.ChatType.CHANNEL,
+ type=(
+ enums.ChatType.SUPERGROUP
+ if getattr(channel, "megagroup", None)
+ else enums.ChatType.CHANNEL
+ ),
is_verified=getattr(channel, "verified", None),
is_restricted=getattr(channel, "restricted", None),
is_creator=getattr(channel, "creator", None),
@@ -234,9 +233,7 @@ class Dialog(Object):
self.is_pinned = is_pinned
@staticmethod
- def _parse(
- client, dialog: "raw.types.Dialog", messages, users, chats
- ) -> "Dialog":
+ def _parse(client, dialog: "raw.types.Dialog", messages, users, chats) -> "Dialog":
return Dialog(
chat=Chat._parse_dialog(client, dialog.peer, users, chats),
top_message=messages.get(utils.get_peer_id(dialog.peer)),
@@ -275,9 +272,7 @@ async def get_dialogs(
if isinstance(message, raw.types.MessageEmpty):
continue
chat_id = utils.get_peer_id(message.peer_id)
- messages[chat_id] = await types.Message._parse(
- self, message, users, chats
- )
+ messages[chat_id] = await types.Message._parse(self, message, users, chats)
dialogs = []
for dialog in r.dialogs:
if not isinstance(dialog, raw.types.Dialog):
@@ -298,9 +293,7 @@ async def get_dialogs(
@Client.on_message(filters.command("admlist", prefix) & filters.me)
async def admlist(client: Client, message: types.Message):
- await message.edit(
- "Retrieving information... (it'll take some time)", parse_mode=enums.ParseMode.HTML
- )
+ await message.edit("Retrieving information... (it'll take some time)")
start = perf_counter()
try:
@@ -311,9 +304,7 @@ async def admlist(client: Client, message: types.Message):
chat = dialog.chat
if getattr(chat, "deactivated", False):
continue
- if getattr(chat, "is_creator", False) and getattr(
- chat, "username", None
- ):
+ if getattr(chat, "is_creator", False) and getattr(chat, "username", None):
owned_usernamed_chats.append(chat)
elif getattr(chat, "is_creator", False):
owned_chats.append(chat)
@@ -333,9 +324,7 @@ async def admlist(client: Client, message: types.Message):
text += "\nOwned chats with username:\n"
for index, chat in enumerate(owned_usernamed_chats):
cid = str(chat.id).replace("-100", "")
- text += (
- f"{index + 1}. {chat.title}\n"
- )
+ text += f"{index + 1}. {chat.title}\n"
stop = perf_counter()
total_count = (
@@ -347,20 +336,16 @@ async def admlist(client: Client, message: types.Message):
f"\nAdminned chats: {len(adminned_chats)}\n"
f"Owned chats: {len(owned_chats)}\n"
f"Owned chats with username: {len(owned_usernamed_chats)}\n\n"
- f"Done at {round(stop - start, 3)} seconds.",
- parse_mode=enums.ParseMode.HTML
+ f"Done in {round(stop - start, 3)} seconds.",
)
except Exception as e:
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
return
@Client.on_message(filters.command("admcount", prefix) & filters.me)
async def admcount(client: Client, message: types.Message):
- await message.edit(
- "Retrieving information... (it'll take some time)",
- parse_mode=enums.ParseMode.HTML
- )
+ await message.edit("Retrieving information... (it'll take some time)")
start = perf_counter()
try:
@@ -371,9 +356,7 @@ async def admcount(client: Client, message: types.Message):
chat = dialog.chat
if getattr(chat, "deactivated", False):
continue
- if getattr(chat, "is_creator", False) and getattr(
- chat, "username", None
- ):
+ if getattr(chat, "is_creator", False) and getattr(chat, "username", None):
owned_usernamed_chats += 1
elif getattr(chat, "is_creator", False):
owned_chats += 1
@@ -383,20 +366,19 @@ async def admcount(client: Client, message: types.Message):
stop = perf_counter()
total_count = adminned_chats + owned_chats + owned_usernamed_chats
await message.edit(
- f"Total: {adminned_chats + owned_chats + owned_usernamed_chats}"
+ f"Total: {total_count}"
f"\nAdminned chats: {adminned_chats}\n"
f"Owned chats: {owned_chats}\n"
f"Owned chats with username: {owned_usernamed_chats}\n\n"
- f"Done at {round(stop - start, 3)} seconds.\n\n"
+ f"Done in {round(stop - start, 3)} seconds.\n\n"
f"Get full list: {prefix}admlist",
- parse_mode=enums.ParseMode.HTML
)
except Exception as e:
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
return
modules_help["admlist"] = {
"admcount": "Get count of adminned and owned chats",
"admlist": "Get list of adminned and owned chats",
-}
\ No newline at end of file
+}
diff --git a/modules/afk.py b/modules/afk.py
index 7312c88..7ab5912 100644
--- a/modules/afk.py
+++ b/modules/afk.py
@@ -18,36 +18,22 @@
import asyncio
from datetime import datetime
+import humanize
from pyrogram import Client, enums, filters
from pyrogram.types import Message
from utils.misc import modules_help, prefix
-from utils.scripts import import_library
+from utils.scripts import import_library, ReplyCheck
-humanize = import_library("humanize")
-
-import humanize
+import_library("humanize")
+# Variables
AFK = False
AFK_REASON = ""
AFK_TIME = ""
USERS = {}
GROUPS = {}
-# Helpers
-
-
-def ReplyCheck(message: Message):
- reply_id = None
-
- if message.reply_to_message:
- reply_id = message.reply_to_message.id
-
- elif not message.from_user.is_self:
- reply_id = message.id
-
- return reply_id
-
def GetChatID(message: Message):
"""Get the group id of the incoming message"""
@@ -87,7 +73,6 @@ async def collect_afk_messages(bot: Client, message: Message):
chat_id=GetChatID(message),
text=text,
reply_to_message_id=ReplyCheck(message),
- parse_mode=enums.ParseMode.HTML,
)
CHAT_TYPE[GetChatID(message)] = 1
return
@@ -104,7 +89,6 @@ async def collect_afk_messages(bot: Client, message: Message):
chat_id=GetChatID(message),
text=text,
reply_to_message_id=ReplyCheck(message),
- parse_mode=enums.ParseMode.HTML,
)
elif CHAT_TYPE[GetChatID(message)] > 50:
return
@@ -119,7 +103,6 @@ async def collect_afk_messages(bot: Client, message: Message):
chat_id=GetChatID(message),
text=text,
reply_to_message_id=ReplyCheck(message),
- parse_mode=enums.ParseMode.HTML,
)
CHAT_TYPE[GetChatID(message)] += 1
@@ -153,8 +136,7 @@ async def afk_unset(bot: Client, message: Message):
await message.edit(
f"While you were away (for {last_seen}), you received {sum(USERS.values()) + sum(GROUPS.values())} "
f"messages from {len(USERS) + len(GROUPS)} chats",
- parse_mode=enums.ParseMode.HTML
- )
+)
AFK = False
AFK_TIME = ""
AFK_REASON = ""
@@ -173,8 +155,7 @@ async def auto_afk_unset(bot: Client, message: Message):
last_seen = subtract_time(datetime.now(), AFK_TIME).replace("ago", "").strip()
reply = await message.reply(
f"While you were away (for {last_seen}), you received {sum(USERS.values()) + sum(GROUPS.values())} "
- f"messages from {len(USERS) + len(GROUPS)} chats",
- parse_mode=enums.ParseMode.HTML,
+ f"messages from {len(USERS) + len(GROUPS)} chats"
)
AFK = False
AFK_TIME = ""
@@ -189,3 +170,5 @@ modules_help["afk"] = {
"afk [reason]": "Go to AFK mode with reason as anything after .afk\nUsage: .afk ",
"unafk": "Get out of AFK",
}
+
+
diff --git a/modules/antipm.py b/modules/antipm.py
index b6c871e..cad3d86 100644
--- a/modules/antipm.py
+++ b/modules/antipm.py
@@ -14,27 +14,26 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-from pyrogram import Client, filters, enums
+from pyrogram import Client, filters
from pyrogram.raw import functions
from pyrogram.types import Message
+from utils.config import pm_limit
from utils.db import db
from utils.misc import modules_help, prefix
-from utils.config import pm_limit
anti_pm_enabled = filters.create(
lambda _, __, ___: db.get("core.antipm", "status", False)
)
-in_contact_list = filters.create(
- lambda _, __, message: message.from_user.is_contact
-)
+in_contact_list = filters.create(lambda _, __, message: message.from_user.is_contact)
is_support = filters.create(lambda _, __, message: message.chat.is_support)
message_counts = {}
+
@Client.on_message(
filters.private
& ~filters.me
@@ -65,10 +64,14 @@ Do not spam further messages else I may have to block you!
await client.invoke(functions.messages.ReportSpam(peer=user_info))
if db.get("core.antipm", "block", False):
await client.block_user(user_info)
-
- if db.get("core.antipm", f"disallowusers{id}") == user_id != db.get("core.antipm", f"allowusers{id}") or db.get("core.antipm", f"disallowusers{id}") != user_id != db.get("core.antipm", f"allowusers{id}") :
+
+ if db.get("core.antipm", f"disallowusers{id}") == user_id != db.get(
+ "core.antipm", f"allowusers{id}"
+ ) or db.get("core.antipm", f"disallowusers{id}") != user_id != db.get(
+ "core.antipm", f"allowusers{id}"
+ ):
await client.send_message(message.chat.id, f"{default_text}")
-
+
if user_id in message_counts:
message_counts[user_id] += 1
m_n = db.get("core.antipm", "warns")
@@ -78,9 +81,12 @@ Do not spam further messages else I may have to block you!
message_counts[user_id] = 1
m_n_n = 1
db.set("core.antipm", "warns", m_n_n)
-
+
if message_counts[user_id] > pm_limit:
- await client.send_message(message.chat.id, f"Ehm...! That was your Last warn, Bye Bye see you L0L")
+ await client.send_message(
+ message.chat.id,
+ "Ehm...! That was your Last warn, Bye Bye see you L0L",
+ )
await client.block_user(user_id)
del message_counts[user_id]
db.set("core.antipm", "warns", 0)
@@ -92,21 +98,21 @@ async def anti_pm(_, message: Message):
if db.get("core.antipm", "status", False):
await message.edit(
"Anti-PM status: enabled\n"
- f"Disable with: {prefix}antipm disable", parse_mode=enums.ParseMode.HTML
+ f"Disable with: {prefix}antipm disable"
)
else:
await message.edit(
"Anti-PM status: disabled\n"
- f"Enable with: {prefix}antipm enable", parse_mode=enums.ParseMode.HTML
+ f"Enable with: {prefix}antipm enable"
)
elif message.command[1] in ["enable", "on", "1", "yes", "true"]:
db.set("core.antipm", "status", True)
- await message.edit("Anti-PM enabled!", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Anti-PM enabled!")
elif message.command[1] in ["disable", "off", "0", "no", "false"]:
db.set("core.antipm", "status", False)
- await message.edit("Anti-PM disabled!", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Anti-PM disabled!")
else:
- await message.edit(f"Usage: {prefix}antipm [enable|disable]", parse_mode=enums.ParseMode.HTML)
+ await message.edit(f"Usage: {prefix}antipm [enable|disable]")
@Client.on_message(filters.command(["antipm_report"], prefix) & filters.me)
@@ -115,23 +121,21 @@ async def antipm_report(_, message: Message):
if db.get("core.antipm", "spamrep", False):
await message.edit(
"Spam-reporting enabled.\n"
- f"Disable with: {prefix}antipm_report disable", parse_mode=enums.ParseMode.HTML
+ f"Disable with: {prefix}antipm_report disable"
)
else:
await message.edit(
"Spam-reporting disabled.\n"
- f"Enable with: {prefix}antipm_report enable", parse_mode=enums.ParseMode.HTML
+ f"Enable with: {prefix}antipm_report enable"
)
elif message.command[1] in ["enable", "on", "1", "yes", "true"]:
db.set("core.antipm", "spamrep", True)
- await message.edit("Spam-reporting enabled!", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Spam-reporting enabled!")
elif message.command[1] in ["disable", "off", "0", "no", "false"]:
db.set("core.antipm", "spamrep", False)
- await message.edit("Spam-reporting disabled!", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Spam-reporting disabled!")
else:
- await message.edit(
- f"Usage: {prefix}antipm_report [enable|disable]", parse_mode=enums.ParseMode.HTML
- )
+ await message.edit(f"Usage: {prefix}antipm_report [enable|disable]")
@Client.on_message(filters.command(["antipm_block"], prefix) & filters.me)
@@ -140,47 +144,49 @@ async def antipm_block(_, message: Message):
if db.get("core.antipm", "block", False):
await message.edit(
"Blocking users enabled.\n"
- f"Disable with: {prefix}antipm_block disable", parse_mode=enums.ParseMode.HTML
+ f"Disable with: {prefix}antipm_block disable"
)
else:
await message.edit(
"Blocking users disabled.\n"
- f"Enable with: {prefix}antipm_block enable", parse_mode=enums.ParseMode.HTML
+ f"Enable with: {prefix}antipm_block enable"
)
elif message.command[1] in ["enable", "on", "1", "yes", "true"]:
db.set("core.antipm", "block", True)
- await message.edit("Blocking users enabled!", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Blocking users enabled!")
elif message.command[1] in ["disable", "off", "0", "no", "false"]:
db.set("core.antipm", "block", False)
- await message.edit("Blocking users disabled!", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Blocking users disabled!")
else:
- await message.edit(
- f"Usage: {prefix}antipm_block [enable|disable]", parse_mode=enums.ParseMode.HTML
- )
+ await message.edit(f"Usage: {prefix}antipm_block [enable|disable]")
@Client.on_message(filters.command(["a"], prefix) & filters.me)
async def add_contact(client: Client, message: Message):
- id = message.chat.id
+ id = message.chat.id
+
+ user = await client.get_users(id)
+ db.set("core.antipm", f"allowusers{id}", id)
+ db.set("core.antipm", "warns", 0)
+ await message.edit("User Approved!")
- user = await client.get_users(id)
- db.set("core.antipm", f"allowusers{id}", id)
- db.set("core.antipm", "warns", 0)
- await message.edit("User Approved!")
@Client.on_message(filters.command(["d"], prefix) & filters.me)
async def del_contact(client: Client, message: Message):
- id = message.chat.id
+ id = message.chat.id
+
+ user = await client.get_users(id)
+ db.set("core.antipm", f"disallowusers{id}", id)
+ db.remove("core.antipm", f"allowusers{id}")
+ await message.edit("User DisApproved!")
- user = await client.get_users(id)
- db.set("core.antipm", f"disallowusers{id}", id)
- db.remove("core.antipm", f"allowusers{id}")
- await message.edit("User DisApproved!")
modules_help["antipm"] = {
"antipm [enable|disable]*": "Enable Pm permit",
"antipm_report [enable|disable]*": "Enable spam reporting",
"antipm_block [enable|disable]*": "Enable user blocking",
"a": "Approve User",
- "d": "DisApprove User"
+ "d": "DisApprove User",
}
+
+
diff --git a/modules/clear_notifs.py b/modules/clear_notifs.py
index 88f2245..0e32dfc 100644
--- a/modules/clear_notifs.py
+++ b/modules/clear_notifs.py
@@ -14,7 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-from pyrogram import Client, filters, enums
+from pyrogram import Client, filters
from pyrogram.errors import FloodWait
from pyrogram.raw import functions, types
from pyrogram.types import Message
@@ -37,7 +37,7 @@ async def global_mention_clear(client: Client, message: Message):
result = await client.invoke(request)
except FloodWait as e:
await message.edit_text(
- f"FloodWait received. Wait {e.x} seconds before trying again", parse_mode=enums.ParseMode.HTML
+ f"FloodWait received. Wait {e.x} seconds before trying again"
)
return
await message.delete()
@@ -66,7 +66,7 @@ async def global_reaction_clear(client: Client, message: Message):
result = await client.invoke(request)
except FloodWait as e:
await message.edit_text(
- f"FloodWait received. Wait {e.x} seconds before trying again", parse_mode=enums.ParseMode.HTML
+ f"FloodWait received. Wait {e.x} seconds before trying again"
)
return
await message.delete()
diff --git a/modules/direct.py b/modules/direct.py
index 7055ab6..7078737 100644
--- a/modules/direct.py
+++ b/modules/direct.py
@@ -52,7 +52,7 @@ async def direct_link_generator(_, m: Message):
elif m.reply_to_message:
message = m.reply_to_message.text
else:
- await m.edit(f"Usage: {prefix}direct [url]", parse_mode=enums.ParseMode.HTML)
+ await m.edit(f"Usage: {prefix}direct [url]")
return
reply = ""
links = re.findall(r"\bhttps?://.*\.\S+", message)
diff --git a/modules/filters.py b/modules/filters.py
index 765b663..9f1bb4e 100644
--- a/modules/filters.py
+++ b/modules/filters.py
@@ -18,18 +18,18 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-from pyrogram import Client, filters, ContinuePropagation, errors, enums
+from pyrogram import Client, ContinuePropagation, enums, errors, filters
from pyrogram.types import (
- Message,
+ InputMediaAudio,
InputMediaDocument,
InputMediaPhoto,
InputMediaVideo,
- InputMediaAudio,
+ Message,
)
+from utils.db import db
from utils.misc import modules_help, prefix
from utils.scripts import format_exc
-from utils.db import db
def get_filters_chat(chat_id):
@@ -52,11 +52,9 @@ contains = filters.create(contains_filter)
async def filters_main_handler(client: Client, message: Message):
value = get_filters_chat(message.chat.id)[message.text.lower()]
try:
- await client.get_messages(
- int(value["CHAT_ID"]), int(value["MESSAGE_ID"])
- )
- except errors.RPCError:
- raise ContinuePropagation
+ await client.get_messages(int(value["CHAT_ID"]), int(value["MESSAGE_ID"]))
+ except errors.RPCError as exc:
+ raise ContinuePropagation from exc
if value.get("MEDIA_GROUP"):
messages_grouped = await client.get_media_group(
@@ -87,9 +85,7 @@ async def filters_main_handler(client: Client, message: Message):
)
elif _.video.thumbs:
media_grouped_list.append(
- InputMediaVideo(
- _.video.file_id, _.video.thumbs[0].file_id
- )
+ InputMediaVideo(_.video.file_id, _.video.thumbs[0].file_id)
)
else:
media_grouped_list.append(InputMediaVideo(_.video.file_id))
@@ -112,9 +108,7 @@ async def filters_main_handler(client: Client, message: Message):
)
else:
media_grouped_list.append(
- InputMediaDocument(
- _.document.file_id, _.caption.HTML
- )
+ InputMediaDocument(_.document.file_id, _.caption.HTML)
)
elif _.document.thumbs:
media_grouped_list.append(
@@ -123,14 +117,9 @@ async def filters_main_handler(client: Client, message: Message):
)
)
else:
- media_grouped_list.append(
- InputMediaDocument(_.document.file_id)
- )
+ media_grouped_list.append(InputMediaDocument(_.document.file_id))
await client.send_media_group(
- message.chat.id,
- media_grouped_list,
- reply_to_message_id=message.id,
- parse_mode=enums.ParseMode.HTML,
+ message.chat.id, media_grouped_list, reply_to_message_id=message.id
)
else:
await client.copy_message(
@@ -147,16 +136,16 @@ async def filter_handler(client: Client, message: Message):
try:
if len(message.text.split()) < 2:
return await message.edit(
- f"Usage: {prefix}filter [name] (Reply required)", parse_mode=enums.ParseMode.HTML
+ f"Usage: {prefix}filter [name] (Reply required)"
)
name = message.text.split(maxsplit=1)[1].lower()
chat_filters = get_filters_chat(message.chat.id)
if name in chat_filters.keys():
return await message.edit(
- f"Filter {name} already exists.", parse_mode=enums.ParseMode.HTML
+ f"Filter {name} already exists."
)
if not message.reply_to_message:
- return await message.edit("Reply to message please.", parse_mode=enums.ParseMode.HTML)
+ return await message.edit("Reply to message please.")
try:
chat = await client.get_chat(db.get("core.notes", "chat_id", 0))
@@ -182,7 +171,7 @@ async def filter_handler(client: Client, message: Message):
)
except errors.ChatForwardsRestricted:
await message.edit(
- "Forwarding messages is restricted by chat admins", parse_mode=enums.ParseMode.HTML
+ "Forwarding messages is restricted by chat admins"
)
return
filter_ = {
@@ -206,27 +195,24 @@ async def filter_handler(client: Client, message: Message):
set_filters_chat(message.chat.id, chat_filters)
return await message.edit(
f"Filter {name} has been added.",
- parse_mode=enums.ParseMode.HTML
)
except Exception as e:
- return await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ return await message.edit(format_exc(e))
@Client.on_message(filters.command(["filters"], prefix) & filters.me)
async def filters_handler(client: Client, message: Message):
try:
text = ""
- for index, a in enumerate(
- get_filters_chat(message.chat.id).items(), start=1
- ):
+ for index, a in enumerate(get_filters_chat(message.chat.id).items(), start=1):
key, item = a
key = key.replace("<", "").replace(">", "")
text += f"{index}. {key}\n"
text = f"Your filters in current chat:\n\n" f"{text}"
text = text[:4096]
- return await message.edit(text, parse_mode=enums.ParseMode.HTML)
+ return await message.edit(text)
except Exception as e:
- return await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ return await message.edit(format_exc(e))
@Client.on_message(
@@ -237,23 +223,20 @@ async def filter_del_handler(client: Client, message: Message):
if len(message.text.split()) < 2:
return await message.edit(
f"Usage: {prefix}fdel [name]",
- parse_mode=enums.ParseMode.HTML
)
name = message.text.split(maxsplit=1)[1].lower()
chat_filters = get_filters_chat(message.chat.id)
if name not in chat_filters.keys():
return await message.edit(
f"Filter {name} doesn't exists.",
- parse_mode=enums.ParseMode.HTML
)
del chat_filters[name]
set_filters_chat(message.chat.id, chat_filters)
return await message.edit(
f"Filter {name} has been deleted.",
- parse_mode=enums.ParseMode.HTML
)
except Exception as e:
- return await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ return await message.edit(format_exc(e))
@Client.on_message(filters.command(["fsearch"], prefix) & filters.me)
@@ -262,22 +245,19 @@ async def filter_search_handler(client: Client, message: Message):
if len(message.text.split()) < 2:
return await message.edit(
f"Usage: {prefix}fsearch [name]",
- parse_mode=enums.ParseMode.HTML
)
name = message.text.split(maxsplit=1)[1].lower()
chat_filters = get_filters_chat(message.chat.id)
if name not in chat_filters.keys():
return await message.edit(
f"Filter {name} doesn't exists.",
- parse_mode=enums.ParseMode.HTML
)
return await message.edit(
f"Trigger:\n{name}\nAnswer:\n{chat_filters[name]}",
- parse_mode=enums.ParseMode.HTML,
+ f">\nAnswer:\n{chat_filters[name]}"
)
except Exception as e:
- return await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ return await message.edit(format_exc(e))
modules_help["filters"] = {
@@ -285,4 +265,4 @@ modules_help["filters"] = {
"filters": "List of all triggers",
"fdel [name]": "Delete filter by name",
"fsearch [name]": "Info filter by name",
-}
\ No newline at end of file
+}
diff --git a/modules/help.py b/modules/help.py
index e0bc82a..81d2e5f 100644
--- a/modules/help.py
+++ b/modules/help.py
@@ -38,13 +38,11 @@ async def help_cmd(_, message: Message):
await message.reply(
text,
disable_web_page_preview=True,
- parse_mode=enums.ParseMode.HTML,
)
else:
await message.edit(
text,
disable_web_page_preview=True,
- parse_mode=enums.ParseMode.HTML,
)
msg_edited = True
text = ""
@@ -53,16 +51,15 @@ async def help_cmd(_, message: Message):
if msg_edited:
await message.reply(
- text, disable_web_page_preview=True, parse_mode=enums.ParseMode.HTML
+ text, disable_web_page_preview=True
)
else:
await message.edit(
- text, disable_web_page_preview=True, parse_mode=enums.ParseMode.HTML
+ text, disable_web_page_preview=True
)
elif message.command[1].lower() in modules_help:
await message.edit(
- format_module_help(message.command[1].lower(), prefix),
- parse_mode=enums.ParseMode.HTML,
+ format_module_help(message.command[1].lower(), prefix)
)
else:
command_name = message.command[1].lower()
@@ -77,10 +74,9 @@ async def help_cmd(_, message: Message):
f"{prefix}{cmd[0]}"
f"{' ' + cmd[1] + '' if len(cmd) > 1 else ''}"
f" — {cmd_desc}",
- parse_mode=enums.ParseMode.HTML,
)
await message.edit(
- f"Module {command_name} not found", parse_mode=enums.ParseMode.HTML
+ f"Module {command_name} not found"
)
# TODO: refactor this cringe
command_name = message.command[1].lower()
@@ -95,10 +91,9 @@ async def help_cmd(_, message: Message):
f"{prefix}{cmd[0]}"
f"{' ' + cmd[1] + '' if len(cmd) > 1 else ''}"
f" — {cmd_desc}",
- parse_mode=enums.ParseMode.HTML,
)
await message.edit(
- f"Module {command_name} not found", parse_mode=enums.ParseMode.HTML
+ f"Module {command_name} not found"
)
diff --git a/modules/loader.py b/modules/loader.py
index f54a371..ffe55a1 100644
--- a/modules/loader.py
+++ b/modules/loader.py
@@ -35,15 +35,13 @@ async def get_mod_hash(_, message: Message):
resp = requests.get(url)
if not resp.ok:
await message.edit(
- f"Troubleshooting with downloading module {url}",
- parse_mode=enums.ParseMode.HTML,
+ f"Troubleshooting with downloading module {url}"
)
return
await message.edit(
f"Module hash: {hashlib.sha256(resp.content).hexdigest()}\n"
f"Link: {url}\nFile: {url.split('/')[-1]}",
- parse_mode=enums.ParseMode.HTML,
)
@@ -57,9 +55,7 @@ async def loadmod(_, message: Message):
)
and len(message.command) == 1
):
- await message.edit(
- "Specify module to download", parse_mode=enums.ParseMode.HTML
- )
+ await message.edit("Specify module to download")
return
if len(message.command) > 1:
@@ -81,7 +77,6 @@ async def loadmod(_, message: Message):
if not resp.ok:
await message.edit(
f"Troubleshooting with downloading module {url}",
- parse_mode=enums.ParseMode.HTML,
)
return
@@ -92,17 +87,13 @@ async def loadmod(_, message: Message):
""
"custom_modules repository are supported!",
disable_web_page_preview=True,
- parse_mode=enums.ParseMode.HTML,
)
module_name = url.split("/")[-1].split(".")[0]
resp = requests.get(url)
if not resp.ok:
- await message.edit(
- f"Module {module_name} is not found",
- parse_mode=enums.ParseMode.HTML,
- )
+ await message.edit(f"Module {module_name} is not found")
return
if not os.path.exists(f"{BASE_PATH}/modules/custom_modules"):
@@ -129,15 +120,11 @@ async def loadmod(_, message: Message):
""
"custom_modules repository are supported!",
disable_web_page_preview=True,
- parse_mode=enums.ParseMode.HTML
)
else:
os.rename(file_name, f"./modules/custom_modules/{module_name}.py")
- await message.edit(
- f"The module {module_name} is loaded!",
- parse_mode=enums.ParseMode.HTML,
- )
+ await message.edit(f"The module {module_name} is loaded!")
restart()
@@ -155,26 +142,19 @@ async def unload_mods(_, message: Message):
if os.path.exists(f"{BASE_PATH}/modules/custom_modules/{module_name}.py"):
os.remove(f"{BASE_PATH}/modules/custom_modules/{module_name}.py")
- await message.edit(
- f"The module {module_name} removed!",
- parse_mode=enums.ParseMode.HTML,
- )
+ await message.edit(f"The module {module_name} removed!")
restart()
elif os.path.exists(f"{BASE_PATH}/modules/{module_name}.py"):
await message.edit(
- "It is forbidden to remove built-in modules, it will disrupt the updater",
- parse_mode=enums.ParseMode.HTML,
+ "It is forbidden to remove built-in modules, it will disrupt the updater"
)
else:
- await message.edit(
- f"Module {module_name} is not found",
- parse_mode=enums.ParseMode.HTML,
- )
+ await message.edit(f"Module {module_name} is not found")
@Client.on_message(filters.command(["loadallmods"], prefix) & filters.me)
async def load_all_mods(_, message: Message):
- await message.edit("Fetching info...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Fetching info...")
if not os.path.exists(f"{BASE_PATH}/modules/custom_modules"):
os.mkdir(f"{BASE_PATH}/modules/custom_modules")
@@ -191,23 +171,22 @@ async def load_all_mods(_, message: Message):
continue
new_modules[module_info["name"][:-3]] = module_info["download_url"]
if not new_modules:
- return await message.edit("All modules already loaded", parse_mode=enums.ParseMode.HTML)
+ return await message.edit("All modules already loaded")
- await message.edit(f'Loading new modules: {" ".join(new_modules.keys())}', parse_mode=enums.ParseMode.HTML)
+ await message.edit(f'Loading new modules: {" ".join(new_modules.keys())}')
for name, url in new_modules.items():
with open(f"./modules/custom_modules/{name}.py", "wb") as f:
f.write(requests.get(url).content)
await message.edit(
f'Successfully loaded new modules: {" ".join(new_modules.keys())}',
- parse_mode=enums.ParseMode.HTML
)
restart()
@Client.on_message(filters.command(["updateallmods"], prefix) & filters.me)
async def updateallmods(_, message: Message):
- await message.edit("Updating modules...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Updating modules...")
if not os.path.exists(f"{BASE_PATH}/modules/custom_modules"):
os.mkdir(f"{BASE_PATH}/modules/custom_modules")
@@ -215,7 +194,7 @@ async def updateallmods(_, message: Message):
modules_installed = list(os.walk("modules/custom_modules"))[0][2]
if not modules_installed:
- return await message.edit("You don't have any modules installed", parse_mode=enums.ParseMode.HTML)
+ return await message.edit("You don't have any modules installed")
for module_name in modules_installed:
if not module_name.endswith(".py"):
@@ -231,7 +210,7 @@ async def updateallmods(_, message: Message):
with open(f"./modules/custom_modules/{module_name}", "wb") as f:
f.write(resp.content)
- await message.edit(f"Successfully updated {len(modules_installed)} modules", parse_mode=enums.ParseMode.HTML)
+ await message.edit(f"Successfully updated {len(modules_installed)} modules")
modules_help["loader"] = {
@@ -243,3 +222,4 @@ modules_help["loader"] = {
"loadallmods": "Load all custom modules (use it at your own risk)",
"updateallmods": "Update all custom modules",
}
+
diff --git a/modules/notes.py b/modules/notes.py
index f4b0096..e5fbc17 100644
--- a/modules/notes.py
+++ b/modules/notes.py
@@ -14,17 +14,17 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-from pyrogram import Client, filters, errors, enums
+from pyrogram import Client, enums, errors, filters
from pyrogram.types import Message
from utils.db import db
-from utils.misc import modules_help, prefix
from utils.handlers import NoteSendHandler
+from utils.misc import modules_help, prefix
@Client.on_message(filters.command(["save"], prefix) & filters.me)
async def save_note(client: Client, message: Message):
- await message.edit("Loading...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Loading...")
try:
chat = await client.get_chat(db.get("core.notes", "chat_id", 0))
@@ -55,7 +55,6 @@ async def save_note(client: Client, message: Message):
except errors.ChatForwardsRestricted:
await message.edit(
"Forwarding messages is restricted by chat admins",
- parse_mode=enums.ParseMode.HTML
)
return
note = {
@@ -64,9 +63,9 @@ async def save_note(client: Client, message: Message):
"CHAT_ID": str(chat_id),
}
db.set("core.notes", f"note{note_name}", note)
- await message.edit(f"Note {note_name} saved", parse_mode=enums.ParseMode.HTML)
+ await message.edit(f"Note {note_name} saved")
else:
- await message.edit("This note already exists", parse_mode=enums.ParseMode.HTML)
+ await message.edit("This note already exists")
else:
checking_note = db.get("core.notes", f"note{note_name}", False)
if not checking_note:
@@ -80,9 +79,9 @@ async def save_note(client: Client, message: Message):
"CHAT_ID": str(chat_id),
}
db.set("core.notes", f"note{note_name}", note)
- await message.edit(f"Note {note_name} saved", parse_mode=enums.ParseMode.HTML)
+ await message.edit(f"Note {note_name} saved")
else:
- await message.edit("This note already exists", parse_mode=enums.ParseMode.HTML)
+ await message.edit("This note already exists")
elif len(message.text.split()) >= 3:
note_name = message.text.split(maxsplit=1)[1].split()[0]
checking_note = db.get("core.notes", f"note{note_name}", False)
@@ -96,31 +95,30 @@ async def save_note(client: Client, message: Message):
"CHAT_ID": str(chat_id),
}
db.set("core.notes", f"note{note_name}", note)
- await message.edit(f"Note {note_name} saved", parse_mode=enums.ParseMode.HTML)
+ await message.edit(f"Note {note_name} saved")
else:
- await message.edit("This note already exists", parse_mode=enums.ParseMode.HTML)
+ await message.edit("This note already exists")
else:
await message.edit(
f"Example: {prefix}save note_name",
- parse_mode=enums.ParseMode.HTML
)
+
@Client.on_message(filters.command("note", prefix) & filters.me)
async def note_send(client: Client, message: Message):
handler = NoteSendHandler(client, message)
await handler.handle_note_send()
-
@Client.on_message(filters.command(["notes"], prefix) & filters.me)
async def notes(_, message: Message):
- await message.edit("Loading...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Loading...")
text = "Available notes:\n\n"
collection = db.get_collection("core.notes")
for note in collection.keys():
if note[:4] == "note":
text += f"{note[4:]}\n"
- await message.edit(text, parse_mode=enums.ParseMode.HTML)
+ await message.edit(text)
@Client.on_message(filters.command(["clear"], prefix) & filters.me)
@@ -130,14 +128,11 @@ async def clear_note(_, message: Message):
find_note = db.get("core.notes", f"note{note_name}", False)
if find_note:
db.remove("core.notes", f"note{note_name}")
- await message.edit(f"Note {note_name} deleted", parse_mode=enums.ParseMode.HTML)
+ await message.edit(f"Note {note_name} deleted")
else:
- await message.edit("There is no such note", parse_mode=enums.ParseMode.HTML)
+ await message.edit("There is no such note")
else:
- await message.edit(
- f"Example: {prefix}clear note_name",
- parse_mode=enums.ParseMode.HTML
- )
+ await message.edit(f"Example: {prefix}clear note_name")
modules_help["notes"] = {
@@ -145,4 +140,4 @@ modules_help["notes"] = {
"note [name]*": "Get saved note",
"notes": "Get note list",
"clear [name]*": "Delete note",
-}
\ No newline at end of file
+}
diff --git a/modules/ping.py b/modules/ping.py
index fb0ffca..c36bfe0 100644
--- a/modules/ping.py
+++ b/modules/ping.py
@@ -13,7 +13,7 @@ from time import perf_counter
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-from pyrogram import Client, enums, filters
+from pyrogram import Client, filters
from pyrogram.types import Message
from utils.misc import modules_help, prefix
@@ -27,10 +27,10 @@ from utils.misc import modules_help, prefix
@Client.on_message(filters.command(["ping", "p"], prefix) & filters.me)
async def ping(_, message: Message):
start = perf_counter()
- await message.edit("Pong!", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Pong!")
end = perf_counter()
await message.edit(
- f"Pong! {round(end - start, 3)}s", parse_mode=enums.ParseMode.HTML
+ f"Pong! {round(end - start, 3)}s"
)
diff --git a/modules/prefix.py b/modules/prefix.py
index ce3270e..e2fbf62 100644
--- a/modules/prefix.py
+++ b/modules/prefix.py
@@ -14,7 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-from pyrogram import Client, enums, filters
+from pyrogram import Client, filters
from pyrogram.types import Message
from utils.db import db
@@ -30,13 +30,12 @@ async def setprefix(_, message: Message):
pref = message.command[1]
db.set("core.main", "prefix", pref)
await message.edit(
- f"Prefix [ {pref} ] is set!",
- parse_mode=enums.ParseMode.HTML,
+ f"Prefix [ {pref} ] is set!"
)
restart()
else:
await message.edit(
- "The prefix must not be empty!", parse_mode=enums.ParseMode.HTML
+ "The prefix must not be empty!"
)
diff --git a/modules/purge.py b/modules/purge.py
index d6a6659..b65f729 100644
--- a/modules/purge.py
+++ b/modules/purge.py
@@ -15,7 +15,7 @@
# along with this program. If not, see .
import asyncio
-from pyrogram import Client, filters, enums
+from pyrogram import Client, filters
from pyrogram.types import Message
from utils.misc import modules_help, prefix
diff --git a/modules/python.py b/modules/python.py
index cbb2131..c5f5d24 100644
--- a/modules/python.py
+++ b/modules/python.py
@@ -21,7 +21,7 @@
from contextlib import redirect_stdout
from io import StringIO
-from pyrogram import Client, enums, filters
+from pyrogram import Client, filters
from pyrogram.types import Message
# noinspection PyUnresolvedReferences
@@ -38,7 +38,7 @@ from utils.scripts import format_exc
async def user_exec(client: Client, message: Message):
if len(message.command) == 1:
await message.edit(
- "Code to execute isn't provided", parse_mode=enums.ParseMode.HTML
+ "Code to execute isn't provided"
)
return
@@ -47,7 +47,7 @@ async def user_exec(client: Client, message: Message):
code = message.text.split(maxsplit=1)[1]
stdout = StringIO()
- await message.edit("Executing...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Executing...")
try:
with redirect_stdout(stdout):
@@ -59,18 +59,18 @@ async def user_exec(client: Client, message: Message):
f"{stdout.getvalue()}"
)
if message.command[0] == "exnoedit":
- await message.reply(text, parse_mode=enums.ParseMode.HTML)
+ await message.reply(text)
else:
- await message.edit(text, parse_mode=enums.ParseMode.HTML)
+ await message.edit(text)
except Exception as e:
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
# noinspection PyUnusedLocal
@Client.on_message(filters.command(["ev", "eval"], prefix) & filters.me)
async def user_eval(client: Client, message: Message):
if len(message.command) == 1:
- await message.edit("Code to eval isn't provided", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Code to eval isn't provided")
return
reply = message.reply_to_message
@@ -83,11 +83,10 @@ async def user_eval(client: Client, message: Message):
"Expression:\n"
f"{code}\n\n"
"Result:\n"
- f"{result}",
- parse_mode=enums.ParseMode.HTML,
+ f"{result}"
)
except Exception as e:
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
modules_help["python"] = {
diff --git a/modules/removebg.py b/modules/removebg.py
index e7fbbb8..5bcff70 100644
--- a/modules/removebg.py
+++ b/modules/removebg.py
@@ -152,7 +152,7 @@ async def rmbg(client: Client, message: Message):
@Client.on_message(filters.command("rebg", prefix) & filters.me)
async def rembg(client: Client, message: Message):
- await message.edit("Processing...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Processing...")
chat_id = message.chat.id
try:
try:
@@ -162,7 +162,7 @@ async def rembg(client: Client, message: Message):
photo_data = await message.reply_to_message.download()
except ValueError:
await message.edit(
- "File not found", parse_mode=enums.ParseMode.HTML
+ "File not found"
)
return
background_removed_data = remove_background(photo_data)
diff --git a/modules/safone.py b/modules/safone.py
index 3d22b08..9f38eeb 100644
--- a/modules/safone.py
+++ b/modules/safone.py
@@ -3,7 +3,7 @@ import requests
import aiofiles
import base64
-from pyrogram import Client, filters, enums
+from pyrogram import Client, filters
from pyrogram.types import Message, InputMediaPhoto
from pyrogram.errors import MediaCaptionTooLong, MessageTooLong
@@ -156,7 +156,7 @@ async def tsearch(client: Client, message: Message):
link_results = await telegraph(title="Search Results", user_name=message.from_user.first_name, content=all_results_content)
- if coverImage_url != None:
+ if coverImage_url is not None:
coverImage = requests.get(url=coverImage_url).content
async with aiofiles.open('coverImage.jpg', mode='wb') as f:
await f.write(coverImage)
@@ -177,12 +177,12 @@ async def tsearch(client: Client, message: Message):
await client.send_media_group(
chat_id,
[
- InputMediaPhoto('coverImage.jpg', caption=f"Title: {title}\nCategory: {category}\nLanguage: {Language}\nSize: {size}\nGenres: {genre}\nDescription: {description}\nMagnet Link: Click Here")
+ InputMediaPhoto('coverImage.jpg', caption=f"Title: {title}\nCategory: {category}\nLanguage: {language}\nSize: {size}\nGenres: {genre}\nDescription: {description}\nMagnet Link: Click Here")
])
except MessageTooLong:
description = description[:150]
- await message.edit_text(f"Title: {title}\nCategory: {category}\nLanguage: {Language}\nSize: {size}\nGenres: {genre}\nDescription: {description}\nMagnet Link: Click Here", disable_web_page_preview=True)
+ await message.edit_text(f"Title: {title}\nCategory: {category}\nLanguage: {language}\nSize: {size}\nGenres: {genre}\nDescription: {description}\nMagnet Link: Click Here", disable_web_page_preview=True)
except Exception as e:
await message.edit_text(format_exc(e))
diff --git a/modules/say.py b/modules/say.py
index d9c6f99..6ccd962 100644
--- a/modules/say.py
+++ b/modules/say.py
@@ -18,7 +18,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-from pyrogram import Client, enums, filters
+from pyrogram import Client, filters
from pyrogram.types import Message
from utils.misc import modules_help, prefix
@@ -29,7 +29,7 @@ async def say(_, message: Message):
if len(message.command) == 1:
return
command = " ".join(message.command[1:])
- await message.edit(f"{command}", parse_mode=enums.ParseMode.HTML)
+ await message.edit(f"{command}")
modules_help["say"] = {
diff --git a/modules/sendmod.py b/modules/sendmod.py
index 68ec59f..ba97826 100644
--- a/modules/sendmod.py
+++ b/modules/sendmod.py
@@ -7,7 +7,7 @@
# (at your option) any later version.
import os
-from pyrogram import Client, enums, filters
+from pyrogram import Client, filters
from pyrogram.types import Message
from utils.misc import modules_help, prefix
@@ -26,12 +26,11 @@ from utils.scripts import format_exc, format_module_help, format_small_module_he
async def sendmod(client: Client, message: Message):
if len(message.command) == 1:
await message.edit(
- "Module name to send is not provided",
- parse_mode=enums.ParseMode.HTML,
+ "Module name to send is not provided"
)
return
- await message.edit("Dispatching...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Dispatching...")
try:
module_name = message.command[1].lower()
if module_name in modules_help:
@@ -50,12 +49,9 @@ async def sendmod(client: Client, message: Message):
)
await message.delete()
else:
- await message.edit(
- f"Module {module_name} not found!",
- parse_mode=enums.ParseMode.HTML,
- )
+ await message.edit(f"Module {module_name} not found!")
except Exception as e:
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
modules_help["sendmod"] = {
diff --git a/modules/sessionkiller.py b/modules/sessionkiller.py
index 3a8ee00..c74a3b4 100644
--- a/modules/sessionkiller.py
+++ b/modules/sessionkiller.py
@@ -20,7 +20,7 @@ import time
from datetime import datetime
from html import escape
-from pyrogram import Client, filters, enums
+from pyrogram import Client, filters
from pyrogram import ContinuePropagation
from pyrogram.errors import RPCError
from pyrogram.raw.functions.account import GetAuthorizations, ResetAuthorization
@@ -30,7 +30,6 @@ from pyrogram.types import Message
from utils.db import db
from utils.misc import modules_help, prefix
from textwrap import dedent
-from datetime import datetime
auth_hashes = db.get("core.sessionkiller", "auths_hashes", [])
@@ -91,7 +90,7 @@ async def sessions_list(client: Client, message: Message):
answer = ""
chunk.clear()
if len(chunk):
- await message.reply("\n\n".join(chunk), parse_mode=enums.ParseMode.HTML)
+ await message.reply("\n\n".join(chunk))
await message.delete()
@@ -103,16 +102,16 @@ async def sessionkiller(client: Client, message: Message):
if db.get("core.sessionkiller", "enabled", False):
await message.edit(
"Sessionkiller status: enabled\n"
- f"You can disable it with {prefix}sessionkiller disable", parse_mode=enums.ParseMode.HTML
+ f"You can disable it with {prefix}sessionkiller disable"
)
else:
await message.edit(
"Sessionkiller status: disabled\n"
- f"You can enable it with {prefix}sessionkiller enable", parse_mode=enums.ParseMode.HTML
+ f"You can enable it with {prefix}sessionkiller enable"
)
elif message.command[1] in ["enable", "on", "1", "yes", "true"]:
db.set("core.sessionkiller", "enabled", True)
- await message.edit("Sessionkiller enabled!", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Sessionkiller enabled!")
db.set(
"core.sessionkiller",
"auths_hashes",
@@ -126,10 +125,10 @@ async def sessionkiller(client: Client, message: Message):
elif message.command[1] in ["disable", "off", "0", "no", "false"]:
db.set("core.sessionkiller", "enabled", False)
- await message.edit("Sessionkiller disabled!", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Sessionkiller disabled!")
else:
await message.edit(
- f"Usage: {prefix}sessionkiller [enable|disable]", parse_mode=enums.ParseMode.HTML
+ f"Usage: {prefix}sessionkiller [enable|disable]"
)
@@ -189,7 +188,7 @@ async def check_new_login(
# schedule sending report message so user will get notification
schedule_date = int(time.time() + 15)
await client.send_message(
- "me", full_report, schedule_date=schedule_date, parse_mode=enums.ParseMode.HTML
+ "me", full_report, schedule_date=schedule_date
)
return
diff --git a/modules/sgb.py b/modules/sgb.py
index 36f23da..08c0ad4 100644
--- a/modules/sgb.py
+++ b/modules/sgb.py
@@ -13,7 +13,7 @@ async def sg(client: Client, message: Message):
if message.reply_to_message and message.reply_to_message.from_user:
user_id = message.reply_to_message.from_user.id
else:
- await message.edit(f"Usage: {prefix}sgb [id]", parse_mode=enums.ParseMode.HTML)
+ await message.edit(f"Usage: {prefix}sgb [id]")
return
try:
await client.send_message("@SangMata_beta_bot","/start", parse_mode=enums.ParseMode.MARKDOWN)
diff --git a/modules/shell.py b/modules/shell.py
index d0c76f5..0ee9fec 100644
--- a/modules/shell.py
+++ b/modules/shell.py
@@ -18,7 +18,7 @@ from subprocess import Popen, PIPE, TimeoutExpired
import os
from time import perf_counter
-from pyrogram import Client, filters, enums
+from pyrogram import Client, filters
from pyrogram.types import Message
from utils.misc import modules_help, prefix
@@ -27,7 +27,7 @@ from utils.misc import modules_help, prefix
@Client.on_message(filters.command(["shell", "sh"], prefix) & filters.me)
async def shell(_, message: Message):
if len(message.command) < 2:
- return await message.edit("Specify the command in message text", parse_mode=enums.ParseMode.HTML)
+ return await message.edit("Specify the command in message text")
cmd_text = message.text.split(maxsplit=1)[1]
cmd_obj = Popen(
cmd_text,
@@ -40,7 +40,7 @@ async def shell(_, message: Message):
char = "#" if os.getuid() == 0 else "$"
text = f"{char} {cmd_text}\n\n"
- await message.edit(text + "Running...", parse_mode=enums.ParseMode.HTML)
+ await message.edit(text + "Running...")
try:
start_time = perf_counter()
stdout, stderr = cmd_obj.communicate(timeout=60)
@@ -53,7 +53,7 @@ async def shell(_, message: Message):
if stderr:
text += f"Error:\n{stderr}\n\n"
text += f"Completed in {round(stop_time - start_time, 5)} seconds with code {cmd_obj.returncode}"
- await message.edit(text, parse_mode=enums.ParseMode.HTML)
+ await message.edit(text)
cmd_obj.kill()
diff --git a/modules/spam.py b/modules/spam.py
index be1bc5e..deb8431 100644
--- a/modules/spam.py
+++ b/modules/spam.py
@@ -16,7 +16,7 @@
import asyncio
-from pyrogram import Client, filters, enums
+from pyrogram import Client, filters
from pyrogram.types import Message
from utils.misc import modules_help, prefix
@@ -33,11 +33,11 @@ async def spam(client: Client, message: Message):
await message.delete()
- for msg in range(amount):
+ for _msg in range(amount):
if message.reply_to_message:
- sent = await message.reply_to_message.reply(text, parse_mode=enums.ParseMode.HTML)
+ sent = await message.reply_to_message.reply(text)
else:
- sent = await client.send_message(message.chat.id, text, parse_mode=enums.ParseMode.HTML)
+ sent = await client.send_message(message.chat.id, text)
if message.command[0] == "statspam":
await asyncio.sleep(0.1)
diff --git a/modules/squotes.py b/modules/squotes.py
index 44ac4c7..d516286 100644
--- a/modules/squotes.py
+++ b/modules/squotes.py
@@ -19,7 +19,7 @@ import os
from io import BytesIO
import requests
-from pyrogram import Client, filters, errors, types, enums
+from pyrogram import Client, filters, errors, types
from pyrogram.types import Message
from utils.misc import modules_help, prefix
@@ -65,9 +65,9 @@ async def quote_cmd(client: Client, message: Message):
if send_for_me:
await message.delete()
- message = await client.send_message("me", "Generating...", parse_mode=enums.ParseMode.HTML)
+ message = await client.send_message("me", "Generating...")
else:
- await message.edit("Generating...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Generating...")
url = "https://quotes.fl1yd.su/generate"
params = {
@@ -83,20 +83,20 @@ async def quote_cmd(client: Client, message: Message):
response = requests.post(url, json=params)
if not response.ok:
return await message.edit(
- f"Quotes API error!\n" f"{response.text}", parse_mode=enums.ParseMode.HTML
+ f"Quotes API error!\n" f"{response.text}"
)
resized = resize_image(
BytesIO(response.content), img_type="PNG" if is_png else "WEBP"
)
- await message.edit("Sending...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Sending...")
try:
func = client.send_document if is_png else client.send_sticker
chat_id = "me" if send_for_me else message.chat.id
await func(chat_id, resized)
except errors.RPCError as e: # no rights to send stickers, etc
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
else:
await message.delete()
@@ -117,7 +117,7 @@ async def fake_quote_cmd(client: Client, message: types.Message):
)
if not fake_quote_text:
- return await message.edit("Fake quote text is empty", parse_mode=enums.ParseMode.HTML)
+ return await message.edit("Fake quote text is empty")
q_message = await client.get_messages(
message.chat.id, message.reply_to_message.id
@@ -129,9 +129,9 @@ async def fake_quote_cmd(client: Client, message: types.Message):
if send_for_me:
await message.delete()
- message = await client.send_message("me", "Generating...", parse_mode=enums.ParseMode.HTML)
+ message = await client.send_message("me", "Generating...")
else:
- await message.edit("Generating...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Generating...")
url = "https://quotes.fl1yd.su/generate"
params = {
@@ -143,20 +143,20 @@ async def fake_quote_cmd(client: Client, message: types.Message):
response = requests.post(url, json=params)
if not response.ok:
return await message.edit(
- f"Quotes API error!\n{response.text}", parse_mode=enums.ParseMode.HTML
+ f"Quotes API error!\n{response.text}"
)
resized = resize_image(
BytesIO(response.content), img_type="PNG" if is_png else "WEBP"
)
- await message.edit("Sending...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Sending...")
try:
func = client.send_document if is_png else client.send_sticker
chat_id = "me" if send_for_me else message.chat.id
await func(chat_id, resized)
except errors.RPCError as e: # no rights to send stickers, etc
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
else:
await message.delete()
diff --git a/modules/stickers.py b/modules/stickers.py
index e10865a..6b4c32d 100644
--- a/modules/stickers.py
+++ b/modules/stickers.py
@@ -32,13 +32,13 @@ from utils.scripts import (
@Client.on_message(filters.command("kang", prefix) & filters.me)
@with_reply
async def kang(client: Client, message: types.Message):
- await message.edit("Please wait...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Please wait...")
if len(message.command) < 2:
await message.edit(
"No arguments provided\n"
f"Usage: {prefix}kang [pack]* [emoji]",
- parse_mode=enums.ParseMode.HTML
+
)
return
@@ -54,12 +54,12 @@ async def kang(client: Client, message: types.Message):
result = await interact_with(await client.send_message("@stickers", pack, parse_mode=enums.ParseMode.MARKDOWN))
if ".TGS" in result.text:
- await message.edit("Animated packs aren't supported", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Animated packs aren't supported")
return
if "StickerExample.psd" not in result.text:
await message.edit(
"Stickerpack doesn't exitst. Create it using @Stickers bot (via /newpack command)",
- parse_mode=enums.ParseMode.HTML
+
)
return
@@ -68,7 +68,7 @@ async def kang(client: Client, message: types.Message):
except ValueError:
await message.edit(
"Replied message doesn't contain any downloadable media",
- parse_mode=enums.ParseMode.HTML
+
)
return
@@ -84,10 +84,10 @@ async def kang(client: Client, message: types.Message):
await client.delete_messages("@stickers", interact_with_to_delete)
await message.edit(
f"Sticker added to pack",
- parse_mode=enums.ParseMode.HTML
+
)
else:
- await message.edit("Something went wrong. Check history with @stickers", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Something went wrong. Check history with @stickers")
interact_with_to_delete.clear()
@@ -95,7 +95,7 @@ async def kang(client: Client, message: types.Message):
@with_reply
async def stick2png(client: Client, message: types.Message):
try:
- await message.edit("Downloading...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Downloading...")
path = await message.reply_to_message.download()
with open(path, "rb") as f:
@@ -108,7 +108,7 @@ async def stick2png(client: Client, message: types.Message):
await client.send_document(message.chat.id, file_io, parse_mode=enums.ParseMode.MARKDOWN)
except Exception as e:
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
else:
await message.delete()
@@ -117,7 +117,7 @@ async def stick2png(client: Client, message: types.Message):
@with_reply
async def resize_cmd(client: Client, message: types.Message):
try:
- await message.edit("Downloading...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Downloading...")
path = await message.reply_to_message.download()
resized = resize_image(path)
@@ -127,7 +127,7 @@ async def resize_cmd(client: Client, message: types.Message):
await client.send_document(message.chat.id, resized, parse_mode=enums.ParseMode.MARKDOWN)
except Exception as e:
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
else:
await message.delete()
diff --git a/modules/support.py b/modules/support.py
index a4f02f5..4a4e898 100644
--- a/modules/support.py
+++ b/modules/support.py
@@ -13,7 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-from pyrogram import Client, filters, enums
+from pyrogram import Client, filters
from pyrogram.types import Message
import random
import datetime
@@ -28,7 +28,7 @@ async def support(_, message: Message):
commands_count = 0.0
for module in modules_help:
- for cmd in module:
+ for _cmd in module:
commands_count += 1
await message.edit(
@@ -45,7 +45,6 @@ async def support(_, message: Message):
f"Modules count: {len(modules_help) / 1}\n"
f"Commands count: {commands_count}",
disable_web_page_preview=True,
- parse_mode=enums.ParseMode.HTML,
)
@@ -81,7 +80,6 @@ async def version(client: Client, message: Message):
+ f"Commit: "
f"{gitrepo.head.commit.hexsha[:7]} by {gitrepo.head.commit.author.name}\n"
f"Commit time: {commit_time}",
- parse_mode=enums.ParseMode.HTML,
)
diff --git a/modules/updater.py b/modules/updater.py
index e9900cd..fb5f9d8 100644
--- a/modules/updater.py
+++ b/modules/updater.py
@@ -18,7 +18,7 @@ import os
import sys
import subprocess
-from pyrogram import Client, filters, enums
+from pyrogram import Client, filters
from pyrogram.types import Message
from utils.misc import modules_help, prefix, requirements_list
@@ -39,11 +39,11 @@ async def restart_cmd(_, message: Message):
)
if "LAVHOST" in os.environ:
- await message.edit("Your lavHost is restarting...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Your lavHost is restarting...")
os.system("lavhost restart")
return
- await message.edit("Restarting...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Restarting...")
restart()
@@ -60,11 +60,11 @@ async def update(_, message: Message):
)
if "LAVHOST" in os.environ:
- await message.edit("Your lavHost is updating...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Your lavHost is updating...")
os.system("lavhost update")
return
- await message.edit("Updating...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Updating...")
try:
subprocess.run([sys.executable, "-m", "pip", "install", "-U", "pip"])
subprocess.run(["git", "pull"])
@@ -84,10 +84,10 @@ async def update(_, message: Message):
[sys.executable, "-m", "pip", "install", "-U", *requirements_list]
)
except Exception as e:
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
db.remove("core.updater", "restart_info")
else:
- await message.edit("Updating: done! Restarting...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Updating: done! Restarting...")
restart()
diff --git a/modules/upl.py b/modules/upl.py
index 089e190..c8ad194 100644
--- a/modules/upl.py
+++ b/modules/upl.py
@@ -1,6 +1,6 @@
import os
-from pyrogram import Client, enums, filters
+from pyrogram import Client, filters
from pyrogram.types import Message
from utils.misc import modules_help, prefix
@@ -15,27 +15,25 @@ async def upl(client: Client, message: Message):
link = message.reply_to_message.text
else:
await message.edit(
- f"Usage: {prefix}upl [filepath to upload]",
- parse_mode=enums.ParseMode.HTML,
+ f"Usage: {prefix}upl [filepath to upload]"
)
return
# Ensure that the link is an absolute path to a file on your local machine
if not os.path.isfile(link):
await message.edit(
- f"Error: {link} is not a valid file path.",
- parse_mode=enums.ParseMode.HTML,
+ f"Error: {link} is not a valid file path."
)
return
try:
- await message.edit("Uploading Now...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Uploading Now...")
await client.send_document(
- message.chat.id, link, parse_mode=enums.ParseMode.HTML
+ message.chat.id, link
)
await message.delete()
except Exception as e:
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
@Client.on_message(filters.command("uplr", prefix) & filters.me)
@@ -46,27 +44,25 @@ async def uplr(client: Client, message: Message):
link = message.reply_to_message.text
else:
await message.edit(
- f"Usage: {prefix}upl [filepath to upload]",
- parse_mode=enums.ParseMode.HTML,
+ f"Usage: {prefix}upl [filepath to upload]"
)
return
# Ensure that the link is an absolute path to a file on your local machine
if not os.path.isfile(link):
await message.edit(
- f"Error: {link} is not a valid file path.",
- parse_mode=enums.ParseMode.HTML,
+ f"Error: {link} is not a valid file path."
)
return
try:
- await message.edit("Uploading Now...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Uploading Now...")
await client.send_document(
- message.chat.id, link, parse_mode=enums.ParseMode.HTML
+ message.chat.id, link
)
await message.delete()
except Exception as e:
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
finally:
if os.path.exists(link):
os.remove(link)
diff --git a/modules/url.py b/modules/url.py
index e2282f1..9ac631f 100644
--- a/modules/url.py
+++ b/modules/url.py
@@ -55,15 +55,13 @@ async def short(_, message: Message):
link = message.reply_to_message.text
else:
await message.edit(
- f"Usage: {prefix}short [url to short]",
- parse_mode=enums.ParseMode.HTML,
+ f"Usage: {prefix}short [url to short]"
)
return
r = http.request("GET", "https://clck.ru/--?url=" + link)
await message.edit(
r.data.decode().replace("https://", "Shortened Url:"),
disable_web_page_preview=True,
- parse_mode=enums.ParseMode.HTML,
)
@@ -77,8 +75,7 @@ async def urldl(client: Client, message: Message):
link = message.reply_to_message.text
else:
await message.edit(
- f"Usage: {prefix}urldl [url to download]",
- parse_mode=enums.ParseMode.HTML,
+ f"Usage: {prefix}urldl [url to download]"
)
return
@@ -187,20 +184,19 @@ async def upload_cmd(_, message: Message):
)
except ValueError:
await message.edit(
- "File to upload not found", parse_mode=enums.ParseMode.HTML
+ "File to upload not found"
)
return
if os.path.getsize(file_name) > max_size:
await message.edit(
- f"Files longer than {max_size_mb}MB isn't supported",
- parse_mode=enums.ParseMode.HTML,
+ f"Files longer than {max_size_mb}MB isn't supported"
)
if os.path.exists(file_name):
os.remove(file_name)
return
- await message.edit("Uploading...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Uploading...")
with open(file_name, "rb") as f:
response = requests.post(
"https://x0.at",
@@ -216,13 +212,11 @@ async def upload_cmd(_, message: Message):
url = response.text.replace("https://", "")
await message.edit(
f"Your URL: {url}\nYour file will remain live for {file_age} days",
- disable_web_page_preview=True,
- parse_mode=enums.ParseMode.HTML,
+ disable_web_page_preview=True
)
else:
await message.edit(
- f"API returned an error!\n" f"{response.text}\n Not allowed",
- parse_mode=enums.ParseMode.HTML,
+ f"API returned an error!\n" f"{response.text}\n Not allowed"
)
print(response.text)
if os.path.exists(file_name):
@@ -241,8 +235,7 @@ async def webshot(client: Client, message: Message):
url = "https://" + message.text.split(maxsplit=1)[1]
else:
await message.edit_text(
- f"Usage: {prefix}webshot/{prefix}ws [url/reply to url]",
- parse_mode=enums.ParseMode.HTML,
+ f"Usage: {prefix}webshot/{prefix}ws [url/reply to url]"
)
return
diff --git a/modules/user_info.py b/modules/user_info.py
index d0b8a4a..a03a8f9 100644
--- a/modules/user_info.py
+++ b/modules/user_info.py
@@ -14,7 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-from pyrogram import Client, filters, enums
+from pyrogram import Client, filters
from pyrogram.raw import functions
from pyrogram.types import Message
@@ -50,12 +50,12 @@ async def get_user_inf(client: Client, message: Message):
|-Deleted: {user.deleted}
|-BIO: {about}
"""
- await message.edit(user_info, parse_mode=enums.ParseMode.HTML)
+ await message.edit(user_info)
@Client.on_message(filters.command("inffull", prefix) & filters.me)
async def get_full_user_inf(client: Client, message: Message):
- await message.edit("Receiving the information...", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Receiving the information...")
try:
if len(message.command) >= 2:
@@ -73,7 +73,7 @@ async def get_full_user_inf(client: Client, message: Message):
await client.unblock_user("@creationdatebot")
try:
response = await interact_with(
- await client.send_message("creationdatebot", f"/id {user.id}", parse_mode=enums.ParseMode.HTML)
+ await client.send_message("creationdatebot", f"/id {user.id}")
)
except RuntimeError:
creation_date = "None"
@@ -104,9 +104,9 @@ async def get_full_user_inf(client: Client, message: Message):
|-Phone calls available: {full_user.phone_calls_available}
|-Phone calls private: {full_user.phone_calls_private}
|-Blocked: {full_user.blocked}"""
- await message.edit(user_info, parse_mode=enums.ParseMode.HTML)
+ await message.edit(user_info)
except Exception as e:
- await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
+ await message.edit(format_exc(e))
modules_help["user_info"] = {
"inf [reply|id|username]": "Get brief information about user",
diff --git a/utils/handlers.py b/utils/handlers.py
index bf9da2b..456b293 100644
--- a/utils/handlers.py
+++ b/utils/handlers.py
@@ -1,35 +1,37 @@
import re
-from datetime import timedelta, datetime
+from datetime import datetime, timedelta
from typing import Dict, Union
from pyrogram import Client, enums
from pyrogram.errors import (
- UserAdminInvalid,
ChatAdminRequired,
PeerIdInvalid,
+ RPCError,
+ UserAdminInvalid,
UsernameInvalid,
)
from pyrogram.raw import functions, types
from pyrogram.types import (
- Message,
ChatPermissions,
ChatPrivileges,
- InputMediaPhoto,
- InputMediaVideo,
InputMediaAudio,
InputMediaDocument,
+ InputMediaPhoto,
+ InputMediaVideo,
+ Message,
)
from pyrogram.utils import (
- get_channel_id,
- MAX_USER_ID,
- MIN_CHAT_ID,
MAX_CHANNEL_ID,
+ MAX_USER_ID,
MIN_CHANNEL_ID,
+ MIN_CHAT_ID,
+ get_channel_id,
)
from utils.db import db
-from utils.scripts import text, format_exc
from utils.misc import prefix
+from utils.scripts import format_exc, text
+
async def check_username_or_id(data: Union[str, int]) -> str:
data = str(data)
@@ -54,6 +56,7 @@ async def check_username_or_id(data: Union[str, int]) -> str:
raise ValueError(f"Peer id invalid: {peer_id}")
+
async def get_user_and_name(message):
if message.reply_to_message.from_user:
return (
@@ -66,6 +69,7 @@ async def get_user_and_name(message):
message.reply_to_message.sender_chat.title,
)
+
class BanHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -93,7 +97,11 @@ class BanHandler:
if len(self.cause.split()) > 1:
user_to_ban = await self.get_user_to_ban()
if user_to_ban:
- self.name = user_to_ban.first_name if getattr(user_to_ban, "first_name", None) else user_to_ban.title
+ self.name = (
+ user_to_ban.first_name
+ if getattr(user_to_ban, "first_name", None)
+ else user_to_ban.title
+ )
await self.ban_user(user_to_ban.id)
async def get_user_to_ban(self):
@@ -144,10 +152,10 @@ class BanHandler:
)
await self.message.edit(
f"{self.name} banned!"
- + f"\n{'Cause: ' + text_c.split(maxsplit=1)[1] + '' if len(text_c.split()) > 1 else ''}",
- parse_mode=enums.ParseMode.HTML,
+ + f"\n{'Cause: ' + text_c.split(maxsplit=1)[1] + '' if len(text_c.split()) > 1 else ''}"
)
+
class UnbanHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -175,7 +183,11 @@ class UnbanHandler:
if len(self.cause.split()) > 1:
user_to_unban = await self.get_user_to_unban()
if user_to_unban:
- self.name = user_to_unban.first_name if getattr(user_to_unban, "first_name", None) else user_to_unban.title
+ self.name = (
+ user_to_unban.first_name
+ if getattr(user_to_unban, "first_name", None)
+ else user_to_unban.title
+ )
await self.unban_user(user_to_unban.id)
async def get_user_to_unban(self):
@@ -209,10 +221,10 @@ class UnbanHandler:
)
await self.message.edit(
f"{self.name} unbanned!"
- + f"\n{'Cause: ' + text_c.split(maxsplit=1)[1] + '' if len(text_c.split()) > 1 else ''}",
- parse_mode=enums.ParseMode.HTML,
+ + f"\n{'Cause: ' + text_c.split(maxsplit=1)[1] + '' if len(text_c.split()) > 1 else ''}"
)
+
class KickHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -242,7 +254,11 @@ class KickHandler:
if len(self.cause.split()) > 1:
user_to_kick = await self.get_user_to_kick()
if user_to_kick:
- self.name = user_to_kick.first_name if getattr(user_to_kick, "first_name", None) else user_to_kick.title
+ self.name = (
+ user_to_kick.first_name
+ if getattr(user_to_kick, "first_name", None)
+ else user_to_kick.title
+ )
await self.kick_user(user_to_kick.id)
else:
await self.message.edit("user_id or username")
@@ -304,10 +320,10 @@ class KickHandler:
)
await self.message.edit(
f"{self.name} kicked!"
- + f"\n{'Cause: ' + text_c.split(maxsplit=1)[1] + '' if len(text_c.split()) > 1 else ''}",
- parse_mode=enums.ParseMode.HTML,
+ + f"\n{'Cause: ' + text_c.split(maxsplit=1)[1] + '' if len(text_c.split()) > 1 else ''}"
)
+
class KickDeletedAccountsHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -326,19 +342,17 @@ class KickDeletedAccountsHandler:
return await self.message.edit(format_exc(e))
await self.message.edit(
f"Successfully kicked {self.kicked_count} deleted account(s)",
- parse_mode=enums.ParseMode.HTML
)
async def kick_member(self, user_id):
try:
await self.client.ban_chat_member(
- self.chat_id,
- user_id,
- datetime.now() + timedelta(seconds=31)
+ self.chat_id, user_id, datetime.now() + timedelta(seconds=31)
)
except Exception as e:
await self.message.edit(f"Failed to kick user {user_id}: {format_exc(e)}")
+
class TimeMuteHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -366,7 +380,6 @@ class TimeMuteHandler:
await self.message.edit(
f"{name} in tmute"
+ f"\n{'Cause: ' + self.cause.split(maxsplit=1)[1] + '' if len(self.cause.split()) > 1 else ''}",
- parse_mode=enums.ParseMode.HTML
)
async def handle_non_reply_tmute(self):
@@ -374,19 +387,21 @@ class TimeMuteHandler:
if len(self.cause.split()) > 1:
user_to_tmute = await self.get_user_to_tmute()
if user_to_tmute:
- name = user_to_tmute.first_name if getattr(user_to_tmute, "first_name", None) else user_to_tmute.title
+ name = (
+ user_to_tmute.first_name
+ if getattr(user_to_tmute, "first_name", None)
+ else user_to_tmute.title
+ )
if user_to_tmute.id not in self.tmuted_users:
self.tmuted_users.append(user_to_tmute.id)
db.set("core.ats", f"c{self.chat_id}", self.tmuted_users)
await self.message.edit(
f"{name} in tmute"
+ f"\n{'Cause: ' + self.cause.split(maxsplit=2)[2] + '' if len(self.cause.split()) > 2 else ''}",
- parse_mode=enums.ParseMode.HTML
)
else:
await self.message.edit(
f"{name} already in tmute",
- parse_mode=enums.ParseMode.HTML
)
else:
await self.message.edit("user_id or username")
@@ -401,6 +416,7 @@ class TimeMuteHandler:
await self.message.edit("Invalid user type")
return None
+
class TimeUnmuteHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -428,7 +444,6 @@ class TimeUnmuteHandler:
await self.message.edit(
f"{name} tunmuted"
+ f"\n{'Cause: ' + self.cause.split(maxsplit=1)[1] + '' if len(self.cause.split()) > 1 else ''}",
- parse_mode=enums.ParseMode.HTML
)
async def handle_non_reply_tunmute(self):
@@ -436,11 +451,14 @@ class TimeUnmuteHandler:
if len(self.cause.split()) > 1:
user_to_tunmute = await self.get_user_to_tunmute()
if user_to_tunmute:
- name = user_to_tunmute.first_name if getattr(user_to_tunmute, "first_name", None) else user_to_tunmute.title
+ name = (
+ user_to_tunmute.first_name
+ if getattr(user_to_tunmute, "first_name", None)
+ else user_to_tunmute.title
+ )
if user_to_tunmute.id not in self.tmuted_users:
await self.message.edit(
f"{name} not in tmute",
- parse_mode=enums.ParseMode.HTML
)
else:
self.tmuted_users.remove(user_to_tunmute.id)
@@ -448,7 +466,6 @@ class TimeUnmuteHandler:
await self.message.edit(
f"{name} tunmuted"
+ f"\n{'Cause: ' + self.cause.split(maxsplit=2)[2] + '' if len(self.cause.split()) > 2 else ''}",
- parse_mode=enums.ParseMode.HTML
)
else:
await self.message.edit("user_id or username")
@@ -463,6 +480,7 @@ class TimeUnmuteHandler:
await self.message.edit("Invalid user type")
return None
+
class TimeMuteUsersHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -486,7 +504,7 @@ class TimeMuteUsersHandler:
await self.message.edit("No users in tmute")
else:
text += f"\nTotal users in tmute {count}"
- await self.message.edit(text, parse_mode=enums.ParseMode.HTML)
+ await self.message.edit(text)
else:
await self.message.edit("Unsupported")
@@ -511,6 +529,7 @@ class TimeMuteUsersHandler:
except PeerIdInvalid:
return None
+
class UnmuteHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -589,6 +608,7 @@ class UnmuteHandler:
except Exception as e:
await self.message.edit(format_exc(e))
+
class MuteHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -611,7 +631,9 @@ class MuteHandler:
mute_seconds = self.calculate_mute_seconds()
try:
await self.mute_user(user_for_mute.id, mute_seconds)
- await self.message.edit(self.construct_mute_message(user_for_mute, mute_seconds))
+ await self.message.edit(
+ self.construct_mute_message(user_for_mute, mute_seconds)
+ )
except UserAdminInvalid:
await self.message.edit("No rights")
except ChatAdminRequired:
@@ -629,7 +651,9 @@ class MuteHandler:
mute_seconds = self.calculate_mute_seconds()
try:
await self.mute_user(user_to_mute.id, mute_seconds)
- await self.message.edit(self.construct_mute_message(user_to_mute, mute_seconds))
+ await self.message.edit(
+ self.construct_mute_message(user_to_mute, mute_seconds)
+ )
except UserAdminInvalid:
await self.message.edit("No rights")
except ChatAdminRequired:
@@ -702,6 +726,7 @@ class MuteHandler:
message_text = message_text.replace(" ", " ")
return message_text
+
class DemoteHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -736,7 +761,9 @@ class DemoteHandler:
if user_for_demote:
try:
await self.demote_user(user_for_demote.id)
- await self.message.edit(self.construct_demote_message(user_for_demote))
+ await self.message.edit(
+ self.construct_demote_message(user_for_demote)
+ )
except UserAdminInvalid:
await self.message.edit("No rights")
except ChatAdminRequired:
@@ -753,7 +780,9 @@ class DemoteHandler:
if user_to_demote:
try:
await self.demote_user(user_to_demote.id)
- await self.message.edit(self.construct_demote_message(user_to_demote))
+ await self.message.edit(
+ self.construct_demote_message(user_to_demote)
+ )
except UserAdminInvalid:
await self.message.edit("No rights")
except ChatAdminRequired:
@@ -791,6 +820,7 @@ class DemoteHandler:
+ f"\n{'Cause: ' + self.cause.split(' ', maxsplit=2)[2] + '' if len(self.cause.split()) > 2 else ''}"
)
+
class PromoteHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -818,7 +848,9 @@ class PromoteHandler:
if user_for_promote:
try:
await self.promote_user(user_for_promote.id)
- await self.message.edit(self.construct_promote_message(user_for_promote))
+ await self.message.edit(
+ self.construct_promote_message(user_for_promote)
+ )
except UserAdminInvalid:
await self.message.edit("No rights")
except ChatAdminRequired:
@@ -835,7 +867,9 @@ class PromoteHandler:
if user_to_promote:
try:
await self.promote_user(user_to_promote.id)
- await self.message.edit(self.construct_promote_message(user_to_promote))
+ await self.message.edit(
+ self.construct_promote_message(user_to_promote)
+ )
except UserAdminInvalid:
await self.message.edit("No rights")
except ChatAdminRequired:
@@ -880,6 +914,7 @@ class PromoteHandler:
+ f"\n{'Prefix: ' + self.cause.split(' ', maxsplit=1)[1] + '' if len(self.cause.split()) > 1 else ''}"
)
+
class AntiChannelsHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -900,7 +935,9 @@ class AntiChannelsHandler:
elif command[1] in ["disable", "off", "0", "no", "false"]:
await self.disable_anti_channels()
else:
- await self.message.edit(f"Usage: {self.prefix}antich [enable|disable]")
+ await self.message.edit(
+ f"Usage: {self.prefix}antich [enable|disable]"
+ )
async def toggle_anti_channels_status(self):
current_status = db.get("core.ats", f"antich{self.chat_id}", False)
@@ -924,6 +961,7 @@ class AntiChannelsHandler:
db.set("core.ats", f"antich{self.chat_id}", False)
await self.message.edit("Blocking channels in this chat disabled.")
+
class DeleteHistoryHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -960,7 +998,11 @@ class DeleteHistoryHandler:
try:
user_to_delete = await self.get_user_to_delete()
if user_to_delete:
- name = user_to_delete.first_name if getattr(user_to_delete, "first_name", None) else user_to_delete.title
+ name = (
+ user_to_delete.first_name
+ if getattr(user_to_delete, "first_name", None)
+ else user_to_delete.title
+ )
await self.delete_user_history(user_to_delete.id, name)
else:
await self.message.edit("User is not found")
@@ -1003,6 +1045,7 @@ class DeleteHistoryHandler:
except Exception as e:
await self.message.edit(format_exc(e))
+
class AntiRaidHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -1053,6 +1096,7 @@ class AntiRaidHandler:
else:
await self.message.edit("Anti-raid mode disabled")
+
class NoteSendHandler:
def __init__(self, client: Client, message: Message):
self.client = client
@@ -1062,26 +1106,24 @@ class NoteSendHandler:
async def handle_note_send(self):
if len(self.message.text.split()) >= 2:
- await self.message.edit("Loading...", parse_mode=enums.ParseMode.HTML)
+ await self.message.edit("Loading...")
note_name = self.message.text.split(maxsplit=1)[1]
find_note = db.get("core.notes", f"note{note_name}", False)
if find_note:
try:
await self.send_note(find_note)
- except errors.RPCError:
+ except RPCError:
await self.message.edit(
"Sorry, but this note is unavailable.\n\n"
f"You can delete this note with "
- f"{self.prefix}clear {note_name}",
- parse_mode=enums.ParseMode.HTML
+ f"{self.prefix}clear {note_name}"
)
else:
- await self.message.edit("There is no such note", parse_mode=enums.ParseMode.HTML)
+ await self.message.edit("There is no such note")
else:
await self.message.edit(
f"Example: {self.prefix}note note_name",
- parse_mode=enums.ParseMode.HTML
)
async def send_note(self, find_note):
@@ -1102,12 +1144,9 @@ class NoteSendHandler:
self.message.chat.id,
media_grouped_list,
reply_to_message_id=self.message.reply_to_message.id,
- parse_mode=enums.ParseMode.HTML,
)
else:
- await self.client.send_media_group(
- self.message.chat.id, media_grouped_list
- )
+ await self.client.send_media_group(self.message.chat.id, media_grouped_list)
async def copy_message(self, find_note):
if self.message.reply_to_message:
@@ -1154,7 +1193,9 @@ class NoteSendHandler:
else:
return InputMediaVideo(message.video.file_id, message.caption.markdown)
elif message.video.thumbs:
- return InputMediaVideo(message.video.file_id, message.video.thumbs[0].file_id)
+ return InputMediaVideo(
+ message.video.file_id, message.video.thumbs[0].file_id
+ )
else:
return InputMediaVideo(message.video.file_id)
@@ -1173,8 +1214,12 @@ class NoteSendHandler:
message.caption.markdown,
)
else:
- return InputMediaDocument(message.document.file_id, message.caption.markdown)
+ return InputMediaDocument(
+ message.document.file_id, message.caption.markdown
+ )
elif message.document.thumbs:
- return InputMediaDocument(message.document.file_id, message.document.thumbs[0].file_id)
+ return InputMediaDocument(
+ message.document.file_id, message.document.thumbs[0].file_id
+ )
else:
- return InputMediaDocument(message.document.file_id)
\ No newline at end of file
+ return InputMediaDocument(message.document.file_id)
diff --git a/utils/scripts.py b/utils/scripts.py
index 941cb0e..0012d7f 100644
--- a/utils/scripts.py
+++ b/utils/scripts.py
@@ -14,24 +14,23 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-import logging
+import asyncio
+import importlib
import math
-import time
import os
import re
-import sys
-import asyncio
-import traceback
-import importlib
+import shlex
import subprocess
+import sys
+import time
+import traceback
from io import BytesIO
from types import ModuleType
from typing import Dict, Tuple
-import shlex
from PIL import Image
+from pyrogram import Client, errors, types
from pyrogram.errors import FloodWait, MessageNotModified
-from pyrogram import Client, errors, types, enums
from pyrogram.types import Message
from .misc import modules_help, prefix, requirements_list
@@ -39,6 +38,7 @@ from .misc import modules_help, prefix, requirements_list
META_COMMENTS = re.compile(r"^ *# *meta +(\S+) *: *(.*?)\s*$", re.MULTILINE)
interact_with_to_delete = []
+
def time_formatter(milliseconds: int) -> str:
"""Time Formatter"""
seconds, milliseconds = divmod(int(milliseconds), 1000)
@@ -54,11 +54,12 @@ def time_formatter(milliseconds: int) -> str:
)
return tmp[:-2]
+
def humanbytes(size):
"""Convert Bytes To Bytes So That Human Can Read It"""
if not size:
return ""
- power = 2 ** 10
+ power = 2**10
raised_to_pow = 0
dict_power_n = {0: "", 1: "Ki", 2: "Mi", 3: "Gi", 4: "Ti"}
while size > power:
@@ -66,20 +67,20 @@ def humanbytes(size):
raised_to_pow += 1
return str(round(size, 2)) + " " + dict_power_n[raised_to_pow] + "B"
+
async def edit_or_send_as_file(
text: str,
message: Message,
client: Client,
- caption: str = "`Result!`",
+ caption: str = "Result!",
file_name: str = "result",
- parse_mode=enums.ParseMode.MARKDOWN,
):
"""Send As File If Len Of Text Exceeds Tg Limit Else Edit Message"""
if not text:
- await message.edit("`Wait, What?`", parse_mode=enums.ParseMode.MARKDOWN)
+ await message.edit("Wait, What?")
return
if len(text) > 1024:
- await message.edit("`OutPut is Too Large, Sending As File!`", parse_mode=enums.ParseMode.MARKDOWN)
+ await message.edit("OutPut is Too Large, Sending As File!")
file_names = f"{file_name}.text"
open(file_names, "w").write(text)
await client.send_document(message.chat.id, file_names, caption=caption)
@@ -88,7 +89,8 @@ async def edit_or_send_as_file(
os.remove(file_names)
return
else:
- return await message.edit(text, parse_mode=parse_mode)
+ return await message.edit(text)
+
def get_text(message: Message) -> [None, str]:
"""Extract Text From Commands"""
@@ -103,6 +105,7 @@ def get_text(message: Message) -> [None, str]:
else:
return None
+
async def progress(current, total, message, start, type_of_ps, file_name=None):
"""Progress Bar For Showing Progress While Uploading / Downloading File - Normal"""
now = time.time()
@@ -126,7 +129,7 @@ async def progress(current, total, message, start, type_of_ps, file_name=None):
if file_name:
try:
await message.edit(
- "{}\n**File Name:** `{}`\n{}".format(type_of_ps, file_name, tmp, parse_mode=enums.ParseMode.MARKDOWN)
+ "{}\nFile Name: {}\n{}".format(type_of_ps, file_name, tmp)
)
except FloodWait as e:
await asyncio.sleep(e.x)
@@ -134,12 +137,13 @@ async def progress(current, total, message, start, type_of_ps, file_name=None):
pass
else:
try:
- await message.edit("{}\n{}".format(type_of_ps, tmp), parse_mode=enums.ParseMode.MARKDOWN)
+ await message.edit("{}\n{}".format(type_of_ps, tmp))
except FloodWait as e:
await asyncio.sleep(e.x)
except MessageNotModified:
pass
+
async def run_cmd(prefix: str) -> Tuple[str, str, int, int]:
"""Run Commands"""
args = shlex.split(prefix)
@@ -154,6 +158,7 @@ async def run_cmd(prefix: str) -> Tuple[str, str, int, int]:
process.pid,
)
+
def mediainfo(media):
xx = str((str(media)).split("(", maxsplit=1)[0])
m = ""
@@ -188,13 +193,15 @@ def mediainfo(media):
m = "web"
return m
-async def edit_or_reply(message, text, parse_mode=enums.ParseMode.MARKDOWN):
+
+async def edit_or_reply(message, text):
"""Edit Message If Its From Self, Else Reply To Message"""
if not message:
- return await message.edit(text, parse_mode=parse_mode)
+ return await message.edit(text)
if not message.from_user:
- return await message.edit(text, parse_mode=parse_mode)
- return await message.edit(text, parse_mode=parse_mode)
+ return await message.edit(text)
+ return await message.edit(text)
+
def text(message: types.Message) -> str:
"""Find text in `types.Message` object"""
@@ -213,16 +220,13 @@ def format_exc(e: Exception, suffix="") -> str:
f"Telegram API error!\n"
f"[{e.CODE} {e.ID or e.NAME}] — {e.MESSAGE.format(value=e.value)}\n\n{suffix}"
)
- return (
- f"Error!\n"
- f"{err}"
- )
+ return f"Error!\n" f"{err}"
def with_reply(func):
async def wrapped(client: Client, message: types.Message):
if not message.reply_to_message:
- await message.edit("Reply to message is required", parse_mode=enums.ParseMode.HTML)
+ await message.edit("Reply to message is required")
else:
return await func(client, message)
@@ -243,10 +247,7 @@ async def interact_with(message: types.Message) -> types.Message:
await asyncio.sleep(1)
# noinspection PyProtectedMember
response = [
- msg
- async for msg in message._client.get_chat_history(
- message.chat.id, limit=1
- )
+ msg async for msg in message._client.get_chat_history(message.chat.id, limit=1)
]
seconds_waiting = 0
@@ -259,9 +260,7 @@ async def interact_with(message: types.Message) -> types.Message:
# noinspection PyProtectedMember
response = [
msg
- async for msg in message._client.get_chat_history(
- message.chat.id, limit=1
- )
+ async for msg in message._client.get_chat_history(message.chat.id, limit=1)
]
interact_with_to_delete.append(message.id)
@@ -274,9 +273,7 @@ def format_module_help(module_name: str, full=True):
commands = modules_help[module_name]
help_text = (
- f"Help for |{module_name}|\n\nUsage:\n"
- if full
- else "Usage:\n"
+ f"Help for |{module_name}|\n\nUsage:\n" if full else "Usage:\n"
)
for command, desc in commands.items():
@@ -295,13 +292,11 @@ def format_small_module_help(module_name: str, full=True):
if full
else "Commands list:\n"
)
- for command, desc in commands.items():
+ for command, _desc in commands.items():
cmd = command.split(maxsplit=1)
args = " " + cmd[1] + "" if len(cmd) > 1 else ""
help_text += f"{prefix}{cmd[0]}{args}\n"
- help_text += (
- f"\nGet full usage: {prefix}help {module_name}"
- )
+ help_text += f"\nGet full usage: {prefix}help {module_name}"
return help_text
@@ -319,15 +314,14 @@ def import_library(library_name: str, package_name: str = None):
try:
return importlib.import_module(library_name)
- except ImportError:
+ except ImportError as exc:
completed = subprocess.run(
[sys.executable, "-m", "pip", "install", package_name]
)
if completed.returncode != 0:
raise AssertionError(
- f"Failed to install library {package_name} (pip exited with code {completed.returncode})",
- parse_mode=enums.ParseMode.HTML
- )
+ f"Failed to install library {package_name} (pip exited with code {completed.returncode})"
+ ) from exc
return importlib.import_module(library_name)
@@ -384,10 +378,7 @@ async def load_module(
raise
if message:
- await message.edit(
- f"Installing requirements: {' '.join(packages)}",
- parse_mode=enums.ParseMode.HTML
- )
+ await message.edit(f"Installing requirements: {' '.join(packages)}")
proc = await asyncio.create_subprocess_exec(
sys.executable,
@@ -401,10 +392,7 @@ async def load_module(
await asyncio.wait_for(proc.wait(), timeout=120)
except asyncio.TimeoutError:
if message:
- await message.edit(
- "Timeout while installed requirements. Try to install them manually",
- parse_mode=enums.ParseMode.HTML
- )
+ await message.edit("Timeout while installed requirements. Try to install them manually")
raise TimeoutError("timeout while installing requirements") from e
if proc.returncode != 0:
@@ -412,14 +400,13 @@ async def load_module(
await message.edit(
f"Failed to install requirements (pip exited with code {proc.returncode}). "
f"Check logs for futher info",
- parse_mode=enums.ParseMode.HTML
)
raise RuntimeError("failed to install requirements") from e
module = importlib.import_module(path)
- for name, obj in vars(module).items():
- if type(getattr(obj, "handlers", [])) == list:
+ for _name, obj in vars(module).items():
+ if isinstance(getattr(obj, "handlers", []), list):
for handler, group in getattr(obj, "handlers", []):
client.add_handler(handler, group)
@@ -435,7 +422,7 @@ async def unload_module(module_name: str, client: Client) -> bool:
module = importlib.import_module(path)
- for name, obj in vars(module).items():
+ for _name, obj in vars(module).items():
for handler, group in getattr(obj, "handlers", []):
client.remove_handler(handler, group)
@@ -451,4 +438,15 @@ def parse_meta_comments(code: str) -> Dict[str, str]:
except AttributeError:
return {}
- return {groups[i]: groups[i + 1] for i in range(0, len(groups), 2)}
\ No newline at end of file
+ return {groups[i]: groups[i + 1] for i in range(0, len(groups), 2)}
+
+def ReplyCheck(message: Message):
+ reply_id = None
+
+ if message.reply_to_message:
+ reply_id = message.reply_to_message.id
+
+ elif not message.from_user.is_self:
+ reply_id = message.id
+
+ return reply_id