# Go Chat Bridge Мультичат-бот для объединения чатов в **Telegram**, **Discord**, **VK** и на **вашем сайте**. ## Возможности - Пересылка сообщений между Telegram, Discord, VK и сайтом - Отображение имени отправителя в пересылаемых сообщениях (`[TG]`, `[DS]`, `[VK]`, `[SITE]`) - **Медиа**: фото, документы, видео, аудио, голосовые, GIF - В **Discord** и **Telegram** медиа отправляются как вложения (файлы) - В **VK** и на **сайт** — ссылками на прокси (без токена бота в URL) - **Медиа-прокси**: ссылки из Telegram не содержат токен бота; файлы отдаются через ваш сервер - **Webhook** для приёма сообщений с сайта (POST `/webhook`) - Загрузка переменных из файла `.env` при запуске - Версия и дата сборки в логах при старте ## Быстрый старт ### 1. Клонирование и зависимости ```bash git clone cd turn-bridge go mod tidy ``` ### 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