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

Self-hosted servers

Puwedeng patakbuhin ng customers ang GameVox sa sarili nilang hardware, at gumagana doon ang bot mo. Fino-forward ng cloud API ang Discord-shape na REST at gateway events pababa sa control channel ng customer, pinapatakbo ito ng self-hosted box laban sa local database nito, at bumabalik ang response sa parehong pipe. Transparent ang karamihan ng endpoints. Nakalista sa ibaba ang mga hindi supported.

Paano ito gumagana

Kapag tinawag ng bot mo ang GET /guilds/{id} o POST /channels/{id}/messages, chine-check ng cloud bot-API ang tier ng target server. Kung self-hosted ito, sine-serialize namin ang request (method, path, query, body, bot_user_id) at ipinapadala pababa sa persistent na control-channel WebSocket na laging bukas mula sa box ng customer papunta sa amin. Pinapatakbo ng self-hosted process ang katumbas na handler laban sa sarili nitong SQLite databases at nagbabalik ng response envelope, na isinusulat namin pabalik sa bot mo nang verbatim.

Sa bot-API layer nangyayari ang forwarding. Hindi ito nakikita ng library mo. Walang ibang token, walang ibang gateway URL, walang ibang SDK. Kumokonekta ang bot mo sa parehong gateway.gamevox.com at tumatawag sa parehong app-api.gamevox.com, cloud-hosted man o self-hosted ang guild.

Latency

Nakadepende ang round-trip sa WAN link ng customer at sa SQLite query time, kadalasan 30–300 ms na dagdag sa ibabaw ng isang cloud call. May ine-enforce na 12 s na end-to-end deadline. Kapag tumigil sumagot ang self-hosted box (offline, nag-a-upgrade, naputol ang network), makakatanggap ang bot mo ng 504 Gateway Timeout sa loob ng isang segundo mula sa deadline.

Ano ang gumagana

Lahat ng nasa ibaba ay tumatakbo laban sa local data ng self-hosted box, na may parehong response shape gaya sa cloud.

  • Messages: list, get, send, edit, delete, bulk-delete.
  • Reactions: add, remove-self, remove-user, remove-all, remove-all-for-emoji, list users.
  • Pins: pin, unpin, list.
  • Typing: POST /channels/{id}/typing.
  • Channels: get, patch, delete, list, create, reorder.
  • Server (guild): get, patch (pangalan at description).
  • Members: list, search, @me, get, patch, patch nick, kick, magdagdag o mag-alis ng role.
  • Bans: list, get, put, delete.
  • Roles: list, get, create, patch, reorder, delete, pati role permissions.
  • Emojis: list, get (pag-aari ng server).
  • Soundboard: list, get (pag-aari ng server).
  • Audit log: GET /guilds/{id}/audit-logs, mga entry na may kinalaman sa bot lang.
  • Vanity URL: GET (laging empty shape).
  • Voice state: GET (live mula sa SFU), PATCH (mute, move, disconnect).
  • Webhooks: full CRUD at execute. Nasa cloud storage ang rows; isinusulat ang resulting message sa self-hosted channel gamit ang parehong forwarding path ng bot sends, kaya tama ang badge ng channel messages.
  • Slash commands: invocation, at sine-check ang permissions laban sa sariling groups ng box. Pareho sa cloud ang registration.
  • Message components: buttons, string selects, modals at ephemeral replies, kasama ang interaction callback, follow-up at original-response endpoints. Tingnan ang Message components.

Ano ang nagbabalik ng 501 (tinatanggap, hindi implemented)

  • PATCH .../voice-states/* na may deaf. Hindi pa primitive ang server-deafen sa self-hosted SFU sa ngayon. Gumagana ang mute, move (gamit ang channel_id), at disconnect (gamit ang channel_id: null).
  • PUT .../channels/{id}/permissions/{oid}. Group-level permissions ang gamit ng self-hosted sa halip na per-channel overwrites, kaya walang mapag-a-apply-an ng Discord overwrite. Nagbabalik ng 204 ang DELETE (no-op ang pag-delete ng overwrite na hindi naman existing).
  • PATCH .../guilds/{id}/vanity-url. Walang vanity URLs ang self-hosted servers.

Ano ang nagbabalik ng 404 (hindi naka-route sa self-hosted)

Gumagalaw ang endpoints na ito sa resources na nasa cloud infrastructure lang. Subukan ulit laban sa isang cloud guild kung kailangan ito ng bot mo.

  • Paggawa ng DM channel (POST /users/@me/channels).
  • Cross-server user lookup (GET /users/{id}, GET /users/by-name/{name}).
  • GET /users/@me/guilds.

Gateway events

Isang subset lang ng events na ine-emit ng cloud ang pina-publish ng self-hosted boxes. Natatanggap ito ng bot mo sa parehong gateway session. Walang ibang subscription model.

Nae-emit mula sa self-hosted ngayon:

  • MESSAGE_CREATE, MESSAGE_UPDATE, MESSAGE_DELETE, MESSAGE_DELETE_BULK
  • MESSAGE_REACTION_ADD, MESSAGE_REACTION_REMOVE
  • CHANNEL_CREATE, CHANNEL_UPDATE, CHANNEL_DELETE
  • CHANNEL_PINS_UPDATE
  • GUILD_UPDATE (pagbabago ng pangalan / description)
  • GUILD_MEMBER_ADD, GUILD_MEMBER_REMOVE, GUILD_MEMBER_UPDATE (pagbabago ng nick o role)
  • GUILD_BAN_ADD, GUILD_BAN_REMOVE
  • GUILD_ROLE_CREATE, GUILD_ROLE_UPDATE, GUILD_ROLE_DELETE (lumalabas kapag nagbago ang permission model ng box)
  • TYPING_START
  • VOICE_STATE_UPDATE (join, leave, self/server mute, deafen)
  • INTERACTION_CREATE (slash commands, component clicks at modal submits; ipinapasa ng cloud)

Hindi pa nae-emit mula sa self-hosted:

  • PRESENCE_UPDATE. Kailangan ng bagong presence broadcaster sa SH.
  • DM message events. Walang cross-server DMs ang self-hosted.

Mga kilalang fidelity gap

  • Self-mute vs server-mute: iisang mute bit kada participant ang tina-track ng SH SFU sa halip na hatiin ang self_mute at mute gaya ng Discord. Mini-mirror ng VOICE_STATE_UPDATE ang parehong value sa dalawang field; kapag na-unset ang server-mute, puwedeng magmukhang nag-un-self-mute rin ang user. Okay lang ang bots na isa lang sa dalawang field ang binabasa; ang state-machine bots na pinaghahalo ang dalawa ay mas mabuting unahin ang mute para sa moderator toggles.
  • Dalawang events ang lumalabas sa voice move: sa Discord, ang PATCH voice-states/{uid} na may bagong channel_id ay nag-e-emit ng iisang VOICE_STATE_UPDATE; sa SH, leave + re-join ang implementation ng move, kaya makikita mong mag-flash ang channel_id ng target sa null bago mapunta sa bagong channel. Ituring na iisang move ang magkakasunod na updates para sa parehong user sa loob ng ilang daang milliseconds.

Pag-detect ng self-hosted

Walang “self-hosted” flag ang guild object sa ngayon (nananatili kaming byte-identical sa Discord). Kung kailangang mag-branch ng bot mo, ang maaasahang signal ay 501 o 404 mula sa isa sa mga endpoint sa itaas, na may JSON error body na ganito:

{ "code": 0, "message": "voice-state modify not supported on self-hosted yet" }

Kung maraming bot ang mangangailangan ng mas madaling detection, magdadagdag kami ng features entry (hal. "SELF_HOSTED") sa guild payload. Mag-file ng feedback sa Support tab ng application mo kung makakatulong iyon.

Mga error

  • 502 Bad Gateway. Malformed na response ang ibinalik ng self-hosted box. Bihira; kadalasan version skew habang nag-a-upgrade.
  • 503 Service Unavailable. Hindi nakakonekta ang control channel sa ngayon. Subukan ulit nang may backoff.
  • 504 Gateway Timeout. Hindi sumagot ang box sa loob ng 12 s.

← Bumalik sa docs