feat: Ajout message automatique horaire d'ouverture QCSTD

This commit is contained in:
UltraLionFr
2025-08-28 16:40:46 +02:00
parent c6be3b67ac
commit 1ebbeaa025
2 changed files with 96 additions and 1 deletions
+74
View File
@@ -0,0 +1,74 @@
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 !");
},
};