75 lines
2.4 KiB
JavaScript
75 lines
2.4 KiB
JavaScript
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 !");
|
||
},
|
||
};
|