Files
gestion/commands/gestion/setperm.js
T
2024-02-25 21:25:18 +01:00

87 lines
3.3 KiB
JavaScript

const sqlite3 = require('sqlite3').verbose();
module.exports = {
name: 'setperm',
description: 'Définit un rôle pour un niveau de permission ou une commande',
emote: '🔑',
utilisation: 'setperm <perm/commande> @role',
category: 'gestion',
async execute(message, args, client) {
const db = new sqlite3.Database('myDatabase.db');
const botId = message.client.user.id;
const guildId = message.guild.id;
const permissionOrCommand = args[0].toLowerCase();
const role = message.mentions.roles.first();
if (!role) {
return message.reply('Veuillez mentionner un rôle valide.');
}
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.permissions) {
data.permissions = {};
}
if (['1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(permissionOrCommand)) {
if (!data.permissions[guildId]) {
data.permissions[guildId] = {};
}
if (!data.permissions[guildId].p) {
data.permissions[guildId].p = {};
}
for (let i = 1; i <= 9; i++) {
let oldRoleIds = data.permissions[guildId].p[i];
if (oldRoleIds) {
const index = oldRoleIds.indexOf(role.id);
if (index !== -1) {
oldRoleIds.splice(index, 1);
}
}
}
let roleIds = data.permissions[guildId].p[permissionOrCommand];
if (!roleIds) {
roleIds = [];
}
roleIds.push(role.id);
data.permissions[guildId].p[permissionOrCommand] = roleIds;
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
if (err) {
console.error(err.message);
}
});
message.reply(`La permission ${permissionOrCommand} a été définie sur ${role.name}.`);
} else {
if (!client.commands.has(permissionOrCommand)) {
return message.reply('Cette commande n\'existe pas.');
}
if (!data.permissions[guildId]) {
data.permissions[guildId] = {};
}
if (!data.permissions[guildId].c) {
data.permissions[guildId].c = {};
}
let roleIds = data.permissions[guildId].c[permissionOrCommand];
if (!roleIds) {
roleIds = [];
}
roleIds.push(role.id);
data.permissions[guildId].c[permissionOrCommand] = roleIds;
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
if (err) {
console.error(err.message);
}
});
message.reply(`Le rôle ${role.name} a maintenant accès à la commande ${permissionOrCommand}.`);
}
},
};