Отправитель действий в чате (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): ...