vsyncDOCUMENTAÇÃO

Desenvolvimento

Gateway (tempo real)

Conecte o bot ao gateway WebSocket, mantenha a conexão viva, mostre uma atividade e reconecte com segurança.

O gateway entrega eventos em tempo real. URL: wss://api.vsync.lat/gateway. Cada mensagem é um JSON de texto.

Conexão#

  1. Você abre o WebSocket. O servidor envia hello.
  2. Em até 10 segundos você envia identify com o token. Senão a conexão fecha com 4001.
  3. O servidor responde ready e depois um GUILD_CREATE para cada servidor do bot.
  4. A partir daí chegam os eventos (op: "dispatch"). Envie ping periodicamente.
JSON
{ "op": "hello", "heartbeatMs": 30000 }
JSON
{ "op": "identify", "token": "SEU_TOKEN" }
JSON
{
  "op": "ready",
  "application": { "id": "1af40b9e-...", "name": "Capture Bot", "description": "", "avatarUrl": null, "bannerUrl": null, "tags": [], "botUsername": "capture_bot8420", "botPublic": false, "interactionsUrl": null, "guildCount": 1, "createdAt": 1791420368461 },
  "user": { "id": "1af40b9e-...", "username": "capture_bot8420", "displayName": "Capture Bot", "bot": true, "avatarUrl": null, "online": false, "status": "offline", "activity": null },
  "guilds": [ { "id": "682f1017-...", "name": "Capture", "iconUrl": null, "ownerId": "bc86cc02-...", "partner": false, "verified": false } ]
}

(user traz mais campos de perfil; aqui resumidos.) Os eventos têm sempre este envelope. O seq começa em 1 e cresce de 1 em 1 por conexão:

JSON
{ "op": "dispatch", "seq": 2, "t": "MESSAGE_CREATE", "d": { } }

Heartbeat#

Envie { "op": "ping" } a cada heartbeatMs (30 segundos). O servidor responde { "op": "pong" }. Se ficar cerca de 70 segundos sem ping, a conexão cai com 4009.

Presença e atividade#

O bot aparece online enquanto tiver conexão aberta. Para mostrar uma atividade (até 64 caracteres) ou limpá-la:

JSON
{ "op": "update_presence", "activity": { "name": "Jogando Xadrez" } }
JSON
{ "op": "update_presence", "activity": null }

Reconexão#

Não existe retomada de sessão: ao reconectar você faz identify de novo, recebe ready e os GUILD_CREATE com o estado atual, e eventos perdidos durante a queda não são reenviados. Reconecte com backoff exponencial (1 s, 2 s, 4 s, até 30 s, com um pouco de aleatoriedade) e zere o contador quando receber ready. O bot/src/client.mjs implementa isso.