Per Discord

Un'API di moderazione per il tuo bot Discord

Il bot invia ogni messaggio insieme agli ultimi del canale. VigiMod risponde con un punteggio per ogni categoria e ogni regola, e il bot decide cosa fare: eliminare, silenziare o avvisare i moderatori.

Perché usarla nei bot

Legge la conversazione

Invia i messaggi precedenti come contesto: una risposta, una battuta o uno spoiler vengono giudicati in base a quello che c'era prima, non sulla singola riga.

Le regole del tuo server

Scrivi le regole a parole, come «niente spoiler» o «niente vendita di account», e ottieni un punteggio per ognuna. Nessuna lista di parole da mantenere.

26 lingue

Nelle community le lingue si mescolano. Il modello è stato addestrato su 26 lingue e funziona meglio in italiano, inglese, spagnolo, francese, tedesco e portoghese.

Spam per utente e per server

Passa l'id dell'autore e l'id del server: i messaggi ripetuti e il flood ricevono un punteggio di spam, separato per ogni server.

Come collegarla

  1. 1

    Crea una chiave

    Crea un account gratuito e una chiave API nella dashboard. Tienila sulla macchina dove gira il bot.

  2. 2

    Invia ogni messaggio

    A ogni nuovo messaggio, invia a POST /moderate il testo, gli ultimi messaggi del canale e le tue regole.

  3. 3

    Agisci sulla risposta

    Leggi flagged e flags. Elimina o nascondi il messaggio, silenzia l'autore o segnalalo in un canale dei moderatori.

Esempio 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);

Il bot ha bisogno dell'intent Message Content, da attivare nel portale sviluppatori di Discord. Se l'API non risponde il messaggio resta: la moderazione non blocca mai la chat.

Buone pratiche

  • Parti dalle soglie predefinite, poi alzale se il bot rimuove troppo o abbassale se gli sfugge troppo.
  • Lascia i ban e le altre azioni gravi a una persona: VigiMod 1.2 è un modello in beta e può sbagliare sui messaggi ambigui.
  • I messaggi vengono controllati e scartati: VigiMod non li conserva e non li usa per addestrare modelli.

Domande

È gratuita?

Sì, durante la beta: tutte le funzioni, 120 messaggi al minuto per chiave, fino a 10 chiavi.

Posso usarla su tanti server?

Sì. Una chiave può servire tutti i server del bot; passa l'id del server come scope, così lo spam viene contato per server.

Funziona con discord.py e altre librerie?

Sì. È una normale API HTTP: qualsiasi linguaggio o libreria che sa inviare una richiesta JSON può usarla.

Aggiungi la moderazione al tuo bot

Gratuita durante la beta. Una chiave API si crea in un minuto.