From 64adf805d3f17100e4439d6e7ff2f1befa08f9a4 Mon Sep 17 00:00:00 2001 From: thedragonsinn <98635854+thedragonsinn@users.noreply.github.com> Date: Tue, 22 Oct 2024 17:39:09 +0530 Subject: [PATCH] misc: drop using instace for add_cmd in plugins --- app/plugins/admin/ban.py | 6 +-- app/plugins/admin/mute.py | 4 +- app/plugins/admin/promote.py | 4 +- app/plugins/files/download.py | 9 +---- app/plugins/misc/extra_module_updater.py | 6 ++- app/plugins/misc/song.py | 4 +- app/plugins/sudo/commands.py | 33 +++++++++++++--- app/plugins/sudo/superuser_toggle.py | 14 +++++-- app/plugins/sudo/users.py | 48 +++++++++++++++++++----- app/plugins/tg_tools/chat.py | 10 ++--- app/plugins/tg_tools/click.py | 4 +- app/plugins/tg_tools/delete.py | 6 +-- app/plugins/tg_tools/get_message.py | 4 +- app/plugins/tg_tools/ping.py | 4 +- app/plugins/tg_tools/reply.py | 4 +- app/plugins/tg_tools/respond.py | 4 +- 16 files changed, 110 insertions(+), 54 deletions(-) diff --git a/app/plugins/admin/ban.py b/app/plugins/admin/ban.py index 5178600..b88f7ba 100644 --- a/app/plugins/admin/ban.py +++ b/app/plugins/admin/ban.py @@ -2,10 +2,10 @@ import asyncio from pyrogram.types import User -from app import BOT, Message, bot +from app import BOT, Message -@bot.add_cmd(cmd=["ban", "unban"]) +@BOT.add_cmd(cmd=["ban", "unban"]) async def ban_or_unban(bot: BOT, message: Message) -> None: user, reason = await message.extract_user_n_reason() if not isinstance(user, User): @@ -23,7 +23,7 @@ async def ban_or_unban(bot: BOT, message: Message) -> None: await message.reply(text=e, del_in=10) -@bot.add_cmd(cmd="kick") +@BOT.add_cmd(cmd="kick") async def kick_user(bot: BOT, message: Message): user, reason = await message.extract_user_n_reason() if not isinstance(user, User): diff --git a/app/plugins/admin/mute.py b/app/plugins/admin/mute.py index 4b948ef..08d3770 100644 --- a/app/plugins/admin/mute.py +++ b/app/plugins/admin/mute.py @@ -1,9 +1,9 @@ from pyrogram.types import ChatPermissions, User -from app import BOT, Message, bot +from app import BOT, Message -@bot.add_cmd(cmd=["mute", "unmute"]) +@BOT.add_cmd(cmd=["mute", "unmute"]) async def mute_or_unmute(bot: BOT, message: Message): user, reason = await message.extract_user_n_reason() if not isinstance(user, User): diff --git a/app/plugins/admin/promote.py b/app/plugins/admin/promote.py index e51ab68..407343a 100644 --- a/app/plugins/admin/promote.py +++ b/app/plugins/admin/promote.py @@ -3,7 +3,7 @@ import asyncio from pyrogram.enums import ChatMemberStatus from pyrogram.types import ChatPrivileges, User -from app import BOT, Message, bot +from app import BOT, Message DEMOTE_PRIVILEGES = ChatPrivileges(can_manage_chat=False) @@ -20,7 +20,7 @@ NO_PRIVILEGES = ChatPrivileges( ) -@bot.add_cmd(cmd=["promote", "demote"]) +@BOT.add_cmd(cmd=["promote", "demote"]) async def promote_or_demote(bot: BOT, message: Message) -> None: """ CMD: PROMOTE | DEMOTE diff --git a/app/plugins/files/download.py b/app/plugins/files/download.py index 0b6b09a..a9350fd 100644 --- a/app/plugins/files/download.py +++ b/app/plugins/files/download.py @@ -2,13 +2,8 @@ import asyncio import os import time -from ub_core.utils import ( - Download, - DownloadedFile, - bytes_to_mb, - get_tg_media_details, - progress, -) +from ub_core.utils import (Download, DownloadedFile, get_tg_media_details, + progress) from app import BOT, Message, bot diff --git a/app/plugins/misc/extra_module_updater.py b/app/plugins/misc/extra_module_updater.py index 6fe49c8..2475133 100644 --- a/app/plugins/misc/extra_module_updater.py +++ b/app/plugins/misc/extra_module_updater.py @@ -1,13 +1,15 @@ from ub_core.utils import run_shell_cmd -from app import BOT, Message, bot +from app import BOT, Message -@bot.add_cmd(cmd="extupdate", allow_sudo=False) +@BOT.add_cmd(cmd="extupdate", allow_sudo=False) async def extra_modules_updater(bot: BOT, message: Message): output = await run_shell_cmd( cmd="cd app/modules && git pull", timeout=10, ret_val="0" ) + await message.reply(output) + if output.strip() != "Already up to date.": bot.raise_sigint() diff --git a/app/plugins/misc/song.py b/app/plugins/misc/song.py index 3820e49..1c23a4d 100644 --- a/app/plugins/misc/song.py +++ b/app/plugins/misc/song.py @@ -8,7 +8,7 @@ from urllib.parse import urlparse from ub_core.utils import MediaExts, aio, run_shell_cmd -from app import BOT, Message, bot +from app import BOT, Message domains = [ "www.youtube.com", @@ -20,7 +20,7 @@ domains = [ ] -@bot.add_cmd(cmd="song") +@BOT.add_cmd(cmd="song") async def song_dl(bot: BOT, message: Message) -> None | Message: reply_query = None diff --git a/app/plugins/sudo/commands.py b/app/plugins/sudo/commands.py index fe265c2..fcb22da 100644 --- a/app/plugins/sudo/commands.py +++ b/app/plugins/sudo/commands.py @@ -1,4 +1,4 @@ -from app import BOT, Config, CustomDB, Message, bot +from app import BOT, Config, CustomDB, Message DB = CustomDB("SUDO_CMD_LIST") @@ -10,7 +10,7 @@ async def init_task(): cmd_object.loaded = True -@bot.add_cmd(cmd="addscmd", allow_sudo=False) +@BOT.add_cmd(cmd="addscmd", allow_sudo=False) async def add_scmd(bot: BOT, message: Message): """ CMD: ADDSCMD @@ -21,38 +21,50 @@ async def add_scmd(bot: BOT, message: Message): """ if "-all" in message.flags: cmds = [] + for cmd_name, cmd_object in Config.CMD_DICT.items(): if cmd_object.sudo: cmd_object.loaded = True cmds.append({"_id": cmd_name}) + await DB.drop() await DB.insert_many(cmds) + await (await message.reply("All Commands Added to Sudo!")).log() return + cmd_name = message.filtered_input - response = await message.reply(f"Adding {cmd_name} to sudo....") cmd_object = Config.CMD_DICT.get(cmd_name) + + response = await message.reply(f"Adding {cmd_name} to sudo....") + if not cmd_object: await response.edit(text=f"{cmd_name} not a valid command.", del_in=10) return + elif not cmd_object.sudo: await response.edit( text=f"{cmd_name} is disabled for sudo users.", del_in=10 ) return + elif cmd_object.loaded: await response.edit(text=f"{cmd_name} already in Sudo!", del_in=10) return + resp_str = f"#SUDO\n{cmd_name} added to Sudo!" + if "-temp" in message.flags: resp_str += "\nTemp: True" else: await DB.add_data(data={"_id": cmd_name}) + cmd_object.loaded = True + await (await response.edit(resp_str)).log() -@bot.add_cmd(cmd="delscmd", allow_sudo=False) +@BOT.add_cmd(cmd="delscmd", allow_sudo=False) async def del_scmd(bot: BOT, message: Message): """ CMD: DELSCMD @@ -62,34 +74,45 @@ async def del_scmd(bot: BOT, message: Message): .delscmd ping | .delscmd -all """ if "-all" in message.flags: + for cmd_object in Config.CMD_DICT.values(): cmd_object.loaded = False + await DB.drop() await (await message.reply("All Commands Removed from Sudo!")).log() return + cmd_name = message.filtered_input cmd_object = Config.CMD_DICT.get(cmd_name) + if not cmd_object: return + response = await message.reply(f"Removing {cmd_name} from sudo....") + if not cmd_object.loaded: await response.edit(f"{cmd_name} not in Sudo!") return + cmd_object.loaded = False resp_str = f"#SUDO\n{cmd_name} removed from Sudo!" + if "-temp" in message.flags: resp_str += "\nTemp: True" else: await DB.delete_data(cmd_name) + await (await response.edit(resp_str)).log() -@bot.add_cmd(cmd="vscmd") +@BOT.add_cmd(cmd="vscmd") async def view_sudo_cmd(bot: BOT, message: Message): cmds = [cmd_name for cmd_name, cmd_obj in Config.CMD_DICT.items() if cmd_obj.loaded] + if not cmds: await message.reply("No Commands in SUDO!") return + await message.reply( text=f"List of {len(cmds)}:\n
{cmds}",
del_in=30,
diff --git a/app/plugins/sudo/superuser_toggle.py b/app/plugins/sudo/superuser_toggle.py
index 671dd6f..9956aa2 100644
--- a/app/plugins/sudo/superuser_toggle.py
+++ b/app/plugins/sudo/superuser_toggle.py
@@ -4,13 +4,17 @@ from app import BOT, Config, Message, bot
from app.plugins.sudo.users import SUDO_USERS
-@bot.add_cmd(cmd="disable_su", allow_sudo=False)
+@BOT.add_cmd(cmd="disable_su", allow_sudo=False)
async def disable_su(bot: BOT, message: Message):
u_id = message.from_user.id
+
if u_id in Config.DISABLED_SUPERUSERS:
return
+
Config.DISABLED_SUPERUSERS.append(u_id)
+
await SUDO_USERS.add_data({"_id": u_id, "disabled": True})
+
await message.reply(
text="Your SuperUser Access is now Disabled.", del_in=10
)
@@ -22,13 +26,17 @@ async def disable_su(bot: BOT, message: Message):
lambda _, __, m: m.from_user and m.from_user.id in Config.DISABLED_SUPERUSERS
),
group=1,
+ is_command=True,
+ filters_edited=True,
+ check_for_reactions=True,
)
async def enable_su(bot: BOT, message: Message):
- message = Message.parse(message)
u_id = message.from_user.id
+
Config.DISABLED_SUPERUSERS.remove(u_id)
+
await SUDO_USERS.add_data({"_id": u_id, "disabled": False})
+
await message.reply(
text="Your SuperUser Access is now Enabled.", del_in=10
)
- message.stop_propagation()
diff --git a/app/plugins/sudo/users.py b/app/plugins/sudo/users.py
index 1dbc937..3e84c1d 100644
--- a/app/plugins/sudo/users.py
+++ b/app/plugins/sudo/users.py
@@ -1,9 +1,8 @@
-import asyncio
from pyrogram.types import User
from ub_core.utils.helpers import extract_user_data, get_name
-from app import BOT, Config, CustomDB, Message, bot
+from app import BOT, Config, CustomDB, Message
SUDO = CustomDB("COMMON_SETTINGS")
SUDO_USERS = CustomDB("SUDO_USERS")
@@ -12,14 +11,16 @@ SUDO_USERS = CustomDB("SUDO_USERS")
async def init_task():
sudo = await SUDO.find_one({"_id": "sudo_switch"}) or {}
Config.SUDO = sudo.get("value", False)
+
async for sudo_user in SUDO_USERS.find():
config = Config.SUPERUSERS if sudo_user.get("super") else Config.SUDO_USERS
config.append(sudo_user["_id"])
+
if sudo_user.get("disabled"):
Config.DISABLED_SUPERUSERS.append(sudo_user["_id"])
-@bot.add_cmd(cmd="sudo", allow_sudo=False)
+@BOT.add_cmd(cmd="sudo", allow_sudo=False)
async def sudo(bot: BOT, message: Message):
"""
CMD: SUDO
@@ -31,15 +32,19 @@ async def sudo(bot: BOT, message: Message):
if "-c" in message.flags:
await message.reply(text=f"Sudo is enabled: {Config.SUDO}!", del_in=8)
return
+
value = not Config.SUDO
+
Config.SUDO = value
- await asyncio.gather(
- SUDO.add_data({"_id": "sudo_switch", "value": value}),
- message.reply(text=f"Sudo is enabled: {value}!", del_in=8),
- )
+
+ await SUDO.add_data({"_id": "sudo_switch", "value": value})
+
+ await (
+ await message.reply(text=f"Sudo is enabled: {value}!", del_in=8)
+ ).log()
-@bot.add_cmd(cmd="addsudo", allow_sudo=False)
+@BOT.add_cmd(cmd="addsudo", allow_sudo=False)
async def add_sudo(bot: BOT, message: Message) -> Message | None:
"""
CMD: ADDSUDO
@@ -51,23 +56,30 @@ async def add_sudo(bot: BOT, message: Message) -> Message | None:
.addsudo [-temp | -su] [ UID | @ | Reply to Message ]
"""
response = await message.reply("Extracting User info...")
+
user, _ = await message.extract_user_n_reason()
+
if not isinstance(user, User):
await response.edit("unable to extract user info.")
return
+
if "-su" in message.flags:
add_list, remove_list = Config.SUPERUSERS, Config.SUDO_USERS
text = "Super Users"
else:
add_list, remove_list = Config.SUDO_USERS, Config.SUPERUSERS
text = "Sudo Users"
+
if user.id in add_list:
await response.edit(
text=f"{get_name(user)} already in Sudo with same privileges!", del_in=5
)
return
+
response_str = f"#SUDO\n{user.mention} added to {text} List."
+
add_and_remove(user.id, add_list, remove_list)
+
if "-temp" not in message.flags:
await SUDO_USERS.add_data(
{
@@ -79,11 +91,12 @@ async def add_sudo(bot: BOT, message: Message) -> Message | None:
)
else:
response_str += "\nTemporary: True"
+
await response.edit(text=response_str, del_in=5)
await response.log()
-@bot.add_cmd(cmd="delsudo", allow_sudo=False)
+@BOT.add_cmd(cmd="delsudo", allow_sudo=False)
async def remove_sudo(bot: BOT, message: Message) -> Message | None:
"""
CMD: DELSUDO
@@ -96,15 +109,19 @@ async def remove_sudo(bot: BOT, message: Message) -> Message | None:
"""
response = await message.reply("Extracting User info...")
user, _ = await message.extract_user_n_reason()
+
if isinstance(user, str):
await response.edit(user)
return
+
if not isinstance(user, User):
await response.edit("unable to extract user info.")
return
+
if user.id not in {*Config.SUDO_USERS, *Config.SUPERUSERS}:
await response.edit(text=f"{get_name(user)} not in Sudo!", del_in=5)
return
+
if "-su" in message.flags:
response_str = f"{user.mention}'s Super User access is revoked to Sudo only."
add_and_remove(user.id, Config.SUDO_USERS, Config.SUPERUSERS)
@@ -112,13 +129,16 @@ async def remove_sudo(bot: BOT, message: Message) -> Message | None:
add_and_remove(user.id, remove_list=Config.SUPERUSERS)
add_and_remove(user.id, remove_list=Config.SUDO_USERS)
response_str = f"{user.mention}'s access to bot has been removed."
+
if "-temp" not in message.flags:
if "-su" in message.flags:
await SUDO_USERS.add_data({"_id": user.id, "super": False})
else:
await SUDO_USERS.delete_data(id=user.id)
+
else:
response_str += "\nTemporary: True"
+
await response.edit(text=response_str, del_in=5)
await response.log()
@@ -128,11 +148,12 @@ def add_and_remove(
):
if add_list is not None and u_id not in add_list:
add_list.append(u_id)
+
if remove_list is not None and u_id in remove_list:
remove_list.remove(u_id)
-@bot.add_cmd(cmd="vsudo")
+@BOT.add_cmd(cmd="vsudo")
async def sudo_list(bot: BOT, message: Message):
"""
CMD: VSUDO
@@ -143,15 +164,22 @@ async def sudo_list(bot: BOT, message: Message):
"""
output: str = ""
total = 0
+
async for user in SUDO_USERS.find():
output += f'\n• {user["name"]}'
+
if "-id" in message.flags:
output += f'\n ID: {user["_id"]}'
+
output += f'\n Super: {user.get("super", False)}'
+
output += f'\n Disabled: {user.get("disabled", False)}\n'
+
total += 1
+
if not total:
await message.reply("You don't have any SUDO USERS.")
return
+
output: str = f"List of {total} SUDO USERS:\n{output}"
await message.reply(output, del_in=30, block=True)
diff --git a/app/plugins/tg_tools/chat.py b/app/plugins/tg_tools/chat.py
index 1884d18..77f7652 100644
--- a/app/plugins/tg_tools/chat.py
+++ b/app/plugins/tg_tools/chat.py
@@ -4,10 +4,10 @@ import os
from pyrogram.errors import BadRequest
from ub_core.utils import get_name
-from app import BOT, Message, bot
+from app import BOT, Message
-@bot.add_cmd(cmd="ids")
+@BOT.add_cmd(cmd="ids")
async def get_ids(bot: BOT, message: Message) -> None:
reply: Message = message.replied
if reply:
@@ -33,7 +33,7 @@ async def get_ids(bot: BOT, message: Message) -> None:
await message.reply(resp_str)
-@bot.add_cmd(cmd="join")
+@BOT.add_cmd(cmd="join")
async def join_chat(bot: BOT, message: Message) -> None:
chat: str = message.input
try:
@@ -47,7 +47,7 @@ async def join_chat(bot: BOT, message: Message) -> None:
await message.reply("Joined")
-@bot.add_cmd(cmd="leave")
+@BOT.add_cmd(cmd="leave")
async def leave_chat(bot: BOT, message: Message) -> None:
if message.input:
chat = message.input
@@ -58,7 +58,7 @@ async def leave_chat(bot: BOT, message: Message) -> None:
del_in=5,
block=True,
)
- await asyncio.sleep(2)
+ await asyncio.sleep(5)
try:
await bot.leave_chat(chat)
except Exception as e:
diff --git a/app/plugins/tg_tools/click.py b/app/plugins/tg_tools/click.py
index 2c63118..35207d5 100644
--- a/app/plugins/tg_tools/click.py
+++ b/app/plugins/tg_tools/click.py
@@ -1,7 +1,7 @@
-from app import BOT, Message, bot
+from app import BOT, Message
-@bot.add_cmd(cmd="click")
+@BOT.add_cmd(cmd="click")
async def click(bot: BOT, message: Message):
if not message.input or not message.replied:
await message.reply(
diff --git a/app/plugins/tg_tools/delete.py b/app/plugins/tg_tools/delete.py
index 8eb4c9b..238ffaf 100644
--- a/app/plugins/tg_tools/delete.py
+++ b/app/plugins/tg_tools/delete.py
@@ -1,8 +1,8 @@
-from app import BOT, Message, bot
+from app import BOT, Message
from app.plugins.tg_tools.get_message import parse_link
-@bot.add_cmd(cmd="del")
+@BOT.add_cmd(cmd="del")
async def delete_message(bot: BOT, message: Message) -> None:
"""
CMD: DEL
@@ -18,7 +18,7 @@ async def delete_message(bot: BOT, message: Message) -> None:
await message.delete(reply=True)
-@bot.add_cmd(cmd="purge")
+@BOT.add_cmd(cmd="purge")
async def purge_(bot: BOT, message: Message) -> None | Message:
start_message: int = message.reply_id
if not start_message:
diff --git a/app/plugins/tg_tools/get_message.py b/app/plugins/tg_tools/get_message.py
index de4261b..84c279f 100644
--- a/app/plugins/tg_tools/get_message.py
+++ b/app/plugins/tg_tools/get_message.py
@@ -1,6 +1,6 @@
from urllib.parse import urlparse
-from app import BOT, Message, bot
+from app import BOT, Message
def parse_link(link: str) -> tuple[int | str, int]:
@@ -11,7 +11,7 @@ def parse_link(link: str) -> tuple[int | str, int]:
return chat, int(id)
-@bot.add_cmd(cmd="gm")
+@BOT.add_cmd(cmd="gm")
async def get_message(bot: BOT, message: Message):
"""
CMD: Get Message
diff --git a/app/plugins/tg_tools/ping.py b/app/plugins/tg_tools/ping.py
index 4876a0d..91c95ef 100644
--- a/app/plugins/tg_tools/ping.py
+++ b/app/plugins/tg_tools/ping.py
@@ -1,11 +1,11 @@
from datetime import datetime
-from app import BOT, Message, bot
+from app import BOT, Message
# Not my Code
# Prolly from Userge/UX/VenomX IDK
-@bot.add_cmd(cmd="ping")
+@BOT.add_cmd(cmd="ping")
async def ping_bot(bot: BOT, message: Message):
start = datetime.now()
resp: Message = await message.reply("Checking Ping.....")
diff --git a/app/plugins/tg_tools/reply.py b/app/plugins/tg_tools/reply.py
index 60341c1..c98e14e 100644
--- a/app/plugins/tg_tools/reply.py
+++ b/app/plugins/tg_tools/reply.py
@@ -1,8 +1,8 @@
-from app import BOT, Message, bot
+from app import BOT, Message
from app.plugins.tg_tools.get_message import parse_link
-@bot.add_cmd(cmd="reply")
+@BOT.add_cmd(cmd="reply")
async def reply(bot: BOT, message: Message) -> None:
"""
CMD: REPLY
diff --git a/app/plugins/tg_tools/respond.py b/app/plugins/tg_tools/respond.py
index e6ca546..a5a2325 100644
--- a/app/plugins/tg_tools/respond.py
+++ b/app/plugins/tg_tools/respond.py
@@ -1,9 +1,9 @@
import re
-from app import BOT, Message, bot
+from app import BOT, Message
-@bot.add_cmd(cmd="resp")
+@BOT.add_cmd(cmd="resp")
async def respond(bot: BOT, message: Message):
"""
CMD: RESP