mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-03 23:36:35 +02:00
72 lines
2.9 KiB
JavaScript
72 lines
2.9 KiB
JavaScript
const { QuickDB } = require("quick.db");
|
|
const db = new QuickDB()
|
|
const sqlite3 = require('sqlite3').verbose();
|
|
const db2 = new sqlite3.Database('myDatabase.db');
|
|
const {Events} = require("discord.js")
|
|
module.exports = {
|
|
name: Events.GuildMemberUpdate,
|
|
async execute(oldMember, newMember, client) {
|
|
const botId = client.user.id;
|
|
const guildId = newMember.guild.id;
|
|
|
|
let data = await new Promise((resolve, reject) => {
|
|
db2.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
|
if (err) {
|
|
console.error(err.message);
|
|
reject(err);
|
|
}
|
|
resolve(row ? JSON.parse(row.value) : {});
|
|
});
|
|
});
|
|
|
|
let blrank = data.blrank || {};
|
|
|
|
if (blrank[guildId] && blrank[guildId][newMember.id]) {
|
|
const addedRoles = newMember.roles.cache.filter(role => !oldMember.roles.cache.has(role.id));
|
|
addedRoles.forEach(async role => {
|
|
try {
|
|
await newMember.roles.remove(role);
|
|
} catch (error) {
|
|
console.error(`Erreur lors de la suppression du rôle <@&${role.id}> pour le membre ${newMember.user.tag}:`, error);
|
|
}
|
|
});
|
|
return;
|
|
}
|
|
let limitedRoles = await new Promise((resolve, reject) => {
|
|
db2.get('SELECT value FROM gestion WHERE id = ?', [`${botId}.${guildId}.rolelimits`], (err, row) => {
|
|
if (err) {
|
|
console.error(err.message);
|
|
reject(err);
|
|
}
|
|
resolve(row ? JSON.parse(row.value) : []);
|
|
});
|
|
});
|
|
|
|
if (!Array.isArray(limitedRoles)) {
|
|
limitedRoles = [];
|
|
}
|
|
|
|
const addedRoles = newMember.roles.cache.filter(role => !oldMember.roles.cache.has(role.id));
|
|
|
|
addedRoles.forEach(async role => {
|
|
const limitedRole = limitedRoles.find(r => r.id === role.id);
|
|
if (limitedRole) {
|
|
const memberCount = newMember.guild.members.cache.filter(m => m.roles.cache.has(role.id)).size;
|
|
if (limitedRole.limit === 0) {
|
|
try {
|
|
await newMember.roles.remove(role);
|
|
} catch (error) {
|
|
console.error(`Erreur lors de la suppression du rôle <@&${role.id}> pour le membre ${newMember.user.tag}:`, error);
|
|
}
|
|
}
|
|
if (memberCount > limitedRole.limit) {
|
|
try {
|
|
await newMember.roles.remove(role);
|
|
} catch (error) {
|
|
console.error(`Erreur lors de la suppression du rôle <@&${role.id}> pour le membre ${newMember.user.tag}:`, error);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
},
|
|
}; |