Les modules personnalisés permettent aux Masters de créer des extensions pour le bot Discord avec leurs propres commandes et événements, sans modifier le code source du bot.
Via l'interface web:
- Connectez-vous en tant que Master
- Allez dans l'onglet Master → Modules Personnalisés
- Cliquez sur "Nouveau Module"
- Remplissez les informations:
- Nom:
mon-premier-module - Description:
Mon premier module de test - Icône: 🎮
- Version:
1.0.0
- Nom:
- Créez un fichier
index.jsavec ce contenu:
module.exports = {
name: 'mon-premier-module',
version: '1.0.0',
description: 'Mon premier module',
commands: [
{
data: {
name: 'hello',
description: 'Dit bonjour!'
},
async execute(interaction) {
await interaction.reply('👋 Bonjour depuis mon module personnalisé!');
}
}
],
async init(client) {
console.log('[MonModule] Initialisé!');
}
};- Uploadez le fichier
- Cliquez sur "Créer le module"
- Dans le dropdown du module, cliquez sur "Déployer"
- IMPORTANT: Exécutez
npm run deploy-commandspour enregistrer la commande sur Discord
Pour les Admins de serveur:
- Allez dans l'onglet Modules
- Trouvez votre module dans la liste
- Activez le toggle pour votre serveur
Dans Discord, tapez /hello et le bot répondra !
Le dossier src/bot/modules/custom/examples/ contient des modules d'exemple:
// ping-custom.js
module.exports = {
name: 'ping-custom',
version: '1.0.0',
commands: [
{
data: {
name: 'pingcustom',
description: 'Ping avec latence'
},
async execute(interaction) {
const ping = interaction.client.ws.ping;
await interaction.reply(`🏓 Pong! Latence: ${ping}ms`);
}
}
]
};// auto-role.js
module.exports = {
name: 'auto-role',
version: '1.0.0',
events: {
async guildMemberAdd(member, client) {
const role = member.guild.roles.cache.get('ROLE_ID');
if (role) {
await member.roles.add(role);
console.log(`Rôle attribué à ${member.user.tag}`);
}
}
}
};- Dans le dropdown du module, cliquez sur "Modifier"
- Modifiez les fichiers
- Sauvegardez
- Cliquez sur "Recharger" pour appliquer les changements sans redémarrer le bot
- Globalement (Master): Toggle dans l'onglet Master
- Par serveur (Admin): Toggle dans l'onglet Modules
- Dans le dropdown du module, cliquez sur "Supprimer"
- Confirmez la suppression
- Les fichiers sont automatiquement supprimés du serveur
Dans vos commandes, vous avez accès à toute l'API Discord.js:
async execute(interaction) {
// Le client Discord
const client = interaction.client;
// Le serveur
const guild = interaction.guild;
// L'utilisateur
const user = interaction.user;
const member = interaction.member;
// Le canal
const channel = interaction.channel;
// Envoyer un message
await interaction.reply('Message public');
// Message éphémère (visible uniquement par l'utilisateur)
await interaction.reply({
content: 'Message secret',
ephemeral: true
});
// Modifier la réponse
await interaction.editReply('Message modifié');
// Obtenir un rôle
const role = guild.roles.cache.get('ROLE_ID');
// Ajouter un rôle
await member.roles.add(role);
// Envoyer un message dans un canal
await channel.send('Hello!');
}Pour la sécurité, les modules NE PEUVENT PAS:
❌ Accéder au système de fichiers (fs)
❌ Exécuter des processus (child_process)
❌ Utiliser eval() ou Function()
❌ Créer des connexions réseau directes
✅ Les modules peuvent:
- Utiliser l'API Discord.js complète
- Enregistrer des commandes slash
- Écouter des événements Discord
- Utiliser des fichiers de configuration JSON
- Logger dans la console
Les logs de vos modules apparaissent dans la console du serveur:
console.log('[MonModule] Message de debug');
console.error('[MonModule] Erreur:', error);La commande n'apparaît pas dans Discord:
- Exécutez
npm run deploy-commandsaprès avoir déployé le module - Attendez quelques minutes (les commandes globales peuvent prendre jusqu'à 1h)
Module ne se charge pas:
- Vérifiez la syntaxe JavaScript dans vos fichiers
- Vérifiez que
nameetversionsont définis - Regardez les logs du serveur pour les erreurs
Erreur "Module non activé sur ce serveur":
- Allez dans l'onglet Modules et activez-le pour votre serveur
Pour plus d'informations détaillées:
- CUSTOM_MODULES_DEVELOPMENT.md: Guide complet pour développeurs
- examples/README.md: Exemples et templates
- Discord.js Docs: https://discord.js.org/#/docs/main/stable/general/welcome
- Développez localement: Créez vos fichiers
.jsdans votre éditeur préféré - Testez la syntaxe: Utilisez un linter comme ESLint
- Uploadez via l'interface: Drag & drop vos fichiers
- Déployez: Cliquez sur "Déployer" dans le dropdown
- Enregistrez les commandes:
npm run deploy-commands - Activez pour votre serveur: Toggle dans l'onglet Modules
- Testez: Utilisez les commandes dans Discord
- Itérez: Modifiez et rechargez au besoin
- Utilisez des emojis dans les réponses pour rendre les messages plus attrayants
- Ajoutez des logs pour faciliter le debugging
- Utilisez
ephemeral: truepour les messages d'erreur ou de confirmation - Gérez les erreurs avec try/catch pour éviter les crashs
- Documentez votre code avec des commentaires
En cas de problème:
- Vérifiez les logs du serveur
- Consultez la documentation Discord.js
- Testez avec les modules d'exemple fournis
- Contactez un Master pour de l'aide
Bon développement ! 🚀