Perguntas frequentes
Respostas para os erros mais comuns ao desenvolver bots: 401, 403, 404, 429, bot offline e comandos que não aparecem.
401 ao chamar a API. O token está errado, foi redefinido ou o cabeçalho não é Authorization: Bot <token> (com a palavra Bot). Rotas de pessoas (Bearer) não aceitam bot e vice-versa.
403 "Bots não podem usar esta rota". Você chamou uma rota pessoal (/developer, /social, /auth, /me...). Ou mandou Authorization: Bot para /webhooks; nessas rotas o token da interação já autentica, remova o cabeçalho.
403 "Você não tem permissão para fazer isso". O cargo gerenciado do bot não tem a permissão, ou o canal a nega. Reconvide o bot com um link com mais permissões (lembre que só vale o que quem autoriza também tem), ou ajuste o cargo do bot em Configurações do servidor.
403 "Esse bot é privado". Só o dono do aplicativo pode adicionar bots privados. Ligue Bot público na aba Bot.
404 em rota de servidor ou canal. O bot não é membro do servidor, o canal não existe ou o bot não o enxerga.
429. Espere o tempo de retryAfterMs (ou Retry-After). Veja os limites de taxa.
O bot não aparece online. Ele só fica online com uma conexão ativa ao gateway. Confira se o processo está rodando, se VSYNC_API aponta para a API (porta 4000 em desenvolvimento, não o site na 3000), e se o terminal mostra "Online como...". Fechamento 4001 indica token inválido; 4004, mais de 2 conexões.
O bot não recebe mensagens. Ele precisa estar no servidor e enxergar o canal. Mensagens de sistema não são entregues. Verifique se o handler não está ignorando tudo por causa de author.bot.
O comando não aparece ao digitar /. O bot precisa ter sido adicionado ao servidor e ter registrado os comandos (PUT na inicialização; a aba Comandos do aplicativo lista o que está registrado). Comandos de servidor só aparecem naquele servidor. Recarregue a página se acabou de registrar.
"O aplicativo não respondeu." O bot não deu o primeiro retorno em 3 segundos: ele está offline (sem conexão ao gateway e sem URL de interações), o código não chamou o callback, ou a chamada falhou. Use defer em tarefas lentas. Depois que essa mensagem aparece, o token da interação não pode mais ser usado (410).
409 "Esta interação já foi respondida". Só um callback por interação; para mais mensagens use follow-ups.
Meu embed foi recusado (400). Links precisam ser https, color precisa ser #rrggbb, cada campo precisa de name e value, e os limites de tamanho valem.
403 "O bot não pode anexar arquivos aqui". O bot não tem ATTACH_FILES (além de SEND_MESSAGES) naquele canal: o cargo gerenciado não tem a permissão ou uma sobrescrita do canal a nega. Ajuste o cargo ou o canal e tente de novo. 403 "Bots não podem anexar arquivos em mensagens diretas" significa scope com dmUserId ou groupId: bots só anexam em canais de servidor.
400 "Anexo inválido". A referência att:<id> não está concluída (falta o POST /attachments/:id/complete), é de outro canal, de outro bot ou já foi usada em uma mensagem. Prepare o arquivo no mesmo canal da mensagem e use cada referência uma vez só. Veja Enviar imagens e arquivos.
413 ao preparar um arquivo. O limite para bots é fixo: 100 MB por arquivo, sem upgrade. Comprima ou divida o arquivo.
A menção dentro do embed não notificou. Menções em description e fields[].value aparecem como chips, mas não pingam (como no Discord). Para notificar, mencione no body. Em title, author, footer e fields[].name os tokens viram texto literal.
403 com permission em um aplicativo de team. Você é membro do team, mas seu cargo não tem a permissão indicada (por exemplo RESET_TOKEN para redefinir o token). Peça a quem gerencia membros para ajustar em Desenvolvedores > Teams. Se a resposta for 404, o aplicativo ou o team não é visível para você. Veja Teams.