Public Access
Исправил постинг токена в ссылках
This commit is contained in:
@@ -1,99 +1,117 @@
|
||||
## Пример .env
|
||||
|
||||
Создайте файл `.env` в корне проекта и заполните:
|
||||
|
||||
```env
|
||||
TELEGRAM_TOKEN=your_telegram_token
|
||||
DISCORD_TOKEN=your_discord_token
|
||||
VK_TOKEN=your_vk_token
|
||||
TELEGRAM_CHAT_ID=-1001234567890
|
||||
DISCORD_CHANNEL_ID=123456789012345678
|
||||
VK_PEER_ID=2000000001
|
||||
VK_GROUP_ID=2000000001
|
||||
```
|
||||
|
||||
docker-compose автоматически подхватит эти переменные.
|
||||
|
||||
# Go Chat Bridge
|
||||
|
||||
Мультичат-бот для объединения Telegram, Discord и VK.
|
||||
Мультичат-бот для объединения чатов в **Telegram**, **Discord**, **VK** и на **вашем сайте**.
|
||||
|
||||
## Возможности
|
||||
- Пересылка сообщений между Telegram, Discord и VK
|
||||
- Отображение имени отправителя в пересылаемых сообщениях
|
||||
- Поддержка работы с группами VK через LongPoll
|
||||
|
||||
- Пересылка сообщений между Telegram, Discord, VK и сайтом
|
||||
- Отображение имени отправителя в пересылаемых сообщениях (`[TG]`, `[DS]`, `[VK]`, `[SITE]`)
|
||||
- **Медиа**: фото, документы, видео, аудио, голосовые, GIF
|
||||
- В **Discord** и **Telegram** медиа отправляются как вложения (файлы)
|
||||
- В **VK** и на **сайт** — ссылками на прокси (без токена бота в URL)
|
||||
- **Медиа-прокси**: ссылки из Telegram не содержат токен бота; файлы отдаются через ваш сервер
|
||||
- **Webhook** для приёма сообщений с сайта (POST `/webhook`)
|
||||
- Загрузка переменных из файла `.env` при запуске
|
||||
- Версия и дата сборки в логах при старте
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
1. Клонируйте репозиторий:
|
||||
```bash
|
||||
git clone <repo_url>
|
||||
cd turn-bridge
|
||||
```
|
||||
2. Установите зависимости:
|
||||
```bash
|
||||
go mod tidy
|
||||
```
|
||||
3. Создайте и настройте ботов/токены для всех платформ:
|
||||
- Telegram: получите токен у @BotFather
|
||||
- Discord: создайте приложение и получите токен
|
||||
- VK: получите токен группы с правами messages, groups (см. инструкцию ниже)
|
||||
4. Укажите переменные окружения:
|
||||
```bash
|
||||
export TELEGRAM_TOKEN=... # токен Telegram-бота
|
||||
export DISCORD_TOKEN=... # токен Discord-бота
|
||||
export VK_TOKEN=... # токен группы VK
|
||||
export TELEGRAM_CHAT_ID=... # id чата/канала Telegram
|
||||
export DISCORD_CHANNEL_ID=... # id канала Discord
|
||||
export VK_PEER_ID=... # peer_id беседы VK
|
||||
export VK_GROUP_ID=... # id группы VK
|
||||
```
|
||||
5. Запустите приложение:
|
||||
```bash
|
||||
go run .
|
||||
```
|
||||
### 1. Клонирование и зависимости
|
||||
|
||||
## Получение токена VK с нужными правами
|
||||
|
||||
1. В настройках группы VK включите Long Poll API и разрешите сообщения.
|
||||
2. Получите токен через интерфейс группы или через OAuth:
|
||||
- Создайте Standalone-приложение VK
|
||||
- Перейдите по ссылке:
|
||||
```
|
||||
https://oauth.vk.com/authorize?client_id=ВАШ_CLIENT_ID&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=messages,groups&response_type=token&v=5.131
|
||||
```
|
||||
- Авторизуйтесь, скопируйте access_token из адресной строки.
|
||||
|
||||
## Формат пересылаемых сообщений
|
||||
|
||||
- `[TG] user: текст` — из Telegram
|
||||
- `[DS] user: текст` — из Discord
|
||||
- `[VK] user: текст` — из VK (имя пользователя VK)
|
||||
|
||||
## Пример .env
|
||||
|
||||
Создайте файл `.env` в корне проекта и заполните:
|
||||
|
||||
```env
|
||||
TELEGRAM_TOKEN=your_telegram_token
|
||||
DISCORD_TOKEN=your_discord_token
|
||||
VK_TOKEN=your_vk_token
|
||||
TELEGRAM_CHAT_ID=-1001234567890
|
||||
DISCORD_CHANNEL_ID=123456789012345678
|
||||
VK_PEER_ID=2000000001
|
||||
VK_GROUP_ID=2000000001
|
||||
SITE_API_URL=https://turn-guild.ru/
|
||||
SITE_API_TOKEN=website_webhook_token
|
||||
WEBHOOK_API_KEY=brige_webhook_token
|
||||
```bash
|
||||
git clone <repo_url>
|
||||
cd turn-bridge
|
||||
go mod tidy
|
||||
```
|
||||
|
||||
docker-compose автоматически подхватит эти переменные.
|
||||
## TODO
|
||||
- Поддержка вложений и файлов
|
||||
- Админ-команды
|
||||
- Логирование событий
|
||||
### 2. Токены и ID
|
||||
|
||||
- **Telegram**: токен у [@BotFather](https://t.me/BotFather), ID чата/канала
|
||||
- **Discord**: токен приложения, ID канала
|
||||
- **VK**: токен группы с правами `messages`, `groups` (см. раздел ниже), `VK_PEER_ID` беседы, `VK_GROUP_ID`
|
||||
|
||||
### 3. Переменные окружения
|
||||
|
||||
Создайте `.env` в корне проекта (при запуске бинарника переменные подхватываются автоматически):
|
||||
|
||||
```env
|
||||
# Обязательные
|
||||
TELEGRAM_TOKEN=...
|
||||
DISCORD_TOKEN=...
|
||||
VK_TOKEN=...
|
||||
|
||||
# ID чатов
|
||||
TELEGRAM_CHAT_ID=-1001234567890
|
||||
DISCORD_CHANNEL_ID=123456789012345678
|
||||
VK_PEER_ID=2000000002
|
||||
VK_GROUP_ID=15469861
|
||||
|
||||
# Сайт: отправка сообщений на сайт и приём с сайта
|
||||
SITE_API_URL=https://your-site.com/telebot/chat_api.php
|
||||
SITE_API_TOKEN=...
|
||||
WEBHOOK_API_KEY=...
|
||||
|
||||
# Медиа-прокси (чтобы в ссылках для VK и сайта не светить токен Telegram)
|
||||
PUBLIC_URL=https://your-bridge-host:8080
|
||||
MEDIA_PROXY_SECRET=длинная-секретная-строка
|
||||
```
|
||||
|
||||
- **PUBLIC_URL** — базовый URL, по которому доступен этот сервис (порт 8080). По нему отдаются ссылки вида `PUBLIC_URL/media/...`.
|
||||
- **MEDIA_PROXY_SECRET** — секрет для подписи ссылок на медиа. Без него прокси отключён, в VK и на сайт пойдут прямые ссылки Telegram (с токеном бота).
|
||||
|
||||
### 4. Запуск
|
||||
|
||||
**Локально:**
|
||||
|
||||
```bash
|
||||
./go-chat-bridge
|
||||
# или
|
||||
go run .
|
||||
```
|
||||
|
||||
**Docker:**
|
||||
|
||||
```bash
|
||||
docker-compose up -d --build
|
||||
```
|
||||
|
||||
При сборке образа можно задать версию:
|
||||
`docker build --build-arg VERSION=1.0.0 -t chat-bridge .`
|
||||
|
||||
## Эндпоинты (порт 8080)
|
||||
|
||||
| Путь | Описание |
|
||||
|-----------|----------|
|
||||
| `POST /webhook` | Приём сообщений с сайта. Параметр `key` (или поле `key` в JSON) = `WEBHOOK_API_KEY`; в теле — `text`, `sender`. |
|
||||
| `GET /media/<токен>/<имя_файла>.<расширение>` | Прокси медиа из Telegram. Токен подписан, расширение в URL для корректного отображения и сохранения. |
|
||||
|
||||
## Формат сообщений в чатах
|
||||
|
||||
- `[TG] Имя: текст` — из Telegram
|
||||
- `[DS] Имя: текст` — из Discord
|
||||
- `[VK] Имя: текст` — из VK
|
||||
- `[SITE] Имя: текст` — с сайта
|
||||
|
||||
При наличии медиа к сообщению добавляются ссылки (в VK и на сайте — на прокси с расширением в конце, например `.../media/xxx/file_332.jpg`).
|
||||
|
||||
## Получение токена VK
|
||||
|
||||
1. В настройках группы VK включите Long Poll API и разрешите сообщения.
|
||||
2. Создайте Standalone-приложение VK, получите токен по ссылке:
|
||||
```
|
||||
https://oauth.vk.com/authorize?client_id=ВАШ_CLIENT_ID&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=messages,groups&response_type=token&v=5.131
|
||||
```
|
||||
Скопируйте `access_token` из адресной строки после редиректа.
|
||||
|
||||
## Логи
|
||||
|
||||
При старте выводятся:
|
||||
|
||||
- Загрузка `.env` (или сообщение, что файл не найден)
|
||||
- Версия и дата сборки (при сборке через Docker — дата сборки образа)
|
||||
- Состояние медиа-прокси (включён / выключен)
|
||||
- Служебные сообщения `[Telegram]`, `[Media]`, `[Bridge]` при пересылке и отдаче медиа
|
||||
|
||||
## Лицензия
|
||||
|
||||
MIT
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user