Перейти к содержанию

Шорткаты⚓︎

Работа с объектом Message⚓︎

При обработке входящего сообщения в функцию-обработчик обычно передается объект Message:

from trueconf import Router
from trueconf.types import Message

r = Router()

@r.message()
async def on_message(message: Message):
    await message.answer("Сообщение получено")
Объект Message передается в обработчик автоматически и содержит контекст текущего события: данные об авторе, чате, типе сообщения, содержимом, идентификаторе сообщения и других параметрах.

Кроме того, через объект сообщения можно получить доступ к экземпляру бота, который обрабатывает текущее событие:

@r.message()
async def on_message(message: Message):
    result = await message.bot.get_something()

Это удобно, когда экземпляр бота создан в другом файле или объявлен ниже в коде, и внутри обработчика нельзя напрямую обратиться к переменной bot.

В таком случае доступ к текущему экземпляру бота можно получить через объект сообщения: message.bot.

Шорткаты Message⚓︎

Для Message реализованы шорткаты — вспомогательные методы, которые позволяют выполнять частые действия без явной передачи chat_id, message_id и других параметров. Эти значения автоматически берутся из текущего сообщения.

Note

На данный момент шорткаты реализованы только для типа Message. В будущем аналогичные методы могут появиться и для других типов событий.

Например, вместо прямого вызова метода бота:

@r.message()
async def on_message(message: Message):
    await message.bot.send_message(
        chat_id=message.chat_id,
        text="Привет!"
)

можно использовать шорткат:

@r.message()
async def on_message(message: Message):
    await message.answer("Привет!")

Шорткаты особенно полезны в обработчиках, где действие связано с текущим сообщением или текущим чатом. Они делают код короче и уменьшают количество повторяющихся параметров.

Например, message.answer(...) автоматически использует чат, из которого пришло сообщение, а message.reply(...) дополнительно связывает ответ с исходным сообщением.

Tip

Список всех доступных шорткатов вы можете изучить в разделе с описанием класса Message.