
    ՟fQ>                     $   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y)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de	e
   de	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| _        | j                          y Nr   )
super__init__r   r   r   r   r   r   	_id_attrs_freeze)	selfr   r   r   r   r   r   r   	__class__s	           M/var/www/cvtools/html/venv/lib/python3.12/site-packages/telegram/_business.pyr   zBusinessConnection.__init__N   s     	J/	!-"	( * GGIIIINNOO
 	    databotr   returnc                     | j                  |      }|syt        |      }t        |j                  d      |      |d<   t	        j
                  |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   sn    
 t$ 2#6
%dhhv&6zJV||DHHV$4c:VwDc22r%   N)__name__
__module____qualname____doc__	__slots__strintr   boolr   r   r   classmethodr/   __classcell__r#   s   @r$   r   r   &   s    <I$ *.  	
    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de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 )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@   rA   rB   r   c                    t         |   |       || _        || _        t	        |      | _        | j                  | j                  | j
                  f| _        | j                          y r   )r   r   r@   rA   r   rB   r    r!   )r"   r@   rA   rB   r   r#   s        r$   r   z BusinessMessagesDeleted.__init__   s`     	J/+A#	,>{,K ''II
 	r%   r&   r'   r   r(   c                     | j                  |      }|syt        j                  |j                  d      |      |d<   t        | 	  ||      S )r*   NrA   r,   )r-   r   r/   r.   r   r0   r&   r'   r#   s      r$   r/   zBusinessMessagesDeleted.de_json   sI    
 t$||DHHV$4c:VwDc22r%   r2   )r3   r4   r5   r6   r7   r8   r   r   r9   r   r   r   r;   r/   r<   r=   s   @r$   r?   r?      s    0I *. #  c]	 X&* >B3H%3,4UO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d
ee   de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   rJ   rH   rI   r   c                    t         |   |       || _        || _        || _        | j                  | j                  | j                  f| _        | j                          y r   )r   r   rJ   rH   rI   r    r!   )r"   rJ   rH   rI   r   r#   s        r$   r   zBusinessIntro.__init__   sM     	J/$)
&-*1**dllDLLAr%   r&   r'   r   r(   c                     | j                  |      }|syt        j                  |j                  d      |      |d<   t        | 	  ||      S )r*   NrI   r,   )r-   r
   r/   r.   r   rE   s      r$   r/   zBusinessIntro.de_json   sI    
 t$!//$((9*=sCYwDc22r%   )NNNr2   )r3   r4   r5   r6   r7   r   r8   r
   r   r   r;   r/   r<   r=   s   @r$   rG   rG      s    (I  $!%%)	 *.} # '"	 X&" >B3H%3,4UO3	/	"3 3r%   rG   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d	ee   d
e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   rO   rP   r   c                    t         |   |       || _        || _        | j                  f| _        | j                          y r   )r   r   rO   rP   r    r!   )r"   rO   rP   r   r#   s       r$   r   zBusinessLocation.__init__  s9     	J/#,4,,r%   r&   r'   r   r(   c                     | j                  |      }|syt        j                  |j                  d      |      |d<   t        | 	  ||      S )r*   NrP   r,   )r-   r	   r/   r.   r   rE   s      r$   r/   zBusinessLocation.de_json$  sL    
 t$#++DHHZ,@#FZwDc22r%   r2   )r3   r4   r5   r6   r7   r8   r   r	   r   r   r;   r/   r<   r=   s   @r$   rN   rN      s    $I (,
 *. 8$
 X& >B3H%3,4UO3	$	%3 3r%   rN   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   rX   rW   r   c                    t         |   |       || _        || _        d | _        d | _        | j                  | j                  f| _        | j                          y r   )r   r   rX   rW   rV   rU   r    r!   )r"   rX   rW   r   r#   s       r$   r   z%BusinessOpeningHoursInterval.__init___  sV     	J/#1#1=A=A--t/B/BCr%   minuter(   c                 *    |dz  |dz  dz  |dz  dz  fS )Ni  <    )r"   rZ   s     r$   _parse_minutez*BusinessOpeningHoursInterval._parse_minuteq  s%    $ 3Vd]R5GHHr%   c                 r    | j                    | 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`]:
        )rV   r^   rX   r"   s    r$   opening_timez)BusinessOpeningHoursInterval.opening_timet  5     %!%!3!3D4G4G!HD!!!r%   c                 r    | j                    | 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`]:
        )rU   r^   rW   r`   s    r$   closing_timez)BusinessOpeningHoursInterval.closing_time  rb   r%   )r3   r4   r5   r6   r7   r9   r   r   r   r   r^   propertyra   rd   r<   r=   s   @r$   rT   rT   3  s    'R WI *. 
 X&$IC IE#sC-,@ I 
"eCcM2 
" 
" 
"eCcM2 
" 
"r%   rT   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d	ee	   d
e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   ri   rh   r   c                    t         |   |       || _        t        |      | _        | j                  | j                  f| _        | j                          y r   )r   r   ri   r   rh   r    r!   )r"   ri   rh   r   r#   s       r$   r   zBusinessOpeningHours.__init__  sQ     	J/#1EWF
 --t/A/ABr%   r&   r'   r   r(   c                     | j                  |      }|syt        j                  |j                  d      |      |d<   t        |   ||      S )r*   Nrh   r,   )r-   rT   de_listr.   r   r/   rE   s      r$   r/   zBusinessOpeningHours.de_json  sQ    
 t$ < D DHH_%s!
_ wDc22r%   r2   )r3   r4   r5   r6   r7   r8   r   rT   r   r   r   r;   r/   r<   r=   s   @r$   rg   rg     s~    , 4I *.   <=
 X&" >B3H%3,4UO3	(	)3 3r%   rg   N) r6   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?   rG   rN   rT   rg   r]   r%   r$   <module>rw      s   ( B  ; ;  - + 3  > Q *V3 V3r@3n @3F83N 83v33~ 33lY"> Y"x83> 83r%   