
    ia                         d Z ddlmZmZ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 erddlmZ  G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )zEThis module contains objects that represents a Telegram ReactionType.    )TYPE_CHECKINGFinalLiteral)	constants)TelegramObject)enum)de_json_optional)JSONDict)Botc                   2    e Zd ZU dZdZej        j        Zeej                 e	d<   	 ej        j
        Z
eej                 e	d<   	 ej        j        Zeej                 e	d<   	 ddded	         ej        z  d
edz  f fdZeddedddd f fd            Z xZS )ReactionTypea  Base class for Telegram ReactionType Objects.
    There exist :class:`telegram.ReactionTypeEmoji`, :class:`telegram.ReactionTypeCustomEmoji`
    and :class:`telegram.ReactionTypePaid`.

    .. versionadded:: 20.8
    .. versionchanged:: 21.5

        Added paid reaction.

    Args:
        type (:obj:`str`): Type of the reaction. Can be
            :attr:`~telegram.ReactionType.EMOJI`, :attr:`~telegram.ReactionType.CUSTOM_EMOJI` or
            :attr:`~telegram.ReactionType.PAID`.
    Attributes:
        type (:obj:`str`): Type of the reaction. Can be
            :attr:`~telegram.ReactionType.EMOJI`, :attr:`~telegram.ReactionType.CUSTOM_EMOJI` or
            :attr:`~telegram.ReactionType.PAID`.

    )typeEMOJICUSTOM_EMOJIPAIDN
api_kwargsr   )emojicustom_emojipaidr   c                    t                                          |           t          j        t          j        ||          | _        |                                  d S Nr   )super__init__r   
get_memberr   r   r   _freeze)selfr   r   	__class__s      R/Users/shanyulin/my-agent/.venv/lib/python3.11/site-packages/telegram/_reaction.pyr   zReactionType.__init__C   sI     	J///)?tLL	    databot
Bot | Nonereturnc                 ^   |                      |          }| j        t          | j        t          | j        t          i}| t          u rF|                    d          |v r/||	                    d                   
                    ||          S t                      
                    ||          S z,See :meth:`telegram.TelegramObject.de_json`.r   )r!   r"   )_parse_datar   ReactionTypeEmojir   ReactionTypeCustomEmojir   ReactionTypePaidr   getpopde_jsonr   )clsr!   r"   _class_mappingr   s       r   r-   zReactionType.de_jsonO   s     t$$ I(5H&9
 ,488F#3#3~#E#E!$((6"2"23;;D#FFFwwDc222r    N)__name__
__module____qualname____doc__	__slots__r   r   r   r   __annotations__r   r   r   r
   r   classmethodr-   __classcell__r   s   @r   r   r   "   s,         ( I+4+A+GE5'(GGG82;2H2UL%	./UUU?*3*@*ED%	&
'EEE '+	
 
 
569OO
 tO	
 
 
 
 
 
 3 38 3, 3. 3 3 3 3 3 [3 3 3 3 3r    r   c                   <     e Zd ZdZdZdddededz  f fdZ xZS )r(   aP  
    Represents a reaction with a normal emoji.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if the :attr:`emoji` is equal.

    .. versionadded:: 20.8

    Args:
        emoji (:obj:`str`): Reaction emoji. It can be one of
            :const:`telegram.constants.ReactionEmoji`.

    Attributes:
        type (:obj:`str`): Type of the reaction,
            always :tg-const:`telegram.ReactionType.EMOJI`.
        emoji (:obj:`str`): Reaction emoji. It can be one of
        :const:`telegram.constants.ReactionEmoji`.
    )r   Nr   r   r   c                    t                                          t          j        |           |                                 5  || _        | j        f| _        d d d            d S # 1 swxY w Y   d S N)r   r   )r   r   r   r   	_unfrozenr   	_id_attrs)r   r   r   r   s      r   r   zReactionTypeEmoji.__init__v   s     	l0ZHHH^^ 	+ 	+#DJ"j]DN	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+   A%%A),A)	r1   r2   r3   r4   r5   strr
   r   r8   r9   s   @r   r(   r(   `   ss         & I '+	
+ 
+ 
+
+ tO	
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+r    r(   c                   <     e Zd ZdZdZdddededz  f fdZ xZS )r)   a  
    Represents a reaction with a custom emoji.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if the :attr:`custom_emoji_id` is equal.

    .. versionadded:: 20.8

    Args:
        custom_emoji_id (:obj:`str`): Custom emoji identifier.

    Attributes:
        type (:obj:`str`): Type of the reaction,
            always :tg-const:`telegram.ReactionType.CUSTOM_EMOJI`.
        custom_emoji_id (:obj:`str`): Custom emoji identifier.

    )custom_emoji_idNr   rC   r   c                    t                                          t          j        |           |                                 5  || _        | j        f| _        d d d            d S # 1 swxY w Y   d S r<   )r   r   r   r   r=   rC   r>   )r   rC   r   r   s      r   r   z ReactionTypeCustomEmoji.__init__   s     	l7JOOO^^ 	5 	5(7D "24DN	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5r?   r@   r9   s   @r   r)   r)      ss         $ %I '+	
5 
5 
5
5 tO	
5 
5 
5 
5 
5 
5 
5 
5 
5 
5r    r)   c                   8     e Zd ZdZdZdddedz  f fdZ xZS )r*   z
    The reaction is paid.

    .. versionadded:: 21.5

    Attributes:
        type (:obj:`str`): Type of the reaction,
            always :tg-const:`telegram.ReactionType.PAID`.
     Nr   r   c                    t                                          t          j        |           |                                  d S r<   )r   r   r   r   r   )r   r   r   s     r   r   zReactionTypePaid.__init__   s4    l/JGGGr    )r1   r2   r3   r4   r5   r
   r   r8   r9   s   @r   r*   r*      sf          I8<   ho          r    r*   c                   j     e Zd ZdZdZdddedededz  f fdZe	dd	ed
ddd f fd            Z
 xZS )ReactionCountai  This class represents a reaction added to a message along with the number of times it was
    added.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if the :attr:`type` and :attr:`total_count` is equal.

    .. versionadded:: 20.8

    Args:
        type (:class:`telegram.ReactionType`): Type of the reaction.
        total_count (:obj:`int`): Number of times the reaction was added.

    Attributes:
        type (:class:`telegram.ReactionType`): Type of the reaction.
        total_count (:obj:`int`): Number of times the reaction was added.
    )total_countr   Nr   r   rJ   r   c                    t                                          |           || _        || _        | j        | j        f| _        |                                  d S r   )r   r   r   rJ   r>   r   )r   r   rJ   r   r   s       r   r   zReactionCount.__init__   sX     	J///"&	 + I
 	r    r!   r"   r#   r$   c                     |                      |          }t          |                    d          t          |          |d<   t	                                          ||          S r&   )r'   r	   r+   r   r   r-   )r.   r!   r"   r   s      r   r-   zReactionCount.de_json   sQ     t$$'(8(8,LLVwwDc222r    r0   )r1   r2   r3   r4   r5   r   intr
   r   r7   r-   r8   r9   s   @r   rI   rI      s         "I '+   
 tO     $ 3 38 3, 3/ 3 3 3 3 3 [3 3 3 3 3r    rI   N)r4   typingr   r   r   telegramr   telegram._telegramobjectr   telegram._utilsr   telegram._utils.argumentparsingr	   telegram._utils.typesr
   r   r   r(   r)   r*   rI   rF   r    r   <module>rT      s  ( L K 0 0 0 0 0 0 0 0 0 0       3 3 3 3 3 3             < < < < < < * * * * * * ;3 ;3 ;3 ;3 ;3> ;3 ;3 ;3| +  +  +  +  +  +  +  +F5 5 5 5 5l 5 5 5D    |   $03 03 03 03 03N 03 03 03 03 03r    