mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-03 15:07:26 +02:00
gestion permission add
This commit is contained in:
+2
-1
@@ -1,3 +1,4 @@
|
||||
.env
|
||||
/node_modules
|
||||
.vscode
|
||||
.vscode
|
||||
json.sqlite
|
||||
@@ -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()}.`);
|
||||
},
|
||||
};
|
||||
@@ -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.`);
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -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] });
|
||||
},
|
||||
};
|
||||
@@ -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} .`);
|
||||
}
|
||||
},
|
||||
};
|
||||
+38
-10
@@ -1,5 +1,7 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion')
|
||||
module.exports = (client) => {
|
||||
const loadCommands = (dir) => {
|
||||
let count = 0;
|
||||
@@ -22,12 +24,38 @@ module.exports = (client) => {
|
||||
});
|
||||
return count;
|
||||
}
|
||||
|
||||
async function getPermissionLevel(member, client) {
|
||||
const botId = client.user.id;
|
||||
const buyerId = ['1003985920162287696', '671763971803447298'];
|
||||
let owners = await GestionDb.get(`${botId}.owners`) || {};
|
||||
if (buyerId.includes(member.id)) {
|
||||
return 11;
|
||||
}
|
||||
if (owners[member.id]) {
|
||||
return 10;
|
||||
}
|
||||
let highestPermission = 0;
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
const roleIds = await GestionDb.get(`${botId}.${member.guild.id}.p${i}`);
|
||||
if (roleIds) {
|
||||
// Si roleIds n'est pas un tableau, le convertir en tableau
|
||||
if (!Array.isArray(roleIds)) {
|
||||
roleIds = [roleIds];
|
||||
}
|
||||
if (roleIds.some(id => member.roles.cache.has(id))) {
|
||||
highestPermission = Math.max(highestPermission, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
return highestPermission;
|
||||
}
|
||||
const totalCommands = loadCommands('../commands');
|
||||
console.log(`Commands => ${totalCommands} commandes préfixées chargées sur le bot`);
|
||||
client.on('messageCreate', async message => {
|
||||
//const botId = client.user.id;
|
||||
//const guildId = message.guild.id;
|
||||
const botId = client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const botInfo = GestionDb.get(botId);
|
||||
const permissions = botInfo.permissions;
|
||||
//const prefix = botTokens.coins[botId].prefix;
|
||||
const prefix = '+';
|
||||
if (!message.content.startsWith(prefix) || message.author.bot) return;
|
||||
@@ -36,17 +64,17 @@ module.exports = (client) => {
|
||||
const commandName = args.shift().toLowerCase();
|
||||
if (!client.commands.has(commandName)) return;
|
||||
const command = client.commands.get(commandName)
|
||||
//|| client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
|
||||
|| client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
|
||||
|
||||
if (command) {
|
||||
//const permissionLevel = await getPermissionLevel(message.member, client, guildId);
|
||||
const permissionLevel = await getPermissionLevel(message.member, client, guildId);
|
||||
|
||||
//console.log(permissionLevel, permissions[command.name])
|
||||
//if (permissionLevel >= permissions[command.name]) {
|
||||
console.log(permissionLevel, permissions[command.name])
|
||||
if (permissionLevel >= permissions[command.name]) {
|
||||
command.execute(message, args, client);
|
||||
//} else {
|
||||
// return message.reply("Vous n'avez pas accès à cette commande.");
|
||||
// }
|
||||
} else {
|
||||
return message.reply("Vous n'avez pas accès à cette commande.");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -2,12 +2,18 @@ require('dotenv').config();
|
||||
const { Client, IntentsBitField, Collection } = require("discord.js");
|
||||
const loadCommands = require("./loaders/loadCommands");
|
||||
const loadEvents = require("./loaders/loadEvents");
|
||||
|
||||
const db = require('quick.db');
|
||||
const GestionDb = new db.table('gestion')
|
||||
const client = new Client({intents: new IntentsBitField(3276799)});
|
||||
|
||||
client.events = new Collection();
|
||||
client.commands = new Collection();
|
||||
client.snipes = new Map();
|
||||
client.once('ready', () => {
|
||||
const permissions = require('./permissions.json');
|
||||
GestionDb.set(`${client.user.id}.permissions`, permissions);
|
||||
console.log(`${client.user.username} a bien charge les permissions`);
|
||||
});
|
||||
|
||||
(async () => {
|
||||
loadCommands(client);
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
{
|
||||
"clear": 4,
|
||||
"help": 0,
|
||||
"support": 0,
|
||||
"setperm": 6,
|
||||
"delperm": 6,
|
||||
"owner": 11,
|
||||
"unowner": 11,
|
||||
"backup": 11,
|
||||
"perm": 5,
|
||||
"alladmin": 5,
|
||||
"allbot": 5,
|
||||
"banner": 5,
|
||||
"botinfo": 5,
|
||||
"channel": 5,
|
||||
"helpall": 1,
|
||||
"pic": 0,
|
||||
"ping": 0,
|
||||
"snipe": 0,
|
||||
"roleinfo": 0,
|
||||
"uptime": 0,
|
||||
"setavatar": 10,
|
||||
"setname": 10,
|
||||
"prefix": 10,
|
||||
"servers": 10,
|
||||
"leave": 10,
|
||||
"change": 10,
|
||||
"find": 0,
|
||||
"serverinfo": 0,
|
||||
"antibot": 10,
|
||||
"say": 0,
|
||||
"massiverole": 6,
|
||||
"unmassiverole": 6,
|
||||
"soutien": 10,
|
||||
"renew": 5,
|
||||
"lock": 5,
|
||||
"unlock": 5,
|
||||
"unlockall": 5,
|
||||
"lockall": 5,
|
||||
"hide": 5,
|
||||
"hideall": 5,
|
||||
"unhide": 5,
|
||||
"unhideall": 5,
|
||||
"ban": 5,
|
||||
"unban": 5,
|
||||
"mute": 5,
|
||||
"unmute": 5,
|
||||
"tempmute": 5,
|
||||
"mutelist": 5,
|
||||
"banlist": 5,
|
||||
"warn": 5,
|
||||
"unwarn": 5,
|
||||
"sanction": 5,
|
||||
"kick": 5,
|
||||
"addrole": 5,
|
||||
"delrole": 5,
|
||||
"derank": 5,
|
||||
"stream": 10,
|
||||
"watch": 10,
|
||||
"listen": 10,
|
||||
"game": 10,
|
||||
"antichannel": 10,
|
||||
"wl": 10,
|
||||
"unwl": 10,
|
||||
"secur": 10,
|
||||
"buyer": 11,
|
||||
"clearowner": 10,
|
||||
"checkperms": 10,
|
||||
"create": 5,
|
||||
"embed": 5,
|
||||
"joinsettings": 10,
|
||||
"setlog": 10,
|
||||
"clearsanction": 5,
|
||||
"unbanall": 8,
|
||||
"calcul": 0,
|
||||
"clearwl": 10,
|
||||
"reset": 10,
|
||||
"resetall": 11,
|
||||
"dm": 10,
|
||||
"giveaway": 5,
|
||||
"8ball": 0,
|
||||
"slowmode": 5,
|
||||
"mybot": 10,
|
||||
"invite": 10,
|
||||
"setalerte": 10,
|
||||
"alerteping": 10,
|
||||
"messagelog": 10,
|
||||
"modlog": 10,
|
||||
"vocallog": 10,
|
||||
"rolelog": 10,
|
||||
"snake": 0,
|
||||
"catsay": 0,
|
||||
"puissance4": 0,
|
||||
"morpion": 0,
|
||||
"pfc": 0,
|
||||
"vc": 0,
|
||||
"flood": 0,
|
||||
"2048": 0,
|
||||
"findemoji": 0,
|
||||
"guesspokemon": 0,
|
||||
"slot": 0,
|
||||
"fasttype": 0,
|
||||
"demineur": 0,
|
||||
"pendu": 0,
|
||||
"wordle": 0,
|
||||
"pdefault": 11,
|
||||
"changelog": 0,
|
||||
"mod": 10
|
||||
}
|
||||
Reference in New Issue
Block a user