| Résumé | Exécutez des défis d’enregistrement quotidiens à durée limitée avec des classements, des publications automatisées et des récompenses de badge. | |
| Lien vers le dépôt | GitHub - R23DPrinting/discourse-daily-challenge · GitHub | |
| Guide d’installation | Comment installer des plugins dans Discourse |
L’histoire
Je gère une communauté de santé et de bien-être qui est récemment passée de Discord à Discourse. Sur Discord, j’avais créé un bot personnalisé pour organiser des défis de remise en forme mensuels — les membres publiaient leurs entraînements quotidiens, le bot suivait les enregistrements, publiait des classements hebdomadaires et annonçait les gagnants à la fin de chaque mois. C’était l’une de nos fonctionnalités les plus populaires.
Après le passage à Discourse, les membres ont commencé à réclamer les défis. J’ai cherché un plugin existant et je n’ai rien trouvé. Alors, j’en ai créé un.
Ce qui a commencé comme une solution rapide s’est transformé en un système de défi complet qui fonctionne honnêtement mieux que le bot Discord d’origine. Puisque cela pourrait être utile à d’autres communautés, je le partage ici.
Fonctionnalités
- Enregistrements par hashtag ou par photo — les membres s’enregistrent en publiant le hashtag du défi (par exemple,
#AvrilFitness) ou en téléchargeant une image dans le sujet du défi. Les deux déclenchent un enregistrement valide. - Un enregistrement par jour — appliqué au niveau de l’application et de la base de données. La fenêtre quotidienne de chaque utilisateur est basée sur son fuseau horaire de profil.
- Fuseau horaire par défi — définissez le fuseau horaire du défi indépendamment du fuseau horaire de votre serveur afin qu’aucun membre ne soit coupé à minuit UTC.
- Tableau de bord d’administration en temps réel — affiche tous les défis actifs simultanément avec le nombre de participants, le nombre moyen d’enregistrements, le suivi des séries, le pourcentage d’achèvement et un classement classé.
- Défis simultanés multiples — exécutez plusieurs défis à la fois, chacun avec son propre sujet, hashtag, calendrier et badge.
- Défis archivés — les défis terminés sont conservés dans une archive réductible montrant les statistiques finales, les gagnants et les taux d’achèvement.
- Publications automatisées de classement hebdomadaire — publiées dans le sujet du défi à un jour et une heure configurables dans le fuseau horaire propre au défi.
- Publication des résultats finaux — publiée automatiquement le lendemain de la fin du défi, listant tous ceux qui ont atteint l’objectif d’enregistrement.
- Attribution de badges personnalisés — crée automatiquement un badge Discourse pour chaque défi et l’attribue aux participants éligibles lorsque le défi se termine.
- Gestion des enregistrements par l’administrateur — ajoutez ou supprimez des enregistrements pour n’importe quel utilisateur directement depuis le panneau d’administration.
- Déclenchement manuel du classement — publiez le classement à tout moment depuis la page de détails du défi.
- Date de fin inclusive — si vous définissez la date de fin au 31 mars, les enregistrements du 31 mars sont comptabilisés.
Configuration
Créer un défi
Allez dans Admin → Plugins → Daily Challenge → Challenges → New Challenge (Administrateur → Plugins → Défi Quotidien → Défis → Nouveau Défi)
Entrez un ID de sujet pour lier le défi à un sujet existant. Le plugin affichera le titre du sujet en confirmation. Remplissez le déclencheur de hashtag, les dates de début et de fin, et le nombre d’enregistrements nécessaires pour terminer le défi.
Réglez le Challenge timezone (Fuseau horaire du défi) sur le fuseau horaire principal de votre communauté pour garantir que les limites de date sont évaluées correctement pour vos membres.
Si vous souhaitez des publications de classement hebdomadaire automatisées, activez le bouton à bascule et définissez le jour et l’heure. Si vous souhaitez un badge d’achèvement, activez le bouton à bascule et entrez un nom de badge (par exemple, « Champion de Fitness d’Avril »).
Cliquez sur Save challenge (Sauvegarder le défi) — si l’attribution de badge est activée, le badge est créé automatiquement.
Exécuter un défi
Une fois créé, le défi est immédiatement actif. Les membres publient dans le sujet lié avec le hashtag ou une image pour s’enregistrer. Le tableau de bord de l’administrateur (Admin → Plugins → Daily Challenge → Dashboard) affiche les statistiques en temps réel pour tous les défis actifs.
Conseils
- Demandez aux membres de définir leur fuseau horaire dans Profile → Preferences → Interface → Timezone (Profil → Préférences → Interface → Fuseau horaire) pour des fenêtres d’enregistrement quotidiennes précises.
- Utilisez le bouton Post Leaderboard Now (Publier le classement maintenant) sur la page de détails du défi pour déclencher une publication du classement à tout moment.
- Utilisez la section Check-ins (Enregistrements) sur la page de détails du défi pour ajouter ou supprimer manuellement des enregistrements pour n’importe quel utilisateur.
Paramètres
| Nom | Description |
|---|---|
| daily_challenge_enabled | Interrupteur général d’activation/désactivation du plugin |
| Topic ID | Le sujet où les participants publient leurs enregistrements |
| Hashtag trigger | Le hashtag à surveiller, sans le # |
| Start date | Premier jour où les enregistrements sont acceptés |
| End date | Dernier jour où les enregistrements sont acceptés (inclusif) |
| Check-ins needed | Nombre d’enregistrements requis pour terminer le défi et être admissible au badge |
| Description | Note interne facultative sur le défi (non affichée aux participants) |
| Challenge timezone | Fuseau horaire utilisé pour les limites de date et la planification des publications hebdomadaires |
| Enable weekly leaderboard post | Activer/désactiver les publications hebdomadaires automatisées |
| Post day of week | Jour où la publication hebdomadaire est publiée |
| Post hour (0-23) | Heure de publication de la publication hebdomadaire dans le fuseau horaire du défi |
| Award completion badge | Activer/désactiver la création et l’attribution automatiques de badges |
| Badge name | Nom du badge créé pour ce défi |
Quoi de neuf
Planification pour la v2 :
- Confirmation par message privé après chaque enregistrement avec les statistiques actuelles
- Rappels quotidiens par message privé pour les participants qui ne se sont pas encore enregistrés
- Commandes @mention pour consulter les statistiques personnelles
Support et demandes de fonctionnalités
Si vous rencontrez des problèmes ou avez des idées pour de nouvelles fonctionnalités, veuillez ouvrir un problème sur GitHub ou répondre à ce sujet.