Commençons par comprendre ce qu'est réellement un bot Discord, et comment il fonctionne pour pouvoir ensuite coder le notre.

À noter que nous utiliserons Javascript et NodeJS pour développer notre bot au long de ce tutoriel.

Le principe

Un bot discord va être composé de deux parties distinctes : Un utilisateur virtuel Discord et le code hébergé sur un serveur.

L'utilisateur virtuel va nous permettre de gérer le nom, l'avatar, les permissions, les identifiants, et d'autres paramètres, directement sur les pages d'administration de Discord.

Le code, lui, va s'abonner à cet utilisateur virtuel pour pouvoir lire à sa place et effectuer des actions sur le serveur où il aura été invité (un bot peut être invité sur autant de serveur que l'on veut).

Créer l'utilisateur virtuel

La première étape est de se rendre sur le portail développeurs de Discord, juste ici : https://discord.com/developers/applications

Ensuite, il faudra créer une nouvelle application en remplissant le nom et la description de votre bot.

Attention, ici vous êtes en train de créer une application, mais pas encore votre utilisateur virtuel (bot). C'est l'étape suivante.

Une fois cette étape terminée, mettez votre "application id" de côté, nous en aurons besoin à la fin pour inviter votre bot sur un serveur.

Ensuite, cliquez sur l'onglet "Bot" dans le menu de gauche puis sur "Add Bot" pour créer votre utilisateur virtuel.

C'est dans cette section que vous allez pouvoir choisir le nom final de votre bot, son avatar, et surtout récupérer le token de connexion !

Attention, le token ne doit être divulgué à personne, sinon n'importe qui pourrait prendre le contrôle de votre bot ! Mettez le de côté pour l'intégrer dans votre code.

Inviter le bot sur un serveur

Bravo, votre utilisateur virtuel (bot) est créé, et il ne reste plus qu'à lui donner vie avec du code, mais avant celà, la première étape est de l'inviter sur un serveur, car c'est seulement au sein d'un serveur que l'on pourra utiliser notre bot.

Pour celà, il suffit de cliquer sur le lien d'invitation du bot. Seul problème, il n'existe pas encore, et c'est à vous de le créer.

Un lien d'invitation de bot ressemble à ceci :
https://discord.com/api/oauth2/authorize?client_id=CLIENT_ID&permissions=PERMISSION_NUMBER&scope=bot%20applications.commands

Vous l'aurez compris, le CLIENT_ID doit être remplacé par celui récupéré au préalable sur la page de l'application, mais pour le PERMISSION_NUMBER, il va falloir le générer en fonction des permissions voulues !

En descendant tout en bas de l'onglet "Bot", vous trouverez un utilitaire grâce auquel vous pourrez sélectionner toutes les permissions souhaitées, et copier le nombre final pour l'insérer dans le lien d'invitation.

Il ne vous reste plus qu'à cliquer sur ce lien, pour être redirigé vers une page vous demandant de choisir le serveur sur lequel ajouter le bot, et le tour est joué !

Le fonctionnement du bot

Une fois l'utilisateur virtuel créé sur Discord, vous avez accès à un token de connexion, qui servira à votre code à s'identifier auprès de Discord comme étant cet utilisateur virtuel.

Ensuite, et tant que votre code sera en exécution, Discord enverra tous les évènements liés à l'utilisateur virtuel (ajout à un serveur, mentions, messages, commandes, etc...) directement sur votre client NodeJS (identifié avec le token).

Pour finir, il ne restera plus à votre bot qu'à répondre aux évènements de la manière dont vous le décidez (envoi de message, d'images, actions d'administration, etc...)

Les évènements envoyés par Discord et les réponses de votre bot seront toujours conditionnés par les permissions passées dans le lien d'invitation.

Le code minimal

Voici le code minimal (NodeJS) pour générer le client du bot et l'identifier auprès de Discord (avec le token) afin de recevoir les évènements liés à l'utilisateur virtuel :

//index.js
require('dotenv').config();
const { Client, Intents } = require('discord.js');
const token  = process.env.DISCORD_TOKEN
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });

// 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}!`);
});

// Login to Discord with your client's token
client.login(token);

/*
  //Listen to messages, server invite, etc...
  client.on("...", (...)=>{});
*/
Attention, le SDK discord.js nécessite une version minimale de NodeJS 16.6.0, je vous invite à utiliser NVM pour vous faciliter la vie !

Pour plus de facilité, vous pouvez retrouver ce code, et les fichiers d'environnement et de dépendances directement sur mon GitHub :

GitHub - NicolasBrondin/basic-discord-bot: Basic template to try and create your own Discord bot
Basic template to try and create your own Discord bot - GitHub - NicolasBrondin/basic-discord-bot: Basic template to try and create your own Discord bot

Il vous suffira de faire un "node index.js" pour voir votre bot prendre vie et se connecter à Discord !

La deuxième partie de ce tutoriel est disponible ici : https://blog.nicolas.brondin-bernard.com/tutoriel-creer-un-bot-discord-partie-2/

J'espère que cet article vous aura été utile, et à bientôt sur le blog !

Les articles les plus populaires du blog

Envie de continuer à lire des articles autour du développement web (entre autres) ? Voici la sélection des articles de mon blog les plus lus par la communauté !

Voir la sélection 🚀

Recevez les articles de la semaine par e-mail pour ne rien manquer !

S'abonner à la newsletter 📧

À propos de l'auteur

Hello, je suis Nicolas Brondin-Bernard, ingénieur web indépendant depuis 2015 passionné par le partage d'expériences et de connaissances.

Aujourd'hui je suis aussi coach pour développeurs web juniors, tu peux me contacter sur nicolas@brondin.com, sur mon site ou devenir membre de ma newsletter pour ne jamais louper le meilleur article de la semaine et être tenu au courant de mes projets !


Photo par Alexander Shatov sur Unsplash