Portal de Desarrolladores
Experimental La plataforma de bots y apps está en desarrollo activo. La compatibilidad con servidores autoalojados llegó el 13-08-2026 con menos funciones que la nube. Consulta qué se admite.
← Documentación

Permisos

Los bots reciben los permisos como un campo de bits entero de 53 bits con la forma de Discord. Los bits y sus significados coinciden con Discord; los valores salen de las tablas nativas de permisos de grupo y de canal de GameVox. Los bits sin equivalente en GameVox devuelven 0.

Correspondencia nativo → Discord

Bit de DiscordHexOrigen en 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 que VIEW_CHANNEL (no hay interruptor de historial aparte)
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 Solo para admins en v1
CONNECT (voice) 0x100000 join_voice
SPEAK 0x200000 speak_in_voice
STREAM (screen share) 0x200 screen_share
USE_VAD 0x2000000 use_vad (true por defecto; ponerlo en false obliga a pulsar para hablar)
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 distintos de 'deny'
MANAGE_GUILD 0x20 edit_server != 'deny'
MANAGE_ROLES 0x10000000 manage_members
MANAGE_NICKNAMES 0x8000000 manage_members (agrupado con MANAGE_ROLES)
CHANGE_NICKNAME 0x4000000 Siempre concedido (coincide con el valor por defecto de Discord)
MANAGE_WEBHOOKS 0x20000000 Propietario / admin en v1
VIEW_AUDIT_LOG 0x80 Propietario / admin en v1
PRIORITY_SPEAKER 0x100 priority_speaker
MANAGE_EVENTS 0x200000000 manage_events != 'deny'
CREATE_EVENTS 0x100000000000 manage_events != 'deny' (agrupado con 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 con SEND_MESSAGES)

Bits activos por defecto

Están puestos para cualquier persona miembro no denegada, igual que el rol por defecto de Discord. Si la lógica de tu bot los comprueba, siempre aparecerán concedidos (salvo que la persona esté baneada):

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

Bits que siempre devuelven cero

Todavía no tienen equivalente en GameVox y se informan como no activos. Los bots que dependan de ellos deberían degradar con elegancia (la mayoría de bibliotecas ya tratan un bit denegado como «función no disponible aquí»).

  • MANAGE_THREADS, USE_PUBLIC_THREADS, USE_PRIVATE_THREADS: los hilos son un esbozo en v1.
  • MODERATE_MEMBERS (timeout): sin equivalente nativo.
  • USE_EMBEDDED_ACTIVITIES: no hay función de Actividades.
  • USE_SOUNDBOARD, SEND_VOICE_MESSAGES: no implementados.
  • Bits de monetización: no hay Premium Apps.

Cálculo de permisos

Idéntico al algoritmo de 7 pasos de Discord:

  1. Empieza con los permisos de @everyone en la guild.
  2. Aplica un OR con cada rol que tenga la persona.
  3. Si el resultado incluye ADMINISTRATOR, se corta: lo tiene todo.
  4. Aplica las excepciones de canal de @everyone (primero allow, después deny).
  5. Aplica las excepciones de canal de cada rol (primero allow, después deny).
  6. Aplica las excepciones de canal de la persona (primero allow, después deny).
  7. Si el canal está en una categoría, sus excepciones se aplican también en el paso de rol y de persona.

En el paso 2 es donde aparece la diferencia de abajo: una persona en GameVox está en un solo grupo, así que solo hay un rol al que aplicar el OR. Consulta Un grupo por persona.

Un grupo por persona

La mayor diferencia de comportamiento respecto a Discord. Una persona en GameVox pertenece a exactamente un grupo por servidor, mientras que en Discord puede tener muchos roles a la vez. Asignar un grupo sustituye al grupo anterior.

Los endpoints de rol siguen funcionando, y las bibliotecas que ya usas los siguen llamando: simplemente se resuelven a ese único grupo.

LlamadaQué ocurre
PUT .../members/{id}/roles/{rid} La persona acaba en ese grupo. Su grupo anterior se sustituye, no se conserva junto al nuevo.
DELETE .../members/{id}/roles/{rid} Lo quita. Si era su único grupo, pasa al grupo por defecto del servidor en lugar de quedarse sin ninguno.
PATCH .../members/{id} con roles: [...]Se acepta y después se reduce al grupo de mayor rango de la lista. Una lista vacía significa el grupo por defecto.

Una lista se reduce en lugar de rechazarse para que un member.roles.set([...]) corriente siga funcionando. Gana el mayor rango porque el rango es lo que define la posición: entre un grupo de moderación y un grupo de color, la persona es moderadora.

Los grupos llevan límites de subida, voz, cámara y pantalla compartida, y cada persona obtiene el límite más generoso de los grupos en los que está. Con un solo grupo eso es simplemente el límite de su grupo, lo cual es la otra razón por la que una app no puede tener a alguien en dos: sería una forma de superar un tope fijado por la administración.

El grupo propio de una aplicación —el que creó su instalación— no se ve afectado por nada de esto. Su membresía pertenece a la instalación, y ninguna app puede añadirse a sí misma ni quitar a otra de él.

Jerarquía de roles

El groups.rank nativo se corresponde con role.position de Discord. Un bot puede gestionar estrictamente los roles por debajo de la posición de su rol más alto, igual que en Discord. Las llamadas a PATCH .../members/{id}/roles/{rid} con un rol igual o superior al rol más alto del bot devuelven 403.

Timeouts

El campo communication_disabled_until de Discord no tiene equivalente en GameVox en v1. Un PATCH a una persona con ese campo devuelve 400 con un error claro. Usa expulsar / silenciar / banear en su lugar.

← Volver a la documentación