L ijVdZddlZddlmZddlmZmZmZddl m Z ddl m Z ddl mZddlmZdd lmZdd lmZdd lmZmZmZdd lmZmZmZdd lmZerddlm Z GddeZ!GddeZ"GddeZ#GddeZ$GddeZ%GddeZ&GddeZ'y)z;This module contains the Telegram Business related classes.N)Sequence) TYPE_CHECKINGOptionalUnion)ZoneInfo)Chat)Location)Sticker)TelegramObject)User)de_json_optionalde_list_optionalparse_sequence_arg)extract_tzinfo_from_defaultsfrom_timestamp get_zone_info)JSONDict)Botc!eZdZdZdZ ddddeedeedeedeed eed eed eed eed eedeedeedeedeedeedeeffdZxZ S)BusinessBotRightsaW This object represents the rights of a business bot. Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if all their attributes are equal. .. versionadded:: 22.1 Args: can_reply (:obj:`bool`, optional): True, if the bot can send and edit messages in the private chats that had incoming messages in the last 24 hours. can_read_messages (:obj:`bool`, optional): True, if the bot can mark incoming private messages as read. can_delete_sent_messages (:obj:`bool`, optional): True, if the bot can delete messages sent by the bot. can_delete_all_messages (:obj:`bool`, optional): True, if the bot can delete all private messages in managed chats. can_edit_name (:obj:`bool`, optional): True, if the bot can edit the first and last name of the business account. can_edit_bio (:obj:`bool`, optional): True, if the bot can edit the bio of the business account. can_edit_profile_photo (:obj:`bool`, optional): True, if the bot can edit the profile photo of the business account. can_edit_username (:obj:`bool`, optional): True, if the bot can edit the username of the business account. can_change_gift_settings (:obj:`bool`, optional): True, if the bot can change the privacy settings pertaining to gifts for the business account. can_view_gifts_and_stars (:obj:`bool`, optional): True, if the bot can view gifts and the amount of Telegram Stars owned by the business account. can_convert_gifts_to_stars (:obj:`bool`, optional): True, if the bot can convert regular gifts owned by the business account to Telegram Stars. can_transfer_and_upgrade_gifts (:obj:`bool`, optional): True, if the bot can transfer and upgrade gifts owned by the business account. can_transfer_stars (:obj:`bool`, optional): True, if the bot can transfer Telegram Stars received by the business account to its own account, or use them to upgrade and transfer gifts. can_manage_stories (:obj:`bool`, optional): True, if the bot can post, edit and delete stories on behalf of the business account. Attributes: can_reply (:obj:`bool`): Optional. True, if the bot can send and edit messages in the private chats that had incoming messages in the last 24 hours. can_read_messages (:obj:`bool`): Optional. True, if the bot can mark incoming private messages as read. can_delete_sent_messages (:obj:`bool`): Optional. True, if the bot can delete messages sent by the bot. can_delete_all_messages (:obj:`bool`): Optional. True, if the bot can delete all private messages in managed chats. can_edit_name (:obj:`bool`): Optional. True, if the bot can edit the first and last name of the business account. can_edit_bio (:obj:`bool`): Optional. True, if the bot can edit the bio of the business account. can_edit_profile_photo (:obj:`bool`): Optional. True, if the bot can edit the profile photo of the business account. can_edit_username (:obj:`bool`): Optional. True, if the bot can edit the username of the business account. can_change_gift_settings (:obj:`bool`): Optional. True, if the bot can change the privacy settings pertaining to gifts for the business account. can_view_gifts_and_stars (:obj:`bool`): Optional. True, if the bot can view gifts and the amount of Telegram Stars owned by the business account. can_convert_gifts_to_stars (:obj:`bool`): Optional. True, if the bot can convert regular gifts owned by the business account to Telegram Stars. can_transfer_and_upgrade_gifts (:obj:`bool`): Optional. True, if the bot can transfer and upgrade gifts owned by the business account. can_transfer_stars (:obj:`bool`): Optional. True, if the bot can transfer Telegram Stars received by the business account to its own account, or use them to upgrade and transfer gifts. can_manage_stories (:obj:`bool`): Optional. True, if the bot can post, edit and delete stories on behalf of the business account. )can_change_gift_settingscan_convert_gifts_to_starscan_delete_all_messagescan_delete_sent_messages can_edit_bio can_edit_namecan_edit_profile_photocan_edit_usernamecan_manage_storiescan_read_messages can_replycan_transfer_and_upgrade_giftscan_transfer_starscan_view_gifts_and_starsN api_kwargsr!r rrrrrrrr$rr"r#rr&cLt||||_||_||_||_||_||_||_||_ | |_ | |_ | |_ | |_ | |_||_|j|j|j|j |j |j|j|j|j|j|j|j|j|jf|_|j#yNr%)super__init__r!r rrrrrrrr$rr"r#r _id_attrs_freeze)selfr!r rrrrrrrr$rr"r#rr& __class__s X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/telegram/_business.pyr*zBusinessBotRights.__init__s& J/)21B8P%7N$-:,86L#1B8P%8P%:T'>\+2D2D NN  " "  ) )  ( (        ' '  " "  ) )  ) )  + +  / /  # #  # # " )NNNNNNNNNNNNNN) __name__ __module__ __qualname____doc__ __slots__rboolrr* __classcell__r.s@r/rr0s"ENI&%),03726(,'+15,03737599=-1-14"*.#4D>4$D>4#+4. 4 "*$ 4  ~ 4tn4!)4$D>4#+4.4#+4.4%-TN4)14%TN4%TN4"X4r0rceZdZdZdZ ddddeddded ejd e d e e d e e ffd Z edde de dddffd ZxZS)BusinessConnectiona 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:`rights`, and :attr:`is_enabled` are equal. .. versionadded:: 21.1 .. versionchanged:: 22.1 Equality comparison now considers :attr:`rights` instead of ``can_reply``. .. versionremoved:: 22.3 Removed argument and attribute ``can_reply`` deprecated by API 9.0. 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. is_enabled (:obj:`bool`): True, if the connection is active. rights (:class:`BusinessBotRights`, optional): Rights of the business bot. .. versionadded:: 22.1 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. is_enabled (:obj:`bool`): True, if the connection is active. rights (:class:`BusinessBotRights`): Optional. Rights of the business bot. .. versionadded:: 22.1 )dateid is_enabledrightsuser user_chat_idNr%r<r?r r@r;r=r>r&c,t||||_||_||_||_||_||_|j|j|j|j |j|j f|_|jyr() r)r*r<r?r@r;r=r>r+r,) r-r<r?r@r;r=r>r&r.s r/r*zBusinessConnection.__init__s J/ !-"& *39  GG II    II KK OO   r0databotrreturnc(|j|}t|}t|jd||d<t |jdt ||d<t |jdt ||d<t|!||S),See :meth:`telegram.TelegramObject.de_json`.r;tzinfor?r>rBrC) _parse_datarrgetr r rr)de_json)clsrBrC loc_tzinfor.s r/rLzBusinessConnection.de_json st$2#6 %dhhv&6zJV '(8$DV )$((8*<>OQTUXwDc22r0N)r1r2r3r4r5strintdtmdatetimer6rrrr* classmethodrLr7r8s@r/r:r:s#JI /3*.   ll   *+X&< 38 3(5/ 3EY 3 3r0r:c teZdZdZdZdddededeede e ffd Z e dd e d e d d dffd Z xZS)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_idchat message_idsNr%rWrXrYr&ct||||_||_t ||_|j|j|j f|_|jyr()r)r*rWrXrrYr+r,)r-rWrXrYr&r.s r/r*z BusinessMessagesDeleted.__init__;s` J/+A# ,>{,K  ' ' II     r0rBrCrrDc|j|}t|jdt||d<t|||S)rFrXrI)rJr rKrr)rLrMrBrCr.s r/rLzBusinessMessagesDeleted.de_jsonPsAt$'(8$DV wDc22r0rO)r1r2r3r4r5rPrrrQrrr*rTrLr7r8s@r/rVrVsv0I*.  #c]  X& *383(5/3E^33r0rVc eZdZdZdZ ddddeedeedeedeeffd Z e dd ed ed d dffd Z xZ 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. )messagestickertitleNr%rar_r`r&ct||||_||_||_|j|j|jf|_|j yr()r)r*rar_r`r+r,)r-rar_r`r&r.s r/r*zBusinessIntro.__init__usM J/$) &- *1 **dllDLLA r0rBrCrrDc|j|}t|jdt||d<t|||S)rFr`rI)rJr rKr r)rLr\s r/rLzBusinessIntro.de_jsonsAt$*488I+>MYwDc22r0)NNNrO) r1r2r3r4r5rrPr rr*rTrLr7r8s@r/r^r^Zs(I $!%%)  *. }#'"  X& "383(5/3_33r0r^c teZdZdZdZ ddddedeedeeffdZ e dd ed ed d dffd Z xZ 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. )addresslocationNr%rfrgr&ct||||_||_|jf|_|j yr()r)r*rfrgr+r,)r-rfrgr&r.s r/r*zBusinessLocation.__init__s9 J/# ,4 ,, r0rBrCrrDc|j|}t|jdt||d<t|||S)rFrgrI)rJr rKr r)rLr\s r/rLzBusinessLocation.de_jsonsBt$+DHHZ,@(CPZwDc22r0rO) r1r2r3r4r5rPrr rr*rTrLr7r8s@r/reresw$I(,  *.  8$  X& 383(5/3EW33r0receZdZdZdZdddededeeffdZd ed e eeeffd Z e d e eeeffd Z e d e eeeffd Z xZS)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 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_timeclosing_minuteopening_minuteNr%rornr&ct||||_||_d|_d|_|j|jf|_|jyr()r)r*rornrmrlr+r,)r-rornr&r.s r/r*z%BusinessOpeningHoursInterval.__init__sV J/#1#1=A=A--t/B/BC r0minuterDc*|dz|dzdz|dzdzfS)N<)r-rqs r/ _parse_minutez*BusinessOpeningHoursInterval._parse_minutes%$  3Vd]R5GHHr0cr|j |j|j|_|jS)aWConvenience 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`]: )rmrvror-s r/ opening_timez)BusinessOpeningHoursInterval.opening_time5    %!%!3!3D4G4G!HD !!!r0cr|j |j|j|_|jS)aWConvenience 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`]: )rlrvrnrxs r/ closing_timez)BusinessOpeningHoursInterval.closing_timerzr0)r1r2r3r4r5rQrrr*tuplervpropertyryr|r7r8s@r/rkrks'RWI*.  X& $ICIE#sC-,@I "eCcM2 " " "eCcM2 " "r0rkc 2eZdZdZdZdddedeedee ffdZ e d e fd Z dd ejd eej"edfd eeej&ej&fd ffdZdej&d efdZedde dedd dffd ZxZS)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. )_cached_zone_info opening_hourstime_zone_nameNr%rrr&ct||||_t||_d|_|j|jf|_|jyr()r)r*rrrrr+r,)r-rrr&r.s r/r*zBusinessOpeningHours.__init__6sY J/#1EW F 6:--t/A/AB r0rDcf|jt|j|_|jSrO)rrrrxs r/ _zone_infozBusinessOpeningHours._zone_infoIs-  ! ! )%243F3F%GD "%%%r0r; time_zone.c |j}g}t|tr t|}n| |j}n|}|j D]}|j }|j}|d|k7r$tj|j|j|j|d|d|jj|} tj|j|j|j|d|d|jj|} |j| | ftt!|dS)aReturns the opening hours intervals for a specific day as datetime objects. .. versionadded:: 22.5 Args: date (:obj:`datetime.date`): The date to get opening hours for. time_zone (:obj:`datetime.tzinfo` | :obj:`str`, optional): Timezone to use for the returned datetime objects. If not specified, then :attr:`time_zone_name` be used. Returns: tuple[tuple[:obj:`datetime.datetime`, :obj:`datetime.datetime`], ...]: A tuple of datetime pairs representing opening and closing times for the specified day. Each pair consists of ``(opening_time, closing_time)``. Returns an empty tuple if there are no opening hours for the given day. r)yearmonthdayhourrqrHc |dS)Nrru)xs r/z@BusinessOpeningHours.get_opening_hours_for_day..s qtr0)key)weekday isinstancerPrrrryr|rRrSrrr astimezoneappendr}sorted) r-r;rweek_dayres tz_targetintervalint_open int_closeresult_int_openresult_int_closes r/get_opening_hours_for_dayz.BusinessOpeningHours.get_opening_hours_for_dayOs1&<<> i %$1)$rs(B$11-+3  +MM`Y3Y3x;3n;3|33N33l.3~.3bY">Y"xV3>V3r0