Skip to content

Commit a4669b2

Browse files
authored
Merge pull request #2311 from coder2020official/botapi-75
Bot API 7.5
2 parents ebcec21 + e256a71 commit a4669b2

File tree

6 files changed

+469
-41
lines changed

6 files changed

+469
-41
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<p align="center">A simple, but extensible Python implementation for the <a href="https://core.telegram.org/bots/api">Telegram Bot API</a>.</p>
1111
<p align="center">Both synchronous and asynchronous.</p>
1212

13-
## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api-changelog#may-28-2024">7.4</a>!
13+
## <p align="center">Supported Bot API version: <a href="https://core.telegram.org/bots/api#june-18-2024">7.5</a>!
1414

1515
<h2><a href='https://pytba.readthedocs.io/en/latest/index.html'>Official documentation</a></h2>
1616
<h2><a href='https://pytba.readthedocs.io/ru/latest/index.html'>Official ru documentation</a></h2>

telebot/__init__.py

Lines changed: 63 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3324,6 +3324,7 @@ def edit_message_live_location(
33243324
heading: Optional[int]=None,
33253325
proximity_alert_radius: Optional[int]=None,
33263326
live_period: Optional[int]=None,
3327+
business_connection_id: Optional[str]=None
33273328
) -> types.Message or bool:
33283329
"""
33293330
Use this method to edit live location messages. A location can be edited until its live_period expires or editing is explicitly
@@ -3366,14 +3367,17 @@ def edit_message_live_location(
33663367
:param live_period: New period in seconds during which the location can be updated, starting from the message send date. If 0x7FFFFFFF is specified, then the location can be updated forever. Otherwise, the new value must not exceed the current live_period by more than a day, and the live location expiration date must remain within the next 90 days. If not specified, then live_period remains unchanged
33673368
:type live_period: :obj:`int`
33683369
3370+
:param business_connection_id: Identifier of a business connection
3371+
:type business_connection_id: :obj:`str`
3372+
33693373
:return: On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned.
33703374
:rtype: :class:`telebot.types.Message` or bool
33713375
"""
33723376
return types.Message.de_json(
33733377
apihelper.edit_message_live_location(
33743378
self.token, latitude, longitude, chat_id=chat_id, message_id=message_id, inline_message_id=inline_message_id,
33753379
reply_markup=reply_markup, timeout=timeout, horizontal_accuracy=horizontal_accuracy, heading=heading,
3376-
proximity_alert_radius=proximity_alert_radius, live_period=live_period)
3380+
proximity_alert_radius=proximity_alert_radius, live_period=live_period, business_connection_id=business_connection_id)
33773381
)
33783382

33793383

@@ -3382,7 +3386,8 @@ def stop_message_live_location(
33823386
message_id: Optional[int]=None,
33833387
inline_message_id: Optional[str]=None,
33843388
reply_markup: Optional[types.InlineKeyboardMarkup]=None,
3385-
timeout: Optional[int]=None) -> types.Message or bool:
3389+
timeout: Optional[int]=None,
3390+
business_connection_id: Optional[str]=None) -> types.Message or bool:
33863391
"""
33873392
Use this method to stop updating a live location message before live_period expires.
33883393
On success, if the message is not an inline message, the edited Message is returned, otherwise True is returned.
@@ -3405,13 +3410,16 @@ def stop_message_live_location(
34053410
:param timeout: Timeout in seconds for the request.
34063411
:type timeout: :obj:`int`
34073412
3413+
:param business_connection_id: Identifier of a business connection
3414+
:type business_connection_id: :obj:`str`
3415+
34083416
:return: On success, if the message is not an inline message, the edited Message is returned, otherwise True is returned.
34093417
:rtype: :class:`telebot.types.Message` or bool
34103418
"""
34113419
return types.Message.de_json(
34123420
apihelper.stop_message_live_location(
34133421
self.token, chat_id=chat_id, message_id=message_id, inline_message_id=inline_message_id,
3414-
reply_markup=reply_markup, timeout=timeout)
3422+
reply_markup=reply_markup, timeout=timeout, business_connection_id=business_connection_id)
34153423
)
34163424

34173425

@@ -4645,7 +4653,8 @@ def edit_message_text(
46454653
entities: Optional[List[types.MessageEntity]]=None,
46464654
disable_web_page_preview: Optional[bool]=None, # deprecated, for backward compatibility
46474655
reply_markup: Optional[types.InlineKeyboardMarkup]=None,
4648-
link_preview_options : Optional[types.LinkPreviewOptions]=None) -> Union[types.Message, bool]:
4656+
link_preview_options : Optional[types.LinkPreviewOptions]=None,
4657+
business_connection_id: Optional[str]=None) -> Union[types.Message, bool]:
46494658
"""
46504659
Use this method to edit text and game messages.
46514660
@@ -4678,6 +4687,9 @@ def edit_message_text(
46784687
:param link_preview_options: A JSON-serialized object for options used to automatically generate previews for links.
46794688
:type link_preview_options: :obj:`LinkPreviewOptions`
46804689
4690+
:param business_connection_id: Unique identifier of the business connection
4691+
:type business_connection_id: :obj:`str`
4692+
46814693
:return: On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned.
46824694
:rtype: :obj:`types.Message` or :obj:`bool`
46834695
"""
@@ -4704,7 +4716,8 @@ def edit_message_text(
47044716

47054717
result = apihelper.edit_message_text(
47064718
self.token, text, chat_id=chat_id, message_id=message_id, inline_message_id=inline_message_id,
4707-
parse_mode=parse_mode, entities=entities, reply_markup=reply_markup, link_preview_options=link_preview_options)
4719+
parse_mode=parse_mode, entities=entities, reply_markup=reply_markup, link_preview_options=link_preview_options,
4720+
business_connection_id=business_connection_id)
47084721

47094722
if type(result) == bool: # if edit inline message return is bool not Message.
47104723
return result
@@ -4715,7 +4728,8 @@ def edit_message_media(
47154728
self, media: Any, chat_id: Optional[Union[int, str]]=None,
47164729
message_id: Optional[int]=None,
47174730
inline_message_id: Optional[str]=None,
4718-
reply_markup: Optional[types.InlineKeyboardMarkup]=None) -> Union[types.Message, bool]:
4731+
reply_markup: Optional[types.InlineKeyboardMarkup]=None,
4732+
business_connection_id: Optional[str]=None) -> Union[types.Message, bool]:
47194733
"""
47204734
Use this method to edit animation, audio, document, photo, or video messages.
47214735
If a message is a part of a message album, then it can be edited only to a photo or a video.
@@ -4738,12 +4752,15 @@ def edit_message_media(
47384752
:param reply_markup: A JSON-serialized object for an inline keyboard.
47394753
:type reply_markup: :obj:`telebot.types.InlineKeyboardMarkup` or :obj:`ReplyKeyboardMarkup` or :obj:`ReplyKeyboardRemove` or :obj:`ForceReply`
47404754
4755+
:param business_connection_id: Unique identifier of the business connection
4756+
:type business_connection_id: :obj:`str`
4757+
47414758
:return: On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned.
47424759
:rtype: :obj:`types.Message` or :obj:`bool`
47434760
"""
47444761
result = apihelper.edit_message_media(
47454762
self.token, media, chat_id=chat_id, message_id=message_id, inline_message_id=inline_message_id,
4746-
reply_markup=reply_markup)
4763+
reply_markup=reply_markup, business_connection_id=business_connection_id)
47474764

47484765
if type(result) == bool: # if edit inline message return is bool not Message.
47494766
return result
@@ -4754,7 +4771,8 @@ def edit_message_reply_markup(
47544771
self, chat_id: Optional[Union[int, str]]=None,
47554772
message_id: Optional[int]=None,
47564773
inline_message_id: Optional[str]=None,
4757-
reply_markup: Optional[types.InlineKeyboardMarkup]=None) -> Union[types.Message, bool]:
4774+
reply_markup: Optional[types.InlineKeyboardMarkup]=None,
4775+
business_connection_id: Optional[str]=None) -> Union[types.Message, bool]:
47584776
"""
47594777
Use this method to edit only the reply markup of messages.
47604778
@@ -4772,12 +4790,15 @@ def edit_message_reply_markup(
47724790
:param reply_markup: A JSON-serialized object for an inline keyboard.
47734791
:type reply_markup: :obj:`InlineKeyboardMarkup` or :obj:`ReplyKeyboardMarkup` or :obj:`ReplyKeyboardRemove` or :obj:`ForceReply`
47744792
4793+
:param business_connection_id: Unique identifier of the business connection
4794+
:type business_connection_id: :obj:`str`
4795+
47754796
:return: On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned.
47764797
:rtype: :obj:`types.Message` or :obj:`bool`
47774798
"""
47784799
result = apihelper.edit_message_reply_markup(
47794800
self.token, chat_id=chat_id, message_id=message_id, inline_message_id=inline_message_id,
4780-
reply_markup=reply_markup)
4801+
reply_markup=reply_markup, business_connection_id=business_connection_id)
47814802

47824803
if type(result) == bool:
47834804
return result
@@ -5397,7 +5418,8 @@ def send_poll(
53975418

53985419
def stop_poll(
53995420
self, chat_id: Union[int, str], message_id: int,
5400-
reply_markup: Optional[types.InlineKeyboardMarkup]=None) -> types.Poll:
5421+
reply_markup: Optional[types.InlineKeyboardMarkup]=None,
5422+
business_connection_id: Optional[str]=None) -> types.Poll:
54015423
"""
54025424
Use this method to stop a poll which was sent by the bot. On success, the stopped Poll is returned.
54035425
@@ -5412,11 +5434,14 @@ def stop_poll(
54125434
:param reply_markup: A JSON-serialized object for a new message markup.
54135435
:type reply_markup: :obj:`InlineKeyboardMarkup`
54145436
5437+
:param business_connection_id: Identifier of the business connection to use for the poll
5438+
:type business_connection_id: :obj:`str`
5439+
54155440
:return: On success, the stopped Poll is returned.
54165441
:rtype: :obj:`types.Poll`
54175442
"""
54185443
return types.Poll.de_json(
5419-
apihelper.stop_poll(self.token, chat_id, message_id, reply_markup=reply_markup)
5444+
apihelper.stop_poll(self.token, chat_id, message_id, reply_markup=reply_markup, business_connection_id=business_connection_id)
54205445
)
54215446

54225447

@@ -5478,6 +5503,27 @@ def answer_pre_checkout_query(
54785503
"""
54795504
return apihelper.answer_pre_checkout_query(
54805505
self.token, pre_checkout_query_id, ok, error_message=error_message)
5506+
5507+
5508+
def get_star_transactions(self, offset: Optional[int]=None, limit: Optional[int]=None) -> types.StarTransactions:
5509+
"""
5510+
Returns the bot's Telegram Star transactions in chronological order. On success, returns a StarTransactions object.
5511+
5512+
Telegram documentation: https://core.telegram.org/bots/api#getstartransactions
5513+
5514+
:param offset: Number of transactions to skip in the response
5515+
:type offset: :obj:`int`
5516+
5517+
:param limit: The maximum number of transactions to be retrieved. Values between 1-100 are accepted. Defaults to 100.
5518+
:type limit: :obj:`int`
5519+
5520+
:return: On success, returns a StarTransactions object.
5521+
:rtype: :obj:`types.StarTransactions`
5522+
"""
5523+
return types.StarTransactions.de_json(
5524+
apihelper.get_star_transactions(self.token, offset=offset, limit=limit)
5525+
)
5526+
54815527

54825528
def refund_star_payment(self, user_id: int, telegram_payment_charge_id: str) -> bool:
54835529
"""
@@ -5503,7 +5549,8 @@ def edit_message_caption(
55035549
parse_mode: Optional[str]=None,
55045550
caption_entities: Optional[List[types.MessageEntity]]=None,
55055551
reply_markup: Optional[types.InlineKeyboardMarkup]=None,
5506-
show_caption_above_media: Optional[bool]=None) -> Union[types.Message, bool]:
5552+
show_caption_above_media: Optional[bool]=None,
5553+
business_connection_id: Optional[str]=None) -> Union[types.Message, bool]:
55075554
"""
55085555
Use this method to edit captions of messages.
55095556
@@ -5533,6 +5580,9 @@ def edit_message_caption(
55335580
:param show_caption_above_media: Pass True, if the caption must be shown above the message media. Supported only for animation, photo and video messages.
55345581
:type show_caption_above_media: :obj:`bool`
55355582
5583+
:param business_connection_id: Identifier of the business connection to use for the message
5584+
:type business_connection_id: :obj:`str`
5585+
55365586
:return: On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned.
55375587
:rtype: :obj:`types.Message` | :obj:`bool`
55385588
"""
@@ -5541,7 +5591,7 @@ def edit_message_caption(
55415591
result = apihelper.edit_message_caption(
55425592
self.token, caption, chat_id=chat_id, message_id=message_id, inline_message_id=inline_message_id,
55435593
parse_mode=parse_mode, caption_entities=caption_entities, reply_markup=reply_markup,
5544-
show_caption_above_media=show_caption_above_media)
5594+
show_caption_above_media=show_caption_above_media, business_connection_id=business_connection_id)
55455595

55465596
if type(result) == bool:
55475597
return result

telebot/apihelper.py

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ def send_location(
594594

595595
def edit_message_live_location(
596596
token, latitude, longitude, chat_id=None, message_id=None, inline_message_id=None, reply_markup=None,
597-
timeout=None, horizontal_accuracy=None, heading=None, proximity_alert_radius=None, live_period=None):
597+
timeout=None, horizontal_accuracy=None, heading=None, proximity_alert_radius=None, live_period=None, business_connection_id=None):
598598
method_url = r'editMessageLiveLocation'
599599
payload = {'latitude': latitude, 'longitude': longitude}
600600
if chat_id:
@@ -615,12 +615,14 @@ def edit_message_live_location(
615615
payload['reply_markup'] = _convert_markup(reply_markup)
616616
if timeout:
617617
payload['timeout'] = timeout
618+
if business_connection_id:
619+
payload['business_connection_id'] = business_connection_id
618620
return _make_request(token, method_url, params=payload)
619621

620622

621623
def stop_message_live_location(
622624
token, chat_id=None, message_id=None,
623-
inline_message_id=None, reply_markup=None, timeout=None):
625+
inline_message_id=None, reply_markup=None, timeout=None, business_connection_id=None):
624626
method_url = r'stopMessageLiveLocation'
625627
payload = {}
626628
if chat_id:
@@ -633,6 +635,8 @@ def stop_message_live_location(
633635
payload['reply_markup'] = _convert_markup(reply_markup)
634636
if timeout:
635637
payload['timeout'] = timeout
638+
if business_connection_id:
639+
payload['business_connection_id'] = business_connection_id
636640
return _make_request(token, method_url, params=payload)
637641

638642

@@ -1379,7 +1383,7 @@ def unpin_all_chat_messages(token, chat_id):
13791383
# Updating messages
13801384

13811385
def edit_message_text(token, text, chat_id=None, message_id=None, inline_message_id=None, parse_mode=None,
1382-
entities = None, reply_markup=None, link_preview_options=None):
1386+
entities = None, reply_markup=None, link_preview_options=None, business_connection_id=None):
13831387
method_url = r'editMessageText'
13841388
payload = {'text': text}
13851389
if chat_id:
@@ -1396,11 +1400,13 @@ def edit_message_text(token, text, chat_id=None, message_id=None, inline_message
13961400
payload['reply_markup'] = _convert_markup(reply_markup)
13971401
if link_preview_options is not None:
13981402
payload['link_preview_options'] = link_preview_options.to_json()
1403+
if business_connection_id:
1404+
payload['business_connection_id'] = business_connection_id
13991405
return _make_request(token, method_url, params=payload, method='post')
14001406

14011407

14021408
def edit_message_caption(token, caption, chat_id=None, message_id=None, inline_message_id=None,
1403-
parse_mode=None, caption_entities=None,reply_markup=None, show_caption_above_media=None):
1409+
parse_mode=None, caption_entities=None,reply_markup=None, show_caption_above_media=None, business_connection_id=None):
14041410
method_url = r'editMessageCaption'
14051411
payload = {'caption': caption}
14061412
if chat_id:
@@ -1417,10 +1423,12 @@ def edit_message_caption(token, caption, chat_id=None, message_id=None, inline_m
14171423
payload['reply_markup'] = _convert_markup(reply_markup)
14181424
if show_caption_above_media is not None:
14191425
payload['show_caption_above_media'] = show_caption_above_media
1426+
if business_connection_id:
1427+
payload['business_connection_id'] = business_connection_id
14201428
return _make_request(token, method_url, params=payload, method='post')
14211429

14221430

1423-
def edit_message_media(token, media, chat_id=None, message_id=None, inline_message_id=None, reply_markup=None):
1431+
def edit_message_media(token, media, chat_id=None, message_id=None, inline_message_id=None, reply_markup=None, business_connection_id=None):
14241432
method_url = r'editMessageMedia'
14251433
media_json, file = convert_input_media(media)
14261434
payload = {'media': media_json}
@@ -1432,10 +1440,12 @@ def edit_message_media(token, media, chat_id=None, message_id=None, inline_messa
14321440
payload['inline_message_id'] = inline_message_id
14331441
if reply_markup:
14341442
payload['reply_markup'] = _convert_markup(reply_markup)
1443+
if business_connection_id:
1444+
payload['business_connection_id'] = business_connection_id
14351445
return _make_request(token, method_url, params=payload, files=file, method='post' if file else 'get')
14361446

14371447

1438-
def edit_message_reply_markup(token, chat_id=None, message_id=None, inline_message_id=None, reply_markup=None):
1448+
def edit_message_reply_markup(token, chat_id=None, message_id=None, inline_message_id=None, reply_markup=None, business_connection_id=None):
14391449
method_url = r'editMessageReplyMarkup'
14401450
payload = {}
14411451
if chat_id:
@@ -1446,6 +1456,8 @@ def edit_message_reply_markup(token, chat_id=None, message_id=None, inline_messa
14461456
payload['inline_message_id'] = inline_message_id
14471457
if reply_markup:
14481458
payload['reply_markup'] = _convert_markup(reply_markup)
1459+
if business_connection_id:
1460+
payload['business_connection_id'] = business_connection_id
14491461
return _make_request(token, method_url, params=payload, method='post')
14501462

14511463

@@ -1667,6 +1679,16 @@ def answer_pre_checkout_query(token, pre_checkout_query_id, ok, error_message=No
16671679
payload['error_message'] = error_message
16681680
return _make_request(token, method_url, params=payload)
16691681

1682+
def get_star_transactions(token, offset=None, limit=None):
1683+
method_url = 'getStarTransactions'
1684+
payload = {}
1685+
if offset:
1686+
payload['offset'] = offset
1687+
if limit:
1688+
payload['limit'] = limit
1689+
return _make_request(token, method_url, params=payload)
1690+
1691+
16701692
def refund_star_payment(token, user_id, telegram_payment_charge_id):
16711693
method_url = 'refundStarPayment'
16721694
payload = {'user_id': user_id, 'telegram_payment_charge_id': telegram_payment_charge_id}
@@ -1975,11 +1997,13 @@ def get_forum_topic_icon_stickers(token):
19751997
method_url = r'getForumTopicIconStickers'
19761998
return _make_request(token, method_url)
19771999

1978-
def stop_poll(token, chat_id, message_id, reply_markup=None):
2000+
def stop_poll(token, chat_id, message_id, reply_markup=None, business_connection_id=None):
19792001
method_url = r'stopPoll'
19802002
payload = {'chat_id': str(chat_id), 'message_id': message_id}
19812003
if reply_markup:
19822004
payload['reply_markup'] = _convert_markup(reply_markup)
2005+
if business_connection_id:
2006+
payload['business_connection_id'] = business_connection_id
19832007
return _make_request(token, method_url, params=payload)
19842008

19852009
def edit_general_forum_topic(token, chat_id, name):

0 commit comments

Comments
 (0)