Статья Автор: Деникина Н.В., Деникин А.В.

Кнопки в telegram-боте. Reply-кнопки

Reply-кнопки (ReplyKeyboardMarkup)

Особенности:

  • Появляются вместо клавиатуры.

  • Удобны для быстрого выбора вариантов.

  • Исчезают при ручном скрытии.

Как добавить?

Используется ReplyKeyboardMarkup + MessageHandler для обработки ответов.

Пример:

from telegram import ReplyKeyboardMarkup

async def start(update: Update, context: CallbackContext):
    keyboard = [["Да", "Нет"], ["Помощь"]]
    reply_markup = ReplyKeyboardMarkup(keyboard, resize_keyboard=True)
    await update.message.reply_text("Вы согласны?", reply_markup=reply_markup)

async def handle_reply(update: Update, context: CallbackContext):
    text = update.message.text
    await update.message.reply_text(f"Вы выбрали: {text}")

app = Application.builder().token("TOKEN").build()
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_reply))
app.run_polling()

Параметры:

  • resize_keyboard=True — кнопки подстраиваются под размер экрана.
  • one_time_keyboard=True — клавиатура скроется после нажатия.

Как это работает
  1. По команде /start бот отправляет сообщение с Reply-клавиатурой (кнопки ДаНетПомощь).

  2. Когда пользователь нажимает кнопку, бот отвечает: "Вы выбрали: [текст кнопки]".

  • keyboard — двумерный список, где:
    • ["Да", "Нет"] — первая строка с двумя кнопками.
    • ["Помощь"] — вторая строка с одной кнопкой.
  • ReplyKeyboardMarkup — превращает список в клавиатуру:
    • resize_keyboard=True — кнопки автоматически подстраиваются под размер экрана.
  • reply_markup — прикрепляет клавиатуру к сообщению.

При нажатии кнопки (Да/Нет/Помощь):

  • Telegram отправляет текст кнопки как обычное сообщение.

  • Бот перехватывает его через MessageHandler и отвечает.

 

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать