Como Criar um Webhook do Discord para Monitorar Boosts no Servidor
🔍 WiseChecker

Como Criar um Webhook do Discord para Monitorar Boosts no Servidor

Os Boosts do Discord desbloqueiam vantagens como qualidade de áudio superior, slots de emojis personalizados e URLs personalizadas. Acompanhar quando um boost ocorre ou expira ajuda administradores a entender o engajamento e recompensar apoiadores. O monitoramento manual é tedioso e sujeito a erros. Este artigo explica como construir um webhook do Discord que envia notificações automaticamente quando um boost no servidor ocorre ou quando os níveis de boost mudam.

Principais Conclusões: Construindo um Webhook do Discord para Monitorar Boosts

  • Configurações do Servidor > Integrações > Webhooks > Novo Webhook: Crie uma URL de webhook para a qual o Discord enviará eventos.
  • Gateway da API do Discord com token do bot: Inscreva-se nos eventos GUILD_MEMBER_UPDATE e GUILD_UPDATE para capturar dados de boost.
  • Payload JSON com estrutura de embed: Formate a mensagem usando objetos embed do Discord para notificações claras e estilizadas.

ADVERTISEMENT

Como Funcionam os Boosts do Discord e Por Que um Webhook Ajuda

Os Boosts do Discord são um recurso para assinantes do Discord Nitro. Quando um usuário impulsiona um servidor, esse servidor ganha pontos de experiência em direção a um nível de boost. Os níveis variam do Nível 1 com 2 boosts ao Nível 3 com 15 boosts. Cada nível desbloqueia vantagens específicas, como streaming de vídeo em 1080p 60fps, 250 slots de emoji ou um link de convite personalizado.

O Discord não envia notificações integradas quando um boost termina ou quando um usuário remove seu boost. Os administradores precisam verificar manualmente a página de Boosts do Servidor. Uma solução com webhook automatiza isso ouvindo eventos específicos do Gateway do Discord e postando uma mensagem formatada em um canal de sua escolha.

O Que um Webhook Faz Neste Contexto

Um webhook é um callback HTTP definido pelo usuário. Quando o Discord detecta um evento de boost, ele envia uma requisição POST para a URL do webhook. Seu bot ou script recebe esses dados, processa e envia uma mensagem personalizada de volta para um canal do Discord. Isso permite rastrear boosts em tempo real sem precisar atualizar nenhuma página.

Pré-requisitos

Antes de construir o webhook, você precisa de:

  • Um servidor no Discord onde você tenha permissão de Gerenciar Servidor
  • Um aplicativo do Discord e token de bot do Portal do Desenvolvedor do Discord
  • Um servidor ou função em nuvem (como VPS, Raspberry Pi ou AWS Lambda) para executar o script de escuta
  • Familiaridade básica com JavaScript ou Python

Passos para Criar o Webhook e o Listener

O processo tem duas partes: criar a URL do webhook dentro do Discord e escrever um script que escuta eventos de boost e envia notificações.

  1. Criar uma URL de Webhook no Discord
    Abra seu servidor do Discord. Vá em Configurações do Servidor > Integrações > Webhooks. Clique em Novo Webhook. Dê o nome de Monitor de Boosts. Selecione o canal onde as notificações aparecerão. Clique em Copiar URL do Webhook e salve. Você usará essa URL para enviar mensagens.
  2. Criar um Aplicativo e Bot do Discord
    Acesse o Portal do Desenvolvedor do Discord em discord.com/developers/applications. Clique em Novo Aplicativo e nomeie como Monitor de Boosts. Vá até a aba Bot e clique em Adicionar Bot. Copie o token do bot. Esse token autentica o bot no Gateway do Discord.
  3. Convidar o Bot para o Servidor
    No Portal do Desenvolvedor, vá em OAuth2 > Gerador de URL. Selecione o escopo bot. Em Permissões do Bot, marque Enviar Mensagens, Ler Mensagens e Usar Comandos de Barra. Copie a URL gerada e abra no navegador. Selecione seu servidor e autorize o bot.
  4. Escrever o Script Listener
    Crie um arquivo chamado boost-tracker.js ou boost-tracker.py. Use uma biblioteca como discord.js para JavaScript ou discord.py para Python. Inscreva-se no evento GUILD_MEMBER_UPDATE. Quando o evento for disparado, verifique se o campo premium_since mudou. Se era nulo e agora tem um timestamp, um boost foi adicionado. Se tinha um timestamp e agora é nulo, um boost foi removido. Inscreva-se também em GUILD_UPDATE para detectar mudanças no nível de boost.
  5. Formatar a Mensagem de Notificação
    Construa um objeto embed do Discord com campos de título, descrição, cor e timestamp. Exemplo: título: Boost Recebido no Servidor, descrição: Usuário impulsionou o servidor. Use a URL do webhook do passo 1 para enviar o embed via uma requisição POST para essa URL. Inclua o campo content-type: application/json.
  6. Implantar e Testar o Script
    Execute o script no seu servidor. Impulsione manualmente seu servidor usando uma conta Nitro de teste. Verifique o canal para a notificação. Se a mensagem aparecer, o webhook funciona. Caso contrário, verifique os logs do script para erros no payload do evento.

Exemplo de Código JavaScript

Abaixo está um exemplo mínimo usando discord.js v14. Substitua YOUR_BOT_TOKEN e YOUR_WEBHOOK_URL pelos seus valores reais.

const { Client, GatewayIntentBits, WebhookClient } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers] });
const webhookClient = new WebhookClient({ url: 'YOUR_WEBHOOK_URL' });

client.on('guildMemberUpdate', (oldMember, newMember) => {
  if (oldMember.premiumSince === null && newMember.premiumSince !== null) {
    webhookClient.send({
      embeds: [{
        title: 'Boost Recebido no Servidor',
        description: `${newMember.user.tag} impulsionou o servidor`,
        color: 0x9b59b6,
        timestamp: new Date()
      }]
    });
  }
  if (oldMember.premiumSince !== null && newMember.premiumSince === null) {
    webhookClient.send({
      embeds: [{
        title: 'Boost Removido do Servidor',
        description: `${newMember.user.tag} removeu o boost`,
        color: 0xe74c3c,
        timestamp: new Date()
      }]
    });
  }
});

client.login('YOUR_BOT_TOKEN');

ADVERTISEMENT

Problemas Comuns ao Configurar o Webhook de Boost

O Bot Não Recebe Eventos GUILD_MEMBER_UPDATE

A causa mais comum é a falta da Intent de Membros do Servidor. No Portal do Desenvolvedor, em Bot, habilite Server Members Intent. Sem essa intent, o bot não consegue ver atualizações de membros, incluindo mudanças de boost. Certifique-se também de que o bot tenha a permissão de Ler Mensagens no servidor.

O Webhook Envia Mensagens, Mas Elas Estão em Branco

Isso acontece quando o objeto embed está malformado. Verifique se todos os campos obrigatórios do embed estão presentes: title ou description. Confirme que o payload JSON é válido. Use um validador JSON se necessário. Verifique também se a URL do webhook está correta e se o canal ainda existe.

A Remoção de Boost Não é Detectada

O Discord atrasa o envio do evento GUILD_MEMBER_UPDATE quando um usuário remove um boost. O atraso pode ser de até vários minutos. Não espere notificações instantâneas de remoção. Observe também que, se o usuário sair completamente do servidor, o evento pode não ser disparado. Nesse caso, você pode consultar o status de boost do servidor periodicamente usando o endpoint REST GET /guilds/{guild.id}/premium/subscriptions.

O Script Falha Após Algumas Horas

Rejeições de promessa não tratadas são o culpado típico. Envolva todas as operações assíncronas em blocos try-catch. Use process.on(‘unhandledRejection’) para registrar erros. Execute o script com um gerenciador de processos como PM2 para reiniciá-lo automaticamente em caso de falha.

Item Webhook com Bot Verificação Manual
Tempo de configuração 30 minutos a 1 hora 0 minutos
Atualizações em tempo real Sim, em segundos Não
Detecção de remoção de boost Atrasada, mas automática Precisa atualizar a página de Boosts
Formatação personalizada Controle total via embed Nenhuma
Requer programação Sim Não

Construir um webhook do Discord para monitorar boosts no servidor oferece notificações automatizadas em tempo real sem necessidade de atualizações manuais de página. Comece criando a URL do webhook nas configurações do servidor, depois escreva um script listener usando o Gateway do Discord. Use o código JavaScript de exemplo como base e ajuste o formato do embed para combinar com o estilo do seu servidor. Para uso em produção, implante o script em um host confiável e adicione registro de erros para lidar com falhas. Usuários avançados podem estender o script para registrar o histórico de boosts em um banco de dados ou disparar atribuições de cargos com base na contagem de boosts.

ADVERTISEMENT