Как записать текст с кнопки aiogram в SQL?
Как записать текст, который содержит кнопка в БД? Неужели нужно писать под каждую кнопку свой обработчик?
У меня есть код:
@dp.callback_query_handler(text="True")
async def is_got_acquainted(message: types.Message):
await bot.delete_message(message.from_user.id, message.message.message_id)
await bot.send_message(message.from_user.id, "Спасибо! Мы ценим ваше внимание!\nОтветьте на 3 вопроса, и получи скидку на продление!")
db.is_acquainted_True(message.from_user.id) # добавляет в бд
await asyncio.sleep(1) # тут рельно 1 секунда должна быть
await Survey.experience.set()
await bot.send_message(message.from_user.id, "Какой у вас опыт в трейдниге?", reply_markup=keybards.FirstQMenu)
@dp.message_handler(state=Survey.experience)
async def deposit_question(message: types.Message, state: Survey):
db.add_experience(message.text, message.from_user.id)
await Survey.next()
await bot.send_message(message.from_user.id, "Какой у вас размер депозита?", reply_markup=keybards.SecondQMenu)
Благодаря функции add_experience я добавляю данные в SQL. Но проблема в том, что она не добавляет текст с кнопки, а только тот, который пользователь напишет сам. Мне нужно чтобы в бд попадал текст именно с кнопки, при нажатии на нее. Я понимаю что использование message.text в данном случае не верно, но как тогда это сделать?
# добавление ответов на вопросы
def add_experience(self, message, user_id):
with self.connection:
return self.cursor.execute("UPDATE clientdata SET (experience)=(?) WHERE user_id = (?)",
(message, user_id,))
После исправлений получился следующий код
# СОСТОЯНИЯ
# Ловим ответ на первый вопрос. Кнопки к первому вопросу
@dp.message_handler(state=Survey.experience)
@dp.callback_query_handler(text="1_1")
async def experience_handler_depo1(callback_query: types.CallbackQuery, state: Survey):
db.add_experience("Менее 1 года", callback_query.from_user.id)
await Survey.next()
await bot.send_message(callback_query.from_user.id, "Какой у вас размер депозита?", reply_markup=keybards.SecondQMenu)
@dp.message_handler(state=Survey.experience)
@dp.callback_query_handler(text="1_2")
async def experience_handler_depo2(callback_query: types.CallbackQuery, state: Survey):
db.add_experience("От 1 года до 2 лет", callback_query.from_user.id)
await Survey.next()
await bot.send_message(callback_query.from_user.id, "Какой у вас размер депозита?", reply_markup=keybards.SecondQMenu)
@dp.message_handler(state=Survey.experience)
@dp.callback_query_handler(text="1_3")
async def experience_handler_depo3(callback_query: types.CallbackQuery, state: Survey):
db.add_experience("От 2 лет до 3 лет", callback_query.from_user.id)
await Survey.next()
await bot.send_message(callback_query.from_user.id, "Какой у вас размер депозита?", reply_markup=keybards.SecondQMenu)
@dp.message_handler(state=Survey.experience)
@dp.callback_query_handler(text="1_4")
async def experience_handler_depo4(callback_query: types.CallbackQuery, state: Survey):
db.add_experience("Более 3 лет", callback_query.from_user.id)
await Survey.next()
await bot.send_message(callback_query.from_user.id, "Какой у вас размер депозита?", reply_markup=keybards.SecondQMenu)
Как оставляя состояния сделать все верно?