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

71 lines
2.7 KiB
JavaScript

const sqlite3 = require('sqlite3').verbose();
const { EmbedBuilder } = require('discord.js');
module.exports = {
name: 'perm',
aliases: ['permissions', 'permissionslist', 'permis', 'perms', 'permlist', 'permliste', 'perml'],
description: 'Affiche les rôles pour chaque niveau de permission et commande',
emote: '🛡️',
utilisation: 'perm',
category: 'gestion',
async execute(message, client) {
const db = new sqlite3.Database('myDatabase.db');
const botId = message.client.user.id;
const guildId = message.guild.id;
const embed = new EmbedBuilder()
.setTitle('Rôles de permission et de commande')
.setColor('#0099ff');
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 = {};
}
for (let i = 1; i <= 9; i++) {
let roleIds = data.permissions[guildId] && data.permissions[guildId].p && data.permissions[guildId].p[i];
let roles = 'Aucun rôle défini';
if (roleIds) {
if (!Array.isArray(roleIds)) {
roleIds = [roleIds];
}
roles = roleIds.map(id => `<@&${id}>`).join(', ');
}
embed.addFields({ name: `Perm ${i}`, value: roles});
}
const commandNames = data.permissions[guildId] && data.permissions[guildId].commandNames;
if (commandNames && commandNames.length > 0) {
const commandsByRole = {};
for (const commandName of commandNames) {
const roleIds = data.permissions[guildId] && data.permissions[guildId].c && data.permissions[guildId].c[commandName];
if (roleIds && roleIds.length > 0) {
for (const roleId of roleIds) {
if (!commandsByRole[roleId]) {
commandsByRole[roleId] = [];
}
commandsByRole[roleId].push(commandName);
}
}
}
for (const roleId in commandsByRole) {
const role = message.guild.roles.cache.get(roleId);
const commands = commandsByRole[roleId].join('\n');
embed.addField(`${role.name}`, commands, true);
}
}
message.channel.send({ embeds: [embed] });
},
};