Find a file
Andrey Lugovskoy db29eb6650 Fix local Bot API file serving: correct URL path + nginx alias
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 11:37:13 +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 Fix MAX webhook: explicitly subscribe to message_created events 2026-03-20 11:07:30 +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 Fix local Bot API file serving: correct URL path + nginx alias 2026-03-20 11:37:13 +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 — свободное использование и модификация, но коммерческое использование только с письменного разрешения автора.