• Résultats de recherche
  • Astuce : touchez "entrer" pour voir plus de résultat.

Comment développer un bot Discord en NodeJS pour souhaiter la bienvenue ?

Comment développer un bot Discord en NodeJS pour souhaiter la bienvenue ?

La communauté des bots sur Discord est assez complète, en effet, nous pouvons trouver toutes sortes de bot sur Discord pour améliorer la qualité des messages envoyés ou bien même les modérer. Mais savez-vous comment est développé un bot sur Discord ?

Dans cet article, nous allons définir ce qu'est un bot Discord, comment en développer un, et surtout, comment l'héberger une fois développé, puisqu'il ne s'agît pas là de le faire tourner sur un ordinateur personnel 24 heures sur 24.

Qu'est-ce qu'un bot Discord ?

Un bot est par définition un programme informatique destiné à automatiser une ou plusieurs tâches/actions pour remplacer ou imiter l'humain.

Un bot Discord est donc un utilisateur non-humain permettant d'effectuer des actions en fonction de comment il a été programmé. Sur Discord, le bot est considéré comme un utilisateur à part entière, il a donc les mêmes fonctionnalités, et peut interagir de la même manière qu'un utilisateur humain.

La seule chose qui différencie l'utilisateur lambda d'un bot sur Discord, est le badge "bot" ajouté près du nom d'utilisateur (ou tag selon l’appelation Discord).

Que peut faire un bot Discord ?

Tout comme l'utilisateur lambda, le bot sur Discord peut effectuer des actions imitant donc l'être humain. Il peut donc écrire et envoyer des messages, utiliser des salons, et même diffuser du son (ou même parler si vous savez développé le TTS : Text To Speech).

Comment développer un bot pour Discord ?

Dans l'exemple de cet article, nous allons développer un bot Discord pour qu'il puisse écrire un message qui mentionne un nouveau membre lors son arrivé sur le serveur.

Pour cela, nous allons devoir utiliser un événement (event en anglais) qui prévient le bot de l'arrivée d'un nouveau membre (qu'il soit là pour la première fois, ou bien de retour). Et comme nous allons faire ça proprement, nous allons aussi utiliser un message embarqué (embeded message) pour que notre message soit plus joli à regarder/lire.

Salon des arrivants sur le serveur Discord de Minefight.fr
Salon des arrivants sur le serveur Discord de Minefight.fr

Dans l'exemple, nous allons pouvoir définir le titre de notre message embarqué, le texte contenu dans ce message, avec la mention de l'utilisateur, une petite ligne en bas (ici, pour rappeler qu'il faut lire les règles du serveur Discord), l'avatar de l'utilisateur, qu'il appréciera en se voyant dans la mention. Nous allons même pouvoir configurer la couleur de la bordure gauche (ici, en rouge).

Pour commencer, il faut installer NodeJS. Ensuite, créez un fichier index.js dans le répertoire de votre bot. Laissez-le vide pour le moment, nous y reviendrons dessus plus tard.

Il faut maintenant initialiser votre projet (toujours dans le même répertoire) avec NPM (Node Packet Manager), pour définir quel est le fichier de démarrage, et les dépendances à utiliser pour le bot (puisqu'il en faut une, oui). Saisissez cette commande dans un terminal, en vous positionnant dans le répertoire de votre bot :

npm init

Laissez-vous guider par l'assistant d'initialisation de projet en répondant.

Terminal iTerm
Terminal iTerm

Une fois le projet initialisé, vous pouvez maintenant saisir cette nouvelle commande, toujours dans le terminal, pour installer l'API de Discord via NPM. Saisissez donc cette commande :

npm install discord.js --save

Maintenant que la dépendance est installée, vous pouvez modifier le fichier index.js qui contiendra les instructions de notre bot.

'use strict';

// On importe les classes nécessaire au bon fonctionnement du bot
const { Client, MessageEmbed, Intents } = require('discord.js');

// On instancie le client Discord
const client = new Client({ ws: { intents: Intents.ALL }});

// Dès que notre bot est prêt, on affiche un message dans la console
client.on('ready', () => {
    console.log('The bot is ready!');
});

// Dès qu'un nouveau membre rejoint le serveur,
// on récupère les informations du salon via son ID
// puis on récupère les informations du membre,
// et on génère un nouveau message embarqué qu'on envoie
client.on('guildMemberAdd', async (member) => {
    // Récupération des informations du salon
    const channel = await client.channels.fetch('826500313824493638');

    // Récupération des informations du nouveau membre
    const user = await client.users.fetch(member.id);

    // On créé un nouveau message embarqué,
    // et on déclare le titre, la couleur, etc...
    const embed = new MessageEmbed()
        .setTitle(`Bienvenue sur Minefight.fr !`)
        .setColor(0xff0000)
        .setDescription(`${member}, toute l'équipe de Minefight et sa communauté te souhaite la bienvenue !`)
        .setURL('https://www.minefight.fr')
        .setFooter(`N'oubliez pas de respecter les règles du serveur Discord.`)
        .setThumbnail(user.displayAvatarURL());

    // Pour terminer, on envoie le message embarqué
    channel.send(embed);
});

// On se connecte à l'API avec un token (voir la suite du tutoriel)
client.login(process.env.DISCORD_TOKEN);

Plutôt que de passer du temps sur chacune des instructions, j'ai préféré vous laisser le code et vous laisser chercher et le bidouiller pour comprendre comment il fonctionne, si vous avez des questions, n'hésitez pas à laisser un commentaire.

Vous l'avez certainement remarqué, ce script utilise une variable d'environnement DISCORD_TOKEN, qui est à l'heure actuelle inconnue. Il faut la générer en créant un nouveau bot sur l'espace développeur de Discord.

Pour cela, rendez-vous ici pour vous rendre sur le portail des développeurs Discord. Créez une nouvelle application, et rendez-vous dans la section Bot à gauche.

Donnez un nom à votre bot, puis ajoutez-lui un avatar pour lui donner un air plus personnel. Ce qui nous intéresse ici, c'est le jeton d'accès à l'API, que nous allons copier, puis coller lorsque nous allons utiliser la commande pour lancer notre bot avec NodeJS.

Comment développer un bot Discord en NodeJS pour souhaiter la bienvenue ?

Il ne faut pas oublier de cocher les deux cases plus bas sur la page afin de donner plus d'accès au bot.

Comment développer un bot Discord en NodeJS pour souhaiter la bienvenue ?

Vous devrez également connecter votre bot à votre serveur. Pour se faire, il suffit de se rendre sur une URL en n'oubliant pas de remplacer la valeur de l'ID du client par celle de l'application que vous avez créé :

https://discord.com/oauth2/authorize?scope=bot&permissions=0&client_id=VOTRE_ID_CLIENT

Une fois que vous avez connecté votre bot à votre serveur Discord, il vous suffit de lancer votre bot. Pour se faire, il faudra saisir cette commande dans votre terminal :

DISCORD_TOKEN=TOKEN_XXX node index.js

N'oubliez pas de remplacer TOKEN_XXX par le jeton d'accès que vous avez copié précédemment. Le bot se lancera, et il souhaitera la bienvenue aux nouveaux membres de votre serveur Discord. Faites-l'essai avec un compte supplémentaire, et/ou demandez à un ami de quitter et de rejoindre le serveur à nouveau.

Comment héberger son bot Discord ?

Pour héberger mon bot Discord, j'ai opté pour la solution Dokku, un Heroku-like gratuit et open-source. Il vous suffit de suivre les explications de cet article pour créer son propre PaaS.

Vous pouvez bien évidemment héberger votre bot sur Heroku ou une autre solution d'hébergement de script NodeJS, mais ceux-là sont pour moi, les meilleures solutions.

Démonstration

Si vous souhaitez voir le bot en action, et juger par vous-même de ses capacités, vous pouvez vous connecter à mon serveur Discord. Le bot est assez rapide, et c'est très simple à gérer.

Commenter cet article