@Anatoliy3247932847

Как записать текст с кнопки 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,))


Вот кнопки:
FirstQMenu = InlineKeyboardMarkup(row_width=1)
FirstBtn1 = InlineKeyboardButton(text="Менее 1 года", callback_data="1_1")
FirstBtn2 = InlineKeyboardButton(text="От 1 года до 2 лет", callback_data="1_2")
FirstBtn3 = InlineKeyboardButton(text="От 2 лет до 3 лет", callback_data="1_3")
FirstBtn4 = InlineKeyboardButton(text="Более 3 лет", callback_data="1_4")
FirstQMenu.insert(FirstBtn1)
FirstQMenu.insert(FirstBtn2)
FirstQMenu.insert(FirstBtn3)
FirstQMenu.insert(FirstBtn4)
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
rt2233
@rt2233
чтоб получить текст с кнопки используй:

print(call.message.reply_markup.inline_keyboard[0][0].text)

call - callback_data
первый "[0]" это кнопка с которой брать текст (их может быть больше 1)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы