Создаю телеграм бота для кафе и на данный момент делаю прототип. Нужно указать в переменной два разных текста после определенного вопроса
Основная проблема в том, что я не могу правильно указать value. Был бы благодарен если бы вы подтолкнули меня на ответ
def menu(message):
if message.text == 'Чизбургер':
product = 'Чизбургер'
costs = '20000'
markup = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
buttons = markup.add(types.KeyboardButton('1'), types.KeyboardButton('2'), types.KeyboardButton('3'))
**# value = здесь должно быть кол-во но из-за того когда я пишу message.text в БД отображается чизбурегр, а не то, что я выбрал**
bot.send_message(message.chat.id, 'Выберите кол-во', reply_markup=buttons)
cursor.execute('INSERT INTO zakazi (product, value, costs) VALUES(?, ?, ?)', (product, value, costs))
conn.commit()```
Ответы (1 шт):
Автор решения: mazik7512
→ Ссылка
У вас неправильная структура кода, вам нужно разбить эту функцию на две. Первая будет обрабатывать тип товара и посылать меню с кнопками выбора количества, а вторая будет обрабатывать количество. Используйте для этого функцию bot.register_next_step_handler(message, {следующая_функция})
Получится что-то типо этого:
def quantity_handler(message, product, costs):
cursor.execute('INSERT INTO zakazi (product, value, costs) VALUES(?, ?, ?)', (product, message.text, costs))
conn.commit()
bot.send_message(message.chat.id, "Чизбургер добавлен к заказу")
def product_handler(message):
if message.text == "Чизбургер":
costs = 20000
markup = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
markup.add(types.KeyboardButton('1'), types.KeyboardButton('2'),
types.KeyboardButton('3'))
bot.send_message(message.chat.id, "Выберите количество", reply_markup=markup)
bot.register_next_step_handler(message, quantity_handler, message.text, costs)