Pyrofork: add all_perms parameter to ChatPermissions

Signed-off-by: wulan17 <wulan17@nusantararom.org>
This commit is contained in:
wulan17 2023-10-12 23:31:55 +00:00
parent a37ca092d5
commit d93285b7ba
No known key found for this signature in database
GPG key ID: 318CD6CD3A6AC0A5
2 changed files with 123 additions and 19 deletions

View file

@ -65,6 +65,59 @@ class SetChatPermissions:
)
"""
if permissions.all_perms is not None:
send_audios=None
send_docs=None
send_games=None
send_gifs=None
send_inline=None
send_photos=None
send_plain=None
send_roundvideos=None
send_stickers=None
send_videos=None
send_voices=None
if permissions.all_perms:
send_messages=False
send_media=False
send_polls=False
embed_links=False
change_info=False
invite_users=False
pin_messages=False
manage_topics=False
send_inline=False
else:
send_messages=True
send_media=True
send_polls=True
embed_links=True
change_info=True
invite_users=True
pin_messages=True
manage_topics=True
send_inline=True
else:
send_messages=not permissions.can_send_messages if permissions.can_send_messages is not None else None
send_media=not permissions.can_send_media_messages if permissions.can_send_media_messages is not None else None
embed_links=not permissions.can_add_web_page_previews if permissions.can_add_web_page_previews is not None else not old_permissions.can_add_web_page_previews
send_polls=not permissions.can_send_polls if permissions.can_send_polls is not None else not old_permissions.can_send_polls
change_info=not permissions.can_change_info if permissions.can_change_info is not None else not old_permissions.can_change_info
invite_users=not permissions.can_invite_users if permissions.can_invite_users is not None else not old_permissions.can_invite_users
pin_messages=not permissions.can_pin_messages if permissions.can_pin_messages is not None else not old_permissions.can_pin_messages
manage_topics=not permissions.can_manage_topics if permissions.can_manage_topics is not None else not old_permissions.can_manage_topics
send_audios=not permissions.can_send_audios if permissions.can_send_audios is not None else not old_permissions.can_send_audios
send_docs=not permissions.can_send_docs if permissions.can_send_docs is not None else not old_permissions.can_send_docs
send_games=not permissions.can_send_games if permissions.can_send_games is not None else not old_permissions.can_send_games
send_gifs=not permissions.can_send_gifs if permissions.can_send_gifs is not None else not old_permissions.can_send_gifs
send_inline=not permissions.can_send_inline if permissions.can_send_inline is not None else not old_permissions.can_send_inline
send_photos=not permissions.can_send_photos if permissions.can_send_photos is not None else not old_permissions.can_send_photos
send_plain=not permissions.can_send_plain if permissions.can_send_plain is not None else not old_permissions.can_send_plain
send_roundvideos=not permissions.can_send_roundvideos if permissions.can_send_roundvideos is not None else not old_permissions.can_send_roundvideos
send_stickers=not permissions.can_send_stickers if permissions.can_send_stickers is not None else not old_permissions.can_send_stickers
send_videos=not permissions.can_send_videos if permissions.can_send_videos is not None else not old_permissions.can_send_videos
send_voices=not permissions.can_send_voices if permissions.can_send_voices is not None else not old_permissions.can_send_voices
old_permissions = (await self.get_chat(chat_id)).permissions
r = await self.invoke(
@ -72,25 +125,25 @@ class SetChatPermissions:
peer=await self.resolve_peer(chat_id),
banned_rights=raw.types.ChatBannedRights(
until_date=0,
send_messages=not permissions.can_send_messages if permissions.can_send_messages is not None else None,
send_media=not permissions.can_send_media_messages if permissions.can_send_media_messages is not None else None,
embed_links=not permissions.can_add_web_page_previews if permissions.can_add_web_page_previews is not None else not old_permissions.can_add_web_page_previews,
send_polls=not permissions.can_send_polls if permissions.can_send_polls is not None else not old_permissions.can_send_polls,
change_info=not permissions.can_change_info if permissions.can_change_info is not None else not old_permissions.can_change_info,
invite_users=not permissions.can_invite_users if permissions.can_invite_users is not None else not old_permissions.can_invite_users,
pin_messages=not permissions.can_pin_messages if permissions.can_pin_messages is not None else not old_permissions.can_pin_messages,
manage_topics=not permissions.can_manage_topics if permissions.can_manage_topics is not None else not old_permissions.can_manage_topics,
send_audios=not permissions.can_send_audios if permissions.can_send_audios is not None else not old_permissions.can_send_audios,
send_docs=not permissions.can_send_docs if permissions.can_send_docs is not None else not old_permissions.can_send_docs,
send_games=not permissions.can_send_games if permissions.can_send_games is not None else not old_permissions.can_send_games,
send_gifs=not permissions.can_send_gifs if permissions.can_send_gifs is not None else not old_permissions.can_send_gifs,
send_inline=not permissions.can_send_inline if permissions.can_send_inline is not None else not old_permissions.can_send_inline,
send_photos=not permissions.can_send_photos if permissions.can_send_photos is not None else not old_permissions.can_send_photos,
send_plain=not permissions.can_send_plain if permissions.can_send_plain is not None else not old_permissions.can_send_plain,
send_roundvideos=not permissions.can_send_roundvideos if permissions.can_send_roundvideos is not None else not old_permissions.can_send_roundvideos,
send_stickers=not permissions.can_send_stickers if permissions.can_send_stickers is not None else not old_permissions.can_send_stickers,
send_videos=not permissions.can_send_videos if permissions.can_send_videos is not None else not old_permissions.can_send_videos,
send_voices=not permissions.can_send_voices if permissions.can_send_voices is not None else not old_permissions.can_send_voices
send_messages=send_messages,
send_media=send_media,
embed_links=embed_links,
send_polls=send_polls,
change_info=change_info,
invite_users=invite_users,
pin_messages=pin_messages,
manage_topics=manage_topics,
send_audios=send_audios,
send_docs=send_docs,
send_games=send_games,
send_gifs=send_gifs,
send_inline=send_inline,
send_photos=send_photos,
send_plain=send_plain,
send_roundvideos=send_roundvideos,
send_stickers=send_stickers,
send_videos=send_videos,
send_voices=send_voices
)
)
)

View file

@ -25,6 +25,9 @@ class ChatPermissions(Object):
"""Describes actions that a non-administrator user is allowed to take in a chat.
Parameters:
all_perms (``bool``, *optional*):
True, if all permissions are allowed.
can_send_messages (``bool``, *optional*):
True, if the user is allowed to send text messages, contacts, locations and venues.
@ -92,6 +95,7 @@ class ChatPermissions(Object):
def __init__(
self,
*,
all_perms: bool = None,
can_send_messages: bool = None, # Text, contacts, locations and venues
can_send_media_messages: bool = None, # Audio files, documents, photos, videos, video notes and voice notes
can_send_polls: bool = None,
@ -114,6 +118,7 @@ class ChatPermissions(Object):
):
super().__init__(None)
self.all_perms = all_perms
self.can_send_messages = can_send_messages
self.can_send_media_messages = can_send_media_messages
self.can_send_polls = can_send_polls
@ -137,7 +142,53 @@ class ChatPermissions(Object):
@staticmethod
def _parse(denied_permissions: "raw.base.ChatBannedRights") -> "ChatPermissions":
if isinstance(denied_permissions, raw.types.ChatBannedRights):
all_permissions = None
all_params = [
denied_permissions.send_messages,
denied_permissions.send_media,
denied_permissions.embed_links,
denied_permissions.send_polls,
denied_permissions.change_info,
denied_permissions.invite_users,
denied_permissions.pin_messages,
denied_permissions.send_audios,
denied_permissions.send_docs,
denied_permissions.send_games,
denied_permissions.send_gifs,
denied_permissions.send_inline,
denied_permissions.send_photos,
denied_permissions.send_plain,
denied_permissions.send_roundvideos,
denied_permissions.send_stickers,
denied_permissions.send_videos,
denied_permissions.send_voices
]
all_params_not = [
not denied_permissions.send_messages,
not denied_permissions.send_media,
not denied_permissions.embed_links,
not denied_permissions.send_polls,
not denied_permissions.change_info,
not denied_permissions.invite_users,
not denied_permissions.pin_messages,
not denied_permissions.send_audios,
not denied_permissions.send_docs,
not denied_permissions.send_games,
not denied_permissions.send_gifs,
not denied_permissions.send_inline,
not denied_permissions.send_photos,
not denied_permissions.send_plain,
not denied_permissions.send_roundvideos,
not denied_permissions.send_stickers,
not denied_permissions.send_videos,
not denied_permissions.send_voices
]
if all(all_params):
all_permissions = False
elif all(all_params_not):
all_permissions = True
return ChatPermissions(
all_perms=all_permissions,
can_send_messages=not denied_permissions.send_messages,
can_send_media_messages=not denied_permissions.send_media,
can_add_web_page_previews=not denied_permissions.embed_links,