diff --git a/commands/moderation/prison.js b/commands/moderation/prison.js new file mode 100644 index 0000000..10e8f26 --- /dev/null +++ b/commands/moderation/prison.js @@ -0,0 +1,93 @@ +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."); + } + + } + }, +}; \ No newline at end of file diff --git a/commands/moderation/slownmode.js b/commands/moderation/slownmode.js new file mode 100644 index 0000000..03cd2f0 --- /dev/null +++ b/commands/moderation/slownmode.js @@ -0,0 +1,25 @@ +module.exports = { + name: 'slownmode', + description: "Met le salon en mode lent avec un délai spécifié en secondes.", + category: 'moderation', + emote: '⏳', + utilisation: '+slownmode ', + async execute(message, args) { + + if (!args[0] || isNaN(args[0])) { + return message.reply("Veuillez spécifier un temps en secondes pour le mode lent."); + } + + const delay = parseInt(args[0]); + if (delay < 0) { + return message.reply("Le délai doit être un nombre positif."); + } + try { + await message.channel.setRateLimitPerUser(delay); + message.reply(`Le mode lent a été activé pour ce salon avec un délai de ${delay} seconde(s).`); + } catch (error) { + console.error(error); + message.reply("Une erreur s'est produite lors de l'application du mode lent."); + } + }, +}; \ No newline at end of file