変数の概要(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}と書きます。
オブジェクト型の変数の場合は、{変数名.キー名} のように後ろにキー名を付けることで、その中の特定の項目だけを取り出せます。
次のステップ / 関連ページ
最終更新: