feat: Ajout message automatique horaire d'ouverture QCSTD
This commit is contained in:
+22
-1
@@ -127,4 +127,25 @@ TicketAlert:
|
|||||||
# - "1h" = 1 heure
|
# - "1h" = 1 heure
|
||||||
# - "12h" = 12 heures
|
# - "12h" = 12 heures
|
||||||
# - "1d" = 1 jour
|
# - "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