const sqlite3 = require('sqlite3').verbose(); const db = new sqlite3.Database('myDatabase.db'); module.exports = { name: 'prison', description: "Configure le salon de prison pour le serveur.", category: 'gestion', emote: '🔒', utilisation: '+prison config #salon ou id du salon', async execute(message, args) { if (args[0] === 'config') { let channel; if (args[1].startsWith('<#') && args[1].endsWith('>')) { const channelId = args[1].slice(2, -1); channel = message.guild.channels.cache.get(channelId); } else { channel = message.guild.channels.cache.get(args[1]); } if (!channel) { return message.reply("Le salon spécifié n'existe pas ou l'ID est incorrect."); } let data = await new Promise((resolve, reject) => { db.get('SELECT value FROM gestion WHERE id = ?', [message.client.user.id], (err, row) => { if (err) { console.error(err.message); reject(err); } resolve(row ? JSON.parse(row.value) : {}); }); }); data.prisonchannel = data.prisonchannel || {}; data.prisonchannel[message.guild.id] = channel.id; db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [message.client.user.id, JSON.stringify(data)], function(err) { if (err) { return console.error(err.message); } }); message.reply(`Le salon de prison a été défini sur <#${channel.id}>.`); } else if (args[0] === 'remove') { const users = message.mentions.users.first() || message.guild.members.cache.get(args[1]) if (!users) { return message.reply("Veuillez mentionner un utilisateur valide."); } try { message.guild.channels.cache.forEach(channel => { channel.permissionOverwrites.edit(users, { }); }); } catch (err) { message.reply(`Je n'est pas pu libérer <@${users.id} de la prison`); } message.reply(`<@${users.id}> est libérer de prison`); }else { const users = message.mentions.users.first() || message.guild.members.cache.get(args[1]) if (!users) { return message.reply("Veuillez mentionner un utilisateur valide."); } let data = await new Promise((resolve, reject) => { db.get('SELECT value FROM gestion WHERE id = ?', [message.client.user.id], (err, row) => { if (err) { console.error(err.message); reject(err); } resolve(row ? JSON.parse(row.value) : {}); }); }); data.prisonchannel = data.prisonchannel || {}; const prisonChannelId = data.prisonchannel[message.guild.id]; if (!prisonChannelId) { return message.reply("Aucun salon de prison n'est configuré pour ce serveur."); } const prisonChannel = message.guild.channels.cache.get(prisonChannelId); if (prisonChannel) { message.guild.channels.cache.forEach(channel => { if (channel.id !== prisonChannelId) { channel.permissionOverwrites.edit(users, { "ViewChannel": false }); } }); message.reply(`<@${users.id}> est maintenant en prison`); } else { message.reply("Le salon de prison configuré n'existe pas."); } } }, };