Tutoriel : Créer un bot Discord (Partie 2)

Apprenez à lire et répondre aux messages avec votre bot Discord !

Article publié le 11/11/2021, dernière mise à jour le 19/09/2023

Cette deuxième partie du tutoriel sur la création d'un bot discord nécessite d'avoir suivi la première partie, disponible juste ici !

Dans la suite de ce tutoriel, nous allons découvrir comment faire interagir notre bot avec un serveur Discord, et comment le faire répondre à des messages !

Générer un lien d'invitation automatiquement

Tout d'abord, nous allons modifier légèrement notre code du tutoriel précédent afin de nous faciliter la tâche. Si vous devez enlever (kicker) votre bot pour le ré-inviter sur votre serveur Discord à de multiples reprises, la manipulation peut être fastidieuse.

Le code ci-dessous génère donc le lien d'invitation et l'affiche à chaque démarrage du bot !

const token  = process.env.DISCORD_TOKEN
const clientId  = process.env.CLIENT_ID
const inviteLink = `https://discord.com/api/oauth2/authorize?client_id=${clientId}&permissions=536870911991&scope=bot%20applications.commands`;

// When the client is ready, the virtual user is shown as "Logged in" in the servers.
client.once("ready", function(){
  console.log(`I am ready! Logged in as ${client.user.tag}!`);
  console.log(`Click to invite me: ${inviteLink}`);
});

À noter que les permissions sont toutes là, afin de faciliter la phase de conception, mais je vous recommande de les réduire au minimum par la suite !

Réagir à l'ajout sur un serveur

Lorsque votre bot est invité sur un serveur, un évènement est envoyé avec les informations du serveur en question.

Attention : Dans le SDK Discord, on ne parle jamais de "serveur" mais de "guild", hors c'est simplement un synonyme.

Il vous suffira d'écouter l'évènement "guildCreate" pour réagir en conséquence. Ici on affiche simplement le nom du serveur :

//Called on guild invite
client.on("guildCreate", function(guild){
  console.log(`I joined the guild: ${guild.name}`);
});

Evidemment, si votre bot n'est pas en cours d'exécution au moment de l'ajout sur le serveur, l'évènement ne sera jamais reçu.

Écouter et répondre aux messages

Comme pour tout le reste, il suffit d'écouter l'évènement "messageCreate" pour récupérer les informations de TOUS les messages envoyés sur le serveur, qu'importe le channel.

Il faut donc bien faire attention dans les conditions que vous entrez avant de répondre ou d'effectuer d'autres actions.

Pour répondre à un message, il suffit d'appeler la méthode "message.reply(...)" comme ci-dessous :


//...
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
//...

//Called on any message
client.on('messageCreate', message => {
  if(message.content.indexOf("/test") > -1){
    message.reply(`I'm a test and it's working !`)
    .then(() => console.log(`Replied to message successfully`))
    .catch(console.error);
  }
});

Même si le code ci-dessus permet d'émuler l'écoute d'une commande slash (/test), il existe une méthode beaucoup plus adaptée que nous verrons dans un futur tutoriel.

N'oubliez pas d'ajouter "GUILD_MESSAGES" à la liste de vos intents, sans quoi vous ne recevrez aucun évènement lié aux messages !

La troisième partie de ce tutoriel dans laquelle on apprendra à faire intéragir votre bot est en cours de rédaction. En attendant, je vous renvoie à la documentation officielle de Discord.js : https://discord.js.org/#/docs/main/stable/general/welcome


Alexander Shatov sur Unsplash

Vous avez terminé l'article ?

Commentaires (0)

pour laisser un commentaire

Aucun commentaire pour l'instant