Um bot anti-spam do Discord observa a velocidade com que um membro posta, se ele repete a mesma mensagem e quantas pessoas ele menciona de uma vez, e então aplica timeout automaticamente no momento em que ele ultrapassa um limite definido por você. Feito bem, ele pega bots de raid e flooders em segundos, sem tocar em um membro que apenas conversa rápido. Este guia mostra exatamente o que conta como spam, como os limites e os timeouts da Noxyr funcionam por dentro e como ajustá-los para que membros reais nunca sejam pegos.

A burst of repeated messages fills a rate meter until it trips and the sender is timed out. rate limit TRIP Timed out

O que conta como spam?

A maioria das configurações anti-spam no Discord observa três padrões distintos, e qualquer um deles pode disparar uma resposta por conta própria:

  • Taxa de mensagens: mensagens demais de uma mesma pessoa em uma janela curta. Isso pega flood de copiar e colar e contas de raid automatizadas.
  • Conteúdo duplicado: a mesma mensagem (ou uma praticamente idêntica) enviada várias vezes. Isso pega o padrão "entrar e colar o mesmo link de golpe em cinco canais".
  • Menções em massa: uma única mensagem que marca muito mais usuários ou cargos do que uma mensagem normal faria, incluindo @everyone e @here.

Um membro só precisa disparar um dos três. Alguém que envia seis mensagens normais seguidas, mas nunca repete conteúdo e nunca menciona ninguém, fica completamente intocado.

Como funcionam os limites e os timeouts anti-spam da Noxyr

A Noxyr acompanha uma janela deslizante por membro, por servidor. Cada mensagem que o membro envia dentro da janela é adicionada a ela; tudo que for mais antigo que o tamanho da janela sai automaticamente. Três verificações são feitas sobre essa janela a cada nova mensagem:

  • Máximo de mensagens / janela: se o membro enviou mais do que o número configurado de mensagens dentro da janela (padrão: mais de 6 em 8 segundos), isso é um disparo por taxa.
  • Limite de duplicadas: o conteúdo é aparado, convertido para minúsculas e tem os espaços extras reduzidos antes da comparação, então "Olá!!" e "olá!!" contam como a mesma mensagem. Quando essa quantidade de duplicadas aparece dentro da janela (padrão: 4), isso é um disparo.
  • Limite de menções: a Noxyr conta os usuários e cargos mencionados na mensagem. Se a mensagem marcar @everyone ou @here, 100 é somado a essa contagem, o que garante um disparo independentemente do limite configurado, porque ninguém define um limite de menções nem de longe tão alto.

A primeira verificação a disparar aciona a resposta; o bot não espera para ver se uma segunda também dispararia. Quando isso acontece, duas coisas podem ocorrer dependendo das suas configurações:

  • Timeout: o membro recebe timeout pelo número de minutos configurado (padrão 10, até 7 dias pelo comando, limitado ao máximo de 28 dias do Discord). Isso só acontece se o cargo do bot estiver acima do cargo do membro, como em qualquer outra ação de moderação.
  • Exclusão de mensagens: se ativada (ligada por padrão), o bot apaga até as últimas 10 mensagens rastreadas daquele membro no canal onde o disparo aconteceu. Ele não procura mensagens que o membro tenha postado em outros canais durante a mesma rajada.

Depois de um disparo, a janela daquele membro é zerada, então uma única rajada só aciona uma ação, e não uma por mensagem acima do limite.

Configurando

Tudo isso é definido com /security antispam ou na página de Segurança do painel:

  • enabled: o anti-spam fica desativado por padrão, mesmo quando o módulo de Segurança em si está ligado, então ligar o módulo nunca começa a moderar ninguém de surpresa.
  • max_messages e window_seconds: o limite de taxa e a duração da janela.
  • duplicate_limit: quantas repetições são necessárias antes de contar como spam.
  • mention_limit: quantas menções em uma mensagem são necessárias antes de contar como menção em massa.
  • timeout_minutes: quanto tempo dura o timeout.
  • delete_messages: se o spam também deve ser limpo.

/security status mostra os números atuais do anti-spam e do anti-nuke em um único embed, que é a forma mais rápida de conferir o que está realmente ativo antes de mudar qualquer coisa.

Evitando falsos positivos

Um filtro de spam que dá timeout em membros reais ensina as pessoas a sair do servidor. Algumas medidas evitam isso:

  • Admins são isentos automaticamente. Qualquer pessoa com a permissão de Administrador, ou um cargo que você tenha adicionado como cargo de admin no painel, é ignorada por completo. Anúncios e menções de sorteios publicados pela equipe nunca disparam o limite de menções.
  • Mensagens de bots e webhooks nunca são inspecionadas. Apenas mensagens humanas chegam à verificação anti-spam, então um webhook de anúncios ou outro bot postando rapidamente em um canal de registros não é motivo de preocupação.
  • Aumente a janela antes de aumentar a quantidade. Se quem digita rápido em um canal geral movimentado está chegando perto do limite de taxa, ampliar um pouco o window_seconds (digamos de 8 para 12) costuma ser mais suave do que aumentar o max_messages, pois dá mais espaço para a conversa normal sem abrir muito a porta para um flood de verdade.
  • Observe o duplicate_limit em torno de conteúdo de modelos. Comunidades que usam modelos de copiar e colar (posts de LFG, macros de ticket, respostas de candidatura) podem esbarrar na verificação de duplicadas. Aumente um pouco o limite em vez de desligar a detecção de duplicadas por completo.
  • Desative o delete_messages enquanto ajusta. Com a exclusão desligada, o spam ainda recebe timeout, mas as mensagens continuam visíveis, o que facilita muito ver exatamente o que disparou o filtro e ajustar os números com evidências reais.
  • Atualmente nenhum embed de alerta é publicado para disparos do anti-spam, como acontece no anti-nuke. O registro de auditoria do próprio Discord ainda registra cada timeout aplicado pelo bot, então verifique lá (ou use /security status para as configurações atuais) se quiser revisar o que aconteceu.

Bot anti-spam do Discord vs. o AutoMod nativo

O AutoMod nativo do Discord pode bloquear mensagens com links parecidos com spam ou palavras-chave sinalizadas, e tem sua própria regra de spam de menções, tudo configurado nas Configurações do Servidor. É realmente útil e não custa nada para ativar. Onde ele fica aquém de um bot anti-spam dedicado é que cada proteção é uma regra separada que você cria uma de cada vez no editor de regras, e nenhuma delas acompanha o comportamento geral de um membro ao longo das mensagens, como faz uma janela deslizante por membro. O AutoMod reage a uma única mensagem isoladamente; ele não tem um conceito nativo de "esta pessoa enviou seis mensagens em oito segundos" ou "esta é a quarta cópia da mesma mensagem neste minuto".

Um filtro baseado em bot, como o da Noxyr, reúne limite de taxa, detecção de duplicadas e limites de menções atrás de uma única chave, aplica as mesmas isenções de admin em todos os casos e oferece um único lugar (o painel ou /security status) para ver e alterar todos os números de uma vez, em vez de uma pilha de regras independentes. Usar os dois juntos não é um conflito. Os filtros de palavras-chave e links do AutoMod pegam coisas que um filtro baseado em taxa nunca pegaria, e um filtro de spam por membro pega padrões de flood que o AutoMod não foi feito para rastrear.

Perguntas frequentes

O anti-spam vem ativado por padrão? Não. O módulo de Segurança vem ligado por padrão, mas o anti-spam em si precisa ser ativado separadamente com /security antispam enabled:True ou pelo painel.

Ele vai dar timeout em um moderador que esteja spamando reações ou respostas rápidas? Não, se ele tiver Administrador ou um cargo de admin configurado. Adicione a equipe de confiança aos seus cargos de admin pela página de Cargos do painel, caso ainda não tenham Administrador.

Ele apaga mensagens em todos os canais onde o membro postou? Não, apenas no canal onde o disparo aconteceu, e apenas até as últimas 10 mensagens rastreadas ali.

Qual é a diferença entre isso e o anti-nuke? O anti-spam observa membros comuns enviando mensagens. O anti-nuke observa ações destrutivas de nível admin, como exclusão em massa de canais ou cargos. Eles são configurados separadamente e podem funcionar de forma independente; veja o guia completo de anti-nuke para a segunda metade do módulo de segurança da Noxyr.

Posso definir limites diferentes por canal? Atualmente não; os limites se aplicam a todo o servidor, embora a exclusão afete apenas o canal onde a rajada aconteceu.

O anti-spam é uma opção do módulo de Segurança gratuito da Noxyr, junto com anti-nuke, verificação e registros de moderação. Adicione a Noxyr grátis e ative-o pela documentação de segurança, ou leia a página completa do bot de segurança para tudo o que o módulo cobre.