191 lines
10 KiB
Markdown
191 lines
10 KiB
Markdown
# 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 <TG_ID>`
|
||
4. Перешлите любой пост из MAX-канала в **личку MAX-бота** → кросспостинг настроен!
|
||
|
||
По умолчанию посты идут в обе стороны. Управление:
|
||
|
||
- `/crosspost` (в личке любого бота) — список всех связок с кнопками
|
||
- Перешлите пост из связанного канала в личку бота → появятся кнопки управления (направление, удаление)
|
||
|
||
## Команды
|
||
|
||
### Группы (bridge)
|
||
|
||
| Команда | Описание |
|
||
|---------|----------|
|
||
| `/start`, `/help` | Инструкция |
|
||
| `/bridge` | Создать ключ для связки |
|
||
| `/bridge <ключ>` | Связать чат по ключу |
|
||
| `/bridge prefix on/off` | Включить/выключить префикс `[TG]`/`[MAX]` |
|
||
| `/unbridge` | Удалить связку |
|
||
| `/thread` | Направить сообщения из MAX в текущий топик (форум-группы) |
|
||
|
||
### Каналы (crosspost) — через личку бота
|
||
|
||
| Команда | Где | Описание |
|
||
|---------|-----|----------|
|
||
| `/crosspost` | TG или MAX личка | Список всех связок с кнопками управления |
|
||
| `/crosspost <TG_ID>` | 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.
|