From bf2ba4424f71f00bef6602332e26109a81a3c8b7 Mon Sep 17 00:00:00 2001 From: Francluob Date: Thu, 8 Jan 2026 17:23:37 +0100 Subject: [PATCH 1/3] Add Defaults.business_connection_id support - Add business_connection_id parameter to Defaults class - Update all send_* methods to use ODVInput[str] for business_connection_id - This allows setting a default business_connection_id via Defaults mechanism - Follows the same pattern as other defaults like parse_mode and disable_notification Closes #4193 --- src/telegram/_bot.py | 58 +++++++++++++++++------------------ src/telegram/_chat.py | 40 ++++++++++++------------ src/telegram/_message.py | 2 +- src/telegram/_user.py | 38 +++++++++++------------ src/telegram/ext/_defaults.py | 25 +++++++++++++++ src/telegram/ext/_extbot.py | 58 +++++++++++++++++------------------ 6 files changed, 123 insertions(+), 98 deletions(-) diff --git a/src/telegram/_bot.py b/src/telegram/_bot.py index efead291b03..fcb71a09112 100644 --- a/src/telegram/_bot.py +++ b/src/telegram/_bot.py @@ -755,7 +755,7 @@ async def _send_message( caption_entities: Sequence["MessageEntity"] | None = None, link_preview_options: ODVInput["LinkPreviewOptions"] = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1008,7 +1008,7 @@ async def send_message( message_thread_id: int | None = None, link_preview_options: ODVInput["LinkPreviewOptions"] = DEFAULT_NONE, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1409,7 +1409,7 @@ async def send_photo( message_thread_id: int | None = None, has_spoiler: bool | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, show_caption_above_media: bool | None = None, @@ -1575,7 +1575,7 @@ async def send_audio( message_thread_id: int | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1750,7 +1750,7 @@ async def send_document( message_thread_id: int | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1912,7 +1912,7 @@ async def send_sticker( message_thread_id: int | None = None, emoji: str | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -2054,7 +2054,7 @@ async def send_video( has_spoiler: bool | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, show_caption_above_media: bool | None = None, @@ -2253,7 +2253,7 @@ async def send_video_note( message_thread_id: int | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -2421,7 +2421,7 @@ async def send_animation( has_spoiler: bool | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, show_caption_above_media: bool | None = None, @@ -2603,7 +2603,7 @@ async def send_voice( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -2767,7 +2767,7 @@ async def send_media_group( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -2957,7 +2957,7 @@ async def send_location( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -3122,7 +3122,7 @@ async def edit_message_live_location( heading: int | None = None, proximity_alert_radius: int | None = None, live_period: TimePeriod | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, location: "Location | None" = None, read_timeout: ODVInput[float] = DEFAULT_NONE, @@ -3230,7 +3230,7 @@ async def stop_message_live_location( message_id: int | None = None, inline_message_id: str | None = None, reply_markup: "InlineKeyboardMarkup | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -3292,7 +3292,7 @@ async def send_venue( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -3460,7 +3460,7 @@ async def send_contact( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -3606,7 +3606,7 @@ async def send_game( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, *, @@ -3702,7 +3702,7 @@ async def send_chat_action( chat_id: str | int, action: str, message_thread_id: int | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -4387,7 +4387,7 @@ async def edit_message_text( reply_markup: "InlineKeyboardMarkup | None" = None, entities: Sequence["MessageEntity"] | None = None, link_preview_options: ODVInput["LinkPreviewOptions"] = DEFAULT_NONE, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, disable_web_page_preview: bool | None = None, read_timeout: ODVInput[float] = DEFAULT_NONE, @@ -4494,7 +4494,7 @@ async def edit_message_caption( parse_mode: ODVInput[str] = DEFAULT_NONE, caption_entities: Sequence["MessageEntity"] | None = None, show_caption_above_media: bool | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -4571,7 +4571,7 @@ async def edit_message_media( message_id: int | None = None, inline_message_id: str | None = None, reply_markup: "InlineKeyboardMarkup | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -4640,7 +4640,7 @@ async def edit_message_reply_markup( message_id: int | None = None, inline_message_id: str | None = None, reply_markup: "InlineKeyboardMarkup | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -6615,7 +6615,7 @@ async def pin_chat_message( chat_id: str | int, message_id: int, disable_notification: ODVInput[bool] = DEFAULT_NONE, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -6669,7 +6669,7 @@ async def unpin_chat_message( self, chat_id: str | int, message_id: int | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -7527,7 +7527,7 @@ async def send_poll( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, question_parse_mode: ODVInput[str] = DEFAULT_NONE, question_entities: Sequence["MessageEntity"] | None = None, message_effect_id: str | None = None, @@ -7708,7 +7708,7 @@ async def stop_poll( chat_id: int | str, message_id: int, reply_markup: "InlineKeyboardMarkup | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -7898,7 +7898,7 @@ async def send_dice( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -8665,7 +8665,7 @@ async def create_invoice_link( send_email_to_provider: bool | None = None, is_flexible: bool | None = None, subscription_period: TimePeriod | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -10948,7 +10948,7 @@ async def send_paid_media( protect_content: ODVInput[bool] = DEFAULT_NONE, reply_parameters: "ReplyParameters | None" = None, reply_markup: "ReplyMarkup | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, payload: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, diff --git a/src/telegram/_chat.py b/src/telegram/_chat.py index 1b4672a08e2..63354d410c9 100644 --- a/src/telegram/_chat.py +++ b/src/telegram/_chat.py @@ -925,7 +925,7 @@ async def pin_message( self, message_id: int, disable_notification: ODVInput[bool] = DEFAULT_NONE, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -959,7 +959,7 @@ async def pin_message( async def unpin_message( self, message_id: int | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -1029,7 +1029,7 @@ async def send_message( message_thread_id: int | None = None, link_preview_options: ODVInput["LinkPreviewOptions"] = DEFAULT_NONE, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1153,7 +1153,7 @@ async def send_media_group( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1207,7 +1207,7 @@ async def send_chat_action( self, action: str, message_thread_id: int | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -1252,7 +1252,7 @@ async def send_photo( message_thread_id: int | None = None, has_spoiler: bool | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, show_caption_above_media: bool | None = None, @@ -1317,7 +1317,7 @@ async def send_contact( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1383,7 +1383,7 @@ async def send_audio( message_thread_id: int | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1451,7 +1451,7 @@ async def send_document( message_thread_id: int | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1560,7 +1560,7 @@ async def send_dice( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1614,7 +1614,7 @@ async def send_game( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, *, @@ -1771,7 +1771,7 @@ async def send_location( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1840,7 +1840,7 @@ async def send_animation( has_spoiler: bool | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, show_caption_above_media: bool | None = None, @@ -1907,7 +1907,7 @@ async def send_sticker( message_thread_id: int | None = None, emoji: str | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1969,7 +1969,7 @@ async def send_venue( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -2041,7 +2041,7 @@ async def send_video( has_spoiler: bool | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, show_caption_above_media: bool | None = None, @@ -2115,7 +2115,7 @@ async def send_video_note( message_thread_id: int | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -2178,7 +2178,7 @@ async def send_voice( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -2249,7 +2249,7 @@ async def send_poll( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, question_parse_mode: ODVInput[str] = DEFAULT_NONE, question_entities: Sequence["MessageEntity"] | None = None, message_effect_id: str | None = None, @@ -3549,7 +3549,7 @@ async def send_paid_media( protect_content: ODVInput[bool] = DEFAULT_NONE, reply_parameters: "ReplyParameters | None" = None, reply_markup: "ReplyMarkup | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, payload: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, diff --git a/src/telegram/_message.py b/src/telegram/_message.py index dd3e3668a49..17a65f563be 100644 --- a/src/telegram/_message.py +++ b/src/telegram/_message.py @@ -1271,7 +1271,7 @@ def __init__( reply_to_story: Story | None = None, boost_added: ChatBoostAdded | None = None, sender_boost_count: int | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, sender_business_bot: User | None = None, is_from_offline: bool | None = None, chat_background_set: ChatBackground | None = None, diff --git a/src/telegram/_user.py b/src/telegram/_user.py index 237476f20fe..73ff9f2cadb 100644 --- a/src/telegram/_user.py +++ b/src/telegram/_user.py @@ -321,7 +321,7 @@ async def pin_message( self, message_id: int, disable_notification: ODVInput[bool] = DEFAULT_NONE, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -357,7 +357,7 @@ async def pin_message( async def unpin_message( self, message_id: int | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -432,7 +432,7 @@ async def send_message( message_thread_id: int | None = None, link_preview_options: ODVInput["LinkPreviewOptions"] = DEFAULT_NONE, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -562,7 +562,7 @@ async def send_photo( message_thread_id: int | None = None, has_spoiler: bool | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, show_caption_above_media: bool | None = None, @@ -628,7 +628,7 @@ async def send_media_group( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -696,7 +696,7 @@ async def send_audio( message_thread_id: int | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -758,7 +758,7 @@ async def send_chat_action( self, action: str, message_thread_id: int | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -805,7 +805,7 @@ async def send_contact( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -867,7 +867,7 @@ async def send_dice( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -929,7 +929,7 @@ async def send_document( message_thread_id: int | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -993,7 +993,7 @@ async def send_game( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, *, @@ -1156,7 +1156,7 @@ async def send_location( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1228,7 +1228,7 @@ async def send_animation( has_spoiler: bool | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, show_caption_above_media: bool | None = None, @@ -1298,7 +1298,7 @@ async def send_sticker( message_thread_id: int | None = None, emoji: str | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1365,7 +1365,7 @@ async def send_video( has_spoiler: bool | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, show_caption_above_media: bool | None = None, @@ -1446,7 +1446,7 @@ async def send_venue( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1515,7 +1515,7 @@ async def send_video_note( message_thread_id: int | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1581,7 +1581,7 @@ async def send_voice( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -1655,7 +1655,7 @@ async def send_poll( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, question_parse_mode: ODVInput[str] = DEFAULT_NONE, question_entities: Sequence["MessageEntity"] | None = None, message_effect_id: str | None = None, diff --git a/src/telegram/ext/_defaults.py b/src/telegram/ext/_defaults.py index 2986aba0b64..e85d7dac6b5 100644 --- a/src/telegram/ext/_defaults.py +++ b/src/telegram/ext/_defaults.py @@ -111,12 +111,18 @@ async def main(): do_quote(:obj:`bool`, optional): |reply_quote| .. versionadded:: 20.8 + business_connection_id (:obj:`str`, optional): Unique identifier of the business connection + on behalf of which the message will be sent. This will be used for all `send_*` methods + if not explicitly specified. + + .. versionadded:: 22.6 """ __slots__ = ( "_allow_sending_without_reply", "_api_defaults", "_block", + "_business_connection_id", "_disable_notification", "_do_quote", "_link_preview_options", @@ -135,6 +141,7 @@ def __init__( protect_content: bool | None = None, link_preview_options: "LinkPreviewOptions | None" = None, do_quote: bool | None = None, + business_connection_id: str | None = None, ): self._parse_mode: str | None = parse_mode self._disable_notification: bool | None = disable_notification @@ -158,6 +165,7 @@ def __init__( self._link_preview_options = link_preview_options self._do_quote = do_quote + self._business_connection_id: str | None = business_connection_id # Gather all defaults that actually have a default value self._api_defaults = {} @@ -171,6 +179,7 @@ def __init__( "text_parse_mode", "protect_content", "question_parse_mode", + "business_connection_id", ): value = getattr(self, kwarg) if value is not None: @@ -193,6 +202,7 @@ def __hash__(self) -> int: self._tzinfo, self._block, self._protect_content, + self._business_connection_id, ) ) @@ -360,3 +370,18 @@ def do_quote(self) -> bool | None: .. versionadded:: 20.8 """ return self._do_quote + + @property + def business_connection_id(self) -> str | None: + """:obj:`str`: Optional. Unique identifier of the business connection on behalf of which + the message will be sent. + + .. versionadded:: 22.6 + """ + return self._business_connection_id + + @business_connection_id.setter + def business_connection_id(self, _: object) -> NoReturn: + raise AttributeError( + "You can not assign a new value to business_connection_id after initialization." + ) diff --git a/src/telegram/ext/_extbot.py b/src/telegram/ext/_extbot.py index 5ae2e1e2f4f..89462633226 100644 --- a/src/telegram/ext/_extbot.py +++ b/src/telegram/ext/_extbot.py @@ -610,7 +610,7 @@ async def _send_message( caption_entities: Sequence["MessageEntity"] | None = None, link_preview_options: ODVInput["LinkPreviewOptions"] = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -791,7 +791,7 @@ async def stop_poll( chat_id: int | str, message_id: int, reply_markup: "InlineKeyboardMarkup | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -1234,7 +1234,7 @@ async def create_invoice_link( send_email_to_provider: bool | None = None, is_flexible: bool | None = None, subscription_period: TimePeriod | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -1581,7 +1581,7 @@ async def edit_message_caption( parse_mode: ODVInput[str] = DEFAULT_NONE, caption_entities: Sequence["MessageEntity"] | None = None, show_caption_above_media: bool | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -1619,7 +1619,7 @@ async def edit_message_live_location( heading: int | None = None, proximity_alert_radius: int | None = None, live_period: TimePeriod | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, location: "Location | None" = None, read_timeout: ODVInput[float] = DEFAULT_NONE, @@ -1656,7 +1656,7 @@ async def edit_message_media( message_id: int | None = None, inline_message_id: str | None = None, reply_markup: "InlineKeyboardMarkup | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -1685,7 +1685,7 @@ async def edit_message_reply_markup( message_id: int | None = None, inline_message_id: str | None = None, reply_markup: "InlineKeyboardMarkup | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -1717,7 +1717,7 @@ async def edit_message_text( reply_markup: "InlineKeyboardMarkup | None" = None, entities: Sequence["MessageEntity"] | None = None, link_preview_options: ODVInput["LinkPreviewOptions"] = DEFAULT_NONE, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, disable_web_page_preview: bool | None = None, read_timeout: ODVInput[float] = DEFAULT_NONE, @@ -2321,7 +2321,7 @@ async def pin_chat_message( chat_id: str | int, message_id: int, disable_notification: ODVInput[bool] = DEFAULT_NONE, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -2485,7 +2485,7 @@ async def send_animation( has_spoiler: bool | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, show_caption_above_media: bool | None = None, @@ -2550,7 +2550,7 @@ async def send_audio( message_thread_id: int | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -2601,7 +2601,7 @@ async def send_chat_action( chat_id: str | int, action: str, message_thread_id: int | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -2634,7 +2634,7 @@ async def send_contact( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -2751,7 +2751,7 @@ async def send_dice( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -2802,7 +2802,7 @@ async def send_document( message_thread_id: int | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -2855,7 +2855,7 @@ async def send_game( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, *, @@ -2986,7 +2986,7 @@ async def send_location( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -3040,7 +3040,7 @@ async def send_media_group( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -3092,7 +3092,7 @@ async def send_message( message_thread_id: int | None = None, link_preview_options: ODVInput["LinkPreviewOptions"] = DEFAULT_NONE, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -3147,7 +3147,7 @@ async def send_photo( message_thread_id: int | None = None, has_spoiler: bool | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, show_caption_above_media: bool | None = None, @@ -3212,7 +3212,7 @@ async def send_poll( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, question_parse_mode: ODVInput[str] = DEFAULT_NONE, question_entities: Sequence["MessageEntity"] | None = None, message_effect_id: str | None = None, @@ -3270,7 +3270,7 @@ async def send_sticker( message_thread_id: int | None = None, emoji: str | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -3324,7 +3324,7 @@ async def send_venue( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -3388,7 +3388,7 @@ async def send_video( has_spoiler: bool | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, show_caption_above_media: bool | None = None, @@ -3454,7 +3454,7 @@ async def send_video_note( message_thread_id: int | None = None, thumbnail: "FileInput | None" = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -3509,7 +3509,7 @@ async def send_voice( protect_content: ODVInput[bool] = DEFAULT_NONE, message_thread_id: int | None = None, reply_parameters: "ReplyParameters | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, message_effect_id: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, @@ -3920,7 +3920,7 @@ async def stop_message_live_location( message_id: int | None = None, inline_message_id: str | None = None, reply_markup: "InlineKeyboardMarkup | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -4012,7 +4012,7 @@ async def unpin_chat_message( self, chat_id: str | int, message_id: int | None = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, *, read_timeout: ODVInput[float] = DEFAULT_NONE, write_timeout: ODVInput[float] = DEFAULT_NONE, @@ -4985,7 +4985,7 @@ async def send_paid_media( protect_content: ODVInput[bool] = DEFAULT_NONE, reply_parameters: "ReplyParameters | None" = None, reply_markup: "ReplyMarkup | None" = None, - business_connection_id: str | None = None, + business_connection_id: ODVInput[str] = DEFAULT_NONE, payload: str | None = None, allow_paid_broadcast: bool | None = None, direct_messages_topic_id: int | None = None, From 77697bcabdf3edf4c2640555b69e0f64a42f087f Mon Sep 17 00:00:00 2001 From: Francluob Date: Thu, 8 Jan 2026 17:49:35 +0100 Subject: [PATCH 2/3] Fix mypy error: Extract value from ODVInput in Message.__init__ - Use DefaultValue.get_value() to extract str | None from ODVInput[str] - Fixes type incompatibility when assigning business_connection_id --- src/telegram/_message.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/telegram/_message.py b/src/telegram/_message.py index 17a65f563be..f76dd6c407e 100644 --- a/src/telegram/_message.py +++ b/src/telegram/_message.py @@ -1392,7 +1392,9 @@ def __init__( self.reply_to_story: Story | None = reply_to_story self.boost_added: ChatBoostAdded | None = boost_added self.sender_boost_count: int | None = sender_boost_count - self.business_connection_id: str | None = business_connection_id + self.business_connection_id: str | None = DefaultValue.get_value( + business_connection_id + ) self.sender_business_bot: User | None = sender_business_bot self.is_from_offline: bool | None = is_from_offline self.chat_background_set: ChatBackground | None = chat_background_set From 32e33cb511fa0134eb3946c3240e5eb74011039a Mon Sep 17 00:00:00 2001 From: Francluob Date: Fri, 9 Jan 2026 02:03:00 +0100 Subject: [PATCH 3/3] Use NEXT.VERSION placeholder for business_connection_id versionadded - Replace hardcoded version number with NEXT.VERSION placeholder - Follows project standard for version documentation --- src/telegram/ext/_defaults.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/telegram/ext/_defaults.py b/src/telegram/ext/_defaults.py index e85d7dac6b5..24edf838cb3 100644 --- a/src/telegram/ext/_defaults.py +++ b/src/telegram/ext/_defaults.py @@ -115,7 +115,7 @@ async def main(): on behalf of which the message will be sent. This will be used for all `send_*` methods if not explicitly specified. - .. versionadded:: 22.6 + .. versionadded:: NEXT.VERSION """ __slots__ = ( @@ -376,7 +376,7 @@ def business_connection_id(self) -> str | None: """:obj:`str`: Optional. Unique identifier of the business connection on behalf of which the message will be sent. - .. versionadded:: 22.6 + .. versionadded:: NEXT.VERSION """ return self._business_connection_id