Configurações
Adicione configurações tipadas por presença com controles booleanos, de entrada, seleção e slider.
O Que São Configurações
As configurações permitem que os usuários personalizem o comportamento de uma presença sem editar código.
Tipos de Configuração Suportados
O Nowly suporta configurações booleanas, de entrada, seleção e slider.
| Campo | Tipo | Descrição | Padrão |
|---|---|---|---|
boolean | boolean | Alternador para opções ativadas/desativadas. | - |
input | string | Valor de texto livre. | - |
select | string | Um valor selecionado entre opções predefinidas. | - |
slider | number | Valor numérico com mínimo, máximo e incremento opcionais. | - |
Definindo Configurações
Use Presence.Settings para definir configurações tipadas:
A partir do CLI 1.7.0, prefira um settings.ts com exportação padrão ao lado de presence.ts. Ele substitui completamente as definições inline legacy Presence.Settings({ ... }), sem mesclar as fontes. Um arquivo inválido faz o build falhar. Sem esse arquivo, o formato legacy continua compatível.
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()O CLI detecta settings.ts automaticamente, sem importação ou chamada a Presence.Settings em presence.ts. Continua gerando settings.json e registra os valores padrão. Os valores salvos pelo usuário têm prioridade. Use definições declarativas compatíveis com JSON, sem APIs do navegador ou do Node. Para uma leitura explicitamente tipada, use getSetting<boolean>("showButtons").
Lendo Configurações
Use getSetting em tempo de execução. Os valores vêm das configurações salvas do usuário, com fallback para os padrões definidos em Presence.Settings. Alterações ao vivo feitas no painel lateral chegam como SETTINGS_UPDATED e atualizam o mesmo mapa.
Você também pode ler o mapa atual em ctx.settings dentro de UpdateData:
presence.on("UpdateData", async (ctx) => {
const showButtons = await presence.getSetting<boolean>("showButtons")
// mesmo valor: ctx.settings.showButtons
})Rótulos Localizados
Os rótulos e descrições das configurações usam as mesmas chaves de localidade usadas nos metadados.
Padrões
Escolha padrões seguros. Uma presença deve funcionar imediatamente após a instalação, sem exigir configuração.