すべての記事

Discordの実績Bot:メンバーの資格や独自の実績を記録する方法

CordBaseチーム

Discordで資格や独自の実績を記録するには、授与のテーブルをひとつ作ります。メンバー、自分で決めたリストから選ぶ資格、日付、授与した人の列を持ち、書き込めるのはトレーナーだけにします。私たちが開発しているCordBaseはこのテーブルをスラッシュコマンドにするので、誰が何を持っているかを誰でも確認できます。CordBaseは授与を記録しますが、ロールは付与しません。

資格は管理者が自分で決めるので、独自の階級があるクラン、資格レベルのあるフライトシムやミリシムの部隊、合格した単元を記録する勉強会など、独自のバッジを配るコミュニティならどこでも使えます。あらかじめ用意されたものは何もありません。

完成するもの

  • add、query、view、update、deleteの操作を備えた/certificationsコマンド。
  • 授与1件につき1行。資格を3つ持つメンバーには3行あります。
  • 新しい資格を考えたらいつでもWebで編集できる資格のリスト。
  • トレーナーは授与を記録でき、管理者は削除でき、メンバーは見るだけ、という権限。

ステップ1:授与のテーブルを作る

  1. cordbase.ggにDiscordでログインし、サーバーを選んで、案内されたらBotを追加します。
  2. 「Certifications」という名前のテーブルを作り(コマンドは/certificationsになります)、次の列をこの順番で追加します。
  • Member(メンバー、必須):獲得した人。
  • Certification(選択肢、必須):資格を選択肢として入力します。たとえばBasic Rescue、Instrument Rating、Squad Leader、Founding Memberなど。
  • Awarded on(日付、必須):YYYY-MM-DDで入力します。
  • Awarded by(メンバー、必須):トレーナー。
  • Record(テキスト、必須):「Thrain, Basic Rescue」のような短いラベル。
  • Notes(テキスト、任意):試験の点数、何回目の挑戦か、証拠へのリンクなど。
  • Expires on(日付、任意):期限が切れる資格の場合だけ使います。

この順番には理由があります。queryの結果には最初の4列しか表示されないので、役立つ列を先に置きます。Record列があるのは、view、update、deleteの行の候補がテーブルの最初のテキスト列で行を一覧表示するからです。テキスト列がないと、候補にはメンバーのIDがそのまま表示されてしまいます。Discordのオプション名はラベルから作られ、小文字にしてアンダースコアでつないだ形になります(例:awarded_on)。

CordBaseには実績管理テンプレートもありますが、1行につき「解除した」メンバーが1人と、実績ごとのポイントを持つ形です。多くの人が同じものを獲得する場合は、授与のテーブルのほうがシンプルです。

ステップ2:書き込めるのをトレーナーだけにする

新しいテーブルは削除も含めて全員に開放されているので、まずロールを設定します。Webでテーブルの権限を開きます。

  • トレーナーのロール:編集(addとupdateができます)。
  • 主任教官または管理者のロール:管理(deleteもできます)。
  • 全メンバーが持っているロール:閲覧。メンバーが検索できるようにします。

ロールをひとつでも設定すると、リストにあるロールを持たないメンバーはテーブルをまったく使えなくなります。編集権限はトレーナー自身の行だけでなくすべての行に及び、Discordの「管理者」権限を持つ人は常にすべての操作ができます。詳しくはテーブルと権限を見てください。

ステップ3:授与を記録する

/certifications add member:@Thrain certification:Basic Rescue awarded_on:2026-10-10 awarded_by:@Priya record:Thrain, Basic Rescue notes:Passed practical, second attempt expires_on:2027-10-10

資格は自分で決めた選択肢のドロップダウンから選ぶので、表記がぶれません。viewでは誰がいつコマンドを実行したかが表示されるので、入力された「Awarded by」の確認に役立ちます。間違いを直したり、あとから有効期限を設定したりするときは、/certifications updateを実行してリストから行を選びます。新しい資格を加えるには、Webでテーブルを編集して選択肢を追加します。保存するとコマンドに反映されます。

ステップ4:検索する

  • 資格を持っている人:/certifications query certification:Basic Rescue
  • 1人のメンバーの全記録:/certifications query member:@Thrain
  • このメンバーが持っているか:/certifications query member:@Thrain certification:Basic Rescue
  • メモや有効期限も含めた全項目:/certifications viewを実行して行を選びます。

フィルターは組み合わせられます。結果は新しい順で、デフォルトは10件、limitで最大25件まで、ページ送りはありません。返信はコマンドを実行したチャンネルに投稿されるので、記録が非公開なら、トレーナー用のコマンドはトレーナー用のチャンネルで実行してください。全件を見たいときは、サーバーオーナーがWebでテーブルを使えます。

ほかのツールのほうが向いている場合

  • Discordのロールと権限。 CordBaseはDiscordのロールを付けたり外したりしません。資格によってチャンネルを開放したり、メンバーリストに表示したりしたい場合は、Discordで手作業でロールを付けるか、Carl-botのようなロールBotを使い、誰がいつ何を授与したかの記録としてCordBaseを使ってください。
  • 自動の授与。 ここでは活動やレベルに応じた自動の授与はありません。「レベル10になったらロールを付与」には、ロール報酬のあるレベルBotが向いています。
  • 本格的な講座と試験。 メンバーに授業、小テスト、採点つきの評価が必要なら、Moodleのような学習管理ツールを使い、Discordで見えるようにしたい場合に合格をここに記録してください。

知っておきたい上限

  • 有効期限はただの日付です。 CordBaseは誰にもリマインドせず、期限切れの資格に印をつけることもありません。日付は入力したとおりに保存され、チェックされません。日付のフィルターは特定の1日にしか一致しないので、「今月期限が切れるもの全部」のような検索はできません。予約投稿(有料プラン)が投稿するのはテーブルの概要で、行ごとの通知ではありません。
  • 1リストあたり資格は25個まで。 Discordでは選択肢のリストが25個までに制限されています。それを超える場合は、授与のテーブルを2つに分けてください。
  • プランの上限。 Freeはテーブル2個、それぞれ100行までで、授与1件が1行です。Pro($8/月)はテーブル無制限、1テーブルあたり10,000行。Max($15/月)は50,000行です。CSV・JSONエクスポートはすべてのプランで使えます。料金を見てください。
  • 時間やポイントのような数値の列を加えない限り、ランキングはありません。
  • テーブルはWebで設計します。メンバーがDiscordからテーブルを作ることはできません。削除した行は30日後に完全に消去されます。

よくある質問

資格を授与したときに、CordBaseがメンバーにDiscordのロールを付けてくれますか?

付けません。CordBaseは授与を記録するだけで、Discordのロールの仕組みには何もしません。ロールは手作業で付けるか、テーブルとロールBotを組み合わせ、誰が何を授与したかの記録としてCordBaseを使ってください。

資格の有効期限が切れるときにリマインドしてくれますか?

しません。有効期限はふつうの日付の列で、viewやWebのテーブルで確認できます。CordBaseはリマインダーを送らず、日付のフィルターは特定の1日にしか一致しません。自分で決めたタイミングでテーブルを確認してください。

メンバーは自分の資格を確認できますか?

できます。閲覧権限があれば、memberオプションに自分の名前を指定してqueryを実行できます。閲覧権限ではほかのメンバーも検索できるので、記録を非公開にしたい場合はトレーナーにだけ権限を与えてください。