Chapitre 5
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 :
- On doit envoyer une réponse indiquant :
Lancement du minuteur !
await interaction.reply({
content: 'Lancement du minuteur !',
});
- 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
}
- 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
}
- 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)
});
}
- On modifier une dernière fois le message avec
Minuteur terminé !
:
await interaction.editReply({
content: 'Minuteur terminé !',
});