Перейти к содержанию

Клавиатуры

Для удобной генерации клавиатур используйте класс Keyboard из vkwave.bots.utils.keyboards

Типы кнопок

VkWave поддерживает все типы кнопок, доступные в ВК. Подробнее в документации

Тип Метод для создания
Text add_text_button()
Link add_link_button()
Location add_location_button()
Vk Pay add_vkpay_button()
Vk App add_vkapps_button()
Callback add_callback_button()

Настройка лейаута клавиатуры

Клавиатура ВКонтакте это сетка, максимальный размер которой в обычном режиме составляет 5 × 10 кнопок, в инлайн-режиме (клавиатура в рамке сообщения) – 5 × 6 кнопок.

Keyboard принимает несколько параметров, настраивающих то, как будет выглядеть клавиатура.

Параметр Описание
one_time Клавиатура исчезнет после нажатия на кнопку
inline Отображать клавиатуру в инлайн-режиме

Для создания новой строки в клавиатуре вызовите метод keyboard.add_row()

Payload (полезная нагрузка)

Клавиатуры ВКонтакте поддерживают отправку скрытой информации по нажатию на любую кнопку. Это заранее определённый JSON, по которому можно, например, фильтровать события, или передавать какую-нибудь информацию на следующие шаги работы бота.

from vkwave.bots.utils.keyboards.keyboard import Keyboard

keyboard = Keyboard()

kb.add_text_button("Синяя кнопка", payload={"button": "test"})

О конвертации словаря в JSON позаботится VkWave

Настройка цвета кнопки

Кнопки типа Text и Callback можно перекрасить. Используйте для этого перечисление ButtonColor из vkwave.bots.utils.keyboards.keyboard

kb.add_text_button("Синяя кнопка", color=ButtonColor.PRIMARY)
kb.add_text_button("Белая кнопка", color=ButtonColor.SECONDARY)
kb.add_text_button("Красная кнопка", color=ButtonColor.NEGATIVE)
kb.add_text_button("Зелёная кнопка", color=ButtonColor.POSITIVE)

По умолчанию все кнопки синие (ButtonColor.PRIMARY)

Отправка клавиатуры

Вызовите любую функцию, отправляющую сообщения с параметром keyboard, в который передайте JSON с клавиатурой.
Он генерируется методом keyboard.get_keyboard()

await event.answer("Сообщение с клавиатурой", keyboard=keyboard.get_keyboard())