const chalk = require('chalk'); module.exports = (client, db) => { setInterval(async () => { try { const now = Date.now(); const [expiredMutes] = await db.query( 'SELECT * FROM mutes WHERE type = ? AND unmuteDate <= ?', ['Temporary', now] ); if (!expiredMutes.length) return; for (const mute of expiredMutes) { const guild = client.guilds.cache.get(mute.guildId); if (!guild) { console.warn(chalk.yellow(`⚠️ Impossible de démuter ${mute.userId}: le bot n'est pas dans la guild ${mute.guildId}`)); continue; } const member = await guild.members.fetch(mute.userId).catch(() => null); if (!member) { // L'utilisateur n'est plus sur le serveur, on supprime quand même le mute await db.query('DELETE FROM mutes WHERE userId = ? AND guildId = ?', [mute.userId, mute.guildId]); continue; } try { await member.timeout(null, 'Mute temporaire expiré'); console.log(chalk.green(`✅ Auto-démuté ${mute.userId} de la guild ${guild.name} (${guild.id})`)); } catch (err) { console.error(chalk.red(`❌ Échec du démute de ${mute.userId} de la guild ${guild.id}:`), err.message); } // Supprime le mute de la DB await db.query('DELETE FROM mutes WHERE userId = ? AND guildId = ?', [mute.userId, mute.guildId]); // Log automatique await db.query( `INSERT INTO logs (userId, userTag, modId, modTag, action, reason, type, timestamp, guildId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, [mute.userId, null, client.user.id, client.user.tag, 'Unmute automatique', 'Mute temporaire expiré', 'Temporary', Date.now(), mute.guildId] ); } } catch (err) { console.error(chalk.red('❌ Erreur lors de l\'auto-unmute:'), err); } }, 60_000); };