Estrutura da presença
Entenda a estrutura de pastas exigida para uma presença Nowly.
Estrutura de Pastas
Uma presença fica em src, agrupada pela primeira letra do seu nome:
TXTsrc/Y/YouTube/
|-- metadata.json
|-- presence.ts
`-- assets/
|-- logo.png
|-- icon.png
`-- thumbnail.jpgmetadata.json
metadata.json descreve a plataforma, as URLs compatíveis, o autor, a categoria, as descrições localizadas, os recursos do marketplace e flags opcionais como discordNative.
presence.ts
presence.ts contém a lógica de tempo de execução. Ele detecta o estado da página e chama a API de Presence.
utils/
Para presenças complexas, separe sua lógica em arquivos dedicados dentro de uma pasta utils/. A presença do YouTube, por exemplo, organiza helpers de DOM, parsing de canal e resolução de Shorts em módulos separados:
TXTsrc/Y/YouTube/
|-- metadata.json
|-- presence.ts
|-- assets/
| |-- logo.png
| |-- icon.png
| `-- thumbnail.jpg
`-- utils/
|-- categories.ts
|-- dom.ts
|-- channel.ts
|-- text.ts
|-- bridge.ts
|-- shorts-dom.ts
|-- shorts-resolve.ts
`-- youtube-data.tsO bundler resolve importações locais a partir de presence.ts, então você pode importar os arquivos de utilitários normalmente:
import { findVideo } from "./utils/dom"
import { getChannelInfo } from "./utils/channel"assets
Os recursos são usados pelo marketplace, pelo pacote de presença instalado, pelos payloads de atividade do Discord e pelas imagens Open Graph.
Arquivos obrigatórios:
| Campo | Tipo | Descrição | Padrão |
|---|---|---|---|
logo.png* | PNG, 300×300 | Marca ampla para cabeçalhos do marketplace, páginas de presença e imagens OG geradas. | - |
icon.png* | PNG, 128×128 | Ícone quadrado para superfícies de UI compactas e chaves de imagem de atividade do Discord. | - |
thumbnail.jpg* | JPG, 1920×1080 | Imagem de pré-visualização usada quando a presença precisa de um visual maior. | - |
Essas dimensões são requisitos exatos, verificados pela CI em cada PR de presença - veja Assets para detalhes.