From b311d59fce5d1f7554825b6c60daadcce189e9e7 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 6 Aug 2023 16:59:29 +0300 Subject: [PATCH] Webhook docs (#1248) * Added documentation for polling/webhook modes * Added changelog * Added changelog --- CHANGES/1241.doc.rst | 1 + aiogram/webhook/aiohttp_server.py | 49 +- docs/dispatcher/index.rst | 9 + docs/dispatcher/long_polling.rst | 32 + docs/dispatcher/webhook.rst | 125 ++++ .../en/LC_MESSAGES/api/enums/currency.po | 30 + .../api/methods/answer_pre_checkout_query.po | 28 +- .../api/methods/answer_shipping_query.po | 28 +- .../api/methods/edit_message_reply_markup.po | 28 +- .../en/LC_MESSAGES/api/types/message.po | 33 +- .../api/types/pre_checkout_query.po | 52 +- .../LC_MESSAGES/api/types/shipping_query.po | 55 +- docs/locale/en/LC_MESSAGES/changelog.po | 570 ++++++++++-------- .../locale/en/LC_MESSAGES/deployment/index.po | 22 + .../locale/en/LC_MESSAGES/dispatcher/index.po | 24 +- .../en/LC_MESSAGES/dispatcher/long_polling.po | 62 ++ .../en/LC_MESSAGES/dispatcher/webhook.po | 303 ++++++++++ docs/locale/en/LC_MESSAGES/utils/keyboard.po | 106 +++- .../uk_UA/LC_MESSAGES/api/enums/currency.po | 30 + .../api/methods/answer_pre_checkout_query.po | 28 +- .../api/methods/answer_shipping_query.po | 28 +- .../api/methods/edit_message_reply_markup.po | 28 +- .../uk_UA/LC_MESSAGES/api/types/message.po | 33 +- .../api/types/pre_checkout_query.po | 52 +- .../LC_MESSAGES/api/types/shipping_query.po | 55 +- docs/locale/uk_UA/LC_MESSAGES/changelog.po | 570 ++++++++++-------- .../uk_UA/LC_MESSAGES/deployment/index.po | 22 + .../LC_MESSAGES/dispatcher/filters/text.po | 130 ++++ .../uk_UA/LC_MESSAGES/dispatcher/index.po | 24 +- .../LC_MESSAGES/dispatcher/long_polling.po | 62 ++ .../uk_UA/LC_MESSAGES/dispatcher/webhook.po | 303 ++++++++++ .../uk_UA/LC_MESSAGES/utils/keyboard.po | 124 ++-- examples/echo_bot.py | 13 +- examples/echo_bot_webhook.py | 104 ++++ examples/echo_bot_webhook_ssl.py | 118 ++++ examples/multibot.py | 2 +- examples/specify_updates.py | 4 +- 37 files changed, 2595 insertions(+), 692 deletions(-) create mode 100644 CHANGES/1241.doc.rst create mode 100644 docs/dispatcher/long_polling.rst create mode 100644 docs/dispatcher/webhook.rst create mode 100644 docs/locale/en/LC_MESSAGES/api/enums/currency.po create mode 100644 docs/locale/en/LC_MESSAGES/deployment/index.po create mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po create mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/webhook.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/api/enums/currency.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/deployment/index.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/dispatcher/long_polling.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po create mode 100644 examples/echo_bot_webhook.py create mode 100644 examples/echo_bot_webhook_ssl.py diff --git a/CHANGES/1241.doc.rst b/CHANGES/1241.doc.rst new file mode 100644 index 00000000..34825cf9 --- /dev/null +++ b/CHANGES/1241.doc.rst @@ -0,0 +1 @@ +Added documentation for webhook and polling modes. diff --git a/aiogram/webhook/aiohttp_server.py b/aiogram/webhook/aiohttp_server.py index af1c3c56..bf9f2aaf 100644 --- a/aiogram/webhook/aiohttp_server.py +++ b/aiogram/webhook/aiohttp_server.py @@ -18,11 +18,11 @@ from aiogram.webhook.security import IPFilter def setup_application(app: Application, dispatcher: Dispatcher, /, **kwargs: Any) -> None: """ - This function helps to configure startup-shutdown process + This function helps to configure a startup-shutdown process - :param app: - :param dispatcher: - :param kwargs: + :param app: aiohttp application + :param dispatcher: aiogram dispatcher + :param kwargs: additional data :return: """ workflow_data = { @@ -81,11 +81,6 @@ def ip_filter_middleware( class BaseRequestHandler(ABC): - """ - Base handler that helps to handle incoming request from aiohttp - and propagate it to the Dispatcher - """ - def __init__( self, dispatcher: Dispatcher, @@ -93,9 +88,12 @@ class BaseRequestHandler(ABC): **data: Any, ) -> None: """ + Base handler that helps to handle incoming request from aiohttp + and propagate it to the Dispatcher + :param dispatcher: instance of :class:`aiogram.dispatcher.dispatcher.Dispatcher` - :param handle_in_background: immediately respond to the Telegram instead of - waiting end of handler process + :param handle_in_background: immediately responds to the Telegram instead of + a waiting end of a handler process """ self.dispatcher = dispatcher self.handle_in_background = handle_in_background @@ -199,10 +197,6 @@ class BaseRequestHandler(ABC): class SimpleRequestHandler(BaseRequestHandler): - """ - Handler for single Bot instance - """ - def __init__( self, dispatcher: Dispatcher, @@ -212,9 +206,11 @@ class SimpleRequestHandler(BaseRequestHandler): **data: Any, ) -> None: """ + Handler for single Bot instance + :param dispatcher: instance of :class:`aiogram.dispatcher.dispatcher.Dispatcher` - :param handle_in_background: immediately respond to the Telegram instead of - waiting end of handler process + :param handle_in_background: immediately responds to the Telegram instead of + a waiting end of handler process :param bot: instance of :class:`aiogram.client.bot.Bot` """ super().__init__(dispatcher=dispatcher, handle_in_background=handle_in_background, **data) @@ -237,11 +233,6 @@ class SimpleRequestHandler(BaseRequestHandler): class TokenBasedRequestHandler(BaseRequestHandler): - """ - Handler that supports multiple bots, the context will be resolved - from path variable 'bot_token' - """ - def __init__( self, dispatcher: Dispatcher, @@ -250,9 +241,17 @@ class TokenBasedRequestHandler(BaseRequestHandler): **data: Any, ) -> None: """ + Handler that supports multiple bots the context will be resolved + from path variable 'bot_token' + + .. note:: + + This handler is not recommended in due to token is available in URL + and can be logged by reverse proxy server or other middleware. + :param dispatcher: instance of :class:`aiogram.dispatcher.dispatcher.Dispatcher` - :param handle_in_background: immediately respond to the Telegram instead of - waiting end of handler process + :param handle_in_background: immediately responds to the Telegram instead of + a waiting end of handler process :param bot_settings: kwargs that will be passed to new Bot instance """ super().__init__(dispatcher=dispatcher, handle_in_background=handle_in_background, **data) @@ -282,7 +281,7 @@ class TokenBasedRequestHandler(BaseRequestHandler): async def resolve_bot(self, request: web.Request) -> Bot: """ - Get bot token from path and create or get from cache Bot instance + Get bot token from a path and create or get from cache Bot instance :param request: :return: diff --git a/docs/dispatcher/index.rst b/docs/dispatcher/index.rst index b7299ea9..73dae308 100644 --- a/docs/dispatcher/index.rst +++ b/docs/dispatcher/index.rst @@ -15,6 +15,13 @@ With dispatcher you can do: Dispatcher is also separated into two entities - Router and Dispatcher. Dispatcher is subclass of router and should be always is root router. +Telegram supports two ways of receiving updates: + +- :ref:`Webhook ` - you should configure your web server to receive updates from Telegram; +- :ref:`Long polling ` - you should request updates from Telegram. + +So, you can use both of them with *aiogram*. + .. toctree:: router @@ -25,3 +32,5 @@ Dispatcher is subclass of router and should be always is root router. finite_state_machine/index flags errors + long_polling + webhook diff --git a/docs/dispatcher/long_polling.rst b/docs/dispatcher/long_polling.rst new file mode 100644 index 00000000..c261ed35 --- /dev/null +++ b/docs/dispatcher/long_polling.rst @@ -0,0 +1,32 @@ +.. _long-polling: + +############ +Long-polling +############ + +Long-polling is a technology that allows a Telegram server to send updates in case +when you don't have dedicated IP address or port to receive webhooks for example +on a developer machine. + +To use long-polling mode you should use :meth:`aiogram.dispatcher.dispatcher.Dispatcher.start_polling` +or :meth:`aiogram.dispatcher.dispatcher.Dispatcher.run_polling` methods. + +.. note:: + + You can use polling from only one polling process per single Bot token, + in other case Telegram server will return an error. + +.. note:: + + If you will need to scale your bot, you should use webhooks instead of long-polling. + +.. note:: + + If you will use multibot mode, you should use webhook mode for all bots. + +Example +======= + +This example will show you how to create simple echo bot based on long-polling. + +.. literalinclude:: ../../examples/echo_bot.py diff --git a/docs/dispatcher/webhook.rst b/docs/dispatcher/webhook.rst new file mode 100644 index 00000000..8cff6640 --- /dev/null +++ b/docs/dispatcher/webhook.rst @@ -0,0 +1,125 @@ +.. _webhook: + +####### +Webhook +####### + +Telegram Bot API supports webhook. +If you set webhook for your bot, Telegram will send updates to the specified url. +You can use :meth:`aiogram.methods.set_webhook.SetWebhook` method to specify a url +and receive incoming updates on it. + +.. note:: + + If you use webhook, you can't use long polling at the same time. + +Before start i'll recommend you to read `official Telegram's documentation about webhook `_ + +After you read it, you can start to read this section. + +Generally to use webhook with aiogram you should use any async web framework. +Buy out of the box aiogram has an aiohttp integration, so we'll use it. + +.. note:: + + You can use any async web framework you want, but you should write your own integration if you don't use aiohttp. + + +aiohttp integration +=================== + +Out of the box aiogram has aiohttp integration, so you can use it. + +Here is available few ways to do it using different implementations of the webhook controller: + +- :class:`aiogram.webhook.aiohttp_server.BaseRequestHandler` - Abstract class for aiohttp webhook controller +- :class:`aiogram.webhook.aiohttp_server.SimpleRequestHandler` - Simple webhook controller, uses single Bot instance +- :class:`aiogram.webhook.aiohttp_server.TokenBasedRequestHandler` - Token based webhook controller, uses multiple Bot instances and tokens + +You can use it as is or inherit from it and override some methods. + +.. autoclass:: aiogram.webhook.aiohttp_server.BaseRequestHandler + :members: __init__, register, close, resolve_bot, verify_secret, handle + +.. autoclass:: aiogram.webhook.aiohttp_server.SimpleRequestHandler + :members: __init__, register, close, resolve_bot, verify_secret, handle + +.. autoclass:: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler + :members: __init__, register, close, resolve_bot, verify_secret, handle + +Security +-------- + +Telegram supports two methods to verify incoming requests that they are from Telegram: + +Using a secret token +~~~~~~~~~~~~~~~~~~~~ + +When you set webhook, you can specify a secret token and then use it to verify incoming requests. + +Using IP filtering +~~~~~~~~~~~~~~~~~~ + +You can specify a list of IP addresses from which you expect incoming requests, and then use it to verify incoming requests. + +It can be acy using firewall rules or nginx configuration or middleware on application level. + +So, aiogram has an implementation of the IP filtering middleware for aiohttp. + +.. autofunction:: aiogram.webhook.aiohttp_server.ip_filter_middleware + +.. autoclass:: aiogram.webhook.security.IPFilter + :members: __init__, allow, allow_ip, default, check + +Examples +-------- + +Behind reverse proxy +~~~~~~~~~~~~~~~~~~~~ + +In this example we'll use aiohttp as web framework and nginx as reverse proxy. + +.. literalinclude:: ../../examples/echo_bot_webhook.py + +When you use nginx as reverse proxy, you should set `proxy_pass` to your aiohttp server address. + +.. code-block:: nginx + + location /webhook { + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_redirect off; + proxy_buffering off; + proxy_pass http://127.0.0.1:8080; + } + + +Without reverse proxy (not recommended) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In case you want can't use reverse proxy, you can use aiohttp's ssl context. + +Also this example contains usage with self-signed certificate. + +.. literalinclude:: ../../examples/echo_bot_webhook_ssl.py + + +With using other web framework +============================== + +You can pass incoming request to aiogram's webhook controller from any web framework you want. + +Read more about it in :meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_webhook_update` +or :meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_update` methods. + +.. code-block:: python + + update = Update.model_validate(await request.json(), context={"bot": bot}) + await dispatcher.feed_update(update) + + +.. note:: + + If you want to use reply into webhook, you should check that result of the :code:`feed_update` + methods is an instance of API method and build :code:`multipart/form-data` + or :code:`application/json` response body manually. diff --git a/docs/locale/en/LC_MESSAGES/api/enums/currency.po b/docs/locale/en/LC_MESSAGES/api/enums/currency.po new file mode 100644 index 00000000..b7a6d732 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/api/enums/currency.po @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/enums/currency.rst:3 +msgid "Currency" +msgstr "" + +#: aiogram.enums.currency.Currency:1 of +msgid "Currencies supported by Telegram Bot API" +msgstr "" + +#: aiogram.enums.currency.Currency:3 of +msgid "Source: https://core.telegram.org/bots/payments#supported-currencies" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/answer_pre_checkout_query.po b/docs/locale/en/LC_MESSAGES/api/methods/answer_pre_checkout_query.po index 6447522c..0686720e 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/answer_pre_checkout_query.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/answer_pre_checkout_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/answer_pre_checkout_query.rst:3 msgid "answerPreCheckoutQuery" @@ -65,36 +65,44 @@ msgid "" " user." msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:14 +#: ../../api/methods/answer_pre_checkout_query.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:17 +#: ../../api/methods/answer_pre_checkout_query.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:25 +#: ../../api/methods/answer_pre_checkout_query.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:27 +#: ../../api/methods/answer_pre_checkout_query.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:29 +#: ../../api/methods/answer_pre_checkout_query.rst:30 msgid "" ":code:`from aiogram.methods.answer_pre_checkout_query import " "AnswerPreCheckoutQuery`" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:30 +#: ../../api/methods/answer_pre_checkout_query.rst:31 msgid "alias: :code:`from aiogram.methods import AnswerPreCheckoutQuery`" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:33 +#: ../../api/methods/answer_pre_checkout_query.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:40 +#: ../../api/methods/answer_pre_checkout_query.rst:41 msgid "As reply into Webhook in handler" msgstr "" + +#: ../../api/methods/answer_pre_checkout_query.rst:49 +msgid "As shortcut from received object" +msgstr "" + +#: ../../api/methods/answer_pre_checkout_query.rst:51 +msgid ":meth:`aiogram.types.pre_checkout_query.PreCheckoutQuery.answer`" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/answer_shipping_query.po b/docs/locale/en/LC_MESSAGES/api/methods/answer_shipping_query.po index f1a61600..418b9c67 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/answer_shipping_query.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/answer_shipping_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/answer_shipping_query.rst:3 msgid "answerShippingQuery" @@ -69,36 +69,44 @@ msgid "" "this message to the user." msgstr "" -#: ../../api/methods/answer_shipping_query.rst:14 +#: ../../api/methods/answer_shipping_query.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:17 +#: ../../api/methods/answer_shipping_query.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:25 +#: ../../api/methods/answer_shipping_query.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:27 +#: ../../api/methods/answer_shipping_query.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:29 +#: ../../api/methods/answer_shipping_query.rst:30 msgid "" ":code:`from aiogram.methods.answer_shipping_query import " "AnswerShippingQuery`" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:30 +#: ../../api/methods/answer_shipping_query.rst:31 msgid "alias: :code:`from aiogram.methods import AnswerShippingQuery`" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:33 +#: ../../api/methods/answer_shipping_query.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:40 +#: ../../api/methods/answer_shipping_query.rst:41 msgid "As reply into Webhook in handler" msgstr "" + +#: ../../api/methods/answer_shipping_query.rst:49 +msgid "As shortcut from received object" +msgstr "" + +#: ../../api/methods/answer_shipping_query.rst:51 +msgid ":meth:`aiogram.types.shipping_query.ShippingQuery.answer`" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_reply_markup.po b/docs/locale/en/LC_MESSAGES/api/methods/edit_message_reply_markup.po index d8a3b25d..b704dd6d 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_reply_markup.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/edit_message_reply_markup.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/edit_message_reply_markup.rst:3 msgid "editMessageReplyMarkup" @@ -70,48 +70,52 @@ msgid "" "`_." msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:14 +#: ../../api/methods/edit_message_reply_markup.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:17 +#: ../../api/methods/edit_message_reply_markup.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:25 +#: ../../api/methods/edit_message_reply_markup.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:27 +#: ../../api/methods/edit_message_reply_markup.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:29 +#: ../../api/methods/edit_message_reply_markup.rst:30 msgid "" ":code:`from aiogram.methods.edit_message_reply_markup import " "EditMessageReplyMarkup`" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:30 +#: ../../api/methods/edit_message_reply_markup.rst:31 msgid "alias: :code:`from aiogram.methods import EditMessageReplyMarkup`" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:33 +#: ../../api/methods/edit_message_reply_markup.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:40 +#: ../../api/methods/edit_message_reply_markup.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:48 +#: ../../api/methods/edit_message_reply_markup.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:50 +#: ../../api/methods/edit_message_reply_markup.rst:51 msgid ":meth:`aiogram.types.message.Message.edit_reply_markup`" msgstr "" +#: ../../api/methods/edit_message_reply_markup.rst:52 +msgid ":meth:`aiogram.types.message.Message.delete_reply_markup`" +msgstr "" + #~ msgid "" #~ "A JSON-serialized object for an " #~ "`inline keyboard \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/message.rst:3 msgid "Message" @@ -437,6 +437,7 @@ msgstr "" #: aiogram.types.message.Message.answer_video_note:4 #: aiogram.types.message.Message.answer_voice:4 #: aiogram.types.message.Message.delete:4 +#: aiogram.types.message.Message.delete_reply_markup:4 #: aiogram.types.message.Message.edit_caption:4 #: aiogram.types.message.Message.edit_live_location:4 #: aiogram.types.message.Message.edit_media:4 @@ -554,6 +555,7 @@ msgstr "" #: aiogram.types.message.Message.answer_video_note #: aiogram.types.message.Message.answer_voice #: aiogram.types.message.Message.copy_to +#: aiogram.types.message.Message.delete_reply_markup #: aiogram.types.message.Message.edit_caption #: aiogram.types.message.Message.edit_live_location #: aiogram.types.message.Message.edit_media @@ -836,6 +838,7 @@ msgstr "" #: aiogram.types.message.Message.answer_video_note #: aiogram.types.message.Message.answer_voice #: aiogram.types.message.Message.copy_to aiogram.types.message.Message.delete +#: aiogram.types.message.Message.delete_reply_markup #: aiogram.types.message.Message.edit_caption #: aiogram.types.message.Message.edit_live_location #: aiogram.types.message.Message.edit_media @@ -1941,7 +1944,7 @@ msgid "instance of method :class:`aiogram.methods.send_voice.SendVoice`" msgstr "" #: aiogram.types.message.Message.send_copy:1 of -msgid "Send copy of message." +msgid "Send copy of a message." msgstr "" #: aiogram.types.message.Message.send_copy:3 of @@ -1952,8 +1955,8 @@ msgstr "" #: aiogram.types.message.Message.send_copy:8 of msgid "" -"This method don't use the API method named `copyMessage` and historically" -" implemented before the similar method is added to API" +"This method doesn't use the API method named `copyMessage` and " +"historically implemented before the similar method is added to API" msgstr "" #: aiogram.types.message.Message.copy_to:1 of @@ -1969,6 +1972,7 @@ msgstr "" #: aiogram.types.message.Message.copy_to:5 #: aiogram.types.message.Message.delete:5 +#: aiogram.types.message.Message.delete_reply_markup:5 #: aiogram.types.message.Message.edit_caption:5 #: aiogram.types.message.Message.edit_live_location:5 #: aiogram.types.message.Message.edit_media:5 @@ -2057,6 +2061,7 @@ msgstr "" msgid "New text of the message, 1-4096 characters after entities parsing" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:12 #: aiogram.types.message.Message.edit_caption:11 #: aiogram.types.message.Message.edit_live_location:13 #: aiogram.types.message.Message.edit_media:12 @@ -2149,6 +2154,7 @@ msgid "" ":class:`aiogram.methods.edit_message_media.EditMessageMedia`" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:1 #: aiogram.types.message.Message.edit_reply_markup:1 of msgid "" "Shortcut for method " @@ -2156,6 +2162,7 @@ msgid "" " will automatically fill method attributes:" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:8 #: aiogram.types.message.Message.edit_reply_markup:7 of msgid "" "Use this method to edit only the reply markup of messages. On success, if" @@ -2164,16 +2171,22 @@ msgid "" ":code:`True` is returned." msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:10 #: aiogram.types.message.Message.edit_reply_markup:9 of msgid "Source: https://core.telegram.org/bots/api#editmessagereplymarkup" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:13 #: aiogram.types.message.Message.edit_reply_markup:13 of msgid "" "instance of method " ":class:`aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup`" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:6 of +msgid ":code:`reply_markup`" +msgstr "" + #: aiogram.types.message.Message.edit_live_location:1 of msgid "" "Shortcut for method " @@ -2562,3 +2575,13 @@ msgstr "" #~ "/form-data. :ref:`More information on " #~ "Sending Files » `" #~ msgstr "" + +#~ msgid "Send copy of message." +#~ msgstr "" + +#~ msgid "" +#~ "This method don't use the API " +#~ "method named `copyMessage` and historically" +#~ " implemented before the similar method " +#~ "is added to API" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/pre_checkout_query.po b/docs/locale/en/LC_MESSAGES/api/types/pre_checkout_query.po index 053b5081..59009813 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/pre_checkout_query.po +++ b/docs/locale/en/LC_MESSAGES/api/types/pre_checkout_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/pre_checkout_query.rst:3 msgid "PreCheckoutQuery" @@ -71,10 +71,58 @@ msgstr "" msgid "*Optional*. Order information provided by the user" msgstr "" +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery`" +" will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:4 of +msgid ":code:`pre_checkout_query_id`" +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:6 of +msgid "" +"Once the user has confirmed their payment and shipping details, the Bot " +"API sends the final confirmation in the form of an " +":class:`aiogram.types.update.Update` with the field *pre_checkout_query*." +" Use this method to respond to such pre-checkout queries. On success, " +":code:`True` is returned. **Note:** The Bot API must receive an answer " +"within 10 seconds after the pre-checkout query was sent." +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:8 of +msgid "Source: https://core.telegram.org/bots/api#answerprecheckoutquery" +msgstr "" + #: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer of msgid "Parameters" msgstr "" +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:10 of +msgid "" +"Specify :code:`True` if everything is alright (goods are available, etc.)" +" and the bot is ready to proceed with the order. Use :code:`False` if " +"there are any problems." +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:11 of +msgid "" +"Required if *ok* is :code:`False`. Error message in human readable form " +"that explains the reason for failure to proceed with the checkout (e.g. " +"\"Sorry, somebody just bought the last of our amazing black T-shirts " +"while you were busy filling out your payment details. Please choose a " +"different color or garment!\"). Telegram will display this message to the" +" user." +msgstr "" + #: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer of msgid "Returns" msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:12 of +msgid "" +"instance of method " +":class:`aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery`" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/shipping_query.po b/docs/locale/en/LC_MESSAGES/api/types/shipping_query.po index 71f13a21..b17b8c63 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/shipping_query.po +++ b/docs/locale/en/LC_MESSAGES/api/types/shipping_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/shipping_query.rst:3 msgid "ShippingQuery" @@ -47,10 +47,61 @@ msgstr "" msgid "User specified shipping address" msgstr "" +#: aiogram.types.shipping_query.ShippingQuery.answer:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.answer_shipping_query.AnswerShippingQuery` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:4 of +msgid ":code:`shipping_query_id`" +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:6 of +msgid "" +"If you sent an invoice requesting a shipping address and the parameter " +"*is_flexible* was specified, the Bot API will send an " +":class:`aiogram.types.update.Update` with a *shipping_query* field to the" +" bot. Use this method to reply to shipping queries. On success, " +":code:`True` is returned." +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:8 of +msgid "Source: https://core.telegram.org/bots/api#answershippingquery" +msgstr "" + #: aiogram.types.shipping_query.ShippingQuery.answer of msgid "Parameters" msgstr "" +#: aiogram.types.shipping_query.ShippingQuery.answer:10 of +msgid "" +"Pass :code:`True` if delivery to the specified address is possible and " +":code:`False` if there are any problems (for example, if delivery to the " +"specified address is not possible)" +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:11 of +msgid "" +"Required if *ok* is :code:`True`. A JSON-serialized array of available " +"shipping options." +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:12 of +msgid "" +"Required if *ok* is :code:`False`. Error message in human readable form " +"that explains why it is impossible to complete the order (e.g. \"Sorry, " +"delivery to your desired address is unavailable'). Telegram will display " +"this message to the user." +msgstr "" + #: aiogram.types.shipping_query.ShippingQuery.answer of msgid "Returns" msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:13 of +msgid "" +"instance of method " +":class:`aiogram.methods.answer_shipping_query.AnswerShippingQuery`" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/changelog.po b/docs/locale/en/LC_MESSAGES/changelog.po index 995b93c1..92abec62 100644 --- a/docs/locale/en/LC_MESSAGES/changelog.po +++ b/docs/locale/en/LC_MESSAGES/changelog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,18 +22,96 @@ msgid "Changelog" msgstr "" #: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" +msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-06)" msgstr "" -#: ../../../CHANGES.rst:23 ../../../CHANGES.rst:186 ../../../CHANGES.rst:286 -#: ../../../CHANGES.rst:346 ../../../CHANGES.rst:397 ../../../CHANGES.rst:470 -#: ../../../CHANGES.rst:511 ../../../CHANGES.rst:549 ../../../CHANGES.rst:597 -#: ../../../CHANGES.rst:673 ../../../CHANGES.rst:706 ../../../CHANGES.rst:737 -#: ../../[towncrier-fragments]:5 +#: ../../../CHANGES.rst:24 ../../../CHANGES.rst:66 ../../../CHANGES.rst:229 +#: ../../../CHANGES.rst:329 ../../../CHANGES.rst:389 ../../../CHANGES.rst:440 +#: ../../../CHANGES.rst:513 ../../../CHANGES.rst:554 ../../../CHANGES.rst:592 +#: ../../../CHANGES.rst:640 ../../../CHANGES.rst:716 ../../../CHANGES.rst:749 +#: ../../../CHANGES.rst:780 ../../[towncrier-fragments]:5 msgid "Features" msgstr "" #: ../../[towncrier-fragments]:7 +msgid "Added Currency enum. You can use it like this:" +msgstr "" + +#: ../../[towncrier-fragments]:19 +msgid "`#1194 `_" +msgstr "" + +#: ../../[towncrier-fragments]:20 +msgid "" +"Updated keyboard builders with new methods for integrating buttons and " +"keyboard creation more seamlessly. Added functionality to create buttons " +"from existing markup and attach another builder. This improvement aims to" +" make the keyboard building process more user-friendly and flexible. " +"`#1236 `_" +msgstr "" + +#: ../../../CHANGES.rst:35 ../../../CHANGES.rst:105 ../../../CHANGES.rst:291 +#: ../../../CHANGES.rst:354 ../../../CHANGES.rst:403 ../../../CHANGES.rst:464 +#: ../../../CHANGES.rst:522 ../../../CHANGES.rst:568 ../../../CHANGES.rst:616 +#: ../../../CHANGES.rst:672 ../../../CHANGES.rst:757 ../../../CHANGES.rst:789 +#: ../../[towncrier-fragments]:27 +msgid "Bugfixes" +msgstr "" + +#: ../../[towncrier-fragments]:29 +msgid "" +"Fixed polling startup when \"bot\" key is passed manually into dispatcher" +" workflow data `#1242 `_" +msgstr "" + +#: ../../[towncrier-fragments]:31 +msgid "Added codegen configuration for lost shortcuts:" +msgstr "" + +#: ../../[towncrier-fragments]:33 +msgid "ShippingQuery.answer" +msgstr "" + +#: ../../[towncrier-fragments]:34 +msgid "PreCheckoutQuery.answer" +msgstr "" + +#: ../../[towncrier-fragments]:35 +msgid "Message.delete_reply_markup" +msgstr "" + +#: ../../[towncrier-fragments]:36 +msgid "`#1244 `_" +msgstr "" + +#: ../../../CHANGES.rst:149 ../../../CHANGES.rst:300 ../../../CHANGES.rst:377 +#: ../../../CHANGES.rst:430 ../../../CHANGES.rst:481 ../../../CHANGES.rst:535 +#: ../../../CHANGES.rst:577 ../../../CHANGES.rst:623 ../../../CHANGES.rst:683 +#: ../../../CHANGES.rst:704 ../../../CHANGES.rst:727 ../../../CHANGES.rst:764 +#: ../../../CHANGES.rst:803 ../../[towncrier-fragments]:40 +msgid "Misc" +msgstr "" + +#: ../../[towncrier-fragments]:42 +msgid "" +"Reworked InputFile reading, removed :code:`__aiter__` method, added `bot:" +" Bot` argument to the :code:`.read(...)` method, so, from now " +"URLInputFile can be used without specifying bot instance. `#1238 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:46 +msgid "" +"Code-generated :code:`__init__` typehints in types and methods to make " +"IDE happy without additional pydantic plugin `#1245 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:21 +msgid "3.0.0b9 (2023-07-30)" +msgstr "" + +#: ../../../CHANGES.rst:26 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_member_updated.ChatMemberUpdated` to send " @@ -41,7 +119,7 @@ msgid "" "`_" msgstr "" -#: ../../[towncrier-fragments]:10 +#: ../../../CHANGES.rst:29 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_join_request.ChatJoinRequest` to make easier " @@ -49,21 +127,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:62 ../../../CHANGES.rst:248 ../../../CHANGES.rst:311 -#: ../../../CHANGES.rst:360 ../../../CHANGES.rst:421 ../../../CHANGES.rst:479 -#: ../../../CHANGES.rst:525 ../../../CHANGES.rst:573 ../../../CHANGES.rst:629 -#: ../../../CHANGES.rst:714 ../../../CHANGES.rst:746 -#: ../../[towncrier-fragments]:16 -msgid "Bugfixes" -msgstr "" - -#: ../../[towncrier-fragments]:18 +#: ../../../CHANGES.rst:37 msgid "" "Fixed bot assignment in the :code:`Message.send_copy` shortcut `#1232 " "`_" msgstr "" -#: ../../[towncrier-fragments]:20 +#: ../../../CHANGES.rst:39 msgid "" "Added model validation to remove UNSET before field validation. This " "change was necessary to correctly handle parse_mode where 'UNSET' is used" @@ -73,23 +143,26 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:90 ../../../CHANGES.rst:323 ../../../CHANGES.rst:373 -#: ../../../CHANGES.rst:753 ../../[towncrier-fragments]:28 +#: ../../../CHANGES.rst:44 +msgid "Updated pydantic to 2.1 with few bugfixes" +msgstr "" + +#: ../../../CHANGES.rst:48 ../../../CHANGES.rst:133 ../../../CHANGES.rst:366 +#: ../../../CHANGES.rst:416 ../../../CHANGES.rst:796 msgid "Improved Documentation" msgstr "" -#: ../../[towncrier-fragments]:30 +#: ../../../CHANGES.rst:50 msgid "" "Improved docs, added basic migration guide (will be expanded later) " "`#1143 `_" msgstr "" -#: ../../../CHANGES.rst:97 ../../../CHANGES.rst:380 -#: ../../[towncrier-fragments]:35 +#: ../../../CHANGES.rst:55 ../../../CHANGES.rst:140 ../../../CHANGES.rst:423 msgid "Deprecations and Removals" msgstr "" -#: ../../[towncrier-fragments]:37 +#: ../../../CHANGES.rst:57 msgid "" "Removed the use of the context instance (Bot.get_current) from all " "placements that were used previously. This is to avoid the use of the " @@ -97,78 +170,78 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:20 +#: ../../../CHANGES.rst:63 msgid "3.0.0b8 (2023-07-17)" msgstr "" -#: ../../../CHANGES.rst:25 +#: ../../../CHANGES.rst:68 msgid "" "Added possibility to use custom events in routers (If router does not " "support custom event it does not break and passes it to included " "routers). `#1147 `_" msgstr "" -#: ../../../CHANGES.rst:27 +#: ../../../CHANGES.rst:70 msgid "Added support for FSM in Forum topics." msgstr "" -#: ../../../CHANGES.rst:29 +#: ../../../CHANGES.rst:72 msgid "The strategy can be changed in dispatcher:" msgstr "" -#: ../../../CHANGES.rst:42 +#: ../../../CHANGES.rst:85 msgid "" "If you have implemented you own storages you should extend record key " "generation with new one attribute - :code:`thread_id`" msgstr "" -#: ../../../CHANGES.rst:44 +#: ../../../CHANGES.rst:87 msgid "`#1161 `_" msgstr "" -#: ../../../CHANGES.rst:45 +#: ../../../CHANGES.rst:88 msgid "Improved CallbackData serialization." msgstr "" -#: ../../../CHANGES.rst:47 +#: ../../../CHANGES.rst:90 msgid "Minimized UUID (hex without dashes)" msgstr "" -#: ../../../CHANGES.rst:48 +#: ../../../CHANGES.rst:91 msgid "Replaced bool values with int (true=1, false=0)" msgstr "" -#: ../../../CHANGES.rst:49 +#: ../../../CHANGES.rst:92 msgid "`#1163 `_" msgstr "" -#: ../../../CHANGES.rst:50 +#: ../../../CHANGES.rst:93 msgid "" "Added a tool to make text formatting flexible and easy. More details on " "the :ref:`corresponding documentation page ` `#1172 " "`_" msgstr "" -#: ../../../CHANGES.rst:53 +#: ../../../CHANGES.rst:96 msgid "" "Added :code:`X-Telegram-Bot-Api-Secret-Token` header check `#1173 " "`_" msgstr "" -#: ../../../CHANGES.rst:55 +#: ../../../CHANGES.rst:98 msgid "" "Made :code:`allowed_updates` list to revolve automatically in " "start_polling method if not set explicitly. `#1178 " "`_" msgstr "" -#: ../../../CHANGES.rst:57 +#: ../../../CHANGES.rst:100 msgid "" "Added possibility to pass custom headers to :class:`URLInputFile` object " "`#1191 `_" msgstr "" -#: ../../../CHANGES.rst:64 +#: ../../../CHANGES.rst:107 msgid "" "Change type of result in InlineQueryResult enum for " ":code:`InlineQueryResultCachedMpeg4Gif` and " @@ -176,51 +249,51 @@ msgid "" "documentation." msgstr "" -#: ../../../CHANGES.rst:67 +#: ../../../CHANGES.rst:110 msgid "" "Change regexp for entities parsing to more correct " "(:code:`InlineQueryResultType.yml`). `#1146 " "`_" msgstr "" -#: ../../../CHANGES.rst:69 +#: ../../../CHANGES.rst:112 msgid "" "Fixed signature of startup/shutdown events to include the " ":code:`**dispatcher.workflow_data` as the handler arguments. `#1155 " "`_" msgstr "" -#: ../../../CHANGES.rst:71 +#: ../../../CHANGES.rst:114 msgid "" "Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property " "`#1160 `_" msgstr "" -#: ../../../CHANGES.rst:73 +#: ../../../CHANGES.rst:116 msgid "" "Fixed compatibility with Python 3.8-3.9 (from previous release) `#1162 " "`_" msgstr "" -#: ../../../CHANGES.rst:75 +#: ../../../CHANGES.rst:118 msgid "" "Fixed the markdown spoiler parser. `#1176 " "`_" msgstr "" -#: ../../../CHANGES.rst:77 +#: ../../../CHANGES.rst:120 msgid "" "Fixed workflow data propagation `#1196 " "`_" msgstr "" -#: ../../../CHANGES.rst:79 +#: ../../../CHANGES.rst:122 msgid "" "Fixed the serialization error associated with nested subtypes like " "InputMedia, ChatMember, etc." msgstr "" -#: ../../../CHANGES.rst:82 +#: ../../../CHANGES.rst:125 msgid "" "The previously generated code resulted in an invalid schema under " "pydantic v2, which has stricter type parsing. Hence, subtypes without the" @@ -229,79 +302,71 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:92 +#: ../../../CHANGES.rst:135 msgid "" "Changed small grammar typos for :code:`upload_file` `#1133 " "`_" msgstr "" -#: ../../../CHANGES.rst:99 +#: ../../../CHANGES.rst:142 msgid "" "Removed text filter in due to is planned to remove this filter few " "versions ago." msgstr "" -#: ../../../CHANGES.rst:101 +#: ../../../CHANGES.rst:144 msgid "" "Use :code:`F.text` instead `#1170 " "`_" msgstr "" -#: ../../../CHANGES.rst:106 ../../../CHANGES.rst:257 ../../../CHANGES.rst:334 -#: ../../../CHANGES.rst:387 ../../../CHANGES.rst:438 ../../../CHANGES.rst:492 -#: ../../../CHANGES.rst:534 ../../../CHANGES.rst:580 ../../../CHANGES.rst:640 -#: ../../../CHANGES.rst:661 ../../../CHANGES.rst:684 ../../../CHANGES.rst:721 -#: ../../../CHANGES.rst:760 -msgid "Misc" -msgstr "" - -#: ../../../CHANGES.rst:108 +#: ../../../CHANGES.rst:151 msgid "" "Added full support of `Bot API 6.6 `_" msgstr "" -#: ../../../CHANGES.rst:112 +#: ../../../CHANGES.rst:155 msgid "" "Note that this issue has breaking changes described in in the Bot API " "changelog, this changes is not breaking in the API but breaking inside " "aiogram because Beta stage is not finished." msgstr "" -#: ../../../CHANGES.rst:115 +#: ../../../CHANGES.rst:158 msgid "`#1139 `_" msgstr "" -#: ../../../CHANGES.rst:116 +#: ../../../CHANGES.rst:159 msgid "" "Added full support of `Bot API 6.7 `_" msgstr "" -#: ../../../CHANGES.rst:120 +#: ../../../CHANGES.rst:163 msgid "" "Note that arguments *switch_pm_parameter* and *switch_pm_text* was " "deprecated and should be changed to *button* argument as described in API" " docs." msgstr "" -#: ../../../CHANGES.rst:122 +#: ../../../CHANGES.rst:165 msgid "`#1168 `_" msgstr "" -#: ../../../CHANGES.rst:123 +#: ../../../CHANGES.rst:166 msgid "Updated `Pydantic to V2 `_" msgstr "" -#: ../../../CHANGES.rst:127 +#: ../../../CHANGES.rst:170 msgid "Be careful, not all libraries is already updated to using V2" msgstr "" -#: ../../../CHANGES.rst:128 +#: ../../../CHANGES.rst:171 msgid "`#1202 `_" msgstr "" -#: ../../../CHANGES.rst:129 +#: ../../../CHANGES.rst:172 msgid "" "Added global defaults :code:`disable_web_page_preview` and " ":code:`protect_content` in addition to :code:`parse_mode` to the Bot " @@ -309,13 +374,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:132 +#: ../../../CHANGES.rst:175 msgid "" "Removed bot parameters from storages `#1144 " "`_" msgstr "" -#: ../../../CHANGES.rst:135 +#: ../../../CHANGES.rst:178 msgid "" "Replaced ContextVar's with a new feature called `Validation Context " "`_" @@ -323,69 +388,69 @@ msgid "" "handling the Bot instance within method shortcuts." msgstr "" -#: ../../../CHANGES.rst:140 +#: ../../../CHANGES.rst:183 msgid "**Breaking**: The 'bot' argument now is required in `URLInputFile`" msgstr "" -#: ../../../CHANGES.rst:141 +#: ../../../CHANGES.rst:184 msgid "`#1210 `_" msgstr "" -#: ../../../CHANGES.rst:142 +#: ../../../CHANGES.rst:185 msgid "Updated magic-filter with new features" msgstr "" -#: ../../../CHANGES.rst:144 +#: ../../../CHANGES.rst:187 msgid "Added hint for :code:`len(F)` error" msgstr "" -#: ../../../CHANGES.rst:145 +#: ../../../CHANGES.rst:188 msgid "Added not in operation" msgstr "" -#: ../../../CHANGES.rst:146 +#: ../../../CHANGES.rst:189 msgid "`#1221 `_" msgstr "" -#: ../../../CHANGES.rst:150 +#: ../../../CHANGES.rst:193 msgid "3.0.0b7 (2023-02-18)" msgstr "" -#: ../../../CHANGES.rst:154 +#: ../../../CHANGES.rst:197 msgid "" "Note that this version has incompatibility with Python 3.8-3.9 in case " "when you create an instance of Dispatcher outside of the any coroutine." msgstr "" -#: ../../../CHANGES.rst:156 +#: ../../../CHANGES.rst:199 msgid "Sorry for the inconvenience, it will be fixed in the next version." msgstr "" -#: ../../../CHANGES.rst:158 +#: ../../../CHANGES.rst:201 msgid "This code will not work:" msgstr "" -#: ../../../CHANGES.rst:170 +#: ../../../CHANGES.rst:213 msgid "But if you change it like this it should works as well:" msgstr "" -#: ../../../CHANGES.rst:188 +#: ../../../CHANGES.rst:231 msgid "Added missing shortcuts, new enums, reworked old stuff" msgstr "" -#: ../../../CHANGES.rst:190 +#: ../../../CHANGES.rst:233 msgid "" "**Breaking** All previously added enums is re-generated in new place - " "`aiogram.enums` instead of `aiogram.types`" msgstr "" -#: ../../../CHANGES.rst:208 +#: ../../../CHANGES.rst:251 msgid "" "**Added enums:** " ":class:`aiogram.enums.bot_command_scope_type.BotCommandScopeType`," msgstr "" -#: ../../../CHANGES.rst:194 +#: ../../../CHANGES.rst:237 msgid "" ":class:`aiogram.enums.chat_action.ChatAction`, " ":class:`aiogram.enums.chat_member_status.ChatMemberStatus`, " @@ -404,15 +469,15 @@ msgid "" ":class:`aiogram.enums.update_type.UpdateType`," msgstr "" -#: ../../../CHANGES.rst:210 +#: ../../../CHANGES.rst:253 msgid "**Added shortcuts**:" msgstr "" -#: ../../../CHANGES.rst:235 +#: ../../../CHANGES.rst:278 msgid "*Chat* :meth:`aiogram.types.chat.Chat.get_administrators`," msgstr "" -#: ../../../CHANGES.rst:213 +#: ../../../CHANGES.rst:256 msgid "" ":meth:`aiogram.types.chat.Chat.delete_message`, " ":meth:`aiogram.types.chat.Chat.revoke_invite_link`, " @@ -440,85 +505,85 @@ msgid "" ":meth:`aiogram.types.chat.Chat.set_photo`," msgstr "" -#: ../../../CHANGES.rst:237 +#: ../../../CHANGES.rst:280 msgid "*Sticker*: :meth:`aiogram.types.sticker.Sticker.set_position_in_set`," msgstr "" -#: ../../../CHANGES.rst:238 +#: ../../../CHANGES.rst:281 msgid ":meth:`aiogram.types.sticker.Sticker.delete_from_set`," msgstr "" -#: ../../../CHANGES.rst:239 +#: ../../../CHANGES.rst:282 msgid "*User*: :meth:`aiogram.types.user.User.get_profile_photos`" msgstr "" -#: ../../../CHANGES.rst:240 +#: ../../../CHANGES.rst:283 msgid "`#952 `_" msgstr "" -#: ../../../CHANGES.rst:241 +#: ../../../CHANGES.rst:284 msgid "" "Added :ref:`callback answer ` feature `#1091 " "`_" msgstr "" -#: ../../../CHANGES.rst:243 +#: ../../../CHANGES.rst:286 msgid "" "Added a method that allows you to compactly register routers `#1117 " "`_" msgstr "" -#: ../../../CHANGES.rst:250 +#: ../../../CHANGES.rst:293 msgid "" "Check status code when downloading file `#816 " "`_" msgstr "" -#: ../../../CHANGES.rst:252 +#: ../../../CHANGES.rst:295 msgid "" "Fixed `ignore_case` parameter in :obj:`aiogram.filters.command.Command` " "filter `#1106 `_" msgstr "" -#: ../../../CHANGES.rst:259 +#: ../../../CHANGES.rst:302 msgid "" "Added integration with new code-generator named `Butcher " "`_ `#1069 " "`_" msgstr "" -#: ../../../CHANGES.rst:261 +#: ../../../CHANGES.rst:304 msgid "" "Added full support of `Bot API 6.4 `_ `#1088 " "`_" msgstr "" -#: ../../../CHANGES.rst:263 +#: ../../../CHANGES.rst:306 msgid "" "Updated package metadata, moved build internals from Poetry to Hatch, " "added contributing guides. `#1095 " "`_" msgstr "" -#: ../../../CHANGES.rst:265 +#: ../../../CHANGES.rst:308 msgid "" "Added full support of `Bot API 6.5 `_" msgstr "" -#: ../../../CHANGES.rst:269 +#: ../../../CHANGES.rst:312 msgid "" "Note that :obj:`aiogram.types.chat_permissions.ChatPermissions` is " "updated without backward compatibility, so now this object has no " ":code:`can_send_media_messages` attribute" msgstr "" -#: ../../../CHANGES.rst:271 +#: ../../../CHANGES.rst:314 msgid "`#1112 `_" msgstr "" -#: ../../../CHANGES.rst:272 +#: ../../../CHANGES.rst:315 msgid "" "Replaced error :code:`TypeError: TelegramEventObserver.__call__() got an " "unexpected keyword argument ''` with a more understandable one for " @@ -526,13 +591,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:275 +#: ../../../CHANGES.rst:318 msgid "" "Added possibility to reply into webhook with files `#1120 " "`_" msgstr "" -#: ../../../CHANGES.rst:277 +#: ../../../CHANGES.rst:320 msgid "" "Reworked graceful shutdown. Added method to stop polling. Now polling " "started from dispatcher can be stopped by signals gracefully without " @@ -540,127 +605,127 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:283 +#: ../../../CHANGES.rst:326 msgid "3.0.0b6 (2022-11-18)" msgstr "" -#: ../../../CHANGES.rst:288 +#: ../../../CHANGES.rst:331 msgid "" "(again) Added possibility to combine filters with an *and*/*or* " "operations." msgstr "" -#: ../../../CHANGES.rst:290 +#: ../../../CHANGES.rst:333 msgid "" "Read more in \":ref:`Combining filters `\" " "documentation section `#1018 " "`_" msgstr "" -#: ../../../CHANGES.rst:292 +#: ../../../CHANGES.rst:335 msgid "Added following methods to ``Message`` class:" msgstr "" -#: ../../../CHANGES.rst:294 +#: ../../../CHANGES.rst:337 msgid ":code:`Message.forward(...)`" msgstr "" -#: ../../../CHANGES.rst:295 +#: ../../../CHANGES.rst:338 msgid ":code:`Message.edit_media(...)`" msgstr "" -#: ../../../CHANGES.rst:296 +#: ../../../CHANGES.rst:339 msgid ":code:`Message.edit_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:297 +#: ../../../CHANGES.rst:340 msgid ":code:`Message.stop_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:298 +#: ../../../CHANGES.rst:341 msgid ":code:`Message.pin(...)`" msgstr "" -#: ../../../CHANGES.rst:299 +#: ../../../CHANGES.rst:342 msgid ":code:`Message.unpin()`" msgstr "" -#: ../../../CHANGES.rst:300 +#: ../../../CHANGES.rst:343 msgid "`#1030 `_" msgstr "" -#: ../../../CHANGES.rst:301 +#: ../../../CHANGES.rst:344 msgid "Added following methods to :code:`User` class:" msgstr "" -#: ../../../CHANGES.rst:303 +#: ../../../CHANGES.rst:346 msgid ":code:`User.mention_markdown(...)`" msgstr "" -#: ../../../CHANGES.rst:304 +#: ../../../CHANGES.rst:347 msgid ":code:`User.mention_html(...)`" msgstr "" -#: ../../../CHANGES.rst:305 +#: ../../../CHANGES.rst:348 msgid "`#1049 `_" msgstr "" -#: ../../../CHANGES.rst:306 +#: ../../../CHANGES.rst:349 msgid "" "Added full support of `Bot API 6.3 `_ `#1057 " "`_" msgstr "" -#: ../../../CHANGES.rst:313 +#: ../../../CHANGES.rst:356 msgid "" "Fixed :code:`Message.send_invoice` and :code:`Message.reply_invoice`, " "added missing arguments `#1047 " "`_" msgstr "" -#: ../../../CHANGES.rst:315 +#: ../../../CHANGES.rst:358 msgid "Fixed copy and forward in:" msgstr "" -#: ../../../CHANGES.rst:317 +#: ../../../CHANGES.rst:360 msgid ":code:`Message.answer(...)`" msgstr "" -#: ../../../CHANGES.rst:318 +#: ../../../CHANGES.rst:361 msgid ":code:`Message.copy_to(...)`" msgstr "" -#: ../../../CHANGES.rst:319 +#: ../../../CHANGES.rst:362 msgid "`#1064 `_" msgstr "" -#: ../../../CHANGES.rst:325 +#: ../../../CHANGES.rst:368 msgid "" "Fixed UA translations in index.po `#1017 " "`_" msgstr "" -#: ../../../CHANGES.rst:327 +#: ../../../CHANGES.rst:370 msgid "" "Fix typehints for :code:`Message`, :code:`reply_media_group` and " ":code:`answer_media_group` methods `#1029 " "`_" msgstr "" -#: ../../../CHANGES.rst:329 +#: ../../../CHANGES.rst:372 msgid "" "Removed an old now non-working feature `#1060 " "`_" msgstr "" -#: ../../../CHANGES.rst:336 +#: ../../../CHANGES.rst:379 msgid "" "Enabled testing on Python 3.11 `#1044 " "`_" msgstr "" -#: ../../../CHANGES.rst:338 +#: ../../../CHANGES.rst:381 msgid "" "Added a mandatory dependency :code:`certifi` in due to in some cases on " "systems that doesn't have updated ca-certificates the requests to Bot API" @@ -669,23 +734,23 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:343 +#: ../../../CHANGES.rst:386 msgid "3.0.0b5 (2022-10-02)" msgstr "" -#: ../../../CHANGES.rst:348 +#: ../../../CHANGES.rst:391 msgid "" "Add PyPy support and run tests under PyPy `#985 " "`_" msgstr "" -#: ../../../CHANGES.rst:350 +#: ../../../CHANGES.rst:393 msgid "" "Added message text to aiogram exceptions representation `#988 " "`_" msgstr "" -#: ../../../CHANGES.rst:352 +#: ../../../CHANGES.rst:395 msgid "" "Added warning about using magic filter from `magic_filter` instead of " "`aiogram`'s ones. Is recommended to use `from aiogram import F` instead " @@ -693,61 +758,61 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:355 +#: ../../../CHANGES.rst:398 msgid "" "Added more detailed error when server response can't be deserialized. " "This feature will help to debug unexpected responses from the Server " "`#1014 `_" msgstr "" -#: ../../../CHANGES.rst:362 +#: ../../../CHANGES.rst:405 msgid "" "Reworked error event, introduced " ":class:`aiogram.types.error_event.ErrorEvent` object. `#898 " "`_" msgstr "" -#: ../../../CHANGES.rst:364 +#: ../../../CHANGES.rst:407 msgid "" "Fixed escaping markdown in `aiogram.utils.markdown` module `#903 " "`_" msgstr "" -#: ../../../CHANGES.rst:366 +#: ../../../CHANGES.rst:409 msgid "" "Fixed polling crash when Telegram Bot API raises HTTP 429 status-code. " "`#995 `_" msgstr "" -#: ../../../CHANGES.rst:368 +#: ../../../CHANGES.rst:411 msgid "" "Fixed empty mention in command parsing, now it will be None instead of an" " empty string `#1013 `_" msgstr "" -#: ../../../CHANGES.rst:375 +#: ../../../CHANGES.rst:418 msgid "" "Initialized Docs translation (added Ukrainian language) `#925 " "`_" msgstr "" -#: ../../../CHANGES.rst:382 +#: ../../../CHANGES.rst:425 msgid "" "Removed filters factory as described in corresponding issue. `#942 " "`_" msgstr "" -#: ../../../CHANGES.rst:389 +#: ../../../CHANGES.rst:432 msgid "" "Now Router/Dispatcher accepts only keyword arguments. `#982 " "`_" msgstr "" -#: ../../../CHANGES.rst:394 +#: ../../../CHANGES.rst:437 msgid "3.0.0b4 (2022-08-14)" msgstr "" -#: ../../../CHANGES.rst:399 +#: ../../../CHANGES.rst:442 msgid "" "Add class helper ChatAction for constants that Telegram BotAPI uses in " "sendChatAction request. In my opinion, this will help users and will also" @@ -755,198 +820,198 @@ msgid "" "\"ChatActions\". `#803 `_" msgstr "" -#: ../../../CHANGES.rst:403 +#: ../../../CHANGES.rst:446 msgid "Added possibility to combine filters or invert result" msgstr "" -#: ../../../CHANGES.rst:405 +#: ../../../CHANGES.rst:448 msgid "Example:" msgstr "" -#: ../../../CHANGES.rst:413 +#: ../../../CHANGES.rst:456 msgid "`#894 `_" msgstr "" -#: ../../../CHANGES.rst:414 +#: ../../../CHANGES.rst:457 msgid "" "Fixed type hints for redis TTL params. `#922 " "`_" msgstr "" -#: ../../../CHANGES.rst:416 +#: ../../../CHANGES.rst:459 msgid "" "Added `full_name` shortcut for `Chat` object `#929 " "`_" msgstr "" -#: ../../../CHANGES.rst:423 +#: ../../../CHANGES.rst:466 msgid "" "Fixed false-positive coercing of Union types in API methods `#901 " "`_" msgstr "" -#: ../../../CHANGES.rst:425 +#: ../../../CHANGES.rst:468 msgid "Added 3 missing content types:" msgstr "" -#: ../../../CHANGES.rst:427 +#: ../../../CHANGES.rst:470 msgid "proximity_alert_triggered" msgstr "" -#: ../../../CHANGES.rst:428 +#: ../../../CHANGES.rst:471 msgid "supergroup_chat_created" msgstr "" -#: ../../../CHANGES.rst:429 +#: ../../../CHANGES.rst:472 msgid "channel_chat_created" msgstr "" -#: ../../../CHANGES.rst:430 +#: ../../../CHANGES.rst:473 msgid "`#906 `_" msgstr "" -#: ../../../CHANGES.rst:431 +#: ../../../CHANGES.rst:474 msgid "" "Fixed the ability to compare the state, now comparison to copy of the " "state will return `True`. `#927 " "`_" msgstr "" -#: ../../../CHANGES.rst:433 +#: ../../../CHANGES.rst:476 msgid "" "Fixed default lock kwargs in RedisEventIsolation. `#972 " "`_" msgstr "" -#: ../../../CHANGES.rst:440 +#: ../../../CHANGES.rst:483 msgid "" "Restrict including routers with strings `#896 " "`_" msgstr "" -#: ../../../CHANGES.rst:442 +#: ../../../CHANGES.rst:485 msgid "" "Changed CommandPatterType to CommandPatternType in " "`aiogram/dispatcher/filters/command.py` `#907 " "`_" msgstr "" -#: ../../../CHANGES.rst:444 +#: ../../../CHANGES.rst:487 msgid "" "Added full support of `Bot API 6.1 `_ `#936 " "`_" msgstr "" -#: ../../../CHANGES.rst:446 +#: ../../../CHANGES.rst:489 msgid "**Breaking!** More flat project structure" msgstr "" -#: ../../../CHANGES.rst:448 +#: ../../../CHANGES.rst:491 msgid "These packages was moved, imports in your code should be fixed:" msgstr "" -#: ../../../CHANGES.rst:450 +#: ../../../CHANGES.rst:493 msgid ":code:`aiogram.dispatcher.filters` -> :code:`aiogram.filters`" msgstr "" -#: ../../../CHANGES.rst:451 +#: ../../../CHANGES.rst:494 msgid ":code:`aiogram.dispatcher.fsm` -> :code:`aiogram.fsm`" msgstr "" -#: ../../../CHANGES.rst:452 +#: ../../../CHANGES.rst:495 msgid ":code:`aiogram.dispatcher.handler` -> :code:`aiogram.handler`" msgstr "" -#: ../../../CHANGES.rst:453 +#: ../../../CHANGES.rst:496 msgid ":code:`aiogram.dispatcher.webhook` -> :code:`aiogram.webhook`" msgstr "" -#: ../../../CHANGES.rst:454 +#: ../../../CHANGES.rst:497 msgid "" ":code:`aiogram.dispatcher.flags/*` -> :code:`aiogram.dispatcher.flags` " "(single module instead of package)" msgstr "" -#: ../../../CHANGES.rst:455 +#: ../../../CHANGES.rst:498 msgid "`#938 `_" msgstr "" -#: ../../../CHANGES.rst:456 +#: ../../../CHANGES.rst:499 msgid "" "Removed deprecated :code:`router._handler` and " ":code:`router.register__handler` methods. `#941 " "`_" msgstr "" -#: ../../../CHANGES.rst:458 +#: ../../../CHANGES.rst:501 msgid "" "Deprecated filters factory. It will be removed in next Beta (3.0b5) `#942" " `_" msgstr "" -#: ../../../CHANGES.rst:460 +#: ../../../CHANGES.rst:503 msgid "" "`MessageEntity` method `get_text` was removed and `extract` was renamed " "to `extract_from` `#944 `_" msgstr "" -#: ../../../CHANGES.rst:462 +#: ../../../CHANGES.rst:505 msgid "" "Added full support of `Bot API 6.2 `_ `#975 " "`_" msgstr "" -#: ../../../CHANGES.rst:467 +#: ../../../CHANGES.rst:510 msgid "3.0.0b3 (2022-04-19)" msgstr "" -#: ../../../CHANGES.rst:472 +#: ../../../CHANGES.rst:515 msgid "" "Added possibility to get command magic result as handler argument `#889 " "`_" msgstr "" -#: ../../../CHANGES.rst:474 +#: ../../../CHANGES.rst:517 msgid "" "Added full support of `Telegram Bot API 6.0 " "`_ `#890 " "`_" msgstr "" -#: ../../../CHANGES.rst:481 +#: ../../../CHANGES.rst:524 msgid "" "Fixed I18n lazy-proxy. Disabled caching. `#839 " "`_" msgstr "" -#: ../../../CHANGES.rst:483 +#: ../../../CHANGES.rst:526 msgid "" "Added parsing of spoiler message entity `#865 " "`_" msgstr "" -#: ../../../CHANGES.rst:485 +#: ../../../CHANGES.rst:528 msgid "" "Fixed default `parse_mode` for `Message.copy_to()` method. `#876 " "`_" msgstr "" -#: ../../../CHANGES.rst:487 +#: ../../../CHANGES.rst:530 msgid "" "Fixed CallbackData factory parsing IntEnum's `#885 " "`_" msgstr "" -#: ../../../CHANGES.rst:494 +#: ../../../CHANGES.rst:537 msgid "" "Added automated check that pull-request adds a changes description to " "**CHANGES** directory `#873 " "`_" msgstr "" -#: ../../../CHANGES.rst:496 +#: ../../../CHANGES.rst:539 msgid "" "Changed :code:`Message.html_text` and :code:`Message.md_text` attributes " "behaviour when message has no text. The empty string will be used instead" @@ -954,14 +1019,14 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:499 +#: ../../../CHANGES.rst:542 msgid "" "Used `redis-py` instead of `aioredis` package in due to this packages was" " merged into single one `#882 " "`_" msgstr "" -#: ../../../CHANGES.rst:501 +#: ../../../CHANGES.rst:544 msgid "" "Solved common naming problem with middlewares that confusing too much " "developers - now you can't see the `middleware` and `middlewares` " @@ -970,113 +1035,113 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:508 +#: ../../../CHANGES.rst:551 msgid "3.0.0b2 (2022-02-19)" msgstr "" -#: ../../../CHANGES.rst:513 +#: ../../../CHANGES.rst:556 msgid "" "Added possibility to pass additional arguments into the aiohttp webhook " "handler to use this arguments inside handlers as the same as it possible " "in polling mode. `#785 `_" msgstr "" -#: ../../../CHANGES.rst:516 +#: ../../../CHANGES.rst:559 msgid "" "Added possibility to add handler flags via decorator (like `pytest.mark` " "decorator but `aiogram.flags`) `#836 " "`_" msgstr "" -#: ../../../CHANGES.rst:518 +#: ../../../CHANGES.rst:561 msgid "" "Added :code:`ChatActionSender` utility to automatically sends chat action" " while long process is running." msgstr "" -#: ../../../CHANGES.rst:520 +#: ../../../CHANGES.rst:563 msgid "" "It also can be used as message middleware and can be customized via " ":code:`chat_action` flag. `#837 " "`_" msgstr "" -#: ../../../CHANGES.rst:527 +#: ../../../CHANGES.rst:570 msgid "" "Fixed unexpected behavior of sequences in the StateFilter. `#791 " "`_" msgstr "" -#: ../../../CHANGES.rst:529 +#: ../../../CHANGES.rst:572 msgid "" "Fixed exceptions filters `#827 " "`_" msgstr "" -#: ../../../CHANGES.rst:536 +#: ../../../CHANGES.rst:579 msgid "" "Logger name for processing events is changed to :code:`aiogram.events`. " "`#830 `_" msgstr "" -#: ../../../CHANGES.rst:538 +#: ../../../CHANGES.rst:581 msgid "" "Added full support of Telegram Bot API 5.6 and 5.7 `#835 " "`_" msgstr "" -#: ../../../CHANGES.rst:540 +#: ../../../CHANGES.rst:583 msgid "" "**BREAKING** Events isolation mechanism is moved from FSM storages to " "standalone managers `#838 " "`_" msgstr "" -#: ../../../CHANGES.rst:546 +#: ../../../CHANGES.rst:589 msgid "3.0.0b1 (2021-12-12)" msgstr "" -#: ../../../CHANGES.rst:551 +#: ../../../CHANGES.rst:594 msgid "Added new custom operation for MagicFilter named :code:`as_`" msgstr "" -#: ../../../CHANGES.rst:553 +#: ../../../CHANGES.rst:596 msgid "Now you can use it to get magic filter result as handler argument" msgstr "" -#: ../../../CHANGES.rst:569 +#: ../../../CHANGES.rst:612 msgid "`#759 `_" msgstr "" -#: ../../../CHANGES.rst:575 +#: ../../../CHANGES.rst:618 msgid "" "Fixed: Missing :code:`ChatMemberHandler` import in " ":code:`aiogram/dispatcher/handler` `#751 " "`_" msgstr "" -#: ../../../CHANGES.rst:582 +#: ../../../CHANGES.rst:625 msgid "" "Check :code:`destiny` in case of no :code:`with_destiny` enabled in " "RedisStorage key builder `#776 " "`_" msgstr "" -#: ../../../CHANGES.rst:584 +#: ../../../CHANGES.rst:627 msgid "" "Added full support of `Bot API 5.5 `_ `#777 " "`_" msgstr "" -#: ../../../CHANGES.rst:586 +#: ../../../CHANGES.rst:629 msgid "" "Stop using feature from #336. From now settings of client-session should " "be placed as initializer arguments instead of changing instance " "attributes. `#778 `_" msgstr "" -#: ../../../CHANGES.rst:588 +#: ../../../CHANGES.rst:631 msgid "" "Make TelegramAPIServer files wrapper in local mode bi-directional " "(server-client, client-server) Now you can convert local path to server " @@ -1084,11 +1149,11 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:594 +#: ../../../CHANGES.rst:637 msgid "3.0.0a18 (2021-11-10)" msgstr "" -#: ../../../CHANGES.rst:599 +#: ../../../CHANGES.rst:642 msgid "" "Breaking: Changed the signature of the session middlewares Breaking: " "Renamed AiohttpSession.make_request method parameter from call to method " @@ -1096,258 +1161,258 @@ msgid "" "outgoing requests `#716 `_" msgstr "" -#: ../../../CHANGES.rst:603 +#: ../../../CHANGES.rst:646 msgid "" "Improved description of filters resolving error. For example when you try" " to pass wrong type of argument to the filter but don't know why filter " "is not resolved now you can get error like this:" msgstr "" -#: ../../../CHANGES.rst:613 +#: ../../../CHANGES.rst:656 msgid "`#717 `_" msgstr "" -#: ../../../CHANGES.rst:614 +#: ../../../CHANGES.rst:657 msgid "" "**Breaking internal API change** Reworked FSM Storage record keys " "propagation `#723 `_" msgstr "" -#: ../../../CHANGES.rst:617 +#: ../../../CHANGES.rst:660 msgid "" "Implemented new filter named :code:`MagicData(magic_data)` that helps to " "filter event by data from middlewares or other filters" msgstr "" -#: ../../../CHANGES.rst:619 +#: ../../../CHANGES.rst:662 msgid "" "For example your bot is running with argument named :code:`config` that " "contains the application config then you can filter event by value from " "this config:" msgstr "" -#: ../../../CHANGES.rst:625 +#: ../../../CHANGES.rst:668 msgid "`#724 `_" msgstr "" -#: ../../../CHANGES.rst:631 +#: ../../../CHANGES.rst:674 msgid "" "Fixed I18n context inside error handlers `#726 " "`_" msgstr "" -#: ../../../CHANGES.rst:633 +#: ../../../CHANGES.rst:676 msgid "" "Fixed bot session closing before emit shutdown `#734 " "`_" msgstr "" -#: ../../../CHANGES.rst:635 +#: ../../../CHANGES.rst:678 msgid "" "Fixed: bound filter resolving does not require children routers `#736 " "`_" msgstr "" -#: ../../../CHANGES.rst:642 +#: ../../../CHANGES.rst:685 msgid "" "Enabled testing on Python 3.10 Removed `async_lru` dependency (is " "incompatible with Python 3.10) and replaced usage with protected property" " `#719 `_" msgstr "" -#: ../../../CHANGES.rst:645 +#: ../../../CHANGES.rst:688 msgid "" "Converted README.md to README.rst and use it as base file for docs `#725 " "`_" msgstr "" -#: ../../../CHANGES.rst:647 +#: ../../../CHANGES.rst:690 msgid "Rework filters resolving:" msgstr "" -#: ../../../CHANGES.rst:649 +#: ../../../CHANGES.rst:692 msgid "Automatically apply Bound Filters with default values to handlers" msgstr "" -#: ../../../CHANGES.rst:650 +#: ../../../CHANGES.rst:693 msgid "Fix data transfer from parent to included routers filters" msgstr "" -#: ../../../CHANGES.rst:651 +#: ../../../CHANGES.rst:694 msgid "`#727 `_" msgstr "" -#: ../../../CHANGES.rst:652 +#: ../../../CHANGES.rst:695 msgid "" "Added full support of Bot API 5.4 https://core.telegram.org/bots/api-" "changelog#november-5-2021 `#744 " "`_" msgstr "" -#: ../../../CHANGES.rst:658 +#: ../../../CHANGES.rst:701 msgid "3.0.0a17 (2021-09-24)" msgstr "" -#: ../../../CHANGES.rst:663 +#: ../../../CHANGES.rst:706 msgid "" "Added :code:`html_text` and :code:`md_text` to Message object `#708 " "`_" msgstr "" -#: ../../../CHANGES.rst:665 +#: ../../../CHANGES.rst:708 msgid "" "Refactored I18n, added context managers for I18n engine and current " "locale `#709 `_" msgstr "" -#: ../../../CHANGES.rst:670 +#: ../../../CHANGES.rst:713 msgid "3.0.0a16 (2021-09-22)" msgstr "" -#: ../../../CHANGES.rst:675 +#: ../../../CHANGES.rst:718 msgid "Added support of local Bot API server files downloading" msgstr "" -#: ../../../CHANGES.rst:677 +#: ../../../CHANGES.rst:720 msgid "" "When Local API is enabled files can be downloaded via " "`bot.download`/`bot.download_file` methods. `#698 " "`_" msgstr "" -#: ../../../CHANGES.rst:679 +#: ../../../CHANGES.rst:722 msgid "" "Implemented I18n & L10n support `#701 " "`_" msgstr "" -#: ../../../CHANGES.rst:686 +#: ../../../CHANGES.rst:729 msgid "" "Covered by tests and docs KeyboardBuilder util `#699 " "`_" msgstr "" -#: ../../../CHANGES.rst:688 +#: ../../../CHANGES.rst:731 msgid "**Breaking!!!**. Refactored and renamed exceptions." msgstr "" -#: ../../../CHANGES.rst:690 +#: ../../../CHANGES.rst:733 msgid "" "Exceptions module was moved from :code:`aiogram.utils.exceptions` to " ":code:`aiogram.exceptions`" msgstr "" -#: ../../../CHANGES.rst:691 +#: ../../../CHANGES.rst:734 msgid "Added prefix `Telegram` for all error classes" msgstr "" -#: ../../../CHANGES.rst:692 +#: ../../../CHANGES.rst:735 msgid "`#700 `_" msgstr "" -#: ../../../CHANGES.rst:693 +#: ../../../CHANGES.rst:736 msgid "" "Replaced all :code:`pragma: no cover` marks via global " ":code:`.coveragerc` config `#702 " "`_" msgstr "" -#: ../../../CHANGES.rst:695 +#: ../../../CHANGES.rst:738 msgid "Updated dependencies." msgstr "" -#: ../../../CHANGES.rst:697 +#: ../../../CHANGES.rst:740 msgid "" "**Breaking for framework developers** Now all optional dependencies " "should be installed as extra: `poetry install -E fast -E redis -E proxy " "-E i18n -E docs` `#703 `_" msgstr "" -#: ../../../CHANGES.rst:703 +#: ../../../CHANGES.rst:746 msgid "3.0.0a15 (2021-09-10)" msgstr "" -#: ../../../CHANGES.rst:708 +#: ../../../CHANGES.rst:751 msgid "" "Ability to iterate over all states in StatesGroup. Aiogram already had in" " check for states group so this is relative feature. `#666 " "`_" msgstr "" -#: ../../../CHANGES.rst:716 +#: ../../../CHANGES.rst:759 msgid "" "Fixed incorrect type checking in the " ":class:`aiogram.utils.keyboard.KeyboardBuilder` `#674 " "`_" msgstr "" -#: ../../../CHANGES.rst:723 +#: ../../../CHANGES.rst:766 msgid "" "Disable ContentType filter by default `#668 " "`_" msgstr "" -#: ../../../CHANGES.rst:725 +#: ../../../CHANGES.rst:768 msgid "" "Moved update type detection from Dispatcher to Update object `#669 " "`_" msgstr "" -#: ../../../CHANGES.rst:727 +#: ../../../CHANGES.rst:770 msgid "" "Updated **pre-commit** config `#681 " "`_" msgstr "" -#: ../../../CHANGES.rst:729 +#: ../../../CHANGES.rst:772 msgid "" "Reworked **handlers_in_use** util. Function moved to Router as method " "**.resolve_used_update_types()** `#682 " "`_" msgstr "" -#: ../../../CHANGES.rst:734 +#: ../../../CHANGES.rst:777 msgid "3.0.0a14 (2021-08-17)" msgstr "" -#: ../../../CHANGES.rst:739 +#: ../../../CHANGES.rst:782 msgid "" "add aliases for edit/delete reply markup to Message `#662 " "`_" msgstr "" -#: ../../../CHANGES.rst:741 +#: ../../../CHANGES.rst:784 msgid "" "Reworked outer middleware chain. Prevent to call many times the outer " "middleware for each nested router `#664 " "`_" msgstr "" -#: ../../../CHANGES.rst:748 +#: ../../../CHANGES.rst:791 msgid "" "Prepare parse mode for InputMessageContent in AnswerInlineQuery method " "`#660 `_" msgstr "" -#: ../../../CHANGES.rst:755 +#: ../../../CHANGES.rst:798 msgid "" "Added integration with :code:`towncrier` `#602 " "`_" msgstr "" -#: ../../../CHANGES.rst:762 +#: ../../../CHANGES.rst:805 msgid "" "Added `.editorconfig` `#650 " "`_" msgstr "" -#: ../../../CHANGES.rst:764 +#: ../../../CHANGES.rst:807 msgid "" "Redis storage speedup globals `#651 " "`_" msgstr "" -#: ../../../CHANGES.rst:766 +#: ../../../CHANGES.rst:809 msgid "" "add allow_sending_without_reply param to Message reply aliases `#663 " "`_" @@ -2972,3 +3037,6 @@ msgstr "" #~ "warning was added FastAPI still not " #~ "support V2)" #~ msgstr "" + +#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/deployment/index.po b/docs/locale/en/LC_MESSAGES/deployment/index.po new file mode 100644 index 00000000..e5fe6ce8 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/deployment/index.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../deployment/index.rst:3 +msgid "Deployment" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/index.po b/docs/locale/en/LC_MESSAGES/dispatcher/index.po index 3d9f47a4..1f0a0e02 100644 --- a/docs/locale/en/LC_MESSAGES/dispatcher/index.po +++ b/docs/locale/en/LC_MESSAGES/dispatcher/index.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/index.rst:3 msgid "Handling events" @@ -54,3 +54,23 @@ msgid "" "Dispatcher is also separated into two entities - Router and Dispatcher. " "Dispatcher is subclass of router and should be always is root router." msgstr "" + +#: ../../dispatcher/index.rst:18 +msgid "Telegram supports two ways of receiving updates:" +msgstr "" + +#: ../../dispatcher/index.rst:20 +msgid "" +":ref:`Webhook ` - you should configure your web server to " +"receive updates from Telegram;" +msgstr "" + +#: ../../dispatcher/index.rst:21 +msgid "" +":ref:`Long polling ` - you should request updates from " +"Telegram." +msgstr "" + +#: ../../dispatcher/index.rst:23 +msgid "So, you can use both of them with *aiogram*." +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po b/docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po new file mode 100644 index 00000000..d5581be5 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po @@ -0,0 +1,62 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/long_polling.rst:5 +msgid "Long-polling" +msgstr "" + +#: ../../dispatcher/long_polling.rst:7 +msgid "" +"Long-polling is a technology that allows a Telegram server to send " +"updates in case when you don't have dedicated IP address or port to " +"receive webhooks for example on a developer machine." +msgstr "" + +#: ../../dispatcher/long_polling.rst:11 +msgid "" +"To use long-polling mode you should use " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.start_polling` or " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.run_polling` methods." +msgstr "" + +#: ../../dispatcher/long_polling.rst:16 +msgid "" +"You can use polling from only one polling process per single Bot token, " +"in other case Telegram server will return an error." +msgstr "" + +#: ../../dispatcher/long_polling.rst:21 +msgid "" +"If you will need to scale your bot, you should use webhooks instead of " +"long-polling." +msgstr "" + +#: ../../dispatcher/long_polling.rst:25 +msgid "If you will use multibot mode, you should use webhook mode for all bots." +msgstr "" + +#: ../../dispatcher/long_polling.rst:28 +msgid "Example" +msgstr "" + +#: ../../dispatcher/long_polling.rst:30 +msgid "" +"This example will show you how to create simple echo bot based on long-" +"polling." +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po b/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po new file mode 100644 index 00000000..b5cbbcad --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po @@ -0,0 +1,303 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/webhook.rst:5 +msgid "Webhook" +msgstr "" + +#: ../../dispatcher/webhook.rst:7 +msgid "" +"Telegram Bot API supports webhook. If you set webhook for your bot, " +"Telegram will send updates to the specified url. You can use " +":meth:`aiogram.methods.set_webhook.SetWebhook` method to specify a url " +"and receive incoming updates on it." +msgstr "" + +#: ../../dispatcher/webhook.rst:14 +msgid "If you use webhook, you can't use long polling at the same time." +msgstr "" + +#: ../../dispatcher/webhook.rst:16 +msgid "" +"Before start i'll recommend you to read `official Telegram's " +"documentation about webhook `_" +msgstr "" + +#: ../../dispatcher/webhook.rst:18 +msgid "After you read it, you can start to read this section." +msgstr "" + +#: ../../dispatcher/webhook.rst:20 +msgid "" +"Generally to use webhook with aiogram you should use any async web " +"framework. Buy out of the box aiogram has an aiohttp integration, so " +"we'll use it." +msgstr "" + +#: ../../dispatcher/webhook.rst:25 +msgid "" +"You can use any async web framework you want, but you should write your " +"own integration if you don't use aiohttp." +msgstr "" + +#: ../../dispatcher/webhook.rst:29 +msgid "aiohttp integration" +msgstr "" + +#: ../../dispatcher/webhook.rst:31 +msgid "Out of the box aiogram has aiohttp integration, so you can use it." +msgstr "" + +#: ../../dispatcher/webhook.rst:33 +msgid "" +"Here is available few ways to do it using different implementations of " +"the webhook controller:" +msgstr "" + +#: ../../dispatcher/webhook.rst:35 +msgid "" +":class:`aiogram.webhook.aiohttp_server.BaseRequestHandler` - Abstract " +"class for aiohttp webhook controller" +msgstr "" + +#: ../../dispatcher/webhook.rst:36 +msgid "" +":class:`aiogram.webhook.aiohttp_server.SimpleRequestHandler` - Simple " +"webhook controller, uses single Bot instance" +msgstr "" + +#: ../../dispatcher/webhook.rst:37 +msgid "" +":class:`aiogram.webhook.aiohttp_server.TokenBasedRequestHandler` - Token" +" based webhook controller, uses multiple Bot instances and tokens" +msgstr "" + +#: ../../dispatcher/webhook.rst:39 +msgid "You can use it as is or inherit from it and override some methods." +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:1 of +msgid "" +"Base handler that helps to handle incoming request from aiohttp and " +"propagate it to the Dispatcher" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__ +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__ +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__ +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.ip_filter_middleware of +msgid "Parameters" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:4 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:3 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:9 of +msgid "instance of :class:`aiogram.dispatcher.dispatcher.Dispatcher`" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:5 of +msgid "" +"immediately responds to the Telegram instead of a waiting end of a " +"handler process" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:1 of +msgid "Register route and shutdown callback" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:3 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:3 of +msgid "instance of aiohttp Application" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:4 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:4 of +msgid "route path" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:1 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:1 of +msgid "This method should be implemented in subclasses of this class." +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:3 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:3 of +msgid "Resolve Bot instance from request." +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.ip_filter_middleware of +msgid "Returns" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:6 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:6 of +msgid "Bot instance" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:1 of +msgid "Handler for single Bot instance" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:4 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:10 of +msgid "" +"immediately responds to the Telegram instead of a waiting end of handler " +"process" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:6 of +msgid "instance of :class:`aiogram.client.bot.Bot`" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.close:1 of +msgid "Close bot session" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:1 of +msgid "" +"Handler that supports multiple bots the context will be resolved from " +"path variable 'bot_token'" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:6 of +msgid "" +"This handler is not recommended in due to token is available in URL and " +"can be logged by reverse proxy server or other middleware." +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:12 of +msgid "kwargs that will be passed to new Bot instance" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:1 of +msgid "Validate path, register route and shutdown callback" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot:1 of +msgid "Get bot token from a path and create or get from cache Bot instance" +msgstr "" + +#: ../../dispatcher/webhook.rst:51 +msgid "Security" +msgstr "" + +#: ../../dispatcher/webhook.rst:53 +msgid "" +"Telegram supports two methods to verify incoming requests that they are " +"from Telegram:" +msgstr "" + +#: ../../dispatcher/webhook.rst:56 +msgid "Using a secret token" +msgstr "" + +#: ../../dispatcher/webhook.rst:58 +msgid "" +"When you set webhook, you can specify a secret token and then use it to " +"verify incoming requests." +msgstr "" + +#: ../../dispatcher/webhook.rst:61 +msgid "Using IP filtering" +msgstr "" + +#: ../../dispatcher/webhook.rst:63 +msgid "" +"You can specify a list of IP addresses from which you expect incoming " +"requests, and then use it to verify incoming requests." +msgstr "" + +#: ../../dispatcher/webhook.rst:65 +msgid "" +"It can be acy using firewall rules or nginx configuration or middleware " +"on application level." +msgstr "" + +#: ../../dispatcher/webhook.rst:67 +msgid "" +"So, aiogram has an implementation of the IP filtering middleware for " +"aiohttp." +msgstr "" + +#: ../../dispatcher/webhook.rst:75 +msgid "Examples" +msgstr "" + +#: ../../dispatcher/webhook.rst:78 +msgid "Behind reverse proxy" +msgstr "" + +#: ../../dispatcher/webhook.rst:80 +msgid "" +"In this example we'll use aiohttp as web framework and nginx as reverse " +"proxy." +msgstr "" + +#: ../../dispatcher/webhook.rst:84 +msgid "" +"When you use nginx as reverse proxy, you should set `proxy_pass` to your " +"aiohttp server address." +msgstr "" + +#: ../../dispatcher/webhook.rst:98 +msgid "Without reverse proxy (not recommended)" +msgstr "" + +#: ../../dispatcher/webhook.rst:100 +msgid "" +"In case you want can't use reverse proxy, you can use aiohttp's ssl " +"context." +msgstr "" + +#: ../../dispatcher/webhook.rst:102 +msgid "Also this example contains usage with self-signed certificate." +msgstr "" + +#: ../../dispatcher/webhook.rst:108 +msgid "With using other web framework" +msgstr "" + +#: ../../dispatcher/webhook.rst:110 +msgid "" +"You can pass incoming request to aiogram's webhook controller from any " +"web framework you want." +msgstr "" + +#: ../../dispatcher/webhook.rst:112 +msgid "" +"Read more about it in " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_webhook_update` or " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_update` methods." +msgstr "" + +#: ../../dispatcher/webhook.rst:123 +msgid "" +"If you want to use reply into webhook, you should check that result of " +"the :code:`feed_update` methods is an instance of API method and build " +":code:`multipart/form-data` or :code:`application/json` response body " +"manually." +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/keyboard.po b/docs/locale/en/LC_MESSAGES/utils/keyboard.po index f550df18..ea00376e 100644 --- a/docs/locale/en/LC_MESSAGES/utils/keyboard.po +++ b/docs/locale/en/LC_MESSAGES/utils/keyboard.po @@ -8,58 +8,104 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-07 23:24+0200\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" -#: ../../utils/keyboard.rst:3 +#: ../../utils/keyboard.rst:4 msgid "Keyboard builder" msgstr "" -#: ../../utils/keyboard.rst:5 +#: ../../utils/keyboard.rst:6 msgid "Keyboard builder helps to dynamically generate markup." msgstr "" -#: ../../utils/keyboard.rst:9 +#: ../../utils/keyboard.rst:10 msgid "" "Note that if you have static markup, it's best to define it explicitly " "rather than using builder, but if you have dynamic markup configuration, " "feel free to use builder as you wish." msgstr "" -#: ../../utils/keyboard.rst:14 +#: ../../utils/keyboard.rst:15 msgid "Usage example" msgstr "" -#: ../../utils/keyboard.rst:29 -msgid "Base builder" +#: ../../utils/keyboard.rst:17 +msgid "For example you want to generate inline keyboard with 10 buttons" msgstr "" -#: aiogram.utils.keyboard.ReplyKeyboardBuilder:1 of -msgid "Reply keyboard builder inherits all methods from generic builder" +#: ../../utils/keyboard.rst:27 +msgid "" +"then adjust this buttons to some grid, for example first line will have 3" +" buttons, the next lines will have 2 buttons" +msgstr "" + +#: ../../utils/keyboard.rst:33 +msgid "also you can attach another builder to this one" +msgstr "" + +#: ../../utils/keyboard.rst:40 +msgid "or you can attach some already generated markup" +msgstr "" + +#: ../../utils/keyboard.rst:47 +msgid "and finally you can export this markup to use it in your message" +msgstr "" + +#: ../../utils/keyboard.rst:53 +msgid "Reply keyboard builder has the same interface" +msgstr "" + +#: ../../utils/keyboard.rst:57 +msgid "" +"Note that you can't attach reply keyboard builder to inline keyboard " +"builder and vice versa" +msgstr "" + +#: ../../utils/keyboard.rst:61 +msgid "Inline Keyboard" +msgstr "" + +#: aiogram.utils.keyboard.InlineKeyboardBuilder:1 of +msgid "Inline keyboard builder inherits all methods from generic builder" +msgstr "" + +#: ../../utils/keyboard.rst:69 +msgid "Add new inline button to markup" +msgstr "" + +#: ../../utils/keyboard.rst:74 +msgid "Construct an InlineKeyboardMarkup" msgstr "" #: aiogram.utils.keyboard.KeyboardBuilder.add:1 of msgid "Add one or many buttons to markup." msgstr "" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup #: aiogram.utils.keyboard.KeyboardBuilder.add #: aiogram.utils.keyboard.KeyboardBuilder.adjust -#: aiogram.utils.keyboard.KeyboardBuilder.row of +#: aiogram.utils.keyboard.KeyboardBuilder.row +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup of msgid "Parameters" msgstr "" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.buttons +#: aiogram.utils.keyboard.InlineKeyboardBuilder.copy +#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup #: aiogram.utils.keyboard.KeyboardBuilder.add #: aiogram.utils.keyboard.KeyboardBuilder.adjust #: aiogram.utils.keyboard.KeyboardBuilder.export #: aiogram.utils.keyboard.KeyboardBuilder.row #: aiogram.utils.keyboard.ReplyKeyboardBuilder.buttons -#: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy of +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup of msgid "Returns" msgstr "" @@ -75,10 +121,12 @@ msgid "" "all sizes" msgstr "" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.buttons:1 #: aiogram.utils.keyboard.ReplyKeyboardBuilder.buttons:1 of msgid "Get flatten set of all buttons" msgstr "" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.copy:1 #: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy:1 of msgid "Make full copy of current builder with markup" msgstr "" @@ -87,6 +135,11 @@ msgstr "" msgid "Export configured markup as list of lists of buttons" msgstr "" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup:1 +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup:1 of +msgid "Create builder from existing markup" +msgstr "" + #: aiogram.utils.keyboard.KeyboardBuilder.row:1 of msgid "Add row to markup" msgstr "" @@ -95,31 +148,19 @@ msgstr "" msgid "When too much buttons is passed it will be separated to many rows" msgstr "" -#: ../../utils/keyboard.rst:35 -msgid "Inline Keyboard" -msgstr "" - -#: aiogram.utils.keyboard.InlineKeyboardBuilder:1 of -msgid "Inline keyboard builder inherits all methods from generic builder" -msgstr "" - -#: ../../utils/keyboard.rst:43 -msgid "Add new inline button to markup" -msgstr "" - -#: ../../utils/keyboard.rst:48 -msgid "Construct an InlineKeyboardMarkup" -msgstr "" - -#: ../../utils/keyboard.rst:51 +#: ../../utils/keyboard.rst:77 msgid "Reply Keyboard" msgstr "" -#: ../../utils/keyboard.rst:59 +#: aiogram.utils.keyboard.ReplyKeyboardBuilder:1 of +msgid "Reply keyboard builder inherits all methods from generic builder" +msgstr "" + +#: ../../utils/keyboard.rst:85 msgid "Add new button to markup" msgstr "" -#: ../../utils/keyboard.rst:64 +#: ../../utils/keyboard.rst:90 msgid "Construct an ReplyKeyboardMarkup" msgstr "" @@ -132,3 +173,6 @@ msgstr "" #~ "will be cycled when available more " #~ "buttons count than all sizes" #~ msgstr "" + +#~ msgid "Base builder" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/enums/currency.po b/docs/locale/uk_UA/LC_MESSAGES/api/enums/currency.po new file mode 100644 index 00000000..b7a6d732 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/api/enums/currency.po @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/enums/currency.rst:3 +msgid "Currency" +msgstr "" + +#: aiogram.enums.currency.Currency:1 of +msgid "Currencies supported by Telegram Bot API" +msgstr "" + +#: aiogram.enums.currency.Currency:3 of +msgid "Source: https://core.telegram.org/bots/payments#supported-currencies" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_pre_checkout_query.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_pre_checkout_query.po index 6447522c..0686720e 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_pre_checkout_query.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_pre_checkout_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/answer_pre_checkout_query.rst:3 msgid "answerPreCheckoutQuery" @@ -65,36 +65,44 @@ msgid "" " user." msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:14 +#: ../../api/methods/answer_pre_checkout_query.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:17 +#: ../../api/methods/answer_pre_checkout_query.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:25 +#: ../../api/methods/answer_pre_checkout_query.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:27 +#: ../../api/methods/answer_pre_checkout_query.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:29 +#: ../../api/methods/answer_pre_checkout_query.rst:30 msgid "" ":code:`from aiogram.methods.answer_pre_checkout_query import " "AnswerPreCheckoutQuery`" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:30 +#: ../../api/methods/answer_pre_checkout_query.rst:31 msgid "alias: :code:`from aiogram.methods import AnswerPreCheckoutQuery`" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:33 +#: ../../api/methods/answer_pre_checkout_query.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:40 +#: ../../api/methods/answer_pre_checkout_query.rst:41 msgid "As reply into Webhook in handler" msgstr "" + +#: ../../api/methods/answer_pre_checkout_query.rst:49 +msgid "As shortcut from received object" +msgstr "" + +#: ../../api/methods/answer_pre_checkout_query.rst:51 +msgid ":meth:`aiogram.types.pre_checkout_query.PreCheckoutQuery.answer`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_shipping_query.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_shipping_query.po index f1a61600..418b9c67 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_shipping_query.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_shipping_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/answer_shipping_query.rst:3 msgid "answerShippingQuery" @@ -69,36 +69,44 @@ msgid "" "this message to the user." msgstr "" -#: ../../api/methods/answer_shipping_query.rst:14 +#: ../../api/methods/answer_shipping_query.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:17 +#: ../../api/methods/answer_shipping_query.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:25 +#: ../../api/methods/answer_shipping_query.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:27 +#: ../../api/methods/answer_shipping_query.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:29 +#: ../../api/methods/answer_shipping_query.rst:30 msgid "" ":code:`from aiogram.methods.answer_shipping_query import " "AnswerShippingQuery`" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:30 +#: ../../api/methods/answer_shipping_query.rst:31 msgid "alias: :code:`from aiogram.methods import AnswerShippingQuery`" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:33 +#: ../../api/methods/answer_shipping_query.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:40 +#: ../../api/methods/answer_shipping_query.rst:41 msgid "As reply into Webhook in handler" msgstr "" + +#: ../../api/methods/answer_shipping_query.rst:49 +msgid "As shortcut from received object" +msgstr "" + +#: ../../api/methods/answer_shipping_query.rst:51 +msgid ":meth:`aiogram.types.shipping_query.ShippingQuery.answer`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/edit_message_reply_markup.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/edit_message_reply_markup.po index d8a3b25d..b704dd6d 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/edit_message_reply_markup.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/edit_message_reply_markup.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/edit_message_reply_markup.rst:3 msgid "editMessageReplyMarkup" @@ -70,48 +70,52 @@ msgid "" "`_." msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:14 +#: ../../api/methods/edit_message_reply_markup.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:17 +#: ../../api/methods/edit_message_reply_markup.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:25 +#: ../../api/methods/edit_message_reply_markup.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:27 +#: ../../api/methods/edit_message_reply_markup.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:29 +#: ../../api/methods/edit_message_reply_markup.rst:30 msgid "" ":code:`from aiogram.methods.edit_message_reply_markup import " "EditMessageReplyMarkup`" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:30 +#: ../../api/methods/edit_message_reply_markup.rst:31 msgid "alias: :code:`from aiogram.methods import EditMessageReplyMarkup`" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:33 +#: ../../api/methods/edit_message_reply_markup.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:40 +#: ../../api/methods/edit_message_reply_markup.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:48 +#: ../../api/methods/edit_message_reply_markup.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:50 +#: ../../api/methods/edit_message_reply_markup.rst:51 msgid ":meth:`aiogram.types.message.Message.edit_reply_markup`" msgstr "" +#: ../../api/methods/edit_message_reply_markup.rst:52 +msgid ":meth:`aiogram.types.message.Message.delete_reply_markup`" +msgstr "" + #~ msgid "" #~ "A JSON-serialized object for an " #~ "`inline keyboard \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/message.rst:3 msgid "Message" @@ -437,6 +437,7 @@ msgstr "" #: aiogram.types.message.Message.answer_video_note:4 #: aiogram.types.message.Message.answer_voice:4 #: aiogram.types.message.Message.delete:4 +#: aiogram.types.message.Message.delete_reply_markup:4 #: aiogram.types.message.Message.edit_caption:4 #: aiogram.types.message.Message.edit_live_location:4 #: aiogram.types.message.Message.edit_media:4 @@ -554,6 +555,7 @@ msgstr "" #: aiogram.types.message.Message.answer_video_note #: aiogram.types.message.Message.answer_voice #: aiogram.types.message.Message.copy_to +#: aiogram.types.message.Message.delete_reply_markup #: aiogram.types.message.Message.edit_caption #: aiogram.types.message.Message.edit_live_location #: aiogram.types.message.Message.edit_media @@ -836,6 +838,7 @@ msgstr "" #: aiogram.types.message.Message.answer_video_note #: aiogram.types.message.Message.answer_voice #: aiogram.types.message.Message.copy_to aiogram.types.message.Message.delete +#: aiogram.types.message.Message.delete_reply_markup #: aiogram.types.message.Message.edit_caption #: aiogram.types.message.Message.edit_live_location #: aiogram.types.message.Message.edit_media @@ -1941,7 +1944,7 @@ msgid "instance of method :class:`aiogram.methods.send_voice.SendVoice`" msgstr "" #: aiogram.types.message.Message.send_copy:1 of -msgid "Send copy of message." +msgid "Send copy of a message." msgstr "" #: aiogram.types.message.Message.send_copy:3 of @@ -1952,8 +1955,8 @@ msgstr "" #: aiogram.types.message.Message.send_copy:8 of msgid "" -"This method don't use the API method named `copyMessage` and historically" -" implemented before the similar method is added to API" +"This method doesn't use the API method named `copyMessage` and " +"historically implemented before the similar method is added to API" msgstr "" #: aiogram.types.message.Message.copy_to:1 of @@ -1969,6 +1972,7 @@ msgstr "" #: aiogram.types.message.Message.copy_to:5 #: aiogram.types.message.Message.delete:5 +#: aiogram.types.message.Message.delete_reply_markup:5 #: aiogram.types.message.Message.edit_caption:5 #: aiogram.types.message.Message.edit_live_location:5 #: aiogram.types.message.Message.edit_media:5 @@ -2057,6 +2061,7 @@ msgstr "" msgid "New text of the message, 1-4096 characters after entities parsing" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:12 #: aiogram.types.message.Message.edit_caption:11 #: aiogram.types.message.Message.edit_live_location:13 #: aiogram.types.message.Message.edit_media:12 @@ -2149,6 +2154,7 @@ msgid "" ":class:`aiogram.methods.edit_message_media.EditMessageMedia`" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:1 #: aiogram.types.message.Message.edit_reply_markup:1 of msgid "" "Shortcut for method " @@ -2156,6 +2162,7 @@ msgid "" " will automatically fill method attributes:" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:8 #: aiogram.types.message.Message.edit_reply_markup:7 of msgid "" "Use this method to edit only the reply markup of messages. On success, if" @@ -2164,16 +2171,22 @@ msgid "" ":code:`True` is returned." msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:10 #: aiogram.types.message.Message.edit_reply_markup:9 of msgid "Source: https://core.telegram.org/bots/api#editmessagereplymarkup" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:13 #: aiogram.types.message.Message.edit_reply_markup:13 of msgid "" "instance of method " ":class:`aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup`" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:6 of +msgid ":code:`reply_markup`" +msgstr "" + #: aiogram.types.message.Message.edit_live_location:1 of msgid "" "Shortcut for method " @@ -2562,3 +2575,13 @@ msgstr "" #~ "/form-data. :ref:`More information on " #~ "Sending Files » `" #~ msgstr "" + +#~ msgid "Send copy of message." +#~ msgstr "" + +#~ msgid "" +#~ "This method don't use the API " +#~ "method named `copyMessage` and historically" +#~ " implemented before the similar method " +#~ "is added to API" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/pre_checkout_query.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/pre_checkout_query.po index 053b5081..59009813 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/pre_checkout_query.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/pre_checkout_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/pre_checkout_query.rst:3 msgid "PreCheckoutQuery" @@ -71,10 +71,58 @@ msgstr "" msgid "*Optional*. Order information provided by the user" msgstr "" +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery`" +" will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:4 of +msgid ":code:`pre_checkout_query_id`" +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:6 of +msgid "" +"Once the user has confirmed their payment and shipping details, the Bot " +"API sends the final confirmation in the form of an " +":class:`aiogram.types.update.Update` with the field *pre_checkout_query*." +" Use this method to respond to such pre-checkout queries. On success, " +":code:`True` is returned. **Note:** The Bot API must receive an answer " +"within 10 seconds after the pre-checkout query was sent." +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:8 of +msgid "Source: https://core.telegram.org/bots/api#answerprecheckoutquery" +msgstr "" + #: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer of msgid "Parameters" msgstr "" +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:10 of +msgid "" +"Specify :code:`True` if everything is alright (goods are available, etc.)" +" and the bot is ready to proceed with the order. Use :code:`False` if " +"there are any problems." +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:11 of +msgid "" +"Required if *ok* is :code:`False`. Error message in human readable form " +"that explains the reason for failure to proceed with the checkout (e.g. " +"\"Sorry, somebody just bought the last of our amazing black T-shirts " +"while you were busy filling out your payment details. Please choose a " +"different color or garment!\"). Telegram will display this message to the" +" user." +msgstr "" + #: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer of msgid "Returns" msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:12 of +msgid "" +"instance of method " +":class:`aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/shipping_query.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/shipping_query.po index 71f13a21..b17b8c63 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/shipping_query.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/shipping_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/shipping_query.rst:3 msgid "ShippingQuery" @@ -47,10 +47,61 @@ msgstr "" msgid "User specified shipping address" msgstr "" +#: aiogram.types.shipping_query.ShippingQuery.answer:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.answer_shipping_query.AnswerShippingQuery` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:4 of +msgid ":code:`shipping_query_id`" +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:6 of +msgid "" +"If you sent an invoice requesting a shipping address and the parameter " +"*is_flexible* was specified, the Bot API will send an " +":class:`aiogram.types.update.Update` with a *shipping_query* field to the" +" bot. Use this method to reply to shipping queries. On success, " +":code:`True` is returned." +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:8 of +msgid "Source: https://core.telegram.org/bots/api#answershippingquery" +msgstr "" + #: aiogram.types.shipping_query.ShippingQuery.answer of msgid "Parameters" msgstr "" +#: aiogram.types.shipping_query.ShippingQuery.answer:10 of +msgid "" +"Pass :code:`True` if delivery to the specified address is possible and " +":code:`False` if there are any problems (for example, if delivery to the " +"specified address is not possible)" +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:11 of +msgid "" +"Required if *ok* is :code:`True`. A JSON-serialized array of available " +"shipping options." +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:12 of +msgid "" +"Required if *ok* is :code:`False`. Error message in human readable form " +"that explains why it is impossible to complete the order (e.g. \"Sorry, " +"delivery to your desired address is unavailable'). Telegram will display " +"this message to the user." +msgstr "" + #: aiogram.types.shipping_query.ShippingQuery.answer of msgid "Returns" msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:13 of +msgid "" +"instance of method " +":class:`aiogram.methods.answer_shipping_query.AnswerShippingQuery`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/changelog.po b/docs/locale/uk_UA/LC_MESSAGES/changelog.po index 22fd8db9..2e084a69 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/changelog.po +++ b/docs/locale/uk_UA/LC_MESSAGES/changelog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,18 +22,96 @@ msgid "Changelog" msgstr "" #: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" +msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-06)" msgstr "" -#: ../../../CHANGES.rst:23 ../../../CHANGES.rst:186 ../../../CHANGES.rst:286 -#: ../../../CHANGES.rst:346 ../../../CHANGES.rst:397 ../../../CHANGES.rst:470 -#: ../../../CHANGES.rst:511 ../../../CHANGES.rst:549 ../../../CHANGES.rst:597 -#: ../../../CHANGES.rst:673 ../../../CHANGES.rst:706 ../../../CHANGES.rst:737 -#: ../../[towncrier-fragments]:5 +#: ../../../CHANGES.rst:24 ../../../CHANGES.rst:66 ../../../CHANGES.rst:229 +#: ../../../CHANGES.rst:329 ../../../CHANGES.rst:389 ../../../CHANGES.rst:440 +#: ../../../CHANGES.rst:513 ../../../CHANGES.rst:554 ../../../CHANGES.rst:592 +#: ../../../CHANGES.rst:640 ../../../CHANGES.rst:716 ../../../CHANGES.rst:749 +#: ../../../CHANGES.rst:780 ../../[towncrier-fragments]:5 msgid "Features" msgstr "" #: ../../[towncrier-fragments]:7 +msgid "Added Currency enum. You can use it like this:" +msgstr "" + +#: ../../[towncrier-fragments]:19 +msgid "`#1194 `_" +msgstr "" + +#: ../../[towncrier-fragments]:20 +msgid "" +"Updated keyboard builders with new methods for integrating buttons and " +"keyboard creation more seamlessly. Added functionality to create buttons " +"from existing markup and attach another builder. This improvement aims to" +" make the keyboard building process more user-friendly and flexible. " +"`#1236 `_" +msgstr "" + +#: ../../../CHANGES.rst:35 ../../../CHANGES.rst:105 ../../../CHANGES.rst:291 +#: ../../../CHANGES.rst:354 ../../../CHANGES.rst:403 ../../../CHANGES.rst:464 +#: ../../../CHANGES.rst:522 ../../../CHANGES.rst:568 ../../../CHANGES.rst:616 +#: ../../../CHANGES.rst:672 ../../../CHANGES.rst:757 ../../../CHANGES.rst:789 +#: ../../[towncrier-fragments]:27 +msgid "Bugfixes" +msgstr "" + +#: ../../[towncrier-fragments]:29 +msgid "" +"Fixed polling startup when \"bot\" key is passed manually into dispatcher" +" workflow data `#1242 `_" +msgstr "" + +#: ../../[towncrier-fragments]:31 +msgid "Added codegen configuration for lost shortcuts:" +msgstr "" + +#: ../../[towncrier-fragments]:33 +msgid "ShippingQuery.answer" +msgstr "" + +#: ../../[towncrier-fragments]:34 +msgid "PreCheckoutQuery.answer" +msgstr "" + +#: ../../[towncrier-fragments]:35 +msgid "Message.delete_reply_markup" +msgstr "" + +#: ../../[towncrier-fragments]:36 +msgid "`#1244 `_" +msgstr "" + +#: ../../../CHANGES.rst:149 ../../../CHANGES.rst:300 ../../../CHANGES.rst:377 +#: ../../../CHANGES.rst:430 ../../../CHANGES.rst:481 ../../../CHANGES.rst:535 +#: ../../../CHANGES.rst:577 ../../../CHANGES.rst:623 ../../../CHANGES.rst:683 +#: ../../../CHANGES.rst:704 ../../../CHANGES.rst:727 ../../../CHANGES.rst:764 +#: ../../../CHANGES.rst:803 ../../[towncrier-fragments]:40 +msgid "Misc" +msgstr "" + +#: ../../[towncrier-fragments]:42 +msgid "" +"Reworked InputFile reading, removed :code:`__aiter__` method, added `bot:" +" Bot` argument to the :code:`.read(...)` method, so, from now " +"URLInputFile can be used without specifying bot instance. `#1238 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:46 +msgid "" +"Code-generated :code:`__init__` typehints in types and methods to make " +"IDE happy without additional pydantic plugin `#1245 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:21 +msgid "3.0.0b9 (2023-07-30)" +msgstr "" + +#: ../../../CHANGES.rst:26 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_member_updated.ChatMemberUpdated` to send " @@ -41,7 +119,7 @@ msgid "" "`_" msgstr "" -#: ../../[towncrier-fragments]:10 +#: ../../../CHANGES.rst:29 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_join_request.ChatJoinRequest` to make easier " @@ -49,21 +127,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:62 ../../../CHANGES.rst:248 ../../../CHANGES.rst:311 -#: ../../../CHANGES.rst:360 ../../../CHANGES.rst:421 ../../../CHANGES.rst:479 -#: ../../../CHANGES.rst:525 ../../../CHANGES.rst:573 ../../../CHANGES.rst:629 -#: ../../../CHANGES.rst:714 ../../../CHANGES.rst:746 -#: ../../[towncrier-fragments]:16 -msgid "Bugfixes" -msgstr "" - -#: ../../[towncrier-fragments]:18 +#: ../../../CHANGES.rst:37 msgid "" "Fixed bot assignment in the :code:`Message.send_copy` shortcut `#1232 " "`_" msgstr "" -#: ../../[towncrier-fragments]:20 +#: ../../../CHANGES.rst:39 msgid "" "Added model validation to remove UNSET before field validation. This " "change was necessary to correctly handle parse_mode where 'UNSET' is used" @@ -73,23 +143,26 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:90 ../../../CHANGES.rst:323 ../../../CHANGES.rst:373 -#: ../../../CHANGES.rst:753 ../../[towncrier-fragments]:28 +#: ../../../CHANGES.rst:44 +msgid "Updated pydantic to 2.1 with few bugfixes" +msgstr "" + +#: ../../../CHANGES.rst:48 ../../../CHANGES.rst:133 ../../../CHANGES.rst:366 +#: ../../../CHANGES.rst:416 ../../../CHANGES.rst:796 msgid "Improved Documentation" msgstr "" -#: ../../[towncrier-fragments]:30 +#: ../../../CHANGES.rst:50 msgid "" "Improved docs, added basic migration guide (will be expanded later) " "`#1143 `_" msgstr "" -#: ../../../CHANGES.rst:97 ../../../CHANGES.rst:380 -#: ../../[towncrier-fragments]:35 +#: ../../../CHANGES.rst:55 ../../../CHANGES.rst:140 ../../../CHANGES.rst:423 msgid "Deprecations and Removals" msgstr "" -#: ../../[towncrier-fragments]:37 +#: ../../../CHANGES.rst:57 msgid "" "Removed the use of the context instance (Bot.get_current) from all " "placements that were used previously. This is to avoid the use of the " @@ -97,78 +170,78 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:20 +#: ../../../CHANGES.rst:63 msgid "3.0.0b8 (2023-07-17)" msgstr "" -#: ../../../CHANGES.rst:25 +#: ../../../CHANGES.rst:68 msgid "" "Added possibility to use custom events in routers (If router does not " "support custom event it does not break and passes it to included " "routers). `#1147 `_" msgstr "" -#: ../../../CHANGES.rst:27 +#: ../../../CHANGES.rst:70 msgid "Added support for FSM in Forum topics." msgstr "" -#: ../../../CHANGES.rst:29 +#: ../../../CHANGES.rst:72 msgid "The strategy can be changed in dispatcher:" msgstr "" -#: ../../../CHANGES.rst:42 +#: ../../../CHANGES.rst:85 msgid "" "If you have implemented you own storages you should extend record key " "generation with new one attribute - :code:`thread_id`" msgstr "" -#: ../../../CHANGES.rst:44 +#: ../../../CHANGES.rst:87 msgid "`#1161 `_" msgstr "" -#: ../../../CHANGES.rst:45 +#: ../../../CHANGES.rst:88 msgid "Improved CallbackData serialization." msgstr "" -#: ../../../CHANGES.rst:47 +#: ../../../CHANGES.rst:90 msgid "Minimized UUID (hex without dashes)" msgstr "" -#: ../../../CHANGES.rst:48 +#: ../../../CHANGES.rst:91 msgid "Replaced bool values with int (true=1, false=0)" msgstr "" -#: ../../../CHANGES.rst:49 +#: ../../../CHANGES.rst:92 msgid "`#1163 `_" msgstr "" -#: ../../../CHANGES.rst:50 +#: ../../../CHANGES.rst:93 msgid "" "Added a tool to make text formatting flexible and easy. More details on " "the :ref:`corresponding documentation page ` `#1172 " "`_" msgstr "" -#: ../../../CHANGES.rst:53 +#: ../../../CHANGES.rst:96 msgid "" "Added :code:`X-Telegram-Bot-Api-Secret-Token` header check `#1173 " "`_" msgstr "" -#: ../../../CHANGES.rst:55 +#: ../../../CHANGES.rst:98 msgid "" "Made :code:`allowed_updates` list to revolve automatically in " "start_polling method if not set explicitly. `#1178 " "`_" msgstr "" -#: ../../../CHANGES.rst:57 +#: ../../../CHANGES.rst:100 msgid "" "Added possibility to pass custom headers to :class:`URLInputFile` object " "`#1191 `_" msgstr "" -#: ../../../CHANGES.rst:64 +#: ../../../CHANGES.rst:107 msgid "" "Change type of result in InlineQueryResult enum for " ":code:`InlineQueryResultCachedMpeg4Gif` and " @@ -176,51 +249,51 @@ msgid "" "documentation." msgstr "" -#: ../../../CHANGES.rst:67 +#: ../../../CHANGES.rst:110 msgid "" "Change regexp for entities parsing to more correct " "(:code:`InlineQueryResultType.yml`). `#1146 " "`_" msgstr "" -#: ../../../CHANGES.rst:69 +#: ../../../CHANGES.rst:112 msgid "" "Fixed signature of startup/shutdown events to include the " ":code:`**dispatcher.workflow_data` as the handler arguments. `#1155 " "`_" msgstr "" -#: ../../../CHANGES.rst:71 +#: ../../../CHANGES.rst:114 msgid "" "Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property " "`#1160 `_" msgstr "" -#: ../../../CHANGES.rst:73 +#: ../../../CHANGES.rst:116 msgid "" "Fixed compatibility with Python 3.8-3.9 (from previous release) `#1162 " "`_" msgstr "" -#: ../../../CHANGES.rst:75 +#: ../../../CHANGES.rst:118 msgid "" "Fixed the markdown spoiler parser. `#1176 " "`_" msgstr "" -#: ../../../CHANGES.rst:77 +#: ../../../CHANGES.rst:120 msgid "" "Fixed workflow data propagation `#1196 " "`_" msgstr "" -#: ../../../CHANGES.rst:79 +#: ../../../CHANGES.rst:122 msgid "" "Fixed the serialization error associated with nested subtypes like " "InputMedia, ChatMember, etc." msgstr "" -#: ../../../CHANGES.rst:82 +#: ../../../CHANGES.rst:125 msgid "" "The previously generated code resulted in an invalid schema under " "pydantic v2, which has stricter type parsing. Hence, subtypes without the" @@ -229,79 +302,71 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:92 +#: ../../../CHANGES.rst:135 msgid "" "Changed small grammar typos for :code:`upload_file` `#1133 " "`_" msgstr "" -#: ../../../CHANGES.rst:99 +#: ../../../CHANGES.rst:142 msgid "" "Removed text filter in due to is planned to remove this filter few " "versions ago." msgstr "" -#: ../../../CHANGES.rst:101 +#: ../../../CHANGES.rst:144 msgid "" "Use :code:`F.text` instead `#1170 " "`_" msgstr "" -#: ../../../CHANGES.rst:106 ../../../CHANGES.rst:257 ../../../CHANGES.rst:334 -#: ../../../CHANGES.rst:387 ../../../CHANGES.rst:438 ../../../CHANGES.rst:492 -#: ../../../CHANGES.rst:534 ../../../CHANGES.rst:580 ../../../CHANGES.rst:640 -#: ../../../CHANGES.rst:661 ../../../CHANGES.rst:684 ../../../CHANGES.rst:721 -#: ../../../CHANGES.rst:760 -msgid "Misc" -msgstr "" - -#: ../../../CHANGES.rst:108 +#: ../../../CHANGES.rst:151 msgid "" "Added full support of `Bot API 6.6 `_" msgstr "" -#: ../../../CHANGES.rst:112 +#: ../../../CHANGES.rst:155 msgid "" "Note that this issue has breaking changes described in in the Bot API " "changelog, this changes is not breaking in the API but breaking inside " "aiogram because Beta stage is not finished." msgstr "" -#: ../../../CHANGES.rst:115 +#: ../../../CHANGES.rst:158 msgid "`#1139 `_" msgstr "" -#: ../../../CHANGES.rst:116 +#: ../../../CHANGES.rst:159 msgid "" "Added full support of `Bot API 6.7 `_" msgstr "" -#: ../../../CHANGES.rst:120 +#: ../../../CHANGES.rst:163 msgid "" "Note that arguments *switch_pm_parameter* and *switch_pm_text* was " "deprecated and should be changed to *button* argument as described in API" " docs." msgstr "" -#: ../../../CHANGES.rst:122 +#: ../../../CHANGES.rst:165 msgid "`#1168 `_" msgstr "" -#: ../../../CHANGES.rst:123 +#: ../../../CHANGES.rst:166 msgid "Updated `Pydantic to V2 `_" msgstr "" -#: ../../../CHANGES.rst:127 +#: ../../../CHANGES.rst:170 msgid "Be careful, not all libraries is already updated to using V2" msgstr "" -#: ../../../CHANGES.rst:128 +#: ../../../CHANGES.rst:171 msgid "`#1202 `_" msgstr "" -#: ../../../CHANGES.rst:129 +#: ../../../CHANGES.rst:172 msgid "" "Added global defaults :code:`disable_web_page_preview` and " ":code:`protect_content` in addition to :code:`parse_mode` to the Bot " @@ -309,13 +374,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:132 +#: ../../../CHANGES.rst:175 msgid "" "Removed bot parameters from storages `#1144 " "`_" msgstr "" -#: ../../../CHANGES.rst:135 +#: ../../../CHANGES.rst:178 msgid "" "Replaced ContextVar's with a new feature called `Validation Context " "`_" @@ -323,69 +388,69 @@ msgid "" "handling the Bot instance within method shortcuts." msgstr "" -#: ../../../CHANGES.rst:140 +#: ../../../CHANGES.rst:183 msgid "**Breaking**: The 'bot' argument now is required in `URLInputFile`" msgstr "" -#: ../../../CHANGES.rst:141 +#: ../../../CHANGES.rst:184 msgid "`#1210 `_" msgstr "" -#: ../../../CHANGES.rst:142 +#: ../../../CHANGES.rst:185 msgid "Updated magic-filter with new features" msgstr "" -#: ../../../CHANGES.rst:144 +#: ../../../CHANGES.rst:187 msgid "Added hint for :code:`len(F)` error" msgstr "" -#: ../../../CHANGES.rst:145 +#: ../../../CHANGES.rst:188 msgid "Added not in operation" msgstr "" -#: ../../../CHANGES.rst:146 +#: ../../../CHANGES.rst:189 msgid "`#1221 `_" msgstr "" -#: ../../../CHANGES.rst:150 +#: ../../../CHANGES.rst:193 msgid "3.0.0b7 (2023-02-18)" msgstr "" -#: ../../../CHANGES.rst:154 +#: ../../../CHANGES.rst:197 msgid "" "Note that this version has incompatibility with Python 3.8-3.9 in case " "when you create an instance of Dispatcher outside of the any coroutine." msgstr "" -#: ../../../CHANGES.rst:156 +#: ../../../CHANGES.rst:199 msgid "Sorry for the inconvenience, it will be fixed in the next version." msgstr "" -#: ../../../CHANGES.rst:158 +#: ../../../CHANGES.rst:201 msgid "This code will not work:" msgstr "" -#: ../../../CHANGES.rst:170 +#: ../../../CHANGES.rst:213 msgid "But if you change it like this it should works as well:" msgstr "" -#: ../../../CHANGES.rst:188 +#: ../../../CHANGES.rst:231 msgid "Added missing shortcuts, new enums, reworked old stuff" msgstr "" -#: ../../../CHANGES.rst:190 +#: ../../../CHANGES.rst:233 msgid "" "**Breaking** All previously added enums is re-generated in new place - " "`aiogram.enums` instead of `aiogram.types`" msgstr "" -#: ../../../CHANGES.rst:208 +#: ../../../CHANGES.rst:251 msgid "" "**Added enums:** " ":class:`aiogram.enums.bot_command_scope_type.BotCommandScopeType`," msgstr "" -#: ../../../CHANGES.rst:194 +#: ../../../CHANGES.rst:237 msgid "" ":class:`aiogram.enums.chat_action.ChatAction`, " ":class:`aiogram.enums.chat_member_status.ChatMemberStatus`, " @@ -404,15 +469,15 @@ msgid "" ":class:`aiogram.enums.update_type.UpdateType`," msgstr "" -#: ../../../CHANGES.rst:210 +#: ../../../CHANGES.rst:253 msgid "**Added shortcuts**:" msgstr "" -#: ../../../CHANGES.rst:235 +#: ../../../CHANGES.rst:278 msgid "*Chat* :meth:`aiogram.types.chat.Chat.get_administrators`," msgstr "" -#: ../../../CHANGES.rst:213 +#: ../../../CHANGES.rst:256 msgid "" ":meth:`aiogram.types.chat.Chat.delete_message`, " ":meth:`aiogram.types.chat.Chat.revoke_invite_link`, " @@ -440,85 +505,85 @@ msgid "" ":meth:`aiogram.types.chat.Chat.set_photo`," msgstr "" -#: ../../../CHANGES.rst:237 +#: ../../../CHANGES.rst:280 msgid "*Sticker*: :meth:`aiogram.types.sticker.Sticker.set_position_in_set`," msgstr "" -#: ../../../CHANGES.rst:238 +#: ../../../CHANGES.rst:281 msgid ":meth:`aiogram.types.sticker.Sticker.delete_from_set`," msgstr "" -#: ../../../CHANGES.rst:239 +#: ../../../CHANGES.rst:282 msgid "*User*: :meth:`aiogram.types.user.User.get_profile_photos`" msgstr "" -#: ../../../CHANGES.rst:240 +#: ../../../CHANGES.rst:283 msgid "`#952 `_" msgstr "" -#: ../../../CHANGES.rst:241 +#: ../../../CHANGES.rst:284 msgid "" "Added :ref:`callback answer ` feature `#1091 " "`_" msgstr "" -#: ../../../CHANGES.rst:243 +#: ../../../CHANGES.rst:286 msgid "" "Added a method that allows you to compactly register routers `#1117 " "`_" msgstr "" -#: ../../../CHANGES.rst:250 +#: ../../../CHANGES.rst:293 msgid "" "Check status code when downloading file `#816 " "`_" msgstr "" -#: ../../../CHANGES.rst:252 +#: ../../../CHANGES.rst:295 msgid "" "Fixed `ignore_case` parameter in :obj:`aiogram.filters.command.Command` " "filter `#1106 `_" msgstr "" -#: ../../../CHANGES.rst:259 +#: ../../../CHANGES.rst:302 msgid "" "Added integration with new code-generator named `Butcher " "`_ `#1069 " "`_" msgstr "" -#: ../../../CHANGES.rst:261 +#: ../../../CHANGES.rst:304 msgid "" "Added full support of `Bot API 6.4 `_ `#1088 " "`_" msgstr "" -#: ../../../CHANGES.rst:263 +#: ../../../CHANGES.rst:306 msgid "" "Updated package metadata, moved build internals from Poetry to Hatch, " "added contributing guides. `#1095 " "`_" msgstr "" -#: ../../../CHANGES.rst:265 +#: ../../../CHANGES.rst:308 msgid "" "Added full support of `Bot API 6.5 `_" msgstr "" -#: ../../../CHANGES.rst:269 +#: ../../../CHANGES.rst:312 msgid "" "Note that :obj:`aiogram.types.chat_permissions.ChatPermissions` is " "updated without backward compatibility, so now this object has no " ":code:`can_send_media_messages` attribute" msgstr "" -#: ../../../CHANGES.rst:271 +#: ../../../CHANGES.rst:314 msgid "`#1112 `_" msgstr "" -#: ../../../CHANGES.rst:272 +#: ../../../CHANGES.rst:315 msgid "" "Replaced error :code:`TypeError: TelegramEventObserver.__call__() got an " "unexpected keyword argument ''` with a more understandable one for " @@ -526,13 +591,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:275 +#: ../../../CHANGES.rst:318 msgid "" "Added possibility to reply into webhook with files `#1120 " "`_" msgstr "" -#: ../../../CHANGES.rst:277 +#: ../../../CHANGES.rst:320 msgid "" "Reworked graceful shutdown. Added method to stop polling. Now polling " "started from dispatcher can be stopped by signals gracefully without " @@ -540,127 +605,127 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:283 +#: ../../../CHANGES.rst:326 msgid "3.0.0b6 (2022-11-18)" msgstr "" -#: ../../../CHANGES.rst:288 +#: ../../../CHANGES.rst:331 msgid "" "(again) Added possibility to combine filters with an *and*/*or* " "operations." msgstr "" -#: ../../../CHANGES.rst:290 +#: ../../../CHANGES.rst:333 msgid "" "Read more in \":ref:`Combining filters `\" " "documentation section `#1018 " "`_" msgstr "" -#: ../../../CHANGES.rst:292 +#: ../../../CHANGES.rst:335 msgid "Added following methods to ``Message`` class:" msgstr "" -#: ../../../CHANGES.rst:294 +#: ../../../CHANGES.rst:337 msgid ":code:`Message.forward(...)`" msgstr "" -#: ../../../CHANGES.rst:295 +#: ../../../CHANGES.rst:338 msgid ":code:`Message.edit_media(...)`" msgstr "" -#: ../../../CHANGES.rst:296 +#: ../../../CHANGES.rst:339 msgid ":code:`Message.edit_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:297 +#: ../../../CHANGES.rst:340 msgid ":code:`Message.stop_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:298 +#: ../../../CHANGES.rst:341 msgid ":code:`Message.pin(...)`" msgstr "" -#: ../../../CHANGES.rst:299 +#: ../../../CHANGES.rst:342 msgid ":code:`Message.unpin()`" msgstr "" -#: ../../../CHANGES.rst:300 +#: ../../../CHANGES.rst:343 msgid "`#1030 `_" msgstr "" -#: ../../../CHANGES.rst:301 +#: ../../../CHANGES.rst:344 msgid "Added following methods to :code:`User` class:" msgstr "" -#: ../../../CHANGES.rst:303 +#: ../../../CHANGES.rst:346 msgid ":code:`User.mention_markdown(...)`" msgstr "" -#: ../../../CHANGES.rst:304 +#: ../../../CHANGES.rst:347 msgid ":code:`User.mention_html(...)`" msgstr "" -#: ../../../CHANGES.rst:305 +#: ../../../CHANGES.rst:348 msgid "`#1049 `_" msgstr "" -#: ../../../CHANGES.rst:306 +#: ../../../CHANGES.rst:349 msgid "" "Added full support of `Bot API 6.3 `_ `#1057 " "`_" msgstr "" -#: ../../../CHANGES.rst:313 +#: ../../../CHANGES.rst:356 msgid "" "Fixed :code:`Message.send_invoice` and :code:`Message.reply_invoice`, " "added missing arguments `#1047 " "`_" msgstr "" -#: ../../../CHANGES.rst:315 +#: ../../../CHANGES.rst:358 msgid "Fixed copy and forward in:" msgstr "" -#: ../../../CHANGES.rst:317 +#: ../../../CHANGES.rst:360 msgid ":code:`Message.answer(...)`" msgstr "" -#: ../../../CHANGES.rst:318 +#: ../../../CHANGES.rst:361 msgid ":code:`Message.copy_to(...)`" msgstr "" -#: ../../../CHANGES.rst:319 +#: ../../../CHANGES.rst:362 msgid "`#1064 `_" msgstr "" -#: ../../../CHANGES.rst:325 +#: ../../../CHANGES.rst:368 msgid "" "Fixed UA translations in index.po `#1017 " "`_" msgstr "" -#: ../../../CHANGES.rst:327 +#: ../../../CHANGES.rst:370 msgid "" "Fix typehints for :code:`Message`, :code:`reply_media_group` and " ":code:`answer_media_group` methods `#1029 " "`_" msgstr "" -#: ../../../CHANGES.rst:329 +#: ../../../CHANGES.rst:372 msgid "" "Removed an old now non-working feature `#1060 " "`_" msgstr "" -#: ../../../CHANGES.rst:336 +#: ../../../CHANGES.rst:379 msgid "" "Enabled testing on Python 3.11 `#1044 " "`_" msgstr "" -#: ../../../CHANGES.rst:338 +#: ../../../CHANGES.rst:381 msgid "" "Added a mandatory dependency :code:`certifi` in due to in some cases on " "systems that doesn't have updated ca-certificates the requests to Bot API" @@ -669,23 +734,23 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:343 +#: ../../../CHANGES.rst:386 msgid "3.0.0b5 (2022-10-02)" msgstr "" -#: ../../../CHANGES.rst:348 +#: ../../../CHANGES.rst:391 msgid "" "Add PyPy support and run tests under PyPy `#985 " "`_" msgstr "" -#: ../../../CHANGES.rst:350 +#: ../../../CHANGES.rst:393 msgid "" "Added message text to aiogram exceptions representation `#988 " "`_" msgstr "" -#: ../../../CHANGES.rst:352 +#: ../../../CHANGES.rst:395 msgid "" "Added warning about using magic filter from `magic_filter` instead of " "`aiogram`'s ones. Is recommended to use `from aiogram import F` instead " @@ -693,61 +758,61 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:355 +#: ../../../CHANGES.rst:398 msgid "" "Added more detailed error when server response can't be deserialized. " "This feature will help to debug unexpected responses from the Server " "`#1014 `_" msgstr "" -#: ../../../CHANGES.rst:362 +#: ../../../CHANGES.rst:405 msgid "" "Reworked error event, introduced " ":class:`aiogram.types.error_event.ErrorEvent` object. `#898 " "`_" msgstr "" -#: ../../../CHANGES.rst:364 +#: ../../../CHANGES.rst:407 msgid "" "Fixed escaping markdown in `aiogram.utils.markdown` module `#903 " "`_" msgstr "" -#: ../../../CHANGES.rst:366 +#: ../../../CHANGES.rst:409 msgid "" "Fixed polling crash when Telegram Bot API raises HTTP 429 status-code. " "`#995 `_" msgstr "" -#: ../../../CHANGES.rst:368 +#: ../../../CHANGES.rst:411 msgid "" "Fixed empty mention in command parsing, now it will be None instead of an" " empty string `#1013 `_" msgstr "" -#: ../../../CHANGES.rst:375 +#: ../../../CHANGES.rst:418 msgid "" "Initialized Docs translation (added Ukrainian language) `#925 " "`_" msgstr "" -#: ../../../CHANGES.rst:382 +#: ../../../CHANGES.rst:425 msgid "" "Removed filters factory as described in corresponding issue. `#942 " "`_" msgstr "" -#: ../../../CHANGES.rst:389 +#: ../../../CHANGES.rst:432 msgid "" "Now Router/Dispatcher accepts only keyword arguments. `#982 " "`_" msgstr "" -#: ../../../CHANGES.rst:394 +#: ../../../CHANGES.rst:437 msgid "3.0.0b4 (2022-08-14)" msgstr "" -#: ../../../CHANGES.rst:399 +#: ../../../CHANGES.rst:442 msgid "" "Add class helper ChatAction for constants that Telegram BotAPI uses in " "sendChatAction request. In my opinion, this will help users and will also" @@ -755,198 +820,198 @@ msgid "" "\"ChatActions\". `#803 `_" msgstr "" -#: ../../../CHANGES.rst:403 +#: ../../../CHANGES.rst:446 msgid "Added possibility to combine filters or invert result" msgstr "" -#: ../../../CHANGES.rst:405 +#: ../../../CHANGES.rst:448 msgid "Example:" msgstr "" -#: ../../../CHANGES.rst:413 +#: ../../../CHANGES.rst:456 msgid "`#894 `_" msgstr "" -#: ../../../CHANGES.rst:414 +#: ../../../CHANGES.rst:457 msgid "" "Fixed type hints for redis TTL params. `#922 " "`_" msgstr "" -#: ../../../CHANGES.rst:416 +#: ../../../CHANGES.rst:459 msgid "" "Added `full_name` shortcut for `Chat` object `#929 " "`_" msgstr "" -#: ../../../CHANGES.rst:423 +#: ../../../CHANGES.rst:466 msgid "" "Fixed false-positive coercing of Union types in API methods `#901 " "`_" msgstr "" -#: ../../../CHANGES.rst:425 +#: ../../../CHANGES.rst:468 msgid "Added 3 missing content types:" msgstr "" -#: ../../../CHANGES.rst:427 +#: ../../../CHANGES.rst:470 msgid "proximity_alert_triggered" msgstr "" -#: ../../../CHANGES.rst:428 +#: ../../../CHANGES.rst:471 msgid "supergroup_chat_created" msgstr "" -#: ../../../CHANGES.rst:429 +#: ../../../CHANGES.rst:472 msgid "channel_chat_created" msgstr "" -#: ../../../CHANGES.rst:430 +#: ../../../CHANGES.rst:473 msgid "`#906 `_" msgstr "" -#: ../../../CHANGES.rst:431 +#: ../../../CHANGES.rst:474 msgid "" "Fixed the ability to compare the state, now comparison to copy of the " "state will return `True`. `#927 " "`_" msgstr "" -#: ../../../CHANGES.rst:433 +#: ../../../CHANGES.rst:476 msgid "" "Fixed default lock kwargs in RedisEventIsolation. `#972 " "`_" msgstr "" -#: ../../../CHANGES.rst:440 +#: ../../../CHANGES.rst:483 msgid "" "Restrict including routers with strings `#896 " "`_" msgstr "" -#: ../../../CHANGES.rst:442 +#: ../../../CHANGES.rst:485 msgid "" "Changed CommandPatterType to CommandPatternType in " "`aiogram/dispatcher/filters/command.py` `#907 " "`_" msgstr "" -#: ../../../CHANGES.rst:444 +#: ../../../CHANGES.rst:487 msgid "" "Added full support of `Bot API 6.1 `_ `#936 " "`_" msgstr "" -#: ../../../CHANGES.rst:446 +#: ../../../CHANGES.rst:489 msgid "**Breaking!** More flat project structure" msgstr "" -#: ../../../CHANGES.rst:448 +#: ../../../CHANGES.rst:491 msgid "These packages was moved, imports in your code should be fixed:" msgstr "" -#: ../../../CHANGES.rst:450 +#: ../../../CHANGES.rst:493 msgid ":code:`aiogram.dispatcher.filters` -> :code:`aiogram.filters`" msgstr "" -#: ../../../CHANGES.rst:451 +#: ../../../CHANGES.rst:494 msgid ":code:`aiogram.dispatcher.fsm` -> :code:`aiogram.fsm`" msgstr "" -#: ../../../CHANGES.rst:452 +#: ../../../CHANGES.rst:495 msgid ":code:`aiogram.dispatcher.handler` -> :code:`aiogram.handler`" msgstr "" -#: ../../../CHANGES.rst:453 +#: ../../../CHANGES.rst:496 msgid ":code:`aiogram.dispatcher.webhook` -> :code:`aiogram.webhook`" msgstr "" -#: ../../../CHANGES.rst:454 +#: ../../../CHANGES.rst:497 msgid "" ":code:`aiogram.dispatcher.flags/*` -> :code:`aiogram.dispatcher.flags` " "(single module instead of package)" msgstr "" -#: ../../../CHANGES.rst:455 +#: ../../../CHANGES.rst:498 msgid "`#938 `_" msgstr "" -#: ../../../CHANGES.rst:456 +#: ../../../CHANGES.rst:499 msgid "" "Removed deprecated :code:`router._handler` and " ":code:`router.register__handler` methods. `#941 " "`_" msgstr "" -#: ../../../CHANGES.rst:458 +#: ../../../CHANGES.rst:501 msgid "" "Deprecated filters factory. It will be removed in next Beta (3.0b5) `#942" " `_" msgstr "" -#: ../../../CHANGES.rst:460 +#: ../../../CHANGES.rst:503 msgid "" "`MessageEntity` method `get_text` was removed and `extract` was renamed " "to `extract_from` `#944 `_" msgstr "" -#: ../../../CHANGES.rst:462 +#: ../../../CHANGES.rst:505 msgid "" "Added full support of `Bot API 6.2 `_ `#975 " "`_" msgstr "" -#: ../../../CHANGES.rst:467 +#: ../../../CHANGES.rst:510 msgid "3.0.0b3 (2022-04-19)" msgstr "" -#: ../../../CHANGES.rst:472 +#: ../../../CHANGES.rst:515 msgid "" "Added possibility to get command magic result as handler argument `#889 " "`_" msgstr "" -#: ../../../CHANGES.rst:474 +#: ../../../CHANGES.rst:517 msgid "" "Added full support of `Telegram Bot API 6.0 " "`_ `#890 " "`_" msgstr "" -#: ../../../CHANGES.rst:481 +#: ../../../CHANGES.rst:524 msgid "" "Fixed I18n lazy-proxy. Disabled caching. `#839 " "`_" msgstr "" -#: ../../../CHANGES.rst:483 +#: ../../../CHANGES.rst:526 msgid "" "Added parsing of spoiler message entity `#865 " "`_" msgstr "" -#: ../../../CHANGES.rst:485 +#: ../../../CHANGES.rst:528 msgid "" "Fixed default `parse_mode` for `Message.copy_to()` method. `#876 " "`_" msgstr "" -#: ../../../CHANGES.rst:487 +#: ../../../CHANGES.rst:530 msgid "" "Fixed CallbackData factory parsing IntEnum's `#885 " "`_" msgstr "" -#: ../../../CHANGES.rst:494 +#: ../../../CHANGES.rst:537 msgid "" "Added automated check that pull-request adds a changes description to " "**CHANGES** directory `#873 " "`_" msgstr "" -#: ../../../CHANGES.rst:496 +#: ../../../CHANGES.rst:539 msgid "" "Changed :code:`Message.html_text` and :code:`Message.md_text` attributes " "behaviour when message has no text. The empty string will be used instead" @@ -954,14 +1019,14 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:499 +#: ../../../CHANGES.rst:542 msgid "" "Used `redis-py` instead of `aioredis` package in due to this packages was" " merged into single one `#882 " "`_" msgstr "" -#: ../../../CHANGES.rst:501 +#: ../../../CHANGES.rst:544 msgid "" "Solved common naming problem with middlewares that confusing too much " "developers - now you can't see the `middleware` and `middlewares` " @@ -970,113 +1035,113 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:508 +#: ../../../CHANGES.rst:551 msgid "3.0.0b2 (2022-02-19)" msgstr "" -#: ../../../CHANGES.rst:513 +#: ../../../CHANGES.rst:556 msgid "" "Added possibility to pass additional arguments into the aiohttp webhook " "handler to use this arguments inside handlers as the same as it possible " "in polling mode. `#785 `_" msgstr "" -#: ../../../CHANGES.rst:516 +#: ../../../CHANGES.rst:559 msgid "" "Added possibility to add handler flags via decorator (like `pytest.mark` " "decorator but `aiogram.flags`) `#836 " "`_" msgstr "" -#: ../../../CHANGES.rst:518 +#: ../../../CHANGES.rst:561 msgid "" "Added :code:`ChatActionSender` utility to automatically sends chat action" " while long process is running." msgstr "" -#: ../../../CHANGES.rst:520 +#: ../../../CHANGES.rst:563 msgid "" "It also can be used as message middleware and can be customized via " ":code:`chat_action` flag. `#837 " "`_" msgstr "" -#: ../../../CHANGES.rst:527 +#: ../../../CHANGES.rst:570 msgid "" "Fixed unexpected behavior of sequences in the StateFilter. `#791 " "`_" msgstr "" -#: ../../../CHANGES.rst:529 +#: ../../../CHANGES.rst:572 msgid "" "Fixed exceptions filters `#827 " "`_" msgstr "" -#: ../../../CHANGES.rst:536 +#: ../../../CHANGES.rst:579 msgid "" "Logger name for processing events is changed to :code:`aiogram.events`. " "`#830 `_" msgstr "" -#: ../../../CHANGES.rst:538 +#: ../../../CHANGES.rst:581 msgid "" "Added full support of Telegram Bot API 5.6 and 5.7 `#835 " "`_" msgstr "" -#: ../../../CHANGES.rst:540 +#: ../../../CHANGES.rst:583 msgid "" "**BREAKING** Events isolation mechanism is moved from FSM storages to " "standalone managers `#838 " "`_" msgstr "" -#: ../../../CHANGES.rst:546 +#: ../../../CHANGES.rst:589 msgid "3.0.0b1 (2021-12-12)" msgstr "" -#: ../../../CHANGES.rst:551 +#: ../../../CHANGES.rst:594 msgid "Added new custom operation for MagicFilter named :code:`as_`" msgstr "" -#: ../../../CHANGES.rst:553 +#: ../../../CHANGES.rst:596 msgid "Now you can use it to get magic filter result as handler argument" msgstr "" -#: ../../../CHANGES.rst:569 +#: ../../../CHANGES.rst:612 msgid "`#759 `_" msgstr "" -#: ../../../CHANGES.rst:575 +#: ../../../CHANGES.rst:618 msgid "" "Fixed: Missing :code:`ChatMemberHandler` import in " ":code:`aiogram/dispatcher/handler` `#751 " "`_" msgstr "" -#: ../../../CHANGES.rst:582 +#: ../../../CHANGES.rst:625 msgid "" "Check :code:`destiny` in case of no :code:`with_destiny` enabled in " "RedisStorage key builder `#776 " "`_" msgstr "" -#: ../../../CHANGES.rst:584 +#: ../../../CHANGES.rst:627 msgid "" "Added full support of `Bot API 5.5 `_ `#777 " "`_" msgstr "" -#: ../../../CHANGES.rst:586 +#: ../../../CHANGES.rst:629 msgid "" "Stop using feature from #336. From now settings of client-session should " "be placed as initializer arguments instead of changing instance " "attributes. `#778 `_" msgstr "" -#: ../../../CHANGES.rst:588 +#: ../../../CHANGES.rst:631 msgid "" "Make TelegramAPIServer files wrapper in local mode bi-directional " "(server-client, client-server) Now you can convert local path to server " @@ -1084,11 +1149,11 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:594 +#: ../../../CHANGES.rst:637 msgid "3.0.0a18 (2021-11-10)" msgstr "" -#: ../../../CHANGES.rst:599 +#: ../../../CHANGES.rst:642 msgid "" "Breaking: Changed the signature of the session middlewares Breaking: " "Renamed AiohttpSession.make_request method parameter from call to method " @@ -1096,258 +1161,258 @@ msgid "" "outgoing requests `#716 `_" msgstr "" -#: ../../../CHANGES.rst:603 +#: ../../../CHANGES.rst:646 msgid "" "Improved description of filters resolving error. For example when you try" " to pass wrong type of argument to the filter but don't know why filter " "is not resolved now you can get error like this:" msgstr "" -#: ../../../CHANGES.rst:613 +#: ../../../CHANGES.rst:656 msgid "`#717 `_" msgstr "" -#: ../../../CHANGES.rst:614 +#: ../../../CHANGES.rst:657 msgid "" "**Breaking internal API change** Reworked FSM Storage record keys " "propagation `#723 `_" msgstr "" -#: ../../../CHANGES.rst:617 +#: ../../../CHANGES.rst:660 msgid "" "Implemented new filter named :code:`MagicData(magic_data)` that helps to " "filter event by data from middlewares or other filters" msgstr "" -#: ../../../CHANGES.rst:619 +#: ../../../CHANGES.rst:662 msgid "" "For example your bot is running with argument named :code:`config` that " "contains the application config then you can filter event by value from " "this config:" msgstr "" -#: ../../../CHANGES.rst:625 +#: ../../../CHANGES.rst:668 msgid "`#724 `_" msgstr "" -#: ../../../CHANGES.rst:631 +#: ../../../CHANGES.rst:674 msgid "" "Fixed I18n context inside error handlers `#726 " "`_" msgstr "" -#: ../../../CHANGES.rst:633 +#: ../../../CHANGES.rst:676 msgid "" "Fixed bot session closing before emit shutdown `#734 " "`_" msgstr "" -#: ../../../CHANGES.rst:635 +#: ../../../CHANGES.rst:678 msgid "" "Fixed: bound filter resolving does not require children routers `#736 " "`_" msgstr "" -#: ../../../CHANGES.rst:642 +#: ../../../CHANGES.rst:685 msgid "" "Enabled testing on Python 3.10 Removed `async_lru` dependency (is " "incompatible with Python 3.10) and replaced usage with protected property" " `#719 `_" msgstr "" -#: ../../../CHANGES.rst:645 +#: ../../../CHANGES.rst:688 msgid "" "Converted README.md to README.rst and use it as base file for docs `#725 " "`_" msgstr "" -#: ../../../CHANGES.rst:647 +#: ../../../CHANGES.rst:690 msgid "Rework filters resolving:" msgstr "" -#: ../../../CHANGES.rst:649 +#: ../../../CHANGES.rst:692 msgid "Automatically apply Bound Filters with default values to handlers" msgstr "" -#: ../../../CHANGES.rst:650 +#: ../../../CHANGES.rst:693 msgid "Fix data transfer from parent to included routers filters" msgstr "" -#: ../../../CHANGES.rst:651 +#: ../../../CHANGES.rst:694 msgid "`#727 `_" msgstr "" -#: ../../../CHANGES.rst:652 +#: ../../../CHANGES.rst:695 msgid "" "Added full support of Bot API 5.4 https://core.telegram.org/bots/api-" "changelog#november-5-2021 `#744 " "`_" msgstr "" -#: ../../../CHANGES.rst:658 +#: ../../../CHANGES.rst:701 msgid "3.0.0a17 (2021-09-24)" msgstr "" -#: ../../../CHANGES.rst:663 +#: ../../../CHANGES.rst:706 msgid "" "Added :code:`html_text` and :code:`md_text` to Message object `#708 " "`_" msgstr "" -#: ../../../CHANGES.rst:665 +#: ../../../CHANGES.rst:708 msgid "" "Refactored I18n, added context managers for I18n engine and current " "locale `#709 `_" msgstr "" -#: ../../../CHANGES.rst:670 +#: ../../../CHANGES.rst:713 msgid "3.0.0a16 (2021-09-22)" msgstr "" -#: ../../../CHANGES.rst:675 +#: ../../../CHANGES.rst:718 msgid "Added support of local Bot API server files downloading" msgstr "" -#: ../../../CHANGES.rst:677 +#: ../../../CHANGES.rst:720 msgid "" "When Local API is enabled files can be downloaded via " "`bot.download`/`bot.download_file` methods. `#698 " "`_" msgstr "" -#: ../../../CHANGES.rst:679 +#: ../../../CHANGES.rst:722 msgid "" "Implemented I18n & L10n support `#701 " "`_" msgstr "" -#: ../../../CHANGES.rst:686 +#: ../../../CHANGES.rst:729 msgid "" "Covered by tests and docs KeyboardBuilder util `#699 " "`_" msgstr "" -#: ../../../CHANGES.rst:688 +#: ../../../CHANGES.rst:731 msgid "**Breaking!!!**. Refactored and renamed exceptions." msgstr "" -#: ../../../CHANGES.rst:690 +#: ../../../CHANGES.rst:733 msgid "" "Exceptions module was moved from :code:`aiogram.utils.exceptions` to " ":code:`aiogram.exceptions`" msgstr "" -#: ../../../CHANGES.rst:691 +#: ../../../CHANGES.rst:734 msgid "Added prefix `Telegram` for all error classes" msgstr "" -#: ../../../CHANGES.rst:692 +#: ../../../CHANGES.rst:735 msgid "`#700 `_" msgstr "" -#: ../../../CHANGES.rst:693 +#: ../../../CHANGES.rst:736 msgid "" "Replaced all :code:`pragma: no cover` marks via global " ":code:`.coveragerc` config `#702 " "`_" msgstr "" -#: ../../../CHANGES.rst:695 +#: ../../../CHANGES.rst:738 msgid "Updated dependencies." msgstr "" -#: ../../../CHANGES.rst:697 +#: ../../../CHANGES.rst:740 msgid "" "**Breaking for framework developers** Now all optional dependencies " "should be installed as extra: `poetry install -E fast -E redis -E proxy " "-E i18n -E docs` `#703 `_" msgstr "" -#: ../../../CHANGES.rst:703 +#: ../../../CHANGES.rst:746 msgid "3.0.0a15 (2021-09-10)" msgstr "" -#: ../../../CHANGES.rst:708 +#: ../../../CHANGES.rst:751 msgid "" "Ability to iterate over all states in StatesGroup. Aiogram already had in" " check for states group so this is relative feature. `#666 " "`_" msgstr "" -#: ../../../CHANGES.rst:716 +#: ../../../CHANGES.rst:759 msgid "" "Fixed incorrect type checking in the " ":class:`aiogram.utils.keyboard.KeyboardBuilder` `#674 " "`_" msgstr "" -#: ../../../CHANGES.rst:723 +#: ../../../CHANGES.rst:766 msgid "" "Disable ContentType filter by default `#668 " "`_" msgstr "" -#: ../../../CHANGES.rst:725 +#: ../../../CHANGES.rst:768 msgid "" "Moved update type detection from Dispatcher to Update object `#669 " "`_" msgstr "" -#: ../../../CHANGES.rst:727 +#: ../../../CHANGES.rst:770 msgid "" "Updated **pre-commit** config `#681 " "`_" msgstr "" -#: ../../../CHANGES.rst:729 +#: ../../../CHANGES.rst:772 msgid "" "Reworked **handlers_in_use** util. Function moved to Router as method " "**.resolve_used_update_types()** `#682 " "`_" msgstr "" -#: ../../../CHANGES.rst:734 +#: ../../../CHANGES.rst:777 msgid "3.0.0a14 (2021-08-17)" msgstr "" -#: ../../../CHANGES.rst:739 +#: ../../../CHANGES.rst:782 msgid "" "add aliases for edit/delete reply markup to Message `#662 " "`_" msgstr "" -#: ../../../CHANGES.rst:741 +#: ../../../CHANGES.rst:784 msgid "" "Reworked outer middleware chain. Prevent to call many times the outer " "middleware for each nested router `#664 " "`_" msgstr "" -#: ../../../CHANGES.rst:748 +#: ../../../CHANGES.rst:791 msgid "" "Prepare parse mode for InputMessageContent in AnswerInlineQuery method " "`#660 `_" msgstr "" -#: ../../../CHANGES.rst:755 +#: ../../../CHANGES.rst:798 msgid "" "Added integration with :code:`towncrier` `#602 " "`_" msgstr "" -#: ../../../CHANGES.rst:762 +#: ../../../CHANGES.rst:805 msgid "" "Added `.editorconfig` `#650 " "`_" msgstr "" -#: ../../../CHANGES.rst:764 +#: ../../../CHANGES.rst:807 msgid "" "Redis storage speedup globals `#651 " "`_" msgstr "" -#: ../../../CHANGES.rst:766 +#: ../../../CHANGES.rst:809 msgid "" "add allow_sending_without_reply param to Message reply aliases `#663 " "`_" @@ -2975,3 +3040,6 @@ msgstr "" #~ "warning was added FastAPI still not " #~ "support V2)" #~ msgstr "" + +#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/deployment/index.po b/docs/locale/uk_UA/LC_MESSAGES/deployment/index.po new file mode 100644 index 00000000..e5fe6ce8 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/deployment/index.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../deployment/index.rst:3 +msgid "Deployment" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po new file mode 100644 index 00000000..b5b6c91d --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po @@ -0,0 +1,130 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-07 23:01+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/filters/text.rst:3 +msgid "Text" +msgstr "" + +#: aiogram.filters.text.Text:1 of +msgid "" +"Is useful for filtering text :class:`aiogram.types.message.Message`, any " +":class:`aiogram.types.callback_query.CallbackQuery` with `data`, " +":class:`aiogram.types.inline_query.InlineQuery` or " +":class:`aiogram.types.poll.Poll` question." +msgstr "" + +#: aiogram.filters.text.Text:7 of +msgid "" +"Only one of `text`, `contains`, `startswith` or `endswith` argument can " +"be used at once. Any of that arguments can be string, list, set or tuple " +"of strings." +msgstr "" + +#: aiogram.filters.text.Text:12 of +msgid "" +"use :ref:`magic-filter `. For example do :pycode:`F.text " +"== \"text\"` instead" +msgstr "" + +#: ../../dispatcher/filters/text.rst:10 +msgid "Can be imported:" +msgstr "" + +#: ../../dispatcher/filters/text.rst:12 +msgid ":code:`from aiogram.filters.text import Text`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:13 +msgid ":code:`from aiogram.filters import Text`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:16 +msgid "Usage" +msgstr "" + +#: ../../dispatcher/filters/text.rst:18 +msgid "" +"Text equals with the specified value: :code:`Text(text=\"text\") # value" +" == 'text'`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:19 +msgid "" +"Text starts with the specified value: :code:`Text(startswith=\"text\") #" +" value.startswith('text')`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:20 +msgid "" +"Text ends with the specified value: :code:`Text(endswith=\"text\") # " +"value.endswith('text')`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:21 +msgid "" +"Text contains the specified value: :code:`Text(contains=\"text\") # " +"value in 'text'`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:22 +msgid "" +"Any of previous listed filters can be list, set or tuple of strings " +"that's mean any of listed value should be " +"equals/startswith/endswith/contains: :code:`Text(text=[\"text\", " +"\"spam\"])`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:23 +msgid "" +"Ignore case can be combined with any previous listed filter: " +":code:`Text(text=\"Text\", ignore_case=True) # value.lower() == " +"'text'.lower()`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:26 +msgid "Allowed handlers" +msgstr "" + +#: ../../dispatcher/filters/text.rst:28 +msgid "Allowed update types for this filter:" +msgstr "" + +#: ../../dispatcher/filters/text.rst:30 +msgid ":code:`message`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:31 +msgid ":code:`edited_message`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:32 +msgid ":code:`channel_post`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:33 +msgid ":code:`edited_channel_post`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:34 +msgid ":code:`inline_query`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:35 +msgid ":code:`callback_query`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/index.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/index.po index af37fd77..67414eef 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/index.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/index.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/index.rst:3 msgid "Handling events" @@ -54,3 +54,23 @@ msgid "" "Dispatcher is also separated into two entities - Router and Dispatcher. " "Dispatcher is subclass of router and should be always is root router." msgstr "" + +#: ../../dispatcher/index.rst:18 +msgid "Telegram supports two ways of receiving updates:" +msgstr "" + +#: ../../dispatcher/index.rst:20 +msgid "" +":ref:`Webhook ` - you should configure your web server to " +"receive updates from Telegram;" +msgstr "" + +#: ../../dispatcher/index.rst:21 +msgid "" +":ref:`Long polling ` - you should request updates from " +"Telegram." +msgstr "" + +#: ../../dispatcher/index.rst:23 +msgid "So, you can use both of them with *aiogram*." +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/long_polling.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/long_polling.po new file mode 100644 index 00000000..d5581be5 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/long_polling.po @@ -0,0 +1,62 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/long_polling.rst:5 +msgid "Long-polling" +msgstr "" + +#: ../../dispatcher/long_polling.rst:7 +msgid "" +"Long-polling is a technology that allows a Telegram server to send " +"updates in case when you don't have dedicated IP address or port to " +"receive webhooks for example on a developer machine." +msgstr "" + +#: ../../dispatcher/long_polling.rst:11 +msgid "" +"To use long-polling mode you should use " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.start_polling` or " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.run_polling` methods." +msgstr "" + +#: ../../dispatcher/long_polling.rst:16 +msgid "" +"You can use polling from only one polling process per single Bot token, " +"in other case Telegram server will return an error." +msgstr "" + +#: ../../dispatcher/long_polling.rst:21 +msgid "" +"If you will need to scale your bot, you should use webhooks instead of " +"long-polling." +msgstr "" + +#: ../../dispatcher/long_polling.rst:25 +msgid "If you will use multibot mode, you should use webhook mode for all bots." +msgstr "" + +#: ../../dispatcher/long_polling.rst:28 +msgid "Example" +msgstr "" + +#: ../../dispatcher/long_polling.rst:30 +msgid "" +"This example will show you how to create simple echo bot based on long-" +"polling." +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po new file mode 100644 index 00000000..b5cbbcad --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po @@ -0,0 +1,303 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/webhook.rst:5 +msgid "Webhook" +msgstr "" + +#: ../../dispatcher/webhook.rst:7 +msgid "" +"Telegram Bot API supports webhook. If you set webhook for your bot, " +"Telegram will send updates to the specified url. You can use " +":meth:`aiogram.methods.set_webhook.SetWebhook` method to specify a url " +"and receive incoming updates on it." +msgstr "" + +#: ../../dispatcher/webhook.rst:14 +msgid "If you use webhook, you can't use long polling at the same time." +msgstr "" + +#: ../../dispatcher/webhook.rst:16 +msgid "" +"Before start i'll recommend you to read `official Telegram's " +"documentation about webhook `_" +msgstr "" + +#: ../../dispatcher/webhook.rst:18 +msgid "After you read it, you can start to read this section." +msgstr "" + +#: ../../dispatcher/webhook.rst:20 +msgid "" +"Generally to use webhook with aiogram you should use any async web " +"framework. Buy out of the box aiogram has an aiohttp integration, so " +"we'll use it." +msgstr "" + +#: ../../dispatcher/webhook.rst:25 +msgid "" +"You can use any async web framework you want, but you should write your " +"own integration if you don't use aiohttp." +msgstr "" + +#: ../../dispatcher/webhook.rst:29 +msgid "aiohttp integration" +msgstr "" + +#: ../../dispatcher/webhook.rst:31 +msgid "Out of the box aiogram has aiohttp integration, so you can use it." +msgstr "" + +#: ../../dispatcher/webhook.rst:33 +msgid "" +"Here is available few ways to do it using different implementations of " +"the webhook controller:" +msgstr "" + +#: ../../dispatcher/webhook.rst:35 +msgid "" +":class:`aiogram.webhook.aiohttp_server.BaseRequestHandler` - Abstract " +"class for aiohttp webhook controller" +msgstr "" + +#: ../../dispatcher/webhook.rst:36 +msgid "" +":class:`aiogram.webhook.aiohttp_server.SimpleRequestHandler` - Simple " +"webhook controller, uses single Bot instance" +msgstr "" + +#: ../../dispatcher/webhook.rst:37 +msgid "" +":class:`aiogram.webhook.aiohttp_server.TokenBasedRequestHandler` - Token" +" based webhook controller, uses multiple Bot instances and tokens" +msgstr "" + +#: ../../dispatcher/webhook.rst:39 +msgid "You can use it as is or inherit from it and override some methods." +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:1 of +msgid "" +"Base handler that helps to handle incoming request from aiohttp and " +"propagate it to the Dispatcher" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__ +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__ +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__ +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.ip_filter_middleware of +msgid "Parameters" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:4 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:3 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:9 of +msgid "instance of :class:`aiogram.dispatcher.dispatcher.Dispatcher`" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:5 of +msgid "" +"immediately responds to the Telegram instead of a waiting end of a " +"handler process" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:1 of +msgid "Register route and shutdown callback" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:3 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:3 of +msgid "instance of aiohttp Application" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:4 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:4 of +msgid "route path" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:1 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:1 of +msgid "This method should be implemented in subclasses of this class." +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:3 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:3 of +msgid "Resolve Bot instance from request." +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.ip_filter_middleware of +msgid "Returns" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:6 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:6 of +msgid "Bot instance" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:1 of +msgid "Handler for single Bot instance" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:4 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:10 of +msgid "" +"immediately responds to the Telegram instead of a waiting end of handler " +"process" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:6 of +msgid "instance of :class:`aiogram.client.bot.Bot`" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.close:1 of +msgid "Close bot session" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:1 of +msgid "" +"Handler that supports multiple bots the context will be resolved from " +"path variable 'bot_token'" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:6 of +msgid "" +"This handler is not recommended in due to token is available in URL and " +"can be logged by reverse proxy server or other middleware." +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:12 of +msgid "kwargs that will be passed to new Bot instance" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:1 of +msgid "Validate path, register route and shutdown callback" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot:1 of +msgid "Get bot token from a path and create or get from cache Bot instance" +msgstr "" + +#: ../../dispatcher/webhook.rst:51 +msgid "Security" +msgstr "" + +#: ../../dispatcher/webhook.rst:53 +msgid "" +"Telegram supports two methods to verify incoming requests that they are " +"from Telegram:" +msgstr "" + +#: ../../dispatcher/webhook.rst:56 +msgid "Using a secret token" +msgstr "" + +#: ../../dispatcher/webhook.rst:58 +msgid "" +"When you set webhook, you can specify a secret token and then use it to " +"verify incoming requests." +msgstr "" + +#: ../../dispatcher/webhook.rst:61 +msgid "Using IP filtering" +msgstr "" + +#: ../../dispatcher/webhook.rst:63 +msgid "" +"You can specify a list of IP addresses from which you expect incoming " +"requests, and then use it to verify incoming requests." +msgstr "" + +#: ../../dispatcher/webhook.rst:65 +msgid "" +"It can be acy using firewall rules or nginx configuration or middleware " +"on application level." +msgstr "" + +#: ../../dispatcher/webhook.rst:67 +msgid "" +"So, aiogram has an implementation of the IP filtering middleware for " +"aiohttp." +msgstr "" + +#: ../../dispatcher/webhook.rst:75 +msgid "Examples" +msgstr "" + +#: ../../dispatcher/webhook.rst:78 +msgid "Behind reverse proxy" +msgstr "" + +#: ../../dispatcher/webhook.rst:80 +msgid "" +"In this example we'll use aiohttp as web framework and nginx as reverse " +"proxy." +msgstr "" + +#: ../../dispatcher/webhook.rst:84 +msgid "" +"When you use nginx as reverse proxy, you should set `proxy_pass` to your " +"aiohttp server address." +msgstr "" + +#: ../../dispatcher/webhook.rst:98 +msgid "Without reverse proxy (not recommended)" +msgstr "" + +#: ../../dispatcher/webhook.rst:100 +msgid "" +"In case you want can't use reverse proxy, you can use aiohttp's ssl " +"context." +msgstr "" + +#: ../../dispatcher/webhook.rst:102 +msgid "Also this example contains usage with self-signed certificate." +msgstr "" + +#: ../../dispatcher/webhook.rst:108 +msgid "With using other web framework" +msgstr "" + +#: ../../dispatcher/webhook.rst:110 +msgid "" +"You can pass incoming request to aiogram's webhook controller from any " +"web framework you want." +msgstr "" + +#: ../../dispatcher/webhook.rst:112 +msgid "" +"Read more about it in " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_webhook_update` or " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_update` methods." +msgstr "" + +#: ../../dispatcher/webhook.rst:123 +msgid "" +"If you want to use reply into webhook, you should check that result of " +"the :code:`feed_update` methods is an instance of API method and build " +":code:`multipart/form-data` or :code:`application/json` response body " +"manually." +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/utils/keyboard.po b/docs/locale/uk_UA/LC_MESSAGES/utils/keyboard.po index a8baf774..c6b0a3f2 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/utils/keyboard.po +++ b/docs/locale/uk_UA/LC_MESSAGES/utils/keyboard.po @@ -7,62 +7,110 @@ msgid "" msgstr "" "Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-07 23:24+0200\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: 2022-10-13 21:54+0300\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" -#: ../../utils/keyboard.rst:3 +#: ../../utils/keyboard.rst:4 msgid "Keyboard builder" msgstr "Конструктор клавіатури" -#: ../../utils/keyboard.rst:5 +#: ../../utils/keyboard.rst:6 msgid "Keyboard builder helps to dynamically generate markup." msgstr "Конструктор клавіатури допомагає динамічно генерувати розмітку" -#: ../../utils/keyboard.rst:9 +#: ../../utils/keyboard.rst:10 msgid "" "Note that if you have static markup, it's best to define it explicitly " "rather than using builder, but if you have dynamic markup configuration, " "feel free to use builder as you wish." -msgstr "Зауважте, що якщо у вас є статична розмітка, найкраще визначити її явно, " -"а не використовувати конструктор, але якщо у вас є конфігурація динамічної розмітки, " -"сміливо використовуйте конструктор на свій розсуд." +msgstr "" +"Зауважте, що якщо у вас є статична розмітка, найкраще визначити її явно, " +"а не використовувати конструктор, але якщо у вас є конфігурація " +"динамічної розмітки, сміливо використовуйте конструктор на свій розсуд." -#: ../../utils/keyboard.rst:14 +#: ../../utils/keyboard.rst:15 msgid "Usage example" msgstr "Приклад використання" -#: ../../utils/keyboard.rst:29 -msgid "Base builder" -msgstr "Базовий конструктор" - -#: aiogram.utils.keyboard.ReplyKeyboardBuilder:1 of -msgid "Reply keyboard builder inherits all methods from generic builder" +#: ../../utils/keyboard.rst:17 +msgid "For example you want to generate inline keyboard with 10 buttons" msgstr "" -"Конструктор клавіатури відповідей успадковує всі методи від " + +#: ../../utils/keyboard.rst:27 +msgid "" +"then adjust this buttons to some grid, for example first line will have 3" +" buttons, the next lines will have 2 buttons" +msgstr "" + +#: ../../utils/keyboard.rst:33 +msgid "also you can attach another builder to this one" +msgstr "" + +#: ../../utils/keyboard.rst:40 +msgid "or you can attach some already generated markup" +msgstr "" + +#: ../../utils/keyboard.rst:47 +msgid "and finally you can export this markup to use it in your message" +msgstr "" + +#: ../../utils/keyboard.rst:53 +#, fuzzy +msgid "Reply keyboard builder has the same interface" +msgstr "Конструктор клавіатури допомагає динамічно генерувати розмітку" + +#: ../../utils/keyboard.rst:57 +msgid "" +"Note that you can't attach reply keyboard builder to inline keyboard " +"builder and vice versa" +msgstr "" + +#: ../../utils/keyboard.rst:61 +msgid "Inline Keyboard" +msgstr "Клавіатура під повідомленням(Inline Keyboard)" + +#: aiogram.utils.keyboard.InlineKeyboardBuilder:1 of +msgid "Inline keyboard builder inherits all methods from generic builder" +msgstr "" +"Конструктор клавіатури під повідомленням успадковує всі методи від " "універсального конструктора" +#: ../../utils/keyboard.rst:69 +msgid "Add new inline button to markup" +msgstr "Додавання нової кнопки до розмітки" + +#: ../../utils/keyboard.rst:74 +msgid "Construct an InlineKeyboardMarkup" +msgstr "Створення InlineKeyboardMarkup" + #: aiogram.utils.keyboard.KeyboardBuilder.add:1 of msgid "Add one or many buttons to markup." msgstr "Додавання однієї або кількох кнопок до розмітки." +#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup #: aiogram.utils.keyboard.KeyboardBuilder.add #: aiogram.utils.keyboard.KeyboardBuilder.adjust -#: aiogram.utils.keyboard.KeyboardBuilder.row of +#: aiogram.utils.keyboard.KeyboardBuilder.row +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup of msgid "Parameters" msgstr "Параметри" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.buttons +#: aiogram.utils.keyboard.InlineKeyboardBuilder.copy +#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup #: aiogram.utils.keyboard.KeyboardBuilder.add #: aiogram.utils.keyboard.KeyboardBuilder.adjust #: aiogram.utils.keyboard.KeyboardBuilder.export #: aiogram.utils.keyboard.KeyboardBuilder.row #: aiogram.utils.keyboard.ReplyKeyboardBuilder.buttons -#: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy of +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup of msgid "Returns" msgstr "Повертає" @@ -83,10 +131,12 @@ msgstr "" "передано параметр repeat=True, усі розміри будуть повторюватися, поки є " "доступні кнопки" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.buttons:1 #: aiogram.utils.keyboard.ReplyKeyboardBuilder.buttons:1 of msgid "Get flatten set of all buttons" msgstr "Отримання плоского списку усіх кнопок" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.copy:1 #: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy:1 of msgid "Make full copy of current builder with markup" msgstr "Робить повну копію поточного конструктора з розміткою" @@ -95,6 +145,11 @@ msgstr "Робить повну копію поточного конструкт msgid "Export configured markup as list of lists of buttons" msgstr "Експортує налаштовану розмітку як список списків кнопок" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup:1 +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup:1 of +msgid "Create builder from existing markup" +msgstr "" + #: aiogram.utils.keyboard.KeyboardBuilder.row:1 of msgid "Add row to markup" msgstr "Додає рядок у розмітку" @@ -105,32 +160,23 @@ msgstr "" "Коли передано занадто багато кнопок, вони будуть розділені на багато " "рядків" -#: ../../utils/keyboard.rst:35 -msgid "Inline Keyboard" -msgstr "Клавіатура під повідомленням(Inline Keyboard)" - -#: aiogram.utils.keyboard.InlineKeyboardBuilder:1 of -msgid "Inline keyboard builder inherits all methods from generic builder" -msgstr "" -"Конструктор клавіатури під повідомленням успадковує всі методи від " -"універсального конструктора" - -#: ../../utils/keyboard.rst:43 -msgid "Add new inline button to markup" -msgstr "Додавання нової кнопки до розмітки" - -#: ../../utils/keyboard.rst:48 -msgid "Construct an InlineKeyboardMarkup" -msgstr "Створення InlineKeyboardMarkup" - -#: ../../utils/keyboard.rst:51 +#: ../../utils/keyboard.rst:77 msgid "Reply Keyboard" msgstr "Клавіатура відповідей" -#: ../../utils/keyboard.rst:59 +#: aiogram.utils.keyboard.ReplyKeyboardBuilder:1 of +msgid "Reply keyboard builder inherits all methods from generic builder" +msgstr "" +"Конструктор клавіатури відповідей успадковує всі методи від " +"універсального конструктора" + +#: ../../utils/keyboard.rst:85 msgid "Add new button to markup" msgstr "Додавання нової кнопки до розмітки" -#: ../../utils/keyboard.rst:64 +#: ../../utils/keyboard.rst:90 msgid "Construct an ReplyKeyboardMarkup" msgstr "Створення ReplyKeyboardMarkup" + +#~ msgid "Base builder" +#~ msgstr "Базовий конструктор" diff --git a/examples/echo_bot.py b/examples/echo_bot.py index e18201af..8ac45e43 100644 --- a/examples/echo_bot.py +++ b/examples/echo_bot.py @@ -2,6 +2,7 @@ import asyncio import logging from aiogram import Bot, Dispatcher, Router, types +from aiogram.enums import ParseMode from aiogram.filters import Command from aiogram.types import Message @@ -12,10 +13,10 @@ TOKEN = "42:TOKEN" router = Router() -@router.message(Command(commands=["start"])) +@router.message(Command("start")) async def command_start_handler(message: Message) -> None: """ - This handler receive messages with `/start` command + This handler receives messages with `/start` command """ # Most event objects have aliases for API methods that can be called in events' context # For example if you want to answer to incoming message you can use `message.answer(...)` alias @@ -28,12 +29,12 @@ async def command_start_handler(message: Message) -> None: @router.message() async def echo_handler(message: types.Message) -> None: """ - Handler will forward received message back to the sender + Handler will forward receive a message back to the sender - By default, message handler will handle all message types (like text, photo, sticker and etc.) + By default, message handler will handle all message types (like a text, photo, sticker etc.) """ try: - # Send copy of the received message + # Send a copy of the received message await message.send_copy(chat_id=message.chat.id) except TypeError: # But not all the types is supported to be copied so need to handle it @@ -47,7 +48,7 @@ async def main() -> None: dp.include_router(router) # Initialize Bot instance with a default parse mode which will be passed to all API calls - bot = Bot(TOKEN, parse_mode="HTML") + bot = Bot(TOKEN, parse_mode=ParseMode.HTML) # And the run events dispatching await dp.start_polling(bot) diff --git a/examples/echo_bot_webhook.py b/examples/echo_bot_webhook.py new file mode 100644 index 00000000..d8ed41c5 --- /dev/null +++ b/examples/echo_bot_webhook.py @@ -0,0 +1,104 @@ +""" +This example shows how to use webhook on behind of any reverse proxy (nginx, traefik, ingress etc.) +""" +import logging + +from aiohttp import web + +from aiogram import Bot, Dispatcher, Router, types +from aiogram.enums import ParseMode +from aiogram.filters import Command +from aiogram.types import Message +from aiogram.webhook.aiohttp_server import SimpleRequestHandler, setup_application + +# Bot token can be obtained via https://t.me/BotFather +TOKEN = "42:TOKEN" + +# Webserver settings +# bind localhost only to prevent any external access +WEB_SERVER_HOST = "127.0.0.1" +# Port for incoming request from reverse proxy. Should be any available port +WEB_SERVER_PORT = 8080 + +# Path to webhook route, on which Telegram will send requests +WEBHOOK_PATH = "/webhook" +# Secret key to validate requests from Telegram (optional) +WEBHOOK_SECRET = "my-secret" +# Base URL for webhook will be used to generate webhook URL for Telegram, +# in this example it is used public DNS with HTTPS support +BASE_WEBHOOK_URL = "https://aiogram.dev/" + +# All handlers should be attached to the Router (or Dispatcher) +router = Router() + + +@router.message(Command(commands=["start"])) +async def command_start_handler(message: Message) -> None: + """ + This handler receives messages with `/start` command + """ + # Most event objects have aliases for API methods that can be called in events' context + # For example if you want to answer to incoming message you can use `message.answer(...)` alias + # and the target chat will be passed to :ref:`aiogram.methods.send_message.SendMessage` + # method automatically or call API method directly via + # Bot instance: `bot.send_message(chat_id=message.chat.id, ...)` + await message.answer(f"Hello, {message.from_user.full_name}!") + + +@router.message() +async def echo_handler(message: types.Message) -> None: + """ + Handler will forward receive a message back to the sender + + By default, message handler will handle all message types (like text, photo, sticker etc.) + """ + try: + # Send a copy of the received message + await message.send_copy(chat_id=message.chat.id) + except TypeError: + # But not all the types is supported to be copied so need to handle it + await message.answer("Nice try!") + + +async def on_startup(bot: Bot) -> None: + # If you have a self-signed SSL certificate, then you will need to send a public + # certificate to Telegram + await bot.set_webhook(f"{BASE_WEBHOOK_URL}{WEBHOOK_PATH}") + + +def main() -> None: + # Dispatcher is a root router + dp = Dispatcher() + # ... and all other routers should be attached to Dispatcher + dp.include_router(router) + + # Register startup hook to initialize webhook + dp.startup.register(on_startup) + + # Initialize Bot instance with a default parse mode which will be passed to all API calls + bot = Bot(TOKEN, parse_mode=ParseMode.HTML) + + # Create aiohttp.web.Application instance + app = web.Application() + + # Create an instance of request handler, + # aiogram has few implementations for different cases of usage + # In this example we use SimpleRequestHandler which is designed to handle simple cases + webhook_requests_handler = SimpleRequestHandler( + dispatcher=dp, + bot=bot, + secret_token=WEBHOOK_SECRET, + ) + # Register webhook handler on application + webhook_requests_handler.register(app, path=WEBHOOK_PATH) + + # Mount dispatcher startup and shutdown hooks to aiohttp application + setup_application(app, dp, bot=bot) + + # And finally start webserver + web.run_app(app, host=WEB_SERVER_HOST, port=WEB_SERVER_PORT) + + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO) + main() diff --git a/examples/echo_bot_webhook_ssl.py b/examples/echo_bot_webhook_ssl.py new file mode 100644 index 00000000..463717f0 --- /dev/null +++ b/examples/echo_bot_webhook_ssl.py @@ -0,0 +1,118 @@ +""" +This example shows how to use webhook with SSL certificate. +""" +import logging +import ssl + +from aiohttp import web + +from aiogram import Bot, Dispatcher, Router, types +from aiogram.enums import ParseMode +from aiogram.filters import Command +from aiogram.types import FSInputFile, Message +from aiogram.webhook.aiohttp_server import SimpleRequestHandler, setup_application + +# Bot token can be obtained via https://t.me/BotFather +TOKEN = "42:TOKEN" + +# Webserver settings +# bind localhost only to prevent any external access +WEB_SERVER_HOST = "127.0.0.1" +# Port for incoming request from reverse proxy. Should be any available port +WEB_SERVER_PORT = 8080 + +# Path to webhook route, on which Telegram will send requests +WEBHOOK_PATH = "/webhook" +# Secret key to validate requests from Telegram (optional) +WEBHOOK_SECRET = "my-secret" +# Base URL for webhook will be used to generate webhook URL for Telegram, +# in this example it is used public address with TLS support +BASE_WEBHOOK_URL = "https://aiogram.dev" + +# Path to SSL certificate and private key for self-signed certificate. +WEBHOOK_SSL_CERT = "/path/to/cert.pem" +WEBHOOK_SSL_PRIV = "/path/to/private.key" + +# All handlers should be attached to the Router (or Dispatcher) +router = Router() + + +@router.message(Command("start")) +async def command_start_handler(message: Message) -> None: + """ + This handler receives messages with `/start` command + """ + # Most event objects have aliases for API methods that can be called in events' context + # For example if you want to answer to incoming message you can use `message.answer(...)` alias + # and the target chat will be passed to :ref:`aiogram.methods.send_message.SendMessage` + # method automatically or call API method directly via + # Bot instance: `bot.send_message(chat_id=message.chat.id, ...)` + await message.answer(f"Hello, {message.from_user.full_name}!") + + +@router.message() +async def echo_handler(message: types.Message) -> None: + """ + Handler will forward receive a message back to the sender + + By default, message handler will handle all message types (like text, photo, sticker etc.) + """ + try: + # Send a copy of the received message + await message.send_copy(chat_id=message.chat.id) + except TypeError: + # But not all the types is supported to be copied so need to handle it + await message.answer("Nice try!") + + +async def on_startup(bot: Bot) -> None: + # In case when you have a self-signed SSL certificate, you need to send the certificate + # itself to Telegram servers for validation purposes + # (see https://core.telegram.org/bots/self-signed) + # But if you have a valid SSL certificate, you SHOULD NOT send it to Telegram servers. + await bot.set_webhook( + f"{BASE_WEBHOOK_URL}{WEBHOOK_PATH}", + certificate=FSInputFile(WEBHOOK_SSL_CERT), + ) + + +def main() -> None: + # Dispatcher is a root router + dp = Dispatcher() + # ... and all other routers should be attached to Dispatcher + dp.include_router(router) + + # Register startup hook to initialize webhook + dp.startup.register(on_startup) + + # Initialize Bot instance with a default parse mode which will be passed to all API calls + bot = Bot(TOKEN, parse_mode=ParseMode.HTML) + + # Create aiohttp.web.Application instance + app = web.Application() + + # Create an instance of request handler, + # aiogram has few implementations for different cases of usage + # In this example we use SimpleRequestHandler which is designed to handle simple cases + webhook_requests_handler = SimpleRequestHandler( + dispatcher=dp, + bot=bot, + secret_token=WEBHOOK_SECRET, + ) + # Register webhook handler on application + webhook_requests_handler.register(app, path=WEBHOOK_PATH) + + # Mount dispatcher startup and shutdown hooks to aiohttp application + setup_application(app, dp, bot=bot) + + # Generate SSL context + context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) + context.load_cert_chain(WEBHOOK_SSL_CERT, WEBHOOK_SSL_PRIV) + + # And finally start webserver + web.run_app(app, host=WEB_SERVER_HOST, port=WEB_SERVER_PORT, ssl_context=context) + + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO) + main() diff --git a/examples/multibot.py b/examples/multibot.py index b6a324cd..57e75f8e 100644 --- a/examples/multibot.py +++ b/examples/multibot.py @@ -39,7 +39,7 @@ def is_bot_token(value: str) -> Union[bool, Dict[str, Any]]: return True -@main_router.message(Command(commands=["add"], magic=F.args.func(is_bot_token))) +@main_router.message(Command("add", magic=F.args.func(is_bot_token))) async def command_add_bot(message: Message, command: CommandObject, bot: Bot) -> Any: new_bot = Bot(token=command.args, session=bot.session) try: diff --git a/examples/specify_updates.py b/examples/specify_updates.py index f9380b91..b5d22afc 100644 --- a/examples/specify_updates.py +++ b/examples/specify_updates.py @@ -19,10 +19,10 @@ logging.basicConfig(level=logging.INFO) router = Router() -@router.message(Command(commands=["start"])) +@router.message(Command("start")) async def command_start_handler(message: Message) -> None: """ - This handler receive messages with `/start` command + This handler receives messages with `/start` command """ await message.answer(