Не работает функция истории в телеграмм боте
О Проекте
Телеграм бот для учёта вагонов
Функции
Бот добавляет номера вагонов в базу вместе с исторей.
Проблема возникает после ввода номера вагона: не получается посмотреть историю — приходится презапускать бота для этого.
Код:
@bot.message_handler(func=lambda message: message.text == 'История')
def story(message):
bot.send_message(message.chat.id, f'История', reply_markup=markup_2)
@bot.message_handler(content_types='text')
def get_story(message):
try:
if message.text == 'Найти по номеру вагона':
return bot.send_message(message.chat.id, 'на стадии', reply_markup=markup_2)
elif message.text == 'Вся история':
return bot.send_message(message.chat.id, f'{db.select()}', reply_markup=markup_2)
elif message.text == 'Назад':
return bot.send_message(message.chat.id, 'NOT', reply_markup=markup_1)
except Exception:
return bot.send_message(message.chat.id, 'Выберите команду')
@bot.message_handler(func=lambda message: message.text == 'Вагон')
def wagon(message):
bot.send_message(message.chat.id, 'Введите номер вагона', reply_markup=markup)
@bot.message_handler(content_types='text')
def wagons(message):
try:
data = int(''.join(message))
print(data)
if isinstance(data, int) == True and data > 10000000 and data < 99999999:
bot.send_message(message.chat.id, f'{db.new_add(date, data)} Запись добавлена',
reply_markup=markup_1)
else:
bot.send_message(message.chat.id, 'Введите корректный номер вагона', reply_markup=markup_1)
except Exception:
bot.send_message(message.chat.id, 'Номер вагона состоит только из цифыр', reply_markup=markup_1)
Ответы (1 шт):
Автор решения: JONESS_77
→ Ссылка
нужно было использовать команду register_next_step_handler
@bot.message_handler(commands=['wagon']) def wagon(message): msg = bot.send_message(message.chat.id, 'Введите номер вагона', reply_markup=markup) bot.register_next_step_handler(msg, wagons)
def wagons(message): try: if message.text == '/back': bot.send_message(message.chat.id, 'Главаня', reply_markup=markup_1) else:
data = int(''.join(message.text))
print(data)
if isinstance(data, int) == True and data > 10000000 and data < 99999999:
bot.send_message(message.chat.id, f'{db.new_add(date, data)} Запись добавлена',
reply_markup=markup)
else:
bot.send_message(message.chat.id, 'Введите корректный номер вагона', reply_markup=markup_1)
except Exception:
bot.send_message(message.chat.id, 'Номер вагона состоит только из цифыр', reply_markup=markup_1)