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

Mga Pahintulot

Tumatanggap ang bots ng permissions bilang Discord-shape na 53-bit integer bitfield. Tugma sa Discord ang bits at ang kahulugan nila; galing ang values sa native na group + channel permission tables ng GameVox. Nagbabalik ng 0 ang bits na walang katapat sa GameVox.

Native → Discord mapping

Discord bitHexSource sa GameVox
ADMINISTRATOR 0x8 groups.group_type IN ('owner', 'admin')
VIEW_CHANNEL 0x400 channel_permissions.view_channel / group_permissions.view_channels
READ_MESSAGE_HISTORY 0x10000 Pareho sa VIEW_CHANNEL (walang hiwalay na history toggle)
SEND_MESSAGES 0x800 send_messages
MANAGE_MESSAGES 0x2000 manage_messages
EMBED_LINKS 0x4000 can_post_links
ATTACH_FILES 0x8000 send_files
ADD_REACTIONS 0x40 add_reactions
MENTION_EVERYONE 0x20000 Admin lang sa v1
CONNECT (voice) 0x100000 join_voice
SPEAK 0x200000 speak_in_voice
STREAM (screen share) 0x200 screen_share
USE_VAD 0x2000000 use_vad (default true; kapag false, PTT ang pinipilit)
KICK_MEMBERS 0x2 kick_users != 'deny'
BAN_MEMBERS 0x4 ban_users != 'deny'
MUTE_MEMBERS 0x400000 mute_users != 'deny'
MOVE_MEMBERS 0x1000000 move_users != 'deny'
MANAGE_CHANNELS 0x10 create_channels / edit_channels / delete_channels na lahat ay hindi 'deny'
MANAGE_GUILD 0x20 edit_server != 'deny'
MANAGE_ROLES 0x10000000 manage_members
MANAGE_NICKNAMES 0x8000000 manage_members (kasama sa MANAGE_ROLES)
CHANGE_NICKNAME 0x4000000 Laging granted (tugma sa default ng Discord)
MANAGE_WEBHOOKS 0x20000000 Owner / admin sa v1
VIEW_AUDIT_LOG 0x80 Owner / admin sa v1
PRIORITY_SPEAKER 0x100 priority_speaker
MANAGE_EVENTS 0x200000000 manage_events != 'deny'
CREATE_EVENTS 0x100000000000 manage_events != 'deny' (kasama sa MANAGE_EVENTS)
MANAGE_GUILD_EXPRESSIONS 0x40000000 manage_emojis != 'deny'
CREATE_GUILD_EXPRESSIONS 0x80000000000 manage_emojis != 'deny' (kasama)
DEAFEN_MEMBERS 0x800000 deafen_users != 'deny'
SEND_MESSAGES_IN_THREADS 0x4000000000 send_messages (kasama sa SEND_MESSAGES)

Default-on na bits

Naka-set ang mga ito para sa bawat member na hindi deny, tugma sa default role behavior ng Discord. Kung chine-check ito ng logic ng bot mo, lagi itong lalabas na granted (maliban kung banned ang member):

  • CREATE_INSTANT_INVITE (0x1)
  • USE_APPLICATION_COMMANDS (0x80000000)
  • USE_EXTERNAL_EMOJIS (0x40000)
  • USE_EXTERNAL_STICKERS (0x2000000000)

Bits na laging zero

Wala pang katapat ang mga ito sa GameVox at nire-report bilang unset. Ang bots na umaasa sa mga ito ay dapat mag-degrade nang maayos (karamihan ng libraries ay tinatrato na ang denied bit bilang “hindi supported ang feature dito”).

  • MANAGE_THREADS, USE_PUBLIC_THREADS, USE_PRIVATE_THREADS: stub pa lang ang threads sa v1.
  • MODERATE_MEMBERS (timeout): walang native na katapat.
  • USE_EMBEDDED_ACTIVITIES: walang Activities feature.
  • USE_SOUNDBOARD, SEND_VOICE_MESSAGES: hindi pa implemented.
  • Monetization bits: walang Premium Apps.

Pag-compute ng permissions

Kapareho ng 7-step algorithm ng Discord:

  1. Magsimula sa @everyone permissions para sa guild.
  2. I-OR ang bawat role na hawak ng member.
  3. Kung may ADMINISTRATOR ang resulta, short-circuit: nasa kanila na ang lahat.
  4. I-apply ang @everyone channel overwrites (allow, tapos deny).
  5. I-apply ang channel overwrites ng bawat role (allow, tapos deny).
  6. I-apply ang channel overwrites ng user (allow, tapos deny).
  7. Kung nasa isang category ang channel, applicable din ang overwrites ng category sa role / user step.

Sa step 2 lumalabas ang pagkakaibang nasa ibaba: nasa iisang grupo lang ang GameVox member, kaya iisang role lang ang io-OR. Tingnan ang Iisang grupo kada member.

Iisang grupo kada member

Ito ang pinakamalaking pagkakaiba sa behavior kumpara sa Discord. Ang GameVox member ay kabilang sa eksaktong isang grupo kada server, samantalang puwedeng humawak ng maraming role nang sabay ang Discord member. Kapag nag-assign ng grupo, papalitan nito ang grupong kinabibilangan ng member dati.

Gumagana pa rin ang role endpoints, at tinatawag pa rin ang mga ito ng libraries na gamit mo na. Nagre-resolve lang sila sa iisang grupong iyon:

CallAno ang nangyayari
PUT .../members/{id}/roles/{rid} Mapupunta ang member sa grupong iyon. Papalitan ang dati niyang grupo, hindi ito pananatilihin kasabay.
DELETE .../members/{id}/roles/{rid} Tinatanggal ito. Kung iyon lang ang grupo niya, babalik siya sa default group ng server sa halip na mawalan ng grupo.
PATCH .../members/{id} na may roles: [...]Tinatanggap, tapos pinaliliit sa grupong may pinakamataas na rank sa listahan. Kapag empty ang listahan, default group ang ibig sabihin.

Pinaliliit ang listahan sa halip na tanggihan para patuloy na gumana ang ordinaryong member.roles.set([...]). Ang pinakamataas na rank ang nananalo dahil rank ang nagtatakda ng posisyon: kung may moderator group at colour group, moderator ang member.

May upload, voice, camera, at screen-share ceilings ang mga grupo, at ang pinaka-generous na ceiling sa mga grupong kinabibilangan ng member ang nakukuha niya. Sa iisang grupo, ceiling lang ng grupo niya iyon. Iyon din ang isa pang dahilan kung bakit hindi puwedeng ilagay ng app ang isang tao sa dalawang grupo: magiging paraan iyon para lampasan ang cap na sinet ng operator.

Hindi apektado ng alinman dito ang sariling grupo ng application, iyong ginawa ng install nito. Sa install nakasalalay ang membership nito, at walang app na puwedeng magdagdag ng sarili nito o mag-alis ng ibang app doon.

Hierarchy ng roles

Nagma-map ang native na groups.rank sa Discord role.position. Puwedeng mag-manage ang bot ng roles na mahigpit na mas mababa sa posisyon ng pinakamataas nitong role, tugma sa rules ng Discord. Nagbabalik ng 403 ang calls sa PATCH .../members/{id}/roles/{rid} na may role na kapantay o mas mataas sa top role ng bot.

Timeouts

Walang katapat sa GameVox v1 ang communication_disabled_until field ng Discord. Ang PATCH sa isang member na may naka-set na field na iyon ay nagbabalik ng 400 na may malinaw na error. Gumamit ng kick / mute / ban sa halip.

← Bumalik sa docs