Developer Portal
Eksperimental Aktibo pang dine-develop ang bot at app platform. Na-ship ang suporta para sa self-hosted servers noong 2026-08-13, pero mas kaunti ang features nito kumpara sa cloud. Tingnan kung ano ang supported.
← Docs

Message components

Nagkakabit ang bots ng Discord-shaped na components sa mga message nila gaya ng sa Discord, at dumarating ang click bilang INTERACTION_CREATE na may karaniwang token at callback flow, kaya walang kailangang baguhin sa libraries. Saklaw ng page na ito kung ano ang nire-render ng GameVox, paano umaabot sa app mo ang interactions, at kung saan naiiba ang mga limit sa Discord.

Ano ang gumagana

  • Action rows (type 1) na may buttons (type 2, styles 1 hanggang 5) at string selects (type 3). Binubuksan ng link button (style 5) ang url nito at hindi ito kailanman nagpapadala ng interaction.
  • Cloud at self-hosted servers. Sine-save ang components kasama ng message at ibinabalik sa REST reads at sa MESSAGE_CREATE / MESSAGE_UPDATE. Tinatanggal ang mga ito kapag in-edit ang message na may components: [].
  • Lahat ng clients. Nire-render ng desktop at web client, iOS at Android ang buttons at string selects (hanggang 5 rows na may tig-5 controls bawat message) at ipinapakita ang modals at ephemeral replies.
  • Modals (callback type 9) at ephemeral replies (flags: 64), na ipinaliliwanag sa ibaba.

Isang message na may row ng buttons at isang select:

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" }
          ]
        }
      ]
    }
  ]
}

Hindi suportado

  • User, role, mentionable at channel selects (types 5 hanggang 8). Tinatanggap at sine-save ang mga ito, pero naka-disable sa clients, kaya hindi sila kailanman gumagawa ng interaction.
  • Components v2 layout components. Hindi nire-render ang mga ito.
  • Premium buttons (style 6). Naka-disable ang mga ito.
  • DMs. Sa server channels lang gumagana ang component interactions, modals at ephemeral replies.

Pagtanggap ng click

Dumarating ang click bilang INTERACTION_CREATE na may type: 3 (MESSAGE_COMPONENT), dala ang data.custom_id, data.component_type at, para sa select, data.values. Ang message ay ang buong message na na-click, kasama ang components, anuman ang intents ng bot mo. Dumarating ang na-submit na modal bilang type: 5 (MODAL_SUBMIT) at nasa data.components ang mga inilagay na value.

Sine-check ng GameVox ang bawat click laban sa naka-save na message bago ito makita ng app mo: dapat nasa message pa ang control at naka-enable, dapat kabilang sa options ang select values at pasok sa min_values / max_values, at dapat nakikita ng member ang channel. Sa app lang na ang bot ang nag-post ng message dine-deliver ang click.

Dine-deliver ang interactions sa gateway connection ng bot mo, o ipinapadala via POST sa Interactions Endpoint URL mo kung nag-set ka nito (tingnan ang OAuth2). Sa HTTP mode, may dalawang naiiba sa Discord:

  • Panatilihin pa ring nakakonekta ang isang gateway session. Dito ipinapasa ng GameVox ang bawat interaction sa app mo bago ito i-POST sa endpoint mo. Kapag walang nakakonektang session, walang nade-deliver, at sinasabihan ang member na nag-click na hindi online ang app.
  • Hindi pinapansin ang response body. Sumagot sa pamamagitan ng pagtawag sa POST /interactions/{id}/{token}/callback; walang naaabot ang callback na ibinalik sa body ng response sa POST.

Pagsagot

Gamitin ang karaniwang callback endpoint. Valid ang interaction token nang 15 minuto.

TypeEpekto
4 CHANNEL_MESSAGE_WITH_SOURCE Nagpo-post ng reply sa channel. Kapag may flags: 64, ephemeral ang reply.
5 DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE Nag-a-acknowledge agad; ang unang PATCH .../messages/@original ang magpo-post ng reply. Kapag may flags: 64, ephemeral ang reply na iyon.
6 DEFERRED_UPDATE_MESSAGE Nag-a-acknowledge nang walang nakikitang pagbabago. Pagkatapos, ang @original ay tumutukoy sa na-click na message, kaya ang susunod na PATCH .../messages/@original ang mag-e-edit dito.
7 UPDATE_MESSAGE Ine-edit sa mismong lugar ang na-click na message, kasama ang components.
9 MODAL Nagbubukas ng modal para sa member na nag-click.

Gumagana gaya ng sa Discord ang follow-ups (hanggang 5 bawat interaction, flags: 64 para sa ephemeral) at ang GET / PATCH / DELETE sa @original at sa follow-up messages. Gumagana rin sa slash commands ang types 4, 5 at 9 at ang ephemeral replies; kailangan ng na-click na message ang types 6 at 7.

Ephemeral replies

Napupunta lang ang ephemeral reply sa member na nag-trigger ng interaction, sa mga session na bukas niya, at may markang siya lang ang nakakakita. Hindi ito kailanman isinusulat sa channel: wala ito sa message history o sa MESSAGE_CREATE, nawawala ito kapag nag-reload ang member, at puwede itong i-edit o i-delete ng app mo sa loob ng 15 minuto. Gumagana gaya ng iba ang components sa ephemeral reply. Pareho ito sa cloud at self-hosted servers.

Modals

  • Hanggang 5 action rows ng text inputs (type 4). Tinatapon ang anumang iba pa sa modal. Iisang linya ang style 1, paragraph ang style 2.
  • Pinuputol sa 45 characters ang title at labels, at sa 100 ang placeholders. Hanggang 4000 characters ang kasya sa isang input. Default na true ang required.
  • Sine-check ng GameVox ang submission laban sa binuksan nitong modal (required fields, min_length, max_length) bago ito makita ng app mo.
  • Nag-e-expire ang modal pagkalipas ng 15 minuto at isang beses lang puwedeng i-submit.

Mga limit

  • components sa isang message: 64 KiB ng JSON sa cloud servers; 128 KiB at 40 top-level components sa self-hosted servers. Pumapalya nang may 400 ang mas malaking request.
  • custom_id: hanggang 100 characters; hindi magagamit ang control na mas mahaba ang custom_id. Selects: hanggang 25 values na tig-100 characters ang maximum.
  • Clicks: isang component interaction bawat member bawat server kada 0.7 segundo. Sa self-hosted server, may dagdag na limit na 5 clicks bawat member sa loob ng 5 segundo. Tinatanggihan ang mas mabibilis na click at hindi kailanman umaabot sa app mo.
  • Ephemeral replies at modals: 120 bawat app para sa bawat member sa loob ng 15-minutong window, pinagsamang bilang. Hindi binibilang ang pag-edit ng dati na. Kapag lumampas, pumapalya ang request nang may 429.
  • Content ng ephemeral reply: hanggang 4000 characters.

← Bumalik sa docs