Sync Bot — Server-Spiegelung

Synchronisierung

Wie Struktur, Nachrichten, Reaktionen und Namen im Detail synchronisiert werden.

Synchronisierung

Struktur (A → B)

Änderungen an der Kategorie auf Server A werden auf Server B nachgezogen:

  • Erstellen, Löschen, Umbenennen von Kanälen
  • Reihenfolge (Position) der Kanäle
  • Eigenschaften: Typ (Text, Voice, Forum, Announcement), Topic, Slowmode, NSFW

Kanal- und Kategorie-Namen

Namen folgen standardmäßig immer Server A:

  • Ohne eigenen Namen folgt ein Kanal auf B immer dem Namen von A — auch bei späteren Umbenennungen auf A.
  • Wird ein Kanal auf B per Discord-UI umbenannt, setzt der Bot den Namen wieder zurück (auf den A-Namen bzw. den gesetzten Custom-Namen).
  • Ein eigener Name entsteht ausschließlich über /sync rename-channel — dann ist der Kanal gelockt und wird von A-Umbenennungen nicht mehr überschrieben.
  • Die Kategorie auf B lässt sich nur über /sync rename-category dauerhaft umbenennen.

Nachrichten (A ↔ B)

Nachrichten werden über Webhooks in beide Richtungen gespiegelt — mit Anzeigename und Avatar des ursprünglichen Autors. Übernommen werden Text, Anhänge und Embeds.

  • Bearbeiten und Löschen werden mitgespiegelt, ebenso Massen-Löschungen (Purge).
  • Auch Nachrichten von Bots und fremden Webhooks werden gespiegelt.
  • Erwähnungen lösen echte Pings aus — @User, Rollen und @everyone/@here.
Loop-Schutz: Nachrichten, die von den eigenen Webhooks des Bots stammen, werden erkannt und nicht erneut gespiegelt. Genau dafür braucht es eine dauerhafte Datenbank (siehe unten).

Reaktionen

Reaktionen werden 1:1 mitgespiegelt (Hinzufügen und Entfernen).

Discord erlaubt keine Reaktion „im Namen" eines fremden Users — die gespiegelte Reaktion setzt der Bot. Das Emoji erscheint also korrekt am Partner-Post, aber als Bot-Reaktion. Custom-Emojis von Servern, in denen der Bot nicht Mitglied ist, können nicht gesetzt werden und werden übersprungen.

Grenzen

  • Nachrichten-Spiegelung läuft für Text- und Announcement-Kanäle. Voice und Forum werden strukturell gespiegelt, aber nicht als Nachrichten-Stream.

Datenbank

Der Bot speichert seinen Zustand in einer SQLite-Datenbank mit vier Tabellen:

TabelleInhalt
sync_pairsDie Verbindung A ↔ B inkl. Kategorie-Infos und Status
channel_mappingsQuell-Kanal ↔ Ziel-Kanal samt beider Webhooks
message_mappingsOriginal-Nachricht ↔ gespiegelte Nachricht (für Edits/Deletes)
custom_namesGelockte Kanal-Namen auf Server B
Die Datenbank ist zustandskritisch. Liegt sie nicht auf einem dauerhaften Pfad (DATABASE_PATH), gehen nach einem Neustart die Webhook-IDs verloren und der Loop-Schutz greift nicht mehr.
Copyright © 2026