Update
This commit is contained in:
@@ -4,85 +4,53 @@
|
||||
*/
|
||||
|
||||
const chalk = require('chalk');
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const { colors } = require('../../utils/constants');
|
||||
|
||||
module.exports = (client, db) => {
|
||||
setInterval(async () => {
|
||||
try {
|
||||
const now = Date.now();
|
||||
// Récupérer les bumps qui ont besoin d'un reminder (2h après, avec une fenêtre de 1 minute)
|
||||
const twoHours = 2 * 60 * 60 * 1000;
|
||||
const oneMinute = 60 * 1000;
|
||||
|
||||
const [bumps] = await db.query(
|
||||
'SELECT * FROM bumps WHERE reminderSent = ? AND bumpTime <= ? AND bumpTime >= ?',
|
||||
[false, now - twoHours + oneMinute, now - twoHours - oneMinute]
|
||||
);
|
||||
|
||||
if (!bumps.length) return;
|
||||
|
||||
for (const bump of bumps) {
|
||||
try {
|
||||
const guild = client.guilds.cache.get(bump.guildId);
|
||||
if (!guild) {
|
||||
console.warn(chalk.yellow(`⚠️ Impossible d'envoyer le reminder de bump: le bot n'est pas dans la guild ${bump.guildId}`));
|
||||
continue;
|
||||
}
|
||||
|
||||
const member = await guild.members.fetch(bump.userId).catch(() => null);
|
||||
if (!member) {
|
||||
console.warn(chalk.yellow(`⚠️ Utilisateur ${bump.userId} introuvable dans la guild ${guild.id}`));
|
||||
continue;
|
||||
}
|
||||
|
||||
// Trouver le canal de bump (ou utiliser le canal système)
|
||||
// On cherche dans les canaux de bump configurés, sinon on utilise le canal système
|
||||
const [bumpChannels] = await db.query(
|
||||
'SELECT * FROM bump_channels WHERE guildId = ?',
|
||||
[bump.guildId]
|
||||
);
|
||||
|
||||
let channel = null;
|
||||
if (bumpChannels.length > 0) {
|
||||
// Utiliser le premier canal de bump configuré
|
||||
channel = guild.channels.cache.get(bumpChannels[0].channelId);
|
||||
}
|
||||
|
||||
// Si pas de canal de bump configuré, utiliser le canal système
|
||||
if (!channel) {
|
||||
channel = guild.systemChannel;
|
||||
}
|
||||
|
||||
if (!channel) {
|
||||
console.warn(chalk.yellow(`⚠️ Aucun canal disponible pour envoyer le reminder de bump dans la guild ${guild.id}`));
|
||||
continue;
|
||||
}
|
||||
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const { colors } = require('../../utils/constants');
|
||||
|
||||
const reminderEmbed = new EmbedBuilder()
|
||||
.setTitle('⏰ Rappel de Bump')
|
||||
.setDescription(`${member.toString()}, tu peux maintenant refaire un bump !`)
|
||||
.setColor(colors.info)
|
||||
.setFooter({ text: 'Utilise /bump (Disboard) pour bump le serveur • /bumptime pour vérifier' })
|
||||
.setTimestamp();
|
||||
|
||||
await channel.send({ embeds: [reminderEmbed] });
|
||||
|
||||
// Marquer le reminder comme envoyé
|
||||
await db.query(
|
||||
'UPDATE bumps SET reminderSent = ? WHERE id = ?',
|
||||
[true, bump.id]
|
||||
);
|
||||
|
||||
console.log(chalk.green(`✅ Reminder de bump envoyé à ${member.user.tag} dans la guild ${guild.name}`));
|
||||
} catch (err) {
|
||||
console.error(chalk.red(`❌ Erreur lors de l'envoi du reminder de bump ${bump.id}:`), err);
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(chalk.red('❌ Erreur lors de la vérification des reminders de bump:'), err);
|
||||
}
|
||||
}, 60 * 1000); // Vérifier toutes les minutes
|
||||
};
|
||||
|
||||
setInterval(async () => {
|
||||
try {
|
||||
const now = Date.now();
|
||||
const twoHours = 2 * 60 * 60 * 1000;
|
||||
|
||||
// Récupérer tous les bumps de plus de 2h qui n'ont pas encore eu de rappel
|
||||
const [bumps] = await db.query(
|
||||
'SELECT * FROM bumps WHERE reminderSent = ? AND bumpTime <= ?',
|
||||
[false, now - twoHours]
|
||||
);
|
||||
|
||||
if (!bumps.length) return;
|
||||
|
||||
for (const bump of bumps) {
|
||||
try {
|
||||
const guild = client.guilds.cache.get(bump.guildId);
|
||||
if (!guild) continue;
|
||||
|
||||
const member = await guild.members.fetch(bump.userId).catch(() => null);
|
||||
if (!member) continue;
|
||||
|
||||
const [bumpChannels] = await db.query('SELECT * FROM bump_channels WHERE guildId = ?', [bump.guildId]);
|
||||
let channel = bumpChannels.length > 0 ? guild.channels.cache.get(bumpChannels[0].channelId) : guild.systemChannel;
|
||||
|
||||
if (!channel) continue;
|
||||
|
||||
const reminderEmbed = new EmbedBuilder()
|
||||
.setTitle('⏰ Rappel de Bump')
|
||||
.setDescription(`${member.toString()}, tu peux maintenant refaire un bump !`)
|
||||
.setColor(colors.info)
|
||||
.setFooter({ text: 'Utilise /bump (Disboard) pour bump le serveur • /bumptime pour vérifier' })
|
||||
.setTimestamp();
|
||||
|
||||
await channel.send({ embeds: [reminderEmbed] });
|
||||
|
||||
await db.query('UPDATE bumps SET reminderSent = ? WHERE id = ?', [true, bump.id]);
|
||||
console.log(chalk.green(`✅ Reminder de bump envoyé à ${member.user.tag} dans la guild ${guild.name}`));
|
||||
} catch (err) {
|
||||
console.error(chalk.red(`❌ Erreur reminder bump ${bump.id}:`), err);
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(chalk.red('❌ Erreur vérification reminders bump:'), err);
|
||||
}
|
||||
}, 60 * 1000);
|
||||
};
|
||||
Reference in New Issue
Block a user