Crear tu primera presencia
Crea una nueva presencia de Nowly con la CLI y envía tu primera actividad de Discord Rich Presence.
Empieza con la CLI
Usa la CLI de Nowly para generar una nueva presencia:
nowly init "Ejemplo"La CLI crea los metadatos, un script de presencia y los recursos requeridos.
Código básico de una presencia
Presence y Assets los proporciona el runtime - consulta Presence API y Assets.
document es la API DOM estándar del navegador, disponible porque las presencias se ejecutan como scripts de contenido en la extensión.
Solo PresenceType (y otros helpers como createMediaTimestamps) deben importarse desde @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,
})
})Flujo en tiempo de ejecución
Cuando el usuario visita una URL coincidente, Nowly carga tu presencia. La presencia lee el estado de la página y llama a setActivity. La extensión reenvía esos datos a Nowly Host, que actualiza Discord.
Ciclo de desarrollo
Generar
Crea la carpeta de la presencia, los metadatos y los recursos requeridos.
nowly init "Ejemplo"Generar
Crea la carpeta de la presencia, los metadatos y los recursos requeridos.
nowly init "Ejemplo"Configurar
Establece el nombre, autor, URL compatibles, categoría, color, descripciones localizadas y discordNative si Discord ya admite la plataforma.
Edita metadata.json - consulta Metadata para todos los campos disponibles.
Configurar
Establece el nombre, autor, URL compatibles, categoría, color, descripciones localizadas y discordNative si Discord ya admite la plataforma.
Edita metadata.json - consulta Metadata para todos los campos disponibles.
Implementar
Escribe la lógica de la presencia usando el 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
Escribe la lógica de la presencia usando el 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
Comprueba que la estructura de metadatos sea correcta y que los recursos estén en su sitio.
nowly validateValidar
Comprueba que la estructura de metadatos sea correcta y que los recursos estén en su sitio.
nowly validateCompilar
Compila la presencia en un paquete independiente.
nowly build ejemploCompilar
Compila la presencia en un paquete independiente.
nowly build ejemploCargar
Instala la presencia compilada en el navegador. Dos métodos: una extensión precompilada, o soltar un zip.
Consulta Cargar y probar en local para la comparación completa.
Primera vez (Nowly aún no está en el navegador): incluye la presencia en una extensión lista para cargar.
nowly extension ejemploCarga dist/extension-dev como unpacked en chrome://extensions.
Nowly ya cargada unpacked: empaqueta un zip y suéltalo en Ajustes → Avanzado → Debug. Las instalaciones de la tienda rechazan zips sin firma.
nowly pack ejemploCargar
Instala la presencia compilada en el navegador. Dos métodos: una extensión precompilada, o soltar un zip.
Consulta Cargar y probar en local para la comparación completa.
Primera vez (Nowly aún no está en el navegador): incluye la presencia en una extensión lista para cargar.
nowly extension ejemploCarga dist/extension-dev como unpacked en chrome://extensions.
Nowly ya cargada unpacked: empaqueta un zip y suéltalo en Ajustes → Avanzado → Debug. Las instalaciones de la tienda rechazan zips sin firma.
nowly pack ejemploProbar
Abre el sitio web objetivo - la presencia se activa automáticamente.
Visita el sitio
Probar
Abre el sitio web objetivo - la presencia se activa automáticamente.
Visita el sitio
Repite Implementar → Compilar → Cargar después de cada cambio de código.