Command Palette

Search for a command to run...

設定

boolean、input、select、sliderのコントロールを使って型付けされたプレゼンス個別の設定を追加します。

設定とは

設定を使うと、ユーザーはコードを編集せずにプレゼンスの動作をカスタマイズできます。

サポートされている設定の種類

Nowlyはboolean、input、select、sliderの設定をサポートしています。

フィールドタイプ説明デフォルト
booleanboolean有効/無効のオプションを切り替えます。-
inputstring自由形式のテキスト値。-
selectstringあらかじめ定義された選択肢から選ぶ1つの値。-
slidernumber任意のmin、max、stepを持つ数値。-

設定の定義

Presence.Settings を使って型付けされた設定を定義します。

CLI 1.7.0 以降では、presence.ts の隣にデフォルトエクスポートを持つ settings.ts を作成する方法を推奨します。このファイルは従来のインライン定義 Presence.Settings({ ... }) を完全に置き換え、両者は統合されません。ファイルが無効な場合はビルドが失敗します。ファイルがなければ、従来の legacy 形式も利用できます。

import type { PresenceSetting } from "@nowly/sdk"

export default {
  showButtons: {
    type: "boolean",
    default: true,
    label: {
      "en-US": "Show buttons"
    }
  }
} satisfies Record<string, PresenceSetting>
const presence = new Presence()

CLI は settings.ts を自動検出します。presence.ts でのインポートや Presence.Settings の呼び出しは不要です。引き続き settings.json を生成し、デフォルト値を登録します。ユーザーが保存した値が優先されます。ブラウザーや Node の API を使わず、JSON 互換の宣言的な定義にしてください。明示的な型が必要な場合は getSetting<boolean>("showButtons") を使います。

設定の読み取り

実行時には getSetting を使用します。値はユーザーが保存した設定から取得され、未設定の場合は Presence.Settings のデフォルト値にフォールバックします。サイドパネルからのライブ変更は SETTINGS_UPDATED として届き、同じマップを更新します。

UpdateData 内の ctx.settings から現在のマップを読み取ることもできます。

presence.on("UpdateData", async (ctx) => {
  const showButtons = await presence.getSetting<boolean>("showButtons")
  // 同じ値: ctx.settings.showButtons
})

多言語対応のラベル

設定のラベルと説明は、メタデータで使用されているのと同じロケールキーを使用します。

デフォルト値

安全なデフォルト値を選んでください。プレゼンスは、設定をしなくてもインストール直後から動作するべきです。