Command Palette

Search for a command to run...

Presence API

Χρησιμοποίησε το Nowly Presence API για να ενημερώνεις το Discord Rich Presence από μια ενσωμάτωση ιστότοπου.

Δημιουργία ενός Presence

Το Presence είναι ένα global αντικείμενο που εισάγεται από το runtime του Nowly - δεν χρειάζεται να το εισαγάγεις.

Κάθε presence ξεκινά με ένα instance Presence:

const presence = new Presence()

Συμβάν UpdateData

Χρησιμοποίησε το UpdateData για να ανανεώσεις τη δραστηριότητα:

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

setActivity

Το setActivity στέλνει την τρέχουσα δραστηριότητα Discord. Συνήθη πεδία περιλαμβάνουν:

ΠεδίοΤύποςΠεριγραφήΠροεπιλογή
detailsUrlstringΠροαιρετικός δημόσιος σύνδεσμος HTTPS για details (SDK 1.7.0+).-
stateUrlstringΠροαιρετικός δημόσιος σύνδεσμος HTTPS για state (SDK 1.7.0+).-
namestringΠροαιρετικό όνομα δραστηριότητας. Από προεπιλογή χρησιμοποιείται το όνομα της παρουσίας.-
statusDisplayType0 | 1 | 2Πεδίο στη συνοπτική κατάσταση Discord: 0 = name (προεπιλογή), 1 = state, 2 = details.-
detailsstringΚύρια γραμμή δραστηριότητας που εμφανίζεται στο Discord.-
statestringΔευτερεύουσα γραμμή δραστηριότητας που εμφανίζεται κάτω από το details.-
startTimestampnumberUnix timestamp για την παρελθούσα πρόοδο της δραστηριότητας.-
endTimestampnumberUnix timestamp για την υπολειπόμενη πρόοδο της δραστηριότητας.-
largeImageKeystringΚλειδί κύριου asset εικόνας, συνήθως Assets.Logo ή Assets.Thumbnail (globals που παρέχονται από το runtime).-
largeImageTextstringTooltip για τη μεγάλη εικόνα.-
smallImageKeystringΠροαιρετικό κλειδί μικρού asset εικόνας.-
smallImageTextstringTooltip για τη μικρή εικόνα.-
typenumberΤύπος δραστηριότητας Discord από το PresenceType.-
buttonsarrayΠροαιρετικά κουμπιά δραστηριότητας Discord.-

Το Discord απορρίπτει payloads Rich Presence όταν το largeImageText ή το smallImageText περιέχει λιγότερους από δύο χαρακτήρες. Το Nowly καθαρίζει αυτά τα προαιρετικά tooltips και τα παραλείπει όταν το αποτέλεσμα είναι μικρότερο από δύο χαρακτήρες· η εικόνα παραμένει διαθέσιμη.

detailsUrl / stateUrl

Το SDK 1.7.0+ προσθέτει τα προαιρετικά πεδία κειμένου detailsUrl και stateUrl, ώστε οι αντίστοιχες γραμμές δραστηριότητας να γίνονται σύνδεσμοι ανεξάρτητα από τα κουμπιά. Χρειάζεται υποστήριξη από την επέκταση και τον εγγενή κεντρικό υπολογιστή· οι παλιότερες εκδόσεις τα αγνοούν. Το όνομα της δραστηριότητας δεν αλλάζει.

Χρησιμοποιήστε επαληθευμένα δημόσια URL HTTPS χωρίς διαπιστευτήρια, έως 2048 χαρακτήρες. Σύνδεσμοι χωρίς αντίστοιχο κείμενο ή με μη έγκυρο URL παραλείπονται. Διατηρήστε αναγνωριστικά περιεχομένου όπως την παράμετρο v του YouTube, αλλά ποτέ διακριτικά πρόσβασης, ιδιωτικές συνομιλίες, μυστικούς συνδέσμους ή πληροφορίες που κρύβουν οι ρυθμίσεις απορρήτου. Παραλείψτε άγνωστους προορισμούς.

await presence.setActivity({
  details: "Τίτλος βίντεο",
  detailsUrl: "https://www.youtube.com/watch?v=VIDEO_ID",
  state: "Όνομα καναλιού",
  stateUrl: "https://www.youtube.com/@channel",
})

statusDisplayType

Το statusDisplayType επιλέγει το κείμενο της συνοπτικής κατάστασης Discord. Δεν αλλάζει το όνομα, τις λεπτομέρειες ή την κατάσταση στην κάρτα δραστηριότητας.

  • 0 (προεπιλογή): name
  • 1: state
  • 2: details

Για παράδειγμα, εμφάνιση του τίτλου του βίντεο στη συνοπτική κατάσταση, διατηρώντας το όνομα δραστηριότητας και το κανάλι στην κάρτα:

await presence.setActivity({
  name: "Υπηρεσία βίντεο",
  details: "Τίτλος βίντεο",
  state: "Όνομα καναλιού",
  statusDisplayType: 2,
})

Χρησιμοποιήστε έκδοση του SDK που περιλαμβάνει αυτό το πεδίο και ενημερώστε την επέκταση Nowly και τον εγγενή host. Οι παλαιότερες εκδόσεις του runtime αγνοούν το πεδίο και διατηρούν την προεπιλεγμένη εμφάνιση.

clearActivity

Κάλεσε το clearActivity όταν δεν υπάρχει κάτι άξιο να εμφανιστεί:

presence.clearActivity()

PresenceType

Το PresenceType είναι ένα ονομαστικό export από το @nowly/sdk:

import { PresenceType } from "@nowly/sdk"

Αντιστοιχεί σε τύπους δραστηριότητας Discord: Playing, Streaming, Listening, Watching, και Competing.

getSetting

Διάβασε μια ρύθμιση τύπου ανά presence μετά το Presence.Settings. Η τιμή είναι η αποθηκευμένη ρύθμιση του χρήστη, ή η προεπιλογή του ορισμού:

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

Το UpdateData λαμβάνει επίσης το ctx.settings με τον ίδιο χάρτη. Και τα δύο ενημερώνονται όταν ο χρήστης αλλάζει ρυθμίσεις στο πλαϊνό πλαίσιο.

Καταγραφή (Logging)

Χρησιμοποίησε τα presence.info και presence.error για μηνύματα εντοπισμού σφαλμάτων κατά την ανάπτυξη.