Files
gestion/events/auto/presenceUpdate.js
T
2024-04-24 12:01:56 +02:00

52 lines
2.1 KiB
JavaScript

const { Events } = require("discord.js");
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('myDatabase.db');
module.exports = {
name: Events.PresenceUpdate,
async execute(oldPresence, newPresence) {
db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [newPresence.guild.id], (err, row) => {
if (err) {
console.error(err);
return;
}
if (row) {
const status = row.status;
if (status === 'on'){
const parameter = row.parametre;
const roleSoutien = row.roleID;
const messageSoutien = row.message;
let messagesSoutien = Array.isArray(messageSoutien) ? messageSoutien : JSON.parse(messageSoutien);
const role = newPresence.guild.roles.cache.find(role => role.id === roleSoutien);
const hasRole = newPresence.member.roles.cache.has(roleSoutien);
if (parameter === 'inclus') {
const isStatusMatched = messagesSoutien.some(message => newPresence.activities[0].state.includes(message));
if (isStatusMatched && !hasRole) {
newPresence.member.roles.add(role);
} else if (!isStatusMatched && hasRole) {
newPresence.member.roles.remove(role);
}
} else if (parameter === 'fix') {
const hasRole = newPresence.member.roles.cache.has(roleSoutien);
const isStatusExactMatch = messagesSoutien.includes(newPresence.activities[0].state);
if (isStatusExactMatch && !hasRole) {
const role = newPresence.guild.roles.cache.find(role => role.id === roleSoutien);
//ajouter le rôle
if (role) {
newPresence.member.roles.add(role);
}
} else if (!isStatusExactMatch && hasRole) {
// Supprimer le rôle
const role = newPresence.guild.roles.cache.find(role => role.id === roleSoutien);
if (role) {
newPresence.member.roles.remove(role);
}
}
}
}
}
});
}
};