すべての記事

Discordでギルド倉庫や共有の在庫を管理する方法

CordBaseチーム

Discordでギルド倉庫を管理するいちばん簡単な方法は、メンバーがスラッシュコマンドで更新するテーブルを使うことです。そうすれば、倉庫に何があり、誰が入れて誰が出したかが、全員がすでに話しているサーバーに記録されます。多くのサーバーは、誰かが手で編集するピン留めメッセージ、チャンネルにリンクを貼ったGoogleスプレッドシート、あるいは経済Botから始めます。どれもしばらくは使えます。ピン留めメッセージは、同じ夜に2人が編集すると崩れます。スプレッドシートはメンバーが開かなくなるまでは使えますが、Discordの外にあるので、開かなくなる人は多いです。経済Botはアイテムをポイントで買うものとして扱うので、「鉄インゴット40本を誰が持っているか」とは別の仕事です。

このガイドでは、Discordの中で完結する在庫を作ります。メンバーはスラッシュコマンドでアイテムを記録・検索し、管理者はWebでテーブル全体を見ます。私たちが開発しているCordBaseを使い、5分ほどで終わります。

完成するもの

  • add、query、view、update、leaderboardの操作を備えた、サーバーの/inventoryコマンド。
  • アイテム、数量、持ち主、レア度、メモの列。
  • 一般のメンバーは検索できるが、数量を変更できるのは役員だけ、というロールの権限。
  • CSVにエクスポートできるWebのテーブル。

ステップ1:CordBaseを追加してテンプレートをインストールする

  1. cordbase.ggにDiscordでログインし、サーバーを選びます。
  2. ダッシュボードに案内されたら、Botをサーバーに追加します。
  3. テンプレートライブラリを開いて在庫管理をインストールします。item(テキスト、必須)、quantity(数値、必須)、owner(メンバー、必須)、rarity(CommonからLegendaryまで)、notesの5列が入っています。

誰が何を持っているかではなく、サーバーでひとつのアイテムの置き場を共有しているなら、代わりにギルド倉庫をインストールしてください。item、quantity、deposited by、category(materials、gear、consumables、currency)、dateの列があります。このガイドの残りでは在庫管理を使いますが、コマンドはギルド倉庫でも同じように使えます(列名はギルド倉庫のものになります)。

コマンドはテーブルの名前からつけられるので、テンプレートのままだと/inventory-trackerになります。テーブルの編集ページでスラッグを変えれば短くできます。このガイドではinventoryに変えたものとして進めます。

ステップ2:編集できる人を制限する

新しいテーブルでは誰でもすべての操作ができます。テストには便利ですが、ギルド倉庫には向きません。テーブルの権限で次のように設定します。

  • 全員が持っているロール(たとえば@Member)に閲覧を与えます。query、view、leaderboardを実行できます。
  • 役員のロールに編集を与えて、addとupdateをできるようにします。
  • 管理(削除と一括編集)は幹部だけにします。

テーブルにロールをひとつでも設定すると、それらのロールを持たないメンバーはテーブルをまったく使えなくなります。

Discordの「管理者」権限を持つ人は、どちらの場合でもすべての操作ができます。

ステップ3:Discordからアイテムを記録する

行の追加は次のようになります。

/inventory add item:Iron Bar quantity:40 owner:@Mara rarity:Common

Discordは各列をオプションとして表示し、ownerにはメンバーの選択欄、rarityにはメニューが出るので、「legendery」と打ち間違えることはありません。

在庫が変わったら、行を入力し直すのではなく数量を更新します。rowオプションに入力し始めてリストからアイテムを選び、数値をどう変えるかを決める_modeオプションを指定します。

/inventory update row:Iron Bar quantity:15 _mode:Decrement

これで現在の数量がいくつであっても、そこから15を引きます。加算は足します。設定(デフォルト)は値を置き換えます。2人の役員が同時に数量を減らしても、両方が反映されます。変更は「この数値を書き込む」のではなく、保存されている値への計算として適用されるからです。

ステップ4:検索する

  • /inventory query owner:@MaraはMaraが持っているものをすべて一覧表示します。
  • /inventory query item:ironはitemに「iron」を含む行を、大文字小文字を区別せずにすべて探します。
  • /inventory query rarity:Legendary limit:25はLegendaryのアイテムを最大25件表示します。
  • /inventory view row:Iron Bar(リストから選びます)は1行の全項目を、誰がいつ追加したかと合わせて表示します。
  • /inventory leaderboard column:quantityは在庫の多い順にアイテムを並べます。

検索結果は新しい行から順に表示され、フィルターは組み合わせられます。owner:@Mara rarity:EpicならMaraのEpicのアイテムに絞り込めます。

ステップ5:履歴を残す(任意)

在庫のテーブルが持つのは現在の状態です。何が入って何が出たかの記録も残したいなら、隣に戦利品ログ(item、received by、source or boss、rarity、date)をインストールして、ドロップをそこに記録してください。Freeプランではテーブルを2個使えるので、在庫と戦利品ログが収まります。

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

数式やグラフが必要だったり、大量の相互参照が必要だったりして、編集のためにDiscordを離れても誰も気にしないなら、スプレッドシートのほうがまだ向いています。CordBaseには数式もGoogle Sheetsとの同期もありません。

「在庫」が実際には仮想経済で、メンバーがコインを稼いでショップでアイテムを買う仕組みなら、UnbelievaBoatのような経済Botを使ってください。CordBaseは単体ではショップを運営したり通貨を支払ったりしません。

CordBaseが向いているのは、データがサーバーにとって大事な実際の記録で、スプレッドシート全体の編集権限を渡さずに、メンバーにDiscordから更新してもらいたいときです。

知っておきたい上限

  • Free:テーブル2個、それぞれ100行まで。Pro($8/月)ではテーブル無制限、1テーブルあたり10,000行になり、一括編集も使えます。CSV・JSONエクスポートはすべてのプランで使えます。
  • 1テーブルあたり最大25列。
  • テーブルはWebで設計します。メンバーがDiscordから新しいテーブルを作ることはできません。

よくある質問

メンバーが自分のアイテムだけを見られるようにできますか?

権限としてはできません。閲覧権限があれば、誰でもテーブル全体を検索できます。メンバーはownerオプションで自分を選べば、自分の行だけに絞り込めます:/inventory query owner:@yourname。

今使っているスプレッドシートをインポートできますか?

まだできません。CordBaseには現時点でCSVインポートがないので、既存の行は/inventory addかダッシュボードから追加する必要があります。CSVとJSONへのエクスポートはすべてのプランで使えます。

Botはメッセージを読む必要がありますか?

ありません。CordBaseはスラッシュコマンドにだけ応答し、Message Content Intentを要求しません。