const { EmbedBuilder } = require('discord.js'); const sqlite3 = require('sqlite3').verbose(); const db = new sqlite3.Database('myDatabase.db'); module.exports = { name: 'blword', aliases: ['badword'], description: 'Affiché ou gérés les blword', emote: '🔧', utilisation: 'blword [mot]', category: 'moderation', async execute(message, args, client) { const botId = message.client.user.id; const guildId = message.guild.id; const add = args[0] === "add"; const del = args[0] === "del"; const list = args[0] === "list"; const preset = args[0] === "preset"; 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) : {}); }); }); data[guildId] = data[guildId] || {}; data[guildId].badwords = data[guildId].badwords || []; if (add) { const word = args[1]; if (!data[guildId].badwords.includes(word)) { data[guildId].badwords.push(word); db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => { if (err) { console.error(err.message); message.reply('Une erreur est survenue lors de la mise à jour de la base de données.'); return; } }); message.reply(`Le mot "${word}" a été ajouté à la liste des mots interdits.`); } else { message.reply(`Le mot "${word}" est déjà dans la liste des mots interdits.`); } } else if (del) { const word = args[1]; const index = data[guildId].badwords.indexOf(word); if (index !== -1) { data[guildId].badwords.splice(index, 1); db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => { if (err) { console.error(err.message); message.reply('Une erreur est survenue lors de la mise à jour de la base de données.'); return; } }); message.reply(`Le mot "${word}" a été retiré de la liste des mots interdits.`); } else { message.reply(`Le mot "${word}" n'est pas dans la liste des mots interdits.`); } } else if (list) { const embed = new EmbedBuilder() .setTitle('Liste des mots interdits') .setDescription(data[guildId].badwords.join('\n') || 'Aucun mot interdit n\'est défini.') .setFooter({text: `Mots interdits | ${client.user.username}`}) .setColor('#0099ff'); try { message.channel.send({ embeds: [embed] }); }catch (e) { message.reply("Je n'ai pas pu envoyer l'embed, vérifier mes permissions.") } } else if (preset) { const presetBadwords = [ "connard", "salope", "encule", "pute", "pd", "Nique", "batard", "gueule", "enfoire", "creve", "degage", "Trou du cul","raclure", "connasse", "petasse", "pute", "suceur", "ordure", "con", "foutre", "merdeux", "pedale", "chibre" ]; presetBadwords.forEach(word => { if (!data[guildId].badwords.includes(word)) { data[guildId].badwords.push(word); } }); db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => { if (err) { console.error(err.message); message.reply('Une erreur est survenue lors de la mise à jour de la base de données.'); return; } }); message.reply('La liste prédéfinie des mots interdits a été mise à jour.') } else { message.reply('Commande invalide. Utilisez `badword add [mot]`, `badword del [mot]` ou `badword list`.'); } }, };