mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-11 18:01:04 +00:00
[3.x] Bot API 6.0 (#890)
* Base implementation * Bump license * Revert re-generated tests * Fix tests, improved docs * Remove TODO * Removed unreachable code * Changed type of `last_synchronization_error_date` * Fixed wrongly cleaned code
This commit is contained in:
parent
286cf39c8a
commit
497436595d
81 changed files with 1942 additions and 147 deletions
51
docs/api/methods/answer_web_app_query.rst
Normal file
51
docs/api/methods/answer_web_app_query.rst
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
#################
|
||||
answerWebAppQuery
|
||||
#################
|
||||
|
||||
Returns: :obj:`SentWebAppMessage`
|
||||
|
||||
.. automodule:: aiogram.methods.answer_web_app_query
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
As bot method
|
||||
-------------
|
||||
|
||||
.. code-block::
|
||||
|
||||
result: SentWebAppMessage = await bot.answer_web_app_query(...)
|
||||
|
||||
|
||||
Method as object
|
||||
----------------
|
||||
|
||||
Imports:
|
||||
|
||||
- :code:`from aiogram.methods.answer_web_app_query import AnswerWebAppQuery`
|
||||
- alias: :code:`from aiogram.methods import AnswerWebAppQuery`
|
||||
|
||||
In handlers with current bot
|
||||
----------------------------
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
result: SentWebAppMessage = await AnswerWebAppQuery(...)
|
||||
|
||||
With specific bot
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
result: SentWebAppMessage = await bot(AnswerWebAppQuery(...))
|
||||
|
||||
As reply into Webhook in handler
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
return AnswerWebAppQuery(...)
|
||||
44
docs/api/methods/get_chat_menu_button.rst
Normal file
44
docs/api/methods/get_chat_menu_button.rst
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
#################
|
||||
getChatMenuButton
|
||||
#################
|
||||
|
||||
Returns: :obj:`MenuButton`
|
||||
|
||||
.. automodule:: aiogram.methods.get_chat_menu_button
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
As bot method
|
||||
-------------
|
||||
|
||||
.. code-block::
|
||||
|
||||
result: MenuButton = await bot.get_chat_menu_button(...)
|
||||
|
||||
|
||||
Method as object
|
||||
----------------
|
||||
|
||||
Imports:
|
||||
|
||||
- :code:`from aiogram.methods.get_chat_menu_button import GetChatMenuButton`
|
||||
- alias: :code:`from aiogram.methods import GetChatMenuButton`
|
||||
|
||||
In handlers with current bot
|
||||
----------------------------
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
result: MenuButton = await GetChatMenuButton(...)
|
||||
|
||||
With specific bot
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
result: MenuButton = await bot(GetChatMenuButton(...))
|
||||
44
docs/api/methods/get_my_default_administrator_rights.rst
Normal file
44
docs/api/methods/get_my_default_administrator_rights.rst
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
###############################
|
||||
getMyDefaultAdministratorRights
|
||||
###############################
|
||||
|
||||
Returns: :obj:`ChatAdministratorRights`
|
||||
|
||||
.. automodule:: aiogram.methods.get_my_default_administrator_rights
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
As bot method
|
||||
-------------
|
||||
|
||||
.. code-block::
|
||||
|
||||
result: ChatAdministratorRights = await bot.get_my_default_administrator_rights(...)
|
||||
|
||||
|
||||
Method as object
|
||||
----------------
|
||||
|
||||
Imports:
|
||||
|
||||
- :code:`from aiogram.methods.get_my_default_administrator_rights import GetMyDefaultAdministratorRights`
|
||||
- alias: :code:`from aiogram.methods import GetMyDefaultAdministratorRights`
|
||||
|
||||
In handlers with current bot
|
||||
----------------------------
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
result: ChatAdministratorRights = await GetMyDefaultAdministratorRights(...)
|
||||
|
||||
With specific bot
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
result: ChatAdministratorRights = await bot(GetMyDefaultAdministratorRights(...))
|
||||
|
|
@ -82,6 +82,10 @@ Available methods
|
|||
set_my_commands
|
||||
delete_my_commands
|
||||
get_my_commands
|
||||
set_chat_menu_button
|
||||
get_chat_menu_button
|
||||
set_my_default_administrator_rights
|
||||
get_my_default_administrator_rights
|
||||
|
||||
Updating messages
|
||||
=================
|
||||
|
|
@ -118,6 +122,7 @@ Inline mode
|
|||
:maxdepth: 1
|
||||
|
||||
answer_inline_query
|
||||
answer_web_app_query
|
||||
|
||||
Payments
|
||||
========
|
||||
|
|
|
|||
51
docs/api/methods/set_chat_menu_button.rst
Normal file
51
docs/api/methods/set_chat_menu_button.rst
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
#################
|
||||
setChatMenuButton
|
||||
#################
|
||||
|
||||
Returns: :obj:`bool`
|
||||
|
||||
.. automodule:: aiogram.methods.set_chat_menu_button
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
As bot method
|
||||
-------------
|
||||
|
||||
.. code-block::
|
||||
|
||||
result: bool = await bot.set_chat_menu_button(...)
|
||||
|
||||
|
||||
Method as object
|
||||
----------------
|
||||
|
||||
Imports:
|
||||
|
||||
- :code:`from aiogram.methods.set_chat_menu_button import SetChatMenuButton`
|
||||
- alias: :code:`from aiogram.methods import SetChatMenuButton`
|
||||
|
||||
In handlers with current bot
|
||||
----------------------------
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
result: bool = await SetChatMenuButton(...)
|
||||
|
||||
With specific bot
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
result: bool = await bot(SetChatMenuButton(...))
|
||||
|
||||
As reply into Webhook in handler
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
return SetChatMenuButton(...)
|
||||
51
docs/api/methods/set_my_default_administrator_rights.rst
Normal file
51
docs/api/methods/set_my_default_administrator_rights.rst
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
###############################
|
||||
setMyDefaultAdministratorRights
|
||||
###############################
|
||||
|
||||
Returns: :obj:`bool`
|
||||
|
||||
.. automodule:: aiogram.methods.set_my_default_administrator_rights
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
As bot method
|
||||
-------------
|
||||
|
||||
.. code-block::
|
||||
|
||||
result: bool = await bot.set_my_default_administrator_rights(...)
|
||||
|
||||
|
||||
Method as object
|
||||
----------------
|
||||
|
||||
Imports:
|
||||
|
||||
- :code:`from aiogram.methods.set_my_default_administrator_rights import SetMyDefaultAdministratorRights`
|
||||
- alias: :code:`from aiogram.methods import SetMyDefaultAdministratorRights`
|
||||
|
||||
In handlers with current bot
|
||||
----------------------------
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
result: bool = await SetMyDefaultAdministratorRights(...)
|
||||
|
||||
With specific bot
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
result: bool = await bot(SetMyDefaultAdministratorRights(...))
|
||||
|
||||
As reply into Webhook in handler
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
return SetMyDefaultAdministratorRights(...)
|
||||
9
docs/api/types/chat_administrator_rights.rst
Normal file
9
docs/api/types/chat_administrator_rights.rst
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#######################
|
||||
ChatAdministratorRights
|
||||
#######################
|
||||
|
||||
|
||||
.. automodule:: aiogram.types.chat_administrator_rights
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
|
|
@ -40,14 +40,16 @@ Available types
|
|||
poll
|
||||
location
|
||||
venue
|
||||
web_app_data
|
||||
proximity_alert_triggered
|
||||
message_auto_delete_timer_changed
|
||||
voice_chat_scheduled
|
||||
voice_chat_started
|
||||
voice_chat_ended
|
||||
voice_chat_participants_invited
|
||||
video_chat_scheduled
|
||||
video_chat_started
|
||||
video_chat_ended
|
||||
video_chat_participants_invited
|
||||
user_profile_photos
|
||||
file
|
||||
web_app_info
|
||||
reply_keyboard_markup
|
||||
keyboard_button
|
||||
keyboard_button_poll_type
|
||||
|
|
@ -59,6 +61,7 @@ Available types
|
|||
force_reply
|
||||
chat_photo
|
||||
chat_invite_link
|
||||
chat_administrator_rights
|
||||
chat_member
|
||||
chat_member_owner
|
||||
chat_member_administrator
|
||||
|
|
@ -79,6 +82,10 @@ Available types
|
|||
bot_command_scope_chat
|
||||
bot_command_scope_chat_administrators
|
||||
bot_command_scope_chat_member
|
||||
menu_button
|
||||
menu_button_commands
|
||||
menu_button_web_app
|
||||
menu_button_default
|
||||
response_parameters
|
||||
input_media
|
||||
input_media_photo
|
||||
|
|
@ -135,6 +142,7 @@ Inline mode
|
|||
input_contact_message_content
|
||||
input_invoice_message_content
|
||||
chosen_inline_result
|
||||
sent_web_app_message
|
||||
|
||||
Payments
|
||||
========
|
||||
|
|
|
|||
9
docs/api/types/menu_button.rst
Normal file
9
docs/api/types/menu_button.rst
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
##########
|
||||
MenuButton
|
||||
##########
|
||||
|
||||
|
||||
.. automodule:: aiogram.types.menu_button
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
##################
|
||||
VoiceChatScheduled
|
||||
MenuButtonCommands
|
||||
##################
|
||||
|
||||
|
||||
.. automodule:: aiogram.types.voice_chat_scheduled
|
||||
.. automodule:: aiogram.types.menu_button_commands
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
9
docs/api/types/menu_button_default.rst
Normal file
9
docs/api/types/menu_button_default.rst
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#################
|
||||
MenuButtonDefault
|
||||
#################
|
||||
|
||||
|
||||
.. automodule:: aiogram.types.menu_button_default
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
9
docs/api/types/menu_button_web_app.rst
Normal file
9
docs/api/types/menu_button_web_app.rst
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
################
|
||||
MenuButtonWebApp
|
||||
################
|
||||
|
||||
|
||||
.. automodule:: aiogram.types.menu_button_web_app
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
9
docs/api/types/sent_web_app_message.rst
Normal file
9
docs/api/types/sent_web_app_message.rst
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#################
|
||||
SentWebAppMessage
|
||||
#################
|
||||
|
||||
|
||||
.. automodule:: aiogram.types.sent_web_app_message
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
##############
|
||||
VoiceChatEnded
|
||||
VideoChatEnded
|
||||
##############
|
||||
|
||||
|
||||
.. automodule:: aiogram.types.voice_chat_ended
|
||||
.. automodule:: aiogram.types.video_chat_ended
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
############################
|
||||
VoiceChatParticipantsInvited
|
||||
VideoChatParticipantsInvited
|
||||
############################
|
||||
|
||||
|
||||
.. automodule:: aiogram.types.voice_chat_participants_invited
|
||||
.. automodule:: aiogram.types.video_chat_participants_invited
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
9
docs/api/types/video_chat_scheduled.rst
Normal file
9
docs/api/types/video_chat_scheduled.rst
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
##################
|
||||
VideoChatScheduled
|
||||
##################
|
||||
|
||||
|
||||
.. automodule:: aiogram.types.video_chat_scheduled
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
################
|
||||
VoiceChatStarted
|
||||
VideoChatStarted
|
||||
################
|
||||
|
||||
|
||||
.. automodule:: aiogram.types.voice_chat_started
|
||||
.. automodule:: aiogram.types.video_chat_started
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
9
docs/api/types/web_app_data.rst
Normal file
9
docs/api/types/web_app_data.rst
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
##########
|
||||
WebAppData
|
||||
##########
|
||||
|
||||
|
||||
.. automodule:: aiogram.types.web_app_data
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
9
docs/api/types/web_app_info.rst
Normal file
9
docs/api/types/web_app_info.rst
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
##########
|
||||
WebAppInfo
|
||||
##########
|
||||
|
||||
|
||||
.. automodule:: aiogram.types.web_app_info
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
|
|
@ -7,3 +7,4 @@ Utils
|
|||
keyboard
|
||||
i18n
|
||||
chat_action
|
||||
web_app
|
||||
|
|
|
|||
55
docs/utils/web_app.rst
Normal file
55
docs/utils/web_app.rst
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
======
|
||||
WebApз
|
||||
======
|
||||
|
||||
Telegram Bot API 6.0 announces a revolution in the development of chatbots using WebApp feature.
|
||||
|
||||
You can read more details on it in the official `blog <https://telegram.org/blog/notifications-bots#bot-revolution>`_
|
||||
and `documentation <https://core.telegram.org/bots/webapps>`_.
|
||||
|
||||
`aiogram` implements simple utils to remove headache with the data validation from Telegram WebApp on the backend side.
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
For example from frontend you will pass :code:`application/x-www-form-urlencoded` POST request
|
||||
with :code:`_auth` field in body and wants to return User info inside response as :code:`application/json`
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from aiogram.utils.web_app import safe_parse_webapp_init_data
|
||||
from aiohttp.web_request import Request
|
||||
from aiohttp.web_response import json_response
|
||||
|
||||
async def check_data_handler(request: Request):
|
||||
bot: Bot = request.app["bot"]
|
||||
|
||||
data = await request.post() # application/x-www-form-urlencoded
|
||||
try:
|
||||
data = safe_parse_webapp_init_data(token=bot.token, init_data=data["_auth"])
|
||||
except ValueError:
|
||||
return json_response({"ok": False, "err": "Unauthorized"}, status=401)
|
||||
return json_response({"ok": True, "data": data.user.dict()})
|
||||
|
||||
Functions
|
||||
=========
|
||||
|
||||
.. autofunction:: aiogram.utils.web_app.check_webapp_signature
|
||||
|
||||
.. autofunction:: aiogram.utils.web_app.parse_webapp_init_data
|
||||
|
||||
.. autofunction:: aiogram.utils.web_app.safe_parse_webapp_init_data
|
||||
|
||||
|
||||
Types
|
||||
=====
|
||||
|
||||
.. autoclass:: aiogram.utils.web_app.WebAppInitData
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
|
||||
.. autoclass:: aiogram.utils.web_app.WebAppUser
|
||||
:members:
|
||||
:member-order: bysource
|
||||
:undoc-members: True
|
||||
Loading…
Add table
Add a link
Reference in a new issue