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 — клавиатура скроется после нажатия.
Как это работает
-
По команде /start бот отправляет сообщение с Reply-клавиатурой (кнопки Да, Нет, Помощь).
-
Когда пользователь нажимает кнопку, бот отвечает: "Вы выбрали: [текст кнопки]".
keyboard — двумерный список, где:
["Да", "Нет"] — первая строка с двумя кнопками.
["Помощь"] — вторая строка с одной кнопкой.
ReplyKeyboardMarkup — превращает список в клавиатуру:
resize_keyboard=True — кнопки автоматически подстраиваются под размер экрана.
reply_markup — прикрепляет клавиатуру к сообщению.
При нажатии кнопки (Да/Нет/Помощь):