postify.notparody.ru

Посты из Telegram в Discord.
И обратно.

Postify — минималистичный мост TG ↔ DS. Маршруты в YAML, медиа и правки из коробки, деплой в Docker за две минуты.

Telegram-канал postify Discord-канал
docker compose up -d --build   # и всё работает

Возможности

Два направления

tg_to_ds и ds_to_tg. Двусторонний мост — просто два маршрута.

YAML-маршруты

Несколько каналов, топики, разные шаблоны подписи автора.

Медиа

Фото, видео, документы, аудио. Лимит размера настраивается.

Фильтры

Белый список авторов, стоп-слова, минимальная длина, топики.

Правки

Отредактированный пост помечается ✏️ и пересылается повторно.

Без зацикливания

Игнор ботов + dedup-кэш. Двусторонний мост не уходит в петлю.

Запуск за 2 минуты

  1. Токены. Telegram — @BotFather, Discord — Developer Portal (включите intent Message Content). Положите в .env.
  2. Маршруты. Скопируйте config.example.yaml → config.yaml, впишите chat_id и channel_id.
  3. Старт. docker compose up -d --build, логи — docker compose logs -f.
cp .env.example .env
cp config.example.yaml config.yaml
docker compose up -d --build

Конфиг

routes:
  - id: tg_news_to_ds
    direction: tg_to_ds
    source: { type: telegram, chat_id: -1001234567890 }
    target: { type: discord, channel_id: "123456789012345678" }
    options:
      header_template: "📨 {author}"

  - id: ds_news_to_tg
    direction: ds_to_tg
    source: { type: discord, channel_id: "123456789012345678" }
    target: { type: telegram, chat_id: -1001234567890 }

Полный пример с фильтрами — в config.example.yaml. Проверка без запуска: python -m postify --check.

FAQ

Нужен ли номер телефона / MTProto?

Нет. Только Bot API Telegram и обычный Discord-бот. Достаточно прав на чтение и отправку.

Длинные посты обрезаются?

Нет. Для Discord текст чанкуется по ~1900 символов, для Telegram подпись + доводка остатка.

Куда деплоить лендинг?

Это статика из папки landing/. Любой хостинг + A/CNAME на postify.notparody.ru. Готовый конфиг nginx — в nginx/.