Geliştirici Portalı
Deneysel Bot ve uygulama platformu aktif olarak geliştiriliyor. Kendi barındırdığın sunucu desteği 13.08.2026'da yayınlandı ve buluta göre daha az özellik sunuyor. Nelerin desteklendiğine bak.
← Dokümanlar

Mesaj bileşenleri

Botlar mesajlarına Discord biçimli components alanını tıpkı Discord'daki gibi ekler; bir tıklama da alışılmış token ve callback akışıyla INTERACTION_CREATE olarak gelir, yani kütüphanelerde değişiklik gerekmez. Bu sayfa GameVox'un neyi gösterdiğini, etkileşimlerin uygulamana nasıl ulaştığını ve sınırların Discord'dan nerede farklılaştığını anlatır.

Neler çalışıyor

  • Düğmeler (type 2, stil 1 ile 5 arası) ve metin seçim menüleri (type 3) içeren eylem satırları (type 1). Bağlantı düğmesi (stil 5) url adresini açar ve hiçbir zaman etkileşim göndermez.
  • Bulut ve kendi barındırdığın sunucular. Bileşenler mesajla birlikte saklanır; REST okumalarında ve MESSAGE_CREATE / MESSAGE_UPDATE içinde döner. Mesajı components: [] ile düzenlemek onları kaldırır.
  • Tüm istemciler. Masaüstü ve web istemcisi, iOS ve Android düğmeleri ve metin seçim menülerini gösterir (mesaj başına en fazla 5 satır, satır başına 5 öğe); modalları ve geçici yanıtları da gösterir.
  • Modallar (callback type 9) ve geçici yanıtlar (flags: 64), aşağıda anlatılıyor.

Bir düğme satırı ve bir seçim menüsü içeren mesaj:

POST /api/v10/channels/{channel_id}/messages

{
  "content": "Next map?",
  "components": [
    {
      "type": 1,
      "components": [
        { "type": 2, "style": 1, "label": "Vote", "custom_id": "vote" },
        { "type": 2, "style": 5, "label": "Rules", "url": "https://example.com/rules" }
      ]
    },
    {
      "type": 1,
      "components": [
        {
          "type": 3,
          "custom_id": "map",
          "placeholder": "Pick a map",
          "options": [
            { "label": "Dust", "value": "dust" },
            { "label": "Nuke", "value": "nuke" }
          ]
        }
      ]
    }
  ]
}

Desteklenmeyenler

  • Kullanıcı, rol, bahsedilebilir ve kanal seçim menüleri (type 5 ile 8 arası). Kabul edilir ve saklanırlar, ama istemciler bunları devre dışı gösterir, bu yüzden hiçbir zaman etkileşim üretmezler.
  • Components v2 düzen bileşenleri. Gösterilmezler.
  • Premium düğmeler (stil 6). Devre dışı gösterilirler.
  • DM'ler. Bileşen etkileşimleri, modallar ve geçici yanıtlar yalnızca sunucu kanallarında çalışır.

Tıklama almak

Bir tıklama type: 3 (MESSAGE_COMPONENT) olan bir INTERACTION_CREATE olarak gelir; data.custom_id, data.component_type ve seçim menüsündeyse data.values taşır. message, botunun intent'lerinden bağımsız olarak, bileşenleriyle birlikte tıklanan mesajın tamamıdır. Gönderilen bir modal type: 5 (MODAL_SUBMIT) olarak gelir; girilen değerler data.components içindedir.

GameVox her tıklamayı, uygulaman görmeden önce saklanan mesaja göre denetler: öğe hâlâ mesajda ve etkin olmalı, seçim değerleri seçenekler arasında ve min_values / max_values sınırları içinde olmalı, üye de kanalı görebilmelidir. Tıklama yalnızca mesajı gönderen botun uygulamasına iletilir.

Etkileşimler botunun gateway bağlantısı üzerinden iletilir ya da ayarladıysan Etkileşim Endpoint URL'ne POST edilir (bkz. OAuth2). HTTP modunda iki şey Discord'dan farklıdır:

  • Yine de bir gateway oturumunu bağlı tut. GameVox her etkileşimi endpoint'ine POST etmeden önce bu oturum üzerinden uygulamana teslim eder. Bağlı oturum yoksa hiçbir şey iletilmez ve tıklayan üyeye uygulamanın çevrimiçi olmadığı söylenir.
  • Yanıt gövdesi yok sayılır. POST /interactions/{id}/{token}/callback çağırarak yanıtla; POST'a verilen yanıtın gövdesinde döndürülen bir callback kimseye ulaşmaz.

Yanıt vermek

Alışılmış callback endpoint'ini kullan. Etkileşim token'ı 15 dakika geçerlidir.

TürEtkisi
4 CHANNEL_MESSAGE_WITH_SOURCE Kanala bir yanıt gönderir. flags: 64 ile yanıt geçicidir.
5 DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE Hemen onaylar; ilk PATCH .../messages/@original yanıtı gönderir. flags: 64 ile o yanıt geçicidir.
6 DEFERRED_UPDATE_MESSAGE Görünür bir değişiklik olmadan onaylar. Ardından @original tıklanan mesajı gösterir, yani sonraki bir PATCH .../messages/@original onu düzenler.
7 UPDATE_MESSAGE Tıklanan mesajı bileşenleriyle birlikte yerinde düzenler.
9 MODAL Tıklayan üye için bir modal açar.

Takip mesajları (etkileşim başına en fazla 5, geçici için flags: 64) ile @original ve takip mesajları üzerindeki GET / PATCH / DELETE, Discord'daki gibi çalışır. Type 4, 5 ve 9 ile geçici yanıtlar slash komutlarında da çalışır; type 6 ve 7 tıklanmış bir mesaj gerektirir.

Geçici yanıtlar

Geçici bir yanıt yalnızca etkileşimi başlatan üyeye, açık olan oturumlarına gider ve yalnızca ona görünür olarak işaretlenir. Kanala hiçbir zaman yazılmaz: mesaj geçmişinde ya da MESSAGE_CREATE içinde yer almaz, üye sayfayı yenilediğinde kaybolur ve uygulaman onu 15 dakika boyunca düzenleyebilir ya da silebilir. Geçici bir yanıttaki bileşenler diğerleri gibi çalışır. Bulut ve kendi barındırdığın sunucularda durum aynıdır.

Modallar

  • Metin girişlerinden (type 4) oluşan en fazla 5 eylem satırı. Modaldaki diğer her şey atılır. Stil 1 tek satır, stil 2 paragraftır.
  • Başlık ve etiketler 45 karaktere, yer tutucular 100 karaktere kısaltılır. Bir giriş en fazla 4000 karakter alır. required varsayılan olarak true'dur.
  • GameVox, uygulaman görmeden önce gönderimi açtığı modala göre denetler (zorunlu alanlar, min_length, max_length).
  • Bir modalın süresi 15 dakika sonra dolar ve yalnızca bir kez gönderilebilir.

Sınırlar

  • Bir mesajdaki components: bulut sunucularında 64 KiB JSON; kendi barındırdığın sunucularda 128 KiB ve en üst düzeyde 40 bileşen. Daha büyük bir istek 400 ile başarısız olur.
  • custom_id: en fazla 100 karakter; daha uzun olanı taşıyan bir öğe kullanılamaz. Seçim menüleri: her biri en fazla 100 karakter olan en fazla 25 değer.
  • Tıklamalar: üye ve sunucu başına 0,7 saniyede bir bileşen etkileşimi. Kendi barındırdığın bir sunucu ayrıca üye başına 5 saniyede en fazla 5 tıklamaya izin verir. Daha hızlı tıklamalar reddedilir ve uygulamana hiçbir zaman ulaşmaz.
  • Geçici yanıtlar ve modallar: her üye için uygulama başına 15 dakikalık bir pencerede toplam 120. Var olanı düzenlemek sayılmaz. Sınır aşılınca istek 429 ile başarısız olur.
  • Geçici yanıt içeriği: en fazla 4000 karakter.

← Dokümanlara dön