Ë
    †j¡!  ã                   ó¦   — 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y)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                   ó0  ‡ — 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	                ó2  •— t         ‰
| �  |	¬«       || _        || _        || _        || _        || _        || _        || _        || _	        | j                  | j                  | j                  | j
                  | j                  f| _
        | j                  «        y )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             €úZ/var/www/html/datingFans/myenv/lib/python3.12/site-packages/telegram/_chatmemberupdated.pyr   zChatMemberUpdated.__init__m   s‘   ø€ ô 	‰Ñ JÐÔ/àˆŒ	Ø(ˆŒØ"&ˆŒ	Ø+:ˆÔØ+:ˆÔØ8SˆÔ(ð 3>ˆÔØ-=ˆÔð �I‰IØ�N‰NØ�I‰IØ× Ñ Ø× Ñ ð
ˆŒð 	�‰�ó    ÚdataÚbotz
Bot | NoneÚreturnc                 óü  •— | j                  |«      }t        |«      }t        |j                  d«      t        |«      |d<   t        |j                  dd«      t        |«      |d<   t        |j                  d«      |¬«      |d<   t        |j                  d«      t        |«      |d<   t        |j                  d«      t        |«      |d<   t        |j                  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ˆ
ä'¨¯©°Ó(8¼$ÀÓDˆˆV‰Ü,¨T¯X©X°f¸dÓ-CÄTÈ3ÓOˆˆ[ÑÜ% d§h¡h¨vÓ&6¸zÔJˆˆV‰Ü"2°4·8±8Ð<MÓ3NÔPZÐ\_Ó"`ˆÐÑÜ"2°4·8±8Ð<MÓ3NÔPZÐ\_Ó"`ˆÐÑÜ.¨t¯x©x¸Ó/FÌÐX[Ó\ˆˆ]Ñä‰w‰ D¨cˆÓ2Ð2r"   Ú	attributec                 ó”   — 	 | j                   |   }	 | j                  |   }||fS # t        $ r d }Y Œ!w xY w# t        $ r d }Y ||fS w xY w©N)r   ÚKeyErrorr   )r   r/   ÚoldÚnews       r!   Ú_get_attribute_differencez+ChatMemberUpdated._get_attribute_difference¢   sk   € ð	Ø×&Ñ& yÑ1ˆCð	Ø×&Ñ& yÑ1ˆCð �Cˆxˆøô ò 	ØŠCð	ûô
 ò 	Ø‰Cà�Cˆxˆð	ús   ‚% ’6 ¥3²3¶AÁAc                 óÖ  — | j                   j                  «       }|j                  d«      }| j                  j                  «       }|j                  d«      }d„ t	        |j                  «       «      t	        |j                  «       «      z  D «       }|D �ci c]  }|| j                  |«      “Œ }}||k7  r/| j                   j                  | j                  j                  f|d<   |S c c}w )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    –— Œ y­w)r   N© )Ú.0Úentrys     r!   ú	<genexpr>z/ChatMemberUpdated.difference.<locals>.<genexpr>Ð   s   è ø€ ÒZ 5�e˜A•hÑZùs   ‚)r   Úto_dictr+   r   ÚsetÚitemsr5   r7   )r   Úold_dictÚold_user_dictÚnew_dictÚnew_user_dictÚ
attributesr/   Úresults           r!   Ú
differencezChatMemberUpdated.difference¯   sÎ   € ð4 ×'Ñ'×/Ñ/Ó1ˆØ Ÿ™ VÓ,ˆØ×'Ñ'×/Ñ/Ó1ˆØ Ÿ™ VÓ,ˆñ [¬C°·±Ó0@Ó,AÄCÈÏÉÓHXÓDYÑ,YÔZˆ
àXbÖcÈ9�)˜T×;Ñ;¸IÓFÑFÐcˆÐcØ˜MÒ)Ø"×2Ñ2×7Ñ7¸×9MÑ9M×9RÑ9RÐSˆF�6‰Nàˆùò	 ds   ÂC&)NNNr1   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r   ÚdtmÚdatetimer   r   Úboolr   r   Úclassmethodr,   ÚstrÚtupleÚobjectr5   ÚdictrF   Ú__classcell__)r    s   @r!   r   r   %   s*  ø„ ñ:ðx	€Ið$ .2Ø37Ø(,ð"ð '+ò"àð"ð ð"ð �l‰lð	"ð
 $ð"ð $ð"ð $ dÑ*ð"ð &*¨D¡[ð"ð  ™+ð"ð ˜t‘Oõ"ðH ñ3˜8ð 3¨,ð 3ÐBUô 3ó ð3ð °3ð ¸5ÀÈÀÑ;Pó ð'à	ØØˆc�D‰j˜3Ÿ<™<Ñ'¨$Ñ.°°d±
¸S¿\¹\Ñ0IÈDÑ0PÐPÑQð	Sñ
÷'r"   r   )rJ   rM   rL   Ú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>r_      s=   ðñ& Sã Ý  å Ý 3Ý +Ý 3Ý Ý <ß QÝ *áÝôq˜õ qr"   