diff --git a/README.md b/README.md index 4c5e4be..8d6048f 100755 --- a/README.md +++ b/README.md @@ -3,6 +3,10 @@ # mx-puppet-vk This is a Matrix <-> VK bridge based on [mx-puppet-bridge](https://github.com/Sorunome/mx-puppet-bridge) and [VK-IO](https://github.com/negezor/vk-io). +Это мост между Matrix и Вконтакте, основанный на [mx-puppet-bridge](https://github.com/Sorunome/mx-puppet-bridge) и [VK-IO](https://github.com/negezor/vk-io). + +[Документация на русском ниже.](#Docs-in-Russian) + 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. @@ -23,7 +27,7 @@ Register that one with synapse and start the bridge with `npm run start`. - [x] Audio/Video content - [x] Other files - [x] Replies - - [ ] Typing notifs - [see note](#Note-on-presence-from-matrix-side) + - [x] Typing notifs - [see note](#Note-on-presence-from-matrix-side) - [ ] Presence - ~~not possible yet~~ - [ ] Read notifications - ~~not possible yet~~ - [x] Message edits @@ -93,7 +97,7 @@ https://oauth.vk.com/authorize?client_id=&display=page&redirect_uri=h - [x] Audio/Video content - [x] Other files - [x] Replies - - [ ] Typing notifs + - [x] Typing notifs - [ ] Presence - [ ] Read notifications - [x] Message edits @@ -117,3 +121,119 @@ https://oauth.vk.com/authorize?client_id=&display=page&redirect_uri=h - [ ] Autopopulate rooms with users To avoid imposture, do **not** use relay mode with user tokens! + +# Docs in Russian + +Это мост между Matrix и Вконтакте, основанный на [mx-puppet-bridge](https://github.com/Sorunome/mx-puppet-bridge) и [VK-IO](https://github.com/negezor/vk-io). + +Находится в ранней разработке. Содержание сообщений выводится в логи, если уровень логов включает в себя уровень "info". + +Режим релея работает, но мы его не рекоммендуем. + +## Установка +```bash +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 -> Вконтакте + - [x] Текстовые сообщения + - [x] Изображения + - [x] Аудио и видео + - [x] Прочие файлы + - [x] Ответы + - [x] Индикатор печати - [смотрите примечание](#Примечание-о-эфемерных-событиях) + - [ ] Индикатор "в сети" + - [ ] Индикаторы прочтения + - [x] Редактирование сообщений + - [x] Удаление сообщений - работает как редактирование + - [ ] Инициация чатов со стороны Matrix +- Вконтакте -> Matrix + - [x] Текстовые сообщения + - [x] Пересланные сообщения + - [x] Изображения + - [x] Аудио + - [ ] Видео + - [x] Стикеры + - [x] Прочие файлы + - [ ] Индикатор "в сети" - Не эффективно отслеживать + - [x] Индикатор печати + - [x] Имена и аватарки пользователей + - [ ] Индикаторы прочтения - Не эффективно отслеживать + - [x] Редактирование сообщений + - [ ] Удаление сообщений - не работает + - [ ] Автоматическое заполнение комнаты пользователями +- Крайние случаи, которые надо проработать + - [ ] Токен доступа отозван со стороны Вконтакте + - [ ] Бот выгнан из чата со стороны Вконтакте + - Возможно больше, открывайте issue! + +## Использование + +[Видео демонстрация от Coma Grayce](https://youtu.be/nBRBUA9beXs) + +1. Получите токен сообщества Вконтакте. Откройте раздел «Управление сообществом» («Управление страницей», если у Вас публичная страница), выберите вкладку «Работа с API» и нажмите «Создать ключ доступа». Не забудьте предоставить доступ к сообщениям. +2. Активируйте Long Poll API (откройте раздел «Управление сообществом», на вкладке «Работа с API» → «Long Poll API» выберите «Включён») и выберите самую актуальную версию API, так как по умолчанию выбрана устаревшая, с ней не работает. Убедитесь, что во вкладке типов событий выбраны все события в категории сообщений. +3. Во вкладке сообщений, активируйте сообщения сообщества. Чтобы позволить добавлять сообщества в групповые чаты, активируйте это во вкладке возможностей ботов. +4. В matrix, напишите боту `@_vk_puppet_bot:ваш.домен` и напишите `link <токен вк>` +5. Теперь, если кто-то напишет вашему сообществу, со стороны Matrix вас пригласят в соответствующую комнату. + +Обратите внимание: когда сообщество приглашено в групповой чат как бот, убедитесь что у бота есть права на чтение сообщений. Только администраторы чата могут менять права ботов. + +### Использование в качестве релея + +Смотрите [документацию mx-puppet-bridge](https://github.com/Sorunome/mx-puppet-bridge#relay-mode) (на английском) + +### Примечание о эфемерных событиях + +Для пересылки эфемерных событий со стороны Matrix (включая индикаторы печати), ваш сервер Synapse должен быть версии 1.22.0 или выше. + +Также, ваш файл регистрации должен включать в себя эту строку: + +``` +de.sorunome.msc2409.push_ephemeral: true +``` + +## Использования токена пользователя вместо сообщества + +Это экспериментально и не является оригинальной целью моста. + +Чтобы получить токен пользователя, можете использовать сервис [vkhost.github.io](https://vkhost.github.io) или вручную выполнить запрос как этот: + +``` +https://oauth.vk.com/authorize?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 -> Вконтакте (как пользователь) + - [x] Текстовые сообщения + - [x] Изображения + - [x] Аудио и видео + - [x] Прочие файлы + - [x] Ответы + - [x] Индикатор печати + - [ ] Индикатор "в сети" + - [ ] Индикаторы прочтения + - [x] Редактирование сообщений + - [x] Удаление сообщений - в течении 24 часов + - [ ] Инициация чатов со стороны Matrix +- Вконтакте (как пользователь) -> Matrix + - [x] Текстовые сообщения + - [x] Пересланные сообщения + - [ ] Изображения + - [ ] Аудио + - [ ] Видео + - [ ] Стикеры + - [ ] Прочие файлы + - [ ] Индикатор "в сети" + - [x] Индикатор печати + - [x] Имена и аватарки пользователей + - [ ] Индикаторы прочтения + - [x] Редактирование сообщений + - [ ] Удаление сообщений + - [ ] Автоматическое заполнение комнаты пользователями + +Чтобы избежать самозванства, **не** используйте режим релея с токенами пользователя!