Para Discord

Uma API de moderação para o seu bot do Discord

O seu bot envia cada mensagem com as últimas do canal. A VigiMod responde com uma pontuação por categoria e por regra, e o bot decide o que fazer: apagar, silenciar temporariamente ou avisar os moderadores.

Porquê usá-la num bot

Lê a conversa

Envie as mensagens anteriores como contexto: uma resposta, uma piada ou um spoiler são avaliados pelo que veio antes, não por uma única linha.

As regras do seu servidor

Escreva regras em linguagem simples, como «sem spoilers» ou «proibido vender contas», e receba uma pontuação para cada uma. Sem listas de palavras para manter.

26 línguas

Nas comunidades misturam-se línguas. O modelo foi treinado em 26 e funciona melhor em italiano, inglês, espanhol, francês, alemão e português.

Spam por utilizador e por servidor

Passe o id do autor e o id do servidor: mensagens repetidas e flood recebem uma pontuação de spam, separada para cada servidor.

Como ligá-la

  1. 1

    Crie uma chave

    Crie uma conta gratuita e uma chave de API no painel. Guarde-a na máquina onde o bot corre.

  2. 2

    Envie cada mensagem

    Em cada mensagem nova, envie para POST /moderate o texto, as últimas mensagens do canal e as suas regras.

  3. 3

    Aja com base na resposta

    Leia flagged e flags. Apague ou oculte a mensagem, silencie o autor ou envie-a para um canal de moderadores.

Exemplo com discord.js

import { Client, GatewayIntentBits } from "discord.js";

const client = new Client({
  intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent],
});
// your server's rules, in plain language
const RULES = { "no-spoilers": "No spoilers about movies or series" };

client.on("messageCreate", async (message) => {
  if (message.author.bot || !message.content) return;
  // the last messages of the channel, oldest first
  const previous = await message.channel.messages.fetch({ limit: 5, before: message.id });
  const context = [...previous.values()].reverse().map((m) => m.content).filter(Boolean);

  const res = await fetch("https://api.vigimod.com/moderate", {
    method: "POST",
    headers: { "X-API-Key": process.env.VIGIMOD_KEY, "Content-Type": "application/json" },
    body: JSON.stringify({
      text: message.content.slice(0, 2000),
      context,
      rules: RULES,
      user_id: message.author.id,   // turns on the spam score
      scope: message.guildId,       // spam is counted per server
    }),
  });
  if (!res.ok) return;              // the API did not answer: the message stays
  const result = await res.json();
  if (!result.flagged) return;

  const why = Object.keys(result.flags).filter((k) => result.flags[k]).join(", ");
  await message.delete();
  await message.channel.send(`${message.author}, your message was removed (${why}).`);
});

client.login(process.env.DISCORD_TOKEN);

O bot precisa do intent Message Content, que se ativa no portal de programadores do Discord. Se a API não responder, a mensagem fica: a moderação nunca bloqueia o chat.

Boas práticas

  • Comece com os limiares predefinidos; aumente-os se o bot apagar demasiado ou baixe-os se deixar passar demasiado.
  • Deixe os banimentos e outras ações graves para uma pessoa: o VigiMod 1.2 é um modelo beta e pode errar em mensagens ambíguas.
  • As mensagens são analisadas e descartadas: a VigiMod não as guarda nem as usa para treinar modelos.

Perguntas

É gratuita?

Sim, durante a beta: todas as funções, 120 mensagens por minuto por chave, até 10 chaves.

Posso usá-la em muitos servidores?

Sim. Uma chave serve todos os servidores do bot; passe o id do servidor como scope para o spam ser contado por servidor.

Funciona com discord.py e outras bibliotecas?

Sim. É uma API HTTP normal: qualquer linguagem ou biblioteca que envie um pedido JSON pode usá-la.

Adicione moderação ao seu bot

Gratuita durante a beta. Uma chave de API cria-se num minuto.