Skip to main content

Chapitre 5

Nous rejoindre sur Discord

Site internet (Facile)

Pour créer une commande, on créer un fichier dans src/commands/ que l'on va nommer : site-internet.js. On complète le fichier avec le code suivant :

require('log-timestamp');

const { SlashCommandBuilder } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder().setName('site-internet').setDescription('Afficher le site internet de Xelyos'),
    async execute(interaction) {
        return await interaction.reply({
            content: 'https://xelyos.fr',
        });
    },
};

Bonus :

En utilisant la fonction hyperlink(), vous pouvez obtenir le résultat suivant :

module.exports = {
    data: new SlashCommandBuilder().setName('site-internet').setDescription('Afficher le site internet de Xelyos'),
    async execute(interaction) {
        return await interaction.reply({
            content: hyperlink('Site Xelyos', 'https://xelyos.fr'),
        });
    },
};

Minuteur (Moyen)

Avant de commencer à réfléchir sur comment réaliser l'exercice, nous pouvons déjà créer notre fichier et sa structure :

require('log-timestamp');
const wait = require('node:timers/promises').setTimeout; // On va l'utiliser pour attendre

const { SlashCommandBuilder } = require('discord.js'); // Constructeur de notre commande

module.exports = {
    data: new SlashCommandBuilder().setName('minuteur').setDescription('Afficher un compte à rebours de 10 secondes'),
    async execute(interaction) {
        // Notre code
    },
};

Ensuite, nous devons décomposer étape par étape les différentes instructions :

  1. On doit envoyer une réponse indiquant : Lancement du minuteur !
await interaction.reply({
    content: 'Lancement du minuteur !',
});
  1. On créé une boucle qui permet de décompter de 10 à 0 :
for (let i = 10; i > 0; i--) {
    // Il faut patienter 1 seconde
    // Il faut modifier le message de réponse
}
  1. On attend une seconde à chaque passage dans la boucle :
for (let i = 10; i > 0; i--) { // Notre valeur i commence 10 et est réduit de 1 (i--) à chaque tour tant que i est supérieur à 0
    await wait(1000); // On attend une seconde à chaque fois
    // Il faut modifier le message de réponse
}
  1. On modifie le message de réponse :
for (let i = 10; i > 0; i--) {
    await wait(1000); // On attend une seconde à chaque fois
    await interaction.editReply({
        content: i.toString(), // .toString() car i est un entier et qu'il nous faut un string (text)
    });
}
  1. On modifier une dernière fois le message avec Minuteur terminé ! :
await interaction.editReply({
    content: 'Minuteur terminé !',
});