Кнопки в Telegram Bot создаются заново

скрин с телеграма

При переходе с меню к выбору богов, а потом обратно в меню, а потом обратно к выбору богов, кнопки выбора богов дублируются почему-то

startkeyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
startbutton = ('Перейти к богам', 'Подписаться на рассылку', 'Рандомный факт')
godkeyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
gods = ('Хуань-Ди', 'Чжуань-Сюй', 'Ди-Ку', 'Яо', 'Шао-хао', 'Шунь', 'Назад в меню')
shnkeyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
shn = ('Информация', 'Внешность', 'Тест', 'Назад к богам')

@bot.message_handler(commands=["start"])
def start(m, res=False):
    startkeyboard.add(*startbutton)
    bot.send_message(m.chat.id, 'Воспользуйтесь кнопками меню.',  reply_markup=startkeyboard)

@bot.message_handler(content_types=["text"])
def godchoice(message):
    if message.text.strip() == 'Перейти к богам':
        godkeyboard.add(*gods)
        bot.send_message(message.chat.id, 'Выберите бога, чтобы узнать о нем.', reply_markup=godkeyboard)

    if message.text.strip() == 'Назад в меню':
        bot.send_message(message.chat.id, 'Воспользуйтесь кнопками меню.', reply_markup=startkeyboard)
        startkeyboard.add(*startbutton)

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

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

Вы каждый раз перезаписываете массив с кнопками, поэтому они и добавляются. Делайте так:

startkeyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
startbutton = ('Перейти к богам', 'Подписаться на рассылку', 'Рандомный факт')
startkeyboard.add(*startbutton)

godkeyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
gods = ('Хуань-Ди', 'Чжуань-Сюй', 'Ди-Ку', 'Яо', 'Шао-хао', 'Шунь', 'Назад в меню')
godkeyboard.add(*gods)

shnkeyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
shn = ('Информация', 'Внешность', 'Тест', 'Назад к богам')

@bot.message_handler(commands=["start"])
def start(m, res=False):
    bot.send_message(m.chat.id, 'Воспользуйтесь кнопками меню.',  reply_markup=startkeyboard)

@bot.message_handler(content_types=["text"])
def godchoice(message):
    if message.text.strip() == 'Перейти к богам':
        bot.send_message(message.chat.id, 'Выберите бога, чтобы узнать о нем.', reply_markup=godkeyboard)

    if message.text.strip() == 'Назад в меню':
        bot.send_message(message.chat.id, 'Воспользуйтесь кнопками меню.', reply_markup=startkeyboard)
→ Ссылка