
    i=                     J   d 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
 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  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 )z;This module contains the Telegram Business related classes.    )datetime)TYPE_CHECKINGOptionalSequenceTuple)Chat)Location)Sticker)TelegramObject)User)parse_sequence_arg)extract_tzinfo_from_defaultsfrom_timestamp)JSONDict)Botc                        e Zd ZdZdZdddeddded	ed
edede	e
         f fdZede	e
         ddde	d          f fd            Z xZS )BusinessConnectiona3  
    Describes the connection of the bot with a business account.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal if their :attr:`id`, :attr:`user`, :attr:`user_chat_id`, :attr:`date`,
    :attr:`can_reply`, and :attr:`is_enabled` are equal.

    .. versionadded:: 21.1

    Args:
        id (:obj:`str`): Unique identifier of the business connection.
        user (:class:`telegram.User`): Business account user that created the business connection.
        user_chat_id (:obj:`int`): Identifier of a private chat with the user who created the
            business connection.
        date (:obj:`datetime.datetime`): Date the connection was established in Unix time.
        can_reply (:obj:`bool`): True, if the bot can act on behalf of the business account in
            chats that were active in the last 24 hours.
        is_enabled (:obj:`bool`): True, if the connection is active.

    Attributes:
        id (:obj:`str`): Unique identifier of the business connection.
        user (:class:`telegram.User`): Business account user that created the business connection.
        user_chat_id (:obj:`int`): Identifier of a private chat with the user who created the
            business connection.
        date (:obj:`datetime.datetime`): Date the connection was established in Unix time.
        can_reply (:obj:`bool`): True, if the bot can act on behalf of the business account in
            chats that were active in the last 24 hours.
        is_enabled (:obj:`bool`): True, if the connection is active.
    )	can_replydateid
is_enableduseruser_chat_idN
api_kwargsr   r   r   r   r   r   r   r   c                   t                                          |           || _        || _        || _        || _        || _        || _        | j        | j        | j        | j        | j        | j        f| _        | 	                                 d S Nr   )
super__init__r   r   r   r   r   r   	_id_attrs_freeze)	selfr   r   r   r   r   r   r   	__class__s	           X/var/www/html/crypto-bot/backend/venv/lib/python3.11/site-packages/telegram/_business.pyr   zBusinessConnection.__init__N   s     	J///	!-"	( * GIINO
 	    databotr   returnc                 >   |                      |          }|sdS t          |          }t          |                    d          |          |d<   t	          j        |                    d          |          |d<   t                                          ||          S ),See :meth:`telegram.TelegramObject.de_json`.Nr   )tzinfor   r&   r'   )_parse_datar   r   getr   de_jsonr   )clsr&   r'   
loc_tzinfor#   s       r$   r/   zBusinessConnection.de_jsonl   s     t$$ 	4 2#66
%dhhv&6&6zJJJV|DHHV$4$4c::VwwDc222r%   )__name__
__module____qualname____doc__	__slots__strintr   boolr   r   r   classmethodr/   __classcell__r#   s   @r$   r   r   &   s         <I$ *.    	
    X&     < 38H- 3E 3hG[>\ 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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 )BusinessMessagesDeleteda  
    This object is received when messages are deleted from a connected business account.

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

    .. versionadded:: 21.1

    Args:
        business_connection_id (:obj:`str`): Unique identifier of the business connection.
        chat (:class:`telegram.Chat`): Information about a chat in the business account. The bot
            may not have access to the chat or the corresponding user.
        message_ids (Sequence[:obj:`int`]): A list of identifiers of the deleted messages in the
            chat of the business account.

    Attributes:
        business_connection_id (:obj:`str`): Unique identifier of the business connection.
        chat (:class:`telegram.Chat`): Information about a chat in the business account. The bot
            may not have access to the chat or the corresponding user.
        message_ids (Tuple[:obj:`int`]): A list of identifiers of the deleted messages in the
            chat of the business account.
    )business_connection_idchatmessage_idsNr   r?   r@   rA   r   c                    t                                          |           || _        || _        t	          |          | _        | j        | j        | j        f| _        |                                  d S r   )r   r   r?   r@   r   rA   r    r!   )r"   r?   r@   rA   r   r#   s        r$   r   z BusinessMessagesDeleted.__init__   sn     	J///+A#	,>{,K,K 'I
 	r%   r&   r'   r   r(   c                     |                      |          }|sdS t          j        |                    d          |          |d<   t	                                          ||          S )r*   Nr@   r,   )r-   r   r/   r.   r   r0   r&   r'   r#   s      r$   r/   zBusinessMessagesDeleted.de_json   s^     t$$ 	4|DHHV$4$4c::VwwDc222r%   )r2   r3   r4   r5   r6   r7   r   r   r8   r   r   r   r:   r/   r;   r<   s   @r$   r>   r>   }   s         0I *.   #  c]	 X&     * 	38H- 	3E 	3hG`>a 	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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 )BusinessIntroa3  
    This object contains information about the start page settings of a Telegram Business account.

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

    .. versionadded:: 21.1

    Args:
        title (:obj:`str`, optional): Title text of the business intro.
        message (:obj:`str`, optional): Message text of the business intro.
        sticker (:class:`telegram.Sticker`, optional): Sticker of the business intro.

    Attributes:
        title (:obj:`str`): Optional. Title text of the business intro.
        message (:obj:`str`): Optional. Message text of the business intro.
        sticker (:class:`telegram.Sticker`): Optional. Sticker of the business intro.
    )messagestickertitleNr   rI   rG   rH   r   c                    t                                          |           || _        || _        || _        | j        | j        | j        f| _        |                                  d S r   )r   r   rI   rG   rH   r    r!   )r"   rI   rG   rH   r   r#   s        r$   r   zBusinessIntro.__init__   sZ     	J///$)
&-*1*dlDLAr%   r&   r'   r   r(   c                     |                      |          }|sdS t          j        |                    d          |          |d<   t	                                          ||          S )r*   NrH   r,   )r-   r
   r/   r.   r   rD   s      r$   r/   zBusinessIntro.de_json   s^     t$$ 	4!/$((9*=*=sCCYwwDc222r%   )NNN)r2   r3   r4   r5   r6   r   r7   r
   r   r   r:   r/   r;   r<   s   @r$   rF   rF      s         (I  $!%%)	 *.  } # '"	 X&     " 	38H- 	3E 	3h>W 	3 	3 	3 	3 	3 [	3 	3 	3 	3 	3r%   rF   c            	            e Zd ZdZdZ	 dddd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 )BusinessLocationaD  
    This object contains information about the location of a Telegram Business account.

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

    .. versionadded:: 21.1

    Args:
        address (:obj:`str`): Address of the business.
        location (:class:`telegram.Location`, optional): Location of the business.

    Attributes:
        address (:obj:`str`): Address of the business.
        location (:class:`telegram.Location`): Optional. Location of the business.
    )addresslocationNr   rN   rO   r   c                    t                                          |           || _        || _        | j        f| _        |                                  d S r   )r   r   rN   rO   r    r!   )r"   rN   rO   r   r#   s       r$   r   zBusinessLocation.__init__  sJ     	J///#,4,r%   r&   r'   r   r(   c                     |                      |          }|sdS t          j        |                    d          |          |d<   t	                                          ||          S )r*   NrO   r,   )r-   r	   r/   r.   r   rD   s      r$   r/   zBusinessLocation.de_json  s`     t$$ 	4#+DHHZ,@,@#FFZwwDc222r%   )N)r2   r3   r4   r5   r6   r7   r   r	   r   r   r:   r/   r;   r<   s   @r$   rM   rM      s         $I (,
 *.   8$
 X&      	38H- 	3E 	3hGY>Z 	3 	3 	3 	3 	3 [	3 	3 	3 	3 	3r%   rM   c                        e Zd ZdZdZdddededee         f fdZd	ed
e	eeef         fdZ
ed
e	eeef         fd            Zed
e	eeef         fd            Z xZS )BusinessOpeningHoursIntervala  
    This object describes an interval of time during which a business is open.

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

    .. versionadded:: 21.1

    Examples:
        A day has (24 * 60 =) 1440 minutes, a week has (7 * 1440 =) 10080 minutes.
        Starting the the minute's sequence from Monday, example values of
        :attr:`opening_minute`, :attr:`closing_minute` will map to the following day times:

        * Monday - 8am to 8:30pm:
            - ``opening_minute = 480`` :guilabel:`8 * 60`
            - ``closing_minute = 1230`` :guilabel:`20 * 60 + 30`
        * Tuesday - 24 hours:
            - ``opening_minute = 1440`` :guilabel:`24 * 60`
            - ``closing_minute = 2879`` :guilabel:`2 * 24 * 60 - 1`
        * Sunday - 12am - 11:58pm:
            - ``opening_minute = 8640`` :guilabel:`6 * 24 * 60`
            - ``closing_minute = 10078`` :guilabel:`7 * 24 * 60 - 2`

    Args:
        opening_minute (:obj:`int`): The minute's sequence number in a week, starting on Monday,
            marking the start of the time interval during which the business is open;
            0 - 7 * 24 * 60.
        closing_minute (:obj:`int`): The minute's
            sequence number in a week, starting on Monday, marking the end of the time interval
            during which the business is open; 0 - 8 * 24 * 60

    Attributes:
        opening_minute (:obj:`int`): The minute's sequence number in a week, starting on Monday,
            marking the start of the time interval during which the business is open;
            0 - 7 * 24 * 60.
        closing_minute (:obj:`int`): The minute's
            sequence number in a week, starting on Monday, marking the end of the time interval
            during which the business is open; 0 - 8 * 24 * 60
    )_closing_time_opening_timeclosing_minuteopening_minuteNr   rW   rV   r   c                    t                                          |           || _        || _        d | _        d | _        | j        | j        f| _        |                                  d S r   )r   r   rW   rV   rU   rT   r    r!   )r"   rW   rV   r   r#   s       r$   r   z%BusinessOpeningHoursInterval.__init__W  sc     	J///#1#1=A=A-t/BCr%   minuter(   c                 *    |dz  |dz  dz  |dz  dz  fS )Ni  <    )r"   rY   s     r$   _parse_minutez*BusinessOpeningHoursInterval._parse_minutei  s%    $ 3Vd]R5GHHr%   c                 \    | j         |                     | j                  | _         | j         S )aW  Convenience attribute. A :obj:`tuple` parsed from :attr:`opening_minute`. It contains
        the `weekday`, `hour` and `minute` in the same ranges as :attr:`datetime.datetime.weekday`,
        :attr:`datetime.datetime.hour` and :attr:`datetime.datetime.minute`

        Returns:
            Tuple[:obj:`int`, :obj:`int`, :obj:`int`]:
        )rU   r]   rW   r"   s    r$   opening_timez)BusinessOpeningHoursInterval.opening_timel  /     %!%!3!3D4G!H!HD!!r%   c                 \    | j         |                     | j                  | _         | j         S )aW  Convenience attribute. A :obj:`tuple` parsed from :attr:`closing_minute`. It contains
        the `weekday`, `hour` and `minute` in the same ranges as :attr:`datetime.datetime.weekday`,
        :attr:`datetime.datetime.hour` and :attr:`datetime.datetime.minute`

        Returns:
            Tuple[:obj:`int`, :obj:`int`, :obj:`int`]:
        )rT   r]   rV   r_   s    r$   closing_timez)BusinessOpeningHoursInterval.closing_timey  ra   r%   )r2   r3   r4   r5   r6   r8   r   r   r   r   r]   propertyr`   rc   r;   r<   s   @r$   rS   rS   +  s       ' 'R WI *.   
 X&     $IC IE#sC-,@ I I I I 
"eCcM2 
" 
" 
" X
" 
"eCcM2 
" 
" 
" X
" 
" 
" 
" 
"r%   rS   c                        e Zd ZdZdZddd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 )BusinessOpeningHoursaS  
    This object describes the opening hours of a business.

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

    .. versionadded:: 21.1

    Args:
        time_zone_name (:obj:`str`): Unique name of the time zone for which the opening
            hours are defined.
        opening_hours (Sequence[:class:`telegram.BusinessOpeningHoursInterval`]): List of
            time intervals describing business opening hours.

    Attributes:
        time_zone_name (:obj:`str`): Unique name of the time zone for which the opening
            hours are defined.
        opening_hours (Sequence[:class:`telegram.BusinessOpeningHoursInterval`]): List of
            time intervals describing business opening hours.
    )opening_hourstime_zone_nameNr   rh   rg   r   c                    t                                          |           || _        t          |          | _        | j        | j        f| _        |                                  d S r   )r   r   rh   r   rg   r    r!   )r"   rh   rg   r   r#   s       r$   r   zBusinessOpeningHours.__init__  sd     	J///#1EWF
 F
 -t/ABr%   r&   r'   r   r(   c                     |                      |          }|sdS t                              |                    d          |          |d<   t	                                          ||          S )r*   Nrg   r,   )r-   rS   de_listr.   r   r/   rD   s      r$   r/   zBusinessOpeningHours.de_json  sj     t$$ 	4 < D DHH_%%s!
 !
_ wwDc222r%   )r2   r3   r4   r5   r6   r7   r   rS   r   r   r   r:   r/   r;   r<   s   @r$   rf   rf     s         , 4I *.     <=
 X&     " 38H- 3E 3hG]>^ 3 3 3 3 3 [3 3 3 3 3r%   rf   N) r5   r   typingr   r   r   r   telegram._chatr   telegram._files.locationr	   telegram._files.stickerr
   telegram._telegramobjectr   telegram._userr   telegram._utils.argumentparsingr   telegram._utils.datetimer   r   telegram._utils.typesr   telegramr   r   r>   rF   rM   rS   rf   r\   r%   r$   <module>rv      s  ( B A       ; ; ; ; ; ; ; ; ; ; ; ;       - - - - - - + + + + + + 3 3 3 3 3 3       > > > > > > Q Q Q Q Q Q Q Q * * * * * * T3 T3 T3 T3 T3 T3 T3 T3n>3 >3 >3 >3 >3n >3 >3 >3B63 63 63 63 63N 63 63 63r13 13 13 13 13~ 13 13 13hY" Y" Y" Y" Y"> Y" Y" Y"x63 63 63 63 63> 63 63 63 63 63r%   