Fixed permissions check
This commit is contained in:
@@ -1,12 +1,16 @@
|
||||
from io import BytesIO
|
||||
from pathlib import Path
|
||||
from random import randint, sample
|
||||
from typing import List
|
||||
from typing import List, Union
|
||||
|
||||
from huepaper import generate
|
||||
from PIL import Image
|
||||
from pyrogram.enums.chat_member_status import ChatMemberStatus
|
||||
from pyrogram.types import CallbackQuery, Message
|
||||
|
||||
from classes.captcha import Captcha
|
||||
from classes.pyroclient import PyroClient
|
||||
from classes.pyrogroup import PyroGroup
|
||||
|
||||
|
||||
def get_captcha_image(emojis: List[str]) -> Captcha:
|
||||
@@ -49,3 +53,40 @@ def get_captcha_image(emojis: List[str]) -> Captcha:
|
||||
base_img.save(output, format="jpeg")
|
||||
|
||||
return Captcha(output, emojis_all, emojis_correct)
|
||||
|
||||
|
||||
async def is_permitted(
|
||||
app: PyroClient,
|
||||
group: PyroGroup,
|
||||
message: Union[Message, None] = None,
|
||||
callback: Union[CallbackQuery, None] = None,
|
||||
) -> bool:
|
||||
"""Check if User is an admin or a creator of a group. Alternatively, if the User is actually a group itself.
|
||||
|
||||
### Args:
|
||||
* app (`PyroClient`): Pyrogram Client
|
||||
* group (`PyroGroup`): Group
|
||||
* message (`Union[Message, None]`, *optional*): Message if the request originates from a command. Defaults to `None`.
|
||||
* callback (`Union[CallbackQuery, None]`, *optional*): CallbackQuery if the request originates from a callback. Defaults to `None`.
|
||||
|
||||
### Returns:
|
||||
* `bool`: `True` if permitted and `False` if not. Also `False` if no message or callback provided.
|
||||
"""
|
||||
if message is not None:
|
||||
return (
|
||||
message.sender_chat is not None and message.sender_chat.id == group.id
|
||||
) or (
|
||||
message.from_user is not None
|
||||
and (await app.get_chat_member(group.id, message.from_user.id)).status
|
||||
) in [
|
||||
ChatMemberStatus.ADMINISTRATOR,
|
||||
ChatMemberStatus.OWNER,
|
||||
]
|
||||
|
||||
if callback is not None:
|
||||
return (await app.get_chat_member(group.id, callback.from_user.id)).status in [
|
||||
ChatMemberStatus.ADMINISTRATOR,
|
||||
ChatMemberStatus.OWNER,
|
||||
]
|
||||
|
||||
return False
|
||||
|
Reference in New Issue
Block a user