aiogram добавил поддержку Bot API 5.6

Асинхронный фреймворк для разработки Telegram-ботов на Python добавил поддержку новой версии Telegram Bot API. Давайте разберёмся как пользоваться нововведениями…

Защищённый контент

Для методов, связанных с отправкой сообщений, Telegram добавил параметр protected_content. В aiogram этот параметр доступен не только в оригинальных методах, но и во всех шорткатах (сокращённых методах при объектах). Пример:

@dp.message_handler(commands=['protected']) async def handle_protected_command(message: Message): """Handle /protected command and answer with protected message.""" text = "This is protected message" await message.answer(text, protect_content=True)

Спойлеры

В Telegram Bot API была добавлена поддержка разметки "spoiler", скрывающей содержимое сообщения до первого клика.

Для удобной реализации спойлеров, в утилиты разметки aiogram были добавлены методы spoiler (форматирование MarkdownV2) и hspoiler (форматирование HTML)

from aiogram.utils.markdown import hspoiler @dp.message_handler(commands=['spoiler']) async def handle_spoiler_command(message: Message): """Handle /spoiler command and answer with spoiler.""" hidden_text = hspoiler("Spider-Man == Peter Parker") text = f"Spoiler: {hidden_text}" await message.answer(text, parse_mode=ParseMode.HTML)

Другие обновления

Помимо обновлений, связанных с Telegram Bot API, в aiogram были добавлены ещё несколько обновлений

Представление объектов

Раньше, при печати объектов, они выглядели так:

<aiogram.types.message.Message object at 0x101d94c40>

Теперь выглядят так:

<Message {"message_id": 560, "from": {"id": 66812456, "is_bot": false, "first_name": "Oleg", "last_name": "A. 🇷🇺", "username": "Oleg_Oleg_Oleg", "language_code": "en"}, "chat": {"id": 66812456, "first_name": "Oleg", "last_name": "A. 🇷🇺", "username": "Oleg_Oleg_Oleg", "type": "private"}, "date": 1640355914, "text": "/start", "entities": [{"type": "bot_command", "offset": 0, "length": 6}]}>]

Скрытие превью по-умолчанию

Если в большинстве отправляемых сообщений вы скрываете превью для ссылок, то при инициализации бота, вы можете указать параметр disable_web_page_preview=True, который определит поведение по-умолчанию. Таким образом вам не нужно будет передавать этот параметр при каждой отправке сообщения.

bot = Bot( ..., disable_web_page_preview=True, ) @dp.message_handler(commands=['url']) async def handle_url_command(message: Message): """Handle /url command and answer without preview.""" await message.answer("My website: https://example.com")

Ссылки

Установить обновлённую версию фреймворка можно командой

python3 -m pip install -U aiogram

Для тех, кто ещё не знаком с фреймворком, будут полезны следующие ссылки:

0
4 комментария
Mihael Isaev

Тоже что ли начать публиковать тут все апдейты своих фреймворков 😁 http://github.com/MihaelIsaev

Ответить
Развернуть ветку
badResistor

хабр не торт, надо тут писать.
Жду подсайта наука и тоже начну постить)

Ответить
Развернуть ветку
Леонид М

Что в нем изменилось? Года 2-3 не читал

В нем не изменилось ничего и кто-то также туда не ходит?

Ответить
Развернуть ветку
Катя Петрова

Только в этой статье нашла как добавить скрытый текст, с помощью aiogram! Спасибо!

Ответить
Развернуть ветку
1 комментарий
Раскрывать всегда