# Клавиатура

{% embed url="<https://dev.vk.com/api/bots/development/keyboard>" %}
Источник
{% endembed %}

К сообщению можно прикреплять кнопки, удалять их и менять местами. Текст отображается по центру кнопки и обрезается, если не помещается полностью при текущем размере экрана.

<figure><img src="https://3357342088-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZN10WvcXgl30afEjLBp4%2Fuploads%2Fgt0PPoDKxwqqoAdoDaTR%2Fimage.png?alt=media&#x26;token=2b23092f-bd13-4248-82c0-d1757c70c657" alt=""><figcaption><p>Клавиатура в сообщении</p></figcaption></figure>

Кнопки можно перемещать между собой в строке и между строк с помощью зажатия левой кнопкой мыши или долгим зажатием на мобильном.

## Типы кнопок

1. Текстовая кнопка - отправляет определенный текст, указанный на кнопке;
2. Местоположение - отправляет карту с текущим местоположением подписчика;
3. Оплата - позволяет оплатить платную подписку через VK Pay;
4. Приложение - позволяет открыть любое приложение из Vk Mini Apps;
5. Ссылка - позволяет открыть любую ссылку.

Текстовые кнопки не работают в качестве ключевых слов.

Открытие приложений и ссылок по кнопками никак не отслеживается.

#### VK Pay

* кнопка не показываться, если не найдена платная подписка с ненулевой стоимостью
* кнопка не показываться, если стоимость меньше 1 руб.
* кнопка не показываться, если пользователь уже подписан, и подписка не периодическая.

## **Стандартная клавиатура**

По умолчанию, клавиатура показывается под полем ввода в диалоге с пользователем.&#x20;

{% hint style="warning" %}
**Внимание!** Максимальный размер стандартной клавиатуры — 5 столбцов × 10 строк. При этом максимальное количество кнопок: 40.
{% endhint %}

![Стандартная клавиатура](https://sun9-29.userapi.com/c853516/v853516515/65ca5/JJBGWKXGsAk.jpg)

Если установить опцию **Скрыть клавиатуру после нажатия**, то стандартная клавиатура будет скрываться после нажатия на кнопку.

Если в момент прохождения пользователем бота ему пришло сообщение из массовой рассылки, кнопки от бота сохранятся.

Если в момент прохождения пользователем бота ему пришло сообщение от другого бота, кнопки от первого бота будут удалены, даже если последнее сообщение пришло без кнопок. Таким образом можно удалять кнопки у пользователей.

{% hint style="warning" %}
**Внимание!** После остановки или удаления бота стандартная клавиатура у пользователя не скроется. Чтобы ее убрать, необходимо отправить другое сообщение с помощью бота.
{% endhint %}

Клавиатура с кнопками может быть скрыта. Чтобы ее показать, нужно нажать на кнопку с четырьмя точками.

![Показать клавиатуру ВКонтакте](https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/SmkieE6J38L6ToDIA1Wz/image.png)

**Особенности стандартной клавиатуры:**

* Располагается под формой для ввода сообщения
* Удаляется после получения нового сообщения от бота
* Скрывается под иконкой с четырьмя точками (можно не заметить эту иконку и потерять клавиатуру)

## **Клавиатура внутри сообщения**

Inline-клавиатура (или inline-кнопки) - это клавиатура, которая показывается под определенным сообщением.

{% hint style="warning" %}
**Внимание!** Максимальный размер встроенной клавиатуры — 5 столбцов × 6 строк. При этом максимальное количество кнопок: 10.
{% endhint %}

![Клавиатура внутри сообщения](https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/eKe3s9XkBPrsAW1FsVLl/image.png)

**Особенности Inline-клавиатуры:**&#x20;

* Располагается под определенным сообщением
* Cохраняется в истории сообщений
* Не скрывается (с одной стороны это плюс - ее нельзя не заметить, с другой стороны - на эти кнопки можно нажимать бесконечное количество раз и их никак не удалить)

## Скрытие клавиатуры после нажатия

{% hint style="warning" %}
**Внимание!** Эта опция касается только стандартной клавиатуры. Inline кнопки не скрываются.
{% endhint %}

Опция **Скрыть клавиатуру после нажатия** позволяет убрать клавиатуру, чтобы пользователь больше не смог нажать на кнопки. Данная опция будет полезна, если не нужны повторные нажатия, и после кнопки нет дальнейших сообщений.

Если в чат-боте настроены сообщения после нажатия на кнопки, эту опцию можно не использовать, так как при получении следующего сообщения старая клавиатуры будет удалена или заменена новой.

{% hint style="warning" %}
**Внимание!** Кнопки скрываются даже если вместо нажатия на кнопку пользователь написал сообщение.
{% endhint %}

## Переменные

В тексте кнопок можно использовать [глобальные ](https://help.senler.ru/senler/kanaly/vkontakte/peremennye/globalnye-peremennye)или [пользовательские ](https://help.senler.ru/senler/kanaly/vkontakte/peremennye/polzovatelskie-peremennye)переменные.

{% hint style="warning" %}
**Внимание!** Если переменная не будет найдена или будет иметь пустое значение, кнопка не будет показываться.
{% endhint %}

![Пример кнопки, которая содержит переменную](https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/9kiKE4a4SfsUu8bOVlKP/image.png)

## Удаление старых кнопок

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

Можно удалить старые кнопки у всех пользователей, которые были отправлены ранее в сообщениях, включая Inline-кнопки. Для этого нужно **выключить Возможности ботов**.&#x20;

{% hint style="warning" %}
**Внимание!** При повторном включении возможностей ботов кнопки не появятся.
{% endhint %}

![](https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/Xoaw0zN6fTLllnZskfwy/image.png)

## Не работают кнопки

Если бот не реагирует на нажатие кнопок, выполните автоматическую настройку в разделе Настройки. Это должно решить проблему, так как в редких случаях Callback API ВКонтакте перестает работать (причины пока не выявлены), из-за этого сервис не получает информации о нажатии на кнопки.

К сожалению автоматическая настройка никак не позволит учесть предыдущие нажатия кнопок, поэтому если у вас были пользователи, которые нажимали на кнопки и не перешли на следующий шаг, их нужно будет перенести вручную.

![Автоматическая настройка подключения ВК](https://content.gitbook.com/content/ZN10WvcXgl30afEjLBp4/blobs/bXJU5P9HODFnM1D2WB05/image.png)

## Команда не найдена

При нажатии на кнопку отправляется сообщение:

> Извините, команда не найдена.

Такое сообщение отправляем в следующих случаях:

* пользователь не находится в базе подписчиков
* пользователь не находится в боте
* чат-бот был удален
* шаг с кнопкой в боте был удален
* пользователь находится в черном списке

## Полезные материалы

{% embed url="<https://vk.com/dev/bots_docs_3?f=4.1.%20%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5>" %}
