Developer Portal
Experimental The bot & app platform is in active development. Self-hosted server support shipped on 2026-08-13 with a smaller feature surface than cloud. See what's supported.
← Docs

Permissions

Bots receive permissions as a Discord-shape 53-bit integer bitfield. The bits and meanings match Discord; the values come from GameVox's native group + channel permission tables. Bits without a GameVox equivalent return 0.

Native → Discord mapping

Discord bitHexGameVox source
ADMINISTRATOR0x8groups.group_type IN ('owner', 'admin')
VIEW_CHANNEL0x400channel_permissions.view_channel / group_permissions.view_channels
READ_MESSAGE_HISTORY0x10000Same as VIEW_CHANNEL (no separate history toggle)
SEND_MESSAGES0x800send_messages
MANAGE_MESSAGES0x2000manage_messages
EMBED_LINKS0x4000can_post_links
ATTACH_FILES0x8000send_files
ADD_REACTIONS0x40add_reactions
MENTION_EVERYONE0x20000Admin-only in v1
CONNECT (voice)0x100000join_voice
SPEAK0x200000speak_in_voice
STREAM (screen share)0x200screen_share
USE_VAD0x2000000use_vad (default true; setting false forces PTT)
KICK_MEMBERS0x2kick_users != 'deny'
BAN_MEMBERS0x4ban_users != 'deny'
MUTE_MEMBERS0x400000mute_users != 'deny'
MOVE_MEMBERS0x1000000move_users != 'deny'
MANAGE_CHANNELS0x10create_channels / edit_channels / delete_channels all not 'deny'
MANAGE_GUILD0x20edit_server != 'deny'
MANAGE_ROLES0x10000000manage_members
MANAGE_NICKNAMES0x8000000manage_members (bundled with MANAGE_ROLES)
CHANGE_NICKNAME0x4000000Always granted (matches Discord default)
MANAGE_WEBHOOKS0x20000000Owner / admin in v1
VIEW_AUDIT_LOG0x80Owner / admin in v1
PRIORITY_SPEAKER0x100priority_speaker
MANAGE_EVENTS0x200000000manage_events != 'deny'
CREATE_EVENTS0x100000000000manage_events != 'deny' (bundled with MANAGE_EVENTS)
MANAGE_GUILD_EXPRESSIONS0x40000000manage_emojis != 'deny'
CREATE_GUILD_EXPRESSIONS0x80000000000manage_emojis != 'deny' (bundled)
DEAFEN_MEMBERS0x800000deafen_users != 'deny'
SEND_MESSAGES_IN_THREADS0x4000000000send_messages (bundled with SEND_MESSAGES)

Default-on bits

These are set for every non-deny member, matching Discord's default role behavior. If your bot logic checks for them, they will always appear granted (unless the member is banned):

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

Bits that always return zero

These have no equivalent in GameVox yet and are reported as unset. Bots that depend on them should degrade gracefully (most libraries treat a denied bit as "feature not supported here" already).

  • MANAGE_THREADS, USE_PUBLIC_THREADS, USE_PRIVATE_THREADS: threads are stubbed in v1.
  • MODERATE_MEMBERS (timeout): no native equivalent.
  • USE_EMBEDDED_ACTIVITIES: no Activities feature.
  • USE_SOUNDBOARD, SEND_VOICE_MESSAGES: not implemented.
  • Monetization bits: no Premium Apps.

Permission computation

Identical to Discord's 7-step algorithm:

  1. Start with @everyone permissions for the guild.
  2. OR in every role the member has.
  3. If the result includes ADMINISTRATOR, short-circuit: they have everything.
  4. Apply @everyone channel overwrites (allow then deny).
  5. Apply each role's channel overwrites (allow then deny).
  6. Apply the user's channel overwrites (allow then deny).
  7. If the channel is in a category, the category's overwrites apply at the role / user step too.

Role hierarchy

Native groups.rank maps to Discord role.position. A bot can manage roles strictly below its own highest role's position, matching Discord's rules. Calls to PATCH .../members/{id}/roles/{rid} with a role at or above the bot's top role return 403.

Timeouts

Discord's communication_disabled_until field has no GameVox equivalent in v1. A PATCH to a member with that field set returns 400 with a clear error. Use kick / mute / ban instead.

← Back to docs