Почему зацикливается exception и как это исправить?

Пишу бота для скачивания и отправки картинок с сайта. Основная часть работает, но хотелось бы сделать предупреждение, о неправильно введенных данных ( то есть вместо чисел был введен текст). Попробовал сделать через exception, но оно зацикливает ответ Цифрами, пожалуйста. Есть ощущение, будто изначально начал неправильно писать код. Как можно это исправить?

import telebot
import requests
#bot = telebot.TeleBot("резерв токен")
bot = telebot.TeleBot("токен ._.")

lesson = 0
number = 0

@bot.message_handler(content_types=['text'])


def start(message):
    if message.text == '/start':
        bot.send_message(message.from_user.id, "Введи номер урока:")
        bot.register_next_step_handler(message, get_lesson)
    else:
        bot.send_message(message.from_user.id, 'Напиши /start')

def get_lesson(message): 
    global lesson
    while lesson == 0:
        try: 
            lesson = int(message.text)
        except ValueError:
            bot.send_message(message.from_user.id, 'Цифрами, пожалуйста')
            bot.register_next_step_handler(message, get_lesson)
    bot.send_message(message.from_user.id, 'Введи номер упражнения:')
    bot.register_next_step_handler(message, get_number) 

def get_number(message):
    global number
    number = int(message.text)
    bot.send_message(message.from_user.id, 'Начинаю качать...')
    url = 'sourceUrl' + str(lesson) + '/' + str(number) + '.jpg'
    r = requests.get(url)
    bot.send_photo(message.chat.id, r.content)

message = " "
bot.infinity_polling()

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

Автор решения: gil9red

Цикл тут не нужен, используйте вместо него проверку и при ValueError выходите из функции:

def get_lesson(message): 
    global lesson
    if lesson == 0:
        try: 
            lesson = int(message.text)
        except ValueError:
            bot.send_message(message.from_user.id, 'Цифрами, пожалуйста')
            bot.register_next_step_handler(message, get_lesson)
            return

    bot.send_message(message.from_user.id, 'Введи номер упражнения:')
    bot.register_next_step_handler(message, get_number) 
→ Ссылка