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 maydeaf. Hindi pa primitive ang server-deafen sa self-hosted SFU sa ngayon. Gumagana ang mute, move (gamit angchannel_id), at disconnect (gamit angchannel_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 ng204angDELETE(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_BULKMESSAGE_REACTION_ADD,MESSAGE_REACTION_REMOVECHANNEL_CREATE,CHANNEL_UPDATE,CHANNEL_DELETECHANNEL_PINS_UPDATEGUILD_UPDATE(pagbabago ng pangalan / description)GUILD_MEMBER_ADD,GUILD_MEMBER_REMOVE,GUILD_MEMBER_UPDATE(pagbabago ng nick o role)GUILD_BAN_ADD,GUILD_BAN_REMOVEGUILD_ROLE_CREATE,GUILD_ROLE_UPDATE,GUILD_ROLE_DELETE(lumalabas kapag nagbago ang permission model ng box)TYPING_STARTVOICE_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_muteatmutegaya ng Discord. Mini-mirror ngVOICE_STATE_UPDATEang 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 angmutepara sa moderator toggles. - Dalawang events ang lumalabas sa voice move: sa Discord, ang PATCH
voice-states/{uid}na may bagongchannel_iday nag-e-emit ng iisangVOICE_STATE_UPDATE; sa SH, leave + re-join ang implementation ng move, kaya makikita mong mag-flash angchannel_idng target sanullbago 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.