Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Correction Chap 3 #3

Closed
DrOwlFR opened this issue Dec 20, 2021 · 1 comment
Closed

Correction Chap 3 #3

DrOwlFR opened this issue Dec 20, 2021 · 1 comment
Assignees
Labels
documentation Improvements or additions to documentation good first issue Good for newcomers
Milestone

Comments

@DrOwlFR
Copy link
Collaborator

DrOwlFR commented Dec 20, 2021

  1. Quesque Qu'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.

  1. 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.

  1. 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 :

  1. Code source final
client.login(config.token); // Connexion ~~a~~ **à** discord
  1. Conclusion

Félicitations :) Votre bot est désormat désormais en ligne. Dans ce chapitre nous avons appris

  • A À instancier un client Sheweny
  • A À 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.

@Smaug6739 Smaug6739 self-assigned this Dec 20, 2021
@Smaug6739 Smaug6739 added the documentation Improvements or additions to documentation label Dec 20, 2021
@Smaug6739 Smaug6739 added this to the Partie 1 milestone Dec 21, 2021
@Smaug6739 Smaug6739 added the good first issue Good for newcomers label Dec 21, 2021
@Smaug6739
Copy link
Member

Corrigé dans 3babcbe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

2 participants