Как сделать бесконечную цепочку callback ответов в telebot?

У нас есть глобальный словарь, в котором содержится объект и его количество. По команде /list все что есть в словаре выводится в списке инлайн кнопок с выбором объекта. Выбрав кнопку появляется объект и его количество, которое меняется посредством кнопок 'Добавить' и 'Убавить'. Все существующие кнопки меняются через edit_message_text.

Как зациклить все это? Как только я в callback_data ввожу функции, они при каждом выводе кнопок 'Добавить' и 'Убавить' инициализируются, хотя должны только после нажатия одной из кнопок

Код:

def plus(key):
    global dct
    dct[key] += 1
    return f'{key} | кол-во: {dct[key]}'


def minus(key):
    global dct
    if dct[key] == 1:
        return 'Нельзя выставить число меньше нуля'
    dct[key] -= 1
    return f'{key} | кол-во: {dct[key]}'


@bot.message_handler(commands=['list'])
def get_list(message):
    keyboard = types.InlineKeyboardMarkup()
    for key, value in dct.items():
        keyboard.add(types.InlineKeyboardButton(f'{key} | кол-во: {value}', callback_data=f'{key} | кол-во: {value}'))
    bot.send_message(message.chat.id, 'Список объектов:', reply_markup=keyboard)


@bot.callback_query_handler(func=lambda call: True)
def edit_message(call):
    key = call.data.split()
    if call.message:
        new_keyboard = types.InlineKeyboardMarkup()
        plus_button = types.InlineKeyboardButton('Добавить', callback_data=plus(key[0]))
        minus_button = types.InlineKeyboardButton('Убавить', callback_data=minus(key[0]))
        new_keyboard.row(plus_button, minus_button)
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=call.data, reply_markup=new_keyboard)

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