ChatAction
После того как вы успешно словили все необходимые изображения и видео, возникает необходимость их отправки. Это можно сделать легко, например используя метод answer_photo.
@router.message(F.photo)
async def get_photo(message: Message):
await message.answer(f'ID фотографии: {message.photo[-1].file_id}')
await message.answer_photo(photo=message.photo[-1].file_id)
В этой ситуации бот отправляет изображение без какого-либо уведомления. Чтобы бот отображал информацию о том, что он отправляет картинку, можно использовать ChatActions:
from aiogram.enums import ChatAction
...
await message.bot.send_chat_action(chat_id=message.from_user.id,
action=ChatAction.UPLOAD_PHOTO)
У класса ChatAction есть и другие полезные функции:
Обратите внимание, что для отправки сообщения используется класс message и его метод bot, в котором обязательно нужно указать chat_id, обычно равный ID пользователя.
Форумы/топики
Для того чтобы бот мог работать с темами на форуме или в группах, не требуется выполнять какие-либо особенные действия. Достаточно создать обычный обработчик и добавить бота в группу или на форум. Но бывают ситуации, когда нам нужно отправить сообщение в определённую группу или тему. В этом случае можно использовать метод send_message объекта message, указав дополнительные параметры:
@router.message(Command('test'))
async def cmd_test(message: Message):
await message.bot.send_message(chat_id=message.chat.id,
message_thread_id=message.message_thread_id,
text='OK')
Обратите внимание, что в chat_id теперь передаётся не ID пользователя, а группы. А message_thread_id используется в том случае, если это форум.
P.S. Даже если эта статья устареет, она всё равно будет полезна для меня как напоминание о некоторых командах, чтобы не искать их снова в интернете. Возможно, через пару лет я вернусь к этой статье и вспомню некоторые моменты. А тем, кто дочитал до конца, желаю, чтобы ваши труды, проекты и творческие работы всегда были востребованы! =)