
    Th                         d Z ddl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y)zEThis module contains objects that represents a Telegram ReactionType.    )TYPE_CHECKINGFinalLiteralOptional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<   	 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` and :class:`telegram.ReactionTypeCustomEmoji`.

    .. versionadded:: 20.8

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

    )typeEMOJICUSTOM_EMOJIN
api_kwargsr   )emojicustom_emojir   c                    t         |   |       t        j                  t        j
                  ||      | _        | j                          y Nr   )super__init__r
   
get_memberr   r   r   _freeze)selfr   r   	__class__s      R/opt/server/standalone/crm/venv/lib/python3.12/site-packages/telegram/_reaction.pyr   zReactionType.__init__5   s8     	J/)?)?tL	    databotr   returnc                 L   | j                  |      }|sy| t        u rw|j                  d      | j                  | j                  fv rN|j                  d      }|| j                  k(  rt        j                  ||      S t        j                  ||      S t        |   ||      S z,See :meth:`telegram.TelegramObject.de_json`.Nr   )r    r!   )
_parse_datar   getr   r   popReactionTypeEmojide_jsonReactionTypeCustomEmojir   )clsr    r!   reaction_typer   s       r   r)   zReactionType.de_jsonC   s    
 t$,488F#3		3CSCS7T#T HHV,M		)(00d0DD*22#2FFwDc22r   N)__name__
__module____qualname____doc__	__slots__r   r   r   r   __annotations__r   r   r   r   r   r   classmethodr)   __classcell__r   s   @r   r   r      s     I+4+A+A+G+GE5''(G82;2H2H2U2UL%	../U? *.+,i.D.DD
 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__l   sP     	l00ZH^^ 	+#DJ"jj]DN	+ 	+ 	+   AA
r.   r/   r0   r1   r2   strr   r   r   r5   r6   s   @r   r(   r(   V   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   r@   r   c                    t         |   t        j                  |       | j	                         5  || _        | j
                  f| _        d d d        y # 1 sw Y   y xY wr9   )r   r   r   r   r:   r@   r;   )r   r@   r   r   s      r   r   z ReactionTypeCustomEmoji.__init__   sT     	l77JO^^ 	5(7D "224DN	5 	5 	5r<   r=   r6   s   @r   r*   r*   y   s5    $ %I *.	
5
5 X&	
5 
5r   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   rD   r   c                    t         |   |       || _        || _        | j                  | j                  f| _        | j                          y r   )r   r   r   rD   r;   r   )r   r   rD   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   )r+   r    r!   r   s      r   r)   zReactionCount.de_json   sK    
 t$#++DHHV,<cBVwDc22r   r-   )r.   r/   r0   r1   r2   r   intr   r   r   r4   r)   r5   r6   s   @r   rC   rC      sw    "I *. 
 X&$ >B3H%3,4UO3	/	"3 3r   rC   N)r1   typingr   r   r   r   r   telegramr   telegram._telegramobjectr	   telegram._utilsr
   telegram._utils.typesr   r   r   r(   r*   rC    r   r   <module>rN      sV   & L A A  3   *43> 43n +  +F5l 5D53N 53r   