← Все вопросы
Как добавить кнопки под полем ввода (ReplyKeyboard) в aiogram?
7
Хочу, чтобы вместо ввода текста у пользователя появились кнопки внизу экрана, например «Меню» и «Помощь». Как сделать такую клавиатуру в aiogram 3?
2 ответа
11
✓ Принятый ответ — помог автору
Это ReplyKeyboard — кнопки заменяют клавиатуру внизу. По нажатию они отправляют свой текст как обычное сообщение.
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
kb = ReplyKeyboardMarkup(
keyboard=[
[KeyboardButton(text="Меню"), KeyboardButton(text="Помощь")],
[KeyboardButton(text="О боте")],
],
resize_keyboard=True, # кнопки компактнее
)
@dp.message(CommandStart())
async def start(message: Message):
await message.answer("Выбери действие:", reply_markup=kb)
keyboard — это список строк, каждая строка — список кнопок. Здесь две строки: в первой две кнопки, во второй одна.
Ловить нажатие просто: кнопка «Помощь» присылает текст Помощь, поэтому обрабатывай как обычное сообщение: @dp.message(F.text == "Помощь").
5
Не путай два типа кнопок: ReplyKeyboard (внизу, шлёт текст) и InlineKeyboard (под самим сообщением, шлёт callback). Reply удобна для постоянного меню, а Inline — для действий внутри конкретного сообщения (лайк, «купить», выбор варианта).
Ваш ответ
Войдите, чтобы ответить на вопрос.