python, библиотека telebot. как остановить обработку сообщений @bot.message_handler(content_types=['text'])?

пишу телеграм-бота, проверяющего знания по физике. есть команда /class, с помощью которой можно выбрать класс (кнопками, которые отправляют текст). и даже после того, как запускается другая команда, @bot.message_handler(content_types=['text']) всё равно продолжает обрабатывать сообщения, и если это обычный текст, то отвечать 'Ошибка! Указано некорректное значение. Этот бот предназначен только для 8-10 классов.' (что должно выходить при вводе букв, например). а мне нужно, чтобы этот хендлер прекратил обработку сообщений. помогите, пожалуйста!

import telebot
from telebot import types

bot = telebot.TeleBot('токен')

@bot.message_handler(commands=['class'])
def chose_class1(message):
    class_btn = types.ReplyKeyboardMarkup(resize_keyboard=True)
    class_8 = types.KeyboardButton('8 класс')
    class_9 = types.KeyboardButton('9 класс')
    class_10 = types.KeyboardButton('10 класс')
    class_btn.add(class_8, class_9, class_10)

    bot.send_message(message.chat.id, 'В каком классе ты учишься?', reply_markup=class_btn)
    global user_class
    user_class = 0
    @bot.message_handler(content_types=['text'])
    def choose_class2(message):
        if(message.text[0:2] not in ['8 ', '9 ', '10']):
            bot.send_message(message.chat.id, 'Ошибка! Указано некорректное значение. '
                                               'Этот бот предназначен только для 8-10 классов.')
        else:
            user_class = int(message.text[0:2])
            bot.send_message(message.chat.id, f'Отлично, ты учишься в {user_class} классе.')
            print(user_class)

def test_q(message):
    global right_ans
    ans = types.ReplyKeyboardMarkup(resize_keyboard=True)
    r_ans = types.KeyboardButton('Верный ответ')
    w_ans1 = types.KeyboardButton('Неверный ответ 1')
    w_ans2 = types.KeyboardButton('Неверный ответ 2')
    w_ans3 = types.KeyboardButton('Неверный ответ 3')
    ans.add(r_ans, w_ans1, w_ans2, w_ans3)
    bot.send_message(message.chat.id, 'Тестовый вопрос:', reply_markup=ans)
    @bot.message_handler(content_types=['text'])
    def result(message):
        global right_ans
        if(message.text == 'Верный ответ'):
            bot.send_message(message.chat.id, 'Верно!')
            right_ans += 1
        else:
            bot.send_message(message.chat.id, 'Неправильно. Верным ответом является "Верный ответ"')

@bot.message_handler(commands=['beta_test'])
def beta_test_msg(message):
    bot.send_message(message.chat.id,
                         'Это бета-версия теста')
    global right_ans
    right_ans = 0
    test_q(message)


bot.polling(none_stop=True)

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

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

Не совсем понял, что вы хотите увидеть в ответе. Могу предложить что-нибудь подобное

import telebot
from telebot import types

bot = telebot.TeleBot('токен')

@bot.message_handler(commands=['class'])
def chose_class1(message):
    class_btn = types.ReplyKeyboardMarkup(resize_keyboard=True)
    class_8 = types.KeyboardButton('8 класс')
    class_9 = types.KeyboardButton('9 класс')
    class_10 = types.KeyboardButton('10 класс')
    class_btn.add(class_8, class_9, class_10)

    bot.send_message(message.chat.id, 'В каком классе ты учишься?', reply_markup=class_btn)
    bot.register_next_step_handler(message, choose_class2)

def choose_class2(message):
    if message.text not in ['8 класс', '9 класс', '10 класс']:
        bot.send_message(message.chat.id, 'Ошибка! Указано некорректное значение. '
                                          'Этот бот предназначен только для 8-10 классов.')
        return
    
    user_class = int(message.text.split()[0])
    bot.send_message(message.chat.id, f'Отлично, ты учишься в {user_class} классе.')
    print(user_class)

@bot.message_handler(commands=['beta_test'])
def beta_test_msg(message):
    bot.send_message(message.chat.id, 'Это бета-версия теста')
    right_ans = 0
    test_q(message)

def test_q(message):
    ans = types.ReplyKeyboardMarkup(resize_keyboard=True)
    r_ans = types.KeyboardButton('Верный ответ')
    w_ans1 = types.KeyboardButton('Неверный ответ 1')
    w_ans2 = types.KeyboardButton('Неверный ответ 2')
    w_ans3 = types.KeyboardButton('Неверный ответ 3')
    ans.add(r_ans, w_ans1, w_ans2, w_ans3)
    bot.send_message(message.chat.id, 'Тестовый вопрос:', reply_markup=ans)
    bot.register_next_step_handler(message, result)

def result(message):
    if message.text == 'Верный ответ':
        bot.send_message(message.chat.id, 'Верно!')
        right_ans += 1
    else:
        bot.send_message(message.chat.id, 'Неправильно. Верным ответом является "Верный ответ"')

bot.polling(none_stop=True)

→ Ссылка