| 概要 | 期限付きのデイリーチェックインチャレンジを、リーダーボード、自動投稿、バッジの付与とともに実行します。 | |
| リポジトリリンク | GitHub - R23DPrinting/discourse-daily-challenge · GitHub | |
| インストールガイド | Discourseでプラグインをインストールする方法 |
背景
私は健康とウェルネスのコミュニティを運営しており、最近DiscordからDiscourseに移行しました。Discordでは、月例フィットネスチャレンジを実行するためのカスタムボットを構築していました。メンバーは毎日のワークアウトを投稿し、ボットはチェックインを追跡し、毎週のリーダーボードを投稿し、各月の終わりに勝者を発表していました。これは私たちの最も人気のある機能の1つでした。
Discourseへの移行後、メンバーからチャレンジを復活させるよう求められました。既存のプラグインを探しましたが、見つかりませんでした。そこで、自分で作成しました。
簡単な解決策として始まったものが、元のDiscordボットよりも実際によく機能する、本格的なチャレンジシステムへと発展しました。他のコミュニティにとっても役立つかもしれないので、ここに共有します。
機能
- ハッシュタグまたは写真によるチェックイン — メンバーは、チャレンジのハッシュタグ(例:
#AprilFitness)を投稿するか、チャレンジのトピックに画像をアップロードすることでチェックインします。どちらも有効なチェックインとして機能します。 - 1日1回のチェックイン — アプリケーションおよびデータベースレベルで強制されます。各ユーザーの1日の期間は、そのユーザーのプロファイルタイムゾーンに基づいています。
- チャレンジごとのタイムゾーン — サーバーのタイムゾーンとは独立してチャレンジのタイムゾーンを設定できるため、メンバーがUTCの真夜中で締め出されることはありません。
- リアルタイムの管理者ダッシュボード — 参加者数、平均チェックイン数、連続記録追跡、達成率、ランク付けされたリーダーボードとともに、すべてのアクティブなチャレンジを同時に表示します。
- 複数の同時チャレンジ — それぞれ独自のトピック、ハッシュタグ、スケジュール、バッジを持つ複数のチャレンジを同時に実行できます。
- アーカイブされたチャレンジ — 完了したチャレンジは折りたたみ可能なアーカイブに保存され、最終統計、勝者、達成率が表示されます。
- 自動化された週次リーダーボード投稿 — チャレンジのタイムゾーン内の設定された曜日と時刻に、チャレンジのトピックに投稿されます。
- 最終結果投稿 — チャレンジ終了の翌日に自動的に投稿され、チェックイン目標を達成したすべての人がリストされます。
- カスタムバッジの付与 — 各チャレンジに対してDiscourseバッジが自動的に作成され、チャレンジ終了時に資格のある参加者に付与されます。
- 管理者によるチェックイン管理 — 管理パネルから直接、任意のユーザーのチェックインを追加または削除できます。
- 手動リーダーボードトリガー — チャレンジ詳細ページからいつでもリーダーボードを投稿できます。
- 包括的な終了日 — 終了日を3月31日に設定した場合、3月31日のチェックインもカウントされます。
設定
チャレンジの作成
管理 → プラグイン → Daily Challenge → Challenges (チャレンジ) → New Challenge (新規チャレンジ) に移動します。
チャレンジを既存のトピックにリンクするためにトピックIDを入力します。プラグインはトピックタイトルを確認のために表示します。ハッシュタグトリガー、開始日と終了日、およびチャレンジを完了するために必要なチェックイン回数を入力します。
Challenge timezone (チャレンジのタイムゾーン) をコミュニティの主要なタイムゾーンに設定し、日付の境界線がメンバーに対して正しく評価されるようにします。
自動化された週次リーダーボード投稿を希望する場合は、トグルを有効にして曜日と時刻を設定します。達成バッジを希望する場合は、トグルを有効にしてバッジ名(例:「April Fitness Champion」)を入力します。
Save challenge (チャレンジを保存) をクリックします。バッジの付与が有効になっている場合、バッジは自動的に作成されます。
チャレンジの実行
作成されると、チャレンジはすぐにアクティブになります。メンバーは、リンクされたトピックでハッシュタグまたは画像を投稿してチェックインします。管理者ダッシュボード (管理 → プラグイン → Daily Challenge → Dashboard (ダッシュボード)) は、すべてのアクティブなチャレンジのリアルタイム統計を表示します。
ヒント
- 毎日のチェックイン期間を正確にするために、メンバーにタイムゾーンを プロファイル → 設定 → インターフェース → タイムゾーン で設定するように依頼してください。
- チャレンジ詳細ページにある Post Leaderboard Now (今すぐリーダーボードを投稿) ボタンを使用して、いつでもリーダーボード投稿をトリガーします。
- チャレンジ詳細ページにある Check-ins (チェックイン) セクションを使用して、手動で任意のユーザーのチェックインを追加または削除します。
設定
| 名前 | 説明 |
|---|---|
| daily_challenge_enabled | プラグインのマスターオン/オフスイッチ |
| Topic ID | 参加者がチェックインを投稿するトピック |
| Hashtag trigger | 監視するハッシュタグ(#は不要) |
| Start date | チェックインが受け付けられる最初の日 |
| End date | チェックインが受け付けられる最後の日(含む) |
| Check-ins needed | チャレンジを完了し、バッジの資格を得るために必要なチェックイン回数 |
| Description | チャレンジに関するオプションの内部メモ(参加者には表示されません) |
| Challenge timezone | 日付の境界線と週次投稿スケジュールに使用されるタイムゾーン |
| Enable weekly leaderboard post | 自動週次投稿のオン/オフを切り替えます |
| Post day of week | 週次投稿が公開される曜日 |
| Post hour (0-23) | チャレンジのタイムゾーンにおける週次投稿の公開時刻 |
| Award completion badge | 自動バッジ作成と付与のオン/オフを切り替えます |
| Badge name | このチャレンジのために作成されるバッジの名前 |
今後の予定
v2の計画:
- 各チェックイン後の現在の統計情報を含むDM確認
- まだチェックインしていない参加者への毎日のリマインダーDM
- 個人の統計情報を確認するための@メンションコマンド
サポートと機能リクエスト
問題が発生した場合や新しい機能のアイデアがある場合は、GitHub でイシューを作成するか、このトピックに返信してください。