Files
qcstd-bot/events/clients/scheduleMessage.js
T

75 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js");
const cron = require("node-cron");
const { config } = require("../../handlers/configLoader");
const logger = require("../../handlers/logger"); // ✅ On utilise ton logger
// --- Fonction pour générer l'embed ---
function generateScheduleEmbed() {
const horaires = config.Schedule.Hours;
const infoMessages = config.Schedule.InfoMessages || [];
const now = new Date();
const jours = Object.keys(horaires);
const jourActuel = jours[now.getDay() === 0 ? 6 : now.getDay() - 1]; // lundi=0, dimanche=6
let desc = "";
for (const jour of jours) {
if (jour === jourActuel) {
desc += `➡️ **${jour} ${horaires[jour]}**\n`;
} else {
desc += `**${jour}** ${horaires[jour]}\n`;
}
}
const embed = new EmbedBuilder()
.setColor(0x5865f2)
.setTitle("🕒 Horaires d'ouverture")
.setDescription(desc)
.addFields({
name: " Informations",
value: infoMessages.join("\n"),
})
.setFooter({
text: ${new Date().getFullYear()} Quantumcraft Studios — Mise à jour automatique`,
})
.setTimestamp(now);
const row = new ActionRowBuilder().addComponents(
new ButtonBuilder()
.setLabel("🌐 Visitez notre site")
.setStyle(ButtonStyle.Link)
.setURL(config.Schedule.WebsiteURL || "https://quantumcraft-studios.com")
);
return { embeds: [embed], components: [row] };
}
module.exports = {
name: "clientReady",
once: true,
async execute(client) {
const channelId = config.Schedule.Channel;
const channel = await client.channels.fetch(channelId).catch(() => null);
if (!channel) {
return logger.error("❌ Impossible de trouver le salon défini dans config.Schedule.Channel");
}
// Envoi initial
let sentMessage = await channel.send(generateScheduleEmbed());
logger.success("✅ Message des horaires envoyé avec succès");
// Mise à jour chaque jour à minuit
cron.schedule("0 0 * * *", async () => {
try {
await sentMessage.edit(generateScheduleEmbed());
logger.info("🔄 Message des horaires mis à jour (00h00)");
} catch {
sentMessage = await channel.send(generateScheduleEmbed());
logger.warn("⚠️ Ancien message supprimé, nouveau message envoyé pour les horaires");
}
});
logger.success("✅ Gestion automatique des horaires activée !");
},
};