
    i:-                     b   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 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mZmZ ddlmZ ddlmZ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# G d de          Z$dS )zCThis module contains objects that represent paid media in Telegram.    N)Sequence)TYPE_CHECKINGFinal)	constants)	PhotoSize)Video)TelegramObject)User)enum)de_json_optionalde_list_optionalparse_sequence_argto_timedelta)get_timedelta_value)JSONDict
TimePeriod)Botc                        e Zd ZU dZdZej        j        Zee	         e
d<   	 ej        j        Zee	         e
d<   	 ej        j        Zee	         e
d<   	 ddde	d	edz  d
df fdZeddeddd
d f fd            Z xZS )	PaidMediaa  Describes the paid media added to a message. Currently, it can be one of:

    * :class:`telegram.PaidMediaPreview`
    * :class:`telegram.PaidMediaPhoto`
    * :class:`telegram.PaidMediaVideo`

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

    .. versionadded:: 21.4

    Args:
        type (:obj:`str`): Type of the paid media.

    Attributes:
        type (:obj:`str`): Type of the paid media.
    )typePREVIEWPHOTOVIDEON
api_kwargsr   r   returnc                    t                                          |           t          j        t          j        ||          | _        | j        f| _        |                                  d S Nr   )	super__init__r   
get_memberr   PaidMediaTyper   	_id_attrs_freeze)selfr   r   	__class__s      S/Users/shanyulin/my-agent/.venv/lib/python3.11/site-packages/telegram/_paidmedia.pyr    zPaidMedia.__init__H   sT     	J///)@$MM	)    databot
Bot | Nonec                    |                      |          }| j        t          | j        t          | j        t          i}| t          u rG|                    d          |v r0||	                    d                   
                    ||          S d|v r1|                    d          x}rt          j        |          nd|d<   t                      
                    ||          S )aX  Converts JSON data to the appropriate :class:`PaidMedia` object, i.e. takes
        care of selecting the correct subclass.

        Args:
            data (dict[:obj:`str`, ...]): The JSON data.
            bot (:class:`telegram.Bot`, optional): The bot associated with this object.

        Returns:
            The Telegram object.

        r   r)   r*   duration)secondsN)_parse_datar   PaidMediaPreviewr   PaidMediaPhotor   PaidMediaVideor   getpopde_jsondtm	timedeltar   )clsr)   r*   _class_mappingsr&   s        r'   r6   zPaidMedia.de_jsonT   s     t$$ K)I~I~6
 ) 0 0N B B!$((6"2"23;;3;OOOAE*AUAU<UA`s}Q7777\`DwwDc222r(   N)__name__
__module____qualname____doc__	__slots__r   r"   r   r   str__annotations__r   r   r   r    classmethodr6   __classcell__r&   s   @r'   r   r   ,   s         $ I#19GU3Z999;!/5E5:5559!/5E5:5559 '+	
 
 

 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dedz  dedz  dedz  dedz  d	df
 fd
Ze	d	ee
j        z  dz  fd            Z xZS )r1   a  The paid media isn't available before the payment.

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

    .. versionadded:: 21.4

    .. versionchanged:: v22.2
       As part of the migration to representing time periods using ``datetime.timedelta``,
       equality comparison now considers integer durations and equivalent timedeltas as equal.

    Args:
        type (:obj:`str`): Type of the paid media, always :tg-const:`telegram.PaidMedia.PREVIEW`.
        width (:obj:`int`, optional): Media width as defined by the sender.
        height (:obj:`int`, optional): Media height as defined by the sender.
        duration (:obj:`int` | :class:`datetime.timedelta`, optional): Duration of the media in
            seconds as defined by the sender.

            .. versionchanged:: v22.2
                |time-period-input|

    Attributes:
        type (:obj:`str`): Type of the paid media, always :tg-const:`telegram.PaidMedia.PREVIEW`.
        width (:obj:`int`): Optional. Media width as defined by the sender.
        height (:obj:`int`): Optional. Media height as defined by the sender.
        duration (:obj:`int` | :class:`datetime.timedelta`): Optional. Duration of the media in
            seconds as defined by the sender.

            .. deprecated:: v22.2
                |time-period-int-deprecated|
    )	_durationheightwidthNr   rJ   rI   r.   r   r   c                >   t                                          t          j        |           |                                 5  || _        || _        t          |          | _        | j	        | j        | j        | j        f| _
        d d d            d S # 1 swxY w Y   d S N)r   r   )r   r    r   r   	_unfrozenrJ   rI   r   rH   r   r#   )r%   rJ   rI   r.   r   r&   s        r'   r    zPaidMediaPreview.__init__   s     	i/JGGG^^ 	R 	R%*DJ&,DK3?3I3IDN"iT[$.QDN	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	Rs   ABBBc                 .    t          | j        d          S )Nr.   )	attribute)r   rH   )r%   s    r'   r.   zPaidMediaPreview.duration   s    "4>ZHHHHr(   )NNN)r=   r>   r?   r@   rA   intr   r   r    propertyr7   r8   r.   rE   rF   s   @r'   r1   r1   r   s         B 1I !!&*	R '+R R RTzR d
R t#	R tOR 
R R R R R R" I#-4 I I I XI I I I Ir(   r1   c                   v     e Zd ZdZdZddded         dedz  ddf fd	Zedd
edddd f fd            Z	 xZ
S )r2   a3  
    The paid media is a photo.

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

    .. versionadded:: 21.4

    Args:
        type (:obj:`str`): Type of the paid media, always :tg-const:`telegram.PaidMedia.PHOTO`.
        photo (Sequence[:class:`telegram.PhotoSize`]): The photo.

    Attributes:
        type (:obj:`str`): Type of the paid media, always :tg-const:`telegram.PaidMedia.PHOTO`.
        photo (tuple[:class:`telegram.PhotoSize`]): The photo.
    )photoNr   rS   r   r   r   c                
   t                                          t          j        |           |                                 5  t          |          | _        | j        | j        f| _        d d d            d S # 1 swxY w Y   d S rL   )	r   r    r   r   rM   r   rS   r   r#   )r%   rS   r   r&   s      r'   r    zPaidMediaPhoto.__init__   s     	io*EEE^^ 	5 	50B50I0IDJ"i4DN	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   (A88A<?A<r)   r*   r+   c                     |                      |          }t          |                    d          t          |          |d<   t	                                          ||          S )NrS   r-   )r0   r   r4   r   r   r6   r9   r)   r*   r&   s      r'   r6   zPaidMediaPhoto.de_json   sO    t$$('):):IsKKWwwDc222r(   r<   )r=   r>   r?   r@   rA   r   r   r    rD   r6   rE   rF   s   @r'   r2   r2      s         " I '+	5 5 5$5 tO	5
 
5 5 5 5 5 5 3 38 3, 3BR 3 3 3 3 3 [3 3 3 3 3r(   r2   c                   j     e Zd ZdZdZdddededz  ddf fdZedd	ed
ddd f fd            Z	 xZ
S )r3   a  
    The paid media is a video.

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

    .. versionadded:: 21.4

    Args:
        type (:obj:`str`): Type of the paid media, always :tg-const:`telegram.PaidMedia.VIDEO`.
        video (:class:`telegram.Video`): The video.

    Attributes:
        type (:obj:`str`): Type of the paid media, always :tg-const:`telegram.PaidMedia.VIDEO`.
        video (:class:`telegram.Video`): The video.
    )videoNr   rX   r   r   c                    t                                          t          j        |           |                                 5  || _        | j        | j        f| _        d d d            d S # 1 swxY w Y   d S rL   )r   r    r   r   rM   rX   r   r#   )r%   rX   r   r&   s      r'   r    zPaidMediaVideo.__init__   s     	io*EEE^^ 	5 	5 %DJ"i4DN	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   A++A/2A/r)   r*   r+   c                     |                      |          }t          |                    d          t          |          |d<   t	                                          ||          S )NrX   r-   )r0   r   r4   r   r   r6   rV   s      r'   r6   zPaidMediaVideo.de_json   sO    t$$('):):E3GGWwwDc222r(   r<   )r=   r>   r?   r@   rA   r   r   r    rD   r6   rE   rF   s   @r'   r3   r3      s         " I '+	5 5 55 tO	5
 
5 5 5 5 5 5 3 38 3, 3BR 3 3 3 3 3 [3 3 3 3 3r(   r3   c            	       z     e Zd ZdZdZdddedee         dedz  ddf fd	Z	e
dd
edddd f fd            Z xZS )PaidMediaInfoa  
    Describes the paid media added to a message.

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

    .. versionadded:: 21.4

    Args:
        star_count (:obj:`int`): The number of Telegram Stars that must be paid to buy access to
            the media.
        paid_media (Sequence[:class:`telegram.PaidMedia`]): Information about the paid media.

    Attributes:
        star_count (:obj:`int`): The number of Telegram Stars that must be paid to buy access to
            the media.
        paid_media (tuple[:class:`telegram.PaidMedia`]): Information about the paid media.
    )
paid_media
star_countNr   r^   r]   r   r   c                    t                                          |           || _        t          |          | _        | j        | j        f| _        |                                  d S r   )r   r    r^   r   r]   r#   r$   )r%   r^   r]   r   r&   s       r'   r    zPaidMediaInfo.__init__  sW     	J///)1CJ1O1O/4?;r(   r)   r*   r+   c                     |                      |          }t          |                    d          t          |          |d<   t	                                          ||          S )Nr]   r-   )r0   r   r4   r   r   r6   rV   s      r'   r6   zPaidMediaInfo.de_json"  sQ    t$$-dhh|.D.DiQTUU\wwDc222r(   r<   )r=   r>   r?   r@   rA   rP   r   r   r   r    rD   r6   rE   rF   s   @r'   r\   r\      s         & -I '+   Y'
 tO 
      3 38 3, 3/ 3 3 3 3 3 [3 3 3 3 3r(   r\   c            	       n     e Zd ZdZdZdddddededz  d	df fd
Zeddeddd	d f fd            Z	 xZ
S )PaidMediaPurchaseda  This object contains information about a paid media purchase.

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

    Note:
        In Python :keyword:`from` is a reserved word. Use :paramref:`from_user` instead.

    .. versionadded:: 21.6

    Args:
        from_user (:class:`telegram.User`): User who purchased the media.
        paid_media_payload (:obj:`str`): Bot-specified paid media payload.

    Attributes:
        from_user (:class:`telegram.User`): User who purchased the media.
        paid_media_payload (:obj:`str`): Bot-specified paid media payload.
    )	from_userpaid_media_payloadNr   rc   r
   rd   r   r   c                    t                                          |           || _        || _        | j        | j        f| _        |                                  d S r   )r   r    rc   rd   r#   r$   )r%   rc   rd   r   r&   s       r'   r    zPaidMediaPurchased.__init__@  sQ     	J///('9.$*ABr(   r)   r*   r+   c                     |                      |          }t          j        |                    d          |          |d<   t	                                          ||          S )Nfromr-   rc   )r0   r
   r6   r5   r   rV   s      r'   r6   zPaidMediaPurchased.de_jsonN  sS    t$$ Ldhhv.>.>CHHH[wwDc222r(   r<   )r=   r>   r?   r@   rA   rB   r   r    rD   r6   rE   rF   s   @r'   rb   rb   *  s         & 4I '+    
 tO 
      3 38 3, 3BV 3 3 3 3 3 [3 3 3 3 3r(   rb   )%r@   datetimer7   collections.abcr   typingr   r   telegramr   telegram._files.photosizer   telegram._files.videor   telegram._telegramobjectr	   telegram._userr
   telegram._utilsr   telegram._utils.argumentparsingr   r   r   r   telegram._utils.datetimer   telegram._utils.typesr   r   r   r   r1   r2   r3   r\   rb    r(   r'   <module>ru      sM  & J I     $ $ $ $ $ $ ' ' ' ' ' ' ' '       / / / / / / ' ' ' ' ' ' 3 3 3 3 3 3                              9 8 8 8 8 8 6 6 6 6 6 6 6 6 C3 C3 C3 C3 C3 C3 C3 C3L7I 7I 7I 7I 7Iy 7I 7I 7It&3 &3 &3 &3 &3Y &3 &3 &3R&3 &3 &3 &3 &3Y &3 &3 &3R)3 )3 )3 )3 )3N )3 )3 )3X)3 )3 )3 )3 )3 )3 )3 )3 )3 )3r(   