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); } } } } } }); } };