На одном из предыдущих уроков мы создали обработчик.
@dp.message(CommandStart())
async def cmd_start(message: Message):
await message.answer('Привет!')
Задача этого обработчика — принимать определённые сообщения от пользователя и реагировать на них.
Помимо метода message.answer, есть и другие методы, например, message.reply:
@dp.message(CommandStart())
async def cmd_start(message: Message):
await message.reply('Привет!')
await message.answer('Как дела?')
Этот метод не просто отправляет сообщение, а отвечает на конкретное сообщение пользователя.
У методов reply и answer есть дополнительные возможности, например отправка изображений:
@dp.message(CommandStart())
async def cmd_start(message: Message):
await message.reply('Привет!')
await message.answer_photo(photo='https://ir.ozone.ru/s3/multimedia-1-n/c1000/6996103187.jpg',
caption='Подпись к изображению')
Был использован метод answer_photo, который имеет несколько аргументов: photo (ссылка на изображение/ID изображения/объект InputFile) и caption (подпись к изображению).
Если вы уже работали с другими фреймворками, такими как telebot, то могли заметить, что в нашем коде мы не указываем, кому отправить сообщение. Фреймворк aiogram автоматически определяет отправителя сообщения и отправляет ответ тому же пользователю.
Если необходимо изменить такое поведение, например, для функции рассылки, и отправлять сообщение другому пользователю по его ID, то в классе message есть метод bot:
await message.bot.send_message(chat_id=123, text='123')
Мы указали получателя, передав его идентификатор (chat_id) в качестве аргумента. Класс Message включает в себя множество методов, с которыми можно ознакомиться по ссылке: https://docs.aiogram.dev/en/latest/api/types/message.html.
Логирование
Логирование это важный момент в процессе разработки. Благодаря выводу в терминал информации о происходящем в программе вы сможете найти ошибки или понять почему бот работает тем или иным образом. Для подключения логирования нужно ввести всего 2 строчки в бот:
import logging
...
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO) # Подключение логирования
try:
asyncio.run(main())
except KeyboardInterrupt:
print('Exit')
Нужно импортировать модуль logging и вызвать его метод. После этого в терминале будет выводиться нужная информация:
P.S. Даже если эта статья устареет, она всё равно будет полезна для меня как напоминание о некоторых командах, чтобы не искать их снова в интернете. Возможно, через пару лет я вернусь к этой статье и вспомню некоторые моменты. А тем, кто дочитал до конца, желаю, чтобы ваши труды, проекты и творческие работы всегда были востребованы! =)