aiogram, Бот, ответы на вопросы
Как сделать чтобы бот слушал все сообщения, но реагировал на них если: 1)тип сообщения от пользователя будет текстовой тогда бот выдаёт нужную информацию, 2)если пользователь вводит что-то отличное от текста, тогда бот будет выводить ему что-то вроде ошибки, я понял что нужно внести параметрв в @dp.message_handler(content_types=????), сделал, как реагировать только на текст, а что-бы он паралельно реагировал на остальные сообщения, не пойму как, неужели нужно перечислить все типы сообщений в @dp.message_handler?
Ответы (1 шт):
Если поискать в примерах в репозитории aiogram, то много чего полезного можно найти. Например, частично то, что Вам нужно - эхо-бот:
@dp.message_handler()
async def echo(message: types.Message):
# old style:
# await bot.send_message(message.chat.id, message.text)
await message.answer(message.text)
Теперь, Вы можете достать из объекта Message тип сообщения, и делать с этой информацией всё, что хотите. Например, в Вашем случае, выглядеть это будет примерно так:
@dp.message_handler(content_types=types.ContentType.ANY)
async def echo(message: types.Message):
if message.content_type == types.ContentType.TEXT:
# Тут делайте всё, что нужно, если юзер отправил обычное сообщение
await message.answer("Вы отправили текст!")
else:
# Всё, что не попадает под текст
await message.answer("Отправьте, пожалуйста, текст!")
Ну, или так:
@dp.message_handler(content_types=types.ContentType.ANY)
async def echo(message: types.Message):
if message.text:
# Тут делайте всё, что нужно, если юзер отправил обычное сообщение
await message.answer("Вы отправили текст!")
else:
# Всё, что не попадает под текст
await message.answer("Отправьте, пожалуйста, текст!")