# VK API: Кнопки в боте сообщества

Сценарий из mcp-everything. Актуально на 2026-10-24.

Клавиатура под полем ввода или под сообщением: «Каталог», «Мой заказ», «Связаться с оператором».

1. Опиши клавиатуру JSON-объектом: buttons — строки кнопок, у каждой action с type = text, label и payload (по нему бот поймёт, что нажали). inline = true показывает кнопки под сообщением.
2. Отправь сообщение с клавиатурой: POST /method/messages.send с peer_id, message, random_id и keyboard — JSON-строкой.
3. Нажатие текстовой кнопки приходит как обычное входящее сообщение message_new — в нём есть payload кнопки.

```bash
curl https://api.vk.ru/method/messages.send \
  -H "Authorization: Bearer $VK_GROUP_TOKEN" \
  --data-urlencode 'peer_id=<peer_id>' \
  --data-urlencode "random_id=$RANDOM$RANDOM" \
  --data-urlencode 'message=Чем помочь?' \
  --data-urlencode 'keyboard={"one_time": false, "buttons": [[
      {"action": {"type": "text", "label": "Каталог", "payload": "{\"cmd\": \"catalog\"}"}, "color": "primary"},
      {"action": {"type": "text", "label": "Мой заказ", "payload": "{\"cmd\": \"order\"}"}, "color": "secondary"}
    ]]}' \
  --data-urlencode 'v=5.199'
```

## Базовые URL

- Боевой: `https://api.vk.ru`
- URL метода: `https://api.vk.ru/method/<имя-API-метода>`

## Авторизация

Тип: Bearer-токен

Ключ доступа передаётся в каждом запросе в заголовке `Authorization: Bearer <КЛЮЧ_ДОСТУПА>`. Тип ключа указан у каждого метода: ключ пользователя, ключ сообщества или сервисный ключ приложения.

Ответ:

```
curl 'https://api.vk.ru/method/users.get' \
  -H 'Authorization: Bearer <КЛЮЧ_ДОСТУПА>' \
  -F 'user_ids=743784474' \
  -F 'fields=bdate' \
  -F 'v=5.131'
```

## Методы сценария

### POST /method/messages.send — Отправка сообщения

Ключи: пользователя, сообщества.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `v` | body | string | да | Версия API |
| `peer_id` | body | integer | нет | Получатель: ID пользователя; 2000000000 + chat_id для беседы; -ID сообщества |
| `peer_ids` | body | array | нет | Несколько получателей, до 100 |
| `user_id` | body | integer | нет | ID пользователя |
| `domain` | body | string | нет | Короткий адрес пользователя |
| `random_id` | body | integer | нет | Уникальный ID для защиты от повторной отправки |
| `message` | body | string | нет | Текст; обязателен, если нет attachment |
| `attachment` | body | string | нет | Вложения <owner_id>_<media_id> через запятую; обязательны, если нет message |
| `reply_to` | body | integer | нет | ID сообщения, на которое отвечаем |
| `forward_messages` | body | array | нет | ID пересылаемых сообщений через запятую |
| `keyboard` | body | string | нет | Клавиатура бота (JSON) |
| `payload` | body | string | нет | Полезная нагрузка |
| `group_id` | body | integer | нет | ID сообщества (с ключом сообщества) |
| `dont_parse_links` | body | boolean | нет | Не создавать сниппеты ссылок |
| `disable_mentions` | body | boolean | нет | Отключить уведомления об упоминаниях |

## Нюансы

- HTTP-методы GET и POST равнозначны; только HTTPS.
- Обязательный во всех запросах параметр `v` — версия API. В документации указана актуальная версия 5.131, а официальная JSON-схема методов VK описывает версию 5.199.
- Тело POST — `application/x-www-form-urlencoded` или `multipart/form-data` (для файлов и данных больше 2 КБ); `application/json` не поддерживается.
- Имя метода чувствительно к регистру.
- Общие параметры для всех методов: `lang` (`ru`, `uk`, `be`, `en`, `es`, `fi`, `de`, `it`) и `test_mode=1`.
- ID сообщества в `owner_id` передаётся со знаком минус.
- Кроме ограничений частоты есть закрытые количественные лимиты на однотипные методы: при превышении метод может стать временно недоступен или потребовать капчу.

## Другие сценарии

- [Бот сообщества: принимать сообщения через Long Poll](https://mcp-everything.ru/integrations/vk-api/scenarios/bot-soobschestva-prinimat-soobscheniya.md)
- [Опубликовать пост с картинкой в сообществе](https://mcp-everything.ru/integrations/vk-api/scenarios/opublikovat-post-s-kartinkoy.md)
- [Узнать данные пользователя или сообщества по ссылке](https://mcp-everything.ru/integrations/vk-api/scenarios/uznat-dannye-polzovatelya-ili.md)
- [Выгрузить участников сообщества](https://mcp-everything.ru/integrations/vk-api/scenarios/vygruzit-uchastnikov-soobschestva.md)

---

Если этого недостаточно — официальная документация: https://dev.vk.com/ru/api/api-requests
Вся интеграция одним документом: https://mcp-everything.ru/integrations/vk-api.md
