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
— прикрепляет клавиатуру к сообщению.
При нажатии кнопки (Да
/Нет
/Помощь
):