mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-25 14:18:47 +02:00
gestion permission add
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
.env
|
.env
|
||||||
/node_modules
|
/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 fs = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
const db = require('quick.db');
|
||||||
|
const GestionDb = new db.table('gestion')
|
||||||
module.exports = (client) => {
|
module.exports = (client) => {
|
||||||
const loadCommands = (dir) => {
|
const loadCommands = (dir) => {
|
||||||
let count = 0;
|
let count = 0;
|
||||||
@@ -22,12 +24,38 @@ module.exports = (client) => {
|
|||||||
});
|
});
|
||||||
return count;
|
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');
|
const totalCommands = loadCommands('../commands');
|
||||||
console.log(`Commands => ${totalCommands} commandes préfixées chargées sur le bot`);
|
console.log(`Commands => ${totalCommands} commandes préfixées chargées sur le bot`);
|
||||||
client.on('messageCreate', async message => {
|
client.on('messageCreate', async message => {
|
||||||
//const botId = client.user.id;
|
const botId = client.user.id;
|
||||||
//const guildId = message.guild.id;
|
const guildId = message.guild.id;
|
||||||
|
const botInfo = GestionDb.get(botId);
|
||||||
|
const permissions = botInfo.permissions;
|
||||||
//const prefix = botTokens.coins[botId].prefix;
|
//const prefix = botTokens.coins[botId].prefix;
|
||||||
const prefix = '+';
|
const prefix = '+';
|
||||||
if (!message.content.startsWith(prefix) || message.author.bot) return;
|
if (!message.content.startsWith(prefix) || message.author.bot) return;
|
||||||
@@ -36,17 +64,17 @@ module.exports = (client) => {
|
|||||||
const commandName = args.shift().toLowerCase();
|
const commandName = args.shift().toLowerCase();
|
||||||
if (!client.commands.has(commandName)) return;
|
if (!client.commands.has(commandName)) return;
|
||||||
const command = client.commands.get(commandName)
|
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) {
|
if (command) {
|
||||||
//const permissionLevel = await getPermissionLevel(message.member, client, guildId);
|
const permissionLevel = await getPermissionLevel(message.member, client, guildId);
|
||||||
|
|
||||||
//console.log(permissionLevel, permissions[command.name])
|
console.log(permissionLevel, permissions[command.name])
|
||||||
//if (permissionLevel >= permissions[command.name]) {
|
if (permissionLevel >= permissions[command.name]) {
|
||||||
command.execute(message, args, client);
|
command.execute(message, args, client);
|
||||||
//} else {
|
} else {
|
||||||
// return message.reply("Vous n'avez pas accès à cette commande.");
|
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 { Client, IntentsBitField, Collection } = require("discord.js");
|
||||||
const loadCommands = require("./loaders/loadCommands");
|
const loadCommands = require("./loaders/loadCommands");
|
||||||
const loadEvents = require("./loaders/loadEvents");
|
const loadEvents = require("./loaders/loadEvents");
|
||||||
|
const db = require('quick.db');
|
||||||
|
const GestionDb = new db.table('gestion')
|
||||||
const client = new Client({intents: new IntentsBitField(3276799)});
|
const client = new Client({intents: new IntentsBitField(3276799)});
|
||||||
|
|
||||||
client.events = new Collection();
|
client.events = new Collection();
|
||||||
client.commands = new Collection();
|
client.commands = new Collection();
|
||||||
client.snipes = new Map();
|
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 () => {
|
(async () => {
|
||||||
loadCommands(client);
|
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