Ao enviar um embed via webhook do Discord, o campo color não aceita códigos hexadecimais comuns como #FF5733. Em vez disso, o Discord exige o valor da cor como um número inteiro decimal. Essa incompatibilidade faz com que os embeds apareçam com a cor cinza padrão se você colar um código hex diretamente. Este artigo explica por que o Discord usa decimal para cores em embeds e fornece um método confiável para converter qualquer cor hexadecimal no número decimal correto. Você também aprenderá como testar a conversão no payload do seu webhook.
Principais Pontos: Convertendo Hex para Decimal em Embeds do Discord
- Remova o sustenido (#) do código hex: O valor hex deve ser uma string limpa de 6 caracteres para a conversão.
- Use parseInt(hex, 16) em JavaScript: Esta função converte a string hex em um inteiro decimal que o Discord aceita.
- Conversores de cores online: Muitas ferramentas podem converter hex para decimal instantaneamente; verifique o resultado testando o embed em um webhook.
Por que o Discord Exige Decimal para Cores em Embeds
A API do Discord usa um inteiro para representar cores em objetos embed. Esse inteiro é o equivalente decimal da cor RGB hexadecimal padrão. Por exemplo, a cor branca (hex #FFFFFF) é armazenada como 16777215 em decimal. A API não interpreta strings hex ou nomes de cores. Quando você envia um código hex, o Discord o ignora e usa como padrão uma borda cinza escura no embed. O motivo é técnico: a API trata o campo color como um valor numérico para processamento eficiente. Esse design é consistente em todos os endpoints de bots e webhooks do Discord.
O processo de conversão é direto. Uma cor hexadecimal é um número de base 16. Convertê-la para decimal (base 10) fornece o inteiro necessário. A conversão não afeta a aparência visual da cor. O valor decimal é matematicamente idêntico ao código hex. Depois de entender isso, você pode gerar facilmente o valor correto para qualquer cor.
Como Converter Hex para Decimal em Embeds de Webhook do Discord
Siga estas etapas para converter uma cor hexadecimal em um número decimal e usá-lo no embed do seu webhook. Você pode usar uma linguagem de programação, uma planilha ou uma ferramenta online. O exemplo abaixo usa JavaScript, que é comum no desenvolvimento de bots para Discord.
- Obtenha seu código de cor hexadecimal
Escolha uma cor e escreva seu código hex. Exemplo:#3498DB(um tom de azul). Remova o símbolo de sustenido. O resultado é3498DB. - Use parseInt com base 16
Em JavaScript, executeparseInt('3498DB', 16). O segundo argumento16informa à função para interpretar a string como hexadecimal. O resultado é3447003. Este é o valor decimal. - Insira o decimal no JSON do embed
Adicione o campo color ao objeto embed. Exemplo:"color": 3447003. O JSON completo do embed pode ser assim:{ "embeds": [{ "title": "Olá", "color": 3447003 }] }. - Envie o webhook e verifique
Use uma ferramenta como Postman ou cURL para enviar o payload para a URL do seu webhook. Verifique o embed no Discord. A borda esquerda deve exibir a cor escolhida. Se aparecer cinza, o valor decimal está incorreto.
Se preferir não escrever código, use um conversor online de hex para decimal. Pesquise por “conversor hex para decimal” e insira sua string hex de 6 caracteres. A ferramenta retornará o inteiro decimal. Copie esse número para o campo color.
Erros Comuns ao Usar o Campo Color
Incluir o símbolo de sustenido no valor da cor
O Discord não aceita o caractere sustenido. Se você enviar "color": "#3498DB", a API o trata como string e o ignora. Sempre envie um inteiro simples, sem aspas.
Usar um nome de cor em vez de decimal
O Discord não suporta nomes de cores como "red" ou "blue". Você deve fornecer o valor numérico decimal. Se enviar uma string, o embed ficará sem cor.
Esquecer que o campo color é opcional
Se você omitir o campo color completamente, o Discord aplica uma borda cinza escura padrão. Isso não é um erro, mas pode parecer não intencional. Para definir uma cor específica, sempre inclua o campo color com um inteiro decimal válido.
Tabela de Conversão de Cores Hex para Decimal
| Cor | Código Hex | Valor Decimal |
|---|---|---|
| Vermelho | E74C3C | 15158332 |
| Verde | 2ECC71 | 3066993 |
| Azul | 3498DB | 3447003 |
| Amarelo | F1C40F | 15844367 |
| Laranja | E67E22 | 15105570 |
| Roxo | 9B59B6 | 10181046 |
| Branco | FFFFFF | 16777215 |
| Preto | 000000 | 0 |
Use esta tabela como referência rápida para cores comuns em embeds. Para cores personalizadas, faça a conversão usando o método descrito acima.
Testando a Cor do Embed no Discord
Depois de montar o payload do webhook, envie uma mensagem de teste. Você pode usar o testador de webhook do Discord nas configurações do servidor ou uma ferramenta como cURL. Abaixo está um exemplo completo de cURL que envia um embed com cor azul.
curl -X POST -H "Content-Type: application/json" -d '{"embeds":[{"title":"Test Embed","description":"Este embed tem borda azul.","color":3447003}]}' YOUR_WEBHOOK_URL
Substitua YOUR_WEBHOOK_URL pela URL real do seu webhook. Execute o comando. Se a borda do embed estiver azul, a conversão funcionou. Se a borda estiver cinza, verifique se o valor da cor é um inteiro e não uma string.
Conclusão
Agora você pode converter qualquer cor hexadecimal em um inteiro decimal para embeds de webhook do Discord. Use a função parseInt em JavaScript ou um conversor online para obter o número correto. Sempre remova o símbolo de sustenido e passe o inteiro sem aspas. Teste seu embed com um payload simples de webhook para confirmar se a cor é exibida conforme o esperado. Para uso avançado, considere criar um pequeno script que gere múltiplos embeds com esquemas de cores consistentes.