データ型(カスタム型)を定義する
「データ型」は、複数の項目(プロパティ)をひとまとめにした オブジェクトの設計図 です。たとえば「レベル」「経験値」「所持金」をまとめた RPGStats を定義しておくと、オブジェクト型の変数を作るときに同じ構造を使い回せます。データ型はストレージ画面の「データ型」タブで管理します。
データ型そのものは値を持たず、作っただけでは Bot の動作は変わりません。変数作成フォームで「データタイプ」を「オブジェクト(Object)」にし、「Load Type...」から選ぶと、そのプロパティ(キー名・型・初期値)がまとめて読み込まれます。「ユーザー(User)」「チャンネル(Channel)」型の変数では、「ユーザー/チャンネルごとのデータタイプ」にも作成済みのデータ型が並びます。
データ型は お使いのブラウザ(ローカルストレージ)にのみ保存 されます。
- 別の端末や別のブラウザ、共同編集者の画面には表示されません。
- ブラウザの履歴やサイトデータを消去すると、失われることがあります。
Bot に保存されるのはデータ型を読み込んで作った 変数 のほうなので、データ型が消えても保存済みの変数の中身には影響しません。
既存のデータ型を編集しても、それを読み込んで作った変数の内容は自動では変わりません。変更を反映したい場合は、変数を開いて読み込み直してください。
最初から用意されている組み込みの型
| データ型 | 表すもの | プロパティ |
|---|---|---|
User | Discord ユーザー / サーバーメンバー | name、id、mention、displayName、icon、avatar、displayAvatar、guildAvatar、displayBanner、guildBanner、bot、status、color、roles、createdAt、joinedAt |
Guild | Discord サーバー(ギルド) | name、id、memberCount、icon、banner、owner、boostCount、boostLevel、createdAt、roles、members、channels、categories、textChannels、voiceChannels、stageChannels、threads、emojis、stickers |
Channel | チャンネル | name、id、mention、type、topic、slowmode、nsfw、position、category、createdAt、lastMessage、members、bitrate、userLimit |
Role | ロール | name、id、mention、color、position、icon、hoist、mentionable、managed |
Time | 日付と時刻 | unix、relative、long、short、shortTime、longTime、shortDate、longDate、longDateWithWeekAndShortTime |
Emoji | サーバーのカスタム絵文字 | name、id、mention、url、animated |
Sticker | サーバーのカスタムスタンプ | name、id、url |
Message | メッセージ | content、id、author、channel、createdAt、url |
Money | 経済システムの金額 | value、format |
Url | URL 文字列 | url |
プロパティを付けずに {User} や {Now} のように参照したときは、代表的な表記になります(User・Guild・Channel・Role・Sticker は name、Time は short、Emoji は mention、Message は content、Money は format、Url は url)。
値が入る条件のあるプロパティは次のとおりです。
User.statusはonline/idle/dnd/offlineのいずれかです。Bot にプレゼンス インテントが無い場合や、対象がサーバーメンバーでない場合は常にofflineになります。User.colorは、色付きロールのうち最上位のロールの色を#rrggbbで返します。サーバーメンバーでない場合や色付きロールが無い場合は空で、埋め込みの色に使うと色なしになります。User.avatarは本人が設定したアバターの URL で、デフォルトアバターのままなら空です。実際に表示されているアバターはdisplayAvatar(iconも同じ値)です。Guild.membersはキャッシュに載っているメンバーだけを返します。人数の合計にはmemberCountを使ってください。Channel.slowmode・positionは対応しない種別のチャンネルでは0、bitrate・userLimitはボイス / ステージチャンネルでのみ値が入ります。lastMessageはキャッシュに残っている最新メッセージで、無い場合は解決されません。Message.contentはメッセージコンテンツ インテントが有効なときだけ値が入ります。Role.iconはロールアイコンの画像 URL です。ユニコード絵文字を設定している場合は含まれません。Timeの表示例:shortTimeは09:00、longTimeは09:00:00、shortDateは2024/03/02、longDateは2024年3月2日、longDateWithWeekAndShortTimeは2024年3月2日土曜日 09:00です。
Guild.roles や User.roles のように複数の要素を持つプロパティは、{Guild.roles.length}(件数)、{User.roles.0.name}(0 から数えた番号)、.first / .last で取り出せます(ロールは @everyone を除き、上位のものから並びます)。何も付けずに参照すると、各要素の文字列表現を並べた JSON 配列になります。
組み込みの型も、自分で作った型と同じように編集・削除できます。ただし経済システム用の Money 型だけは削除できません。
プロパティに使える型
「データ型」タブのフォームで選べるプロパティの型は「文字列」「数値」「真偽値」の 3 種類だけです。変数作成フォームでプロパティを直接編集する場合は、これに加えて「ユーザー」「チャンネル」「ロール」「オブジェクト」「配列」も選べます。
入れ子の構造
変数作成フォームでプロパティを直接編集すると、オブジェクトの中に 配列 を、配列の要素に オブジェクト を入れた入れ子の構造を作れます(「データ型」タブでは入れ子を定義できません)。永続変数(BSVAR_)に保存しても入れ子のまま保たれます。
profile (Object)
├─ name : 文字列
├─ level: 数値
└─ items: 配列 (要素の型: Object)
└─ { name: 文字列, count: 数値 }配列型のプロパティでは「要素の型」を選び、「オブジェクト(Object)」にすると要素のプロパティを編集できます。
中身は、ドット記法で取り出します。
| 書き方 | 取り出すもの |
|---|---|
{BSVAR_profile.name} | プロフィールの名前 |
{BSVAR_profile.items.length} | アイテムの個数 |
{BSVAR_profile.items.0.name} | 先頭アイテムの名前 |
配列に要素を足したり特定の要素を更新したりするときは、配列操作ノードを使います。永続変数の配列も、BSVAR_ で始まるリファレンス名でそのまま指定できます。
関連ページ
- 永続変数 —
BSVAR_変数とスコープ - コマンド内での変数の使い方 — 変数を式の中で読み書きする方法
最終更新: