diff --git a/.butcher/methods/getUpdates/entity.json b/.butcher/methods/getUpdates/entity.json
index 6163ad20..775ad6dd 100644
--- a/.butcher/methods/getUpdates/entity.json
+++ b/.butcher/methods/getUpdates/entity.json
@@ -38,9 +38,9 @@
{
"type": "Array of String",
"required": false,
- "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.",
- "html_description": "
A JSON-serialized list of the update types you want your bot to receive. For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used. \n \nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time. | ",
- "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\n\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.\n",
+ "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.",
+ "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used. \n \nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time. | ",
+ "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`[\"message\", \"edited_channel_post\", \"callback_query\"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\n\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.\n",
"name": "allowed_updates"
}
],
diff --git a/.butcher/methods/promoteChatMember/entity.json b/.butcher/methods/promoteChatMember/entity.json
index ad0fce42..d866b307 100644
--- a/.butcher/methods/promoteChatMember/entity.json
+++ b/.butcher/methods/promoteChatMember/entity.json
@@ -38,27 +38,11 @@
{
"type": "Boolean",
"required": false,
- "description": "Pass True if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege",
- "html_description": "Pass True if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege | ",
- "rst_description": "Pass :code:`True` if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n",
+ "description": "Pass True if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege",
+ "html_description": "Pass True if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege | ",
+ "rst_description": "Pass :code:`True` if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n",
"name": "can_manage_chat"
},
- {
- "type": "Boolean",
- "required": false,
- "description": "Pass True if the administrator can create channel posts, channels only",
- "html_description": "Pass True if the administrator can create channel posts, channels only | ",
- "rst_description": "Pass :code:`True` if the administrator can create channel posts, channels only\n",
- "name": "can_post_messages"
- },
- {
- "type": "Boolean",
- "required": false,
- "description": "Pass True if the administrator can edit messages of other users and can pin messages, channels only",
- "html_description": "Pass True if the administrator can edit messages of other users and can pin messages, channels only | ",
- "rst_description": "Pass :code:`True` if the administrator can edit messages of other users and can pin messages, channels only\n",
- "name": "can_edit_messages"
- },
{
"type": "Boolean",
"required": false,
@@ -78,9 +62,9 @@
{
"type": "Boolean",
"required": false,
- "description": "Pass True if the administrator can restrict, ban or unban chat members",
- "html_description": "Pass True if the administrator can restrict, ban or unban chat members | ",
- "rst_description": "Pass :code:`True` if the administrator can restrict, ban or unban chat members\n",
+ "description": "Pass True if the administrator can restrict, ban or unban chat members, or access supergroup statistics",
+ "html_description": "Pass True if the administrator can restrict, ban or unban chat members, or access supergroup statistics | ",
+ "rst_description": "Pass :code:`True` if the administrator can restrict, ban or unban chat members, or access supergroup statistics\n",
"name": "can_restrict_members"
},
{
@@ -107,6 +91,22 @@
"rst_description": "Pass :code:`True` if the administrator can invite new users to the chat\n",
"name": "can_invite_users"
},
+ {
+ "type": "Boolean",
+ "required": false,
+ "description": "Pass True if the administrator can post messages in the channel, or access channel statistics; channels only",
+ "html_description": "Pass True if the administrator can post messages in the channel, or access channel statistics; channels only | ",
+ "rst_description": "Pass :code:`True` if the administrator can post messages in the channel, or access channel statistics; channels only\n",
+ "name": "can_post_messages"
+ },
+ {
+ "type": "Boolean",
+ "required": false,
+ "description": "Pass True if the administrator can edit messages of other users and can pin messages; channels only",
+ "html_description": "Pass True if the administrator can edit messages of other users and can pin messages; channels only | ",
+ "rst_description": "Pass :code:`True` if the administrator can edit messages of other users and can pin messages; channels only\n",
+ "name": "can_edit_messages"
+ },
{
"type": "Boolean",
"required": false,
@@ -115,6 +115,30 @@
"rst_description": "Pass :code:`True` if the administrator can pin messages, supergroups only\n",
"name": "can_pin_messages"
},
+ {
+ "type": "Boolean",
+ "required": false,
+ "description": "Pass True if the administrator can post stories in the channel; channels only",
+ "html_description": "Pass True if the administrator can post stories in the channel; channels only | ",
+ "rst_description": "Pass :code:`True` if the administrator can post stories in the channel; channels only\n",
+ "name": "can_post_stories"
+ },
+ {
+ "type": "Boolean",
+ "required": false,
+ "description": "Pass True if the administrator can edit stories posted by other users; channels only",
+ "html_description": "Pass True if the administrator can edit stories posted by other users; channels only | ",
+ "rst_description": "Pass :code:`True` if the administrator can edit stories posted by other users; channels only\n",
+ "name": "can_edit_stories"
+ },
+ {
+ "type": "Boolean",
+ "required": false,
+ "description": "Pass True if the administrator can delete stories posted by other users; channels only",
+ "html_description": "Pass True if the administrator can delete stories posted by other users; channels only | ",
+ "rst_description": "Pass :code:`True` if the administrator can delete stories posted by other users; channels only\n",
+ "name": "can_delete_stories"
+ },
{
"type": "Boolean",
"required": false,
diff --git a/.butcher/methods/setWebhook/entity.json b/.butcher/methods/setWebhook/entity.json
index 337a7b43..593186b6 100644
--- a/.butcher/methods/setWebhook/entity.json
+++ b/.butcher/methods/setWebhook/entity.json
@@ -46,9 +46,9 @@
{
"type": "Array of String",
"required": false,
- "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.",
- "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used. \nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time. | ",
- "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.\n",
+ "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.",
+ "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used. \nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time. | ",
+ "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`[\"message\", \"edited_channel_post\", \"callback_query\"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.\n",
"name": "allowed_updates"
},
{
diff --git a/.butcher/schema/schema.json b/.butcher/schema/schema.json
index 7f4457cc..27e87e97 100644
--- a/.butcher/schema/schema.json
+++ b/.butcher/schema/schema.json
@@ -121,9 +121,9 @@
},
{
"type": "ChatMemberUpdated",
- "description": "A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify 'chat_member' in the list of allowed_updates to receive these updates.",
- "html_description": "Optional. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify “chat_member” in the list of allowed_updates to receive these updates. | ",
- "rst_description": "*Optional*. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify 'chat_member' in the list of *allowed_updates* to receive these updates.\n",
+ "description": "A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify \"chat_member\" in the list of allowed_updates to receive these updates.",
+ "html_description": "Optional. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify \"chat_member\" in the list of allowed_updates to receive these updates. | ",
+ "rst_description": "*Optional*. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify :code:`\"chat_member\"` in the list of *allowed_updates* to receive these updates.\n",
"name": "chat_member",
"required": false
},
@@ -172,9 +172,9 @@
{
"type": "Array of String",
"required": false,
- "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.",
- "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used. \n \nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time. | ",
- "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\n\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.\n",
+ "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.",
+ "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used. \n \nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time. | ",
+ "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`[\"message\", \"edited_channel_post\", \"callback_query\"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\n\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.\n",
"name": "allowed_updates"
}
],
@@ -222,9 +222,9 @@
{
"type": "Array of String",
"required": false,
- "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.",
- "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used. \nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time. | ",
- "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.\n",
+ "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.",
+ "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used. \nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time. | ",
+ "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`[\"message\", \"edited_channel_post\", \"callback_query\"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.\n",
"name": "allowed_updates"
},
{
@@ -3351,9 +3351,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege",
- "html_description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege | ",
- "rst_description": ":code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n",
+ "description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege",
+ "html_description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege | ",
+ "rst_description": ":code:`True`, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n",
"name": "can_manage_chat",
"required": true
},
@@ -3375,9 +3375,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can restrict, ban or unban chat members",
- "html_description": "True, if the administrator can restrict, ban or unban chat members | ",
- "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members\n",
+ "description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics",
+ "html_description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics | ",
+ "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members, or access supergroup statistics\n",
"name": "can_restrict_members",
"required": true
},
@@ -3407,9 +3407,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can post messages in the channel; channels only",
- "html_description": "Optional. True, if the administrator can post messages in the channel; channels only | ",
- "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only\n",
+ "description": "True, if the administrator can post messages in the channel, or access channel statistics; channels only",
+ "html_description": "Optional. True, if the administrator can post messages in the channel, or access channel statistics; channels only | ",
+ "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel, or access channel statistics; channels only\n",
"name": "can_post_messages",
"required": false
},
@@ -3447,9 +3447,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can delete stories posted by other users",
- "html_description": "Optional. True, if the administrator can delete stories posted by other users | ",
- "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users\n",
+ "description": "True, if the administrator can delete stories posted by other users; channels only",
+ "html_description": "Optional. True, if the administrator can delete stories posted by other users; channels only | ",
+ "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only\n",
"name": "can_delete_stories",
"required": false
},
@@ -3556,9 +3556,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege",
- "html_description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege | ",
- "rst_description": ":code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n",
+ "description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege",
+ "html_description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege | ",
+ "rst_description": ":code:`True`, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n",
"name": "can_manage_chat",
"required": true
},
@@ -3580,9 +3580,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can restrict, ban or unban chat members",
- "html_description": "True, if the administrator can restrict, ban or unban chat members | ",
- "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members\n",
+ "description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics",
+ "html_description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics | ",
+ "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members, or access supergroup statistics\n",
"name": "can_restrict_members",
"required": true
},
@@ -3612,9 +3612,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can post messages in the channel; channels only",
- "html_description": "Optional. True, if the administrator can post messages in the channel; channels only | ",
- "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only\n",
+ "description": "True, if the administrator can post messages in the channel, or access channel statistics; channels only",
+ "html_description": "Optional. True, if the administrator can post messages in the channel, or access channel statistics; channels only | ",
+ "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel, or access channel statistics; channels only\n",
"name": "can_post_messages",
"required": false
},
@@ -3652,9 +3652,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can delete stories posted by other users",
- "html_description": "Optional. True, if the administrator can delete stories posted by other users | ",
- "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users\n",
+ "description": "True, if the administrator can delete stories posted by other users; channels only",
+ "html_description": "Optional. True, if the administrator can delete stories posted by other users; channels only | ",
+ "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only\n",
"name": "can_delete_stories",
"required": false
},
@@ -4008,9 +4008,9 @@
},
{
"type": "Integer",
- "description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user.",
- "html_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user. | ",
- "rst_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user.\n",
+ "description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user.",
+ "html_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user. | ",
+ "rst_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user.\n",
"name": "user_chat_id",
"required": true
},
@@ -7019,27 +7019,11 @@
{
"type": "Boolean",
"required": false,
- "description": "Pass True if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege",
- "html_description": "Pass True if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege | ",
- "rst_description": "Pass :code:`True` if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n",
+ "description": "Pass True if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege",
+ "html_description": "Pass True if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege | ",
+ "rst_description": "Pass :code:`True` if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n",
"name": "can_manage_chat"
},
- {
- "type": "Boolean",
- "required": false,
- "description": "Pass True if the administrator can create channel posts, channels only",
- "html_description": "Pass True if the administrator can create channel posts, channels only | ",
- "rst_description": "Pass :code:`True` if the administrator can create channel posts, channels only\n",
- "name": "can_post_messages"
- },
- {
- "type": "Boolean",
- "required": false,
- "description": "Pass True if the administrator can edit messages of other users and can pin messages, channels only",
- "html_description": "Pass True if the administrator can edit messages of other users and can pin messages, channels only | ",
- "rst_description": "Pass :code:`True` if the administrator can edit messages of other users and can pin messages, channels only\n",
- "name": "can_edit_messages"
- },
{
"type": "Boolean",
"required": false,
@@ -7059,9 +7043,9 @@
{
"type": "Boolean",
"required": false,
- "description": "Pass True if the administrator can restrict, ban or unban chat members",
- "html_description": "Pass True if the administrator can restrict, ban or unban chat members | ",
- "rst_description": "Pass :code:`True` if the administrator can restrict, ban or unban chat members\n",
+ "description": "Pass True if the administrator can restrict, ban or unban chat members, or access supergroup statistics",
+ "html_description": "Pass True if the administrator can restrict, ban or unban chat members, or access supergroup statistics | ",
+ "rst_description": "Pass :code:`True` if the administrator can restrict, ban or unban chat members, or access supergroup statistics\n",
"name": "can_restrict_members"
},
{
@@ -7088,6 +7072,22 @@
"rst_description": "Pass :code:`True` if the administrator can invite new users to the chat\n",
"name": "can_invite_users"
},
+ {
+ "type": "Boolean",
+ "required": false,
+ "description": "Pass True if the administrator can post messages in the channel, or access channel statistics; channels only",
+ "html_description": "Pass True if the administrator can post messages in the channel, or access channel statistics; channels only | ",
+ "rst_description": "Pass :code:`True` if the administrator can post messages in the channel, or access channel statistics; channels only\n",
+ "name": "can_post_messages"
+ },
+ {
+ "type": "Boolean",
+ "required": false,
+ "description": "Pass True if the administrator can edit messages of other users and can pin messages; channels only",
+ "html_description": "Pass True if the administrator can edit messages of other users and can pin messages; channels only | ",
+ "rst_description": "Pass :code:`True` if the administrator can edit messages of other users and can pin messages; channels only\n",
+ "name": "can_edit_messages"
+ },
{
"type": "Boolean",
"required": false,
@@ -7096,6 +7096,30 @@
"rst_description": "Pass :code:`True` if the administrator can pin messages, supergroups only\n",
"name": "can_pin_messages"
},
+ {
+ "type": "Boolean",
+ "required": false,
+ "description": "Pass True if the administrator can post stories in the channel; channels only",
+ "html_description": "Pass True if the administrator can post stories in the channel; channels only | ",
+ "rst_description": "Pass :code:`True` if the administrator can post stories in the channel; channels only\n",
+ "name": "can_post_stories"
+ },
+ {
+ "type": "Boolean",
+ "required": false,
+ "description": "Pass True if the administrator can edit stories posted by other users; channels only",
+ "html_description": "Pass True if the administrator can edit stories posted by other users; channels only | ",
+ "rst_description": "Pass :code:`True` if the administrator can edit stories posted by other users; channels only\n",
+ "name": "can_edit_stories"
+ },
+ {
+ "type": "Boolean",
+ "required": false,
+ "description": "Pass True if the administrator can delete stories posted by other users; channels only",
+ "html_description": "Pass True if the administrator can delete stories posted by other users; channels only | ",
+ "rst_description": "Pass :code:`True` if the administrator can delete stories posted by other users; channels only\n",
+ "name": "can_delete_stories"
+ },
{
"type": "Boolean",
"required": false,
diff --git a/.butcher/types/ChatAdministratorRights/entity.json b/.butcher/types/ChatAdministratorRights/entity.json
index eb3b1c14..e493b3e2 100644
--- a/.butcher/types/ChatAdministratorRights/entity.json
+++ b/.butcher/types/ChatAdministratorRights/entity.json
@@ -21,9 +21,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege",
- "html_description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege | ",
- "rst_description": ":code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n",
+ "description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege",
+ "html_description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege | ",
+ "rst_description": ":code:`True`, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n",
"name": "can_manage_chat",
"required": true
},
@@ -45,9 +45,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can restrict, ban or unban chat members",
- "html_description": "True, if the administrator can restrict, ban or unban chat members | ",
- "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members\n",
+ "description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics",
+ "html_description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics | ",
+ "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members, or access supergroup statistics\n",
"name": "can_restrict_members",
"required": true
},
@@ -77,9 +77,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can post messages in the channel; channels only",
- "html_description": "Optional. True, if the administrator can post messages in the channel; channels only | ",
- "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only\n",
+ "description": "True, if the administrator can post messages in the channel, or access channel statistics; channels only",
+ "html_description": "Optional. True, if the administrator can post messages in the channel, or access channel statistics; channels only | ",
+ "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel, or access channel statistics; channels only\n",
"name": "can_post_messages",
"required": false
},
@@ -117,9 +117,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can delete stories posted by other users",
- "html_description": "Optional. True, if the administrator can delete stories posted by other users | ",
- "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users\n",
+ "description": "True, if the administrator can delete stories posted by other users; channels only",
+ "html_description": "Optional. True, if the administrator can delete stories posted by other users; channels only | ",
+ "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only\n",
"name": "can_delete_stories",
"required": false
},
diff --git a/.butcher/types/ChatJoinRequest/entity.json b/.butcher/types/ChatJoinRequest/entity.json
index 99fa2d7d..25cfe9e3 100644
--- a/.butcher/types/ChatJoinRequest/entity.json
+++ b/.butcher/types/ChatJoinRequest/entity.json
@@ -29,9 +29,9 @@
},
{
"type": "Integer",
- "description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user.",
- "html_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user. | ",
- "rst_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user.\n",
+ "description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user.",
+ "html_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user. | ",
+ "rst_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user.\n",
"name": "user_chat_id",
"required": true
},
diff --git a/.butcher/types/ChatMemberAdministrator/entity.json b/.butcher/types/ChatMemberAdministrator/entity.json
index 65981631..4679a1e0 100644
--- a/.butcher/types/ChatMemberAdministrator/entity.json
+++ b/.butcher/types/ChatMemberAdministrator/entity.json
@@ -45,9 +45,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege",
- "html_description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege | ",
- "rst_description": ":code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n",
+ "description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege",
+ "html_description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege | ",
+ "rst_description": ":code:`True`, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n",
"name": "can_manage_chat",
"required": true
},
@@ -69,9 +69,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can restrict, ban or unban chat members",
- "html_description": "True, if the administrator can restrict, ban or unban chat members | ",
- "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members\n",
+ "description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics",
+ "html_description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics | ",
+ "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members, or access supergroup statistics\n",
"name": "can_restrict_members",
"required": true
},
@@ -101,9 +101,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can post messages in the channel; channels only",
- "html_description": "Optional. True, if the administrator can post messages in the channel; channels only | ",
- "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only\n",
+ "description": "True, if the administrator can post messages in the channel, or access channel statistics; channels only",
+ "html_description": "Optional. True, if the administrator can post messages in the channel, or access channel statistics; channels only | ",
+ "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel, or access channel statistics; channels only\n",
"name": "can_post_messages",
"required": false
},
@@ -141,9 +141,9 @@
},
{
"type": "Boolean",
- "description": "True, if the administrator can delete stories posted by other users",
- "html_description": "Optional. True, if the administrator can delete stories posted by other users | ",
- "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users\n",
+ "description": "True, if the administrator can delete stories posted by other users; channels only",
+ "html_description": "Optional. True, if the administrator can delete stories posted by other users; channels only | ",
+ "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only\n",
"name": "can_delete_stories",
"required": false
},
diff --git a/.butcher/types/Update/entity.json b/.butcher/types/Update/entity.json
index 1ee46f08..9ccf33e5 100644
--- a/.butcher/types/Update/entity.json
+++ b/.butcher/types/Update/entity.json
@@ -117,9 +117,9 @@
},
{
"type": "ChatMemberUpdated",
- "description": "A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify 'chat_member' in the list of allowed_updates to receive these updates.",
- "html_description": "Optional. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify “chat_member” in the list of allowed_updates to receive these updates. | ",
- "rst_description": "*Optional*. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify 'chat_member' in the list of *allowed_updates* to receive these updates.\n",
+ "description": "A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify \"chat_member\" in the list of allowed_updates to receive these updates.",
+ "html_description": "Optional. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify \"chat_member\" in the list of allowed_updates to receive these updates. | ",
+ "rst_description": "*Optional*. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify :code:`\"chat_member\"` in the list of *allowed_updates* to receive these updates.\n",
"name": "chat_member",
"required": false
},
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index e5e85147..d238a558 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -74,7 +74,7 @@ jobs:
- name: Lint code
if: "env.IS_PYPY == 'false'"
run: |
- ruff --format=github aiogram examples
+ ruff --output-format=github aiogram examples
mypy aiogram
black --check --diff aiogram tests
diff --git a/.readthedocs.yml b/.readthedocs.yml
index 41b7a452..b61b3f17 100644
--- a/.readthedocs.yml
+++ b/.readthedocs.yml
@@ -1,13 +1,12 @@
version: 2
-python:
- version: "3.8"
- install:
- - method: pip
- path: .
- extra_requirements:
- - docs
- - redis
+build:
+ os: ubuntu-22.04
+ tools:
+ python: "3.11"
+ jobs:
+ post_install:
+ - pip install .[docs,redis]
sphinx:
configuration: docs/conf.py
diff --git a/CHANGES/1340.doc.rst b/CHANGES/1340.doc.rst
new file mode 100644
index 00000000..83bd6723
--- /dev/null
+++ b/CHANGES/1340.doc.rst
@@ -0,0 +1 @@
+Minor typo correction, specifically in module naming + some grammar.
diff --git a/CHANGES/1343.feature.rst b/CHANGES/1343.feature.rst
new file mode 100644
index 00000000..6ae25cd3
--- /dev/null
+++ b/CHANGES/1343.feature.rst
@@ -0,0 +1 @@
+The new FSM strategy CHAT_TOPIC, which sets the state for the entire topic in the chat, also works in private messages and regular groups without topics.
diff --git a/CHANGES/1347.misc.rst b/CHANGES/1347.misc.rst
new file mode 100644
index 00000000..2da2e568
--- /dev/null
+++ b/CHANGES/1347.misc.rst
@@ -0,0 +1 @@
+Updated :code:`typing-extensions` package version range in dependencies to fix compatibility with :code:`FastAPI`
diff --git a/CHANGES/1351.doc.rst b/CHANGES/1351.doc.rst
new file mode 100644
index 00000000..5108d25e
--- /dev/null
+++ b/CHANGES/1351.doc.rst
@@ -0,0 +1,2 @@
+Added `CITATION.cff` file for automatic academic citation generation.
+Now you can copy citation from the GitHub page and paste it into your paper.
diff --git a/CITATION.cff b/CITATION.cff
new file mode 100644
index 00000000..6eb723ae
--- /dev/null
+++ b/CITATION.cff
@@ -0,0 +1,23 @@
+# This CITATION.cff file was generated with cffinit.
+# Visit https://bit.ly/cffinit to generate yours today!
+
+cff-version: 1.2.0
+title: aiogram
+message: >-
+ If you use this software, please cite it using the
+ metadata from this file.
+type: software
+authors:
+ - given-names: Oleksandr
+ family-names: Onufriichuk
+ email: im@aiogram.dev
+repository-code: 'https://github.com/aiogram/aiogram'
+url: 'https://aiogram.dev'
+abstract: >-
+ aiogram is a modern and fully asynchronous framework for
+ Telegram Bot API written in Python using asyncio
+keywords:
+ - aiogram
+ - telegram
+ - bot
+license: MIT
diff --git a/Makefile b/Makefile
index 327f94df..0464bd45 100644
--- a/Makefile
+++ b/Makefile
@@ -119,3 +119,16 @@ release:
git add .
git commit -m "Release $(shell poetry version -s)"
git tag v$(shell hatch version -s)
+
+
+butcher_version := 0.1.23
+
+butcher-install:
+ pip install -U git+ssh://git@github.com/aiogram/butcher.git@v$(butcher_version)
+.PHONY: butcher-install
+
+butcher:
+ butcher parse
+ butcher refresh
+ butcher apply all
+.PHONY: butcher
diff --git a/aiogram/__init__.py b/aiogram/__init__.py
index 2ea9f79f..31d1b16b 100644
--- a/aiogram/__init__.py
+++ b/aiogram/__init__.py
@@ -16,7 +16,7 @@ from .utils.text_decorations import markdown_decoration as md
with suppress(ImportError):
import uvloop as _uvloop
- _uvloop.install()
+ _uvloop.install() # type: ignore[attr-defined,unused-ignore]
F = MagicFilter()
flags = FlagGenerator()
diff --git a/aiogram/client/bot.py b/aiogram/client/bot.py
index 3a360c25..bcaeff35 100644
--- a/aiogram/client/bot.py
+++ b/aiogram/client/bot.py
@@ -1849,7 +1849,7 @@ class Bot:
:param offset: Identifier of the first update to be returned. Must be greater by one than the highest among the identifiers of previously received updates. By default, updates starting with the earliest unconfirmed update are returned. An update is considered confirmed as soon as :class:`aiogram.methods.get_updates.GetUpdates` is called with an *offset* higher than its *update_id*. The negative offset can be specified to retrieve updates starting from *-offset* update from the end of the updates queue. All previous updates will be forgotten.
:param limit: Limits the number of updates to be retrieved. Values between 1-100 are accepted. Defaults to 100.
:param timeout: Timeout in seconds for long polling. Defaults to 0, i.e. usual short polling. Should be positive, short polling should be used for testing purposes only.
- :param allowed_updates: A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.
+ :param allowed_updates: A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`["message", "edited_channel_post", "callback_query"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.
:param request_timeout: Request timeout
:return: Returns an Array of :class:`aiogram.types.update.Update` objects.
"""
@@ -1972,15 +1972,18 @@ class Bot:
user_id: int,
is_anonymous: Optional[bool] = None,
can_manage_chat: Optional[bool] = None,
- can_post_messages: Optional[bool] = None,
- can_edit_messages: Optional[bool] = None,
can_delete_messages: Optional[bool] = None,
can_manage_video_chats: Optional[bool] = None,
can_restrict_members: Optional[bool] = None,
can_promote_members: Optional[bool] = None,
can_change_info: Optional[bool] = None,
can_invite_users: Optional[bool] = None,
+ can_post_messages: Optional[bool] = None,
+ can_edit_messages: Optional[bool] = None,
can_pin_messages: Optional[bool] = None,
+ can_post_stories: Optional[bool] = None,
+ can_edit_stories: Optional[bool] = None,
+ can_delete_stories: Optional[bool] = None,
can_manage_topics: Optional[bool] = None,
request_timeout: Optional[int] = None,
) -> bool:
@@ -1992,16 +1995,19 @@ class Bot:
:param chat_id: Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)
:param user_id: Unique identifier of the target user
:param is_anonymous: Pass :code:`True` if the administrator's presence in the chat is hidden
- :param can_manage_chat: Pass :code:`True` if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege
- :param can_post_messages: Pass :code:`True` if the administrator can create channel posts, channels only
- :param can_edit_messages: Pass :code:`True` if the administrator can edit messages of other users and can pin messages, channels only
+ :param can_manage_chat: Pass :code:`True` if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege
:param can_delete_messages: Pass :code:`True` if the administrator can delete messages of other users
:param can_manage_video_chats: Pass :code:`True` if the administrator can manage video chats
- :param can_restrict_members: Pass :code:`True` if the administrator can restrict, ban or unban chat members
+ :param can_restrict_members: Pass :code:`True` if the administrator can restrict, ban or unban chat members, or access supergroup statistics
:param can_promote_members: Pass :code:`True` if the administrator can add new administrators with a subset of their own privileges or demote administrators that they have promoted, directly or indirectly (promoted by administrators that were appointed by him)
:param can_change_info: Pass :code:`True` if the administrator can change chat title, photo and other settings
:param can_invite_users: Pass :code:`True` if the administrator can invite new users to the chat
+ :param can_post_messages: Pass :code:`True` if the administrator can post messages in the channel, or access channel statistics; channels only
+ :param can_edit_messages: Pass :code:`True` if the administrator can edit messages of other users and can pin messages; channels only
:param can_pin_messages: Pass :code:`True` if the administrator can pin messages, supergroups only
+ :param can_post_stories: Pass :code:`True` if the administrator can post stories in the channel; channels only
+ :param can_edit_stories: Pass :code:`True` if the administrator can edit stories posted by other users; channels only
+ :param can_delete_stories: Pass :code:`True` if the administrator can delete stories posted by other users; channels only
:param can_manage_topics: Pass :code:`True` if the user is allowed to create, rename, close, and reopen forum topics, supergroups only
:param request_timeout: Request timeout
:return: Returns :code:`True` on success.
@@ -2012,15 +2018,18 @@ class Bot:
user_id=user_id,
is_anonymous=is_anonymous,
can_manage_chat=can_manage_chat,
- can_post_messages=can_post_messages,
- can_edit_messages=can_edit_messages,
can_delete_messages=can_delete_messages,
can_manage_video_chats=can_manage_video_chats,
can_restrict_members=can_restrict_members,
can_promote_members=can_promote_members,
can_change_info=can_change_info,
can_invite_users=can_invite_users,
+ can_post_messages=can_post_messages,
+ can_edit_messages=can_edit_messages,
can_pin_messages=can_pin_messages,
+ can_post_stories=can_post_stories,
+ can_edit_stories=can_edit_stories,
+ can_delete_stories=can_delete_stories,
can_manage_topics=can_manage_topics,
)
return await self(call, request_timeout=request_timeout)
@@ -3481,7 +3490,7 @@ class Bot:
:param certificate: Upload your public key certificate so that the root certificate in use can be checked. See our `self-signed guide `_ for details.
:param ip_address: The fixed IP address which will be used to send webhook requests instead of the IP address resolved through DNS
:param max_connections: The maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery, 1-100. Defaults to *40*. Use lower values to limit the load on your bot's server, and higher values to increase your bot's throughput.
- :param allowed_updates: A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.
+ :param allowed_updates: A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`["message", "edited_channel_post", "callback_query"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.
:param drop_pending_updates: Pass :code:`True` to drop all pending updates
:param secret_token: A secret token to be sent in a header 'X-Telegram-Bot-Api-Secret-Token' in every webhook request, 1-256 characters. Only characters :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed. The header is useful to ensure that the request comes from a webhook set by you.
:param request_timeout: Request timeout
diff --git a/aiogram/fsm/strategy.py b/aiogram/fsm/strategy.py
index 2695d60e..f68aa045 100644
--- a/aiogram/fsm/strategy.py
+++ b/aiogram/fsm/strategy.py
@@ -7,6 +7,7 @@ class FSMStrategy(Enum):
CHAT = auto()
GLOBAL_USER = auto()
USER_IN_TOPIC = auto()
+ CHAT_TOPIC = auto()
def apply_strategy(
@@ -21,4 +22,7 @@ def apply_strategy(
return user_id, user_id, None
if strategy == FSMStrategy.USER_IN_TOPIC:
return chat_id, user_id, thread_id
+ if strategy == FSMStrategy.CHAT_TOPIC:
+ return chat_id, chat_id, thread_id
+
return chat_id, user_id, None
diff --git a/aiogram/methods/get_updates.py b/aiogram/methods/get_updates.py
index 5c28aea3..dd9f855e 100644
--- a/aiogram/methods/get_updates.py
+++ b/aiogram/methods/get_updates.py
@@ -29,7 +29,7 @@ class GetUpdates(TelegramMethod[List[Update]]):
timeout: Optional[int] = None
"""Timeout in seconds for long polling. Defaults to 0, i.e. usual short polling. Should be positive, short polling should be used for testing purposes only."""
allowed_updates: Optional[List[str]] = None
- """A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used."""
+ """A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`["message", "edited_channel_post", "callback_query"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used."""
if TYPE_CHECKING:
# DO NOT EDIT MANUALLY!!!
diff --git a/aiogram/methods/promote_chat_member.py b/aiogram/methods/promote_chat_member.py
index 4f9377d3..8be42d30 100644
--- a/aiogram/methods/promote_chat_member.py
+++ b/aiogram/methods/promote_chat_member.py
@@ -22,25 +22,31 @@ class PromoteChatMember(TelegramMethod[bool]):
is_anonymous: Optional[bool] = None
"""Pass :code:`True` if the administrator's presence in the chat is hidden"""
can_manage_chat: Optional[bool] = None
- """Pass :code:`True` if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege"""
- can_post_messages: Optional[bool] = None
- """Pass :code:`True` if the administrator can create channel posts, channels only"""
- can_edit_messages: Optional[bool] = None
- """Pass :code:`True` if the administrator can edit messages of other users and can pin messages, channels only"""
+ """Pass :code:`True` if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege"""
can_delete_messages: Optional[bool] = None
"""Pass :code:`True` if the administrator can delete messages of other users"""
can_manage_video_chats: Optional[bool] = None
"""Pass :code:`True` if the administrator can manage video chats"""
can_restrict_members: Optional[bool] = None
- """Pass :code:`True` if the administrator can restrict, ban or unban chat members"""
+ """Pass :code:`True` if the administrator can restrict, ban or unban chat members, or access supergroup statistics"""
can_promote_members: Optional[bool] = None
"""Pass :code:`True` if the administrator can add new administrators with a subset of their own privileges or demote administrators that they have promoted, directly or indirectly (promoted by administrators that were appointed by him)"""
can_change_info: Optional[bool] = None
"""Pass :code:`True` if the administrator can change chat title, photo and other settings"""
can_invite_users: Optional[bool] = None
"""Pass :code:`True` if the administrator can invite new users to the chat"""
+ can_post_messages: Optional[bool] = None
+ """Pass :code:`True` if the administrator can post messages in the channel, or access channel statistics; channels only"""
+ can_edit_messages: Optional[bool] = None
+ """Pass :code:`True` if the administrator can edit messages of other users and can pin messages; channels only"""
can_pin_messages: Optional[bool] = None
"""Pass :code:`True` if the administrator can pin messages, supergroups only"""
+ can_post_stories: Optional[bool] = None
+ """Pass :code:`True` if the administrator can post stories in the channel; channels only"""
+ can_edit_stories: Optional[bool] = None
+ """Pass :code:`True` if the administrator can edit stories posted by other users; channels only"""
+ can_delete_stories: Optional[bool] = None
+ """Pass :code:`True` if the administrator can delete stories posted by other users; channels only"""
can_manage_topics: Optional[bool] = None
"""Pass :code:`True` if the user is allowed to create, rename, close, and reopen forum topics, supergroups only"""
@@ -55,15 +61,18 @@ class PromoteChatMember(TelegramMethod[bool]):
user_id: int,
is_anonymous: Optional[bool] = None,
can_manage_chat: Optional[bool] = None,
- can_post_messages: Optional[bool] = None,
- can_edit_messages: Optional[bool] = None,
can_delete_messages: Optional[bool] = None,
can_manage_video_chats: Optional[bool] = None,
can_restrict_members: Optional[bool] = None,
can_promote_members: Optional[bool] = None,
can_change_info: Optional[bool] = None,
can_invite_users: Optional[bool] = None,
+ can_post_messages: Optional[bool] = None,
+ can_edit_messages: Optional[bool] = None,
can_pin_messages: Optional[bool] = None,
+ can_post_stories: Optional[bool] = None,
+ can_edit_stories: Optional[bool] = None,
+ can_delete_stories: Optional[bool] = None,
can_manage_topics: Optional[bool] = None,
**__pydantic_kwargs: Any,
) -> None:
@@ -76,15 +85,18 @@ class PromoteChatMember(TelegramMethod[bool]):
user_id=user_id,
is_anonymous=is_anonymous,
can_manage_chat=can_manage_chat,
- can_post_messages=can_post_messages,
- can_edit_messages=can_edit_messages,
can_delete_messages=can_delete_messages,
can_manage_video_chats=can_manage_video_chats,
can_restrict_members=can_restrict_members,
can_promote_members=can_promote_members,
can_change_info=can_change_info,
can_invite_users=can_invite_users,
+ can_post_messages=can_post_messages,
+ can_edit_messages=can_edit_messages,
can_pin_messages=can_pin_messages,
+ can_post_stories=can_post_stories,
+ can_edit_stories=can_edit_stories,
+ can_delete_stories=can_delete_stories,
can_manage_topics=can_manage_topics,
**__pydantic_kwargs,
)
diff --git a/aiogram/methods/set_webhook.py b/aiogram/methods/set_webhook.py
index 92892531..da8ec9d4 100644
--- a/aiogram/methods/set_webhook.py
+++ b/aiogram/methods/set_webhook.py
@@ -35,7 +35,7 @@ class SetWebhook(TelegramMethod[bool]):
max_connections: Optional[int] = None
"""The maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery, 1-100. Defaults to *40*. Use lower values to limit the load on your bot's server, and higher values to increase your bot's throughput."""
allowed_updates: Optional[List[str]] = None
- """A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used."""
+ """A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`["message", "edited_channel_post", "callback_query"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used."""
drop_pending_updates: Optional[bool] = None
"""Pass :code:`True` to drop all pending updates"""
secret_token: Optional[str] = None
diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py
index b5bcd5d4..d2ef2487 100644
--- a/aiogram/types/chat.py
+++ b/aiogram/types/chat.py
@@ -811,15 +811,18 @@ class Chat(TelegramObject):
user_id: int,
is_anonymous: Optional[bool] = None,
can_manage_chat: Optional[bool] = None,
- can_post_messages: Optional[bool] = None,
- can_edit_messages: Optional[bool] = None,
can_delete_messages: Optional[bool] = None,
can_manage_video_chats: Optional[bool] = None,
can_restrict_members: Optional[bool] = None,
can_promote_members: Optional[bool] = None,
can_change_info: Optional[bool] = None,
can_invite_users: Optional[bool] = None,
+ can_post_messages: Optional[bool] = None,
+ can_edit_messages: Optional[bool] = None,
can_pin_messages: Optional[bool] = None,
+ can_post_stories: Optional[bool] = None,
+ can_edit_stories: Optional[bool] = None,
+ can_delete_stories: Optional[bool] = None,
can_manage_topics: Optional[bool] = None,
**kwargs: Any,
) -> PromoteChatMember:
@@ -835,16 +838,19 @@ class Chat(TelegramObject):
:param user_id: Unique identifier of the target user
:param is_anonymous: Pass :code:`True` if the administrator's presence in the chat is hidden
- :param can_manage_chat: Pass :code:`True` if the administrator can access the chat event log, chat statistics, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege
- :param can_post_messages: Pass :code:`True` if the administrator can create channel posts, channels only
- :param can_edit_messages: Pass :code:`True` if the administrator can edit messages of other users and can pin messages, channels only
+ :param can_manage_chat: Pass :code:`True` if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege
:param can_delete_messages: Pass :code:`True` if the administrator can delete messages of other users
:param can_manage_video_chats: Pass :code:`True` if the administrator can manage video chats
- :param can_restrict_members: Pass :code:`True` if the administrator can restrict, ban or unban chat members
+ :param can_restrict_members: Pass :code:`True` if the administrator can restrict, ban or unban chat members, or access supergroup statistics
:param can_promote_members: Pass :code:`True` if the administrator can add new administrators with a subset of their own privileges or demote administrators that they have promoted, directly or indirectly (promoted by administrators that were appointed by him)
:param can_change_info: Pass :code:`True` if the administrator can change chat title, photo and other settings
:param can_invite_users: Pass :code:`True` if the administrator can invite new users to the chat
+ :param can_post_messages: Pass :code:`True` if the administrator can post messages in the channel, or access channel statistics; channels only
+ :param can_edit_messages: Pass :code:`True` if the administrator can edit messages of other users and can pin messages; channels only
:param can_pin_messages: Pass :code:`True` if the administrator can pin messages, supergroups only
+ :param can_post_stories: Pass :code:`True` if the administrator can post stories in the channel; channels only
+ :param can_edit_stories: Pass :code:`True` if the administrator can edit stories posted by other users; channels only
+ :param can_delete_stories: Pass :code:`True` if the administrator can delete stories posted by other users; channels only
:param can_manage_topics: Pass :code:`True` if the user is allowed to create, rename, close, and reopen forum topics, supergroups only
:return: instance of method :class:`aiogram.methods.promote_chat_member.PromoteChatMember`
"""
@@ -858,15 +864,18 @@ class Chat(TelegramObject):
user_id=user_id,
is_anonymous=is_anonymous,
can_manage_chat=can_manage_chat,
- can_post_messages=can_post_messages,
- can_edit_messages=can_edit_messages,
can_delete_messages=can_delete_messages,
can_manage_video_chats=can_manage_video_chats,
can_restrict_members=can_restrict_members,
can_promote_members=can_promote_members,
can_change_info=can_change_info,
can_invite_users=can_invite_users,
+ can_post_messages=can_post_messages,
+ can_edit_messages=can_edit_messages,
can_pin_messages=can_pin_messages,
+ can_post_stories=can_post_stories,
+ can_edit_stories=can_edit_stories,
+ can_delete_stories=can_delete_stories,
can_manage_topics=can_manage_topics,
**kwargs,
).as_(self._bot)
diff --git a/aiogram/types/chat_administrator_rights.py b/aiogram/types/chat_administrator_rights.py
index da5179b7..cccda5b2 100644
--- a/aiogram/types/chat_administrator_rights.py
+++ b/aiogram/types/chat_administrator_rights.py
@@ -18,13 +18,13 @@ class ChatAdministratorRights(TelegramObject):
is_anonymous: bool
""":code:`True`, if the user's presence in the chat is hidden"""
can_manage_chat: bool
- """:code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege"""
+ """:code:`True`, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege"""
can_delete_messages: bool
""":code:`True`, if the administrator can delete messages of other users"""
can_manage_video_chats: bool
""":code:`True`, if the administrator can manage video chats"""
can_restrict_members: bool
- """:code:`True`, if the administrator can restrict, ban or unban chat members"""
+ """:code:`True`, if the administrator can restrict, ban or unban chat members, or access supergroup statistics"""
can_promote_members: bool
""":code:`True`, if the administrator can add new administrators with a subset of their own privileges or demote administrators that they have promoted, directly or indirectly (promoted by administrators that were appointed by the user)"""
can_change_info: bool
@@ -32,7 +32,7 @@ class ChatAdministratorRights(TelegramObject):
can_invite_users: bool
""":code:`True`, if the user is allowed to invite new users to the chat"""
can_post_messages: Optional[bool] = None
- """*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only"""
+ """*Optional*. :code:`True`, if the administrator can post messages in the channel, or access channel statistics; channels only"""
can_edit_messages: Optional[bool] = None
"""*Optional*. :code:`True`, if the administrator can edit messages of other users and can pin messages; channels only"""
can_pin_messages: Optional[bool] = None
@@ -42,7 +42,7 @@ class ChatAdministratorRights(TelegramObject):
can_edit_stories: Optional[bool] = None
"""*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only"""
can_delete_stories: Optional[bool] = None
- """*Optional*. :code:`True`, if the administrator can delete stories posted by other users"""
+ """*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only"""
can_manage_topics: Optional[bool] = None
"""*Optional*. :code:`True`, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only"""
diff --git a/aiogram/types/chat_join_request.py b/aiogram/types/chat_join_request.py
index 9a9f73b9..b8ba33d2 100644
--- a/aiogram/types/chat_join_request.py
+++ b/aiogram/types/chat_join_request.py
@@ -63,7 +63,7 @@ class ChatJoinRequest(TelegramObject):
from_user: User = Field(..., alias="from")
"""User that sent the join request"""
user_chat_id: int
- """Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user."""
+ """Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user."""
date: DateTime
"""Date the request was sent in Unix time"""
bio: Optional[str] = None
diff --git a/aiogram/types/chat_member_administrator.py b/aiogram/types/chat_member_administrator.py
index 0db04dce..215ff0bd 100644
--- a/aiogram/types/chat_member_administrator.py
+++ b/aiogram/types/chat_member_administrator.py
@@ -25,13 +25,13 @@ class ChatMemberAdministrator(ChatMember):
is_anonymous: bool
""":code:`True`, if the user's presence in the chat is hidden"""
can_manage_chat: bool
- """:code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege"""
+ """:code:`True`, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege"""
can_delete_messages: bool
""":code:`True`, if the administrator can delete messages of other users"""
can_manage_video_chats: bool
""":code:`True`, if the administrator can manage video chats"""
can_restrict_members: bool
- """:code:`True`, if the administrator can restrict, ban or unban chat members"""
+ """:code:`True`, if the administrator can restrict, ban or unban chat members, or access supergroup statistics"""
can_promote_members: bool
""":code:`True`, if the administrator can add new administrators with a subset of their own privileges or demote administrators that they have promoted, directly or indirectly (promoted by administrators that were appointed by the user)"""
can_change_info: bool
@@ -39,7 +39,7 @@ class ChatMemberAdministrator(ChatMember):
can_invite_users: bool
""":code:`True`, if the user is allowed to invite new users to the chat"""
can_post_messages: Optional[bool] = None
- """*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only"""
+ """*Optional*. :code:`True`, if the administrator can post messages in the channel, or access channel statistics; channels only"""
can_edit_messages: Optional[bool] = None
"""*Optional*. :code:`True`, if the administrator can edit messages of other users and can pin messages; channels only"""
can_pin_messages: Optional[bool] = None
@@ -49,7 +49,7 @@ class ChatMemberAdministrator(ChatMember):
can_edit_stories: Optional[bool] = None
"""*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only"""
can_delete_stories: Optional[bool] = None
- """*Optional*. :code:`True`, if the administrator can delete stories posted by other users"""
+ """*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only"""
can_manage_topics: Optional[bool] = None
"""*Optional*. :code:`True`, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only"""
custom_title: Optional[str] = None
diff --git a/aiogram/types/update.py b/aiogram/types/update.py
index dbaa3222..aed68270 100644
--- a/aiogram/types/update.py
+++ b/aiogram/types/update.py
@@ -54,7 +54,7 @@ class Update(TelegramObject):
my_chat_member: Optional[ChatMemberUpdated] = None
"""*Optional*. The bot's chat member status was updated in a chat. For private chats, this update is received only when the bot is blocked or unblocked by the user."""
chat_member: Optional[ChatMemberUpdated] = None
- """*Optional*. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify 'chat_member' in the list of *allowed_updates* to receive these updates."""
+ """*Optional*. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify :code:`"chat_member"` in the list of *allowed_updates* to receive these updates."""
chat_join_request: Optional[ChatJoinRequest] = None
"""*Optional*. A request to join the chat has been sent. The bot must have the *can_invite_users* administrator right in the chat to receive these updates."""
diff --git a/docs/dispatcher/class_based_handlers/base.rst b/docs/dispatcher/class_based_handlers/base.rst
index 0d478224..8c694d4f 100644
--- a/docs/dispatcher/class_based_handlers/base.rst
+++ b/docs/dispatcher/class_based_handlers/base.rst
@@ -6,15 +6,15 @@ BaseHandler
Base handler is generic abstract class and should be used in all other class-based handlers.
-Import: :code:`from aiogram.handler import BaseHandler`
+Import: :code:`from aiogram.handlers import BaseHandler`
By default you will need to override only method :code:`async def handle(self) -> Any: ...`
-This class is also have an default initializer and you don't need to change it.
-Initializer accepts current event and all contextual data and which
+This class also has a default initializer and you don't need to change it.
+The initializer accepts the incoming event and all contextual data, which
can be accessed from the handler through attributes: :code:`event: TelegramEvent` and :code:`data: Dict[Any, str]`
-If instance of the bot is specified in context data or current context it can be accessed through *bot* class attribute.
+If an instance of the bot is specified in context data or current context it can be accessed through *bot* class attribute.
Example
=======
diff --git a/docs/dispatcher/webhook.rst b/docs/dispatcher/webhook.rst
index 6869124e..ec2612ff 100644
--- a/docs/dispatcher/webhook.rst
+++ b/docs/dispatcher/webhook.rst
@@ -97,7 +97,7 @@ When you use nginx as reverse proxy, you should set `proxy_pass` to your aiohttp
Without reverse proxy (not recommended)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In case you want can't use reverse proxy, you can use aiohttp's ssl context.
+In case without using reverse proxy, you can use aiohttp's ssl context.
Also this example contains usage with self-signed certificate.
diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_updates.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_updates.po
index 39a54f54..778713f6 100644
--- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_updates.po
+++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_updates.po
@@ -8,14 +8,14 @@ msgid ""
msgstr ""
"Project-Id-Version: aiogram \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-07-02 15:10+0300\n"
+"POT-Creation-Date: 2023-10-29 02:16+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.12.1\n"
+"Generated-By: Babel 2.13.1\n"
#: ../../api/methods/get_updates.rst:3
msgid "getUpdates"
@@ -78,39 +78,39 @@ msgstr ""
#: ../../docstring aiogram.methods.get_updates.GetUpdates.allowed_updates:1 of
msgid ""
"A JSON-serialized list of the update types you want your bot to receive. "
-"For example, specify ['message', 'edited_channel_post', 'callback_query']"
-" to only receive updates of these types. See "
+"For example, specify :code:`[\"message\", \"edited_channel_post\", "
+"\"callback_query\"]` to only receive updates of these types. See "
":class:`aiogram.types.update.Update` for a complete list of available "
"update types. Specify an empty list to receive all update types except "
"*chat_member* (default). If not specified, the previous setting will be "
"used."
msgstr ""
-#: ../../api/methods/get_updates.rst:14
+#: ../../api/methods/get_updates.rst:15
msgid "Usage"
msgstr ""
-#: ../../api/methods/get_updates.rst:17
+#: ../../api/methods/get_updates.rst:18
msgid "As bot method"
msgstr ""
-#: ../../api/methods/get_updates.rst:25
+#: ../../api/methods/get_updates.rst:26
msgid "Method as object"
msgstr ""
-#: ../../api/methods/get_updates.rst:27
+#: ../../api/methods/get_updates.rst:28
msgid "Imports:"
msgstr ""
-#: ../../api/methods/get_updates.rst:29
+#: ../../api/methods/get_updates.rst:30
msgid ":code:`from aiogram.methods.get_updates import GetUpdates`"
msgstr ""
-#: ../../api/methods/get_updates.rst:30
+#: ../../api/methods/get_updates.rst:31
msgid "alias: :code:`from aiogram.methods import GetUpdates`"
msgstr ""
-#: ../../api/methods/get_updates.rst:33
+#: ../../api/methods/get_updates.rst:34
msgid "With specific bot"
msgstr ""
@@ -131,3 +131,17 @@ msgstr ""
#~ "of the updates queue. All previous "
#~ "updates will forgotten."
#~ msgstr ""
+
+#~ msgid ""
+#~ "A JSON-serialized list of the "
+#~ "update types you want your bot to"
+#~ " receive. For example, specify ['message',"
+#~ " 'edited_channel_post', 'callback_query'] to only"
+#~ " receive updates of these types. See"
+#~ " :class:`aiogram.types.update.Update` for a "
+#~ "complete list of available update types."
+#~ " Specify an empty list to receive "
+#~ "all update types except *chat_member* "
+#~ "(default). If not specified, the "
+#~ "previous setting will be used."
+#~ msgstr ""
diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/promote_chat_member.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/promote_chat_member.po
index 8c7dbc2b..def69532 100644
--- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/promote_chat_member.po
+++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/promote_chat_member.po
@@ -8,14 +8,14 @@ msgid ""
msgstr ""
"Project-Id-Version: aiogram \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-02-12 00:22+0200\n"
+"POT-Creation-Date: 2023-10-29 02:16+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.9.1\n"
+"Generated-By: Babel 2.13.1\n"
#: ../../api/methods/promote_chat_member.rst:3
msgid "promoteChatMember"
@@ -58,23 +58,9 @@ msgstr ""
#: aiogram.methods.promote_chat_member.PromoteChatMember.can_manage_chat:1 of
msgid ""
"Pass :code:`True` if the administrator can access the chat event log, "
-"chat statistics, message statistics in channels, see channel members, see"
-" anonymous administrators in supergroups and ignore slow mode. Implied by"
-" any other administrator privilege"
-msgstr ""
-
-#: ../../docstring
-#: aiogram.methods.promote_chat_member.PromoteChatMember.can_post_messages:1 of
-msgid ""
-"Pass :code:`True` if the administrator can create channel posts, channels"
-" only"
-msgstr ""
-
-#: ../../docstring
-#: aiogram.methods.promote_chat_member.PromoteChatMember.can_edit_messages:1 of
-msgid ""
-"Pass :code:`True` if the administrator can edit messages of other users "
-"and can pin messages, channels only"
+"boost list in channels, see channel members, report spam messages, see "
+"anonymous administrators in supergroups and ignore slow mode. Implied by "
+"any other administrator privilege"
msgstr ""
#: ../../docstring
@@ -94,7 +80,7 @@ msgstr ""
#: of
msgid ""
"Pass :code:`True` if the administrator can restrict, ban or unban chat "
-"members"
+"members, or access supergroup statistics"
msgstr ""
#: ../../docstring
@@ -119,11 +105,47 @@ msgstr ""
msgid "Pass :code:`True` if the administrator can invite new users to the chat"
msgstr ""
+#: ../../docstring
+#: aiogram.methods.promote_chat_member.PromoteChatMember.can_post_messages:1 of
+msgid ""
+"Pass :code:`True` if the administrator can post messages in the channel, "
+"or access channel statistics; channels only"
+msgstr ""
+
+#: ../../docstring
+#: aiogram.methods.promote_chat_member.PromoteChatMember.can_edit_messages:1 of
+msgid ""
+"Pass :code:`True` if the administrator can edit messages of other users "
+"and can pin messages; channels only"
+msgstr ""
+
#: ../../docstring
#: aiogram.methods.promote_chat_member.PromoteChatMember.can_pin_messages:1 of
msgid "Pass :code:`True` if the administrator can pin messages, supergroups only"
msgstr ""
+#: ../../docstring
+#: aiogram.methods.promote_chat_member.PromoteChatMember.can_post_stories:1 of
+msgid ""
+"Pass :code:`True` if the administrator can post stories in the channel; "
+"channels only"
+msgstr ""
+
+#: ../../docstring
+#: aiogram.methods.promote_chat_member.PromoteChatMember.can_edit_stories:1 of
+msgid ""
+"Pass :code:`True` if the administrator can edit stories posted by other "
+"users; channels only"
+msgstr ""
+
+#: ../../docstring
+#: aiogram.methods.promote_chat_member.PromoteChatMember.can_delete_stories:1
+#: of
+msgid ""
+"Pass :code:`True` if the administrator can delete stories posted by other"
+" users; channels only"
+msgstr ""
+
#: ../../docstring
#: aiogram.methods.promote_chat_member.PromoteChatMember.can_manage_topics:1 of
msgid ""
@@ -131,43 +153,43 @@ msgid ""
"reopen forum topics, supergroups only"
msgstr ""
-#: ../../api/methods/promote_chat_member.rst:14
+#: ../../api/methods/promote_chat_member.rst:15
msgid "Usage"
msgstr ""
-#: ../../api/methods/promote_chat_member.rst:17
+#: ../../api/methods/promote_chat_member.rst:18
msgid "As bot method"
msgstr ""
-#: ../../api/methods/promote_chat_member.rst:25
+#: ../../api/methods/promote_chat_member.rst:26
msgid "Method as object"
msgstr ""
-#: ../../api/methods/promote_chat_member.rst:27
+#: ../../api/methods/promote_chat_member.rst:28
msgid "Imports:"
msgstr ""
-#: ../../api/methods/promote_chat_member.rst:29
+#: ../../api/methods/promote_chat_member.rst:30
msgid ":code:`from aiogram.methods.promote_chat_member import PromoteChatMember`"
msgstr ""
-#: ../../api/methods/promote_chat_member.rst:30
+#: ../../api/methods/promote_chat_member.rst:31
msgid "alias: :code:`from aiogram.methods import PromoteChatMember`"
msgstr ""
-#: ../../api/methods/promote_chat_member.rst:33
+#: ../../api/methods/promote_chat_member.rst:34
msgid "With specific bot"
msgstr ""
-#: ../../api/methods/promote_chat_member.rst:40
+#: ../../api/methods/promote_chat_member.rst:41
msgid "As reply into Webhook in handler"
msgstr ""
-#: ../../api/methods/promote_chat_member.rst:48
+#: ../../api/methods/promote_chat_member.rst:49
msgid "As shortcut from received object"
msgstr ""
-#: ../../api/methods/promote_chat_member.rst:50
+#: ../../api/methods/promote_chat_member.rst:51
msgid ":meth:`aiogram.types.chat.Chat.promote`"
msgstr ""
@@ -181,3 +203,29 @@ msgstr ""
#~ " him)"
#~ msgstr ""
+#~ msgid ""
+#~ "Pass :code:`True` if the administrator "
+#~ "can access the chat event log, "
+#~ "chat statistics, message statistics in "
+#~ "channels, see channel members, see "
+#~ "anonymous administrators in supergroups and"
+#~ " ignore slow mode. Implied by any "
+#~ "other administrator privilege"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Pass :code:`True` if the administrator "
+#~ "can create channel posts, channels only"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Pass :code:`True` if the administrator "
+#~ "can edit messages of other users "
+#~ "and can pin messages, channels only"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Pass :code:`True` if the administrator "
+#~ "can restrict, ban or unban chat "
+#~ "members"
+#~ msgstr ""
diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_webhook.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_webhook.po
index 10f3b913..c1ec7a3a 100644
--- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_webhook.po
+++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_webhook.po
@@ -8,14 +8,14 @@ msgid ""
msgstr ""
"Project-Id-Version: aiogram \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-10-01 22:51+0300\n"
+"POT-Creation-Date: 2023-10-29 02:16+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.10.3\n"
+"Generated-By: Babel 2.13.1\n"
#: ../../api/methods/set_webhook.rst:3
msgid "setWebhook"
@@ -98,8 +98,8 @@ msgstr ""
#: ../../docstring aiogram.methods.set_webhook.SetWebhook.allowed_updates:1 of
msgid ""
"A JSON-serialized list of the update types you want your bot to receive. "
-"For example, specify ['message', 'edited_channel_post', 'callback_query']"
-" to only receive updates of these types. See "
+"For example, specify :code:`[\"message\", \"edited_channel_post\", "
+"\"callback_query\"]` to only receive updates of these types. See "
":class:`aiogram.types.update.Update` for a complete list of available "
"update types. Specify an empty list to receive all update types except "
"*chat_member* (default). If not specified, the previous setting will be "
@@ -119,34 +119,48 @@ msgid ""
" is useful to ensure that the request comes from a webhook set by you."
msgstr ""
-#: ../../api/methods/set_webhook.rst:14
+#: ../../api/methods/set_webhook.rst:15
msgid "Usage"
msgstr ""
-#: ../../api/methods/set_webhook.rst:17
+#: ../../api/methods/set_webhook.rst:18
msgid "As bot method"
msgstr ""
-#: ../../api/methods/set_webhook.rst:25
+#: ../../api/methods/set_webhook.rst:26
msgid "Method as object"
msgstr ""
-#: ../../api/methods/set_webhook.rst:27
+#: ../../api/methods/set_webhook.rst:28
msgid "Imports:"
msgstr ""
-#: ../../api/methods/set_webhook.rst:29
+#: ../../api/methods/set_webhook.rst:30
msgid ":code:`from aiogram.methods.set_webhook import SetWebhook`"
msgstr ""
-#: ../../api/methods/set_webhook.rst:30
+#: ../../api/methods/set_webhook.rst:31
msgid "alias: :code:`from aiogram.methods import SetWebhook`"
msgstr ""
-#: ../../api/methods/set_webhook.rst:33
+#: ../../api/methods/set_webhook.rst:34
msgid "With specific bot"
msgstr ""
-#: ../../api/methods/set_webhook.rst:40
+#: ../../api/methods/set_webhook.rst:41
msgid "As reply into Webhook in handler"
msgstr ""
+
+#~ msgid ""
+#~ "A JSON-serialized list of the "
+#~ "update types you want your bot to"
+#~ " receive. For example, specify ['message',"
+#~ " 'edited_channel_post', 'callback_query'] to only"
+#~ " receive updates of these types. See"
+#~ " :class:`aiogram.types.update.Update` for a "
+#~ "complete list of available update types."
+#~ " Specify an empty list to receive "
+#~ "all update types except *chat_member* "
+#~ "(default). If not specified, the "
+#~ "previous setting will be used."
+#~ msgstr ""
diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po
index c44c2853..ab7d4b2b 100644
--- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po
+++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po
@@ -8,14 +8,14 @@ msgid ""
msgstr ""
"Project-Id-Version: aiogram \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-08 19:04+0300\n"
+"POT-Creation-Date: 2023-10-29 02:16+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.12.1\n"
+"Generated-By: Babel 2.13.1\n"
#: ../../api/types/chat.rst:3
msgid "Chat"
@@ -997,38 +997,26 @@ msgstr ""
#: aiogram.types.chat.Chat.promote:12 of
msgid ""
"Pass :code:`True` if the administrator can access the chat event log, "
-"chat statistics, message statistics in channels, see channel members, see"
-" anonymous administrators in supergroups and ignore slow mode. Implied by"
-" any other administrator privilege"
+"boost list in channels, see channel members, report spam messages, see "
+"anonymous administrators in supergroups and ignore slow mode. Implied by "
+"any other administrator privilege"
msgstr ""
#: aiogram.types.chat.Chat.promote:13 of
-msgid ""
-"Pass :code:`True` if the administrator can create channel posts, channels"
-" only"
-msgstr ""
-
-#: aiogram.types.chat.Chat.promote:14 of
-msgid ""
-"Pass :code:`True` if the administrator can edit messages of other users "
-"and can pin messages, channels only"
-msgstr ""
-
-#: aiogram.types.chat.Chat.promote:15 of
msgid "Pass :code:`True` if the administrator can delete messages of other users"
msgstr ""
-#: aiogram.types.chat.Chat.promote:16 of
+#: aiogram.types.chat.Chat.promote:14 of
msgid "Pass :code:`True` if the administrator can manage video chats"
msgstr ""
-#: aiogram.types.chat.Chat.promote:17 of
+#: aiogram.types.chat.Chat.promote:15 of
msgid ""
"Pass :code:`True` if the administrator can restrict, ban or unban chat "
-"members"
+"members, or access supergroup statistics"
msgstr ""
-#: aiogram.types.chat.Chat.promote:18 of
+#: aiogram.types.chat.Chat.promote:16 of
msgid ""
"Pass :code:`True` if the administrator can add new administrators with a "
"subset of their own privileges or demote administrators that they have "
@@ -1036,27 +1024,57 @@ msgid ""
"appointed by him)"
msgstr ""
-#: aiogram.types.chat.Chat.promote:19 of
+#: aiogram.types.chat.Chat.promote:17 of
msgid ""
"Pass :code:`True` if the administrator can change chat title, photo and "
"other settings"
msgstr ""
-#: aiogram.types.chat.Chat.promote:20 of
+#: aiogram.types.chat.Chat.promote:18 of
msgid "Pass :code:`True` if the administrator can invite new users to the chat"
msgstr ""
+#: aiogram.types.chat.Chat.promote:19 of
+msgid ""
+"Pass :code:`True` if the administrator can post messages in the channel, "
+"or access channel statistics; channels only"
+msgstr ""
+
+#: aiogram.types.chat.Chat.promote:20 of
+msgid ""
+"Pass :code:`True` if the administrator can edit messages of other users "
+"and can pin messages; channels only"
+msgstr ""
+
#: aiogram.types.chat.Chat.promote:21 of
msgid "Pass :code:`True` if the administrator can pin messages, supergroups only"
msgstr ""
#: aiogram.types.chat.Chat.promote:22 of
msgid ""
+"Pass :code:`True` if the administrator can post stories in the channel; "
+"channels only"
+msgstr ""
+
+#: aiogram.types.chat.Chat.promote:23 of
+msgid ""
+"Pass :code:`True` if the administrator can edit stories posted by other "
+"users; channels only"
+msgstr ""
+
+#: aiogram.types.chat.Chat.promote:24 of
+msgid ""
+"Pass :code:`True` if the administrator can delete stories posted by other"
+" users; channels only"
+msgstr ""
+
+#: aiogram.types.chat.Chat.promote:25 of
+msgid ""
"Pass :code:`True` if the user is allowed to create, rename, close, and "
"reopen forum topics, supergroups only"
msgstr ""
-#: aiogram.types.chat.Chat.promote:23 of
+#: aiogram.types.chat.Chat.promote:26 of
msgid ""
"instance of method "
":class:`aiogram.methods.promote_chat_member.PromoteChatMember`"
@@ -1350,3 +1368,30 @@ msgstr ""
#~ "be banned forever. Applied for "
#~ "supergroups and channels only."
#~ msgstr ""
+
+#~ msgid ""
+#~ "Pass :code:`True` if the administrator "
+#~ "can access the chat event log, "
+#~ "chat statistics, message statistics in "
+#~ "channels, see channel members, see "
+#~ "anonymous administrators in supergroups and"
+#~ " ignore slow mode. Implied by any "
+#~ "other administrator privilege"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Pass :code:`True` if the administrator "
+#~ "can create channel posts, channels only"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Pass :code:`True` if the administrator "
+#~ "can edit messages of other users "
+#~ "and can pin messages, channels only"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Pass :code:`True` if the administrator "
+#~ "can restrict, ban or unban chat "
+#~ "members"
+#~ msgstr ""
diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_administrator_rights.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_administrator_rights.po
index 9a336d08..2ddb6393 100644
--- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_administrator_rights.po
+++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_administrator_rights.po
@@ -8,14 +8,14 @@ msgid ""
msgstr ""
"Project-Id-Version: aiogram \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-08 19:04+0300\n"
+"POT-Creation-Date: 2023-10-29 02:16+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.12.1\n"
+"Generated-By: Babel 2.13.1\n"
#: ../../api/types/chat_administrator_rights.rst:3
msgid "ChatAdministratorRights"
@@ -39,10 +39,10 @@ msgstr ""
#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_manage_chat:1
#: of
msgid ""
-":code:`True`, if the administrator can access the chat event log, chat "
-"statistics, boost list in channels, message statistics in channels, see "
-"channel members, see anonymous administrators in supergroups and ignore "
-"slow mode. Implied by any other administrator privilege"
+":code:`True`, if the administrator can access the chat event log, boost "
+"list in channels, see channel members, report spam messages, see "
+"anonymous administrators in supergroups and ignore slow mode. Implied by "
+"any other administrator privilege"
msgstr ""
#: ../../docstring
@@ -60,7 +60,9 @@ msgstr ""
#: ../../docstring
#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_restrict_members:1
#: of
-msgid ":code:`True`, if the administrator can restrict, ban or unban chat members"
+msgid ""
+":code:`True`, if the administrator can restrict, ban or unban chat "
+"members, or access supergroup statistics"
msgstr ""
#: ../../docstring
@@ -92,7 +94,7 @@ msgstr ""
#: of
msgid ""
"*Optional*. :code:`True`, if the administrator can post messages in the "
-"channel; channels only"
+"channel, or access channel statistics; channels only"
msgstr ""
#: ../../docstring
@@ -132,7 +134,7 @@ msgstr ""
#: of
msgid ""
"*Optional*. :code:`True`, if the administrator can delete stories posted "
-"by other users"
+"by other users; channels only"
msgstr ""
#: ../../docstring
@@ -168,3 +170,31 @@ msgstr ""
#~ " can post in the channel; channels"
#~ " only"
#~ msgstr ""
+
+#~ msgid ""
+#~ ":code:`True`, if the administrator can "
+#~ "access the chat event log, chat "
+#~ "statistics, boost list in channels, "
+#~ "message statistics in channels, see "
+#~ "channel members, see anonymous administrators"
+#~ " in supergroups and ignore slow mode."
+#~ " Implied by any other administrator "
+#~ "privilege"
+#~ msgstr ""
+
+#~ msgid ""
+#~ ":code:`True`, if the administrator can "
+#~ "restrict, ban or unban chat members"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "*Optional*. :code:`True`, if the administrator"
+#~ " can post messages in the channel;"
+#~ " channels only"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "*Optional*. :code:`True`, if the administrator"
+#~ " can delete stories posted by other"
+#~ " users"
+#~ msgstr ""
diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_join_request.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_join_request.po
index c6884b77..f66a9047 100644
--- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_join_request.po
+++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_join_request.po
@@ -8,14 +8,14 @@ msgid ""
msgstr ""
"Project-Id-Version: aiogram \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-07-30 18:31+0300\n"
+"POT-Creation-Date: 2023-10-29 02:16+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.12.1\n"
+"Generated-By: Babel 2.13.1\n"
#: ../../api/types/chat_join_request.rst:3
msgid "ChatJoinRequest"
@@ -46,7 +46,7 @@ msgid ""
"languages may have difficulty/silent defects in interpreting it. But it "
"has at most 52 significant bits, so a 64-bit integer or double-precision "
"float type are safe for storing this identifier. The bot can use this "
-"identifier for 24 hours to send messages until the join request is "
+"identifier for 5 minutes to send messages until the join request is "
"processed, assuming no other administrator contacted the user."
msgstr ""
@@ -1616,3 +1616,21 @@ msgstr ""
#~ msgid "Use this method to decline a chat join request."
#~ msgstr ""
+
+#~ msgid ""
+#~ "Identifier of a private chat with "
+#~ "the user who sent the join "
+#~ "request. This number may have more "
+#~ "than 32 significant bits and some "
+#~ "programming languages may have "
+#~ "difficulty/silent defects in interpreting it."
+#~ " But it has at most 52 "
+#~ "significant bits, so a 64-bit integer"
+#~ " or double-precision float type are"
+#~ " safe for storing this identifier. "
+#~ "The bot can use this identifier "
+#~ "for 24 hours to send messages "
+#~ "until the join request is processed, "
+#~ "assuming no other administrator contacted "
+#~ "the user."
+#~ msgstr ""
diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_administrator.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_administrator.po
index ccd470cf..77d9edce 100644
--- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_administrator.po
+++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_administrator.po
@@ -8,14 +8,14 @@ msgid ""
msgstr ""
"Project-Id-Version: aiogram \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-08 19:04+0300\n"
+"POT-Creation-Date: 2023-10-29 02:16+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.12.1\n"
+"Generated-By: Babel 2.13.1\n"
#: ../../api/types/chat_member_administrator.rst:3
msgid "ChatMemberAdministrator"
@@ -60,10 +60,10 @@ msgstr ""
#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_manage_chat:1
#: of
msgid ""
-":code:`True`, if the administrator can access the chat event log, chat "
-"statistics, boost list in channels, message statistics in channels, see "
-"channel members, see anonymous administrators in supergroups and ignore "
-"slow mode. Implied by any other administrator privilege"
+":code:`True`, if the administrator can access the chat event log, boost "
+"list in channels, see channel members, report spam messages, see "
+"anonymous administrators in supergroups and ignore slow mode. Implied by "
+"any other administrator privilege"
msgstr ""
#: ../../docstring
@@ -81,7 +81,9 @@ msgstr ""
#: ../../docstring
#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_restrict_members:1
#: of
-msgid ":code:`True`, if the administrator can restrict, ban or unban chat members"
+msgid ""
+":code:`True`, if the administrator can restrict, ban or unban chat "
+"members, or access supergroup statistics"
msgstr ""
#: ../../docstring
@@ -113,7 +115,7 @@ msgstr ""
#: of
msgid ""
"*Optional*. :code:`True`, if the administrator can post messages in the "
-"channel; channels only"
+"channel, or access channel statistics; channels only"
msgstr ""
#: ../../docstring
@@ -153,7 +155,7 @@ msgstr ""
#: of
msgid ""
"*Optional*. :code:`True`, if the administrator can delete stories posted "
-"by other users"
+"by other users; channels only"
msgstr ""
#: ../../docstring
@@ -195,3 +197,31 @@ msgstr ""
#~ " can post in the channel; channels"
#~ " only"
#~ msgstr ""
+
+#~ msgid ""
+#~ ":code:`True`, if the administrator can "
+#~ "access the chat event log, chat "
+#~ "statistics, boost list in channels, "
+#~ "message statistics in channels, see "
+#~ "channel members, see anonymous administrators"
+#~ " in supergroups and ignore slow mode."
+#~ " Implied by any other administrator "
+#~ "privilege"
+#~ msgstr ""
+
+#~ msgid ""
+#~ ":code:`True`, if the administrator can "
+#~ "restrict, ban or unban chat members"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "*Optional*. :code:`True`, if the administrator"
+#~ " can post messages in the channel;"
+#~ " channels only"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "*Optional*. :code:`True`, if the administrator"
+#~ " can delete stories posted by other"
+#~ " users"
+#~ msgstr ""
diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/update.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/update.po
index 940848f4..342d9e20 100644
--- a/docs/locale/uk_UA/LC_MESSAGES/api/types/update.po
+++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/update.po
@@ -8,14 +8,14 @@ msgid ""
msgstr ""
"Project-Id-Version: aiogram \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-10-01 22:51+0300\n"
+"POT-Creation-Date: 2023-10-29 02:16+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.10.3\n"
+"Generated-By: Babel 2.13.1\n"
#: ../../api/types/update.rst:3
msgid "Update"
@@ -124,8 +124,9 @@ msgstr ""
#: ../../docstring aiogram.types.update.Update.chat_member:1 of
msgid ""
"*Optional*. A chat member's status was updated in a chat. The bot must be"
-" an administrator in the chat and must explicitly specify 'chat_member' "
-"in the list of *allowed_updates* to receive these updates."
+" an administrator in the chat and must explicitly specify "
+":code:`\"chat_member\"` in the list of *allowed_updates* to receive these"
+" updates."
msgstr ""
#: ../../docstring aiogram.types.update.Update.chat_join_request:1 of
@@ -146,3 +147,12 @@ msgstr ""
#: aiogram.types.update.UpdateTypeLookupError:1 of
msgid "Update does not contain any known event type."
msgstr ""
+
+#~ msgid ""
+#~ "*Optional*. A chat member's status was"
+#~ " updated in a chat. The bot "
+#~ "must be an administrator in the "
+#~ "chat and must explicitly specify "
+#~ "'chat_member' in the list of "
+#~ "*allowed_updates* to receive these updates."
+#~ msgstr ""
diff --git a/docs/locale/uk_UA/LC_MESSAGES/changelog.po b/docs/locale/uk_UA/LC_MESSAGES/changelog.po
index 0d08487c..2c32c200 100644
--- a/docs/locale/uk_UA/LC_MESSAGES/changelog.po
+++ b/docs/locale/uk_UA/LC_MESSAGES/changelog.po
@@ -8,21 +8,37 @@ msgid ""
msgstr ""
"Project-Id-Version: aiogram \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-08 19:04+0300\n"
+"POT-Creation-Date: 2023-10-29 02:16+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.12.1\n"
+"Generated-By: Babel 2.13.1\n"
#: ../../../CHANGES.rst:3
msgid "Changelog"
msgstr ""
#: ../../[towncrier-fragments]:2
-msgid "\\ |release| [UNRELEASED DRAFT] (2023-10-08)"
+msgid "\\ |release| [UNRELEASED DRAFT] (2023-10-29)"
+msgstr ""
+
+#: ../../../CHANGES.rst:33 ../../../CHANGES.rst:122 ../../../CHANGES.rst:180
+#: ../../../CHANGES.rst:222 ../../../CHANGES.rst:385 ../../../CHANGES.rst:485
+#: ../../../CHANGES.rst:545 ../../../CHANGES.rst:596 ../../../CHANGES.rst:669
+#: ../../../CHANGES.rst:710 ../../../CHANGES.rst:748 ../../../CHANGES.rst:796
+#: ../../../CHANGES.rst:872 ../../../CHANGES.rst:905 ../../../CHANGES.rst:936
+#: ../../[towncrier-fragments]:5
+msgid "Features"
+msgstr ""
+
+#: ../../[towncrier-fragments]:7
+msgid ""
+"The new FSM strategy CHAT_TOPIC, which sets the state for the entire "
+"topic in the chat, also works in private messages and regular groups "
+"without topics. `#1343 `_"
msgstr ""
#: ../../../CHANGES.rst:23 ../../../CHANGES.rst:44 ../../../CHANGES.rst:56
@@ -31,11 +47,11 @@ msgstr ""
#: ../../../CHANGES.rst:559 ../../../CHANGES.rst:620 ../../../CHANGES.rst:678
#: ../../../CHANGES.rst:724 ../../../CHANGES.rst:772 ../../../CHANGES.rst:828
#: ../../../CHANGES.rst:913 ../../../CHANGES.rst:945
-#: ../../[towncrier-fragments]:5
+#: ../../[towncrier-fragments]:12
msgid "Bugfixes"
msgstr ""
-#: ../../[towncrier-fragments]:7
+#: ../../[towncrier-fragments]:14
msgid ""
"Fixed ``parse_mode`` in ``send_copy`` helper. Disable by default. `#1332 "
"`_"
@@ -43,59 +59,79 @@ msgstr ""
#: ../../../CHANGES.rst:89 ../../../CHANGES.rst:159 ../../../CHANGES.rst:204
#: ../../../CHANGES.rst:289 ../../../CHANGES.rst:522 ../../../CHANGES.rst:572
-#: ../../../CHANGES.rst:952 ../../[towncrier-fragments]:12
+#: ../../../CHANGES.rst:952 ../../[towncrier-fragments]:19
msgid "Improved Documentation"
msgstr ""
-#: ../../[towncrier-fragments]:14
+#: ../../[towncrier-fragments]:21
msgid ""
"Corrected grammatical errors, improved sentence structures, translation "
"for migration 2.x-3.x `#1302 "
"`_"
msgstr ""
+#: ../../[towncrier-fragments]:23
+msgid ""
+"Minor typo correction, specifically in module naming + some grammar. "
+"`#1340 `_"
+msgstr ""
+
+#: ../../[towncrier-fragments]:25
+msgid ""
+"Added `CITATION.cff` file for automatic academic citation generation. Now"
+" you can copy citation from the GitHub page and paste it into your paper."
+" `#1351 `_"
+msgstr ""
+
#: ../../../CHANGES.rst:110 ../../../CHANGES.rst:166 ../../../CHANGES.rst:305
#: ../../../CHANGES.rst:456 ../../../CHANGES.rst:533 ../../../CHANGES.rst:586
#: ../../../CHANGES.rst:637 ../../../CHANGES.rst:691 ../../../CHANGES.rst:733
#: ../../../CHANGES.rst:779 ../../../CHANGES.rst:839 ../../../CHANGES.rst:860
#: ../../../CHANGES.rst:883 ../../../CHANGES.rst:920 ../../../CHANGES.rst:959
-#: ../../[towncrier-fragments]:19
+#: ../../[towncrier-fragments]:31
msgid "Misc"
msgstr ""
-#: ../../[towncrier-fragments]:21
+#: ../../[towncrier-fragments]:33
msgid "Updated dependencies, bumped minimum required version:"
msgstr ""
-#: ../../[towncrier-fragments]:23
+#: ../../[towncrier-fragments]:35
msgid ":code:`magic-filter` - fixed `.resolve` operation"
msgstr ""
-#: ../../[towncrier-fragments]:24
+#: ../../[towncrier-fragments]:36
msgid ":code:`pydantic` - fixed compatibility (broken in 2.4)"
msgstr ""
-#: ../../[towncrier-fragments]:25
+#: ../../[towncrier-fragments]:37
msgid ""
":code:`aiodns` - added new dependency to the :code:`fast` extras "
"(:code:`pip install aiogram[fast]`)"
msgstr ""
-#: ../../[towncrier-fragments]:26
+#: ../../[towncrier-fragments]:38
msgid "*others...*"
msgstr ""
-#: ../../[towncrier-fragments]:27
+#: ../../[towncrier-fragments]:39
msgid "`#1327 `_"
msgstr ""
-#: ../../[towncrier-fragments]:28
+#: ../../[towncrier-fragments]:40
msgid ""
"Prevent update handling task pointers from being garbage collected, "
"backport from 2.x `#1331 "
"`_"
msgstr ""
+#: ../../[towncrier-fragments]:42
+msgid ""
+"Updated :code:`typing-extensions` package version range in dependencies "
+"to fix compatibility with :code:`FastAPI` `#1347 "
+"`_"
+msgstr ""
+
#: ../../../CHANGES.rst:20
msgid "3.1.1 (2023-09-25)"
msgstr ""
@@ -110,14 +146,6 @@ msgstr ""
msgid "3.1.0 (2023-09-22)"
msgstr ""
-#: ../../../CHANGES.rst:33 ../../../CHANGES.rst:122 ../../../CHANGES.rst:180
-#: ../../../CHANGES.rst:222 ../../../CHANGES.rst:385 ../../../CHANGES.rst:485
-#: ../../../CHANGES.rst:545 ../../../CHANGES.rst:596 ../../../CHANGES.rst:669
-#: ../../../CHANGES.rst:710 ../../../CHANGES.rst:748 ../../../CHANGES.rst:796
-#: ../../../CHANGES.rst:872 ../../../CHANGES.rst:905 ../../../CHANGES.rst:936
-msgid "Features"
-msgstr ""
-
#: ../../../CHANGES.rst:35
msgid ""
"Added support for custom encoders/decoders for payload (and also for "
@@ -3171,3 +3199,6 @@ msgstr ""
#: ../../../HISTORY.rst:497
msgid "0.1 (2017-06-03)"
msgstr ""
+
+#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-10-08)"
+#~ msgstr ""
diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/class_based_handlers/base.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/class_based_handlers/base.po
index 40d8b4f5..632ef480 100644
--- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/class_based_handlers/base.po
+++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/class_based_handlers/base.po
@@ -5,17 +5,16 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: aiogram\n"
+"Project-Id-Version: aiogram\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-10-01 22:51+0300\n"
+"POT-Creation-Date: 2023-10-29 02:16+0300\n"
"PO-Revision-Date: 2022-12-11 22:34+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.10.3\n"
-"X-Generator: Poedit 3.2.2\n"
+"Generated-By: Babel 2.13.1\n"
#: ../../dispatcher/class_based_handlers/base.rst:5
msgid "BaseHandler"
@@ -30,7 +29,8 @@ msgstr ""
"використовуватися в усіх інших обробниках на основі класу."
#: ../../dispatcher/class_based_handlers/base.rst:9
-msgid "Import: :code:`from aiogram.handler import BaseHandler`"
+#, fuzzy
+msgid "Import: :code:`from aiogram.handlers import BaseHandler`"
msgstr "Import: :code:`from aiogram.handler import BaseHandler`"
#: ../../dispatcher/class_based_handlers/base.rst:11
@@ -42,21 +42,23 @@ msgstr ""
"def handle(self) -> Any: ...`"
#: ../../dispatcher/class_based_handlers/base.rst:13
+#, fuzzy
msgid ""
-"This class is also have an default initializer and you don't need to "
-"change it. Initializer accepts current event and all contextual data and "
+"This class also has a default initializer and you don't need to change "
+"it. The initializer accepts the incoming event and all contextual data, "
"which can be accessed from the handler through attributes: :code:`event: "
"TelegramEvent` and :code:`data: Dict[Any, str]`"
msgstr ""
-"Цей клас також має ініціалізатор за замовчуванням, і вам не потрібно "
-"його змінювати. Ініціалізатор приймає поточну подію та всі контекстні "
-"дані, доступ до яких можна отримати з обробника через атрибути: :code:"
-"`event: TelegramEvent` and :code:`data: Dict[Any, str]`"
+"Цей клас також має ініціалізатор за замовчуванням, і вам не потрібно його"
+" змінювати. Ініціалізатор приймає поточну подію та всі контекстні дані, "
+"доступ до яких можна отримати з обробника через атрибути: :code:`event: "
+"TelegramEvent` and :code:`data: Dict[Any, str]`"
#: ../../dispatcher/class_based_handlers/base.rst:17
+#, fuzzy
msgid ""
-"If instance of the bot is specified in context data or current context "
-"it can be accessed through *bot* class attribute."
+"If an instance of the bot is specified in context data or current context"
+" it can be accessed through *bot* class attribute."
msgstr ""
"Якщо екземпляр бота вказано в контекстних даних або поточному контексті, "
"до нього можна отримати доступ через атрибут класу *bot*."
diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po
index 6d9f582d..880fef46 100644
--- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po
+++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po
@@ -8,14 +8,14 @@ msgid ""
msgstr ""
"Project-Id-Version: aiogram \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-08-06 16:52+0300\n"
+"POT-Creation-Date: 2023-10-29 02:22+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.12.1\n"
+"Generated-By: Babel 2.13.1\n"
#: ../../dispatcher/webhook.rst:5
msgid "Webhook"
@@ -46,8 +46,8 @@ msgstr ""
#: ../../dispatcher/webhook.rst:20
msgid ""
"Generally to use webhook with aiogram you should use any async web "
-"framework. By out of the box aiogram has an aiohttp integration, so "
-"we'll use it."
+"framework. By out of the box aiogram has an aiohttp integration, so we'll"
+" use it."
msgstr ""
#: ../../dispatcher/webhook.rst:25
@@ -268,9 +268,7 @@ msgid "Without reverse proxy (not recommended)"
msgstr ""
#: ../../dispatcher/webhook.rst:100
-msgid ""
-"In case you want can't use reverse proxy, you can use aiohttp's ssl "
-"context."
+msgid "In case without using reverse proxy, you can use aiohttp's ssl context."
msgstr ""
#: ../../dispatcher/webhook.rst:102
@@ -301,3 +299,9 @@ msgid ""
":code:`multipart/form-data` or :code:`application/json` response body "
"manually."
msgstr ""
+
+#~ msgid ""
+#~ "In case you want can't use reverse"
+#~ " proxy, you can use aiohttp's ssl "
+#~ "context."
+#~ msgstr ""
diff --git a/pyproject.toml b/pyproject.toml
index 1f0ad86c..9b0511ab 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -45,7 +45,7 @@ dependencies = [
"pydantic>=2.4.1,<2.5",
"aiofiles~=23.2.1",
"certifi>=2023.7.22",
- "typing-extensions~=4.8.0",
+ "typing-extensions>=4.7.0,<=5.0",
]
dynamic = ["version"]
@@ -64,7 +64,7 @@ proxy = [
"aiohttp-socks~=0.8.3",
]
i18n = [
- "Babel~=2.12.1",
+ "Babel~=2.13.0",
]
cli = [
"aiogram-cli~=1.0.3",
@@ -74,7 +74,7 @@ test = [
"pytest-html~=4.0.2",
"pytest-asyncio~=0.21.1",
"pytest-lazy-fixture~=0.6.3",
- "pytest-mock~=3.11.0",
+ "pytest-mock~=3.12.0",
"pytest-mypy~=0.10.3",
"pytest-cov~=4.1.0",
"pytest-aiohttp~=1.0.5",
@@ -97,12 +97,12 @@ docs = [
"sphinxcontrib-towncrier~=0.3.2a0",
]
dev = [
- "black~=23.9.1",
+ "black~=23.10.0",
"isort~=5.12.0",
- "ruff~=0.0.291",
- "mypy~=1.5.1",
+ "ruff~=0.1.1",
+ "mypy~=1.6.1",
"toml~=0.10.2",
- "pre-commit~=3.4.0",
+ "pre-commit~=3.5.0",
"packaging~=23.1",
]
diff --git a/tests/test_fsm/test_strategy.py b/tests/test_fsm/test_strategy.py
index 782d1eeb..1f6f2e93 100644
--- a/tests/test_fsm/test_strategy.py
+++ b/tests/test_fsm/test_strategy.py
@@ -27,6 +27,9 @@ class TestStrategy:
[FSMStrategy.USER_IN_TOPIC, CHAT, CHAT],
[FSMStrategy.USER_IN_TOPIC, PRIVATE, PRIVATE],
[FSMStrategy.USER_IN_TOPIC, THREAD, THREAD],
+ [FSMStrategy.CHAT_TOPIC, CHAT, (CHAT_ID, CHAT_ID, None)],
+ [FSMStrategy.CHAT_TOPIC, PRIVATE, PRIVATE],
+ [FSMStrategy.CHAT_TOPIC, THREAD, (CHAT_ID, CHAT_ID, THREAD_ID)],
],
)
def test_strategy(self, strategy, case, expected):