
    i:                         d Z ddlZddl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 ddlmZmZ dd	lmZ erdd
lmZmZ  G d de
          Z G d de
          Z G d de
          Z G d de
          ZdS )zGThis module contains an objects that are related to Telegram giveaways.    N)TYPE_CHECKINGOptionalSequenceTuple)Chat)TelegramObject)User)parse_sequence_arg)extract_tzinfo_from_defaultsfrom_timestamp)JSONDict)BotMessagec                       e Zd ZdZdZ	 	 	 	 	 ddddee         dej        dede	e
         d	e	e
         d
e	e         de	ee                  de	e         de	e         f fdZede	e         ddde	d          f fd            Z xZS )Giveawaya  This object represents a message about a scheduled giveaway.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if their :attr:`chats`, :attr:`winners_selection_date` and
    :attr:`winner_count` are equal.

    .. versionadded:: 20.8

    Args:
        chats (Tuple[:class:`telegram.Chat`]): The list of chats which the user must join to
            participate in the giveaway.
        winners_selection_date (:class:`datetime.datetime`): The date when the giveaway winner will
            be selected. |datetime_localization|
        winner_count (:obj:`int`): The number of users which are supposed to be selected as winners
            of the giveaway.
        only_new_members (:obj:`True`, optional): If :obj:`True`, only users who join the chats
            after the giveaway started should be eligible to win.
        has_public_winners (:obj:`True`, optional): :obj:`True`, if the list of giveaway winners
            will be visible to everyone
        prize_description (:obj:`str`, optional): Description of additional giveaway prize
        country_codes (Sequence[:obj:`str`]): A list of two-letter ISO 3166-1 alpha-2
            country codes indicating the countries from which eligible users for the giveaway must
            come. If empty, then all users can participate in the giveaway. Users with a phone
            number that was bought on Fragment can always participate in giveaways.
        premium_subscription_month_count (:obj:`int`, optional): The number of months the Telegram
            Premium subscription won from the giveaway will be active for.

    Attributes:
        chats (Sequence[:class:`telegram.Chat`]): The list of chats which the user must join to
            participate in the giveaway.
        winners_selection_date (:class:`datetime.datetime`): The date when the giveaway winner will
            be selected. |datetime_localization|
        winner_count (:obj:`int`): The number of users which are supposed to be selected as winners
            of the giveaway.
        only_new_members (:obj:`True`): Optional. If :obj:`True`, only users who join the chats
            after the giveaway started should be eligible to win.
        has_public_winners (:obj:`True`): Optional. :obj:`True`, if the list of giveaway winners
            will be visible to everyone
        prize_description (:obj:`str`): Optional. Description of additional giveaway prize
        country_codes (Tuple[:obj:`str`]): Optional. A tuple of two-letter ISO 3166-1 alpha-2
            country codes indicating the countries from which eligible users for the giveaway must
            come. If empty, then all users can participate in the giveaway. Users with a phone
            number that was bought on Fragment can always participate in giveaways.
        premium_subscription_month_count (:obj:`int`): Optional. The number of months the Telegram
            Premium subscription won from the giveaway will be active for.
    )chatscountry_codeshas_public_winnersonly_new_members premium_subscription_month_countprize_descriptionwinner_countwinners_selection_dateN
api_kwargsr   r   r   r   r   r   r   r   r   c	                J   t                                          |	           t          |          | _        || _        || _        || _        || _        || _        t          |          | _
        || _        | j        | j        | j        f| _        |                                  d S Nr   )super__init__tupler   r   r   r   r   r   r
   r   r   	_id_attrs_freeze)selfr   r   r   r   r   r   r   r   r   	__class__s             X/var/www/html/crypto-bot/backend/venv/lib/python3.11/site-packages/telegram/_giveaway.pyr   zGiveaway.__init__]   s     	J///',U||
9O#!-0@2D0A.@.O.O?_- J'
 	    databotr   returnc                 X   |                      |          }|dS t          |          }t          t          j        |                    d          |                    |d<   t          |                    d          |          |d<   t                                          ||          S )+See :obj:`telegram.TelegramObject.de_json`.Nr   r   tzinfor'   r(   )	_parse_datar   r    r   de_listgetr   r   de_jsonclsr'   r(   
loc_tzinfor$   s       r%   r2   zGiveaway.de_json}   s     t$$<4 2#66
dl488G+<+<cBBCCW)7HH-..z*
 *
 *
%& wwDc222r&   )NNNNN)__name__
__module____qualname____doc__	__slots__r   r   datetimeintr   boolstrr   r   classmethodr2   __classcell__r$   s   @r%   r   r   "   s;       - -^	I  ,0-1+/15:> *.  ~ !) 1 	
 #4. %TN $C=  . +33- X&     @ 38H- 3E 3hz>R 3 3 3 3 3 [3 3 3 3 3r&   r   c                   >     e Zd ZdZdZdddee         f fdZ xZS )GiveawayCreatedz}This object represents a service message about the creation of a scheduled giveaway.
    Currently holds no information.
     Nr   r   c                t    t                                          |           |                                  d S r   )r   r   r"   )r#   r   r$   s     r%   r   zGiveawayCreated.__init__   s/    J///r&   )	r6   r7   r8   r9   r:   r   r   r   r@   rA   s   @r%   rC   rC      sg          I;?   hx&8          r&   rC   c                       e Zd ZdZdZ	 	 	 	 	 	 ddddededej        ded	ee	         d
e
e         de
e         de
e         de
e         de
e         de
e         de
e         f fdZede
e         ddde
d          f fd            Z xZS )GiveawayWinnersa?  This object represents a message about the completion of a giveaway with public winners.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if their :attr:`chat`, :attr:`giveaway_message_id`,
    :attr:`winners_selection_date`, :attr:`winner_count` and :attr:`winners` are equal.

    .. versionadded:: 20.8

    Args:
        chat (:class:`telegram.Chat`): The chat that created the giveaway
        giveaway_message_id (:obj:`int`): Identifier of the message with the giveaway in the chat
        winners_selection_date (:class:`datetime.datetime`): Point in time when winners of the
            giveaway were selected. |datetime_localization|
        winner_count (:obj:`int`): Total number of winners in the giveaway
        winners	(Sequence[:class:`telegram.User`]): List of up to
            :tg-const:`telegram.constants.GiveawayLimit.MAX_WINNERS` winners of the giveaway
        additional_chat_count (:obj:`int`, optional): The number of other chats the user had to
            join in order to be eligible for the giveaway
        premium_subscription_month_count (:obj:`int`, optional): The number of months the Telegram
            Premium subscription won from the giveaway will be active for
        unclaimed_prize_count (:obj:`int`, optional): Number of undistributed prizes
        only_new_members (:obj:`True`, optional): :obj:`True`, if only users who had joined the
            chats after the giveaway started were eligible to win
        was_refunded (:obj:`True`, optional): :obj:`True`, if the giveaway was canceled because the
            payment for it was refunded
        prize_description (:obj:`str`, optional): Description of additional giveaway prize

    Attributes:
        chat (:class:`telegram.Chat`): The chat that created the giveaway
        giveaway_message_id (:obj:`int`): Identifier of the message with the giveaway in the chat
        winners_selection_date (:class:`datetime.datetime`): Point in time when winners of the
            giveaway were selected. |datetime_localization|
        winner_count (:obj:`int`): Total number of winners in the giveaway
        winners	(Tuple[:class:`telegram.User`]): tuple of up to
            :tg-const:`telegram.constants.GiveawayLimit.MAX_WINNERS` winners of the giveaway
        additional_chat_count (:obj:`int`): Optional. The number of other chats the user had to
            join in order to be eligible for the giveaway
        premium_subscription_month_count (:obj:`int`): Optional. The number of months the Telegram
            Premium subscription won from the giveaway will be active for
        unclaimed_prize_count (:obj:`int`): Optional. Number of undistributed prizes
        only_new_members (:obj:`True`): Optional. :obj:`True`, if only users who had joined the
            chats after the giveaway started were eligible to win
        was_refunded (:obj:`True`): Optional. :obj:`True`, if the giveaway was canceled because the
            payment for it was refunded
        prize_description (:obj:`str`): Optional. Description of additional giveaway prize
    )additional_chat_countchatgiveaway_message_idr   r   r   unclaimed_prize_countwas_refundedr   winnersr   Nr   rI   rJ   r   r   rM   rH   r   rK   r   rL   r   r   c                r   t                                          |           || _        || _        || _        || _        t          |          | _        || _        || _	        || _
        |	| _        |
| _        || _        | j        | j        | j        | j        | j        f| _        |                                  d S r   )r   r   rI   rJ   r   r   r    rM   rH   r   rK   r   rL   r   r!   r"   )r#   rI   rJ   r   r   rM   rH   r   rK   r   rL   r   r   r$   s                r%   r   zGiveawayWinners.__init__   s      	J///	(; 9O#!-).w4I"?_-4I"0@,80A I$'L
 	r&   r'   r(   r   r)   c                    |                      |          }|dS t          |          }t          j        |                    d          |          |d<   t          t          j        |                    d          |                    |d<   t          |                    d          |          |d<   t                                          ||          S )r+   NrI   rM   r   r,   r.   )
r/   r   r   r2   r1   r    r	   r0   r   r   r3   s       r%   r2   zGiveawayWinners.de_json  s     t$$<4 2#66
|DHHV$4$4c::VTXXi-@-@# F FGGY)7HH-..z*
 *
 *
%& wwDc222r&   )NNNNNN)r6   r7   r8   r9   r:   r   r<   r;   r   r	   r   r=   r>   r   r   r?   r2   r@   rA   s   @r%   rG   rG      s\       - -^I* 04:>/3+/'++/& *.& & && !& !) 1	&
 & $&  (}& +33-&  (}& #4.& tn& $C=& X&& & & & & &P 38H- 3E 3hGX>Y 3 3 3 3 3 [3 3 3 3 3r&   rG   c                        e Zd ZdZdZ	 	 ddddedee         ded         d	ee         f fd
Ze	dee         ddded          f fd            Z
 xZS )GiveawayCompleteda  This object represents a service message about the completion of a giveaway without public
    winners.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if their :attr:`winner_count` and :attr:`unclaimed_prize_count` are equal.

    .. versionadded:: 20.8


    Args:
        winner_count (:obj:`int`): Number of winners in the giveaway
        unclaimed_prize_count (:obj:`int`, optional): Number of undistributed prizes
        giveaway_message (:class:`telegram.Message`, optional): Message with the giveaway that was
            completed, if it wasn't deleted

    Attributes:
        winner_count (:obj:`int`): Number of winners in the giveaway
        unclaimed_prize_count (:obj:`int`): Optional. Number of undistributed prizes
        giveaway_message (:class:`telegram.Message`): Optional. Message with the giveaway that was
            completed, if it wasn't deleted
    )giveaway_messagerK   r   Nr   r   rK   rR   r   r   c                    t                                          |           || _        || _        || _        | j        | j        f| _        |                                  d S r   )r   r   r   rK   rR   r!   r"   )r#   r   rK   rR   r   r$   s        r%   r   zGiveawayCompleted.__init__0  sb     	J///!-4I"5E &

 	r&   r'   r(   r   r)   c                     |                      |          }|dS ddlm}  |j        |                    d          |          |d<   t                                          ||          S )r+   Nr   )r   rR   r.   )r/   telegram._messager   r2   r1   r   )r4   r'   r(   r   r$   s       r%   r2   zGiveawayCompleted.de_jsonE  su     t$$<4 	.-----#27?488<N3O3OQT#U#U wwDc222r&   )NN)r6   r7   r8   r9   r:   r<   r   r   r   r?   r2   r@   rA   s   @r%   rQ   rQ     s         , NI
 0404	 *.    (} #9-	 X&     * 38H- 3E 3hGZ>[ 3 3 3 3 3 [3 3 3 3 3r&   rQ   )r9   r;   typingr   r   r   r   telegram._chatr   telegram._telegramobjectr   telegram._userr	   telegram._utils.argumentparsingr
   telegram._utils.datetimer   r   telegram._utils.typesr   telegramr   r   r   rC   rG   rQ   rD   r&   r%   <module>r^      s  & N M  ; ; ; ; ; ; ; ; ; ; ; ;       3 3 3 3 3 3       > > > > > > Q Q Q Q Q Q Q Q * * * * * * &%%%%%%%%k3 k3 k3 k3 k3~ k3 k3 k3\
 
 
 
 
n 
 
 
w3 w3 w3 w3 w3n w3 w3 w3t;3 ;3 ;3 ;3 ;3 ;3 ;3 ;3 ;3 ;3r&   