
    /j/                     R    d Z ddlmZ ddlmZ ddlmZ erddlmZ  G d de      Z	y)	zIThis module contains an object that represents a Telegram ChatPermission.    )TYPE_CHECKING)TelegramObject)JSONDict)Botc            %       B    e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddddedz  dedz  dedz  dedz  d	edz  d
edz  dedz  dedz  dedz  dedz  dedz  dedz  dedz  dedz  dedz  dedz  dedz  f" fdZedd       Z	edd       Z
ed dedddd f fd       Z xZS )!ChatPermissionsa_  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`,
    :attr:`can_manage_topics`, :attr:`can_edit_tag`, and :attr:`can_react_to_messages` 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``.
    .. versionchanged:: 22.7
        :attr:`can_edit_tag` is considered as well when comparing objects of
        this type in terms of equality.
    .. versionchanged:: 22.8
        :attr:`can_react_to_messages` is considered as well when comparing objects of
        this type in terms of equality.


    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
        can_edit_tag (:obj:`bool`, optional): :obj:`True`, if the user is allowed to edit their own
            tag.

            .. versionadded:: 22.7
        can_react_to_messages (:obj:`bool`, optional): :obj:`True`, if the user is allowed to react
            to messages. If omitted, defaults to the value of :attr:`can_send_messages`.

            .. versionadded:: 22.8

    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_edit_tag (:obj:`bool`): Optional. :obj:`True`, if the user is allowed to edit their own
            tag.

            .. versionadded:: 22.7
        can_react_to_messages (:obj:`bool`): Optional. :obj:`True`, if the user is allowed to react
            to messages. If omitted, defaults to the value of :attr:`can_send_messages`.

            .. versionadded:: 22.8

    )can_add_web_page_previewscan_change_infocan_edit_tagcan_invite_userscan_manage_topicscan_pin_messagescan_react_to_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   r   r   c                   t         |   |       || _        || _        || _        || _        || _        || _        || _        || _	        |	| _
        |
| _        || _        || _        || _        || _        || _        || _        | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                   | j"                  f| _        | j'                          y )Nr   )super__init__r   r   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   r   r   	__class__s                     W/var/www/html/maxservice/venv/lib/python3.12/site-packages/telegram/_chatpermissions.pyr   zChatPermissions.__init__   s;   * 	J/.?+94K$6O&,;-=-=.?,;/A,;,;1E!1E!)52G" ""((**  !!!!""  ##    %%%%&&!
& 	    returnc                 8     | dt        | j                        z   S )a  
        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

        )Tlen	__slots__clss    r"   all_permissionszChatPermissions.all_permissions   s     Gc#--0011r#   c                 8     | dt        | j                        z   S )z
        This method returns an :class:`ChatPermissions` instance
        with all attributes set to :obj:`False`.

        .. versionadded:: 20.0
        )Fr&   r)   s    r"   no_permissionszChatPermissions.no_permissions   s     Hs3==1122r#   databotz
Bot | Nonec                     | j                  |      }i }|j                  d      |j                  d      |d<   t        |   |||      S )z,See :meth:`telegram.TelegramObject.de_json`.can_send_media_messages)r.   r/   r   )_parse_datagetpopr   _de_json)r*   r.   r/   r   r!   s       r"   de_jsonzChatPermissions.de_json  sV     t$
 88-.:48HH=V4WJ01wTszJJr#   )NNNNNNNNNNNNNNNN)r$   r   )N)__name__
__module____qualname____doc__r(   boolr   r   classmethodr+   r-   r6   __classcell__)r!   s   @r"   r   r      s   AFI* *.&*/315'+(,(,)-'+*.'+'+,0,0$(-1#;& '+';$;; t; "&	;
 $($;; ; +; +;  $;; ; !4K; ; ; #Tk; #Tk;  Tk!;"  $d{#;& tO';z 	2 	2 3 3 
K8 
K, 
KBS 
K 
Kr#   r   N)
r:   typingr   telegram._telegramobjectr   telegram._utils.typesr   telegramr   r    r#   r"   <module>rC      s*   & P   3 *uKn uKr#   