mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Webhook docs (#1248)
* Added documentation for polling/webhook modes * Added changelog * Added changelog
This commit is contained in:
parent
62d4b9014c
commit
b311d59fce
37 changed files with 2595 additions and 692 deletions
1
CHANGES/1241.doc.rst
Normal file
1
CHANGES/1241.doc.rst
Normal file
|
|
@ -0,0 +1 @@
|
|||
Added documentation for webhook and polling modes.
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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 <webhook>` - you should configure your web server to receive updates from Telegram;
|
||||
- :ref:`Long polling <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
|
||||
|
|
|
|||
32
docs/dispatcher/long_polling.rst
Normal file
32
docs/dispatcher/long_polling.rst
Normal file
|
|
@ -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
|
||||
125
docs/dispatcher/webhook.rst
Normal file
125
docs/dispatcher/webhook.rst
Normal file
|
|
@ -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 <https://core.telegram.org/bots/webhooks>`_
|
||||
|
||||
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.
|
||||
30
docs/locale/en/LC_MESSAGES/api/enums/currency.po
Normal file
30
docs/locale/en/LC_MESSAGES/api/enums/currency.po
Normal file
|
|
@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
|
|
|||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
|
|
|||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
|||
"<https://core.telegram.org/bots/features#inline-keyboards>`_."
|
||||
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 <https://core.telegram.org/bots"
|
||||
|
|
|
|||
|
|
@ -8,14 +8,14 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: aiogram \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-03-11 01:52+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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 » <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 ""
|
||||
|
|
|
|||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
|
|
|||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
22
docs/locale/en/LC_MESSAGES/deployment/index.po
Normal file
22
docs/locale/en/LC_MESSAGES/deployment/index.po
Normal file
|
|
@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 <webhook>` - you should configure your web server to "
|
||||
"receive updates from Telegram;"
|
||||
msgstr ""
|
||||
|
||||
#: ../../dispatcher/index.rst:21
|
||||
msgid ""
|
||||
":ref:`Long polling <long-polling>` - you should request updates from "
|
||||
"Telegram."
|
||||
msgstr ""
|
||||
|
||||
#: ../../dispatcher/index.rst:23
|
||||
msgid "So, you can use both of them with *aiogram*."
|
||||
msgstr ""
|
||||
|
|
|
|||
62
docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po
Normal file
62
docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po
Normal file
|
|
@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
303
docs/locale/en/LC_MESSAGES/dispatcher/webhook.po
Normal file
303
docs/locale/en/LC_MESSAGES/dispatcher/webhook.po
Normal file
|
|
@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 <https://core.telegram.org/bots/webhooks>`_"
|
||||
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 ""
|
||||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
|
|
|||
30
docs/locale/uk_UA/LC_MESSAGES/api/enums/currency.po
Normal file
30
docs/locale/uk_UA/LC_MESSAGES/api/enums/currency.po
Normal file
|
|
@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
|
|
|||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
|
|
|||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
|||
"<https://core.telegram.org/bots/features#inline-keyboards>`_."
|
||||
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 <https://core.telegram.org/bots"
|
||||
|
|
|
|||
|
|
@ -8,14 +8,14 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: aiogram \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-03-11 01:52+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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 » <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 ""
|
||||
|
|
|
|||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
|
|
|||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
22
docs/locale/uk_UA/LC_MESSAGES/deployment/index.po
Normal file
22
docs/locale/uk_UA/LC_MESSAGES/deployment/index.po
Normal file
|
|
@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
130
docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po
Normal file
130
docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po
Normal file
|
|
@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 <magic-filters>`. 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 ""
|
||||
|
|
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 <webhook>` - you should configure your web server to "
|
||||
"receive updates from Telegram;"
|
||||
msgstr ""
|
||||
|
||||
#: ../../dispatcher/index.rst:21
|
||||
msgid ""
|
||||
":ref:`Long polling <long-polling>` - you should request updates from "
|
||||
"Telegram."
|
||||
msgstr ""
|
||||
|
||||
#: ../../dispatcher/index.rst:23
|
||||
msgid "So, you can use both of them with *aiogram*."
|
||||
msgstr ""
|
||||
|
|
|
|||
62
docs/locale/uk_UA/LC_MESSAGES/dispatcher/long_polling.po
Normal file
62
docs/locale/uk_UA/LC_MESSAGES/dispatcher/long_polling.po
Normal file
|
|
@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
303
docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po
Normal file
303
docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po
Normal file
|
|
@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 <https://core.telegram.org/bots/webhooks>`_"
|
||||
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 ""
|
||||
|
|
@ -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 "Базовий конструктор"
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
104
examples/echo_bot_webhook.py
Normal file
104
examples/echo_bot_webhook.py
Normal file
|
|
@ -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, <b>{message.from_user.full_name}!</b>")
|
||||
|
||||
|
||||
@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()
|
||||
118
examples/echo_bot_webhook_ssl.py
Normal file
118
examples/echo_bot_webhook_ssl.py
Normal file
|
|
@ -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, <b>{message.from_user.full_name}!</b>")
|
||||
|
||||
|
||||
@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()
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue