Sfide giornaliere di Discourse

:information_source: Sintesi Esegui sfide a tempo limitato con classifiche, post automatizzati e assegnazione di badge.
:hammer_and_wrench: Link al Repository GitHub - R23DPrinting/discourse-daily-challenge · GitHub
:open_book: Guida all’Installazione Come installare i plugin in Discourse

Versione Corrente: 1.3.0 (aggiornata il 27/03/2026)
Licenza: MIT


La Storia

Gestisco una community di salute e benessere che ha recentemente migrato da Discord a Discourse. Su Discord, avevo creato un bot personalizzato per gestire sfide mensili di fitness: i membri pubblicavano i loro allenamenti quotidiani, il bot tracciava i check-in, pubblicava classifiche settimanali e annunciava i vincitori alla fine di ogni mese. Era una delle nostre funzionalità più popolari.

Dopo il passaggio a Discourse, i membri hanno iniziato a chiedere il ritorno delle sfide. Ho cercato un plugin esistente ma non ho trovato nulla. Così ne ho creato uno.

Ciò che è iniziato come una soluzione rapida si è trasformato in un sistema completo di sfide che, onestamente, funziona meglio del bot originale di Discord. Dato che potrebbe essere utile ad altre community, lo condivido qui.


Cosa Fa

discourse-daily-challenge ti permette di gestire sfide strutturate e a tempo limitato direttamente in Discourse. I membri effettuano il check-in pubblicando in un topic designato con un hashtag o una foto. Il plugin traccia tutto automaticamente.

Funzionalità Principali

:white_check_mark: Check-in Flessibili
I membri effettuano il check-in pubblicando nel topic della sfida con l’hashtag configurato o un allegato fotografico. Le sfide possono essere configurate per check-in giornalieri o settimanali. La finestra di check-in viene valutata nel fuso orario configurato per la sfida, garantendo il corretto funzionamento per le community globali.

:bar_chart: Classifica in Tempo Reale e Serie
La dashboard dell’amministratore mostra le classifiche in tempo reale, inclusi i totali dei check-in, le serie attuali e la percentuale di completamento per ogni partecipante. Le etichette delle serie riflettono automaticamente l’intervallo della sfida (“Serie giornaliera” vs “Serie settimanale”).

:robot: Post Automatici della Classifica
Imposta un giorno e un’ora per un post automatico settimanale della classifica direttamente nel topic della sfida. Un post con i risultati finali viene generato automaticamente anche il giorno successivo alla fine della sfida.

:sports_medal: Badge Personalizzati
Definisci un numero minimo di check-in necessari per “completare” la sfida. I partecipanti idonei ricevono automaticamente un badge Discourse personalizzato alla fine della sfida. Il nome del badge viene popolato automaticamente dal titolo del topic.

:card_index_dividers: Molteplici Sfide Simultanee
Esegui quante sfide desideri contemporaneamente. Ogni sfida ha il proprio topic, programma, fuso orario, badge e classifica.

:file_folder: Sfide Archiviare
Le sfide completate sono conservate in una visualizzazione a fisarmonica archiviata nella dashboard, così puoi consultare i risultati storici.

:hammer_and_wrench: Gestione Check-in da parte dell’Amministratore
Gli amministratori possono aggiungere o rimuovere manualmente i check-in, utile per recuperare post persi o risolvere dispute.

:pushpin: Attivazione Manuale della Classifica
Un pulsante “Pubblica Classifica Ora” permette agli amministratori di pubblicare un aggiornamento della classifica su richiesta, al di fuori della finestra programmata.

:police_officer: Accesso dei Moderatori
I moderatori dell’intero sito possono creare, modificare e gestire le sfide tramite una sezione dedicata nella barra laterale. Può essere abilitato o disabilitato tramite le impostazioni del sito.

:card_index_dividers: Accesso dei Moderatori di Categoria
I moderatori di categoria possono gestire le sfide limitate alle loro categorie assegnate tramite una route dedicata /challenges, senza necessità di accesso da amministratore. Può essere abilitato o disabilitato indipendentemente tramite le impostazioni del sito.


Installazione

Aggiungi quanto segue al tuo file containers/app.yml sotto hooks > after_code > exec > cmd:

- git clone https://github.com/R23DPrinting/discourse-daily-challenge.git

Quindi ricostruisci:

cd /var/discourse && ./launcher rebuild app

Dopo l’installazione iniziale, gli aggiornamenti futuri possono essere applicati tramite il pulsante Aggiorna nel pannello, a meno che non sia specificato diversamente nel registro delle modifiche.


Configurazione

Creazione di una Sfida

Naviga in Admin → Plugins → Challenges → Discourse Challenges e clicca su Nuova Sfida.

Campo Descrizione
ID Topic Il topic Discourse dove i membri effettueranno il check-in. Il titolo del topic popolerà automaticamente il campo nome del badge.
Trigger Hashtag Hashtag richiesto per i check-in (senza #, es. workout)
Intervallo Check-in Modalità di check-in giornaliera o settimanale
Inizio Settimana Per le sfide settimanali: quale giorno inizia la settimana (Domenica, Lunedì o Sabato)
Data Inizio Primo giorno della sfida (incluso)
Data Fine Ultimo giorno della sfida (incluso)
Fuso Orario Sfida Fuso orario per valutare la finestra di check-in (opzionale, predefinito UTC)
Check-in Necessari Numero minimo di check-in per ottenere il badge di completamento
Descrizione Descrizione opzionale della sfida
Abilita Post Settimanale Classifica Attiva i post automatici settimanali della classifica
Giorno della Settimana Post Giorno della settimana per il post automatico della classifica
Ora Post Ora (0–23, nel fuso orario della sfida) per il post automatico della classifica
Assegna Badge Completamento Attiva l’assegnazione automatica del badge alla fine della sfida
Nome Badge Nome del badge da creare e assegnare — popolato automaticamente dal titolo del topic

Impostazioni del Sito

Impostazione Predefinito Descrizione
daily_challenge_enabled true Abilita o disabilita globalmente il plugin
daily_challenge_mod_access_enabled true Permetti ai moderatori dell’intero sito di gestire le sfide
daily_challenge_category_mod_access_enabled true Permetti ai moderatori di categoria di gestire le sfide nelle loro categorie assegnate

Come Funzionano i Check-in

  1. Un membro pubblica una risposta nel topic della sfida.
  2. Il post deve contenere l’hashtag configurato o un allegato fotografico.
  3. Il plugin verifica se il membro ha già effettuato il check-in durante il periodo corrente (giorno o settimana, a seconda dell’intervallo della sfida).
  4. Se non l’ha fatto, il check-in viene registrato e la classifica viene aggiornata.
  5. È consentito un solo check-in per membro per periodo.

Gli amministratori possono visualizzare e gestire tutti i check-in dalla dashboard di amministrazione.


Accesso Moderatori e Moderatori di Categoria

I moderatori dell’intero sito possono accedere alla gestione delle sfide tramite una sezione SFIDE nella barra laterale principale (se daily_challenge_mod_access_enabled è attivo).

I moderatori di categoria possono accedere a una versione limitata su /challenges/dashboard e /challenges/challenges — possono vedere e gestire solo le sfide collegate a topic nelle loro categorie assegnate. Questo richiede che daily_challenge_category_mod_access_enabled sia attivo e che l’utente sia assegnato come moderatore di categoria tramite Admin → Categorie → [Categoria] → Moderazione.


Post Automatizzati

Classifica Settimanale

Il plugin esegue un’operazione in background ogni ora che verifica se è il momento di pubblicare la classifica settimanale. Quando arriva il giorno e l’ora configurati (nel fuso orario della sfida), crea un post formattato nel topic della sfida che mostra le classifiche attuali.

Post dei Risultati Finali

Il giorno successivo alla fine della sfida, viene pubblicato automaticamente un post con i risultati finali. Elenca tutti i partecipanti, il loro totale di check-in, lo stato di completamento e congratula chi ha ottenuto il badge.


Tabelle del Database

  • daily_challenges — Definizioni delle sfide
  • daily_check_ins — Record individuali di check-in per utente, per sfida, per periodo

Compatibilità

  • Discourse 3.x+
  • Testato su installazioni self-hosted
  • Ruby 3.x, Rails 7.x+

Roadmap (v1.4.0)

  • Comandi di menzione @ChallengeBot — i membri possono menzionare l’account del bot @ChallengeBot nei topic delle sfide per ottenere statistiche personali via DM (status, leaderboard, streak, help)
  • DM di conferma check-in — DM automatico dopo ogni check-in riuscito con le informazioni sulla serie corrente
  • DM di promemoria — impostazione opzionale per sfida; le sfide giornaliere inviano un promemoria dopo 2+ giorni persi, le sfide settimanali inviano un promemoria l’ultimo giorno della settimana se non è ancora stato effettuato il check-in

Registro delle Modifiche

v1.3.0

  • Accesso moderatori di categoria — i moderatori di categoria possono creare, modificare, eliminare e gestire i check-in per le sfide nelle loro categorie assegnate tramite /challenges/dashboard e /challenges/challenges — non è richiesto l’accesso da amministratore
  • Popolamento automatico nome badge — il campo nome del badge viene popolato automaticamente dal titolo del topic quando viene inserito un ID topic
  • Convalida nome badge — il nome del badge è obbligatorio quando “Assegna badge completamento” è attivo; restituisce un errore appropriato invece di un 500
  • Interruttori separati mod/mod categoriadaily_challenge_mod_access_enabled e daily_challenge_category_mod_access_enabled possono essere attivati o disattivati indipendentemente

v1.2.0

  • Intervallo di check-in configurabile — esegui sfide giornaliere o settimanali
  • Impostazione inizio settimana — per le sfide settimanali, scegli se la settimana inizia di Domenica, Lunedì o Sabato
  • Serie consapevoli dell’intervallo — le etichette e i calcoli delle serie riflettono ora l’intervallo della sfida
  • Accesso moderatori — i moderatori dell’intero sito possono gestire le sfide tramite una sezione dedicata nella barra laterale
  • Rinominato in “Discourse Challenges” nell’interfaccia di amministrazione

v1.1.1

  • Dashboard multischiera che mostra tutte le sfide attive simultaneamente
  • Fisarmonica delle sfide archiviate che mostra i risultati storici

v1.1.0

  • Supporto del fuso orario per ogni sfida
  • Programmazione post settimanale ora per ogni sfida (giorno, ora, interruttore abilita/disabilita)

v1.0.0

  • Rilascio iniziale

Feedback e Contributi

Questo plugin è stato creato per risolvere un’esigenza reale nella nostra community e lo condivido nel caso possa aiutare la vostra. Su GitHub sono benvenuti problemi, PR e richieste di funzionalità.

Se gestisci una community dove la responsabilità e la costanza sono importanti — fitness, apprendimento linguistico, scrittura, abitudini creative — le sfide giornaliere possono essere uno strumento di coinvolgimento genuinamente potente. Spero che questo plugin renda più facile portare questa esperienza nella tua community Discourse.

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

15 Mi Piace

Questo è fantastico, grazie per aver condiviso. Per quanto riguarda le funzionalità, potrei vedere che sarebbe utile per noi se fosse possibile specificare l’intervallo di sfida come qualcosa di diverso dal giornaliero, ovvero scegliere un check-in settimanale anziché giornaliero durante l’arco della sfida. Sarebbe anche fantastico se i moderatori/moderatori di categoria potessero creare sfide in modo che non sia solo l’amministratore a configurare le cose.

1 Mi Piace

Lasciatemi assicurarmi di aver capito le richieste:

[quote=“asc, post:2, topic:398980”]cioè, scegliere un check-in settimanale invece che giornaliero durante l’arco della sfida.

[/quote]

Quindi, vorresti impostare la sfida per, diciamo, 1 mese (1-30 aprile), ma specificare che conta solo 1 partecipazione a settimana invece di 1 partecipazione al giorno? Vorresti che la settimana fosse da domenica a sabato o ogni 7 giorni?

[quote=“asc, post:2, topic:398980”]Sarebbe anche fantastico se i moderatori/moderatori di categoria potessero creare sfide in modo che non sia solo l’amministratore a doverle impostare.

[/quote]

Questa è una buona idea. Onestamente non ho Moderatori nella mia community, quindi non so come sia il pannello di amministrazione per loro. Lasciami creare un account Mod nel mio ambiente di sviluppo e giocarci un po’.

1 Mi Piace

Sì, esattamente. La nostra community ha una sfida 52 in 52 in cui c’è una sfida settimanale per un anno, quindi i check-in non giornalieri darebbero maggiore flessibilità per diversi tipi di sfide.

Discourse Calendar (and Event) consente all’amministratore di impostare l’inizio della settimana di sabato, domenica o lunedì, quindi se si desidera pianificare la compatibilità con quel plugin in futuro (come la generazione di eventi del calendario per i check-in o la data di inizio/fine?) potrei seguire come imposta la settimana il Calendario? Per la mia community in particolare non credo che abbia importanza.

I moderatori di categoria in aggiunta ai moderatori regolari sarebbero davvero ottimi: abbiamo piccoli gruppi di interesse che hanno le proprie sottocategorie, e sarebbe bello consentire a quei moderatori di categoria di gestire sfide separate senza renderli moderatori completi.

1 Mi Piace

Queste sono ottime idee. Grazie per averle condivise! Vedrò cosa posso fare per implementarle.

1 Mi Piace

Questo plugin richiede che il plugin gamification sia abilitato, o hai selezionato l’etichetta perché il tuo plugin è per la gamification in generale?

2 Mi Piace

Non richiede il plugin. Ho appena selezionato il tag. Mi scuso per questo.

2 Mi Piace

v1.2.0 è ora disponibile!

Novità di questa versione:

  • Intervallo di check-in configurabile — esegui sfide giornaliere o settimanali
  • Impostazione inizio settimana — per le sfide settimanali, scegli se la settimana inizia di domenica, lunedì o sabato
  • Serie sensibili all’intervallo — le etichette e i calcoli delle serie riflettono ora l’intervallo della sfida (“serie settimanale” vs “serie giornaliera”)
  • Accesso moderatore — i moderatori completi del sito possono ora creare, modificare e gestire le sfide tramite una sezione dedicata nella barra laterale. Questa funzionalità può essere abilitata o disabilitata in Admin → Impostazioni → Plugin (daily_challenge_mod_access_enabled), consentendo alle comunità che preferiscono mantenere la gestione delle sfide riservata agli amministratori di farlo.
  • Rinominato in “Discourse Challenges” nell’interfaccia di amministrazione
Screenshot

Modulo sfida — Intervallo di check-in

Dashboard — Inizio settimana il

Accesso moderatore alla barra laterale

Nota: Questa versione richiede ./launcher rebuild app per applicare le migrazioni del database — il pulsante Aggiorna nel pannello non funzionerà per questa versione.


Per quanto riguarda l’accesso dei moderatori di categoria — sto lavorando attivamente a questa funzionalità. La sfida è che Discourse non concede agli amministratori di categoria lo status di personale, il che significa che non possono accedere alle route /admin indipendentemente da ciò che fa il plugin. Sto esplorando una route separata non amministrativa specificamente per i moderatori di categoria che fornirebbe loro un accesso limitato alle sfide nelle loro categorie. Aspettati questa funzionalità nella v1.3.0.

1 Mi Piace

Non riesco a creare una sfida; restituisce un errore 500 per qualsiasi azione.

È strano. Lo sto eseguendo su 2 forum diversi senza problemi e ho effettuato molti test. Quale versione di Discourse stai utilizzando? Stai utilizzando l’ultima versione del plugin (1.2.0)?

Puoi accedere via SSH al tuo server, eseguire alcuni comandi e pubblicare i risultati?

Per prima cosa, controlla il numero di versione del plugin:

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

Successivamente, prova a creare una sfida. Quando ricevi l’errore 500, esegui immediatamente questo comando nella sessione SSH:

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

Fammi sapere i risultati e cercheremo di capire il problema.

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. Quella registrazione non mostra l’errore 500. Quando si verifica esattamente l’errore? Vedi qualche messaggio di errore sullo schermo o solo il messaggio generico “Qualcosa è andato storto”? Ti stai assicurando di compilare tutti i campi? Soprattutto l’ID dell’argomento?

Puoi provare a creare una nuova sfida ed eseguire questo comando non appena vedi l’errore 500? Aumenteremo leggermente la dimensione:

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

(post eliminato dall’autore)

Aspetta, lo riattiverò di nuovo.

Ahhh. Credo di aver individuato il problema. Il nome del badge dovrebbe essere estratto dal titolo dell’argomento, ma credo di aver commesso un errore nell’ultimo aggiornamento. Puoi provare a compilare il campo nome del badge e verificare se viene accettato? Appena arrivo a casa, invierò anch’io un aggiornamento per risolvere il problema.

2 Mi Piace

Qualcosa di nuovo? Ho aggiornato qui ma non ancora nulla

Ehi. Scusa. Ho dimenticato di aggiornare questo post ieri sera. Ho effettivamente pubblicato un aggiornamento che include la correzione per i badge (insieme ad alcuni altri miglioramenti). Se vai su Admin > Aggiorna Discourse, dovresti vedere che è disponibile un aggiornamento.

Pubblicherò presto un post completo con le modifiche.

2 Mi Piace

Sono sicuro di star procedendo in modo errato.

Primo dubbio: l’ID dell’argomento può esistere già o è necessario crearne uno nuovo?
Ho capito che il tag è senza #.

Start e end potrebbero essere un paio di giorni o settimane, oppure posso impostare fino a dicembre, per esempio?

Comunque, aspetterò le tue spiegazioni perché mi piace questo plugin e sono qui per fornire feedback.

Deve essere un ID argomento esistente a cui il tuo account può accedere (presumo tu sia un amministratore, quindi non dovrebbe essere un problema). Esempio: se l’URL dell’argomento è:

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

L’ID argomento da inserire è: 722

Quando digiti il numero, il nome dell’argomento dovrebbe apparire sotto per confermare di aver inserito l’ID corretto.

Hai ragione. Inserisci il hashtag senza il #. Se vuoi usare #testtag, digita semplicemente testtag nella casella.

Le date di inizio e fine possono essere quelle che preferisci.

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'

la mia prima configurazione

E i miei log recenti