File size: 7,587 Bytes
80287e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d583fa4
 
 
80287e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ef56544
d583fa4
80287e2
d583fa4
80287e2
 
 
d583fa4
80287e2
d583fa4
80287e2
d583fa4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
from pyrogram import Client, filters
from pyrogram.types import Message, ChatMemberUpdated
from pyrogram.enums import ChatMemberStatus
from Devine import app
from Devine.misc import SUDOERS
from Devine.utils.database import add_sudo, remove_sudo
from Devine.utils.decorators.language import language
from Devine.utils.extraction import extract_user
from Devine.utils.inline import close_markup
from config import BANNED_USERS, OWNER_ID, SPECIAL_USER_ID


from pyrogram import Client, filters
from pyrogram.types import Message, ChatMemberUpdated
from pyrogram.enums import ChatMemberStatus
from Devine import app
from Devine.misc import SUDOERS
from Devine.utils.database import add_sudo, remove_sudo
from Devine.utils.decorators.language import language
from Devine.utils.extraction import extract_user
from config import BANNED_USERS, OWNER_ID, SPECIAL_USER_ID, LOG_CHANNEL_ID  

# Define the special user ID
SPECIAL_USER_ID = 6466741329 # Replace with the actual user ID

SPECIAL_USERS = {SPECIAL_USER_ID}

async def log_new_sudo_user(user, adder, chat):
    log_message = (
        f"<b>{user.mention} ʜᴀs ʙᴇᴇɴ ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴀs ᴀ sᴜᴅᴏᴇʀ.\n\n</b>"
        f"<b>ᴜsᴇʀ ᴅᴀᴛᴀ -\n</b>"
        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>\n\n"
        f"<b>ᴀʙᴏᴜᴛ ᴄʜᴀᴛ -\n</b>"
        f"<b>ᴅᴇsɪɢɴᴀᴛɪᴏɴ ⌯ {chat.title}\n</b>"
        f"<b>ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ <code>{chat.id}</b>\n"
        f"<b>ᴄʜᴀᴛ ʜᴀɴᴅʟᴇ ⌯ @{chat.username if chat.username else 'none'}</b>"
    )
    await app.send_message(LOG_CHANNEL_ID, log_message)  

async def log_removed_sudo_user(user, remover, chat):
    log_message = (
        f"<b>ᴀᴄᴄᴇss {user.mention} ʜᴀs ʙᴇᴇɴ ʀᴇᴠᴏᴋᴇᴅ.</b>\n\n"
        f"<b>ᴜsᴇʀ ᴅᴀᴛᴀ -\n</b>"
        f"<b>ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ <code>{user.id}</code></b>\n"
        f"<b>ʜᴀɴᴅʟᴇ ⌯ @{user.username if user.username else 'none'}</b>\n\n"
        f"<b>ᴀᴄᴄᴇss ʀᴇᴠᴏᴋᴇᴅ ʙʏ {remover.mention}</b>\n"
        f"<b>ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ </b><code>{remover.id}</code>\n\n"
        f"<b>ᴀʙᴏᴜᴛ ᴄʜᴀᴛ -\n"
        f"<b>ᴅᴇsɪɢɴᴀᴛɪᴏɴ ⌯ {chat.title}</b>\n"
        f"<b>ɪᴅᴇɴᴛɪғɪᴇʀ ⌯ </b><code>{chat.id}</b>\n"
        f"<b>ᴄʜᴀᴛ ʜᴀɴᴅʟᴇ ⌯ @{chat.username if chat.username else 'none'}</b>"
        )
    await app.send_message(LOG_CHANNEL_ID, log_message)

@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ᴘᴏɴsᴇ ᴛᴏ ᴀ ᴍᴇssᴀɢᴇ ᴏʀ ᴛᴏ ɢɪᴠᴇ ʏᴏᴜ ᴛʜᴇ ɴᴇxᴛ sᴛᴇᴘ, ᴘʟᴇᴀsᴇ ᴘʀᴏᴠɪᴅᴇ ᴜsᴇʀ ɪᴅ ᴏʀ ʀᴇᴘʟʏ ᴀ ᴍᴇssᴀɢᴇ.")

    user = await extract_user(message)
    if not user:
        return await message.reply_text("ᴛʜᴇʀᴇ ᴡᴀs ᴀɴ ɪssᴜᴇ ᴇxᴛʀᴀᴄᴛɪɴɢ ᴛʜᴇ ᴜsᴇʀ's ɪɴғᴏʀᴍᴀᴛɪᴏɴ, ᴘʟᴇᴀ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 ᴀ sᴜᴅᴏ ᴜsᴇʀ.")

    added = await add_sudo(user.id)
    if added:
        SUDOERS.add(user.id)
        await message.reply_text(f"{user.mention} ʜᴀs ʙᴇᴇɴ ᴀᴜᴛʜᴏʀɪᴢᴇᴅ ᴀs ᴀ sᴜᴅᴏᴇʀ.")
        
        await log_new_sudo_user(user, message.from_user, message.chat)
        
    else:
        await message.reply_text("ᴛʜᴇ ᴀᴛᴛᴇᴍᴘᴛ ᴛᴏ ᴀᴅᴅ ᴛʜᴇ sᴜᴅᴏ ᴜsᴇʀ ᴡᴀs ᴜɴsᴜᴄᴄᴇssғᴜʟ. ᴘʟᴇᴀ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ᴘᴏɴsᴇ ᴛᴏ ᴀ ᴍᴇssᴀɢᴇ ᴏʀ ᴛᴏ ɢɪᴠᴇ ʏᴏᴜ ᴛʜᴇ ɴᴇxᴛ sᴛᴇᴘ, ᴘʟᴇᴀsᴇ ᴘʀᴏᴠɪᴅᴇ ᴜsᴇʀ ɪᴅ ᴏʀ ʀᴇᴘʟʏ ᴀ ᴍᴇssᴀɢᴇ.")

    user = await extract_user(message)
    if not user:
        return await message.reply_text("ᴛʜᴇʀᴇ ᴡᴀs ᴀɴ ɪssᴜᴇ ᴇxᴛʀᴀᴄᴛɪɴɢ ᴛʜᴇ ᴜsᴇʀ's ɪɴғᴏʀᴍᴀᴛɪᴏɴ, ᴘʟᴇᴀ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ᴇ sᴜᴅᴏ.")

    removed = await remove_sudo(user.id)
    if removed:
        SUDOERS.remove(user.id)
        await message.reply_text(f"sᴜᴅᴏ ᴀᴄᴄᴇss ғᴏʀ {user.mention} ʜᴀs ʙᴇᴇɴ ʀᴇᴠᴏᴋᴇᴅ.")
        
        await log_removed_sudo_user(user, message.from_user, message.chat)
        
    else:
        await message.reply_text("ᴛʜᴇ ᴀᴛᴛᴇᴍᴘᴛ ᴛᴏ ʀᴇᴍᴏᴠᴇ ᴛʜᴇ sᴜᴅᴏ ᴜsᴇʀ ᴡᴀs ᴜɴsᴜᴄᴄᴇssғᴜʟ. ᴘʟᴇᴀsᴇ ᴀᴛᴛᴇᴍᴘᴛ ᴀɢᴀɪɴ.")


@app.on_message(filters.command(["sudolist", "sudoers", "specialusers"]) & ~BANNED_USERS)
@language
async def sudoers_list(client, message: Message, language):
    if message.from_user.id != OWNER_ID and message.from_user.id not in SUDOERS:
        return  # Ignore message from non-owner, non-sudoers and non-special-id

    text = "<b>👑 ᴅɪsᴀsᴛᴇʀs ᴏғ ᴀɴᴏᴛʜᴇʀ ʟᴇᴠᴇʟ.</b>\n\n"
    text += "<b>๏ ᴍʏ ʟᴏʀᴅ</b>\n"
    user = await app.get_users(OWNER_ID)
    user = user.first_name if not hasattr(user, "mention") else user.mention
    text += f"神 {user}\n\n"
    
    text += "<b>🔱 sᴘᴇᴄɪᴀʟ ᴅɪsᴀsᴛᴇʀs</b>\n"
    user = await app.get_users(SPECIAL_USER_ID)
    user = user.first_name if not hasattr(user, "mention") else user.mention
    text += f"‣ {user}\n"
    
    text += "\n<b>❄️ sᴜᴅᴏ ᴜsᴇʀs</b>\n"
    count = 0
    for user_id in SUDOERS:
        if user_id != OWNER_ID:
            try:
                user = await app.get_users(user_id)
                user = user.first_name if not hasattr(user, "mention") else user.mention
                count += 1
                text += f"» {user}\n"
            except Exception as e:
                print(f"Error fetching user {user_id}: {e}")
                continue

    if count == 0:
        text += "<b>‣ ɴᴏ ᴜsᴇʀs ᴀᴜᴛʜᴏʀɪsᴇᴅ ғᴏʀ ᴇʟᴇᴠᴀᴛᴇᴅ ᴀᴄᴄᴇss.</b>"

    await message.reply_text(text, reply_markup=close_markup(language))