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
urlnito 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 maycomponents: []. - 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.
| Type | Epekto |
|---|---|
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
componentssa isang message: 64 KiB ng JSON sa cloud servers; 128 KiB at 40 top-level components sa self-hosted servers. Pumapalya nang may400ang 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.