すべての記事

Discordで依頼掲示板を運営する方法:Open、Claimed、Completedのステータスで管理

CordBaseチーム

いちばんシンプルなDiscordの依頼掲示板Botは、タイトル、報酬、Open・Claimed・Completedのステータス、そして誰が引き受けたかを示すメンバーの列を持つテーブルです。私たちが開発しているCordBaseには、これが依頼掲示板テンプレートとして用意されています。メンバーはピン留めしたメッセージを編集する代わりに、スラッシュコマンドで依頼を投稿し、引き受け、検索します。

今日すぐ貼れる掲示板が欲しいだけなら、無料の依頼掲示板テンプレート作成ツールで、Open、Claimed、Completedごとにまとめた掲示板を作れます。このガイドの残りでは、スラッシュコマンドで検索や更新ができるテーブルで依頼を管理します。

同じ形は、コミッション、求人掲示板、リクエストの受付にも使えます。ただし限界もあります。引き受けボタン、通知、支払いはありません。これらについては、代わりに使うものと合わせて後半で説明します。

完成するもの

  • add、query、view、update、leaderboardの操作を備えた/bounty-boardコマンド。
  • 依頼1件につき1行:タイトル、説明、報酬(数値)、ステータス、担当者(メンバーの列)。ユーザー名、目的、報酬、ステータスというよくある要望はこれで満たせます。
  • 依頼を閲覧、投稿、変更できる人を決めるロールの権限。
  • 誰でもコマンドひとつで実行できる、Openの依頼の検索。

ステップ1:テンプレートをインストールする

  1. cordbase.ggにDiscordでログインし、サーバーを選んで、ダッシュボードに案内されたらBotを追加します。
  2. 依頼掲示板テンプレートを開いて「このテンプレートを使う」をクリックします。選んだサーバーで「サーバー管理」権限が必要です。
  3. テーブルには5つの列が入っています。Title(テキスト、必須)、Description(テキスト)、Reward(数値、必須)、Status(選択肢:Open、Claimed、Completed、必須)、Assigned To(メンバー)です。

テンプレートはClosedではなくCompletedを使います。Closedにしたい場合は、何かを投稿する前にテーブルの編集ページを開いてStatusの選択肢を変えてください。それより前に保存した行は古いテキストのまま残るので、名前を変えた選択肢とは一致しなくなります。このテーブルはFreeプランのテーブル2個のうちの1個として数えられます。インストール後に変更できることはテンプレートを見てください。

ステップ2:誰が投稿、引き受け、完了できるかを決める

権限はテーブルごとに3段階で設定します。閲覧ではquery、view、leaderboardが使えます。編集ではaddとupdateが加わります。管理ではdeleteと一括操作が加わります。ロールをひとつも割り当てていないうちは、すべてのメンバーが削除を含むすべての操作をできます。

無理のない設定は次のとおりです。

  • 全員が持っているロール(たとえば@Member)に閲覧を与えます。
  • スタッフのロールに編集を与えて、依頼を投稿できるようにします。
  • 管理は古い依頼を削除する人だけにします。

できないことも把握しておいてください。依頼を引き受けるのはupdateで、投稿するのと同じ権限です。しかもすべての行に適用されます。メンバーに引き受けを許すと、どの依頼でも投稿や編集ができるようになってしまいます。Assigned Toがコマンドを実行した本人かどうかも確認されません。選択肢は次のとおりです。

  • 変更はスタッフだけ。 メンバーはチャットで依頼し、スタッフがupdateを実行します。もっとも安全ですが、もっとも手間がかかります。
  • メンバーに編集を与える。 メンバーは自分で引き受け、互いの依頼に手を出さないと信頼して任せます。
  • テーブルを2個にする。 スタッフは依頼掲示板に投稿し、メンバーは別に作った2つ目のテーブルに引き受けを記録します。Freeプランのテーブルはちょうど2個です。

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

ステップ3:投稿して引き受ける

/bounty-board add title:Clear the Ashen Caves description:Kill the boss and post a screenshot reward:500 status:Open

返信はコマンドを実行したチャンネルに投稿されるので、依頼用のチャンネルで実行してください。依頼ごとに重複しないタイトルをつけます。以降のコマンドで使うrowの候補はタイトルで検索するからです。

誰かが引き受けたら、rowオプションに入力し始めて依頼を選びます。

/bounty-board update row:Clear the Ashen Caves status:Claimed assigned_to:@Kai

完了したら次のようにします。

/bounty-board update row:Clear the Ashen Caves status:Completed

変更されるのは指定した項目だけです。_modeオプションが関係するのは数値だけで、reward:100 _mode:Incrementは現在の報酬に100を足し、設定(デフォルト)は値を置き換えます。

ステップ4:Openの依頼を探す

  • /bounty-board query status:OpenはOpenの依頼を一覧表示します。ステータスはメニューから選ぶので、入力ミスは起きません。
  • /bounty-board query status:Claimed assigned_to:@KaiはKaiが取り組んでいる依頼を一覧表示します。フィルターは組み合わせられます。
  • /bounty-board view row:Clear the Ashen Cavesは依頼1件の全項目を、作成者も含めて表示します。
  • /bounty-board leaderboard column:rewardは報酬の順に依頼を並べます。Openのものだけでなく、すべての行が対象です。

結果は新しい順に表示され、デフォルトは10件、limitで最大25件までです。一覧に表示されるのは最初の4列(title、description、reward、status)だけなので、Assigned Toはqueryではなくviewで確認します。Proプランなら、ダッシュボードで「Open bounties」というビュー(statusがOpenに等しい)を保存して、/bounty-board saved-view name:Open bountiesで呼び出せます。

コミッション、求人掲示板、リクエストの受付

  • コミッション: 編集ページでRequesterというメンバーの列を追加します。Assigned Toはイラストレーター、Rewardは合意した価格をただの数値として入れる欄になります。
  • 求人掲示板: テンプレートをそのまま使えます。報酬をRewardに、条件をDescriptionに書きます。
  • リクエストの受付: タスクボードテンプレートには、タスク、担当者、優先度、ステータス(Todo、In Progress、Done)、期日があります。

日付は入力したとおり(YYYY-MM-DD)に保存されるだけで、日付によって何かが起きることはありません。締め切りの列はただのラベルで、期限切れになる仕組みではありません。

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

  • 投稿ごとに引き受けボタンが欲しいなら、ボタンを中心に作られたBotを使ってください。CordBaseにはボタンがありません。
  • コミッションごとに非公開のやりとりが必要なら、Ticket ToolのようなチケットBotのほうが向いています。依頼ごとに投稿とタグを使うフォーラムチャンネルなら、Botなしでも運用できます。
  • CordBaseは支払いの受け取り、エスクロー、報酬の支払いを行いません。報酬はテーブルの中の数値です。報酬がサーバー内通貨なら、UnbelievaBoatのような経済Botが残高を管理できます。

知っておきたい上限

  • ステータスが変わっても、CordBaseは誰にも通知しません。メンション、DM、リマインダーは一切送られません。
  • Free:テーブル2個、それぞれ100行まで。完了した依頼は管理者が削除するまで行として残るので、無料の掲示板はいずれ埋まります。Pro($8/月)ではテーブル無制限、1テーブルあたり10,000行、保存済みビュー、一括操作が使えます。
  • 1テーブルあたり最大25列。選択肢のリストは25個以下にしてください(Discordの上限です)。
  • テーブルはWebで設計します。メンバーがDiscordからテーブルを作ることはできません。
  • コマンドの書き方はコマンドリファレンスにあります。

よくある質問

メンバーはボタンで依頼を引き受けられますか?

できません。CordBaseの投稿にはボタンがありません。引き受けるには、statusとassigned_toのオプションを指定してupdateのスラッシュコマンドを使います。ワンクリックで引き受けるボタンが必要なら、そのために作られたBotを使ってください。

依頼が引き受けられたり完了したりしたら、誰かに通知されますか?

されません。ステータスが変わっても、CordBaseはメンション、DM、リマインダーを送りません。更新内容はコマンドを実行したチャンネルに投稿され、メンバーは/bounty-board query status:Openで確認できます。

CompletedではなくClosedを使えますか?

使えます。依頼掲示板テンプレートはOpen、Claimed、Completedを使いますが、Statusの選択肢はテーブルの編集ページで変更できます。依頼を投稿する前に変えてください。すでにある行は古いテキストのまま残ります。