Помогите пофиксить цикл в TelegramAPI

Цикл выполняется не по порядку, а до первой функции и как-только выполнится до функции цыкл решает завершится.

@bot.message_handler(commands=['start']) 
def start_message(message):
    bot.send_message(message.chat.id, 'Введите число:')     
    @bot.message_handler(content_types=['text']) 
    def handle_text(message): 
        try:
            number = int(message.text)
            bot.send_message(message.chat.id, 'Вы ввели число: {}'.format(number)) 
        except ValueError:
            bot.send_message(message.chat.id, 'Вы ввели некорректное число!')
        while number!=0:
            bot.send_message(message.chat.id, 'Введите число:')     
            @bot.message_handler(content_types=['text']) 
            def handle_text(message): 
                try:
                    number1 = int(message.text)
                    bot.send_message(message.chat.id, 'Вы ввели число: {}'.format(number)) 
                except ValueError:
                    bot.send_message(message.chat.id, 'Вы ввели некорректное число!')
                bot.send_message(message.chat.id, f'ввёл: {number1}')
            number -= 1

Ответы (1 шт):

Автор решения: Ben Puls

Откажитесь от циклов в таком решении, используйте метод bot.register_next_step_chandler для вызова функции.

@bot.message_handler(commands=['start'])
def start_message(message):
    enter_number = bot.send_message(message.chat.id, 'Введите число:')
    bot.register_next_step_handler(enter_number, attempt1)


def attempt1(message):
    number = int(message.text)
    try:
        bot.send_message(message.chat.id, 'Вы ввели число: {}'.format(number))
        while number != 0:
            enter_number = bot.send_message(message.chat.id, 'Введите число:')
            bot.register_next_step_handler(enter_number, attempt2)
            number -= 1
    except ValueError:
        bot.send_message(message.chat.id, 'Вы ввели некорректное число!')


def attempt2(message):
    number1 = int(message.text)
    try:
        bot.send_message(message.chat.id, 'Вы ввели число: {}'.format(number1))
    except ValueError:
        bot.send_message(message.chat.id, 'Вы ввели некорректное число!')
        bot.send_message(message.chat.id, f'ввёл: {number1}')

Насколько я понял, если пользователь вводит отличное от нуля число, то мы просим ещё раз ввести его число.

Сообщите, ту ли задачу выполняет мой код.

→ Ссылка