| Zusammenfassung | Führen Sie zeitlich begrenzte Herausforderungen mit Bestenlisten, automatisierten Beiträgen und Abzeichen-Auszeichnungen durch. | |
| Repository-Link | GitHub - R23DPrinting/discourse-daily-challenge · GitHub | |
| Installationsanleitung | So installieren Sie Plugins in Discourse |
Aktuelle Version: 1.3.0 (aktualisiert am 27.03.2026)
Lizenz: MIT
Die Geschichte
Ich leite eine Gesundheits- und Wellness-Community, die kürzlich von Discord zu Discourse migriert ist. Auf Discord hatte ich einen benutzerdefinierten Bot entwickelt, um monatliche Fitness-Herausforderungen durchzuführen – Mitglieder posteten ihre täglichen Workouts, der Bot verfolgte die Check-ins, veröffentlichte wöchentliche Bestenlisten und kündigte am Ende jedes Monats die Gewinner an. Es war eine unserer beliebtesten Funktionen.
Nach dem Umzug zu Discourse begannen die Mitglieder, nach den Herausforderungen zu fragen. Ich suchte nach einem bestehenden Plugin, fand aber nichts. Also habe ich eines entwickelt.
Was als schnelle Lösung begann, entwickelte sich zu einem vollwertigen Herausforderungssystem, das ehrlich gesagt besser funktioniert als der ursprüngliche Discord-Bot. Da es möglicherweise für andere Communities nützlich sein könnte, teile ich es hier.
Was es tut
discourse-daily-challenge ermöglicht es Ihnen, strukturierte, zeitlich begrenzte Herausforderungen direkt in Discourse durchzuführen. Mitglieder melden sich an, indem sie in einem dafür vorgesehenen Thema mit einem Hashtag oder einem Foto posten. Das Plugin verfolgt alles automatisch.
Kernfunktionen
Flexible Check-ins
Mitglieder melden sich an, indem sie im Herausforderungsthema mit dem konfigurierten Hashtag oder einem Fotoanhang posten. Herausforderungen können für tägliche oder wöchentliche Check-ins konfiguriert werden. Das Check-in-Fenster wird in der konfigurierten Zeitzone der Herausforderung ausgewertet, sodass globale Communities korrekt funktionieren.
Live-Bestenliste & Serien
Das Admin-Dashboard zeigt Echtzeit-Ranglisten an, einschließlich der Gesamtzahl der Check-ins, aktueller Serien und des Abschlussprozentsatzes für jeden Teilnehmer. Serien-Labels spiegeln automatisch das Intervall der Herausforderung wider („Tag-Serie“ vs. „Wochen-Serie“).
Automatisierte Bestenlisten-Beiträge
Legen Sie einen Wochentag und eine Uhrzeit für einen wöchentlichen automatisierten Bestenlisten-Beitrag direkt im Herausforderungsthema fest. Ein abschließender Ergebnisbeitrag wird automatisch am Tag nach Ende der Herausforderung generiert.
Benutzerdefinierte Abzeichen
Definieren Sie eine Mindestanzahl an Check-ins, die erforderlich ist, um die Herausforderung „abzuschließen“. Berechtigte Teilnehmer erhalten automatisch ein benutzerdefiniertes Discourse-Abzeichen, wenn die Herausforderung endet. Der Abzeichenname wird automatisch aus dem Thementitel übernommen.
Mehrere gleichzeitige Herausforderungen
Führen Sie so viele Herausforderungen gleichzeitig durch, wie Sie möchten. Jede Herausforderung hat ihr eigenes Thema, ihren eigenen Zeitplan, ihre eigene Zeitzone, ihr eigenes Abzeichen und ihre eigene Bestenliste.
Archivierte Herausforderungen
Abgeschlossene Herausforderungen werden in einer archivierten Akkordeon-Ansicht im Dashboard gespeichert, sodass Sie historische Ergebnisse nachsehen können.
Admin-Check-in-Verwaltung
Administratoren können Check-ins manuell hinzufügen oder entfernen – nützlich, um verpasste Beiträge zu erfassen oder Streitigkeiten zu klären.
Manuelle Auslösung der Bestenliste
Über die Schaltfläche „Bestenliste jetzt posten“ können Administratoren auf Anforderung eine Bestenlisten-Aktualisierung veröffentlichen, außerhalb des geplanten Zeitfensters.
Moderator-Zugriff
Vollständige Site-Moderatoren können Herausforderungen über einen dedizierten Bereich in der Seitenleiste erstellen, bearbeiten und verwalten. Dies kann über die Site-Einstellungen aktiviert oder deaktiviert werden.
Kategorien-Moderator-Zugriff
Kategorien-Moderatoren können Herausforderungen verwalten, die auf ihre zugewiesenen Kategorien beschränkt sind, über eine dedizierte Route /challenges – kein Admin-Zugriff erforderlich. Dies kann unabhängig über die Site-Einstellungen aktiviert oder deaktiviert werden.
Installation
Fügen Sie Folgendes in Ihrer containers/app.yml unter hooks > after_code > exec > cmd hinzu:
- git clone https://github.com/R23DPrinting/discourse-daily-challenge.git
Dann neu aufbauen:
cd /var/discourse && ./launcher rebuild app
Nach der ersten Installation können zukünftige Updates über die Update-Schaltfläche im Panel angewendet werden, sofern im Änderungsprotokoll nichts anderes vermerkt ist.
Konfiguration
Erstellen einer Herausforderung
Navigieren Sie zu Admin → Plugins → Herausforderungen → Discourse Challenges und klicken Sie auf Neue Herausforderung.
| Feld | Beschreibung |
|---|---|
| Thema-ID | Das Discourse-Thema, in dem Mitglieder Check-ins durchführen. Der Thementitel füllt automatisch das Feld für den Abzeichennamen aus. |
| Hashtag-Auslöser | Erforderlicher Hashtag für Check-ins (ohne #, z. B. workout) |
| Check-in-Intervall | Täglicher oder wöchentlicher Check-in-Modus |
| Wochenstart | Für wöchentliche Herausforderungen: Welcher Tag startet die Woche (Sonntag, Montag oder Samstag) |
| Startdatum | Erster Tag der Herausforderung (einschließlich) |
| Enddatum | Letzter Tag der Herausforderung (einschließlich) |
| Herausforderungs-Zeitzone | Zeitzone zur Auswertung des Check-in-Fensters (optional, Standard ist UTC) |
| Benötigte Check-ins | Mindestanzahl an Check-ins, um das Abschlussabzeichen zu erhalten |
| Beschreibung | Optionale Beschreibung der Herausforderung |
| Wöchentlichen Bestenlisten-Beitrag aktivieren | Umschalten automatisierter wöchentlicher Bestenlisten-Beiträge |
| Post-Wochentag | Wochentag für den automatisierten Bestenlisten-Beitrag |
| Post-Stunde | Stunde (0–23, in der Herausforderungs-Zeitzone) für den automatisierten Bestenlisten-Beitrag |
| Abschlussabzeichen vergeben | Automatisches Vergeben des Abzeichens am Ende der Herausforderung aktivieren |
| Abzeichenname | Name des zu erstellenden und zu vergebenden Abzeichens – wird automatisch aus dem Thementitel übernommen |
Site-Einstellungen
| Einstellung | Standard | Beschreibung |
|---|---|---|
daily_challenge_enabled |
true |
Das Plugin global aktivieren oder deaktivieren |
daily_challenge_mod_access_enabled |
true |
Vollständige Site-Moderatoren zur Verwaltung von Herausforderungen zulassen |
daily_challenge_category_mod_access_enabled |
true |
Kategorien-Moderatoren zur Verwaltung von Herausforderungen in ihren zugewiesenen Kategorien zulassen |
So funktionieren Check-ins
- Ein Mitglied antwortet auf das Herausforderungsthema.
- Der Beitrag muss den konfigurierten Hashtag oder einen Fotoanhang enthalten.
- Das Plugin prüft, ob das Mitglied bereits im aktuellen Zeitraum (Tag oder Woche, je nach Intervall der Herausforderung) einen Check-in durchgeführt hat.
- Falls nicht, wird der Check-in aufgezeichnet und die Bestenliste aktualisiert.
- Pro Mitglied und Zeitraum ist nur ein Check-in erlaubt.
Administratoren können alle Check-ins im Admin-Dashboard einsehen und verwalten.
Moderator- & Kategorien-Moderator-Zugriff
Vollständige Site-Moderatoren können über einen HERAUSFORDERUNGEN-Bereich in der Hauptseitenleiste auf das Herausforderungsmanagement zugreifen (falls daily_challenge_mod_access_enabled aktiviert ist).
Kategorien-Moderatoren können eine eingeschränkte Version unter /challenges/dashboard und /challenges/challenges aufrufen – sie können nur Herausforderungen sehen und verwalten, die mit Themen in ihren zugewiesenen Kategorien verknüpft sind. Dies erfordert, dass daily_challenge_category_mod_access_enabled aktiviert ist und der Benutzer als Kategorien-Moderator über Admin → Kategorien → [Kategorie] → Moderation zugewiesen wurde.
Automatisierte Beiträge
Wöchentliche Bestenliste
Das Plugin führt eine stündliche Hintergrundaufgabe aus, die prüft, ob es Zeit ist, die wöchentliche Bestenliste zu veröffentlichen. Wenn der konfigurierte Tag + die Stunde eintreffen (in der Herausforderungs-Zeitzone), wird ein formatierter Beitrag im Herausforderungsthema erstellt, der die aktuellen Ranglisten anzeigt.
Abschließender Ergebnisbeitrag
Am Tag nach Ende der Herausforderung wird automatisch ein abschließender Ergebnisbeitrag veröffentlicht. Er listet alle Teilnehmer, ihre Gesamtzahl an Check-ins, den Abschlussstatus auf und gratuliert den Abzeichen-Empfängern.
Datenbanktabellen
daily_challenges– Definitionen der Herausforderungendaily_check_ins– Einzelne Check-in-Datensätze pro Benutzer, pro Herausforderung, pro Zeitraum
Kompatibilität
- Discourse 3.x+
- Getestet auf selbst gehosteten Installationen
- Ruby 3.x, Rails 7.x+
Roadmap (v1.4.0)
- @ChallengeBot Erwähnungsbefehle – Mitglieder können den Bot-Account @ChallengeBot in Herausforderungsthemen erwähnen, um persönliche Statistiken per DM zu erhalten (
status,leaderboard,streak,help) - Bestätigungs-DMs für Check-ins – Automatische DM nach jedem erfolgreichen Check-in mit aktuellen Serieninformationen
- Erinnerungs-DMs – Optionale pro-Herausforderung-Einstellung; tägliche Herausforderungen senden einen Hinweis nach 2+ verpassten Tagen, wöchentliche Herausforderungen senden eine Erinnerung am letzten Tag der Woche, wenn noch kein Check-in durchgeführt wurde
Änderungsprotokoll
v1.3.0
- Zugriff für Kategorien-Moderatoren – Kategorien-Moderatoren können Herausforderungen in ihren zugewiesenen Kategorien erstellen, bearbeiten, löschen und Check-ins verwalten über
/challenges/dashboardund/challenges/challenges– kein Admin-Zugriff erforderlich - Automatische Befüllung des Abzeichennamens – Das Feld für den Abzeichennamen wird automatisch aus dem Thementitel ausgefüllt, wenn eine Thema-ID eingegeben wird
- Validierung des Abzeichennamens – Der Abzeichenname ist erforderlich, wenn „Abschlussabzeichen vergeben“ aktiviert ist; gibt einen korrekten Fehler statt eines 500-Fehlers zurück
- Separate Umschalter für Mod/Kategorien-Mod –
daily_challenge_mod_access_enabledunddaily_challenge_category_mod_access_enabledkönnen unabhängig voneinander umgeschaltet werden
v1.2.0
- Konfigurierbares Check-in-Intervall – Tägliche oder wöchentliche Herausforderungen durchführen
- Wochenstart-Einstellung – Für wöchentliche Herausforderungen wählen, ob Wochen am Sonntag, Montag oder Samstag beginnen
- Intervallbewusste Serien – Serien-Labels und Berechnungen spiegeln nun das Intervall der Herausforderung wider
- Moderator-Zugriff – Vollständige Site-Moderatoren können Herausforderungen über einen dedizierten Bereich in der Seitenleiste verwalten
- Umbenannt in „Discourse Challenges“ in der Admin-Oberfläche
v1.1.1
- Dashboard für mehrere Herausforderungen mit Anzeige aller aktiven Herausforderungen gleichzeitig
- Archivierter Herausforderungen-Akkordeon mit historischen Ergebnissen
v1.1.0
- Zeitzonensupport pro Herausforderung
- Wöchentlicher Post-Zeitplan jetzt pro Herausforderung (Tag, Stunde, Aktivieren/Deaktivieren-Umschalter)
v1.0.0
- Erstveröffentlichung
Feedback & Beiträge
Dieses Plugin wurde entwickelt, um ein echtes Bedürfnis in unserer Community zu lösen, und ich teile es, falls es Ihrer helfen kann. Fehler, PRs und Feature-Anfragen sind auf GitHub willkommen.
Wenn Sie eine Community betreiben, bei der Verantwortlichkeit und Beständigkeit wichtig sind – Fitness, Sprachenlernen, Schreiben, kreative Gewohnheiten – können tägliche Herausforderungen ein wirklich kraftvolles Instrument zur Steigerung des Engagements sein. Ich hoffe, dieses Plugin macht es einfacher, dies in Ihre Discourse-Community zu bringen.




