| Riepilogo | Esegui sfide di check-in giornaliere a tempo limitato con classifiche, post automatici e premi badge. | |
| Link al Repository | GitHub - R23DPrinting/discourse-daily-challenge · GitHub | |
| Guida all’Installazione | Come installare i plugin in Discourse |
La Storia
Gestisco una community incentrata sulla salute e il benessere che recentemente è passata da Discord a Discourse. Su Discord, avevo creato un bot personalizzato per gestire sfide di fitness mensili: i membri pubblicavano i loro allenamenti giornalieri, il bot monitorava i check-in, pubblicava classifiche settimanali e annunciava i vincitori alla fine di ogni mese. Era una delle nostre funzionalità più apprezzate.
Dopo il passaggio a Discourse, i membri hanno iniziato a chiedere il ritorno delle sfide. Ho cercato un plugin esistente senza successo. Quindi ne ho costruito uno.
Quello che è iniziato come una soluzione rapida si è trasformato in un sistema di sfide completo che, onestamente, funziona meglio del bot Discord originale. Dato che potrebbe essere utile ad altre community, lo condivido qui.
FunzionalitĂ
- Check-in tramite hashtag o foto — i membri effettuano il check-in pubblicando l’hashtag della sfida (es.
#FitnessAprile) o caricando un’immagine nel topic della sfida. Entrambi attivano un check-in valido. - Un check-in al giorno — applicato a livello di applicazione e database. La finestra giornaliera di ogni utente si basa sul fuso orario del suo profilo.
- Fuso orario per sfida — imposta il fuso orario della sfida indipendentemente dal fuso orario del tuo server, così nessun membro verrà tagliato fuori a mezzanotte UTC.
- Dashboard amministrativa in tempo reale — mostra tutte le sfide attive simultaneamente con conteggio partecipanti, check-in medi, tracciamento delle serie consecutive, percentuale di completamento e una classifica.
- Sfide multiple simultanee — esegui diverse sfide contemporaneamente, ognuna con il proprio topic, hashtag, programma e badge.
- Sfide archiviate — sfide completate conservate in un archivio comprimibile che mostra statistiche finali, vincitori e tassi di completamento.
- Post automatici della classifica settimanale — pubblicati nel topic della sfida in un giorno e ora configurabili nel fuso orario della sfida stessa.
- Post dei risultati finali — pubblicato automaticamente il giorno dopo la fine della sfida, elencando tutti coloro che hanno raggiunto l’obiettivo di check-in.
- Premi badge personalizzati — crea automaticamente un badge Discourse per ogni sfida e lo assegna ai partecipanti idonei alla fine della sfida.
- Gestione check-in da parte dell’amministratore — aggiungi o rimuovi check-in per qualsiasi utente direttamente dal pannello di amministrazione.
- Attivazione manuale della classifica — pubblica la classifica in qualsiasi momento dalla pagina dei dettagli della sfida.
- Data di fine inclusiva — se imposti la data di fine al 31 marzo, i check-in del 31 marzo vengono conteggiati.
Configurazione
Creazione di una Sfida
Vai su Admin → Plugin → Daily Challenge → Challenges → New Challenge (Amministrazione → Plugin → Sfida Giornaliera → Sfide → Nuova Sfida)
Inserisci un ID Topic per collegare la sfida a un topic esistente. Il plugin mostrerà il titolo del topic come conferma. Inserisci l’hashtag di attivazione, le date di inizio e fine e il numero di check-in necessari per completare la sfida.
Imposta il Challenge timezone (Fuso orario della sfida) sul fuso orario principale della tua community per garantire che i confini delle date vengano valutati correttamente per i tuoi membri.
Se desideri post automatici settimanali della classifica, attiva l’interruttore e imposta il giorno e l’ora. Se desideri un badge di completamento, attiva l’interruttore e inserisci un nome per il badge (es. “Campione di Fitness di Aprile”).
Clicca su Save challenge (Salva sfida) — se l’assegnazione dei badge è abilitata, il badge viene creato automaticamente.
Esecuzione di una Sfida
Una volta creata, la sfida è immediatamente attiva. I membri pubblicano nel topic collegato con l’hashtag o un’immagine per effettuare il check-in. La dashboard amministrativa (Admin → Plugins → Daily Challenge → Dashboard) mostra le statistiche in tempo reale per tutte le sfide attive.
Suggerimenti
- Chiedi ai membri di impostare il loro fuso orario in Profile → Preferences → Interface → Timezone (Profilo → Preferenze → Interfaccia → Fuso orario) per finestre di check-in giornaliere accurate.
- Utilizza il pulsante Post Leaderboard Now (Pubblica Classifica Ora) sulla pagina dei dettagli della sfida per attivare la pubblicazione della classifica in qualsiasi momento.
- Usa la sezione Check-ins (Check-in) sulla pagina dei dettagli della sfida per aggiungere o rimuovere manualmente i check-in per qualsiasi utente.
Impostazioni
| Nome | Descrizione |
|---|---|
| daily_challenge_enabled | Interruttore generale di attivazione/disattivazione per il plugin |
| Topic ID | Il topic dove i partecipanti pubblicano i check-in |
| Hashtag trigger | L’hashtag da monitorare, senza il # |
| Start date | Primo giorno in cui i check-in sono accettati |
| End date | Ultimo giorno in cui i check-in sono accettati (inclusivo) |
| Check-ins needed | Numero di check-in richiesti per completare la sfida e qualificarsi per il badge |
| Description | Nota interna opzionale sulla sfida (non mostrata ai partecipanti) |
| Challenge timezone | Fuso orario utilizzato per i confini delle date e il programma dei post settimanali |
| Enable weekly leaderboard post | Attiva/disattiva i post settimanali automatici |
| Post day of week | Giorno in cui viene pubblicato il post settimanale |
| Post hour (0-23) | Ora in cui viene pubblicato il post settimanale nel fuso orario della sfida |
| Award completion badge | Attiva/disattiva la creazione automatica e l’assegnazione del badge |
| Badge name | Nome del badge creato per questa sfida |
Cosa Succede Dopo
Pianificazione per la v2:
- Conferma via DM dopo ogni check-in con le statistiche attuali
- Promemoria giornalieri via DM per i partecipanti che non hanno ancora effettuato il check-in
- Comandi @mention per verificare le statistiche personali
Supporto e Richieste di FunzionalitĂ
Se riscontri problemi o hai idee per nuove funzionalitĂ , apri un issue su GitHub o rispondi a questo topic.