Для создания клавиатур в библиотеке aiogram3 вам понадобятся два основных компонента: объекты класса ReplyKeyboardMarkup
или InlineKeyboardMarkup
для создания клавиатуры и объекты класса KeyboardButton
или InlineKeyboardButton
для создания кнопок в клавиатуре.
Начнем с создания объекта класса ReplyKeyboardMarkup
для создания основной клавиатуры:
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton # Создание объекта ReplyKeyboardMarkup keyboard = ReplyKeyboardMarkup(resize_keyboard=True) # Создание кнопок для клавиатуры button1 = KeyboardButton('Кнопка 1') button2 = KeyboardButton('Кнопка 2') # Добавление кнопок в клавиатуру keyboard.add(button1, button2)
Параметр resize_keyboard=True
позволяет менять размер клавиатуры в зависимости от количества кнопок.
Теперь создадим объект класса InlineKeyboardMarkup
для создания встроенной клавиатуры:
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton # Создание объекта InlineKeyboardMarkup inline_keyboard = InlineKeyboardMarkup() # Создание кнопок для встроенной клавиатуры inline_button1 = InlineKeyboardButton('Встроенная кнопка 1', callback_data='button1') inline_button2 = InlineKeyboardButton('Встроенная кнопка 2', callback_data='button2') # Добавление кнопок в встроенную клавиатуру inline_keyboard.add(inline_button1, inline_button2)
Как видите, встроенная клавиатура немного отличается от основной клавиатуры. В кнопках встроенной клавиатуры вы можете передать callback_data
, который будет использоваться для обработки нажатий кнопок.
Использование созданных клавиатур в aiogram3 выглядит следующим образом:
from aiogram import Bot, Dispatcher, types from aiogram.contrib.fsm_storage.memory import MemoryStorage bot = Bot(token='YOUR_TOKEN') storage = MemoryStorage() dp = Dispatcher(bot, storage=storage) @dp.message_handler(commands=['start']) async def start_handler(message: types.Message): await message.answer('Привет, выбери действие:', reply_markup=keyboard) @dp.callback_query_handler(lambda c: c.data == 'button1') async def button1_handler(callback_query: types.CallbackQuery): await callback_query.answer('Нажата кнопка 1') @dp.callback_query_handler(lambda c: c.data == 'button2') async def button2_handler(callback_query: types.CallbackQuery): await callback_query.answer('Нажата кнопка 2') if __name__ == '__main__': from aiogram import executor executor.start_polling(dp, skip_updates=True)
В приведенном примере функция start_handler
отправляет пользователю сообщение с клавиатурой. Обработчики button1_handler
и button2_handler
реагируют на нажатия кнопок встроенной клавиатуры и отправляют ответы.
Теперь вы знаете, как создавать клавиатуры в aiogram3 и использовать их в боте на платформе Telegram. Удачи!