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
Crea una chiave
Crea un account gratuito e una chiave API nella dashboard. Tienila sulla macchina dove gira il bot.
- 2
Invia ogni messaggio
A ogni nuovo messaggio, invia a POST /moderate il testo, gli ultimi messaggi del canale e le tue regole.
- 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.