§
    §eîi¡!  ã                   ó®   — d Z ddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ erddlmZ  G d„ de¦  «        ZdS )zLThis module contains an object that represents a Telegram ChatMemberUpdated.é    N)ÚTYPE_CHECKING)ÚChat)ÚChatInviteLink)Ú
ChatMember)ÚTelegramObject)ÚUser)Úde_json_optional)Úextract_tzinfo_from_defaultsÚfrom_timestamp)ÚJSONDict)ÚBotc                   ó*  ‡ — e Zd ZdZdZ	 	 	 dddœdededej        de	d	e	d
e
dz  dedz  dedz  dedz  fˆ fd„Zeddedddd fˆ fd„¦   «         Zdedeeef         fd„Zdeeeeez  ej        z  ez  eez  ej        z  ez  f         f         fd„Zˆ xZS )ÚChatMemberUpdateda^  This object represents changes in the status of a chat member.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if their :attr:`chat`, :attr:`from_user`, :attr:`date`,
    :attr:`old_chat_member` and :attr:`new_chat_member` are equal.

    .. versionadded:: 13.4

    Note:
        In Python :keyword:`from` is a reserved word. Use :paramref:`from_user` instead.

    Examples:
        :any:`Chat Member Bot <examples.chatmemberbot>`

    Args:
        chat (:class:`telegram.Chat`): Chat the user belongs to.
        from_user (:class:`telegram.User`): Performer of the action, which resulted in the change.
        date (:class:`datetime.datetime`): Date the change was done in Unix time. Converted to
            :class:`datetime.datetime`.

            .. versionchanged:: 20.3
                |datetime_localization|
        old_chat_member (:class:`telegram.ChatMember`): Previous information about the chat member.
        new_chat_member (:class:`telegram.ChatMember`): New information about the chat member.
        invite_link (:class:`telegram.ChatInviteLink`, optional): Chat invite link, which was used
            by the user to join the chat. For joining by invite link events only.
        via_chat_folder_invite_link (:obj:`bool`, optional): :obj:`True`, if the user joined the
            chat via a chat folder invite link

            .. versionadded:: 20.3
        via_join_request (:obj:`bool`, optional): :obj:`True`, if the user joined the chat after
            sending a direct join request without using an invite link and being approved by
            an administrator

            .. versionadded:: 21.2

    Attributes:
        chat (:class:`telegram.Chat`): Chat the user belongs to.
        from_user (:class:`telegram.User`): Performer of the action, which resulted in the change.
        date (:class:`datetime.datetime`): Date the change was done in Unix time. Converted to
            :class:`datetime.datetime`.

            .. versionchanged:: 20.3
                |datetime_localization|
        old_chat_member (:class:`telegram.ChatMember`): Previous information about the chat member.
        new_chat_member (:class:`telegram.ChatMember`): New information about the chat member.
        invite_link (:class:`telegram.ChatInviteLink`): Optional. Chat invite link, which was used
            by the user to join the chat. For joining by invite link events only.
        via_chat_folder_invite_link (:obj:`bool`): Optional. :obj:`True`, if the user joined the
            chat via a chat folder invite link

            .. versionadded:: 20.3
        via_join_request (:obj:`bool`): Optional. :obj:`True`, if the user joined the chat after
            sending a direct join request without using an invite link and being approved
            by an administrator

            .. versionadded:: 21.2

    )ÚchatÚdateÚ	from_userÚinvite_linkÚnew_chat_memberÚold_chat_memberÚvia_chat_folder_invite_linkÚvia_join_requestN©Ú
api_kwargsr   r   r   r   r   r   r   r   r   c	                ó.  •— t          ¦   «                              |	¬¦  «         || _        || _        || _        || _        || _        || _        || _        || _	        | j        | j        | j        | j        | j        f| _
        |                      ¦   «          d S )Nr   )ÚsuperÚ__init__r   r   r   r   r   r   r   r   Ú	_id_attrsÚ_freeze)Úselfr   r   r   r   r   r   r   r   r   Ú	__class__s             €ú_/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/telegram/_chatmemberupdated.pyr   zChatMemberUpdated.__init__m   s˜   ø€ õ 	‰Œ×Ò JÐÑ/Ô/Ð/àˆŒ	Ø(ˆŒØ"&ˆŒ	Ø+:ˆÔØ+:ˆÔØ8SˆÔ(ð 3>ˆÔØ-=ˆÔð ŒIØŒNØŒIØÔ ØÔ ð
ˆŒð 	�Š‰Œˆˆˆó    ÚdataÚbotz
Bot | NoneÚreturnc                 óš  •— |                       |¦  «        }t          |¦  «        }t          |                     d¦  «        t          |¦  «        |d<   t          |                     dd¦  «        t          |¦  «        |d<   t          |                     d¦  «        |¬¦  «        |d<   t          |                     d¦  «        t          |¦  «        |d<   t          |                     d¦  «        t          |¦  «        |d<   t          |                     d	¦  «        t          |¦  «        |d	<   t          ¦   «                              ||¬
¦  «        S )z,See :meth:`telegram.TelegramObject.de_json`.r   ÚfromNr   r   )Útzinfor   r   r   )r#   r$   )Ú_parse_datar
   r	   Úgetr   Úpopr   r   r   r   r   Úde_json)Úclsr#   r$   Ú
loc_tzinfor    s       €r!   r,   zChatMemberUpdated.de_json‘   s  ø€ ð �Š˜tÑ$Ô$ˆõ 2°#Ñ6Ô6ˆ
å'¨¯ª°Ñ(8Ô(8½$ÀÑDÔDˆˆV‰Ý,¨T¯XªX°f¸dÑ-CÔ-CÅTÈ3ÑOÔOˆˆ[ÑÝ% d§h¢h¨vÑ&6Ô&6¸zÐJÑJÔJˆˆV‰Ý"2°4·8²8Ð<MÑ3NÔ3NÕPZÐ\_Ñ"`Ô"`ˆÐÑÝ"2°4·8²8Ð<MÑ3NÔ3NÕPZÐ\_Ñ"`Ô"`ˆÐÑÝ.¨t¯xªx¸Ñ/FÔ/FÍÐX[Ñ\Ô\ˆˆ]Ñå‰wŒw�Š D¨cˆÑ2Ô2Ð2r"   Ú	attributec                 óŽ   — 	 | j         |         }n# t          $ r d }Y nw xY w	 | j        |         }n# t          $ r d }Y nw xY w||fS ©N)r   ÚKeyErrorr   )r   r/   ÚoldÚnews       r!   Ú_get_attribute_differencez+ChatMemberUpdated._get_attribute_difference¢   s}   € ð	ØÔ& yÔ1ˆCˆCøÝð 	ð 	ð 	ØˆCˆCˆCð	øøøð	ØÔ& yÔ1ˆCˆCøÝð 	ð 	ð 	ØˆCˆCˆCð	øøøð �Cˆxˆs   ‚ �ž£1 ±A ¿A c                 ó¸  ‡ — ‰ j                              ¦   «         }|                     d¦  «        }‰ j                             ¦   «         }|                     d¦  «        }d„ t	          |                     ¦   «         ¦  «        t	          |                     ¦   «         ¦  «        z  D ¦   «         }ˆ fd„|D ¦   «         }||k    r‰ j         j        ‰ j        j        f|d<   |S )a|  Computes the difference between :attr:`old_chat_member` and :attr:`new_chat_member`.

        Example:
            .. code:: pycon

                >>> chat_member_updated.difference()
                {'custom_title': ('old title', 'new title')}

        Note:
            To determine, if the :attr:`telegram.ChatMember.user` attribute has changed, *every*
            attribute of the user will be checked.

        .. versionadded:: 13.5

        Returns:
            dict[:obj:`str`, tuple[:class:`object`, :class:`object`]]: A dictionary mapping
            attribute names to tuples of the form ``(old_value, new_value)``
        Úuserc              3   ó&   K  — | ]}|d          V — ŒdS )r   N© )Ú.0Úentrys     r!   ú	<genexpr>z/ChatMemberUpdated.difference.<locals>.<genexpr>Ð   s&   è è € ÐZÐZ 5�e˜A”hÐZÐZÐZÐZÐZÐZr"   c                 ó<   •— i | ]}|‰                      |¦  «        “ŒS r9   )r5   )r:   r/   r   s     €r!   ú
<dictcomp>z0ChatMemberUpdated.difference.<locals>.<dictcomp>Ò   s)   ø€ ÐcÐcÐcÈ9�)˜T×;Ò;¸IÑFÔFÐcÐcÐcr"   )r   Úto_dictr+   r   ÚsetÚitemsr7   )r   Úold_dictÚold_user_dictÚnew_dictÚnew_user_dictÚ
attributesÚresults   `      r!   Ú
differencezChatMemberUpdated.difference¯   sÒ   ø€ ð4 Ô'×/Ò/Ñ1Ô1ˆØ Ÿš VÑ,Ô,ˆØÔ'×/Ò/Ñ1Ô1ˆØ Ÿš VÑ,Ô,ˆð [ÐZ­C°·²Ñ0@Ô0@Ñ,AÔ,AÅCÈÏÊÑHXÔHXÑDYÔDYÑ,YÐZÑZÔZˆ
àcÐcÐcÐcÐXbÐcÑcÔcˆØ˜MÒ)Ð)Ø"Ô2Ô7¸Ô9MÔ9RÐSˆF�6‰Nàˆr"   )NNNr1   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r   ÚdtmÚdatetimer   r   Úboolr   r   Úclassmethodr,   ÚstrÚtupleÚobjectr5   ÚdictrH   Ú__classcell__)r    s   @r!   r   r   %   s¡  ø€ € € € € ð:ð :ðx	€Ið$ .2Ø37Ø(,ð"ð '+ð"ð "ð "àð"ð ð"ð Œlð	"ð
 $ð"ð $ð"ð $ dÑ*ð"ð &*¨D¡[ð"ð  ™+ð"ð ˜t‘Oð"ð "ð "ð "ð "ð "ðH ð3ð 3˜8ð 3¨,ð 3ÐBUð 3ð 3ð 3ð 3ð 3ñ „[ð3ð °3ð ¸5ÀÈÀÔ;Pð ð ð ð ð'à	ØØˆc�D‰j˜3œ<Ñ'¨$Ñ.°°d±
¸S¼\Ñ0IÈDÑ0PÐPÔQð	Sô
ð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'r"   r   )rL   rO   rN   Útypingr   Útelegram._chatr   Útelegram._chatinvitelinkr   Útelegram._chatmemberr   Útelegram._telegramobjectr   Útelegram._userr   Útelegram._utils.argumentparsingr	   Útelegram._utils.datetimer
   r   Útelegram._utils.typesr   Útelegramr   r   r9   r"   r!   ú<module>ra      s  ðð& SÐ Rà Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø +Ð +Ð +Ð +Ð +Ð +Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ *Ð *Ð *Ð *Ð *Ð *àð ØÐÐÐÐÐðqð qð qð qð q˜ñ qô qð qð qð qr"   