Discordでギルド倉庫や共有の在庫を管理する方法
Discordでギルド倉庫を管理するいちばん簡単な方法は、メンバーがスラッシュコマンドで更新するテーブルを使うことです。そうすれば、倉庫に何があり、誰が入れて誰が出したかが、全員がすでに話しているサーバーに記録されます。多くのサーバーは、誰かが手で編集するピン留めメッセージ、チャンネルにリンクを貼ったGoogleスプレッドシート、あるいは経済Botから始めます。どれもしばらくは使えます。ピン留めメッセージは、同じ夜に2人が編集すると崩れます。スプレッドシートはメンバーが開かなくなるまでは使えますが、Discordの外にあるので、開かなくなる人は多いです。経済Botはアイテムをポイントで買うものとして扱うので、「鉄インゴット40本を誰が持っているか」とは別の仕事です。
このガイドでは、Discordの中で完結する在庫を作ります。メンバーはスラッシュコマンドでアイテムを記録・検索し、管理者はWebでテーブル全体を見ます。私たちが開発しているCordBaseを使い、5分ほどで終わります。
完成するもの
add、query、view、update、leaderboardの操作を備えた、サーバーの/inventoryコマンド。- アイテム、数量、持ち主、レア度、メモの列。
- 一般のメンバーは検索できるが、数量を変更できるのは役員だけ、というロールの権限。
- CSVにエクスポートできるWebのテーブル。
ステップ1:CordBaseを追加してテンプレートをインストールする
- cordbase.ggにDiscordでログインし、サーバーを選びます。
- ダッシュボードに案内されたら、Botをサーバーに追加します。
- テンプレートライブラリを開いて在庫管理をインストールします。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を要求しません。