Как сделать динамическую клавиатуру в tg-боте?

Для создания динамической клавиатуры в Telegram-боте на языке Python вы можете использовать библиотеку python-telegram-bot.

1. Установите библиотеку python-telegram-bot, если еще не установлена:

pip install python-telegram-bot

2. Импортируйте необходимые классы из библиотеки:

from telegram import ReplyKeyboardMarkup, KeyboardButton
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

3. Создайте функцию, которая будет обрабатывать сообщения с командой /start:

def start(update, context):
    custom_keyboard = [['Option 1', 'Option 2'], ['Option 3', 'Option 4']]
    reply_markup = ReplyKeyboardMarkup(custom_keyboard)
    
    context.bot.send_message(chat_id=update.effective_chat.id, text="Choose an option:", reply_markup=reply_markup)

4. Создайте функцию, которая будет обрабатывать нажатие на кнопку на клавиатуре:

def button_click(update, context):
    button = update.message.text
    context.bot.send_message(chat_id=update.effective_chat.id, text="You clicked on: " + button)

5. В функции main создайте и запустите экземпляр Updater, и добавьте обработчики команд и сообщений:

def main():
    updater = Updater(token='YOUR-BOT-TOKEN', use_context=True)
    dispatcher = updater.dispatcher

    start_handler = CommandHandler('start', start)
    button_click_handler = MessageHandler(Filters.text & (~Filters.command), button_click)

    dispatcher.add_handler(start_handler)
    dispatcher.add_handler(button_click_handler)

    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

В созданной функции start мы создаем специальный объект ReplyKeyboardMarkup, в котором указываем массив кнопок. Каждая кнопка представляет собой массив с названием кнопки.

В функции button_click мы получаем текст нажатой кнопки и отправляем пользователю соответствующее сообщение.

Обратите внимание, что вам необходимо заменить 'YOUR-BOT-TOKEN' на токен вашего Telegram-бота.