← Docs
Feature Matrix
A "does it work?" view of every Discord bot feature on GameVox. Use this to scope a migration before you flip the gateway URL. The Self-hosted column shows whether a feature works when your bot is installed on a customer's self-hosted GameVox server. See the self-hosted docs for the forwarding architecture.
| Area | Feature | Cloud | Self-hosted | Notes |
|---|---|---|---|---|
| Gateway | JSON encoding | Yes | Yes | Default; what every library uses |
| zlib-stream compression | Yes | Yes | Covered by every major library | |
| ETF encoding | No | No | Libraries fall back to JSON when encoding=etf is missing | |
| Zstandard compression | No | No | zlib-stream is the universal alternative | |
| Resume / op:6 | Yes | Yes | Resume buffer mirrored to Redis, so op:6 survives api task restarts | |
| Sharding | Yes | Yes | Standard (guild_id >> 22) % num_shards hash | |
| REST | Messages CRUD | Yes | Yes | Send, edit, delete, bulk-delete, get, pin, typing, reactions |
| Channels CRUD | Yes | Yes | Cloud: incl. permission overwrites and reorder. Self-hosted: reorder yes, per-channel overwrites use groups | |
| Per-channel permission overwrites | Yes | No | Self-hosted uses group-level permissions; overwrite PUT returns 501 | |
| Members / roles / bans | Yes | Yes | Full CRUD; communication_disabled_until (timeout) not supported | |
| Webhooks (channel & app) | Yes | Yes | Full CRUD + execute (embeds, attachments, multipart). Rows stay in cloud storage; execute writes into self-hosted channels via the bot forwarding path | |
| App-owned emojis | Portal-only | Portal-only | Managed in the developer portal; GET on bot-API works. See Emojis | |
| Audit log | Partial | Partial | Bot-relevant entries; per-channel-overwrite history not indexed | |
| Rate-limit headers | Yes | Yes | X-RateLimit-* on every response, bucket-aware | |
| Interactions | Application commands (slash, user, message) | Yes | No | Cloud: bulk PUT + individual CRUD. Self-hosted: registration & invocation not yet routed |
| Components v1 (buttons, selects, modals) | Yes | No | Rendered in the GameVox client; self-hosted needs event bridging | |
| Components v2 | No | No | Planned post-v1 | |
| HTTP-mode interactions (outgoing endpoint) | Yes | No | Cloud dispatches to your configured interactions_endpoint_url with Ed25519 signature; falls back to gateway if the endpoint is down. Self-hosted invocations aren't forwarded yet | |
| Voice | UDP voice gateway | Yes | Yes | Per-region. See Voice docs |
| AEAD AES-256-GCM | Yes | Yes | Preferred | |
| AEAD XChaCha20-Poly1305 | Yes | Yes | Fallback | |
| Bot-driven voice-state modify | Yes | Partial | Both: PATCH .../voice-states/{user_id} for mute / move / disconnect. Self-hosted: deaf returns 501 (no SFU primitive); move fires two events instead of one | |
| Other | Server emojis (read) | Yes | Yes | List + get; create/patch/delete via portal only |
| Soundboard (read) | Yes | Yes | List + get; bot-driven playback not supported | |
| Vanity URL | Partial | No | Cloud: read + patch (Gold+ servers). Self-hosted: PATCH returns 501 | |
| Threads / forum posts | Stub | Stub | Forum channels exist; thread CRUD returns empty / 400 | |
| Stage channels, AutoMod, Scheduled Events | No | No | Intents accepted, no events | |
| Premium Apps / Entitlements | No | No | No monetization layer in v1 | |
| Portal | Teams (multi-developer ownership) | Yes | Discord parity. See Teams | |
| Application transfer to team | Yes | One-way (matches Discord) | ||
| App Testers (private-app install allowlist) | Yes | 100/app. See Teams → Testers | ||
| OAuth2 install URLs (user + server contexts) | Yes | None / GameVox-provided / Custom URL. See OAuth2 | ||
| Client secret rotation | Yes | Bcrypt-hashed; shown once on create / rotate | ||
| Bot directory listing | Yes | Admin-approved listings at gamevox.com/bots | ||
Legend
- Yes: works as on Discord, no code changes.
- Partial: wire-compatible but missing some semantics. Safe to call, may not produce events.
- No: accepted on the wire (won't 4014), but does nothing. Plan for it not being there.