Как после нажатии другой кнопки завершить выполнения других (Python telebot)

Этот бот при команде старт на клавиатуре выводит 3 кнопки. После нажатии например 'калькулятор' далее он работает, но потом если я нажму 'калькулятор систем счисления' пишется текст относящийся к этой кнопке, но действия выполняются как у кнопки 'калькулятор'. Я уже пробовал и bot.register_next_step_handler(), и bot.clear_step_handler_by_chat_id() (возможно я делал что-то не так), но у меня ничего не вышло. Чтобы выйти в меню где кнопки нужно прописать команду /start

Вот сам код:

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


@bot.message_handler(commands=['start'])
def start(message):
    start_markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    calculator = types.KeyboardButton('Калькулятор?')
    num_sys = types.KeyboardButton('Калькулятор систем счисления?')
    my_games = types.KeyboardButton('Скачать мои игры на питоне')
    start_markup.row(calculator, num_sys, my_games)
    bot.send_message(message.chat.id, f'Приветствую тебя, {message.from_user.first_name}!', reply_markup=start_markup)
    bot.register_next_step_handler(message, next)


markup = types.InlineKeyboardMarkup()
btn_bin = types.InlineKeyboardButton('Перевести в 2-ную систему счисления',
                                         callback_data='binary')
btn_oct = types.InlineKeyboardButton('Перевести в 8-ную систему счисления',
                                         callback_data='octal')
btn_hex = types.InlineKeyboardButton('Перевести в 16-ную систему счисления',
                                         callback_data='hex')
markup.add(btn_bin)
markup.add(btn_oct)
markup.add(btn_hex)
markup3 = types.InlineKeyboardMarkup()
markup3.add(types.InlineKeyboardButton('В 2-ную систему счисления', callback_data='binary3'))
markup3.add(types.InlineKeyboardButton('В 8-ную систему счисления', callback_data='octal3'))
markup3.add(types.InlineKeyboardButton('В 16-ную систему счисления', callback_data='hex3'))


def next(message):
    if message.text == 'Калькулятор?':
        bot.send_message(message.chat.id, '''Введите ("число" "знак" "число")
Например: 5+5 или 5 + 5
(можно вводить даже (9 * 8 - 98) / 9 * 23)''')
        @bot.message_handler()
        def send_mes(message):
            print(f'{message.from_user.first_name}: {message.text}')
            n = str(message.text)
            n = n.lstrip('0')
            try:
                eval(n)
                bot.reply_to(message, f'Ответ: {round((eval(n)), 10)}', reply_markup=markup)
            except ZeroDivisionError:
                bot.send_message(message.chat.id, 'На 0 делить нельзя!')
            except:
                bot.send_message(message.chat.id, '''Неккоректный ввод
Введите ("число" "знак" "число")
Например: 5+5 или 5 + 5
(можно вводить даже (9 * 8 - 98) / 9 * 23)''')

        @bot.callback_query_handler(func=lambda callback: True)
        def callback_message(callback):
            txt = callback.message.text
            txt = txt[txt.find(':') + 1:]
            if callback.data == 'binary':
                try:
                    bin_txt = bin(int(txt))
                    if bin_txt[0] == '-':
                        bot.send_message(callback.message.chat.id, f'Ваше число в 2-ной системе: -{bin_txt[3:]}')
                    else:
                        bot.send_message(callback.message.chat.id, f'Ваше число в 2-ной системе: {bin_txt[2:]}')
                except:
                    bot.send_message(callback.message.chat.id, 'Дробные числа нельзя(')
            elif callback.data == 'octal':
                try:
                    oct_txt = oct(int(txt))
                    if oct_txt[0] == '-':
                        bot.send_message(callback.message.chat.id, f'Ваше число в 8-ной системе: -{oct_txt[3:]}')
                    else:
                        bot.send_message(callback.message.chat.id, f'Ваше число в 8-ной системе: {oct_txt[2:]}')
                except:
                    bot.send_message(callback.message.chat.id, 'Дробные числа нельзя(')
            elif callback.data == 'hex':
                try:
                    hex_txt = hex(int(txt)).upper()
                    if hex_txt[0] == '-':
                        bot.send_message(callback.message.chat.id, f'Ваше число в 16-ной системе: -{hex_txt[3:]}')
                    else:
                        bot.send_message(callback.message.chat.id, f'Ваше число в 16-ной системе: {hex_txt[2:]}')
                except:
                    bot.send_message(callback.message.chat.id, 'Дробные числа нельзя(')
    elif message.text == 'Калькулятор систем счисления?':
        bot.send_message(message.chat.id, '(Пока только из 10-ной системы счисления)')
        bot.send_message(message.chat.id, 'Введите целое число в 10-ной системе счисления:')
        @bot.message_handler()
        def get_num(num):
            try:
                n = int(num.text)
                print(n)
                bot.send_message(message.chat.id, 'В какую систему счисления', reply_markup=markup3)
                @bot.callback_query_handler(func=lambda callback2: True)
                def callback_mes(callback2):
                    if callback2.data == 'binary3':
                        if n < 0:
                            bot.send_message(message.chat.id, f'Ваше число в двоичной системе счисления: -{bin(n)[3:]}')
                        else:
                            bot.send_message(message.chat.id, f'Ваше число в двоичной системе счисления: {bin(n)[2:]}')
                    if callback2.data == 'octal3':
                        if n < 0:
                            bot.send_message(message.chat.id, f'Ваше число в восьмеричной системе счисления: -{oct(n)[3:]}')
                        else:
                            bot.send_message(message.chat.id, f'Ваше число в восьмеричной системе счисления: {oct(n)[2:]}')
                    if callback2.data == 'hex3':
                        if n < 0:
                            bot.send_message(message.chat.id, f'Ваше число в шестнадцатиричной системе счисления: -{hex(n)[3:].upper()}')
                        else:
                            bot.send_message(message.chat.id, f'Ваше число в шестнадцатиричной системе счисления: {hex(n)[2:].upper()}')
            except ValueError:
                bot.send_message(message.chat.id, 'Введите целое число')
    elif message.text == 'Скачать мои игры на питоне':
        file1 = open('for_tg_bot\Кальк С С.py', 'rb')
        file2 = open('for_tg_bot\Лови кнопку.py', 'rb')
        file3 = open('for_tg_bot\Хомячок.py', 'rb')
        file4 = open('for_tg_bot\Развивалка.py', 'rb')
        bot.send_document(message.chat.id, file1)
        bot.send_document(message.chat.id, file2)
        bot.send_document(message.chat.id, file3)
        bot.send_document(message.chat.id, file4)



bot.infinity_polling()

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