Os webhooks do Discord permitem enviar mensagens automatizadas de aplicativos ou scripts externos para um canal de texto. Uma única mensagem de webhook pode incluir um embed, mas talvez você queira enviar vários embeds em uma mensagem para exibir dados relacionados juntos. Este artigo explica como estruturar um payload JSON que contém vários embeds e como enviá-lo usando uma simples requisição POST. Você aprenderá o formato exato exigido pela API de webhook do Discord e verá um exemplo funcional que pode adaptar.
Principais Conclusões: Enviar Vários Embeds via Webhook do Discord
- Payload JSON com array “embeds”: Substitua o objeto único “embed” por um array de objetos embed para enviar até 10 embeds por mensagem.
- Requisição POST para a URL do webhook: Use qualquer cliente HTTP como curl ou Postman com Content-Type: application/json para entregar o payload.
- Estrutura do objeto embed: Cada embed requer um título ou descrição; campos opcionais incluem fields, color, footer, image e thumbnail.
Entendendo os Embeds de Webhook do Discord
Um webhook do Discord é uma forma simples de enviar mensagens para um canal sem um bot. O webhook recebe um payload JSON via uma requisição HTTP POST. O payload pode conter uma string content e um array embeds. Cada embed no array é um card rico separado com seu próprio título, descrição, campos, cor, rodapé e mídia.
O requisito principal é que o payload use a chave embeds (plural) e defina seu valor como um array, não um objeto único. Um erro comum é usar embed (singular) com vários objetos. Esse formato funciona apenas para um embed. Quando você muda para o formato de array, o Discord processa cada embed e os exibe empilhados verticalmente no canal.
Cada objeto embed suporta estes campos:
- title: O título em negrito do embed.
- description: O corpo principal do texto.
- url: Torna o título um link clicável.
- color: Um inteiro decimal representando a cor da barra lateral.
- fields: Um array de pares nome/valor, inline ou não.
- footer: Um objeto com
texteicon_urlopcional. - image: Um objeto com uma propriedade
urlpara a imagem grande. - thumbnail: Um objeto com uma propriedade
urlpara a imagem pequena no canto superior direito. - author: Um objeto com
nameeurleicon_urlopcionais. - timestamp: Uma string de data ISO 8601 exibida abaixo do embed.
O número máximo de embeds por mensagem de webhook é 10. Se você enviar mais de 10, o Discord retorna um erro 400 Bad Request. Além disso, o total de caracteres em todos os embeds de uma mensagem não pode exceder 6000 caracteres.
Passos para Enviar um Webhook com Vários Embeds
Siga estes passos para criar e enviar um payload de webhook que contém vários embeds. Você precisa da URL do webhook do seu servidor Discord. Se não tiver uma, vá em Configurações do Servidor > Integrações > Webhooks e clique em Novo Webhook.
Método 1: Usando curl no Terminal
- Prepare o payload JSON
Crie um arquivo chamadopayload.jsoncom a seguinte estrutura. Substitua os valores de exemplo pelo seu conteúdo.{ "content": "Aqui estão os relatórios mais recentes", "embeds": [ { "title": "Resumo de Vendas", "description": "Números de vendas mensais do Q3", "color": 5814783, "fields": [ {"name": "Receita", "value": "$45.200", "inline": true}, {"name": "Despesas", "value": "$22.100", "inline": true} ] }, { "title": "Tickets de Suporte", "description": "Tickets abertos por prioridade", "color": 16711680, "fields": [ {"name": "Alta", "value": "12", "inline": true}, {"name": "Média", "value": "34", "inline": true}, {"name": "Baixa", "value": "28", "inline": true} ] } ] } - Envie a requisição POST
Execute este comando curl no terminal. SubstituaSUA_URL_WEBHOOKpela URL real.curl -X POST -H "Content-Type: application/json" -d @payload.json SUA_URL_WEBHOOK
- Verifique a saída
Se bem-sucedido, o Discord retorna uma resposta 204 No Content e a mensagem aparece no canal com ambos os embeds empilhados.
Método 2: Usando uma Linguagem de Programação
- Crie o payload no seu código
Abaixo está um exemplo em Python usando a bibliotecarequests. Instale-a compip install requestsse necessário.import requests import json webhook_url = "SUA_URL_WEBHOOK" payload = { "content": "Relatório de build automatizado", "embeds": [ { "title": "Status do Build", "description": "Todos os testes passaram", "color": 3066993, "fields": [ {"name": "Commit", "value": "a1b2c3d", "inline": true}, {"name": "Branch", "value": "main", "inline": true} ] }, { "title": "Implantação", "description": "Ambiente de staging atualizado", "color": 3447003, "fields": [ {"name": "Servidor", "value": "staging-01", "inline": true}, {"name": "Versão", "value": "2.5.1", "inline": true} ] } ] } response = requests.post(webhook_url, json=payload) print(response.status_code) - Execute o script
Execute o arquivo Python. Um código de status 204 significa que o webhook funcionou. Verifique seu canal do Discord para ver os dois embeds.
Erros Comuns ao Enviar Vários Embeds
Usar “embed” em vez de “embeds”
O erro mais frequente é enviar um payload com a chave embed definida como um array. O Discord lê embed apenas como um objeto único. Se você passar um array para embed, o Discord ignora todos os elementos, exceto o primeiro. Sempre use embeds (plural) como chave.
Exceder o Limite de 10 Embeds
Se seu payload contiver 11 ou mais embeds, o Discord retorna um erro 400 Bad Request com a mensagem “Embed size exceeded.” Conte seus embeds antes de enviar. Se precisar de mais de 10, divida o conteúdo em várias mensagens de webhook enviadas sequencialmente.
Exceder o Limite de Caracteres
O total combinado de caracteres de todos os títulos, descrições, nomes de campos, valores de campos, texto do rodapé e nomes de autor em todos os embeds não deve exceder 6000 caracteres. Se você exceder o limite, o Discord retorna um erro 400. Reduza o comprimento das suas descrições ou campos para ficar abaixo do limite.
Faltando Campos Obrigatórios em um Embed
Cada embed deve ter pelo menos um title ou uma description. Se um objeto embed não tiver nenhum dos dois, o Discord rejeita o payload inteiro. Sempre forneça pelo menos um desses campos para cada embed no array.
| Propriedade | Embed Único | Vários Embeds |
|---|---|---|
| Chave JSON | embed (objeto) |
embeds (array) |
| Quantidade máxima | 1 | 10 |
| Limite de caracteres | 6000 total | 6000 total em todos os embeds |
| Suporte a inline em fields | Sim | Sim |
| Cor por embed | Sim | Sim, cada embed tem sua própria cor |
Agora você pode enviar um webhook do Discord com vários embeds usando a estrutura JSON correta. Comece criando um payload com o array embeds e teste com um comando curl simples. Para fluxos de trabalho automatizados, incorpore o payload em um script usando Python, JavaScript ou qualquer linguagem que suporte HTTP POST. Para reduzir erros, valide seu JSON com um linter antes de enviar e sempre inclua um título ou descrição em cada embed.