
    ՟fS                         d Z ddlmZmZmZmZ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 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y)zEThis module contains objects that represents a Telegram ReactionType.    )TYPE_CHECKINGDictFinalLiteralOptionalTypeUnion)	constants)TelegramObject)enum)JSONDict)Botc            	           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ed	   ej                  f   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 )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
                  ||      | _        | j                          y Nr   )super__init__r   
get_memberr
   r   r   _freeze)selfr   r   	__class__s      M/var/www/cvtools/html/venv/lib/python3.12/site-packages/telegram/_reaction.pyr   zReactionType.__init__A   s8     	J/)?)?tL	    databotr   returnc                 F   | j                  |      }|y|s	| t        u ry| j                  t        | j                  t
        | j                  t        i}| t        u r7|j                  d      |v r$||j                  d         j                  ||      S t        | )  ||      S z,See :meth:`telegram.TelegramObject.de_json`.Nr   )r$   r%   )_parse_datar   r   ReactionTypeEmojir   ReactionTypeCustomEmojir   ReactionTypePaidgetpopde_jsonr   )clsr$   r%   _class_mappingr!   s       r"   r/   zReactionType.de_jsonO   s    
 t$<|+ II(5HH&9
 ,488F#3~#E!$((6"23;;D#FFwDc22r#   N)__name__
__module____qualname____doc__	__slots__r
   r   r   r   __annotations__r   r   r	   r   r   r   r   classmethodr/   __classcell__r!   s   @r"   r   r       s    ( I+4+A+A+G+GE5''(G82;2H2H2U2UL%	../U?*3*@*@*E*ED%	&&
'E *.34i6L6LL
 X& >B3H%3,4UO3	.	!3 3r#   r   c                   <     e Zd ZdZdZdddedee   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                  |       | j	                         5  || _        | j
                  f| _        d d d        y # 1 sw Y   y xY wN)r   r   )r   r   r   r   	_unfrozenr   	_id_attrs)r    r   r   r!   s      r"   r   zReactionTypeEmoji.__init__~   sP     	l00ZH^^ 	+#DJ"jj]DN	+ 	+ 	+   AA
r3   r4   r5   r6   r7   strr   r   r   r:   r;   s   @r"   r*   r*   h   s5    & I *.	
+
+ X&	
+ 
+r#   r*   c                   <     e Zd ZdZdZdddedee   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   rE   r   c                    t         |   t        j                  |       | j	                         5  || _        | j
                  f| _        d d d        y # 1 sw Y   y xY wr>   )r   r   r   r   r?   rE   r@   )r    rE   r   r!   s      r"   r   z ReactionTypeCustomEmoji.__init__   sT     	l77JO^^ 	5(7D "224DN	5 	5 	5rA   rB   r;   s   @r"   r+   r+      s5    $ %I *.	
5
5 X&	
5 
5r#   r+   c                   8     e Zd ZdZdZdddee   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                d    t         |   t        j                  |       | j	                          y r>   )r   r   r   r   r   )r    r   r!   s     r"   r   zReactionTypePaid.__init__   s$    l//JGr#   )	r3   r4   r5   r6   r7   r   r   r   r:   r;   s   @r"   r,   r,      s(     I;? hx&8  r#   r,   c            	       x     e Zd ZdZdZddded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 )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   rL   r   c                    t         |   |       || _        || _        | j                  | j                  f| _        | j                          y r   )r   r   r   rL   r@   r   )r    r   rL   r   r!   s       r"   r   zReactionCount.__init__   sJ     	J/"&	 + II
 	r#   r$   r%   r   r&   c                     | j                  |      }|syt        j                  |j                  d      |      |d<   t        | 	  ||      S r(   )r)   r   r/   r-   r   )r0   r$   r%   r!   s      r"   r/   zReactionCount.de_json   sK    
 t$#++DHHV,<cBVwDc22r#   r2   )r3   r4   r5   r6   r7   r   intr   r   r   r9   r/   r:   r;   s   @r"   rK   rK      sw    "I *. 
 X&$ >B3H%3,4UO3	/	"3 3r#   rK   N)r6   typingr   r   r   r   r   r   r	   telegramr
   telegram._telegramobjectr   telegram._utilsr   telegram._utils.typesr   r   r   r*   r+   r,   rK   rH   r#   r"   <module>rU      sg   & L M M M  3   *E3> E3P +  +F5l 5D| $53N 53r#   