Ein System zum Verschieben von Themen basierend auf Kriterien wie einem Zeitstempel erstellen

Siehe die Integration des KI-Bots in Discourse AI - AI bot - Documentation / Site Management - Discourse Meta

Kurzversion, falls Sie nicht die ganze Geschichte lesen möchten: Ich möchte den KI-Bot verwenden, um Themen basierend auf dem „Ablaufdatum“ zu verschieben, indem ich die Zeitstempel eines Beitrags überprüfe.

Ich habe also über Möglichkeiten nachgedacht, die Verwaltung für meinen Anwendungsfall von Discourse zu verbessern. Ich betreibe eine Roblox-Spiel-Community, und wir nutzen Discourse für unser Moderationsteam, um Protokollierungsaufgaben von Spielmoderationsaktionen und Discord-Aktionen durchzuführen.

Wir haben mehrere Kategorien, einschließlich temporärer Sperren. Wenn wir unsere Protokolle erstellen, geschieht dies in Form eines Beitrags, und der Moderator füllt ein Format aus und fügt die Zeitstempel ein, die sich auf die durchgeführte Aktion beziehen, z. B. 7-tägige Sperre, z. B. Dauer: 2026-03-01T05:00:00Z2026-03-08T05:00:00Z (Zeitstempel ist hier)

Auf der Verwaltungsseite habe ich ein Archiv für gesperrte Benutzer hinzugefügt, wenn eine Sperre vorbei ist. Zuvor – Sie haben es erraten – haben wir dies manuell gemacht und die Sperren einmal pro Woche überprüft.

Letzten Herbst habe ich ein Python-Dienstprogramm erstellt [siehe unten], das lokal mit der Discourse-API ausgeführt wird. Es öffnet ein Menü, in dem ich auswählen kann, welchen Abschnitt der Sperren ich archivieren möchte, und es verarbeitet diese Sperren, indem es jeden Beitrag auf einen gültigen Zeitstempel überprüft und prüft, ob diese Zeit abgelaufen ist. Es funktioniert gut, aber ich wollte es weiter verbessern…

Und hier sind wir… Ich hoffe, Sie sind noch da, man könnte das wahrscheinlich wirklich zusammenfassen, aber hey, bei Discourse geht es um Konversation, oder?

Ich möchte mein Moderationsteam, insbesondere die ranghöchsten Mitglieder, in die Lage versetzen, diese Aufgabe zu erledigen, ohne VS verwenden oder etwas auf ihren Rechner herunterladen zu müssen. Also habe ich versucht, eine Plugin-Version zu erstellen, bei deren Fertigstellung ich zugeben muss, dass ich KI eingesetzt habe. Ich bin mir nicht sicher, wo es schiefgelaufen ist. Ich habe versucht, die Dokumentation durchzusehen und sogar Anweisungen befolgt, aber nichts war erfolgreich.

Mein Problem mit der Integration über ein Plugin wurde dadurch blockiert, dass ich nicht verstand (oder die KI nicht verstand), wie man eine visuelle Oberfläche in die Benutzeroberfläche integriert (nicht so farbenfroh wie diese Python-Version, aber auf eine Weise sinnvoll, die verstanden werden könnte), z. B. ein großer Button mit der Aufschrift „Archivierungsprozess ausführen“ und die Moderations-API (?) nutzen, um diejenigen zu kennzeichnen, die kein gültiges Datum oder Fehler haben usw.

Also… hier sind wir am Ende der langen Version… Ich möchte eine Rückmeldung, die ich nur von einem anderen Menschen bekommen kann, weshalb ich hier bin.

  • Hat der KI-Bot diese Fähigkeit?
  • Wenn nein, welche sinnvolle Lösung sollte ich versuchen?
  • Was habe ich beim Plugin-Pfad falsch gemacht, dass es einfach nicht funktioniert hat/schwierig war (wie häufige Fehler, die Sie gemacht haben, als Sie in dieser Community angefangen haben)?

Ich weiß Ihren Input zu schätzen. Danke.

1 „Gefällt mir“

Ich denke nicht, dass Sie dafür eine KI benötigen.

Wenn Sie diese aktiven Bann-Themen erstellen, warum erstellen Sie dann nicht auch einen Themen-Timer, um es nach einiger Zeit in die richtige Kategorie zu verschieben, dann ist es automatisch.

Außerdem … gibt es einen Grund, warum Sie sich hier vom Discourse-Kern entfernen? Wir haben bereits Protokolle für gesperrte Benutzer, warum geben Sie Ihren vertrauenswürdigen Benutzern nicht einfach Zugriff auf eine Data Explorer-Abfrage, um den Verlauf einzusehen?

Der Diskurs wird verwendet, um die Sperren zu protokollieren…. Das ist der gesamte Zweck. Es sind keine Spieler im Forum…. Nur Moderatoren des Spiels/Discords. Ich glaube nicht, dass ein Thementimer funktionieren würde, da die Sperren zeitlich variieren. Ich weiche nicht so sehr vom Discourse Core ab, als dass ich ihn für einen bestimmten Anwendungsfall nutze. (Siehe das Bild)

1 „Gefällt mir“

Interessanter Anwendungsfall!

Ich glaube, Sie wären mit ein paar Änderungen besser bedient:

Verschieben Sie das Ablaufdatum des Banns in ein dediziertes benutzerdefiniertes Themefeld

Dadurch wird sichergestellt, dass jeder Bann bei der Erstellung eines neuen Themas ein Ablaufdatum hat, und das Abfragen abgelaufener Banns wird zum Kinderspiel.

Sie könnten auch unsere Einführung experimenteller Formularvorlagen verwenden, die Ihnen ebenfalls programmatischen Zugriff auf bestimmte Daten in einem Thema ermöglichen.

Fügen Sie /filter benutzerdefinierte Filter hinzu

Mit dem benutzerdefinierten Feld oder der Formularvorlage ist es nun einfach, neue /filter-Filter wie abgelaufene Banns, archivierte Banns usw. hinzuzufügen. Diese würden dann zu Ihren Hauptarbeitslisten für Moderatoren und könnten für eine einfache Nutzung der Seitenleiste hinzugefügt werden.

Banns als Ganzes automatisieren?

Das letzte Stück wäre, Discourse dazu zu bringen, die Banns auf Roblox und Discord automatisch zu erstellen, sobald ein Thema erstellt wird, und die Banns auch automatisch zu entfernen, wenn sie ablaufen.

Dies ist mit einem wiederkehrenden Job und API-Zugriff recht einfach zu bewerkstelligen.


Wenn Sie eine lokale Discourse-Entwicklungsumgebung einrichten haben, können Sie meinen Beitrag hier sogar als Spezifikation an Claude Code übergeben, und es wird es in wenigen Minuten erstellen.

3 „Gefällt mir“

Das ist eine ziemlich interessante Ansicht! Ich werde mir das ansehen! Besonders die benutzerdefinierten Felder und Vorlagen. Vielen Dank für Ihre Perspektive!

Mehr Hintergrundgeschichte, da ich euch anscheinend mit meinem Anwendungsfall fasziniere… Und ich helfe gerne anderen Gaming-Communitys mit Ideen aus, die sie in den kommenden Jahren finden können…

Ich habe tatsächlich einen ziemlich einzigartigen Anwendungsfall. Wir haben Trello jahrelang benutzt, aber aufgrund der Einschränkungen, die sie auferlegen wollten, wurde es einfach zu unübersichtlich. Wir mussten 10 Arbeitsbereiche nutzen, um unser gesamtes Team unterzubringen. (Ganz zu schweigen davon, dass sie anfingen, die Zugriffsebenen auf eine kostenpflichtige Funktion zu beschränken)

Angesichts des anhaltenden Kampfes mit den Änderungen des Geschäftsmodells war es viel einfacher, zu einer selbst gehosteten Lösung zu wechseln. Ich habe andere Kanban-ähnliche Software ausprobiert, aber nach früheren Testnutzungen von Discourse und der Tatsache, dass es sowohl Open Source ist als auch modernere Praktiken für das Backend verwendet, konnte ich einfach nicht widerstehen, es zu nutzen, und bin immer wieder erstaunt über die Errungenschaften und das Wachstum, das diese Plattform als Ganzes weiterhin verzeichnet. Der September markiert mein 2-jähriges Jubiläum seit dem Wechsel, und wir haben über 6.000 Themen erstellt!

Die Funktion, die ich nachahmen wollte, ähnelte der aus dieser Zeit, nämlich eine Automatisierung, um bei einem bestimmten Auslöser (bei uns war es das Enddatum) von einer Liste in eine andere zu wechseln. Leider ist dies eine Premium-Funktion, die ich nicht einmal mehr demonstrieren kann.

image

Ich werde hierher zurückkehren, sobald ich mit der Erkundung fertig bin, und euch mitteilen, wie es gelaufen ist/was ich getan habe, insbesondere zugunsten anderer, die eine Idee für einen ähnlichen Anwendungsfall sehen!

2 „Gefällt mir“

Sobald Ihr Plugin funktioniert, sollten Sie dank des Kanban Boards auch wieder visualisieren können, wie Sie es gewohnt waren.

2 „Gefällt mir“

Nun, hier bin ich wieder… mit ziemlich viel Fortschritt. Ich habe etwa 6,5 Stunden damit verbracht.

Ich habe mit einigen Konzepten begonnen, die auf Ihren Vorschlägen basieren, aber ich hatte ein paar Nachteile, die mich letztendlich in eine andere Richtung führten, aber hoffentlich konzeptionell immer noch eine großartige Idee ist!

Ursprünglich wollte ich Vorlagenformulare (Template Forms) verwenden, aber ich war mit dem Abstand zwischen den einzelnen Antworten nicht sehr zufrieden. Ich suchte eher nach einem Format wie meinem aktuellen Set. Außerdem war ich nicht glücklich darüber, alles manuell im Code schreiben zu müssen, was mich abschreckte.

Ich habe mein Python-Skript in ein Discourse-Plugin portiert (Bitte beachten Sie, dass KI für den Großteil der Portierung verwendet wurde). Ich hatte einige Probleme beim Start, und jetzt, da es betriebsbereit ist, muss ich es noch feinabstimmen. Das Design ist etwas klobig, und wahrscheinlich gibt es noch ein paar andere Kleinigkeiten. Ich bin nicht sehr gut in Ruby, daher ist die Überprüfung dort ein Best-Effort.

Also, zum Plugin…

Konzept/Zweck: Die Möglichkeit, Themen schneller von einer Kategorie in eine andere zu verschieben, basierend auf bestimmten Auslösern.

Es verfügt über zwei Betriebsmodi: Manuell und Automatisch (geplant).
Um den Auslöser zu erstellen, können Sie die Zu-/Von-Kategorien auswählen und dann weiter nach bestimmten Spezifikationen filtern, z. B. Tags. Der letzte Aufruf/tatsächliche Auslöser, abgesehen von den einschränkenden Filtern, löst den aktuellen Satz von Auslösern durch Endzeit-/Datumsstempel (oder Start), Geschlossen, Gelöst, Archiviert aus.

Es gibt auch eine Protokollfunktion, einschließlich des verschobenen Themas, und Sie können festlegen, wie lange die Protokolle verfügbar sind.

Ich habe die Auslöser für Geschlossen, Gelöst oder Archiviert in dieser Antwort noch nicht vollständig getestet.
Sobald ich es etwas aufgeräumt und weiter getestet habe, um sicherzustellen, dass alles funktioniert, werde ich es gerne in der Plugin-Kategorie veröffentlichen, damit andere darauf zugreifen können, aber vorerst werde ich es nur auf GitHub belassen. Ich muss wahrscheinlich auch noch einmal zurückgehen und die Berechtigungen überprüfen, damit nicht jeder es ausführen kann. Oder dies speziell umschaltbar machen.

Lassen Sie mich wissen, was Sie davon halten, oder ob ich damit absolut verrückt bin.

Quelle: https://github.com/jdc20181/DiscourseTopicMigrationTool