Как обработать несколько кнопок сразу Aiogram?
У меня есть хендлер который обрабатывает несколько кнопок сразу. Как сделать так, чтобы в зависимости от того, на какую кнопку нажмут - в БД добавлялась разная инфа
@dp.callback_query_handler(text=["cratcosrochnaya", "srednesrochnaya", "dolgosrochnaya"])
async def any_style(message: types.Message):
if CALLBACK DATA == одному из значений (например == "cratcosrochnaya")
db.add_short_term_style(message.from_user.id)
А ЕСЛИ РАВНА ДРУГОМУ ЗНАЧЕНИЮ
db.add_meddle_term_style(message.from_user.id) # то в БД добавляется другие данные
await bot.delete_message(message.from_user.id, message.message.message_id)
await bot.send_message(message.from_user.id,
"Отличные новости! Для вас как для нашего старого клиента есть выгодное предложение. Разработчик индикаторов с канала Cool Head создал приватные наборы индикаторов. У вас есть возможность приобретения со скидкой 50% (или другой процент). Ознакомится с предложением можно тут – ссылка на сайт")
await asyncio.sleep(1)
await bot.send_message(message.from_user.id, "Вы уже ознакомились с нашим продуктом?", reply_markup=keybards.LastBtnMenu)
add_short_term_style - функция добавления в БД ( и их несколько ) Пробывал сделать разные хендлеры, ну прям очень много сток кода
Ответы (1 шт):
Автор решения: Aleksandr Fetisov
→ Ссылка
Можно использовать параметр callback_data в обработчике callback_query, чтобы определить, на какую кнопку нажали
@dp.callback_query_handler(text=["cratcosrochnaya", "srednesrochnaya", "dolgosrochnaya"])
async def any_style(query: types.CallbackQuery):
if query.data == "cratcosrochnaya":
db.add_short_term_style(query.from_user.id)
elif query.data == "srednesrochnaya":
db.add_meddle_term_style(query.from_user.id)
elif query.data == "dolgosrochnaya":
db.add_long_term_style(query.from_user.id)
await bot.answer_callback_query(query.id)
await bot.delete_message(query.message.chat.id, query.message.message_id)
await bot.send_message(query.from_user.id, "...")