File size: 5,601 Bytes
525b4ad
a8e9b84
525b4ad
60d556f
 
 
 
 
bd277e1
525b4ad
bd277e1
525b4ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a8e9b84
525b4ad
 
 
 
 
 
 
 
 
 
 
 
 
 
a8e9b84
525b4ad
 
a8e9b84
525b4ad
 
 
 
a8e9b84
525b4ad
 
 
 
 
 
a8e9b84
525b4ad
 
a8e9b84
 
 
525b4ad
 
a8e9b84
525b4ad
a8e9b84
 
525b4ad
a8e9b84
525b4ad
 
 
 
a8e9b84
525b4ad
 
 
 
 
 
a8e9b84
525b4ad
 
a8e9b84
 
 
525b4ad
 
a8e9b84
525b4ad
a8e9b84
 
525b4ad
 
 
 
 
 
 
 
 
 
 
 
a8e9b84
525b4ad
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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)