Discourse 每日チャレンジ

:information_source: 概要 リーダーボード、自動投稿、バッジ授与を備えた期間限定チャレンジを実行します。
:hammer_and_wrench: リポジトリリンク GitHub - R23DPrinting/discourse-daily-challenge · GitHub
:open_book: インストールガイド Discourse でのプラグインのインストール方法

現在のバージョン: 1.3.0 (更新日: 2026/3/27)
ライセンス: MIT


ストーリー

私は Discord から Discourse に最近移行した健康・ウェルネスコミュニティを運営しています。Discord 時代には、カスタムボットを構築して月次フィットネスクチャレンジを実行していました。メンバーは日々のトレーニングを投稿し、ボットがチェックインを追跡し、週次のリーダーボードを投稿し、月末に勝者を発表していました。これは私たちの最も人気のある機能の一つでした。

Discourse への移行後、メンバーから再びチャレンジ機能を提供してほしいという要望が寄せられました。既存のプラグインを探しましたが、見つかりませんでした。そこで、自分で構築することにしました。

当初は簡易的な解決策として始めたものが、実際には元の Discord ボットよりも優れた機能豊富なチャレンジシステムへと発展しました。他のコミュニティにも役立つかもしれないと考え、ここで共有します。


機能

discourse-daily-challenge を使用すると、Discourse 内で構造化された期間限定チャレンジを実行できます。メンバーは、特定のトピックにハッシュタグまたは写真を投稿することでチェックインします。プラグインがすべてを自動的に追跡します。

コア機能

:white_check_mark: 柔軟なチェックイン
メンバーは、設定されたハッシュタグまたは写真添付付きで、チャレンジトピックに投稿することでチェックインできます。チェックインモードは「毎日」または「毎週」に設定可能です。チェックインの時間枠は、チャレンジで設定されたタイムゾーンで評価されるため、グローバルなコミュニティでも正しく機能します。

:bar_chart: リアルタイムリーダーボードと連続記録
管理ダッシュボードには、参加者ごとの総チェックイン数、現在の連続記録、達成率がリアルタイムで表示されます。連続記録のラベルは、チャレンジ間隔に応じて自動的に「日連続記録」または「週連続記録」と表示されます。

:robot: 自動リーダーボード投稿
週次の自動リーダーボード投稿を、指定した曜日と時刻にチャレンジトピックに設定できます。また、チャレンジ終了の翌日には、最終結果の投稿も自動的に生成されます。

:sports_medal: カスタムバッジ
「完了」と見なされるために必要な最小チェックイン数を定義できます。該当する参加者は、チャレンジ終了時に自動的にカスタム Discourse バッジを受け取ります。バッジ名はトピックタイトルから自動的に設定されます。

:card_index_dividers: 同時複数のチャレンジ
同時に任意の数のチャレンジを実行できます。各チャレンジには独自のトピック、スケジュール、タイムゾーン、バッジ、リーダーボードが割り当てられます。

:file_folder: アーカイブされたチャレンジ
完了したチャレンジは、ダッシュボード内のアーカイブされたアコーディオンビューに保存されるため、過去の結果を振り返ることができます。

:hammer_and_wrench: 管理者によるチェックイン管理
管理者はチェックインを手動で追加または削除できます。見落としの投稿の捕捉や紛争の解決に役立ちます。

:pushpin: 手動リーダーボードトリガー
「今すぐリーダーボードを投稿」ボタンを使用すると、スケジュールされた時間枠外でも管理者がリーダーボードの更新を即座に公開できます。

:police_officer: モデレーターアクセス
サイト全体のモデレーターは、専用のサイドバーセクションを通じてチャレンジの作成、編集、管理が可能です。サイト設定で有効または無効にできます。

:card_index_dividers: カテゴリモデレーターアクセス
カテゴリモデレーターは、割り当てられたカテゴリにスコープされたチャレンジを /challenges ルートを通じて管理できます。管理者アクセスは不要です。サイト設定で個別に有効または無効にできます。


インストール

containers/app.ymlhooks > after_code > exec > cmd の下に以下を追加してください:

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

その後、再構築を実行します:

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

初期インストール後、変更ログに特に記載がない限り、今後のアップデートはパネル内の「更新」ボタンを通じて適用できます。


設定

チャレンジの作成

管理 → プラグイン → チャレンジ → Discourse Challenges に移動し、新しいチャレンジをクリックします。

フィールド 説明
トピック ID メンバーがチェックインする Discourse トピック。トピックタイトルはバッジ名フィールドに自動的に設定されます。
ハッシュタグトリガー チェックインに必須のハッシュタグ(# を含まず、例:workout
チェックイン間隔 毎日または毎週のチェックインモード
週の開始日 週次チャレンジの場合:週の開始日(日曜日、月曜日、または土曜日)
開始日 チャレンジの初日(含む)
終了日 チャレンジの最終日(含む)
チャレンジタイムゾーン チェックイン時間枠を評価するためのタイムゾーン(オプション、デフォルトは UTC)
必要なチェックイン数 完了バッジを取得するための最小チェックイン数
説明 チャレンジのオプションの説明
週次リーダーボード投稿を有効化 自動週次リーダーボード投稿の有効/無効切り替え
投稿曜日 自動リーダーボード投稿の曜日
投稿時刻 自動リーダーボード投稿の時刻(0–23、チャレンジタイムゾーン基準)
完了バッジを授与 チャレンジ終了時の自動バッジ授与の有効/無効切り替え
バッジ名 作成・授与するバッジの名前。トピックタイトルから自動的に設定されます

サイト設定

設定 デフォルト 説明
daily_challenge_enabled true プラグインをグローバルに有効または無効にする
daily_challenge_mod_access_enabled true サイト全体のモデレーターがチャレンジを管理できるようにする
daily_challenge_category_mod_access_enabled true カテゴリモデレーターが割り当てられたカテゴリ内のチャレンジを管理できるようにする

チェックインの仕組み

  1. メンバーがチャレンジトピックに返信を投稿します。
  2. 投稿には設定されたハッシュタグまたは写真添付が含まれている必要があります。
  3. プラグインは、メンバーが現在の期間(チャレンジ間隔に応じて日または週)にすでにチェックイン済みかどうかを確認します。
  4. 未チェックインの場合、チェックインが記録され、リーダーボードが更新されます。
  5. 1 期間あたりメンバー 1 人に 1 回のチェックインのみ許可されます。

管理者は管理ダッシュボードからすべてのチェックインを表示・管理できます。


モデレーターおよびカテゴリモデレーターアクセス

サイト全体のモデレーターは、daily_challenge_mod_access_enabled がオンになっている場合、メインサイドバーの CHALLENGES セクションを通じてチャレンジ管理にアクセスできます。

カテゴリモデレーターは、/challenges/dashboard および /challenges/challenges でスコープされたバージョンにアクセスできます。これらは割り当てられたカテゴリのトピックに関連付けられたチャレンジのみを表示・管理できます。これには daily_challenge_category_mod_access_enabled がオンであること、およびユーザーが管理 → カテゴリ → [カテゴリ] → モデレーションを通じてカテゴリモデレーターとして割り当てられていることが必要です。


自動投稿

週次リーダーボード

プラグインは毎時バックグラウンドジョブを実行し、週次リーダーボードを投稿するタイミングかどうかを確認します。設定された曜日と時刻(チャレンジタイムゾーン基準)に達すると、現在の順位を表示するフォーマットされた投稿がチャレンジトピックに作成されます。

最終結果投稿

チャレンジ終了の翌日、最終結果投稿が自動的に公開されます。これにはすべての参加者、総チェックイン数、完了ステータスがリストされ、バッジ授与者に祝辞が送られます。


データベーステーブル

  • daily_challenges — チャレンジ定義
  • daily_check_ins — ユーザー・チャレンジ・期間ごとの個別チェックイン記録

互換性

  • Discourse 3.x 以降
  • セルフホスト環境でテスト済み
  • Ruby 3.x, Rails 7.x 以降

ロードマップ (v1.4.0)

  • @ChallengeBot メンションコマンド — メンバーはチャレンジトピックでボットアカウント@ChallengeBotをメンションすることで、DM を通じて個人の統計(statusleaderboardstreakhelp)を取得できます。
  • チェックイン確認 DM — 各成功したチェックイン後に現在の連続記録情報を含む自動 DM
  • リマインダー DM — チャレンジごとのオプション設定。毎日チャレンジでは 2 日以上見逃した場合に促しを送信し、週次チャレンジでは週末日にまだチェックインしていない場合にリマインダーを送信します。

変更履歴

v1.3.0

  • カテゴリモデレーターアクセス — カテゴリモデレーターは、/challenges/dashboard および /challenges/challenges を通じて、割り当てられたカテゴリのチャレンジの作成、編集、削除、チェックイン管理が可能。管理者アクセス不要。
  • バッジ名の自動設定 — トピック ID を入力すると、バッジ名フィールドがトピックタイトルから自動的に設定されます。
  • バッジ名の検証 — 「完了バッジを授与」が有効な場合、バッジ名は必須。500 エラーではなく適切なエラーを返します。
  • 独立したモデレーター/カテゴリモデレーター切り替えdaily_challenge_mod_access_enableddaily_challenge_category_mod_access_enabled を個別に切り替え可能。

v1.2.0

  • 設定可能なチェックイン間隔 — 毎日または毎週のチャレンジを実行可能
  • 週の開始日設定 — 週次チャレンジで、週の開始日を日曜日、月曜日、または土曜日を選択可能
  • 間隔を考慮した連続記録 — 連続記録ラベルと計算がチャレンジ間隔を反映するように変更
  • モデレーターアクセス — サイト全体のモデレーターが専用のサイドバーセクションを通じてチャレンジを管理可能
  • 管理 UI 内で「Discourse Challenges」に改名

v1.1.1

  • 複数のチャレンジを同時に表示するマルチチャレンジダッシュボード
  • 過去の結果を表示するアーカイブされたチャレンジアコーディオン

v1.1.0

  • チャレンジごとのタイムゾーンサポート
  • 週次投稿スケジュールをチャレンジごとに変更可能(曜日、時刻、有効/無効切り替え)

v1.0.0

  • 初期リリース

フィードバックと貢献

このプラグインは、私たちのコミュニティの実際のニーズを解決するために構築され、あなたのコミュニティにも役立つかもしれないと考えて共有しています。GitHub 上で Issues、PR、機能リクエストを歓迎します。

責任感と一貫性が重要なコミュニティ(フィットネス、語学学習、執筆、創造的な習慣など)を運営している場合、デイリーチャレンジは真に強力なエンゲージメントツールとなり得ます。このプラグインがあなたの Discourse コミュニティにそれを導入しやすくすることを願っています。

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

「いいね!」 15

これは素晴らしいですね、共有いただきありがとうございます。機能についてですが、チャレンジの間隔を日次以外のもの(つまり、チャレンジ期間全体で日次ではなく週次のチャレンジチェックインを選択する)に指定できると、私たちにとって役立つと思います。また、モデレーター/カテゴリーモデレーターがチャレンジを作成できるようにすると、管理者に設定のすべてを任せずに済むので素晴らしいでしょう。

「いいね!」 1

リクエストを理解したか確認させてください。

つまり、例えば1ヶ月間(4月1日〜30日)チャレンジを設定するが、毎日1回ではなく週に1回の入力のみをカウントするように指定したいということでしょうか?週は日曜日から土曜日までの区切りが良いですか、それとも7日ごとの区切りが良いでしょうか?

これは良い考えですね。正直なところ、私のコミュニティにはモデレーターがいないため、管理者パネルが彼らにとってどのように見えるかわかりません。開発環境でモデレーターアカウントを作成して、いじってみます。

「いいね!」 1

はい、その通りです。私たちのコミュニティには「52 in 52」というチャレンジがあり、1年間毎週チャレンジが行われるため、毎日のチェックインではない方が、さまざまな種類のチャレンジに対してより柔軟性が高まります。

Discourse Calendar (and Event) では、管理者が週の始まりを土曜日、日曜日、または月曜日に設定できます。そのため、将来的にそのプラグインとの互換性(チェックインや開始/終了日のカレンダーイベントの生成など)を考慮したい場合は、Calendarが週をどのように設定しているかに従うことも考えられます。私のコミュニティ固有のことで言えば、どちらでも問題ありません。

通常のモデレーターに加えて、カテゴリモデレーターがあれば非常に助かります。私たちには独自のサブカテゴリを持つ小さな関心グループがあり、それらのカテゴリモデレーターにフルモデレーターになることなく、個別のチャレンジを実行できるようにしてもらえるとありがたいです。

「いいね!」 1

これらは素晴らしいアイデアです。共有していただきありがとうございます!実装できるように最善を尽くします。

「いいね!」 1

このプラグインは#gamificationプラグインを有効にする必要がありますか、それともあなたのプラグインが一般的なゲーミフィケーションに関するものなので、そのタグを選択しましたか?

「いいね!」 2

そのプラグインは必要ありません。タグを選択しただけです。申し訳ありません。

「いいね!」 2

v1.2.0 が現在利用可能です!

今回のリリースの新機能:

  • 設定可能なチェックイン間隔 — 毎日または毎週のチャレンジを実行
  • 週の開始設定 — 毎週のチャレンジにおいて、週の日曜、月曜、または土曜開始を選択可能
  • 間隔を考慮した連続記録 — 連続記録のラベルと計算が、チャレンジの間隔(「週連続」対「日連続」)を反映するように変更
  • モデレーターアクセス — サイト全体のモデレーターは、専用のサイドバーセクションを通じて、チャレンジの作成、編集、管理が可能になりました。これは「管理 → 設定 → プラグイン」(daily_challenge_mod_access_enabled) で有効または無効にできます。これにより、チャレンジ管理を管理者のみに限定したいコミュニティでも対応可能です。
  • 管理 UI での名称変更 — 「Discourse Challenges」に変更
スクリーンショット

チャレンジフォーム — チェックイン間隔

ダッシュボード — 週の開始日

モデレーターサイドバーアクセス

注意: このリリースでは、データベースマイグレーションを適用するために ./launcher rebuild app の実行が必要です。パネル内の「更新」ボタンではこのリリースの更新は行われません。


カテゴリモデレーターアクセスについて — これは現在積極的に取り組んでいる事項です。課題は、Discourse がカテゴリモデレーターにスタッフ権限を付与していないため、プラグインが何を行っても /admin ルートにアクセスできないことです。カテゴリモデレーターに、自カテゴリ内のチャレンジへの限定されたアクセス権を与える、管理ルートとは別に非管理ルートを導入することを検討しています。これは v1.3.0 での実装を予定しています。

「いいね!」 1

チャレンジを作成できません。あらゆる操作でエラー 500 が返されます。

それは奇妙ですね。私は2つの異なるフォーラムで問題なく実行しており、かなり多くのテストも行っています。使用しているDiscourseのバージョンは何ですか?最新のプラグインバージョン(1.2.0)をお使いですか?

サーバーにSSHで接続し、いくつかのコマンドを実行して結果を投稿できますか?

まず、プラグインのバージョン番号を確認します:

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

次に、チャレンジを作成してみてください。500エラーが発生したら、即座にSSHセッションで次のコマンドを実行してください:

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

結果をお知らせください。それによって原因を特定できるかもしれません。

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. そのログには 500 エラーが表示されていません。エラーは正確にいつ発生しますか?画面にエラーが表示されていますか、それとも一般的な「Something went wrong(何かがうまくいきませんでした)」というメッセージだけが表示されますか?すべてのフィールドを入力していることを確認していますか?特にトピック ID です。

もう一度チャレンジを作成し、500 エラーが表示された直後にこれを試してみてください。少しサイズを増やします:

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

(投稿者が削除しました)

少々お待ちください、再度有効にします。

ああ、問題のようです。バッジ名はトピックのタイトルから取得されるはずですが、前回の更新で誤ってしまいました。バッジ名の欄を埋めて、正常に通過するか試してみてください。帰宅次第、修正版をプッシュします。

「いいね!」 2

新しいものはありますか?ここに更新しましたが、まだ何もありません。

こんにちは。申し訳ありません。昨夜、この投稿の更新を忘れました。バッジの修正(およびいくつかの他の改善)を含む更新をプッシュしました。Admin > Update Discourse に移動すると、更新が利用可能であることが確認できるはずです。

まもなく、変更事項を含む完全な投稿を作成します。

「いいね!」 2

私が間違った方法で行っていることは確かです。

最初の疑問:トピックIDは既存のものでも構いませんか、それとも新規作成する必要がありますか?
私はタグには # が付かないと理解しました。

開始日と終了日は数日や数週間を設定できますか、それとも例えば12月まで設定できますか?

とにかく、私はこのプラグインが好きなので、フィードバックを提供するためにここに来ています。説明を待つことにします。

既存で、かつあなたのアカウントがアクセス可能なトピック ID である必要があります(あなたが管理者であると仮定すると、それは問題にならないはずです)。例:トピックの URL が以下のようである場合:

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

入力するトピック ID は 722 です。

番号を入力すると、正しい ID が入力されたことを確認するために、トピックの名前がその下に表示されます。

その通りです。# を含めずにハッシュタグを入力してください。#testtag を使用したい場合は、ボックスに testtag と入力してください。

開始日と終了日は、任意の日付に設定できます。

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'

私の最初の設定

そして、最近のログ