コマンドビルダー

コマンドの基本設定(名前・クールダウン・権限・エラー処理)

コマンドビルダーの起点となるノード「スラッシュコマンド」では、Discord 上でのコマンド名や説明、クールダウン、誰がそのコマンドを使えるかといった「コマンド全体の基本設定」をまとめて行います。コマンドの実行中にエラーが起きたときの動きは「エラーハンドラー」ノードで決めます。

スラッシュコマンドノードの設定一覧

キャンバス上の「スラッシュコマンド」ノードはコマンドに必ず1つだけ存在し、削除や移動はできません。このノードをクリックすると設定パネルが開き、次の項目を設定できます。

設定項目入力方法内容
「コマンド名」テキスト入力Discord 上に表示されるコマンドの名前。必須です。半角英数字とハイフン・アンダースコア・ピリオド(- _ .)で 3〜50 文字。日本語やスペースは使えず、条件を満たしていないと保存時にエラーになります。
「コマンドの説明」テキスト入力Discord 上に表示されるコマンドの説明文。任意です。
「コマンドクールダウン」選択(あり/なし)連続実行を制限するかどうか。
「クールダウン期間」テキスト入力クールダウンの長さ(数値)。クールダウンありのときだけ表示されます。
「クールダウン単位」選択(秒/分/時間)クールダウン期間の単位。クールダウンありのときだけ表示されます。
「個別権限設定を有効化」オン/オフのスイッチBotShade 独自の権限設定を使うかどうか。
「Discord権限より個別設定を優先」オン/オフのスイッチDiscord の権限判定をバイパスする危険な設定。

既存のコマンドの名前を変更して保存すると、新しい名前に置き換わります(以前の名前のコマンドは残りません)。

コマンドクールダウン(あり/なし・期間・単位)

クールダウンは、同じコマンドが短時間に何度も実行されるのを防ぐための設定です。「コマンドクールダウン」の選択欄で次のどちらかを選びます。

選択肢動作
「クールダウンなし」クールダウンを設けません(初期状態)。
「クールダウンあり」一定時間あけないと同じコマンドを再実行できなくします。

例えば「クールダウン期間」に 30、「クールダウン単位」に「秒」を設定すると、コマンドを使ったあと 30 秒間は同じ人が再実行できなくなります。

クールダウンは実行者ごとに適用されるため、あるユーザーがクールダウン中でも別のユーザーは実行できます。ボタン・選択メニュー・モーダルには適用されません。

権限設定 — 個別権限設定の有効化

「権限設定」という見出しの下では、そのコマンドを「誰が使えるか」を細かく制御できます。中心となるのが「個別権限設定を有効化」のスイッチです。

スイッチの状態権限の判定方法
オフ(初期状態)通常の Discord の権限判定を使います。
オンBotShade 独自の権限設定(ホワイトリスト/ブラックリストなど)を使います。

ロール・権限のホワイトリスト/ブラックリスト

「個別権限設定を有効化」をオンにすると表示される「詳細権限設定」パネルには、次の4つのリストがあります。許可(ホワイト)と拒否(ブラック)を、ロール単位・権限単位で指定できます。

リスト役割
「ホワイトロールリスト」許可するロールを指定します。リストに含まれるロールは常にアクセスが許可されます。
「ブラックロールリスト」拒否するロールを指定します。リストに含まれるロールはアクセスが拒否されます。
「ホワイト権限リスト」許可する権限条件を設定します。条件に一致するメンバーはアクセスが許可されます。
「ブラック権限リスト」拒否する権限条件を設定します。条件に一致するメンバーはアクセスが拒否されます。

権限リストの編集(条件の追加)

「ホワイト権限リスト」「ブラック権限リスト」では「条件を追加」ボタンで条件を1つずつ追加します。各条件(「条件 #1」のように番号が付きます)では、まず判定の仕方を選び、続いてチェックしたい Discord 権限にチェックを入れていきます。

判定の仕方(モード)は次の4種類から選びます。

モード意味
「AND (すべて必要)」選んだ権限をすべて持っている場合に一致します。
「OR (いずれか1つ)」選んだ権限のいずれか1つを持っていれば一致します。
「STRICT (完全一致)」選んだ権限と完全に一致する場合に一致します。
「CONTAINS (含む)」選んだ権限を含んでいる場合に一致します。

チェックを入れた権限が条件の対象になり、権限ごとに「許可」と「拒否」を切り替えられます。権限の項目には「管理者」「メンバーをキック」「メンバーをBan」「メッセージの管理」「ロールの管理」など、Discord の各権限が日本語で並んでいます。

ロールリストと権限リストは組み合わせて使えます。リストを空のままにすると、そのリストによる絞り込みは行われません。

Discord権限より個別設定を優先(危険な上書き設定)

「Discord権限より個別設定を優先」は、Discord 側の権限チェックを無視して、上で設定した個別の権限設定だけで判定させる上書き設定です。「個別権限設定を有効化」をオンにしていないと使えず、オフに戻すとこの優先設定も自動的にオフになります。

「Discord権限より個別設定を優先」をオンにすると Discord の権限チェックが回避され、意図しない人がコマンドを使えてしまう恐れがあります。通常はオフのままにしてください。

エラーハンドラーとは — 実行中のエラーを捕捉して処理する

コマンドビルダーには、起点の「スラッシュコマンド」ノードとは別に、独立した起点として「エラーハンドラー」ノードがあります。これは、コマンドの実行中にどこかでエラー(例外)が発生したときに動くノードです。

エラー処理を作るには、「エラーハンドラー」ノードの下に動作ノード(メッセージを送信する、変数に記録する、など)をつなぎます。コマンドの途中でエラーが起きると、つないだノード列が実行され、ログを残したり、ユーザーに知らせたり、後始末をしたりできます。

このノードも起点ノードのため、削除・移動はできません。エラー処理を使わない場合は、下に何もつながなくて構いません。

エラー時に使える組み込み変数

エラー処理のノードの中では、発生したエラーの内容を次の組み込み変数で表示できます。テキスト入力欄やメッセージ本文に、中括弧で囲んで書き込むと、その部分が実際のエラー内容に置き換わります。

変数内容
{Error.message}エラーメッセージ本文
{Error.detail}スタックトレースなどの詳細
{Error.block}エラーが発生したノードのラベル

エラーメッセージをプライベート表示にする

「エラーハンドラー」ノードの設定パネルには「エラーメッセージをプライベートメッセージにするか」という選択欄があります。これは、エラーの内容を「コマンドを実行した本人だけに見せるか」を決める設定です。

選択肢動作
「はい」コマンドの実行者本人にだけエラーメッセージが表示され、ほかの人には見えません。
「いいえ」通常のメッセージとして表示されます。

プライベート表示にしても、一部の動作や DM では適用されないことがあります。エラー内容に機密情報が含まれないよう、表示するメッセージにはご注意ください。

Config(設定可能パラメータ)

コマンドの基本設定パネルには、起点ノードの一般設定に続いて「Config (設定可能パラメータ)」セクションがあります。これはコマンドの作り手と、サーバーごとに値だけを差し替える運用者を分けて考えるためのしくみで、次の 2 段階で使います。

  1. コマンドを作るときに、「外から差し替えたい設定」を 宣言 する(キーと型を決める)。
  2. 宣言した設定の 現在の値 を、同じ画面の下にある「現在の値 (Configure)」フォームから埋める。

宣言したパラメータは、永続変数(BSVAR_…)のカタログに自動で展開されるため、コマンド本体のノードからは {BSVAR_<キー名>} の形で値を取り出せます。

Config フィールドを宣言する

「フィールド追加」ボタンで、宣言を 1 件ずつ増やします。各フィールドには次を設定します。

設定項目内容
「キー (prefix: BSVAR_)」キー名の 末尾部分 だけを入力します。先頭の BSVAR_ は自動で付きます(例: welcome_channel → 実際のキーは BSVAR_welcome_channel)。
「型」値の種類。「文字列 (string)」「数値 (number)」「真偽値 (boolean)」「URL」「チャンネル (channel)」「ロール (role)」「ユーザー (user)」「絵文字 (emoji)」から選びます。
「表示ラベル」この設定を「現在の値 (Configure)」フォームに表示するときの名前です。
「説明 (任意)」「現在の値 (Configure)」フォームでのヘルプテキストです。
「必須項目」オンにすると、値が空のときにコマンド一覧で「設定未完了」の目印が付きます。

キー名のルールに合わないとき、または同じキーを 2 か所で宣言したときは警告が表示されます(例: 「キー 'BSVAR_xxx' が他のフィールドと重複しています」)。不要になったフィールドは削除できます。

現在の値 (Configure) を埋める

Config フィールドを 1 つでも宣言すると、その下に「現在の値 (Configure)」フォームが現れ、宣言した各キーの値を入力できます。「値を保存」を押すと、宣言したフィールドに対応する 永続変数の既定値 がまとめて更新されます(値が変わっていないとボタンは押せません)。

たとえば welcome_channel を宣言しておけば、メッセージ送信ノードの「送信先チャンネル」に {BSVAR_welcome_channel} と書くだけで、Configure で埋めた値が使われます。

次のステップ / 関連ページ

最終更新:

目次