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:
| Alan | Tür | Açıklama | Varsayılan |
|---|---|---|---|
detailsUrl | string | details için isteğe bağlı herkese açık HTTPS bağlantısı (SDK 1.7.0+). | - |
stateUrl | string | state için isteğe bağlı herkese açık HTTPS bağlantısı (SDK 1.7.0+). | - |
name | string | İsteğe bağlı etkinlik adı. Varsayılan olarak presence adı kullanılır. | - |
statusDisplayType | 0 | 1 | 2 | Discord'un kısa durumunda gösterilen alan: 0 = name (varsayılan), 1 = state, 2 = details. | - |
details | string | Discord'da gösterilen birincil etkinlik satırı. | - |
state | string | details'in altında gösterilen ikincil etkinlik satırı. | - |
startTimestamp | number | Geçen etkinlik ilerlemesi için Unix zaman damgası. | - |
endTimestamp | number | Kalan etkinlik ilerlemesi için Unix zaman damgası. | - |
largeImageKey | string | Ana görsel varlık anahtarı, genellikle Assets.Logo veya Assets.Thumbnail (runtime tarafından sağlanan globaller). | - |
largeImageText | string | Büyük görsel için araç ipucu. | - |
smallImageKey | string | İsteğe bağlı küçük görsel varlık anahtarı. | - |
smallImageText | string | Küçük görsel için araç ipucu. | - |
type | number | PresenceType'dan gelen Discord etkinlik türü. | - |
buttons | array | İ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):name1:state2: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.