Tägliche Herausforderungen für Discourse

:information_source: Zusammenfassung Führen Sie zeitlich begrenzte Herausforderungen mit Bestenlisten, automatisierten Beiträgen und Abzeichen-Auszeichnungen durch.
:hammer_and_wrench: Repository-Link GitHub - R23DPrinting/discourse-daily-challenge · GitHub
:open_book: 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

:white_check_mark: 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.

:bar_chart: 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“).

:robot: 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.

:sports_medal: 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.

:card_index_dividers: 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.

:file_folder: Archivierte Herausforderungen
Abgeschlossene Herausforderungen werden in einer archivierten Akkordeon-Ansicht im Dashboard gespeichert, sodass Sie historische Ergebnisse nachsehen können.

:hammer_and_wrench: 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.

:pushpin: 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.

:police_officer: 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.

:card_index_dividers: 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

  1. Ein Mitglied antwortet auf das Herausforderungsthema.
  2. Der Beitrag muss den konfigurierten Hashtag oder einen Fotoanhang enthalten.
  3. 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.
  4. Falls nicht, wird der Check-in aufgezeichnet und die Bestenliste aktualisiert.
  5. 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 Herausforderungen
  • daily_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/dashboard und /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-Moddaily_challenge_mod_access_enabled und daily_challenge_category_mod_access_enabled kö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.

:link: GitHub - R23DPrinting/discourse-daily-challenge · GitHub

15 „Gefällt mir“

Das ist großartig, vielen Dank für das Teilen. Was die Funktionen angeht, so könnte es für uns nützlich sein, wenn es möglich wäre, das Herausforderungsintervall anders als täglich festzulegen, d.h. eine wöchentliche Überprüfung der Herausforderung anstelle einer täglichen über die gesamte Dauer der Herausforderung auszuwählen. Es wäre auch großartig, wenn Moderatoren/Kategoriemoderatoren Herausforderungen erstellen könnten, sodass nicht nur Administratoren die Dinge einrichten müssen.

1 „Gefällt mir“

Lassen Sie mich sicherstellen, dass ich die Anfragen verstanden habe:

[quote=“asc, post:2, topic:398980”]d.h., wählen Sie einen wöchentlichen Herausforderungs-Check-in anstelle eines täglichen über die Dauer der Herausforderung aus.

[/quote]

Sie würden die Herausforderung also beispielsweise für einen Monat (1. bis 30. April) einrichten, aber festlegen, dass nur 1 Eintrag pro Woche anstatt 1 Eintrag pro Tag zählt? Soll es eine Woche von Sonntag bis Samstag oder alle 7 Tage sein?

[quote=“asc, post:2, topic:398980”]Es wäre auch großartig, wenn Mods/Kategorie-Mods Herausforderungen erstellen könnten, damit nicht nur der Administrator Dinge einrichten muss.

[/quote]

Das ist eine gute Idee. Ich habe ehrlich gesagt keine Mods in meiner Community, daher weiß ich nicht, wie das Admin-Panel für sie aussieht. Ich werde ein Mod-Konto in meiner Entwicklungsumgebung erstellen und damit herumspielen.

1 „Gefällt mir“

Ja, genau. Unsere Community hat eine 52-in-52-Herausforderung, bei der es ein Jahr lang wöchentliche Herausforderungen gibt. Nicht-tägliche Check-ins würden also mehr Flexibilität für verschiedene Arten von Herausforderungen bieten.

Discourse Calendar (and Event) ermöglicht es dem Administrator, die Woche am Samstag, Sonntag oder Montag beginnen zu lassen. Wenn Sie also Kompatibilität mit diesem Plugin in Zukunft planen möchten (z. B. das Erstellen von Kalenderereignissen für Check-ins oder Start-/Enddatum?), könnte ich mich daran orientieren, wie Calendar die Woche festlegt? Für meine Community spielt es meiner Meinung nach keine Rolle.

Kategorie-Moderatoren zusätzlich zu regulären Moderatoren wären wirklich großartig – wir haben Interessengruppen, die ihre eigenen Unterkategorien haben, und es wäre schön, diesen Kategorie-Moderatoren zu erlauben, separate Herausforderungen durchzuführen, ohne sie zu vollwertigen Moderatoren zu machen.

1 „Gefällt mir“

Das sind ausgezeichnete Ideen. Vielen Dank fürs Teilen! Ich werde sehen, was ich tun kann, um sie umzusetzen.

1 „Gefällt mir“

Benötigt dieses Plugin das gamification Plugin, um aktiviert zu sein, oder haben Sie das Tag ausgewählt, weil Ihr Plugin sich auf Gamification im Allgemeinen bezieht?

2 „Gefällt mir“

Das Plugin wird nicht benötigt. Ich habe nur das Tag ausgewählt. Entschuldigung dafür.

2 „Gefällt mir“

v1.2.0 ist jetzt verfügbar!

Neu in dieser Version:

  • Konfigurierbares Check-in-Intervall — tägliche oder wöchentliche Herausforderungen ausführen
  • Wochenstart-Einstellung — für wöchentliche Herausforderungen wählen, ob die Woche am Sonntag, Montag oder Samstag beginnt
  • Intervallbewusste Serien — Serienbeschriftungen und -berechnungen spiegeln nun das Herausforderungsintervall wider („Wochenserie“ vs. „Tagesserie“)
  • Moderatorzugriff — Vollständige Site-Moderatoren können nun Herausforderungen über einen dedizierten Seitenbereich erstellen, bearbeiten und verwalten. Dies kann unter Admin → Einstellungen → Plugins (daily_challenge_mod_access_enabled) aktiviert oder deaktiviert werden, sodass Communities, die das Herausforderungsmanagement ausschließlich Administratoren vorbehalten möchten, dies tun können.
  • Umbenannt in „Discourse Challenges" in der Admin-Oberfläche
\"Screenshots\"

Herausforderungsformular — Check-in-Intervall

Dashboard — Woche beginnt am

Moderatorzugriff über Seitenleiste

Hinweis: Für diese Version ist ./launcher rebuild app erforderlich, um Datenbank-Migrationen anzuwenden – die Schaltfläche „Update“ im Panel funktioniert für diese Version nicht.


Bezüglich des Zugriffs von Kategorie-Moderatoren: Dies ist etwas, an dem ich aktiv arbeite. Das Problem besteht darin, dass Discourse Kategorie-Moderatoren keinen Staff-Status gewährt, was bedeutet, dass sie unabhängig von den Einstellungen des Plugins überhaupt keine /admin-Routen erreichen können. Ich untersuche eine separate, nicht-administrative Route speziell für Kategorie-Moderatoren, die ihnen einen eingeschränkten Zugriff auf Herausforderungen in ihren Kategorien gewähren würde. Erwarten Sie dies in v1.3.0.

1 „Gefällt mir“

Ich kann keine Herausforderung erstellen, da bei jeder Aktion ein Fehler 500 zurückgegeben wird.

Das ist seltsam. Ich führe es auf zwei verschiedenen Foren ohne Probleme aus und habe ziemlich viele Tests durchgeführt. Welche Discourse-Version verwenden Sie? Sind Sie auf der neuesten Plugin-Version (1.2.0)?

Können Sie eine SSH-Verbindung zu Ihrem Server herstellen, einige Befehle ausführen und die Ergebnisse hier posten?

Zuerst überprüfen Sie die Plugin-Version:

./launcher enter app
cat /var/www/discourse/plugins/discourse-daily-challenge/plugin.rb | grep version

Versuchen Sie anschließend, eine Herausforderung zu erstellen. Wenn Sie den Fehler 500 erhalten, führen Sie sofort in der SSH-Sitzung folgenden Befehl aus:

./launcher enter app
tail -50 /var/www/discourse/log/production.log

Teilen Sie mir die Ergebnisse mit, und wir können versuchen, das Problem zu lösen.

Discourse 2026.3.0-latest.1 - https://github.com/discourse/discourse version f2781e1455274ea2c011fd1d161ac2ad9fde72bd

# version: 1.2.0
# required_version: 2.7.0
Started POST "/drafts.json" for 2804:1b0:f442:e48c:3056:bd27:b4ae:52b3 at 2026-0                                                                                        3-26 20:49:05 +0000
Processing by DraftsController#create as JSON
  Parameters: {"draft_key" => "topic_17746", "sequence" => "2", "data" => "{\"re                                                                                        ply\":\"@Discipulo na minha opinião eu não vou me estressar\",\"action\":\"reply                                                                                        \",\"categoryId\":14,\"tags\":[],\"archetypeId\":\"regular\",\"metaData\":null,\                                                                                        "composerTime\":25298,\"typingTime\":3900,\"locale\":\"\"}", "owner" => "fee91ce                                                                                        037e64ec297a500af13091165", "force_save" => "false"}
Completed 200 OK in 11ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cache                                                                                        d) | GC: 0.1ms)
Started GET "/t/os-melhores-blogs-de-games-no-brasil/15399?__cf_chl_rt_tk=5M6_rd                                                                                        _fq46BL9PZ6VvZRAVdIsJ84aL9XIfa1Re_paQ-1773238724-1.0.1.1-g20DH5dkOVXOIHhKYVpNwYR                                                                                        CQNnUboE4.po6L1TFk1E" for 164.52.120.12 at 2026-03-26 20:49:06 +0000
Processing by TopicsController#show as */*
  Parameters: {"__cf_chl_rt_tk" => "5M6_rd_fq46BL9PZ6VvZRAVdIsJ84aL9XIfa1Re_paQ-                                                                                        1773238724-1.0.1.1-g20DH5dkOVXOIHhKYVpNwYRCQNnUboE4.po6L1TFk1E", "slug" => "os-m                                                                                        elhores-blogs-de-games-no-brasil", "topic_id" => "15399"}
  Rendered layout layouts/application.html.erb (Duration: 107.3ms | GC: 1.4ms)
Completed 200 OK in 192ms (Views: 109.0ms | ActiveRecord: 0.0ms (0 queries, 0 ca                                                                                        ched) | GC: 2.4ms)
Started POST "/drafts.json" for 2804:1b0:f442:e48c:3056:bd27:b4ae:52b3 at 2026-0                                                                                        3-26 20:49:11 +0000
Processing by DraftsController#create as JSON
  Parameters: {"draft_key" => "topic_17746", "sequence" => "3", "data" => "{\"re                                                                                        ply\":\"@Discipulo na minha opinião eu não vou me estressar com o comportamento                                                                                         \",\"action\":\"reply\",\"categoryId\":14,\"tags\":[],\"archetypeId\":\"regular\                                                                                        ",\"metaData\":null,\"composerTime\":31344,\"typingTime\":4600,\"locale\":\"\"}"                                                                                        , "owner" => "fee91ce037e64ec297a500af13091165", "force_save" => "false"}
Completed 200 OK in 11ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cache                                                                                        d) | GC: 0.0ms)
Started GET "/leaderboard" for 2804:1e68:c201:632a:1161:4504:ea4d:9983 at 2026-0                                                                                        3-26 20:49:15 +0000
Processing by DiscourseGamification::GamificationLeaderboardController#respond a                                                                                        s JSON
Completed 200 OK in 30ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cache                                                                                        d) | GC: 0.0ms)
Started POST "/drafts.json" for 2804:1b0:f442:e48c:3056:bd27:b4ae:52b3 at 2026-0                                                                                        3-26 20:49:16 +0000
Processing by DraftsController#create as JSON
  Parameters: {"draft_key" => "topic_17746", "sequence" => "4", "data" => "{\"re                                                                                        ply\":\"@Discipulo na minha opinião eu não vou me estressar com o comportamento                                                                                         das outras pessoas \",\"action\":\"reply\",\"categoryId\":14,\"tags\":[],\"arche                                                                                        typeId\":\"regular\",\"metaData\":null,\"composerTime\":36481,\"typingTime\":510                                                                                        0,\"locale\":\"\"}", "owner" => "fee91ce037e64ec297a500af13091165", "force_save"                                                                                         => "false"}
Completed 200 OK in 11ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cache                                                                                        d) | GC: 0.0ms)
Started GET "/leaderboard/6?period=daily" for 2804:1e68:c201:632a:1161:4504:ea4d                                                                                        :9983 at 2026-03-26 20:49:19 +0000
Processing by DiscourseGamification::GamificationLeaderboardController#respond a                                                                                        s JSON
  Parameters: {"period" => "daily", "id" => "6"}
Completed 200 OK in 20ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cache                                                                                        d) | GC: 0.0ms)
Processing by UserAvatarsController#show as PNG
  Parameters: {"hostname" => "segredin.com", "username" => "mary", "size" => "28                                                                                        8", "version" => "8962_2"}
Completed 418  in 8ms (Views: 0.2ms | ActiveRecord: 0.0ms (0 queries, 0 cached)                                                                                         | GC: 0.0ms)
Sent file /var/www/discourse/public/uploads/default/optimized/2X/8/86ba5981dfff7                                                                                        6df7de0f2141a1a87ad805e2c5c_2_288x288.jpeg (0.2ms)
Started GET "/latest.json" for 2804:79d4:f008:68f:fd8c:855b:db16:bbee at 2026-03                                                                                        -26 20:49:23 +0000
Processing by ListController#latest as JSON
Completed 200 OK in 143ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cach                                                                                        ed) | GC: 6.8ms)
Started GET "/t/17746/1.json?track_visit=true&forceLoad=true" for 2804:79d4:f008                                                                                        :68f:fd8c:855b:db16:bbee at 2026-03-26 20:49:31 +0000
Processing by TopicsController#show as JSON
  Parameters: {"track_visit" => "true", "forceLoad" => "true", "topic_id" => "17                                                                                        746", "post_number" => "1"}
Completed 200 OK in 114ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cach                                                                                        ed) | GC: 1.8ms)
Started POST "/drafts.json" for 2804:1b0:f442:e48c:3056:bd27:b4ae:52b3 at 2026-0                                                                                        3-26 20:49:32 +0000
Processing by DraftsController#create as JSON
  Parameters: {"draft_key" => "topic_17746", "sequence" => "5", "data" => "{\"re                                                                                        ply\":\"@Discipulo na minha opinião eu não consigo k\",\"action\":\"reply\",\"ca                                                                                        tegoryId\":14,\"tags\":[],\"archetypeId\":\"regular\",\"metaData\":null,\"compos                                                                                        erTime\":46059,\"typingTime\":8500,\"locale\":\"\"}", "owner" => "fee91ce037e64e                                                                                        c297a500af13091165", "force_save" => "false"}
Completed 200 OK in 13ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cache                                                                                        d) | GC: 0.0ms)
Started POST "/drafts.json" for 2804:1b0:f442:e48c:3056:bd27:b4ae:52b3 at 2026-0                                                                                        3-26 20:49:36 +0000
Processing by DraftsController#create as JSON
  Parameters: {"draft_key" => "topic_17746", "sequence" => "6", "data" => "{\"re                                                                                        ply\":\"@Discipulo na minha opinião eu não consigo julgar \",\"action\":\"reply\                                                                                        ",\"categoryId\":14,\"tags\":[],\"archetypeId\":\"regular\",\"metaData\":null,\"                                                                                        composerTime\":50400,\"typingTime\":9100,\"locale\":\"\"}", "owner" => "fee91ce0                                                                                        37e64ec297a500af13091165", "force_save" => "false"}
Completed 200 OK in 10ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cache                                                                                        d) | GC: 0.0ms)
Started POST "/drafts.json" for 2804:1b0:f442:e48c:3056:bd27:b4ae:52b3 at 2026-0                                                                                        3-26 20:49:37 +0000
Processing by DraftsController#create as JSON
  Parameters: {"draft_key" => "topic_17746", "sequence" => "7", "data" => "{\"re                                                                                        ply\":\"@Discipulo na minha opinião eu não consigo julgar \",\"action\":\"reply\                                                                                        ",\"categoryId\":14,\"tags\":[],\"archetypeId\":\"regular\",\"metaData\":null,\"                                                                                        composerTime\":51596,\"typingTime\":9100,\"locale\":\"\"}", "owner" => "fee91ce0                                                                                        37e64ec297a500af13091165", "force_save" => "false"}
Completed 200 OK in 10ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cache                                                                                        d) | GC: 0.0ms)
Processing by TopicsController#timings as */*
  Parameters: {"timings" => {"1" => "59036"}, "topic_time" => "59036", "topic_id                                                                                        " => "17746"}
Completed 418  in 8ms (Views: 0.2ms | ActiveRecord: 0.0ms (0 queries, 0 cached)                                                                                         | GC: 0.0ms)

Hmmmm. Dieser Log zeigt den 500-Fehler nicht. Wann genau tritt der Fehler auf? Sehen Sie einen Fehler auf dem Bildschirm oder nur die generische Meldung „Etwas ist schiefgelaufen"? Stellen Sie sicher, dass Sie alle Felder ausfüllen? Insbesondere die Topic-ID?

Können Sie versuchen, erneut eine Herausforderung zu erstellen und diesen Befehl sofort auszuführen, sobald Sie den 500-Fehler sehen? Wir erhöhen die Größe etwas:

./launcher enter app
tail -100 /var/www/discourse/log/production.log | grep -A 30 "500\|Error\|exception"

(Beitrag vom Autor gelöscht)

Warte, ich werde es wieder aktivieren.

Ahhh. Ich glaube, ich habe das Problem gefunden. Der Badgenamen sollte eigentlich aus dem Beitragstitel übernommen werden, aber ich habe das bei meinem letzten Update wohl versehentlich falsch gemacht. Könntest du versuchen, das Feld für den Badgenamen auszufüllen und zu prüfen, ob es funktioniert? Ich werde auch ein Update veröffentlichen, um das zu beheben, sobald ich zu Hause bin.

2 „Gefällt mir“

Etwas Neues? Ich habe hier aktualisiert, aber noch nichts.

Hallo. Entschuldigung. Ich habe gestern Abend vergessen, diesen Beitrag zu aktualisieren. Ich habe ein Update veröffentlicht, das die Korrektur für die Abzeichen enthält (zusammen mit einigen weiteren Verbesserungen). Wenn Sie zu Admin > Discourse aktualisieren gehen, sollten Sie sehen, dass ein Update verfügbar ist.

Ich werde in Kürze einen vollständigen Beitrag mit den Änderungen veröffentlichen.

2 „Gefällt mir“

Ich bin mir sicher, dass ich das falsch mache.

Erste Frage: Kann die Themen-ID bereits existieren, oder muss eine neue erstellt werden?
Ich habe verstanden, dass das Tag ohne # geschrieben wird.

Können Start und Ende ein paar Tage oder Wochen betragen, oder kann ich beispielsweise bis Dezember festlegen?

Auf jeden Fall warte ich auf Ihre Erklärungen, da mir dieses Plugin gefällt und ich hier bin, um Feedback zu geben.

Es muss eine bestehende Topic-ID sein, auf die Ihr Konto zugreifen kann (ich gehe davon aus, dass Sie ein Administrator sind, sodass dies kein Problem sein sollte). Beispiel: Wenn die URL für das Topic lautet:

https://community.com/t/test-formatting/722

ist die Topic-ID, die Sie eingeben müssen: 722

Wenn Sie die Nummer eingeben, sollte der Name des Topics darunter erscheinen, um zu bestätigen, dass Sie die richtige ID eingegeben haben.

Sie haben recht. Geben Sie das Hashtag ohne das # ein. Wenn Sie #testtag verwenden möchten, geben Sie einfach testtag in das Feld ein.

Start- und Enddaten können beliebig sein.

activerecord (8.0.5) lib/active_record/inheritance.rb:76:in 'ActiveRecord::Inheritance::ClassMethods#new'
plugins/discourse-daily-challenge/app/controllers/discourse_daily_challenge/admin_daily_challenges_controller.rb:26:in 'DiscourseDailyChallenge::AdminDailyChallengesController#create'

Meine erste Konfiguration

Und meine aktuellen Protokolle