From da6e428b41ef7cdaca085ad516cea02c80b40b38 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Thu, 20 Apr 2023 23:37:41 +0300 Subject: [PATCH] Added 6.7 features --- .../methods/answerInlineQuery/entity.json | 8 + .butcher/methods/getMyName/entity.json | 25 +++ .butcher/methods/setMyName/entity.json | 33 ++++ .butcher/schema/schema.json | 187 +++++++++++++++++- .butcher/types/BotName/entity.json | 25 +++ .butcher/types/ChatMemberUpdated/entity.json | 8 + .../types/InlineKeyboardButton/entity.json | 8 + .../InlineQueryResultsButton/entity.json | 41 ++++ .../SwitchInlineQueryChosenChat/entity.json | 57 ++++++ .butcher/types/WriteAccessAllowed/entity.json | 11 +- aiogram/client/bot.py | 50 +++++ aiogram/methods/__init__.py | 4 + aiogram/methods/answer_inline_query.py | 4 +- aiogram/methods/get_my_name.py | 18 ++ aiogram/methods/set_my_name.py | 19 ++ aiogram/types/__init__.py | 6 + aiogram/types/bot_name.py | 12 ++ aiogram/types/chat_member_updated.py | 2 + aiogram/types/inline_keyboard_button.py | 3 + aiogram/types/inline_query.py | 4 + aiogram/types/inline_query_results_button.py | 23 +++ .../types/switch_inline_query_chosen_chat.py | 22 +++ aiogram/types/write_access_allowed.py | 5 + docs/api/methods/get_my_name.rst | 37 ++++ docs/api/methods/index.rst | 9 + docs/api/methods/set_my_name.rst | 44 +++++ docs/api/types/bot_name.rst | 9 + docs/api/types/index.rst | 10 + .../api/types/inline_query_results_button.rst | 9 + .../types/switch_inline_query_chosen_chat.rst | 9 + tests/test_api/test_types/test_message.py | 2 +- 31 files changed, 700 insertions(+), 4 deletions(-) create mode 100644 .butcher/methods/getMyName/entity.json create mode 100644 .butcher/methods/setMyName/entity.json create mode 100644 .butcher/types/BotName/entity.json create mode 100644 .butcher/types/InlineQueryResultsButton/entity.json create mode 100644 .butcher/types/SwitchInlineQueryChosenChat/entity.json create mode 100644 aiogram/methods/get_my_name.py create mode 100644 aiogram/methods/set_my_name.py create mode 100644 aiogram/types/bot_name.py create mode 100644 aiogram/types/inline_query_results_button.py create mode 100644 aiogram/types/switch_inline_query_chosen_chat.py create mode 100644 docs/api/methods/get_my_name.rst create mode 100644 docs/api/methods/set_my_name.rst create mode 100644 docs/api/types/bot_name.rst create mode 100644 docs/api/types/inline_query_results_button.rst create mode 100644 docs/api/types/switch_inline_query_chosen_chat.rst diff --git a/.butcher/methods/answerInlineQuery/entity.json b/.butcher/methods/answerInlineQuery/entity.json index 410c1ef4..c01c11bc 100644 --- a/.butcher/methods/answerInlineQuery/entity.json +++ b/.butcher/methods/answerInlineQuery/entity.json @@ -66,6 +66,14 @@ "html_description": "Deep-linking parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only A-Z, a-z, 0-9, _ and - are allowed.
\n
\nExample: An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a switch_inline button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.", "rst_description": "`Deep-linking `_ parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed.\n\n\n\n*Example:* An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a `https://core.telegram.org/bots/api#inlinekeyboardmarkup `_ *switch_inline* button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.\n", "name": "switch_pm_parameter" + }, + { + "type": "InlineQueryResultsButton", + "required": false, + "description": "A JSON serialized object describing a button to be shown above inline query results", + "html_description": "A JSON serialized object describing a button to be shown above inline query results", + "rst_description": "A JSON serialized object describing a button to be shown above inline query results\n", + "name": "button" } ], "category": "methods" diff --git a/.butcher/methods/getMyName/entity.json b/.butcher/methods/getMyName/entity.json new file mode 100644 index 00000000..167b6a43 --- /dev/null +++ b/.butcher/methods/getMyName/entity.json @@ -0,0 +1,25 @@ +{ + "meta": {}, + "group": { + "title": "Upcoming update", + "anchor": "upcoming-update" + }, + "object": { + "anchor": "getmyname", + "name": "getMyName", + "description": "Use this method to get the current bot name for the given user language. Returns BotName on success.", + "html_description": "

Use this method to get the current bot name for the given user language. Returns BotName on success.

", + "rst_description": "Use this method to get the current bot name for the given user language. Returns :class:`aiogram.types.bot_name.BotName` on success.", + "annotations": [ + { + "type": "String", + "required": false, + "description": "A two-letter ISO 639-1 language code or an empty string", + "html_description": "A two-letter ISO 639-1 language code or an empty string", + "rst_description": "A two-letter ISO 639-1 language code or an empty string\n", + "name": "language_code" + } + ], + "category": "methods" + } +} diff --git a/.butcher/methods/setMyName/entity.json b/.butcher/methods/setMyName/entity.json new file mode 100644 index 00000000..0f6bf363 --- /dev/null +++ b/.butcher/methods/setMyName/entity.json @@ -0,0 +1,33 @@ +{ + "meta": {}, + "group": { + "title": "Upcoming update", + "anchor": "upcoming-update" + }, + "object": { + "anchor": "setmyname", + "name": "setMyName", + "description": "Use this method to change the bot's name. Returns True on success.", + "html_description": "

Use this method to change the bot's name. Returns True on success.

", + "rst_description": "Use this method to change the bot's name. Returns :code:`True` on success.", + "annotations": [ + { + "type": "String", + "required": false, + "description": "New bot name; 0-64 characters. Pass an empty string to remove the dedicated name for the given language.", + "html_description": "New bot name; 0-64 characters. Pass an empty string to remove the dedicated name for the given language.", + "rst_description": "New bot name; 0-64 characters. Pass an empty string to remove the dedicated name for the given language.\n", + "name": "name" + }, + { + "type": "String", + "required": false, + "description": "A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose language there is no dedicated name.", + "html_description": "A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose language there is no dedicated name.", + "rst_description": "A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose language there is no dedicated name.\n", + "name": "language_code" + } + ], + "category": "methods" + } +} diff --git a/.butcher/schema/schema.json b/.butcher/schema/schema.json index 0005cd55..f3c56457 100644 --- a/.butcher/schema/schema.json +++ b/.butcher/schema/schema.json @@ -2424,7 +2424,16 @@ "description": "This object represents a service message about a user allowing a bot added to the attachment menu to write messages. Currently holds no information.", "html_description": "

This object represents a service message about a user allowing a bot added to the attachment menu to write messages. Currently holds no information.

", "rst_description": "This object represents a service message about a user allowing a bot added to the attachment menu to write messages. Currently holds no information.", - "annotations": [], + "annotations": [ + { + "type": "String", + "description": "Name of the Web App which was launched from a link", + "html_description": "Optional. Name of the Web App which was launched from a link", + "rst_description": "*Optional*. Name of the Web App which was launched from a link\n", + "name": "web_app_name", + "required": false + } + ], "category": "types" }, { @@ -2948,6 +2957,14 @@ "rst_description": "*Optional*. Specify :code:`True`, to send a `Pay button `_.\n\n\n\n**NOTE:** This type of button **must** always be the first button in the first row and can only be used in invoice messages.\n", "name": "pay", "required": false + }, + { + "type": "SwitchInlineQueryChosenChat", + "description": "If set, pressing the button will prompt the user to select one of their chats of the specified type, open that chat and insert the bot's username and the specified inline query in the input field", + "html_description": "Optional. If set, pressing the button will prompt the user to select one of their chats of the specified type, open that chat and insert the bot's username and the specified inline query in the input field", + "rst_description": "*Optional*. If set, pressing the button will prompt the user to select one of their chats of the specified type, open that chat and insert the bot's username and the specified inline query in the input field\n", + "name": "switch_inline_query_chosen_chat", + "required": false } ], "category": "types" @@ -3807,6 +3824,14 @@ "rst_description": "*Optional*. Chat invite link, which was used by the user to join the chat; for joining by invite link events only.\n", "name": "invite_link", "required": false + }, + { + "type": "Boolean", + "description": "True, if the user joined the chat via a chat folder invite link", + "html_description": "Optional. True, if the user joined the chat via a chat folder invite link", + "rst_description": "*Optional*. True, if the user joined the chat via a chat folder invite link\n", + "name": "via_chat_folder_invite_link", + "required": false } ], "category": "types" @@ -9479,6 +9504,14 @@ "html_description": "Deep-linking parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only A-Z, a-z, 0-9, _ and - are allowed.
\n
\nExample: An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a switch_inline button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.", "rst_description": "`Deep-linking `_ parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed.\n\n\n\n*Example:* An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a `https://core.telegram.org/bots/api#inlinekeyboardmarkup `_ *switch_inline* button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.\n", "name": "switch_pm_parameter" + }, + { + "type": "InlineQueryResultsButton", + "required": false, + "description": "A JSON serialized object describing a button to be shown above inline query results", + "html_description": "A JSON serialized object describing a button to be shown above inline query results", + "rst_description": "A JSON serialized object describing a button to be shown above inline query results\n", + "name": "button" } ], "category": "methods" @@ -13692,6 +13725,158 @@ } ], "description": "Your bot can offer users HTML5 games to play solo or to compete against each other in groups and one-on-one chats. Create games via @BotFather using the /newgame command. Please note that this kind of power requires responsibility: you will need to accept the terms for each game that your bots will be offering.\n - Games are a new type of content on Telegram, represented by the Game and InlineQueryResultGame objects.\n - Once you've created a game via BotFather, you can send games to chats as regular messages using the sendGame method, or use inline mode with InlineQueryResultGame.\n - If you send the game message without any buttons, it will automatically have a 'Play GameName' button. When this button is pressed, your bot gets a CallbackQuery with the game_short_name of the requested game. You provide the correct URL for this particular user and the app opens the game in the in-app browser.\n - You can manually add multiple buttons to your game message. Please note that the first button in the first row must always launch the game, using the field callback_game in InlineKeyboardButton. You can add extra buttons according to taste: e.g., for a description of the rules, or to open the game's official community.\n - To make your game more attractive, you can upload a GIF animation that demostrates the game to the users via BotFather (see Lumberjack for example).\n - A game message will also display high scores for the current chat. Use setGameScore to post high scores to the chat with the game, add the edit_message parameter to automatically update the message with the current scoreboard.\n - Use getGameHighScores to get data for in-game high score tables.\n - You can also add an extra sharing button for users to share their best score to different chats.\n - For examples of what can be done using this new stuff, check the @gamebot and @gamee bots." + }, + { + "title": "Upcoming update", + "anchor": "upcoming-update", + "children": [ + { + "anchor": "inlinequeryresultsbutton", + "name": "InlineQueryResultsButton", + "description": "This object represents a button to be shown above inline query results. You must use exactly one of the optional fields.", + "html_description": "

This object represents a button to be shown above inline query results. You must use exactly one of the optional fields.

", + "rst_description": "This object represents a button to be shown above inline query results. You **must** use exactly one of the optional fields.", + "annotations": [ + { + "type": "String", + "description": "Label text on the button", + "html_description": "Label text on the button", + "rst_description": "Label text on the button\n", + "name": "text", + "required": true + }, + { + "type": "WebAppInfo", + "description": "Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method web_app_switch_inline_query inside the Web App.", + "html_description": "Optional. Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method web_app_switch_inline_query inside the Web App.", + "rst_description": "*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method *web_app_switch_inline_query* inside the Web App.\n", + "name": "web_app", + "required": false + }, + { + "type": "String", + "description": "Deep-linking parameter for the /start message sent to the bot when a user presses the button. 1-64 characters, only A-Z, a-z, 0-9, _ and - are allowed.\n\nExample: An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a switch_inline button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.", + "html_description": "Optional. Deep-linking parameter for the /start message sent to the bot when a user presses the button. 1-64 characters, only A-Z, a-z, 0-9, _ and - are allowed.
\n
\nExample: An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a switch_inline button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.", + "rst_description": "*Optional*. `Deep-linking `_ parameter for the /start message sent to the bot when a user presses the button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed.\n\n\n\n*Example:* An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a `https://core.telegram.org/bots/api#inlinekeyboardmarkup `_ *switch_inline* button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.\n", + "name": "start_parameter", + "required": false + } + ], + "category": "types" + }, + { + "anchor": "setmyname", + "name": "setMyName", + "description": "Use this method to change the bot's name. Returns True on success.", + "html_description": "

Use this method to change the bot's name. Returns True on success.

", + "rst_description": "Use this method to change the bot's name. Returns :code:`True` on success.", + "annotations": [ + { + "type": "String", + "required": false, + "description": "New bot name; 0-64 characters. Pass an empty string to remove the dedicated name for the given language.", + "html_description": "New bot name; 0-64 characters. Pass an empty string to remove the dedicated name for the given language.", + "rst_description": "New bot name; 0-64 characters. Pass an empty string to remove the dedicated name for the given language.\n", + "name": "name" + }, + { + "type": "String", + "required": false, + "description": "A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose language there is no dedicated name.", + "html_description": "A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose language there is no dedicated name.", + "rst_description": "A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose language there is no dedicated name.\n", + "name": "language_code" + } + ], + "category": "methods" + }, + { + "anchor": "getmyname", + "name": "getMyName", + "description": "Use this method to get the current bot name for the given user language. Returns BotName on success.", + "html_description": "

Use this method to get the current bot name for the given user language. Returns BotName on success.

", + "rst_description": "Use this method to get the current bot name for the given user language. Returns :class:`aiogram.types.bot_name.BotName` on success.", + "annotations": [ + { + "type": "String", + "required": false, + "description": "A two-letter ISO 639-1 language code or an empty string", + "html_description": "A two-letter ISO 639-1 language code or an empty string", + "rst_description": "A two-letter ISO 639-1 language code or an empty string\n", + "name": "language_code" + } + ], + "category": "methods" + }, + { + "anchor": "botname", + "name": "BotName", + "description": "This object represents the bot's name.", + "html_description": "

This object represents the bot's name.

", + "rst_description": "This object represents the bot's name.", + "annotations": [ + { + "type": "String", + "description": "The bot's name", + "html_description": "The bot's name", + "rst_description": "The bot's name\n", + "name": "name", + "required": true + } + ], + "category": "types" + }, + { + "anchor": "switchinlinequerychosenchat", + "name": "SwitchInlineQueryChosenChat", + "description": "This object represents an inline button that switches the current user to inline mode in a chosen chat, with an optional default inline query.", + "html_description": "

This object represents an inline button that switches the current user to inline mode in a chosen chat, with an optional default inline query.

", + "rst_description": "This object represents an inline button that switches the current user to inline mode in a chosen chat, with an optional default inline query.", + "annotations": [ + { + "type": "String", + "description": "The default inline query to be inserted in the input field. If left empty, only the bot's username will be inserted", + "html_description": "Optional. The default inline query to be inserted in the input field. If left empty, only the bot's username will be inserted", + "rst_description": "*Optional*. The default inline query to be inserted in the input field. If left empty, only the bot's username will be inserted\n", + "name": "query", + "required": false + }, + { + "type": "Boolean", + "description": "True, if private chats with users can be chosen", + "html_description": "Optional. True, if private chats with users can be chosen", + "rst_description": "*Optional*. True, if private chats with users can be chosen\n", + "name": "allow_user_chats", + "required": false + }, + { + "type": "Boolean", + "description": "True, if private chats with bots can be chosen", + "html_description": "Optional. True, if private chats with bots can be chosen", + "rst_description": "*Optional*. True, if private chats with bots can be chosen\n", + "name": "allow_bot_chats", + "required": false + }, + { + "type": "Boolean", + "description": "True, if group and supergroup chats can be chosen", + "html_description": "Optional. True, if group and supergroup chats can be chosen", + "rst_description": "*Optional*. True, if group and supergroup chats can be chosen\n", + "name": "allow_group_chats", + "required": false + }, + { + "type": "Boolean", + "description": "True, if channel chats can be chosen", + "html_description": "Optional. True, if channel chats can be chosen", + "rst_description": "*Optional*. True, if channel chats can be chosen\n", + "name": "allow_channel_chats", + "required": false + } + ], + "category": "types" + } + ] } ] } diff --git a/.butcher/types/BotName/entity.json b/.butcher/types/BotName/entity.json new file mode 100644 index 00000000..cd3afa82 --- /dev/null +++ b/.butcher/types/BotName/entity.json @@ -0,0 +1,25 @@ +{ + "meta": {}, + "group": { + "title": "Upcoming update", + "anchor": "upcoming-update" + }, + "object": { + "anchor": "botname", + "name": "BotName", + "description": "This object represents the bot's name.", + "html_description": "

This object represents the bot's name.

", + "rst_description": "This object represents the bot's name.", + "annotations": [ + { + "type": "String", + "description": "The bot's name", + "html_description": "The bot's name", + "rst_description": "The bot's name\n", + "name": "name", + "required": true + } + ], + "category": "types" + } +} diff --git a/.butcher/types/ChatMemberUpdated/entity.json b/.butcher/types/ChatMemberUpdated/entity.json index 7454b512..fbec5160 100644 --- a/.butcher/types/ChatMemberUpdated/entity.json +++ b/.butcher/types/ChatMemberUpdated/entity.json @@ -58,6 +58,14 @@ "rst_description": "*Optional*. Chat invite link, which was used by the user to join the chat; for joining by invite link events only.\n", "name": "invite_link", "required": false + }, + { + "type": "Boolean", + "description": "True, if the user joined the chat via a chat folder invite link", + "html_description": "Optional. True, if the user joined the chat via a chat folder invite link", + "rst_description": "*Optional*. True, if the user joined the chat via a chat folder invite link\n", + "name": "via_chat_folder_invite_link", + "required": false } ], "category": "types" diff --git a/.butcher/types/InlineKeyboardButton/entity.json b/.butcher/types/InlineKeyboardButton/entity.json index e73ff4dc..d81d02c9 100644 --- a/.butcher/types/InlineKeyboardButton/entity.json +++ b/.butcher/types/InlineKeyboardButton/entity.json @@ -82,6 +82,14 @@ "rst_description": "*Optional*. Specify :code:`True`, to send a `Pay button `_.\n\n\n\n**NOTE:** This type of button **must** always be the first button in the first row and can only be used in invoice messages.\n", "name": "pay", "required": false + }, + { + "type": "SwitchInlineQueryChosenChat", + "description": "If set, pressing the button will prompt the user to select one of their chats of the specified type, open that chat and insert the bot's username and the specified inline query in the input field", + "html_description": "Optional. If set, pressing the button will prompt the user to select one of their chats of the specified type, open that chat and insert the bot's username and the specified inline query in the input field", + "rst_description": "*Optional*. If set, pressing the button will prompt the user to select one of their chats of the specified type, open that chat and insert the bot's username and the specified inline query in the input field\n", + "name": "switch_inline_query_chosen_chat", + "required": false } ], "category": "types" diff --git a/.butcher/types/InlineQueryResultsButton/entity.json b/.butcher/types/InlineQueryResultsButton/entity.json new file mode 100644 index 00000000..bf0a8122 --- /dev/null +++ b/.butcher/types/InlineQueryResultsButton/entity.json @@ -0,0 +1,41 @@ +{ + "meta": {}, + "group": { + "title": "Upcoming update", + "anchor": "upcoming-update" + }, + "object": { + "anchor": "inlinequeryresultsbutton", + "name": "InlineQueryResultsButton", + "description": "This object represents a button to be shown above inline query results. You must use exactly one of the optional fields.", + "html_description": "

This object represents a button to be shown above inline query results. You must use exactly one of the optional fields.

", + "rst_description": "This object represents a button to be shown above inline query results. You **must** use exactly one of the optional fields.", + "annotations": [ + { + "type": "String", + "description": "Label text on the button", + "html_description": "Label text on the button", + "rst_description": "Label text on the button\n", + "name": "text", + "required": true + }, + { + "type": "WebAppInfo", + "description": "Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method web_app_switch_inline_query inside the Web App.", + "html_description": "Optional. Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method web_app_switch_inline_query inside the Web App.", + "rst_description": "*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method *web_app_switch_inline_query* inside the Web App.\n", + "name": "web_app", + "required": false + }, + { + "type": "String", + "description": "Deep-linking parameter for the /start message sent to the bot when a user presses the button. 1-64 characters, only A-Z, a-z, 0-9, _ and - are allowed.\n\nExample: An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a switch_inline button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.", + "html_description": "Optional. Deep-linking parameter for the /start message sent to the bot when a user presses the button. 1-64 characters, only A-Z, a-z, 0-9, _ and - are allowed.
\n
\nExample: An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a switch_inline button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.", + "rst_description": "*Optional*. `Deep-linking `_ parameter for the /start message sent to the bot when a user presses the button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed.\n\n\n\n*Example:* An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a `https://core.telegram.org/bots/api#inlinekeyboardmarkup `_ *switch_inline* button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.\n", + "name": "start_parameter", + "required": false + } + ], + "category": "types" + } +} diff --git a/.butcher/types/SwitchInlineQueryChosenChat/entity.json b/.butcher/types/SwitchInlineQueryChosenChat/entity.json new file mode 100644 index 00000000..d25b1459 --- /dev/null +++ b/.butcher/types/SwitchInlineQueryChosenChat/entity.json @@ -0,0 +1,57 @@ +{ + "meta": {}, + "group": { + "title": "Upcoming update", + "anchor": "upcoming-update" + }, + "object": { + "anchor": "switchinlinequerychosenchat", + "name": "SwitchInlineQueryChosenChat", + "description": "This object represents an inline button that switches the current user to inline mode in a chosen chat, with an optional default inline query.", + "html_description": "

This object represents an inline button that switches the current user to inline mode in a chosen chat, with an optional default inline query.

", + "rst_description": "This object represents an inline button that switches the current user to inline mode in a chosen chat, with an optional default inline query.", + "annotations": [ + { + "type": "String", + "description": "The default inline query to be inserted in the input field. If left empty, only the bot's username will be inserted", + "html_description": "Optional. The default inline query to be inserted in the input field. If left empty, only the bot's username will be inserted", + "rst_description": "*Optional*. The default inline query to be inserted in the input field. If left empty, only the bot's username will be inserted\n", + "name": "query", + "required": false + }, + { + "type": "Boolean", + "description": "True, if private chats with users can be chosen", + "html_description": "Optional. True, if private chats with users can be chosen", + "rst_description": "*Optional*. True, if private chats with users can be chosen\n", + "name": "allow_user_chats", + "required": false + }, + { + "type": "Boolean", + "description": "True, if private chats with bots can be chosen", + "html_description": "Optional. True, if private chats with bots can be chosen", + "rst_description": "*Optional*. True, if private chats with bots can be chosen\n", + "name": "allow_bot_chats", + "required": false + }, + { + "type": "Boolean", + "description": "True, if group and supergroup chats can be chosen", + "html_description": "Optional. True, if group and supergroup chats can be chosen", + "rst_description": "*Optional*. True, if group and supergroup chats can be chosen\n", + "name": "allow_group_chats", + "required": false + }, + { + "type": "Boolean", + "description": "True, if channel chats can be chosen", + "html_description": "Optional. True, if channel chats can be chosen", + "rst_description": "*Optional*. True, if channel chats can be chosen\n", + "name": "allow_channel_chats", + "required": false + } + ], + "category": "types" + } +} diff --git a/.butcher/types/WriteAccessAllowed/entity.json b/.butcher/types/WriteAccessAllowed/entity.json index 2ddeba40..65203444 100644 --- a/.butcher/types/WriteAccessAllowed/entity.json +++ b/.butcher/types/WriteAccessAllowed/entity.json @@ -10,7 +10,16 @@ "description": "This object represents a service message about a user allowing a bot added to the attachment menu to write messages. Currently holds no information.", "html_description": "

This object represents a service message about a user allowing a bot added to the attachment menu to write messages. Currently holds no information.

", "rst_description": "This object represents a service message about a user allowing a bot added to the attachment menu to write messages. Currently holds no information.", - "annotations": [], + "annotations": [ + { + "type": "String", + "description": "Name of the Web App which was launched from a link", + "html_description": "Optional. Name of the Web App which was launched from a link", + "rst_description": "*Optional*. Name of the Web App which was launched from a link\n", + "name": "web_app_name", + "required": false + } + ], "category": "types" } } diff --git a/aiogram/client/bot.py b/aiogram/client/bot.py index acb99aae..23ced1d1 100644 --- a/aiogram/client/bot.py +++ b/aiogram/client/bot.py @@ -71,6 +71,7 @@ from ..methods import ( GetMyCommands, GetMyDefaultAdministratorRights, GetMyDescription, + GetMyName, GetMyShortDescription, GetStickerSet, GetUpdates, @@ -115,6 +116,7 @@ from ..methods import ( SetMyCommands, SetMyDefaultAdministratorRights, SetMyDescription, + SetMyName, SetMyShortDescription, SetPassportDataErrors, SetStickerEmojiList, @@ -140,6 +142,7 @@ from ..types import ( BotCommand, BotCommandScope, BotDescription, + BotName, BotShortDescription, Chat, ChatAdministratorRights, @@ -158,6 +161,7 @@ from ..types import ( GameHighScore, InlineKeyboardMarkup, InlineQueryResult, + InlineQueryResultsButton, InputFile, InputMedia, InputMediaAudio, @@ -483,6 +487,7 @@ class Bot(ContextInstanceMixin["Bot"]): next_offset: Optional[str] = None, switch_pm_text: Optional[str] = None, switch_pm_parameter: Optional[str] = None, + button: Optional[InlineQueryResultsButton] = None, request_timeout: Optional[int] = None, ) -> bool: """ @@ -499,6 +504,7 @@ class Bot(ContextInstanceMixin["Bot"]): :param next_offset: Pass the offset that a client should send in the next query with the same text to receive more results. Pass an empty string if there are no more results or if you don't support pagination. Offset length can't exceed 64 bytes. :param switch_pm_text: If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter *switch_pm_parameter* :param switch_pm_parameter: `Deep-linking `_ parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed. + :param button: A JSON serialized object describing a button to be shown above inline query results :param request_timeout: Request timeout :return: On success, :code:`True` is returned. """ @@ -511,6 +517,7 @@ class Bot(ContextInstanceMixin["Bot"]): next_offset=next_offset, switch_pm_text=switch_pm_text, switch_pm_parameter=switch_pm_parameter, + button=button, ) return await self(call, request_timeout=request_timeout) @@ -3913,3 +3920,46 @@ class Bot(ContextInstanceMixin["Bot"]): title=title, ) return await self(call, request_timeout=request_timeout) + + async def get_my_name( + self, + language_code: Optional[str] = None, + request_timeout: Optional[int] = None, + ) -> BotName: + """ + Use this method to get the current bot name for the given user language. Returns :class:`aiogram.types.bot_name.BotName` on success. + + Source: https://core.telegram.org/bots/api#getmyname + + :param language_code: A two-letter ISO 639-1 language code or an empty string + :param request_timeout: Request timeout + :return: Returns :class:`aiogram.types.bot_name.BotName` on success. + """ + + call = GetMyName( + language_code=language_code, + ) + return await self(call, request_timeout=request_timeout) + + async def set_my_name( + self, + name: Optional[str] = None, + language_code: Optional[str] = None, + request_timeout: Optional[int] = None, + ) -> bool: + """ + Use this method to change the bot's name. Returns :code:`True` on success. + + Source: https://core.telegram.org/bots/api#setmyname + + :param name: New bot name; 0-64 characters. Pass an empty string to remove the dedicated name for the given language. + :param language_code: A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose language there is no dedicated name. + :param request_timeout: Request timeout + :return: Returns :code:`True` on success. + """ + + call = SetMyName( + name=name, + language_code=language_code, + ) + return await self(call, request_timeout=request_timeout) diff --git a/aiogram/methods/__init__.py b/aiogram/methods/__init__.py index 5bf0edf5..fd887d7e 100644 --- a/aiogram/methods/__init__.py +++ b/aiogram/methods/__init__.py @@ -48,6 +48,7 @@ from .get_me import GetMe from .get_my_commands import GetMyCommands from .get_my_default_administrator_rights import GetMyDefaultAdministratorRights from .get_my_description import GetMyDescription +from .get_my_name import GetMyName from .get_my_short_description import GetMyShortDescription from .get_sticker_set import GetStickerSet from .get_updates import GetUpdates @@ -92,6 +93,7 @@ from .set_game_score import SetGameScore from .set_my_commands import SetMyCommands from .set_my_default_administrator_rights import SetMyDefaultAdministratorRights from .set_my_description import SetMyDescription +from .set_my_name import SetMyName from .set_my_short_description import SetMyShortDescription from .set_passport_data_errors import SetPassportDataErrors from .set_sticker_emoji_list import SetStickerEmojiList @@ -161,6 +163,7 @@ __all__ = ( "GetMyCommands", "GetMyDefaultAdministratorRights", "GetMyDescription", + "GetMyName", "GetMyShortDescription", "GetStickerSet", "GetUpdates", @@ -207,6 +210,7 @@ __all__ = ( "SetMyCommands", "SetMyDefaultAdministratorRights", "SetMyDescription", + "SetMyName", "SetMyShortDescription", "SetPassportDataErrors", "SetStickerEmojiList", diff --git a/aiogram/methods/answer_inline_query.py b/aiogram/methods/answer_inline_query.py index f7760cb0..7e85a9c9 100644 --- a/aiogram/methods/answer_inline_query.py +++ b/aiogram/methods/answer_inline_query.py @@ -2,7 +2,7 @@ from __future__ import annotations from typing import TYPE_CHECKING, List, Optional -from ..types import InlineQueryResult +from ..types import InlineQueryResult, InlineQueryResultsButton from .base import TelegramMethod @@ -32,3 +32,5 @@ class AnswerInlineQuery(TelegramMethod[bool]): """If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter *switch_pm_parameter*""" switch_pm_parameter: Optional[str] = None """`Deep-linking `_ parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed.""" + button: Optional[InlineQueryResultsButton] = None + """A JSON serialized object describing a button to be shown above inline query results""" diff --git a/aiogram/methods/get_my_name.py b/aiogram/methods/get_my_name.py new file mode 100644 index 00000000..202b21ff --- /dev/null +++ b/aiogram/methods/get_my_name.py @@ -0,0 +1,18 @@ +from typing import Optional + +from ..types import BotName +from .base import TelegramMethod + + +class GetMyName(TelegramMethod[BotName]): + """ + Use this method to get the current bot name for the given user language. Returns :class:`aiogram.types.bot_name.BotName` on success. + + Source: https://core.telegram.org/bots/api#getmyname + """ + + __returning__ = BotName + __api_method__ = "getMyName" + + language_code: Optional[str] = None + """A two-letter ISO 639-1 language code or an empty string""" diff --git a/aiogram/methods/set_my_name.py b/aiogram/methods/set_my_name.py new file mode 100644 index 00000000..9b392281 --- /dev/null +++ b/aiogram/methods/set_my_name.py @@ -0,0 +1,19 @@ +from typing import Optional + +from .base import TelegramMethod + + +class SetMyName(TelegramMethod[bool]): + """ + Use this method to change the bot's name. Returns :code:`True` on success. + + Source: https://core.telegram.org/bots/api#setmyname + """ + + __returning__ = bool + __api_method__ = "setMyName" + + name: Optional[str] = None + """New bot name; 0-64 characters. Pass an empty string to remove the dedicated name for the given language.""" + language_code: Optional[str] = None + """A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose language there is no dedicated name.""" diff --git a/aiogram/types/__init__.py b/aiogram/types/__init__.py index 85fd9338..4808f7fe 100644 --- a/aiogram/types/__init__.py +++ b/aiogram/types/__init__.py @@ -15,6 +15,7 @@ from .bot_command_scope_chat_administrators import BotCommandScopeChatAdministra from .bot_command_scope_chat_member import BotCommandScopeChatMember from .bot_command_scope_default import BotCommandScopeDefault from .bot_description import BotDescription +from .bot_name import BotName from .bot_short_description import BotShortDescription from .callback_game import CallbackGame from .callback_query import CallbackQuery @@ -77,6 +78,7 @@ from .inline_query_result_photo import InlineQueryResultPhoto from .inline_query_result_venue import InlineQueryResultVenue from .inline_query_result_video import InlineQueryResultVideo from .inline_query_result_voice import InlineQueryResultVoice +from .inline_query_results_button import InlineQueryResultsButton from .input_contact_message_content import InputContactMessageContent from .input_file import BufferedInputFile, FSInputFile, InputFile, URLInputFile from .input_invoice_message_content import InputInvoiceMessageContent @@ -139,6 +141,7 @@ from .shipping_query import ShippingQuery from .sticker import Sticker from .sticker_set import StickerSet from .successful_payment import SuccessfulPayment +from .switch_inline_query_chosen_chat import SwitchInlineQueryChosenChat from .update import Update from .user import User from .user_profile_photos import UserProfilePhotos @@ -169,6 +172,7 @@ __all__ = ( "BotCommandScopeChatMember", "BotCommandScopeDefault", "BotDescription", + "BotName", "BotShortDescription", "BufferedInputFile", "CallbackGame", @@ -234,6 +238,7 @@ __all__ = ( "InlineQueryResultVenue", "InlineQueryResultVideo", "InlineQueryResultVoice", + "InlineQueryResultsButton", "InputContactMessageContent", "InputFile", "InputInvoiceMessageContent", @@ -294,6 +299,7 @@ __all__ = ( "Sticker", "StickerSet", "SuccessfulPayment", + "SwitchInlineQueryChosenChat", "TelegramObject", "UNSET_PARSE_MODE", "URLInputFile", diff --git a/aiogram/types/bot_name.py b/aiogram/types/bot_name.py new file mode 100644 index 00000000..103f1fde --- /dev/null +++ b/aiogram/types/bot_name.py @@ -0,0 +1,12 @@ +from .base import TelegramObject + + +class BotName(TelegramObject): + """ + This object represents the bot's name. + + Source: https://core.telegram.org/bots/api#botname + """ + + name: str + """The bot's name""" diff --git a/aiogram/types/chat_member_updated.py b/aiogram/types/chat_member_updated.py index e4e4a340..5931da6f 100644 --- a/aiogram/types/chat_member_updated.py +++ b/aiogram/types/chat_member_updated.py @@ -52,3 +52,5 @@ class ChatMemberUpdated(TelegramObject): """New information about the chat member""" invite_link: Optional[ChatInviteLink] = None """*Optional*. Chat invite link, which was used by the user to join the chat; for joining by invite link events only.""" + via_chat_folder_invite_link: Optional[bool] = None + """*Optional*. True, if the user joined the chat via a chat folder invite link""" diff --git a/aiogram/types/inline_keyboard_button.py b/aiogram/types/inline_keyboard_button.py index c4208b70..da1d50dd 100644 --- a/aiogram/types/inline_keyboard_button.py +++ b/aiogram/types/inline_keyboard_button.py @@ -7,6 +7,7 @@ from .base import MutableTelegramObject if TYPE_CHECKING: from .callback_game import CallbackGame from .login_url import LoginUrl + from .switch_inline_query_chosen_chat import SwitchInlineQueryChosenChat from .web_app_info import WebAppInfo @@ -35,3 +36,5 @@ class InlineKeyboardButton(MutableTelegramObject): """*Optional*. Description of the game that will be launched when the user presses the button.""" pay: Optional[bool] = None """*Optional*. Specify :code:`True`, to send a `Pay button `_.""" + switch_inline_query_chosen_chat: Optional[SwitchInlineQueryChosenChat] = None + """*Optional*. If set, pressing the button will prompt the user to select one of their chats of the specified type, open that chat and insert the bot's username and the specified inline query in the input field""" diff --git a/aiogram/types/inline_query.py b/aiogram/types/inline_query.py index 1feb6f7f..1edbbbfb 100644 --- a/aiogram/types/inline_query.py +++ b/aiogram/types/inline_query.py @@ -9,6 +9,7 @@ from .base import TelegramObject if TYPE_CHECKING: from ..methods import AnswerInlineQuery from .inline_query_result import InlineQueryResult + from .inline_query_results_button import InlineQueryResultsButton from .location import Location from .user import User @@ -41,6 +42,7 @@ class InlineQuery(TelegramObject): next_offset: Optional[str] = None, switch_pm_text: Optional[str] = None, switch_pm_parameter: Optional[str] = None, + button: Optional[InlineQueryResultsButton] = None, **kwargs: Any, ) -> AnswerInlineQuery: """ @@ -61,6 +63,7 @@ class InlineQuery(TelegramObject): :param next_offset: Pass the offset that a client should send in the next query with the same text to receive more results. Pass an empty string if there are no more results or if you don't support pagination. Offset length can't exceed 64 bytes. :param switch_pm_text: If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter *switch_pm_parameter* :param switch_pm_parameter: `Deep-linking `_ parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed. + :param button: A JSON serialized object describing a button to be shown above inline query results :return: instance of method :class:`aiogram.methods.answer_inline_query.AnswerInlineQuery` """ # DO NOT EDIT MANUALLY!!! @@ -76,5 +79,6 @@ class InlineQuery(TelegramObject): next_offset=next_offset, switch_pm_text=switch_pm_text, switch_pm_parameter=switch_pm_parameter, + button=button, **kwargs, ) diff --git a/aiogram/types/inline_query_results_button.py b/aiogram/types/inline_query_results_button.py new file mode 100644 index 00000000..4a8f59df --- /dev/null +++ b/aiogram/types/inline_query_results_button.py @@ -0,0 +1,23 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Optional + +from .base import TelegramObject + +if TYPE_CHECKING: + from .web_app_info import WebAppInfo + + +class InlineQueryResultsButton(TelegramObject): + """ + This object represents a button to be shown above inline query results. You **must** use exactly one of the optional fields. + + Source: https://core.telegram.org/bots/api#inlinequeryresultsbutton + """ + + text: str + """Label text on the button""" + web_app: Optional[WebAppInfo] = None + """*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method *web_app_switch_inline_query* inside the Web App.""" + start_parameter: Optional[str] = None + """*Optional*. `Deep-linking `_ parameter for the /start message sent to the bot when a user presses the button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed.""" diff --git a/aiogram/types/switch_inline_query_chosen_chat.py b/aiogram/types/switch_inline_query_chosen_chat.py new file mode 100644 index 00000000..f0a2e84f --- /dev/null +++ b/aiogram/types/switch_inline_query_chosen_chat.py @@ -0,0 +1,22 @@ +from typing import Optional + +from .base import TelegramObject + + +class SwitchInlineQueryChosenChat(TelegramObject): + """ + This object represents an inline button that switches the current user to inline mode in a chosen chat, with an optional default inline query. + + Source: https://core.telegram.org/bots/api#switchinlinequerychosenchat + """ + + query: Optional[str] = None + """*Optional*. The default inline query to be inserted in the input field. If left empty, only the bot's username will be inserted""" + allow_user_chats: Optional[bool] = None + """*Optional*. True, if private chats with users can be chosen""" + allow_bot_chats: Optional[bool] = None + """*Optional*. True, if private chats with bots can be chosen""" + allow_group_chats: Optional[bool] = None + """*Optional*. True, if group and supergroup chats can be chosen""" + allow_channel_chats: Optional[bool] = None + """*Optional*. True, if channel chats can be chosen""" diff --git a/aiogram/types/write_access_allowed.py b/aiogram/types/write_access_allowed.py index 859280db..927ee807 100644 --- a/aiogram/types/write_access_allowed.py +++ b/aiogram/types/write_access_allowed.py @@ -1,3 +1,5 @@ +from typing import Optional + from aiogram.types import TelegramObject @@ -7,3 +9,6 @@ class WriteAccessAllowed(TelegramObject): Source: https://core.telegram.org/bots/api#writeaccessallowed """ + + web_app_name: Optional[str] = None + """*Optional*. Name of the Web App which was launched from a link""" diff --git a/docs/api/methods/get_my_name.rst b/docs/api/methods/get_my_name.rst new file mode 100644 index 00000000..656c41ed --- /dev/null +++ b/docs/api/methods/get_my_name.rst @@ -0,0 +1,37 @@ +######### +getMyName +######### + +Returns: :obj:`BotName` + +.. automodule:: aiogram.methods.get_my_name + :members: + :member-order: bysource + :undoc-members: True + + +Usage +===== + +As bot method +------------- + +.. code-block:: + + result: BotName = await bot.get_my_name(...) + + +Method as object +---------------- + +Imports: + +- :code:`from aiogram.methods.get_my_name import GetMyName` +- alias: :code:`from aiogram.methods import GetMyName` + +With specific bot +~~~~~~~~~~~~~~~~~ + +.. code-block:: python + + result: BotName = await bot(GetMyName(...)) diff --git a/docs/api/methods/index.rst b/docs/api/methods/index.rst index 17626855..0214a89a 100644 --- a/docs/api/methods/index.rst +++ b/docs/api/methods/index.rst @@ -171,3 +171,12 @@ Inline mode answer_inline_query answer_web_app_query + +Upcoming update +=============== + +.. toctree:: + :maxdepth: 1 + + get_my_name + set_my_name diff --git a/docs/api/methods/set_my_name.rst b/docs/api/methods/set_my_name.rst new file mode 100644 index 00000000..f08f6fee --- /dev/null +++ b/docs/api/methods/set_my_name.rst @@ -0,0 +1,44 @@ +######### +setMyName +######### + +Returns: :obj:`bool` + +.. automodule:: aiogram.methods.set_my_name + :members: + :member-order: bysource + :undoc-members: True + + +Usage +===== + +As bot method +------------- + +.. code-block:: + + result: bool = await bot.set_my_name(...) + + +Method as object +---------------- + +Imports: + +- :code:`from aiogram.methods.set_my_name import SetMyName` +- alias: :code:`from aiogram.methods import SetMyName` + +With specific bot +~~~~~~~~~~~~~~~~~ + +.. code-block:: python + + result: bool = await bot(SetMyName(...)) + +As reply into Webhook in handler +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: python + + return SetMyName(...) diff --git a/docs/api/types/bot_name.rst b/docs/api/types/bot_name.rst new file mode 100644 index 00000000..794667fa --- /dev/null +++ b/docs/api/types/bot_name.rst @@ -0,0 +1,9 @@ +####### +BotName +####### + + +.. automodule:: aiogram.types.bot_name + :members: + :member-order: bysource + :undoc-members: True diff --git a/docs/api/types/index.rst b/docs/api/types/index.rst index 304eae6b..01d5ff95 100644 --- a/docs/api/types/index.rst +++ b/docs/api/types/index.rst @@ -192,6 +192,16 @@ Payments shipping_query successful_payment +Upcoming update +=============== + +.. toctree:: + :maxdepth: 1 + + bot_name + inline_query_results_button + switch_inline_query_chosen_chat + Games ===== diff --git a/docs/api/types/inline_query_results_button.rst b/docs/api/types/inline_query_results_button.rst new file mode 100644 index 00000000..c4b1fc05 --- /dev/null +++ b/docs/api/types/inline_query_results_button.rst @@ -0,0 +1,9 @@ +######################## +InlineQueryResultsButton +######################## + + +.. automodule:: aiogram.types.inline_query_results_button + :members: + :member-order: bysource + :undoc-members: True diff --git a/docs/api/types/switch_inline_query_chosen_chat.rst b/docs/api/types/switch_inline_query_chosen_chat.rst new file mode 100644 index 00000000..961534d6 --- /dev/null +++ b/docs/api/types/switch_inline_query_chosen_chat.rst @@ -0,0 +1,9 @@ +########################### +SwitchInlineQueryChosenChat +########################### + + +.. automodule:: aiogram.types.switch_inline_query_chosen_chat + :members: + :member-order: bysource + :undoc-members: True diff --git a/tests/test_api/test_types/test_message.py b/tests/test_api/test_types/test_message.py index 563141f1..1b15327f 100644 --- a/tests/test_api/test_types/test_message.py +++ b/tests/test_api/test_types/test_message.py @@ -43,8 +43,8 @@ from aiogram.types import ( Document, EncryptedCredentials, ForumTopicClosed, - ForumTopicEdited, ForumTopicCreated, + ForumTopicEdited, ForumTopicReopened, Game, InlineKeyboardButton,