VK puppeting bridge for Matrix, taking use of VK Communities API
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Inex Code 9c33ff22e7 fix typos in readme 2 days ago
.devcontainer Initial commit 3 weeks ago
.github/workflows Create codeql-analysis.yml 3 weeks ago
src Initial support for user tokens 1 week ago
.gitignore Initial commit 3 weeks ago
LICENSE Initial commit 3 weeks ago
README.md fix typos in readme 2 days ago
package-lock.json Forwards formatting 1 week ago
package.json Initial support for user tokens 1 week ago
sample.config.yaml Update readme and default log level 2 weeks ago
tsconfig.json Initial commit 3 weeks ago
tslint.json Linting 2 weeks ago

README.md

Matrix

mx-puppet-vk

This is a Matrix <-> VK bridge based on mx-puppet-bridge and VK-IO.

Это мост между Matrix и Вконтакте, основанный на mx-puppet-bridge и VK-IO.

Документация на русском ниже.

It is in early development. Right now it logs message data when log level includes “info” level.

Relay mode works too, but we don’t recommend it.

Installation

git pull https://github.com/innereq/mx-puppet-vk
npm install
npm run build

Next copy the sample.config.yaml to config.yaml, edit it and then run npm run start -- -r to generate a registration file. Register that one with synapse and start the bridge with npm run start.

Features and roadmap

  • Matrix -> VK
  • VK -> Matrix
  • Edge cases to work around
    • Probably more, send an issue!

Usage

Video demonstration by Coma Grayce

  1. Get VK community token (Just open the “Manage community” tab, go to “API usage” tab and click “Create token”)
  2. Activate Bots Long Poll API (“Manage community” → “API usage” → “Bots Long Poll API”) and choose the latest API version. Make sure that under event types all message-realted events are turned on.
  3. Activate an option to message your community. To allow group chats, activate it under bot capabilities.
  4. On matrix, contact @_vk_puppet_bot:your.domain and type link <vk token>
  5. Now, if someone contacts your community, you will be invited to the corresponding room on Matrix.

Plese note: when community is invited to the group chat as a bot, make sure it has message access. Only chat admins can change bot permissions.

Bridge doesn’t handle being kicked from chat yet.

Relay usage

See mx-puppet-bridge docs

Note on presence from matrix side

For presence bridging from Matrix side (including typing) your Synapse server has to be on 1.22.0 or later.

Also, make sure your registration file contains this:

de.sorunome.msc2409.push_ephemeral: true

Using a user token instead of group bot

This is experimental and is not the main goal of this bridge.

To get a user token, use something like this:

https://oauth.vk.com/authorize?client_id=<CLIENT_ID>&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends,messages,offline,docs,photos,video'&response_type=token&v=5.126
  • Matrix -> VK (AS A USER)
  • VK (AS A USER) -> Matrix

To avoid imposture, do not use relay mode with user tokens!

Docs in Russian

Это мост между Matrix и Вконтакте, основанный на mx-puppet-bridge и VK-IO.

Находится в ранней разработке. Содержание сообщений выводится в логи, если уровень логов включает в себя уровень “info”.

Режим релея работает, но мы его не рекомендуем.

Установка

git pull https://github.com/innereq/mx-puppet-vk
npm install
npm run build

Затем скопируйте sample.config.yaml в config.yaml, отредактируйте его, и затем запустите npm run start -- -r чтобы сгенерировать регистрационный файл. Зарегистрируйте его на вашем сервере Synapse и запустите мост коммандой npm run start.

Реализованные функции и план разработки

  • Matrix -> Вконтакте
  • Вконтакте -> Matrix
  • Крайние случаи, которые надо проработать
    • Возможно больше, открывайте issue!

Использование

Видео демонстрация от Coma Grayce

  1. Получите токен сообщества Вконтакте. Откройте раздел «Управление сообществом» («Управление страницей», если у Вас публичная страница), выберите вкладку «Работа с API» и нажмите «Создать ключ доступа». Не забудьте предоставить доступ к сообщениям.
  2. Активируйте Long Poll API (откройте раздел «Управление сообществом», на вкладке «Работа с API» → «Long Poll API» выберите «Включён») и выберите самую актуальную версию API, так как по умолчанию выбрана устаревшая, с ней не работает. Убедитесь, что во вкладке типов событий выбраны все события в категории сообщений.
  3. Во вкладке сообщений, активируйте сообщения сообщества. Чтобы позволить добавлять сообщества в групповые чаты, активируйте это во вкладке возможностей ботов.
  4. В matrix, напишите боту @_vk_puppet_bot:ваш.домен и напишите link <токен вк>
  5. Теперь, если кто-то напишет вашему сообществу, со стороны Matrix вас пригласят в соответствующую комнату.

Обратите внимание: когда сообщество приглашено в групповой чат как бот, убедитесь что у бота есть права на чтение сообщений. Только администраторы чата могут менять права ботов.

Использование в качестве релея

Смотрите документацию mx-puppet-bridge (на английском)

Примечание о эфемерных событиях

Для пересылки эфемерных событий со стороны Matrix (включая индикаторы печати), ваш сервер Synapse должен быть версии 1.22.0 или выше.

Также, ваш файл регистрации должен включать в себя эту строку:

de.sorunome.msc2409.push_ephemeral: true

Использования токена пользователя вместо сообщества

Это экспериментально и не является оригинальной целью моста.

Чтобы получить токен пользователя, можете использовать сервис vkhost.github.io или вручную выполнить запрос как этот:

https://oauth.vk.com/authorize?client_id=<CLIENT_ID>&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends,messages,offline,docs,photos,video'&response_type=token&v=5.126
  • Matrix -> Вконтакте (как пользователь)
  • Вконтакте (как пользователь) -> Matrix

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