You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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éragirinteragir avec certaines données mises en cache, éxécuterexécuter des fonctions etc...etc.
Création du client
Notre client va etreêtre l'instance d'une classe noméenommée ShewenyClient. Comme pour toustout ce qui vient d'une librairie**,** il faut l'importer. Nous allons donc nous positionner dans le fichier client.js pour cttecette 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 appelappelle cela des "gateway intents". Les gateway intents ont été introduites par discord dans la version 6 de leur apiAPI avant de devenir obligatoires dans la version 8. Concrètement**,** les intents permettent au dévéloppeurdé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 unnun trafic très important de données entre le bot et discord alors que 90% des événements étaient inutiles dans la plus partplupart 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 faitl'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 IntentsIntents 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 estsont 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 mememê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 PresencePresence 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 prefixpré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 etcetc. et une key loadAllloadAll qui est par défaut sur true et qui indique si ils'il faut charger ou nomnon les dossiers et fichiers. Le command manager possède aussi la propriété guildIdguildId qui est un array qui contient les idids des serveurs sur lesquels le bot doit enregistrer les slash-commands. Si elle n'est pas spéficiéespécifiée le bot enregistrera les commandes sur tous les serveurs mais acependant, à cause des mises en cache de discord, le déploiement des commandes globales peut prendre jusqu'à 1h. Ensuite on retrouve la key autoRegisterApplicationCommandsautoRegisterApplicationCommands qui est par défaut sur true et qui indique si ils'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 :
Félicitations :) Votre bot est désormatdé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 futurefutur alors pas de panique si vous n'avez pas toustout 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.
The text was updated successfully, but these errors were encountered:
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éragirinteragir avec certaines données mises en cache,éxécuterexécuter des fonctionsetc...etc.Notre client va
etreêtre l'instance d'une classenoméenommée ShewenyClient. Comme pourtoustout ce qui vient d'une librairie**,** il faut l'importer. Nous allons donc nous positionner dans le fichierclient.js
pourcttecette première partie :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
appelappelle cela des "gateway intents". Les gateway intents ont été introduites par discord dans la version 6 de leurapiAPI avant de devenir obligatoires dans la version 8. Concrètement**,** les intents permettent audévéloppeurdé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éraitunnun trafic très important de données entre le bot et discord alors que 90% des événements étaient inutiles dans laplus partplupart 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 activeraà la main**,** comme nousavons faitl'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 classeIntentsIntents
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 :Les partials
estsont une notion complexeaà 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 vaetreê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énementmememê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 :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 typePresencePresence
comme ci-dessous :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 leprefixpré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
etcetc. et une keyloadAllloadAll
qui est par défaut sur true et qui indiquesi ils'il faut charger ounomnon les dossiers et fichiers. Le command manager possède aussi la propriétéguildIdguildId
qui est un array qui contient lesidids des serveurs sur lesquels le bot doit enregistrer les slash-commands. Si elle n'est passpéficiéespécifiée le bot enregistrera les commandes sur tous les serveursmais acependant, à cause des mises en cache de discord, le déploiement des commandes globales peut prendre jusqu'à 1h. Ensuite on retrouve la keyautoRegisterApplicationCommandsautoRegisterApplicationCommands
qui est par défaut sur true et qui indiquesi ils'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 enregistreraà nouveau.Mise en ligne du bot
b. Connexion du bot
aà discordPour connecter notre bot
aà discord nous allons utiliser la fonctionlogin()login()
sur notre client :Félicitations :) Votre bot est
désormatdésormais en ligne. Dans ce chapitre nous avons apprisAÀ instancier un client ShewenyAÀ quoi servent les intentsCe chapitre présente plusieurs notions complexes et nous aurons l'occasion de revenir dessus dans le
futurefutur alors pas de panique si vous n'avez pastoustout 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.The text was updated successfully, but these errors were encountered: