
    Qic                         d Z ddlZddlmZ ddlmZmZ ddlm	Z	 ddl
mZ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 G d de      Zy)zQThis module contains an object that represents a Telegram MessageReaction Update.    N)Sequence)TYPE_CHECKINGOptional)Chat)ReactionCountReactionType)TelegramObject)User)parse_sequence_arg)extract_tzinfo_from_defaultsfrom_timestamp)JSONDict)Botc                        e Zd ZdZdZdddededej                  de	e
   d	ee   f
 fd
Ze	 ddee   ded   ded    f fd       Z xZS )MessageReactionCountUpdatedaU  This class represents reaction changes on a message with anonymous reactions.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if the :attr:`chat`, :attr:`message_id`, :attr:`date` and :attr:`reactions`
    is equal.

    .. versionadded:: 20.8

    Args:
        chat (:class:`telegram.Chat`): The chat containing the message.
        message_id (:obj:`int`): Unique message identifier inside the chat.
        date (:class:`datetime.datetime`): Date of the change in Unix time
            |datetime_localization|
        reactions (Sequence[:class:`telegram.ReactionCount`]): List of reactions that are present
            on the message

    Attributes:
        chat (:class:`telegram.Chat`): The chat containing the message.
        message_id (:obj:`int`): Unique message identifier inside the chat.
        date (:class:`datetime.datetime`): Date of the change in Unix time
            |datetime_localization|
        reactions (tuple[:class:`telegram.ReactionCount`]): List of reactions that are present on
            the message
    )chatdate
message_id	reactionsN
api_kwargsr   r   r   r   r   c                    t         |   |       || _        || _        || _        t        |      | _        | j                  | j                  | j                  | j                  f| _        | j                          y Nr   )	super__init__r   r   r   r   r   	_id_attrs_freeze)selfr   r   r   r   r   	__class__s         K/app/.venv/lib/python3.12/site-packages/telegram/_messagereactionupdated.pyr   z$MessageReactionCountUpdated.__init__E   s_     	J/	)"&	4Fy4Q))T__diiP    databotr   returnc                 B   | j                  |      }|syt        |      }t        |j                  d      |      |d<   t	        j
                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t        |   ||      S ),See :meth:`telegram.TelegramObject.de_json`.Nr   tzinfor   r   r"   r#   )	_parse_datar   r   getr   de_jsonr   de_listr   clsr"   r#   
loc_tzinfor   s       r    r,   z#MessageReactionCountUpdated.de_jsonX   s    
 t$ 2#6
%dhhv&6zJV||DHHV$4c:V)11$((;2GM[wDc22r!   N)__name__
__module____qualname____doc__	__slots__r   intdtmdatetimer   r   r   r   r   classmethodr,   __classcell__r   s   @r    r   r   $   s    2I *.  ll	
 M* X&& >B3H%3,4UO3	/	03 3r!   r   c                        e Zd ZdZdZ	 	 ddddededej                  de	e
   d	e	e
   d
ee   dee   dee   f fdZe	 ddee   ded   ded    f fd       Z xZS )MessageReactionUpdateda  This class represents a change of a reaction on a message performed by a user.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if the :attr:`chat`, :attr:`message_id`, :attr:`date`, :attr:`old_reaction`
    and :attr:`new_reaction` is equal.

    .. versionadded:: 20.8

    Args:
        chat (:class:`telegram.Chat`): The chat containing the message.
        message_id (:obj:`int`): Unique message identifier inside the chat.
        date (:class:`datetime.datetime`): Date of the change in Unix time.
            |datetime_localization|
        old_reaction (Sequence[:class:`telegram.ReactionType`]): Previous list of reaction types
            that were set by the user.
        new_reaction (Sequence[:class:`telegram.ReactionType`]): New list of reaction types that
            were set by the user.
        user (:class:`telegram.User`, optional): The user that changed the reaction, if the user
            isn't anonymous.
        actor_chat (:class:`telegram.Chat`, optional): The chat on behalf of which the reaction was
            changed, if the user is anonymous.

    Attributes:
        chat (:class:`telegram.Chat`): The chat containing the message.
        message_id (:obj:`int`): Unique message identifier inside the chat.
        date (:class:`datetime.datetime`): Date of the change in Unix time.
            |datetime_localization|
        old_reaction (tuple[:class:`telegram.ReactionType`]): Previous list of reaction types
            that were set by the user.
        new_reaction (tuple[:class:`telegram.ReactionType`]): New list of reaction types that
            were set by the user.
        user (:class:`telegram.User`): Optional. The user that changed the reaction, if the user
            isn't anonymous.
        actor_chat (:class:`telegram.Chat`): Optional. The chat on behalf of which the reaction was
            changed, if the user is anonymous.
    )
actor_chatr   r   r   new_reactionold_reactionuserNr   r   r   r   rA   r@   rB   r?   r   c                H   t         	|   |       || _        || _        || _        t        |      | _        t        |      | _        || _        || _	        | j                  | j                  | j                  | j                  | j                  f| _
        | j                          y r   )r   r   r   r   r   r   rA   r@   rB   r?   r   r   )
r   r   r   r   rA   r@   rB   r?   r   r   s
            r    r   zMessageReactionUpdated.__init__   s     	J/	)"&	6H6V6H6V %)	*4 IIOOII
 	r!   r"   r#   r   r$   c                 2   | j                  |      }|syt        |      }t        |j                  d      |      |d<   t	        j
                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t        j
                  |j                  d      |      |d<   t	        j
                  |j                  d      |      |d<   t        |   ||	      S )
r&   Nr   r'   r   rA   r@   rB   r?   r)   )
r*   r   r   r+   r   r,   r   r-   r
   r   r.   s       r    r,   zMessageReactionUpdated.de_json   s    
 t$ 2#6
%dhhv&6zJV||DHHV$4c:V+33DHH^4LcR^+33DHH^4LcR^||DHHV$4c:V!\\$((<*@#F\wDc22r!   )NNr1   )r2   r3   r4   r5   r6   r   r7   r8   r9   r   r   r   r
   r   r   r:   r,   r;   r<   s   @r    r>   r>   l   s    #JI"  $%) *.  ll	
 |, |, tn TN X&B >B3H%3,4UO3	*	+3 3r!   r>   )r5   r9   r8   collections.abcr   typingr   r   telegram._chatr   telegram._reactionr   r   telegram._telegramobjectr	   telegram._userr
   telegram._utils.argumentparsingr   telegram._utils.datetimer   r   telegram._utils.typesr   telegramr   r   r>    r!   r    <module>rP      sL   & X  $ *  : 3  > Q *E3. E3Pe3^ e3r!   