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. Συνήθη πεδία περιλαμβάνουν:
| Πεδίο | Τύπος | Περιγραφή | Προεπιλογή |
|---|---|---|---|
detailsUrl | string | Προαιρετικός δημόσιος σύνδεσμος HTTPS για details (SDK 1.7.0+). | - |
stateUrl | string | Προαιρετικός δημόσιος σύνδεσμος HTTPS για state (SDK 1.7.0+). | - |
name | string | Προαιρετικό όνομα δραστηριότητας. Από προεπιλογή χρησιμοποιείται το όνομα της παρουσίας. | - |
statusDisplayType | 0 | 1 | 2 | Πεδίο στη συνοπτική κατάσταση Discord: 0 = name (προεπιλογή), 1 = state, 2 = details. | - |
details | string | Κύρια γραμμή δραστηριότητας που εμφανίζεται στο Discord. | - |
state | string | Δευτερεύουσα γραμμή δραστηριότητας που εμφανίζεται κάτω από το details. | - |
startTimestamp | number | Unix timestamp για την παρελθούσα πρόοδο της δραστηριότητας. | - |
endTimestamp | number | Unix timestamp για την υπολειπόμενη πρόοδο της δραστηριότητας. | - |
largeImageKey | string | Κλειδί κύριου asset εικόνας, συνήθως Assets.Logo ή Assets.Thumbnail (globals που παρέχονται από το runtime). | - |
largeImageText | string | Tooltip για τη μεγάλη εικόνα. | - |
smallImageKey | string | Προαιρετικό κλειδί μικρού asset εικόνας. | - |
smallImageText | string | Tooltip για τη μικρή εικόνα. | - |
type | number | Τύπος δραστηριότητας Discord από το PresenceType. | - |
buttons | array | Προαιρετικά κουμπιά δραστηριότητας 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(προεπιλογή):name1:state2: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 για μηνύματα εντοπισμού σφαλμάτων κατά την ανάπτυξη.