•
1 min read
lxmf_publish

Брат-близнец deltachat_publish, только в обратную сторону: тот публикует посты в блог, а этот доставляет их читателям по mesh-сети Reticulum. Работает в паре с зеркалом блога на узле NomadNet.

LXMF-адрес бота: 777777779e7beceb13399c0ab0c63613

Команды

Писать боту можно из Sideband, Columba, MeshChat или NomadNet (регистр не важен, / в начале тоже можно):

  • подписаться (sub, start) — присылать новые посты;
  • отписаться (unsub, stop) — перестать присылать;
  • последние (last) — свежие посты без подписки.

Стек

  • Язык: Python 3.13
  • Сеть: RNS + LXMF
  • База данных: SQLite (подписчики и уже разосланные посты)
  • Деплой: Docker + Docker Compose, обновление по тегам vX.Y.Z через update.sh

Как это устроено

  • Новые посты бот берёт из RSS-ленты. При первом запуске он только запоминает уже существующие посты, чтобы не засыпать подписчиков всем архивом.
  • Сообщение содержит ссылки на пост в зеркале NomadNet и на сайте.
  • Доставка сначала напрямую, а если подписчик не в сети — через propagation node: клиент заберёт сообщение при следующей синхронизации.
  • Не ретранслятор: Reticulum у бота запущен с enable_transport = No, чужой трафик через сервер не ходит.
  • Адрес подобран с префиксом 77777777, ключ лежит только на сервере.

Исходный код

Репозиторий открыт на GitHub: mrgluek/lxmf_publish, зеркало на моём сервере: git.gluek.info/gluek/lxmf_publish. Лицензия MIT.