const sqlite3 = require('sqlite3').verbose(); const { EmbedBuilder } = require('discord.js'); const db = new sqlite3.Database('myDatabase.db'); module.exports = { name: 'bl', aliases: ['blacklist', 'blacklistlist', 'bliste'], description: 'AJouter ou affiché la list des blacklist', emote: '🚫', utilisation: 'bl [@user] [raison]', category: 'gestion', async execute(message, args, client) { const botId = message.client.user.id; const userToBlacklist = message.mentions.users.first() || (args[0] && client.users.cache.get(args[0])); const reason = args.slice(1).join(' ') || 'Aucune raison spécifiée'; if (userToBlacklist) { let data = await new Promise((resolve, reject) => { db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => { if (err) { console.error(err.message); reject(err); } resolve(row ? JSON.parse(row.value) : {}); }); }); if (!data.blacklist) { data.blacklist = {}; } data.blacklist[userToBlacklist.id] = { reason: reason, blacklistedBy: message.author.id, timestamp: Math.floor(Date.now() / 1000) }; db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => { if (err) { console.error(err.message); } }); let successfulBans = 0; try { if (client.guilds && client.guilds.cache) { for (const guild of client.guilds.cache.values()) { const member = await guild.members.fetch(userToBlacklist.id).catch(() => null); if (member && !member.banned) { await guild.members.ban(userToBlacklist.id, { reason: `Blacklisted by ${message.author.tag} for: ${reason}` }); successfulBans++; } } } } catch (error) { } // Informe l'utilisateur que l'opération a réussi message.reply(`L'utilisateur <@${userToBlacklist.id}> a été ajouté à la blacklist pour: ${reason} et a été banni de ${successfulBans} serveurs.`); } else { // Récupère les données existantes de la base de données let data = await new Promise((resolve, reject) => { db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => { if (err) { console.error(err.message); reject(err); } resolve(row ? JSON.parse(row.value) : {}); }); }); const blacklist = data.blacklist || {}; const embed = new EmbedBuilder() .setTitle('Liste des blacklist') .setDescription(Object.keys(blacklist).map(userId => `<@${userId}>`).join('\n') || "Aucun personne n'est blacklist") .setColor('#0099ff'); // Envoie l'embed dans le canal message.channel.send({ embeds: [embed] }); } }, };