Der nervige Test-Spam der letzten Wochen findet hiermit sein lang ersehntes Ende. Ich hatte meinen Spaß mit diesem Projekt – und tatsächlich funktioniert das Ganze jetzt auch.
Für den Moment läuft der Bot erstmal über meinen eigenen Rechner, also immer dann, wenn ich wach bin und daran denke, ihn hochzufahren. Entsprechend: kein 24/7-Betrieb, sondern ein Service mit analog dysfunktionalem Schlafrhythmus wie meinem eigenen.
Sollte sich zeigen, dass das Teil hier tatsächlich genutzt wird und nicht nur dekorativ herumliegt und verstaubt, kümmern wir uns um einen richtigen Hosting-Server, damit das Ganze stabil und dauerhaft verfügbar wird.
So, und damit ihr nicht raten müsst, wie man das gute Teil bedient, gibt es im Anschluss eine:
Ausführliche Kurzanleitung
MessageToForum ermöglicht es, Inhalte aus Discord strukturiert ins Form zu übertragen. Dabei wird die ursprüngliche Nachricht inklusive Autor, Zeitstempel und Kanalreferenz übernommen und in ein forumskompatibles Format konvertiert.
Es existieren drei unterschiedliche Nutzungsmöglichkeiten:
- Automatische Erkennung langer Nachrichten (Button-Workflow)
- Manuelle Steuerung über Slash-Commands
- Trigger-basierter Workflow über Reaktionen (:postbox:-System)
Alle drei Varianten führen letztlich zum gleichen Ergebnis, unterscheiden sich jedoch im Einstiegspunkt und im Grad der Benutzerführung.
1. Automatische Erkennung langer Nachrichten
Der Bot überwacht Nachrichten im Server und erkennt automatisch Beiträge, die eine definierte Mindestlänge überschreiten.
Aktuell:
- Mindestlänge: ca. 1500 Zeichen (konfigurierbar)
Wird diese Schwelle erreicht, antwortet der Bot direkt unter der Nachricht mit einer Interaktion; zusätzlich wird ein Button angezeigt:
Nach dem Klick öffnet sich ein Auswahlmenü mit zwei Optionen:
- Neuen Thread erstellen
- In bestehenden Thread antworten
Antwort auf bestehenden Thread
Wird „Thread antworten“ gewählt, öffnet sich ein Eingabefeld zur Suche.
Der Benutzer gibt einen Suchbegriff ein (z. B. Test oder Gesellschaft). Der Bot durchsucht daraufhin den Thread-Cache und bewertet Treffer anhand von:
- Namensähnlichkeit
- Teilstring-Matches
- Nutzungshäufigkeit
- Aktualität
Je nach Ergebnis:
- Ein Treffer → wird direkt verwendet
- Mehrere Treffer → Auswahlmenü wird angezeigt
- Kein Treffer → Hinweis wird ausgegeben
Nach Auswahl wird der Beitrag automatisch ins Forum übertragen.
Neuen Thread erstellen
Wird „Neuen Thread erstellen“ gewählt, erfolgt ein mehrstufiger Eingabeprozess:
- Auswahl einer Kategorie
- Eingabe von:
- Thread-Titel
- Tags (kommagetrennt)
Einschränkungen:
- Mindestens 1 Tag erforderlich
- Maximal 10 Tags
- Maximale Tag-Länge: 29 Zeichen
Nach Bestätigung wird ein neuer Thread erstellt und die Nachricht als Startbeitrag veröffentlicht.
2. Nutzung über Slash-Commands
Alternativ steht eine direkte Steuerung über Slash-Commands zur Verfügung. Diese Methode umgeht den interaktiven Workflow, hat allerdings den Nachteil, dass sie separat zum Absenden der Nachricht auf Discord erfolgen muss (min. 1x copy-paste).
Antwort in bestehenden Thread
Befehl:
Parameter:
- message → Inhalt der Nachricht
- thread → Ziel-Thread (Autocomplete aktiviert)
Die Thread-Auswahl basiert auf dem gleichen Scoring-System wie im interaktiven Workflow.
Nach Ausführung wird der Beitrag direkt im gewählten Thread veröffentlicht.
Neuen Thread erstellen
Befehl:
Parameter:
- message → Inhalt
- threadname → Titel des Threads
- category → Zielkategorie
- tags → kommagetrennte Liste
Validierung:
- Mindestens ein Tag erforderlich
- Maximal 10 Tags
Nach erfolgreicher Ausführung wird ein neuer Thread erstellt und der Beitrag veröffentlicht.
3. Trigger-Mechanik über :postbox:-Reaktion (Postbox-System)
Diese Methode erlaubt es, bestehende Nachrichten nachträglich ins Forum zu übertragen, ohne sie neu zu schreiben oder Commands zu verwenden.
Ablauf
- Eine beliebige Nachricht wird mit der Reaktion :postbox: markiert
- Der Bot erkennt die Reaktion und startet eine Session für den Benutzer
- Der Bot antwortet mit einem Button zur Bestätigung
Nach Klick auf den Button entspricht der weitere Ablauf exakt dem des Button-Workflows:
- Auswahl zwischen „Neuer Thread“ und „Antwort“
- Eingaben / Auswahl wie oben beschrieben
- Veröffentlichung im Forum
Die ursprüngliche Nachricht wird dabei intern zwischengespeichert und unverändert übernommen.
Technische Hinweise
- Formatierung:
Discord-Inhalte werden in BBCode konvertiert (fett, kursiv, Zeilenumbrüche etc.) - Antworten (Replies):
Wenn eine Discord-Nachricht eine Antwort ist, wird ein gekürzter Ausschnitt (max. 300 Zeichen) der referenzierten Nachricht im Forum zitiert (bei langen Nachrichten und Postbox-Mechanismus – NICHT jedoch über Slash-Befehle) - Synchronisation:
- Bearbeiten einer Discord-Nachricht → aktualisiert den Forumspost
- Löschen einer Discord-Nachricht → löscht den entsprechenden Forumspost
- Rate Limiting:
Zwischen zwei Forum-Posts wird automatisch eine Pause eingehalten (~11 Sekunden), um den Flood-Schutz des Forums zu umgehen. - Thread-Erkennung:
Threads werden regelmäßig gecrawlt und lokal zwischengespeichert. Die Vorschläge basieren daher auf einem Cache, der alle paar Minuten aktualisiert wird.
Es darf alles genutzt, geändert und weiterverbreitet werden. Das Projekt ist in enger Kooperation mit KI entstanden, und wer an Code, Projektstruktur und genaueren Details interessiert ist, wird in meinem GitHub-Repository fündig: