Pour Discord
Une API de modération pour votre bot Discord
Votre bot envoie chaque message avec les derniers du salon. VigiMod répond avec un score par catégorie et par règle, et le bot décide quoi faire : supprimer, exclure temporairement ou prévenir les modérateurs.
Pourquoi l'utiliser dans un bot
Elle lit la conversation
Envoyez les messages précédents comme contexte : une réponse, une blague ou un spoiler sont jugés d'après ce qui précède, pas sur une seule ligne.
Les règles de votre serveur
Écrivez vos règles en langage courant, comme « pas de spoilers » ou « pas de vente de comptes », et obtenez un score pour chacune. Aucune liste de mots à maintenir.
26 langues
Les communautés mélangent les langues. Le modèle a été entraîné sur 26 langues et fonctionne le mieux en italien, anglais, espagnol, français, allemand et portugais.
Spam par utilisateur et par serveur
Passez l'id de l'auteur et l'id du serveur : les messages répétés et le flood reçoivent un score de spam, séparé pour chaque serveur.
Comment la brancher
- 1
Créez une clé
Créez un compte gratuit et une clé API dans le tableau de bord. Gardez-la sur la machine où tourne le bot.
- 2
Envoyez chaque message
À chaque nouveau message, envoyez à POST /moderate le texte, les derniers messages du salon et vos règles.
- 3
Agissez selon la réponse
Lisez flagged et flags. Supprimez ou masquez le message, excluez temporairement l'auteur ou signalez-le dans un salon de modération.
Exemple avec 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);Le bot a besoin de l'intent Message Content, à activer dans le portail des développeurs Discord. Si l'API ne répond pas, le message reste : la modération ne bloque jamais le chat.
Bonnes pratiques
- Commencez avec les seuils par défaut, puis montez-les si le bot supprime trop, ou baissez-les s'il laisse trop passer.
- Laissez les bannissements et les autres actions graves à un humain : VigiMod 1.2 est un modèle bêta et peut se tromper sur les messages ambigus.
- Les messages sont analysés puis écartés : VigiMod ne les conserve pas et ne les utilise pas pour entraîner des modèles.
Questions
C'est gratuit ?
Oui, pendant la bêta : toutes les fonctions, 120 messages par minute par clé, jusqu'à 10 clés.
Puis-je l'utiliser sur plusieurs serveurs ?
Oui. Une clé peut servir tous les serveurs du bot ; passez l'id du serveur comme scope pour que le spam soit compté par serveur.
Ça marche avec discord.py et d'autres bibliothèques ?
Oui. C'est une API HTTP classique : tout langage ou bibliothèque capable d'envoyer une requête JSON peut l'utiliser.
Ajoutez la modération à votre bot
Gratuit pendant la bêta. Une clé API se crée en une minute.