mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Added full support for the Bot API 9.6 (#1792)
* Added full support for the Bot API 9.6 * Add support for `managed_bot` updates * Set `description_parse_mode` default to `"parse_mode"` and use `DateTime` for `addition_date` in `PollOption` * Update changelog with features and changes from Bot API 9.6 * Add changelog fragment generator and update poll parameter descriptions
This commit is contained in:
parent
00c1130938
commit
9f49c0413f
107 changed files with 3077 additions and 328 deletions
|
|
@ -1 +1 @@
|
||||||
9.5
|
9.6
|
||||||
|
|
|
||||||
|
|
@ -49,3 +49,4 @@ extract:
|
||||||
- reply_to_checklist_task_id
|
- reply_to_checklist_task_id
|
||||||
- suggested_post_info
|
- suggested_post_info
|
||||||
- is_paid_post
|
- is_paid_post
|
||||||
|
- reply_to_poll_option_id
|
||||||
|
|
|
||||||
4
.butcher/methods/answerWebAppQuery/entity.json
generated
4
.butcher/methods/answerWebAppQuery/entity.json
generated
|
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
"meta": {},
|
"meta": {},
|
||||||
"group": {
|
"group": {
|
||||||
"title": "Inline mode",
|
"title": "Available methods",
|
||||||
"anchor": "inline-mode"
|
"anchor": "available-methods"
|
||||||
},
|
},
|
||||||
"object": {
|
"object": {
|
||||||
"anchor": "answerwebappquery",
|
"anchor": "answerwebappquery",
|
||||||
|
|
|
||||||
25
.butcher/methods/getManagedBotToken/entity.json
generated
Normal file
25
.butcher/methods/getManagedBotToken/entity.json
generated
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"meta": {},
|
||||||
|
"group": {
|
||||||
|
"title": "Available methods",
|
||||||
|
"anchor": "available-methods"
|
||||||
|
},
|
||||||
|
"object": {
|
||||||
|
"anchor": "getmanagedbottoken",
|
||||||
|
"name": "getManagedBotToken",
|
||||||
|
"description": "Use this method to get the token of a managed bot. Returns the token as String on success.",
|
||||||
|
"html_description": "<p>Use this method to get the token of a managed bot. Returns the token as <em>String</em> on success.</p>",
|
||||||
|
"rst_description": "Use this method to get the token of a managed bot. Returns the token as *String* on success.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"required": true,
|
||||||
|
"description": "User identifier of the managed bot whose token will be returned",
|
||||||
|
"html_description": "<td>User identifier of the managed bot whose token will be returned</td>",
|
||||||
|
"rst_description": "User identifier of the managed bot whose token will be returned\n",
|
||||||
|
"name": "user_id"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "methods"
|
||||||
|
}
|
||||||
|
}
|
||||||
12
.butcher/methods/giftPremiumSubscription/entity.json
generated
12
.butcher/methods/giftPremiumSubscription/entity.json
generated
|
|
@ -46,17 +46,17 @@
|
||||||
{
|
{
|
||||||
"type": "String",
|
"type": "String",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "Mode for parsing entities in the text. See formatting options for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.",
|
"description": "Mode for parsing entities in the text. See formatting options for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.",
|
||||||
"html_description": "<td>Mode for parsing entities in the text. See <a href=\"#formatting-options\">formatting options</a> for more details. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, and “custom_emoji” are ignored.</td>",
|
"html_description": "<td>Mode for parsing entities in the text. See <a href=\"#formatting-options\">formatting options</a> for more details. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, “custom_emoji”, and “date_time” are ignored.</td>",
|
||||||
"rst_description": "Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.\n",
|
"rst_description": "Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.\n",
|
||||||
"name": "text_parse_mode"
|
"name": "text_parse_mode"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Array of MessageEntity",
|
"type": "Array of MessageEntity",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of text_parse_mode. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.",
|
"description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of text_parse_mode. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.",
|
||||||
"html_description": "<td>A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of <em>text_parse_mode</em>. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, and “custom_emoji” are ignored.</td>",
|
"html_description": "<td>A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of <em>text_parse_mode</em>. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, “custom_emoji”, and “date_time” are ignored.</td>",
|
||||||
"rst_description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.\n",
|
"rst_description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.\n",
|
||||||
"name": "text_entities"
|
"name": "text_entities"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
25
.butcher/methods/replaceManagedBotToken/entity.json
generated
Normal file
25
.butcher/methods/replaceManagedBotToken/entity.json
generated
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"meta": {},
|
||||||
|
"group": {
|
||||||
|
"title": "Available methods",
|
||||||
|
"anchor": "available-methods"
|
||||||
|
},
|
||||||
|
"object": {
|
||||||
|
"anchor": "replacemanagedbottoken",
|
||||||
|
"name": "replaceManagedBotToken",
|
||||||
|
"description": "Use this method to revoke the current token of a managed bot and generate a new one. Returns the new token as String on success.",
|
||||||
|
"html_description": "<p>Use this method to revoke the current token of a managed bot and generate a new one. Returns the new token as <em>String</em> on success.</p>",
|
||||||
|
"rst_description": "Use this method to revoke the current token of a managed bot and generate a new one. Returns the new token as *String* on success.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"required": true,
|
||||||
|
"description": "User identifier of the managed bot whose token will be replaced",
|
||||||
|
"html_description": "<td>User identifier of the managed bot whose token will be replaced</td>",
|
||||||
|
"rst_description": "User identifier of the managed bot whose token will be replaced\n",
|
||||||
|
"name": "user_id"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "methods"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
"meta": {},
|
"meta": {},
|
||||||
"group": {
|
"group": {
|
||||||
"title": "Inline mode",
|
"title": "Available methods",
|
||||||
"anchor": "inline-mode"
|
"anchor": "available-methods"
|
||||||
},
|
},
|
||||||
"object": {
|
"object": {
|
||||||
"anchor": "savepreparedinlinemessage",
|
"anchor": "savepreparedinlinemessage",
|
||||||
|
|
|
||||||
33
.butcher/methods/savePreparedKeyboardButton/entity.json
generated
Normal file
33
.butcher/methods/savePreparedKeyboardButton/entity.json
generated
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"meta": {},
|
||||||
|
"group": {
|
||||||
|
"title": "Available methods",
|
||||||
|
"anchor": "available-methods"
|
||||||
|
},
|
||||||
|
"object": {
|
||||||
|
"anchor": "savepreparedkeyboardbutton",
|
||||||
|
"name": "savePreparedKeyboardButton",
|
||||||
|
"description": "Stores a keyboard button that can be used by a user within a Mini App. Returns a PreparedKeyboardButton object.",
|
||||||
|
"html_description": "<p>Stores a keyboard button that can be used by a user within a Mini App. Returns a <a href=\"#preparedkeyboardbutton\">PreparedKeyboardButton</a> object.</p>",
|
||||||
|
"rst_description": "Stores a keyboard button that can be used by a user within a Mini App. Returns a :class:`aiogram.types.prepared_keyboard_button.PreparedKeyboardButton` object.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"required": true,
|
||||||
|
"description": "Unique identifier of the target user that can use the button",
|
||||||
|
"html_description": "<td>Unique identifier of the target user that can use the button</td>",
|
||||||
|
"rst_description": "Unique identifier of the target user that can use the button\n",
|
||||||
|
"name": "user_id"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "KeyboardButton",
|
||||||
|
"required": true,
|
||||||
|
"description": "A JSON-serialized object describing the button to be saved. The button must be of the type request_users, request_chat, or request_managed_bot",
|
||||||
|
"html_description": "<td>A JSON-serialized object describing the button to be saved. The button must be of the type <em>request_users</em>, <em>request_chat</em>, or <em>request_managed_bot</em></td>",
|
||||||
|
"rst_description": "A JSON-serialized object describing the button to be saved. The button must be of the type *request_users*, *request_chat*, or *request_managed_bot*\n",
|
||||||
|
"name": "button"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "methods"
|
||||||
|
}
|
||||||
|
}
|
||||||
12
.butcher/methods/sendGift/entity.json
generated
12
.butcher/methods/sendGift/entity.json
generated
|
|
@ -54,17 +54,17 @@
|
||||||
{
|
{
|
||||||
"type": "String",
|
"type": "String",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "Mode for parsing entities in the text. See formatting options for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.",
|
"description": "Mode for parsing entities in the text. See formatting options for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.",
|
||||||
"html_description": "<td>Mode for parsing entities in the text. See <a href=\"#formatting-options\">formatting options</a> for more details. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, and “custom_emoji” are ignored.</td>",
|
"html_description": "<td>Mode for parsing entities in the text. See <a href=\"#formatting-options\">formatting options</a> for more details. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, “custom_emoji”, and “date_time” are ignored.</td>",
|
||||||
"rst_description": "Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.\n",
|
"rst_description": "Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.\n",
|
||||||
"name": "text_parse_mode"
|
"name": "text_parse_mode"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Array of MessageEntity",
|
"type": "Array of MessageEntity",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of text_parse_mode. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.",
|
"description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of text_parse_mode. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.",
|
||||||
"html_description": "<td>A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of <em>text_parse_mode</em>. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, and “custom_emoji” are ignored.</td>",
|
"html_description": "<td>A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of <em>text_parse_mode</em>. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, “custom_emoji”, and “date_time” are ignored.</td>",
|
||||||
"rst_description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.\n",
|
"rst_description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.\n",
|
||||||
"name": "text_entities"
|
"name": "text_entities"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
explanation_parse_mode: parse_mode
|
explanation_parse_mode: parse_mode
|
||||||
question_parse_mode: parse_mode
|
question_parse_mode: parse_mode
|
||||||
|
description_parse_mode: parse_mode
|
||||||
protect_content: protect_content
|
protect_content: protect_content
|
||||||
|
|
|
||||||
96
.butcher/methods/sendPoll/entity.json
generated
96
.butcher/methods/sendPoll/entity.json
generated
|
|
@ -86,18 +86,50 @@
|
||||||
{
|
{
|
||||||
"type": "Boolean",
|
"type": "Boolean",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "True, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to False",
|
"description": "Pass True, if the poll allows multiple answers, defaults to False",
|
||||||
"html_description": "<td><em>True</em>, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to <em>False</em></td>",
|
"html_description": "<td>Pass <em>True</em>, if the poll allows multiple answers, defaults to <em>False</em></td>",
|
||||||
"rst_description": ":code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False`\n",
|
"rst_description": "Pass :code:`True`, if the poll allows multiple answers, defaults to :code:`False`\n",
|
||||||
"name": "allows_multiple_answers"
|
"name": "allows_multiple_answers"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Integer",
|
"type": "Boolean",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "0-based identifier of the correct answer option, required for polls in quiz mode",
|
"description": "Pass True, if the poll allows to change chosen answer options, defaults to False for quizzes and to True for regular polls",
|
||||||
"html_description": "<td>0-based identifier of the correct answer option, required for polls in quiz mode</td>",
|
"html_description": "<td>Pass <em>True</em>, if the poll allows to change chosen answer options, defaults to <em>False</em> for quizzes and to <em>True</em> for regular polls</td>",
|
||||||
"rst_description": "0-based identifier of the correct answer option, required for polls in quiz mode\n",
|
"rst_description": "Pass :code:`True`, if the poll allows to change chosen answer options, defaults to :code:`False` for quizzes and to :code:`True` for regular polls\n",
|
||||||
"name": "correct_option_id"
|
"name": "allows_revoting"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Boolean",
|
||||||
|
"required": false,
|
||||||
|
"description": "Pass True, if the poll options must be shown in random order",
|
||||||
|
"html_description": "<td>Pass <em>True</em>, if the poll options must be shown in random order</td>",
|
||||||
|
"rst_description": "Pass :code:`True`, if the poll options must be shown in random order\n",
|
||||||
|
"name": "shuffle_options"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Boolean",
|
||||||
|
"required": false,
|
||||||
|
"description": "Pass True, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes",
|
||||||
|
"html_description": "<td>Pass <em>True</em>, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes</td>",
|
||||||
|
"rst_description": "Pass :code:`True`, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes\n",
|
||||||
|
"name": "allow_adding_options"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Boolean",
|
||||||
|
"required": false,
|
||||||
|
"description": "Pass True, if poll results must be shown only after the poll closes",
|
||||||
|
"html_description": "<td>Pass <em>True</em>, if poll results must be shown only after the poll closes</td>",
|
||||||
|
"rst_description": "Pass :code:`True`, if poll results must be shown only after the poll closes\n",
|
||||||
|
"name": "hide_results_until_closes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of Integer",
|
||||||
|
"required": false,
|
||||||
|
"description": "A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode",
|
||||||
|
"html_description": "<td>A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode</td>",
|
||||||
|
"rst_description": "A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode\n",
|
||||||
|
"name": "correct_option_ids"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "String",
|
"type": "String",
|
||||||
|
|
@ -126,17 +158,17 @@
|
||||||
{
|
{
|
||||||
"type": "Integer",
|
"type": "Integer",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with close_date.",
|
"description": "Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with close_date.",
|
||||||
"html_description": "<td>Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with <em>close_date</em>.</td>",
|
"html_description": "<td>Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with <em>close_date</em>.</td>",
|
||||||
"rst_description": "Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*.\n",
|
"rst_description": "Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with *close_date*.\n",
|
||||||
"name": "open_period"
|
"name": "open_period"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Integer",
|
"type": "Integer",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with open_period.",
|
"description": "Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with open_period.",
|
||||||
"html_description": "<td>Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with <em>open_period</em>.</td>",
|
"html_description": "<td>Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with <em>open_period</em>.</td>",
|
||||||
"rst_description": "Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with *open_period*.\n",
|
"rst_description": "Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with *open_period*.\n",
|
||||||
"name": "close_date"
|
"name": "close_date"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -147,6 +179,30 @@
|
||||||
"rst_description": "Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.\n",
|
"rst_description": "Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.\n",
|
||||||
"name": "is_closed"
|
"name": "is_closed"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"required": false,
|
||||||
|
"description": "Description of the poll to be sent, 0-1024 characters after entities parsing",
|
||||||
|
"html_description": "<td>Description of the poll to be sent, 0-1024 characters after entities parsing</td>",
|
||||||
|
"rst_description": "Description of the poll to be sent, 0-1024 characters after entities parsing\n",
|
||||||
|
"name": "description"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"required": false,
|
||||||
|
"description": "Mode for parsing entities in the poll description. See formatting options for more details.",
|
||||||
|
"html_description": "<td>Mode for parsing entities in the poll description. See <a href=\"#formatting-options\">formatting options</a> for more details.</td>",
|
||||||
|
"rst_description": "Mode for parsing entities in the poll description. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.\n",
|
||||||
|
"name": "description_parse_mode"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of MessageEntity",
|
||||||
|
"required": false,
|
||||||
|
"description": "A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of description_parse_mode",
|
||||||
|
"html_description": "<td>A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of <em>description_parse_mode</em></td>",
|
||||||
|
"rst_description": "A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of *description_parse_mode*\n",
|
||||||
|
"name": "description_entities"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "Boolean",
|
"type": "Boolean",
|
||||||
"required": false,
|
"required": false,
|
||||||
|
|
@ -207,6 +263,18 @@
|
||||||
"release_date": "2023-12-29"
|
"release_date": "2023-12-29"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"required": false,
|
||||||
|
"description": "0-based identifier of the correct answer option, required for polls in quiz mode",
|
||||||
|
"html_description": "<td>0-based identifier of the correct answer option, required for polls in quiz mode</td>",
|
||||||
|
"rst_description": "0-based identifier of the correct answer option, required for polls in quiz mode\n",
|
||||||
|
"name": "correct_option_id",
|
||||||
|
"deprecated": {
|
||||||
|
"version": "9.6",
|
||||||
|
"release_date": "2026-04-03"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "Integer",
|
"type": "Integer",
|
||||||
"required": false,
|
"required": false,
|
||||||
|
|
|
||||||
778
.butcher/schema/schema.json
generated
778
.butcher/schema/schema.json
generated
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"api": {
|
"api": {
|
||||||
"version": "9.5",
|
"version": "9.6",
|
||||||
"release_date": "2026-03-01"
|
"release_date": "2026-04-03"
|
||||||
},
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
|
|
@ -206,6 +206,14 @@
|
||||||
"rst_description": "*Optional*. A boost was removed from a chat. The bot must be an administrator in the chat to receive these updates.\n",
|
"rst_description": "*Optional*. A boost was removed from a chat. The bot must be an administrator in the chat to receive these updates.\n",
|
||||||
"name": "removed_chat_boost",
|
"name": "removed_chat_boost",
|
||||||
"required": false
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ManagedBotUpdated",
|
||||||
|
"description": "A new bot was created to be managed by the bot or token of a bot was changed",
|
||||||
|
"html_description": "<td><em>Optional</em>. A new bot was created to be managed by the bot or token of a bot was changed</td>",
|
||||||
|
"rst_description": "*Optional*. A new bot was created to be managed by the bot or token of a bot was changed\n",
|
||||||
|
"name": "managed_bot",
|
||||||
|
"required": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
|
|
@ -560,6 +568,14 @@
|
||||||
"rst_description": "*Optional*. :code:`True`, if the bot allows users to create and delete topics in private chats. Returned only in :class:`aiogram.methods.get_me.GetMe`.\n",
|
"rst_description": "*Optional*. :code:`True`, if the bot allows users to create and delete topics in private chats. Returned only in :class:`aiogram.methods.get_me.GetMe`.\n",
|
||||||
"name": "allows_users_to_create_topics",
|
"name": "allows_users_to_create_topics",
|
||||||
"required": false
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Boolean",
|
||||||
|
"description": "True, if other bots can be created to be controlled by the bot. Returned only in getMe.",
|
||||||
|
"html_description": "<td><em>Optional</em>. <em>True</em>, if other bots can be created to be controlled by the bot. Returned only in <a href=\"#getme\">getMe</a>.</td>",
|
||||||
|
"rst_description": "*Optional*. :code:`True`, if other bots can be created to be controlled by the bot. Returned only in :class:`aiogram.methods.get_me.GetMe`.\n",
|
||||||
|
"name": "can_manage_bots",
|
||||||
|
"required": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
|
|
@ -1215,6 +1231,14 @@
|
||||||
"name": "reply_to_checklist_task_id",
|
"name": "reply_to_checklist_task_id",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Persistent identifier of the specific poll option that is being replied to",
|
||||||
|
"html_description": "<td><em>Optional</em>. Persistent identifier of the specific poll option that is being replied to</td>",
|
||||||
|
"rst_description": "*Optional*. Persistent identifier of the specific poll option that is being replied to\n",
|
||||||
|
"name": "reply_to_poll_option_id",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "User",
|
"type": "User",
|
||||||
"description": "Bot through which the message was sent",
|
"description": "Bot through which the message was sent",
|
||||||
|
|
@ -1815,6 +1839,14 @@
|
||||||
"name": "giveaway_completed",
|
"name": "giveaway_completed",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "ManagedBotCreated",
|
||||||
|
"description": "Service message: user created a bot that will be managed by the current bot",
|
||||||
|
"html_description": "<td><em>Optional</em>. Service message: user created a bot that will be managed by the current bot</td>",
|
||||||
|
"rst_description": "*Optional*. Service message: user created a bot that will be managed by the current bot\n",
|
||||||
|
"name": "managed_bot_created",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "PaidMessagePriceChanged",
|
"type": "PaidMessagePriceChanged",
|
||||||
"description": "Service message: the price for paid messages has changed in the chat",
|
"description": "Service message: the price for paid messages has changed in the chat",
|
||||||
|
|
@ -1823,6 +1855,22 @@
|
||||||
"name": "paid_message_price_changed",
|
"name": "paid_message_price_changed",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "PollOptionAdded",
|
||||||
|
"description": "Service message: answer option was added to a poll",
|
||||||
|
"html_description": "<td><em>Optional</em>. Service message: answer option was added to a poll</td>",
|
||||||
|
"rst_description": "*Optional*. Service message: answer option was added to a poll\n",
|
||||||
|
"name": "poll_option_added",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "PollOptionDeleted",
|
||||||
|
"description": "Service message: answer option was deleted from a poll",
|
||||||
|
"html_description": "<td><em>Optional</em>. Service message: answer option was deleted from a poll</td>",
|
||||||
|
"rst_description": "*Optional*. Service message: answer option was deleted from a poll\n",
|
||||||
|
"name": "poll_option_deleted",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "SuggestedPostApproved",
|
"type": "SuggestedPostApproved",
|
||||||
"description": "Service message: a suggested post was approved",
|
"description": "Service message: a suggested post was approved",
|
||||||
|
|
@ -2074,9 +2122,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Array of MessageEntity",
|
"type": "Array of MessageEntity",
|
||||||
"description": "Special entities that appear in the quote. Currently, only bold, italic, underline, strikethrough, spoiler, and custom_emoji entities are kept in quotes.",
|
"description": "Special entities that appear in the quote. Currently, only bold, italic, underline, strikethrough, spoiler, custom_emoji, and date_time entities are kept in quotes.",
|
||||||
"html_description": "<td><em>Optional</em>. Special entities that appear in the quote. Currently, only <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, and <em>custom_emoji</em> entities are kept in quotes.</td>",
|
"html_description": "<td><em>Optional</em>. Special entities that appear in the quote. Currently, only <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, <em>custom_emoji</em>, and <em>date_time</em> entities are kept in quotes.</td>",
|
||||||
"rst_description": "*Optional*. Special entities that appear in the quote. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom_emoji* entities are kept in quotes.\n",
|
"rst_description": "*Optional*. Special entities that appear in the quote. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, *custom_emoji*, and *date_time* entities are kept in quotes.\n",
|
||||||
"name": "entities",
|
"name": "entities",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
|
@ -2342,9 +2390,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "String",
|
"type": "String",
|
||||||
"description": "Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including bold, italic, underline, strikethrough, spoiler, and custom_emoji entities. The message will fail to send if the quote isn't found in the original message.",
|
"description": "Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including bold, italic, underline, strikethrough, spoiler, custom_emoji, and date_time entities. The message will fail to send if the quote isn't found in the original message.",
|
||||||
"html_description": "<td><em>Optional</em>. Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, and <em>custom_emoji</em> entities. The message will fail to send if the quote isn't found in the original message.</td>",
|
"html_description": "<td><em>Optional</em>. Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, <em>custom_emoji</em>, and <em>date_time</em> entities. The message will fail to send if the quote isn't found in the original message.</td>",
|
||||||
"rst_description": "*Optional*. Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom_emoji* entities. The message will fail to send if the quote isn't found in the original message.\n",
|
"rst_description": "*Optional*. Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, *custom_emoji*, and *date_time* entities. The message will fail to send if the quote isn't found in the original message.\n",
|
||||||
"name": "quote",
|
"name": "quote",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
|
@ -2379,6 +2427,14 @@
|
||||||
"rst_description": "*Optional*. Identifier of the specific checklist task to be replied to\n",
|
"rst_description": "*Optional*. Identifier of the specific checklist task to be replied to\n",
|
||||||
"name": "checklist_task_id",
|
"name": "checklist_task_id",
|
||||||
"required": false
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Persistent identifier of the specific poll option to be replied to",
|
||||||
|
"html_description": "<td><em>Optional</em>. Persistent identifier of the specific poll option to be replied to</td>",
|
||||||
|
"rst_description": "*Optional*. Persistent identifier of the specific poll option to be replied to\n",
|
||||||
|
"name": "poll_option_id",
|
||||||
|
"required": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
|
|
@ -3334,6 +3390,14 @@
|
||||||
"html_description": "<p>This object contains information about one answer option in a poll.</p>",
|
"html_description": "<p>This object contains information about one answer option in a poll.</p>",
|
||||||
"rst_description": "This object contains information about one answer option in a poll.",
|
"rst_description": "This object contains information about one answer option in a poll.",
|
||||||
"annotations": [
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Unique identifier of the option, persistent on option addition and deletion",
|
||||||
|
"html_description": "<td>Unique identifier of the option, persistent on option addition and deletion</td>",
|
||||||
|
"rst_description": "Unique identifier of the option, persistent on option addition and deletion\n",
|
||||||
|
"name": "persistent_id",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "String",
|
"type": "String",
|
||||||
"description": "Option text, 1-100 characters",
|
"description": "Option text, 1-100 characters",
|
||||||
|
|
@ -3352,11 +3416,35 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Integer",
|
"type": "Integer",
|
||||||
"description": "Number of users that voted for this option",
|
"description": "Number of users who voted for this option; may be 0 if unknown",
|
||||||
"html_description": "<td>Number of users that voted for this option</td>",
|
"html_description": "<td>Number of users who voted for this option; may be 0 if unknown</td>",
|
||||||
"rst_description": "Number of users that voted for this option\n",
|
"rst_description": "Number of users who voted for this option; may be 0 if unknown\n",
|
||||||
"name": "voter_count",
|
"name": "voter_count",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "User",
|
||||||
|
"description": "User who added the option; omitted if the option wasn't added by a user after poll creation",
|
||||||
|
"html_description": "<td><em>Optional</em>. User who added the option; omitted if the option wasn't added by a user after poll creation</td>",
|
||||||
|
"rst_description": "*Optional*. User who added the option; omitted if the option wasn't added by a user after poll creation\n",
|
||||||
|
"name": "added_by_user",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Chat",
|
||||||
|
"description": "Chat that added the option; omitted if the option wasn't added by a chat after poll creation",
|
||||||
|
"html_description": "<td><em>Optional</em>. Chat that added the option; omitted if the option wasn't added by a chat after poll creation</td>",
|
||||||
|
"rst_description": "*Optional*. Chat that added the option; omitted if the option wasn't added by a chat after poll creation\n",
|
||||||
|
"name": "added_by_chat",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"description": "Point in time (Unix timestamp) when the option was added; omitted if the option existed in the original poll",
|
||||||
|
"html_description": "<td><em>Optional</em>. Point in time (Unix timestamp) when the option was added; omitted if the option existed in the original poll</td>",
|
||||||
|
"rst_description": "*Optional*. Point in time (Unix timestamp) when the option was added; omitted if the option existed in the original poll\n",
|
||||||
|
"name": "addition_date",
|
||||||
|
"required": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
|
|
@ -3433,6 +3521,14 @@
|
||||||
"rst_description": "0-based identifiers of chosen answer options. May be empty if the vote was retracted.\n",
|
"rst_description": "0-based identifiers of chosen answer options. May be empty if the vote was retracted.\n",
|
||||||
"name": "option_ids",
|
"name": "option_ids",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of String",
|
||||||
|
"description": "Persistent identifiers of the chosen answer options. May be empty if the vote was retracted.",
|
||||||
|
"html_description": "<td>Persistent identifiers of the chosen answer options. May be empty if the vote was retracted.</td>",
|
||||||
|
"rst_description": "Persistent identifiers of the chosen answer options. May be empty if the vote was retracted.\n",
|
||||||
|
"name": "option_persistent_ids",
|
||||||
|
"required": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
|
|
@ -3517,11 +3613,19 @@
|
||||||
"required": true
|
"required": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Integer",
|
"type": "Boolean",
|
||||||
"description": "0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.",
|
"description": "True, if the poll allows to change the chosen answer options",
|
||||||
"html_description": "<td><em>Optional</em>. 0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.</td>",
|
"html_description": "<td><em>True</em>, if the poll allows to change the chosen answer options</td>",
|
||||||
"rst_description": "*Optional*. 0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.\n",
|
"rst_description": ":code:`True`, if the poll allows to change the chosen answer options\n",
|
||||||
"name": "correct_option_id",
|
"name": "allows_revoting",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of Integer",
|
||||||
|
"description": "Array of 0-based identifiers of the correct answer options. Available only for polls in quiz mode which are closed or were sent (not forwarded) by the bot or to the private chat with the bot.",
|
||||||
|
"html_description": "<td><em>Optional</em>. Array of 0-based identifiers of the correct answer options. Available only for polls in quiz mode which are closed or were sent (not forwarded) by the bot or to the private chat with the bot.</td>",
|
||||||
|
"rst_description": "*Optional*. Array of 0-based identifiers of the correct answer options. Available only for polls in quiz mode which are closed or were sent (not forwarded) by the bot or to the private chat with the bot.\n",
|
||||||
|
"name": "correct_option_ids",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -3555,6 +3659,22 @@
|
||||||
"rst_description": "*Optional*. Point in time (Unix timestamp) when the poll will be automatically closed\n",
|
"rst_description": "*Optional*. Point in time (Unix timestamp) when the poll will be automatically closed\n",
|
||||||
"name": "close_date",
|
"name": "close_date",
|
||||||
"required": false
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Description of the poll; for polls inside the Message object only",
|
||||||
|
"html_description": "<td><em>Optional</em>. Description of the poll; for polls inside the <a href=\"#message\">Message</a> object only</td>",
|
||||||
|
"rst_description": "*Optional*. Description of the poll; for polls inside the :class:`aiogram.types.message.Message` object only\n",
|
||||||
|
"name": "description",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of MessageEntity",
|
||||||
|
"description": "Special entities like usernames, URLs, bot commands, etc. that appear in the description",
|
||||||
|
"html_description": "<td><em>Optional</em>. Special entities like usernames, URLs, bot commands, etc. that appear in the description</td>",
|
||||||
|
"rst_description": "*Optional*. Special entities like usernames, URLs, bot commands, etc. that appear in the description\n",
|
||||||
|
"name": "description_entities",
|
||||||
|
"required": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
|
|
@ -3700,9 +3820,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Array of MessageEntity",
|
"type": "Array of MessageEntity",
|
||||||
"description": "List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only bold, italic, underline, strikethrough, spoiler, and custom_emoji entities are allowed.",
|
"description": "List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only bold, italic, underline, strikethrough, spoiler, custom_emoji, and date_time entities are allowed.",
|
||||||
"html_description": "<td><em>Optional</em>. List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, and <em>custom_emoji</em> entities are allowed.</td>",
|
"html_description": "<td><em>Optional</em>. List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, <em>custom_emoji</em>, and <em>date_time</em> entities are allowed.</td>",
|
||||||
"rst_description": "*Optional*. List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom_emoji* entities are allowed.\n",
|
"rst_description": "*Optional*. List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, *custom_emoji*, and *date_time* entities are allowed.\n",
|
||||||
"name": "text_entities",
|
"name": "text_entities",
|
||||||
"required": false
|
"required": false
|
||||||
}
|
}
|
||||||
|
|
@ -3734,9 +3854,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Array of MessageEntity",
|
"type": "Array of MessageEntity",
|
||||||
"description": "List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only bold, italic, underline, strikethrough, spoiler, and custom_emoji entities are allowed.",
|
"description": "List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only bold, italic, underline, strikethrough, spoiler, custom_emoji, and date_time entities are allowed.",
|
||||||
"html_description": "<td><em>Optional</em>. List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, and <em>custom_emoji</em> entities are allowed.</td>",
|
"html_description": "<td><em>Optional</em>. List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, <em>custom_emoji</em>, and <em>date_time</em> entities are allowed.</td>",
|
||||||
"rst_description": "*Optional*. List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom_emoji* entities are allowed.\n",
|
"rst_description": "*Optional*. List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, *custom_emoji*, and *date_time* entities are allowed.\n",
|
||||||
"name": "title_entities",
|
"name": "title_entities",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
|
@ -4029,6 +4149,134 @@
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"anchor": "managedbotcreated",
|
||||||
|
"name": "ManagedBotCreated",
|
||||||
|
"description": "This object contains information about the bot that was created to be managed by the current bot.",
|
||||||
|
"html_description": "<p>This object contains information about the bot that was created to be managed by the current bot.</p>",
|
||||||
|
"rst_description": "This object contains information about the bot that was created to be managed by the current bot.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "User",
|
||||||
|
"description": "Information about the bot. The bot's token can be fetched using the method getManagedBotToken.",
|
||||||
|
"html_description": "<td>Information about the bot. The bot's token can be fetched using the method <a href=\"#getmanagedbottoken\">getManagedBotToken</a>.</td>",
|
||||||
|
"rst_description": "Information about the bot. The bot's token can be fetched using the method :class:`aiogram.methods.get_managed_bot_token.GetManagedBotToken`.\n",
|
||||||
|
"name": "bot",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anchor": "managedbotupdated",
|
||||||
|
"name": "ManagedBotUpdated",
|
||||||
|
"description": "This object contains information about the creation or token update of a bot that is managed by the current bot.",
|
||||||
|
"html_description": "<p>This object contains information about the creation or token update of a bot that is managed by the current bot.</p>",
|
||||||
|
"rst_description": "This object contains information about the creation or token update of a bot that is managed by the current bot.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "User",
|
||||||
|
"description": "User that created the bot",
|
||||||
|
"html_description": "<td>User that created the bot</td>",
|
||||||
|
"rst_description": "User that created the bot\n",
|
||||||
|
"name": "user",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "User",
|
||||||
|
"description": "Information about the bot. Token of the bot can be fetched using the method getManagedBotToken.",
|
||||||
|
"html_description": "<td>Information about the bot. Token of the bot can be fetched using the method <a href=\"#getmanagedbottoken\">getManagedBotToken</a>.</td>",
|
||||||
|
"rst_description": "Information about the bot. Token of the bot can be fetched using the method :class:`aiogram.methods.get_managed_bot_token.GetManagedBotToken`.\n",
|
||||||
|
"name": "bot",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anchor": "polloptionadded",
|
||||||
|
"name": "PollOptionAdded",
|
||||||
|
"description": "Describes a service message about an option added to a poll.",
|
||||||
|
"html_description": "<p>Describes a service message about an option added to a poll.</p>",
|
||||||
|
"rst_description": "Describes a service message about an option added to a poll.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "MaybeInaccessibleMessage",
|
||||||
|
"description": "Message containing the poll to which the option was added, if known. Note that the Message object in this field will not contain the reply_to_message field even if it itself is a reply.",
|
||||||
|
"html_description": "<td><em>Optional</em>. Message containing the poll to which the option was added, if known. Note that the <a href=\"#message\">Message</a> object in this field will not contain the <em>reply_to_message</em> field even if it itself is a reply.</td>",
|
||||||
|
"rst_description": "*Optional*. Message containing the poll to which the option was added, if known. Note that the :class:`aiogram.types.message.Message` object in this field will not contain the *reply_to_message* field even if it itself is a reply.\n",
|
||||||
|
"name": "poll_message",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Unique identifier of the added option",
|
||||||
|
"html_description": "<td>Unique identifier of the added option</td>",
|
||||||
|
"rst_description": "Unique identifier of the added option\n",
|
||||||
|
"name": "option_persistent_id",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Option text",
|
||||||
|
"html_description": "<td>Option text</td>",
|
||||||
|
"rst_description": "Option text\n",
|
||||||
|
"name": "option_text",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of MessageEntity",
|
||||||
|
"description": "Special entities that appear in the option_text",
|
||||||
|
"html_description": "<td><em>Optional</em>. Special entities that appear in the <em>option_text</em></td>",
|
||||||
|
"rst_description": "*Optional*. Special entities that appear in the *option_text*\n",
|
||||||
|
"name": "option_text_entities",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anchor": "polloptiondeleted",
|
||||||
|
"name": "PollOptionDeleted",
|
||||||
|
"description": "Describes a service message about an option deleted from a poll.",
|
||||||
|
"html_description": "<p>Describes a service message about an option deleted from a poll.</p>",
|
||||||
|
"rst_description": "Describes a service message about an option deleted from a poll.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "MaybeInaccessibleMessage",
|
||||||
|
"description": "Message containing the poll from which the option was deleted, if known. Note that the Message object in this field will not contain the reply_to_message field even if it itself is a reply.",
|
||||||
|
"html_description": "<td><em>Optional</em>. Message containing the poll from which the option was deleted, if known. Note that the <a href=\"#message\">Message</a> object in this field will not contain the <em>reply_to_message</em> field even if it itself is a reply.</td>",
|
||||||
|
"rst_description": "*Optional*. Message containing the poll from which the option was deleted, if known. Note that the :class:`aiogram.types.message.Message` object in this field will not contain the *reply_to_message* field even if it itself is a reply.\n",
|
||||||
|
"name": "poll_message",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Unique identifier of the deleted option",
|
||||||
|
"html_description": "<td>Unique identifier of the deleted option</td>",
|
||||||
|
"rst_description": "Unique identifier of the deleted option\n",
|
||||||
|
"name": "option_persistent_id",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Option text",
|
||||||
|
"html_description": "<td>Option text</td>",
|
||||||
|
"rst_description": "Option text\n",
|
||||||
|
"name": "option_text",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of MessageEntity",
|
||||||
|
"description": "Special entities that appear in the option_text",
|
||||||
|
"html_description": "<td><em>Optional</em>. Special entities that appear in the <em>option_text</em></td>",
|
||||||
|
"rst_description": "*Optional*. Special entities that appear in the *option_text*\n",
|
||||||
|
"name": "option_text_entities",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"anchor": "chatboostadded",
|
"anchor": "chatboostadded",
|
||||||
"name": "ChatBoostAdded",
|
"name": "ChatBoostAdded",
|
||||||
|
|
@ -5497,6 +5745,14 @@
|
||||||
"name": "request_chat",
|
"name": "request_chat",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "KeyboardButtonRequestManagedBot",
|
||||||
|
"description": "If specified, pressing the button will ask the user to create and share a bot that will be managed by the current bot. Available for bots that enabled management of other bots in the @BotFather Mini App. Available in private chats only.",
|
||||||
|
"html_description": "<td><em>Optional</em>. If specified, pressing the button will ask the user to create and share a bot that will be managed by the current bot. Available for bots that enabled management of other bots in the <a href=\"https://t.me/BotFather\">@BotFather</a> Mini App. Available in private chats only.</td>",
|
||||||
|
"rst_description": "*Optional*. If specified, pressing the button will ask the user to create and share a bot that will be managed by the current bot. Available for bots that enabled management of other bots in the `@BotFather <https://t.me/BotFather>`_ Mini App. Available in private chats only.\n",
|
||||||
|
"name": "request_managed_bot",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "Boolean",
|
"type": "Boolean",
|
||||||
"description": "If True, the user's phone number will be sent as a contact when the button is pressed. Available in private chats only.",
|
"description": "If True, the user's phone number will be sent as a contact when the button is pressed. Available in private chats only.",
|
||||||
|
|
@ -5696,6 +5952,40 @@
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"anchor": "keyboardbuttonrequestmanagedbot",
|
||||||
|
"name": "KeyboardButtonRequestManagedBot",
|
||||||
|
"description": "This object defines the parameters for the creation of a managed bot. Information about the created bot will be shared with the bot using the update managed_bot and a Message with the field managed_bot_created.",
|
||||||
|
"html_description": "<p>This object defines the parameters for the creation of a managed bot. Information about the created bot will be shared with the bot using the update <em>managed_bot</em> and a <a href=\"#message\">Message</a> with the field <em>managed_bot_created</em>.</p>",
|
||||||
|
"rst_description": "This object defines the parameters for the creation of a managed bot. Information about the created bot will be shared with the bot using the update *managed_bot* and a :class:`aiogram.types.message.Message` with the field *managed_bot_created*.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"description": "Signed 32-bit identifier of the request. Must be unique within the message",
|
||||||
|
"html_description": "<td>Signed 32-bit identifier of the request. Must be unique within the message</td>",
|
||||||
|
"rst_description": "Signed 32-bit identifier of the request. Must be unique within the message\n",
|
||||||
|
"name": "request_id",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Suggested name for the bot",
|
||||||
|
"html_description": "<td><em>Optional</em>. Suggested name for the bot</td>",
|
||||||
|
"rst_description": "*Optional*. Suggested name for the bot\n",
|
||||||
|
"name": "suggested_name",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Suggested username for the bot",
|
||||||
|
"html_description": "<td><em>Optional</em>. Suggested username for the bot</td>",
|
||||||
|
"rst_description": "*Optional*. Suggested username for the bot\n",
|
||||||
|
"name": "suggested_username",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"anchor": "keyboardbuttonpolltype",
|
"anchor": "keyboardbuttonpolltype",
|
||||||
"name": "KeyboardButtonPollType",
|
"name": "KeyboardButtonPollType",
|
||||||
|
|
@ -9705,6 +9995,68 @@
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"anchor": "sentwebappmessage",
|
||||||
|
"name": "SentWebAppMessage",
|
||||||
|
"description": "Describes an inline message sent by a Web App on behalf of a user.",
|
||||||
|
"html_description": "<p>Describes an inline message sent by a <a href=\"/bots/webapps\">Web App</a> on behalf of a user.</p>",
|
||||||
|
"rst_description": "Describes an inline message sent by a `Web App <https://core.telegram.org/bots/webapps>`_ on behalf of a user.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Identifier of the sent inline message. Available only if there is an inline keyboard attached to the message.",
|
||||||
|
"html_description": "<td><em>Optional</em>. Identifier of the sent inline message. Available only if there is an <a href=\"#inlinekeyboardmarkup\">inline keyboard</a> attached to the message.</td>",
|
||||||
|
"rst_description": "*Optional*. Identifier of the sent inline message. Available only if there is an `inline keyboard <https://core.telegram.org/bots/api#inlinekeyboardmarkup>`_ attached to the message.\n",
|
||||||
|
"name": "inline_message_id",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anchor": "preparedinlinemessage",
|
||||||
|
"name": "PreparedInlineMessage",
|
||||||
|
"description": "Describes an inline message to be sent by a user of a Mini App.",
|
||||||
|
"html_description": "<p>Describes an inline message to be sent by a user of a Mini App.</p>",
|
||||||
|
"rst_description": "Describes an inline message to be sent by a user of a Mini App.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Unique identifier of the prepared message",
|
||||||
|
"html_description": "<td>Unique identifier of the prepared message</td>",
|
||||||
|
"rst_description": "Unique identifier of the prepared message\n",
|
||||||
|
"name": "id",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"description": "Expiration date of the prepared message, in Unix time. Expired prepared messages can no longer be used",
|
||||||
|
"html_description": "<td>Expiration date of the prepared message, in Unix time. Expired prepared messages can no longer be used</td>",
|
||||||
|
"rst_description": "Expiration date of the prepared message, in Unix time. Expired prepared messages can no longer be used\n",
|
||||||
|
"name": "expiration_date",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anchor": "preparedkeyboardbutton",
|
||||||
|
"name": "PreparedKeyboardButton",
|
||||||
|
"description": "Describes a keyboard button to be used by a user of a Mini App.",
|
||||||
|
"html_description": "<p>Describes a keyboard button to be used by a user of a Mini App.</p>",
|
||||||
|
"rst_description": "Describes a keyboard button to be used by a user of a Mini App.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Unique identifier of the keyboard button",
|
||||||
|
"html_description": "<td>Unique identifier of the keyboard button</td>",
|
||||||
|
"rst_description": "Unique identifier of the keyboard button\n",
|
||||||
|
"name": "id",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"anchor": "responseparameters",
|
"anchor": "responseparameters",
|
||||||
"name": "ResponseParameters",
|
"name": "ResponseParameters",
|
||||||
|
|
@ -12852,18 +13204,50 @@
|
||||||
{
|
{
|
||||||
"type": "Boolean",
|
"type": "Boolean",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "True, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to False",
|
"description": "Pass True, if the poll allows multiple answers, defaults to False",
|
||||||
"html_description": "<td><em>True</em>, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to <em>False</em></td>",
|
"html_description": "<td>Pass <em>True</em>, if the poll allows multiple answers, defaults to <em>False</em></td>",
|
||||||
"rst_description": ":code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False`\n",
|
"rst_description": "Pass :code:`True`, if the poll allows multiple answers, defaults to :code:`False`\n",
|
||||||
"name": "allows_multiple_answers"
|
"name": "allows_multiple_answers"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Integer",
|
"type": "Boolean",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "0-based identifier of the correct answer option, required for polls in quiz mode",
|
"description": "Pass True, if the poll allows to change chosen answer options, defaults to False for quizzes and to True for regular polls",
|
||||||
"html_description": "<td>0-based identifier of the correct answer option, required for polls in quiz mode</td>",
|
"html_description": "<td>Pass <em>True</em>, if the poll allows to change chosen answer options, defaults to <em>False</em> for quizzes and to <em>True</em> for regular polls</td>",
|
||||||
"rst_description": "0-based identifier of the correct answer option, required for polls in quiz mode\n",
|
"rst_description": "Pass :code:`True`, if the poll allows to change chosen answer options, defaults to :code:`False` for quizzes and to :code:`True` for regular polls\n",
|
||||||
"name": "correct_option_id"
|
"name": "allows_revoting"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Boolean",
|
||||||
|
"required": false,
|
||||||
|
"description": "Pass True, if the poll options must be shown in random order",
|
||||||
|
"html_description": "<td>Pass <em>True</em>, if the poll options must be shown in random order</td>",
|
||||||
|
"rst_description": "Pass :code:`True`, if the poll options must be shown in random order\n",
|
||||||
|
"name": "shuffle_options"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Boolean",
|
||||||
|
"required": false,
|
||||||
|
"description": "Pass True, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes",
|
||||||
|
"html_description": "<td>Pass <em>True</em>, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes</td>",
|
||||||
|
"rst_description": "Pass :code:`True`, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes\n",
|
||||||
|
"name": "allow_adding_options"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Boolean",
|
||||||
|
"required": false,
|
||||||
|
"description": "Pass True, if poll results must be shown only after the poll closes",
|
||||||
|
"html_description": "<td>Pass <em>True</em>, if poll results must be shown only after the poll closes</td>",
|
||||||
|
"rst_description": "Pass :code:`True`, if poll results must be shown only after the poll closes\n",
|
||||||
|
"name": "hide_results_until_closes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of Integer",
|
||||||
|
"required": false,
|
||||||
|
"description": "A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode",
|
||||||
|
"html_description": "<td>A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode</td>",
|
||||||
|
"rst_description": "A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode\n",
|
||||||
|
"name": "correct_option_ids"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "String",
|
"type": "String",
|
||||||
|
|
@ -12892,17 +13276,17 @@
|
||||||
{
|
{
|
||||||
"type": "Integer",
|
"type": "Integer",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with close_date.",
|
"description": "Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with close_date.",
|
||||||
"html_description": "<td>Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with <em>close_date</em>.</td>",
|
"html_description": "<td>Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with <em>close_date</em>.</td>",
|
||||||
"rst_description": "Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*.\n",
|
"rst_description": "Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with *close_date*.\n",
|
||||||
"name": "open_period"
|
"name": "open_period"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Integer",
|
"type": "Integer",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with open_period.",
|
"description": "Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with open_period.",
|
||||||
"html_description": "<td>Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with <em>open_period</em>.</td>",
|
"html_description": "<td>Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with <em>open_period</em>.</td>",
|
||||||
"rst_description": "Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with *open_period*.\n",
|
"rst_description": "Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with *open_period*.\n",
|
||||||
"name": "close_date"
|
"name": "close_date"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -12913,6 +13297,30 @@
|
||||||
"rst_description": "Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.\n",
|
"rst_description": "Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.\n",
|
||||||
"name": "is_closed"
|
"name": "is_closed"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"required": false,
|
||||||
|
"description": "Description of the poll to be sent, 0-1024 characters after entities parsing",
|
||||||
|
"html_description": "<td>Description of the poll to be sent, 0-1024 characters after entities parsing</td>",
|
||||||
|
"rst_description": "Description of the poll to be sent, 0-1024 characters after entities parsing\n",
|
||||||
|
"name": "description"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"required": false,
|
||||||
|
"description": "Mode for parsing entities in the poll description. See formatting options for more details.",
|
||||||
|
"html_description": "<td>Mode for parsing entities in the poll description. See <a href=\"#formatting-options\">formatting options</a> for more details.</td>",
|
||||||
|
"rst_description": "Mode for parsing entities in the poll description. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.\n",
|
||||||
|
"name": "description_parse_mode"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of MessageEntity",
|
||||||
|
"required": false,
|
||||||
|
"description": "A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of description_parse_mode",
|
||||||
|
"html_description": "<td>A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of <em>description_parse_mode</em></td>",
|
||||||
|
"rst_description": "A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of *description_parse_mode*\n",
|
||||||
|
"name": "description_entities"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "Boolean",
|
"type": "Boolean",
|
||||||
"required": false,
|
"required": false,
|
||||||
|
|
@ -14867,6 +15275,42 @@
|
||||||
],
|
],
|
||||||
"category": "methods"
|
"category": "methods"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"anchor": "getmanagedbottoken",
|
||||||
|
"name": "getManagedBotToken",
|
||||||
|
"description": "Use this method to get the token of a managed bot. Returns the token as String on success.",
|
||||||
|
"html_description": "<p>Use this method to get the token of a managed bot. Returns the token as <em>String</em> on success.</p>",
|
||||||
|
"rst_description": "Use this method to get the token of a managed bot. Returns the token as *String* on success.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"required": true,
|
||||||
|
"description": "User identifier of the managed bot whose token will be returned",
|
||||||
|
"html_description": "<td>User identifier of the managed bot whose token will be returned</td>",
|
||||||
|
"rst_description": "User identifier of the managed bot whose token will be returned\n",
|
||||||
|
"name": "user_id"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "methods"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anchor": "replacemanagedbottoken",
|
||||||
|
"name": "replaceManagedBotToken",
|
||||||
|
"description": "Use this method to revoke the current token of a managed bot and generate a new one. Returns the new token as String on success.",
|
||||||
|
"html_description": "<p>Use this method to revoke the current token of a managed bot and generate a new one. Returns the new token as <em>String</em> on success.</p>",
|
||||||
|
"rst_description": "Use this method to revoke the current token of a managed bot and generate a new one. Returns the new token as *String* on success.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"required": true,
|
||||||
|
"description": "User identifier of the managed bot whose token will be replaced",
|
||||||
|
"html_description": "<td>User identifier of the managed bot whose token will be replaced</td>",
|
||||||
|
"rst_description": "User identifier of the managed bot whose token will be replaced\n",
|
||||||
|
"name": "user_id"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "methods"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"anchor": "setmycommands",
|
"anchor": "setmycommands",
|
||||||
"name": "setMyCommands",
|
"name": "setMyCommands",
|
||||||
|
|
@ -15259,17 +15703,17 @@
|
||||||
{
|
{
|
||||||
"type": "String",
|
"type": "String",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "Mode for parsing entities in the text. See formatting options for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.",
|
"description": "Mode for parsing entities in the text. See formatting options for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.",
|
||||||
"html_description": "<td>Mode for parsing entities in the text. See <a href=\"#formatting-options\">formatting options</a> for more details. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, and “custom_emoji” are ignored.</td>",
|
"html_description": "<td>Mode for parsing entities in the text. See <a href=\"#formatting-options\">formatting options</a> for more details. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, “custom_emoji”, and “date_time” are ignored.</td>",
|
||||||
"rst_description": "Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.\n",
|
"rst_description": "Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.\n",
|
||||||
"name": "text_parse_mode"
|
"name": "text_parse_mode"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Array of MessageEntity",
|
"type": "Array of MessageEntity",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of text_parse_mode. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.",
|
"description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of text_parse_mode. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.",
|
||||||
"html_description": "<td>A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of <em>text_parse_mode</em>. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, and “custom_emoji” are ignored.</td>",
|
"html_description": "<td>A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of <em>text_parse_mode</em>. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, “custom_emoji”, and “date_time” are ignored.</td>",
|
||||||
"rst_description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.\n",
|
"rst_description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.\n",
|
||||||
"name": "text_entities"
|
"name": "text_entities"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -15317,17 +15761,17 @@
|
||||||
{
|
{
|
||||||
"type": "String",
|
"type": "String",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "Mode for parsing entities in the text. See formatting options for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.",
|
"description": "Mode for parsing entities in the text. See formatting options for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.",
|
||||||
"html_description": "<td>Mode for parsing entities in the text. See <a href=\"#formatting-options\">formatting options</a> for more details. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, and “custom_emoji” are ignored.</td>",
|
"html_description": "<td>Mode for parsing entities in the text. See <a href=\"#formatting-options\">formatting options</a> for more details. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, “custom_emoji”, and “date_time” are ignored.</td>",
|
||||||
"rst_description": "Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.\n",
|
"rst_description": "Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.\n",
|
||||||
"name": "text_parse_mode"
|
"name": "text_parse_mode"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Array of MessageEntity",
|
"type": "Array of MessageEntity",
|
||||||
"required": false,
|
"required": false,
|
||||||
"description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of text_parse_mode. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.",
|
"description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of text_parse_mode. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.",
|
||||||
"html_description": "<td>A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of <em>text_parse_mode</em>. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, and “custom_emoji” are ignored.</td>",
|
"html_description": "<td>A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of <em>text_parse_mode</em>. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, “custom_emoji”, and “date_time” are ignored.</td>",
|
||||||
"rst_description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.\n",
|
"rst_description": "A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.\n",
|
||||||
"name": "text_entities"
|
"name": "text_entities"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -16324,6 +16768,116 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "methods"
|
"category": "methods"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anchor": "answerwebappquery",
|
||||||
|
"name": "answerWebAppQuery",
|
||||||
|
"description": "Use this method to set the result of an interaction with a Web App and send a corresponding message on behalf of the user to the chat from which the query originated. On success, a SentWebAppMessage object is returned.",
|
||||||
|
"html_description": "<p>Use this method to set the result of an interaction with a <a href=\"/bots/webapps\">Web App</a> and send a corresponding message on behalf of the user to the chat from which the query originated. On success, a <a href=\"#sentwebappmessage\">SentWebAppMessage</a> object is returned.</p>",
|
||||||
|
"rst_description": "Use this method to set the result of an interaction with a `Web App <https://core.telegram.org/bots/webapps>`_ and send a corresponding message on behalf of the user to the chat from which the query originated. On success, a :class:`aiogram.types.sent_web_app_message.SentWebAppMessage` object is returned.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"required": true,
|
||||||
|
"description": "Unique identifier for the query to be answered",
|
||||||
|
"html_description": "<td>Unique identifier for the query to be answered</td>",
|
||||||
|
"rst_description": "Unique identifier for the query to be answered\n",
|
||||||
|
"name": "web_app_query_id"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "InlineQueryResult",
|
||||||
|
"required": true,
|
||||||
|
"description": "A JSON-serialized object describing the message to be sent",
|
||||||
|
"html_description": "<td>A JSON-serialized object describing the message to be sent</td>",
|
||||||
|
"rst_description": "A JSON-serialized object describing the message to be sent\n",
|
||||||
|
"name": "result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "methods"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anchor": "savepreparedinlinemessage",
|
||||||
|
"name": "savePreparedInlineMessage",
|
||||||
|
"description": "Stores a message that can be sent by a user of a Mini App. Returns a PreparedInlineMessage object.",
|
||||||
|
"html_description": "<p>Stores a message that can be sent by a user of a Mini App. Returns a <a href=\"#preparedinlinemessage\">PreparedInlineMessage</a> object.</p>",
|
||||||
|
"rst_description": "Stores a message that can be sent by a user of a Mini App. Returns a :class:`aiogram.types.prepared_inline_message.PreparedInlineMessage` object.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"required": true,
|
||||||
|
"description": "Unique identifier of the target user that can use the prepared message",
|
||||||
|
"html_description": "<td>Unique identifier of the target user that can use the prepared message</td>",
|
||||||
|
"rst_description": "Unique identifier of the target user that can use the prepared message\n",
|
||||||
|
"name": "user_id"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "InlineQueryResult",
|
||||||
|
"required": true,
|
||||||
|
"description": "A JSON-serialized object describing the message to be sent",
|
||||||
|
"html_description": "<td>A JSON-serialized object describing the message to be sent</td>",
|
||||||
|
"rst_description": "A JSON-serialized object describing the message to be sent\n",
|
||||||
|
"name": "result"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Boolean",
|
||||||
|
"required": false,
|
||||||
|
"description": "Pass True if the message can be sent to private chats with users",
|
||||||
|
"html_description": "<td>Pass <em>True</em> if the message can be sent to private chats with users</td>",
|
||||||
|
"rst_description": "Pass :code:`True` if the message can be sent to private chats with users\n",
|
||||||
|
"name": "allow_user_chats"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Boolean",
|
||||||
|
"required": false,
|
||||||
|
"description": "Pass True if the message can be sent to private chats with bots",
|
||||||
|
"html_description": "<td>Pass <em>True</em> if the message can be sent to private chats with bots</td>",
|
||||||
|
"rst_description": "Pass :code:`True` if the message can be sent to private chats with bots\n",
|
||||||
|
"name": "allow_bot_chats"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Boolean",
|
||||||
|
"required": false,
|
||||||
|
"description": "Pass True if the message can be sent to group and supergroup chats",
|
||||||
|
"html_description": "<td>Pass <em>True</em> if the message can be sent to group and supergroup chats</td>",
|
||||||
|
"rst_description": "Pass :code:`True` if the message can be sent to group and supergroup chats\n",
|
||||||
|
"name": "allow_group_chats"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Boolean",
|
||||||
|
"required": false,
|
||||||
|
"description": "Pass True if the message can be sent to channel chats",
|
||||||
|
"html_description": "<td>Pass <em>True</em> if the message can be sent to channel chats</td>",
|
||||||
|
"rst_description": "Pass :code:`True` if the message can be sent to channel chats\n",
|
||||||
|
"name": "allow_channel_chats"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "methods"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"anchor": "savepreparedkeyboardbutton",
|
||||||
|
"name": "savePreparedKeyboardButton",
|
||||||
|
"description": "Stores a keyboard button that can be used by a user within a Mini App. Returns a PreparedKeyboardButton object.",
|
||||||
|
"html_description": "<p>Stores a keyboard button that can be used by a user within a Mini App. Returns a <a href=\"#preparedkeyboardbutton\">PreparedKeyboardButton</a> object.</p>",
|
||||||
|
"rst_description": "Stores a keyboard button that can be used by a user within a Mini App. Returns a :class:`aiogram.types.prepared_keyboard_button.PreparedKeyboardButton` object.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"required": true,
|
||||||
|
"description": "Unique identifier of the target user that can use the button",
|
||||||
|
"html_description": "<td>Unique identifier of the target user that can use the button</td>",
|
||||||
|
"rst_description": "Unique identifier of the target user that can use the button\n",
|
||||||
|
"name": "user_id"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "KeyboardButton",
|
||||||
|
"required": true,
|
||||||
|
"description": "A JSON-serialized object describing the button to be saved. The button must be of the type request_users, request_chat, or request_managed_bot",
|
||||||
|
"html_description": "<td>A JSON-serialized object describing the button to be saved. The button must be of the type <em>request_users</em>, <em>request_chat</em>, or <em>request_managed_bot</em></td>",
|
||||||
|
"rst_description": "A JSON-serialized object describing the button to be saved. The button must be of the type *request_users*, *request_chat*, or *request_managed_bot*\n",
|
||||||
|
"name": "button"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "methods"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "All methods in the Bot API are case-insensitive. We support GET and POST HTTP methods. Use either URL query string or application/json or application/x-www-form-urlencoded or multipart/form-data for passing parameters in Bot API requests.\nOn successful call, a JSON-object containing the result will be returned."
|
"description": "All methods in the Bot API are case-insensitive. We support GET and POST HTTP methods. Use either URL query string or application/json or application/x-www-form-urlencoded or multipart/form-data for passing parameters in Bot API requests.\nOn successful call, a JSON-object containing the result will be returned."
|
||||||
|
|
@ -20389,134 +20943,6 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
},
|
|
||||||
{
|
|
||||||
"anchor": "answerwebappquery",
|
|
||||||
"name": "answerWebAppQuery",
|
|
||||||
"description": "Use this method to set the result of an interaction with a Web App and send a corresponding message on behalf of the user to the chat from which the query originated. On success, a SentWebAppMessage object is returned.",
|
|
||||||
"html_description": "<p>Use this method to set the result of an interaction with a <a href=\"/bots/webapps\">Web App</a> and send a corresponding message on behalf of the user to the chat from which the query originated. On success, a <a href=\"#sentwebappmessage\">SentWebAppMessage</a> object is returned.</p>",
|
|
||||||
"rst_description": "Use this method to set the result of an interaction with a `Web App <https://core.telegram.org/bots/webapps>`_ and send a corresponding message on behalf of the user to the chat from which the query originated. On success, a :class:`aiogram.types.sent_web_app_message.SentWebAppMessage` object is returned.",
|
|
||||||
"annotations": [
|
|
||||||
{
|
|
||||||
"type": "String",
|
|
||||||
"required": true,
|
|
||||||
"description": "Unique identifier for the query to be answered",
|
|
||||||
"html_description": "<td>Unique identifier for the query to be answered</td>",
|
|
||||||
"rst_description": "Unique identifier for the query to be answered\n",
|
|
||||||
"name": "web_app_query_id"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "InlineQueryResult",
|
|
||||||
"required": true,
|
|
||||||
"description": "A JSON-serialized object describing the message to be sent",
|
|
||||||
"html_description": "<td>A JSON-serialized object describing the message to be sent</td>",
|
|
||||||
"rst_description": "A JSON-serialized object describing the message to be sent\n",
|
|
||||||
"name": "result"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"category": "methods"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"anchor": "sentwebappmessage",
|
|
||||||
"name": "SentWebAppMessage",
|
|
||||||
"description": "Describes an inline message sent by a Web App on behalf of a user.",
|
|
||||||
"html_description": "<p>Describes an inline message sent by a <a href=\"/bots/webapps\">Web App</a> on behalf of a user.</p>",
|
|
||||||
"rst_description": "Describes an inline message sent by a `Web App <https://core.telegram.org/bots/webapps>`_ on behalf of a user.",
|
|
||||||
"annotations": [
|
|
||||||
{
|
|
||||||
"type": "String",
|
|
||||||
"description": "Identifier of the sent inline message. Available only if there is an inline keyboard attached to the message.",
|
|
||||||
"html_description": "<td><em>Optional</em>. Identifier of the sent inline message. Available only if there is an <a href=\"#inlinekeyboardmarkup\">inline keyboard</a> attached to the message.</td>",
|
|
||||||
"rst_description": "*Optional*. Identifier of the sent inline message. Available only if there is an `inline keyboard <https://core.telegram.org/bots/api#inlinekeyboardmarkup>`_ attached to the message.\n",
|
|
||||||
"name": "inline_message_id",
|
|
||||||
"required": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"category": "types"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"anchor": "savepreparedinlinemessage",
|
|
||||||
"name": "savePreparedInlineMessage",
|
|
||||||
"description": "Stores a message that can be sent by a user of a Mini App. Returns a PreparedInlineMessage object.",
|
|
||||||
"html_description": "<p>Stores a message that can be sent by a user of a Mini App. Returns a <a href=\"#preparedinlinemessage\">PreparedInlineMessage</a> object.</p>",
|
|
||||||
"rst_description": "Stores a message that can be sent by a user of a Mini App. Returns a :class:`aiogram.types.prepared_inline_message.PreparedInlineMessage` object.",
|
|
||||||
"annotations": [
|
|
||||||
{
|
|
||||||
"type": "Integer",
|
|
||||||
"required": true,
|
|
||||||
"description": "Unique identifier of the target user that can use the prepared message",
|
|
||||||
"html_description": "<td>Unique identifier of the target user that can use the prepared message</td>",
|
|
||||||
"rst_description": "Unique identifier of the target user that can use the prepared message\n",
|
|
||||||
"name": "user_id"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "InlineQueryResult",
|
|
||||||
"required": true,
|
|
||||||
"description": "A JSON-serialized object describing the message to be sent",
|
|
||||||
"html_description": "<td>A JSON-serialized object describing the message to be sent</td>",
|
|
||||||
"rst_description": "A JSON-serialized object describing the message to be sent\n",
|
|
||||||
"name": "result"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Boolean",
|
|
||||||
"required": false,
|
|
||||||
"description": "Pass True if the message can be sent to private chats with users",
|
|
||||||
"html_description": "<td>Pass <em>True</em> if the message can be sent to private chats with users</td>",
|
|
||||||
"rst_description": "Pass :code:`True` if the message can be sent to private chats with users\n",
|
|
||||||
"name": "allow_user_chats"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Boolean",
|
|
||||||
"required": false,
|
|
||||||
"description": "Pass True if the message can be sent to private chats with bots",
|
|
||||||
"html_description": "<td>Pass <em>True</em> if the message can be sent to private chats with bots</td>",
|
|
||||||
"rst_description": "Pass :code:`True` if the message can be sent to private chats with bots\n",
|
|
||||||
"name": "allow_bot_chats"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Boolean",
|
|
||||||
"required": false,
|
|
||||||
"description": "Pass True if the message can be sent to group and supergroup chats",
|
|
||||||
"html_description": "<td>Pass <em>True</em> if the message can be sent to group and supergroup chats</td>",
|
|
||||||
"rst_description": "Pass :code:`True` if the message can be sent to group and supergroup chats\n",
|
|
||||||
"name": "allow_group_chats"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Boolean",
|
|
||||||
"required": false,
|
|
||||||
"description": "Pass True if the message can be sent to channel chats",
|
|
||||||
"html_description": "<td>Pass <em>True</em> if the message can be sent to channel chats</td>",
|
|
||||||
"rst_description": "Pass :code:`True` if the message can be sent to channel chats\n",
|
|
||||||
"name": "allow_channel_chats"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"category": "methods"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"anchor": "preparedinlinemessage",
|
|
||||||
"name": "PreparedInlineMessage",
|
|
||||||
"description": "Describes an inline message to be sent by a user of a Mini App.",
|
|
||||||
"html_description": "<p>Describes an inline message to be sent by a user of a Mini App.</p>",
|
|
||||||
"rst_description": "Describes an inline message to be sent by a user of a Mini App.",
|
|
||||||
"annotations": [
|
|
||||||
{
|
|
||||||
"type": "String",
|
|
||||||
"description": "Unique identifier of the prepared message",
|
|
||||||
"html_description": "<td>Unique identifier of the prepared message</td>",
|
|
||||||
"rst_description": "Unique identifier of the prepared message\n",
|
|
||||||
"name": "id",
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Integer",
|
|
||||||
"description": "Expiration date of the prepared message, in Unix time. Expired prepared messages can no longer be used",
|
|
||||||
"html_description": "<td>Expiration date of the prepared message, in Unix time. Expired prepared messages can no longer be used</td>",
|
|
||||||
"rst_description": "Expiration date of the prepared message, in Unix time. Expired prepared messages can no longer be used\n",
|
|
||||||
"name": "expiration_date",
|
|
||||||
"required": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"category": "types"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "The following methods and objects allow your bot to work in inline mode.\nPlease see our Introduction to Inline bots for more details.\nTo enable this option, send the /setinline command to @BotFather and provide the placeholder text that the user will see in the input field after typing your bot's name."
|
"description": "The following methods and objects allow your bot to work in inline mode.\nPlease see our Introduction to Inline bots for more details.\nTo enable this option, send the /setinline command to @BotFather and provide the placeholder text that the user will see in the input field after typing your bot's name."
|
||||||
|
|
|
||||||
6
.butcher/types/InputChecklist/entity.json
generated
6
.butcher/types/InputChecklist/entity.json
generated
|
|
@ -29,9 +29,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Array of MessageEntity",
|
"type": "Array of MessageEntity",
|
||||||
"description": "List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only bold, italic, underline, strikethrough, spoiler, and custom_emoji entities are allowed.",
|
"description": "List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only bold, italic, underline, strikethrough, spoiler, custom_emoji, and date_time entities are allowed.",
|
||||||
"html_description": "<td><em>Optional</em>. List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, and <em>custom_emoji</em> entities are allowed.</td>",
|
"html_description": "<td><em>Optional</em>. List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, <em>custom_emoji</em>, and <em>date_time</em> entities are allowed.</td>",
|
||||||
"rst_description": "*Optional*. List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom_emoji* entities are allowed.\n",
|
"rst_description": "*Optional*. List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, *custom_emoji*, and *date_time* entities are allowed.\n",
|
||||||
"name": "title_entities",
|
"name": "title_entities",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
|
|
||||||
6
.butcher/types/InputChecklistTask/entity.json
generated
6
.butcher/types/InputChecklistTask/entity.json
generated
|
|
@ -37,9 +37,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Array of MessageEntity",
|
"type": "Array of MessageEntity",
|
||||||
"description": "List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only bold, italic, underline, strikethrough, spoiler, and custom_emoji entities are allowed.",
|
"description": "List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only bold, italic, underline, strikethrough, spoiler, custom_emoji, and date_time entities are allowed.",
|
||||||
"html_description": "<td><em>Optional</em>. List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, and <em>custom_emoji</em> entities are allowed.</td>",
|
"html_description": "<td><em>Optional</em>. List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, <em>custom_emoji</em>, and <em>date_time</em> entities are allowed.</td>",
|
||||||
"rst_description": "*Optional*. List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom_emoji* entities are allowed.\n",
|
"rst_description": "*Optional*. List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, *custom_emoji*, and *date_time* entities are allowed.\n",
|
||||||
"name": "text_entities",
|
"name": "text_entities",
|
||||||
"required": false
|
"required": false
|
||||||
}
|
}
|
||||||
|
|
|
||||||
8
.butcher/types/KeyboardButton/entity.json
generated
8
.butcher/types/KeyboardButton/entity.json
generated
|
|
@ -51,6 +51,14 @@
|
||||||
"name": "request_chat",
|
"name": "request_chat",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "KeyboardButtonRequestManagedBot",
|
||||||
|
"description": "If specified, pressing the button will ask the user to create and share a bot that will be managed by the current bot. Available for bots that enabled management of other bots in the @BotFather Mini App. Available in private chats only.",
|
||||||
|
"html_description": "<td><em>Optional</em>. If specified, pressing the button will ask the user to create and share a bot that will be managed by the current bot. Available for bots that enabled management of other bots in the <a href=\"https://t.me/BotFather\">@BotFather</a> Mini App. Available in private chats only.</td>",
|
||||||
|
"rst_description": "*Optional*. If specified, pressing the button will ask the user to create and share a bot that will be managed by the current bot. Available for bots that enabled management of other bots in the `@BotFather <https://t.me/BotFather>`_ Mini App. Available in private chats only.\n",
|
||||||
|
"name": "request_managed_bot",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "Boolean",
|
"type": "Boolean",
|
||||||
"description": "If True, the user's phone number will be sent as a contact when the button is pressed. Available in private chats only.",
|
"description": "If True, the user's phone number will be sent as a contact when the button is pressed. Available in private chats only.",
|
||||||
|
|
|
||||||
41
.butcher/types/KeyboardButtonRequestManagedBot/entity.json
generated
Normal file
41
.butcher/types/KeyboardButtonRequestManagedBot/entity.json
generated
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
"meta": {},
|
||||||
|
"group": {
|
||||||
|
"title": "Available types",
|
||||||
|
"anchor": "available-types"
|
||||||
|
},
|
||||||
|
"object": {
|
||||||
|
"anchor": "keyboardbuttonrequestmanagedbot",
|
||||||
|
"name": "KeyboardButtonRequestManagedBot",
|
||||||
|
"description": "This object defines the parameters for the creation of a managed bot. Information about the created bot will be shared with the bot using the update managed_bot and a Message with the field managed_bot_created.",
|
||||||
|
"html_description": "<p>This object defines the parameters for the creation of a managed bot. Information about the created bot will be shared with the bot using the update <em>managed_bot</em> and a <a href=\"#message\">Message</a> with the field <em>managed_bot_created</em>.</p>",
|
||||||
|
"rst_description": "This object defines the parameters for the creation of a managed bot. Information about the created bot will be shared with the bot using the update *managed_bot* and a :class:`aiogram.types.message.Message` with the field *managed_bot_created*.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"description": "Signed 32-bit identifier of the request. Must be unique within the message",
|
||||||
|
"html_description": "<td>Signed 32-bit identifier of the request. Must be unique within the message</td>",
|
||||||
|
"rst_description": "Signed 32-bit identifier of the request. Must be unique within the message\n",
|
||||||
|
"name": "request_id",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Suggested name for the bot",
|
||||||
|
"html_description": "<td><em>Optional</em>. Suggested name for the bot</td>",
|
||||||
|
"rst_description": "*Optional*. Suggested name for the bot\n",
|
||||||
|
"name": "suggested_name",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Suggested username for the bot",
|
||||||
|
"html_description": "<td><em>Optional</em>. Suggested username for the bot</td>",
|
||||||
|
"rst_description": "*Optional*. Suggested username for the bot\n",
|
||||||
|
"name": "suggested_username",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
}
|
||||||
|
}
|
||||||
25
.butcher/types/ManagedBotCreated/entity.json
generated
Normal file
25
.butcher/types/ManagedBotCreated/entity.json
generated
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"meta": {},
|
||||||
|
"group": {
|
||||||
|
"title": "Available types",
|
||||||
|
"anchor": "available-types"
|
||||||
|
},
|
||||||
|
"object": {
|
||||||
|
"anchor": "managedbotcreated",
|
||||||
|
"name": "ManagedBotCreated",
|
||||||
|
"description": "This object contains information about the bot that was created to be managed by the current bot.",
|
||||||
|
"html_description": "<p>This object contains information about the bot that was created to be managed by the current bot.</p>",
|
||||||
|
"rst_description": "This object contains information about the bot that was created to be managed by the current bot.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "User",
|
||||||
|
"description": "Information about the bot. The bot's token can be fetched using the method getManagedBotToken.",
|
||||||
|
"html_description": "<td>Information about the bot. The bot's token can be fetched using the method <a href=\"#getmanagedbottoken\">getManagedBotToken</a>.</td>",
|
||||||
|
"rst_description": "Information about the bot. The bot's token can be fetched using the method :class:`aiogram.methods.get_managed_bot_token.GetManagedBotToken`.\n",
|
||||||
|
"name": "bot",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
}
|
||||||
|
}
|
||||||
33
.butcher/types/ManagedBotUpdated/entity.json
generated
Normal file
33
.butcher/types/ManagedBotUpdated/entity.json
generated
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"meta": {},
|
||||||
|
"group": {
|
||||||
|
"title": "Available types",
|
||||||
|
"anchor": "available-types"
|
||||||
|
},
|
||||||
|
"object": {
|
||||||
|
"anchor": "managedbotupdated",
|
||||||
|
"name": "ManagedBotUpdated",
|
||||||
|
"description": "This object contains information about the creation or token update of a bot that is managed by the current bot.",
|
||||||
|
"html_description": "<p>This object contains information about the creation or token update of a bot that is managed by the current bot.</p>",
|
||||||
|
"rst_description": "This object contains information about the creation or token update of a bot that is managed by the current bot.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "User",
|
||||||
|
"description": "User that created the bot",
|
||||||
|
"html_description": "<td>User that created the bot</td>",
|
||||||
|
"rst_description": "User that created the bot\n",
|
||||||
|
"name": "user",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "User",
|
||||||
|
"description": "Information about the bot. Token of the bot can be fetched using the method getManagedBotToken.",
|
||||||
|
"html_description": "<td>Information about the bot. Token of the bot can be fetched using the method <a href=\"#getmanagedbottoken\">getManagedBotToken</a>.</td>",
|
||||||
|
"rst_description": "Information about the bot. Token of the bot can be fetched using the method :class:`aiogram.methods.get_managed_bot_token.GetManagedBotToken`.\n",
|
||||||
|
"name": "bot",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
}
|
||||||
|
}
|
||||||
32
.butcher/types/Message/entity.json
generated
32
.butcher/types/Message/entity.json
generated
|
|
@ -163,6 +163,14 @@
|
||||||
"name": "reply_to_checklist_task_id",
|
"name": "reply_to_checklist_task_id",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Persistent identifier of the specific poll option that is being replied to",
|
||||||
|
"html_description": "<td><em>Optional</em>. Persistent identifier of the specific poll option that is being replied to</td>",
|
||||||
|
"rst_description": "*Optional*. Persistent identifier of the specific poll option that is being replied to\n",
|
||||||
|
"name": "reply_to_poll_option_id",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "User",
|
"type": "User",
|
||||||
"description": "Bot through which the message was sent",
|
"description": "Bot through which the message was sent",
|
||||||
|
|
@ -763,6 +771,14 @@
|
||||||
"name": "giveaway_completed",
|
"name": "giveaway_completed",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "ManagedBotCreated",
|
||||||
|
"description": "Service message: user created a bot that will be managed by the current bot",
|
||||||
|
"html_description": "<td><em>Optional</em>. Service message: user created a bot that will be managed by the current bot</td>",
|
||||||
|
"rst_description": "*Optional*. Service message: user created a bot that will be managed by the current bot\n",
|
||||||
|
"name": "managed_bot_created",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "PaidMessagePriceChanged",
|
"type": "PaidMessagePriceChanged",
|
||||||
"description": "Service message: the price for paid messages has changed in the chat",
|
"description": "Service message: the price for paid messages has changed in the chat",
|
||||||
|
|
@ -771,6 +787,22 @@
|
||||||
"name": "paid_message_price_changed",
|
"name": "paid_message_price_changed",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "PollOptionAdded",
|
||||||
|
"description": "Service message: answer option was added to a poll",
|
||||||
|
"html_description": "<td><em>Optional</em>. Service message: answer option was added to a poll</td>",
|
||||||
|
"rst_description": "*Optional*. Service message: answer option was added to a poll\n",
|
||||||
|
"name": "poll_option_added",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "PollOptionDeleted",
|
||||||
|
"description": "Service message: answer option was deleted from a poll",
|
||||||
|
"html_description": "<td><em>Optional</em>. Service message: answer option was deleted from a poll</td>",
|
||||||
|
"rst_description": "*Optional*. Service message: answer option was deleted from a poll\n",
|
||||||
|
"name": "poll_option_deleted",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "SuggestedPostApproved",
|
"type": "SuggestedPostApproved",
|
||||||
"description": "Service message: a suggested post was approved",
|
"description": "Service message: a suggested post was approved",
|
||||||
|
|
|
||||||
46
.butcher/types/Poll/entity.json
generated
46
.butcher/types/Poll/entity.json
generated
|
|
@ -84,11 +84,19 @@
|
||||||
"required": true
|
"required": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Integer",
|
"type": "Boolean",
|
||||||
"description": "0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.",
|
"description": "True, if the poll allows to change the chosen answer options",
|
||||||
"html_description": "<td><em>Optional</em>. 0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.</td>",
|
"html_description": "<td><em>True</em>, if the poll allows to change the chosen answer options</td>",
|
||||||
"rst_description": "*Optional*. 0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.\n",
|
"rst_description": ":code:`True`, if the poll allows to change the chosen answer options\n",
|
||||||
"name": "correct_option_id",
|
"name": "allows_revoting",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of Integer",
|
||||||
|
"description": "Array of 0-based identifiers of the correct answer options. Available only for polls in quiz mode which are closed or were sent (not forwarded) by the bot or to the private chat with the bot.",
|
||||||
|
"html_description": "<td><em>Optional</em>. Array of 0-based identifiers of the correct answer options. Available only for polls in quiz mode which are closed or were sent (not forwarded) by the bot or to the private chat with the bot.</td>",
|
||||||
|
"rst_description": "*Optional*. Array of 0-based identifiers of the correct answer options. Available only for polls in quiz mode which are closed or were sent (not forwarded) by the bot or to the private chat with the bot.\n",
|
||||||
|
"name": "correct_option_ids",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -122,6 +130,34 @@
|
||||||
"rst_description": "*Optional*. Point in time (Unix timestamp) when the poll will be automatically closed\n",
|
"rst_description": "*Optional*. Point in time (Unix timestamp) when the poll will be automatically closed\n",
|
||||||
"name": "close_date",
|
"name": "close_date",
|
||||||
"required": false
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Description of the poll; for polls inside the Message object only",
|
||||||
|
"html_description": "<td><em>Optional</em>. Description of the poll; for polls inside the <a href=\"#message\">Message</a> object only</td>",
|
||||||
|
"rst_description": "*Optional*. Description of the poll; for polls inside the :class:`aiogram.types.message.Message` object only\n",
|
||||||
|
"name": "description",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of MessageEntity",
|
||||||
|
"description": "Special entities like usernames, URLs, bot commands, etc. that appear in the description",
|
||||||
|
"html_description": "<td><em>Optional</em>. Special entities like usernames, URLs, bot commands, etc. that appear in the description</td>",
|
||||||
|
"rst_description": "*Optional*. Special entities like usernames, URLs, bot commands, etc. that appear in the description\n",
|
||||||
|
"name": "description_entities",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"description": "0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.",
|
||||||
|
"html_description": "<td><em>Optional</em>. 0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.</td>",
|
||||||
|
"rst_description": "*Optional*. 0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.\n",
|
||||||
|
"name": "correct_option_id",
|
||||||
|
"required": false,
|
||||||
|
"deprecated": {
|
||||||
|
"version": "9.6",
|
||||||
|
"release_date": "2026-04-03"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
|
|
|
||||||
8
.butcher/types/PollAnswer/entity.json
generated
8
.butcher/types/PollAnswer/entity.json
generated
|
|
@ -42,6 +42,14 @@
|
||||||
"rst_description": "0-based identifiers of chosen answer options. May be empty if the vote was retracted.\n",
|
"rst_description": "0-based identifiers of chosen answer options. May be empty if the vote was retracted.\n",
|
||||||
"name": "option_ids",
|
"name": "option_ids",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of String",
|
||||||
|
"description": "Persistent identifiers of the chosen answer options. May be empty if the vote was retracted.",
|
||||||
|
"html_description": "<td>Persistent identifiers of the chosen answer options. May be empty if the vote was retracted.</td>",
|
||||||
|
"rst_description": "Persistent identifiers of the chosen answer options. May be empty if the vote was retracted.\n",
|
||||||
|
"name": "option_persistent_ids",
|
||||||
|
"required": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
|
|
|
||||||
38
.butcher/types/PollOption/entity.json
generated
38
.butcher/types/PollOption/entity.json
generated
|
|
@ -11,6 +11,14 @@
|
||||||
"html_description": "<p>This object contains information about one answer option in a poll.</p>",
|
"html_description": "<p>This object contains information about one answer option in a poll.</p>",
|
||||||
"rst_description": "This object contains information about one answer option in a poll.",
|
"rst_description": "This object contains information about one answer option in a poll.",
|
||||||
"annotations": [
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Unique identifier of the option, persistent on option addition and deletion",
|
||||||
|
"html_description": "<td>Unique identifier of the option, persistent on option addition and deletion</td>",
|
||||||
|
"rst_description": "Unique identifier of the option, persistent on option addition and deletion\n",
|
||||||
|
"name": "persistent_id",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "String",
|
"type": "String",
|
||||||
"description": "Option text, 1-100 characters",
|
"description": "Option text, 1-100 characters",
|
||||||
|
|
@ -29,11 +37,35 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Integer",
|
"type": "Integer",
|
||||||
"description": "Number of users that voted for this option",
|
"description": "Number of users who voted for this option; may be 0 if unknown",
|
||||||
"html_description": "<td>Number of users that voted for this option</td>",
|
"html_description": "<td>Number of users who voted for this option; may be 0 if unknown</td>",
|
||||||
"rst_description": "Number of users that voted for this option\n",
|
"rst_description": "Number of users who voted for this option; may be 0 if unknown\n",
|
||||||
"name": "voter_count",
|
"name": "voter_count",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "User",
|
||||||
|
"description": "User who added the option; omitted if the option wasn't added by a user after poll creation",
|
||||||
|
"html_description": "<td><em>Optional</em>. User who added the option; omitted if the option wasn't added by a user after poll creation</td>",
|
||||||
|
"rst_description": "*Optional*. User who added the option; omitted if the option wasn't added by a user after poll creation\n",
|
||||||
|
"name": "added_by_user",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Chat",
|
||||||
|
"description": "Chat that added the option; omitted if the option wasn't added by a chat after poll creation",
|
||||||
|
"html_description": "<td><em>Optional</em>. Chat that added the option; omitted if the option wasn't added by a chat after poll creation</td>",
|
||||||
|
"rst_description": "*Optional*. Chat that added the option; omitted if the option wasn't added by a chat after poll creation\n",
|
||||||
|
"name": "added_by_chat",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Integer",
|
||||||
|
"description": "Point in time (Unix timestamp) when the option was added; omitted if the option existed in the original poll",
|
||||||
|
"html_description": "<td><em>Optional</em>. Point in time (Unix timestamp) when the option was added; omitted if the option existed in the original poll</td>",
|
||||||
|
"rst_description": "*Optional*. Point in time (Unix timestamp) when the option was added; omitted if the option existed in the original poll\n",
|
||||||
|
"name": "addition_date",
|
||||||
|
"required": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
|
|
|
||||||
5
.butcher/types/PollOption/replace.yml
Normal file
5
.butcher/types/PollOption/replace.yml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
annotations:
|
||||||
|
addition_date:
|
||||||
|
parsed_type:
|
||||||
|
type: std
|
||||||
|
name: DateTime
|
||||||
49
.butcher/types/PollOptionAdded/entity.json
generated
Normal file
49
.butcher/types/PollOptionAdded/entity.json
generated
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
"meta": {},
|
||||||
|
"group": {
|
||||||
|
"title": "Available types",
|
||||||
|
"anchor": "available-types"
|
||||||
|
},
|
||||||
|
"object": {
|
||||||
|
"anchor": "polloptionadded",
|
||||||
|
"name": "PollOptionAdded",
|
||||||
|
"description": "Describes a service message about an option added to a poll.",
|
||||||
|
"html_description": "<p>Describes a service message about an option added to a poll.</p>",
|
||||||
|
"rst_description": "Describes a service message about an option added to a poll.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "MaybeInaccessibleMessage",
|
||||||
|
"description": "Message containing the poll to which the option was added, if known. Note that the Message object in this field will not contain the reply_to_message field even if it itself is a reply.",
|
||||||
|
"html_description": "<td><em>Optional</em>. Message containing the poll to which the option was added, if known. Note that the <a href=\"#message\">Message</a> object in this field will not contain the <em>reply_to_message</em> field even if it itself is a reply.</td>",
|
||||||
|
"rst_description": "*Optional*. Message containing the poll to which the option was added, if known. Note that the :class:`aiogram.types.message.Message` object in this field will not contain the *reply_to_message* field even if it itself is a reply.\n",
|
||||||
|
"name": "poll_message",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Unique identifier of the added option",
|
||||||
|
"html_description": "<td>Unique identifier of the added option</td>",
|
||||||
|
"rst_description": "Unique identifier of the added option\n",
|
||||||
|
"name": "option_persistent_id",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Option text",
|
||||||
|
"html_description": "<td>Option text</td>",
|
||||||
|
"rst_description": "Option text\n",
|
||||||
|
"name": "option_text",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of MessageEntity",
|
||||||
|
"description": "Special entities that appear in the option_text",
|
||||||
|
"html_description": "<td><em>Optional</em>. Special entities that appear in the <em>option_text</em></td>",
|
||||||
|
"rst_description": "*Optional*. Special entities that appear in the *option_text*\n",
|
||||||
|
"name": "option_text_entities",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
}
|
||||||
|
}
|
||||||
49
.butcher/types/PollOptionDeleted/entity.json
generated
Normal file
49
.butcher/types/PollOptionDeleted/entity.json
generated
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
"meta": {},
|
||||||
|
"group": {
|
||||||
|
"title": "Available types",
|
||||||
|
"anchor": "available-types"
|
||||||
|
},
|
||||||
|
"object": {
|
||||||
|
"anchor": "polloptiondeleted",
|
||||||
|
"name": "PollOptionDeleted",
|
||||||
|
"description": "Describes a service message about an option deleted from a poll.",
|
||||||
|
"html_description": "<p>Describes a service message about an option deleted from a poll.</p>",
|
||||||
|
"rst_description": "Describes a service message about an option deleted from a poll.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "MaybeInaccessibleMessage",
|
||||||
|
"description": "Message containing the poll from which the option was deleted, if known. Note that the Message object in this field will not contain the reply_to_message field even if it itself is a reply.",
|
||||||
|
"html_description": "<td><em>Optional</em>. Message containing the poll from which the option was deleted, if known. Note that the <a href=\"#message\">Message</a> object in this field will not contain the <em>reply_to_message</em> field even if it itself is a reply.</td>",
|
||||||
|
"rst_description": "*Optional*. Message containing the poll from which the option was deleted, if known. Note that the :class:`aiogram.types.message.Message` object in this field will not contain the *reply_to_message* field even if it itself is a reply.\n",
|
||||||
|
"name": "poll_message",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Unique identifier of the deleted option",
|
||||||
|
"html_description": "<td>Unique identifier of the deleted option</td>",
|
||||||
|
"rst_description": "Unique identifier of the deleted option\n",
|
||||||
|
"name": "option_persistent_id",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Option text",
|
||||||
|
"html_description": "<td>Option text</td>",
|
||||||
|
"rst_description": "Option text\n",
|
||||||
|
"name": "option_text",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Array of MessageEntity",
|
||||||
|
"description": "Special entities that appear in the option_text",
|
||||||
|
"html_description": "<td><em>Optional</em>. Special entities that appear in the <em>option_text</em></td>",
|
||||||
|
"rst_description": "*Optional*. Special entities that appear in the *option_text*\n",
|
||||||
|
"name": "option_text_entities",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
}
|
||||||
|
}
|
||||||
4
.butcher/types/PreparedInlineMessage/entity.json
generated
4
.butcher/types/PreparedInlineMessage/entity.json
generated
|
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
"meta": {},
|
"meta": {},
|
||||||
"group": {
|
"group": {
|
||||||
"title": "Inline mode",
|
"title": "Available types",
|
||||||
"anchor": "inline-mode"
|
"anchor": "available-types"
|
||||||
},
|
},
|
||||||
"object": {
|
"object": {
|
||||||
"anchor": "preparedinlinemessage",
|
"anchor": "preparedinlinemessage",
|
||||||
|
|
|
||||||
25
.butcher/types/PreparedKeyboardButton/entity.json
generated
Normal file
25
.butcher/types/PreparedKeyboardButton/entity.json
generated
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"meta": {},
|
||||||
|
"group": {
|
||||||
|
"title": "Available types",
|
||||||
|
"anchor": "available-types"
|
||||||
|
},
|
||||||
|
"object": {
|
||||||
|
"anchor": "preparedkeyboardbutton",
|
||||||
|
"name": "PreparedKeyboardButton",
|
||||||
|
"description": "Describes a keyboard button to be used by a user of a Mini App.",
|
||||||
|
"html_description": "<p>Describes a keyboard button to be used by a user of a Mini App.</p>",
|
||||||
|
"rst_description": "Describes a keyboard button to be used by a user of a Mini App.",
|
||||||
|
"annotations": [
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Unique identifier of the keyboard button",
|
||||||
|
"html_description": "<td>Unique identifier of the keyboard button</td>",
|
||||||
|
"rst_description": "Unique identifier of the keyboard button\n",
|
||||||
|
"name": "id",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"category": "types"
|
||||||
|
}
|
||||||
|
}
|
||||||
14
.butcher/types/ReplyParameters/entity.json
generated
14
.butcher/types/ReplyParameters/entity.json
generated
|
|
@ -37,9 +37,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "String",
|
"type": "String",
|
||||||
"description": "Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including bold, italic, underline, strikethrough, spoiler, and custom_emoji entities. The message will fail to send if the quote isn't found in the original message.",
|
"description": "Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including bold, italic, underline, strikethrough, spoiler, custom_emoji, and date_time entities. The message will fail to send if the quote isn't found in the original message.",
|
||||||
"html_description": "<td><em>Optional</em>. Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, and <em>custom_emoji</em> entities. The message will fail to send if the quote isn't found in the original message.</td>",
|
"html_description": "<td><em>Optional</em>. Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, <em>custom_emoji</em>, and <em>date_time</em> entities. The message will fail to send if the quote isn't found in the original message.</td>",
|
||||||
"rst_description": "*Optional*. Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom_emoji* entities. The message will fail to send if the quote isn't found in the original message.\n",
|
"rst_description": "*Optional*. Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, *custom_emoji*, and *date_time* entities. The message will fail to send if the quote isn't found in the original message.\n",
|
||||||
"name": "quote",
|
"name": "quote",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
|
@ -74,6 +74,14 @@
|
||||||
"rst_description": "*Optional*. Identifier of the specific checklist task to be replied to\n",
|
"rst_description": "*Optional*. Identifier of the specific checklist task to be replied to\n",
|
||||||
"name": "checklist_task_id",
|
"name": "checklist_task_id",
|
||||||
"required": false
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "String",
|
||||||
|
"description": "Persistent identifier of the specific poll option to be replied to",
|
||||||
|
"html_description": "<td><em>Optional</em>. Persistent identifier of the specific poll option to be replied to</td>",
|
||||||
|
"rst_description": "*Optional*. Persistent identifier of the specific poll option to be replied to\n",
|
||||||
|
"name": "poll_option_id",
|
||||||
|
"required": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
|
|
|
||||||
4
.butcher/types/SentWebAppMessage/entity.json
generated
4
.butcher/types/SentWebAppMessage/entity.json
generated
|
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
"meta": {},
|
"meta": {},
|
||||||
"group": {
|
"group": {
|
||||||
"title": "Inline mode",
|
"title": "Available types",
|
||||||
"anchor": "inline-mode"
|
"anchor": "available-types"
|
||||||
},
|
},
|
||||||
"object": {
|
"object": {
|
||||||
"anchor": "sentwebappmessage",
|
"anchor": "sentwebappmessage",
|
||||||
|
|
|
||||||
6
.butcher/types/TextQuote/entity.json
generated
6
.butcher/types/TextQuote/entity.json
generated
|
|
@ -21,9 +21,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Array of MessageEntity",
|
"type": "Array of MessageEntity",
|
||||||
"description": "Special entities that appear in the quote. Currently, only bold, italic, underline, strikethrough, spoiler, and custom_emoji entities are kept in quotes.",
|
"description": "Special entities that appear in the quote. Currently, only bold, italic, underline, strikethrough, spoiler, custom_emoji, and date_time entities are kept in quotes.",
|
||||||
"html_description": "<td><em>Optional</em>. Special entities that appear in the quote. Currently, only <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, and <em>custom_emoji</em> entities are kept in quotes.</td>",
|
"html_description": "<td><em>Optional</em>. Special entities that appear in the quote. Currently, only <em>bold</em>, <em>italic</em>, <em>underline</em>, <em>strikethrough</em>, <em>spoiler</em>, <em>custom_emoji</em>, and <em>date_time</em> entities are kept in quotes.</td>",
|
||||||
"rst_description": "*Optional*. Special entities that appear in the quote. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom_emoji* entities are kept in quotes.\n",
|
"rst_description": "*Optional*. Special entities that appear in the quote. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, *custom_emoji*, and *date_time* entities are kept in quotes.\n",
|
||||||
"name": "entities",
|
"name": "entities",
|
||||||
"required": false
|
"required": false
|
||||||
},
|
},
|
||||||
|
|
|
||||||
8
.butcher/types/Update/entity.json
generated
8
.butcher/types/Update/entity.json
generated
|
|
@ -202,6 +202,14 @@
|
||||||
"rst_description": "*Optional*. A boost was removed from a chat. The bot must be an administrator in the chat to receive these updates.\n",
|
"rst_description": "*Optional*. A boost was removed from a chat. The bot must be an administrator in the chat to receive these updates.\n",
|
||||||
"name": "removed_chat_boost",
|
"name": "removed_chat_boost",
|
||||||
"required": false
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "ManagedBotUpdated",
|
||||||
|
"description": "A new bot was created to be managed by the bot or token of a bot was changed",
|
||||||
|
"html_description": "<td><em>Optional</em>. A new bot was created to be managed by the bot or token of a bot was changed</td>",
|
||||||
|
"rst_description": "*Optional*. A new bot was created to be managed by the bot or token of a bot was changed\n",
|
||||||
|
"name": "managed_bot",
|
||||||
|
"required": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
|
|
|
||||||
8
.butcher/types/User/entity.json
generated
8
.butcher/types/User/entity.json
generated
|
|
@ -130,6 +130,14 @@
|
||||||
"rst_description": "*Optional*. :code:`True`, if the bot allows users to create and delete topics in private chats. Returned only in :class:`aiogram.methods.get_me.GetMe`.\n",
|
"rst_description": "*Optional*. :code:`True`, if the bot allows users to create and delete topics in private chats. Returned only in :class:`aiogram.methods.get_me.GetMe`.\n",
|
||||||
"name": "allows_users_to_create_topics",
|
"name": "allows_users_to_create_topics",
|
||||||
"required": false
|
"required": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Boolean",
|
||||||
|
"description": "True, if other bots can be created to be controlled by the bot. Returned only in getMe.",
|
||||||
|
"html_description": "<td><em>Optional</em>. <em>True</em>, if other bots can be created to be controlled by the bot. Returned only in <a href=\"#getme\">getMe</a>.</td>",
|
||||||
|
"rst_description": "*Optional*. :code:`True`, if other bots can be created to be controlled by the bot. Returned only in :class:`aiogram.methods.get_me.GetMe`.\n",
|
||||||
|
"name": "can_manage_bots",
|
||||||
|
"required": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"category": "types"
|
"category": "types"
|
||||||
|
|
|
||||||
50
.claude/commands/aiogram-api-changelog.md
Normal file
50
.claude/commands/aiogram-api-changelog.md
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
Generate a Bot API changelog fragment for aiogram.
|
||||||
|
|
||||||
|
Arguments: $ARGUMENTS (format: `<issue_id> <changelog_url>`)
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. Parse `$ARGUMENTS`: the first token is the issue/PR number (e.g. `1792`), the rest is the changelog URL (e.g. `https://core.telegram.org/bots/api-changelog#april-3-2026`).
|
||||||
|
|
||||||
|
2. Fetch the changelog URL using WebFetch. Extract **all** changes for the Bot API version anchored by that URL: new methods, new types, new/changed fields, new parameters, renamed fields, and any other notable changes.
|
||||||
|
|
||||||
|
3. Discover which aiogram modules were generated for the new symbols:
|
||||||
|
- New methods → search `aiogram/methods/<snake_case_name>.py` via Glob
|
||||||
|
- New types → search `aiogram/types/<snake_case_name>.py` via Glob
|
||||||
|
- Confirm every referenced module exists before writing it into the RST.
|
||||||
|
|
||||||
|
4. Create `CHANGES/<issue_id>.misc.rst` (overwrite if it exists) with the following RST structure, following the style used for previous Bot API updates in `CHANGES.rst`:
|
||||||
|
|
||||||
|
```rst
|
||||||
|
Updated to `Bot API X.Y <{url}>`_
|
||||||
|
|
||||||
|
**{Section heading — e.g. "Feature Area"}**
|
||||||
|
|
||||||
|
*New Methods:*
|
||||||
|
|
||||||
|
- Added :class:`aiogram.methods.<module>.<ClassName>` method - <short description>
|
||||||
|
|
||||||
|
*New Types:*
|
||||||
|
|
||||||
|
- Added :class:`aiogram.types.<module>.<ClassName>` type - <short description>
|
||||||
|
|
||||||
|
*New Fields:*
|
||||||
|
|
||||||
|
- Added :code:`<field>` field to :class:`aiogram.types.<module>.<ClassName>` - <short description>
|
||||||
|
|
||||||
|
*New Parameters for* :class:`aiogram.methods.<module>.<ClassName>`:
|
||||||
|
|
||||||
|
- Added :code:`<param>` - <short description>
|
||||||
|
```
|
||||||
|
|
||||||
|
Rules for writing the RST:
|
||||||
|
- Use `:class:`` for types and methods, `:meth:`` for shortcuts, `:code:`` for field/parameter names.
|
||||||
|
- Module paths must be the full dotted path (e.g. `aiogram.types.poll_option.PollOption`), always verified against real files.
|
||||||
|
- If a symbol has a shortcut method on a type, mention it with `:meth:`.
|
||||||
|
- Group related changes under bold section headings (e.g. **Polls**, **Managed Bots**).
|
||||||
|
- Within each section use italic sub-headings (*New Methods:*, *New Types:*, *New Fields:*, *New Parameters for ...:*) — omit a sub-heading if there is nothing to list under it.
|
||||||
|
- Describe each item with a brief, user-facing sentence after the dash.
|
||||||
|
- Do not add a trailing newline after the last bullet.
|
||||||
|
- Do not include an issue/PR back-reference link (towncrier adds that automatically).
|
||||||
|
|
||||||
|
5. Print the path of the created file and confirm it is done.
|
||||||
2
.serena/.gitignore
vendored
Normal file
2
.serena/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
/cache
|
||||||
|
/project.local.yml
|
||||||
42
.serena/memories/code_style.md
Normal file
42
.serena/memories/code_style.md
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
# Code Style & Conventions
|
||||||
|
|
||||||
|
## General
|
||||||
|
- `from __future__ import annotations` at the top of every Python file
|
||||||
|
- Full type hints on all function signatures and class fields
|
||||||
|
- Max line length: **99** characters (ruff enforced)
|
||||||
|
- snake_case for Python names; camelCase used only in `__api_method__` strings
|
||||||
|
|
||||||
|
## Pydantic models
|
||||||
|
- All Telegram types extend `TelegramObject(BotContextController, BaseModel)` from `aiogram/types/base.py`
|
||||||
|
- `TelegramObject` is frozen; use `MutableTelegramObject` when mutation is needed
|
||||||
|
- Fields default to `None` for optional API parameters; use `Field(None, json_schema_extra={"deprecated": True})` for deprecated fields
|
||||||
|
- Use `Default("key")` sentinel (from `aiogram.client.default`) for user-configurable defaults like `parse_mode`, `protect_content`
|
||||||
|
- `TYPE_CHECKING` guards for circular imports — keep runtime imports lean
|
||||||
|
|
||||||
|
## API Methods
|
||||||
|
- Each method is a class inheriting `TelegramMethod[ReturnType]` from `aiogram/methods/base.py`
|
||||||
|
- Required class attrs: `__returning__` (return type), `__api_method__` (camelCase string)
|
||||||
|
- Fields with `None` default = optional param
|
||||||
|
- Method docstring format: short description + `Source: https://core.telegram.org/bots/api#methodname`
|
||||||
|
- File name: snake_case of method name (e.g., `SendMessage` → `send_message.py`)
|
||||||
|
|
||||||
|
## Imports order (ruff/isort enforced)
|
||||||
|
1. stdlib
|
||||||
|
2. third-party
|
||||||
|
3. `aiogram` (first-party)
|
||||||
|
4. relative imports
|
||||||
|
|
||||||
|
## Ruff rules enforced
|
||||||
|
- A (annotations), B (bugbear), C4 (comprehensions), DTZ (datetimez), E, F, I (isort), PERF, PL (pylint), Q (quotes), RET, SIM, T10, T20, UP (pyupgrade)
|
||||||
|
- Several PLR rules disabled (Telegram API naturally has many params/methods)
|
||||||
|
- `F401` disabled (re-exports in `__init__.py` intentional)
|
||||||
|
|
||||||
|
## Code generation convention
|
||||||
|
- **Never hand-edit generated files** (`.butcher/**/entity.json`, auto-generated `aiogram/types/*.py`, `aiogram/methods/*.py`, `aiogram/enums/*.py`)
|
||||||
|
- Add features via `.butcher` YAML config/aliases + templates, then regenerate
|
||||||
|
- After codegen: always run lint + mypy
|
||||||
|
|
||||||
|
## Naming patterns
|
||||||
|
- Enums: PascalCase class, UPPER_SNAKE members (e.g., `ContentType.TEXT`)
|
||||||
|
- Test files: `test_<module_name>.py`
|
||||||
|
- Test classes: `Test<ClassName>` with `async def test_<scenario>(self, bot: MockedBot)`
|
||||||
84
.serena/memories/codebase_structure.md
Normal file
84
.serena/memories/codebase_structure.md
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
# Codebase Structure
|
||||||
|
|
||||||
|
## Top-level layout
|
||||||
|
```
|
||||||
|
aiogram/ # Main package
|
||||||
|
.butcher/ # Code generation inputs (DO NOT edit entity.json files)
|
||||||
|
tests/ # Test suite
|
||||||
|
docs/ # Sphinx documentation (RST)
|
||||||
|
examples/ # Example bot scripts
|
||||||
|
scripts/ # Version bump scripts
|
||||||
|
CHANGES/ # Towncrier changelog fragments (CHANGES/<issue>.<category>.rst)
|
||||||
|
```
|
||||||
|
|
||||||
|
## aiogram/ package
|
||||||
|
```
|
||||||
|
aiogram/
|
||||||
|
├── __init__.py # Public API re-exports
|
||||||
|
├── __meta__.py # Version (hatch reads this)
|
||||||
|
├── exceptions.py # Framework exceptions
|
||||||
|
├── loggers.py # Named loggers
|
||||||
|
├── client/
|
||||||
|
│ ├── bot.py # Bot class — all API methods as async shortcuts
|
||||||
|
│ ├── session/ # HTTP session backends (aiohttp, base)
|
||||||
|
│ ├── default.py # Default() sentinel for configurable defaults
|
||||||
|
│ └── context_controller.py # Bot context injection into models
|
||||||
|
├── types/
|
||||||
|
│ ├── base.py # TelegramObject (Pydantic BaseModel), MutableTelegramObject
|
||||||
|
│ ├── *.py # One file per Telegram type
|
||||||
|
│ └── __init__.py # Exports all types
|
||||||
|
├── methods/
|
||||||
|
│ ├── base.py # TelegramMethod[T] base class
|
||||||
|
│ ├── *.py # One file per API method (e.g., send_message.py → SendMessage)
|
||||||
|
│ └── __init__.py
|
||||||
|
├── enums/
|
||||||
|
│ ├── content_type.py # ContentType enum
|
||||||
|
│ ├── update_type.py # UpdateType enum
|
||||||
|
│ └── *.py
|
||||||
|
├── dispatcher/
|
||||||
|
│ ├── dispatcher.py # Dispatcher (main update processor)
|
||||||
|
│ ├── router.py # Router (Blueprint-style routing)
|
||||||
|
│ ├── middlewares/ # Middleware system
|
||||||
|
│ ├── event/ # Event observer, typed decorators
|
||||||
|
│ └── flags/ # Handler flags
|
||||||
|
├── filters/ # Built-in filters (Command, StateFilter, etc.)
|
||||||
|
├── fsm/
|
||||||
|
│ ├── context.py # FSMContext
|
||||||
|
│ ├── state.py # State, StatesGroup
|
||||||
|
│ └── storage/ # Memory, Redis, MongoDB storage backends
|
||||||
|
├── handlers/ # Base handler types
|
||||||
|
├── utils/
|
||||||
|
│ ├── keyboard.py # Keyboard builder utilities
|
||||||
|
│ ├── text_decorations.py # HTML/Markdown formatting
|
||||||
|
│ └── i18n/ # Internationalization support
|
||||||
|
└── webhook/ # Webhook integrations (aiohttp, SimpleRequestHandler, etc.)
|
||||||
|
```
|
||||||
|
|
||||||
|
## .butcher/ (Code generation)
|
||||||
|
```
|
||||||
|
.butcher/
|
||||||
|
├── schema/schema.json # Full Bot API schema (source of truth)
|
||||||
|
├── types/ # Per-type entity.json + optional alias YAML overrides
|
||||||
|
├── methods/ # Per-method entity.json + optional alias YAML overrides
|
||||||
|
├── enums/ # Per-enum entity.json + optional YAML overrides
|
||||||
|
└── templates/ # Jinja2 templates for generated Python files
|
||||||
|
```
|
||||||
|
|
||||||
|
**Rule**: Edit `.yml` alias files or templates in `.butcher/`, never `.entity.json` files directly. Regenerate after changes.
|
||||||
|
|
||||||
|
## tests/ layout
|
||||||
|
```
|
||||||
|
tests/
|
||||||
|
├── conftest.py # Shared fixtures (bot, dispatcher, etc.)
|
||||||
|
├── mocked_bot.py # MockedBot for testing without real HTTP
|
||||||
|
├── test_api/
|
||||||
|
│ ├── test_types/ # Tests for Telegram types
|
||||||
|
│ ├── test_methods/ # Tests for API method classes
|
||||||
|
│ └── test_client/ # HTTP client tests
|
||||||
|
├── test_dispatcher/ # Dispatcher/Router/Middleware tests
|
||||||
|
├── test_filters/ # Filter tests
|
||||||
|
├── test_fsm/ # FSM and storage tests
|
||||||
|
├── test_handler/ # Handler tests
|
||||||
|
├── test_utils/ # Utility tests
|
||||||
|
└── test_webhook/ # Webhook integration tests
|
||||||
|
```
|
||||||
44
.serena/memories/codegen_workflow.md
Normal file
44
.serena/memories/codegen_workflow.md
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
# Bot API Codegen Workflow
|
||||||
|
|
||||||
|
## How code generation works
|
||||||
|
aiogram uses `butcher` (via `aiogram-cli`) to auto-generate Python files from the Telegram Bot API schema.
|
||||||
|
|
||||||
|
### Source of truth
|
||||||
|
- `.butcher/schema/schema.json` — full parsed Bot API schema
|
||||||
|
- `.butcher/types/<TypeName>/entity.json` — parsed entity metadata (DO NOT edit)
|
||||||
|
- `.butcher/methods/<MethodName>/entity.json` — parsed method metadata (DO NOT edit)
|
||||||
|
- `.butcher/enums/<EnumName>/entity.json` — parsed enum metadata (DO NOT edit)
|
||||||
|
- `.butcher/templates/` — Jinja2 templates that produce Python code
|
||||||
|
- YAML alias/override files in `.butcher/types/`, `.butcher/methods/` — edit these for customizations
|
||||||
|
|
||||||
|
### Generated files (DO NOT hand-edit)
|
||||||
|
- `aiogram/types/*.py` (except `base.py`, `custom.py`, `_union.py` — framework internals)
|
||||||
|
- `aiogram/methods/*.py` (except `base.py`)
|
||||||
|
- `aiogram/enums/*.py`
|
||||||
|
- `aiogram/client/bot.py` (the `Bot` class shortcuts)
|
||||||
|
- `aiogram/types/__init__.py`, `aiogram/methods/__init__.py`
|
||||||
|
|
||||||
|
### Regeneration commands
|
||||||
|
```bash
|
||||||
|
uv run --extra cli butcher parse # re-parse from API schema
|
||||||
|
uv run --extra cli butcher refresh # refresh entity JSON from parsed schema
|
||||||
|
uv run --extra cli butcher apply all # apply templates → generate Python files
|
||||||
|
```
|
||||||
|
|
||||||
|
### Adding a new type/method/shortcut
|
||||||
|
1. Update the `.butcher` YAML alias/config file for the entity
|
||||||
|
2. Run regeneration (parse → refresh → apply)
|
||||||
|
3. Run lint + mypy + tests
|
||||||
|
4. Commit both the `.butcher` config changes AND the generated Python files
|
||||||
|
|
||||||
|
### API version bumps (maintainers)
|
||||||
|
```bash
|
||||||
|
make update-api args=patch # or minor/major
|
||||||
|
```
|
||||||
|
This runs butcher parse/refresh/apply + version bump scripts that update:
|
||||||
|
- `aiogram/__meta__.py`
|
||||||
|
- `README.rst`
|
||||||
|
- `docs/index.rst`
|
||||||
|
|
||||||
|
## Key constraint
|
||||||
|
The maintainers enforce: **never add types/methods/shortcuts by hand-editing generated files**. All changes must go through `.butcher` config so future regenerations preserve them.
|
||||||
43
.serena/memories/dispatcher/adding_new_event_types.md
Normal file
43
.serena/memories/dispatcher/adding_new_event_types.md
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
# Adding a New Update/Event Type to aiogram Dispatcher
|
||||||
|
|
||||||
|
When Telegram Bot API adds a new update type (e.g. `managed_bot`, `purchased_paid_media`), the following files must be touched. Types, enums, and butcher configs are generated — the dispatcher integration is manual.
|
||||||
|
|
||||||
|
## Checklist (in order)
|
||||||
|
|
||||||
|
### Generated / butcher layer (run `butcher parse && butcher refresh && butcher apply all`)
|
||||||
|
- `.butcher/types/<TypeName>/entity.json` — type definition
|
||||||
|
- `.butcher/types/Update/entity.json` — add field to Update entity
|
||||||
|
- `aiogram/types/<type_name>.py` — generated type class
|
||||||
|
- `aiogram/types/__init__.py` — export
|
||||||
|
- `aiogram/enums/update_type.py` — `NEW_TYPE = "new_type"` enum member
|
||||||
|
- `aiogram/types/update.py` — `new_type: NewType | None = None` field + TYPE_CHECKING import + `__init__` signature
|
||||||
|
|
||||||
|
### Manual dispatcher integration (NOT generated)
|
||||||
|
|
||||||
|
1. **`aiogram/types/update.py`** — `event_type` property (lines ~161-215): add `if self.new_type: return "new_type"` before the `raise UpdateTypeLookupError` line
|
||||||
|
|
||||||
|
2. **`aiogram/dispatcher/router.py`** — two places in `Router.__init__`:
|
||||||
|
- Add `self.new_type = TelegramEventObserver(router=self, event_name="new_type")` after the last observer attribute (before `self.errors`)
|
||||||
|
- Add `"new_type": self.new_type,` to the `self.observers` dict (before `"error"`)
|
||||||
|
|
||||||
|
3. **`aiogram/dispatcher/middlewares/user_context.py`** — `resolve_event_context()` method: add `if event.new_type: return EventContext(user=..., chat=...)` before `return EventContext()`. Use `user` field for user-scoped events, `chat` for chat-scoped. No `business_connection_id` unless the event has one.
|
||||||
|
|
||||||
|
### Tests (manual)
|
||||||
|
|
||||||
|
4. **`tests/test_dispatcher/test_dispatcher.py`** — add `pytest.param("new_type", Update(update_id=42, new_type=NewType(...)), has_chat, has_user)` to `test_listen_update` parametrize list. Import `NewType` in the imports block.
|
||||||
|
|
||||||
|
5. **`tests/test_dispatcher/test_router.py`** — add `assert router.observers["new_type"] == router.new_type` to `test_observers_config`
|
||||||
|
|
||||||
|
### Docs (generated or manual stub)
|
||||||
|
- `docs/api/types/<type_name>.rst` — RST stub
|
||||||
|
- `docs/api/types/index.rst` — add to index
|
||||||
|
|
||||||
|
## Key invariants
|
||||||
|
- The snake_case name must be identical across: `UpdateType` enum value, `Update` field name, `event_type` return string, Router attribute name, observers dict key, and `TelegramEventObserver(event_name=...)`.
|
||||||
|
- `Update.event_type` uses `@lru_cache()` — never mutate Update fields after construction.
|
||||||
|
- The routing machinery (`propagate_event`, middleware chains, sub-router propagation) requires **zero changes** — it operates on observer names looked up dynamically.
|
||||||
|
|
||||||
|
## Example: `managed_bot` (API 9.6)
|
||||||
|
- Type: `ManagedBotUpdated` with fields `user: User` (creator) and `bot_user: User` (the managed bot)
|
||||||
|
- user_context: `EventContext(user=event.managed_bot.user)` — user only, no chat
|
||||||
|
- `has_chat=False, has_user=True` in test parametrization
|
||||||
43
.serena/memories/project_overview.md
Normal file
43
.serena/memories/project_overview.md
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
# Project Overview: aiogram
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
**aiogram** is a modern, fully asynchronous Python framework for the Telegram Bot API (currently supports Bot API 9.5+). It provides a high-level interface for building Telegram bots using asyncio.
|
||||||
|
|
||||||
|
## Tech Stack
|
||||||
|
- **Python**: 3.10–3.14 (also supports PyPy)
|
||||||
|
- **Async runtime**: asyncio + aiohttp (HTTP client)
|
||||||
|
- **Data validation**: Pydantic v2
|
||||||
|
- **Package manager**: `uv`
|
||||||
|
- **Linter/formatter**: `ruff` (check + format)
|
||||||
|
- **Type checker**: `mypy`
|
||||||
|
- **Testing**: `pytest` with `pytest-asyncio`, `aresponses`
|
||||||
|
- **Docs**: Sphinx (reStructuredText), `sphinx-autobuild`
|
||||||
|
- **Changelog**: `towncrier`
|
||||||
|
- **Code generation**: `butcher` (aiogram-cli) — generates types, methods, enums from Bot API schema
|
||||||
|
|
||||||
|
## Key Links
|
||||||
|
- Docs (English): https://docs.aiogram.dev/en/dev-3.x/
|
||||||
|
- GitHub: https://github.com/aiogram/aiogram/
|
||||||
|
- Bot API schema: `.butcher/schema/schema.json`
|
||||||
|
|
||||||
|
## Architecture Summary
|
||||||
|
The framework is layered:
|
||||||
|
1. **`aiogram/client/`** — `Bot` class (all API methods as shortcuts), session management, context controller
|
||||||
|
2. **`aiogram/types/`** — Pydantic models for all Telegram types (`TelegramObject` base)
|
||||||
|
3. **`aiogram/methods/`** — `TelegramMethod[ReturnType]` subclasses, one per Bot API method
|
||||||
|
4. **`aiogram/dispatcher/`** — Dispatcher, Router (blueprints), middleware, event observers
|
||||||
|
5. **`aiogram/filters/`** — Filter classes for routing
|
||||||
|
6. **`aiogram/fsm/`** — Finite State Machine (states, storage backends)
|
||||||
|
7. **`aiogram/enums/`** — Enumerations (ContentType, UpdateType, etc.)
|
||||||
|
8. **`aiogram/utils/`** — Text decoration, keyboards, i18n, etc.
|
||||||
|
9. **`aiogram/webhook/`** — Webhook server integrations (aiohttp, FastAPI, etc.)
|
||||||
|
10. **`.butcher/`** — Code generation inputs: YAML/JSON configs for types/methods/enums + Jinja2 templates
|
||||||
|
|
||||||
|
## Optional extras
|
||||||
|
- `fast` — uvloop + aiodns
|
||||||
|
- `redis` — Redis FSM storage
|
||||||
|
- `mongo` — MongoDB FSM storage
|
||||||
|
- `proxy` — SOCKS proxy support
|
||||||
|
- `i18n` — Babel-based i18n
|
||||||
|
- `cli` — `butcher` codegen CLI
|
||||||
|
- `signature` — cryptographic signature verification
|
||||||
66
.serena/memories/suggested_commands.md
Normal file
66
.serena/memories/suggested_commands.md
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Suggested Commands
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
```bash
|
||||||
|
uv sync --all-extras --group dev --group test
|
||||||
|
uv run pre-commit install
|
||||||
|
```
|
||||||
|
|
||||||
|
## Lint & Format (quick loop — use before every commit)
|
||||||
|
```bash
|
||||||
|
uv run ruff check --show-fixes --preview aiogram examples
|
||||||
|
uv run ruff format --check --diff aiogram tests scripts examples
|
||||||
|
uv run mypy aiogram
|
||||||
|
```
|
||||||
|
|
||||||
|
## Auto-fix formatting
|
||||||
|
```bash
|
||||||
|
uv run ruff format aiogram tests scripts examples
|
||||||
|
uv run ruff check --fix aiogram tests scripts examples
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run tests
|
||||||
|
```bash
|
||||||
|
uv run pytest tests # basic
|
||||||
|
uv run pytest tests --redis redis://localhost:6379/0 # with Redis
|
||||||
|
uv run pytest tests --mongo mongodb://mongo:mongo@localhost:27017 # with MongoDB
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build docs
|
||||||
|
```bash
|
||||||
|
# Live-reload dev server
|
||||||
|
uv run --extra docs sphinx-autobuild --watch aiogram/ --watch CHANGES.rst --watch README.rst docs/ docs/_build/
|
||||||
|
# One-shot build
|
||||||
|
uv run --extra docs bash -c 'cd docs && make html'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Code generation (Bot API codegen)
|
||||||
|
```bash
|
||||||
|
# After editing .butcher/*.yml or templates:
|
||||||
|
uv run --extra cli butcher parse
|
||||||
|
uv run --extra cli butcher refresh
|
||||||
|
uv run --extra cli butcher apply all
|
||||||
|
```
|
||||||
|
|
||||||
|
## API version bump (maintainers only)
|
||||||
|
```bash
|
||||||
|
make update-api args=patch # runs butcher parse/refresh/apply + version bump
|
||||||
|
```
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
```bash
|
||||||
|
# Preview draft
|
||||||
|
uv run --extra docs towncrier build --draft
|
||||||
|
# Build final
|
||||||
|
uv run --extra docs towncrier build --yes
|
||||||
|
```
|
||||||
|
|
||||||
|
## Clean build artifacts
|
||||||
|
```bash
|
||||||
|
make clean
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build package
|
||||||
|
```bash
|
||||||
|
uv build
|
||||||
|
```
|
||||||
43
.serena/memories/task_completion.md
Normal file
43
.serena/memories/task_completion.md
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
# Task Completion Checklist
|
||||||
|
|
||||||
|
Run these before marking any task done or requesting review.
|
||||||
|
|
||||||
|
## Quick loop (every PR)
|
||||||
|
```bash
|
||||||
|
uv run ruff check --show-fixes --preview aiogram examples
|
||||||
|
uv run ruff format --check --diff aiogram tests scripts examples
|
||||||
|
uv run mypy aiogram
|
||||||
|
uv run pytest tests
|
||||||
|
```
|
||||||
|
|
||||||
|
## Codegen tasks (when touching .butcher/ or generated API files)
|
||||||
|
```bash
|
||||||
|
uv run --extra cli butcher parse
|
||||||
|
uv run --extra cli butcher refresh
|
||||||
|
uv run --extra cli butcher apply all
|
||||||
|
# Then re-run quick loop
|
||||||
|
```
|
||||||
|
|
||||||
|
## Integration tests (only if Redis/Mongo storage touched)
|
||||||
|
```bash
|
||||||
|
uv run pytest --redis redis://localhost:6379/0 tests
|
||||||
|
uv run pytest --mongo mongodb://mongo:mongo@localhost:27017 tests
|
||||||
|
```
|
||||||
|
|
||||||
|
## Docs (only if docs/ or public API changed)
|
||||||
|
```bash
|
||||||
|
uv run --extra docs bash -c 'cd docs && make html'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Changelog fragment (required unless PR has `skip news` label)
|
||||||
|
- Create `CHANGES/<issue-or-pr-number>.<category>.rst`
|
||||||
|
- Valid categories: `feature`, `bugfix`, `doc`, `removal`, `misc`
|
||||||
|
- Content: user-visible behavior description (not internal/process details)
|
||||||
|
- Do NOT edit `CHANGES.rst` directly
|
||||||
|
|
||||||
|
## PR quality checklist
|
||||||
|
1. Tests added/updated for all behavior changes
|
||||||
|
2. Quick loop passes (ruff + mypy + pytest)
|
||||||
|
3. Changelog fragment added (or justified `skip news`)
|
||||||
|
4. If codegen-related: both `.butcher` source config AND generated files updated
|
||||||
|
5. PR body has clear reproduction/validation steps
|
||||||
45
.serena/memories/testing_patterns.md
Normal file
45
.serena/memories/testing_patterns.md
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
# Testing Patterns
|
||||||
|
|
||||||
|
## Framework
|
||||||
|
- pytest with async support
|
||||||
|
- No `pytest-asyncio` explicit marks needed (configured globally in pyproject.toml)
|
||||||
|
- `MockedBot` (tests/mocked_bot.py) — use for all bot method tests, no real HTTP
|
||||||
|
|
||||||
|
## MockedBot pattern
|
||||||
|
```python
|
||||||
|
from tests.mocked_bot import MockedBot
|
||||||
|
from aiogram.methods import SendMessage
|
||||||
|
from aiogram.types import Message, Chat
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
class TestSendMessage:
|
||||||
|
async def test_bot_method(self, bot: MockedBot):
|
||||||
|
prepare_result = bot.add_result_for(
|
||||||
|
SendMessage,
|
||||||
|
ok=True,
|
||||||
|
result=Message(
|
||||||
|
message_id=42,
|
||||||
|
date=datetime.datetime.now(),
|
||||||
|
text="test",
|
||||||
|
chat=Chat(id=42, type="private"),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
response: Message = await bot.send_message(chat_id=42, text="test")
|
||||||
|
bot.get_request()
|
||||||
|
assert response == prepare_result.result
|
||||||
|
```
|
||||||
|
|
||||||
|
## Test structure
|
||||||
|
- Class per type/method: `class TestSendMessage:`
|
||||||
|
- One test per scenario: `async def test_<scenario>(self, ...)`
|
||||||
|
- `bot` fixture comes from `tests/conftest.py`
|
||||||
|
|
||||||
|
## Integration tests
|
||||||
|
- Redis: `uv run pytest --redis redis://localhost:6379/0 tests`
|
||||||
|
- MongoDB: `uv run pytest --mongo mongodb://mongo:mongo@localhost:27017 tests`
|
||||||
|
- Only run these when Redis/Mongo storage code is affected
|
||||||
|
|
||||||
|
## What NOT to do
|
||||||
|
- Do not mock the database/storage in FSM tests — use real backends or memory storage
|
||||||
|
- Do not introduce new test dependencies for small tests
|
||||||
|
- Keep test style consistent with existing suite
|
||||||
152
.serena/project.yml
Normal file
152
.serena/project.yml
Normal file
|
|
@ -0,0 +1,152 @@
|
||||||
|
# the name by which the project can be referenced within Serena
|
||||||
|
project_name: "aiogram3"
|
||||||
|
|
||||||
|
|
||||||
|
# list of languages for which language servers are started; choose from:
|
||||||
|
# al bash clojure cpp csharp
|
||||||
|
# csharp_omnisharp dart elixir elm erlang
|
||||||
|
# fortran fsharp go groovy haskell
|
||||||
|
# java julia kotlin lua markdown
|
||||||
|
# matlab nix pascal perl php
|
||||||
|
# php_phpactor powershell python python_jedi r
|
||||||
|
# rego ruby ruby_solargraph rust scala
|
||||||
|
# swift terraform toml typescript typescript_vts
|
||||||
|
# vue yaml zig
|
||||||
|
# (This list may be outdated. For the current list, see values of Language enum here:
|
||||||
|
# https://github.com/oraios/serena/blob/main/src/solidlsp/ls_config.py
|
||||||
|
# For some languages, there are alternative language servers, e.g. csharp_omnisharp, ruby_solargraph.)
|
||||||
|
# Note:
|
||||||
|
# - For C, use cpp
|
||||||
|
# - For JavaScript, use typescript
|
||||||
|
# - For Free Pascal/Lazarus, use pascal
|
||||||
|
# Special requirements:
|
||||||
|
# Some languages require additional setup/installations.
|
||||||
|
# See here for details: https://oraios.github.io/serena/01-about/020_programming-languages.html#language-servers
|
||||||
|
# When using multiple languages, the first language server that supports a given file will be used for that file.
|
||||||
|
# The first language is the default language and the respective language server will be used as a fallback.
|
||||||
|
# Note that when using the JetBrains backend, language servers are not used and this list is correspondingly ignored.
|
||||||
|
languages:
|
||||||
|
- python
|
||||||
|
|
||||||
|
# the encoding used by text files in the project
|
||||||
|
# For a list of possible encodings, see https://docs.python.org/3.11/library/codecs.html#standard-encodings
|
||||||
|
encoding: "utf-8"
|
||||||
|
|
||||||
|
# line ending convention to use when writing source files.
|
||||||
|
# Possible values: unset (use global setting), "lf", "crlf", or "native" (platform default)
|
||||||
|
# This does not affect Serena's own files (e.g. memories and configuration files), which always use native line endings.
|
||||||
|
line_ending:
|
||||||
|
|
||||||
|
# The language backend to use for this project.
|
||||||
|
# If not set, the global setting from serena_config.yml is used.
|
||||||
|
# Valid values: LSP, JetBrains
|
||||||
|
# Note: the backend is fixed at startup. If a project with a different backend
|
||||||
|
# is activated post-init, an error will be returned.
|
||||||
|
language_backend:
|
||||||
|
|
||||||
|
# whether to use project's .gitignore files to ignore files
|
||||||
|
ignore_all_files_in_gitignore: true
|
||||||
|
|
||||||
|
# advanced configuration option allowing to configure language server-specific options.
|
||||||
|
# Maps the language key to the options.
|
||||||
|
# Have a look at the docstring of the constructors of the LS implementations within solidlsp (e.g., for C# or PHP) to see which options are available.
|
||||||
|
# No documentation on options means no options are available.
|
||||||
|
ls_specific_settings: {}
|
||||||
|
|
||||||
|
# list of additional paths to ignore in this project.
|
||||||
|
# Same syntax as gitignore, so you can use * and **.
|
||||||
|
# Note: global ignored_paths from serena_config.yml are also applied additively.
|
||||||
|
ignored_paths: []
|
||||||
|
|
||||||
|
# whether the project is in read-only mode
|
||||||
|
# If set to true, all editing tools will be disabled and attempts to use them will result in an error
|
||||||
|
# Added on 2025-04-18
|
||||||
|
read_only: false
|
||||||
|
|
||||||
|
# list of tool names to exclude.
|
||||||
|
# This extends the existing exclusions (e.g. from the global configuration)
|
||||||
|
#
|
||||||
|
# Below is the complete list of tools for convenience.
|
||||||
|
# To make sure you have the latest list of tools, and to view their descriptions,
|
||||||
|
# execute `uv run scripts/print_tool_overview.py`.
|
||||||
|
#
|
||||||
|
# * `activate_project`: Activates a project by name.
|
||||||
|
# * `check_onboarding_performed`: Checks whether project onboarding was already performed.
|
||||||
|
# * `create_text_file`: Creates/overwrites a file in the project directory.
|
||||||
|
# * `delete_lines`: Deletes a range of lines within a file.
|
||||||
|
# * `delete_memory`: Deletes a memory from Serena's project-specific memory store.
|
||||||
|
# * `execute_shell_command`: Executes a shell command.
|
||||||
|
# * `find_referencing_code_snippets`: Finds code snippets in which the symbol at the given location is referenced.
|
||||||
|
# * `find_referencing_symbols`: Finds symbols that reference the symbol at the given location (optionally filtered by type).
|
||||||
|
# * `find_symbol`: Performs a global (or local) search for symbols with/containing a given name/substring (optionally filtered by type).
|
||||||
|
# * `get_current_config`: Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes.
|
||||||
|
# * `get_symbols_overview`: Gets an overview of the top-level symbols defined in a given file.
|
||||||
|
# * `initial_instructions`: Gets the initial instructions for the current project.
|
||||||
|
# Should only be used in settings where the system prompt cannot be set,
|
||||||
|
# e.g. in clients you have no control over, like Claude Desktop.
|
||||||
|
# * `insert_after_symbol`: Inserts content after the end of the definition of a given symbol.
|
||||||
|
# * `insert_at_line`: Inserts content at a given line in a file.
|
||||||
|
# * `insert_before_symbol`: Inserts content before the beginning of the definition of a given symbol.
|
||||||
|
# * `list_dir`: Lists files and directories in the given directory (optionally with recursion).
|
||||||
|
# * `list_memories`: Lists memories in Serena's project-specific memory store.
|
||||||
|
# * `onboarding`: Performs onboarding (identifying the project structure and essential tasks, e.g. for testing or building).
|
||||||
|
# * `prepare_for_new_conversation`: Provides instructions for preparing for a new conversation (in order to continue with the necessary context).
|
||||||
|
# * `read_file`: Reads a file within the project directory.
|
||||||
|
# * `read_memory`: Reads the memory with the given name from Serena's project-specific memory store.
|
||||||
|
# * `remove_project`: Removes a project from the Serena configuration.
|
||||||
|
# * `replace_lines`: Replaces a range of lines within a file with new content.
|
||||||
|
# * `replace_symbol_body`: Replaces the full definition of a symbol.
|
||||||
|
# * `restart_language_server`: Restarts the language server, may be necessary when edits not through Serena happen.
|
||||||
|
# * `search_for_pattern`: Performs a search for a pattern in the project.
|
||||||
|
# * `summarize_changes`: Provides instructions for summarizing the changes made to the codebase.
|
||||||
|
# * `switch_modes`: Activates modes by providing a list of their names
|
||||||
|
# * `think_about_collected_information`: Thinking tool for pondering the completeness of collected information.
|
||||||
|
# * `think_about_task_adherence`: Thinking tool for determining whether the agent is still on track with the current task.
|
||||||
|
# * `think_about_whether_you_are_done`: Thinking tool for determining whether the task is truly completed.
|
||||||
|
# * `write_memory`: Writes a named memory (for future reference) to Serena's project-specific memory store.
|
||||||
|
excluded_tools: []
|
||||||
|
|
||||||
|
# list of tools to include that would otherwise be disabled (particularly optional tools that are disabled by default).
|
||||||
|
# This extends the existing inclusions (e.g. from the global configuration).
|
||||||
|
included_optional_tools: []
|
||||||
|
|
||||||
|
# fixed set of tools to use as the base tool set (if non-empty), replacing Serena's default set of tools.
|
||||||
|
# This cannot be combined with non-empty excluded_tools or included_optional_tools.
|
||||||
|
fixed_tools: []
|
||||||
|
|
||||||
|
# list of mode names to that are always to be included in the set of active modes
|
||||||
|
# The full set of modes to be activated is base_modes + default_modes.
|
||||||
|
# If the setting is undefined, the base_modes from the global configuration (serena_config.yml) apply.
|
||||||
|
# Otherwise, this setting overrides the global configuration.
|
||||||
|
# Set this to [] to disable base modes for this project.
|
||||||
|
# Set this to a list of mode names to always include the respective modes for this project.
|
||||||
|
base_modes:
|
||||||
|
|
||||||
|
# list of mode names that are to be activated by default.
|
||||||
|
# The full set of modes to be activated is base_modes + default_modes.
|
||||||
|
# If the setting is undefined, the default_modes from the global configuration (serena_config.yml) apply.
|
||||||
|
# Otherwise, this overrides the setting from the global configuration (serena_config.yml).
|
||||||
|
# This setting can, in turn, be overridden by CLI parameters (--mode).
|
||||||
|
default_modes:
|
||||||
|
|
||||||
|
# initial prompt for the project. It will always be given to the LLM upon activating the project
|
||||||
|
# (contrary to the memories, which are loaded on demand).
|
||||||
|
initial_prompt: ""
|
||||||
|
|
||||||
|
# time budget (seconds) per tool call for the retrieval of additional symbol information
|
||||||
|
# such as docstrings or parameter information.
|
||||||
|
# This overrides the corresponding setting in the global configuration; see the documentation there.
|
||||||
|
# If null or missing, use the setting from the global configuration.
|
||||||
|
symbol_info_budget:
|
||||||
|
|
||||||
|
# list of regex patterns which, when matched, mark a memory entry as read‑only.
|
||||||
|
# Extends the list from the global configuration, merging the two lists.
|
||||||
|
read_only_memory_patterns: []
|
||||||
|
|
||||||
|
# list of regex patterns for memories to completely ignore.
|
||||||
|
# Matching memories will not appear in list_memories or activate_project output
|
||||||
|
# and cannot be accessed via read_memory or write_memory.
|
||||||
|
# To access ignored memory files, use the read_file tool on the raw file path.
|
||||||
|
# Extends the list from the global configuration, merging the two lists.
|
||||||
|
# Example: ["_archive/.*", "_episodes/.*"]
|
||||||
|
ignored_memory_patterns: []
|
||||||
11
AGENTS.md
11
AGENTS.md
|
|
@ -19,6 +19,17 @@ uv run pre-commit install
|
||||||
Note: `uv run pre-commit install` writes hooks to the shared repository `.git/hooks`
|
Note: `uv run pre-commit install` writes hooks to the shared repository `.git/hooks`
|
||||||
(common for all worktrees), not only for the current worktree.
|
(common for all worktrees), not only for the current worktree.
|
||||||
|
|
||||||
|
## Codebase Navigation
|
||||||
|
|
||||||
|
Use **Serena MCP** for all codebase navigation tasks. Serena provides semantic, symbol-aware tools that are more efficient than raw file reads:
|
||||||
|
|
||||||
|
- `get_symbols_overview` — list classes/methods in a file without reading the full body
|
||||||
|
- `find_symbol` — locate a specific class, method, or field by name path
|
||||||
|
- `find_referencing_symbols` — find all usages of a symbol across the codebase
|
||||||
|
- `search_for_pattern` — regex search when symbol names are unknown
|
||||||
|
|
||||||
|
Prefer Serena's symbol tools over `Read`/`Grep` for source code exploration. Only fall back to file-based tools when Serena is unavailable or for non-code files (JSON configs, Markdown, etc.).
|
||||||
|
|
||||||
## Mandatory local checks before PR
|
## Mandatory local checks before PR
|
||||||
|
|
||||||
Code style/lint in this repository is enforced via Ruff (`ruff check` + `ruff format`).
|
Code style/lint in this repository is enforced via Ruff (`ruff check` + `ruff format`).
|
||||||
|
|
|
||||||
51
CHANGES/1792.misc.rst
Normal file
51
CHANGES/1792.misc.rst
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
Updated to `Bot API 9.6 <https://core.telegram.org/bots/api-changelog#april-3-2026>`_
|
||||||
|
|
||||||
|
**Managed Bots**
|
||||||
|
|
||||||
|
*New Methods:*
|
||||||
|
|
||||||
|
- Added :class:`aiogram.methods.get_managed_bot_token.GetManagedBotToken` method - retrieves the token of a managed bot
|
||||||
|
- Added :class:`aiogram.methods.replace_managed_bot_token.ReplaceManagedBotToken` method - generates a new token for a managed bot, invalidating the previous one
|
||||||
|
- Added :class:`aiogram.methods.save_prepared_keyboard_button.SavePreparedKeyboardButton` method - saves a keyboard button to be used in Mini Apps via :code:`requestChat`
|
||||||
|
|
||||||
|
*New Types:*
|
||||||
|
|
||||||
|
- Added :class:`aiogram.types.keyboard_button_request_managed_bot.KeyboardButtonRequestManagedBot` type - defines criteria for selecting a managed bot via a keyboard button
|
||||||
|
- Added :class:`aiogram.types.managed_bot_created.ManagedBotCreated` type - describes a service message about a managed bot being created
|
||||||
|
- Added :class:`aiogram.types.managed_bot_updated.ManagedBotUpdated` type - describes updates to a managed bot
|
||||||
|
- Added :class:`aiogram.types.prepared_keyboard_button.PreparedKeyboardButton` type - represents a prepared keyboard button for use in Mini Apps
|
||||||
|
|
||||||
|
*New Fields:*
|
||||||
|
|
||||||
|
- Added :code:`can_manage_bots` field to :class:`aiogram.types.user.User` - indicates whether the bot can manage other bots
|
||||||
|
- Added :code:`request_managed_bot` field to :class:`aiogram.types.keyboard_button.KeyboardButton` - requests the user to select a managed bot
|
||||||
|
- Added :code:`managed_bot_created` field to :class:`aiogram.types.message.Message` - service message about a managed bot being created (type: :class:`aiogram.types.managed_bot_created.ManagedBotCreated`)
|
||||||
|
- Added :code:`managed_bot` field to :class:`aiogram.types.update.Update` - contains updates received by a managed bot
|
||||||
|
|
||||||
|
**Polls**
|
||||||
|
|
||||||
|
*New Types:*
|
||||||
|
|
||||||
|
- Added :class:`aiogram.types.poll_option_added.PollOptionAdded` type - describes a service message about a new option added to a poll
|
||||||
|
- Added :class:`aiogram.types.poll_option_deleted.PollOptionDeleted` type - describes a service message about a poll option being deleted
|
||||||
|
|
||||||
|
*New Fields:*
|
||||||
|
|
||||||
|
- Replaced :code:`correct_option_id` with :code:`correct_option_ids` in :class:`aiogram.types.poll.Poll` - supports multiple correct answers for quiz polls
|
||||||
|
- Added :code:`allows_revoting` field to :class:`aiogram.types.poll.Poll` - indicates whether users are allowed to change their vote
|
||||||
|
- Added :code:`description` and :code:`description_entities` fields to :class:`aiogram.types.poll.Poll` - optional poll description with formatting entities
|
||||||
|
- Added :code:`persistent_id` field to :class:`aiogram.types.poll_option.PollOption` - stable identifier for a poll option
|
||||||
|
- Added :code:`added_by_user` and :code:`added_by_chat` fields to :class:`aiogram.types.poll_option.PollOption` - identifies who added the option
|
||||||
|
- Added :code:`addition_date` field to :class:`aiogram.types.poll_option.PollOption` - date when the option was added
|
||||||
|
- Added :code:`option_persistent_ids` field to :class:`aiogram.types.poll_answer.PollAnswer` - persistent IDs of the chosen options
|
||||||
|
- Added :code:`poll_option_id` field to :class:`aiogram.types.reply_parameters.ReplyParameters` - allows replying to a specific poll option
|
||||||
|
- Added :code:`reply_to_poll_option_id` field to :class:`aiogram.types.message.Message` - the persistent ID of the poll option the message replies to
|
||||||
|
|
||||||
|
*New Parameters for* :class:`aiogram.methods.send_poll.SendPoll`:
|
||||||
|
|
||||||
|
- Replaced :code:`correct_option_id` with :code:`correct_option_ids` - supports multiple correct answers for quiz polls
|
||||||
|
- Added :code:`allows_revoting` - allows users to change their vote after submission
|
||||||
|
- Added :code:`shuffle_options` - randomizes the order of poll options for each user
|
||||||
|
- Added :code:`allow_adding_options` - allows users to add their own poll options
|
||||||
|
- Added :code:`hide_results_until_closes` - hides vote results until the poll is closed
|
||||||
|
- Added :code:`description`, :code:`description_parse_mode`, :code:`description_entities` - optional poll description with parse mode and formatting
|
||||||
|
|
@ -52,7 +52,7 @@ Features
|
||||||
- Asynchronous (`asyncio docs <https://docs.python.org/3/library/asyncio.html>`_, :pep:`492`)
|
- Asynchronous (`asyncio docs <https://docs.python.org/3/library/asyncio.html>`_, :pep:`492`)
|
||||||
- Has type hints (:pep:`484`) and can be used with `mypy <http://mypy-lang.org/>`_
|
- Has type hints (:pep:`484`) and can be used with `mypy <http://mypy-lang.org/>`_
|
||||||
- Supports `PyPy <https://www.pypy.org/>`_
|
- Supports `PyPy <https://www.pypy.org/>`_
|
||||||
- Supports `Telegram Bot API 9.5 <https://core.telegram.org/bots/api>`_ and gets fast updates to the latest versions of the Bot API
|
- Supports `Telegram Bot API 9.6 <https://core.telegram.org/bots/api>`_ and gets fast updates to the latest versions of the Bot API
|
||||||
- Telegram Bot API integration code was `autogenerated <https://github.com/aiogram/tg-codegen>`_ and can be easily re-generated when API gets updated
|
- Telegram Bot API integration code was `autogenerated <https://github.com/aiogram/tg-codegen>`_ and can be easily re-generated when API gets updated
|
||||||
- Updates router (Blueprints)
|
- Updates router (Blueprints)
|
||||||
- Has Finite State Machine
|
- Has Finite State Machine
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
__version__ = "3.26.0"
|
__version__ = "3.27.0"
|
||||||
__api_version__ = "9.5"
|
__api_version__ = "9.6"
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,7 @@ from ..methods import (
|
||||||
GetFile,
|
GetFile,
|
||||||
GetForumTopicIconStickers,
|
GetForumTopicIconStickers,
|
||||||
GetGameHighScores,
|
GetGameHighScores,
|
||||||
|
GetManagedBotToken,
|
||||||
GetMe,
|
GetMe,
|
||||||
GetMyCommands,
|
GetMyCommands,
|
||||||
GetMyDefaultAdministratorRights,
|
GetMyDefaultAdministratorRights,
|
||||||
|
|
@ -110,11 +111,13 @@ from ..methods import (
|
||||||
RemoveUserVerification,
|
RemoveUserVerification,
|
||||||
ReopenForumTopic,
|
ReopenForumTopic,
|
||||||
ReopenGeneralForumTopic,
|
ReopenGeneralForumTopic,
|
||||||
|
ReplaceManagedBotToken,
|
||||||
ReplaceStickerInSet,
|
ReplaceStickerInSet,
|
||||||
RepostStory,
|
RepostStory,
|
||||||
RestrictChatMember,
|
RestrictChatMember,
|
||||||
RevokeChatInviteLink,
|
RevokeChatInviteLink,
|
||||||
SavePreparedInlineMessage,
|
SavePreparedInlineMessage,
|
||||||
|
SavePreparedKeyboardButton,
|
||||||
SendAnimation,
|
SendAnimation,
|
||||||
SendAudio,
|
SendAudio,
|
||||||
SendChatAction,
|
SendChatAction,
|
||||||
|
|
@ -216,6 +219,7 @@ from ..types import (
|
||||||
InputProfilePhotoUnion,
|
InputProfilePhotoUnion,
|
||||||
InputSticker,
|
InputSticker,
|
||||||
InputStoryContentUnion,
|
InputStoryContentUnion,
|
||||||
|
KeyboardButton,
|
||||||
LabeledPrice,
|
LabeledPrice,
|
||||||
LinkPreviewOptions,
|
LinkPreviewOptions,
|
||||||
MaskPosition,
|
MaskPosition,
|
||||||
|
|
@ -228,6 +232,7 @@ from ..types import (
|
||||||
PassportElementErrorUnion,
|
PassportElementErrorUnion,
|
||||||
Poll,
|
Poll,
|
||||||
PreparedInlineMessage,
|
PreparedInlineMessage,
|
||||||
|
PreparedKeyboardButton,
|
||||||
ReactionTypeUnion,
|
ReactionTypeUnion,
|
||||||
ReplyMarkupUnion,
|
ReplyMarkupUnion,
|
||||||
ReplyParameters,
|
ReplyParameters,
|
||||||
|
|
@ -3008,13 +3013,20 @@ class Bot:
|
||||||
is_anonymous: bool | None = None,
|
is_anonymous: bool | None = None,
|
||||||
type: str | None = None,
|
type: str | None = None,
|
||||||
allows_multiple_answers: bool | None = None,
|
allows_multiple_answers: bool | None = None,
|
||||||
correct_option_id: int | None = None,
|
allows_revoting: bool | None = None,
|
||||||
|
shuffle_options: bool | None = None,
|
||||||
|
allow_adding_options: bool | None = None,
|
||||||
|
hide_results_until_closes: bool | None = None,
|
||||||
|
correct_option_ids: list[int] | None = None,
|
||||||
explanation: str | None = None,
|
explanation: str | None = None,
|
||||||
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
explanation_entities: list[MessageEntity] | None = None,
|
explanation_entities: list[MessageEntity] | None = None,
|
||||||
open_period: int | None = None,
|
open_period: int | None = None,
|
||||||
close_date: DateTimeUnion | None = None,
|
close_date: DateTimeUnion | None = None,
|
||||||
is_closed: bool | None = None,
|
is_closed: bool | None = None,
|
||||||
|
description: str | None = None,
|
||||||
|
description_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
|
description_entities: list[MessageEntity] | None = None,
|
||||||
disable_notification: bool | None = None,
|
disable_notification: bool | None = None,
|
||||||
protect_content: bool | Default | None = Default("protect_content"),
|
protect_content: bool | Default | None = Default("protect_content"),
|
||||||
allow_paid_broadcast: bool | None = None,
|
allow_paid_broadcast: bool | None = None,
|
||||||
|
|
@ -3022,6 +3034,7 @@ class Bot:
|
||||||
reply_parameters: ReplyParameters | None = None,
|
reply_parameters: ReplyParameters | None = None,
|
||||||
reply_markup: ReplyMarkupUnion | None = None,
|
reply_markup: ReplyMarkupUnion | None = None,
|
||||||
allow_sending_without_reply: bool | None = None,
|
allow_sending_without_reply: bool | None = None,
|
||||||
|
correct_option_id: int | None = None,
|
||||||
reply_to_message_id: int | None = None,
|
reply_to_message_id: int | None = None,
|
||||||
request_timeout: int | None = None,
|
request_timeout: int | None = None,
|
||||||
) -> Message:
|
) -> Message:
|
||||||
|
|
@ -3039,14 +3052,21 @@ class Bot:
|
||||||
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
||||||
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
||||||
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
||||||
:param allows_multiple_answers: :code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False`
|
:param allows_multiple_answers: Pass :code:`True`, if the poll allows multiple answers, defaults to :code:`False`
|
||||||
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
:param allows_revoting: Pass :code:`True`, if the poll allows to change chosen answer options, defaults to :code:`False` for quizzes and to :code:`True` for regular polls
|
||||||
|
:param shuffle_options: Pass :code:`True`, if the poll options must be shown in random order
|
||||||
|
:param allow_adding_options: Pass :code:`True`, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes
|
||||||
|
:param hide_results_until_closes: Pass :code:`True`, if poll results must be shown only after the poll closes
|
||||||
|
:param correct_option_ids: A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode
|
||||||
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
||||||
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
||||||
:param open_period: Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*.
|
:param open_period: Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with *close_date*.
|
||||||
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with *open_period*.
|
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with *open_period*.
|
||||||
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
||||||
|
:param description: Description of the poll to be sent, 0-1024 characters after entities parsing
|
||||||
|
:param description_parse_mode: Mode for parsing entities in the poll description. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
|
:param description_entities: A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of *description_parse_mode*
|
||||||
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
||||||
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
||||||
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
||||||
|
|
@ -3054,6 +3074,7 @@ class Bot:
|
||||||
:param reply_parameters: Description of the message to reply to
|
:param reply_parameters: Description of the message to reply to
|
||||||
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
||||||
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
||||||
|
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
||||||
:param reply_to_message_id: If the message is a reply, ID of the original message
|
:param reply_to_message_id: If the message is a reply, ID of the original message
|
||||||
:param request_timeout: Request timeout
|
:param request_timeout: Request timeout
|
||||||
:return: On success, the sent :class:`aiogram.types.message.Message` is returned.
|
:return: On success, the sent :class:`aiogram.types.message.Message` is returned.
|
||||||
|
|
@ -3070,13 +3091,20 @@ class Bot:
|
||||||
is_anonymous=is_anonymous,
|
is_anonymous=is_anonymous,
|
||||||
type=type,
|
type=type,
|
||||||
allows_multiple_answers=allows_multiple_answers,
|
allows_multiple_answers=allows_multiple_answers,
|
||||||
correct_option_id=correct_option_id,
|
allows_revoting=allows_revoting,
|
||||||
|
shuffle_options=shuffle_options,
|
||||||
|
allow_adding_options=allow_adding_options,
|
||||||
|
hide_results_until_closes=hide_results_until_closes,
|
||||||
|
correct_option_ids=correct_option_ids,
|
||||||
explanation=explanation,
|
explanation=explanation,
|
||||||
explanation_parse_mode=explanation_parse_mode,
|
explanation_parse_mode=explanation_parse_mode,
|
||||||
explanation_entities=explanation_entities,
|
explanation_entities=explanation_entities,
|
||||||
open_period=open_period,
|
open_period=open_period,
|
||||||
close_date=close_date,
|
close_date=close_date,
|
||||||
is_closed=is_closed,
|
is_closed=is_closed,
|
||||||
|
description=description,
|
||||||
|
description_parse_mode=description_parse_mode,
|
||||||
|
description_entities=description_entities,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
protect_content=protect_content,
|
protect_content=protect_content,
|
||||||
allow_paid_broadcast=allow_paid_broadcast,
|
allow_paid_broadcast=allow_paid_broadcast,
|
||||||
|
|
@ -3084,6 +3112,7 @@ class Bot:
|
||||||
reply_parameters=reply_parameters,
|
reply_parameters=reply_parameters,
|
||||||
reply_markup=reply_markup,
|
reply_markup=reply_markup,
|
||||||
allow_sending_without_reply=allow_sending_without_reply,
|
allow_sending_without_reply=allow_sending_without_reply,
|
||||||
|
correct_option_id=correct_option_id,
|
||||||
reply_to_message_id=reply_to_message_id,
|
reply_to_message_id=reply_to_message_id,
|
||||||
)
|
)
|
||||||
return await self(call, request_timeout=request_timeout)
|
return await self(call, request_timeout=request_timeout)
|
||||||
|
|
@ -4904,8 +4933,8 @@ class Bot:
|
||||||
:param chat_id: Required if *user_id* is not specified. Unique identifier for the chat or username of the channel (in the format :code:`@channelusername`) that will receive the gift.
|
:param chat_id: Required if *user_id* is not specified. Unique identifier for the chat or username of the channel (in the format :code:`@channelusername`) that will receive the gift.
|
||||||
:param pay_for_upgrade: Pass :code:`True` to pay for the gift upgrade from the bot's balance, thereby making the upgrade free for the receiver
|
:param pay_for_upgrade: Pass :code:`True` to pay for the gift upgrade from the bot's balance, thereby making the upgrade free for the receiver
|
||||||
:param text: Text that will be shown along with the gift; 0-128 characters
|
:param text: Text that will be shown along with the gift; 0-128 characters
|
||||||
:param text_parse_mode: Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.
|
:param text_parse_mode: Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.
|
||||||
:param text_entities: A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.
|
:param text_entities: A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.
|
||||||
:param request_timeout: Request timeout
|
:param request_timeout: Request timeout
|
||||||
:return: Returns :code:`True` on success.
|
:return: Returns :code:`True` on success.
|
||||||
"""
|
"""
|
||||||
|
|
@ -5232,8 +5261,8 @@ class Bot:
|
||||||
:param month_count: Number of months the Telegram Premium subscription will be active for the user; must be one of 3, 6, or 12
|
:param month_count: Number of months the Telegram Premium subscription will be active for the user; must be one of 3, 6, or 12
|
||||||
:param star_count: Number of Telegram Stars to pay for the Telegram Premium subscription; must be 1000 for 3 months, 1500 for 6 months, and 2500 for 12 months
|
:param star_count: Number of Telegram Stars to pay for the Telegram Premium subscription; must be 1000 for 3 months, 1500 for 6 months, and 2500 for 12 months
|
||||||
:param text: Text that will be shown along with the service message about the subscription; 0-128 characters
|
:param text: Text that will be shown along with the service message about the subscription; 0-128 characters
|
||||||
:param text_parse_mode: Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.
|
:param text_parse_mode: Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.
|
||||||
:param text_entities: A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored.
|
:param text_entities: A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored.
|
||||||
:param request_timeout: Request timeout
|
:param request_timeout: Request timeout
|
||||||
:return: Returns :code:`True` on success.
|
:return: Returns :code:`True` on success.
|
||||||
"""
|
"""
|
||||||
|
|
@ -5938,3 +5967,66 @@ class Bot:
|
||||||
tag=tag,
|
tag=tag,
|
||||||
)
|
)
|
||||||
return await self(call, request_timeout=request_timeout)
|
return await self(call, request_timeout=request_timeout)
|
||||||
|
|
||||||
|
async def get_managed_bot_token(
|
||||||
|
self,
|
||||||
|
user_id: int,
|
||||||
|
request_timeout: int | None = None,
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
Use this method to get the token of a managed bot. Returns the token as *String* on success.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#getmanagedbottoken
|
||||||
|
|
||||||
|
:param user_id: User identifier of the managed bot whose token will be returned
|
||||||
|
:param request_timeout: Request timeout
|
||||||
|
:return: Returns the token as *String* on success.
|
||||||
|
"""
|
||||||
|
|
||||||
|
call = GetManagedBotToken(
|
||||||
|
user_id=user_id,
|
||||||
|
)
|
||||||
|
return await self(call, request_timeout=request_timeout)
|
||||||
|
|
||||||
|
async def replace_managed_bot_token(
|
||||||
|
self,
|
||||||
|
user_id: int,
|
||||||
|
request_timeout: int | None = None,
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
Use this method to revoke the current token of a managed bot and generate a new one. Returns the new token as *String* on success.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#replacemanagedbottoken
|
||||||
|
|
||||||
|
:param user_id: User identifier of the managed bot whose token will be replaced
|
||||||
|
:param request_timeout: Request timeout
|
||||||
|
:return: Returns the new token as *String* on success.
|
||||||
|
"""
|
||||||
|
|
||||||
|
call = ReplaceManagedBotToken(
|
||||||
|
user_id=user_id,
|
||||||
|
)
|
||||||
|
return await self(call, request_timeout=request_timeout)
|
||||||
|
|
||||||
|
async def save_prepared_keyboard_button(
|
||||||
|
self,
|
||||||
|
user_id: int,
|
||||||
|
button: KeyboardButton,
|
||||||
|
request_timeout: int | None = None,
|
||||||
|
) -> PreparedKeyboardButton:
|
||||||
|
"""
|
||||||
|
Stores a keyboard button that can be used by a user within a Mini App. Returns a :class:`aiogram.types.prepared_keyboard_button.PreparedKeyboardButton` object.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#savepreparedkeyboardbutton
|
||||||
|
|
||||||
|
:param user_id: Unique identifier of the target user that can use the button
|
||||||
|
:param button: A JSON-serialized object describing the button to be saved. The button must be of the type *request_users*, *request_chat*, or *request_managed_bot*
|
||||||
|
:param request_timeout: Request timeout
|
||||||
|
:return: Returns a :class:`aiogram.types.prepared_keyboard_button.PreparedKeyboardButton` object.
|
||||||
|
"""
|
||||||
|
|
||||||
|
call = SavePreparedKeyboardButton(
|
||||||
|
user_id=user_id,
|
||||||
|
button=button,
|
||||||
|
)
|
||||||
|
return await self(call, request_timeout=request_timeout)
|
||||||
|
|
|
||||||
|
|
@ -183,4 +183,6 @@ class UserContextMiddleware(BaseMiddleware):
|
||||||
return EventContext(
|
return EventContext(
|
||||||
user=event.purchased_paid_media.from_user,
|
user=event.purchased_paid_media.from_user,
|
||||||
)
|
)
|
||||||
|
if event.managed_bot:
|
||||||
|
return EventContext(user=event.managed_bot.user)
|
||||||
return EventContext()
|
return EventContext()
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,7 @@ class Router:
|
||||||
router=self,
|
router=self,
|
||||||
event_name="purchased_paid_media",
|
event_name="purchased_paid_media",
|
||||||
)
|
)
|
||||||
|
self.managed_bot = TelegramEventObserver(router=self, event_name="managed_bot")
|
||||||
|
|
||||||
self.errors = self.error = TelegramEventObserver(router=self, event_name="error")
|
self.errors = self.error = TelegramEventObserver(router=self, event_name="error")
|
||||||
|
|
||||||
|
|
@ -115,6 +116,7 @@ class Router:
|
||||||
"edited_business_message": self.edited_business_message,
|
"edited_business_message": self.edited_business_message,
|
||||||
"business_message": self.business_message,
|
"business_message": self.business_message,
|
||||||
"purchased_paid_media": self.purchased_paid_media,
|
"purchased_paid_media": self.purchased_paid_media,
|
||||||
|
"managed_bot": self.managed_bot,
|
||||||
"error": self.errors,
|
"error": self.errors,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,10 @@ class ContentType(str, Enum):
|
||||||
GIVEAWAY = "giveaway"
|
GIVEAWAY = "giveaway"
|
||||||
GIVEAWAY_WINNERS = "giveaway_winners"
|
GIVEAWAY_WINNERS = "giveaway_winners"
|
||||||
GIVEAWAY_COMPLETED = "giveaway_completed"
|
GIVEAWAY_COMPLETED = "giveaway_completed"
|
||||||
|
MANAGED_BOT_CREATED = "managed_bot_created"
|
||||||
PAID_MESSAGE_PRICE_CHANGED = "paid_message_price_changed"
|
PAID_MESSAGE_PRICE_CHANGED = "paid_message_price_changed"
|
||||||
|
POLL_OPTION_ADDED = "poll_option_added"
|
||||||
|
POLL_OPTION_DELETED = "poll_option_deleted"
|
||||||
SUGGESTED_POST_APPROVED = "suggested_post_approved"
|
SUGGESTED_POST_APPROVED = "suggested_post_approved"
|
||||||
SUGGESTED_POST_APPROVAL_FAILED = "suggested_post_approval_failed"
|
SUGGESTED_POST_APPROVAL_FAILED = "suggested_post_approval_failed"
|
||||||
SUGGESTED_POST_DECLINED = "suggested_post_declined"
|
SUGGESTED_POST_DECLINED = "suggested_post_declined"
|
||||||
|
|
|
||||||
|
|
@ -31,3 +31,4 @@ class UpdateType(str, Enum):
|
||||||
CHAT_JOIN_REQUEST = "chat_join_request"
|
CHAT_JOIN_REQUEST = "chat_join_request"
|
||||||
CHAT_BOOST = "chat_boost"
|
CHAT_BOOST = "chat_boost"
|
||||||
REMOVED_CHAT_BOOST = "removed_chat_boost"
|
REMOVED_CHAT_BOOST = "removed_chat_boost"
|
||||||
|
MANAGED_BOT = "managed_bot"
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ from .get_custom_emoji_stickers import GetCustomEmojiStickers
|
||||||
from .get_file import GetFile
|
from .get_file import GetFile
|
||||||
from .get_forum_topic_icon_stickers import GetForumTopicIconStickers
|
from .get_forum_topic_icon_stickers import GetForumTopicIconStickers
|
||||||
from .get_game_high_scores import GetGameHighScores
|
from .get_game_high_scores import GetGameHighScores
|
||||||
|
from .get_managed_bot_token import GetManagedBotToken
|
||||||
from .get_me import GetMe
|
from .get_me import GetMe
|
||||||
from .get_my_commands import GetMyCommands
|
from .get_my_commands import GetMyCommands
|
||||||
from .get_my_default_administrator_rights import GetMyDefaultAdministratorRights
|
from .get_my_default_administrator_rights import GetMyDefaultAdministratorRights
|
||||||
|
|
@ -92,11 +93,13 @@ from .remove_my_profile_photo import RemoveMyProfilePhoto
|
||||||
from .remove_user_verification import RemoveUserVerification
|
from .remove_user_verification import RemoveUserVerification
|
||||||
from .reopen_forum_topic import ReopenForumTopic
|
from .reopen_forum_topic import ReopenForumTopic
|
||||||
from .reopen_general_forum_topic import ReopenGeneralForumTopic
|
from .reopen_general_forum_topic import ReopenGeneralForumTopic
|
||||||
|
from .replace_managed_bot_token import ReplaceManagedBotToken
|
||||||
from .replace_sticker_in_set import ReplaceStickerInSet
|
from .replace_sticker_in_set import ReplaceStickerInSet
|
||||||
from .repost_story import RepostStory
|
from .repost_story import RepostStory
|
||||||
from .restrict_chat_member import RestrictChatMember
|
from .restrict_chat_member import RestrictChatMember
|
||||||
from .revoke_chat_invite_link import RevokeChatInviteLink
|
from .revoke_chat_invite_link import RevokeChatInviteLink
|
||||||
from .save_prepared_inline_message import SavePreparedInlineMessage
|
from .save_prepared_inline_message import SavePreparedInlineMessage
|
||||||
|
from .save_prepared_keyboard_button import SavePreparedKeyboardButton
|
||||||
from .send_animation import SendAnimation
|
from .send_animation import SendAnimation
|
||||||
from .send_audio import SendAudio
|
from .send_audio import SendAudio
|
||||||
from .send_chat_action import SendChatAction
|
from .send_chat_action import SendChatAction
|
||||||
|
|
@ -230,6 +233,7 @@ __all__ = (
|
||||||
"GetFile",
|
"GetFile",
|
||||||
"GetForumTopicIconStickers",
|
"GetForumTopicIconStickers",
|
||||||
"GetGameHighScores",
|
"GetGameHighScores",
|
||||||
|
"GetManagedBotToken",
|
||||||
"GetMe",
|
"GetMe",
|
||||||
"GetMyCommands",
|
"GetMyCommands",
|
||||||
"GetMyDefaultAdministratorRights",
|
"GetMyDefaultAdministratorRights",
|
||||||
|
|
@ -260,6 +264,7 @@ __all__ = (
|
||||||
"RemoveUserVerification",
|
"RemoveUserVerification",
|
||||||
"ReopenForumTopic",
|
"ReopenForumTopic",
|
||||||
"ReopenGeneralForumTopic",
|
"ReopenGeneralForumTopic",
|
||||||
|
"ReplaceManagedBotToken",
|
||||||
"ReplaceStickerInSet",
|
"ReplaceStickerInSet",
|
||||||
"RepostStory",
|
"RepostStory",
|
||||||
"Request",
|
"Request",
|
||||||
|
|
@ -267,6 +272,7 @@ __all__ = (
|
||||||
"RestrictChatMember",
|
"RestrictChatMember",
|
||||||
"RevokeChatInviteLink",
|
"RevokeChatInviteLink",
|
||||||
"SavePreparedInlineMessage",
|
"SavePreparedInlineMessage",
|
||||||
|
"SavePreparedKeyboardButton",
|
||||||
"SendAnimation",
|
"SendAnimation",
|
||||||
"SendAudio",
|
"SendAudio",
|
||||||
"SendChatAction",
|
"SendChatAction",
|
||||||
|
|
|
||||||
28
aiogram/methods/get_managed_bot_token.py
Normal file
28
aiogram/methods/get_managed_bot_token.py
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
|
from .base import TelegramMethod
|
||||||
|
|
||||||
|
|
||||||
|
class GetManagedBotToken(TelegramMethod[str]):
|
||||||
|
"""
|
||||||
|
Use this method to get the token of a managed bot. Returns the token as *String* on success.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#getmanagedbottoken
|
||||||
|
"""
|
||||||
|
|
||||||
|
__returning__ = str
|
||||||
|
__api_method__ = "getManagedBotToken"
|
||||||
|
|
||||||
|
user_id: int
|
||||||
|
"""User identifier of the managed bot whose token will be returned"""
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This section was auto-generated via `butcher`
|
||||||
|
|
||||||
|
def __init__(__pydantic__self__, *, user_id: int, **__pydantic_kwargs: Any) -> None:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This method was auto-generated via `butcher`
|
||||||
|
# Is needed only for type checking and IDE support without any additional plugins
|
||||||
|
|
||||||
|
super().__init__(user_id=user_id, **__pydantic_kwargs)
|
||||||
|
|
@ -25,9 +25,9 @@ class GiftPremiumSubscription(TelegramMethod[bool]):
|
||||||
text: str | None = None
|
text: str | None = None
|
||||||
"""Text that will be shown along with the service message about the subscription; 0-128 characters"""
|
"""Text that will be shown along with the service message about the subscription; 0-128 characters"""
|
||||||
text_parse_mode: str | None = None
|
text_parse_mode: str | None = None
|
||||||
"""Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored."""
|
"""Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored."""
|
||||||
text_entities: list[MessageEntity] | None = None
|
text_entities: list[MessageEntity] | None = None
|
||||||
"""A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored."""
|
"""A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored."""
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
|
||||||
28
aiogram/methods/replace_managed_bot_token.py
Normal file
28
aiogram/methods/replace_managed_bot_token.py
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
|
from .base import TelegramMethod
|
||||||
|
|
||||||
|
|
||||||
|
class ReplaceManagedBotToken(TelegramMethod[str]):
|
||||||
|
"""
|
||||||
|
Use this method to revoke the current token of a managed bot and generate a new one. Returns the new token as *String* on success.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#replacemanagedbottoken
|
||||||
|
"""
|
||||||
|
|
||||||
|
__returning__ = str
|
||||||
|
__api_method__ = "replaceManagedBotToken"
|
||||||
|
|
||||||
|
user_id: int
|
||||||
|
"""User identifier of the managed bot whose token will be replaced"""
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This section was auto-generated via `butcher`
|
||||||
|
|
||||||
|
def __init__(__pydantic__self__, *, user_id: int, **__pydantic_kwargs: Any) -> None:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This method was auto-generated via `butcher`
|
||||||
|
# Is needed only for type checking and IDE support without any additional plugins
|
||||||
|
|
||||||
|
super().__init__(user_id=user_id, **__pydantic_kwargs)
|
||||||
33
aiogram/methods/save_prepared_keyboard_button.py
Normal file
33
aiogram/methods/save_prepared_keyboard_button.py
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
|
from ..types import KeyboardButton, PreparedKeyboardButton
|
||||||
|
from .base import TelegramMethod
|
||||||
|
|
||||||
|
|
||||||
|
class SavePreparedKeyboardButton(TelegramMethod[PreparedKeyboardButton]):
|
||||||
|
"""
|
||||||
|
Stores a keyboard button that can be used by a user within a Mini App. Returns a :class:`aiogram.types.prepared_keyboard_button.PreparedKeyboardButton` object.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#savepreparedkeyboardbutton
|
||||||
|
"""
|
||||||
|
|
||||||
|
__returning__ = PreparedKeyboardButton
|
||||||
|
__api_method__ = "savePreparedKeyboardButton"
|
||||||
|
|
||||||
|
user_id: int
|
||||||
|
"""Unique identifier of the target user that can use the button"""
|
||||||
|
button: KeyboardButton
|
||||||
|
"""A JSON-serialized object describing the button to be saved. The button must be of the type *request_users*, *request_chat*, or *request_managed_bot*"""
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This section was auto-generated via `butcher`
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
__pydantic__self__, *, user_id: int, button: KeyboardButton, **__pydantic_kwargs: Any
|
||||||
|
) -> None:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This method was auto-generated via `butcher`
|
||||||
|
# Is needed only for type checking and IDE support without any additional plugins
|
||||||
|
|
||||||
|
super().__init__(user_id=user_id, button=button, **__pydantic_kwargs)
|
||||||
|
|
@ -28,9 +28,9 @@ class SendGift(TelegramMethod[bool]):
|
||||||
text: str | None = None
|
text: str | None = None
|
||||||
"""Text that will be shown along with the gift; 0-128 characters"""
|
"""Text that will be shown along with the gift; 0-128 characters"""
|
||||||
text_parse_mode: str | None = None
|
text_parse_mode: str | None = None
|
||||||
"""Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored."""
|
"""Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored."""
|
||||||
text_entities: list[MessageEntity] | None = None
|
text_entities: list[MessageEntity] | None = None
|
||||||
"""A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', and 'custom_emoji' are ignored."""
|
"""A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of *text_parse_mode*. Entities other than 'bold', 'italic', 'underline', 'strikethrough', 'spoiler', 'custom_emoji', and 'date_time' are ignored."""
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
|
||||||
|
|
@ -46,9 +46,17 @@ class SendPoll(TelegramMethod[Message]):
|
||||||
type: str | None = None
|
type: str | None = None
|
||||||
"""Poll type, 'quiz' or 'regular', defaults to 'regular'"""
|
"""Poll type, 'quiz' or 'regular', defaults to 'regular'"""
|
||||||
allows_multiple_answers: bool | None = None
|
allows_multiple_answers: bool | None = None
|
||||||
""":code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False`"""
|
"""Pass :code:`True`, if the poll allows multiple answers, defaults to :code:`False`"""
|
||||||
correct_option_id: int | None = None
|
allows_revoting: bool | None = None
|
||||||
"""0-based identifier of the correct answer option, required for polls in quiz mode"""
|
"""Pass :code:`True`, if the poll allows to change chosen answer options, defaults to :code:`False` for quizzes and to :code:`True` for regular polls"""
|
||||||
|
shuffle_options: bool | None = None
|
||||||
|
"""Pass :code:`True`, if the poll options must be shown in random order"""
|
||||||
|
allow_adding_options: bool | None = None
|
||||||
|
"""Pass :code:`True`, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes"""
|
||||||
|
hide_results_until_closes: bool | None = None
|
||||||
|
"""Pass :code:`True`, if poll results must be shown only after the poll closes"""
|
||||||
|
correct_option_ids: list[int] | None = None
|
||||||
|
"""A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode"""
|
||||||
explanation: str | None = None
|
explanation: str | None = None
|
||||||
"""Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing"""
|
"""Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing"""
|
||||||
explanation_parse_mode: str | Default | None = Default("parse_mode")
|
explanation_parse_mode: str | Default | None = Default("parse_mode")
|
||||||
|
|
@ -56,11 +64,17 @@ class SendPoll(TelegramMethod[Message]):
|
||||||
explanation_entities: list[MessageEntity] | None = None
|
explanation_entities: list[MessageEntity] | None = None
|
||||||
"""A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*"""
|
"""A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*"""
|
||||||
open_period: int | None = None
|
open_period: int | None = None
|
||||||
"""Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*."""
|
"""Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with *close_date*."""
|
||||||
close_date: DateTimeUnion | None = None
|
close_date: DateTimeUnion | None = None
|
||||||
"""Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with *open_period*."""
|
"""Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with *open_period*."""
|
||||||
is_closed: bool | None = None
|
is_closed: bool | None = None
|
||||||
"""Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview."""
|
"""Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview."""
|
||||||
|
description: str | None = None
|
||||||
|
"""Description of the poll to be sent, 0-1024 characters after entities parsing"""
|
||||||
|
description_parse_mode: str | Default | None = Default("parse_mode")
|
||||||
|
"""Mode for parsing entities in the poll description. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details."""
|
||||||
|
description_entities: list[MessageEntity] | None = None
|
||||||
|
"""A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of *description_parse_mode*"""
|
||||||
disable_notification: bool | None = None
|
disable_notification: bool | None = None
|
||||||
"""Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound."""
|
"""Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound."""
|
||||||
protect_content: bool | Default | None = Default("protect_content")
|
protect_content: bool | Default | None = Default("protect_content")
|
||||||
|
|
@ -78,6 +92,11 @@ class SendPoll(TelegramMethod[Message]):
|
||||||
|
|
||||||
.. deprecated:: API:7.0
|
.. deprecated:: API:7.0
|
||||||
https://core.telegram.org/bots/api-changelog#december-29-2023"""
|
https://core.telegram.org/bots/api-changelog#december-29-2023"""
|
||||||
|
correct_option_id: int | None = Field(None, json_schema_extra={"deprecated": True})
|
||||||
|
"""0-based identifier of the correct answer option, required for polls in quiz mode
|
||||||
|
|
||||||
|
.. deprecated:: API:9.6
|
||||||
|
https://core.telegram.org/bots/api-changelog#april-3-2026"""
|
||||||
reply_to_message_id: int | None = Field(None, json_schema_extra={"deprecated": True})
|
reply_to_message_id: int | None = Field(None, json_schema_extra={"deprecated": True})
|
||||||
"""If the message is a reply, ID of the original message
|
"""If the message is a reply, ID of the original message
|
||||||
|
|
||||||
|
|
@ -101,13 +120,20 @@ class SendPoll(TelegramMethod[Message]):
|
||||||
is_anonymous: bool | None = None,
|
is_anonymous: bool | None = None,
|
||||||
type: str | None = None,
|
type: str | None = None,
|
||||||
allows_multiple_answers: bool | None = None,
|
allows_multiple_answers: bool | None = None,
|
||||||
correct_option_id: int | None = None,
|
allows_revoting: bool | None = None,
|
||||||
|
shuffle_options: bool | None = None,
|
||||||
|
allow_adding_options: bool | None = None,
|
||||||
|
hide_results_until_closes: bool | None = None,
|
||||||
|
correct_option_ids: list[int] | None = None,
|
||||||
explanation: str | None = None,
|
explanation: str | None = None,
|
||||||
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
explanation_entities: list[MessageEntity] | None = None,
|
explanation_entities: list[MessageEntity] | None = None,
|
||||||
open_period: int | None = None,
|
open_period: int | None = None,
|
||||||
close_date: DateTimeUnion | None = None,
|
close_date: DateTimeUnion | None = None,
|
||||||
is_closed: bool | None = None,
|
is_closed: bool | None = None,
|
||||||
|
description: str | None = None,
|
||||||
|
description_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
|
description_entities: list[MessageEntity] | None = None,
|
||||||
disable_notification: bool | None = None,
|
disable_notification: bool | None = None,
|
||||||
protect_content: bool | Default | None = Default("protect_content"),
|
protect_content: bool | Default | None = Default("protect_content"),
|
||||||
allow_paid_broadcast: bool | None = None,
|
allow_paid_broadcast: bool | None = None,
|
||||||
|
|
@ -115,6 +141,7 @@ class SendPoll(TelegramMethod[Message]):
|
||||||
reply_parameters: ReplyParameters | None = None,
|
reply_parameters: ReplyParameters | None = None,
|
||||||
reply_markup: ReplyMarkupUnion | None = None,
|
reply_markup: ReplyMarkupUnion | None = None,
|
||||||
allow_sending_without_reply: bool | None = None,
|
allow_sending_without_reply: bool | None = None,
|
||||||
|
correct_option_id: int | None = None,
|
||||||
reply_to_message_id: int | None = None,
|
reply_to_message_id: int | None = None,
|
||||||
**__pydantic_kwargs: Any,
|
**__pydantic_kwargs: Any,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
@ -133,13 +160,20 @@ class SendPoll(TelegramMethod[Message]):
|
||||||
is_anonymous=is_anonymous,
|
is_anonymous=is_anonymous,
|
||||||
type=type,
|
type=type,
|
||||||
allows_multiple_answers=allows_multiple_answers,
|
allows_multiple_answers=allows_multiple_answers,
|
||||||
correct_option_id=correct_option_id,
|
allows_revoting=allows_revoting,
|
||||||
|
shuffle_options=shuffle_options,
|
||||||
|
allow_adding_options=allow_adding_options,
|
||||||
|
hide_results_until_closes=hide_results_until_closes,
|
||||||
|
correct_option_ids=correct_option_ids,
|
||||||
explanation=explanation,
|
explanation=explanation,
|
||||||
explanation_parse_mode=explanation_parse_mode,
|
explanation_parse_mode=explanation_parse_mode,
|
||||||
explanation_entities=explanation_entities,
|
explanation_entities=explanation_entities,
|
||||||
open_period=open_period,
|
open_period=open_period,
|
||||||
close_date=close_date,
|
close_date=close_date,
|
||||||
is_closed=is_closed,
|
is_closed=is_closed,
|
||||||
|
description=description,
|
||||||
|
description_parse_mode=description_parse_mode,
|
||||||
|
description_entities=description_entities,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
protect_content=protect_content,
|
protect_content=protect_content,
|
||||||
allow_paid_broadcast=allow_paid_broadcast,
|
allow_paid_broadcast=allow_paid_broadcast,
|
||||||
|
|
@ -147,6 +181,7 @@ class SendPoll(TelegramMethod[Message]):
|
||||||
reply_parameters=reply_parameters,
|
reply_parameters=reply_parameters,
|
||||||
reply_markup=reply_markup,
|
reply_markup=reply_markup,
|
||||||
allow_sending_without_reply=allow_sending_without_reply,
|
allow_sending_without_reply=allow_sending_without_reply,
|
||||||
|
correct_option_id=correct_option_id,
|
||||||
reply_to_message_id=reply_to_message_id,
|
reply_to_message_id=reply_to_message_id,
|
||||||
**__pydantic_kwargs,
|
**__pydantic_kwargs,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -495,6 +495,7 @@ __all__ = (
|
||||||
"KeyboardButton",
|
"KeyboardButton",
|
||||||
"KeyboardButtonPollType",
|
"KeyboardButtonPollType",
|
||||||
"KeyboardButtonRequestChat",
|
"KeyboardButtonRequestChat",
|
||||||
|
"KeyboardButtonRequestManagedBot",
|
||||||
"KeyboardButtonRequestUser",
|
"KeyboardButtonRequestUser",
|
||||||
"KeyboardButtonRequestUsers",
|
"KeyboardButtonRequestUsers",
|
||||||
"LabeledPrice",
|
"LabeledPrice",
|
||||||
|
|
@ -502,6 +503,8 @@ __all__ = (
|
||||||
"Location",
|
"Location",
|
||||||
"LocationAddress",
|
"LocationAddress",
|
||||||
"LoginUrl",
|
"LoginUrl",
|
||||||
|
"ManagedBotCreated",
|
||||||
|
"ManagedBotUpdated",
|
||||||
"MaskPosition",
|
"MaskPosition",
|
||||||
"MaybeInaccessibleMessage",
|
"MaybeInaccessibleMessage",
|
||||||
"MaybeInaccessibleMessageUnion",
|
"MaybeInaccessibleMessageUnion",
|
||||||
|
|
@ -554,8 +557,11 @@ __all__ = (
|
||||||
"Poll",
|
"Poll",
|
||||||
"PollAnswer",
|
"PollAnswer",
|
||||||
"PollOption",
|
"PollOption",
|
||||||
|
"PollOptionAdded",
|
||||||
|
"PollOptionDeleted",
|
||||||
"PreCheckoutQuery",
|
"PreCheckoutQuery",
|
||||||
"PreparedInlineMessage",
|
"PreparedInlineMessage",
|
||||||
|
"PreparedKeyboardButton",
|
||||||
"ProximityAlertTriggered",
|
"ProximityAlertTriggered",
|
||||||
"ReactionCount",
|
"ReactionCount",
|
||||||
"ReactionType",
|
"ReactionType",
|
||||||
|
|
@ -652,6 +658,12 @@ __all__ = (
|
||||||
from ..client.default import Default as _Default
|
from ..client.default import Default as _Default
|
||||||
from .chat_owner_changed import ChatOwnerChanged
|
from .chat_owner_changed import ChatOwnerChanged
|
||||||
from .chat_owner_left import ChatOwnerLeft
|
from .chat_owner_left import ChatOwnerLeft
|
||||||
|
from .keyboard_button_request_managed_bot import KeyboardButtonRequestManagedBot
|
||||||
|
from .managed_bot_created import ManagedBotCreated
|
||||||
|
from .managed_bot_updated import ManagedBotUpdated
|
||||||
|
from .poll_option_added import PollOptionAdded
|
||||||
|
from .poll_option_deleted import PollOptionDeleted
|
||||||
|
from .prepared_keyboard_button import PreparedKeyboardButton
|
||||||
from .user_profile_audios import UserProfileAudios
|
from .user_profile_audios import UserProfileAudios
|
||||||
from .video_quality import VideoQuality
|
from .video_quality import VideoQuality
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1783,13 +1783,20 @@ class ChatJoinRequest(TelegramObject):
|
||||||
is_anonymous: bool | None = None,
|
is_anonymous: bool | None = None,
|
||||||
type: str | None = None,
|
type: str | None = None,
|
||||||
allows_multiple_answers: bool | None = None,
|
allows_multiple_answers: bool | None = None,
|
||||||
correct_option_id: int | None = None,
|
allows_revoting: bool | None = None,
|
||||||
|
shuffle_options: bool | None = None,
|
||||||
|
allow_adding_options: bool | None = None,
|
||||||
|
hide_results_until_closes: bool | None = None,
|
||||||
|
correct_option_ids: list[int] | None = None,
|
||||||
explanation: str | None = None,
|
explanation: str | None = None,
|
||||||
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
explanation_entities: list[MessageEntity] | None = None,
|
explanation_entities: list[MessageEntity] | None = None,
|
||||||
open_period: int | None = None,
|
open_period: int | None = None,
|
||||||
close_date: DateTimeUnion | None = None,
|
close_date: DateTimeUnion | None = None,
|
||||||
is_closed: bool | None = None,
|
is_closed: bool | None = None,
|
||||||
|
description: str | None = None,
|
||||||
|
description_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
|
description_entities: list[MessageEntity] | None = None,
|
||||||
disable_notification: bool | None = None,
|
disable_notification: bool | None = None,
|
||||||
protect_content: bool | Default | None = Default("protect_content"),
|
protect_content: bool | Default | None = Default("protect_content"),
|
||||||
allow_paid_broadcast: bool | None = None,
|
allow_paid_broadcast: bool | None = None,
|
||||||
|
|
@ -1797,6 +1804,7 @@ class ChatJoinRequest(TelegramObject):
|
||||||
reply_parameters: ReplyParameters | None = None,
|
reply_parameters: ReplyParameters | None = None,
|
||||||
reply_markup: ReplyMarkupUnion | None = None,
|
reply_markup: ReplyMarkupUnion | None = None,
|
||||||
allow_sending_without_reply: bool | None = None,
|
allow_sending_without_reply: bool | None = None,
|
||||||
|
correct_option_id: int | None = None,
|
||||||
reply_to_message_id: int | None = None,
|
reply_to_message_id: int | None = None,
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> SendPoll:
|
) -> SendPoll:
|
||||||
|
|
@ -1818,14 +1826,21 @@ class ChatJoinRequest(TelegramObject):
|
||||||
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
||||||
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
||||||
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
||||||
:param allows_multiple_answers: :code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False`
|
:param allows_multiple_answers: Pass :code:`True`, if the poll allows multiple answers, defaults to :code:`False`
|
||||||
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
:param allows_revoting: Pass :code:`True`, if the poll allows to change chosen answer options, defaults to :code:`False` for quizzes and to :code:`True` for regular polls
|
||||||
|
:param shuffle_options: Pass :code:`True`, if the poll options must be shown in random order
|
||||||
|
:param allow_adding_options: Pass :code:`True`, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes
|
||||||
|
:param hide_results_until_closes: Pass :code:`True`, if poll results must be shown only after the poll closes
|
||||||
|
:param correct_option_ids: A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode
|
||||||
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
||||||
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
||||||
:param open_period: Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*.
|
:param open_period: Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with *close_date*.
|
||||||
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with *open_period*.
|
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with *open_period*.
|
||||||
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
||||||
|
:param description: Description of the poll to be sent, 0-1024 characters after entities parsing
|
||||||
|
:param description_parse_mode: Mode for parsing entities in the poll description. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
|
:param description_entities: A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of *description_parse_mode*
|
||||||
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
||||||
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
||||||
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
||||||
|
|
@ -1833,6 +1848,7 @@ class ChatJoinRequest(TelegramObject):
|
||||||
:param reply_parameters: Description of the message to reply to
|
:param reply_parameters: Description of the message to reply to
|
||||||
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
||||||
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
||||||
|
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
||||||
:param reply_to_message_id: If the message is a reply, ID of the original message
|
:param reply_to_message_id: If the message is a reply, ID of the original message
|
||||||
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
||||||
"""
|
"""
|
||||||
|
|
@ -1852,13 +1868,20 @@ class ChatJoinRequest(TelegramObject):
|
||||||
is_anonymous=is_anonymous,
|
is_anonymous=is_anonymous,
|
||||||
type=type,
|
type=type,
|
||||||
allows_multiple_answers=allows_multiple_answers,
|
allows_multiple_answers=allows_multiple_answers,
|
||||||
correct_option_id=correct_option_id,
|
allows_revoting=allows_revoting,
|
||||||
|
shuffle_options=shuffle_options,
|
||||||
|
allow_adding_options=allow_adding_options,
|
||||||
|
hide_results_until_closes=hide_results_until_closes,
|
||||||
|
correct_option_ids=correct_option_ids,
|
||||||
explanation=explanation,
|
explanation=explanation,
|
||||||
explanation_parse_mode=explanation_parse_mode,
|
explanation_parse_mode=explanation_parse_mode,
|
||||||
explanation_entities=explanation_entities,
|
explanation_entities=explanation_entities,
|
||||||
open_period=open_period,
|
open_period=open_period,
|
||||||
close_date=close_date,
|
close_date=close_date,
|
||||||
is_closed=is_closed,
|
is_closed=is_closed,
|
||||||
|
description=description,
|
||||||
|
description_parse_mode=description_parse_mode,
|
||||||
|
description_entities=description_entities,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
protect_content=protect_content,
|
protect_content=protect_content,
|
||||||
allow_paid_broadcast=allow_paid_broadcast,
|
allow_paid_broadcast=allow_paid_broadcast,
|
||||||
|
|
@ -1866,6 +1889,7 @@ class ChatJoinRequest(TelegramObject):
|
||||||
reply_parameters=reply_parameters,
|
reply_parameters=reply_parameters,
|
||||||
reply_markup=reply_markup,
|
reply_markup=reply_markup,
|
||||||
allow_sending_without_reply=allow_sending_without_reply,
|
allow_sending_without_reply=allow_sending_without_reply,
|
||||||
|
correct_option_id=correct_option_id,
|
||||||
reply_to_message_id=reply_to_message_id,
|
reply_to_message_id=reply_to_message_id,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
).as_(self._bot)
|
).as_(self._bot)
|
||||||
|
|
@ -1881,13 +1905,20 @@ class ChatJoinRequest(TelegramObject):
|
||||||
is_anonymous: bool | None = None,
|
is_anonymous: bool | None = None,
|
||||||
type: str | None = None,
|
type: str | None = None,
|
||||||
allows_multiple_answers: bool | None = None,
|
allows_multiple_answers: bool | None = None,
|
||||||
correct_option_id: int | None = None,
|
allows_revoting: bool | None = None,
|
||||||
|
shuffle_options: bool | None = None,
|
||||||
|
allow_adding_options: bool | None = None,
|
||||||
|
hide_results_until_closes: bool | None = None,
|
||||||
|
correct_option_ids: list[int] | None = None,
|
||||||
explanation: str | None = None,
|
explanation: str | None = None,
|
||||||
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
explanation_entities: list[MessageEntity] | None = None,
|
explanation_entities: list[MessageEntity] | None = None,
|
||||||
open_period: int | None = None,
|
open_period: int | None = None,
|
||||||
close_date: DateTimeUnion | None = None,
|
close_date: DateTimeUnion | None = None,
|
||||||
is_closed: bool | None = None,
|
is_closed: bool | None = None,
|
||||||
|
description: str | None = None,
|
||||||
|
description_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
|
description_entities: list[MessageEntity] | None = None,
|
||||||
disable_notification: bool | None = None,
|
disable_notification: bool | None = None,
|
||||||
protect_content: bool | Default | None = Default("protect_content"),
|
protect_content: bool | Default | None = Default("protect_content"),
|
||||||
allow_paid_broadcast: bool | None = None,
|
allow_paid_broadcast: bool | None = None,
|
||||||
|
|
@ -1895,6 +1926,7 @@ class ChatJoinRequest(TelegramObject):
|
||||||
reply_parameters: ReplyParameters | None = None,
|
reply_parameters: ReplyParameters | None = None,
|
||||||
reply_markup: ReplyMarkupUnion | None = None,
|
reply_markup: ReplyMarkupUnion | None = None,
|
||||||
allow_sending_without_reply: bool | None = None,
|
allow_sending_without_reply: bool | None = None,
|
||||||
|
correct_option_id: int | None = None,
|
||||||
reply_to_message_id: int | None = None,
|
reply_to_message_id: int | None = None,
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> SendPoll:
|
) -> SendPoll:
|
||||||
|
|
@ -1916,14 +1948,21 @@ class ChatJoinRequest(TelegramObject):
|
||||||
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
||||||
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
||||||
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
||||||
:param allows_multiple_answers: :code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False`
|
:param allows_multiple_answers: Pass :code:`True`, if the poll allows multiple answers, defaults to :code:`False`
|
||||||
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
:param allows_revoting: Pass :code:`True`, if the poll allows to change chosen answer options, defaults to :code:`False` for quizzes and to :code:`True` for regular polls
|
||||||
|
:param shuffle_options: Pass :code:`True`, if the poll options must be shown in random order
|
||||||
|
:param allow_adding_options: Pass :code:`True`, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes
|
||||||
|
:param hide_results_until_closes: Pass :code:`True`, if poll results must be shown only after the poll closes
|
||||||
|
:param correct_option_ids: A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode
|
||||||
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
||||||
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
||||||
:param open_period: Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*.
|
:param open_period: Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with *close_date*.
|
||||||
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with *open_period*.
|
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with *open_period*.
|
||||||
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
||||||
|
:param description: Description of the poll to be sent, 0-1024 characters after entities parsing
|
||||||
|
:param description_parse_mode: Mode for parsing entities in the poll description. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
|
:param description_entities: A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of *description_parse_mode*
|
||||||
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
||||||
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
||||||
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
||||||
|
|
@ -1931,6 +1970,7 @@ class ChatJoinRequest(TelegramObject):
|
||||||
:param reply_parameters: Description of the message to reply to
|
:param reply_parameters: Description of the message to reply to
|
||||||
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
||||||
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
||||||
|
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
||||||
:param reply_to_message_id: If the message is a reply, ID of the original message
|
:param reply_to_message_id: If the message is a reply, ID of the original message
|
||||||
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
||||||
"""
|
"""
|
||||||
|
|
@ -1950,13 +1990,20 @@ class ChatJoinRequest(TelegramObject):
|
||||||
is_anonymous=is_anonymous,
|
is_anonymous=is_anonymous,
|
||||||
type=type,
|
type=type,
|
||||||
allows_multiple_answers=allows_multiple_answers,
|
allows_multiple_answers=allows_multiple_answers,
|
||||||
correct_option_id=correct_option_id,
|
allows_revoting=allows_revoting,
|
||||||
|
shuffle_options=shuffle_options,
|
||||||
|
allow_adding_options=allow_adding_options,
|
||||||
|
hide_results_until_closes=hide_results_until_closes,
|
||||||
|
correct_option_ids=correct_option_ids,
|
||||||
explanation=explanation,
|
explanation=explanation,
|
||||||
explanation_parse_mode=explanation_parse_mode,
|
explanation_parse_mode=explanation_parse_mode,
|
||||||
explanation_entities=explanation_entities,
|
explanation_entities=explanation_entities,
|
||||||
open_period=open_period,
|
open_period=open_period,
|
||||||
close_date=close_date,
|
close_date=close_date,
|
||||||
is_closed=is_closed,
|
is_closed=is_closed,
|
||||||
|
description=description,
|
||||||
|
description_parse_mode=description_parse_mode,
|
||||||
|
description_entities=description_entities,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
protect_content=protect_content,
|
protect_content=protect_content,
|
||||||
allow_paid_broadcast=allow_paid_broadcast,
|
allow_paid_broadcast=allow_paid_broadcast,
|
||||||
|
|
@ -1964,6 +2011,7 @@ class ChatJoinRequest(TelegramObject):
|
||||||
reply_parameters=reply_parameters,
|
reply_parameters=reply_parameters,
|
||||||
reply_markup=reply_markup,
|
reply_markup=reply_markup,
|
||||||
allow_sending_without_reply=allow_sending_without_reply,
|
allow_sending_without_reply=allow_sending_without_reply,
|
||||||
|
correct_option_id=correct_option_id,
|
||||||
reply_to_message_id=reply_to_message_id,
|
reply_to_message_id=reply_to_message_id,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
).as_(self._bot)
|
).as_(self._bot)
|
||||||
|
|
|
||||||
|
|
@ -924,13 +924,20 @@ class ChatMemberUpdated(TelegramObject):
|
||||||
is_anonymous: bool | None = None,
|
is_anonymous: bool | None = None,
|
||||||
type: str | None = None,
|
type: str | None = None,
|
||||||
allows_multiple_answers: bool | None = None,
|
allows_multiple_answers: bool | None = None,
|
||||||
correct_option_id: int | None = None,
|
allows_revoting: bool | None = None,
|
||||||
|
shuffle_options: bool | None = None,
|
||||||
|
allow_adding_options: bool | None = None,
|
||||||
|
hide_results_until_closes: bool | None = None,
|
||||||
|
correct_option_ids: list[int] | None = None,
|
||||||
explanation: str | None = None,
|
explanation: str | None = None,
|
||||||
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
explanation_entities: list[MessageEntity] | None = None,
|
explanation_entities: list[MessageEntity] | None = None,
|
||||||
open_period: int | None = None,
|
open_period: int | None = None,
|
||||||
close_date: DateTimeUnion | None = None,
|
close_date: DateTimeUnion | None = None,
|
||||||
is_closed: bool | None = None,
|
is_closed: bool | None = None,
|
||||||
|
description: str | None = None,
|
||||||
|
description_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
|
description_entities: list[MessageEntity] | None = None,
|
||||||
disable_notification: bool | None = None,
|
disable_notification: bool | None = None,
|
||||||
protect_content: bool | Default | None = Default("protect_content"),
|
protect_content: bool | Default | None = Default("protect_content"),
|
||||||
allow_paid_broadcast: bool | None = None,
|
allow_paid_broadcast: bool | None = None,
|
||||||
|
|
@ -938,6 +945,7 @@ class ChatMemberUpdated(TelegramObject):
|
||||||
reply_parameters: ReplyParameters | None = None,
|
reply_parameters: ReplyParameters | None = None,
|
||||||
reply_markup: ReplyMarkupUnion | None = None,
|
reply_markup: ReplyMarkupUnion | None = None,
|
||||||
allow_sending_without_reply: bool | None = None,
|
allow_sending_without_reply: bool | None = None,
|
||||||
|
correct_option_id: int | None = None,
|
||||||
reply_to_message_id: int | None = None,
|
reply_to_message_id: int | None = None,
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> SendPoll:
|
) -> SendPoll:
|
||||||
|
|
@ -959,14 +967,21 @@ class ChatMemberUpdated(TelegramObject):
|
||||||
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
||||||
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
||||||
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
||||||
:param allows_multiple_answers: :code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False`
|
:param allows_multiple_answers: Pass :code:`True`, if the poll allows multiple answers, defaults to :code:`False`
|
||||||
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
:param allows_revoting: Pass :code:`True`, if the poll allows to change chosen answer options, defaults to :code:`False` for quizzes and to :code:`True` for regular polls
|
||||||
|
:param shuffle_options: Pass :code:`True`, if the poll options must be shown in random order
|
||||||
|
:param allow_adding_options: Pass :code:`True`, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes
|
||||||
|
:param hide_results_until_closes: Pass :code:`True`, if poll results must be shown only after the poll closes
|
||||||
|
:param correct_option_ids: A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode
|
||||||
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
||||||
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
||||||
:param open_period: Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*.
|
:param open_period: Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with *close_date*.
|
||||||
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with *open_period*.
|
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with *open_period*.
|
||||||
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
||||||
|
:param description: Description of the poll to be sent, 0-1024 characters after entities parsing
|
||||||
|
:param description_parse_mode: Mode for parsing entities in the poll description. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
|
:param description_entities: A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of *description_parse_mode*
|
||||||
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
||||||
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
||||||
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
||||||
|
|
@ -974,6 +989,7 @@ class ChatMemberUpdated(TelegramObject):
|
||||||
:param reply_parameters: Description of the message to reply to
|
:param reply_parameters: Description of the message to reply to
|
||||||
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
||||||
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
||||||
|
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
||||||
:param reply_to_message_id: If the message is a reply, ID of the original message
|
:param reply_to_message_id: If the message is a reply, ID of the original message
|
||||||
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
||||||
"""
|
"""
|
||||||
|
|
@ -993,13 +1009,20 @@ class ChatMemberUpdated(TelegramObject):
|
||||||
is_anonymous=is_anonymous,
|
is_anonymous=is_anonymous,
|
||||||
type=type,
|
type=type,
|
||||||
allows_multiple_answers=allows_multiple_answers,
|
allows_multiple_answers=allows_multiple_answers,
|
||||||
correct_option_id=correct_option_id,
|
allows_revoting=allows_revoting,
|
||||||
|
shuffle_options=shuffle_options,
|
||||||
|
allow_adding_options=allow_adding_options,
|
||||||
|
hide_results_until_closes=hide_results_until_closes,
|
||||||
|
correct_option_ids=correct_option_ids,
|
||||||
explanation=explanation,
|
explanation=explanation,
|
||||||
explanation_parse_mode=explanation_parse_mode,
|
explanation_parse_mode=explanation_parse_mode,
|
||||||
explanation_entities=explanation_entities,
|
explanation_entities=explanation_entities,
|
||||||
open_period=open_period,
|
open_period=open_period,
|
||||||
close_date=close_date,
|
close_date=close_date,
|
||||||
is_closed=is_closed,
|
is_closed=is_closed,
|
||||||
|
description=description,
|
||||||
|
description_parse_mode=description_parse_mode,
|
||||||
|
description_entities=description_entities,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
protect_content=protect_content,
|
protect_content=protect_content,
|
||||||
allow_paid_broadcast=allow_paid_broadcast,
|
allow_paid_broadcast=allow_paid_broadcast,
|
||||||
|
|
@ -1007,6 +1030,7 @@ class ChatMemberUpdated(TelegramObject):
|
||||||
reply_parameters=reply_parameters,
|
reply_parameters=reply_parameters,
|
||||||
reply_markup=reply_markup,
|
reply_markup=reply_markup,
|
||||||
allow_sending_without_reply=allow_sending_without_reply,
|
allow_sending_without_reply=allow_sending_without_reply,
|
||||||
|
correct_option_id=correct_option_id,
|
||||||
reply_to_message_id=reply_to_message_id,
|
reply_to_message_id=reply_to_message_id,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
).as_(self._bot)
|
).as_(self._bot)
|
||||||
|
|
|
||||||
|
|
@ -1746,13 +1746,20 @@ class InaccessibleMessage(MaybeInaccessibleMessage):
|
||||||
is_anonymous: bool | None = None,
|
is_anonymous: bool | None = None,
|
||||||
type: str | None = None,
|
type: str | None = None,
|
||||||
allows_multiple_answers: bool | None = None,
|
allows_multiple_answers: bool | None = None,
|
||||||
correct_option_id: int | None = None,
|
allows_revoting: bool | None = None,
|
||||||
|
shuffle_options: bool | None = None,
|
||||||
|
allow_adding_options: bool | None = None,
|
||||||
|
hide_results_until_closes: bool | None = None,
|
||||||
|
correct_option_ids: list[int] | None = None,
|
||||||
explanation: str | None = None,
|
explanation: str | None = None,
|
||||||
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
explanation_entities: list[MessageEntity] | None = None,
|
explanation_entities: list[MessageEntity] | None = None,
|
||||||
open_period: int | None = None,
|
open_period: int | None = None,
|
||||||
close_date: DateTimeUnion | None = None,
|
close_date: DateTimeUnion | None = None,
|
||||||
is_closed: bool | None = None,
|
is_closed: bool | None = None,
|
||||||
|
description: str | None = None,
|
||||||
|
description_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
|
description_entities: list[MessageEntity] | None = None,
|
||||||
disable_notification: bool | None = None,
|
disable_notification: bool | None = None,
|
||||||
protect_content: bool | Default | None = Default("protect_content"),
|
protect_content: bool | Default | None = Default("protect_content"),
|
||||||
allow_paid_broadcast: bool | None = None,
|
allow_paid_broadcast: bool | None = None,
|
||||||
|
|
@ -1760,6 +1767,7 @@ class InaccessibleMessage(MaybeInaccessibleMessage):
|
||||||
reply_parameters: ReplyParameters | None = None,
|
reply_parameters: ReplyParameters | None = None,
|
||||||
reply_markup: ReplyMarkupUnion | None = None,
|
reply_markup: ReplyMarkupUnion | None = None,
|
||||||
allow_sending_without_reply: bool | None = None,
|
allow_sending_without_reply: bool | None = None,
|
||||||
|
correct_option_id: int | None = None,
|
||||||
reply_to_message_id: int | None = None,
|
reply_to_message_id: int | None = None,
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> SendPoll:
|
) -> SendPoll:
|
||||||
|
|
@ -1781,14 +1789,21 @@ class InaccessibleMessage(MaybeInaccessibleMessage):
|
||||||
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
||||||
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
||||||
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
||||||
:param allows_multiple_answers: :code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False`
|
:param allows_multiple_answers: Pass :code:`True`, if the poll allows multiple answers, defaults to :code:`False`
|
||||||
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
:param allows_revoting: Pass :code:`True`, if the poll allows to change chosen answer options, defaults to :code:`False` for quizzes and to :code:`True` for regular polls
|
||||||
|
:param shuffle_options: Pass :code:`True`, if the poll options must be shown in random order
|
||||||
|
:param allow_adding_options: Pass :code:`True`, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes
|
||||||
|
:param hide_results_until_closes: Pass :code:`True`, if poll results must be shown only after the poll closes
|
||||||
|
:param correct_option_ids: A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode
|
||||||
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
||||||
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
||||||
:param open_period: Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*.
|
:param open_period: Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with *close_date*.
|
||||||
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with *open_period*.
|
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with *open_period*.
|
||||||
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
||||||
|
:param description: Description of the poll to be sent, 0-1024 characters after entities parsing
|
||||||
|
:param description_parse_mode: Mode for parsing entities in the poll description. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
|
:param description_entities: A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of *description_parse_mode*
|
||||||
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
||||||
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
||||||
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
||||||
|
|
@ -1796,6 +1811,7 @@ class InaccessibleMessage(MaybeInaccessibleMessage):
|
||||||
:param reply_parameters: Description of the message to reply to
|
:param reply_parameters: Description of the message to reply to
|
||||||
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
||||||
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
||||||
|
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
||||||
:param reply_to_message_id: If the message is a reply, ID of the original message
|
:param reply_to_message_id: If the message is a reply, ID of the original message
|
||||||
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
||||||
"""
|
"""
|
||||||
|
|
@ -1819,13 +1835,20 @@ class InaccessibleMessage(MaybeInaccessibleMessage):
|
||||||
is_anonymous=is_anonymous,
|
is_anonymous=is_anonymous,
|
||||||
type=type,
|
type=type,
|
||||||
allows_multiple_answers=allows_multiple_answers,
|
allows_multiple_answers=allows_multiple_answers,
|
||||||
correct_option_id=correct_option_id,
|
allows_revoting=allows_revoting,
|
||||||
|
shuffle_options=shuffle_options,
|
||||||
|
allow_adding_options=allow_adding_options,
|
||||||
|
hide_results_until_closes=hide_results_until_closes,
|
||||||
|
correct_option_ids=correct_option_ids,
|
||||||
explanation=explanation,
|
explanation=explanation,
|
||||||
explanation_parse_mode=explanation_parse_mode,
|
explanation_parse_mode=explanation_parse_mode,
|
||||||
explanation_entities=explanation_entities,
|
explanation_entities=explanation_entities,
|
||||||
open_period=open_period,
|
open_period=open_period,
|
||||||
close_date=close_date,
|
close_date=close_date,
|
||||||
is_closed=is_closed,
|
is_closed=is_closed,
|
||||||
|
description=description,
|
||||||
|
description_parse_mode=description_parse_mode,
|
||||||
|
description_entities=description_entities,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
protect_content=protect_content,
|
protect_content=protect_content,
|
||||||
allow_paid_broadcast=allow_paid_broadcast,
|
allow_paid_broadcast=allow_paid_broadcast,
|
||||||
|
|
@ -1833,6 +1856,7 @@ class InaccessibleMessage(MaybeInaccessibleMessage):
|
||||||
reply_parameters=reply_parameters,
|
reply_parameters=reply_parameters,
|
||||||
reply_markup=reply_markup,
|
reply_markup=reply_markup,
|
||||||
allow_sending_without_reply=allow_sending_without_reply,
|
allow_sending_without_reply=allow_sending_without_reply,
|
||||||
|
correct_option_id=correct_option_id,
|
||||||
reply_to_message_id=reply_to_message_id,
|
reply_to_message_id=reply_to_message_id,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
).as_(self._bot)
|
).as_(self._bot)
|
||||||
|
|
@ -1848,19 +1872,27 @@ class InaccessibleMessage(MaybeInaccessibleMessage):
|
||||||
is_anonymous: bool | None = None,
|
is_anonymous: bool | None = None,
|
||||||
type: str | None = None,
|
type: str | None = None,
|
||||||
allows_multiple_answers: bool | None = None,
|
allows_multiple_answers: bool | None = None,
|
||||||
correct_option_id: int | None = None,
|
allows_revoting: bool | None = None,
|
||||||
|
shuffle_options: bool | None = None,
|
||||||
|
allow_adding_options: bool | None = None,
|
||||||
|
hide_results_until_closes: bool | None = None,
|
||||||
|
correct_option_ids: list[int] | None = None,
|
||||||
explanation: str | None = None,
|
explanation: str | None = None,
|
||||||
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
explanation_entities: list[MessageEntity] | None = None,
|
explanation_entities: list[MessageEntity] | None = None,
|
||||||
open_period: int | None = None,
|
open_period: int | None = None,
|
||||||
close_date: DateTimeUnion | None = None,
|
close_date: DateTimeUnion | None = None,
|
||||||
is_closed: bool | None = None,
|
is_closed: bool | None = None,
|
||||||
|
description: str | None = None,
|
||||||
|
description_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
|
description_entities: list[MessageEntity] | None = None,
|
||||||
disable_notification: bool | None = None,
|
disable_notification: bool | None = None,
|
||||||
protect_content: bool | Default | None = Default("protect_content"),
|
protect_content: bool | Default | None = Default("protect_content"),
|
||||||
allow_paid_broadcast: bool | None = None,
|
allow_paid_broadcast: bool | None = None,
|
||||||
message_effect_id: str | None = None,
|
message_effect_id: str | None = None,
|
||||||
reply_markup: ReplyMarkupUnion | None = None,
|
reply_markup: ReplyMarkupUnion | None = None,
|
||||||
allow_sending_without_reply: bool | None = None,
|
allow_sending_without_reply: bool | None = None,
|
||||||
|
correct_option_id: int | None = None,
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> SendPoll:
|
) -> SendPoll:
|
||||||
"""
|
"""
|
||||||
|
|
@ -1882,20 +1914,28 @@ class InaccessibleMessage(MaybeInaccessibleMessage):
|
||||||
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
||||||
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
||||||
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
||||||
:param allows_multiple_answers: :code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False`
|
:param allows_multiple_answers: Pass :code:`True`, if the poll allows multiple answers, defaults to :code:`False`
|
||||||
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
:param allows_revoting: Pass :code:`True`, if the poll allows to change chosen answer options, defaults to :code:`False` for quizzes and to :code:`True` for regular polls
|
||||||
|
:param shuffle_options: Pass :code:`True`, if the poll options must be shown in random order
|
||||||
|
:param allow_adding_options: Pass :code:`True`, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes
|
||||||
|
:param hide_results_until_closes: Pass :code:`True`, if poll results must be shown only after the poll closes
|
||||||
|
:param correct_option_ids: A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode
|
||||||
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
||||||
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
||||||
:param open_period: Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*.
|
:param open_period: Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with *close_date*.
|
||||||
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with *open_period*.
|
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with *open_period*.
|
||||||
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
||||||
|
:param description: Description of the poll to be sent, 0-1024 characters after entities parsing
|
||||||
|
:param description_parse_mode: Mode for parsing entities in the poll description. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
|
:param description_entities: A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of *description_parse_mode*
|
||||||
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
||||||
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
||||||
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
||||||
:param message_effect_id: Unique identifier of the message effect to be added to the message; for private chats only
|
:param message_effect_id: Unique identifier of the message effect to be added to the message; for private chats only
|
||||||
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
||||||
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
||||||
|
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
||||||
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
||||||
"""
|
"""
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
@ -1919,19 +1959,27 @@ class InaccessibleMessage(MaybeInaccessibleMessage):
|
||||||
is_anonymous=is_anonymous,
|
is_anonymous=is_anonymous,
|
||||||
type=type,
|
type=type,
|
||||||
allows_multiple_answers=allows_multiple_answers,
|
allows_multiple_answers=allows_multiple_answers,
|
||||||
correct_option_id=correct_option_id,
|
allows_revoting=allows_revoting,
|
||||||
|
shuffle_options=shuffle_options,
|
||||||
|
allow_adding_options=allow_adding_options,
|
||||||
|
hide_results_until_closes=hide_results_until_closes,
|
||||||
|
correct_option_ids=correct_option_ids,
|
||||||
explanation=explanation,
|
explanation=explanation,
|
||||||
explanation_parse_mode=explanation_parse_mode,
|
explanation_parse_mode=explanation_parse_mode,
|
||||||
explanation_entities=explanation_entities,
|
explanation_entities=explanation_entities,
|
||||||
open_period=open_period,
|
open_period=open_period,
|
||||||
close_date=close_date,
|
close_date=close_date,
|
||||||
is_closed=is_closed,
|
is_closed=is_closed,
|
||||||
|
description=description,
|
||||||
|
description_parse_mode=description_parse_mode,
|
||||||
|
description_entities=description_entities,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
protect_content=protect_content,
|
protect_content=protect_content,
|
||||||
allow_paid_broadcast=allow_paid_broadcast,
|
allow_paid_broadcast=allow_paid_broadcast,
|
||||||
message_effect_id=message_effect_id,
|
message_effect_id=message_effect_id,
|
||||||
reply_markup=reply_markup,
|
reply_markup=reply_markup,
|
||||||
allow_sending_without_reply=allow_sending_without_reply,
|
allow_sending_without_reply=allow_sending_without_reply,
|
||||||
|
correct_option_id=correct_option_id,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
).as_(self._bot)
|
).as_(self._bot)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ class InputChecklist(TelegramObject):
|
||||||
parse_mode: str | None = None
|
parse_mode: str | None = None
|
||||||
"""*Optional*. Mode for parsing entities in the title. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details."""
|
"""*Optional*. Mode for parsing entities in the title. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details."""
|
||||||
title_entities: list[MessageEntity] | None = None
|
title_entities: list[MessageEntity] | None = None
|
||||||
"""*Optional*. List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom_emoji* entities are allowed."""
|
"""*Optional*. List of special entities that appear in the title, which can be specified instead of parse_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, *custom_emoji*, and *date_time* entities are allowed."""
|
||||||
others_can_add_tasks: bool | None = None
|
others_can_add_tasks: bool | None = None
|
||||||
"""*Optional*. Pass :code:`True` if other users can add tasks to the checklist"""
|
"""*Optional*. Pass :code:`True` if other users can add tasks to the checklist"""
|
||||||
others_can_mark_tasks_as_done: bool | None = None
|
others_can_mark_tasks_as_done: bool | None = None
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ class InputChecklistTask(TelegramObject):
|
||||||
parse_mode: str | None = None
|
parse_mode: str | None = None
|
||||||
"""*Optional*. Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details."""
|
"""*Optional*. Mode for parsing entities in the text. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details."""
|
||||||
text_entities: list[MessageEntity] | None = None
|
text_entities: list[MessageEntity] | None = None
|
||||||
"""*Optional*. List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom_emoji* entities are allowed."""
|
"""*Optional*. List of special entities that appear in the text, which can be specified instead of parse_mode. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, *custom_emoji*, and *date_time* entities are allowed."""
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ from .base import MutableTelegramObject
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from .keyboard_button_poll_type import KeyboardButtonPollType
|
from .keyboard_button_poll_type import KeyboardButtonPollType
|
||||||
from .keyboard_button_request_chat import KeyboardButtonRequestChat
|
from .keyboard_button_request_chat import KeyboardButtonRequestChat
|
||||||
|
from .keyboard_button_request_managed_bot import KeyboardButtonRequestManagedBot
|
||||||
from .keyboard_button_request_user import KeyboardButtonRequestUser
|
from .keyboard_button_request_user import KeyboardButtonRequestUser
|
||||||
from .keyboard_button_request_users import KeyboardButtonRequestUsers
|
from .keyboard_button_request_users import KeyboardButtonRequestUsers
|
||||||
from .web_app_info import WebAppInfo
|
from .web_app_info import WebAppInfo
|
||||||
|
|
@ -31,6 +32,8 @@ class KeyboardButton(MutableTelegramObject):
|
||||||
"""*Optional*. If specified, pressing the button will open a list of suitable users. Identifiers of selected users will be sent to the bot in a 'users_shared' service message. Available in private chats only."""
|
"""*Optional*. If specified, pressing the button will open a list of suitable users. Identifiers of selected users will be sent to the bot in a 'users_shared' service message. Available in private chats only."""
|
||||||
request_chat: KeyboardButtonRequestChat | None = None
|
request_chat: KeyboardButtonRequestChat | None = None
|
||||||
"""*Optional*. If specified, pressing the button will open a list of suitable chats. Tapping on a chat will send its identifier to the bot in a 'chat_shared' service message. Available in private chats only."""
|
"""*Optional*. If specified, pressing the button will open a list of suitable chats. Tapping on a chat will send its identifier to the bot in a 'chat_shared' service message. Available in private chats only."""
|
||||||
|
request_managed_bot: KeyboardButtonRequestManagedBot | None = None
|
||||||
|
"""*Optional*. If specified, pressing the button will ask the user to create and share a bot that will be managed by the current bot. Available for bots that enabled management of other bots in the `@BotFather <https://t.me/BotFather>`_ Mini App. Available in private chats only."""
|
||||||
request_contact: bool | None = None
|
request_contact: bool | None = None
|
||||||
"""*Optional*. If :code:`True`, the user's phone number will be sent as a contact when the button is pressed. Available in private chats only."""
|
"""*Optional*. If :code:`True`, the user's phone number will be sent as a contact when the button is pressed. Available in private chats only."""
|
||||||
request_location: bool | None = None
|
request_location: bool | None = None
|
||||||
|
|
@ -59,6 +62,7 @@ class KeyboardButton(MutableTelegramObject):
|
||||||
style: str | None = None,
|
style: str | None = None,
|
||||||
request_users: KeyboardButtonRequestUsers | None = None,
|
request_users: KeyboardButtonRequestUsers | None = None,
|
||||||
request_chat: KeyboardButtonRequestChat | None = None,
|
request_chat: KeyboardButtonRequestChat | None = None,
|
||||||
|
request_managed_bot: KeyboardButtonRequestManagedBot | None = None,
|
||||||
request_contact: bool | None = None,
|
request_contact: bool | None = None,
|
||||||
request_location: bool | None = None,
|
request_location: bool | None = None,
|
||||||
request_poll: KeyboardButtonPollType | None = None,
|
request_poll: KeyboardButtonPollType | None = None,
|
||||||
|
|
@ -76,6 +80,7 @@ class KeyboardButton(MutableTelegramObject):
|
||||||
style=style,
|
style=style,
|
||||||
request_users=request_users,
|
request_users=request_users,
|
||||||
request_chat=request_chat,
|
request_chat=request_chat,
|
||||||
|
request_managed_bot=request_managed_bot,
|
||||||
request_contact=request_contact,
|
request_contact=request_contact,
|
||||||
request_location=request_location,
|
request_location=request_location,
|
||||||
request_poll=request_poll,
|
request_poll=request_poll,
|
||||||
|
|
|
||||||
41
aiogram/types/keyboard_button_request_managed_bot.py
Normal file
41
aiogram/types/keyboard_button_request_managed_bot.py
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
|
from .base import TelegramObject
|
||||||
|
|
||||||
|
|
||||||
|
class KeyboardButtonRequestManagedBot(TelegramObject):
|
||||||
|
"""
|
||||||
|
This object defines the parameters for the creation of a managed bot. Information about the created bot will be shared with the bot using the update *managed_bot* and a :class:`aiogram.types.message.Message` with the field *managed_bot_created*.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#keyboardbuttonrequestmanagedbot
|
||||||
|
"""
|
||||||
|
|
||||||
|
request_id: int
|
||||||
|
"""Signed 32-bit identifier of the request. Must be unique within the message"""
|
||||||
|
suggested_name: str | None = None
|
||||||
|
"""*Optional*. Suggested name for the bot"""
|
||||||
|
suggested_username: str | None = None
|
||||||
|
"""*Optional*. Suggested username for the bot"""
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This section was auto-generated via `butcher`
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
__pydantic__self__,
|
||||||
|
*,
|
||||||
|
request_id: int,
|
||||||
|
suggested_name: str | None = None,
|
||||||
|
suggested_username: str | None = None,
|
||||||
|
**__pydantic_kwargs: Any,
|
||||||
|
) -> None:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This method was auto-generated via `butcher`
|
||||||
|
# Is needed only for type checking and IDE support without any additional plugins
|
||||||
|
|
||||||
|
super().__init__(
|
||||||
|
request_id=request_id,
|
||||||
|
suggested_name=suggested_name,
|
||||||
|
suggested_username=suggested_username,
|
||||||
|
**__pydantic_kwargs,
|
||||||
|
)
|
||||||
32
aiogram/types/managed_bot_created.py
Normal file
32
aiogram/types/managed_bot_created.py
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
|
from pydantic import Field
|
||||||
|
|
||||||
|
from .base import TelegramObject
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from .user import User
|
||||||
|
|
||||||
|
|
||||||
|
class ManagedBotCreated(TelegramObject):
|
||||||
|
"""
|
||||||
|
This object contains information about the bot that was created to be managed by the current bot.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#managedbotcreated
|
||||||
|
"""
|
||||||
|
|
||||||
|
bot_user: User = Field(..., alias="bot")
|
||||||
|
"""Information about the bot. The bot's token can be fetched using the method :class:`aiogram.methods.get_managed_bot_token.GetManagedBotToken`."""
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This section was auto-generated via `butcher`
|
||||||
|
|
||||||
|
def __init__(__pydantic__self__, *, bot_user: User, **__pydantic_kwargs: Any) -> None:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This method was auto-generated via `butcher`
|
||||||
|
# Is needed only for type checking and IDE support without any additional plugins
|
||||||
|
|
||||||
|
super().__init__(bot_user=bot_user, **__pydantic_kwargs)
|
||||||
36
aiogram/types/managed_bot_updated.py
Normal file
36
aiogram/types/managed_bot_updated.py
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
|
from pydantic import Field
|
||||||
|
|
||||||
|
from .base import TelegramObject
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from .user import User
|
||||||
|
|
||||||
|
|
||||||
|
class ManagedBotUpdated(TelegramObject):
|
||||||
|
"""
|
||||||
|
This object contains information about the creation or token update of a bot that is managed by the current bot.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#managedbotupdated
|
||||||
|
"""
|
||||||
|
|
||||||
|
user: User
|
||||||
|
"""User that created the bot"""
|
||||||
|
bot_user: User = Field(..., alias="bot")
|
||||||
|
"""Information about the bot. Token of the bot can be fetched using the method :class:`aiogram.methods.get_managed_bot_token.GetManagedBotToken`."""
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This section was auto-generated via `butcher`
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
__pydantic__self__, *, user: User, bot_user: User, **__pydantic_kwargs: Any
|
||||||
|
) -> None:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This method was auto-generated via `butcher`
|
||||||
|
# Is needed only for type checking and IDE support without any additional plugins
|
||||||
|
|
||||||
|
super().__init__(user=user, bot_user=bot_user, **__pydantic_kwargs)
|
||||||
|
|
@ -90,6 +90,7 @@ if TYPE_CHECKING:
|
||||||
from .labeled_price import LabeledPrice
|
from .labeled_price import LabeledPrice
|
||||||
from .link_preview_options import LinkPreviewOptions
|
from .link_preview_options import LinkPreviewOptions
|
||||||
from .location import Location
|
from .location import Location
|
||||||
|
from .managed_bot_created import ManagedBotCreated
|
||||||
from .maybe_inaccessible_message_union import MaybeInaccessibleMessageUnion
|
from .maybe_inaccessible_message_union import MaybeInaccessibleMessageUnion
|
||||||
from .media_union import MediaUnion
|
from .media_union import MediaUnion
|
||||||
from .message_auto_delete_timer_changed import MessageAutoDeleteTimerChanged
|
from .message_auto_delete_timer_changed import MessageAutoDeleteTimerChanged
|
||||||
|
|
@ -100,6 +101,8 @@ if TYPE_CHECKING:
|
||||||
from .passport_data import PassportData
|
from .passport_data import PassportData
|
||||||
from .photo_size import PhotoSize
|
from .photo_size import PhotoSize
|
||||||
from .poll import Poll
|
from .poll import Poll
|
||||||
|
from .poll_option_added import PollOptionAdded
|
||||||
|
from .poll_option_deleted import PollOptionDeleted
|
||||||
from .proximity_alert_triggered import ProximityAlertTriggered
|
from .proximity_alert_triggered import ProximityAlertTriggered
|
||||||
from .reaction_type_union import ReactionTypeUnion
|
from .reaction_type_union import ReactionTypeUnion
|
||||||
from .refunded_payment import RefundedPayment
|
from .refunded_payment import RefundedPayment
|
||||||
|
|
@ -177,6 +180,8 @@ class Message(MaybeInaccessibleMessage):
|
||||||
"""*Optional*. For replies to a story, the original story"""
|
"""*Optional*. For replies to a story, the original story"""
|
||||||
reply_to_checklist_task_id: int | None = None
|
reply_to_checklist_task_id: int | None = None
|
||||||
"""*Optional*. Identifier of the specific checklist task that is being replied to"""
|
"""*Optional*. Identifier of the specific checklist task that is being replied to"""
|
||||||
|
reply_to_poll_option_id: str | None = None
|
||||||
|
"""*Optional*. Persistent identifier of the specific poll option that is being replied to"""
|
||||||
via_bot: User | None = None
|
via_bot: User | None = None
|
||||||
"""*Optional*. Bot through which the message was sent"""
|
"""*Optional*. Bot through which the message was sent"""
|
||||||
edit_date: int | None = None
|
edit_date: int | None = None
|
||||||
|
|
@ -327,8 +332,14 @@ class Message(MaybeInaccessibleMessage):
|
||||||
"""*Optional*. A giveaway with public winners was completed"""
|
"""*Optional*. A giveaway with public winners was completed"""
|
||||||
giveaway_completed: GiveawayCompleted | None = None
|
giveaway_completed: GiveawayCompleted | None = None
|
||||||
"""*Optional*. Service message: a giveaway without public winners was completed"""
|
"""*Optional*. Service message: a giveaway without public winners was completed"""
|
||||||
|
managed_bot_created: ManagedBotCreated | None = None
|
||||||
|
"""*Optional*. Service message: user created a bot that will be managed by the current bot"""
|
||||||
paid_message_price_changed: PaidMessagePriceChanged | None = None
|
paid_message_price_changed: PaidMessagePriceChanged | None = None
|
||||||
"""*Optional*. Service message: the price for paid messages has changed in the chat"""
|
"""*Optional*. Service message: the price for paid messages has changed in the chat"""
|
||||||
|
poll_option_added: PollOptionAdded | None = None
|
||||||
|
"""*Optional*. Service message: answer option was added to a poll"""
|
||||||
|
poll_option_deleted: PollOptionDeleted | None = None
|
||||||
|
"""*Optional*. Service message: answer option was deleted from a poll"""
|
||||||
suggested_post_approved: SuggestedPostApproved | None = None
|
suggested_post_approved: SuggestedPostApproved | None = None
|
||||||
"""*Optional*. Service message: a suggested post was approved"""
|
"""*Optional*. Service message: a suggested post was approved"""
|
||||||
suggested_post_approval_failed: SuggestedPostApprovalFailed | None = None
|
suggested_post_approval_failed: SuggestedPostApprovalFailed | None = None
|
||||||
|
|
@ -413,6 +424,7 @@ class Message(MaybeInaccessibleMessage):
|
||||||
quote: TextQuote | None = None,
|
quote: TextQuote | None = None,
|
||||||
reply_to_story: Story | None = None,
|
reply_to_story: Story | None = None,
|
||||||
reply_to_checklist_task_id: int | None = None,
|
reply_to_checklist_task_id: int | None = None,
|
||||||
|
reply_to_poll_option_id: str | None = None,
|
||||||
via_bot: User | None = None,
|
via_bot: User | None = None,
|
||||||
edit_date: int | None = None,
|
edit_date: int | None = None,
|
||||||
has_protected_content: bool | None = None,
|
has_protected_content: bool | None = None,
|
||||||
|
|
@ -488,7 +500,10 @@ class Message(MaybeInaccessibleMessage):
|
||||||
giveaway: Giveaway | None = None,
|
giveaway: Giveaway | None = None,
|
||||||
giveaway_winners: GiveawayWinners | None = None,
|
giveaway_winners: GiveawayWinners | None = None,
|
||||||
giveaway_completed: GiveawayCompleted | None = None,
|
giveaway_completed: GiveawayCompleted | None = None,
|
||||||
|
managed_bot_created: ManagedBotCreated | None = None,
|
||||||
paid_message_price_changed: PaidMessagePriceChanged | None = None,
|
paid_message_price_changed: PaidMessagePriceChanged | None = None,
|
||||||
|
poll_option_added: PollOptionAdded | None = None,
|
||||||
|
poll_option_deleted: PollOptionDeleted | None = None,
|
||||||
suggested_post_approved: SuggestedPostApproved | None = None,
|
suggested_post_approved: SuggestedPostApproved | None = None,
|
||||||
suggested_post_approval_failed: SuggestedPostApprovalFailed | None = None,
|
suggested_post_approval_failed: SuggestedPostApprovalFailed | None = None,
|
||||||
suggested_post_declined: SuggestedPostDeclined | None = None,
|
suggested_post_declined: SuggestedPostDeclined | None = None,
|
||||||
|
|
@ -533,6 +548,7 @@ class Message(MaybeInaccessibleMessage):
|
||||||
quote=quote,
|
quote=quote,
|
||||||
reply_to_story=reply_to_story,
|
reply_to_story=reply_to_story,
|
||||||
reply_to_checklist_task_id=reply_to_checklist_task_id,
|
reply_to_checklist_task_id=reply_to_checklist_task_id,
|
||||||
|
reply_to_poll_option_id=reply_to_poll_option_id,
|
||||||
via_bot=via_bot,
|
via_bot=via_bot,
|
||||||
edit_date=edit_date,
|
edit_date=edit_date,
|
||||||
has_protected_content=has_protected_content,
|
has_protected_content=has_protected_content,
|
||||||
|
|
@ -608,7 +624,10 @@ class Message(MaybeInaccessibleMessage):
|
||||||
giveaway=giveaway,
|
giveaway=giveaway,
|
||||||
giveaway_winners=giveaway_winners,
|
giveaway_winners=giveaway_winners,
|
||||||
giveaway_completed=giveaway_completed,
|
giveaway_completed=giveaway_completed,
|
||||||
|
managed_bot_created=managed_bot_created,
|
||||||
paid_message_price_changed=paid_message_price_changed,
|
paid_message_price_changed=paid_message_price_changed,
|
||||||
|
poll_option_added=poll_option_added,
|
||||||
|
poll_option_deleted=poll_option_deleted,
|
||||||
suggested_post_approved=suggested_post_approved,
|
suggested_post_approved=suggested_post_approved,
|
||||||
suggested_post_approval_failed=suggested_post_approval_failed,
|
suggested_post_approval_failed=suggested_post_approval_failed,
|
||||||
suggested_post_declined=suggested_post_declined,
|
suggested_post_declined=suggested_post_declined,
|
||||||
|
|
@ -774,6 +793,12 @@ class Message(MaybeInaccessibleMessage):
|
||||||
return ContentType.SUGGESTED_POST_PAID
|
return ContentType.SUGGESTED_POST_PAID
|
||||||
if self.suggested_post_refunded:
|
if self.suggested_post_refunded:
|
||||||
return ContentType.SUGGESTED_POST_REFUNDED
|
return ContentType.SUGGESTED_POST_REFUNDED
|
||||||
|
if self.managed_bot_created:
|
||||||
|
return ContentType.MANAGED_BOT_CREATED
|
||||||
|
if self.poll_option_added:
|
||||||
|
return ContentType.POLL_OPTION_ADDED
|
||||||
|
if self.poll_option_deleted:
|
||||||
|
return ContentType.POLL_OPTION_DELETED
|
||||||
return ContentType.UNKNOWN
|
return ContentType.UNKNOWN
|
||||||
|
|
||||||
def _unparse_entities(self, text_decoration: TextDecoration) -> str:
|
def _unparse_entities(self, text_decoration: TextDecoration) -> str:
|
||||||
|
|
@ -2444,19 +2469,27 @@ class Message(MaybeInaccessibleMessage):
|
||||||
is_anonymous: bool | None = None,
|
is_anonymous: bool | None = None,
|
||||||
type: str | None = None,
|
type: str | None = None,
|
||||||
allows_multiple_answers: bool | None = None,
|
allows_multiple_answers: bool | None = None,
|
||||||
correct_option_id: int | None = None,
|
allows_revoting: bool | None = None,
|
||||||
|
shuffle_options: bool | None = None,
|
||||||
|
allow_adding_options: bool | None = None,
|
||||||
|
hide_results_until_closes: bool | None = None,
|
||||||
|
correct_option_ids: list[int] | None = None,
|
||||||
explanation: str | None = None,
|
explanation: str | None = None,
|
||||||
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
explanation_entities: list[MessageEntity] | None = None,
|
explanation_entities: list[MessageEntity] | None = None,
|
||||||
open_period: int | None = None,
|
open_period: int | None = None,
|
||||||
close_date: DateTimeUnion | None = None,
|
close_date: DateTimeUnion | None = None,
|
||||||
is_closed: bool | None = None,
|
is_closed: bool | None = None,
|
||||||
|
description: str | None = None,
|
||||||
|
description_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
|
description_entities: list[MessageEntity] | None = None,
|
||||||
disable_notification: bool | None = None,
|
disable_notification: bool | None = None,
|
||||||
protect_content: bool | Default | None = Default("protect_content"),
|
protect_content: bool | Default | None = Default("protect_content"),
|
||||||
allow_paid_broadcast: bool | None = None,
|
allow_paid_broadcast: bool | None = None,
|
||||||
message_effect_id: str | None = None,
|
message_effect_id: str | None = None,
|
||||||
reply_markup: ReplyMarkupUnion | None = None,
|
reply_markup: ReplyMarkupUnion | None = None,
|
||||||
allow_sending_without_reply: bool | None = None,
|
allow_sending_without_reply: bool | None = None,
|
||||||
|
correct_option_id: int | None = None,
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> SendPoll:
|
) -> SendPoll:
|
||||||
"""
|
"""
|
||||||
|
|
@ -2478,20 +2511,28 @@ class Message(MaybeInaccessibleMessage):
|
||||||
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
||||||
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
||||||
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
||||||
:param allows_multiple_answers: :code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False`
|
:param allows_multiple_answers: Pass :code:`True`, if the poll allows multiple answers, defaults to :code:`False`
|
||||||
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
:param allows_revoting: Pass :code:`True`, if the poll allows to change chosen answer options, defaults to :code:`False` for quizzes and to :code:`True` for regular polls
|
||||||
|
:param shuffle_options: Pass :code:`True`, if the poll options must be shown in random order
|
||||||
|
:param allow_adding_options: Pass :code:`True`, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes
|
||||||
|
:param hide_results_until_closes: Pass :code:`True`, if poll results must be shown only after the poll closes
|
||||||
|
:param correct_option_ids: A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode
|
||||||
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
||||||
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
||||||
:param open_period: Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*.
|
:param open_period: Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with *close_date*.
|
||||||
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with *open_period*.
|
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with *open_period*.
|
||||||
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
||||||
|
:param description: Description of the poll to be sent, 0-1024 characters after entities parsing
|
||||||
|
:param description_parse_mode: Mode for parsing entities in the poll description. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
|
:param description_entities: A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of *description_parse_mode*
|
||||||
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
||||||
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
||||||
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
||||||
:param message_effect_id: Unique identifier of the message effect to be added to the message; for private chats only
|
:param message_effect_id: Unique identifier of the message effect to be added to the message; for private chats only
|
||||||
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
||||||
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
||||||
|
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
||||||
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
||||||
"""
|
"""
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
@ -2515,19 +2556,27 @@ class Message(MaybeInaccessibleMessage):
|
||||||
is_anonymous=is_anonymous,
|
is_anonymous=is_anonymous,
|
||||||
type=type,
|
type=type,
|
||||||
allows_multiple_answers=allows_multiple_answers,
|
allows_multiple_answers=allows_multiple_answers,
|
||||||
correct_option_id=correct_option_id,
|
allows_revoting=allows_revoting,
|
||||||
|
shuffle_options=shuffle_options,
|
||||||
|
allow_adding_options=allow_adding_options,
|
||||||
|
hide_results_until_closes=hide_results_until_closes,
|
||||||
|
correct_option_ids=correct_option_ids,
|
||||||
explanation=explanation,
|
explanation=explanation,
|
||||||
explanation_parse_mode=explanation_parse_mode,
|
explanation_parse_mode=explanation_parse_mode,
|
||||||
explanation_entities=explanation_entities,
|
explanation_entities=explanation_entities,
|
||||||
open_period=open_period,
|
open_period=open_period,
|
||||||
close_date=close_date,
|
close_date=close_date,
|
||||||
is_closed=is_closed,
|
is_closed=is_closed,
|
||||||
|
description=description,
|
||||||
|
description_parse_mode=description_parse_mode,
|
||||||
|
description_entities=description_entities,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
protect_content=protect_content,
|
protect_content=protect_content,
|
||||||
allow_paid_broadcast=allow_paid_broadcast,
|
allow_paid_broadcast=allow_paid_broadcast,
|
||||||
message_effect_id=message_effect_id,
|
message_effect_id=message_effect_id,
|
||||||
reply_markup=reply_markup,
|
reply_markup=reply_markup,
|
||||||
allow_sending_without_reply=allow_sending_without_reply,
|
allow_sending_without_reply=allow_sending_without_reply,
|
||||||
|
correct_option_id=correct_option_id,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
).as_(self._bot)
|
).as_(self._bot)
|
||||||
|
|
||||||
|
|
@ -2540,13 +2589,20 @@ class Message(MaybeInaccessibleMessage):
|
||||||
is_anonymous: bool | None = None,
|
is_anonymous: bool | None = None,
|
||||||
type: str | None = None,
|
type: str | None = None,
|
||||||
allows_multiple_answers: bool | None = None,
|
allows_multiple_answers: bool | None = None,
|
||||||
correct_option_id: int | None = None,
|
allows_revoting: bool | None = None,
|
||||||
|
shuffle_options: bool | None = None,
|
||||||
|
allow_adding_options: bool | None = None,
|
||||||
|
hide_results_until_closes: bool | None = None,
|
||||||
|
correct_option_ids: list[int] | None = None,
|
||||||
explanation: str | None = None,
|
explanation: str | None = None,
|
||||||
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
explanation_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
explanation_entities: list[MessageEntity] | None = None,
|
explanation_entities: list[MessageEntity] | None = None,
|
||||||
open_period: int | None = None,
|
open_period: int | None = None,
|
||||||
close_date: DateTimeUnion | None = None,
|
close_date: DateTimeUnion | None = None,
|
||||||
is_closed: bool | None = None,
|
is_closed: bool | None = None,
|
||||||
|
description: str | None = None,
|
||||||
|
description_parse_mode: str | Default | None = Default("parse_mode"),
|
||||||
|
description_entities: list[MessageEntity] | None = None,
|
||||||
disable_notification: bool | None = None,
|
disable_notification: bool | None = None,
|
||||||
protect_content: bool | Default | None = Default("protect_content"),
|
protect_content: bool | Default | None = Default("protect_content"),
|
||||||
allow_paid_broadcast: bool | None = None,
|
allow_paid_broadcast: bool | None = None,
|
||||||
|
|
@ -2554,6 +2610,7 @@ class Message(MaybeInaccessibleMessage):
|
||||||
reply_parameters: ReplyParameters | None = None,
|
reply_parameters: ReplyParameters | None = None,
|
||||||
reply_markup: ReplyMarkupUnion | None = None,
|
reply_markup: ReplyMarkupUnion | None = None,
|
||||||
allow_sending_without_reply: bool | None = None,
|
allow_sending_without_reply: bool | None = None,
|
||||||
|
correct_option_id: int | None = None,
|
||||||
reply_to_message_id: int | None = None,
|
reply_to_message_id: int | None = None,
|
||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> SendPoll:
|
) -> SendPoll:
|
||||||
|
|
@ -2575,14 +2632,21 @@ class Message(MaybeInaccessibleMessage):
|
||||||
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of *question_parse_mode*
|
||||||
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
:param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True`
|
||||||
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
:param type: Poll type, 'quiz' or 'regular', defaults to 'regular'
|
||||||
:param allows_multiple_answers: :code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False`
|
:param allows_multiple_answers: Pass :code:`True`, if the poll allows multiple answers, defaults to :code:`False`
|
||||||
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
:param allows_revoting: Pass :code:`True`, if the poll allows to change chosen answer options, defaults to :code:`False` for quizzes and to :code:`True` for regular polls
|
||||||
|
:param shuffle_options: Pass :code:`True`, if the poll options must be shown in random order
|
||||||
|
:param allow_adding_options: Pass :code:`True`, if answer options can be added to the poll after creation; not supported for anonymous polls and quizzes
|
||||||
|
:param hide_results_until_closes: Pass :code:`True`, if poll results must be shown only after the poll closes
|
||||||
|
:param correct_option_ids: A JSON-serialized list of monotonically increasing 0-based identifiers of the correct answer options, required for polls in quiz mode
|
||||||
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
|
||||||
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
:param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
:param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation. It can be specified instead of *explanation_parse_mode*
|
||||||
:param open_period: Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*.
|
:param open_period: Amount of time in seconds the poll will be active after creation, 5-2628000. Can't be used together with *close_date*.
|
||||||
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future. Can't be used together with *open_period*.
|
:param close_date: Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 2628000 seconds in the future. Can't be used together with *open_period*.
|
||||||
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
:param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview.
|
||||||
|
:param description: Description of the poll to be sent, 0-1024 characters after entities parsing
|
||||||
|
:param description_parse_mode: Mode for parsing entities in the poll description. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.
|
||||||
|
:param description_entities: A JSON-serialized list of special entities that appear in the poll description, which can be specified instead of *description_parse_mode*
|
||||||
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
:param disable_notification: Sends the message `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.
|
||||||
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
:param protect_content: Protects the contents of the sent message from forwarding and saving
|
||||||
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
:param allow_paid_broadcast: Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance
|
||||||
|
|
@ -2590,6 +2654,7 @@ class Message(MaybeInaccessibleMessage):
|
||||||
:param reply_parameters: Description of the message to reply to
|
:param reply_parameters: Description of the message to reply to
|
||||||
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
:param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user
|
||||||
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
:param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found
|
||||||
|
:param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode
|
||||||
:param reply_to_message_id: If the message is a reply, ID of the original message
|
:param reply_to_message_id: If the message is a reply, ID of the original message
|
||||||
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
:return: instance of method :class:`aiogram.methods.send_poll.SendPoll`
|
||||||
"""
|
"""
|
||||||
|
|
@ -2613,13 +2678,20 @@ class Message(MaybeInaccessibleMessage):
|
||||||
is_anonymous=is_anonymous,
|
is_anonymous=is_anonymous,
|
||||||
type=type,
|
type=type,
|
||||||
allows_multiple_answers=allows_multiple_answers,
|
allows_multiple_answers=allows_multiple_answers,
|
||||||
correct_option_id=correct_option_id,
|
allows_revoting=allows_revoting,
|
||||||
|
shuffle_options=shuffle_options,
|
||||||
|
allow_adding_options=allow_adding_options,
|
||||||
|
hide_results_until_closes=hide_results_until_closes,
|
||||||
|
correct_option_ids=correct_option_ids,
|
||||||
explanation=explanation,
|
explanation=explanation,
|
||||||
explanation_parse_mode=explanation_parse_mode,
|
explanation_parse_mode=explanation_parse_mode,
|
||||||
explanation_entities=explanation_entities,
|
explanation_entities=explanation_entities,
|
||||||
open_period=open_period,
|
open_period=open_period,
|
||||||
close_date=close_date,
|
close_date=close_date,
|
||||||
is_closed=is_closed,
|
is_closed=is_closed,
|
||||||
|
description=description,
|
||||||
|
description_parse_mode=description_parse_mode,
|
||||||
|
description_entities=description_entities,
|
||||||
disable_notification=disable_notification,
|
disable_notification=disable_notification,
|
||||||
protect_content=protect_content,
|
protect_content=protect_content,
|
||||||
allow_paid_broadcast=allow_paid_broadcast,
|
allow_paid_broadcast=allow_paid_broadcast,
|
||||||
|
|
@ -2627,6 +2699,7 @@ class Message(MaybeInaccessibleMessage):
|
||||||
reply_parameters=reply_parameters,
|
reply_parameters=reply_parameters,
|
||||||
reply_markup=reply_markup,
|
reply_markup=reply_markup,
|
||||||
allow_sending_without_reply=allow_sending_without_reply,
|
allow_sending_without_reply=allow_sending_without_reply,
|
||||||
|
correct_option_id=correct_option_id,
|
||||||
reply_to_message_id=reply_to_message_id,
|
reply_to_message_id=reply_to_message_id,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
).as_(self._bot)
|
).as_(self._bot)
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@ from __future__ import annotations
|
||||||
|
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
|
from pydantic import Field
|
||||||
|
|
||||||
from .base import TelegramObject
|
from .base import TelegramObject
|
||||||
from .custom import DateTime
|
from .custom import DateTime
|
||||||
|
|
||||||
|
|
@ -33,10 +35,12 @@ class Poll(TelegramObject):
|
||||||
"""Poll type, currently can be 'regular' or 'quiz'"""
|
"""Poll type, currently can be 'regular' or 'quiz'"""
|
||||||
allows_multiple_answers: bool
|
allows_multiple_answers: bool
|
||||||
""":code:`True`, if the poll allows multiple answers"""
|
""":code:`True`, if the poll allows multiple answers"""
|
||||||
|
allows_revoting: bool
|
||||||
|
""":code:`True`, if the poll allows to change the chosen answer options"""
|
||||||
question_entities: list[MessageEntity] | None = None
|
question_entities: list[MessageEntity] | None = None
|
||||||
"""*Optional*. Special entities that appear in the *question*. Currently, only custom emoji entities are allowed in poll questions"""
|
"""*Optional*. Special entities that appear in the *question*. Currently, only custom emoji entities are allowed in poll questions"""
|
||||||
correct_option_id: int | None = None
|
correct_option_ids: list[int] | None = None
|
||||||
"""*Optional*. 0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot."""
|
"""*Optional*. Array of 0-based identifiers of the correct answer options. Available only for polls in quiz mode which are closed or were sent (not forwarded) by the bot or to the private chat with the bot."""
|
||||||
explanation: str | None = None
|
explanation: str | None = None
|
||||||
"""*Optional*. Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters"""
|
"""*Optional*. Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters"""
|
||||||
explanation_entities: list[MessageEntity] | None = None
|
explanation_entities: list[MessageEntity] | None = None
|
||||||
|
|
@ -45,6 +49,15 @@ class Poll(TelegramObject):
|
||||||
"""*Optional*. Amount of time in seconds the poll will be active after creation"""
|
"""*Optional*. Amount of time in seconds the poll will be active after creation"""
|
||||||
close_date: DateTime | None = None
|
close_date: DateTime | None = None
|
||||||
"""*Optional*. Point in time (Unix timestamp) when the poll will be automatically closed"""
|
"""*Optional*. Point in time (Unix timestamp) when the poll will be automatically closed"""
|
||||||
|
description: str | None = None
|
||||||
|
"""*Optional*. Description of the poll; for polls inside the :class:`aiogram.types.message.Message` object only"""
|
||||||
|
description_entities: list[MessageEntity] | None = None
|
||||||
|
"""*Optional*. Special entities like usernames, URLs, bot commands, etc. that appear in the description"""
|
||||||
|
correct_option_id: int | None = Field(None, json_schema_extra={"deprecated": True})
|
||||||
|
"""*Optional*. 0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.
|
||||||
|
|
||||||
|
.. deprecated:: API:9.6
|
||||||
|
https://core.telegram.org/bots/api-changelog#april-3-2026"""
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
@ -61,12 +74,16 @@ class Poll(TelegramObject):
|
||||||
is_anonymous: bool,
|
is_anonymous: bool,
|
||||||
type: str,
|
type: str,
|
||||||
allows_multiple_answers: bool,
|
allows_multiple_answers: bool,
|
||||||
|
allows_revoting: bool,
|
||||||
question_entities: list[MessageEntity] | None = None,
|
question_entities: list[MessageEntity] | None = None,
|
||||||
correct_option_id: int | None = None,
|
correct_option_ids: list[int] | None = None,
|
||||||
explanation: str | None = None,
|
explanation: str | None = None,
|
||||||
explanation_entities: list[MessageEntity] | None = None,
|
explanation_entities: list[MessageEntity] | None = None,
|
||||||
open_period: int | None = None,
|
open_period: int | None = None,
|
||||||
close_date: DateTime | None = None,
|
close_date: DateTime | None = None,
|
||||||
|
description: str | None = None,
|
||||||
|
description_entities: list[MessageEntity] | None = None,
|
||||||
|
correct_option_id: int | None = None,
|
||||||
**__pydantic_kwargs: Any,
|
**__pydantic_kwargs: Any,
|
||||||
) -> None:
|
) -> None:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
@ -82,11 +99,15 @@ class Poll(TelegramObject):
|
||||||
is_anonymous=is_anonymous,
|
is_anonymous=is_anonymous,
|
||||||
type=type,
|
type=type,
|
||||||
allows_multiple_answers=allows_multiple_answers,
|
allows_multiple_answers=allows_multiple_answers,
|
||||||
|
allows_revoting=allows_revoting,
|
||||||
question_entities=question_entities,
|
question_entities=question_entities,
|
||||||
correct_option_id=correct_option_id,
|
correct_option_ids=correct_option_ids,
|
||||||
explanation=explanation,
|
explanation=explanation,
|
||||||
explanation_entities=explanation_entities,
|
explanation_entities=explanation_entities,
|
||||||
open_period=open_period,
|
open_period=open_period,
|
||||||
close_date=close_date,
|
close_date=close_date,
|
||||||
|
description=description,
|
||||||
|
description_entities=description_entities,
|
||||||
|
correct_option_id=correct_option_id,
|
||||||
**__pydantic_kwargs,
|
**__pydantic_kwargs,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,8 @@ class PollAnswer(TelegramObject):
|
||||||
"""Unique poll identifier"""
|
"""Unique poll identifier"""
|
||||||
option_ids: list[int]
|
option_ids: list[int]
|
||||||
"""0-based identifiers of chosen answer options. May be empty if the vote was retracted."""
|
"""0-based identifiers of chosen answer options. May be empty if the vote was retracted."""
|
||||||
|
option_persistent_ids: list[str]
|
||||||
|
"""Persistent identifiers of the chosen answer options. May be empty if the vote was retracted."""
|
||||||
voter_chat: Chat | None = None
|
voter_chat: Chat | None = None
|
||||||
"""*Optional*. The chat that changed the answer to the poll, if the voter is anonymous"""
|
"""*Optional*. The chat that changed the answer to the poll, if the voter is anonymous"""
|
||||||
user: User | None = None
|
user: User | None = None
|
||||||
|
|
@ -34,6 +36,7 @@ class PollAnswer(TelegramObject):
|
||||||
*,
|
*,
|
||||||
poll_id: str,
|
poll_id: str,
|
||||||
option_ids: list[int],
|
option_ids: list[int],
|
||||||
|
option_persistent_ids: list[str],
|
||||||
voter_chat: Chat | None = None,
|
voter_chat: Chat | None = None,
|
||||||
user: User | None = None,
|
user: User | None = None,
|
||||||
**__pydantic_kwargs: Any,
|
**__pydantic_kwargs: Any,
|
||||||
|
|
@ -45,6 +48,7 @@ class PollAnswer(TelegramObject):
|
||||||
super().__init__(
|
super().__init__(
|
||||||
poll_id=poll_id,
|
poll_id=poll_id,
|
||||||
option_ids=option_ids,
|
option_ids=option_ids,
|
||||||
|
option_persistent_ids=option_persistent_ids,
|
||||||
voter_chat=voter_chat,
|
voter_chat=voter_chat,
|
||||||
user=user,
|
user=user,
|
||||||
**__pydantic_kwargs,
|
**__pydantic_kwargs,
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,12 @@ from __future__ import annotations
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
from .base import TelegramObject
|
from .base import TelegramObject
|
||||||
|
from .custom import DateTime
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
|
from .chat import Chat
|
||||||
from .message_entity import MessageEntity
|
from .message_entity import MessageEntity
|
||||||
|
from .user import User
|
||||||
|
|
||||||
|
|
||||||
class PollOption(TelegramObject):
|
class PollOption(TelegramObject):
|
||||||
|
|
@ -15,12 +18,20 @@ class PollOption(TelegramObject):
|
||||||
Source: https://core.telegram.org/bots/api#polloption
|
Source: https://core.telegram.org/bots/api#polloption
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
persistent_id: str
|
||||||
|
"""Unique identifier of the option, persistent on option addition and deletion"""
|
||||||
text: str
|
text: str
|
||||||
"""Option text, 1-100 characters"""
|
"""Option text, 1-100 characters"""
|
||||||
voter_count: int
|
voter_count: int
|
||||||
"""Number of users that voted for this option"""
|
"""Number of users who voted for this option; may be 0 if unknown"""
|
||||||
text_entities: list[MessageEntity] | None = None
|
text_entities: list[MessageEntity] | None = None
|
||||||
"""*Optional*. Special entities that appear in the option *text*. Currently, only custom emoji entities are allowed in poll option texts"""
|
"""*Optional*. Special entities that appear in the option *text*. Currently, only custom emoji entities are allowed in poll option texts"""
|
||||||
|
added_by_user: User | None = None
|
||||||
|
"""*Optional*. User who added the option; omitted if the option wasn't added by a user after poll creation"""
|
||||||
|
added_by_chat: Chat | None = None
|
||||||
|
"""*Optional*. Chat that added the option; omitted if the option wasn't added by a chat after poll creation"""
|
||||||
|
addition_date: DateTime | None = None
|
||||||
|
"""*Optional*. Point in time (Unix timestamp) when the option was added; omitted if the option existed in the original poll"""
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
@ -29,9 +40,13 @@ class PollOption(TelegramObject):
|
||||||
def __init__(
|
def __init__(
|
||||||
__pydantic__self__,
|
__pydantic__self__,
|
||||||
*,
|
*,
|
||||||
|
persistent_id: str,
|
||||||
text: str,
|
text: str,
|
||||||
voter_count: int,
|
voter_count: int,
|
||||||
text_entities: list[MessageEntity] | None = None,
|
text_entities: list[MessageEntity] | None = None,
|
||||||
|
added_by_user: User | None = None,
|
||||||
|
added_by_chat: Chat | None = None,
|
||||||
|
addition_date: DateTime | None = None,
|
||||||
**__pydantic_kwargs: Any,
|
**__pydantic_kwargs: Any,
|
||||||
) -> None:
|
) -> None:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
@ -39,8 +54,12 @@ class PollOption(TelegramObject):
|
||||||
# Is needed only for type checking and IDE support without any additional plugins
|
# Is needed only for type checking and IDE support without any additional plugins
|
||||||
|
|
||||||
super().__init__(
|
super().__init__(
|
||||||
|
persistent_id=persistent_id,
|
||||||
text=text,
|
text=text,
|
||||||
voter_count=voter_count,
|
voter_count=voter_count,
|
||||||
text_entities=text_entities,
|
text_entities=text_entities,
|
||||||
|
added_by_user=added_by_user,
|
||||||
|
added_by_chat=added_by_chat,
|
||||||
|
addition_date=addition_date,
|
||||||
**__pydantic_kwargs,
|
**__pydantic_kwargs,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
51
aiogram/types/poll_option_added.py
Normal file
51
aiogram/types/poll_option_added.py
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
|
from .base import TelegramObject
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from .maybe_inaccessible_message_union import MaybeInaccessibleMessageUnion
|
||||||
|
from .message_entity import MessageEntity
|
||||||
|
|
||||||
|
|
||||||
|
class PollOptionAdded(TelegramObject):
|
||||||
|
"""
|
||||||
|
Describes a service message about an option added to a poll.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#polloptionadded
|
||||||
|
"""
|
||||||
|
|
||||||
|
option_persistent_id: str
|
||||||
|
"""Unique identifier of the added option"""
|
||||||
|
option_text: str
|
||||||
|
"""Option text"""
|
||||||
|
poll_message: MaybeInaccessibleMessageUnion | None = None
|
||||||
|
"""*Optional*. Message containing the poll to which the option was added, if known. Note that the :class:`aiogram.types.message.Message` object in this field will not contain the *reply_to_message* field even if it itself is a reply."""
|
||||||
|
option_text_entities: list[MessageEntity] | None = None
|
||||||
|
"""*Optional*. Special entities that appear in the *option_text*"""
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This section was auto-generated via `butcher`
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
__pydantic__self__,
|
||||||
|
*,
|
||||||
|
option_persistent_id: str,
|
||||||
|
option_text: str,
|
||||||
|
poll_message: MaybeInaccessibleMessageUnion | None = None,
|
||||||
|
option_text_entities: list[MessageEntity] | None = None,
|
||||||
|
**__pydantic_kwargs: Any,
|
||||||
|
) -> None:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This method was auto-generated via `butcher`
|
||||||
|
# Is needed only for type checking and IDE support without any additional plugins
|
||||||
|
|
||||||
|
super().__init__(
|
||||||
|
option_persistent_id=option_persistent_id,
|
||||||
|
option_text=option_text,
|
||||||
|
poll_message=poll_message,
|
||||||
|
option_text_entities=option_text_entities,
|
||||||
|
**__pydantic_kwargs,
|
||||||
|
)
|
||||||
51
aiogram/types/poll_option_deleted.py
Normal file
51
aiogram/types/poll_option_deleted.py
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
|
from .base import TelegramObject
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from .maybe_inaccessible_message_union import MaybeInaccessibleMessageUnion
|
||||||
|
from .message_entity import MessageEntity
|
||||||
|
|
||||||
|
|
||||||
|
class PollOptionDeleted(TelegramObject):
|
||||||
|
"""
|
||||||
|
Describes a service message about an option deleted from a poll.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#polloptiondeleted
|
||||||
|
"""
|
||||||
|
|
||||||
|
option_persistent_id: str
|
||||||
|
"""Unique identifier of the deleted option"""
|
||||||
|
option_text: str
|
||||||
|
"""Option text"""
|
||||||
|
poll_message: MaybeInaccessibleMessageUnion | None = None
|
||||||
|
"""*Optional*. Message containing the poll from which the option was deleted, if known. Note that the :class:`aiogram.types.message.Message` object in this field will not contain the *reply_to_message* field even if it itself is a reply."""
|
||||||
|
option_text_entities: list[MessageEntity] | None = None
|
||||||
|
"""*Optional*. Special entities that appear in the *option_text*"""
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This section was auto-generated via `butcher`
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
__pydantic__self__,
|
||||||
|
*,
|
||||||
|
option_persistent_id: str,
|
||||||
|
option_text: str,
|
||||||
|
poll_message: MaybeInaccessibleMessageUnion | None = None,
|
||||||
|
option_text_entities: list[MessageEntity] | None = None,
|
||||||
|
**__pydantic_kwargs: Any,
|
||||||
|
) -> None:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This method was auto-generated via `butcher`
|
||||||
|
# Is needed only for type checking and IDE support without any additional plugins
|
||||||
|
|
||||||
|
super().__init__(
|
||||||
|
option_persistent_id=option_persistent_id,
|
||||||
|
option_text=option_text,
|
||||||
|
poll_message=poll_message,
|
||||||
|
option_text_entities=option_text_entities,
|
||||||
|
**__pydantic_kwargs,
|
||||||
|
)
|
||||||
25
aiogram/types/prepared_keyboard_button.py
Normal file
25
aiogram/types/prepared_keyboard_button.py
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
|
from .base import TelegramObject
|
||||||
|
|
||||||
|
|
||||||
|
class PreparedKeyboardButton(TelegramObject):
|
||||||
|
"""
|
||||||
|
Describes a keyboard button to be used by a user of a Mini App.
|
||||||
|
|
||||||
|
Source: https://core.telegram.org/bots/api#preparedkeyboardbutton
|
||||||
|
"""
|
||||||
|
|
||||||
|
id: str
|
||||||
|
"""Unique identifier of the keyboard button"""
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This section was auto-generated via `butcher`
|
||||||
|
|
||||||
|
def __init__(__pydantic__self__, *, id: str, **__pydantic_kwargs: Any) -> None:
|
||||||
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
# This method was auto-generated via `butcher`
|
||||||
|
# Is needed only for type checking and IDE support without any additional plugins
|
||||||
|
|
||||||
|
super().__init__(id=id, **__pydantic_kwargs)
|
||||||
|
|
@ -24,7 +24,7 @@ class ReplyParameters(TelegramObject):
|
||||||
allow_sending_without_reply: bool | Default | None = Default("allow_sending_without_reply")
|
allow_sending_without_reply: bool | Default | None = Default("allow_sending_without_reply")
|
||||||
"""*Optional*. Pass :code:`True` if the message should be sent even if the specified message to be replied to is not found. Always :code:`False` for replies in another chat or forum topic. Always :code:`True` for messages sent on behalf of a business account."""
|
"""*Optional*. Pass :code:`True` if the message should be sent even if the specified message to be replied to is not found. Always :code:`False` for replies in another chat or forum topic. Always :code:`True` for messages sent on behalf of a business account."""
|
||||||
quote: str | None = None
|
quote: str | None = None
|
||||||
"""*Optional*. Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom_emoji* entities. The message will fail to send if the quote isn't found in the original message."""
|
"""*Optional*. Quoted part of the message to be replied to; 0-1024 characters after entities parsing. The quote must be an exact substring of the message to be replied to, including *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, *custom_emoji*, and *date_time* entities. The message will fail to send if the quote isn't found in the original message."""
|
||||||
quote_parse_mode: str | Default | None = Default("parse_mode")
|
quote_parse_mode: str | Default | None = Default("parse_mode")
|
||||||
"""*Optional*. Mode for parsing entities in the quote. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details."""
|
"""*Optional*. Mode for parsing entities in the quote. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details."""
|
||||||
quote_entities: list[MessageEntity] | None = None
|
quote_entities: list[MessageEntity] | None = None
|
||||||
|
|
@ -33,6 +33,8 @@ class ReplyParameters(TelegramObject):
|
||||||
"""*Optional*. Position of the quote in the original message in UTF-16 code units"""
|
"""*Optional*. Position of the quote in the original message in UTF-16 code units"""
|
||||||
checklist_task_id: int | None = None
|
checklist_task_id: int | None = None
|
||||||
"""*Optional*. Identifier of the specific checklist task to be replied to"""
|
"""*Optional*. Identifier of the specific checklist task to be replied to"""
|
||||||
|
poll_option_id: str | None = None
|
||||||
|
"""*Optional*. Persistent identifier of the specific poll option to be replied to"""
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
@ -51,6 +53,7 @@ class ReplyParameters(TelegramObject):
|
||||||
quote_entities: list[MessageEntity] | None = None,
|
quote_entities: list[MessageEntity] | None = None,
|
||||||
quote_position: int | None = None,
|
quote_position: int | None = None,
|
||||||
checklist_task_id: int | None = None,
|
checklist_task_id: int | None = None,
|
||||||
|
poll_option_id: str | None = None,
|
||||||
**__pydantic_kwargs: Any,
|
**__pydantic_kwargs: Any,
|
||||||
) -> None:
|
) -> None:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
@ -66,5 +69,6 @@ class ReplyParameters(TelegramObject):
|
||||||
quote_entities=quote_entities,
|
quote_entities=quote_entities,
|
||||||
quote_position=quote_position,
|
quote_position=quote_position,
|
||||||
checklist_task_id=checklist_task_id,
|
checklist_task_id=checklist_task_id,
|
||||||
|
poll_option_id=poll_option_id,
|
||||||
**__pydantic_kwargs,
|
**__pydantic_kwargs,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ class TextQuote(TelegramObject):
|
||||||
position: int
|
position: int
|
||||||
"""Approximate quote position in the original message in UTF-16 code units as specified by the sender"""
|
"""Approximate quote position in the original message in UTF-16 code units as specified by the sender"""
|
||||||
entities: list[MessageEntity] | None = None
|
entities: list[MessageEntity] | None = None
|
||||||
"""*Optional*. Special entities that appear in the quote. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, and *custom_emoji* entities are kept in quotes."""
|
"""*Optional*. Special entities that appear in the quote. Currently, only *bold*, *italic*, *underline*, *strikethrough*, *spoiler*, *custom_emoji*, and *date_time* entities are kept in quotes."""
|
||||||
is_manual: bool | None = None
|
is_manual: bool | None = None
|
||||||
"""*Optional*. :code:`True`, if the quote was chosen manually by the message sender. Otherwise, the quote was added automatically by the server."""
|
"""*Optional*. :code:`True`, if the quote was chosen manually by the message sender. Otherwise, the quote was added automatically by the server."""
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ if TYPE_CHECKING:
|
||||||
from .chat_member_updated import ChatMemberUpdated
|
from .chat_member_updated import ChatMemberUpdated
|
||||||
from .chosen_inline_result import ChosenInlineResult
|
from .chosen_inline_result import ChosenInlineResult
|
||||||
from .inline_query import InlineQuery
|
from .inline_query import InlineQuery
|
||||||
|
from .managed_bot_updated import ManagedBotUpdated
|
||||||
from .message import Message
|
from .message import Message
|
||||||
from .message_reaction_count_updated import MessageReactionCountUpdated
|
from .message_reaction_count_updated import MessageReactionCountUpdated
|
||||||
from .message_reaction_updated import MessageReactionUpdated
|
from .message_reaction_updated import MessageReactionUpdated
|
||||||
|
|
@ -82,6 +83,8 @@ class Update(TelegramObject):
|
||||||
"""*Optional*. A chat boost was added or changed. The bot must be an administrator in the chat to receive these updates."""
|
"""*Optional*. A chat boost was added or changed. The bot must be an administrator in the chat to receive these updates."""
|
||||||
removed_chat_boost: ChatBoostRemoved | None = None
|
removed_chat_boost: ChatBoostRemoved | None = None
|
||||||
"""*Optional*. A boost was removed from a chat. The bot must be an administrator in the chat to receive these updates."""
|
"""*Optional*. A boost was removed from a chat. The bot must be an administrator in the chat to receive these updates."""
|
||||||
|
managed_bot: ManagedBotUpdated | None = None
|
||||||
|
"""*Optional*. A new bot was created to be managed by the bot or token of a bot was changed"""
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
@ -114,6 +117,7 @@ class Update(TelegramObject):
|
||||||
chat_join_request: ChatJoinRequest | None = None,
|
chat_join_request: ChatJoinRequest | None = None,
|
||||||
chat_boost: ChatBoostUpdated | None = None,
|
chat_boost: ChatBoostUpdated | None = None,
|
||||||
removed_chat_boost: ChatBoostRemoved | None = None,
|
removed_chat_boost: ChatBoostRemoved | None = None,
|
||||||
|
managed_bot: ManagedBotUpdated | None = None,
|
||||||
**__pydantic_kwargs: Any,
|
**__pydantic_kwargs: Any,
|
||||||
) -> None:
|
) -> None:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
@ -145,6 +149,7 @@ class Update(TelegramObject):
|
||||||
chat_join_request=chat_join_request,
|
chat_join_request=chat_join_request,
|
||||||
chat_boost=chat_boost,
|
chat_boost=chat_boost,
|
||||||
removed_chat_boost=removed_chat_boost,
|
removed_chat_boost=removed_chat_boost,
|
||||||
|
managed_bot=managed_bot,
|
||||||
**__pydantic_kwargs,
|
**__pydantic_kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -206,6 +211,8 @@ class Update(TelegramObject):
|
||||||
return "business_message"
|
return "business_message"
|
||||||
if self.purchased_paid_media:
|
if self.purchased_paid_media:
|
||||||
return "purchased_paid_media"
|
return "purchased_paid_media"
|
||||||
|
if self.managed_bot:
|
||||||
|
return "managed_bot"
|
||||||
|
|
||||||
raise UpdateTypeLookupError("Update does not contain any known event type.")
|
raise UpdateTypeLookupError("Update does not contain any known event type.")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,8 @@ class User(TelegramObject):
|
||||||
"""*Optional*. :code:`True`, if the bot has forum topic mode enabled in private chats. Returned only in :class:`aiogram.methods.get_me.GetMe`."""
|
"""*Optional*. :code:`True`, if the bot has forum topic mode enabled in private chats. Returned only in :class:`aiogram.methods.get_me.GetMe`."""
|
||||||
allows_users_to_create_topics: bool | None = None
|
allows_users_to_create_topics: bool | None = None
|
||||||
"""*Optional*. :code:`True`, if the bot allows users to create and delete topics in private chats. Returned only in :class:`aiogram.methods.get_me.GetMe`."""
|
"""*Optional*. :code:`True`, if the bot allows users to create and delete topics in private chats. Returned only in :class:`aiogram.methods.get_me.GetMe`."""
|
||||||
|
can_manage_bots: bool | None = None
|
||||||
|
"""*Optional*. :code:`True`, if other bots can be created to be controlled by the bot. Returned only in :class:`aiogram.methods.get_me.GetMe`."""
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
@ -70,6 +72,7 @@ class User(TelegramObject):
|
||||||
has_main_web_app: bool | None = None,
|
has_main_web_app: bool | None = None,
|
||||||
has_topics_enabled: bool | None = None,
|
has_topics_enabled: bool | None = None,
|
||||||
allows_users_to_create_topics: bool | None = None,
|
allows_users_to_create_topics: bool | None = None,
|
||||||
|
can_manage_bots: bool | None = None,
|
||||||
**__pydantic_kwargs: Any,
|
**__pydantic_kwargs: Any,
|
||||||
) -> None:
|
) -> None:
|
||||||
# DO NOT EDIT MANUALLY!!!
|
# DO NOT EDIT MANUALLY!!!
|
||||||
|
|
@ -92,6 +95,7 @@ class User(TelegramObject):
|
||||||
has_main_web_app=has_main_web_app,
|
has_main_web_app=has_main_web_app,
|
||||||
has_topics_enabled=has_topics_enabled,
|
has_topics_enabled=has_topics_enabled,
|
||||||
allows_users_to_create_topics=allows_users_to_create_topics,
|
allows_users_to_create_topics=allows_users_to_create_topics,
|
||||||
|
can_manage_bots=can_manage_bots,
|
||||||
**__pydantic_kwargs,
|
**__pydantic_kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
38
docs/api/methods/get_managed_bot_token.rst
Normal file
38
docs/api/methods/get_managed_bot_token.rst
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
##################
|
||||||
|
getManagedBotToken
|
||||||
|
##################
|
||||||
|
|
||||||
|
Returns: :obj:`str`
|
||||||
|
|
||||||
|
.. automodule:: aiogram.methods.get_managed_bot_token
|
||||||
|
:members:
|
||||||
|
:member-order: bysource
|
||||||
|
:undoc-members: True
|
||||||
|
:exclude-members: model_config,model_fields
|
||||||
|
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
As bot method
|
||||||
|
-------------
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
result: str = await bot.get_managed_bot_token(...)
|
||||||
|
|
||||||
|
|
||||||
|
Method as object
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Imports:
|
||||||
|
|
||||||
|
- :code:`from aiogram.methods.get_managed_bot_token import GetManagedBotToken`
|
||||||
|
- alias: :code:`from aiogram.methods import GetManagedBotToken`
|
||||||
|
|
||||||
|
With specific bot
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
result: str = await bot(GetManagedBotToken(...))
|
||||||
|
|
@ -35,6 +35,7 @@ Available methods
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
answer_callback_query
|
answer_callback_query
|
||||||
|
answer_web_app_query
|
||||||
approve_chat_join_request
|
approve_chat_join_request
|
||||||
ban_chat_member
|
ban_chat_member
|
||||||
ban_chat_sender_chat
|
ban_chat_sender_chat
|
||||||
|
|
@ -74,6 +75,7 @@ Available methods
|
||||||
get_chat_menu_button
|
get_chat_menu_button
|
||||||
get_file
|
get_file
|
||||||
get_forum_topic_icon_stickers
|
get_forum_topic_icon_stickers
|
||||||
|
get_managed_bot_token
|
||||||
get_me
|
get_me
|
||||||
get_my_commands
|
get_my_commands
|
||||||
get_my_default_administrator_rights
|
get_my_default_administrator_rights
|
||||||
|
|
@ -98,9 +100,12 @@ Available methods
|
||||||
remove_user_verification
|
remove_user_verification
|
||||||
reopen_forum_topic
|
reopen_forum_topic
|
||||||
reopen_general_forum_topic
|
reopen_general_forum_topic
|
||||||
|
replace_managed_bot_token
|
||||||
repost_story
|
repost_story
|
||||||
restrict_chat_member
|
restrict_chat_member
|
||||||
revoke_chat_invite_link
|
revoke_chat_invite_link
|
||||||
|
save_prepared_inline_message
|
||||||
|
save_prepared_keyboard_button
|
||||||
send_animation
|
send_animation
|
||||||
send_audio
|
send_audio
|
||||||
send_chat_action
|
send_chat_action
|
||||||
|
|
@ -173,16 +178,6 @@ Updating messages
|
||||||
stop_message_live_location
|
stop_message_live_location
|
||||||
stop_poll
|
stop_poll
|
||||||
|
|
||||||
Inline mode
|
|
||||||
===========
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
answer_inline_query
|
|
||||||
answer_web_app_query
|
|
||||||
save_prepared_inline_message
|
|
||||||
|
|
||||||
Games
|
Games
|
||||||
=====
|
=====
|
||||||
|
|
||||||
|
|
@ -226,3 +221,11 @@ Telegram Passport
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
set_passport_data_errors
|
set_passport_data_errors
|
||||||
|
|
||||||
|
Inline mode
|
||||||
|
===========
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
answer_inline_query
|
||||||
|
|
|
||||||
45
docs/api/methods/replace_managed_bot_token.rst
Normal file
45
docs/api/methods/replace_managed_bot_token.rst
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
######################
|
||||||
|
replaceManagedBotToken
|
||||||
|
######################
|
||||||
|
|
||||||
|
Returns: :obj:`str`
|
||||||
|
|
||||||
|
.. automodule:: aiogram.methods.replace_managed_bot_token
|
||||||
|
:members:
|
||||||
|
:member-order: bysource
|
||||||
|
:undoc-members: True
|
||||||
|
:exclude-members: model_config,model_fields
|
||||||
|
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
As bot method
|
||||||
|
-------------
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
result: str = await bot.replace_managed_bot_token(...)
|
||||||
|
|
||||||
|
|
||||||
|
Method as object
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Imports:
|
||||||
|
|
||||||
|
- :code:`from aiogram.methods.replace_managed_bot_token import ReplaceManagedBotToken`
|
||||||
|
- alias: :code:`from aiogram.methods import ReplaceManagedBotToken`
|
||||||
|
|
||||||
|
With specific bot
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
result: str = await bot(ReplaceManagedBotToken(...))
|
||||||
|
|
||||||
|
As reply into Webhook in handler
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
return ReplaceManagedBotToken(...)
|
||||||
45
docs/api/methods/save_prepared_keyboard_button.rst
Normal file
45
docs/api/methods/save_prepared_keyboard_button.rst
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
##########################
|
||||||
|
savePreparedKeyboardButton
|
||||||
|
##########################
|
||||||
|
|
||||||
|
Returns: :obj:`PreparedKeyboardButton`
|
||||||
|
|
||||||
|
.. automodule:: aiogram.methods.save_prepared_keyboard_button
|
||||||
|
:members:
|
||||||
|
:member-order: bysource
|
||||||
|
:undoc-members: True
|
||||||
|
:exclude-members: model_config,model_fields
|
||||||
|
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
As bot method
|
||||||
|
-------------
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
result: PreparedKeyboardButton = await bot.save_prepared_keyboard_button(...)
|
||||||
|
|
||||||
|
|
||||||
|
Method as object
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Imports:
|
||||||
|
|
||||||
|
- :code:`from aiogram.methods.save_prepared_keyboard_button import SavePreparedKeyboardButton`
|
||||||
|
- alias: :code:`from aiogram.methods import SavePreparedKeyboardButton`
|
||||||
|
|
||||||
|
With specific bot
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
result: PreparedKeyboardButton = await bot(SavePreparedKeyboardButton(...))
|
||||||
|
|
||||||
|
As reply into Webhook in handler
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
return SavePreparedKeyboardButton(...)
|
||||||
|
|
@ -43,3 +43,9 @@ As reply into Webhook in handler
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
return SetChatMemberTag(...)
|
return SetChatMemberTag(...)
|
||||||
|
|
||||||
|
|
||||||
|
As shortcut from received object
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
- :meth:`aiogram.types.chat.Chat.set_member_tag`
|
||||||
|
|
|
||||||
|
|
@ -125,12 +125,15 @@ Available types
|
||||||
keyboard_button
|
keyboard_button
|
||||||
keyboard_button_poll_type
|
keyboard_button_poll_type
|
||||||
keyboard_button_request_chat
|
keyboard_button_request_chat
|
||||||
|
keyboard_button_request_managed_bot
|
||||||
keyboard_button_request_user
|
keyboard_button_request_user
|
||||||
keyboard_button_request_users
|
keyboard_button_request_users
|
||||||
link_preview_options
|
link_preview_options
|
||||||
location
|
location
|
||||||
location_address
|
location_address
|
||||||
login_url
|
login_url
|
||||||
|
managed_bot_created
|
||||||
|
managed_bot_updated
|
||||||
maybe_inaccessible_message
|
maybe_inaccessible_message
|
||||||
menu_button
|
menu_button
|
||||||
menu_button_commands
|
menu_button_commands
|
||||||
|
|
@ -161,6 +164,10 @@ Available types
|
||||||
poll
|
poll
|
||||||
poll_answer
|
poll_answer
|
||||||
poll_option
|
poll_option
|
||||||
|
poll_option_added
|
||||||
|
poll_option_deleted
|
||||||
|
prepared_inline_message
|
||||||
|
prepared_keyboard_button
|
||||||
proximity_alert_triggered
|
proximity_alert_triggered
|
||||||
reaction_count
|
reaction_count
|
||||||
reaction_type
|
reaction_type
|
||||||
|
|
@ -171,6 +178,7 @@ Available types
|
||||||
reply_keyboard_remove
|
reply_keyboard_remove
|
||||||
reply_parameters
|
reply_parameters
|
||||||
response_parameters
|
response_parameters
|
||||||
|
sent_web_app_message
|
||||||
shared_user
|
shared_user
|
||||||
star_amount
|
star_amount
|
||||||
story
|
story
|
||||||
|
|
@ -255,8 +263,6 @@ Inline mode
|
||||||
input_message_content
|
input_message_content
|
||||||
input_text_message_content
|
input_text_message_content
|
||||||
input_venue_message_content
|
input_venue_message_content
|
||||||
prepared_inline_message
|
|
||||||
sent_web_app_message
|
|
||||||
|
|
||||||
Payments
|
Payments
|
||||||
========
|
========
|
||||||
|
|
|
||||||
10
docs/api/types/keyboard_button_request_managed_bot.rst
Normal file
10
docs/api/types/keyboard_button_request_managed_bot.rst
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
###############################
|
||||||
|
KeyboardButtonRequestManagedBot
|
||||||
|
###############################
|
||||||
|
|
||||||
|
|
||||||
|
.. automodule:: aiogram.types.keyboard_button_request_managed_bot
|
||||||
|
:members:
|
||||||
|
:member-order: bysource
|
||||||
|
:undoc-members: True
|
||||||
|
:exclude-members: model_config,model_fields
|
||||||
10
docs/api/types/managed_bot_created.rst
Normal file
10
docs/api/types/managed_bot_created.rst
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#################
|
||||||
|
ManagedBotCreated
|
||||||
|
#################
|
||||||
|
|
||||||
|
|
||||||
|
.. automodule:: aiogram.types.managed_bot_created
|
||||||
|
:members:
|
||||||
|
:member-order: bysource
|
||||||
|
:undoc-members: True
|
||||||
|
:exclude-members: model_config,model_fields
|
||||||
10
docs/api/types/managed_bot_updated.rst
Normal file
10
docs/api/types/managed_bot_updated.rst
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#################
|
||||||
|
ManagedBotUpdated
|
||||||
|
#################
|
||||||
|
|
||||||
|
|
||||||
|
.. automodule:: aiogram.types.managed_bot_updated
|
||||||
|
:members:
|
||||||
|
:member-order: bysource
|
||||||
|
:undoc-members: True
|
||||||
|
:exclude-members: model_config,model_fields
|
||||||
10
docs/api/types/poll_option_added.rst
Normal file
10
docs/api/types/poll_option_added.rst
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
###############
|
||||||
|
PollOptionAdded
|
||||||
|
###############
|
||||||
|
|
||||||
|
|
||||||
|
.. automodule:: aiogram.types.poll_option_added
|
||||||
|
:members:
|
||||||
|
:member-order: bysource
|
||||||
|
:undoc-members: True
|
||||||
|
:exclude-members: model_config,model_fields
|
||||||
10
docs/api/types/poll_option_deleted.rst
Normal file
10
docs/api/types/poll_option_deleted.rst
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#################
|
||||||
|
PollOptionDeleted
|
||||||
|
#################
|
||||||
|
|
||||||
|
|
||||||
|
.. automodule:: aiogram.types.poll_option_deleted
|
||||||
|
:members:
|
||||||
|
:member-order: bysource
|
||||||
|
:undoc-members: True
|
||||||
|
:exclude-members: model_config,model_fields
|
||||||
10
docs/api/types/prepared_keyboard_button.rst
Normal file
10
docs/api/types/prepared_keyboard_button.rst
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
######################
|
||||||
|
PreparedKeyboardButton
|
||||||
|
######################
|
||||||
|
|
||||||
|
|
||||||
|
.. automodule:: aiogram.types.prepared_keyboard_button
|
||||||
|
:members:
|
||||||
|
:member-order: bysource
|
||||||
|
:undoc-members: True
|
||||||
|
:exclude-members: model_config,model_fields
|
||||||
11
tests/test_api/test_methods/test_get_managed_bot_token.py
Normal file
11
tests/test_api/test_methods/test_get_managed_bot_token.py
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
from aiogram.methods import GetManagedBotToken
|
||||||
|
from tests.mocked_bot import MockedBot
|
||||||
|
|
||||||
|
|
||||||
|
class TestGetManagedBotToken:
|
||||||
|
async def test_bot_method(self, bot: MockedBot):
|
||||||
|
prepare_result = bot.add_result_for(GetManagedBotToken, ok=True, result="42:NEW_TOKEN")
|
||||||
|
|
||||||
|
response: str = await bot.get_managed_bot_token(user_id=42)
|
||||||
|
bot.get_request()
|
||||||
|
assert response == prepare_result.result
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
from aiogram.methods import ReplaceManagedBotToken
|
||||||
|
from tests.mocked_bot import MockedBot
|
||||||
|
|
||||||
|
|
||||||
|
class TestReplaceManagedBotToken:
|
||||||
|
async def test_bot_method(self, bot: MockedBot):
|
||||||
|
prepare_result = bot.add_result_for(
|
||||||
|
ReplaceManagedBotToken, ok=True, result="42:REPLACED_TOKEN"
|
||||||
|
)
|
||||||
|
|
||||||
|
response: str = await bot.replace_managed_bot_token(user_id=42)
|
||||||
|
bot.get_request()
|
||||||
|
assert response == prepare_result.result
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
from aiogram.methods import SavePreparedKeyboardButton
|
||||||
|
from aiogram.types import KeyboardButton, KeyboardButtonRequestManagedBot, PreparedKeyboardButton
|
||||||
|
from tests.mocked_bot import MockedBot
|
||||||
|
|
||||||
|
|
||||||
|
class TestSavePreparedKeyboardButton:
|
||||||
|
async def test_bot_method(self, bot: MockedBot):
|
||||||
|
prepare_result = bot.add_result_for(
|
||||||
|
SavePreparedKeyboardButton,
|
||||||
|
ok=True,
|
||||||
|
result=PreparedKeyboardButton(id="test-id"),
|
||||||
|
)
|
||||||
|
|
||||||
|
response: PreparedKeyboardButton = await bot.save_prepared_keyboard_button(
|
||||||
|
user_id=42,
|
||||||
|
button=KeyboardButton(
|
||||||
|
text="Create bot",
|
||||||
|
request_managed_bot=KeyboardButtonRequestManagedBot(request_id=1),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
bot.get_request()
|
||||||
|
assert response == prepare_result.result
|
||||||
|
|
@ -17,13 +17,14 @@ class TestSendPoll:
|
||||||
id="QA",
|
id="QA",
|
||||||
question="Q",
|
question="Q",
|
||||||
options=[
|
options=[
|
||||||
PollOption(text="A", voter_count=0),
|
PollOption(persistent_id="1", text="A", voter_count=0),
|
||||||
PollOption(text="B", voter_count=0),
|
PollOption(persistent_id="2", text="B", voter_count=0),
|
||||||
],
|
],
|
||||||
is_closed=False,
|
is_closed=False,
|
||||||
is_anonymous=False,
|
is_anonymous=False,
|
||||||
type="quiz",
|
type="quiz",
|
||||||
allows_multiple_answers=False,
|
allows_multiple_answers=False,
|
||||||
|
allows_revoting=False,
|
||||||
total_voter_count=0,
|
total_voter_count=0,
|
||||||
correct_option_id=0,
|
correct_option_id=0,
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,15 @@ class TestStopPoll:
|
||||||
result=Poll(
|
result=Poll(
|
||||||
id="QA",
|
id="QA",
|
||||||
question="Q",
|
question="Q",
|
||||||
options=[PollOption(text="A", voter_count=0), PollOption(text="B", voter_count=0)],
|
options=[
|
||||||
|
PollOption(persistent_id="1", text="A", voter_count=0),
|
||||||
|
PollOption(persistent_id="2", text="B", voter_count=0),
|
||||||
|
],
|
||||||
is_closed=False,
|
is_closed=False,
|
||||||
is_anonymous=False,
|
is_anonymous=False,
|
||||||
type="quiz",
|
type="quiz",
|
||||||
allows_multiple_answers=False,
|
allows_multiple_answers=False,
|
||||||
|
allows_revoting=False,
|
||||||
total_voter_count=0,
|
total_voter_count=0,
|
||||||
correct_option_id=0,
|
correct_option_id=0,
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
from aiogram.types import KeyboardButtonRequestManagedBot
|
||||||
|
|
||||||
|
|
||||||
|
class TestKeyboardButtonRequestManagedBot:
|
||||||
|
def test_required_fields(self):
|
||||||
|
obj = KeyboardButtonRequestManagedBot(request_id=1)
|
||||||
|
assert obj.request_id == 1
|
||||||
|
assert obj.suggested_name is None
|
||||||
|
assert obj.suggested_username is None
|
||||||
|
|
||||||
|
def test_optional_fields(self):
|
||||||
|
obj = KeyboardButtonRequestManagedBot(
|
||||||
|
request_id=2,
|
||||||
|
suggested_name="My Bot",
|
||||||
|
suggested_username="my_bot",
|
||||||
|
)
|
||||||
|
assert obj.request_id == 2
|
||||||
|
assert obj.suggested_name == "My Bot"
|
||||||
|
assert obj.suggested_username == "my_bot"
|
||||||
9
tests/test_api/test_types/test_managed_bot_created.py
Normal file
9
tests/test_api/test_types/test_managed_bot_created.py
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
from aiogram.types import ManagedBotCreated, User
|
||||||
|
|
||||||
|
|
||||||
|
class TestManagedBotCreated:
|
||||||
|
def test_fields(self):
|
||||||
|
bot_user = User(id=123, is_bot=True, first_name="TestBot")
|
||||||
|
obj = ManagedBotCreated(bot=bot_user)
|
||||||
|
assert obj.bot_user == bot_user
|
||||||
|
assert obj.bot_user.id == 123
|
||||||
10
tests/test_api/test_types/test_managed_bot_updated.py
Normal file
10
tests/test_api/test_types/test_managed_bot_updated.py
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
from aiogram.types import ManagedBotUpdated, User
|
||||||
|
|
||||||
|
|
||||||
|
class TestManagedBotUpdated:
|
||||||
|
def test_fields(self):
|
||||||
|
user = User(id=42, is_bot=False, first_name="Creator")
|
||||||
|
bot_user = User(id=123, is_bot=True, first_name="TestBot")
|
||||||
|
obj = ManagedBotUpdated(user=user, bot=bot_user)
|
||||||
|
assert obj.user == user
|
||||||
|
assert obj.bot_user == bot_user
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue