Command Palette

Search for a command to run...

Presence API

Bir web sitesi entegrasyonundan Discord Rich Presence'ı güncellemek için Nowly Presence API'yi kullanın.

Bir Presence Oluşturma

Presence, Nowly runtime'ı tarafından enjekte edilen bir globaldir - onu içe aktarmanıza gerek yoktur.

Her presence bir Presence örneğiyle başlar:

const presence = new Presence()

UpdateData Olayı

Etkinliği yenilemek için UpdateData kullanın:

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

setActivity

setActivity, geçerli Discord etkinliğini gönderir. Yaygın alanlar şunlardır:

AlanTürAçıklamaVarsayılan
detailsUrlstringdetails için isteğe bağlı herkese açık HTTPS bağlantısı (SDK 1.7.0+).-
stateUrlstringstate için isteğe bağlı herkese açık HTTPS bağlantısı (SDK 1.7.0+).-
namestringİsteğe bağlı etkinlik adı. Varsayılan olarak presence adı kullanılır.-
statusDisplayType0 | 1 | 2Discord'un kısa durumunda gösterilen alan: 0 = name (varsayılan), 1 = state, 2 = details.-
detailsstringDiscord'da gösterilen birincil etkinlik satırı.-
statestringdetails'in altında gösterilen ikincil etkinlik satırı.-
startTimestampnumberGeçen etkinlik ilerlemesi için Unix zaman damgası.-
endTimestampnumberKalan etkinlik ilerlemesi için Unix zaman damgası.-
largeImageKeystringAna görsel varlık anahtarı, genellikle Assets.Logo veya Assets.Thumbnail (runtime tarafından sağlanan globaller).-
largeImageTextstringBüyük görsel için araç ipucu.-
smallImageKeystringİsteğe bağlı küçük görsel varlık anahtarı.-
smallImageTextstringKüçük görsel için araç ipucu.-
typenumberPresenceType'dan gelen Discord etkinlik türü.-
buttonsarrayİsteğe bağlı Discord etkinlik butonları.-

Discord, largeImageText veya smallImageText iki karakterden az içerdiğinde Rich Presence payload'larını reddeder. Nowly bu isteğe bağlı ipuçlarını temizler ve sonuç iki karakterden kısaysa bunları göndermez; görsel kullanılmaya devam eder.

detailsUrl / stateUrl

SDK 1.7.0+, düğmelerden bağımsız olarak ilgili etkinlik satırını tıklanabilir yapan isteğe bağlı detailsUrl ve stateUrl metin alanlarını ekler. Hem eklenti hem yerel ana makine desteklemelidir; eski sürümler alanları yok sayar. Etkinlik adı değişmez.

Kimlik bilgisi içermeyen, en fazla 2048 karakterlik doğrulanmış herkese açık HTTPS URL'leri kullanın. Karşılık gelen metni olmayan veya geçersiz URL içeren bağlantılar atlanır. YouTube'un v parametresi gibi içerik kimliklerini koruyun; erişim belirteçlerini, özel sohbetleri, gizli bağlantıları veya gizlilik ayarlarının sakladığı bilgileri paylaşmayın. Bilinmeyen hedefleri atlayın.

await presence.setActivity({
  details: "Video başlığı",
  detailsUrl: "https://www.youtube.com/watch?v=VIDEO_ID",
  state: "Kanal adı",
  stateUrl: "https://www.youtube.com/@channel",
})

statusDisplayType

statusDisplayType, Discord'un kısa durumunda gösterilecek metni seçer. Etkinlik kartının adını, ayrıntılarını veya durumunu değiştirmez.

  • 0 (varsayılan): name
  • 1: state
  • 2: details

Örneğin, etkinlik adı ve kanal kartta kalırken kısa durumda video başlığını gösterin:

await presence.setActivity({
  name: "Video hizmeti",
  details: "Video başlığı",
  state: "Kanal adı",
  statusDisplayType: 2,
})

Bu alanı içeren bir SDK sürümü kullanın ve hem Nowly uzantısını hem de yerel ana bilgisayarı güncelleyin. Eski çalışma zamanı sürümleri bu alanı yok sayar ve varsayılan durum görünümünü korur.

clearActivity

Gösterilmeye değer bir şey olmadığında clearActivity'yi çağırın:

presence.clearActivity()

PresenceType

PresenceType, @nowly/sdk'den adlandırılmış bir export'tur:

import { PresenceType } from "@nowly/sdk"

Discord etkinlik türlerine eşlenir: Playing, Streaming, Listening, Watching ve Competing.

getSetting

Presence.Settings'ten sonra tipli, presence başına bir ayarı okuyun. Değer, kullanıcının kaydedilmiş ayarı veya tanımdaki varsayılan değerdir:

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

UpdateData, aynı haritayla birlikte ctx.settings'i de alır. Kullanıcı yan panelde ayarları değiştirdiğinde ikisi de güncellenir.

Günlükleme

Geliştirme sırasında hata ayıklama mesajları için presence.info ve presence.error kullanın.