Criando sua primeira presença
Crie uma nova presença Nowly com a CLI e envie sua primeira atividade de Discord Rich Presence.
Comece com a CLI
Use a CLI do Nowly para criar uma nova presença:
nowly init "Example"A CLI cria os metadados, um script de presença e os recursos necessários.
Código básico da presença
Presence e Assets são fornecidos pelo runtime - veja Presence API e Assets.
document é a API DOM padrão do navegador, disponível porque as presenças rodam como content scripts na extensão.
Apenas PresenceType (e outros auxiliares como createMediaTimestamps) precisa ser importado de @nowly/sdk.
import { PresenceType } from "@nowly/sdk"
const presence = new Presence()
presence.on("UpdateData", async () => {
await presence.setActivity({
details: document.title,
state: document.location.hostname,
largeImageKey: Assets.Logo,
type: PresenceType.Watching,
})
})Fluxo em tempo de execução
Quando o usuário visita uma URL correspondente, o Nowly carrega sua presença. A presença lê o estado da página e chama setActivity. A extensão encaminha esse payload para o Nowly Host, que atualiza o Discord.
Ciclo de desenvolvimento
Criar estrutura
Gera a pasta da presença, os metadados e os recursos necessários.
nowly init "Example"Criar estrutura
Gera a pasta da presença, os metadados e os recursos necessários.
nowly init "Example"Configurar
Defina nome, autor, URLs compatíveis, categoria, cor, descrições localizadas e discordNative quando o Discord já suportar a plataforma.
Edite metadata.json - veja Metadata para todos os campos disponíveis.
Configurar
Defina nome, autor, URLs compatíveis, categoria, cor, descrições localizadas e discordNative quando o Discord já suportar a plataforma.
Edite metadata.json - veja Metadata para todos os campos disponíveis.
Implementar
Escreva a lógica da presença usando o SDK de Presence.
import { PresenceType } from "@nowly/sdk"
const presence = new Presence()
presence.on("UpdateData", async () => {
await presence.setActivity({
details: document.title,
largeImageKey: Assets.Logo,
type: PresenceType.Watching,
})
})Implementar
Escreva a lógica da presença usando o SDK de Presence.
import { PresenceType } from "@nowly/sdk"
const presence = new Presence()
presence.on("UpdateData", async () => {
await presence.setActivity({
details: document.title,
largeImageKey: Assets.Logo,
type: PresenceType.Watching,
})
})Validar
Verifica se a estrutura dos metadados está correta e se os recursos estão no lugar.
nowly validateValidar
Verifica se a estrutura dos metadados está correta e se os recursos estão no lugar.
nowly validateCompilar
Compila a presença em um pacote independente.
nowly build exampleCompilar
Compila a presença em um pacote independente.
nowly build exampleCarregar
Instale a presença compilada no navegador. Dois métodos: uma extensão pré-compilada ou um zip solto.
Veja Carregar e testar localmente para a comparação completa.
Primeira vez (sem Nowly no navegador): incorpore a presença em uma extensão pronta.
nowly extension exampleCarregue dist/extension-dev como extensão não compactada em chrome://extensions.
Já tem o Nowly carregado como não compactado: empacote um zip e solte-o em Configurações → Avançado → Depuração. As instalações da Store rejeitam zips não assinados.
nowly pack exampleCarregar
Instale a presença compilada no navegador. Dois métodos: uma extensão pré-compilada ou um zip solto.
Veja Carregar e testar localmente para a comparação completa.
Primeira vez (sem Nowly no navegador): incorpore a presença em uma extensão pronta.
nowly extension exampleCarregue dist/extension-dev como extensão não compactada em chrome://extensions.
Já tem o Nowly carregado como não compactado: empacote um zip e solte-o em Configurações → Avançado → Depuração. As instalações da Store rejeitam zips não assinados.
nowly pack exampleTestar
Abra o site de destino - a presença é ativada automaticamente.
Acesse o site
Testar
Abra o site de destino - a presença é ativada automaticamente.
Acesse o site
Repita Implementar → Compilar → Carregar após cada alteração de código.