← Все вопросы

Как добавить кнопки под полем ввода (ReplyKeyboard) в aiogram?

Задан 22 месяца назад1.2к просмотров2 ответа
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 — для действий внутри конкретного сообщения (лайк, «купить», выбор варианта).

Ваш ответ

Войдите, чтобы ответить на вопрос.