Quando você envia uma requisição de webhook para o Discord com o parâmetro de consulta ?wait=true, a API deve retornar um objeto de mensagem completo, incluindo o ID da mensagem, timestamp e conteúdo. No entanto, muitos desenvolvedores relatam que a resposta está vazia ou retorna apenas um código de status mínimo, em vez do objeto esperado. Isso geralmente acontece devido a uma configuração incorreta da requisição, método HTTP errado ou cabeçalho obrigatório ausente. Este artigo explica por que o parâmetro wait falha e fornece correções passo a passo para obter o objeto de mensagem completo de volta.
Principais Conclusões: Corrigindo o Parâmetro Wait do Webhook do Discord
- Método POST com string de consulta
?wait=true: O endpoint do webhook deve usar POST e incluir o parâmetro?wait=truena URL, não no corpo JSON. - Cabeçalho Content-Type definido como
application/json: A requisição deve incluir este cabeçalho para que o Discord analise corretamente o payload da mensagem. - Campos do objeto de resposta da API do Discord: Uma resposta bem-sucedida retorna
id,channel_id,content,timestampe outros campos.
Por que o Parâmetro Wait Retorna uma Resposta Vazia
A API de webhook do Discord usa uma interface RESTful. Quando você envia uma requisição POST para /api/webhooks/{webhook.id}/{webhook.token}?wait=true, o servidor processa a mensagem e retorna um objeto JSON representando a mensagem criada. Se o parâmetro wait estiver ausente ou não for anexado corretamente, o Discord retorna um status 204 No Content sem corpo. Isso é proposital — sem wait, a API reconhece a requisição, mas não retorna o objeto da mensagem para economizar largura de banda.
As causas raiz mais comuns para o parâmetro não funcionar são:
- O
?wait=trueé colocado no corpo da requisição em vez da string de consulta da URL. - O método HTTP usado é GET, PUT ou PATCH em vez de POST.
- O cabeçalho
Content-Typeestá ausente ou definido comomultipart/form-datasem a codificação adequada. - A URL do webhook está malformada ou inclui barras extras.
- A biblioteca ou ferramenta de requisição remove automaticamente os parâmetros de consulta de requisições POST.
Entender essas causas ajuda a identificar a configuração incorreta exata em seu código ou ferramenta de teste.
Passos para Corrigir o Parâmetro Wait e Obter o Objeto de Mensagem
- Verifique o formato da URL do webhook
Certifique-se de que a URL do webhook esteja exatamente assim:https://discord.com/api/webhooks/1234567890/abcdefg?wait=true. O?wait=truedeve ser anexado diretamente após o token do webhook, sem espaços extras ou quebras de linha. Se você estiver usando uma variável, concatene a URL base e a string de consulta. - Use o método HTTP POST
O Discord só retorna o objeto de mensagem em requisições POST. Se você enviar uma requisição GET para a URL do webhook, receberá um erro405 Method Not Allowed. Em seu código, defina explicitamente o método como POST. - Defina o cabeçalho Content-Type correto
Adicione o cabeçalhoContent-Type: application/jsonà sua requisição. Para mensagens multipart com anexos de arquivo, usemultipart/form-data, mas ainda inclua?wait=truena URL. O Discord ignora o parâmetrowaitse o cabeçalho estiver ausente. - Envie um corpo JSON válido
O corpo da requisição deve ser um objeto JSON válido com pelo menos um campocontent. Exemplo:{"content": "Olá do webhook"}. Um corpo vazio ou JSON inválido faz o Discord retornar400 Bad Requestsem o objeto de mensagem. - Verifique barras no final da URL
Se a URL do webhook terminar com uma barra (/), remova-a antes de adicionar?wait=true. Uma barra no final altera o endpoint e o parâmetro pode ser ignorado. Correto:https://discord.com/api/webhooks/123/abc?wait=true. Incorreto:https://discord.com/api/webhooks/123/abc/?wait=true. - Teste com um cliente HTTP bruto
Use uma ferramenta como curl ou Postman para isolar o problema. Execute este comando curl:curl -X POST -H "Content-Type: application/json" -d '{"content":"teste"}' "https://discord.com/api/webhooks/1234567890/abcdefg?wait=true"
Se isso retornar o objeto de mensagem completo, o problema está no código da sua aplicação.
Se o Discord Ainda Não Retornar o Objeto de Mensagem
Token do webhook contém caracteres especiais
Se o token do webhook incluir caracteres como +, / ou =, a URL deve ser codificada em percentual. No entanto, os tokens do Discord são codificados em base64 e geralmente são seguros. Se você copiar o token manualmente, certifique-se de que não há espaços extras ou caracteres invisíveis.
Biblioteca de requisição remove parâmetros de consulta
Algumas bibliotecas HTTP (como requests do Python ou axios do Node.js) permitem passar parâmetros de consulta como um objeto separado. Se você passar params: {wait: true} separadamente, a biblioteca pode não anexá-lo à URL para requisições POST. Sempre concatene o parâmetro diretamente na string da URL antes de fazer a requisição.
Limitação de taxa ou falha na API
Se você enviar muitas requisições em um curto período, o Discord pode limitar a taxa do seu webhook e retornar 429 Too Many Requests sem corpo. Verifique o cabeçalho X-RateLimit-Remaining. Se suspeitar de uma falha na API, visite a página de status do Discord em status.discord.com.
Webhook excluído ou inválido
Se o webhook foi excluído do servidor, o Discord retorna 404 Not Found. Confirme se o webhook ainda existe acessando Configurações do Servidor > Integrações > Webhooks e verificando a URL. Talvez seja necessário criar um novo webhook.
Resposta do Webhook do Discord: Com Wait vs Sem Wait
| Item | Com wait=true | Sem wait |
|---|---|---|
| Código de status HTTP | 200 OK | 204 No Content |
| Corpo da resposta | Objeto de mensagem completo (id, channel_id, content, timestamp, author, etc.) | Vazio |
| Caso de uso | Quando você precisa do ID da mensagem para registro, edição ou exclusão | Quando você só precisa enviar uma mensagem e não se importa com a resposta |
| Sobrecarga da API | Ligeiramente maior devido à serialização do objeto | Menor — processamento mínimo |
Ao usar o parâmetro wait corretamente, você pode recuperar o objeto de mensagem e realizar ações como editar ou excluir a mensagem posteriormente. Lembre-se de armazenar o campo id retornado para essas operações. Se você estiver construindo um bot ou integração que precisa rastrear mensagens, sempre inclua ?wait=true em sua requisição POST.