Как правильно писать message_handler в aiogram?
Встретил на просторах интернета такой кусок кода
@dp.message_handler(text = 'Отзыв')
async def categories(message: types.Message):
await bot.send_message(chat_id = message.chat.id, text = ' Отзывы скоро будут', reply_markup = back_kb)
@dp.message_handler(text = 'Назад')
async def categories(message: types.Message):
await bot.send_message(chat_id = message.chat.id, text='Ты вернулся в главное меню.', reply_markup = start_kb)
Допустима ли такая запись?
async def msg_handler(message: types.Message):
if message.text == 'Отзыв':
await bot.send_message(chat_id = message.chat.id, text = ' Отзывы скоро будут', reply_markup = back_kb)
elif message.text == 'Назад':
await bot.send_message(chat_id = message.chat.id, text='Ты вернулся в главное меню.', reply_markup = start_kb)
else:
# Типа нет такой команды
Если нет, то какие проблемы это может вызвать?
Ответы (2 шт):
Автор решения: Trafalgar
→ Ссылка
Нет, недопустимо так как это две разные команды.
Каждая команда должна обрабатываться в отдельном хендлере.
Проблемы будут когда нужно будет вывести те же отзывы или перейти в главное меню
Автор решения: oleksandrigo
→ Ссылка
Это не недопустимо, но зависит от того для чего вам такая запись.
Если у вас есть общий код для обоих команд, то впринципе почему бы и нет, в ином случае - такое себе. И читается хуже и архитектура кривая.
По нормальному стоит разбивать на хендлеры, это хорошая практика.