Не работает функция истории в телеграмм боте

О Проекте

Телеграм бот для учёта вагонов

Функции

Бот добавляет номера вагонов в базу вместе с исторей.

Проблема возникает после ввода номера вагона: не получается посмотреть историю — приходится презапускать бота для этого.

Код:

@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)
→ Ссылка