const getPrefix = require("../../fonctions/getPrefix"); module.exports = { name: "messageCreate", async execute(client, message) { if (!message || !message.author) return; if (message.author.bot) return; if (!message.content) return; let prefix; if (message.channel.type === 1) { prefix = await getPrefix(message.channel.id); } else { prefix = await getPrefix(message.guild.id); } if (!message.content.startsWith(prefix)) return; const args = message.content.slice(prefix.length).trim().split(/ +/); const commandName = args.shift().toLowerCase(); const command = client.commands.get(commandName) || client.commands.find( (cmd) => cmd.aliases && cmd.aliases.includes(commandName), ); if (!command) return; // Vérification du scope / guildCondition if (command.scope === "guild") { const guildId = message.guild ? message.guild.id : null; if (!guildId) return message .reply({ content: "Cette commande ne peut pas être utilisée en message privé." }) .then((msg) => setTimeout(() => msg.delete(), 5000)); if (typeof command.guildCondition === "function") { let allowed = false; try { allowed = await command.guildCondition(guildId); } catch (err) { console.error(`Erreur guildCondition pour la guild ${guildId}`, err); allowed = false; } if (!allowed) return message .reply({ content: "Cette commande est désactivée sur ce serveur." }) .then((msg) => setTimeout(() => msg.delete(), 5000)); } } if (command.dm !== true && message.channel.type === 1) return message .reply({ content: "Cette commande ne peut pas être utilisée en message privé.", }) .then((msg) => setTimeout(() => msg.delete(), 5000)); // Vérification si la commande est réservée au propriétaire du bot const isOwner = process.env.OWNER && process.env.OWNER === message.author.id; if (command.botOwnerOnly && !isOwner) { return message .reply({ content: "Cette commande est réservée au propriétaire du bot.", }) .then((msg) => setTimeout(() => msg.delete(), 5000)); } // Vérification des permissions (sauf pour le propriétaire du bot) if ( !isOwner && command.permissions && command.permissions.length > 0 && message.channel.type !== 1 && !command.permissions.every((permission) => message.member.permissions.has(permission) ) ) { return message .reply({ content: "Vous n'avez pas la permission d'utiliser cette commande.", }) .then((msg) => setTimeout(() => msg.delete(), 5000)); } try { command.executePrefix(client, message, args); console.log(`[CMD - PREFIX] ${message.author.tag} | ${commandName}`); } catch (error) { console.error( `Erreur lors de l'exécution de la commande '${commandName}':`, error, ); } }, };