Como Enviar Webhook do Discord Suprimindo Menções @everyone
🔍 WiseChecker

Como Enviar Webhook do Discord Suprimindo Menções @everyone

Ao enviar uma mensagem por um webhook do Discord, a menção ao cargo @everyone pode disparar uma notificação para todos os membros do canal. Esse comportamento é indesejado em atualizações automáticas, anúncios ou logs, onde nem todos os membros precisam de um alerta. A causa raiz é que os webhooks do Discord permitem menções @everyone e @here por padrão, a menos que você as desabilite explicitamente no payload. Este artigo explica como configurar sua requisição de webhook para suprimir menções @everyone usando a propriedade allowed_mentions no payload JSON.

Principais Conclusões: Suprimindo @everyone em Webhooks do Discord

  • Defina allowed_mentions: { "parse": [] }: Impede todas as menções a cargos e usuários, incluindo @everyone e @here.
  • Defina allowed_mentions: { "roles": [] }: Bloqueia menções a cargos, mas ainda permite menções a usuários.
  • Teste com uma ferramenta como curl ou Postman: Verifique se a supressão funciona antes de automatizar seu webhook.

ADVERTISEMENT

Como os Webhooks do Discord Lidam com Menções @everyone

Webhooks do Discord são endpoints HTTP que permitem que serviços externos postem mensagens em um canal. Ao enviar um payload JSON que inclui @everyone ou @here, o Discord os trata como menções a cargos por padrão. Isso significa que todos os membros do canal recebem uma notificação, o que pode ser perturbador para atualizações rotineiras como notificações de build, logs de servidor ou anúncios agendados.

A API do Discord fornece o objeto allowed_mentions para controlar quais menções são processadas. Por padrão, se você omitir allowed_mentions, todas as menções no conteúdo da mensagem são permitidas. Para suprimir @everyone, você deve definir explicitamente allowed_mentions como um array parse vazio ou um array roles que exclua o cargo everyone. Essa configuração se aplica apenas à requisição específica do webhook e não afeta a configuração global do webhook.

Pré-requisitos para Suprimir @everyone

Antes de começar, certifique-se de ter o seguinte:

  • Um servidor Discord onde você tenha a permissão Gerenciar Webhooks.
  • A URL do webhook para o canal onde deseja postar mensagens.
  • Acesso a uma ferramenta que possa enviar requisições HTTP POST, como curl, Postman ou um script personalizado em Python, Node.js ou sua linguagem preferida.

Passos para Suprimir Menções @everyone em uma Mensagem de Webhook

Siga estes passos para enviar uma mensagem de webhook que contenha @everyone no texto, mas que não dispare notificações.

  1. Copie a URL do webhook
    Abra o Discord e vá até o canal onde deseja postar. Clique no ícone de engrenagem ao lado do nome do canal e selecione Integrações. Em Webhooks, clique no nome do webhook e depois em Copiar URL do Webhook. A URL se parece com https://discord.com/api/webhooks/1234567890/abcdef.
  2. Prepare o payload JSON com allowed_mentions
    Crie um objeto JSON que inclua o campo content com sua mensagem e o campo allowed_mentions. Para suprimir todas as menções a cargos, incluindo @everyone e @here, defina "parse": []. Exemplo:
    { "content": "Olá @everyone, esta é uma mensagem de teste.", "allowed_mentions": { "parse": [] } }
  3. Envie a requisição POST usando curl
    Abra um terminal ou prompt de comando. Execute o seguinte comando, substituindo WEBHOOK_URL pela sua URL real:
    curl -X POST -H "Content-Type: application/json" -d '{"content":"Olá @everyone, mensagem de teste.","allowed_mentions":{"parse":[]}}' WEBHOOK_URL
  4. Verifique se a mensagem aparece sem ping
    Confira o canal do Discord. A mensagem deve exibir @everyone como texto simples, e você não deve ver o distintivo de notificação vermelho nem ouvir um som de ping em nenhum cliente.

Alternativa: Suprimir Apenas Menções a Cargos

Se você quiser permitir menções a usuários (como @usuario) mas bloquear menções a cargos, use o array roles definido como vazio:

{
  "content": "Olá @everyone e @usuario123, isto é um teste.",
  "allowed_mentions": {
    "roles": []
  }
}

Essa configuração suprime @everyone e @here, mas ainda processa menções a usuários como @usuario123.

ADVERTISEMENT

Erros Comuns ao Suprimir @everyone

“Defini allowed_mentions mas o ping ainda acontece”

A causa mais comum é usar uma estrutura JSON incorreta. Certifique-se de que allowed_mentions é um filho direto do objeto JSON raiz, não aninhado dentro de outra propriedade. Confirme também que o array parse está vazio: "parse": []. Se você escrever "parse": ["users"], as menções a cargos permanecem ativas.

“O webhook é de um bot, não de um webhook de canal”

Contas de bot têm sua própria configuração de allowed_mentions no código do bot. Se você estiver usando um bot para postar via webhook, deve definir allowed_mentions no método de envio de mensagem do bot, não no payload do webhook. Este artigo se aplica apenas a webhooks de canal criados através do menu de Integrações do Discord.

“Quero suprimir @everyone para todos os webhooks futuros desta URL”

O Discord não oferece suporte a uma configuração de supressão permanente na URL do webhook. Você deve incluir allowed_mentions em cada payload onde deseja supressão. Automatize isso codificando o objeto allowed_mentions em seu script ou aplicativo que envia as requisições de webhook.

Opções de Payload do Webhook: Suprimir Tudo vs Suprimir Apenas Cargos

Opção Suprimir Todas as Menções Suprimir Apenas Menções a Cargos
Chave JSON "allowed_mentions": { "parse": [] } "allowed_mentions": { "roles": [] }
Efeito em @everyone Suprimido Suprimido
Efeito em @here Suprimido Suprimido
Efeito em menções a usuários Suprimido Permitido
Efeito em menções a cargos Suprimido Suprimido

Agora você pode enviar mensagens de webhook do Discord que incluem o texto @everyone sem disparar notificações. O segredo é incluir o objeto allowed_mentions com um array parse vazio ou um array roles vazio em cada payload. Para scripts automatizados, sempre adicione esta propriedade para evitar pings acidentais. Como dica avançada, se precisar permitir menções a um cargo específico enquanto bloqueia outros, use "allowed_mentions": { "roles": ["id_do_cargo_aqui"] } para permitir apenas aquele cargo.

ADVERTISEMENT