Portal do Desenvolvedor
Experimental A plataforma de bots e apps está em desenvolvimento ativo. O suporte a servidores auto-hospedados chegou em 13/08/2026 com menos recursos que a nuvem. Veja o que é suportado.
← Documentação

Permissões

Os bots recebem as permissões como um campo de bits inteiro de 53 bits no formato do Discord. Os bits e seus significados batem com o Discord; os valores vêm das tabelas nativas de permissões de grupo e de canal do GameVox. Bits sem equivalente no GameVox devolvem 0.

Mapeamento nativo → Discord

Bit do DiscordHexOrigem no GameVox
ADMINISTRATOR 0x8 groups.group_type IN ('owner', 'admin')
VIEW_CHANNEL 0x400 channel_permissions.view_channel / group_permissions.view_channels
READ_MESSAGE_HISTORY 0x10000 Igual ao VIEW_CHANNEL (não há chave de histórico separada)
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 Só para admins na v1
CONNECT (voice) 0x100000 join_voice
SPEAK 0x200000 speak_in_voice
STREAM (screen share) 0x200 screen_share
USE_VAD 0x2000000 use_vad (true por padrão; em false, força apertar para falar)
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 todos diferentes de 'deny'
MANAGE_GUILD 0x20 edit_server != 'deny'
MANAGE_ROLES 0x10000000 manage_members
MANAGE_NICKNAMES 0x8000000 manage_members (agrupado com MANAGE_ROLES)
CHANGE_NICKNAME 0x4000000 Sempre concedido (igual ao padrão do Discord)
MANAGE_WEBHOOKS 0x20000000 Dono / admin na v1
VIEW_AUDIT_LOG 0x80 Dono / admin na v1
PRIORITY_SPEAKER 0x100 priority_speaker
MANAGE_EVENTS 0x200000000 manage_events != 'deny'
CREATE_EVENTS 0x100000000000 manage_events != 'deny' (agrupado com MANAGE_EVENTS)
MANAGE_GUILD_EXPRESSIONS 0x40000000 manage_emojis != 'deny'
CREATE_GUILD_EXPRESSIONS 0x80000000000 manage_emojis != 'deny' (agrupado)
DEAFEN_MEMBERS 0x800000 deafen_users != 'deny'
SEND_MESSAGES_IN_THREADS 0x4000000000 send_messages (agrupado com SEND_MESSAGES)

Bits ativos por padrão

Ficam definidos para qualquer pessoa não negada, igual ao comportamento do cargo padrão do Discord. Se a lógica do seu bot os checa, eles sempre aparecerão concedidos (a menos que a pessoa esteja banida):

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

Bits que sempre devolvem zero

Ainda não têm equivalente no GameVox e são reportados como não definidos. Bots que dependem deles devem degradar com elegância (a maioria das bibliotecas já trata um bit negado como “recurso indisponível aqui”).

  • MANAGE_THREADS, USE_PUBLIC_THREADS, USE_PRIVATE_THREADS: os tópicos são um esboço na v1.
  • MODERATE_MEMBERS (timeout): sem equivalente nativo.
  • USE_EMBEDDED_ACTIVITIES: não há recurso de Atividades.
  • USE_SOUNDBOARD, SEND_VOICE_MESSAGES: não implementados.
  • Bits de monetização: não há Premium Apps.

Cálculo das permissões

Idêntico ao algoritmo de 7 passos do Discord:

  1. Comece com as permissões de @everyone da guild.
  2. Aplique OR com cada cargo que a pessoa tem.
  3. Se o resultado incluir ADMINISTRATOR, encerra: ela tem tudo.
  4. Aplique as exceções de canal de @everyone (primeiro allow, depois deny).
  5. Aplique as exceções de canal de cada cargo (primeiro allow, depois deny).
  6. Aplique as exceções de canal da pessoa (primeiro allow, depois deny).
  7. Se o canal está em uma categoria, as exceções dela também valem nas etapas de cargo e de pessoa.

É no passo 2 que aparece a diferença descrita abaixo: uma pessoa no GameVox está em um único grupo, então há só um cargo para combinar. Veja Um grupo por pessoa.

Um grupo por pessoa

A maior diferença de comportamento em relação ao Discord. Uma pessoa no GameVox pertence a exatamente um grupo por servidor, enquanto no Discord ela pode ter vários cargos ao mesmo tempo. Atribuir um grupo substitui o grupo anterior.

Os endpoints de cargo continuam funcionando, e as bibliotecas que você já usa continuam chamando-os — eles apenas resolvem para esse único grupo:

ChamadaO que acontece
PUT .../members/{id}/roles/{rid} A pessoa acaba nesse grupo. O grupo anterior é substituído, não mantido ao lado.
DELETE .../members/{id}/roles/{rid} Remove. Se era o único grupo dela, ela volta para o grupo padrão do servidor em vez de ficar sem nenhum.
PATCH .../members/{id} com roles: [...]Aceito e depois reduzido ao grupo de maior rank da lista. Uma lista vazia significa o grupo padrão.

A lista é reduzida em vez de recusada para que um member.roles.set([...]) comum continue funcionando. O maior rank vence porque é o rank que define a posição: entre um grupo de moderação e um grupo de cor, a pessoa é moderadora.

Os grupos carregam tetos de upload, voz, câmera e compartilhamento de tela, e cada pessoa recebe o teto mais generoso entre os grupos de que participa. Com um único grupo, é simplesmente o teto do grupo dela — o que é a outra razão pela qual um app não pode manter alguém em dois: seria um jeito de furar um limite definido pela administração.

O grupo próprio de uma aplicação — aquele criado pela instalação dela — não é afetado por nada disso. A participação nele pertence à instalação, e nenhum app pode se adicionar nem remover outro dali.

Hierarquia de cargos

O groups.rank nativo mapeia para o role.position do Discord. Um bot só pode gerenciar cargos estritamente abaixo da posição do próprio cargo mais alto, igual ao Discord. Chamadas a PATCH .../members/{id}/roles/{rid} com um cargo igual ou acima do cargo mais alto do bot devolvem 403.

Timeouts

O campo communication_disabled_until do Discord não tem equivalente no GameVox na v1. Um PATCH em alguém com esse campo devolve 400 com um erro claro. Use expulsar / silenciar / banir no lugar.

← Voltar para a documentação