コマンドの基本設定(名前・クールダウン・権限・エラー処理)
コマンド名・説明・クールダウン・権限といったコマンド全体の設定は、起点ノード「スラッシュコマンド」で行います。実行中にエラーが起きたときの動きは「エラーハンドラー」ノードで決めます。
コマンド名とクールダウン
- コマンド名に使える文字と文字数は上限とクールダウンをご覧ください。日本語やスペースは使えず、条件を満たしていないと保存時にエラーになります。
- 既存のコマンドの名前を変更して保存すると、新しい名前に置き換わります。以前の名前のコマンドは残りません。
- クールダウンの適用範囲・クールダウン中の返信文はクールダウンをご覧ください。
権限設定
「個別権限設定を有効化」をオンにすると、ホワイトリスト/ブラックリストによる BotShade 独自の権限判定に切り替わります。リストの種類・権限条件のモード・判定の順序はコマンド権限設定の使い方をご覧ください。
「Discord権限より個別設定を優先」をオンにすると Discord の権限チェックが回避され、意図しない人がコマンドを使えてしまう恐れがあります。通常はオフのままにしてください(→強制上書き)。
永続パネルのボタンにも権限を適用する
永続化した「メッセージを送信」ブロックが付けたボタンや選択メニューは、押されるたびにそのコマンドの権限が再評価されます。このスイッチ(既定はオン)をオフにすると再評価を行わず、誰でも操作できるようになります。/rules のように「発行できる人は絞りたいが、貼ったパネルは全員に使わせたい」公開パネル向けの設定です。コマンド自体の実行権限は変わりません。
- コマンド本体にも関数にも永続化した「メッセージを送信」ブロックが 1 つも無いときは操作できません。
- オフにしても外れるのは、そのコマンドの権限の再評価だけです。親グループの権限は引き続き適用され、参照先のグループが壊れている場合は常に拒否されます。
- 一時的なパネル(永続化していないメッセージ)のボタンは、この設定の対象外です。
親グループの権限を継承しない
グループに入れたコマンドは、既定では親グループの権限で先に絞り込まれてから、そのコマンド自身の権限で判定されます。このスイッチをオンにすると、親グループの権限を無視し、そのコマンド単体の権限だけで判定します。
エラーハンドラー
「エラーハンドラー」ノードの下に動作ノード(メッセージを送信する、変数に記録する、など)をつなぐと、コマンドの途中でエラーが起きたときにそのノード列が実行されます。使わない場合は、何もつながなくて構いません。
エラーハンドラーには本体とは別の実行時間が与えられるため、本体が実行時間を使い切ってもエラー処理は動きます。
「エラーメッセージをプライベートメッセージにするか」を「はい」にすると、エラーメッセージは実行者本人にだけ表示されます。ただし、一部の動作では適用されないことがあります。表示するメッセージに機密情報が含まれないようご注意ください。
エラー時に使える組み込み変数
エラー処理のノードの中では、発生したエラーの内容を次の組み込み変数で表示できます。
| 変数 | 内容 |
|---|---|
{Error.message} | エラーメッセージ本文 |
{Error.detail} | エラーの詳細(スタックトレースなど) |
{Error.block} | エラーが起きたブロックの表示名(ブロックに付けた名前 → ラベル → ブロックの種類の順) |
{Error.type} | エラーの種別(下表) |
{Error.message} と {Error.detail} は、環境変数の値などの秘密を取り除いたうえで 500 文字に切り詰められます。
エラーの種別 {Error.type}
「比較による条件分岐」ブロックの基準値に {Error.type} を入れると、種別ごとに処理を振り分けられます。
| キー | 意味 |
|---|---|
undefined_variable | 未定義の変数を参照 |
undefined_function | 存在しない関数を呼んだ |
invalid_argument | 引数が不足 / 型が違う |
execution_limit | 呼出深度 / 総呼出数の上限 |
api_request | 外部 API 呼び出しの失敗 |
discord_api | Discord API 側の失敗 |
expression | ${ ... } 式の評価失敗 |
timeout | 実行タイムアウト |
function | 上記以外の関数実行の失敗 |
unknown | 種別を特定できない |
構文エラーは保存前の検証で弾かれるため、実行時には出ません。また、未定義変数エラーとタイムアウトはエラーハンドラーには流れません(未定義変数は実行を止めず該当箇所がそのまま出力され、タイムアウトはエンジンごと打ち切られるためです)。
Config(設定可能パラメータ)
Config は、コマンドの作り手と、サーバーごとに値だけを差し替える運用者を分けるためのしくみです。「外から差し替えたい設定」をキーと型で宣言し、その値を同じ画面の「現在の値 (Configure)」フォームで埋めます。
- キーは末尾部分だけを入力し、先頭の
BSVAR_は自動で付きます(例:welcome_channel→BSVAR_welcome_channel)。 - 宣言したキーは永続変数として展開され、コマンド本体からは
{BSVAR_welcome_channel}のように参照できます。「値を保存」で更新されるのは、この 永続変数の既定値 です。 - 「必須項目」をオンにしたキーの値が空のときは、コマンド一覧で「設定未完了」の目印が付きます。
「型」は「文字列 (string)」「数値 (number)」「真偽値 (boolean)」「URL」「チャンネル (channel)」「ロール (role)」「ユーザー (user)」「絵文字 (emoji)」から選びます。
次のステップ / 関連ページ
- コマンドビルダーの概要と使い方
- コマンド権限設定の使い方 — 権限リストと判定の順序
- 変数と式の使い方 —
{BSVAR_…}の参照のしかた - コマンド内関数(サブルーチン) — 同じコマンド内で処理を関数として切り出す
最終更新: