설정
boolean, input, select, slider 컨트롤로 프레즌스별 타입 지정 설정을 추가하세요.
설정이란
설정을 사용하면 사용자가 코드를 수정하지 않고도 프레즌스의 동작을 사용자 지정할 수 있습니다.
지원되는 설정 유형
Nowly는 boolean, input, select, slider 설정을 지원합니다.
| 필드 | 유형 | 설명 | 기본값 |
|---|---|---|---|
boolean | boolean | 활성화/비활성화 옵션을 위한 토글. | - |
input | string | 자유 형식의 텍스트 값. | - |
select | string | 미리 정의된 옵션 중에서 선택된 하나의 값. | - |
slider | number | 선택적인 최소값, 최대값, 단계를 가진 숫자 값. | - |
설정 정의하기
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에서 import하거나 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
})현지화된 레이블
설정 레이블과 설명은 메타데이터에서 사용하는 것과 동일한 로케일 키를 사용합니다.
기본값
안전한 기본값을 선택하세요. 프레즌스는 설정 없이도 설치 직후 바로 작동해야 합니다.