Открыть новое подменю, после нажатия на кнопку. Python, Telegram

import telebot
from telebot import types

bot = telebot.TeleBot('')


@bot.message_handler(commands=["start"])
def start(m):
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add(*[types.KeyboardButton(name) for name in ['Начать заниматься']])
    keyboard.add(*[types.KeyboardButton(name) for name in ['Наша группа спорта']])
    keyboard.add(*[types.KeyboardButton(name) for name in ['О нас']])
    bot.send_message(m.chat.id, 'Выберите действие', reply_markup=keyboard)

@bot.message_handler(content_types=['text'])
def message(message):
    if message.text == 'Начать заниматься':
        keyboardgostart = types.ReplyKeyboardMarkup(resize_keyboard=True)
        keyboardgostart.add(*[types.KeyboardButton(name) for name in ['Зал']])
        keyboardgostart.add(*[types.KeyboardButton(name) for name in ['Улица']])
        bot.send_message(message.chat.id, 'Выберите кнопку')
    elif message.text == 'Наша группа спорта':
        bot.send_message(message.chat.id, 'Сслыка на группу')
    elif message.text == 'О нас':
        bot.send_message(message.chat.id, 'FQ')

bot.polling()

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

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

keyboard.add(*[types.KeyboardButton(name) for name in и keyboardgostart.add(*[types.KeyboardButton(name) for name in принимает список, в котором перечислены кнопки (в данном случае), поэтому можно все кнопки поместить в один список.

И если при if message.text == 'Начать заниматься': вам нужно показывать другую клавиатуру, то почему вы ее не добавляете к сообщению через reply_markup=keyboardgostart?

Будьте внимательны, потому как с кнопками в start() вы сделали всё правильно.

А вообще рекомендую переходить на InlineKeyboard

@bot.message_handler(commands=["start"])
def start(m):
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add(*[types.KeyboardButton(name) for name in ['Начать заниматься', 'Наша группа спорта', 'О нас']])
    bot.send_message(m.chat.id, 'Выберите действие', reply_markup=keyboard)


@bot.message_handler(content_types=['text'])
def message(message):
    if message.text == 'Начать заниматься':
        keyboardgostart = types.ReplyKeyboardMarkup(resize_keyboard=True)
        keyboardgostart.add(*[types.KeyboardButton(name) for name in ['Зал', 'Улица']])
        bot.send_message(message.chat.id, 'Выберите кнопку', reply_markup=keyboardgostart)
    elif message.text == 'Наша группа спорта':
        bot.send_message(message.chat.id, 'Сслыка на группу')
    elif message.text == 'О нас':
        bot.send_message(message.chat.id, 'FQ')


bot.polling()
→ Ссылка