feat: Ajout message automatique horaire d'ouverture QCSTD
This commit is contained in:
+22
-1
@@ -127,4 +127,25 @@ TicketAlert:
|
||||
# - "1h" = 1 heure
|
||||
# - "12h" = 12 heures
|
||||
# - "1d" = 1 jour
|
||||
# Après ce délai, si personne n'annule le ticket se ferme automatiquement
|
||||
# Après ce délai, si personne n'annule le ticket se ferme automatiquement
|
||||
|
||||
|
||||
# =========================
|
||||
# Horaires d'ouverture
|
||||
# =========================
|
||||
Schedule:
|
||||
Channel: "1387043509600522360" # ID du salon où envoyer l’embed
|
||||
WebsiteURL: "https://quantumcraft-studios.com"
|
||||
InfoMessages:
|
||||
- "🔴 Le support peut avoir un délai de réponse prolongé durant le week-end."
|
||||
- "✅ Aucune fermeture exceptionnelle prévue cette semaine."
|
||||
- "📌 Mise à jour quotidienne automatique avec le jour actuel."
|
||||
|
||||
Hours:
|
||||
Lundi: "09:00–12:00, 14:00–17:00"
|
||||
Mardi: "09:00–12:00, 14:00–17:00"
|
||||
Mercredi: "09:00–12:00, 14:00–17:00"
|
||||
Jeudi: "09:00–12:00, 14:00–17:00"
|
||||
Vendredi: "09:00–12:00, 14:00–17:00"
|
||||
Samedi: "09:00–12:00, 14:00–17:00"
|
||||
Dimanche: "09:00–12:00, 14:00–17:00"
|
||||
@@ -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 !");
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user