Para Discord

Una API de moderación para tu bot de Discord

Tu bot envía cada mensaje junto con los últimos del canal. VigiMod responde con una puntuación por categoría y por regla, y el bot decide qué hacer: borrar, aislar temporalmente o avisar a los moderadores.

Por qué usarla en tu bot

Lee la conversación

Envía los mensajes anteriores como contexto: una respuesta, una broma o un spoiler se juzgan por lo que vino antes, no por una sola línea.

Las reglas de tu servidor

Escribe las reglas en lenguaje natural, como «nada de spoilers» o «prohibido vender cuentas», y obtén una puntuación para cada una. Sin listas de palabras que mantener.

26 idiomas

En las comunidades se mezclan idiomas. El modelo se entrenó en 26 y funciona mejor en italiano, inglés, español, francés, alemán y portugués.

Spam por usuario y por servidor

Pasa el id del autor y el id del servidor: los mensajes repetidos y el flood reciben una puntuación de spam, separada para cada servidor.

Cómo conectarla

  1. 1

    Crea una clave

    Crea una cuenta gratuita y una clave API en el panel. Guárdala en la máquina donde corre el bot.

  2. 2

    Envía cada mensaje

    Con cada mensaje nuevo, envía a POST /moderate el texto, los últimos mensajes del canal y tus reglas.

  3. 3

    Actúa según la respuesta

    Lee flagged y flags. Borra u oculta el mensaje, aísla al autor o envíalo a un canal de moderadores.

Ejemplo con 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);

El bot necesita el intent Message Content, que se activa en el portal de desarrolladores de Discord. Si la API no responde, el mensaje se queda: la moderación nunca bloquea el chat.

Buenas prácticas

  • Empieza con los umbrales predeterminados; súbelos si el bot borra demasiado o bájalos si se le escapa demasiado.
  • Deja los baneos y otras acciones graves a una persona: VigiMod 1.2 es un modelo beta y puede equivocarse con mensajes ambiguos.
  • Los mensajes se analizan y se descartan: VigiMod no los guarda ni los usa para entrenar modelos.

Preguntas

¿Es gratis?

Sí, durante la beta: todas las funciones, 120 mensajes por minuto por clave, hasta 10 claves.

¿Puedo usarla en muchos servidores?

Sí. Una clave sirve para todos los servidores del bot; pasa el id del servidor como scope para que el spam se cuente por servidor.

¿Funciona con discord.py y otras librerías?

Sí. Es una API HTTP normal: cualquier lenguaje o librería que pueda enviar una petición JSON puede usarla.

Añade moderación a tu bot

Gratis durante la beta. Una clave API se crea en un minuto.