Slash commands

Registre comandos / com formulário nativo no composer.

Comandos / aparecem no autocomplete do composer com um formulário nativo para os argumentos. O próprio bot registra os comandos com o seu token.

Registrar comandos

PUT/api/bot/commands
Auth: BotSubstitui todos os comandos da aplicação de uma vez. 20 por minuto.
Corpo
{
  "commands": [
    {
      "name": "sauda",
      "description": "Manda uma saudação",
      "options": [
        { "name": "quem", "description": "Pra quem saudar", "type": "string", "required": false }
      ]
    }
  ]
}
  • Comandos com o mesmo nome mantêm o mesmo id; os que não estiverem na lista são removidos.
  • Os comandos valem para todos os servidores onde o bot está instalado — não há comando por servidor.
  • Resposta: { "commands": [{ id, name, description, options, createdAt }] }.
GET/api/bot/commands
Auth: BotLista os comandos registrados, em ordem alfabética.

Regras

ItemRegra
Comandos por aplicaçãoaté 100, nomes únicos
nameminúsculas, números, - e _; 1–32 caracteres
description1–100 caracteres
optionsaté 25 por comando, nomes únicos
Tipos de opçãostring (cortado em 2000), integer, boolean, user, channel
[NEX]
Os tipos são strings, não números. Ainda não há subcomandos, choices, mínimo/máximo, autocomplete nem localização. Opções user e channel chegam como o id digitado/escolhido, sem validação.

Quando o comando aparece

Um comando só aparece para alguém num canal quando:

  • o bot está instalado no servidor e a aplicação não está suspensa;
  • a aplicação tem o intent interactions.receive;
  • o bot tem VER_CANAL naquele canal;
  • a pessoa tem ENVIAR_MENSAGENS para invocar.

Receber e responder

Cada invocação vira uma interação kind: "command", entregue pelo Gateway ou pelo webhook. A resposta usa POST /api/bot/interactions/:id/respond.

Exemplo (Gateway)
socket.on('INTERACTION_CREATE', async (it) => {
  if (it.kind !== 'command' || it.command.name !== 'sauda') return;
  const quem = it.command.options.quem || 'mundo';
  await fetch(`https://nexapp.online/api/bot/interactions/${it.id}/respond`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${TOKEN}` },
    body: JSON.stringify({ type: 4, content: `Olá, ${quem}!` }),
  });
});
Opções no modo webhook
No modo webhook, a interação de comando não traz command.options — só id e name. Se o seu comando tem argumentos, use o modo Gateway. Detalhes em Interações.