Files
turn-bridge/README.md
T

5.1 KiB
Raw Blame History

Go Chat Bridge

Мультичат-бот для объединения чатов в Telegram, Discord, VK и на вашем сайте.

Возможности

  • Пересылка сообщений между Telegram, Discord, VK и сайтом
  • Отображение имени отправителя в пересылаемых сообщениях ([TG], [DS], [VK], [SITE])
  • Медиа: фото, документы, видео, аудио, голосовые, GIF
    • В Discord и Telegram медиа отправляются как вложения (файлы)
    • В VK и на сайт — ссылками на прокси (без токена бота в URL)
  • Медиа-прокси: ссылки из Telegram не содержат токен бота; файлы отдаются через ваш сервер
  • Webhook для приёма сообщений с сайта (POST /webhook)
  • Загрузка переменных из файла .env при запуске
  • Версия и дата сборки в логах при старте

Быстрый старт

1. Клонирование и зависимости

git clone <repo_url>
cd turn-bridge
go mod tidy

2. Токены и ID

  • Telegram: токен у @BotFather, ID чата/канала
  • Discord: токен приложения, ID канала
  • VK: токен группы с правами messages, groups (см. раздел ниже), VK_PEER_ID беседы, VK_GROUP_ID

3. Переменные окружения

Создайте .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. Запуск

Локально:

./go-chat-bridge
# или
go run .

Docker:

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