Как в aiogram в callback handler обработать один из нескольких возможных запросов?
Как должно работать:
- Выводится сообщение с двумя инлайн кнопками
- Пользователь нажимает одну из них
- Сообщение удаляется
- В зависимости какую кнопку он нажал, срабатывает внутри function1 одно из условий и отправляется определённое сообщение, что уже не суть важно для вопроса
Изначально я думал что всё будет прекрасно работать с таким кодом:
@dp.callback_query_handler(text = 'button2' or 'button3')
async def process_callback_button23(c_q: types.CallbackQuery):
t1 = c_q.data
await c_q.answer()
await c_q.message.delete()
await function1(t1)
Но бот не воспринимает callback_data = 'button3'. То есть, если я нажму первую инлайн кнопку, которая отправляет callback_data = 'button2', то process_callback_button23 срабатывает, а если нажму вторую, которая отправляет callback_data = 'button3', то process_callback_button23 не реагирует вообще.
Создавать для каждой кнопки отдельный handler я не захотел, т.к. действие, по сути, одно и тоже, мне главное передать в function1 то, какую кнопку нажал пользователь.
Вопрос в целом, такой же как и в заголовке: 'Как в callback handler обработать один из нескольких возможных запросов?'
Ответы (1 шт):
Попробуй так
@dp.callback_query_handler(text_startswith="button")
#Или так
@dp.callback_query_handler(lambda call: call.data=="button2" or call.data=="button3")