
    Yi*                     `    S r SSKJrJr  SSKJr  SSKJr  \(       a  SSKJ	r	   " S S\5      r
g)	zIThis module contains an object that represents a Telegram ChatPermission.    )TYPE_CHECKINGOptional)TelegramObject)JSONDict)Botc            !       X  ^  \ rS rSrSrSr              SSS.S\\   S\\   S\\   S	\\   S
\\   S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\\   4U 4S jjjjr	\
SS j5       r\
SS j5       r\
 S S\\   S\S   S\S    4U 4S jjj5       rSrU =r$ )!ChatPermissions   a  Describes actions that a non-administrator user is allowed to take in a chat.

Objects of this class are comparable in terms of equality. Two objects of this class are
considered equal, if their :attr:`can_send_messages`,
:attr:`can_send_polls`, :attr:`can_send_other_messages`, :attr:`can_add_web_page_previews`,
:attr:`can_change_info`, :attr:`can_invite_users`, :attr:`can_pin_messages`,
:attr:`can_send_audios`, :attr:`can_send_documents`, :attr:`can_send_photos`,
:attr:`can_send_videos`, :attr:`can_send_video_notes`, :attr:`can_send_voice_notes`, and
:attr:`can_manage_topics` are equal.

.. versionchanged:: 20.0
    :attr:`can_manage_topics` is considered as well when comparing objects of
    this type in terms of equality.
.. versionchanged:: 20.5

    * :attr:`can_send_audios`, :attr:`can_send_documents`, :attr:`can_send_photos`,
      :attr:`can_send_videos`, :attr:`can_send_video_notes` and :attr:`can_send_voice_notes`
      are considered as well when comparing objects of this type in terms of equality.
    * Removed deprecated argument and attribute ``can_send_media_messages``.


Note:
    Though not stated explicitly in the official docs, Telegram changes not only the
    permissions that are set, but also sets all the others to :obj:`False`. However, since not
    documented, this behavior may change unbeknown to PTB.

Args:
    can_send_messages (:obj:`bool`, optional): :obj:`True`, if the user is allowed to send text
        messages, contacts, locations and venues.
    can_send_polls (:obj:`bool`, optional): :obj:`True`, if the user is allowed to send polls.
    can_send_other_messages (:obj:`bool`, optional): :obj:`True`, if the user is allowed to
        send animations, games, stickers and use inline bots.
    can_add_web_page_previews (:obj:`bool`, optional): :obj:`True`, if the user is allowed to
        add web page previews to their messages.
    can_change_info (:obj:`bool`, optional): :obj:`True`, if the user is allowed to change the
        chat title, photo and other settings. Ignored in public supergroups.
    can_invite_users (:obj:`bool`, optional): :obj:`True`, if the user is allowed to invite new
        users to the chat.
    can_pin_messages (:obj:`bool`, optional): :obj:`True`, if the user is allowed to pin
        messages. Ignored in public supergroups.
    can_manage_topics (:obj:`bool`, optional): :obj:`True`, if the user is allowed
        to create forum topics. If omitted defaults to the value of
        :attr:`can_pin_messages`.

        .. versionadded:: 20.0
    can_send_audios (:obj:`bool`): :obj:`True`, if the user is allowed to send audios.

        .. versionadded:: 20.1
    can_send_documents (:obj:`bool`): :obj:`True`, if the user is allowed to send documents.

        .. versionadded:: 20.1
    can_send_photos (:obj:`bool`): :obj:`True`, if the user is allowed to send photos.

        .. versionadded:: 20.1
    can_send_videos (:obj:`bool`): :obj:`True`, if the user is allowed to send videos.

        .. versionadded:: 20.1
    can_send_video_notes (:obj:`bool`): :obj:`True`, if the user is allowed to send video
        notes.

        .. versionadded:: 20.1
    can_send_voice_notes (:obj:`bool`): :obj:`True`, if the user is allowed to send voice
        notes.

        .. versionadded:: 20.1

Attributes:
    can_send_messages (:obj:`bool`): Optional. :obj:`True`, if the user is allowed to send text
        messages, contacts, locations and venues.
    can_send_polls (:obj:`bool`): Optional. :obj:`True`, if the user is allowed to send polls,
        implies :attr:`can_send_messages`.
    can_send_other_messages (:obj:`bool`): Optional. :obj:`True`, if the user is allowed to
        send animations, games, stickers and use inline bots.
    can_add_web_page_previews (:obj:`bool`): Optional. :obj:`True`, if the user is allowed to
        add web page previews to their messages.
    can_change_info (:obj:`bool`): Optional. :obj:`True`, if the user is allowed to change the
        chat title, photo and other settings. Ignored in public supergroups.
    can_invite_users (:obj:`bool`): Optional. :obj:`True`, if the user is allowed to invite
        new users to the chat.
    can_pin_messages (:obj:`bool`): Optional. :obj:`True`, if the user is allowed to pin
        messages. Ignored in public supergroups.
    can_manage_topics (:obj:`bool`): Optional. :obj:`True`, if the user is allowed
        to create forum topics. If omitted defaults to the value of
        :attr:`can_pin_messages`.

        .. versionadded:: 20.0
    can_send_audios (:obj:`bool`): :obj:`True`, if the user is allowed to send audios.

        .. versionadded:: 20.1
    can_send_documents (:obj:`bool`): :obj:`True`, if the user is allowed to send documents.

        .. versionadded:: 20.1
    can_send_photos (:obj:`bool`): :obj:`True`, if the user is allowed to send photos.

        .. versionadded:: 20.1
    can_send_videos (:obj:`bool`): :obj:`True`, if the user is allowed to send videos.

        .. versionadded:: 20.1
    can_send_video_notes (:obj:`bool`): :obj:`True`, if the user is allowed to send video
        notes.

        .. versionadded:: 20.1
    can_send_voice_notes (:obj:`bool`): :obj:`True`, if the user is allowed to send voice
        notes.

        .. versionadded:: 20.1

)can_add_web_page_previewscan_change_infocan_invite_userscan_manage_topicscan_pin_messagescan_send_audioscan_send_documentscan_send_messagescan_send_other_messagescan_send_photoscan_send_pollscan_send_video_notescan_send_videoscan_send_voice_notesN
api_kwargsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                *  > [         TU ]  US9  Xl        X l        X0l        X@l        XPl        X`l        Xpl        Xl	        Xl
        Xl        Xl        Xl        Xl        Xl        U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  4U l        U R#                  5         g )Nr   )super__init__r   r   r   r   r   r   r   r   r   r   r   r   r   r   	_id_attrs_freeze)selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	__class__s                   D/app/.venv/lib/python3.13/site-packages/telegram/_chatpermissions.pyr   ChatPermissions.__init__   s    & 	J/1B.<7N$9R&/>0@0@1B/>2D/>/>4H!4H! ""((**  !!!!""  ##    %%%%
" 	    returnc                     U " S6 $ )z
This method returns an :class:`ChatPermissions` instance with all attributes
set to :obj:`True`. This is e.g. useful when unrestricting a chat member with
:meth:`telegram.Bot.restrict_chat_member`.

.. versionadded:: 20.0

)TTTTTTTTTTTTTT clss    r"   all_permissionsChatPermissions.all_permissions   s     \##r$   c                     U " S6 $ )z{
This method returns an :class:`ChatPermissions` instance
with all attributes set to :obj:`False`.

.. versionadded:: 20.0
)FFFFFFFFFFFFFFr'   r(   s    r"   no_permissionsChatPermissions.no_permissions   s     ]$$r$   databotr   c                    > U R                  U5      nU(       d  g0 nUR                  S5      b  UR                  S5      US'   [        TU ]  XUS9$ )z,See :meth:`telegram.TelegramObject.de_json`.Ncan_send_media_messages)r/   r0   r   )_parse_datagetpopr   _de_json)r)   r/   r0   r   r!   s       r"   de_jsonChatPermissions.de_json   sZ    
 t$
 88-.:48HH=V4WJ01wTzJJr$   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )NNNNNNNNNNNNNN)r%   r	   )N)__name__
__module____qualname____firstlineno____doc__	__slots__r   boolr   r   classmethodr*   r-   r7   __static_attributes____classcell__)r!   s   @r"   r	   r	      s   kZI& -1)-2648*.+/+/,0*.-1*.*./3/35" *.#5#D>5 !5 "*$	5
 $,D>5 "$5 #4.5 #4.5 $D>5 "$5 %TN5 "$5 "$5 'tn5 'tn5" X&#5 5n 	$ 	$ % % >BKH%K,4UOK	#	$K Kr$   r	   N)r=   typingr   r   telegram._telegramobjectr   telegram._utils.typesr   telegramr   r	   r'   r$   r"   <module>rG      s*   & P * 3 *\Kn \Kr$   