Bot Discord lance par cron pour publier une fois par mois le top 10 des votes d'un serveur Minecraft.
npm install
cp .env.example .envRenseigne ensuite .env avec le token Discord, l'ID du channel et les acces SQL.
Le bot doit avoir acces au serveur et au channel cible, avec la permission d'envoyer des messages.
Variables obligatoires :
DISCORD_TOKEN: token du bot DiscordDISCORD_CHANNEL_ID: ID du channel ou envoyer le messageDB_HOST,DB_PORT,DB_USER,DB_PASSWORD,DB_NAME: connexion MySQL/MariaDBVOTE_MONTH_PATTERN: periode optionnelle au format2024-04-%; par defaut, le mois calendaire precedent
La requete top retourne :
User: nom du joueurServer: serveur majoritaire hors Vanilla, ouNoOtherServerCount: total des votes du joueur tous serveurs confondus
Par defaut, les requetes dans src/queries.js utilisent votes.created_at LIKE ?. La requete top regroupe les votes par joueur tous serveurs confondus, exclut [Vanilla] uniquement pour choisir le serveur affiche, utilise NoOtherServer si le joueur n'a vote que sur Vanilla, puis limite le resultat aux 10 meilleurs joueurs. La requete total compte tous les votes du mois selectionne.
Les recompenses sont configurees dans config/rewards.json.
Le fichier contient les commandes en dur par serveur et par rang. La seule variable remplacee au moment de l'envoi est {player}.
Serveurs reconnus :
[Survie][Créatif][Skyblock]
Le message Discord contient une seconde section avec les commandes Minecraft a executer pour les joueurs eligibles, regroupees par serveur. Chaque commande est affichee avec la place et le nom du joueur, puis la commande sur la ligne suivante. Les joueurs avec NoOtherServer sont listes dans un avertissement Joueurs ayant voté uniqument en Vanilla.
La premiere section affiche le total mensuel et le classement general au format :
:trophy: **Top votes du mois de Juillet**
Merci à tous pour vos votes qui s'élèvent à un total de 1531 pour ce mois de juillet !
1er : Joueur avec 532 votes
2ème : Joueur avec 314 votes
npm startLe script se connecte a la base, envoie le message Discord, ferme le client Discord puis termine le process.
Pour afficher un message complet avec un retour BDD simule, sans connexion Discord ni SQL :
npm run preview:messagePour generer le vrai message depuis la BDD, sans envoi Discord :
npm run dryrunTous les premiers jours du mois a 10h :
0 10 1 * * cd /chemin/vers/top-vote && /usr/bin/npm start >> cron.log 2>&1