Spaces:
Runtime error
Runtime error
| 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): | |
| 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): | |
| 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): | |
| 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): | |
| 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): | |
| 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): | |
| 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): | |
| 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): | |
| 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): | |
| 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): | |
| 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): | |
| 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 | |