Python, oracle. Возврат к началу после получения ответов
Проблемам примерно состоит в неверном написании IF,elif,else хочу вернуться к старту либо к предыдущему меню но не могу верно написать код в последнем def где запрос к БД так как выводятся два сообщения сразу а надо или
def start(message):
rmk = types.ReplyKeyboardMarkup(resize_keyboard=True)
rmk.add(types.KeyboardButton('Код товара'), types.KeyboardButton('Наименование товара'))
msg = bot.send_message(message.chat.id, "Выбирете желаемое", reply_markup=rmk)
bot.register_next_step_handler(msg, user_unswer)
def user_unswer(message):
if message.text == "Код товара":
msg = bot.send_message(message.chat.id, "Введите код товара")
bot.register_next_step_handler(msg, user_reg)
elif message.text == "Наименование товара":
msg = bot.send_message(message.chat.id, "На данный момент этот пункт не работает!")
bot.register_next_step_handler(msg, start)
else:
msg = bot.send_message(message.chat.id, "Еще раз повторяю не работает!")
bot.register_next_step_handler(msg, start)
def user_reg(message):
res=sql.execute(f"SELECT skucode, name from sku where skucode = '{message.text}'")
res=sql.fetchall()
for row in res:
msg = bot.send_message(message.chat.id, f"Код товара: {res[0][0]}\nНаименование: {res[0][1]}")
bot.register_next_step_handler(msg, start)
Суть в том что если sql.fetchall() не может получить данные то требуется вывести сообщение "Данные введены не верно, либо отсутствуют записи" и после этого должен быть возврат к этому же пункту 'user_reg'
Ответы (1 шт):
Автор решения: Миахил
→ Ссылка
def user_reg(message):
res=sql.execute(f"SELECT skucode, name from sku where skucode = '{message.text}'")
res=sql.fetchall()
if res:
msg = bot.send_message(message.chat.id, f"Код товара: {res[0][0]}\nНаименование: {res[0][1]}")
bot.register_next_step_handler(msg, start)
else:
msg = bot.send_message(message.chat.id, "Данные введены не корректно, либо отсутствуют в БД")
bot.register_next_step_handler(msg, user_reg)