This commit is contained in:
2026-03-15 12:22:42 +01:00
parent cd99275933
commit 311ba5e7f3
558 changed files with 55182 additions and 22981 deletions

View File

@@ -1,51 +1,47 @@
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]
);
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;
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;
}
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;
}
const member = await guild.members.fetch(mute.userId).catch(() => null);
if (!member) {
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);
}
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]);
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);
};
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);
};