|
from pyrogram import Client, filters |
|
from pyrogram.types import Message |
|
from pyrogram.enums import ChatMemberStatus |
|
from DragMusic import app |
|
from DragMusic.misc import SUDOERS |
|
from DragMusic.utils.database import add_sudo, remove_sudo |
|
from DragMusic.utils.decorators.language import language |
|
from DragMusic.utils.extraction import extract_user |
|
from config import BANNED_USERS, OWNER_ID, SPECIAL_USER_ID, LOGGER_ID |
|
|
|
SPECIAL_USERS = {SPECIAL_USER_ID} |
|
LOG_TOPIC_ID = 11138 |
|
|
|
|
|
async def log_new_sudo_user(user, adder, chat): |
|
log_message = ( |
|
f"<b>{user.mention} ʜᴀs ʙᴇᴇɴ ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴀs ᴀ sᴜᴅᴏᴇʀ.\n\n</b>" |
|
f"<b>ᴜsᴇʀ ᴅᴀᴛᴀ -</b>\n" |
|
f"<b>ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ <code>{user.id}</code></b>\n" |
|
f"<b>ʜᴀɴᴅʟᴇ ⌯ @{user.username if user.username else 'none'}</b>\n\n" |
|
f"<b>ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ʙʏ {adder.mention}</b>\n" |
|
f"<b>ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ <code>{adder.id}</code></b>\n\n" |
|
f"<b>ᴀʙᴏᴜᴛ ᴄʜᴀᴛ -</b>\n" |
|
f"<b>ᴅᴇsɪɢɴᴀᴛɪᴏɴ ⌯ {chat.title}</b>\n" |
|
f"<b>ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ <code>{chat.id}</code></b>\n" |
|
f"<b>ᴄʜᴀᴛ ʜᴀɴᴅʟᴇ ⌯ @{chat.username if chat.username else 'none'}</b>" |
|
) |
|
await app.send_message(LOGGER_ID, log_message, message_thread_id=LOG_TOPIC_ID) |
|
|
|
|
|
async def log_removed_sudo_user(user, remover, chat): |
|
log_message = ( |
|
f"<b>ᴀᴄᴄᴇss {user.mention} ʜᴀs ʙᴇᴇɴ ʀᴇᴠᴏᴋᴇᴅ.</b>\n\n" |
|
f"<b>ᴜsᴇʀ ᴅᴀᴛᴀ -</b>\n" |
|
f"<b>ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ <code>{user.id}</code></b>\n" |
|
f"<b>ʜᴀɴᴅʟᴇ ⌯ @{user.username if user.username else 'none'}</b>\n\n" |
|
f"<b>ʀᴇᴠᴏᴋᴇᴅ ʙʏ {remover.mention}</b>\n" |
|
f"<b>ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ <code>{remover.id}</code></b>\n\n" |
|
f"<b>ᴀʙᴏᴜᴛ ᴄʜᴀᴛ -</b>\n" |
|
f"<b>ᴅᴇsɪɢɴᴀᴛɪᴏɴ ⌯ {chat.title}</b>\n" |
|
f"<b>ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ <code>{chat.id}</code></b>\n" |
|
f"<b>ᴄʜᴀᴛ ʜᴀɴᴅʟᴇ ⌯ @{chat.username if chat.username else 'none'}</b>" |
|
) |
|
await app.send_message(LOGGER_ID, log_message, message_thread_id=LOG_TOPIC_ID) |
|
|
|
|
|
@app.on_message(filters.command(["addsudo"]) & filters.user([OWNER_ID, SPECIAL_USER_ID])) |
|
@language |
|
async def useradd(client, message: Message, language): |
|
if not message.reply_to_message and len(message.command) != 2: |
|
return await message.reply_text("ᴘʟᴇᴀsᴇ ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴜsᴇʀ ᴏʀ ᴘʀᴏᴠɪᴅᴇ ᴜsᴇʀ ɪᴅ.") |
|
|
|
user = await extract_user(message) |
|
if not user: |
|
return await message.reply_text("ᴄᴏᴜʟᴅ ɴᴏᴛ ᴇxᴛʀᴀᴄᴛ ᴛʜᴇ ᴜsᴇʀ.") |
|
|
|
if user.id == OWNER_ID: |
|
return await message.reply_text("ʜᴇ ɪs ᴍʏ ᴏᴡɴᴇʀ!") |
|
|
|
if user.id in SUDOERS: |
|
return await message.reply_text(f"{user.mention} ɪs ᴀʟʀᴇᴀᴅʏ ᴀ sᴜᴅᴏᴇʀ.") |
|
|
|
added = await add_sudo(user.id) |
|
if added: |
|
SUDOERS.add(user.id) |
|
await message.reply_text(f"{user.mention} ʜᴀs ʙᴇᴇɴ ɢʀᴀɴᴛᴇᴅ sᴜᴅᴏ ᴀᴄᴄᴇss.") |
|
await log_new_sudo_user(user, message.from_user, message.chat) |
|
else: |
|
await message.reply_text("ғᴀɪʟᴇᴅ ᴛᴏ ᴀᴅᴅ sᴜᴅᴏ ᴜsᴇʀ.") |
|
|
|
|
|
@app.on_message(filters.command(["delsudo", "rmsudo", "removerand", "removesudo"]) & filters.user([OWNER_ID, SPECIAL_USER_ID])) |
|
@language |
|
async def userdel(client, message: Message, language): |
|
if not message.reply_to_message and len(message.command) != 2: |
|
return await message.reply_text("ᴘʟᴇᴀsᴇ ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴜsᴇʀ ᴏʀ ᴘʀᴏᴠɪᴅᴇ ᴜsᴇʀ ɪᴅ.") |
|
|
|
user = await extract_user(message) |
|
if not user: |
|
return await message.reply_text("ᴄᴏᴜʟᴅ ɴᴏᴛ ᴇxᴛʀᴀᴄᴛ ᴛʜᴇ ᴜsᴇʀ.") |
|
|
|
if user.id == OWNER_ID: |
|
return await message.reply_text("ᴛʜᴀᴛ's ᴍʏ ᴄʀᴇᴀᴛᴏʀ!") |
|
|
|
if user.id not in SUDOERS: |
|
return await message.reply_text(f"{user.mention} ɪs ɴᴏᴛ ᴀ sᴜᴅᴏᴇʀ.") |
|
|
|
removed = await remove_sudo(user.id) |
|
if removed: |
|
SUDOERS.remove(user.id) |
|
await message.reply_text(f"{user.mention}'s sᴜᴅᴏ ᴀᴄᴄᴇss ʜᴀs ʙᴇᴇɴ ʀᴇᴠᴏᴋᴇᴅ.") |
|
await log_removed_sudo_user(user, message.from_user, message.chat) |
|
else: |
|
await message.reply_text("ғᴀɪʟᴇᴅ ᴛᴏ ʀᴇᴍᴏᴠᴇ sᴜᴅᴏ ᴜsᴇʀ.") |
|
|
|
|
|
@app.on_message(filters.command(["sudolist", "sudoers", "specialusers"]) & ~BANNED_USERS) |
|
async def sudoers_list(client, message: Message): |
|
if message.from_user.id != OWNER_ID and message.from_user.id not in SUDOERS: |
|
return await message.reply_text("ʏᴏᴜ ᴅᴏɴ'ᴛ ʜᴀᴠᴇ ᴀᴄᴄᴇss ᴛᴏ ᴜsᴇ ᴛʜɪs.\nᴠɪsɪᴛ @dragbotsupport") |
|
|
|
text = "<b>👑 ᴅɪsᴀsᴛᴇʀs ᴏғ ᴀɴᴏᴛʜᴇʀ ʟᴇᴠᴇʟ.</b>\n\n" |
|
text += "<b>๏ ᴍʏ ʟᴏʀᴅ</b>\n" |
|
text += f"神 <a href='tg://user?id={OWNER_ID}'>My Owner</a>\n\n" |
|
|
|
text += "<b>❄️ sᴜᴅᴏᴇʀs</b>\n" |
|
if not SUDOERS: |
|
text += "ᴛʜᴇʀᴇ ᴀʀᴇ ɴᴏ sᴜᴅᴏᴇʀs ʀɪɢʜᴛ ɴᴏᴡ." |
|
else: |
|
for sudo_id in SUDOERS: |
|
if sudo_id == OWNER_ID: |
|
continue |
|
user = await app.get_users(sudo_id) |
|
name = user.mention if hasattr(user, "mention") else user.first_name |
|
text += f"» {name}\n" |
|
|
|
await message.reply_text(text) |
|
|