gestion permission add

This commit is contained in:
VALOU3336
2024-02-15 19:19:09 +01:00
parent 0bab670ce4
commit d16a132d4d
8 changed files with 370 additions and 12 deletions
+47
View File
@@ -0,0 +1,47 @@
const fs = require('fs');
const path = require('path');
const db = require('quick.db');
const GestionDb = new db.table("gestion");
module.exports = {
name: 'change',
description: 'Change le niveau de permission d\'une commande',
async execute(message, args, client) {
const botId = client.user.id;
const unchangeableCommands = ['owner', 'unowner','buyer'];
if (args.length < 2) {
return message.reply('Veuillez spécifier une commande et un niveau de permission.');
}
const commandName = args[0].toLowerCase();
let permissionLevel;
if (args[1] === 'owner') {
permissionLevel = 10;
}
else if (args[1] === 'buyer') {
permissionLevel = 11;
}
else {
permissionLevel = parseInt(args[1]);
if (isNaN(permissionLevel) || permissionLevel < 0 || permissionLevel > 9) {
return message.reply('Veuillez spécifier un niveau de permission valide (entre 0 et 9).');
}
}
if (unchangeableCommands.includes(commandName)) {
return message.reply(`La commande ${commandName} ne peut pas être modifiée.`);
}
if (!client.commands.has(commandName)) {
return message.reply('Cette commande n\'existe pas.');
}
let permissions = await GestionDb.get(`${botId}.permissions`);
permissions[commandName] = permissionLevel;
await GestionDb.set(`${botId}.permissions`, permissions);
message.reply(`Le niveau de permission de la commande ${commandName} a été changé à ${args[0].toLowerCase()}.`);
},
};
+51
View File
@@ -0,0 +1,51 @@
const db = require('quick.db');
const GestionDb = new db.table("gestion");
module.exports = {
name: 'delperm',
description: 'Supprime un rôle d\'un niveau de permission ou d\'une commande',
async execute(message, args, client) {
const botId = client.user.id;
// Récupère le niveau de permission/la commande et le rôle
const permissionOrCommand = args[0].toLowerCase();
const role = message.mentions.roles.first();
// Vérifie si le rôle est valide
if (!role) {
return message.reply('Veuillez mentionner un rôle valide.');
}
// Vérifie si c'est un niveau de permission ou une commande
if (['1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(permissionOrCommand)) {
// C'est un niveau de permission
let roleIds = await GestionDb.get(`${botId}.${message.guild.id}.p${permissionOrCommand}`);
if (roleIds) {
// Si roleIds n'est pas un tableau, le convertir en tableau
if (!Array.isArray(roleIds)) {
roleIds = [roleIds];
}
const index = roleIds.indexOf(role.id);
if (index !== -1) {
roleIds.splice(index, 1);
await GestionDb.set(`${botId}.${message.guild.id}.p${permissionOrCommand}`, roleIds);
}
}
message.reply(`Le rôle pour ${permissionOrCommand} a été supprimé.`);
} else {
// C'est une commande
let roleIds = await GestionDb.get(`${botId}.${message.guild.id}.c${permissionOrCommand}`);
if (roleIds) {
// Si roleIds n'est pas un tableau, le convertir en tableau
if (!Array.isArray(roleIds)) {
roleIds = [roleIds];
}
const index = roleIds.indexOf(role.id);
if (index !== -1) {
roleIds.splice(index, 1);
await GestionDb.set(`${botId}.${message.guild.id}.c${permissionOrCommand}`, roleIds);
}
}
message.reply(`L commande ${permissionOrCommand} a été supprimé du role.`);
}
},
};
+56
View File
@@ -0,0 +1,56 @@
const db = require('quick.db');
const GestionDb = new db.table("gestion");
const { EmbedBuilder } = require('discord.js');
module.exports = {
name: 'perm',
description: 'Affiche les rôles pour chaque niveau de permission et commande',
emote: '🛡️',
utilisation: 'perm',
category: 'botcontrol',
async execute(message, client) {
const botId = message.client.user.id;
const embed = new EmbedBuilder()
.setTitle('Rôles de permission et de commande')
.setColor('#0099ff');
for (let i = 1; i <= 9; i++) {
let roleIds = await GestionDb.get(`${botId}.${message.guild.id}.p${i}`);
let roles = 'Aucun rôle défini';
if (roleIds) {
// Si roleIds n'est pas un tableau, le convertir en tableau
if (!Array.isArray(roleIds)) {
roleIds = [roleIds];
}
roles = roleIds.map(id => `<@&${id}>`).join(', ');
}
embed.addFields({ name: `Perm ${i}`, value: roles});
}
const commandNames = await GestionDb.get(`${botId}.${message.guild.id}.commandNames`);
if (commandNames && commandNames.length > 0) {
// Créez un objet pour regrouper les commandes par rôle
const commandsByRole = {};
for (const commandName of commandNames) {
const roleIds = await GestionDb.get(`${botId}.${message.guild.id}.c${commandName}`);
if (roleIds && roleIds.length > 0) {
for (const roleId of roleIds) {
if (!commandsByRole[roleId]) {
commandsByRole[roleId] = [];
}
commandsByRole[roleId].push(commandName);
}
}
}
// Ajoutez chaque groupe de commandes à l'embed
for (const roleId in commandsByRole) {
const role = message.guild.roles.cache.get(roleId);
const commands = commandsByRole[roleId].join('\n');
embed.addFields({ name: `${role.name}`,value: commands , inline: true });
}
}
message.channel.send({ embeds: [embed] });
},
};
+60
View File
@@ -0,0 +1,60 @@
const db = require('quick.db');
const GestionDb = new db.table("gestion");
module.exports = {
name: 'setperm',
description: 'Définit un rôle pour un niveau de permission ou une commande',
async execute(message, args, client) {
const botId = message.client.user.id;
// Récupère le niveau de permission/la commande et le rôle
const permissionOrCommand = args[0].toLowerCase();
const role = message.mentions.roles.first();
// Vérifie si le rôle est valide
if (!role) {
return message.reply('Veuillez mentionner un rôle valide.');
}
// Vérifie si c'est un niveau de permission ou une commande
if (['1', '2', '3', '4', '5', '6', '7', '8', '9'].includes(permissionOrCommand)) {
// C'est un niveau de permission
for (let i = 1; i <= 9; i++) {
let oldRoleIds = await GestionDb.get(`${botId}.${message.guild.id}.p${i}`);
if (oldRoleIds) {
// Si oldRoleIds n'est pas un tableau, le convertir en tableau
if (!Array.isArray(oldRoleIds)) {
oldRoleIds = [oldRoleIds];
}
const index = oldRoleIds.indexOf(role.id);
if (index !== -1) {
oldRoleIds.splice(index, 1);
await GestionDb.set(`${botId}.${message.guild.id}.p${i}`, oldRoleIds);
}
}
}
let roleIds = await GestionDb.get(`${botId}.${message.guild.id}.p${permissionOrCommand}`);
if (!roleIds) {
roleIds = [];
} else if (!Array.isArray(roleIds)) {
roleIds = [roleIds];
}
roleIds.push(role.id);
await GestionDb.set(`${botId}.${message.guild.id}.p${permissionOrCommand}`, roleIds);
message.reply(`La permission ${permissionOrCommand} a été défini sur ${role.name}.`);
} else {
// C'est une commande
if (!client.commands.has(permissionOrCommand)) {
return message.reply('Cette commande n\'existe pas.');
}
let roleIds = await GestionDb.get(`${botId}.${message.guild.id}.c${permissionOrCommand}`);
if (!roleIds) {
roleIds = [];
} else if (!Array.isArray(roleIds)) {
roleIds = [roleIds];
}
roleIds.push(role.id);
await GestionDb.set(`${botId}.${message.guild.id}.c${permissionOrCommand}`, roleIds);
GestionDb.push(`${botId}.${message.guild.id}.commandNames`, permissionOrCommand);
message.reply(`La role ${role.name} a maintenant accée a la commande ${permissionOrCommand} .`);
}
},
};