{"id":47593383,"url":"https://github.com/pfrankov/openclaw-vk","last_synced_at":"2026-04-01T17:46:45.495Z","repository":{"id":345383248,"uuid":"1184753540","full_name":"pfrankov/openclaw-vk","owner":"pfrankov","description":"Channel-плагин для OpenClaw для работы с ВКонтакте-ботами","archived":false,"fork":false,"pushed_at":"2026-03-26T21:12:00.000Z","size":314,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T08:18:13.730Z","etag":null,"topics":["openclaw","openclaw-extension","openclaw-plugin","vk","vkontakte"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pfrankov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-17T22:42:54.000Z","updated_at":"2026-03-26T21:12:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pfrankov/openclaw-vk","commit_stats":null,"previous_names":["pfrankov/openclaw-vk"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/pfrankov/openclaw-vk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfrankov%2Fopenclaw-vk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfrankov%2Fopenclaw-vk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfrankov%2Fopenclaw-vk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfrankov%2Fopenclaw-vk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pfrankov","download_url":"https://codeload.github.com/pfrankov/openclaw-vk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfrankov%2Fopenclaw-vk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["openclaw","openclaw-extension","openclaw-plugin","vk","vkontakte"],"created_at":"2026-04-01T17:46:44.845Z","updated_at":"2026-04-01T17:46:45.489Z","avatar_url":"https://github.com/pfrankov.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# openclaw-vk\n\u003cimg width=\"500\" src=\"https://github.com/user-attachments/assets/1bb97849-8aa0-46dc-b3de-90e4bcf10d38\"/\u003e\n\nПлагин [OpenClaw](https://github.com/openclaw/openclaw) для работы с ВКонтакте. Подключает AI-агента к сообществам VK через Bots Long Poll API — бот принимает и отвечает на сообщения в личных диалогах и групповых беседах.  \nМинимальная требуемая версия OpenClaw: **v2026.3.28**\n\n## Быстрый старт\n\n### 1. Подготовка сообщества ВКонтакте\n\n1. **Создайте сообщество** (группу или паблик), если его ещё нет.\n2. Откройте **Управление → Сообщения** и включите их.\n3. Откройте **Управление → Работа с API → Ключи доступа**, нажмите *Создать ключ* и выберите права:\n   - **Сообщения сообщества**\n   - **Управление сообществом** (необходимо для Bots Long Poll API)\n   - **Документы** / `docs` (обязательно для исходящих файлов, TTS audio и голосовых сообщений, потому что VK upload идёт через `docs.getMessagesUploadServer`)\n4. Откройте **Управление → Работа с API → Long Poll API**:\n   - Включите Long Poll API.\n   - На вкладке **Типы событий** отметьте **Входящие сообщения**.\n5. *(Для работы в беседах)* Откройте **Управление → Сообщения → Настройки для бота** и включите *Разрешать добавлять сообщество в чаты*.\n\n### 2. Установка плагина\n```\nУстанови OpenClaw-плагин для vk чётко по инструкции https://github.com/pfrankov/openclaw-vk\nВот мой токен: vk1.a...\n```\n\n```bash\nopenclaw plugins install @openclaw-vk/vk\nopenclaw plugins enable vk\n```\n\n\u003e Только для локальной разработки: `openclaw plugins install ~/path/to/openclaw-vk`\n\nПримечание про `plugins.allow`:\n- Если `plugins.allow` отсутствует или пуст, OpenClaw обычно подхватывает внешний плагин `vk` автоматически после `openclaw plugins enable vk` и включённого `channels.vk.enabled`.\n- Если у вас уже используется явный allowlist плагинов (`plugins.allow` не пуст), добавьте туда `\"vk\"` вручную. Команда `openclaw plugins enable vk` сейчас не дописывает `plugins.allow` автоматически.\n\nПример для конфигураций с явным allowlist:\n\n```json\n{\n  \"plugins\": {\n    \"allow\": [\"vk\"]\n  },\n  \"channels\": {\n    \"vk\": {\n      \"enabled\": true,\n      \"token\": \"\u003cВАШ_ТОКЕН\u003e\",\n      \"dmPolicy\": \"pairing\"\n    }\n  }\n}\n```\n\n### 3. Настройка\n\nДобавьте канал в `~/.openclaw/openclaw.json`:\n\n```json\n{\n  \"channels\": {\n    \"vk\": {\n      \"enabled\": true,\n      \"token\": \"\u003cВАШ_ТОКЕН\u003e\",\n      \"dmPolicy\": \"pairing\"\n    }\n  }\n}\n```\n\n### 4. Запуск\n\n1. Перезапустите шлюз:\n   ```bash\n   openclaw gateway restart\n   ```\n2. Напишите боту любое сообщение со своего аккаунта ВКонтакте.\n3. Бот ответит **кодом подтверждения** — это механизм авторизации `pairing`, защищающий от нежелательных сообщений.\n4. Подтвердите доступ:\n   ```bash\n   openclaw pairing approve vk \u003cкод\u003e\n   ```\n\nГотово — бот отвечает на сообщения.\n\n---\n\n## Конфигурация\n\n### Форматирование сообщений\n\nВходящие ответы обрабатываются как Markdown, но для VK конвертируется только то, что поддерживается `format_data`:\n- `**жирный**`, `*курсив*`, `***жирный курсив***`\n- `[текст](https://example.com)` (ссылка)\n\nВся остальная разметка остаётся без изменений.\n\n### Параметры\n\n| Параметр | Описание |\n| --- | --- |\n| `token` / `tokenFile` | Ключ доступа сообщества или путь к файлу с токеном. Также поддерживается переменная окружения `VK_TOKEN`. |\n| `dmPolicy` | Политика личных сообщений: `pairing` (авторизация по коду), `allowlist` (по списку), `open` (без ограничений), `disabled`. |\n| `allowFrom` | Список ID пользователей, которым разрешён доступ при политике `allowlist`. |\n| `defaultTo` | Цель по умолчанию для исходящих сообщений, если target не был указан явно. |\n| `groupPolicy` | Политика для групповых бесед: `allowlist`, `open`, `disabled`. |\n| `groupAllowFrom` | Список ID пользователей, которым разрешено писать боту в групповых беседах при `groupPolicy: \"allowlist\"`. Это не список `peerId` бесед. |\n\n### Настройка отдельных бесед\n\nДля каждой беседы можно задать индивидуальные параметры:\n- `enabled`: полностью отключить обработку конкретной беседы\n- `allowFrom`: переопределить sender allowlist только для этой беседы\n- `requireMention`: требовать упоминание бота\n- `systemPrompt`: отдельный системный prompt для конкретного чата\n\n```json\n{\n  \"channels\": {\n    \"vk\": {\n      \"groups\": {\n        \"2000000123\": {\n          \"enabled\": true,\n          \"allowFrom\": [123456789],\n          \"requireMention\": true,\n          \"systemPrompt\": \"Ты — помощник в рабочем чате. Отвечай кратко.\"\n        },\n        \"*\": {\n          \"requireMention\": false\n        }\n      }\n    }\n  }\n}\n```\n\nЕсли в беседе нужно разрешить сообщения только нескольким участникам, используйте `groups.\u003cpeerId\u003e.allowFrom`. Это переопределяет общий `groupAllowFrom` для конкретного чата.\n\n### Несколько сообществ\n\nДля подключения нескольких ботов к одному ядру используйте секцию `accounts`:\n\n```json\n{\n  \"channels\": {\n    \"vk\": {\n      \"accounts\": {\n        \"sales\": {\n          \"enabled\": true,\n          \"token\": \"\u003cТОКЕН_ПРОДАЖ\u003e\",\n          \"dmPolicy\": \"allowlist\",\n          \"allowFrom\": [\"*\"]\n        },\n        \"support\": {\n          \"enabled\": true,\n          \"tokenFile\": \"/etc/openclaw/vk-support.token\",\n          \"dmPolicy\": \"pairing\"\n        }\n      }\n    }\n  }\n}\n```\n\n---\n\n## Решение проблем\n\nПроверьте статус подключения:\n\n```bash\nopenclaw channels status --json --probe\n```\n\n**`Group authorization failed: group revoke access for this token`** — ключ доступа устарел или отозван. Перевыпустите токен в настройках сообщества, обновите конфигурацию и перезапустите шлюз.\n\n**Статус `running: false` при `configured: true`** — неверный токен. Подробности в поле `lastError` вывода команды статуса.\n\n**`APIError: Code №15 - Access denied: no access to call this method. It cannot be called with current scopes.` при отправке аудио/документов** — у текущего community token нет права `docs`.\n\nКак исправить:\n1. Откройте сообщество во ВКонтакте.\n2. Перейдите в **Управление → Дополнительно → Работа с API → Ключи доступа**.\n3. Нажмите **Создать ключ**.\n4. В списке прав обязательно отметьте:\n   - **Сообщения сообщества** / `messages`\n   - **Управление сообществом** / `manage`\n   - **Документы** / `docs`\n5. Подтвердите создание ключа в мобильном приложении VK.\n6. Обновите `channels.vk.token` в `~/.openclaw/openclaw.json`.\n7. Перезапустите шлюз:\n   ```bash\n   openclaw gateway restart\n   ```\n\nПроверка:\n- `docs.getMessagesUploadServer` требует право `docs` и используется для `doc` и `audio_message`, поэтому без него исходящие файлы и голосовые не отправятся.\n- Исходящие `audio/*` вложения плагин отправляет как `audio_message` (голосовое). Если нужен обычный файл, используйте `forceDocument`.\n- Текущие права токена можно проверить через `groups.getTokenPermissions`.\n- Если после обновления токена `groups.getTokenPermissions` показывает только `messages` и `manage`, создайте новый ключ заново и убедитесь, что `docs` отмечен при создании.\n\nОфициальная документация VK:\n- Настройки community token: \u003chttps://dev.vk.com/ru/api/access-token/community-token/in-community-settings\u003e\n- Проверка прав токена: \u003chttps://dev.vk.com/ru/method/groups.getTokenPermissions\u003e\n- Upload для документов и голосовых: \u003chttps://dev.vk.com/ru/method/docs.getMessagesUploadServer\u003e\n\n**Бот не отвечает, ошибок нет** — сообщения отклоняются политиками доступа. Проверьте `dmPolicy`, `allowFrom` и `requireMention`. Логи: `~/.openclaw/logs/commands.log` (фильтруйте по `\"source\":\"vk\"`).\n\n---\n\n## Лицензия\n\nCopyright 2026 Pavel Frankov\n\n[Apache License 2.0](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpfrankov%2Fopenclaw-vk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpfrankov%2Fopenclaw-vk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpfrankov%2Fopenclaw-vk/lists"}