Отправитель действий в чате (Chat action sender)

Отправитель

class litegram.utils.chat_action.ChatActionSender(*, bot: Bot, chat_id: str | int, message_thread_id: int | None = None, action: str = 'typing', interval: float = 5.0, initial_sleep: float = 0.0)[исходный код]

Эта утилита помогает автоматически отправлять действия в чат, пока выполняются длительные действия бота, чтобы уведомить пользователей о том, что бот что-то делает, а не завис.

Предоставляет простой в использовании контекстный менеджер.

Технически, отправитель запускает фоновую задачу с бесконечным циклом, которая работает до завершения действия и отправляет действие чата каждые 5 секунд.

__init__(*, bot: Bot, chat_id: str | int, message_thread_id: int | None = None, action: str = 'typing', interval: float = 5.0, initial_sleep: float = 0.0) None[исходный код]
Параметры:
  • bot – экземпляр бота, необязательный параметр

  • chat_id – идентификатор целевого чата

  • message_thread_id – unique identifier for the target message thread; supergroups only

  • action – тип действия

  • interval – интервал между итерациями

  • initial_sleep – задержка перед первой отправкой действия

classmethod choose_sticker(chat_id: int | str, bot: Bot, message_thread_id: int | None = None, interval: float = 5.0, initial_sleep: float = 0.0) ChatActionSender[исходный код]

Создание экземпляра отправителя с действием choose_sticker

classmethod find_location(chat_id: int | str, bot: Bot, message_thread_id: int | None = None, interval: float = 5.0, initial_sleep: float = 0.0) ChatActionSender[исходный код]

Создание экземпляра отправителя с действием find_location

classmethod record_video(chat_id: int | str, bot: Bot, message_thread_id: int | None = None, interval: float = 5.0, initial_sleep: float = 0.0) ChatActionSender[исходный код]

Создание экземпляра отправителя с действием record_video

classmethod record_video_note(chat_id: int | str, bot: Bot, message_thread_id: int | None = None, interval: float = 5.0, initial_sleep: float = 0.0) ChatActionSender[исходный код]

Создание экземпляра отправителя с действием record_video_note

classmethod record_voice(chat_id: int | str, bot: Bot, message_thread_id: int | None = None, interval: float = 5.0, initial_sleep: float = 0.0) ChatActionSender[исходный код]

Создание экземпляра отправителя с действием record_voice

classmethod typing(chat_id: int | str, bot: Bot, message_thread_id: int | None = None, interval: float = 5.0, initial_sleep: float = 0.0) ChatActionSender[исходный код]

Создание экземпляра отправителя с действием typing

classmethod upload_document(chat_id: int | str, bot: Bot, message_thread_id: int | None = None, interval: float = 5.0, initial_sleep: float = 0.0) ChatActionSender[исходный код]

Создание экземпляра отправителя с действием upload_document

classmethod upload_photo(chat_id: int | str, bot: Bot, message_thread_id: int | None = None, interval: float = 5.0, initial_sleep: float = 0.0) ChatActionSender[исходный код]

Создание экземпляра отправителя с действием upload_photo

classmethod upload_video(chat_id: int | str, bot: Bot, message_thread_id: int | None = None, interval: float = 5.0, initial_sleep: float = 0.0) ChatActionSender[исходный код]

Создание экземпляра отправителя с действием upload_video

classmethod upload_video_note(chat_id: int | str, bot: Bot, message_thread_id: int | None = None, interval: float = 5.0, initial_sleep: float = 0.0) ChatActionSender[исходный код]

Создание экземпляра отправителя с действием upload_video_note

classmethod upload_voice(chat_id: int | str, bot: Bot, message_thread_id: int | None = None, interval: float = 5.0, initial_sleep: float = 0.0) ChatActionSender[исходный код]

Создание экземпляра отправителя с действием upload_voice

Использование

async with ChatActionSender.typing(bot=bot, chat_id=message.chat.id):
    # Do something...
    # Perform some long calculations
    await message.answer(result)

Middleware

class litegram.utils.chat_action.ChatActionMiddleware[исходный код]

Помогает автоматически использовать отправителя действий чата для всех обработчиков сообщений

Использование

Перед использованием следует зарегистрировать для события message

<router or dispatcher>.message.middleware(ChatActionMiddleware())

После этого все обработчики, работающие дольше initial_sleep, будут выполнять действие „typing“ в чате

Также отправитель может быть настроен с помощью функции флагов (flags) для конкретного обработчика.

Изменение только типа действия:

@router.message(...)
@flags.chat_action("sticker")
async def my_handler(message: Message): ...

Изменение конфигурации отправителя:

@router.message(...)
@flags.chat_action(initial_sleep=2, action="upload_document", interval=3)
async def my_handler(message: Message): ...