Command Palette

Search for a command to run...

Presence API

Użyj Presence API Nowly, aby aktualizować Discord Rich Presence z integracji ze stroną internetową.

Tworzenie obecności

Presence jest obiektem globalnym wstrzykiwanym przez środowisko uruchomieniowe Nowly - nie musisz go importować.

Każda obecność zaczyna się od instancji Presence:

const presence = new Presence()

Zdarzenie UpdateData

Użyj UpdateData, aby odświeżyć aktywność:

presence.on("UpdateData", async () => {
  await presence.setActivity({
    details: "Watching a video",
  })
})

setActivity

setActivity wysyła bieżącą aktywność Discorda. Typowe pola obejmują:

PoleTypOpisDomyślny
detailsUrlstringOpcjonalny publiczny link HTTPS dla details (SDK 1.7.0+).-
stateUrlstringOpcjonalny publiczny link HTTPS dla state (SDK 1.7.0+).-
namestringOpcjonalna nazwa aktywności. Domyślnie używana jest nazwa obecności.-
statusDisplayType0 | 1 | 2Pole w skróconym statusie Discord: 0 = name (domyślnie), 1 = state, 2 = details.-
detailsstringGłówna linia aktywności wyświetlana w Discordzie.-
statestringDruga linia aktywności wyświetlana pod details.-
startTimestampnumberZnacznik czasu Unix dla upływu postępu aktywności.-
endTimestampnumberZnacznik czasu Unix dla pozostałego postępu aktywności.-
largeImageKeystringKlucz głównego zasobu obrazu, zwykle Assets.Logo lub Assets.Thumbnail (globalne dostarczane przez środowisko uruchomieniowe).-
largeImageTextstringPodpowiedź dla dużego obrazu.-
smallImageKeystringOpcjonalny klucz małego zasobu obrazu.-
smallImageTextstringPodpowiedź dla małego obrazu.-
typenumberTyp aktywności Discorda z PresenceType.-
buttonsarrayOpcjonalne przyciski aktywności Discorda.-

Discord odrzuca payload Rich Presence, gdy largeImageText lub smallImageText zawiera mniej niż dwa znaki. Nowly przycina te opcjonalne podpowiedzi i pomija je, gdy wynik ma mniej niż dwa znaki; obraz pozostaje dostępny.

detailsUrl / stateUrl

SDK 1.7.0+ dodaje opcjonalne pola tekstowe detailsUrl i stateUrl, które tworzą odnośniki dla odpowiednich wierszy aktywności, niezależnie od przycisków. Rozszerzenie i host natywny muszą je obsługiwać; starsze wersje je ignorują. Nazwa aktywności się nie zmienia.

Używaj sprawdzonych publicznych adresów HTTPS bez danych logowania, o długości do 2048 znaków. Linki bez odpowiadającego tekstu lub z nieprawidłowym adresem są pomijane. Zachowuj identyfikatory treści, np. parametr YouTube v, ale nigdy nie udostępniaj tokenów dostępu, prywatnych rozmów, tajnych linków ani informacji ukrytych przez ustawienia prywatności. Pomijaj nieznane cele.

await presence.setActivity({
  details: "Tytuł filmu",
  detailsUrl: "https://www.youtube.com/watch?v=VIDEO_ID",
  state: "Nazwa kanału",
  stateUrl: "https://www.youtube.com/@channel",
})

statusDisplayType

statusDisplayType wybiera tekst skróconego statusu Discord. Nie zmienia nazwy, szczegółów ani stanu na karcie aktywności.

  • 0 (domyślnie): name
  • 1: state
  • 2: details

Na przykład można wyświetlić tytuł filmu w skróconym statusie, zachowując nazwę aktywności i kanał na karcie:

await presence.setActivity({
  name: "Serwis wideo",
  details: "Tytuł filmu",
  state: "Nazwa kanału",
  statusDisplayType: 2,
})

Użyj wersji SDK zawierającej to pole i zaktualizuj rozszerzenie Nowly oraz host natywny. Starsze wersje środowiska uruchomieniowego ignorują to pole i zachowują domyślny widok statusu.

clearActivity

Wywołaj clearActivity, gdy nie ma nic wartego pokazania:

presence.clearActivity()

PresenceType

PresenceType to nazwany eksport z @nowly/sdk:

import { PresenceType } from "@nowly/sdk"

Mapuje się na typy aktywności Discorda: Playing, Streaming, Listening, Watching i Competing.

getSetting

Odczytaj typowane ustawienie danej obecności po Presence.Settings. Wartość to zapisane ustawienie użytkownika lub wartość domyślna z definicji:

const showButtons = await presence.getSetting<boolean>("showButtons")

UpdateData również otrzymuje ctx.settings z tą samą mapą. Oba są aktualizowane, gdy użytkownik zmienia ustawienia w panelu bocznym.

Logowanie

Użyj presence.info i presence.error do komunikatów debugowania podczas developmentu.