Find a file
Andrey Lugovskoy b4c157760d
All checks were successful
Build / build (push) Successful in 19s
Download MAX media to bridge server before sending to TG
Local TG Bot API can't access MAX CDN. Now bridge downloads
media files locally and uploads as bytes to TG.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 11:46:57 +03:00
.github/workflows Auto-create GitHub release on tag push with changelog 2026-03-19 23:39:44 +03:00
docs/superpowers Switch to webhook mode for instant message delivery 2026-03-20 11:00:55 +03:00
migrations Add retry queue for MAX→TG direction 2026-03-20 10:49:00 +03:00
.env.example Use env vars for Postgres config in docker-compose 2026-02-15 13:01:59 +03:00
.gitignore Remove binary and db backup from repo 2026-03-20 11:01:09 +03:00
admin.go Add /crosspost command for channel-to-channel crossposting 2026-02-15 16:26:18 +03:00
admin_test.go Add /crosspost command for channel-to-channel crossposting 2026-02-15 16:26:18 +03:00
bridge.go Fix local Bot API file serving: correct URL path + nginx alias 2026-03-20 11:37:13 +03:00
docker-compose.yml Use env vars for Postgres config in docker-compose 2026-02-15 13:01:59 +03:00
Dockerfile Security hardening and admin check tests 2026-02-15 15:05:41 +03:00
format.go Fix video forwarding TG→MAX: detect video docs, support VideoNote 2026-03-16 18:43:16 +03:00
format_test.go Remove prefix support from crossposting 2026-02-15 16:30:11 +03:00
go.mod Initial commit: TG↔MAX bridge 2026-02-15 03:58:24 +03:00
go.sum Initial commit: TG↔MAX bridge 2026-02-15 03:58:24 +03:00
LICENSE Add CC BY-NC 4.0 license 2026-03-17 13:09:35 +03:00
main.go Support custom TG Bot API server (TG_API_URL env) 2026-03-20 11:26:41 +03:00
main_test.go Security hardening and admin check tests 2026-02-15 15:05:41 +03:00
Makefile Load .env in Makefile 2026-02-15 13:03:09 +03:00
markup.go Fix TG→MAX: markdown with space-trimming, MAX ignores markup array on send 2026-02-15 18:35:06 +03:00
max.go Download MAX media to bridge server before sending to TG 2026-03-20 11:46:57 +03:00
migrate.go Initial commit: TG↔MAX bridge 2026-02-15 03:58:24 +03:00
postgres.go Add retry queue for MAX→TG direction 2026-03-20 10:49:00 +03:00
queue.go Don't retry permanent errors (403/404) in send queue 2026-03-20 10:53:04 +03:00
README.md README: add license section 2026-03-17 13:11:07 +03:00
repository.go Add retry queue for MAX→TG direction 2026-03-20 10:49:00 +03:00
sqlite.go Add retry queue for MAX→TG direction 2026-03-20 10:49:00 +03:00
telegram.go Support custom TG Bot API server (TG_API_URL env) 2026-03-20 11:26:41 +03:00
upload.go Download MAX media to bridge server before sending to TG 2026-03-20 11:46:57 +03:00

MaxTelegramBridgeBot

Мост между Telegram и MAX мессенджером. Пересылает сообщения, медиа, файлы и редактирования между связанными чатами.

Боты: Telegram | MAX

Возможности

  • Пересылка текстовых сообщений в обе стороны
  • Пересылка медиа: фото, видео, документы, голосовые, аудио
  • Поддержка ответов (reply) — сохраняется контекст
  • Отслеживание редактирования сообщений
  • Удаление сообщений (MAX→TG). TG→MAX удаление невозможно — Telegram Bot API не отправляет событие удаления
  • Настраиваемый префикс [TG] / [MAX]
  • Кросспостинг каналов с выбором направления (tg>max, max>tg, both)
  • Сохранение форматирования при кросспостинге (жирный, курсив, код, ссылки, зачёркнутый, подчёркнутый)
  • Управление кросспостингом через inline-кнопки
  • SQLite или PostgreSQL для хранения связок и маппинга сообщений

Форматирование при кросспостинге

Формат TG → MAX MAX → TG
Жирный
Курсив
Моноширинный
Зачёркнутый
Подчёркнутый
Ссылки
Цитата
Спойлер

Цитаты и спойлеры не поддерживаются MAX Bot API.

Установка

Из бинаря

Скачайте бинарь со страницы релизов и запустите:

chmod +x max-telegram-bridge-bot
./max-telegram-bridge-bot

Docker

docker run -e TG_TOKEN=your_token -e MAX_TOKEN=your_token ghcr.io/bearlogin/max-telegram-bridge-bot:latest

Docker Compose (с PostgreSQL)

cp .env.example .env
# Заполните TG_TOKEN и MAX_TOKEN в .env
docker compose up -d

PostgreSQL настраивается через .env:

POSTGRES_USER=bridge
POSTGRES_PASSWORD=bridge
POSTGRES_DB=bridge

Из исходников

git clone https://github.com/BEARlogin/max-telegram-bridge-bot.git
cd max-telegram-bridge-bot
go build -o max-telegram-bridge-bot .
./max-telegram-bridge-bot

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

1. Создайте ботов

  • Telegram: через @BotFather, отключите Privacy Mode (Bot Settings → Group Privacy → Turn off)
  • MAX: через business.max.ru

2. Настройте и запустите

Передайте токены через переменные окружения:

TG_TOKEN=your_token MAX_TOKEN=your_token ./max-telegram-bridge-bot

Или через export:

export TG_TOKEN=your_token
export MAX_TOKEN=your_token
./max-telegram-bridge-bot

3. Свяжите чаты

  1. Добавьте бота в Telegram-группу и MAX-группу
  2. В MAX сделайте бота админом группы
  3. В одном из чатов отправьте /bridge
  4. Бот выдаст ключ — отправьте /bridge <ключ> в другом чате

4. Кросспостинг каналов

Настройка через личные сообщения с ботами (ничего не публикуется в каналах):

  1. Добавьте бота как админа в TG-канал и MAX-канал
  2. Перешлите любой пост из TG-канала в личку TG-бота → бот покажет ID канала
  3. В личке MAX-бота напишите /crosspost <TG_ID>
  4. Перешлите любой пост из MAX-канала в личку MAX-бота → кросспостинг настроен!

По умолчанию посты идут в обе стороны. Управление:

  • /crosspost (в личке любого бота) — список всех связок с кнопками
  • Перешлите пост из связанного канала в личку бота → появятся кнопки управления (направление, удаление)

Команды

Группы (bridge)

Команда Описание
/start, /help Инструкция
/bridge Создать ключ для связки
/bridge <ключ> Связать чат по ключу
/bridge prefix on/off Включить/выключить префикс [TG]/[MAX]
/unbridge Удалить связку

Каналы (crosspost) — через личку бота

Команда Где Описание
/crosspost TG или MAX личка Список всех связок с кнопками управления
/crosspost <TG_ID> MAX личка Начать настройку (затем переслать пост из MAX-канала)
Переслать пост из канала TG или MAX личка Показать ID (если не связан) или кнопки управления

Кнопки управления позволяют менять направление (TG→MAX, MAX→TG, оба) и удалять связку.

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

Переменная Описание По умолчанию
TG_TOKEN Токен Telegram бота — (обязательно)
MAX_TOKEN Токен MAX бота — (обязательно)
DB_PATH Путь к SQLite базе bridge.db
DATABASE_URL DSN для PostgreSQL (если задана — SQLite игнорируется)
TG_BOT_URL Ссылка на TG-бота (показывается в /help) https://t.me/MaxTelegramBridgeBot
MAX_BOT_URL Ссылка на MAX-бота (показывается в /help) https://max.ru/id710708943262_bot
WEBHOOK_URL Базовый URL для webhook, например https://bridge.example.com (если не задан — long polling). Эндпоинты: /tg-webhook, /max-webhook
WEBHOOK_PORT Порт для webhook сервера 8443

Лицензия

CC BY-NC 4.0 — свободное использование и модификация, но коммерческое использование только с письменного разрешения автора.