Перенос чата или канала Telegram в MAX
Утилита читает экспорт группы, супергруппы или канала из Telegram Desktop и отправляет сообщения в группу или канал MAX с помощью бота. Поддерживаются текст (с базовым HTML‑форматированием), фото, видео, GIF, стикеры (как изображения или видео), файлы. Альбомы из нескольких фото и видео, отправленных подряд, объединяются в одно сообщение.
Подготовка окружения
-
Создайте бота и получите его токен, добавьте бота в чат, куда будут отправляться сообщения.
Боты в MAX доступны только для российских юридических лиц и индивидуальных предпринимателей. Для получения токена бота обратитесь к документации MAX https://business.max.ru/self.
Для отправки сообщений в группу необходимо знать её числовой идентификатор
chat_id.
Запросите список чатов, в которых участвует бот, и найдите нужный по полюtitle.curl -X GET "https://platform-api.max.ru/chats" \ -H "Authorization: ${MAXBOT_TOKEN}" -s | \ jq '.chats' -
Установите Rust (если ещё не установлен):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Установка tg2max
cargo install tg2max
После успешной установки исполняемый файл tg2max появится в ~/.cargo/bin. Убедитесь, что этот путь добавлен в переменную окружения PATH.
Экспорт чата из Telegram Desktop
- Откройте Telegram Desktop.
- Перейдите в нужный чат (личный или групповой).
- Нажмите на три точки (меню) → Экспорт истории чата.
- В настройках экспорта:
- Убедитесь, что Формат задан
Машиночитаемый JSONилиОба. - Отметьте Фотографии, Видеозаписи, Голосовые сообщения, Видеосообщения, Стикеры, GIF, Файлы — всё, что хотите перенести. Ползунком установите ограничение по размеру файлов.
- Путь сохранения выберите удобный (например,
~/export).
- Убедитесь, что Формат задан
- Нажмите Export. В указанной директории появится
result.jsonи подпапки с медиафайлами.
Настройка назначения имён (необязательно)
Если в MAX вы хотите отображать имена пользователей не так, как они записаны в Telegram, создайте в директории экспорта файл name-mappings.json.
Формат: ключ — user_id (например user123456789), значение — желаемое имя.
{
"user123456789": "Иван",
"user012345678": "Василий"
}
Переменные окружения
Перед запуском задайте обязательные переменные:
export MAXBOT_TOKEN="ваш_токен_бота"
export CHAT_ID="-123456789"
Запуск
tg2max <путь_экспорта> [номер_первого_сообщения] [количество] [--no-header] [--disable-link-preview]
<путь_экспорта>— директория, где лежитresult.json.[номер_первого_сообщения]— индекс первого отправляемого сообщения (нумерация с 0). По умолчанию 0.[количество]— сколько сообщений обработать. Если 0 или не указано — все до конца.--no-header— не добавлять шапку с именем отправителя и датой. Сообщения будут содержать только оригинальный текст и вложения.--disable-link-preview— отключить предпросмотр ссылок в MAX (по умолчанию включён).
Примеры:
# Отправить все сообщения из экспорта
tg2max ~/telegram_export
# Отправить первые 50 сообщений без шапки
tg2max ~/telegram_export 0 50 --no-header
# Отправить сообщения с 100-го по 199-е без предпросмотра ссылок
tg2max ~/telegram_export 100 100 --disable-link-preview
Как это работает
- В директории экспорта разбирается файл
result.json. - Создаётся (или открывается) локальная БД SQLite
messages.dbдля хранения соответствияTelegram message ID → MAX message ID. - Сообщения обрабатываются последовательно.
- Для каждого сообщения:
- Если не указан флаг
--no-header, формируется HTML‑шапка:<u><b>Имя</b></u> <i>[Дата]</i>. - Текст преобразуется в HTML с поддержкой тегов
<b>,<i>,<u>,<s>,<code>,<a>. - Если сообщение — ответ на другое, в MAX делается
reply_to. - Вложения (фото, видео, файлы, стикеры) отправляются вместе с текстом.
- Альбомы: только фотографии и видео, отправленные подряд с одинаковым временем и отправителем, без текста у последующих, объединяются в одно сообщение с несколькими вложениями.
- Если сообщение слишком длинное (>4000 символов), оно разбивается по ближайшему переводу строки.
- При неудачной отправке медиа выполняется до 10 повторных попыток с паузой в 1 минуту. Если все попытки провалились, отправляется текст сообщения со ссылкой на оригинал в Telegram (
https://t.me/c/{chat_id}/{msg_id}).
- Если не указан флаг
Ограничения
- Некоторые типы файлов (
.exe,.dll,.bat,.shи другие исполняемые/скриптовые) запрещены к загрузке в MAX. Для них будет отправлена только ссылка на оригинал в Telegram. - Стикеры без предпросмотра (thumbnail) пропускаются.
- GIF отправляются как видео (без звука).
- Частота запросов к API MAX ограничена 1 сообщением в секунду (настраивается библиотекой).
Лицензия
MIT
Для связи
Telegram: https://t.me/KostyaGPT
MAX: https://max.ru/u/f9LHodD0cOI2cXIu7dXjHAtdfuyb6qwKjkH93vhUs2PJNXAfL_4b4Xo8xlA