не работают встроенные кнопки python telebot api, срочно!! проект горит

проблема заключается в том, что работает лишь одна кнопка ( elif callback.data == 'brush': markup_sale = types.InlineKeyboardMarkup())

но не работает вторая (elif callback.data == 'font': markup_font = types.InlineKeyboardMarkup())


import telebot 
from telebot import types

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


#стартовый текст
@bot.message_handler(commands=['start'])
def start(message):
    #вывод и расположение кнопок главного меню
    markup = types.InlineKeyboardMarkup()
    btn_help = types.InlineKeyboardButton(text='Поддержка ?', url='https://t.me/текст')
    btn_my_tgc = types.InlineKeyboardButton(text='Наш телеграмм канал ?', url='https://t.me/текст') # переставить тг канал
    btn_shop = types.InlineKeyboardButton(text='Товары ?', callback_data='store')
    markup.add(btn_shop, btn_help)
    markup.add(btn_my_tgc)
    #Основной приветственный текст
    bot.send_photo(message.chat.id, photo=open('photo/xd.jpg', 'rb'), reply_markup=markup)

#Обработчик кнопок
    @bot.callback_query_handler(func=lambda callback: True)
    def callback_massage(callback):

        #Человек нажал на кнопку товары
        if callback.data == 'store':
            # создание, вывод и расположение кнопок, с выбором города
            markup_home = types.InlineKeyboardMarkup()
            btn_font = types.InlineKeyboardButton(text='Шрифты', callback_data='font')  #volkhov1
            btn_brush = types.InlineKeyboardButton(text='Кисти', callback_data='brush') #volkhov2
            btn_texture = types.InlineKeyboardButton(text='Текстуры', callback_data='texture') #syas

            btn_home = types.InlineKeyboardButton(text='В главное меню ?', callback_data='back')
            markup_home.add(btn_font, btn_brush, btn_texture)
            markup_home.add(btn_home)
            # Выводим человеку кнопки, а так же текст и фото
            bot.delete_message(callback.message.chat.id, callback.message.message_id)
            bot.send_photo(message.chat.id, photo=open('photo/dx.jpg', 'rb'), reply_markup=markup_home)

            #пользователь нажал на шрифт, !!!СПИСОК ТОВАРОВ ДЛЯ шрифтов!!!!
        elif callback.data == 'font':
            markup_font = types.InlineKeyboardMarkup()

            #список шрифтов (постоянно обнавлять)
            tovar1 = types.InlineKeyboardButton(text='Шрифт 1 | 499р', callback_data='font_tovar1')
            tovar2 = types.InlineKeyboardButton(text='Шрифт 2 | 499р', callback_data='font_tovar2')
            tovar3 = types.InlineKeyboardButton(text='Шрифт 3 | 499р', callback_data='font_tovar3')
            tovar4 = types.InlineKeyboardButton(text='Шрифт 4 | 499р', callback_data='font_tovar4')
            markup_font.add(tovar1)
            markup_font.add(tovar2)
            markup_font.add(tovar3)
            markup_font.add(tovar4)

            #пользователь нажал на кисти

        elif callback.data == 'brush':
            markup_sale = types.InlineKeyboardMarkup()

            #список

            tovar1 = types.InlineKeyboardButton(text='Кисть 1 | 499р', callback_data='brush_tovar1')
            tovar2 = types.InlineKeyboardButton(text='Кисть 2 | 499р', callback_data='brush_tovar2')
            tovar3 = types.InlineKeyboardButton(text='Кисть 3 | 499р', callback_data='brush_tovar3')
            tovar4 = types.InlineKeyboardButton(text='Кисть 4 | 499р', callback_data='brush_tovar4')
            markup_sale.add(tovar1)
            markup_sale.add(tovar2)
            markup_sale.add(tovar3)
            markup_sale.add(tovar4)


            


            #кнопка "в главное меню", а так же фотка
            btn_home = types.InlineKeyboardButton(text='В главное меню ?', callback_data='back')
            markup_sale.add(btn_home)
            bot.delete_message(callback.message.chat.id, callback.message.message_id)
            bot.send_photo(message.chat.id, photo=open('photo/meow.jpg', 'rb'), reply_markup=markup_sale)

        # ПРИ ВЫБОРЕ 
        elif callback.data == 'volkhov_tovar1':
            bot.send_message(message.chat.id, '<b>текст</b>', parse_mode='html')

        #Кнопка "В главное меню"
        elif callback.data == 'back':
            bot.delete_message(callback.message.chat.id, callback.message.message_id)
            bot.send_photo(message.chat.id, photo=open('photo/xd.jpg', 'rb'), reply_markup = markup)

#Добавить возможность создавать рассылку

#команда хелп
@bot.message_handler(commands=['help'])
def main(message):
    bot.send_message(message.chat.id, '<b>текст для помощи', parse_mode='html')

#чтобы бот не оффался 
bot.polling(none_stop=True)

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

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

Суть проблемы в том что в вашем декораторе вы не указываете какие именно call-запросы принимаете из-за чего он все воспринимает как один.

  1. Сделаете функцию callback_massage глобальной(переместите ниже на уровень с функцией start).

  2. Укажите в декораторе обработок call-запросов какие-именно вы принимаете

    @bot.callback_query_handler(func=lambda call: call.data in ['store', 'font'...])

→ Ссылка