変数とデータ

変数の概要(3種類の使い分け)

BotShade では、Bot に値を「覚えさせる」ための仕組みとして 3 種類の変数 が用意されています。それぞれ「どこまでの範囲で値を共有するか」「いつまで値が残るか」が異なります。

3 種類の変数とは(早見表)

種類主な用途値が残る期間どこで作る?
永続変数(ストレージ)スコア・ポイント・設定値など、何度も使い回す値コマンドの実行が終わっても 残り続ける左メニューの「データストレージ」→「変数」タブの「新しい変数を作成」
環境変数他サービスの API キー・トークン・各種 ID を Bot 単位で安全に保管するBot ごとに 残り続ける(管理者が編集・削除するまで)左メニューの「環境変数」→「環境変数を追加」
一時変数コマンドの処理中だけ使う計算用・中間結果の値そのコマンドの実行が 終わると消えるコマンドビルダーの「変数を設定」ノード

永続変数(ストレージ): 値を保持してコマンド実行をまたいで残す

永続変数は、コマンドの実行が終わっても値が残り続ける 変数です。たとえば「コイントスの勝利数」「サーバーのウェルカムメッセージ」「ユーザーごとのポイント」のように、何度も読み書きして使い回す値に向いています。

永続変数は左メニューの「データストレージ」を開いて作成・管理します。

保存される範囲(スコープ)

永続変数を作るときは、その値を「どの範囲で共有するか」を スコープ で選びます。スコープは次の 3 つです。

スコープ共有される範囲使いどころの例
グローバル(Global)Bot 全体で 1 つの値Bot 全体の累計実行回数
サーバー毎(Guild)Discord サーバー単位サーバー内のランキング
ユーザー毎(User)Discord ユーザー単位(サーバーをまたいで共通)個人の通算成績

「変数」タブと「データ型」タブ

「ストレージ」画面には 2 つのタブがあります。

  • 変数: 実際に値を保持する変数を作成・編集します。各変数には「表示名」「リファレンス名」「データタイプ」(値の種類)「スコープ」「デフォルト値」を設定します。リファレンス名は「表示名」から BSVAR_ で始まる名前が自動生成され、画面上では編集できません。
  • データ型: 複数のプロパティ(項目)をまとめた、自分専用の「型」を定義できます。たとえば RPGStats のような型を作り、その中に複数の項目を持たせる、といった使い方ができます。データ型は「データ型を新規作成」で定義するひな形で、実際に値を保持させるには「変数」タブで作った変数にそのデータ型を割り当てます。

詳しい作成手順は 永続変数を作る を参照してください。

環境変数: API キー・トークン・各種 ID を安全に保管する

環境変数は、他サービスの API キー・トークン・Discord の各種 ID・URL など を Bot 単位で安全に保管しておくための機能です。左メニューの「環境変数」から、Bot ごとに登録・編集・削除します。

主な特徴:

  • 変数ごとに シークレット公開 を選べる。シークレットはサーバー側で暗号化保存され、保存後は再表示できない(値の差し替えのみ可能)。
  • 「変数名で検索」「シークレット/公開で絞り込み」「並び替え」で素早く目的の変数を見つけられる。
  • カスタムコマンドの入力欄から {env.NAME} の形で呼び出して使う(NAME は登録した変数名)。
  • 追加・編集・削除を行うと、コマンドビルダーの変数ピッカーの候補にもその場で反映される。

ポイントやスコアのようにコマンドで読み書きする値は永続変数(ストレージ)を、外部サービスへの接続情報や秘密の値は環境変数を使い分けます。詳しくは 環境変数 を参照してください。

一時変数: コマンドビルダーの「変数を設定」ノードで作る

一時変数は、コマンドビルダーの「変数を設定」ノードで作る、そのコマンドの実行中だけ有効な変数 です。計算の途中結果を一時的に置いておきたいときなどに使います。

「変数を設定」ノードの設定画面では、変数名 を入力します。

項目内容
変数名代入先の変数名。後続ノードから {変数名} で参照するときの名前になります
値の種類。文字列 / 数値 / 真偽値 / ユーザー / チャンネル / ロール / オブジェクト から選びます
変数に代入する値

コマンドビルダーの『変数を設定』ノードで作った変数は、原則そのコマンドの実行が終わると消えます。値を残したい場合は永続変数(ストレージ)を使ってください。

{変数名} で参照する基本

作った変数は、コマンドビルダーの入力欄などで {変数名} の形で書くことで、その場所に値が差し込まれます。

  • 一時変数: 「変数を設定」ノードで score という変数名を作ったら、後続のノードで {score} と書いて参照します。
  • 永続変数: 「ストレージ」で作った変数は、自動で付く「リファレンス名」(BSVAR_ から始まる名前)を使って参照します。たとえばリファレンス名が BSVAR_score なら、{BSVAR_score} と書きます。

オブジェクト型の変数の場合は、{変数名.キー名} のように後ろにキー名を付けることで、その中の特定の項目だけを取り出せます。

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

最終更新:

目次