Command Palette

Search for a command to run...

Presence API

Gunakan Presence API Nowly untuk mengemas kini Discord Rich Presence daripada integrasi laman web.

Mencipta Presence

Presence ialah global yang disuntik oleh runtime Nowly - anda tidak perlu mengimportnya.

Setiap presence bermula dengan satu instance Presence:

const presence = new Presence()

Acara UpdateData

Gunakan UpdateData untuk menyegarkan aktiviti:

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

setActivity

setActivity menghantar aktiviti Discord semasa. Medan biasa termasuk:

MedanJenisPeneranganLalai
detailsUrlstringPautan HTTPS awam pilihan untuk details (SDK 1.7.0+).-
stateUrlstringPautan HTTPS awam pilihan untuk state (SDK 1.7.0+).-
namestringNama aktiviti pilihan. Nama presence digunakan secara lalai.-
statusDisplayType0 | 1 | 2Medan dalam status ringkas Discord: 0 = name (lalai), 1 = state, 2 = details.-
detailsstringBaris aktiviti utama yang dipaparkan dalam Discord.-
statestringBaris aktiviti kedua dipaparkan di bawah details.-
startTimestampnumberCap masa Unix untuk kemajuan aktiviti yang telah berlalu.-
endTimestampnumberCap masa Unix untuk kemajuan aktiviti yang berbaki.-
largeImageKeystringKunci aset imej utama, biasanya Assets.Logo atau Assets.Thumbnail (global disediakan oleh runtime).-
largeImageTextstringPetunjuk untuk imej besar.-
smallImageKeystringKunci aset imej kecil pilihan.-
smallImageTextstringPetunjuk untuk imej kecil.-
typenumberJenis aktiviti Discord daripada PresenceType.-
buttonsarrayButang aktiviti Discord pilihan.-

Discord menolak payload Rich Presence apabila largeImageText atau smallImageText mengandungi kurang daripada dua aksara. Nowly membersihkan tooltip pilihan ini dan mengabaikannya apabila hasilnya kurang daripada dua aksara; imej masih tersedia.

detailsUrl / stateUrl

SDK 1.7.0+ menambah medan teks pilihan detailsUrl dan stateUrl untuk menjadikan baris aktiviti masing-masing boleh diklik, berasingan daripada butang. Sambungan dan hos natif perlu menyokongnya; versi lama mengabaikannya. Nama aktiviti tidak berubah.

Gunakan URL HTTPS awam yang disahkan, tanpa bukti kelayakan dan tidak melebihi 2048 aksara. Pautan tanpa teks sepadan atau URL yang sah digugurkan. Kekalkan pengecam kandungan seperti parameter YouTube v, tetapi jangan kongsi token akses, perbualan peribadi, pautan rahsia atau maklumat yang disembunyikan oleh tetapan privasi. Gugurkan destinasi yang tidak diketahui.

await presence.setActivity({
  details: "Tajuk video",
  detailsUrl: "https://www.youtube.com/watch?v=VIDEO_ID",
  state: "Nama saluran",
  stateUrl: "https://www.youtube.com/@channel",
})

statusDisplayType

statusDisplayType memilih teks dalam status ringkas Discord. Ia tidak mengubah nama, butiran atau status pada kad aktiviti.

  • 0 (lalai): name
  • 1: state
  • 2: details

Contohnya, paparkan tajuk video dalam status ringkas sambil mengekalkan nama aktiviti dan saluran pada kad:

await presence.setActivity({
  name: "Perkhidmatan video",
  details: "Tajuk video",
  state: "Nama saluran",
  statusDisplayType: 2,
})

Gunakan versi SDK yang menyertakan medan ini dan kemas kini sambungan Nowly serta hos natif. Versi runtime yang lebih lama mengabaikan medan ini dan mengekalkan paparan status lalai.

clearActivity

Panggil clearActivity apabila tiada apa yang berbaloi untuk dipaparkan:

presence.clearActivity()

PresenceType

PresenceType ialah eksport bernama daripada @nowly/sdk:

import { PresenceType } from "@nowly/sdk"

Ia memetakan kepada jenis aktiviti Discord: Playing, Streaming, Listening, Watching, dan Competing.

getSetting

Baca tetapan bertaip bagi setiap presence selepas Presence.Settings. Nilai ialah tetapan tersimpan pengguna, atau lalai definisi:

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

UpdateData turut menerima ctx.settings dengan peta yang sama. Kedua-duanya dikemas kini apabila pengguna menukar tetapan dalam panel sisi.

Pengelogan

Gunakan presence.info dan presence.error untuk mesej penyahpepijatan semasa pembangunan.