オプション(コマンド引数)
スラッシュコマンドを使うとき、Discord では /コマンド名 オプション名:値 のように、コマンドに「値」を渡せます。この「値を渡すための入力欄」が**オプション(引数)**です。
たとえば送金コマンドなら「金額」、お知らせコマンドなら「本文」のように、ユーザーがコマンド実行時に入力する内容を受け取れます。受け取った値は変数として、後ろにつないだノードで自由に使えます。
/送金 金額:500 相手:@フレンドこの例では「金額」と「相手」がオプションです。入力された値は、メッセージ本文に差し込んだり、条件分岐や計算に使ったりできます。コマンドの土台となる「スラッシュコマンド」ノードの作り方は、コマンドビルダーの基本をご覧ください。
8 種類のオプション
オプションには、受け取りたい値の種類に応じて 8 種類が用意されています。コマンドビルダー左側のサイドバーで「選択」カテゴリーを開くと、「オプション」グループの中に並んでいます(サイドバーでは「テキスト」のように「オプション」を省いた名前で表示されます)。
| ノード名 | 受け取る値 | 値の型 | デフォルト値 |
|---|---|---|---|
| 「テキストオプション」 | 自由なテキスト入力 | 文字列 | 設定可(文字列をそのまま入力) |
| 「数値オプション」 | 数値の入力 | 数値 | 設定可(整数なら int、小数なら float として扱われます) |
| 「真偽値オプション」 | 「はい」または「いいえ」 | 真偽値(boolean) | 設定可(「未設定」「true (オン)」「false (オフ)」から選択) |
| 「選択オプション」 | あらかじめ用意した選択肢から 1 つ | 選択肢オブジェクト | 設定可(定義済みの選択肢から 1 つを選択) |
| 「添付ファイルオプション」 | ファイルの添付 | ファイルオブジェクト | 設定不可 |
| 「チャンネルオプション」 | サーバー内のチャンネル選択 | チャンネルオブジェクト | 設定不可 |
| 「ロールオプション」 | サーバー内のロール選択 | ロールオブジェクト | 設定不可 |
| 「ユーザーオプション」 | サーバーのメンバー選択 | ユーザーオブジェクト | 設定不可 |
オプションを追加してつなぐ
オプションは、まずキャンバスに追加してから「スラッシュコマンド」ノードへ線でつなぎます。オプションノードの接続点は1 つだけです。
使いたいオプションをキャンバスに追加する
サイドバーの「選択」カテゴリーから、使いたいオプション(例:「テキストオプション」)をキャンバスにドラッグ&ドロップするか、項目をクリックして追加します。
オプションを「スラッシュコマンド」ノードへつなぐ
追加したオプションノードの接続点から、起点の「スラッシュコマンド」ノードへ線をドラッグしてつなぎます。オプションは「スラッシュコマンド」ノードにだけ接続でき、接続して初めてコマンドの引数として登録されます。つながっていないオプションはコマンドに反映されません。
共通の設定項目
どのオプションでも、設定パネルの上部には共通の項目が並びます。設定パネルの一番上には、現在の変数名を使った {変数名} の表示と、それをコピーできるボタンがあります。
| 設定項目 | 必須 | 説明 |
|---|---|---|
| 「オプション名」 | 必須 | Discord 上で引数として表示される名前。例: /cmd オプション名:value |
| 「オプション変数」 | 必須 | コマンドの中でこの値を参照するための変数名。例: option_amount |
| 「オプション説明」 | 任意 | ユーザーに表示される、この引数の説明文 |
| 「必須項目にするかどうか」 | 任意 | オンにすると、ユーザーは必ずこの値を入力しないとコマンドを実行できなくなります |
| 「デフォルト値」 | 任意 | 入力されなかったときに使われる初期値(対応する種類のみ・必須でないときのみ表示) |
新しくオプションを追加したときは、「オプション変数」に option_var_1 のような名前が自動で入ります。そのまま使ってもよいですが、option_amount のように分かりやすい名前に変えておくと、後でフローを組むときに迷いません。
選択オプションの選択肢
「選択オプション」だけは、共通設定に加えて選択肢のリストを設定します。ほかの 7 種類に追加の入力項目はありません。
設定パネルの「選択肢」セクションで「選択肢を追加」をクリックすると、1 件分の入力欄が追加されます。各選択肢には次の項目があります。
| 項目 | 説明 |
|---|---|
| 「選択肢名」 | ユーザーに表示されるラベル(最大 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} |
| 「選択オプション」 | {target.name}(選んだラベル)/ {target.value}(選んだ値) |
テキスト・数値・真偽値のオプションは単純な値なので、サブプロパティはなく {変数名} でそのまま使います。添付ファイルの {target.size} はバイト数で、{target.contentType}(MIME タイプ)はファイルの種類が判別できないときは空文字になります。
値を省略したときとデフォルト値の扱い
必須項目をオフにしたオプションは、ユーザーが値を省略できます。
- 「デフォルト値」を設定していれば、その値がオプションの型にそろえられて使われます。
- 「デフォルト値」を設定していなければ、
{変数名}には**空文字(空の文字列)**が入ります。
「デフォルト値」の型そろえは、保存時とは別に実行時にも行われます。
- 「数値オプション」:
3.5のように入力した文字列は数値として解釈され、3のような整数になる値は整数として、それ以外は小数として扱われます。 - 「真偽値オプション」:
true/1/yes/on(大文字小文字は区別しません)はtrueに、それ以外はfalseになります。文字列の0はfalseになります。 - ユーザー・ロール・チャンネル・添付ファイルのオプションに「デフォルト値」を入れても無視されます。これらは実行時に Discord 上の対象へ解決される値で、文字列から元のオブジェクトを復元できないためです。
名前の正規化と変数名の自動決定
「オプション名」を英字で付けると、Discord に登録される際に小文字へそろえられ、スペースはアンダースコアに置き換わります(例: My Param は my_param)。日本語などの Unicode 名はそのまま登録され、コマンド入力時の候補にもそのまま表示されます。
「オプション変数」を空のままにすると、変数名は「オプション名」を同じ規則で正規化した名前になります。
上限
オプションそのものに個別の上限・権限・クールダウンはありません。
| 項目 | 上限 |
|---|---|
| 「オプション説明」の長さ | 100 文字(超えても保存時にエラーにはならず、登録時に先頭 100 文字へ切り詰められます) |
| 「選択オプション」の選択肢の数 | 最大 25 件 |
| テキスト入力の長さ | Discord 側の仕様による(おおむね 2000 文字) |
| 添付ファイルのサイズ | Discord 側の仕様による(サーバーのブースト状況などで変わります) |
クールダウンと実行権限は、個々のオプションではなくコマンド全体にかかり、判定はオプションの処理よりも前に実行されます。設定方法はコマンドの設定、表示されるメッセージはコマンドビルダーの基本をご覧ください。オプション側に一時的な返信(ephemeral)の設定はありません。
注意点・うまくいかないとき
- 「オプション名」を空にしたオプションは登録されません。 エラーは出ませんが、そのオプションはコマンドに反映されないので、名前は必ず入力してください。
- 同じコマンドの中で「オプション名」が重複していると保存できません。 Discord 側で引数名は一意でなければならないためです。重複チェックの対象になるのは「オプション名」だけで、「オプション変数」は対象外です。
- 「オプション説明」を空にしてもエラーにはなりません。 空のときは自動で代わりの説明文が入り、コマンドは問題なく登録されます。
- 「選択オプション」で値が重複していると、最初の 1 件だけが残ります。 たとえば数値の
1と文字列の1のように見た目が同じ値を別々の選択肢にすると、後から追加したほうは候補から除かれます。値はそれぞれ別のものにしてください。 - 「選択オプション」は、選択肢が 1 件もない・「選択肢名」や「値」が空・「値の型」に整数や小数を選んだのに値が数値として正しくない、のいずれかがあると保存できません。 型が合わないときは
値が「整数 (int)」の形式と一致しません。保存できません。のように表示されます。 - 「数値オプション」の「デフォルト値」に数値以外を入れると保存できません。 「数値を入力してください。」と表示されます。
- 必須オプションを空のまま送信することはできません。 Discord の入力画面で
This is a required optionと表示され、Bot まで届く前に止まります。 - 必須オプションは、Discord の仕様上、任意オプションより前に並びます。 並び順は Bot 側で自動的にこの規則に合わせて調整されるため、追加した順序とコマンド上の表示順が異なることがあります。
次のステップ・関連ページ
- コマンドビルダーの基本 — スラッシュコマンドの作り方と画面構成
- 変数の使い方 —
{変数名}で値を参照・加工する方法 - アクション(動作ノード) — 受け取ったオプションをメッセージに差し込んで送信する
- 条件分岐 — オプションの値で処理を分ける
最終更新: