§
    ¨eîi�,  ã                   óZ   — 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	dS )	zIThis module contains an object that represents a Telegram ChatPermission.é    )ÚTYPE_CHECKING)ÚTelegramObject)ÚJSONDict)ÚBotc            #       óH  ‡ — 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  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` and :attr:`can_edit_tag` 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.


    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

    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_add_web_page_previewsÚcan_change_infoÚcan_edit_tagÚ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   r   c                ó  •— t          ¦   «                              |¬¦  «         || _        || _        || _        || _        || _        || _        || _        || _	        |	| _
        |
| _        || _        || _        || _        || _        || _        | j        | j        | j        | j        | j        | j        | j        | j	        | j
        | j        | j        | j        | j        | j        | j        f| _        |                      ¦   «          d S )Nr   )ÚsuperÚ__init__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   Ú	__class__s                    €ú]/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/telegram/_chatpermissions.pyr   zChatPermissions.__init__©   s  ø€ õ( 	‰Œ×Ò JÐÑ/Ô/Ð/à.?ˆÔØ+9ˆÔØ4KˆÔ$Ø6OˆÔ&Ø,;ˆÔØ-=ˆÔØ-=ˆÔØ.?ˆÔØ,;ˆÔØ/AˆÔØ,;ˆÔØ,;ˆÔØ1EˆÔ!Ø1EˆÔ!Ø)5ˆÔð Ô"ØÔØÔ(ØÔ*ØÔ ØÔ!ØÔ!ØÔ"ØÔ ØÔ#ØÔ ØÔ ØÔ%ØÔ%ØÔð
ˆŒð$ 	�Š‰Œˆˆˆó    Úreturnc                 ó6   —  | 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    € ð ˆs�G�c #¤-Ñ0Ô0Ñ0Ð1Ð1r"   c                 ó6   —  | 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    € ð ˆs�H�s 3¤=Ñ1Ô1Ñ1Ð2Ð2r"   ÚdataÚbotz
Bot | Nonec                 óÔ   •— |                       |¦  «        }i }|                     d¦  «        �|                     d¦  «        |d<   t          ¦   «                              |||¬¦  «        S )z,See :meth:`telegram.TelegramObject.de_json`.Úcan_send_media_messagesN)r-   r.   r   )Ú_parse_dataÚgetÚpopr   Ú_de_json)r)   r-   r.   r   r    s       €r!   Úde_jsonzChatPermissions.de_jsonù   sg   ø€ ð �Š˜tÑ$Ô$ˆàˆ
ð �8Š8Ð-Ñ.Ô.Ð:Ø48·H²HÐ=VÑ4WÔ4WˆJÐ0Ñ1å‰wŒw×Ò T¨s¸zÐÑJÔJÐJr"   )NNNNNNNNNNNNNNN)r#   r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   Úboolr   r   Úclassmethodr*   r,   r5   Ú__classcell__)r    s   @r!   r   r      s  ø€ € € € € ðvð vðp€Ið( *.Ø&*Ø/3Ø15Ø'+Ø(,Ø(,Ø)-Ø'+Ø*.Ø'+Ø'+Ø,0Ø,0Ø$(ð!8ð$ '+ð%8ð 8ð 8à $™;ð8ð ˜t™ð8ð "&¨¡ð	8ð
 $(¨$¡;ð8ð  ™ð8ð  ™+ð8ð  ™+ð8ð   $™;ð8ð  ™ð8ð ! 4™Kð8ð  ™ð8ð  ™ð8ð # T™kð8ð # T™kð8ð  ˜T‘kð!8ð$ ˜t‘Oð%8ð 8ð 8ð 8ð 8ð 8ðt ð	2ð 	2ð 	2ñ „[ð	2ð ð3ð 3ð 3ñ „[ð3ð ð
Kð 
K˜8ð 
K¨,ð 
KÐBSð 
Kð 
Kð 
Kð 
Kð 
Kñ „[ð
Kð 
Kð 
Kð 
Kð 
Kr"   r   N)
r9   Útypingr   Útelegram._telegramobjectr   Útelegram._utils.typesr   Útelegramr   r   © r"   r!   ú<module>rB      s¦   ðð& PÐ Oà  Ð  Ð  Ð  Ð  Ð  à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø *Ð *Ð *Ð *Ð *Ð *àð ØÐÐÐÐÐðfKð fKð fKð fKð fK�nñ fKô fKð fKð fKð fKr"   