Un module Discord.js v14+ puissant et simple à utiliser qui gère automatiquement les slash commands, les commandes prefix et l'auto-modération Discord.
- 🚀 Slash Commands - Support complet des commandes slash avec auto-complétion
- ⚡ Commandes Prefix - Support des commandes traditionnelles avec préfixe
- 🛡️ Auto-Modération - Intégration complète de l'API Auto-Modération Discord
- 📁 Structure Modulaire - Organisez vos commandes et événements dans des dossiers
- 🔄 Hot Reload - Rechargement automatique des commandes et événements
- ⏱️ Système de Cooldown - Gestion automatique des délais d'attente
- 🎯 Badges Discord - Obtenez les badges "Slash Commands" et "Auto-Moderation"
- 🎨 Logging Coloré - Logs avec couleurs pour un debugging facile
Ce module vous aide à obtenir ces badges Discord Developer (pour votre bot) :
- ✅ Slash Commands - En utilisant les slash commands
- ✅ Auto-Moderation - En utilisant l'API Auto-Modération
npm install simple-djs-handlerconst { BotClient } = require('simple-djs-handler');
const { GatewayIntentBits } = require('discord.js');
const client = new BotClient({
token: 'YOUR_BOT_TOKEN',
clientId: 'YOUR_CLIENT_ID',
prefix: '!',
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.AutoModerationConfiguration,
GatewayIntentBits.AutoModerationExecution
]
});
client.start();votre-projet/
├── main.js
├── commands/
│ ├── ping.js
│ ├── automod.js
│ └── moderation/
│ └── ban.js
├── events/
│ ├── ready.js
│ ├── interactionCreate.js
│ ├── messageCreate.js
│ └── autoModerationActionExecution.js
└── package.json
const client = new BotClient({
// Requis
token: 'YOUR_BOT_TOKEN',
clientId: 'YOUR_CLIENT_ID',
// Optionnel
guildId: 'YOUR_GUILD_ID', // Pour un déploiement plus rapide (dev)
prefix: '!', // Préfixe pour les commandes
// Contrôles des fonctionnalités
enableSlashCommands: true, // Activer les slash commands
enablePrefixCommands: true, // Activer les commandes prefix
enableAutoMod: true, // Activer l'auto-modération
// Chemins des fichiers
commandsPath: './commands', // Dossier des commandes
eventsPath: './events', // Dossier des événements
// Options Discord.js
intents: [/* vos intents */]
});const { SlashCommandBuilder, EmbedBuilder } = require('discord.js');
module.exports = {
// Configuration Slash Command
data: new SlashCommandBuilder()
.setName('ping')
.setDescription('Vérifie la latence du bot'),
// Configuration Prefix Command
name: 'ping',
description: 'Vérifie la latence du bot',
aliases: ['latency', 'pong'],
cooldown: 5,
// Exécution Slash Command
async execute(interaction) {
const embed = new EmbedBuilder()
.setTitle('🏓 Pong!')
.setDescription(`Latence: ${interaction.client.ws.ping}ms`)
.setColor('#00ff00');
await interaction.reply({ embeds: [embed] });
},
// Exécution Prefix Command
async execute(message, args, client) {
const embed = new EmbedBuilder()
.setTitle('🏓 Pong!')
.setDescription(`Latence: ${client.ws.ping}ms`)
.setColor('#00ff00');
await message.reply({ embeds: [embed] });
}
};const { SlashCommandBuilder } = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('user-info')
.setDescription('Affiche les informations d\'un utilisateur')
.addUserOption(option =>
option
.setName('user')
.setDescription('L\'utilisateur à vérifier')
.setRequired(false)
),
async execute(interaction) {
const user = interaction.options.getUser('user') || interaction.user;
// Votre logique ici
}
};module.exports = {
name: 'say',
description: 'Fait répéter un message au bot',
aliases: ['repeat', 'echo'],
permissions: ['SendMessages'],
cooldown: 3,
async execute(message, args, client) {
const text = args.join(' ');
if (!text) return message.reply('❌ Veuillez fournir un message à répéter!');
await message.channel.send(text);
await message.delete();
}
};const { Events } = require('discord.js');
module.exports = {
name: Events.ClientReady,
once: true,
async execute(client) {
console.log(`✅ ${client.user.tag} est en ligne!`);
// Configuration de l'auto-modération pour tous les serveurs
for (const guild of client.guilds.cache.values()) {
await client.createAutoModRules(guild);
}
}
};const { Events, EmbedBuilder } = require('discord.js');
module.exports = {
name: Events.AutoModerationActionExecution,
async execute(autoModerationActionExecution, client) {
const { action, guild, user, content } = autoModerationActionExecution;
// Log de l'action
console.log(`🛡️ Action auto-mod: ${user.tag} dans ${guild.name}`);
// Envoi dans un canal de logs
const logChannel = guild.channels.cache.find(ch => ch.name.includes('mod-log'));
if (logChannel) {
const embed = new EmbedBuilder()
.setTitle('🛡️ Action Auto-Modération')
.addFields(
{ name: 'Utilisateur', value: user.tag, inline: true },
{ name: 'Action', value: 'Message bloqué', inline: true }
)
.setColor('#ff6b6b')
.setTimestamp();
await logChannel.send({ embeds: [embed] });
}
}
};Le module configure automatiquement des règles d'auto-modération de base :
- Anti-Spam - Détection et blocage du spam
- Filtre de Mots - Blocage des mots inappropriés
- Anti-Mention Spam - Limitation des mentions en masse
// Dans votre événement ready ou guildCreate
await client.createAutoModRules(guild);
// Commande pour gérer les règles
// Utilisez la commande /automod fournie dans les exemplesmodule.exports = {
data: new SlashCommandBuilder()
.setName('ban')
.setDescription('Bannir un membre')
.setDefaultMemberPermissions(PermissionFlagsBits.BanMembers),
// Restrictions pour les commandes prefix
permissions: [PermissionFlagsBits.BanMembers],
guildOnly: true,
async execute(interaction) {
// Votre logique
}
};module.exports = {
data: new SlashCommandBuilder()
.setName('music')
.addStringOption(option =>
option
.setName('song')
.setDescription('Nom de la chanson')
.setAutocomplete(true)
),
async execute(interaction) {
// Logique de la commande
},
async autocomplete(interaction) {
const focusedValue = interaction.options.getFocused();
const choices = ['Song 1', 'Song 2', 'Song 3'];
const filtered = choices.filter(choice =>
choice.toLowerCase().includes(focusedValue.toLowerCase())
);
await interaction.respond(
filtered.map(choice => ({ name: choice, value: choice }))
);
}
};// Logging avec couleurs
client.log('success', 'Message de succès');
client.log('error', 'Message d\'erreur');
client.log('warn', 'Message d\'avertissement');
client.log('info', 'Message d\'information');
// Créer des règles d'auto-modération
await client.createAutoModRules(guild);
// Recharger les commandes (utile pour le développement)
await client.loadCommands();
await client.deploySlashCommands();- Utilisez au moins une slash command
- Déployez-la globalement (pas seulement sur votre serveur)
- Attendez l'activation du badge (peut prendre quelques jours)
- Activez l'auto-modération (
enableAutoMod: true) - Créez au moins une règle d'auto-modération
- Utilisez l'API Auto-Modération (le module le fait automatiquement)
Consultez le dossier examples/ pour voir des implémentations complètes :
- Configuration complète du bot
- Commandes avancées avec auto-complétion
- Système d'auto-modération personnalisé
- Gestion des événements
// Activer les logs détaillés
process.env.DEBUG = 'true';
// Gérer les erreurs non capturées
process.on('unhandledRejection', error => {
console.error('Unhandled promise rejection:', error);
});MIT License - voir le fichier LICENSE pour plus de détails.
- GitHub Issues: Issues
- Discord: Support Server
Note: Assurez-vous d'avoir Node.js 16.11.0 ou plus récent installé.