一時変数(コマンド実行中だけ使う変数)
一時変数は、コマンドの実行中だけ有効な変数です。1 回のコマンド処理の中で「途中の計算結果」や「入力された値」を覚えておき、後ろのノードで使い回すために使います。コマンドの実行が終わると、その値は自動的に消えます。
このページの操作はすべてコマンドビルダーの画面で行います。コマンドビルダーの基本的な使い方をまだ知らない場合は、先にそちらをご覧ください。
一時変数の値はコマンドの実行が終わると消えます。次回の実行や、他のサーバー・ユーザーと値を共有したい場合は、ストレージ画面で永続変数(BSVAR_ で始まる変数)を作ってください。
一時変数とは(コマンドが終わると消える)
一時変数は「その場かぎりのメモ」のようなものです。コマンドが動いている間だけ値を覚えておき、処理が終わると破棄されます。
たとえば、次のような用途に向いています。
- ユーザーが入力した値を、後ろのノードのメッセージに差し込む
- 計算した結果(
料金 × 1.1など)を一度しまっておき、何度も使い回す - 「条件に当てはまったかどうか」のフラグ(はい / いいえ)を覚えておく
一時変数は、コマンドビルダーの中で名前を付けて作ります。作った変数は、その変数を作ったノードより後ろのノードで {変数名} の形で参照できます。値を使いたいノードよりも前に、その値を作るノードを置いてください。
永続変数との違い(残したいなら必ずストレージで作る)
BotShade の変数には、大きく分けて 2 種類あります。値が「いつ消えるか」が最大の違いです。
| 種類 | いつ消えるか | 作る場所 | 名前の形 | 主な使いどころ |
|---|---|---|---|---|
| 一時変数(ローカル変数) | コマンドの実行が終わると自動的に消える | コマンドビルダー内のノード | 普通の名前(例: score) | 1 回の処理の中だけで使う途中計算・入力値 |
| 永続変数 | 自分で削除するまで残る(保存される) | ストレージ画面 | BSVAR_ で始まる名前(例: BSVAR_score) | サーバーやユーザーごとの累計・設定など |
つまり、見分け方はシンプルです。
- 名前が
BSVAR_で始まらない変数 → 一時変数(コマンドが終わると消える) - 名前が
BSVAR_で始まる変数 → 永続変数(保存され続ける)
「次回も値を覚えていてほしい」「サーバー全体やユーザーごとに値を集計したい」場合は、一時変数では実現できません。必ずストレージ画面で永続変数を作成してください。永続変数の名前は自動的に BSVAR_ で始まる形になります。
オプション値も一時変数として使える(option_<名前>)
自分で「変数を設定」しなくても、コマンドの作りによっては最初から使える一時変数があります。その代表が**コマンドのオプション(引数)**です。
コマンドにオプションを追加すると、その入力値が自動的に {option_オプション名} という一時変数として後ろのノードで使えるようになります。たとえばテキスト入力のオプションを「名前」で作ると、{option_名前} でその値を参照できます。
| オプションの種類 | 参照のしかた | 取り出せる値 |
|---|---|---|
| テキスト・数値・真偽値などの入力 | {option_オプション名} | 入力された 1 つの値 |
| ユーザーを受け取るオプション | {option_オプション名} / {option_オプション名.id} / {option_オプション名.mention} 等 | 選ばれたユーザーの情報 |
| ロールを受け取るオプション | {option_オプション名} / {option_オプション名.id} / {option_オプション名.name} 等 | 選ばれたロールの情報 |
| チャンネルを受け取るオプション | {option_オプション名} / {option_オプション名.id} / {option_オプション名.mention} 等 | 選ばれたチャンネルの情報 |
| 添付ファイルを受け取るオプション | {option_オプション名.url} / {option_オプション名.name} 等 | ファイルの URL や名前 |
オプションで作られる値も一時変数です。コマンドの実行中だけ有効で、実行が終わると破棄されます。どんな変数が使えるかは、テキスト入力欄の変数ボタンから一覧で確認できます。
このほか、「メッセージを送信」「ロールを作成」「API リクエスト」「ループ」などのノードも、結果を一時変数として残せます。これらも BSVAR_ を付けないかぎり、すべて実行中だけ有効な一時変数です。詳しくは変数と式の使い方を参照してください。
一時変数の作り方(「変数を設定」ノード)
自分で好きな値を覚えさせたいときは、「変数を設定」ノードを使います。BSVAR_ を付けない普通の名前を付ければ、その変数は一時変数になります。
「変数を設定」ノードを追加する
コマンドビルダーの左パネルから「変数を設定」ノードを探し、キャンバスへ追加します。追加したノードを選ぶと、右側に設定欄が開きます。
「変数名」を入力する
「変数名」欄に、覚えさせる変数の名前を入力します。
一時変数にしたい場合は、BSVAR_ を付けない普通の名前(例: score、tmp_result)にします。英字・数字・アンダースコア(_)で分かりやすい名前を付けるのがおすすめです。
変数名を BSVAR_ で始めると、一時変数ではなく永続変数として扱われます。永続変数は事前にストレージ画面で作成しておく必要があり、登録していない BSVAR_ 名を指定しても値は書き込まれません。一時変数として使いたいときは、必ず BSVAR_ を付けない名前にしてください。
「型」を選ぶ
「型」欄で、入れる値の種類を選びます。型を正しく選ぶと、後続ノードの入力補助(オートコンプリート)に適切なプロパティ(.id / .name / .mention など)が表示されます。
| 型の表示 | 説明 |
|---|---|
| 「文字列 (string)」 | 文字のデータ。名前やメッセージなど |
| 「数値 (number)」 | 数のデータ。計算に使えます |
| 「真偽値 (boolean)」 | はい / いいえ(true / false) |
| 「ユーザー (User)」 | Discord ユーザー。.id / .name / .mention などが使えます |
| 「チャンネル (Channel)」 | Discord チャンネル。.id / .name / .mention などが使えます |
| 「ロール (Role)」 | Discord ロール。.id / .name / .mention などが使えます |
| 「オブジェクト (Object)」 | 複数のプロパティをまとめて持てる箱。下のエディタで中身を定義します |
「値」を入力する
「型」が「オブジェクト (Object)」以外のときは、「値」欄に代入する値を入力します。値の欄では {変数名} の参照や ${ ... } の計算式も使えます。
- 例:
たろう(文字をそのまま入れる) - 例:
{option_名前}(オプションで入力された値を入れる) - 例:
${ {option_数量} * 100 }(計算結果を入れる)
必要なら「ノードタイトル」を変える
「ノードタイトル」欄で、このノードのキャンバス上の表示名を任意に変更できます(処理内容には影響しません)。
設定欄に表示される {変数名} の形の参照用コピー欄をコピーして、後続ノードのテキスト欄に貼り付ければ、その値を差し込めます。
計算や条件分岐での使い道
一時変数は、計算の途中結果や判定用のフラグを覚えておく用途でよく使います。
途中計算の結果を覚えておく
計算をしたいときは、「値」欄に ${ ... } の式を書きます。式の中では {変数名} で他の変数の値を取り込めます。
- 例:
${ {option_単価} * {option_個数} }→ 単価 × 個数の合計を計算し、その結果を一時変数に入れる - 例:
${ {小計} * 1.1 }→ 一度しまっておいた小計に消費税分を掛ける
式の中で使える主な演算子は次のとおりです。
| 種類 | 演算子 | 説明 |
|---|---|---|
| 計算(算術) | + - * / % | 足す・引く・掛ける・割る・余り |
| 比較 | < > <= >= == != | 大小や一致を判定し、true / false を返す |
| 連結 | + | どちらかが文字列のとき、+ は文字をつなげます |
割り算は整数だけにならず、小数まで計算されます(例: 5 / 2 は 2.5)。また + は、両方が数値なら足し算、どちらかが文字列なら文字の連結になります(例: ${ {名前} + "さん" })。
一度計算した結果を一時変数に入れておくと、同じ計算を何度も書かずに {変数名} で使い回せて便利です。
条件分岐のフラグとして使う
「ある条件に当てはまったか」の判定結果を「真偽値 (boolean)」型の一時変数に入れておき、後ろの条件分岐ノードで参照する使い方もできます。1 か所で判定した結果を複数の場所で使い回せます。条件分岐の詳しい使い方は条件分岐を参照してください。
存在しない一時変数名を {} で参照すると、そのノードに黄色の警告が表示されます。変数名のスペルが正しいか、そしてその変数が参照しているノードより前のノードで作られているかを確認してください。一時変数は、設定したノードより後でしか使えません。
オブジェクト型一時変数とプロパティ参照
「型」で「オブジェクト (Object)」を選ぶと、「値」の単一入力欄の代わりに「プロパティ」エディタが表示されます。1 つの一時変数の中に、複数の名前付きの値(プロパティ)をまとめて持たせたいときに使います。
「プロパティを追加」をクリックする
「プロパティ」見出しの右にある「プロパティを追加」ボタンをクリックすると、プロパティが 1 件追加されます。プロパティは最大 50 件まで作れます。
「キー名」を入力する
各プロパティの「キー名」欄に、プロパティの名前を入力します。キー名は英字・数字・アンダースコア(_)のみで、先頭は英字または _ にしてください。ルールに合わないと赤い注意が表示されます。
「型」と「値」を設定する
プロパティごとに「型」を選び、「値」を入力します。プロパティの値の欄でも {変数名} 参照や ${ ... } 式が使えます。
定義したプロパティは、後続ノードから {変数名.キー名} の形式で参照できます。各プロパティの上部には {変数名.キー名} の形のプレビューが表示されるので、それを見ながら参照すると確実です。不要になったプロパティは、各プロパティ右上のごみ箱アイコンで削除できます。
オブジェクト型の一時変数も、ほかの一時変数と同じくコマンドの実行が終わると消えます。構造を持った値を保存し続けたい場合は、ストレージ画面でオブジェクト型の永続変数を作成してください。