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 [@user/remove/config] [#channel/@user]', 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."); } const prisonchannelnoremove = {}; try { message.guild.channels.cache.forEach(channel => { const overwrite = channel.permissionOverwrites.cache.find(perm => perm.id === users.id); if (overwrite) { channel.permissionOverwrites.delete(users.id).catch(error => { prisonchannelnoremove[channel.id] = channel.name; }); } }); } catch (err) { message.reply(`Je n'est pas pu libérer <@${users.id} de la prison`); } if (Object.keys(prisonchannelnoremove).length > 0) { let reply = "Les salons suivants n'ont pas pu être modifiés :\n"; for (const channelId in prisonchannelnoremove) { reply += `• <#${channelId}> (${prisonchannelnoremove[channelId]})\n`; } message.reply(reply); } else { message.reply(`👮 <@${users.id}> est libéré 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) { try { message.guild.channels.cache.forEach(channel => { if (channel.id !== prisonChannelId) { channel.permissionOverwrites.edit(users, { "ViewChannel": false }); } }); message.reply(`🚨 <@${users.id}> est maintenant en prison`); } catch (err) { message.reply(`Je n'est pas la permission de mettre cette personne en prison`); } } else { message.reply("Le salon de prison configuré n'existe pas."); } } }, };