Repository: aiogram/aiogram
Pull request #1417 (2024-02-16 21:30:37)

Added full support of Bot API 7.1
# Description

Added full support of [Bot API 7.1](https://core.telegram.org/bots/api-changelog#february-16-2024)

github-actions[bot]: # :x: Changelog is required!

You need to add a brief description of the changes to the `CHANGES` directory.

Changes file should be named like `<issue or PR number>.<category>.rst`,
example `1234.bugfix.rst` where `1234` is the PR or issue number and `bugfix` is the category.

The content of the file should be a brief description of the changes in
the PR in the format of a description of what has been done.

Possible categories are: `feature`, `bugfix`, `doc`, `removal` and `misc`.

Patch:
diff --git a/.butcher/enums/ContentType.yml b/.butcher/enums/ContentType.yml
index 66cba87e..4d0bb58a 100644
--- a/.butcher/enums/ContentType.yml
+++ b/.butcher/enums/ContentType.yml
@@ -35,3 +35,5 @@ extract:
     - forward_origin
     - external_reply
     - link_preview_options
+    - sender_boost_count
+    - reply_to_story
diff --git a/.butcher/methods/editMessageLiveLocation/entity.json b/.butcher/methods/editMessageLiveLocation/entity.json
index 98ae94a4..65b639f3 100644
--- a/.butcher/methods/editMessageLiveLocation/entity.json
+++ b/.butcher/methods/editMessageLiveLocation/entity.json
@@ -36,7 +36,7 @@
         "name": "inline_message_id"
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "required": true,
         "description": "Latitude of new location",
         "html_description": "<td>Latitude of new location</td>",
@@ -44,7 +44,7 @@
         "name": "latitude"
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "required": true,
         "description": "Longitude of new location",
         "html_description": "<td>Longitude of new location</td>",
@@ -52,7 +52,7 @@
         "name": "longitude"
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "required": false,
         "description": "The radius of uncertainty for the location, measured in meters; 0-1500",
         "html_description": "<td>The radius of uncertainty for the location, measured in meters; 0-1500</td>",
diff --git a/.butcher/methods/promoteChatMember/entity.json b/.butcher/methods/promoteChatMember/entity.json
index d866b307..a9f9d3e5 100644
--- a/.butcher/methods/promoteChatMember/entity.json
+++ b/.butcher/methods/promoteChatMember/entity.json
@@ -38,9 +38,9 @@
       {
         "type": "Boolean",
         "required": false,
-        "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": "<td>Pass <em>True</em> 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</td>",
-        "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",
+        "description": "Pass True if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.",
+        "html_description": "<td>Pass <em>True</em> if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.</td>",
+        "rst_description": "Pass :code:`True` if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.\n",
         "name": "can_manage_chat"
       },
       {
@@ -94,50 +94,50 @@
       {
         "type": "Boolean",
         "required": false,
-        "description": "Pass True if the administrator can post messages in the channel, or access channel statistics; channels only",
-        "html_description": "<td>Pass <em>True</em> if the administrator can post messages in the channel, or access channel statistics; channels only</td>",
-        "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"
+        "description": "Pass True if the administrator can post stories to the chat",
+        "html_description": "<td>Pass <em>True</em> if the administrator can post stories to the chat</td>",
+        "rst_description": "Pass :code:`True` if the administrator can post stories to the chat\n",
+        "name": "can_post_stories"
       },
       {
         "type": "Boolean",
         "required": false,
-        "description": "Pass True if the administrator can edit messages of other users and can pin messages; channels only",
-        "html_description": "<td>Pass <em>True</em> if the administrator can edit messages of other users and can pin messages; channels only</td>",
-        "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"
+        "description": "Pass True if the administrator can edit stories posted by other users",
+        "html_description": "<td>Pass <em>True</em> if the administrator can edit stories posted by other users</td>",
+        "rst_description": "Pass :code:`True` if the administrator can edit stories posted by other users\n",
+        "name": "can_edit_stories"
       },
       {
         "type": "Boolean",
         "required": false,
-        "description": "Pass True if the administrator can pin messages, supergroups only",
-        "html_description": "<td>Pass <em>True</em> if the administrator can pin messages, supergroups only</td>",
-        "rst_description": "Pass :code:`True` if the administrator can pin messages, supergroups only\n",
-        "name": "can_pin_messages"
+        "description": "Pass True if the administrator can delete stories posted by other users",
+        "html_description": "<td>Pass <em>True</em> if the administrator can delete stories posted by other users</td>",
+        "rst_description": "Pass :code:`True` if the administrator can delete stories posted by other users\n",
+        "name": "can_delete_stories"
       },
       {
         "type": "Boolean",
         "required": false,
-        "description": "Pass True if the administrator can post stories in the channel; channels only",
-        "html_description": "<td>Pass <em>True</em> if the administrator can post stories in the channel; channels only</td>",
-        "rst_description": "Pass :code:`True` if the administrator can post stories in the channel; channels only\n",
-        "name": "can_post_stories"
+        "description": "Pass True if the administrator can post messages in the channel, or access channel statistics; channels only",
+        "html_description": "<td>Pass <em>True</em> if the administrator can post messages in the channel, or access channel statistics; channels only</td>",
+        "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 stories posted by other users; channels only",
-        "html_description": "<td>Pass <em>True</em> if the administrator can edit stories posted by other users; channels only</td>",
-        "rst_description": "Pass :code:`True` if the administrator can edit stories posted by other users; channels only\n",
-        "name": "can_edit_stories"
+        "description": "Pass True if the administrator can edit messages of other users and can pin messages; channels only",
+        "html_description": "<td>Pass <em>True</em> if the administrator can edit messages of other users and can pin messages; channels only</td>",
+        "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,
-        "description": "Pass True if the administrator can delete stories posted by other users; channels only",
-        "html_description": "<td>Pass <em>True</em> if the administrator can delete stories posted by other users; channels only</td>",
-        "rst_description": "Pass :code:`True` if the administrator can delete stories posted by other users; channels only\n",
-        "name": "can_delete_stories"
+        "description": "Pass True if the administrator can pin messages, supergroups only",
+        "html_description": "<td>Pass <em>True</em> if the administrator can pin messages, supergroups only</td>",
+        "rst_description": "Pass :code:`True` if the administrator can pin messages, supergroups only\n",
+        "name": "can_pin_messages"
       },
       {
         "type": "Boolean",
diff --git a/.butcher/methods/sendLocation/entity.json b/.butcher/methods/sendLocation/entity.json
index 1fc1ebc6..07fd9d5a 100644
--- a/.butcher/methods/sendLocation/entity.json
+++ b/.butcher/methods/sendLocation/entity.json
@@ -28,7 +28,7 @@
         "name": "message_thread_id"
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "required": true,
         "description": "Latitude of the location",
         "html_description": "<td>Latitude of the location</td>",
@@ -36,7 +36,7 @@
         "name": "latitude"
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "required": true,
         "description": "Longitude of the location",
         "html_description": "<td>Longitude of the location</td>",
@@ -44,7 +44,7 @@
         "name": "longitude"
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "required": false,
         "description": "The radius of uncertainty for the location, measured in meters; 0-1500",
         "html_description": "<td>The radius of uncertainty for the location, measured in meters; 0-1500</td>",
diff --git a/.butcher/methods/sendVenue/entity.json b/.butcher/methods/sendVenue/entity.json
index f17dcff7..4b4c52e6 100644
--- a/.butcher/methods/sendVenue/entity.json
+++ b/.butcher/methods/sendVenue/entity.json
@@ -28,7 +28,7 @@
         "name": "message_thread_id"
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "required": true,
         "description": "Latitude of the venue",
         "html_description": "<td>Latitude of the venue</td>",
@@ -36,7 +36,7 @@
         "name": "latitude"
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "required": true,
         "description": "Longitude of the venue",
         "html_description": "<td>Longitude of the venue</td>",
diff --git a/.butcher/schema/schema.json b/.butcher/schema/schema.json
index 300f56aa..e4833840 100644
--- a/.butcher/schema/schema.json
+++ b/.butcher/schema/schema.json
@@ -1,7 +1,7 @@
 {
   "api": {
-    "version": "7.0",
-    "release_date": "2023-12-29"
+    "version": "7.1",
+    "release_date": "2024-02-16"
   },
   "items": [
     {
@@ -17,9 +17,9 @@
           "annotations": [
             {
               "type": "Integer",
-              "description": "The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This ID becomes especially handy if you're using webhooks, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.",
-              "html_description": "<td>The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This ID becomes especially handy if you're using <a href=\"#setwebhook\">webhooks</a>, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.</td>",
-              "rst_description": "The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This ID becomes especially handy if you're using `webhooks <https://core.telegram.org/bots/api#setwebhook>`_, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.\n",
+              "description": "The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This identifier becomes especially handy if you're using webhooks, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.",
+              "html_description": "<td>The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This identifier becomes especially handy if you're using <a href=\"#setwebhook\">webhooks</a>, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.</td>",
+              "rst_description": "The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This identifier becomes especially handy if you're using `webhooks <https://core.telegram.org/bots/api#setwebhook>`_, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.\n",
               "name": "update_id",
               "required": true
             },
@@ -33,9 +33,9 @@
             },
             {
               "type": "Message",
-              "description": "New version of a message that is known to the bot and was edited",
-              "html_description": "<td><em>Optional</em>. New version of a message that is known to the bot and was edited</td>",
-              "rst_description": "*Optional*. New version of a message that is known to the bot and was edited\n",
+              "description": "New version of a message that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot.",
+              "html_description": "<td><em>Optional</em>. New version of a message that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot.</td>",
+              "rst_description": "*Optional*. New version of a message that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot.\n",
               "name": "edited_message",
               "required": false
             },
@@ -49,9 +49,9 @@
             },
             {
               "type": "Message",
-              "description": "New version of a channel post that is known to the bot and was edited",
-              "html_description": "<td><em>Optional</em>. New version of a channel post that is known to the bot and was edited</td>",
-              "rst_description": "*Optional*. New version of a channel post that is known to the bot and was edited\n",
+              "description": "New version of a channel post that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot.",
+              "html_description": "<td><em>Optional</em>. New version of a channel post that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot.</td>",
+              "rst_description": "*Optional*. New version of a channel post that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot.\n",
               "name": "edited_channel_post",
               "required": false
             },
@@ -65,9 +65,9 @@
             },
             {
               "type": "MessageReactionCountUpdated",
-              "description": "Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify \"message_reaction_count\" in the list of allowed_updates to receive these updates.",
-              "html_description": "<td><em>Optional</em>. Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify <code>\"message_reaction_count\"</code> in the list of <em>allowed_updates</em> to receive these updates.</td>",
-              "rst_description": "*Optional*. Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify :code:`\"message_reaction_count\"` in the list of *allowed_updates* to receive these updates.\n",
+              "description": "Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify \"message_reaction_count\" in the list of allowed_updates to receive these updates. The updates are grouped and can be sent with delay up to a few minutes.",
+              "html_description": "<td><em>Optional</em>. Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify <code>\"message_reaction_count\"</code> in the list of <em>allowed_updates</em> to receive these updates. The updates are grouped and can be sent with delay up to a few minutes.</td>",
+              "rst_description": "*Optional*. Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify :code:`\"message_reaction_count\"` in the list of *allowed_updates* to receive these updates. The updates are grouped and can be sent with delay up to a few minutes.\n",
               "name": "message_reaction_count",
               "required": false
             },
@@ -113,9 +113,9 @@
             },
             {
               "type": "Poll",
-              "description": "New poll state. Bots receive only updates about stopped polls and polls, which are sent by the bot",
-              "html_description": "<td><em>Optional</em>. New poll state. Bots receive only updates about stopped polls and polls, which are sent by the bot</td>",
-              "rst_description": "*Optional*. New poll state. Bots receive only updates about stopped polls and polls, which are sent by the bot\n",
+              "description": "New poll state. Bots receive only updates about manually stopped polls and polls, which are sent by the bot",
+              "html_description": "<td><em>Optional</em>. New poll state. Bots receive only updates about manually stopped polls and polls, which are sent by the bot</td>",
+              "rst_description": "*Optional*. New poll state. Bots receive only updates about manually stopped polls and polls, which are sent by the bot\n",
               "name": "poll",
               "required": false
             },
@@ -701,12 +701,20 @@
             },
             {
               "type": "Integer",
-              "description": "For supergroups, the minimum allowed delay between consecutive messages sent by each unpriviledged user; in seconds. Returned only in getChat.",
-              "html_description": "<td><em>Optional</em>. For supergroups, the minimum allowed delay between consecutive messages sent by each unpriviledged user; in seconds. Returned only in <a href=\"#getchat\">getChat</a>.</td>",
-              "rst_description": "*Optional*. For supergroups, the minimum allowed delay between consecutive messages sent by each unpriviledged user; in seconds. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n",
+              "description": "For supergroups, the minimum allowed delay between consecutive messages sent by each unprivileged user; in seconds. Returned only in getChat.",
+              "html_description": "<td><em>Optional</em>. For supergroups, the minimum allowed delay between consecutive messages sent by each unprivileged user; in seconds. Returned only in <a href=\"#getchat\">getChat</a>.</td>",
+              "rst_description": "*Optional*. For supergroups, the minimum allowed delay between consecutive messages sent by each unprivileged user; in seconds. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n",
               "name": "slow_mode_delay",
               "required": false
             },
+            {
+              "type": "Integer",
+              "description": "For supergroups, the minimum number of boosts that a non-administrator user needs to add in order to ignore slow mode and chat permissions. Returned only in getChat.",
+              "html_description": "<td><em>Optional</em>. For supergroups, the minimum number of boosts that a non-administrator user needs to add in order to ignore slow mode and chat permissions. Returned only in <a href=\"#getchat\">getChat</a>.</td>",
+              "rst_description": "*Optional*. For supergroups, the minimum number of boosts that a non-administrator user needs to add in order to ignore slow mode and chat permissions. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n",
+              "name": "unrestrict_boost_count",
+              "required": false
+            },
             {
               "type": "Integer",
               "description": "The time after which all messages sent to the chat will be automatically deleted; in seconds. Returned only in getChat.",
@@ -763,6 +771,14 @@
               "name": "can_set_sticker_set",
               "required": false
             },
+            {
+              "type": "String",
+              "description": "For supergroups, the name of the group's custom emoji sticker set. Custom emoji from this set can be used by all users and bots in the group. Returned only in getChat.",
+              "html_description": "<td><em>Optional</em>. For supergroups, the name of the group's custom emoji sticker set. Custom emoji from this set can be used by all users and bots in the group. Returned only in <a href=\"#getchat\">getChat</a>.</td>",
+              "rst_description": "*Optional*. For supergroups, the name of the group's custom emoji sticker set. Custom emoji from this set can be used by all users and bots in the group. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n",
+              "name": "custom_emoji_sticker_set_name",
+              "required": false
+            },
             {
               "type": "Integer",
               "description": "Unique identifier for the linked chat, i.e. the discussion group identifier for a channel and vice versa; for supergroups and channel chats. This identifier may be greater than 32 bits and some programming languages may have difficulty/silent defects in interpreting it. But it is smaller than 52 bits, so a signed 64 bit integer or double-precision float type are safe for storing this identifier. Returned only in getChat.",
@@ -821,6 +837,14 @@
               "name": "sender_chat",
               "required": false
             },
+            {
+              "type": "Integer",
+              "description": "If the sender of the message boosted the chat, the number of boosts added by the user",
+              "html_description": "<td><em>Optional</em>. If the sender of the message boosted the chat, the number of boosts added by the user</td>",
+              "rst_description": "*Optional*. If the sender of the message boosted the chat, the number of boosts added by the user\n",
+              "name": "sender_boost_count",
+              "required": false
+            },
             {
               "type": "Integer",
               "description": "Date the message was sent in Unix time. It is always a positive number, representing a valid date.",
@@ -885,6 +909,14 @@
               "name": "quote",
               "required": false
             },
+            {
+              "type": "Story",
+              "description": "For replies to a story, the original story",
+              "html_description": "<td><em>Optional</em>. For replies to a story, the original story</td>",
+              "rst_description": "*Optional*. For replies to a story, the original story\n",
+              "name": "reply_to_story",
+              "required": false
+            },
             {
               "type": "User",
               "description": "Bot through which the message was sent",
@@ -1253,6 +1285,14 @@
               "name": "proximity_alert_triggered",
               "required": false
             },
+            {
+              "type": "ChatBoostAdded",
+              "description": "Service message: user boosted the chat",
+              "html_description": "<td><em>Optional</em>. Service message: user boosted the chat</td>",
+              "rst_description": "*Optional*. Service message: user boosted the chat\n",
+              "name": "boost_added",
+              "required": false
+            },
             {
               "type": "ForumTopicCreated",
               "description": "Service message: forum topic created",
@@ -2257,10 +2297,27 @@
         {
           "anchor": "story",
           "name": "Story",
-          "description": "This object represents a message about a forwarded story in the chat. Currently holds no information.",
-          "html_description": "<p>This object represents a message about a forwarded story in the chat. Currently holds no information.</p>",
-          "rst_description": "This object represents a message about a forwarded story in the chat. Currently holds no information.",
-          "annotations": [],
+          "description": "This object represents a story.",
+          "html_description": "<p>This object represents a story.</p>",
+          "rst_description": "This object represents a story.",
+          "annotations": [
+            {
+              "type": "Chat",
+              "description": "Chat that posted the story",
+              "html_description": "<td>Chat that posted the story</td>",
+              "rst_description": "Chat that posted the story\n",
+              "name": "chat",
+              "required": true
+            },
+            {
+              "type": "Integer",
+              "description": "Unique identifier for the story in the chat",
+              "html_description": "<td>Unique identifier for the story in the chat</td>",
+              "rst_description": "Unique identifier for the story in the chat\n",
+              "name": "id",
+              "required": true
+            }
+          ],
           "category": "types"
         },
         {
@@ -2735,7 +2792,7 @@
               "required": true
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "description": "The radius of uncertainty for the location, measured in meters; 0-1500",
               "html_description": "<td><em>Optional</em>. The radius of uncertainty for the location, measured in meters; 0-1500</td>",
               "rst_description": "*Optional*. The radius of uncertainty for the location, measured in meters; 0-1500\n",
@@ -2913,6 +2970,24 @@
           ],
           "category": "types"
         },
+        {
+          "anchor": "chatboostadded",
+          "name": "ChatBoostAdded",
+          "description": "This object represents a service message about a user boosting a chat.",
+          "html_description": "<p>This object represents a service message about a user boosting a chat.</p>",
+          "rst_description": "This object represents a service message about a user boosting a chat.",
+          "annotations": [
+            {
+              "type": "Integer",
+              "description": "Number of boosts added by the user",
+              "html_description": "<td>Number of boosts added by the user</td>",
+              "rst_description": "Number of boosts added by the user\n",
+              "name": "boost_count",
+              "required": true
+            }
+          ],
+          "category": "types"
+        },
         {
           "anchor": "forumtopiccreated",
           "name": "ForumTopicCreated",
@@ -3258,9 +3333,9 @@
             },
             {
               "type": "Integer",
-              "description": "Identifier of the messsage with the giveaway in the chat",
-              "html_description": "<td>Identifier of the messsage with the giveaway in the chat</td>",
-              "rst_description": "Identifier of the messsage with the giveaway in the chat\n",
+              "description": "Identifier of the message with the giveaway in the chat",
+              "html_description": "<td>Identifier of the message with the giveaway in the chat</td>",
+              "rst_description": "Identifier of the message with the giveaway in the chat\n",
               "name": "giveaway_message_id",
               "required": true
             },
@@ -3398,17 +3473,17 @@
             },
             {
               "type": "Boolean",
-              "description": "True, if the media in the link preview is suppposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview",
-              "html_description": "<td><em>Optional</em>. <em>True</em>, if the media in the link preview is suppposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview</td>",
-              "rst_description": "*Optional*. :code:`True`, if the media in the link preview is suppposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview\n",
+              "description": "True, if the media in the link preview is supposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview",
+              "html_description": "<td><em>Optional</em>. <em>True</em>, if the media in the link preview is supposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview</td>",
+              "rst_description": "*Optional*. :code:`True`, if the media in the link preview is supposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview\n",
               "name": "prefer_small_media",
               "required": false
             },
             {
               "type": "Boolean",
-              "description": "True, if the media in the link preview is suppposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview",
-              "html_description": "<td><em>Optional</em>. <em>True</em>, if the media in the link preview is suppposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview</td>",
-              "rst_description": "*Optional*. :code:`True`, if the media in the link preview is suppposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview\n",
+              "description": "True, if the media in the link preview is supposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview",
+              "html_description": "<td><em>Optional</em>. <em>True</em>, if the media in the link preview is supposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview</td>",
+              "rst_description": "*Optional*. :code:`True`, if the media in the link preview is supposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview\n",
               "name": "prefer_large_media",
               "required": false
             },
@@ -3558,9 +3633,9 @@
             },
             {
               "type": "Boolean",
-              "description": "Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.\n\nExample: A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.",
-              "html_description": "<td><em>Optional</em>. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href=\"#message\">Message</a> object; 2) if the bot's message is a reply (has <em>reply_to_message_id</em>), sender of the original message.<br/>\n<br/>\n<em>Example:</em> A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.</td>",
-              "rst_description": "*Optional*. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message.\n\n\n\n*Example:* A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.\n",
+              "description": "Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.\n\nExample: A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.",
+              "html_description": "<td><em>Optional</em>. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href=\"#message\">Message</a> object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.<br/>\n<br/>\n<em>Example:</em> A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.</td>",
+              "rst_description": "*Optional*. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.\n\n\n\n*Example:* A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.\n",
               "name": "selective",
               "required": false
             }
@@ -3570,9 +3645,9 @@
         {
           "anchor": "keyboardbutton",
           "name": "KeyboardButton",
-          "description": "This object represents one button of the reply keyboard. For simple text buttons, String can be used instead of this object to specify the button text. The optional fields web_app, request_users, request_chat, request_contact, request_location, and request_poll are mutually exclusive.\nNote: request_contact and request_location options will only work in Telegram versions released after 9 April, 2016. Older clients will display unsupported message.\nNote: request_poll option will only work in Telegram versions released after 23 January, 2020. Older clients will display unsupported message.\nNote: web_app option will only work in Telegram versions released after 16 April, 2022. Older clients will display unsupported message.\nNote: request_users and request_chat options will only work in Telegram versions released after 3 February, 2023. Older clients will display unsupported message.",
-          "html_description": "<p>This object represents one button of the reply keyboard. For simple text buttons, <em>String</em> can be used instead of this object to specify the button text. The optional fields <em>web_app</em>, <em>request_users</em>, <em>request_chat</em>, <em>request_contact</em>, <em>request_location</em>, and <em>request_poll</em> are mutually exclusive.</p><p><strong>Note:</strong> <em>request_contact</em> and <em>request_location</em> options will only work in Telegram versions released after 9 April, 2016. Older clients will display <em>unsupported message</em>.<br/>\n<strong>Note:</strong> <em>request_poll</em> option will only work in Telegram versions released after 23 January, 2020. Older clients will display <em>unsupported message</em>.<br/>\n<strong>Note:</strong> <em>web_app</em> option will only work in Telegram versions released after 16 April, 2022. Older clients will display <em>unsupported message</em>.<br/>\n<strong>Note:</strong> <em>request_users</em> and <em>request_chat</em> options will only work in Telegram versions released after 3 February, 2023. Older clients will display <em>unsupported message</em>.</p>",
-          "rst_description": "This object represents one button of the reply keyboard. For simple text buttons, *String* can be used instead of this object to specify the button text. The optional fields *web_app*, *request_users*, *request_chat*, *request_contact*, *request_location*, and *request_poll* are mutually exclusive.\n**Note:** *request_contact* and *request_location* options will only work in Telegram versions released after 9 April, 2016. Older clients will display *unsupported message*.\n\n**Note:** *request_poll* option will only work in Telegram versions released after 23 January, 2020. Older clients will display *unsupported message*.\n\n**Note:** *web_app* option will only work in Telegram versions released after 16 April, 2022. Older clients will display *unsupported message*.\n\n**Note:** *request_users* and *request_chat* options will only work in Telegram versions released after 3 February, 2023. Older clients will display *unsupported message*.",
+          "description": "This object represents one button of the reply keyboard. For simple text buttons, String can be used instead of this object to specify the button text. The optional fields web_app, request_users, request_chat, request_contact, request_location, and request_poll are mutually exclusive.\nNote: request_users and request_chat options will only work in Telegram versions released after 3 February, 2023. Older clients will display unsupported message.",
+          "html_description": "<p>This object represents one button of the reply keyboard. For simple text buttons, <em>String</em> can be used instead of this object to specify the button text. The optional fields <em>web_app</em>, <em>request_users</em>, <em>request_chat</em>, <em>request_contact</em>, <em>request_location</em>, and <em>request_poll</em> are mutually exclusive.</p><p><strong>Note:</strong> <em>request_users</em> and <em>request_chat</em> options will only work in Telegram versions released after 3 February, 2023. Older clients will display <em>unsupported message</em>.</p>",
+          "rst_description": "This object represents one button of the reply keyboard. For simple text buttons, *String* can be used instead of this object to specify the button text. The optional fields *web_app*, *request_users*, *request_chat*, *request_contact*, *request_location*, and *request_poll* are mutually exclusive.\n**Note:** *request_users* and *request_chat* options will only work in Telegram versions released after 3 February, 2023. Older clients will display *unsupported message*.",
           "annotations": [
             {
               "type": "String",
@@ -3784,9 +3859,9 @@
             },
             {
               "type": "Boolean",
-              "description": "Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.\n\nExample: A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.",
-              "html_description": "<td><em>Optional</em>. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href=\"#message\">Message</a> object; 2) if the bot's message is a reply (has <em>reply_to_message_id</em>), sender of the original message.<br/>\n<br/>\n<em>Example:</em> A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.</td>",
-              "rst_description": "*Optional*. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message.\n\n\n\n*Example:* A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.\n",
+              "description": "Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.\n\nExample: A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.",
+              "html_description": "<td><em>Optional</em>. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href=\"#message\">Message</a> object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.<br/>\n<br/>\n<em>Example:</em> A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.</td>",
+              "rst_description": "*Optional*. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.\n\n\n\n*Example:* A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.\n",
               "name": "selective",
               "required": false
             }
@@ -3796,9 +3871,9 @@
         {
           "anchor": "inlinekeyboardmarkup",
           "name": "InlineKeyboardMarkup",
-          "description": "This object represents an inline keyboard that appears right next to the message it belongs to.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will display unsupported message.",
-          "html_description": "<p>This object represents an <a href=\"/bots/features#inline-keyboards\">inline keyboard</a> that appears right next to the message it belongs to.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will display <em>unsupported message</em>.</p>",
-          "rst_description": "This object represents an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_ that appears right next to the message it belongs to.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will display *unsupported message*.",
+          "description": "This object represents an inline keyboard that appears right next to the message it belongs to.",
+          "html_description": "<p>This object represents an <a href=\"/bots/features#inline-keyboards\">inline keyboard</a> that appears right next to the message it belongs to.</p>",
+          "rst_description": "This object represents an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_ that appears right next to the message it belongs to.",
           "annotations": [
             {
               "type": "Array of Array of InlineKeyboardButton",
@@ -3828,9 +3903,9 @@
             },
             {
               "type": "String",
-              "description": "HTTP or tg:// URL to be opened when the button is pressed. Links tg://user?id=<user_id> can be used to mention a user by their ID without using a username, if this is allowed by their privacy settings.",
-              "html_description": "<td><em>Optional</em>. HTTP or tg:// URL to be opened when the button is pressed. Links <code>tg://user?id=&lt;user_id&gt;</code> can be used to mention a user by their ID without using a username, if this is allowed by their privacy settings.</td>",
-              "rst_description": "*Optional*. HTTP or tg:// URL to be opened when the button is pressed. Links :code:`tg://user?id=<user_id>` can be used to mention a user by their ID without using a username, if this is allowed by their privacy settings.\n",
+              "description": "HTTP or tg:// URL to be opened when the button is pressed. Links tg://user?id=<user_id> can be used to mention a user by their identifier without using a username, if this is allowed by their privacy settings.",
+              "html_description": "<td><em>Optional</em>. HTTP or tg:// URL to be opened when the button is pressed. Links <code>tg://user?id=&lt;user_id&gt;</code> can be used to mention a user by their identifier without using a username, if this is allowed by their privacy settings.</td>",
+              "rst_description": "*Optional*. HTTP or tg:// URL to be opened when the button is pressed. Links :code:`tg://user?id=<user_id>` can be used to mention a user by their identifier without using a username, if this is allowed by their privacy settings.\n",
               "name": "url",
               "required": false
             },
@@ -4084,9 +4159,9 @@
             },
             {
               "type": "Boolean",
-              "description": "Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.",
-              "html_description": "<td><em>Optional</em>. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href=\"#message\">Message</a> object; 2) if the bot's message is a reply (has <em>reply_to_message_id</em>), sender of the original message.</td>",
-              "rst_description": "*Optional*. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message.\n",
+              "description": "Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.",
+              "html_description": "<td><em>Optional</em>. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href=\"#message\">Message</a> object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.</td>",
+              "rst_description": "*Optional*. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.\n",
               "name": "selective",
               "required": false
             }
@@ -4234,9 +4309,9 @@
             },
             {
               "type": "Boolean",
-              "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": "<td><em>True</em>, 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</td>",
-              "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",
+              "description": "True, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.",
+              "html_description": "<td><em>True</em>, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.</td>",
+              "rst_description": ":code:`True`, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.\n",
               "name": "can_manage_chat",
               "required": true
             },
@@ -4288,6 +4363,30 @@
               "name": "can_invite_users",
               "required": true
             },
+            {
+              "type": "Boolean",
+              "description": "True, if the administrator can post stories to the chat",
+              "html_description": "<td><em>True</em>, if the administrator can post stories to the chat</td>",
+              "rst_description": ":code:`True`, if the administrator can post stories to the chat\n",
+              "name": "can_post_stories",
+              "required": true
+            },
+            {
+              "type": "Boolean",
+              "description": "True, if the administrator can edit stories posted by other users",
+              "html_description": "<td><em>True</em>, if the administrator can edit stories posted by other users</td>",
+              "rst_description": ":code:`True`, if the administrator can edit stories posted by other users\n",
+              "name": "can_edit_stories",
+              "required": true
+            },
+            {
+              "type": "Boolean",
+              "description": "True, if the administrator can delete stories posted by other users",
+              "html_description": "<td><em>True</em>, if the administrator can delete stories posted by other users</td>",
+              "rst_description": ":code:`True`, if the administrator can delete stories posted by other users\n",
+              "name": "can_delete_stories",
+              "required": true
+            },
             {
               "type": "Boolean",
               "description": "True, if the administrator can post messages in the channel, or access channel statistics; channels only",
@@ -4312,30 +4411,6 @@
               "name": "can_pin_messages",
               "required": false
             },
-            {
-              "type": "Boolean",
-              "description": "True, if the administrator can post stories in the channel; channels only",
-              "html_description": "<td><em>Optional</em>. <em>True</em>, if the administrator can post stories in the channel; channels only</td>",
-              "rst_description": "*Optional*. :code:`True`, if the administrator can post stories in the channel; channels only\n",
-              "name": "can_post_stories",
-              "required": false
-            },
-            {
-              "type": "Boolean",
-              "description": "True, if the administrator can edit stories posted by other users; channels only",
-              "html_description": "<td><em>Optional</em>. <em>True</em>, if the administrator can edit stories posted by other users; channels only</td>",
-              "rst_description": "*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only\n",
-              "name": "can_edit_stories",
-              "required": false
-            },
-            {
-              "type": "Boolean",
-              "description": "True, if the administrator can delete stories posted by other users; channels only",
-              "html_description": "<td><em>Optional</em>. <em>True</em>, if the administrator can delete stories posted by other users; channels only</td>",
-              "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only\n",
-              "name": "can_delete_stories",
-              "required": false
-            },
             {
               "type": "Boolean",
               "description": "True, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only",
@@ -4505,9 +4580,9 @@
             },
             {
               "type": "Boolean",
-              "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": "<td><em>True</em>, 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</td>",
-              "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",
+              "description": "True, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.",
+              "html_description": "<td><em>True</em>, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.</td>",
+              "rst_description": ":code:`True`, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.\n",
               "name": "can_manage_chat",
               "required": true
             },
@@ -4559,6 +4634,30 @@
               "name": "can_invite_users",
               "required": true
             },
+            {
+              "type": "Boolean",
+              "description": "True, if the administrator can post stories to the chat",
+              "html_description": "<td><em>True</em>, if the administrator can post stories to the chat</td>",
+              "rst_description": ":code:`True`, if the administrator can post stories to the chat\n",
+              "name": "can_post_stories",
+              "required": true
+            },
+            {
+              "type": "Boolean",
+              "description": "True, if the administrator can edit stories posted by other users",
+              "html_description": "<td><em>True</em>, if the administrator can edit stories posted by other users</td>",
+              "rst_description": ":code:`True`, if the administrator can edit stories posted by other users\n",
+              "name": "can_edit_stories",
+              "required": true
+            },
+            {
+              "type": "Boolean",
+              "description": "True, if the administrator can delete stories posted by other users",
+              "html_description": "<td><em>True</em>, if the administrator can delete stories posted by other users</td>",
+              "rst_description": ":code:`True`, if the administrator can delete stories posted by other users\n",
+              "name": "can_delete_stories",
+              "required": true
+            },
             {
               "type": "Boolean",
               "description": "True, if the administrator can post messages in the channel, or access channel statistics; channels only",
@@ -4583,30 +4682,6 @@
               "name": "can_pin_messages",
               "required": false
             },
-            {
-              "type": "Boolean",
-              "description": "True, if the administrator can post stories in the channel; channels only",
-              "html_description": "<td><em>Optional</em>. <em>True</em>, if the administrator can post stories in the channel; channels only</td>",
-              "rst_description": "*Optional*. :code:`True`, if the administrator can post stories in the channel; channels only\n",
-              "name": "can_post_stories",
-              "required": false
-            },
-            {
-              "type": "Boolean",
-              "description": "True, if the administrator can edit stories posted by other users; channels only",
-              "html_description": "<td><em>Optional</em>. <em>True</em>, if the administrator can edit stories posted by other users; channels only</td>",
-              "rst_description": "*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only\n",
-              "name": "can_edit_stories",
-              "required": false
-            },
-            {
-              "type": "Boolean",
-              "description": "True, if the administrator can delete stories posted by other users; channels only",
-              "html_description": "<td><em>Optional</em>. <em>True</em>, if the administrator can delete stories posted by other users; channels only</td>",
-              "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only\n",
-              "name": "can_delete_stories",
-              "required": false
-            },
             {
               "type": "Boolean",
               "description": "True, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only",
@@ -5797,9 +5872,9 @@
             },
             {
               "type": "ChatBoost",
-              "description": "Infomation about the chat boost",
-              "html_description": "<td>Infomation about the chat boost</td>",
-              "rst_description": "Infomation about the chat boost\n",
+              "description": "Information about the chat boost",
+              "html_description": "<td>Information about the chat boost</td>",
+              "rst_description": "Information about the chat boost\n",
               "name": "boost",
               "required": true
             }
@@ -7572,7 +7647,7 @@
               "name": "message_thread_id"
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "required": true,
               "description": "Latitude of the location",
               "html_description": "<td>Latitude of the location</td>",
@@ -7580,7 +7655,7 @@
               "name": "latitude"
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "required": true,
               "description": "Longitude of the location",
               "html_description": "<td>Longitude of the location</td>",
@@ -7588,7 +7663,7 @@
               "name": "longitude"
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "required": false,
               "description": "The radius of uncertainty for the location, measured in meters; 0-1500",
               "html_description": "<td>The radius of uncertainty for the location, measured in meters; 0-1500</td>",
@@ -7678,7 +7753,7 @@
               "name": "message_thread_id"
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "required": true,
               "description": "Latitude of the venue",
               "html_description": "<td>Latitude of the venue</td>",
@@ -7686,7 +7761,7 @@
               "name": "latitude"
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "required": true,
               "description": "Longitude of the venue",
               "html_description": "<td>Longitude of the venue</td>",
@@ -8374,9 +8449,9 @@
             {
               "type": "Boolean",
               "required": false,
-              "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": "<td>Pass <em>True</em> 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</td>",
-              "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",
+              "description": "Pass True if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.",
+              "html_description": "<td>Pass <em>True</em> if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.</td>",
+              "rst_description": "Pass :code:`True` if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.\n",
               "name": "can_manage_chat"
             },
             {
@@ -8430,50 +8505,50 @@
             {
               "type": "Boolean",
               "required": false,
-              "description": "Pass True if the administrator can post messages in the channel, or access channel statistics; channels only",
-              "html_description": "<td>Pass <em>True</em> if the administrator can post messages in the channel, or access channel statistics; channels only</td>",
-              "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"
+              "description": "Pass True if the administrator can post stories to the chat",
+              "html_description": "<td>Pass <em>True</em> if the administrator can post stories to the chat</td>",
+              "rst_description": "Pass :code:`True` if the administrator can post stories to the chat\n",
+              "name": "can_post_stories"
             },
             {
               "type": "Boolean",
               "required": false,
-              "description": "Pass True if the administrator can edit messages of other users and can pin messages; channels only",
-              "html_description": "<td>Pass <em>True</em> if the administrator can edit messages of other users and can pin messages; channels only</td>",
-              "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"
+              "description": "Pass True if the administrator can edit stories posted by other users",
+              "html_description": "<td>Pass <em>True</em> if the administrator can edit stories posted by other users</td>",
+              "rst_description": "Pass :code:`True` if the administrator can edit stories posted by other users\n",
+              "name": "can_edit_stories"
             },
             {
               "type": "Boolean",
               "required": false,
-              "description": "Pass True if the administrator can pin messages, supergroups only",
-              "html_description": "<td>Pass <em>True</em> if the administrator can pin messages, supergroups only</td>",
-              "rst_description": "Pass :code:`True` if the administrator can pin messages, supergroups only\n",
-              "name": "can_pin_messages"
+              "description": "Pass True if the administrator can delete stories posted by other users",
+              "html_description": "<td>Pass <em>True</em> if the administrator can delete stories posted by other users</td>",
+              "rst_description": "Pass :code:`True` if the administrator can delete stories posted by other users\n",
+              "name": "can_delete_stories"
             },
             {
               "type": "Boolean",
               "required": false,
-              "description": "Pass True if the administrator can post stories in the channel; channels only",
-              "html_description": "<td>Pass <em>True</em> if the administrator can post stories in the channel; channels only</td>",
-              "rst_description": "Pass :code:`True` if the administrator can post stories in the channel; channels only\n",
-              "name": "can_post_stories"
+              "description": "Pass True if the administrator can post messages in the channel, or access channel statistics; channels only",
+              "html_description": "<td>Pass <em>True</em> if the administrator can post messages in the channel, or access channel statistics; channels only</td>",
+              "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 stories posted by other users; channels only",
-              "html_description": "<td>Pass <em>True</em> if the administrator can edit stories posted by other users; channels only</td>",
-              "rst_description": "Pass :code:`True` if the administrator can edit stories posted by other users; channels only\n",
-              "name": "can_edit_stories"
+              "description": "Pass True if the administrator can edit messages of other users and can pin messages; channels only",
+              "html_description": "<td>Pass <em>True</em> if the administrator can edit messages of other users and can pin messages; channels only</td>",
+              "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,
-              "description": "Pass True if the administrator can delete stories posted by other users; channels only",
-              "html_description": "<td>Pass <em>True</em> if the administrator can delete stories posted by other users; channels only</td>",
-              "rst_description": "Pass :code:`True` if the administrator can delete stories posted by other users; channels only\n",
-              "name": "can_delete_stories"
+              "description": "Pass True if the administrator can pin messages, supergroups only",
+              "html_description": "<td>Pass <em>True</em> if the administrator can pin messages, supergroups only</td>",
+              "rst_description": "Pass :code:`True` if the administrator can pin messages, supergroups only\n",
+              "name": "can_pin_messages"
             },
             {
               "type": "Boolean",
@@ -10050,7 +10125,7 @@
               "name": "inline_message_id"
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "required": true,
               "description": "Latitude of new location",
               "html_description": "<td>Latitude of new location</td>",
@@ -10058,7 +10133,7 @@
               "name": "latitude"
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "required": true,
               "description": "Longitude of new location",
               "html_description": "<td>Longitude of new location</td>",
@@ -10066,7 +10141,7 @@
               "name": "longitude"
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "required": false,
               "description": "The radius of uncertainty for the location, measured in meters; 0-1500",
               "html_description": "<td>The radius of uncertainty for the location, measured in meters; 0-1500</td>",
@@ -10489,7 +10564,7 @@
               "required": true
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "description": "Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. For example, choosing -1.0 will place mask just to the left of the default mask position.",
               "html_description": "<td>Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. For example, choosing -1.0 will place mask just to the left of the default mask position.</td>",
               "rst_description": "Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. For example, choosing -1.0 will place mask just to the left of the default mask position.\n",
@@ -10497,7 +10572,7 @@
               "required": true
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "description": "Shift by Y-axis measured in heights of the mask scaled to the face size, from top to bottom. For example, 1.0 will place the mask just below the default mask position.",
               "html_description": "<td>Shift by Y-axis measured in heights of the mask scaled to the face size, from top to bottom. For example, 1.0 will place the mask just below the default mask position.</td>",
               "rst_description": "Shift by Y-axis measured in heights of the mask scaled to the face size, from top to bottom. For example, 1.0 will place the mask just below the default mask position.\n",
@@ -10505,7 +10580,7 @@
               "required": true
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "description": "Mask scaling coefficient. For example, 2.0 means double size.",
               "html_description": "<td>Mask scaling coefficient. For example, 2.0 means double size.</td>",
               "rst_description": "Mask scaling coefficient. For example, 2.0 means double size.\n",
@@ -11782,9 +11857,9 @@
         {
           "anchor": "inlinequeryresultaudio",
           "name": "InlineQueryResultAudio",
-          "description": "Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the audio.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-          "html_description": "<p>Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the audio.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-          "rst_description": "Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the audio.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+          "description": "Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the audio.",
+          "html_description": "<p>Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the audio.</p>",
+          "rst_description": "Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the audio.",
           "annotations": [
             {
               "type": "String",
@@ -11880,9 +11955,9 @@
         {
           "anchor": "inlinequeryresultvoice",
           "name": "InlineQueryResultVoice",
-          "description": "Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the the voice message.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-          "html_description": "<p>Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the the voice message.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-          "rst_description": "Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the the voice message.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+          "description": "Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the the voice message.",
+          "html_description": "<p>Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the the voice message.</p>",
+          "rst_description": "Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the the voice message.",
           "annotations": [
             {
               "type": "String",
@@ -11970,9 +12045,9 @@
         {
           "anchor": "inlinequeryresultdocument",
           "name": "InlineQueryResultDocument",
-          "description": "Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the file. Currently, only .PDF and .ZIP files can be sent using this method.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-          "html_description": "<p>Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the file. Currently, only <strong>.PDF</strong> and <strong>.ZIP</strong> files can be sent using this method.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-          "rst_description": "Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the file. Currently, only **.PDF** and **.ZIP** files can be sent using this method.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+          "description": "Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the file. Currently, only .PDF and .ZIP files can be sent using this method.",
+          "html_description": "<p>Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the file. Currently, only <strong>.PDF</strong> and <strong>.ZIP</strong> files can be sent using this method.</p>",
+          "rst_description": "Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the file. Currently, only **.PDF** and **.ZIP** files can be sent using this method.",
           "annotations": [
             {
               "type": "String",
@@ -12092,9 +12167,9 @@
         {
           "anchor": "inlinequeryresultlocation",
           "name": "InlineQueryResultLocation",
-          "description": "Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the location.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-          "html_description": "<p>Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the location.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-          "rst_description": "Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the location.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+          "description": "Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the location.",
+          "html_description": "<p>Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the location.</p>",
+          "rst_description": "Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the location.",
           "annotations": [
             {
               "type": "String",
@@ -12113,7 +12188,7 @@
               "required": true
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "description": "Location latitude in degrees",
               "html_description": "<td>Location latitude in degrees</td>",
               "rst_description": "Location latitude in degrees\n",
@@ -12121,7 +12196,7 @@
               "required": true
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "description": "Location longitude in degrees",
               "html_description": "<td>Location longitude in degrees</td>",
               "rst_description": "Location longitude in degrees\n",
@@ -12137,7 +12212,7 @@
               "required": true
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "description": "The radius of uncertainty for the location, measured in meters; 0-1500",
               "html_description": "<td><em>Optional</em>. The radius of uncertainty for the location, measured in meters; 0-1500</td>",
               "rst_description": "*Optional*. The radius of uncertainty for the location, measured in meters; 0-1500\n",
@@ -12214,9 +12289,9 @@
         {
           "anchor": "inlinequeryresultvenue",
           "name": "InlineQueryResultVenue",
-          "description": "Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the venue.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-          "html_description": "<p>Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the venue.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-          "rst_description": "Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the venue.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+          "description": "Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the venue.",
+          "html_description": "<p>Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the venue.</p>",
+          "rst_description": "Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the venue.",
           "annotations": [
             {
               "type": "String",
@@ -12344,9 +12419,9 @@
         {
           "anchor": "inlinequeryresultcontact",
           "name": "InlineQueryResultContact",
-          "description": "Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the contact.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-          "html_description": "<p>Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the contact.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-          "rst_description": "Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the contact.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+          "description": "Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the contact.",
+          "html_description": "<p>Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the contact.</p>",
+          "rst_description": "Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the contact.",
           "annotations": [
             {
               "type": "String",
@@ -12442,9 +12517,9 @@
         {
           "anchor": "inlinequeryresultgame",
           "name": "InlineQueryResultGame",
-          "description": "Represents a Game.\nNote: This will only work in Telegram versions released after October 1, 2016. Older clients will not display any inline results if a game result is among them.",
-          "html_description": "<p>Represents a <a href=\"#games\">Game</a>.</p><p><strong>Note:</strong> This will only work in Telegram versions released after October 1, 2016. Older clients will not display any inline results if a game result is among them.</p>",
-          "rst_description": "Represents a `Game <https://core.telegram.org/bots/api#games>`_.\n**Note:** This will only work in Telegram versions released after October 1, 2016. Older clients will not display any inline results if a game result is among them.",
+          "description": "Represents a Game.",
+          "html_description": "<p>Represents a <a href=\"#games\">Game</a>.</p>",
+          "rst_description": "Represents a `Game <https://core.telegram.org/bots/api#games>`_.",
           "annotations": [
             {
               "type": "String",
@@ -12738,9 +12813,9 @@
         {
           "anchor": "inlinequeryresultcachedsticker",
           "name": "InlineQueryResultCachedSticker",
-          "description": "Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the sticker.\nNote: This will only work in Telegram versions released after 9 April, 2016 for static stickers and after 06 July, 2019 for animated stickers. Older clients will ignore them.",
-          "html_description": "<p>Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the sticker.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016 for static stickers and after 06 July, 2019 for <a href=\"https://telegram.org/blog/animated-stickers\">animated stickers</a>. Older clients will ignore them.</p>",
-          "rst_description": "Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the sticker.\n**Note:** This will only work in Telegram versions released after 9 April, 2016 for static stickers and after 06 July, 2019 for `animated stickers <https://telegram.org/blog/animated-stickers>`_. Older clients will ignore them.",
+          "description": "Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the sticker.",
+          "html_description": "<p>Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the sticker.</p>",
+          "rst_description": "Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the sticker.",
           "annotations": [
             {
               "type": "String",
@@ -12788,9 +12863,9 @@
         {
           "anchor": "inlinequeryresultcacheddocument",
           "name": "InlineQueryResultCachedDocument",
-          "description": "Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the file.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-          "html_description": "<p>Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the file.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-          "rst_description": "Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the file.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+          "description": "Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the file.",
+          "html_description": "<p>Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the file.</p>",
+          "rst_description": "Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the file.",
           "annotations": [
             {
               "type": "String",
@@ -12968,9 +13043,9 @@
         {
           "anchor": "inlinequeryresultcachedvoice",
           "name": "InlineQueryResultCachedVoice",
-          "description": "Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the voice message.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-          "html_description": "<p>Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the voice message.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-          "rst_description": "Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the voice message.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+          "description": "Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the voice message.",
+          "html_description": "<p>Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the voice message.</p>",
+          "rst_description": "Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the voice message.",
           "annotations": [
             {
               "type": "String",
@@ -13050,9 +13125,9 @@
         {
           "anchor": "inlinequeryresultcachedaudio",
           "name": "InlineQueryResultCachedAudio",
-          "description": "Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the audio.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-          "html_description": "<p>Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the audio.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-          "rst_description": "Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the audio.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+          "description": "Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the audio.",
+          "html_description": "<p>Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the audio.</p>",
+          "rst_description": "Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the audio.",
           "annotations": [
             {
               "type": "String",
@@ -13196,7 +13271,7 @@
               "required": true
             },
             {
-              "type": "Float number",
+              "type": "Float",
               "description": "The radius of uncertainty for the location, measured in meters; 0-1500",
               "html_description": "<td><em>Optional</em>. The radius of uncertainty for the location, measured in meters; 0-1500</td>",
               "rst_description": "*Optional*. The radius of uncertainty for the location, measured in meters; 0-1500\n",
@@ -14474,7 +14549,7 @@
           "category": "types"
         }
       ],
-      "description": "Your bot can accept payments from Telegram users. Please see the introduction to payments for more details on the process and how to set up payments for your bot. Please note that users will need Telegram v.4.0 or higher to use payments (released on May 18, 2017)."
+      "description": "Your bot can accept payments from Telegram users. Please see the introduction to payments for more details on the process and how to set up payments for your bot."
     },
     {
       "title": "Telegram Passport",
diff --git a/.butcher/types/Chat/entity.json b/.butcher/types/Chat/entity.json
index 188816ef..6bd7efd4 100644
--- a/.butcher/types/Chat/entity.json
+++ b/.butcher/types/Chat/entity.json
@@ -213,12 +213,20 @@
       },
       {
         "type": "Integer",
-        "description": "For supergroups, the minimum allowed delay between consecutive messages sent by each unpriviledged user; in seconds. Returned only in getChat.",
-        "html_description": "<td><em>Optional</em>. For supergroups, the minimum allowed delay between consecutive messages sent by each unpriviledged user; in seconds. Returned only in <a href=\"#getchat\">getChat</a>.</td>",
-        "rst_description": "*Optional*. For supergroups, the minimum allowed delay between consecutive messages sent by each unpriviledged user; in seconds. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n",
+        "description": "For supergroups, the minimum allowed delay between consecutive messages sent by each unprivileged user; in seconds. Returned only in getChat.",
+        "html_description": "<td><em>Optional</em>. For supergroups, the minimum allowed delay between consecutive messages sent by each unprivileged user; in seconds. Returned only in <a href=\"#getchat\">getChat</a>.</td>",
+        "rst_description": "*Optional*. For supergroups, the minimum allowed delay between consecutive messages sent by each unprivileged user; in seconds. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n",
         "name": "slow_mode_delay",
         "required": false
       },
+      {
+        "type": "Integer",
+        "description": "For supergroups, the minimum number of boosts that a non-administrator user needs to add in order to ignore slow mode and chat permissions. Returned only in getChat.",
+        "html_description": "<td><em>Optional</em>. For supergroups, the minimum number of boosts that a non-administrator user needs to add in order to ignore slow mode and chat permissions. Returned only in <a href=\"#getchat\">getChat</a>.</td>",
+        "rst_description": "*Optional*. For supergroups, the minimum number of boosts that a non-administrator user needs to add in order to ignore slow mode and chat permissions. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n",
+        "name": "unrestrict_boost_count",
+        "required": false
+      },
       {
         "type": "Integer",
         "description": "The time after which all messages sent to the chat will be automatically deleted; in seconds. Returned only in getChat.",
@@ -275,6 +283,14 @@
         "name": "can_set_sticker_set",
         "required": false
       },
+      {
+        "type": "String",
+        "description": "For supergroups, the name of the group's custom emoji sticker set. Custom emoji from this set can be used by all users and bots in the group. Returned only in getChat.",
+        "html_description": "<td><em>Optional</em>. For supergroups, the name of the group's custom emoji sticker set. Custom emoji from this set can be used by all users and bots in the group. Returned only in <a href=\"#getchat\">getChat</a>.</td>",
+        "rst_description": "*Optional*. For supergroups, the name of the group's custom emoji sticker set. Custom emoji from this set can be used by all users and bots in the group. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n",
+        "name": "custom_emoji_sticker_set_name",
+        "required": false
+      },
       {
         "type": "Integer",
         "description": "Unique identifier for the linked chat, i.e. the discussion group identifier for a channel and vice versa; for supergroups and channel chats. This identifier may be greater than 32 bits and some programming languages may have difficulty/silent defects in interpreting it. But it is smaller than 52 bits, so a signed 64 bit integer or double-precision float type are safe for storing this identifier. Returned only in getChat.",
diff --git a/.butcher/types/ChatAdministratorRights/entity.json b/.butcher/types/ChatAdministratorRights/entity.json
index e493b3e2..d45cda66 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, 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": "<td><em>True</em>, 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</td>",
-        "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",
+        "description": "True, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.",
+        "html_description": "<td><em>True</em>, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.</td>",
+        "rst_description": ":code:`True`, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.\n",
         "name": "can_manage_chat",
         "required": true
       },
@@ -75,6 +75,30 @@
         "name": "can_invite_users",
         "required": true
       },
+      {
+        "type": "Boolean",
+        "description": "True, if the administrator can post stories to the chat",
+        "html_description": "<td><em>True</em>, if the administrator can post stories to the chat</td>",
+        "rst_description": ":code:`True`, if the administrator can post stories to the chat\n",
+        "name": "can_post_stories",
+        "required": true
+      },
+      {
+        "type": "Boolean",
+        "description": "True, if the administrator can edit stories posted by other users",
+        "html_description": "<td><em>True</em>, if the administrator can edit stories posted by other users</td>",
+        "rst_description": ":code:`True`, if the administrator can edit stories posted by other users\n",
+        "name": "can_edit_stories",
+        "required": true
+      },
+      {
+        "type": "Boolean",
+        "description": "True, if the administrator can delete stories posted by other users",
+        "html_description": "<td><em>True</em>, if the administrator can delete stories posted by other users</td>",
+        "rst_description": ":code:`True`, if the administrator can delete stories posted by other users\n",
+        "name": "can_delete_stories",
+        "required": true
+      },
       {
         "type": "Boolean",
         "description": "True, if the administrator can post messages in the channel, or access channel statistics; channels only",
@@ -99,30 +123,6 @@
         "name": "can_pin_messages",
         "required": false
       },
-      {
-        "type": "Boolean",
-        "description": "True, if the administrator can post stories in the channel; channels only",
-        "html_description": "<td><em>Optional</em>. <em>True</em>, if the administrator can post stories in the channel; channels only</td>",
-        "rst_description": "*Optional*. :code:`True`, if the administrator can post stories in the channel; channels only\n",
-        "name": "can_post_stories",
-        "required": false
-      },
-      {
-        "type": "Boolean",
-        "description": "True, if the administrator can edit stories posted by other users; channels only",
-        "html_description": "<td><em>Optional</em>. <em>True</em>, if the administrator can edit stories posted by other users; channels only</td>",
-        "rst_description": "*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only\n",
-        "name": "can_edit_stories",
-        "required": false
-      },
-      {
-        "type": "Boolean",
-        "description": "True, if the administrator can delete stories posted by other users; channels only",
-        "html_description": "<td><em>Optional</em>. <em>True</em>, if the administrator can delete stories posted by other users; channels only</td>",
-        "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only\n",
-        "name": "can_delete_stories",
-        "required": false
-      },
       {
         "type": "Boolean",
         "description": "True, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only",
diff --git a/.butcher/types/ChatBoostAdded/entity.json b/.butcher/types/ChatBoostAdded/entity.json
new file mode 100644
index 00000000..cb53596a
--- /dev/null
+++ b/.butcher/types/ChatBoostAdded/entity.json
@@ -0,0 +1,25 @@
+{
+  "meta": {},
+  "group": {
+    "title": "Available types",
+    "anchor": "available-types"
+  },
+  "object": {
+    "anchor": "chatboostadded",
+    "name": "ChatBoostAdded",
+    "description": "This object represents a service message about a user boosting a chat.",
+    "html_description": "<p>This object represents a service message about a user boosting a chat.</p>",
+    "rst_description": "This object represents a service message about a user boosting a chat.",
+    "annotations": [
+      {
+        "type": "Integer",
+        "description": "Number of boosts added by the user",
+        "html_description": "<td>Number of boosts added by the user</td>",
+        "rst_description": "Number of boosts added by the user\n",
+        "name": "boost_count",
+        "required": true
+      }
+    ],
+    "category": "types"
+  }
+}
diff --git a/.butcher/types/ChatBoostUpdated/entity.json b/.butcher/types/ChatBoostUpdated/entity.json
index 6ef9c19f..15d1fae3 100644
--- a/.butcher/types/ChatBoostUpdated/entity.json
+++ b/.butcher/types/ChatBoostUpdated/entity.json
@@ -21,9 +21,9 @@
       },
       {
         "type": "ChatBoost",
-        "description": "Infomation about the chat boost",
-        "html_description": "<td>Infomation about the chat boost</td>",
-        "rst_description": "Infomation about the chat boost\n",
+        "description": "Information about the chat boost",
+        "html_description": "<td>Information about the chat boost</td>",
+        "rst_description": "Information about the chat boost\n",
         "name": "boost",
         "required": true
       }
diff --git a/.butcher/types/ChatMemberAdministrator/entity.json b/.butcher/types/ChatMemberAdministrator/entity.json
index 4679a1e0..b0e4a00c 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, 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": "<td><em>True</em>, 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</td>",
-        "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",
+        "description": "True, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.",
+        "html_description": "<td><em>True</em>, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.</td>",
+        "rst_description": ":code:`True`, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages and ignore slow mode. Implied by any other administrator privilege.\n",
         "name": "can_manage_chat",
         "required": true
       },
@@ -99,6 +99,30 @@
         "name": "can_invite_users",
         "required": true
       },
+      {
+        "type": "Boolean",
+        "description": "True, if the administrator can post stories to the chat",
+        "html_description": "<td><em>True</em>, if the administrator can post stories to the chat</td>",
+        "rst_description": ":code:`True`, if the administrator can post stories to the chat\n",
+        "name": "can_post_stories",
+        "required": true
+      },
+      {
+        "type": "Boolean",
+        "description": "True, if the administrator can edit stories posted by other users",
+        "html_description": "<td><em>True</em>, if the administrator can edit stories posted by other users</td>",
+        "rst_description": ":code:`True`, if the administrator can edit stories posted by other users\n",
+        "name": "can_edit_stories",
+        "required": true
+      },
+      {
+        "type": "Boolean",
+        "description": "True, if the administrator can delete stories posted by other users",
+        "html_description": "<td><em>True</em>, if the administrator can delete stories posted by other users</td>",
+        "rst_description": ":code:`True`, if the administrator can delete stories posted by other users\n",
+        "name": "can_delete_stories",
+        "required": true
+      },
       {
         "type": "Boolean",
         "description": "True, if the administrator can post messages in the channel, or access channel statistics; channels only",
@@ -123,30 +147,6 @@
         "name": "can_pin_messages",
         "required": false
       },
-      {
-        "type": "Boolean",
-        "description": "True, if the administrator can post stories in the channel; channels only",
-        "html_description": "<td><em>Optional</em>. <em>True</em>, if the administrator can post stories in the channel; channels only</td>",
-        "rst_description": "*Optional*. :code:`True`, if the administrator can post stories in the channel; channels only\n",
-        "name": "can_post_stories",
-        "required": false
-      },
-      {
-        "type": "Boolean",
-        "description": "True, if the administrator can edit stories posted by other users; channels only",
-        "html_description": "<td><em>Optional</em>. <em>True</em>, if the administrator can edit stories posted by other users; channels only</td>",
-        "rst_description": "*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only\n",
-        "name": "can_edit_stories",
-        "required": false
-      },
-      {
-        "type": "Boolean",
-        "description": "True, if the administrator can delete stories posted by other users; channels only",
-        "html_description": "<td><em>Optional</em>. <em>True</em>, if the administrator can delete stories posted by other users; channels only</td>",
-        "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only\n",
-        "name": "can_delete_stories",
-        "required": false
-      },
       {
         "type": "Boolean",
         "description": "True, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only",
diff --git a/.butcher/types/ForceReply/entity.json b/.butcher/types/ForceReply/entity.json
index c06b916d..e8ff7c60 100644
--- a/.butcher/types/ForceReply/entity.json
+++ b/.butcher/types/ForceReply/entity.json
@@ -29,9 +29,9 @@
       },
       {
         "type": "Boolean",
-        "description": "Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.",
-        "html_description": "<td><em>Optional</em>. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href=\"#message\">Message</a> object; 2) if the bot's message is a reply (has <em>reply_to_message_id</em>), sender of the original message.</td>",
-        "rst_description": "*Optional*. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message.\n",
+        "description": "Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.",
+        "html_description": "<td><em>Optional</em>. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href=\"#message\">Message</a> object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.</td>",
+        "rst_description": "*Optional*. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.\n",
         "name": "selective",
         "required": false
       }
diff --git a/.butcher/types/GiveawayWinners/entity.json b/.butcher/types/GiveawayWinners/entity.json
index ae4e7514..76628b90 100644
--- a/.butcher/types/GiveawayWinners/entity.json
+++ b/.butcher/types/GiveawayWinners/entity.json
@@ -21,9 +21,9 @@
       },
       {
         "type": "Integer",
-        "description": "Identifier of the messsage with the giveaway in the chat",
-        "html_description": "<td>Identifier of the messsage with the giveaway in the chat</td>",
-        "rst_description": "Identifier of the messsage with the giveaway in the chat\n",
+        "description": "Identifier of the message with the giveaway in the chat",
+        "html_description": "<td>Identifier of the message with the giveaway in the chat</td>",
+        "rst_description": "Identifier of the message with the giveaway in the chat\n",
         "name": "giveaway_message_id",
         "required": true
       },
diff --git a/.butcher/types/InlineKeyboardButton/entity.json b/.butcher/types/InlineKeyboardButton/entity.json
index 9c1baae5..678b0cfb 100644
--- a/.butcher/types/InlineKeyboardButton/entity.json
+++ b/.butcher/types/InlineKeyboardButton/entity.json
@@ -21,9 +21,9 @@
       },
       {
         "type": "String",
-        "description": "HTTP or tg:// URL to be opened when the button is pressed. Links tg://user?id=<user_id> can be used to mention a user by their ID without using a username, if this is allowed by their privacy settings.",
-        "html_description": "<td><em>Optional</em>. HTTP or tg:// URL to be opened when the button is pressed. Links <code>tg://user?id=&lt;user_id&gt;</code> can be used to mention a user by their ID without using a username, if this is allowed by their privacy settings.</td>",
-        "rst_description": "*Optional*. HTTP or tg:// URL to be opened when the button is pressed. Links :code:`tg://user?id=<user_id>` can be used to mention a user by their ID without using a username, if this is allowed by their privacy settings.\n",
+        "description": "HTTP or tg:// URL to be opened when the button is pressed. Links tg://user?id=<user_id> can be used to mention a user by their identifier without using a username, if this is allowed by their privacy settings.",
+        "html_description": "<td><em>Optional</em>. HTTP or tg:// URL to be opened when the button is pressed. Links <code>tg://user?id=&lt;user_id&gt;</code> can be used to mention a user by their identifier without using a username, if this is allowed by their privacy settings.</td>",
+        "rst_description": "*Optional*. HTTP or tg:// URL to be opened when the button is pressed. Links :code:`tg://user?id=<user_id>` can be used to mention a user by their identifier without using a username, if this is allowed by their privacy settings.\n",
         "name": "url",
         "required": false
       },
diff --git a/.butcher/types/InlineKeyboardMarkup/entity.json b/.butcher/types/InlineKeyboardMarkup/entity.json
index e641e20a..7f68c036 100644
--- a/.butcher/types/InlineKeyboardMarkup/entity.json
+++ b/.butcher/types/InlineKeyboardMarkup/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "inlinekeyboardmarkup",
     "name": "InlineKeyboardMarkup",
-    "description": "This object represents an inline keyboard that appears right next to the message it belongs to.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will display unsupported message.",
-    "html_description": "<p>This object represents an <a href=\"/bots/features#inline-keyboards\">inline keyboard</a> that appears right next to the message it belongs to.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will display <em>unsupported message</em>.</p>",
-    "rst_description": "This object represents an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_ that appears right next to the message it belongs to.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will display *unsupported message*.",
+    "description": "This object represents an inline keyboard that appears right next to the message it belongs to.",
+    "html_description": "<p>This object represents an <a href=\"/bots/features#inline-keyboards\">inline keyboard</a> that appears right next to the message it belongs to.</p>",
+    "rst_description": "This object represents an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_ that appears right next to the message it belongs to.",
     "annotations": [
       {
         "type": "Array of Array of InlineKeyboardButton",
diff --git a/.butcher/types/InlineQueryResultAudio/entity.json b/.butcher/types/InlineQueryResultAudio/entity.json
index 9e995562..bc902df7 100644
--- a/.butcher/types/InlineQueryResultAudio/entity.json
+++ b/.butcher/types/InlineQueryResultAudio/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "inlinequeryresultaudio",
     "name": "InlineQueryResultAudio",
-    "description": "Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the audio.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-    "html_description": "<p>Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the audio.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-    "rst_description": "Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the audio.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+    "description": "Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the audio.",
+    "html_description": "<p>Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the audio.</p>",
+    "rst_description": "Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the audio.",
     "annotations": [
       {
         "type": "String",
diff --git a/.butcher/types/InlineQueryResultCachedAudio/entity.json b/.butcher/types/InlineQueryResultCachedAudio/entity.json
index 0b5abf32..d92b2f3e 100644
--- a/.butcher/types/InlineQueryResultCachedAudio/entity.json
+++ b/.butcher/types/InlineQueryResultCachedAudio/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "inlinequeryresultcachedaudio",
     "name": "InlineQueryResultCachedAudio",
-    "description": "Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the audio.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-    "html_description": "<p>Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the audio.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-    "rst_description": "Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the audio.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+    "description": "Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the audio.",
+    "html_description": "<p>Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the audio.</p>",
+    "rst_description": "Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the audio.",
     "annotations": [
       {
         "type": "String",
diff --git a/.butcher/types/InlineQueryResultCachedDocument/entity.json b/.butcher/types/InlineQueryResultCachedDocument/entity.json
index 3f49dc6d..f304919f 100644
--- a/.butcher/types/InlineQueryResultCachedDocument/entity.json
+++ b/.butcher/types/InlineQueryResultCachedDocument/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "inlinequeryresultcacheddocument",
     "name": "InlineQueryResultCachedDocument",
-    "description": "Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the file.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-    "html_description": "<p>Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the file.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-    "rst_description": "Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the file.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+    "description": "Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the file.",
+    "html_description": "<p>Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the file.</p>",
+    "rst_description": "Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the file.",
     "annotations": [
       {
         "type": "String",
diff --git a/.butcher/types/InlineQueryResultCachedSticker/entity.json b/.butcher/types/InlineQueryResultCachedSticker/entity.json
index eb0b717b..2a04cf72 100644
--- a/.butcher/types/InlineQueryResultCachedSticker/entity.json
+++ b/.butcher/types/InlineQueryResultCachedSticker/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "inlinequeryresultcachedsticker",
     "name": "InlineQueryResultCachedSticker",
-    "description": "Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the sticker.\nNote: This will only work in Telegram versions released after 9 April, 2016 for static stickers and after 06 July, 2019 for animated stickers. Older clients will ignore them.",
-    "html_description": "<p>Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the sticker.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016 for static stickers and after 06 July, 2019 for <a href=\"https://telegram.org/blog/animated-stickers\">animated stickers</a>. Older clients will ignore them.</p>",
-    "rst_description": "Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the sticker.\n**Note:** This will only work in Telegram versions released after 9 April, 2016 for static stickers and after 06 July, 2019 for `animated stickers <https://telegram.org/blog/animated-stickers>`_. Older clients will ignore them.",
+    "description": "Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the sticker.",
+    "html_description": "<p>Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the sticker.</p>",
+    "rst_description": "Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the sticker.",
     "annotations": [
       {
         "type": "String",
diff --git a/.butcher/types/InlineQueryResultCachedVoice/entity.json b/.butcher/types/InlineQueryResultCachedVoice/entity.json
index 3c576fbb..893e6c93 100644
--- a/.butcher/types/InlineQueryResultCachedVoice/entity.json
+++ b/.butcher/types/InlineQueryResultCachedVoice/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "inlinequeryresultcachedvoice",
     "name": "InlineQueryResultCachedVoice",
-    "description": "Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the voice message.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-    "html_description": "<p>Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the voice message.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-    "rst_description": "Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the voice message.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+    "description": "Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the voice message.",
+    "html_description": "<p>Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the voice message.</p>",
+    "rst_description": "Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the voice message.",
     "annotations": [
       {
         "type": "String",
diff --git a/.butcher/types/InlineQueryResultContact/entity.json b/.butcher/types/InlineQueryResultContact/entity.json
index 10d12e2b..8a01cdd0 100644
--- a/.butcher/types/InlineQueryResultContact/entity.json
+++ b/.butcher/types/InlineQueryResultContact/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "inlinequeryresultcontact",
     "name": "InlineQueryResultContact",
-    "description": "Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the contact.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-    "html_description": "<p>Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the contact.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-    "rst_description": "Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the contact.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+    "description": "Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the contact.",
+    "html_description": "<p>Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the contact.</p>",
+    "rst_description": "Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the contact.",
     "annotations": [
       {
         "type": "String",
diff --git a/.butcher/types/InlineQueryResultDocument/entity.json b/.butcher/types/InlineQueryResultDocument/entity.json
index 286fd9b7..ff703482 100644
--- a/.butcher/types/InlineQueryResultDocument/entity.json
+++ b/.butcher/types/InlineQueryResultDocument/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "inlinequeryresultdocument",
     "name": "InlineQueryResultDocument",
-    "description": "Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the file. Currently, only .PDF and .ZIP files can be sent using this method.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-    "html_description": "<p>Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the file. Currently, only <strong>.PDF</strong> and <strong>.ZIP</strong> files can be sent using this method.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-    "rst_description": "Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the file. Currently, only **.PDF** and **.ZIP** files can be sent using this method.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+    "description": "Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use input_message_content to send a message with the specified content instead of the file. Currently, only .PDF and .ZIP files can be sent using this method.",
+    "html_description": "<p>Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the file. Currently, only <strong>.PDF</strong> and <strong>.ZIP</strong> files can be sent using this method.</p>",
+    "rst_description": "Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the file. Currently, only **.PDF** and **.ZIP** files can be sent using this method.",
     "annotations": [
       {
         "type": "String",
diff --git a/.butcher/types/InlineQueryResultGame/entity.json b/.butcher/types/InlineQueryResultGame/entity.json
index 918bff7b..11593007 100644
--- a/.butcher/types/InlineQueryResultGame/entity.json
+++ b/.butcher/types/InlineQueryResultGame/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "inlinequeryresultgame",
     "name": "InlineQueryResultGame",
-    "description": "Represents a Game.\nNote: This will only work in Telegram versions released after October 1, 2016. Older clients will not display any inline results if a game result is among them.",
-    "html_description": "<p>Represents a <a href=\"#games\">Game</a>.</p><p><strong>Note:</strong> This will only work in Telegram versions released after October 1, 2016. Older clients will not display any inline results if a game result is among them.</p>",
-    "rst_description": "Represents a `Game <https://core.telegram.org/bots/api#games>`_.\n**Note:** This will only work in Telegram versions released after October 1, 2016. Older clients will not display any inline results if a game result is among them.",
+    "description": "Represents a Game.",
+    "html_description": "<p>Represents a <a href=\"#games\">Game</a>.</p>",
+    "rst_description": "Represents a `Game <https://core.telegram.org/bots/api#games>`_.",
     "annotations": [
       {
         "type": "String",
diff --git a/.butcher/types/InlineQueryResultLocation/entity.json b/.butcher/types/InlineQueryResultLocation/entity.json
index a6c30068..cf171e89 100644
--- a/.butcher/types/InlineQueryResultLocation/entity.json
+++ b/.butcher/types/InlineQueryResultLocation/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "inlinequeryresultlocation",
     "name": "InlineQueryResultLocation",
-    "description": "Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the location.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-    "html_description": "<p>Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the location.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-    "rst_description": "Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the location.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+    "description": "Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the location.",
+    "html_description": "<p>Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the location.</p>",
+    "rst_description": "Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the location.",
     "annotations": [
       {
         "type": "String",
@@ -28,7 +28,7 @@
         "required": true
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "description": "Location latitude in degrees",
         "html_description": "<td>Location latitude in degrees</td>",
         "rst_description": "Location latitude in degrees\n",
@@ -36,7 +36,7 @@
         "required": true
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "description": "Location longitude in degrees",
         "html_description": "<td>Location longitude in degrees</td>",
         "rst_description": "Location longitude in degrees\n",
@@ -52,7 +52,7 @@
         "required": true
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "description": "The radius of uncertainty for the location, measured in meters; 0-1500",
         "html_description": "<td><em>Optional</em>. The radius of uncertainty for the location, measured in meters; 0-1500</td>",
         "rst_description": "*Optional*. The radius of uncertainty for the location, measured in meters; 0-1500\n",
diff --git a/.butcher/types/InlineQueryResultVenue/entity.json b/.butcher/types/InlineQueryResultVenue/entity.json
index 2191ae32..56ef4016 100644
--- a/.butcher/types/InlineQueryResultVenue/entity.json
+++ b/.butcher/types/InlineQueryResultVenue/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "inlinequeryresultvenue",
     "name": "InlineQueryResultVenue",
-    "description": "Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the venue.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-    "html_description": "<p>Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the venue.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-    "rst_description": "Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the venue.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+    "description": "Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the venue.",
+    "html_description": "<p>Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the venue.</p>",
+    "rst_description": "Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the venue.",
     "annotations": [
       {
         "type": "String",
diff --git a/.butcher/types/InlineQueryResultVoice/entity.json b/.butcher/types/InlineQueryResultVoice/entity.json
index aeec353f..44b46f6a 100644
--- a/.butcher/types/InlineQueryResultVoice/entity.json
+++ b/.butcher/types/InlineQueryResultVoice/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "inlinequeryresultvoice",
     "name": "InlineQueryResultVoice",
-    "description": "Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the the voice message.\nNote: This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
-    "html_description": "<p>Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the the voice message.</p><p><strong>Note:</strong> This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.</p>",
-    "rst_description": "Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the the voice message.\n**Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.",
+    "description": "Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use input_message_content to send a message with the specified content instead of the the voice message.",
+    "html_description": "<p>Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use <em>input_message_content</em> to send a message with the specified content instead of the the voice message.</p>",
+    "rst_description": "Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the the voice message.",
     "annotations": [
       {
         "type": "String",
diff --git a/.butcher/types/InputLocationMessageContent/entity.json b/.butcher/types/InputLocationMessageContent/entity.json
index ef06ef82..d77afb30 100644
--- a/.butcher/types/InputLocationMessageContent/entity.json
+++ b/.butcher/types/InputLocationMessageContent/entity.json
@@ -28,7 +28,7 @@
         "required": true
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "description": "The radius of uncertainty for the location, measured in meters; 0-1500",
         "html_description": "<td><em>Optional</em>. The radius of uncertainty for the location, measured in meters; 0-1500</td>",
         "rst_description": "*Optional*. The radius of uncertainty for the location, measured in meters; 0-1500\n",
diff --git a/.butcher/types/KeyboardButton/entity.json b/.butcher/types/KeyboardButton/entity.json
index 641df7ca..fe33466a 100644
--- a/.butcher/types/KeyboardButton/entity.json
+++ b/.butcher/types/KeyboardButton/entity.json
@@ -7,9 +7,9 @@
   "object": {
     "anchor": "keyboardbutton",
     "name": "KeyboardButton",
-    "description": "This object represents one button of the reply keyboard. For simple text buttons, String can be used instead of this object to specify the button text. The optional fields web_app, request_users, request_chat, request_contact, request_location, and request_poll are mutually exclusive.\nNote: request_contact and request_location options will only work in Telegram versions released after 9 April, 2016. Older clients will display unsupported message.\nNote: request_poll option will only work in Telegram versions released after 23 January, 2020. Older clients will display unsupported message.\nNote: web_app option will only work in Telegram versions released after 16 April, 2022. Older clients will display unsupported message.\nNote: request_users and request_chat options will only work in Telegram versions released after 3 February, 2023. Older clients will display unsupported message.",
-    "html_description": "<p>This object represents one button of the reply keyboard. For simple text buttons, <em>String</em> can be used instead of this object to specify the button text. The optional fields <em>web_app</em>, <em>request_users</em>, <em>request_chat</em>, <em>request_contact</em>, <em>request_location</em>, and <em>request_poll</em> are mutually exclusive.</p><p><strong>Note:</strong> <em>request_contact</em> and <em>request_location</em> options will only work in Telegram versions released after 9 April, 2016. Older clients will display <em>unsupported message</em>.<br/>\n<strong>Note:</strong> <em>request_poll</em> option will only work in Telegram versions released after 23 January, 2020. Older clients will display <em>unsupported message</em>.<br/>\n<strong>Note:</strong> <em>web_app</em> option will only work in Telegram versions released after 16 April, 2022. Older clients will display <em>unsupported message</em>.<br/>\n<strong>Note:</strong> <em>request_users</em> and <em>request_chat</em> options will only work in Telegram versions released after 3 February, 2023. Older clients will display <em>unsupported message</em>.</p>",
-    "rst_description": "This object represents one button of the reply keyboard. For simple text buttons, *String* can be used instead of this object to specify the button text. The optional fields *web_app*, *request_users*, *request_chat*, *request_contact*, *request_location*, and *request_poll* are mutually exclusive.\n**Note:** *request_contact* and *request_location* options will only work in Telegram versions released after 9 April, 2016. Older clients will display *unsupported message*.\n\n**Note:** *request_poll* option will only work in Telegram versions released after 23 January, 2020. Older clients will display *unsupported message*.\n\n**Note:** *web_app* option will only work in Telegram versions released after 16 April, 2022. Older clients will display *unsupported message*.\n\n**Note:** *request_users* and *request_chat* options will only work in Telegram versions released after 3 February, 2023. Older clients will display *unsupported message*.",
+    "description": "This object represents one button of the reply keyboard. For simple text buttons, String can be used instead of this object to specify the button text. The optional fields web_app, request_users, request_chat, request_contact, request_location, and request_poll are mutually exclusive.\nNote: request_users and request_chat options will only work in Telegram versions released after 3 February, 2023. Older clients will display unsupported message.",
+    "html_description": "<p>This object represents one button of the reply keyboard. For simple text buttons, <em>String</em> can be used instead of this object to specify the button text. The optional fields <em>web_app</em>, <em>request_users</em>, <em>request_chat</em>, <em>request_contact</em>, <em>request_location</em>, and <em>request_poll</em> are mutually exclusive.</p><p><strong>Note:</strong> <em>request_users</em> and <em>request_chat</em> options will only work in Telegram versions released after 3 February, 2023. Older clients will display <em>unsupported message</em>.</p>",
+    "rst_description": "This object represents one button of the reply keyboard. For simple text buttons, *String* can be used instead of this object to specify the button text. The optional fields *web_app*, *request_users*, *request_chat*, *request_contact*, *request_location*, and *request_poll* are mutually exclusive.\n**Note:** *request_users* and *request_chat* options will only work in Telegram versions released after 3 February, 2023. Older clients will display *unsupported message*.",
     "annotations": [
       {
         "type": "String",
diff --git a/.butcher/types/LinkPreviewOptions/entity.json b/.butcher/types/LinkPreviewOptions/entity.json
index 1b13b26a..89a70c10 100644
--- a/.butcher/types/LinkPreviewOptions/entity.json
+++ b/.butcher/types/LinkPreviewOptions/entity.json
@@ -29,17 +29,17 @@
       },
       {
         "type": "Boolean",
-        "description": "True, if the media in the link preview is suppposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview",
-        "html_description": "<td><em>Optional</em>. <em>True</em>, if the media in the link preview is suppposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview</td>",
-        "rst_description": "*Optional*. :code:`True`, if the media in the link preview is suppposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview\n",
+        "description": "True, if the media in the link preview is supposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview",
+        "html_description": "<td><em>Optional</em>. <em>True</em>, if the media in the link preview is supposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview</td>",
+        "rst_description": "*Optional*. :code:`True`, if the media in the link preview is supposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview\n",
         "name": "prefer_small_media",
         "required": false
       },
       {
         "type": "Boolean",
-        "description": "True, if the media in the link preview is suppposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview",
-        "html_description": "<td><em>Optional</em>. <em>True</em>, if the media in the link preview is suppposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview</td>",
-        "rst_description": "*Optional*. :code:`True`, if the media in the link preview is suppposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview\n",
+        "description": "True, if the media in the link preview is supposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview",
+        "html_description": "<td><em>Optional</em>. <em>True</em>, if the media in the link preview is supposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview</td>",
+        "rst_description": "*Optional*. :code:`True`, if the media in the link preview is supposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview\n",
         "name": "prefer_large_media",
         "required": false
       },
diff --git a/.butcher/types/Location/entity.json b/.butcher/types/Location/entity.json
index c6b36c45..2551b11b 100644
--- a/.butcher/types/Location/entity.json
+++ b/.butcher/types/Location/entity.json
@@ -28,7 +28,7 @@
         "required": true
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "description": "The radius of uncertainty for the location, measured in meters; 0-1500",
         "html_description": "<td><em>Optional</em>. The radius of uncertainty for the location, measured in meters; 0-1500</td>",
         "rst_description": "*Optional*. The radius of uncertainty for the location, measured in meters; 0-1500\n",
diff --git a/.butcher/types/MaskPosition/entity.json b/.butcher/types/MaskPosition/entity.json
index 98f0c7b7..af60fbfb 100644
--- a/.butcher/types/MaskPosition/entity.json
+++ b/.butcher/types/MaskPosition/entity.json
@@ -20,7 +20,7 @@
         "required": true
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "description": "Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. For example, choosing -1.0 will place mask just to the left of the default mask position.",
         "html_description": "<td>Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. For example, choosing -1.0 will place mask just to the left of the default mask position.</td>",
         "rst_description": "Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. For example, choosing -1.0 will place mask just to the left of the default mask position.\n",
@@ -28,7 +28,7 @@
         "required": true
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "description": "Shift by Y-axis measured in heights of the mask scaled to the face size, from top to bottom. For example, 1.0 will place the mask just below the default mask position.",
         "html_description": "<td>Shift by Y-axis measured in heights of the mask scaled to the face size, from top to bottom. For example, 1.0 will place the mask just below the default mask position.</td>",
         "rst_description": "Shift by Y-axis measured in heights of the mask scaled to the face size, from top to bottom. For example, 1.0 will place the mask just below the default mask position.\n",
@@ -36,7 +36,7 @@
         "required": true
       },
       {
-        "type": "Float number",
+        "type": "Float",
         "description": "Mask scaling coefficient. For example, 2.0 means double size.",
         "html_description": "<td>Mask scaling coefficient. For example, 2.0 means double size.</td>",
         "rst_description": "Mask scaling coefficient. For example, 2.0 means double size.\n",
diff --git a/.butcher/types/Message/entity.json b/.butcher/types/Message/entity.json
index 2edf2dac..ded375e3 100644
--- a/.butcher/types/Message/entity.json
+++ b/.butcher/types/Message/entity.json
@@ -43,6 +43,14 @@
         "name": "sender_chat",
         "required": false
       },
+      {
+        "type": "Integer",
+        "description": "If the sender of the message boosted the chat, the number of boosts added by the user",
+        "html_description": "<td><em>Optional</em>. If the sender of the message boosted the chat, the number of boosts added by the user</td>",
+        "rst_description": "*Optional*. If the sender of the message boosted the chat, the number of boosts added by the user\n",
+        "name": "sender_boost_count",
+        "required": false
+      },
       {
         "type": "Integer",
         "description": "Date the message was sent in Unix time. It is always a positive number, representing a valid date.",
@@ -107,6 +115,14 @@
         "name": "quote",
         "required": false
       },
+      {
+        "type": "Story",
+        "description": "For replies to a story, the original story",
+        "html_description": "<td><em>Optional</em>. For replies to a story, the original story</td>",
+        "rst_description": "*Optional*. For replies to a story, the original story\n",
+        "name": "reply_to_story",
+        "required": false
+      },
       {
         "type": "User",
         "description": "Bot through which the message was sent",
@@ -475,6 +491,14 @@
         "name": "proximity_alert_triggered",
         "required": false
       },
+      {
+        "type": "ChatBoostAdded",
+        "description": "Service message: user boosted the chat",
+        "html_description": "<td><em>Optional</em>. Service message: user boosted the chat</td>",
+        "rst_description": "*Optional*. Service message: user boosted the chat\n",
+        "name": "boost_added",
+        "required": false
+      },
       {
         "type": "ForumTopicCreated",
         "description": "Service message: forum topic created",
diff --git a/.butcher/types/ReplyKeyboardMarkup/entity.json b/.butcher/types/ReplyKeyboardMarkup/entity.json
index d74d741d..366f7bc2 100644
--- a/.butcher/types/ReplyKeyboardMarkup/entity.json
+++ b/.butcher/types/ReplyKeyboardMarkup/entity.json
@@ -53,9 +53,9 @@
       },
       {
         "type": "Boolean",
-        "description": "Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.\n\nExample: A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.",
-        "html_description": "<td><em>Optional</em>. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href=\"#message\">Message</a> object; 2) if the bot's message is a reply (has <em>reply_to_message_id</em>), sender of the original message.<br/>\n<br/>\n<em>Example:</em> A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.</td>",
-        "rst_description": "*Optional*. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message.\n\n\n\n*Example:* A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.\n",
+        "description": "Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.\n\nExample: A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.",
+        "html_description": "<td><em>Optional</em>. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href=\"#message\">Message</a> object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.<br/>\n<br/>\n<em>Example:</em> A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.</td>",
+        "rst_description": "*Optional*. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.\n\n\n\n*Example:* A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.\n",
         "name": "selective",
         "required": false
       }
diff --git a/.butcher/types/ReplyKeyboardRemove/entity.json b/.butcher/types/ReplyKeyboardRemove/entity.json
index 57e119d7..a1e5018c 100644
--- a/.butcher/types/ReplyKeyboardRemove/entity.json
+++ b/.butcher/types/ReplyKeyboardRemove/entity.json
@@ -21,9 +21,9 @@
       },
       {
         "type": "Boolean",
-        "description": "Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.\n\nExample: A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.",
-        "html_description": "<td><em>Optional</em>. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href=\"#message\">Message</a> object; 2) if the bot's message is a reply (has <em>reply_to_message_id</em>), sender of the original message.<br/>\n<br/>\n<em>Example:</em> A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.</td>",
-        "rst_description": "*Optional*. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message.\n\n\n\n*Example:* A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.\n",
+        "description": "Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.\n\nExample: A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.",
+        "html_description": "<td><em>Optional</em>. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the <em>text</em> of the <a href=\"#message\">Message</a> object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.<br/>\n<br/>\n<em>Example:</em> A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.</td>",
+        "rst_description": "*Optional*. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.\n\n\n\n*Example:* A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet.\n",
         "name": "selective",
         "required": false
       }
diff --git a/.butcher/types/Story/entity.json b/.butcher/types/Story/entity.json
index 77ab9bea..e5eb1451 100644
--- a/.butcher/types/Story/entity.json
+++ b/.butcher/types/Story/entity.json
@@ -7,10 +7,27 @@
   "object": {
     "anchor": "story",
     "name": "Story",
-    "description": "This object represents a message about a forwarded story in the chat. Currently holds no information.",
-    "html_description": "<p>This object represents a message about a forwarded story in the chat. Currently holds no information.</p>",
-    "rst_description": "This object represents a message about a forwarded story in the chat. Currently holds no information.",
-    "annotations": [],
+    "description": "This object represents a story.",
+    "html_description": "<p>This object represents a story.</p>",
+    "rst_description": "This object represents a story.",
+    "annotations": [
+      {
+        "type": "Chat",
+        "description": "Chat that posted the story",
+        "html_description": "<td>Chat that posted the story</td>",
+        "rst_description": "Chat that posted the story\n",
+        "name": "chat",
+        "required": true
+      },
+      {
+        "type": "Integer",
+        "description": "Unique identifier for the story in the chat",
+        "html_description": "<td>Unique identifier for the story in the chat</td>",
+        "rst_description": "Unique identifier for the story in the chat\n",
+        "name": "id",
+        "required": true
+      }
+    ],
     "category": "types"
   }
 }
diff --git a/.butcher/types/Update/entity.json b/.butcher/types/Update/entity.json
index 71468cbe..756fcb01 100644
--- a/.butcher/types/Update/entity.json
+++ b/.butcher/types/Update/entity.json
@@ -13,9 +13,9 @@
     "annotations": [
       {
         "type": "Integer",
-        "description": "The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This ID becomes especially handy if you're using webhooks, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.",
-        "html_description": "<td>The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This ID becomes especially handy if you're using <a href=\"#setwebhook\">webhooks</a>, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.</td>",
-        "rst_description": "The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This ID becomes especially handy if you're using `webhooks <https://core.telegram.org/bots/api#setwebhook>`_, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.\n",
+        "description": "The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This identifier becomes especially handy if you're using webhooks, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.",
+        "html_description": "<td>The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This identifier becomes especially handy if you're using <a href=\"#setwebhook\">webhooks</a>, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.</td>",
+        "rst_description": "The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This identifier becomes especially handy if you're using `webhooks <https://core.telegram.org/bots/api#setwebhook>`_, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.\n",
         "name": "update_id",
         "required": true
       },
@@ -29,9 +29,9 @@
       },
       {
         "type": "Message",
-        "description": "New version of a message that is known to the bot and was edited",
-        "html_description": "<td><em>Optional</em>. New version of a message that is known to the bot and was edited</td>",
-        "rst_description": "*Optional*. New version of a message that is known to the bot and was edited\n",
+        "description": "New version of a message that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot.",
+        "html_description": "<td><em>Optional</em>. New version of a message that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot.</td>",
+        "rst_description": "*Optional*. New version of a message that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot.\n",
         "name": "edited_message",
         "required": false
       },
@@ -45,9 +45,9 @@
       },
       {
         "type": "Message",
-        "description": "New version of a channel post that is known to the bot and was edited",
-        "html_description": "<td><em>Optional</em>. New version of a channel post that is known to the bot and was edited</td>",
-        "rst_description": "*Optional*. New version of a channel post that is known to the bot and was edited\n",
+        "description": "New version of a channel post that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot.",
+        "html_description": "<td><em>Optional</em>. New version of a channel post that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot.</td>",
+        "rst_description": "*Optional*. New version of a channel post that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot.\n",
         "name": "edited_channel_post",
         "required": false
       },
@@ -61,9 +61,9 @@
       },
       {
         "type": "MessageReactionCountUpdated",
-        "description": "Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify \"message_reaction_count\" in the list of allowed_updates to receive these updates.",
-        "html_description": "<td><em>Optional</em>. Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify <code>\"message_reaction_count\"</code> in the list of <em>allowed_updates</em> to receive these updates.</td>",
-        "rst_description": "*Optional*. Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify :code:`\"message_reaction_count\"` in the list of *allowed_updates* to receive these updates.\n",
+        "description": "Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify \"message_reaction_count\" in the list of allowed_updates to receive these updates. The updates are grouped and can be sent with delay up to a few minutes.",
+        "html_description": "<td><em>Optional</em>. Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify <code>\"message_reaction_count\"</code> in the list of <em>allowed_updates</em> to receive these updates. The updates are grouped and can be sent with delay up to a few minutes.</td>",
+        "rst_description": "*Optional*. Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify :code:`\"message_reaction_count\"` in the list of *allowed_updates* to receive these updates. The updates are grouped and can be sent with delay up to a few minutes.\n",
         "name": "message_reaction_count",
         "required": false
       },
@@ -109,9 +109,9 @@
       },
       {
         "type": "Poll",
-        "description": "New poll state. Bots receive only updates about stopped polls and polls, which are sent by the bot",
-        "html_description": "<td><em>Optional</em>. New poll state. Bots receive only updates about stopped polls and polls, which are sent by the bot</td>",
-        "rst_description": "*Optional*. New poll state. Bots receive only updates about stopped polls and polls, which are sent by the bot\n",
+        "description": "New poll state. Bots receive only updates about manually stopped polls and polls, which are sent by the bot",
+        "html_description": "<td><em>Optional</em>. New poll state. Bots receive only updates about manually stopped polls and polls, which are sent by the bot</td>",
+        "rst_description": "*Optional*. New poll state. Bots receive only updates about manually stopped polls and polls, which are sent by the bot\n",
         "name": "poll",
         "required": false
       },
diff --git a/CHANGES/1417.feature.rst b/CHANGES/1417.feature.rst
new file mode 100644
index 00000000..d0254a00
--- /dev/null
+++ b/CHANGES/1417.feature.rst
@@ -0,0 +1,9 @@
+Added full support of `Bot API 7.1 <https://core.telegram.org/bots/api-changelog#february-16-2024>`_
+
+- Added support for the administrator rights :code:`can_post_stories`, :code:`can_edit_stories`, :code:`can_delete_stories` in supergroups.
+- Added the class :code:`ChatBoostAdded` and the field :code:`boost_added` to the class :code:`Message` for service messages about a user boosting a chat.
+- Added the field :code:`sender_boost_count` to the class :code:`Message`.
+- Added the field :code:`reply_to_story` to the class :code:`Message`.
+- Added the fields :code:`chat` and :code:`id` to the class :code:`Story`.
+- Added the field :code:`unrestrict_boost_count` to the class :code:`Chat`.
+- Added the field :code:`custom_emoji_sticker_set_name` to the class :code:`Chat`.
diff --git a/aiogram/client/bot.py b/aiogram/client/bot.py
index 93faa6aa..3f7c1360 100644
--- a/aiogram/client/bot.py
+++ b/aiogram/client/bot.py
@@ -2046,12 +2046,12 @@ class Bot:
         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_post_messages: Optional[bool] = None,
+        can_edit_messages: Optional[bool] = None,
+        can_pin_messages: Optional[bool] = None,
         can_manage_topics: Optional[bool] = None,
         request_timeout: Optional[int] = None,
     ) -> bool:
@@ -2063,19 +2063,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, 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_manage_chat: Pass :code:`True` if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages 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, 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_stories: Pass :code:`True` if the administrator can post stories to the chat
+        :param can_edit_stories: Pass :code:`True` if the administrator can edit stories posted by other users
+        :param can_delete_stories: Pass :code:`True` if the administrator can delete stories posted by other users
         :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.
@@ -2092,12 +2092,12 @@ class Bot:
             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_post_messages=can_post_messages,
+            can_edit_messages=can_edit_messages,
+            can_pin_messages=can_pin_messages,
             can_manage_topics=can_manage_topics,
         )
         return await self(call, request_timeout=request_timeout)
diff --git a/aiogram/enums/content_type.py b/aiogram/enums/content_type.py
index 386bf924..dee0bc4c 100644
--- a/aiogram/enums/content_type.py
+++ b/aiogram/enums/content_type.py
@@ -45,6 +45,7 @@ class ContentType(str, Enum):
     WRITE_ACCESS_ALLOWED = "write_access_allowed"
     PASSPORT_DATA = "passport_data"
     PROXIMITY_ALERT_TRIGGERED = "proximity_alert_triggered"
+    BOOST_ADDED = "boost_added"
     FORUM_TOPIC_CREATED = "forum_topic_created"
     FORUM_TOPIC_EDITED = "forum_topic_edited"
     FORUM_TOPIC_CLOSED = "forum_topic_closed"
diff --git a/aiogram/methods/promote_chat_member.py b/aiogram/methods/promote_chat_member.py
index 8be42d30..4e389b45 100644
--- a/aiogram/methods/promote_chat_member.py
+++ b/aiogram/methods/promote_chat_member.py
@@ -22,7 +22,7 @@ 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, 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"""
+    """Pass :code:`True` if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages 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
@@ -35,18 +35,18 @@ class PromoteChatMember(TelegramMethod[bool]):
     """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_stories: Optional[bool] = None
+    """Pass :code:`True` if the administrator can post stories to the chat"""
+    can_edit_stories: Optional[bool] = None
+    """Pass :code:`True` if the administrator can edit stories posted by other users"""
+    can_delete_stories: Optional[bool] = None
+    """Pass :code:`True` if the administrator can delete stories posted by other users"""
     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"""
 
@@ -67,12 +67,12 @@ class PromoteChatMember(TelegramMethod[bool]):
             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_post_messages: Optional[bool] = None,
+            can_edit_messages: Optional[bool] = None,
+            can_pin_messages: Optional[bool] = None,
             can_manage_topics: Optional[bool] = None,
             **__pydantic_kwargs: Any,
         ) -> None:
@@ -91,12 +91,12 @@ class PromoteChatMember(TelegramMethod[bool]):
                 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_post_messages=can_post_messages,
+                can_edit_messages=can_edit_messages,
+                can_pin_messages=can_pin_messages,
                 can_manage_topics=can_manage_topics,
                 **__pydantic_kwargs,
             )
diff --git a/aiogram/types/__init__.py b/aiogram/types/__init__.py
index 11ed4c0f..1341b6e0 100644
--- a/aiogram/types/__init__.py
+++ b/aiogram/types/__init__.py
@@ -22,6 +22,7 @@ from .callback_query import CallbackQuery
 from .chat import Chat
 from .chat_administrator_rights import ChatAdministratorRights
 from .chat_boost import ChatBoost
+from .chat_boost_added import ChatBoostAdded
 from .chat_boost_removed import ChatBoostRemoved
 from .chat_boost_source import ChatBoostSource
 from .chat_boost_source_gift_code import ChatBoostSourceGiftCode
@@ -213,6 +214,7 @@ __all__ = (
     "Chat",
     "ChatAdministratorRights",
     "ChatBoost",
+    "ChatBoostAdded",
     "ChatBoostRemoved",
     "ChatBoostSource",
     "ChatBoostSourceGiftCode",
diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py
index 76b64879..c747064e 100644
--- a/aiogram/types/chat.py
+++ b/aiogram/types/chat.py
@@ -104,7 +104,9 @@ class Chat(TelegramObject):
     permissions: Optional[ChatPermissions] = None
     """*Optional*. Default chat member permissions, for groups and supergroups. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
     slow_mode_delay: Optional[int] = None
-    """*Optional*. For supergroups, the minimum allowed delay between consecutive messages sent by each unpriviledged user; in seconds. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
+    """*Optional*. For supergroups, the minimum allowed delay between consecutive messages sent by each unprivileged user; in seconds. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
+    unrestrict_boost_count: Optional[int] = None
+    """*Optional*. For supergroups, the minimum number of boosts that a non-administrator user needs to add in order to ignore slow mode and chat permissions. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
     message_auto_delete_time: Optional[int] = None
     """*Optional*. The time after which all messages sent to the chat will be automatically deleted; in seconds. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
     has_aggressive_anti_spam_enabled: Optional[bool] = None
@@ -119,6 +121,8 @@ class Chat(TelegramObject):
     """*Optional*. For supergroups, name of group sticker set. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
     can_set_sticker_set: Optional[bool] = None
     """*Optional*. :code:`True`, if the bot can change the group sticker set. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
+    custom_emoji_sticker_set_name: Optional[str] = None
+    """*Optional*. For supergroups, the name of the group's custom emoji sticker set. Custom emoji from this set can be used by all users and bots in the group. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
     linked_chat_id: Optional[int] = None
     """*Optional*. Unique identifier for the linked chat, i.e. the discussion group identifier for a channel and vice versa; for supergroups and channel chats. This identifier may be greater than 32 bits and some programming languages may have difficulty/silent defects in interpreting it. But it is smaller than 52 bits, so a signed 64 bit integer or double-precision float type are safe for storing this identifier. Returned only in :class:`aiogram.methods.get_chat.GetChat`."""
     location: Optional[ChatLocation] = None
@@ -159,6 +163,7 @@ class Chat(TelegramObject):
             pinned_message: Optional[Message] = None,
             permissions: Optional[ChatPermissions] = None,
             slow_mode_delay: Optional[int] = None,
+            unrestrict_boost_count: Optional[int] = None,
             message_auto_delete_time: Optional[int] = None,
             has_aggressive_anti_spam_enabled: Optional[bool] = None,
             has_hidden_members: Optional[bool] = None,
@@ -166,6 +171,7 @@ class Chat(TelegramObject):
             has_visible_history: Optional[bool] = None,
             sticker_set_name: Optional[str] = None,
             can_set_sticker_set: Optional[bool] = None,
+            custom_emoji_sticker_set_name: Optional[str] = None,
             linked_chat_id: Optional[int] = None,
             location: Optional[ChatLocation] = None,
             **__pydantic_kwargs: Any,
@@ -201,6 +207,7 @@ class Chat(TelegramObject):
                 pinned_message=pinned_message,
                 permissions=permissions,
                 slow_mode_delay=slow_mode_delay,
+                unrestrict_boost_count=unrestrict_boost_count,
                 message_auto_delete_time=message_auto_delete_time,
                 has_aggressive_anti_spam_enabled=has_aggressive_anti_spam_enabled,
                 has_hidden_members=has_hidden_members,
@@ -208,6 +215,7 @@ class Chat(TelegramObject):
                 has_visible_history=has_visible_history,
                 sticker_set_name=sticker_set_name,
                 can_set_sticker_set=can_set_sticker_set,
+                custom_emoji_sticker_set_name=custom_emoji_sticker_set_name,
                 linked_chat_id=linked_chat_id,
                 location=location,
                 **__pydantic_kwargs,
@@ -845,12 +853,12 @@ class Chat(TelegramObject):
         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_post_messages: Optional[bool] = None,
+        can_edit_messages: Optional[bool] = None,
+        can_pin_messages: Optional[bool] = None,
         can_manage_topics: Optional[bool] = None,
         **kwargs: Any,
     ) -> PromoteChatMember:
@@ -866,19 +874,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, 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_manage_chat: Pass :code:`True` if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages 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, 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_stories: Pass :code:`True` if the administrator can post stories to the chat
+        :param can_edit_stories: Pass :code:`True` if the administrator can edit stories posted by other users
+        :param can_delete_stories: Pass :code:`True` if the administrator can delete stories posted by other users
         :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`
         """
@@ -898,12 +906,12 @@ class Chat(TelegramObject):
             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_post_messages=can_post_messages,
+            can_edit_messages=can_edit_messages,
+            can_pin_messages=can_pin_messages,
             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 cccda5b2..723add7d 100644
--- a/aiogram/types/chat_administrator_rights.py
+++ b/aiogram/types/chat_administrator_rights.py
@@ -18,7 +18,7 @@ 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, 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"""
+    """:code:`True`, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages 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
@@ -31,18 +31,18 @@ class ChatAdministratorRights(TelegramObject):
     """:code:`True`, if the user is allowed to change the chat title, photo and other settings"""
     can_invite_users: bool
     """:code:`True`, if the user is allowed to invite new users to the chat"""
+    can_post_stories: bool
+    """:code:`True`, if the administrator can post stories to the chat"""
+    can_edit_stories: bool
+    """:code:`True`, if the administrator can edit stories posted by other users"""
+    can_delete_stories: bool
+    """:code:`True`, if the administrator can delete stories posted by other users"""
     can_post_messages: Optional[bool] = None
     """*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
     """*Optional*. :code:`True`, if the user is allowed to pin messages; groups and supergroups only"""
-    can_post_stories: Optional[bool] = None
-    """*Optional*. :code:`True`, if the administrator can post stories in the channel; channels only"""
-    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; 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"""
 
@@ -61,12 +61,12 @@ class ChatAdministratorRights(TelegramObject):
             can_promote_members: bool,
             can_change_info: bool,
             can_invite_users: bool,
+            can_post_stories: bool,
+            can_edit_stories: bool,
+            can_delete_stories: bool,
             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:
@@ -83,12 +83,12 @@ class ChatAdministratorRights(TelegramObject):
                 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_post_messages=can_post_messages,
+                can_edit_messages=can_edit_messages,
+                can_pin_messages=can_pin_messages,
                 can_manage_topics=can_manage_topics,
                 **__pydantic_kwargs,
             )
diff --git a/aiogram/types/chat_boost_added.py b/aiogram/types/chat_boost_added.py
new file mode 100644
index 00000000..4473eae7
--- /dev/null
+++ b/aiogram/types/chat_boost_added.py
@@ -0,0 +1,25 @@
+from typing import TYPE_CHECKING, Any
+
+from .base import TelegramObject
+
+
+class ChatBoostAdded(TelegramObject):
+    """
+    This object represents a service message about a user boosting a chat.
+
+    Source: https://core.telegram.org/bots/api#chatboostadded
+    """
+
+    boost_count: int
+    """Number of boosts added by the user"""
+
+    if TYPE_CHECKING:
+        # DO NOT EDIT MANUALLY!!!
+        # This section was auto-generated via `butcher`
+
+        def __init__(__pydantic__self__, *, boost_count: int, **__pydantic_kwargs: Any) -> None:
+            # DO NOT EDIT MANUALLY!!!
+            # This method was auto-generated via `butcher`
+            # Is needed only for type checking and IDE support without any additional plugins
+
+            super().__init__(boost_count=boost_count, **__pydantic_kwargs)
diff --git a/aiogram/types/chat_boost_updated.py b/aiogram/types/chat_boost_updated.py
index 78a423be..0921c961 100644
--- a/aiogram/types/chat_boost_updated.py
+++ b/aiogram/types/chat_boost_updated.py
@@ -19,7 +19,7 @@ class ChatBoostUpdated(TelegramObject):
     chat: Chat
     """Chat which was boosted"""
     boost: ChatBoost
-    """Infomation about the chat boost"""
+    """Information about the chat boost"""
 
     if TYPE_CHECKING:
         # DO NOT EDIT MANUALLY!!!
diff --git a/aiogram/types/chat_member_administrator.py b/aiogram/types/chat_member_administrator.py
index 215ff0bd..d135bc20 100644
--- a/aiogram/types/chat_member_administrator.py
+++ b/aiogram/types/chat_member_administrator.py
@@ -25,7 +25,7 @@ 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, 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"""
+    """:code:`True`, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report spam messages 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
@@ -38,18 +38,18 @@ class ChatMemberAdministrator(ChatMember):
     """:code:`True`, if the user is allowed to change the chat title, photo and other settings"""
     can_invite_users: bool
     """:code:`True`, if the user is allowed to invite new users to the chat"""
+    can_post_stories: bool
+    """:code:`True`, if the administrator can post stories to the chat"""
+    can_edit_stories: bool
+    """:code:`True`, if the administrator can edit stories posted by other users"""
+    can_delete_stories: bool
+    """:code:`True`, if the administrator can delete stories posted by other users"""
     can_post_messages: Optional[bool] = None
     """*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
     """*Optional*. :code:`True`, if the user is allowed to pin messages; groups and supergroups only"""
-    can_post_stories: Optional[bool] = None
-    """*Optional*. :code:`True`, if the administrator can post stories in the channel; channels only"""
-    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; 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
@@ -73,12 +73,12 @@ class ChatMemberAdministrator(ChatMember):
             can_promote_members: bool,
             can_change_info: bool,
             can_invite_users: bool,
+            can_post_stories: bool,
+            can_edit_stories: bool,
+            can_delete_stories: bool,
             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,
             custom_title: Optional[str] = None,
             **__pydantic_kwargs: Any,
@@ -99,12 +99,12 @@ class ChatMemberAdministrator(ChatMember):
                 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_post_messages=can_post_messages,
+                can_edit_messages=can_edit_messages,
+                can_pin_messages=can_pin_messages,
                 can_manage_topics=can_manage_topics,
                 custom_title=custom_title,
                 **__pydantic_kwargs,
diff --git a/aiogram/types/force_reply.py b/aiogram/types/force_reply.py
index eb00f35b..122d5db7 100644
--- a/aiogram/types/force_reply.py
+++ b/aiogram/types/force_reply.py
@@ -24,7 +24,7 @@ class ForceReply(MutableTelegramObject):
     input_field_placeholder: Optional[str] = None
     """*Optional*. The placeholder to be shown in the input field when the reply is active; 1-64 characters"""
     selective: Optional[bool] = None
-    """*Optional*. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message."""
+    """*Optional*. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message."""
 
     if TYPE_CHECKING:
         # DO NOT EDIT MANUALLY!!!
diff --git a/aiogram/types/giveaway_winners.py b/aiogram/types/giveaway_winners.py
index 41a4b5ca..8a501f88 100644
--- a/aiogram/types/giveaway_winners.py
+++ b/aiogram/types/giveaway_winners.py
@@ -20,7 +20,7 @@ class GiveawayWinners(TelegramObject):
     chat: Chat
     """The chat that created the giveaway"""
     giveaway_message_id: int
-    """Identifier of the messsage with the giveaway in the chat"""
+    """Identifier of the message with the giveaway in the chat"""
     winners_selection_date: DateTime
     """Point in time (Unix timestamp) when winners of the giveaway were selected"""
     winner_count: int
diff --git a/aiogram/types/inline_keyboard_button.py b/aiogram/types/inline_keyboard_button.py
index d2108e93..22a55b09 100644
--- a/aiogram/types/inline_keyboard_button.py
+++ b/aiogram/types/inline_keyboard_button.py
@@ -21,7 +21,7 @@ class InlineKeyboardButton(MutableTelegramObject):
     text: str
     """Label text on the button"""
     url: Optional[str] = None
-    """*Optional*. HTTP or tg:// URL to be opened when the button is pressed. Links :code:`tg://user?id=<user_id>` can be used to mention a user by their ID without using a username, if this is allowed by their privacy settings."""
+    """*Optional*. HTTP or tg:// URL to be opened when the button is pressed. Links :code:`tg://user?id=<user_id>` can be used to mention a user by their identifier without using a username, if this is allowed by their privacy settings."""
     callback_data: Optional[str] = None
     """*Optional*. Data to be sent in a `callback query <https://core.telegram.org/bots/api#callbackquery>`_ to the bot when button is pressed, 1-64 bytes"""
     web_app: Optional[WebAppInfo] = None
diff --git a/aiogram/types/inline_keyboard_markup.py b/aiogram/types/inline_keyboard_markup.py
index e8987def..e5b89671 100644
--- a/aiogram/types/inline_keyboard_markup.py
+++ b/aiogram/types/inline_keyboard_markup.py
@@ -11,7 +11,6 @@ if TYPE_CHECKING:
 class InlineKeyboardMarkup(MutableTelegramObject):
     """
     This object represents an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_ that appears right next to the message it belongs to.
-    **Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will display *unsupported message*.
 
     Source: https://core.telegram.org/bots/api#inlinekeyboardmarkup
     """
diff --git a/aiogram/types/inline_query_result_audio.py b/aiogram/types/inline_query_result_audio.py
index f6ce48b2..56ef5f53 100644
--- a/aiogram/types/inline_query_result_audio.py
+++ b/aiogram/types/inline_query_result_audio.py
@@ -19,7 +19,6 @@ if TYPE_CHECKING:
 class InlineQueryResultAudio(InlineQueryResult):
     """
     Represents a link to an MP3 audio file. By default, this audio file will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the audio.
-    **Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.
 
     Source: https://core.telegram.org/bots/api#inlinequeryresultaudio
     """
diff --git a/aiogram/types/inline_query_result_cached_audio.py b/aiogram/types/inline_query_result_cached_audio.py
index 85b588e7..27d923f0 100644
--- a/aiogram/types/inline_query_result_cached_audio.py
+++ b/aiogram/types/inline_query_result_cached_audio.py
@@ -19,7 +19,6 @@ if TYPE_CHECKING:
 class InlineQueryResultCachedAudio(InlineQueryResult):
     """
     Represents a link to an MP3 audio file stored on the Telegram servers. By default, this audio file will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the audio.
-    **Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.
 
     Source: https://core.telegram.org/bots/api#inlinequeryresultcachedaudio
     """
diff --git a/aiogram/types/inline_query_result_cached_document.py b/aiogram/types/inline_query_result_cached_document.py
index fd03d243..8e0355e6 100644
--- a/aiogram/types/inline_query_result_cached_document.py
+++ b/aiogram/types/inline_query_result_cached_document.py
@@ -19,7 +19,6 @@ if TYPE_CHECKING:
 class InlineQueryResultCachedDocument(InlineQueryResult):
     """
     Represents a link to a file stored on the Telegram servers. By default, this file will be sent by the user with an optional caption. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the file.
-    **Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.
 
     Source: https://core.telegram.org/bots/api#inlinequeryresultcacheddocument
     """
diff --git a/aiogram/types/inline_query_result_cached_sticker.py b/aiogram/types/inline_query_result_cached_sticker.py
index 819c5b31..4300023c 100644
--- a/aiogram/types/inline_query_result_cached_sticker.py
+++ b/aiogram/types/inline_query_result_cached_sticker.py
@@ -17,7 +17,6 @@ if TYPE_CHECKING:
 class InlineQueryResultCachedSticker(InlineQueryResult):
     """
     Represents a link to a sticker stored on the Telegram servers. By default, this sticker will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the sticker.
-    **Note:** This will only work in Telegram versions released after 9 April, 2016 for static stickers and after 06 July, 2019 for `animated stickers <https://telegram.org/blog/animated-stickers>`_. Older clients will ignore them.
 
     Source: https://core.telegram.org/bots/api#inlinequeryresultcachedsticker
     """
diff --git a/aiogram/types/inline_query_result_cached_voice.py b/aiogram/types/inline_query_result_cached_voice.py
index dea26eab..4cff896b 100644
--- a/aiogram/types/inline_query_result_cached_voice.py
+++ b/aiogram/types/inline_query_result_cached_voice.py
@@ -19,7 +19,6 @@ if TYPE_CHECKING:
 class InlineQueryResultCachedVoice(InlineQueryResult):
     """
     Represents a link to a voice message stored on the Telegram servers. By default, this voice message will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the voice message.
-    **Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.
 
     Source: https://core.telegram.org/bots/api#inlinequeryresultcachedvoice
     """
diff --git a/aiogram/types/inline_query_result_contact.py b/aiogram/types/inline_query_result_contact.py
index 95561557..cc2900cd 100644
--- a/aiogram/types/inline_query_result_contact.py
+++ b/aiogram/types/inline_query_result_contact.py
@@ -17,7 +17,6 @@ if TYPE_CHECKING:
 class InlineQueryResultContact(InlineQueryResult):
     """
     Represents a contact with a phone number. By default, this contact will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the contact.
-    **Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.
 
     Source: https://core.telegram.org/bots/api#inlinequeryresultcontact
     """
diff --git a/aiogram/types/inline_query_result_document.py b/aiogram/types/inline_query_result_document.py
index 48cfd83d..86ae993b 100644
--- a/aiogram/types/inline_query_result_document.py
+++ b/aiogram/types/inline_query_result_document.py
@@ -19,7 +19,6 @@ if TYPE_CHECKING:
 class InlineQueryResultDocument(InlineQueryResult):
     """
     Represents a link to a file. By default, this file will be sent by the user with an optional caption. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the file. Currently, only **.PDF** and **.ZIP** files can be sent using this method.
-    **Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.
 
     Source: https://core.telegram.org/bots/api#inlinequeryresultdocument
     """
diff --git a/aiogram/types/inline_query_result_game.py b/aiogram/types/inline_query_result_game.py
index 7b5876f1..3c7dcde5 100644
--- a/aiogram/types/inline_query_result_game.py
+++ b/aiogram/types/inline_query_result_game.py
@@ -12,7 +12,6 @@ if TYPE_CHECKING:
 class InlineQueryResultGame(InlineQueryResult):
     """
     Represents a `Game <https://core.telegram.org/bots/api#games>`_.
-    **Note:** This will only work in Telegram versions released after October 1, 2016. Older clients will not display any inline results if a game result is among them.
 
     Source: https://core.telegram.org/bots/api#inlinequeryresultgame
     """
diff --git a/aiogram/types/inline_query_result_location.py b/aiogram/types/inline_query_result_location.py
index 45ad8042..4e384e79 100644
--- a/aiogram/types/inline_query_result_location.py
+++ b/aiogram/types/inline_query_result_location.py
@@ -17,7 +17,6 @@ if TYPE_CHECKING:
 class InlineQueryResultLocation(InlineQueryResult):
     """
     Represents a location on a map. By default, the location will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the location.
-    **Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.
 
     Source: https://core.telegram.org/bots/api#inlinequeryresultlocation
     """
diff --git a/aiogram/types/inline_query_result_venue.py b/aiogram/types/inline_query_result_venue.py
index 9e11a25b..b8775b6b 100644
--- a/aiogram/types/inline_query_result_venue.py
+++ b/aiogram/types/inline_query_result_venue.py
@@ -17,7 +17,6 @@ if TYPE_CHECKING:
 class InlineQueryResultVenue(InlineQueryResult):
     """
     Represents a venue. By default, the venue will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the venue.
-    **Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.
 
     Source: https://core.telegram.org/bots/api#inlinequeryresultvenue
     """
diff --git a/aiogram/types/inline_query_result_voice.py b/aiogram/types/inline_query_result_voice.py
index df2e81a3..a781fc69 100644
--- a/aiogram/types/inline_query_result_voice.py
+++ b/aiogram/types/inline_query_result_voice.py
@@ -19,7 +19,6 @@ if TYPE_CHECKING:
 class InlineQueryResultVoice(InlineQueryResult):
     """
     Represents a link to a voice recording in an .OGG container encoded with OPUS. By default, this voice recording will be sent by the user. Alternatively, you can use *input_message_content* to send a message with the specified content instead of the the voice message.
-    **Note:** This will only work in Telegram versions released after 9 April, 2016. Older clients will ignore them.
 
     Source: https://core.telegram.org/bots/api#inlinequeryresultvoice
     """
diff --git a/aiogram/types/keyboard_button.py b/aiogram/types/keyboard_button.py
index ade3b008..a0aa2bb2 100644
--- a/aiogram/types/keyboard_button.py
+++ b/aiogram/types/keyboard_button.py
@@ -17,12 +17,6 @@ if TYPE_CHECKING:
 class KeyboardButton(MutableTelegramObject):
     """
     This object represents one button of the reply keyboard. For simple text buttons, *String* can be used instead of this object to specify the button text. The optional fields *web_app*, *request_users*, *request_chat*, *request_contact*, *request_location*, and *request_poll* are mutually exclusive.
-    **Note:** *request_contact* and *request_location* options will only work in Telegram versions released after 9 April, 2016. Older clients will display *unsupported message*.
-
-    **Note:** *request_poll* option will only work in Telegram versions released after 23 January, 2020. Older clients will display *unsupported message*.
-
-    **Note:** *web_app* option will only work in Telegram versions released after 16 April, 2022. Older clients will display *unsupported message*.
-
     **Note:** *request_users* and *request_chat* options will only work in Telegram versions released after 3 February, 2023. Older clients will display *unsupported message*.
 
     Source: https://core.telegram.org/bots/api#keyboardbutton
diff --git a/aiogram/types/link_preview_options.py b/aiogram/types/link_preview_options.py
index 665ee9b1..8964c5ee 100644
--- a/aiogram/types/link_preview_options.py
+++ b/aiogram/types/link_preview_options.py
@@ -16,9 +16,9 @@ class LinkPreviewOptions(TelegramObject):
     url: Optional[str] = None
     """*Optional*. URL to use for the link preview. If empty, then the first URL found in the message text will be used"""
     prefer_small_media: Optional[Union[bool, Default]] = Default("link_preview_prefer_small_media")
-    """*Optional*. :code:`True`, if the media in the link preview is suppposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview"""
+    """*Optional*. :code:`True`, if the media in the link preview is supposed to be shrunk; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview"""
     prefer_large_media: Optional[Union[bool, Default]] = Default("link_preview_prefer_large_media")
-    """*Optional*. :code:`True`, if the media in the link preview is suppposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview"""
+    """*Optional*. :code:`True`, if the media in the link preview is supposed to be enlarged; ignored if the URL isn't explicitly specified or media size change isn't supported for the preview"""
     show_above_text: Optional[Union[bool, Default]] = Default("link_preview_show_above_text")
     """*Optional*. :code:`True`, if the link preview must be shown above the message text; otherwise, the link preview will be shown below the message text"""
 
diff --git a/aiogram/types/message.py b/aiogram/types/message.py
index d023ebc7..c5b7bdbe 100644
--- a/aiogram/types/message.py
+++ b/aiogram/types/message.py
@@ -51,6 +51,7 @@ if TYPE_CHECKING:
     from .animation import Animation
     from .audio import Audio
     from .chat import Chat
+    from .chat_boost_added import ChatBoostAdded
     from .chat_shared import ChatShared
     from .contact import Contact
     from .dice import Dice
@@ -133,6 +134,8 @@ class Message(MaybeInaccessibleMessage):
     """*Optional*. Sender of the message; empty for messages sent to channels. For backward compatibility, the field contains a fake sender user in non-channel chats, if the message was sent on behalf of a chat."""
     sender_chat: Optional[Chat] = None
     """*Optional*. Sender of the message, sent on behalf of a chat. For example, the channel itself for channel posts, the supergroup itself for messages from anonymous group administrators, the linked channel for messages automatically forwarded to the discussion group. For backward compatibility, the field *from* contains a fake sender user in non-channel chats, if the message was sent on behalf of a chat."""
+    sender_boost_count: Optional[int] = None
+    """*Optional*. If the sender of the message boosted the chat, the number of boosts added by the user"""
     forward_origin: Optional[
         Union[MessageOriginUser, MessageOriginHiddenUser, MessageOriginChat, MessageOriginChannel]
     ] = None
@@ -147,6 +150,8 @@ class Message(MaybeInaccessibleMessage):
     """*Optional*. Information about the message that is being replied to, which may come from another chat or forum topic"""
     quote: Optional[TextQuote] = None
     """*Optional*. For replies that quote part of the original message, the quoted part of the message"""
+    reply_to_story: Optional[Story] = None
+    """*Optional*. For replies to a story, the original story"""
     via_bot: Optional[User] = None
     """*Optional*. Bot through which the message was sent"""
     edit_date: Optional[int] = None
@@ -239,6 +244,8 @@ class Message(MaybeInaccessibleMessage):
     """*Optional*. Telegram Passport data"""
     proximity_alert_triggered: Optional[ProximityAlertTriggered] = None
     """*Optional*. Service message. A user in the chat triggered another user's proximity alert while sharing Live Location."""
+    boost_added: Optional[ChatBoostAdded] = None
+    """*Optional*. Service message: user boosted the chat"""
     forum_topic_created: Optional[ForumTopicCreated] = None
     """*Optional*. Service message: forum topic created"""
     forum_topic_edited: Optional[ForumTopicEdited] = None
@@ -320,6 +327,7 @@ class Message(MaybeInaccessibleMessage):
             message_thread_id: Optional[int] = None,
             from_user: Optional[User] = None,
             sender_chat: Optional[Chat] = None,
+            sender_boost_count: Optional[int] = None,
             forward_origin: Optional[
                 Union[
                     MessageOriginUser,
@@ -333,6 +341,7 @@ class Message(MaybeInaccessibleMessage):
             reply_to_message: Optional[Message] = None,
             external_reply: Optional[ExternalReplyInfo] = None,
             quote: Optional[TextQuote] = None,
+            reply_to_story: Optional[Story] = None,
             via_bot: Optional[User] = None,
             edit_date: Optional[int] = None,
             has_protected_content: Optional[bool] = None,
@@ -379,6 +388,7 @@ class Message(MaybeInaccessibleMessage):
             write_access_allowed: Optional[WriteAccessAllowed] = None,
             passport_data: Optional[PassportData] = None,
             proximity_alert_triggered: Optional[ProximityAlertTriggered] = None,
+            boost_added: Optional[ChatBoostAdded] = None,
             forum_topic_created: Optional[ForumTopicCreated] = None,
             forum_topic_edited: Optional[ForumTopicEdited] = None,
             forum_topic_closed: Optional[ForumTopicClosed] = None,
@@ -415,12 +425,14 @@ class Message(MaybeInaccessibleMessage):
                 message_thread_id=message_thread_id,
                 from_user=from_user,
                 sender_chat=sender_chat,
+                sender_boost_count=sender_boost_count,
                 forward_origin=forward_origin,
                 is_topic_message=is_topic_message,
                 is_automatic_forward=is_automatic_forward,
                 reply_to_message=reply_to_message,
                 external_reply=external_reply,
                 quote=quote,
+                reply_to_story=reply_to_story,
                 via_bot=via_bot,
                 edit_date=edit_date,
                 has_protected_content=has_protected_content,
@@ -467,6 +479,7 @@ class Message(MaybeInaccessibleMessage):
                 write_access_allowed=write_access_allowed,
                 passport_data=passport_data,
                 proximity_alert_triggered=proximity_alert_triggered,
+                boost_added=boost_added,
                 forum_topic_created=forum_topic_created,
                 forum_topic_edited=forum_topic_edited,
                 forum_topic_closed=forum_topic_closed,
@@ -601,6 +614,8 @@ class Message(MaybeInaccessibleMessage):
             return ContentType.HAS_MEDIA_SPOILER
         if self.write_access_allowed:
             return ContentType.WRITE_ACCESS_ALLOWED
+        if self.boost_added:
+            return ContentType.BOOST_ADDED
 
         return ContentType.UNKNOWN
 
diff --git a/aiogram/types/reply_keyboard_markup.py b/aiogram/types/reply_keyboard_markup.py
index feaa382b..057b123d 100644
--- a/aiogram/types/reply_keyboard_markup.py
+++ b/aiogram/types/reply_keyboard_markup.py
@@ -26,7 +26,7 @@ class ReplyKeyboardMarkup(MutableTelegramObject):
     input_field_placeholder: Optional[str] = None
     """*Optional*. The placeholder to be shown in the input field when the keyboard is active; 1-64 characters"""
     selective: Optional[bool] = None
-    """*Optional*. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message."""
+    """*Optional*. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message."""
 
     if TYPE_CHECKING:
         # DO NOT EDIT MANUALLY!!!
diff --git a/aiogram/types/reply_keyboard_remove.py b/aiogram/types/reply_keyboard_remove.py
index 5737db3f..9733ecf9 100644
--- a/aiogram/types/reply_keyboard_remove.py
+++ b/aiogram/types/reply_keyboard_remove.py
@@ -15,7 +15,7 @@ class ReplyKeyboardRemove(MutableTelegramObject):
     remove_keyboard: Literal[True] = True
     """Requests clients to remove the custom keyboard (user will not be able to summon this keyboard; if you want to hide the keyboard from sight but keep it accessible, use *one_time_keyboard* in :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup`)"""
     selective: Optional[bool] = None
-    """*Optional*. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message."""
+    """*Optional*. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message."""
 
     if TYPE_CHECKING:
         # DO NOT EDIT MANUALLY!!!
diff --git a/aiogram/types/story.py b/aiogram/types/story.py
index dc92c575..69aaaecf 100644
--- a/aiogram/types/story.py
+++ b/aiogram/types/story.py
@@ -1,9 +1,32 @@
-from aiogram.types import TelegramObject
+from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any
+
+from .base import TelegramObject
+
+if TYPE_CHECKING:
+    from .chat import Chat
 
 
 class Story(TelegramObject):
     """
-    This object represents a message about a forwarded story in the chat. Currently holds no information.
+    This object represents a story.
 
     Source: https://core.telegram.org/bots/api#story
     """
+
+    chat: Chat
+    """Chat that posted the story"""
+    id: int
+    """Unique identifier for the story in the chat"""
+
+    if TYPE_CHECKING:
+        # DO NOT EDIT MANUALLY!!!
+        # This section was auto-generated via `butcher`
+
+        def __init__(__pydantic__self__, *, chat: Chat, id: int, **__pydantic_kwargs: Any) -> None:
+            # DO NOT EDIT MANUALLY!!!
+            # This method was auto-generated via `butcher`
+            # Is needed only for type checking and IDE support without any additional plugins
+
+            super().__init__(chat=chat, id=id, **__pydantic_kwargs)
diff --git a/aiogram/types/update.py b/aiogram/types/update.py
index f21f4989..d7686593 100644
--- a/aiogram/types/update.py
+++ b/aiogram/types/update.py
@@ -32,19 +32,19 @@ class Update(TelegramObject):
     """
 
     update_id: int
-    """The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This ID becomes especially handy if you're using `webhooks <https://core.telegram.org/bots/api#setwebhook>`_, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially."""
+    """The update's unique identifier. Update identifiers start from a certain positive number and increase sequentially. This identifier becomes especially handy if you're using `webhooks <https://core.telegram.org/bots/api#setwebhook>`_, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially."""
     message: Optional[Message] = None
     """*Optional*. New incoming message of any kind - text, photo, sticker, etc."""
     edited_message: Optional[Message] = None
-    """*Optional*. New version of a message that is known to the bot and was edited"""
+    """*Optional*. New version of a message that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot."""
     channel_post: Optional[Message] = None
     """*Optional*. New incoming channel post of any kind - text, photo, sticker, etc."""
     edited_channel_post: Optional[Message] = None
-    """*Optional*. New version of a channel post that is known to the bot and was edited"""
+    """*Optional*. New version of a channel post that is known to the bot and was edited. This update may at times be triggered by changes to message fields that are either unavailable or not actively used by your bot."""
     message_reaction: Optional[MessageReactionUpdated] = None
     """*Optional*. A reaction to a message was changed by a user. The bot must be an administrator in the chat and must explicitly specify :code:`"message_reaction"` in the list of *allowed_updates* to receive these updates. The update isn't received for reactions set by bots."""
     message_reaction_count: Optional[MessageReactionCountUpdated] = None
-    """*Optional*. Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify :code:`"message_reaction_count"` in the list of *allowed_updates* to receive these updates."""
+    """*Optional*. Reactions to a message with anonymous reactions were changed. The bot must be an administrator in the chat and must explicitly specify :code:`"message_reaction_count"` in the list of *allowed_updates* to receive these updates. The updates are grouped and can be sent with delay up to a few minutes."""
     inline_query: Optional[InlineQuery] = None
     """*Optional*. New incoming `inline <https://core.telegram.org/bots/api#inline-mode>`_ query"""
     chosen_inline_result: Optional[ChosenInlineResult] = None
@@ -56,7 +56,7 @@ class Update(TelegramObject):
     pre_checkout_query: Optional[PreCheckoutQuery] = None
     """*Optional*. New incoming pre-checkout query. Contains full information about checkout"""
     poll: Optional[Poll] = None
-    """*Optional*. New poll state. Bots receive only updates about stopped polls and polls, which are sent by the bot"""
+    """*Optional*. New poll state. Bots receive only updates about manually stopped polls and polls, which are sent by the bot"""
     poll_answer: Optional[PollAnswer] = None
     """*Optional*. A user changed their answer in a non-anonymous poll. Bots receive new votes only in polls that were sent by the bot itself."""
     my_chat_member: Optional[ChatMemberUpdated] = None
diff --git a/docs/api/types/index.rst b/docs/api/types/index.rst
index 4190293e..62bae4b3 100644
--- a/docs/api/types/index.rst
+++ b/docs/api/types/index.rst
@@ -29,6 +29,7 @@ Available types
     chat
     chat_administrator_rights
     chat_boost
+    chat_boost_added
     chat_boost_removed
     chat_boost_source
     chat_boost_source_gift_code


Test patch:
diff --git a/tests/test_api/test_methods/test_get_my_default_administrator_rights.py b/tests/test_api/test_methods/test_get_my_default_administrator_rights.py
index bd18199c..9fbc1f93 100644
--- a/tests/test_api/test_methods/test_get_my_default_administrator_rights.py
+++ b/tests/test_api/test_methods/test_get_my_default_administrator_rights.py
@@ -17,6 +17,9 @@ class TestGetMyDefaultAdministratorRights:
                 can_promote_members=False,
                 can_change_info=False,
                 can_invite_users=False,
+                can_post_stories=False,
+                can_edit_stories=False,
+                can_delete_stories=False,
             ),
         )
 
diff --git a/tests/test_api/test_types/test_message.py b/tests/test_api/test_types/test_message.py
index 457787ef..56c06ceb 100644
--- a/tests/test_api/test_types/test_message.py
+++ b/tests/test_api/test_types/test_message.py
@@ -41,6 +41,7 @@ from aiogram.types import (
     Animation,
     Audio,
     Chat,
+    ChatBoostAdded,
     ChatShared,
     Contact,
     Dice,
@@ -483,7 +484,7 @@ TEST_MESSAGE_STORY = Message(
     date=datetime.datetime.now(),
     chat=Chat(id=42, type="private"),
     from_user=User(id=42, is_bot=False, first_name="Test"),
-    story=Story(),
+    story=Story(chat=Chat(id=42, type="private"), id=42),
     forward_signature="Test",
     forward_date=datetime.datetime.now(),
 )
@@ -554,6 +555,13 @@ TEST_MESSAGE_WRITE_ACCESS_ALLOWED = Message(
     from_user=None,
     write_access_allowed=WriteAccessAllowed(),
 )
+TEST_MESSAGE_BOOST_ADDED = Message(
+    message_id=42,
+    date=datetime.datetime.now(),
+    chat=Chat(id=42, type="private"),
+    from_user=User(id=42, is_bot=False, first_name="User"),
+    boost_added=ChatBoostAdded(boost_count=1),
+)
 TEST_MESSAGE_UNKNOWN = Message(
     message_id=42,
     date=datetime.datetime.now(),
@@ -621,6 +629,7 @@ MESSAGES_AND_CONTENT_TYPES = [
     [TEST_MESSAGE_GENERAL_FORUM_TOPIC_HIDDEN, ContentType.GENERAL_FORUM_TOPIC_HIDDEN],
     [TEST_MESSAGE_GENERAL_FORUM_TOPIC_UNHIDDEN, ContentType.GENERAL_FORUM_TOPIC_UNHIDDEN],
     [TEST_MESSAGE_WRITE_ACCESS_ALLOWED, ContentType.WRITE_ACCESS_ALLOWED],
+    [TEST_MESSAGE_BOOST_ADDED, ContentType.BOOST_ADDED],
     [TEST_MESSAGE_UNKNOWN, ContentType.UNKNOWN],
 ]
 
@@ -679,6 +688,7 @@ MESSAGES_AND_COPY_METHODS = [
     [TEST_MESSAGE_WRITE_ACCESS_ALLOWED, None],
     [TEST_MESSAGE_GIVEAWAY, None],
     [TEST_MESSAGE_GIVEAWAY_WINNERS, None],
+    [TEST_MESSAGE_BOOST_ADDED, None],
     [TEST_MESSAGE_UNKNOWN, None],
 ]
 
diff --git a/tests/test_filters/test_chat_member_updated.py b/tests/test_filters/test_chat_member_updated.py
index 46da8b8e..2a608c8f 100644
--- a/tests/test_filters/test_chat_member_updated.py
+++ b/tests/test_filters/test_chat_member_updated.py
@@ -315,6 +315,9 @@ class TestChatMemberUpdatedStatusFilter:
         "can_send_polls": True,
         "can_send_other_messages": True,
         "can_add_web_page_previews": True,
+        "can_post_stories": True,
+        "can_edit_stories": True,
+        "can_delete_stories": True,
     }
 
     @pytest.mark.parametrize(