mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-07 06:45:18 +02:00
87 lines
3.3 KiB
JavaScript
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}.`);
|
|
}
|
|
},
|
|
}; |