@bot.message_handler(...)
def process_first_step(message):
...
bot.register_next_step_handler(msg, process_second_step)
def process_second_step(message):
...
bot.register_next_step_handler(msg, process_final_step)
def process_final_step(message):
...
bot.clear_step_handler(msg)
user_categories = {}
...
# перед показом юзеру менюшки с категориями инициализируем его категории
user_categories[user_id] = []
...
# в коде генерации клавиатуры
for key, value in d.items():
if key in user_gategories[user_id]:
mark = "✓"
action = "-"
else:
mark = ""
action = "+"
search.insert(InlineKeyboardButton(value+mark, callback_data=cearch_callback.new(cat_name=key, action=action)))
...
# в коде коллбэка:
if action == "+":
user_categories[call.from_user.id].append(cat_name)
elif action == "-":
user_categories[call.from_user.id].remove(cat_name)
else:
raise BaseException("OOPS wrong action value")
keyboard = функция_генерации_клавиатуры()
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="текст", reply_markup=keyboard)