コマンドビルダーノード一覧

コマンド内関数(サブルーチン)

「コマンド内関数」は、コマンドの中で何度も使う処理のかたまりに名前を付け、引数を渡して呼び出す仕組みです。関数はコマンドビルダーの左サイドバーの「関数」セクションで作成・切り替えします。

関数は同じコマンドの中だけで使えます。別のコマンドからは呼び出せません。

関数定義

関数本体のキャンバスには、「関数定義」と「エラーハンドラー」が最初から置かれています(削除・移動はできません)。「関数定義」で関数名・引数・戻り値の型を設定します。

  • 関数名: 同じコマンド内で一意にします。英数字・アンダースコア・ハイフンが使えます。
  • 戻り値の型: 既定は「戻り値なし (void)」です。ほかに引数と同じ 8 種類の型から選べます。

引数

引数は 0 個以上定義でき、関数本体の中では {param_<引数名>} で参照します。たとえば引数名が target なら {param_target.mention} と書けます。

項目内容
引数名小文字英数字・アンダースコア・ハイフン。param_ で始まる名前は使えません
型文字列 (string) / 数値 (number) / 真偽値 (boolean) / ユーザー (User) / チャンネル (Channel) / ロール (Role) / オブジェクト (Object) / 配列 (Array)
必須オンにすると、呼び出し側で値を必ず渡す必要があります
デフォルト値必須をオフにした引数を空欄で渡したときに使われます。ユーザー / ロール / チャンネル型は持てないため、これらは必須にしてください

関数呼び出し

コマンド本体や別の関数の本体から「関数呼び出し」で関数を呼び出します。引数の値には {変数名} や ${ ... } の計算式も使えます。

  • 呼び出す関数を選ばずに保存すると、その呼び出しは何も実行しません。
  • 戻り値のある関数では「戻り値の格納先 (任意)」に変数名を入れると、戻り値を {その変数名} で参照できます。空欄なら戻り値は破棄されます。

戻り値

「戻り値」ノードは、関数の処理をその場で終わらせ、値を返します。void の関数では値の入力は不要です。void 以外の関数では、戻り値の型に合った値(直接の値・{変数}・${...} 計算式)を入れます。

「戻り値」ノードは関数本体の中だけで使えます。コマンド本体に置くと「このノードは関数本体の外には配置できません。」と表示され、正しく動きません。サイドバーで関数を開き、関数本体に置き直してください。

関数の中で使える変数

種類関数の中での扱い
永続変数(BSVAR_…、サーバー共有のグローバル変数など)読み書きできます。関数を抜けた後も値が残ります
コマンドのオプション(「オプション変数」で決めた名前)関数の中からは見えません。必要なら引数として渡してください
関数の引数 (param_…)読み取り専用です
関数の中で「変数を設定」した変数その関数の中だけで有効で、関数を抜けると消えます

関数の外まで残したい値は、戻り値として受け取るか、永続変数に書き出してください。

エラーハンドラー

関数本体の「エラーハンドラー」に処理をつなぐと、関数の中で起きたエラーをその関数の中で捕捉できます。

  • 捕捉すると関数は正常終了した扱いになり、呼び出し元は処理を続けます。
  • ハンドラーの中に置いた「戻り値」ノードの値が、その関数の戻り値になります。
  • エラーハンドラーの先に何もつながっていない場合は、エラーが呼び出し元へ伝わり、最終的にコマンド本体のエラーハンドラーに届きます。

エラー処理で使える {Error.message} などの組み込み変数と {Error.type} の種別は エラー時に使える組み込み変数 をご覧ください。

関連ページ

最終更新:

目次