Кнопки в 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)
