Merge branch 'chat-permissions-others'

This commit is contained in:
Dan 2021-06-01 13:58:28 +02:00
commit 91e0a08945
2 changed files with 31 additions and 54 deletions

View File

@ -52,17 +52,16 @@ class SetChatPermissions(Scaffold):
# Completely restrict chat # Completely restrict chat
app.set_chat_permissions(chat_id, ChatPermissions()) app.set_chat_permissions(chat_id, ChatPermissions())
# Chat members can only send text messages, media, stickers and GIFs # Chat members can only send text messages and media messages
app.set_chat_permissions( app.set_chat_permissions(
chat_id, chat_id,
ChatPermissions( ChatPermissions(
can_send_messages=True, can_send_messages=True,
can_send_media_messages=True, can_send_media_messages=True
can_send_stickers=True,
can_send_animations=True
) )
) )
""" """
r = await self.send( r = await self.send(
raw.functions.messages.EditChatDefaultBannedRights( raw.functions.messages.EditChatDefaultBannedRights(
peer=await self.resolve_peer(chat_id), peer=await self.resolve_peer(chat_id),
@ -70,10 +69,10 @@ class SetChatPermissions(Scaffold):
until_date=0, until_date=0,
send_messages=True if not permissions.can_send_messages else None, send_messages=True if not permissions.can_send_messages else None,
send_media=True if not permissions.can_send_media_messages else None, send_media=True if not permissions.can_send_media_messages else None,
send_stickers=True if not permissions.can_send_stickers else None, send_stickers=permissions.can_send_other_messages,
send_gifs=True if not permissions.can_send_animations else None, send_gifs=permissions.can_send_other_messages,
send_games=True if not permissions.can_send_games else None, send_games=permissions.can_send_other_messages,
send_inline=True if not permissions.can_use_inline_bots else None, send_inline=permissions.can_send_other_messages,
embed_links=True if not permissions.can_add_web_page_previews else None, embed_links=True if not permissions.can_add_web_page_previews else None,
send_polls=True if not permissions.can_send_polls else None, send_polls=True if not permissions.can_send_polls else None,
change_info=True if not permissions.can_change_info else None, change_info=True if not permissions.can_change_info else None,

View File

@ -21,49 +21,31 @@ from ..object import Object
class ChatPermissions(Object): class ChatPermissions(Object):
"""A chat default permissions and a single member permissions within a chat. """Describes actions that a non-administrator user is allowed to take in a chat.
Some permissions make sense depending on the context: default chat permissions, restricted/kicked member or
administrators in groups or channels.
.. note::
Pyrogram's chat permission are much more detailed. In particular, you can restrict sending stickers, animations,
games and inline bot results individually, allowing a finer control.
If you wish to have the same permissions as seen in official apps or in bot API's *"can_send_other_messages"*
simply set these arguments to True: ``can_send_stickers``, ``can_send_animations``, ``can_send_games`` and
``can_use_inline_bots``.
Parameters: Parameters:
can_send_messages (``bool``, *optional*): can_send_messages (``bool``, *optional*):
True, if the user is allowed to send text messages, contacts, locations and venues. True, if the user is allowed to send text messages, contacts, locations and venues.
can_send_media_messages (``bool``, *optional*): can_send_media_messages (``bool``, *optional*):
True, if the user is allowed to send audios, documents, photos, videos, video notes and voice notes, implies True, if the user is allowed to send audios, documents, photos, videos, video notes and voice notes.
can_send_messages. Implies *can_send_messages*.
can_send_stickers (``bool``, *optional*): can_send_other_messages (``bool``, *optional*):
True, if the user is allowed to send stickers, implies can_send_media_messages. True, if the user is allowed to send animations, games, stickers and use inline bots.
Implies *can_send_media_messages*.
can_send_animations (``bool``, *optional*):
True, if the user is allowed to send animations (GIFs), implies can_send_media_messages.
can_send_games (``bool``, *optional*):
True, if the user is allowed to send games, implies can_send_media_messages.
can_use_inline_bots (``bool``, *optional*):
True, if the user is allowed to use inline bots, implies can_send_media_messages.
can_add_web_page_previews (``bool``, *optional*):
True, if the user is allowed to add web page previews to their messages, implies can_send_media_messages.
can_send_polls (``bool``, *optional*): can_send_polls (``bool``, *optional*):
True, if the user is allowed to send polls, implies can_send_messages. True, if the user is allowed to send polls.
Implies can_send_messages
can_add_web_page_previews (``bool``, *optional*):
True, if the user is allowed to add web page previews to their messages.
Implies *can_send_media_messages*.
can_change_info (``bool``, *optional*): can_change_info (``bool``, *optional*):
True, if the user is allowed to change the chat title, photo and other settings. True, if the user is allowed to change the chat title, photo and other settings.
Ignored in public supergroups. Ignored in public supergroups
can_invite_users (``bool``, *optional*): can_invite_users (``bool``, *optional*):
True, if the user is allowed to invite new users to the chat. True, if the user is allowed to invite new users to the chat.
@ -77,13 +59,10 @@ class ChatPermissions(Object):
self, self,
*, *,
can_send_messages: bool = None, # Text, contacts, locations and venues can_send_messages: bool = None, # Text, contacts, locations and venues
can_send_media_messages: bool = None, # Audios, documents, photos, videos, video notes and voice notes can_send_media_messages: bool = None, # Audio files, documents, photos, videos, video notes and voice notes
can_send_stickers: bool = None, can_send_other_messages: bool = None, # Stickers, animations, games, inline bots
can_send_animations: bool = None,
can_send_games: bool = None,
can_use_inline_bots: bool = None,
can_add_web_page_previews: bool = None,
can_send_polls: bool = None, can_send_polls: bool = None,
can_add_web_page_previews: bool = None,
can_change_info: bool = None, can_change_info: bool = None,
can_invite_users: bool = None, can_invite_users: bool = None,
can_pin_messages: bool = None can_pin_messages: bool = None
@ -92,12 +71,9 @@ class ChatPermissions(Object):
self.can_send_messages = can_send_messages self.can_send_messages = can_send_messages
self.can_send_media_messages = can_send_media_messages self.can_send_media_messages = can_send_media_messages
self.can_send_stickers = can_send_stickers self.can_send_other_messages = can_send_other_messages
self.can_send_animations = can_send_animations
self.can_send_games = can_send_games
self.can_use_inline_bots = can_use_inline_bots
self.can_add_web_page_previews = can_add_web_page_previews
self.can_send_polls = can_send_polls self.can_send_polls = can_send_polls
self.can_add_web_page_previews = can_add_web_page_previews
self.can_change_info = can_change_info self.can_change_info = can_change_info
self.can_invite_users = can_invite_users self.can_invite_users = can_invite_users
self.can_pin_messages = can_pin_messages self.can_pin_messages = can_pin_messages
@ -108,10 +84,12 @@ class ChatPermissions(Object):
return ChatPermissions( return ChatPermissions(
can_send_messages=not denied_permissions.send_messages, can_send_messages=not denied_permissions.send_messages,
can_send_media_messages=not denied_permissions.send_media, can_send_media_messages=not denied_permissions.send_media,
can_send_stickers=not denied_permissions.send_stickers, can_send_other_messages=any([
can_send_animations=not denied_permissions.send_gifs, not denied_permissions.send_stickers,
can_send_games=not denied_permissions.send_games, not denied_permissions.send_gifs,
can_use_inline_bots=not denied_permissions.send_inline, not denied_permissions.send_games,
not denied_permissions.send_inline
]),
can_add_web_page_previews=not denied_permissions.embed_links, can_add_web_page_previews=not denied_permissions.embed_links,
can_send_polls=not denied_permissions.send_polls, can_send_polls=not denied_permissions.send_polls,
can_change_info=not denied_permissions.change_info, can_change_info=not denied_permissions.change_info,