File size: 8,866 Bytes
80287e2 |
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 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
from functools import wraps
from pyrogram import Client
from pyrogram.types import Message
from pyrogram.enums import ChatMemberStatus, ChatType
from Devine import app
from config import OWNER_ID, BOT_USERNAME
from Devine.misc import SUDOERS
COMMANDERS = [ChatMemberStatus.ADMINISTRATOR, ChatMemberStatus.OWNER]
from typing import Tuple
async def user_has_permission(chat_title : str, chat_id: int, user_id: int, permission: str,bot=True) -> tuple[bool, str]:
try:
if user_id in SUDORES:
have_permission = True
else:
chat_member = await app.get_chat_member(chat_id, user_id)
chat_permissions = chat_member.privileges
if permission == "can_delete_messages":
have_permission = chat_permissions.can_delete_messages
elif permission == "can_manage_chat":
have_permission = chat_permissions.can_manage_chat
elif permission == "can_manage_video_chats":
have_permission = chat_permissions.can_manage_video_chats
elif permission == "can_restrict_members":
have_permission = chat_permissions.can_restrict_members
elif permission == "can_promote_members":
have_permission = chat_permissions.can_promote_members
elif permission == "can_change_info":
have_permission = chat_permissions.can_change_info
elif permission == "can_post_messages":
have_permission = chat_permissions.can_post_messages
elif permission == "can_edit_messages":
have_permission = chat_permissions.can_edit_messages
elif permission == "can_invite_users":
have_permission = chat_permissions.can_invite_users
elif permission == "can_pin_messages":
have_permission = chat_permissions.can_pin_messages
else:
have_permission = False
except Exception as e:
print(e)
have_permission = False
if not have_permission:
if bot:
txt = f"I Don't Have The Following Right:\n**[{permission}]**\nIn **{chat_title}**."
else:
txt = f"You Don't Have The Following Right:\n{permission}\nIn {chat_title}. So You Cant Perform This Action"
return have_permission, txt
else:
return have_permission, None
def bot_admin(func):
@wraps(func)
async def is_bot_admin(app : Client, message : Message,*args,**kwargs):
chat_type = message.chat.type
if chat_type == ChatType.PRIVATE:
return await message.reply("Use This Command In Groups")
BOT = await app.get_chat_member(message.chat.id,BOT_USERNAME)
if BOT.status != ChatMemberStatus.ADMINISTRATOR:
await message.reply_text(f"I Am Not Admin In **{message.chat.title}**")
return
return await func(app,message,*args,**kwargs)
return is_bot_admin
def bot_can_ban(func):
@wraps(func)
async def can_restrict(app : Client, message : Message,*args,**kwargs):
BOT = await app.get_chat_member(message.chat.id,BOT_USERNAME)
if not BOT.privileges.can_restrict_members:
await message.reply_text(f"I Don't Have Rights To Restrict The User In **{message.chat.title}**.")
return
return await func(app,message,*args,**kwargs)
return can_restrict
def bot_can_change_info(func):
@wraps(func)
async def can_change_info(app : Client, message : Message,*args,**kwargs):
BOT = await app.get_chat_member(message.chat.id,BOT_USERNAME)
if not BOT.privileges.can_change_info:
await message.reply_text(f"I Don't Have Rights To Change Info In **{message.chat.title}**.")
return
return await func(app,message,*args,**kwargs)
return can_change_info
def bot_can_promote(func):
@wraps(func)
async def can_promote(app : Client, message : Message,*args,**kwargs):
BOT = await app.get_chat_member(message.chat.id,BOT_USERNAME)
if not BOT.privileges.can_promote_members:
await message.reply_text(f"I Don't Have Rights To Promote Users In **{message.chat.title}**.")
return
return await func(app,message,*args,**kwargs)
return can_promote
def bot_can_pin(func):
@wraps(func)
async def can_pin(app : Client, message : Message,*args,**kwargs):
BOT = await app.get_chat_member(message.chat.id,BOT_USERNAME)
if not BOT.privileges.can_pin_messages:
await message.reply_text(f"I Don't Have Rights To Pin Messages In **{message.chat.title}**.")
return
return await func(app,message,*args,**kwargs)
return can_pin
def bot_can_del(func):
@wraps(func)
async def can_delete(app : Client, message : Message,*args,**kwargs):
BOT = await app.get_chat_member(message.chat.id,BOT_USERNAME)
if not BOT.privileges.can_delete_messages:
await message.reply_text(f"I Don't Have Rights To Delete Messages In **{message.chat.title}**.")
return
return await func(app,message,*args,**kwargs)
return can_delete
def user_admin(mystic):
@wraps(mystic)
async def wrapper(app : Client, message : Message,*args,**kwargs):
chat_type = message.chat.type
if chat_type == ChatType.PRIVATE:
return await message.reply("Use This Command In Groups Only")
if message.sender_chat:
if message.sender_chat.id == message.chat.id:
return await message.reply("You Are Anonymous Admin Please Use User ID")
else:
return await message.reply_text("You Are Not Admin")
else:
user_id = message.from_user.id
chat_id = message.chat.id
user = await app.get_chat_member(chat_id,user_id)
if (user.status not in COMMANDERS) and user_id not in SUDORES:
return await message.reply_text("You Are Not Admin")
return await mystic(app,message,*args,**kwargs)
return wrapper
def user_can_ban(mystic):
@wraps(mystic)
async def wrapper(app : Client, message : Message,*args,**kwargs):
user_id = message.from_user.id
chat_id = message.chat.id
user = await app.get_chat_member(chat_id,user_id)
if (user.privileges and not user.privileges.can_restrict_members) and user_id not in SUDORES:
return await message.reply_text("You Dont Have Right To Restrict Users.")
return await mystic(app,message,*args,**kwargs)
return wrapper
def user_can_del(mystic):
@wraps(mystic)
async def wrapper(app : Client, message : Message,*args,**kwargs):
user_id = message.from_user.id
chat_id = message.chat.id
user = await app.get_chat_member(chat_id,user_id)
if (user.status in COMMANDERS and not user.privileges.can_delete_messages) and user_id not in SUDORES:
return await message.reply_text("You Dont Have Right To Delete Messages")
return await mystic(app,message,*args,**kwargs)
return wrapper
def user_can_change_info(mystic):
@wraps(mystic)
async def wrapper(app : Client, message : Message,*args,**kwargs):
user_id = message.from_user.id
chat_id = message.chat.id
user = await app.get_chat_member(chat_id,user_id)
if (user.status in COMMANDERS and not user.privileges.can_change_info) and user_id not in SUDORES:
return await message.reply_text("You Dont Have Right To Change Info Of This Group.")
return await mystic(app,message,*args,**kwargs)
return wrapper
def user_can_promote(mystic):
@wraps(mystic)
async def wrapper(app : Client, message : Message,*args,**kwargs):
user_id = message.from_user.id
chat_id = message.chat.id
user = await app.get_chat_member(chat_id,user_id)
if (user.status in COMMANDERS and not user.privileges.can_promote_members) and user_id not in SUDORES:
return await message.reply_text("You Dont Have Right To Promote Users Of This Group.")
return await mystic(app,message,*args,**kwargs)
return wrapper
|