変数とデータ

一時変数(コマンド実行中だけ使う変数)

一時変数は、コマンドの実行中だけ有効な変数です。1 回のコマンド処理の中で「途中の計算結果」や「入力された値」を覚えておき、後ろのノードで使い回すために使います。コマンドの実行が終わると、その値は自動的に消えます。

一時変数とは(コマンドが終わると消える)

一時変数は、次のような用途に向いています。

  • ユーザーが入力した値を、後ろのノードのメッセージに差し込む
  • 計算した結果(料金 × 1.1 など)を一度しまっておき、何度も使い回す
  • 「条件に当てはまったかどうか」のフラグ(はい / いいえ)を覚えておく

一時変数は、コマンドビルダーの中で名前を付けて作ります。作った変数は、その変数を作ったノードより後ろのノード{変数名} の形で参照できます。値を使いたいノードよりも前に、その値を作るノードを置いてください。

永続変数との違い(残したいなら必ずストレージで作る)

BotShade の変数には、大きく分けて 2 種類あります。値が「いつ消えるか」が最大の違いです。

種類いつ消えるか作る場所名前の形主な使いどころ
一時変数(ローカル変数)コマンドの実行が終わると自動的に消えるコマンドビルダー内のノード普通の名前(例: score)1 回の処理の中だけで使う途中計算・入力値
永続変数自分で削除するまで残る(保存される)ストレージ画面BSVAR_ で始まる名前(例: BSVAR_score)サーバーやユーザーごとの累計・設定など

ストレージ画面で作成した永続変数の名前は、自動的に 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_ を付けない普通の名前(例: scoretmp_result)にします。英字・数字・アンダースコア(_)で分かりやすい名前を付けるのがおすすめです。

変数名を 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 / 22.5)。

条件分岐のフラグとして使う

「ある条件に当てはまったか」の判定結果を「真偽値 (boolean)」型の一時変数に入れておき、後ろの条件分岐ノードで参照する使い方もできます。1 か所で判定した結果を複数の場所で使い回せます。条件分岐の詳しい使い方は条件分岐を参照してください。

存在しない一時変数名を {} で参照すると、そのノードに警告が表示されます。変数名のスペルと、その変数が参照するノードより前で作られているかを確認してください。

オブジェクト型一時変数とプロパティ参照

「型」で「オブジェクト (Object)」を選ぶと、「値」の単一入力欄の代わりに「プロパティ」エディタが表示されます。1 つの一時変数の中に、複数の名前付きの値(プロパティ)をまとめて持たせたいときに使います。

「プロパティを追加」をクリックする

「プロパティ」見出しの右にある「プロパティを追加」ボタンをクリックすると、プロパティが 1 件追加されます。プロパティは最大 50 件まで作れます。

「キー名」を入力する

各プロパティの「キー名」欄に、プロパティの名前を入力します。キー名は英字・数字・アンダースコア(_)のみで、先頭は英字または _ にしてください。

「型」と「値」を設定する

プロパティごとに「型」を選び、「値」を入力します。プロパティの値の欄でも {変数名} 参照や ${ ... } 式が使えます。

定義したプロパティは、後続ノードから {変数名.キー名} の形式で参照できます。不要になったプロパティは個別に削除できます。

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

  • 変数と式の使い方 — 変数の基本、{変数名}${ ... } 式、各ノードでの変数の作り方の総まとめ
  • オプション — オプション(引数)を追加して {option_<名前>} で受け取る
  • アクション — 「変数を設定」を含む動作ノードの一覧
  • 条件分岐 — 一時変数を使った分岐の作り方
  • ストレージ — 値を保存し続ける永続変数(BSVAR_)の作成・管理

最終更新:

目次