コマンドビルダー

オプション(コマンド引数)

オプションは、スラッシュコマンドの実行時にユーザーから値を受け取る入力欄です(例: /送金 金額:500 相手:@フレンド の「金額」「相手」)。受け取った値は変数として後続のノードで使えます。

オプションノードは「スラッシュコマンド」ノードにだけ接続でき、接続して初めてコマンドの引数として登録されます。つながっていないオプションはコマンドに反映されません。

8 種類のオプション

ノード名受け取る値値の型デフォルト値
「テキストオプション」自由なテキスト入力文字列設定可
「数値オプション」数値の入力数値設定可(整数なら int、小数なら float として扱われます)
「真偽値オプション」「はい」または「いいえ」真偽値(boolean)設定可(「未設定」「true (オン)」「false (オフ)」から選択)
「選択オプション」あらかじめ用意した選択肢から 1 つ選んだ選択肢の「値」設定可(定義済みの選択肢から 1 つを選択)
「添付ファイルオプション」ファイルの添付ファイルオブジェクト設定不可
「チャンネルオプション」サーバー内のチャンネル選択チャンネルオブジェクト設定不可
「ロールオプション」サーバー内のロール選択ロールオブジェクト設定不可
「ユーザーオプション」サーバーのメンバー選択ユーザーオブジェクト設定不可

「オプション名」は Discord 上に表示される引数名、「オプション変数」はコマンドの中でその値を参照するための変数名です。「デフォルト値」は、必須項目をオフにしたときだけ設定できます。

「選択オプション」の各選択肢には、表示される「選択肢名」(最大 100 文字)、変数に入る「値」、「値の型」(「文字列 (str)」「整数 (int)」「小数 (float)」)を設定します。

入力された値を変数で参照する

「オプション変数」を option_amount にしたなら、後続のノードで {option_amount} と書くと入力値が差し込まれます。テキスト・数値・真偽値のオプションはこの形でそのまま使います。

ユーザー・ロール・チャンネル・添付ファイル・選択の各オプションは値がオブジェクトになっており、. を付けて中の情報を取り出せます。「オプション変数」が target の場合の例です。

オプション種類参照できる主なサブプロパティ
「ユーザーオプション」{target.id} / {target.name} / {target.mention} / {target.icon.url} ほか
「ロールオプション」{target.id} / {target.name} / {target.mention} / {target.color} / {target.position}
「チャンネルオプション」{target.id} / {target.name} / {target.mention}
「添付ファイルオプション」{target.url} / {target.name} / {target.size}(バイト数) / {target.contentType}(MIME タイプ。判別できないときは空文字)
「選択オプション」{target.name}(選んだラベル)/ {target.value}(選んだ値)

「選択オプション」をプロパティを付けずに {target} と参照すると、選んだ選択肢の値が入ります。そのため「比較による条件分岐」の基準値に {target} を入れて、選択肢ごとに処理を振り分けられます。

値を省略したときとデフォルト値の扱い

必須でないオプションをユーザーが省略したとき、「デフォルト値」があればその値が、なければ空文字が {変数名} に入ります。

「デフォルト値」は実行時にオプションの型へそろえられます。

  • 「数値オプション」: 整数になる値は整数、それ以外は小数として扱われます。
  • 「真偽値オプション」: true / 1 / yes / on(大文字小文字は区別しません)は true、それ以外(文字列の 0 を含む)は false になります。
  • ユーザー・ロール・チャンネル・添付ファイルのオプションに「デフォルト値」を入れても無視されます。

名前の正規化と変数名の自動決定

英字の「オプション名」は、Discord への登録時に小文字へそろえられ、スペースはアンダースコアに置き換わります(例: My Param は my_param)。日本語などの Unicode 名はそのまま登録されます。

「オプション変数」を空のままにすると、変数名は「オプション名」を同じ規則で正規化した名前になります。

上限

項目上限
「オプション説明」の長さ100 文字(超えても保存時にエラーにはならず、登録時に先頭 100 文字へ切り詰められます)
「選択オプション」の選択肢の数最大 25 件
テキスト入力の長さDiscord 側の仕様による(おおむね 2000 文字)
添付ファイルのサイズDiscord 側の仕様による(サーバーのブースト状況などで変わります)

クールダウンと実行権限はオプションごとではなくコマンド全体にかかり、オプションの処理より前に判定されます。設定はコマンドの基本設定をご覧ください。

注意点・うまくいかないとき

  • 「オプション名」が空のオプションは登録されません。 エラーは出ないため、名前は必ず入力してください。
  • 同じコマンドの中で「オプション名」が重複していると保存できません。 重複チェックの対象は「オプション名」だけで、「オプション変数」は対象外です。
  • 「オプション説明」は空でもかまいません。 自動で代わりの説明文が入ります。
  • 「選択オプション」で値が重複していると、最初の 1 件だけが残ります。 数値の 1 と文字列の 1 のように見た目が同じ値も重複とみなされ、後から追加したほうは候補から除かれます。
  • 「選択オプション」は、次のいずれかがあると保存できません: 選択肢が 1 件もない、「選択肢名」や「値」が空、「値の型」に整数・小数を選んだのに値が数値として正しくない。
  • 「数値オプション」の「デフォルト値」に数値以外を入れると保存できません。
  • 必須オプションは任意オプションより前に並びます。 Discord の仕様に合わせて自動で並べ替えるため、追加した順序と表示順が異なることがあります。

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

最終更新:

目次