Mensagens

Enviar, editar, listar, apagar, reagir e fixar mensagens em canais de servidor.

Bots enviam e editam mensagens pela rota própria /api/bot/…, que aceita texto, embeds e componentes. As demais operações (listar, apagar, reagir, fixar) usam as rotas normais de servidor com o token do bot.

Nota
A API de bot funciona em canais de servidor (não em DMs, grupos nem threads). Canais de fórum recusam o envio por estas rotas.

Enviar mensagem

POST/api/bot/servers/:serverId/channels/:channelId/messages
Auth: BotPermissão: VER_CANAL + ENVIAR_MENSAGENS10 a cada 10 s.

Corpo da requisição

CampoTipoDescrição
contentstringAté 4000 caracteres. Menções: @usuario, @Cargo (mencionável) e @everyone/@here (com MENCIONAR_TODOS).
embedsEmbed[]Até 10. Veja Mensagens ricas.
componentsComponent[]Action Rows ou Components V2.
flagsinteger32768 = IS_COMPONENTS_V2. Padrão 0.
replyToIdstringResponder a uma mensagem do mesmo canal. Ignorado se inválido.

É obrigatório ter content, embeds ou components.

const res = await fetch(`https://nexapp.online/api/bot/servers/${serverId}/channels/${channelId}/messages`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${TOKEN}` },
  body: JSON.stringify({ content: 'Olá, servidor!' }),
});
const { message } = await res.json();

Resposta 200: { "message": Message }. Se a auto-moderação bloquear, 422 com automod: true.

Editar mensagem

PATCH/api/bot/servers/:serverId/channels/:channelId/messages/:messageId
Auth: BotPermissão: VER_CANAL + ENVIAR_MENSAGENSSó a aplicação autora (senão 403). 10 a cada 10 s.
  • Campo ausente (ou null) → mantém o valor atual.
  • [] em embeds/components → remove.
  • "content": "" → limpa o texto.
Só trocar o embed
await fetch(`${API}/bot/servers/${serverId}/channels/${channelId}/messages/${messageId}`, {
  method: 'PATCH',
  headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${TOKEN}` },
  body: JSON.stringify({ embeds: [novoEmbed] }),
});

Objeto Message

Message (campos principais)
{
  "id": "uuid",
  "serverId": "uuid",
  "channelId": "uuid",
  "threadId": null,
  "fromId": "uuid do autor",
  "content": "Olá!",
  "type": "text",               // 'text' | 'system' | mídia, áudio, enquete…
  "createdAt": "…",
  "editedAt": null,
  "embeds": null,
  "components": null,
  "flags": 0,
  "applicationId": "uuid | null",  // preenchido em mensagens enviadas pela rota de bot
  "commandName": null,            // em respostas a slash command
  "commandInvokerId": null,
  "replyToId": null,
  "replyTo": { "id": "…", "fromId": "…", "kind": "text", "preview": "…" } | null,
  "mentions": ["userId"],
  "mentionsEveryone": false,
  "mentionedRoleIds": [],
  "reactions": [],
  "pinned": false
}

Outras operações

Rotas normais de servidor que aceitam o token de bot (mesmas regras que para humanos):

GET/api/servers/:serverId/channels/:channelId/messages
Auth: BotPermissão: VER_CANALHistórico. Query: limit (1–100, padrão 50), before/beforeId ou around. Resposta { messages, hasMore }.
DELETE/api/servers/:serverId/channels/:channelId/messages/:messageId
Auth: BotPermissão: VER_CANAL (própria) ou GERENCIAR_MENSAGENSResponde { ok: true }. Bots com messages.read recebem MESSAGE_DELETE.
POST/api/servers/:serverId/channels/:channelId/messages/:messageId/react
Auth: BotPermissão: ADICIONAR_REACOESAlterna a reação. Corpo { "emoji": "👍" } (ou customEmojiId). Responde { reactions }.
POST/api/servers/:serverId/channels/:channelId/messages/:messageId/pin
Auth: BotPermissão: FIXAR_MENSAGENSAlterna o fixado. Responde { pinned }.

Rota humana

Atenção
POST /api/servers/:serverId/channels/:channelId/messages também aceita token de bot, mas só envia texto (ignora embeds e componentes) e pode falhar com 403 se o servidor exigir aceitar regras ou nível de verificação. Prefira a rota de bot.

Limites

ItemLimite
Texto (rota de bot)4000 caracteres
Envio / edição10 a cada 10 s
Embeds por mensagem10 (6000 caracteres no total)
Componentes por mensagem40 em todos os níveis