Ao enviar uma mensagem de webhook para o Discord com um embed personalizado, a barra de cor à esquerda pode aparecer preta mesmo que você tenha fornecido um código hex válido. Esse problema ocorre porque o valor da cor no seu payload JSON não está formatado corretamente ou o código hex está sem o prefixo necessário. Este artigo explica a causa exata do problema da cor preta e fornece comandos passo a passo para corrigir seu código de webhook para que o embed exiba a cor desejada.
Principais Conclusões: Corrigir Cor Preta no Embed do Webhook do Discord
- Converter código hex para inteiro decimal: O Discord exige que o valor da cor seja um inteiro decimal, não uma string hex com símbolo de hash.
- Remover o símbolo # antes da conversão: O código hex deve ser limpo do prefixo # antes de converter para decimal.
- Usar uma calculadora ou função de programação: Converta o valor hex para decimal usando uma ferramenta como parseInt() em JavaScript ou int() em Python.
Por que a Cor do Embed Aparece Preta em Vez do Seu Código Hex
A API de webhook do Discord espera que o campo color no objeto embed seja um inteiro, não uma string. Se você enviar um código hex como #FF5733 como string, o Discord não consegue interpretá-lo e usa preto como padrão. O mesmo acontece se você enviar o código hex como string sem o símbolo de hash, como "FF5733".
O valor correto deve ser um inteiro decimal entre 0 e 16777215. Por exemplo, o código hex #FF5733 converte para o inteiro decimal 16737075. Quando você envia esse inteiro no payload JSON, o Discord renderiza o embed com a cor correta.
Como o Discord Processa o Campo de Cor
A API do Discord analisa o campo color como um valor RGB de 24 bits. O inteiro representa os canais vermelho, verde e azul combinados. Se o campo estiver ausente, nulo ou for uma string, o Discord usa preto como padrão. A API não realiza nenhuma conversão de strings hex para inteiros.
Equívoco Comum Sobre Códigos Hex
Alguns desenvolvedores assumem que o Discord aceita strings hex porque outras plataformas aceitam. O Discord nunca aceitou strings hex no campo de cor. A documentação da API afirma explicitamente que a cor deve ser um inteiro. Enviar uma string hex, mesmo com o símbolo de hash, sempre resultará em um embed preto.
Passos para Corrigir a Cor Preta do Embed
Siga estes passos para corrigir o valor da cor no seu payload de webhook.
- Identifique o código hex da cor que deseja usar
Anote o código hex sem o símbolo de hash. Por exemplo, se você quer a cor#00FF00, anote00FF00. - Converta o código hex para um inteiro decimal
Use uma função de programação ou um conversor online. Em JavaScript, useparseInt("00FF00", 16)que retorna65280. Em Python, useint("00FF00", 16). No Excel, useHEX2DEC("00FF00"). - Substitua o campo color no seu payload JSON
Altere o valor da cor de string para o inteiro decimal. Antes:"color": "#00FF00". Depois:"color": 65280. - Envie a requisição de webhook novamente
Use sua URL de webhook e o payload JSON corrigido. O embed agora deve exibir a barra de cor verde em vez de preta.
Exemplo: Payload JSON Correto
Aqui está um exemplo completo de um payload de webhook funcional com a cor laranja (#FFA500 convertido para 16753920).
{
"embeds": [
{
"title": "Pedido Confirmado",
"color": 16753920,
"fields": [
{
"name": "ID do Pedido",
"value": "12345"
}
]
}
]
}
Se a Cor do Embed Ainda Aparecer Preta Após a Correção
Se você converteu o código hex para um inteiro decimal mas o embed continua preto, verifique estes três erros comuns.
Valor Inteiro Excede 16777215
O inteiro de cor do Discord deve estar entre 0 e 16777215. Se o seu valor decimal for maior, a API o ignora e usa preto como padrão. Por exemplo, um código hex como #FFFFFF converte para 16777215. Um valor de 16777216 ou maior falhará. Use um conversor online para verificar se seu valor decimal está dentro do intervalo.
Campo de Cor Colocado Dentro de uma String
Certifique-se de que o valor da cor não está entre aspas no JSON. Strings JSON são delimitadas por aspas duplas. Se você escrever "color": "16737075", o Discord trata como string e usa preto como padrão. O formato correto é "color": 16737075 sem aspas ao redor do número.
Payload JSON Contém Objetos Aninhados Extras
O campo color deve ser filho direto do objeto embed. Se você acidentalmente aninhá-lo dentro de outro objeto, o Discord não consegue encontrá-lo. Verifique se sua estrutura JSON corresponde ao exemplo acima. Use um validador JSON para garantir que o payload esteja formatado corretamente.
Formatos de Valor de Cor do Webhook do Discord: Inteiro vs String Hex
| Item | Inteiro (Correto) | String Hex (Incorreto) |
|---|---|---|
| Exemplo de valor | 16737075 | “#FF5733” ou “FF5733” |
| Aceitação da API do Discord | Renderiza a cor | Usa preto como padrão |
| Tipo de dado no JSON | Número (sem aspas) | String (com aspas) |
| Conversão necessária | Nenhuma | Deve converter para inteiro |
Depois de corrigir o campo color para um inteiro decimal, seu embed de webhook exibirá a cor desejada. Teste seu payload com um embed simples antes de adicionar campos complexos. Use a função parseInt() ou int() para converter códigos hex rapidamente. Para uso avançado, considere construir uma ferramenta de seletor de cores que forneça o valor decimal diretamente.