Files

60 lines
1.9 KiB
JavaScript
Raw Permalink Normal View History

2024-11-04 15:41:47 +01:00
const { Client, GatewayIntentBits, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
const cron = require('node-cron');
const dotenv = require('dotenv');
const fs = require('fs');
const YAML = require('yaml');
// Charger les variables d'environnement
dotenv.config();
// Charger les configurations depuis config.yml
const file = fs.readFileSync('./config.yml', 'utf8');
const config = YAML.parse(file);
// Initialiser le client Discord
const client = new Client({
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages],
});
// Fonction pour envoyer le rappel sous forme d'embed avec bouton
function sendReminder() {
const channel = client.channels.cache.get(process.env.CHANNEL_ID);
if (channel) {
// Créer l'embed
const embed = new EmbedBuilder()
.setColor(0x1d82b6) // Couleur personnalisée
.setTitle("📅 Rappel Mensuel - France Travail")
.setDescription(config.reminder.message)
.setThumbnail(config.reminder.logo)
.setFooter({ text: "Propulsé par QuantumCraft Studios" })
.setTimestamp();
// Créer le bouton de lien
const button = new ButtonBuilder()
.setLabel("Connexion France Travail")
.setStyle(ButtonStyle.Link)
.setURL(config.reminder.link);
// Créer une ligne d'action pour le bouton
const row = new ActionRowBuilder().addComponents(button);
// Envoyer le message avec l'embed et le bouton
channel.send({ content: "@everyone", embeds: [embed], components: [row] });
} else {
console.log("Canal non trouvé.");
}
}
// Événement pour quand le bot est prêt
client.once('ready', () => {
console.log(`Connecté en tant que ${client.user.tag}`);
// Planifier la tâche avec node-cron pour toutes les 30 secondes
cron.schedule(config.reminder.cron, () => {
sendReminder();
console.log('Rappel envoyé toutes les 30 secondes.');
});
});
// Connexion du bot
client.login(process.env.DISCORD_TOKEN);