# MaxTelegramBridgeBot Мост между Telegram и [MAX](https://max.ru) мессенджером. Пересылает сообщения, медиа, файлы и редактирования между связанными чатами. **Сайт:** [maxtelegrambridge.ru](https://maxtelegrambridge.ru) **Боты:** [Telegram](https://t.me/MaxTelegramBridgeBot) | [MAX](https://max.ru/id710708943262_bot) ## Возможности - Пересылка текстовых сообщений в обе стороны - Пересылка медиа: фото, видео, GIF, стикеры, документы, голосовые, аудио, кружки - Поддержка ответов (reply) — сохраняется контекст - Отслеживание редактирования сообщений. Если при редактировании добавлено медиа — отправляется как новое сообщение (MAX API не поддерживает редактирование вложений) - Удаление сообщений (MAX→TG). TG→MAX удаление невозможно — [Telegram Bot API не отправляет событие удаления](https://github.com/tdlib/telegram-bot-api/issues/286) - Retry-очередь — при недоступности API сообщения сохраняются в БД и доставляются позже - Поддержка локального Telegram Bot API сервера (`TG_API_URL`) - Поддержка форумов (топиков) в TG-группах — сообщения из MAX приходят в нужный топик - Команда `/thread` — выбрать топик по умолчанию для сообщений из MAX - Автосброс топика при отключении форума в группе - Настраиваемый префикс `[TG]` / `[MAX]` - Кросспостинг каналов с выбором направления (`tg>max`, `max>tg`, `both`) - Сохранение форматирования при кросспостинге (жирный, курсив, код, ссылки, зачёркнутый, подчёркнутый) - Управление кросспостингом через inline-кнопки - SQLite или PostgreSQL для хранения связок и маппинга сообщений ### Форматирование при кросспостинге | Формат | TG → MAX | MAX → TG | |--------|:--------:|:--------:| | **Жирный** | ✅ | ✅ | | *Курсив* | ✅ | ✅ | | Моноширинный | ✅ | ✅ | | ~~Зачёркнутый~~ | ✅ | ✅ | | Подчёркнутый | ✅ | ✅ | | [Ссылки](url) | ✅ | ✅ | | Цитата | ❌ | ❌ | | Спойлер | ❌ | — | Цитаты и спойлеры не поддерживаются MAX Bot API. ## Установка ### Из бинаря Скачайте бинарь со [страницы релизов](https://github.com/BEARlogin/max-telegram-bridge-bot/releases) и запустите: ```bash chmod +x max-telegram-bridge-bot ./max-telegram-bridge-bot ``` ### Docker ```bash docker run -e TG_TOKEN=your_token -e MAX_TOKEN=your_token ghcr.io/bearlogin/max-telegram-bridge-bot:latest ``` ### Docker Compose (с PostgreSQL) ```bash cp .env.example .env # Заполните TG_TOKEN и MAX_TOKEN в .env docker compose up -d ``` PostgreSQL настраивается через `.env`: ```env POSTGRES_USER=bridge POSTGRES_PASSWORD=bridge POSTGRES_DB=bridge ``` ### Из исходников ```bash 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](https://t.me/BotFather), отключите Privacy Mode (Bot Settings → Group Privacy → Turn off) - **MAX**: через [business.max.ru](https://dev.max.ru/docs/chatbots/bots-create) ### 2. Настройте и запустите Передайте токены через переменные окружения: ```bash TG_TOKEN=your_token MAX_TOKEN=your_token ./max-telegram-bridge-bot ``` Или через `export`: ```bash 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 ` 4. Перешлите любой пост из MAX-канала в **личку MAX-бота** → кросспостинг настроен! По умолчанию посты идут в обе стороны. Управление: - `/crosspost` (в личке любого бота) — список всех связок с кнопками - Перешлите пост из связанного канала в личку бота → появятся кнопки управления (направление, удаление) ## Команды ### Группы (bridge) | Команда | Описание | |---------|----------| | `/start`, `/help` | Инструкция | | `/bridge` | Создать ключ для связки | | `/bridge <ключ>` | Связать чат по ключу | | `/bridge prefix on/off` | Включить/выключить префикс `[TG]`/`[MAX]` | | `/unbridge` | Удалить связку | | `/thread` | Направить сообщения из MAX в текущий топик (форум-группы) | ### Каналы (crosspost) — через личку бота | Команда | Где | Описание | |---------|-----|----------| | `/crosspost` | TG или MAX личка | Список всех связок с кнопками управления | | `/crosspost ` | MAX личка | Начать настройку (затем переслать пост из MAX-канала) | | Переслать пост из канала | TG или MAX личка | Показать ID (если не связан) или кнопки управления | Кнопки управления позволяют менять направление (TG→MAX, MAX→TG, оба) и удалять связку. ### 5. Автозамены в кросспостинге Автоматическая замена текста при пересылке постов. Удобно для UTM-меток, ссылок и любых строк. 1. `/crosspost` → нажмите **🔄 Замены** на нужной связке 2. Выберите направление: **+ TG→MAX** или **+ MAX→TG** 3. Выберите тип: **Весь текст** или **Только ссылки** 4. Отправьте правило: `from | to` Для регулярных выражений: `/regex/ | replacement` Пример: `utm_source=tg | utm_source=max` — при пересылке из TG в MAX все вхождения `utm_source=tg` заменятся на `utm_source=max`. ## Переменные окружения | Переменная | Описание | По умолчанию | |------------|----------|--------------| | `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` | | `LOG_LEVEL` | Уровень логирования: `debug`, `info`, `warn`, `error` | `info` | | `TG_API_URL` | URL локального [Telegram Bot API сервера](https://github.com/tdlib/telegram-bot-api), например `http://localhost:8081`. Снимает лимиты на размер файлов | — | | `ALLOWED_USERS` | Белый список Telegram user ID через запятую. Если не задан — доступ открыт для всех | — | | `TG_MAX_FILE_SIZE_MB` | Максимальный размер файла из Telegram в Max. Рекомендуется 20 МБ (если не используется локальный сервер API), если не задано - без ограничений | — | | `MAX_MAX_FILE_SIZE_MB` | Максимальный размер файла из Max в Telegram. Рекомендуется 20 МБ (если не используется локальный сервер API), если не задано - без ограничений | — | | `MAX_ALLOWED_EXTENSIONS` | Список расширений файлов через запятую, которые разрешены к отправке. Если не задано - без ограничений | — | | `MESSAGE_FORMAT` | Формат сообщений. inline (текущий Имя: текст) и newline (Имя:\nтекст) | inline | ## Лицензия [CC BY-NC 4.0](LICENSE) — свободное использование и модификация, но коммерческое использование только с письменного разрешения автора. ## Разработчик [bearlogin.dev](https://bearlogin.dev) — разработка ботов, сайтов, лендингов и digital-продуктов под ключ. Консультации по автоматизации и AI.