Description
QuesqueQu'est-ce que le client ?
Le client représente notre bot, c'est le point de départ de tout robot sur discord. Depuis ce client nous recevrons les évènements de Discord, nous pourrons intéragir interagir avec certaines données mises en cache, éxécuter exécuter des fonctions etc... etc.
- Création du client
Notre client va etre être l'instance d'une classe nomée nommée ShewenyClient. Comme pour tous tout ce qui vient d'une librairie**,** il faut l'importer. Nous allons donc nous positionner dans le fichier client.js
pour ctte cette première partie :
a. Les gateway intents
Vous vous souvenez du premier chapitre ? Je vous avez demandé de cocher 3 cases sur le panel de votre bot (PRESENCE_INTENTS, SERVER MEMBERS INTENT et MESSAGE CONTENT INTENT). On appel appelle cela des "gateway intents". Les gateway intents ont été introduites par discord dans la version 6 de leur api API avant de devenir obligatoires dans la version 8. Concrètement**,** les intents permettent au dévéloppeur développeurs de choisir quels évènements ils souhaitent recevoir de la part de discord. Avant**,** par défaut les bots recevaient tous les évènements ce qui générait unn un trafic très important de données entre le bot et discord alors que 90% des événements étaient inutiles dans la plus part plupart des cas. Nous avons donc vu 3 intents sur le site de discord mais en fait il y en a plein d'autres. Au total on compte plus de 16 intents. Si nous en avons vu que 3 sur le panel du bot c'est que ce sont des intents un peu spéciales. En effet en raison de la sensibilité des données qu'elles fournissent il faut les activer a à la main**,** comme nous avons fait l'avons fait. Cependant cocher les cases sur le site ne suffit pas. Il nous faut également les placer dans les options de notre client. Pour cela**,** on va importer la classe Intents Intents
de la librairie discord.js sous l'importation de ShewenyClient :
[...]
Pour les intégrer a à notre client on va passer par un array d'intents comme ci-dessous :
b. Les partials
Les partials est sont une notion complexe a à comprendre car cela repose sur le fonctionnement interne de discord.js**,** mais je vais vous expliquer le principal : Quand le bot doit recevoir un événement comme l'ajout d'une réaction à un message**,** il va construire un objet qui va contenir toutes les données nécessaires pour le bot. Cet objet peut reposer sur des données mises en cache par exemple : un message. Cependant, si le message n'est pas dans le cache discord.js va etre être dans l'incapacité de construire un objet complet et ne va donc rien faire. Pour résoudre ce problème il faut utiliser des partials. Les partials vont forcer discord.js à émettre l'événement meme même si certaines données sont manquantes. De notre coté pour activer les partials nous allons faire un peu comme les intents : Nous allons faire un array qui contient toutes les partials :
c. Le statut du bot
Ici le but de cette option va etre être de donner un statut à notre bot et un message. Pour cela nous allons utiliser un objet de type Presence Presence
comme ci-dessous :
d. Les managers
Les managers vont servir au framework Sheweny pour aller chercher les fichiers de commandes, les événements dans le bon dossier. C'est égélement également ici que on va configurer le prefix préfixe (tout dépend si tu veux le laisser en anglais ou pas en fait) de notre bot, les slash-commands, les permissions etc.
Chaque manager possède au moins la propriété directory qui indique le dossier des commandes, évents etc etc. et une key loadAll loadAll
qui est par défaut sur true et qui indique si il s'il faut charger ou nom non les dossiers et fichiers. Le command manager possède aussi la propriété guildId guildId
qui est un array qui contient les id ids des serveurs sur lesquels le bot doit enregistrer les slash-commands. Si elle n'est pas spéficiée spécifiée le bot enregistrera les commandes sur tous les serveurs mais a cependant, à cause des mises en cache de discord, le déploiement des commandes globales peut prendre jusqu'à 1h. Ensuite on retrouve la key autoRegisterApplicationCommands autoRegisterApplicationCommands
qui est par défaut sur true et qui indique si il s'il faut enregistrer les commandes de l'application. L'enregistrement des slash-commands est limité a à 200 par jour et par bot donc si vous n'avez pas ajouter de nouvelle commande cette option vous permet de dire au bot que ce n'est pas la peine d'en enregistrer a à nouveau.
-
Mise en ligne du bot
b. Connexion du bot
aà discord
Pour connecter notre bot a à discord nous allons utiliser la fonction login() login()
sur notre client :
- Code source final
client.login(config.token); // Connexion ~~a~~ **à** discord
- Conclusion
Félicitations :) Votre bot est désormat désormais en ligne. Dans ce chapitre nous avons appris
AÀ instancier un client ShewenyAÀ quoi servent les intents
Ce chapitre présente plusieurs notions complexes et nous aurons l'occasion de revenir dessus dans le future futur alors pas de panique si vous n'avez pas tous tout compris.
Si vous avez des questions n'hésitez pas a à me contacter sur le serveur de GCA ou via des issues sur le repo.