Construire un Bot Discord avec discord. js, Typescript et Heroku | David Armendariz | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Construire un Bot Discord avec discord. js, Typescript et Heroku

teacher avatar David Armendariz

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      2:27

    • 2.

      Des choses que vous devez savoir

      4:56

    • 3.

      WSL

      2:45

    • 4.

      NVM

      5:49

    • 5.

      Extensions VSCode

      4:43

    • 6.

      Code Github

      1:16

    • 7.

      Créer un serveur et des bottes

      5:14

    • 8.

      Configuration initiale Partie 1

      14:08

    • 9.

      Configuration initiale Partie 2

      15:22

    • 10.

      Configuration initiale Partie 3

      6:17

    • 11.

      Configuration initiale Partie 4

      2:11

    • 12.

      MISE À JOUR : Correction des versions de paquets

      2:04

    • 13.

      Faire le Bot Go en ligne

      11:29

    • 14.

      Ping Pong

      11:44

    • 15.

      Manipulation de commandes de slash

      8:04

    • 16.

      Créer une commande de bonjour

      7:11

    • 17.

      Enregistrer des commandes de guilde

      8:08

    • 18.

      Déployer à Heroku

      10:19

    • 19.

      Ajout de la version de nœud dans le paquet Json

      2:21

    • 20.

      Ajouter une commande

      7:48

    • 21.

      Ajouter un lien

      4:35

    • 22.

      Commande Info d'utilisateur Partie 1

      8:54

    • 23.

      Commande Info d'utilisateur Partie 2

      14:22

    • 24.

      Commandement de l'enquête Partie 1

      14:17

    • 25.

      Commandement du sondage Partie 2

      6:20

    • 26.

      Commandement du sondage Partie 3

      16:33

    • 27.

      Commandement du sondage Partie 4

      12:40

    • 28.

      Commandement de l'enquête Partie 5

      8:04

    • 29.

      Commandement du sondage Partie 6

      8:10

    • 30.

      Commandement du sondage Partie 7

      11:21

    • 31.

      Commandement du sondage Partie 8

      11:50

    • 32.

      Commande d'API Partie 1

      9:10

    • 33.

      Commande d'API Partie 2

      10:25

    • 34.

      Commande d'aide

      14:02

    • 35.

      Ajouter une config de Jest

      7:15

    • 36.

      Test pour ajouter une commande

      7:46

    • 37.

      Partie 1

      10:26

    • 38.

      Partie 2

      9:36

    • 39.

      N'oubliez pas d'ajouter l'identifiant de guilde à vos variables d'environnement !

      0:45

    • 40.

      Partie 3

      6:22

    • 41.

      Partie 4

      7:40

    • 42.

      Partie 5

      3:05

    • 43.

      IMPORTANT : Mise à jour V2 des autorisations

      2:11

    • 44.

      500 Conclusion

      1:03

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

1 764

apprenants

--

projets

À propos de ce cours

Bienvenue dans ce cours ! Dans ce cours, vous apprendrez à coder un bot prêt à la production avec discord.js et le paquet recommandé pour construire des commandes slash, qui est discord.js Ce dernier met en œuvre un motif de conception appelé le motif "constructeur" qui facilite la construction d'objets de classes. Nous ne perdrons pas non plus de temps et ne déploierons notre bot à Heroku dès que nous le pouvons. C'est toujours l'une des premières étapes que vous voulez faire et nous le ferons avec un CD (déploiement continu) en connectant Heroku à notre référentiel GitHub. De nombreux tutoriels là-bas vous montrent comment coder des bots sans structure et les déployer à… Replit ? Dans ce cours ce n'est pas le cas ! Nous apprendrons beaucoup de choses qui vous aideront à être un meilleur développeur de logiciels en général. Vous apprendrez non seulement à coder un bot, mais vous apprendrez les meilleures pratiques comme la création d'un bot, pour le développement et une autre pour la production. Nous le ferons comme si nous allions créer une application Web !

  • TypeScript

  • Réponse aux messages

  • Créer des commandes de slash

  • Créer des boutons et des liens

  • Créez des collecteurs de messages

  • Créer des intégrations

  • Créez des collecteurs de réactions

  • Créer des sous-commandes

  • Obtenez des informations sur un utilisateur et ses rôles

  • Ajouter des options aux commandes

  • Ajouter des tests simples

  • Déployez sur Heroku et connectez-le à GitHub pour CD

  • Meilleures pratiques

  • Etc...

Rencontrez votre enseignant·e

Teacher Profile Image

David Armendariz

Enseignant·e

Hi! My name is David Armendariz. I am from Ecuador.

I studied mathematics at USFQ (Universidad San Francisco de Quito). However, I love coding and that's why I transitioned to the software industry. I love to share my knowledge here in Skillshare.

I hope you enjoy my courses as much as I enjoy doing them and remember: never stop learning!

Voir le profil complet

Level: Intermediate

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Bonjour et bienvenue dans ce cours. Je m'appelle Debbie en papas et je suis ingénieur logiciel principal et mathématicien. De quoi consiste ce cours. Dans ce cours, vous apprendrez à coder la production prête, mais avec cela suggère et déployé sur Heroku, le mot-clé est prêt pour la production. De nombreux tutoriels vous montrent comment cuisiner, mais sans structure clairement définie et déployés pour la répliquer. Je ne vous recommanderai jamais de faire ce genre de choses. Dans ce cours, nous allons apprendre meilleures pratiques et comment déployer vos fesses Heroku à l'aide d' un déploiement continu. Ce que vous apprendrez, vous apprendrez TypeScript, ce qui est génial car il vous offre la sécurité des types en JavaScript, ce qui est clairement quelque chose que vous voulez lorsque vous travaillez dans de grands projets. Même si vous ne travaillez pas dans de grands projets, vous devriez vous familiariser avec TypeScript car c'est l'objectif de votre carrière d' ingénieur logiciel : écrire un bon code, répondre aux messages et à ces tribunaux. . L'ancienne façon de faire des commandes dans les squirts était donc d'ajouter un préfixe tel que le point d'exclamation, et ce sera le début de votre commande. Mais nous allons également apprendre à créer des commandes obliques, ce qui est la façon moderne de créer des commandes dans ces groupes. Boutons et liens de grille. Collecteurs de messages, embarqués, nous ciblons rapidement et les messages que les pensées peuvent envoyer. Collecteurs de réactions pour réagir aux messages. Superbes sous-commandes, obtenir des informations sur un utilisateur et ses rôles aux options, les commandes lors des tests nos commandes et déployées sur Heroku, comme je l'ai dit, sans connexion à GitHub pour le déploiement continu sur CD, cela signifie que vous poussez un changement et que vous n' avez pas eu à vous soucier de quoi que ce soit. Vous verrez simplement votre code déployé et votre dernier changement de production, bonnes pratiques, etc. Vous apprendrez beaucoup de choses dans ce cours. Et j'espère que le cours vous a plu autant que j'ai aimé le faire. voit lors de la prochaine conférence. Au revoir. 2. Ce que vous devez savoir: Bonjour et bienvenue. Je dois vous dire quelques choses avant de commencer ce cours. abord, une clause de non-responsabilité concernant ces points carrés. Nous allons utiliser la dernière version de ce code dot js au moment de l'enregistrement de cette vidéo, qui est la version 13. De plus, nous allons utiliser la méthode recommandée pour construire des commandes, c' est-à-dire que d carrés j est un paquet de constructeurs verrouillés. s'agit donc pas d'une application empaquetée qui implémente le constructeur, le modèle de signe, et c'est vraiment très bien. C'est le moyen recommandé de créer une barre oblique et d'autres choses. Nous allons donc utiliser ces bibliothèques. Cependant, ces paquets ne disposent pas encore d'une version v1, ce qui signifie qu'il change très souvent. Il vous donne des mises à jour très, très souvent. Et nous ne savons pas encore quand il va se stabiliser et vous pouvez suivre vos mises à jour sur la page GitHub plus jeune ou sous le canal Squared, où elles peuvent également résoudre nombreux doutes. Si c'est le cas. Nous allons utiliser le sous-système Windows pour Linux. Wsl. J'ai codé sous Linux de ma vie et j'ai dérangé le fait que Linux soit le meilleur système d'exploitation à enduire. J'ai tout ce qu'il a également utilisé le Mac et Windows. Et c'est mon avis, mais je pense que la boiterie est la meilleure solution. Cependant, l'enregistrement de la porte sur Linux peut entraîner des vidéos de mauvaise qualité selon votre machine. Principalement pour ceux-ci parce que pour des problèmes d'incompatibilité matérielle et des choses comme ça. Et malheureusement, c'est aussi mon cas. Et je l'ai fait lors des cours précédents et certains étudiants se plaindront la qualité vidéo des cours. C'est pourquoi je vais utiliser le sous-système Windows pour Linux. sous-système Windows pour Linux dispose essentiellement d' une distribution Linux à l'intérieur de vos fenêtres. C'est donc génial pour le codage car c'est essentiellement comme un t-shirt Linux natif, mais à l'intérieur de Windows. Je peux donc utiliser un logiciel d'enregistrement pour enregistrer des leçons avec une meilleure qualité audio et vidéo. Nous allons utiliser NVM. Je vais vous montrer dans une prochaine vidéo comment l'installer. Eh bien, les instructions pour l'installer. Et il s'agit essentiellement d'un outil pour gérer plusieurs nœuds ou plusieurs nœuds dans votre machine. Et NodeJS, évidemment, ces deux-là ne fonctionnent que pour Linux et Mac. Donc, si vous êtes sous Windows plutôt qu'une alternative, vous avez également une version Linux ou quelque chose du genre. Mais il est tout simplement plus facile d' essayer le sous-système Windows pour Linux car vous pourrez installer nvm dans Windows si vous allez utiliser le sous-système Windows pour Linux, et ce sera très, très facile. Et nous allons utiliser via scope. Je n'ai pas utilisé ce code ou programme dans plusieurs langages de programmation, python, Ruby, JavaScript, TypeScript, eux, même aller lien. Et ce n'est que mon opinion, mais je pense que si vous utilisez VS Code avec la bonne extension, cela peut être encore meilleur que les alternatives comme Webster. J'ai également utilisé WebStorm, mais j' aime vraiment plus de VS Code avec des extensions correctes, non ? Nous allons utiliser Heroku. Heroku dispose d'un niveau gratuit où vous pourrez héberger votre bourgeon gratuitement. Et cela vous donnera évidemment un nombre d'heures par mois. Vous devrez probablement mettre votre carte de crédit. Vous voulez conserver ces heures gratuites si vous n'en avez qu'un, et vous voulez payer n'importe quoi par mois si vous le faites. Bien que je vous recommande de mettre votre carte de crédit à Heroku pour que votre bot puisse être en direct tout le temps. Ce sont donc les choses que vous devez savoir. Et dans les prochaines vidéos, je vais vous montrer comment , par exemple, installer nvm, installer nvm, qui est la partie la plus importante ici, que tout le monde ne connaît peut-être pas ces barres d'outils. C'est assez standard si vous utilisez plusieurs versions de nœud. Comme dans mon cas, j'utilise une version pour un projet dans R1 pour travailler et des choses comme ça. C'est ça. J'espère que cette vidéo vous a plu. On se voit dans le prochain. Au revoir. 3. WSL: Bonjour et bienvenue. Donc une chose que ACE est facultative, mais je vous recommande vraiment de faire si vous utilisez Windows, installez Windows Subsystem for Linux. Donc, il suffit de rechercher le sous-système Google Windows pour Linux, accédez au premier lien. Ici. Il vous montrera toutes les conditions préalables à l'installation du sous-système Windows pour Linux. Il est dit que les humains exécutent Windows 10, Brush et 2004 et hangar ou Windows 11. Si vous avez déjà Windows 11, vous n'avez qu'à le faire dans l'invite de commandes Windows, WSL moins l'installation. Désolé. Cette commande permet d'activer les composants facultatifs requis. Téléchargez le dernier noyau Linux, définissez WSL comme valeur par défaut et installez la distribution Linux par défaut. Voir ci-dessous pour modifier cela. C'est donc nouveau. Je pense que la dernière fois que j'ai vérifié cette documentation, il fallait installer manuellement Windows Subsystem for Linux à droite. Maintenant, si vous faites cette commande, vous allez voir ce sous-système Windows pour Linux pour faciliter la valeur par défaut, ce qui est meilleur que celui. Honnêtement, je vous recommande vraiment de rester avec Ubuntu si vous préférez utiliser d'autres SRO, ce que je n'ai pas fait parce que je suis d'accord avec Ubuntu. Ensuite, vous pouvez suivre ces instructions. Et ensuite, après avoir suivi tous ces guides, vous aurez ces terminaux où vous pourrez utiliser une blessure pour entendre. Peut faire sudo apt mise à jour et utiliser, désolé. Je pense que j'ai mon clavier en anglais. Utilisez un clavier espagnol. Vous pouvez rouler. Donc, le jour, vous pouvez voir que c'est Ubuntu. C'est comme si vous aviez un os sur votre machine Windows. C'est ça. C'est tout ce que je voulais vous montrer comment faire. Il suffit de suivre ces instructions ici. Encore une fois, c'est facultatif mais fortement recommandé. Voir dans la vidéo suivante, Bye bye. 4. NVM: Bonjour et bienvenue. Je me trouve sur la page GitHub de la machine virtuelle ou du gestionnaire de version Node. Vous pouvez le trouver et vous auriez MDM dash, SH, une barre oblique npm est l'organisation moon. C'est le nom. Nous pouvons lire un peu à ce sujet. Indiana vous permet d'installer et d'utiliser rapidement différentes versions de nœud via la ligne de commande. C'est donc facile comme jours, l'utilisation finale et la version que vous voulez. Si vous souhaitez installer une version comme celle-ci , puis installer 12. Vous pouvez également spécifier une version plus spécifique comme 12.21 pour n'importe quelle version du gestionnaire , car aucune version de Diaz n'est entrée, installée par utilisateur et appelée par shell et fonctionne sur n'importe quel shell compatible POSIX. Je suppose que H dash TSH, TSH, c'est celui que j'utilise. Bash, qui est celui que vous allez probablement utiliser si vous utilisez Linux. J'ai utilisé TSH, même si j' utilise un sous-système Windows pour Linux, c'est plutôt cool. Si vous vouliez y jeter un coup d'œil, vous pouvez le faire. En particulier sur ces plateformes. Sous-système Macos et Windows pour Linux, Unix inclut toutes les distributions Linux et Windows. Wsl est ce que je vous ai dit, sous-système Windows pour Linux. C'est pourquoi je vous recommande d'essayer l'installation et la mise à jour et ainsi de suite qu'ils ont été grattés, il vous suffit d'exécuter ces commandes dans votre terminal. Donc, si vous êtes dans le sous-système Windows pour Linux, Mac ou Linux, vous suffit de copier cette commande ici et de la coller ici. Et cela va être installé dans la machine virtuelle de votre machine. Et il va essayer d' écrire dans l'un ou l'autre de ces fichiers comme ça, point css HRC, qui au cas où vous utiliseriez SSH. Bash RC inclut que vous utilisez bash. Je vais ajouter ces lignes de code ici. Laissez-moi voir si nous pouvons voir ici. Allons à la table des matières. Nous voyons d'autres informations supplémentaires, vérifions l'isolement, saisissez simplement ces commandes. VM ou tapez simplement une machine virtuelle. Cela va vous dire s'il est installé ou non, puis une fenêtre de type ici. Mais des notes importantes, c' est là que je voulais aller. Si vous exécutez un système sans bannière préemballée disponible, ce qui signifie que vous n'allez pas faire de JS ou cela ne le fait pas. Ce n'est pas notre cas. Nous sommes macOS et Linux, nous avons déjà ces paquets ici. Il est assez rare que vous n'ayez pas déjà installé la paix. Node npm prend également en charge Windows. Dans certains cas, vous devez travailler via le sous-système Windows pour Linux. Selon la version de WSL, c'est important, généralement la deuxième version que nous allons voir. Et cela devrait aussi fonctionner avec le Bash ou un segue. Je n'ai pas utilisé ces deux choses. Je ne sais pas ce qu'ils sont. En fait, sage pour Windows et Turnitin de champ, qui ne sont ni commandés ni développés par nous. Ceux-ci connaissent ces NBS et les fenêtres. Donc, si vous ne voulez pas suivre mes conseils et simplement utiliser notre outil ou simplement installer NodeJS à partir de zéro. Vous pouvez aussi le faire en sachant que ça s'ennuie. Vous pouvez aller sur suggest.org et installer Node à partir d'ici, mais il va s' agir d'une version fixe. Et je ne le recommande vraiment pas. Mais si vous avez NVM, si vous avez Windows, vous pouvez également utiliser NPV pour Windows. Bien que je ne vais pas vous montrer comment faire cela parce que je n'ai pas utilisé cette chose. C'est ça. Une fois que vous avez installé une machine virtuelle, je peux vous montrer quelques commandes ici. Npm current va me montrer la version actuelle, 12.10, DMLS va me montrer toutes les versions que j'ai installées. Vous pouvez voir que j'ai de nombreuses versions installées et que la valeur par défaut est 12.100. Si je voulais installer une version spécifique et que je peux, laissez-moi taper de l'aide ici dans l'aide d'installation indienne. Vous pouvez voir ici toutes les commandes d'aide. C'est probablement celui que nous essayons de vous dire, les Indiens salent une version spécifique. Si vous voulez résoudre la version LTS, il suffit d'installer nvm dash, dash LTS. Et si nous voulons utiliser une version spécifique, désolée, la version LTS est utilisée comme LTS. Ou si vous souhaitez utiliser une autre version que vous avez ici, npm utilise Quatorze points en 16 par exemple. Et maintenant, vous allez utiliser cette version. Courant NVM. Je vais voir que c'est la version que j'ai spécifiée. C'est ça. C'est un outil très cool, je vous recommande donc de l'utiliser dans ce cours. C'est ça. J'espère que ça vous plaira. On se voit dans la vidéo suivante. Au revoir. 5. Extensions VSCode: Bonjour et bienvenue. Comme je l'ai dit, je vais utiliser VSCode, besoin de mon identifiant préféré et je le recommande vraiment. C'est totalement facultatif. Si vous souhaitez l'installer, il suffit de rechercher Visual Studio Code et Google et de chercher comment le télécharger ou aller directement au code Visual Studio qui chargé pour votre portail logiciel, mais ce n'est pas le but de cette vidéo. Le but de cette vidéo est de vous montrer quelques extensions utiles car nombreux étudiants m'ont déjà demandé quelles extensions ils étaient utilisés. Et je veux juste vous montrer quelques-uns d'entre eux. Tout d'abord, si vous utilisez un sous-système Windows pour Linux, il est probablement très important d'installer le WSL ou l'extension bash distante. C'est le premier que vous voulez résoudre. Vous utilisez le sous-système Windows pour appareil Linux. Consultez cette option installée localement. Et je fais défiler vers le bas, vous pouvez voir que ceux-ci sont comme ça. Et si je fais défiler cette icône, cela indique que cette extension est activée dans l' hôte de l'extension distante car elle préfère gouverner certains d'entre eux préférés à la vôtre dans l'hôte WSL. Permettez-moi donc de vous montrer quelques extensions que je veux utiliser, peut-être non seulement pour la partition, mais aussi pour d'autres choses. Par exemple, cette couleur halite puis Web colore Senior Editor. Nous allons donc utiliser certaines couleurs ici dans ce cours, mais vous pouvez également utiliser des couleurs hexadécimales ici dans ce cours, si vous préférez, je vais l'utiliser, mais vous pouvez certainement le faire si vous le souhaitez. Et cette extension vous donnera la couleur sur le dessus de la chaîne de couleur hexagonale diese ici. Ok, donc ce qui est peut-être lié est très important. Nous allons mettre en place quelques règles LinkedIn et ces objectifs très importants sont également très bons. Mais cela fonctionne mieux si vous travaillez dans un projet plus important avec d'autres personnes, pour voir le blâme et les choses de ce genre, pour voir les demandes de sondage faites. Pour une modification spécifique du code. C'est plutôt bien. Quoi d'autre ? Coûts d'importation. C'est très bien car il montre le coût important et la taille de certaines importations. Encore une fois, dans un premier temps pour le développement web où c'est très important. Ceux-ci étaient utiles dans cet arc-en-ciel. Je l'aime bien. Cela vous montre juste quelques couleurs lorsque vous mettez du code en retrait, du code Delhi. C'est très, très utile. Quoi d'autre ? C'est pour le développement assisté par l'IA juste à la surface d' auto-complétion de certaines choses. Je pense qu'avec le script batch, c'est moins utile, mais c'est toujours très, très utile. Je recommande donc vivement ces extensions. Et bien, quoi d'autre ? Plus joli, plus joli, c'est très, très important, très important. Parce que nous allons utiliser pendant ce cours , le formatage du code est quelque chose que vous devez automatiser. Rappelez-vous les crochets, c'est également très utile à réaliser. La raquette est dans la même voiture pour voir où elle commence et où elle se termine. Quoi d'autre ? Laissez-moi voir. Ce que j'ai d'autre ici. Voyons YAML, Morris et l'objectif d'erreur sage. Celui-ci est également très sympa d'avoir les erreurs affichées dans le code. Je pense que c'est très, très utile. Thème de l'icône de matériau. Oui, c'est juste une chose purement visuelle. Vous pouvez ensuite voir ces icônes ici, les icônes de matériaux. C'est juste une chose visuelle. Je pense que ce sont ceux que je vous recommande pour ce cours et peut-être pour le développement Web. Vous pouvez voir que j'ai d'autres choses, GraphQL terraform. Ils ne sont pas nécessaires pour ce cours. C'est donc ça. C'est tout ce que je voulais vous montrer comment faire, comme une vidéo. On se voit dans le prochain. Au revoir. 6. Code Github: Bonjour et bienvenue. Je veux juste dire que tout le code de ce cours se trouve dans ce dépôt. Vous pouvez me trouver sur GitHub comme w0 qui a été ce iss. Et vous pouvez trouver ce score SDI de dépôt. Mais bien sûr, tous les gamètes sont là. Vous pouvez y aller. Le premier gamète, si vous vouliez voir comme eux, des changements spécifiques. Pour une leçon. Vous allez, par exemple, à ce gamète et vous pouvez voir, hé, je viens d'ajouter ces morceaux de code ici. Donc, si vous voulez voir le contenu similaire de tous les fichiers, décodez tous les fichiers. Par exemple, ici, des réactions ajoutées au collecteur. C'est le code que j'ai ajouté. Et ici, vous pouvez voir Parcourir les fichiers. Allez donc dans Parcourir les fichiers. Et c'est le code dans cet état. C'est ça le poids. Vous pouvez parcourir le code dans les leçons des partitions. C'est ça. Si vous avez des questions, il suffit de les poster. Je serai heureux de répondre. voit dans la prochaine leçon. Au revoir. 7. Créer Un Serveur Et Des Bots: Dans cette vidéo, nous allons noter les serveurs afin de pouvoir tester notre bot. C'est une jolie vue ECE qui a déjà un serveur, alors n'hésitez pas à sauter cette partie et à aller à la partie où je crée le bourgeon pour le cyber. Il suffit de cliquer ici. Créez le mien. Oui, c'est le serveur. La partition. serveur acheté, peu importe. Super. Oui, j'ai eu du sida. Il y a beaucoup de conseils. Je vais dans le navigateur et je vais sur les développeurs score.com slash en tant qu'applications lashed. Ensuite, vous pouvez voir que j'ai déjà créé ces deux robots pour mon serveur Discord personnel. Nous allons en créer deux autres. Disons que ce sera le cours acheté. Créons-le. Dans cet onglet, ici. Je vais ajouter un bouton. Oui, fais-le. Ce nom d'utilisateur ne peut contenir le nom d'utilisateur de partition. Ok, alors supprimons simplement le carré d du nom, sauvegardons les modifications, et essayons de le créer à nouveau. Maintenant, j'ai la mort de mes fesses. Cela va être utile pour les sourds locaux. Allons à o. et passons au générateur d'URL. Ces années où vous allez créer l'URL pour inviter votre bateau, vous êtes sur le point d'accéder à votre serveur. Il a donc besoin de certaines étendues, de certaines autorisations. Je vais sélectionner cette autorisation de bogue. Et ces applications commandent également l'autorisation. Je vais vous expliquer ce que c'est dans le futur. Lorsque vous lui accordez les autorisations de bud, vous devez lui donner toutes les actions que ces robots peuvent faire sur votre serveur. Donc, si vous rencontrez vrai BAD évolutif avec beaucoup d'utilisateurs, assurez-vous qu'il ne dispose que des autorisations nécessaires. Mais nous apprenons ici, donc nous allons simplement sélectionner des administrateurs qu'il puisse tout faire. Nous n'avons pas eu à nous soucier de lui donner toutes les autorisations. Bon, donc maintenant, nous allons copier ce lien ici. Collons-le. Et puis il va dire que, oui, vous voulez ajouter ces cours sourds en masse à un serveur. J'ai mon serveur Discord personnel et mon serveur que je viens de créer. Donc, c'est comme celui-là. Continuons à confirmer que l'administrateur va disposer des autorisations d' administrateur. Autorisons-le. Nous devons résoudre ces petites Capture ici. J'espère que je ne suis pas un robot. Vérifiez. Super. Donc maintenant, si nous allons aux partitions, si nous allons aux partitions, mais bien sûr, vous allez voir que dans le canal général, qui est le canal par défaut, vous allez avoir le cours spot ici. En fait, c'est ici, mais il est hors ligne pour le moment. Lorsque vous construisez un véritable achat et que vous souhaitez déployer en production, mais que vous souhaitez toujours effectuer des tâches. Ensuite, la stratégie que j' utilise est pour le rendre sourd mais fier. Mais si nous revenons ici aux applications et que nous créons une nouvelle application, je vais créer mais sonder le cours. Ok, donc ils ne seront utilisés que pour le produit et pour l'instant, nous ne sommes pas le point de vente des produits, alors ne vous inquiétez pas. Maintenant, nous créons le cul. Passons à la même chose, mais l'application commande et donnons-lui les autorisations d'administrateur. Copiez le lien, collez-le dans le navigateur. Sélectionnez le serveur, qui est celui-ci. Autoriser a résolu le capitaine. camions. Encore des camions. Oui. J'ai créé avec succès mais pour les sourds, c'est ce que nous allons utiliser principalement dans ce cours. Et lorsque nous déploierons sur prod, nous allons utiliser celui-ci ici. C'est tout pour cette vidéo. J'espère que ça vous plaira. On se voit dans le prochain. Au revoir. 8. Configuration initiale Partie 1: Maintenant que nous avons créé notre serveur et nos pensées, il est temps de commencer à écrire du code. Allez dans votre répertoire préféré et créez un nouveau dossier appelé, je ne connais pas le score du cours. Allons ici. Je vais utiliser VSCode, ouvrir ce répertoire vide, et je vais ouvrir un terminal intégré. J'ai un raccourci pour eux que vous pouvez le faire à partir d'ici. Je suppose. Oui, un nouveau terminal. Et cela va créer un nouveau terminal pour vous. D'accord, donc tout d'abord, initialisons cette largeur, obtenons que nous puissions créer des gamètes et tout ça. Nous devons maintenant initialiser un fichier package.json. Mais tout d'abord, créons un fichier NVM RC. Disons donc Touch dot nvm RC. Ici, nous allons mettre la version du nœud que nous voulons utiliser dans ce projet. Laissez-moi voir quelle est ma version actuelle et ma version VM. C'est dépassé. Installons la version LTS. Ce n'est pas la version 16.14.2. Je vais mettre ce numéro ici, 16.14 à chaque fois que vous êtes dans ce répertoire, vous devez écrire cette commande npm use. Et vous allez voir cette version ici. Si vous n'aviez pas cette version , NVM va l'installer pour vous. Aussi, si vous êtes curieux, j'ai comme un laissez-moi voir. Si je peux vous montrer. J'ai un fichier C RC point et j'ai ces cuisiniers ici parce que j'utilise z ASH. Vous utilisez probablement la même chose si vous êtes sur Mac. Je suis sur le sous-système Windows pour Linux, mais j'utilise un COSH parce que c'est génial. Ici, vous pouvez voir que j'ai cette utilisation automatique de la NVM. Ce que fait essentiellement le livre, c'est que chaque fois que vous allez dans un répertoire contenant ces fichiers NVM RC, nvm utilisera automatiquement pour vous. Par exemple, si je ferme ce terminal et que je l' ouvre, ouvrez-le à nouveau, alors vous voyez que ce crochet trouve ce fichier MRC NBA et qu'il émet la commande utilisée par nvm. Si vous êtes curieux, vous pouvez mettre en pause la vidéo, l' ajouter à votre fichier TSH RC. Si vous utilisez bash, vous devez probablement faire une autre chose, ou simplement Google comment le faire. Mais c'est totalement facultatif. Si vous ne voulez pas utiliser ce cerceau, écrivez simplement npm à chaque fois. Maintenant que nous avons notre version noeud, nous allons utiliser jarring. Nous allons installer Yarn car je préfère le fil au NPM. On va donc dire que npm installe moins le fil G. Cela installe le dessin à l'échelle mondiale. Maintenant, on peut faire quelque chose comme du fil dedans et ça va créer cette leçon de points pour moi. Maintenant que notre fichier NVM RC est empaqueté JSON, nous allons également avoir besoin d'un fichier de configuration ts car nous allons utiliser TypeScript. Donc, tout d'abord, ajoutons TypeScript. Donc, filez à moins le D majuscule, sorte que nous lui disons qu'il s'agit d'un TypeScript de dépendance de développement. Maintenant, nous avons ces dossiers de modules de nœuds et ces fils ce fichier journal. Ces modules de nœuds. Nous ne voulions pas engager cela parce que c'est trop gros et c'est inutile. Donc, avant d'aller plus loin, créons ce hayon de fichier dot git ignore que nous ne voulons pas recommander les modules de nœuds. Maintenant, vous pouvez le voir devenir gris parce qu'il n'est pas ignoré par le bien. Ajoutons maintenant TypeScript, le conflit Ts dans ce fichier JSON. Disons de fil, TSC, tiret, tiret dedans. Et comme vous pouvez le constater, il crée ce fichier ici. Ok, super. Donc, avec ce dossier, nous le disons. Le code que nous voulons compiler avec ces options ici. Comme vous pouvez le constater, il existe de nombreuses options. La plupart d'entre eux sont commentés et ils ont des valeurs par défaut. Nous n'allons pas plonger en profondeur là-dessus. Nous allons probablement modifier cela là-bas. Et je ne sais pas quoi d'autre, mais pour l'instant, gardons ça comme ça. Ok, donc maintenant que nous avons des Ts confortables, nous avons ce que nous avons empaqueté d'autre JSON. Ajoutons plus joli. Si vous ne savez pas ce qu'est le niveau gratuit, il s'agit essentiellement d'un formateur de code. Au lieu de se battre. Si vous voulez des guillemets semi-simples ou doubles, il vous suffit de créer un fichier de configuration et de le définir et de créer le code pour que les militaires prennent en charge ces détails. Alors, allez tout d'abord et les extensions, si vous utilisez VSCode, recherchez le prédicateur. Si vous utilisez un autre EDI pendant que vous devez rechercher comment utiliser le prédicateur avec votre EDI. Mais dans ce code, EECS installe ce code plus joli pour les échanges monétaires. D'accord, mais ce n'est pas tout. Nous devons également ajouter un fichier de configuration. Créons ces points. Fichier RC de niveau gratuit. Disons que dans mon projet, j'ai une seule citation au lieu de guillemets doubles. Et il y a beaucoup d'options que vous pouvez configurer. Comme, vous savez, voyons quelles sont les autres options que nous avons. Probablement un point-virgule, des points-virgules, un coma. C'est pour avoir une virgule à la fin de ses objets et des choses comme ça. Supposons donc qu'il s' agisse d'un objet qui suit des virgules, il suffit de lui donner ces virgules ici. Oui, en fait, ils ont ces extensions qui me disent les flèches que j'ai dans mon code. Il me dit que c'est une voiture traînée, mais c'est parce que c'est un Jason. ne s'agit pas de JavaScript. En JavaScript, je vais avoir de la richesse TypeScript. Nous allons avoir ces virgules de fin. Vous pouvez rechercher toutes ces options ici. J'imprime avec ça aussi quelque chose que j'aime. J'aime mettre les 100 entraînements qu'il brise après 120 personnages. C'est donc la configuration que nous allons utiliser pour prédicateur dans ce projet. Nous avons maintenant besoin d'une autre chose qui sera plus tard avec les liens ES. Créons donc un fichier RC, ce fichier JSON. Encore une fois, il existe une extension VSCO que vous pouvez utiliser, appelée ES lint. En fait, cela habite installé parce que je devais l'installer pour Windows Subsystem for Linux. Je vais le résoudre après cette vidéo. Mais l'important ici est que ce fichier de configuration, nous devons l'écrire. Tout d'abord, je vais dire racine égale à vraie. Quel est cet itinéraire qu'il vous dit essentiellement est lié. Hey, ne cherchez pas d'autres fichiers de configuration en dehors de ce répertoire. Laissez-moi voir si je peux planer cette chose. Cela ne me dit pas, mais c'est essentiellement ce qu'est la racine. Cela nous dit, n'essayez pas d'obtenir la configuration de l'extérieur de ce dépôt. Ensuite, j'ai besoin d'un analyseur car nous allons utiliser TypeScript. Et en fait, installons le plugin qui va faire un excellent travail avec TypeScript. Donc, minus ab moins le D majuscule, analyseur oblique TypeScript et oblique de TypeScript se connecte à la peluche. J'ai eu une erreur. Voyons voir. Analyseur TypeScript introuvable. Désolé, ce n'est pas un analyseur TypeScript. C'est l'analyseur de peluches TypeScript ES et le tiret TypeScript Eastland, Eastland plutonium. Et vous avez vu que nous avons maintenant ce blocage d'erreur de tiret. Vous pouvez simplement le supprimer ou le mettre dans le gitignore. Je préfère le mettre indiqué ni dire tout ce qui commence par une extension de journal, il suffit de l'ignorer. Donc, le journal des points d'étoile, ignorez-le. Maintenant, vous pouvez voir ce sacré blocage d'erreur de tiret devenu gris. Parfait. Maintenant, dans l'analyseur ici, nous allons dire que nous allons dire type, utiliser l'analyseur oblique de peluche TypeScript ES. Nous allons étendre la configuration. Et cette configuration provient de ce plug-in que nous avons installé. Nous disons donc que la colonne de plug-in, TypeScript, la barre oblique ES est recommandée. Slash recommandé est essentiellement un ensemble de règles d' opinion provenant des auteurs de ce paquet de peluches TypeScript dash ES. Cela vous donne simplement les meilleures options pour ES Linked. Contrairement aux règles par défaut qui sont les meilleures pratiques et autres. C'est ce que nous faisons ici avec ces étendues et nous lui donnons cette valeur ici. Nous ne faisons qu'étendre un ensemble de règles avec les meilleures pratiques. Maintenant que nous avons tout, installons également liens de dépendance de développement acide et aussi plus jolis. Vous me dites, pourquoi installez-vous ces paquets si nous utilisons déjà ces extensions ici ? Eh bien, une chose est que votre EDI utilise ces extensions. L'autre chose est d'installer ces dépendances pour que je puisse faire ce que fait l'ID. Mais à partir de l'interface de ligne de commande, c'est juste une bonne pratique car vous utilisez probablement quelque chose de très ésotérique comme Vin, qui est un taux d'identification compliqué à utiliser. Ce n'est même pas une idée. Je pense que c'est comme un éditeur de texte ou quelque chose comme ça. Si vous utilisez cela et que cela n'a pas comme un plug-in pour son penché ou pour plus joli que vous voulez probablement faire ce formatage ou ce linting de code à partir de la ligne de commande. C'est pourquoi j' installe ces paquets dans le paquet Jason. Nous avons donc maintenant des liens, nous avons des meubles, et nous pouvons commencer à créer des scripts ici afin de formater notre code, notre lien ou notre code. Nous allons le faire plus tard. En ce moment. Je voulais juste vous dire pourquoi nous installons Lyndon plus jolie l'une des choses que le paquet fait réellement quelque chose à partir du lien CLI, fil plus joli, peu importe. Une autre chose est que votre pièce d'identité. Il le fait en installant la configuration de l'extension. OK. C'est donc tout pour la configuration, pour tout le pardessus de la chaudière. Il suffit de faire un git add git commit avec votre message. Cela n'a donc pas perdu ces progrès. J'espère que cette vidéo vous a plu. On se voit dans le prochain. 9. Configuration initiale Partie 2: Dans cette vidéo, nous allons continuer à modifier la configuration. Je sais qu'ils sont ennuyeux, mais croyez-moi, si vous le faites bien depuis le début, ce sera beaucoup plus drôle d'écrire code parce que nous n'avions plus à nous en inquiéter. Commençons par le début. Ensuite, nous allons écrire codes et probablement apporter des modifications à la configuration, mais ce sera minime. Allons donc dans ce fichier de configuration ts et passons à des choses qui vont être importantes. La première est la bière racine. Donc, cela indique essentiellement le groupe de types, où sont vos fichiers ? Et je vais écrire tous mes fichiers TypeScript et taper le répertoire source que je n'ai pas encore noté, mais je peux le faire maintenant. Créez votre source. Dans ce répertoire vide. Nous allons écrire tous nos types de fichiers de grille. Et la deuxième chose, c' est cette option chère. Donc, en gros, je vais dire que lorsque je compile les fichiers TypeScript, veux placer tous ces fichiers compilés dans ce répertoire de construction. Au fur et à mesure que nous faisons cela, nous voulons le placer dans ce fichier gitignore car nous ne voulions pas entrer dans la construction du projet. Ce sont les deux seules choses que je veux faire dans le fichier de configuration ts. Allons maintenant et allons ouvrir le fichier JSON du paquet. Ici, nous allons ajouter quelques dépendances. Je vais vous expliquer quelles sont ces dépendances, même si vous allez en comprendre mieux , nous les utilisons. C'est génial. Certains scripts aussi. Tout d'abord, souvenez-vous ce que je vous ai dit dans la dernière vidéo. Nous avons installé ce blogging en code VS. Mais supposons que vous utilisiez ce code et que vous utilisiez un identifiant ésotérique ou un éditeur de texte, alors vous devez donner aux autres développeurs un moyen de maigrir et de formater leur code. Pour cela, nous allons créer deux scripts ici de celui de LinkedIn. Et nous allons dire que c'est une source liée. Nous allons trier, relier ces fichiers avec une extension TS. Je dis ici que ces scripturaires ne liaient que le dossier source, tout ce qui se trouve dans le dossier source et tout ce qui a une extension tf. Vous pouvez le rendre plus général. Par exemple, vous pouvez décider pencher sur tout ce qui se trouve ici. Mais si vous faites cela, assurez-vous de mettre E est lié à ignorer le fichier avec les modules de nœud et le dossier Build. Sinon, vous allez pencher des choses que vous ne voulez pas prêter. Je vais juste le faire comme ça, rester simple. Ensuite, je vais ajouter un autre script appelé format, où nous allons utiliser le plus joli. Je pense que ce commandement est peut-être quelque chose comme ça, non ? Et nous devons préciser ce que nous voulons formater. Je vais donc dire source d' une barre oblique, tout à l'intérieur ici. Tout ce qui se termine par un fichier txt point. Encore une fois, vous pouvez le rendre plus général comme un joli tiret, un tiret, un point droit. Mais vous devez ensuite créer le fichier d'ignorer plus joli point afin d' ignorer le dossier des modules de nœuds. Encore une fois, restons simples. Faisons ça comme ça. Testons ces deux scripts ici. Ajoutons un fichier txt de points d'index. Et faisons quelque chose comme des tests sans coût sur la chaîne d'affectation aléatoire. Mon extension VS Code me dit que vous avez un problème ici. Mais supposons que vous n'utilisiez pas ce code, alors nous devons en fait que j'essaie formater et de sauvegarder et je ne me souviens plus, je faisais quelque chose ici. Donc, si j'ai dit à l'éditeur ce format sur Safe to True, alors lorsque j'enregistre ce fichier, alors lorsque j'enregistre ce fichier, vous pouvez voir que plus joli ajoute le point-virgule ici. Et c'est parce que j'ai précisé cette chose ici. Célibataire, célibataire, je suis désolé, semi égal à vrai. Si vous voulez le faire comme ce que j'ai fait en ce moment pour la sécurité du méthane, allez dans les paramètres du fichier JSON, qui sera. J'ai probablement un raccourci ici, mais vous pouvez le trouver avec cette icône d'engrenage. Accédez aux paramètres, et vous pouvez le définir sur l'interface utilisateur ou vous pouvez accéder à cette icône ici et indiquer les paramètres ouverts. Et Jason, et moi utilisons Jason parce que pour moi c'est plus facile. Vraiment. Il suffit d'ajouter cette option ici, de modifier, d' éditer un format non sécurisé égal à vrai. Ensuite, lorsque vous enregistrez votre fichier, vous allez formater votre code avec un prédicateur. Mais supposons encore une fois que vous n'avez pas une pièce d'identité comme celle-ci, alors je dois simplement faire ce qui suit. Cela veut dire, permettez-moi de fausser cette option. Donc, si j'ai enregistré le fichier, il n' admettra pas ce point-virgule. Je vais donc exécuter ce format de fil de commande, et vous pouvez le voir à ce point-virgule pour moi. Maintenant, si je cours pendant le vent, vous allez voir que j'ai ce problème. Le test consiste à attribuer la valeur mais n'est jamais utilisé. Vous devez résoudre ces problèmes. En gros, nous sommes venus faire n'importe quoi ici parce que c'est juste un test que je faisais. Mais c'est ainsi que vous saisissez les plus jolies erreurs du terrorisme Is Lean avec ces scripts. En fait, ici je peux aussi cette commande fixe. J'ai bien aimé ça. Il va essayer de corriger ces erreurs ou ces avertissements ici, mais parfois cela peut faire parce qu'Eastland va supprimer votre variable, ce sera dommage, non ? Donc, lorsque vous rencontrez d'autres problèmes résolubles, ce drapeau va le faire pour vous. Bon, maintenant, nous avons ces scripts. Je veux en ajouter deux autres. Cela va être la commande build. Je vais juste exécuter TSC. Gsc signifie que le compilateur de projet TypeScript a été construit l'aide de toutes ces propriétés, entendant le conflit de TAS que Jason est en conflit. Nous allons également ajouter un type de contrôle, qui sera la même commande TSC. Mais nous allons ajouter ces indicateurs sans image. Donc ce que c'est talentueux TypeScript c'est de ne rien construire, il suffit de vérifier les types. Assurez-vous qu'ils sont corrects. Assurez-vous que nous ne faisons rien de bizarre. Oui. C'est le drapeau No Emmett. OK. Je pense que c'est fini. Maintenant. Faisons deux autres choses. Nous allons ajouter les dépendances que nous allons utiliser. De toute évidence, nous allons utiliser un jazz Z-score, qui est la dépendance la plus importante ici. C'est tout l'intérêt de ce cours utilisant cette bibliothèque d'ajustement discord. Ensuite, nous allons suggérer les bâtisseurs de slash. Bon, je vais donc prendre un moment pour expliquer ce qu'est ce paquet lesbienne discourtois. Nous ne pouvons donc écrire du code qu'avec ces bibliothèques t-score dot js. Et c'est tout à fait très bien. Mais la documentation qui guide vous recommande d' utiliser ce paquet de constructeurs de barre oblique Z-score js afin implémenter le modèle de constructeur de sont des d' implémenter le modèle de constructeur de sont des classes utilisées pour pouvoir réduire les commandes, des choses comme ça. Si vous ne savez pas ce qu'est le modèle constructeur, je vous recommande vivement de le lire car le modèle constructeur se trouve sur le modèle de signe. Si vous n'avez jamais entendu ce terme auparavant, le modèle de signe, encore une fois, je vous suggère fortement de lire à ce sujet parce que si vous voulez devenir un vrai développeur de logiciels logiciels, réel, et peut-être vous êtes un développeur de logiciels, mais un bon développeur de logiciels, alors vous devez savoir quel est le modèle du constructeur. C'est en fait une question assez courante quand ils vous ont demandé, Hé, connaissez-vous les mêmes parents ? Parlez-moi de ça. Dites-moi quel est le modèle de conception comportementale ou quelque chose comme ça ? Les motifs créatifs et ce genre de choses. Le modèle constructeur est donc un modèle de conception créative qui nous permet de construire des objets avec des méthodes au lieu de tout transmettre dans leur structure de coûts. C'est donc plutôt joli, très utile, plutôt cool. Je suggère de lire à ce sujet. C'est la bibliothèque que nous allons utiliser un wrapper pour la partition JS pour utiliser ces constructeurs. Nous allons également utiliser ce score Z juste un repos oblique. Les partitions. Types d'API. Ces deux bibliothèques vont nous permettre de faire un appel API à l'API. Pourquoi voulons-nous passer un appel API à l'API z-Scores ? Eh bien, essentiellement parce que nous voulons enregistrer nos commandes obliques. Pour enregistrer nos commandes obliques, nous devons passer un appel API au sqrt et dire, Hey, ce sont mes commandes, les enregistrer. Et oui, c'est essentiellement la fonction de ces deux bibliothèques ici. Ensuite, nous voulons utiliser dot f pour gérer nos variables d'environnement car nous allons avoir trois variables d'environnement. Le jeton, le jeton secret du but, l'ID d'application sur l'ID de guilde ou l'ID du serveur. Rappelez-vous, la constante dans le contexte des liaisons de programmation dans ces partitions et ce genre de choses. Les serveurs sont appelés guildes. Une autre dépendance, qui sera NPM ou oncle, qui va nous permettre de créer scripts qui s'exécutent séquentiellement ou en parallèle, dans notre cas, sera séquentielle. Vous allez voir à quoi cela est utile. Une bibliothèque plutôt cool. En fait. Ajoutons ce truc. Après que nous ayons fait ça. Attendez que ça se termine. Nous allons ajouter d'autres dépendances de développement. Le premier sera le nœud des types de notes. Fondamentalement, si vous travaillez avec, connaissez-les, faites parcourir ces bibliothèques. Fondamentalement obligatoire. Ou si vous allez rencontrer des problèmes d'échange Bay. Je l'ai toujours eu. Lorsque vous utilisez, sachez que TypeScript. Ensuite, nous allons ajouter une autre dépendance de développement, qui est le noeud 1. nœud 1 va être utilisé pour démarrer notre serveur de développement. Chaque fois que nous effectuons un changement, le serveur détectera ce tank. Redémarrez le serveur pour nous afin que nous n'ayons pas à nous arrêter pour redémarrer. Non, le noeud 1 va s' en charger. Encore une fois. Ce sera son nœud. Rappelez-vous que je vous ai dit que nous n'allions pas passer un appel d'API. Donc, l'API Discord. Nous allons donc exécuter le fichier, que nous allons appeler register a stash commandes dot ts. Et ces registres, les commandes dash, dash, dash points D vont ressembler à un script ou quelque chose comme ça. Chaque fois que nous démarrons l'AB en production ou que nous redémarrons le serveur de développement, nous allons exécuter ce script, puis démarrer le serveur ou démarrer l'ampoule et le serveur. Il va s'agir d'une séquence de commandes d'abord exécutées, exécuter ce fichier, puis de démarrer le serveur. Pour exécuter le fichier TypeScript, nous devons utiliser ce nœud Ts car nous ne pouvons pas simplement dire, Hey, pas de nom d'espace du fichier. Cela ne fonctionnera pas car il s'agit d'un fichier TypeScript en production, nous n'en avons pas besoin. C'est pourquoi nous ajoutons ces dépendances de développement. Je vous ai déjà expliqué pourquoi nous avons besoin que ces npm exécutent toute la dépendance. C'est parce que nous voulons d' abord exécuter le script, le script de commande barre oblique de registre, puis démarrer le serveur. Et je les mets dans les dépendances et non dans les dépendances de développement parce que nous voulons le faire aussi en production. Si je l'ai mis dans des dépendances de développement, il ne sera pas installé en production. C'est essentiellement ça. Attendez que ça se termine. Et c'est en fait supprimé ce fichier d'index. C'est tout pour cet allèle vidéo un peu trop long. Dans la vidéo suivante, nous allons donc ajouter nos fichiers d' environnement. J'espère que cette vidéo vous a plu. On se voit dans le prochain. Au revoir. 10. Configuration initiale Partie 3: Bon, continuons avec la configuration. Nous allons utiliser WAF comme je vous l'ai dit, pour lire nos variables d' environnement. Nous ne les avons pas encore définis, donc nous allons créer deux fichiers. Le premier sera un modèle de point EnB, et l' autre sera uniquement le modèle de point EnB. Nous allons, comme le suggère le nom de fichier, mettre en place un modèle de nos variables d' environnement. Nous allons avoir besoin de l'identifiant de l'application. Nous allons devoir nous identifier. Et nous allons avoir besoin du jeton, du jeton secret de la, mais je vais tout copier ici et le coller ici. Et évidemment, ce point NB dépose celui qui va avoir les valeurs réelles. Et nous ne voulions pas valider ces valeurs dans un référentiel. Ajoutons simplement une autre entrée dans notre git. Ignorez tout ce qui se termine par un enB, puis ignorez-le. Vous pouvez maintenant voir ce NBC en gris car nous ne voulons pas le valider dans GitHub. Comment obtenir ces valeurs réelles ? Allons sur le portail des développeurs d squared. Voyons les informations générales ici. Vous pouvez trouver l'ID de l'application. Nous allons donc copier et coller ici. Allons chercher l'ID de guilde. Pour obtenir le GIL que vous deviez être, vous devez commencer à activer le mode développeur dans ces carrés. Il suffit donc d'accéder aux paramètres utilisateur. Et je pense que ce devrait être quelque part des groupes d'écoute peut-être, oui, ici vous avez le mode développeur, il suffit de l'activer. Ensuite, vous pourrez copier votre identifiant de guilde à partir de l' endroit indiqué. Voyons voir, Allons dans les paramètres du serveur. Où est la carte de culpabilité ? Je pense que nous devons cliquer avec le bouton droit sur le serveur dans le panneau de gauche ici et simplement copier l'ID. Je vais donc juste copier la pièce d'identité et passer de la base ici. Cela ressemble beaucoup à l' ID de l'application, mais ce n'est pas le cas. Le jeton va être entendu à l'intérieur, mais cliquez sur le jeton de réinitialisation qui sera affiché en premier lieu si vous n'avez pas créé, si vous n'avez pas encore obtenu le jeton, et ceci est va être le signe secret. Il suffit donc de cliquer ici, copier et de le coller ici. Évidemment, je vais supprimer ce jeton une fois que j'ai fini d'enregistrer ce cours, alors n'essayez même pas de l'utiliser. N'oubliez pas qu'ils sont comme le mot de passe de vos bateaux, ne le partagez jamais avec personne. Nous avons maintenant notre fichier ENV, notre modèle DMV. Maintenant, un modèle que j'aime utiliser dans tous mes projets et cours est facile à utiliser ou à centraliser toutes ces variables d' environnement dans un seul fichier. Commençons donc à écrire notre premier fichier TypeScript, qui sera le point de conflit. Nous allons importer le point m depuis le point F. Et nous allons dire ça avec le conflit. Cela dit, Hey, allez dans ce fichier BNB et obtenez toutes ces variables d' environnement. Maintenant, nous allons exporter const le jeton, qui va traiter ce jeton point NBA. Nous allons faire un, je ne sais pas comment dire cela comme une valeur par défaut d' une chaîne vide. Parce que si nous les survolons, vous voyez que le processus de jeton BNB peut être soit une chaîne, soit indéfini. Mais nous voulons qu'il soit toujours défini de manière à ne pas avoir d'erreurs de type étranges. Cela va être de type, de chaîne et de flux ou non défini. C'est donc aussi un modèle que j'aime utiliser. Exportons ensuite l'ID de l'application const, qui va être traité un ID d'application F point ou une chaîne vide. Ensuite, exportez l'ID de guilde const, qui va être traité par EnB pour une industrie. En faisant ces chaînes ou une chaîne vide où nous attachons un réservoir TypeScript, ID de l'application Tolkien et l'ID seront toujours définis comme une force. Le k que nous ne définissons même pas, le définissant ici. Ça ne s'inquiète pas. Discord va se plaindre que vous lui transmettez un anti-force. C'est simplement pour éviter les erreurs TypeScript lorsque nous codons. C'est le modèle que j'utilise car je peux tous les voir ici. Environnement, la Bible ne fait pas de processus que je suis un gros jeton dans un endroit aléatoire dans le code. Alors Ben, ayant une poupée autour du code, il vaut mieux avoir un dîner centralisé. Je pense que nous avons maintenant configuration de nos variables d'environnement pour notre projet et ils sont prêts à les utiliser. Nous devons effectuer une étape de configuration supplémentaire. Mais ce sera assez facile cette fois. Nous allons donc le faire dans la vidéo suivante. Adieu. 11. Configuration initiale Partie 4: Bonjour. Dans cette vidéo, nous allons simplement créer un dépôt dans GitHub. Si vous n'avez pas compté GitHub que de les noter, très, très facile à faire. Alors, allez vous reposer et créer un nouveau dépôt. Appelons-le ça. Je ne connais pas le score, bien sûr. Je vais dire un dépôt pour ces partitions. Parcours. Je vais le rendre public. Et je vais créer le REPL. Pourquoi avons-nous besoin de notre dépôt ? Eh bien, essentiellement parce que nous voulons le connecter à Heroku lorsque nous le déployons. Ainsi, chaque fois que nous fabriquons une branche à un humoriste, ce sera le maître ou le principal, où que vous vouliez l'appeler. Ensuite, l'héroïque allait lire le rebelle, déployé automatiquement sur un serveur d'instance. Pour relier le serveur, désolé, le dépôt à notre dépôt local, nous devons faire quelque chose comme ça. Nous avions déjà un référentiel existant. Copions tout ici en cliquant sur ce bouton. Et maintenant, passons à notre CLI, notre terminal. Il suffit de copier-coller. Maintenant. Invitez à actualiser cette page ici. Vous pouvez voir que maintenant j' ai un code ici. C'est ça. C'est tout ce que je voulais vous montrer. C'est très important pour cette partie, car sans le dépôt, nous n'aurons pas l'intégration Heroku. C'est ça. Maintenant, nous pouvons commencer coder et ce sera la partie amusante de tout ça. Je vous vois dans la vidéo suivante. Adieu. 12. MISE À JOUR : Correction des versions du paquet: Bonjour et bienvenue. Comme je l'ai dit dans les vidéos précédentes, nous allons utiliser des versions spécifiques des paquets liés à décourager le jazz parce qu' ils ont trop de titres. Ils changent très souvent, ils ne sont pas dans la version v1. Vous pouvez voir ces jupes JS Wheelers est un acier sur 0,12. Donc ce n'est pas même si la version v1, donc c'est très, très changeant. Pour corriger ces paquets vont dire Jahren. Ces bâtisseurs luxuriants de la Cour à plusieurs points ici. Ceux-ci ont marqué le repos slash jazz à 0,3, et ceux-ci ont marqué les types d'API 0,30 point 0. Ce fichier script.js se trouve à l'est dans la version 13, 13. Mais quand même, si nous mettons à jour cette chose d'une manière ou d'une autre, nous aurons des problèmes de compatibilité avec ces autres bibliothèques. Nous allons faire de même avec VSCO ou Jazz et 13.6. Lorsque nous faisons cela, voyons ce qui se passe. Vous pouvez voir que ces quatre paquets ont été modifiés. Il n'a plus ce signe de carat, ce qui signifie que nous ne pouvons pas essayer mettre à niveau ces deux autres versions de ces paquets. Le John Locke a également changé parce que c'est ce qui est utilisé pour réparer ces choses. C'est ça. C'est très important. Sinon, vous rencontrerez probablement des problèmes avec les bibliothèques. J'espère que vous aimeriez vous voir dans la prochaine vidéo. Au revoir. 13. Faire le Bot Go Online: Nous allons commencer à créer notre bot. Créons donc un nouveau fichier et à l'intérieur de la source, golden main.js. Et c'est un début, le client important de la partition, Jess. C'est génial. La nouvelle variable client, le nouveau mot-clé. Nous allons maintenant avoir ces erreurs TypeScript. Si vous voyez ici, il est dit que attendiez les arguments sur guts 0. Comme vous pouvez le voir ici, les options sont un argument obligatoire car elles ne comportent pas d'interrogation avant la colonne. Si c'est de la laine, alors il sera facultatif, mais ce n'est pas le cas. Allons-y et cliquez sur Ctrl+cliquez ici ou sur Commande n'importe où. Nous pouvons voir que le client est une classe qui étend les plans de base et que son constructeur attend cet argument d'options qui est de type options client. Voyons quelles sont les options de ce client. Vous pouvez donc spécifier beaucoup de choses, des graphiques, le nombre de t-shirts et gagner de l'argent. Et remarquez qu'ils sont tous facultatifs car ils ont ce point d' interrogation avant la colonne. Mais il y en a un qui n' est pas facultatif. Et c'est cette propriété intense ici. C'est celui que nous devons préciser. Sinon, nous aurons cette erreur ici. Les autres sont optionnels. Si nous passons ici à la définition de type de ceci, c'est de plus en plus compliqué. Donc, au lieu d'essayer de deviner ce qu'est cette chose, elle va dans la documentation, ce sera plus clair. Si vous allez à D carré j'ai ce guide et allez à la section intense de la passerelle. Vous allez dire ce que sont les intentions. Les intentions de Ghibli ont été introduites par jour carré. Ainsi, les développeurs de robots peuvent choisir quels événements leur sang reçoit en fonction des données dont il a besoin pour fonctionner. C'est essentiellement ça. C'est la phrase la plus importante ici. Fondamentalement, si vous prenez un bus et nom est utilisé par beaucoup de gens. Vous voulez vous assurer qu'il ne reçoit que les données dont il a besoin pour fonctionner. Sinon, vous rencontrerez problèmes d'évolutivité parce que votre corps va avoir, va recevoir de nombreux événements. Ils l'ont fait très bien. Laissez-moi voir, Activer, activer intense. Vous pouvez voir ce que vous voulez que votre argent reçoive. Tout d'abord, réfléchissez aux événements votre bouton doit opérer. Sélectionnez ensuite l' intention requise et ajoutez-les à structure de coûts de votre client, comme indiqué ci-dessous. Toutes les passerelles intenses et les événements qui y appartiennent sont répertoriés dans la documentation de l' API Discord. Ok, c'est donc l' important ici. Nous allons y aller. Et cela donne un exemple. Si vous avez besoin que vos mégots reçoivent des messages, vous devez guilder l' intention des messages. C'est ce que nous voulons. Nous allons l'ajouter plus tard. Si vous vouliez que vos fesses publient un message de bienvenue pour un nouveau membre, vous avez besoin que le membre de la guilde chez Indi suggère que vous avez besoin d'une intention de membre de la guilde, etc. C'est ainsi que vous spécifiez cette chose. Intense qui signale cette culpabilité. Nous devons donc obtenir cela de ces cours également. Mais passons d'abord à la documentation de l'API Discord et voyons quels sont les incidents ici. Nous avons donc les guildes, ce qui permet, vous permet de créer une guilde de mise à jour, de supprimer, de canaliser, de créer une mise à jour de chaîne, de supprimer des chaînes, jour des menaces de niveau de thread ou de supprimer une étape notes d'instance. Et beaucoup de choses. Pour les membres de la guilde. Vous pouvez ajouter des membres, les mettre à jour, les supprimer. Pour les groupes, vous pouvez ensuite participer à des emojis. Vous ne pouvez pas mettre à jour les mises à jour des autocollants emojis, hooks web de guildes d'intégration de milliards , des présences, des messages Gil. C'est celui que nous allons utiliser beaucoup. Quoi d'autre ? Messages de culpabilité, réaction, je pense que cela sera également utilisé dans le discours. Messages destinés à envoyer des DM, des réactions directes aux messages et à la saisie directe des messages, un calendrier des événements, etc. Certains sont privilégiés, intenses, comme les présences qualifiées et les membres cédés en raison de leur sens. Si la nature des données. Donc, fondamentalement, vous pouvez les utiliser, mais lorsque vous atteignez, lorsque vos boutons, comme très célèbres, vous aurez besoin vérification de vos fesses pour soutenir cette chose ici. Mais nous n'allons pas les utiliser dans ce cours. Pour que vous soyez au courant. Ils peuvent être utilisés avant que votre pare-chocs ne devienne célèbre. Et nous avons des limites de taux. Il indique qu'ils sont autorisés à envoyer 120 commentaires de passerelle toutes les 60 secondes, ce qui signifie que vous pouvez envoyer en moyenne deux commandes par seconde. Les clients qui ont dépassé sa limite immédiatement déconnectés de la passerelle. De même que l'API HTTP, récidivistes verront leur axe API révoqué. Donc, c'est quoi d'autre ? Eh bien, vous pouvez, vous pouvez en apprendre beaucoup sur toutes les choses ici. Je pense que je voulais seulement vous montrer ce que sont ces intentions Gateway. Pour l'instant. Nous n'allons pas nous inquiéter pour eux, mais nous devons tout de même le préciser. Nous allons dire intense, et nous allons dire un tableau vide. Je vais ajouter l'intense plus tard. Ok, maintenant nous devons enregistrer le client, mais avant de brancher le client, connexion signifiera essentiellement que votre corps sera en ligne. Avant de faire cela, je vais créer un auditeur prêt. Ainsi, lorsqu'un client sera prêt, nous recevrons un événement. Je pense que ça s'appelle Ready ou quelque chose comme ça. Nous allons simplement afficher le journal de la console indiquant que nos corps sont en ligne. Nous allons créer le nouveau dossier des écouteurs. Ici, nous allons commencer par créer un fichier txt Ready Dot. Index. Le fichier TS n'est pas prêt. Je vais exporter une fonction non prête qui va recevoir un client qui va être de type. Client. Le code est cool car il me permet d'importer automatiquement le client de la discorde. Devinez. Je vais dire que les clients sont prêts. Donc, lorsque nous recevrons cet événement prêt, nous allons faire quelque chose. Voyons ce que nous allons faire. Ici, à l'intérieur. Nous allons dire journal de la console. Je vais dire que nous allons utiliser une interpolation de chaînes et dire au client que l'utilisateur, que le nom d'utilisateur est en ligne. D'accord ? Maintenant, TypeScript se plaint de dire que l'objet est peut-être connu parce que l'utilisateur l'est peut-être. Regardez la définition de type ici. Permettez-moi de survoler à nouveau, un client ou un utilisateur ou une valeur nulle. Pourquoi ça peut être non. Rappelez-vous que nous avons créé le premier et l'obligation et que, après avoir créé la duplication, le bourgeon n'est pas obligatoire pour avoir une application. Nous avons une application qui n'a pas d'utilisateur copain. Et c'est pour cela que vous, monsieur. Bon, donc fondamentalement, nous pouvons résoudre ce problème en mettant simplement ce point d'interrogation ici. C'est ce qu'on appelle le chaînage optionnel et il est refroidi par mère et JavaScript, mais nous l'obtenons gratuitement lorsque nous travaillons avec ce script. Nous allons maintenant accéder à notre fichier principal et nous allons appeler ces fonctions non prêtes. Mais d'abord, écoutons ce fichier d'index sur lequel nous allons déjà exporter. Maintenant. Nous pouvons simplement exporter à partir du fichier d'index. Et cela signifiera que nous aurons juste besoin de l'importer à partir d'une barre oblique auditeurs au lieu de sa dernière laisse est slash auditeurs comme un rayon de fouet. Parce que nous allons avoir plus d'auditeurs ici. Désormais non prêt. Souvenez-vous de ces besoins. Les clients vont passer un client. Et maintenant, nous allons dire jeton de journalisation des clients. Le jeton, rappelez-vous que nous l'avons défini dans le fichier de conflit. C'est là. Maintenant, notre client est connecté. Comment commencer cette chose ici ? Commençons par créer un paquet raclé à l'intérieur de package.json. Je vais donc créer un nouveau script appelé Deaf column main. Je vais utiliser le nœud 1, la source du nœud, main.js. nœud 1 est donc cool car il gère automatiquement les fichiers TypeScript. Nous n'avons pas eu à faire de configuration folle pour qu'elle fonctionne avec TypeScript. Exécutons donc cette commande avec fil, colonne moyenne, et espérons que cela fonctionne. Mais bien sûr Dev East en ligne. Passons donc à ces partitions. Et comme vous pouvez le voir ici, mon bourgeon, ceux-ci en ligne, c'est ci-dessous. C'est au-dessus de moi. Et oui, le cours de l'ampoule est large, malheureusement. Malheureusement, l'acier de terre parce que nous ne l'avons pas encore déployé. Mais oui, c'est en ligne, nous avons donc réussi à se connecter à notre bot ici. C'est tellement cool, c'est tout. Nous allons faire ces vidéos. Et nous allons commencer à amuser davantage dans les prochains. Adieu. 14. Ping Pong: Dans cette vidéo, nous allons commencer à créer notre première interaction avec About. Ce que nous allons faire, c'est que nous allons taper le rose dans un canal, un canal serveur. Et le corps va répondre avec le punk. C'est un exemple très, très simple, mais nous allons apprendre beaucoup de concepts. Allons ici et tapez sur la création de message. Nous allons importer le client à partir du score dot js. Je vais exporter contre cela sur message create listener, qui va obtenir le client de type client. Nous allons dire au client que nous avons ici toutes ces options. Mais celui que nous allons recevoir un message crée le virage. Ce sera le rappel. Lorsque nous recevons un nouveau message. Ils reçoivent un message qui va être de type message. Vous pouvez voir les méthodes de type. Tout d'abord, nous allons faire une technologie disant que si l'auteur du message est exposé, ce message de méthode a une propriété auteur. Et ces autres propriétés Roberts de type utilisateur. Et ce type d'utilisateur a ces propriétés mais qui me dit si l' utilisateur E sous-beurre ou non. Et c'est un booléen, donc c'est vrai ou faux, alors nous allons revenir. Donc, si c'est vrai, nous reviendrons parce que nous ne voulons pas écouter les messages provenant de bosses. Ensuite, nous allons obtenir le contenu du message, qui va être un message que le contenu que le test ToLowercase cas. Nous allons dire si les contenus sont égaux au rose. D'accord ? Nous allons répondre à ce message. Comment répondre à un message ? Le message comporte des méthodes de réponse et nous pouvons passer une synchronisation de chaîne ou une charge utile de message ou une option de message de réponse. Vous pouvez passer en mode Ctrl+cliquez ici. Et si vous souhaitez voir tous ces éléments ici, vous pouvez consulter les définitions de types. Nous allons créer des choses avec une charge utile de messages à l'avenir. Donc, pour l'instant, nous allons rester simple et passer une corde. Il va s'agir d'une chaîne interpolée car nous allons obtenir le nom complet de la personne qui a envoyé le message rose. Disons que le message ne se souvient pas, point, affichage, nom, colonne. Le punk. Regardez ce membre est une propriété facultative. Toujours, il s'agit toujours d'une option appropriée à partir du message. Pourquoi ? Parce que ce message peut être envoyé à partir d'un, d'un serveur ou d'un DM. Nous allons voir comment les faire fonctionner dans ADM dans un instant. Mais pour l'instant, il s' agit faire appel à l'opérateur de chaîne optionnel pour voir s' ils ne sont pas nuls ou si cela n'existe pas, alors cela sera fondamentalement défini. Donc, ça va dire punk de colonne indéfini. Mais ne vous inquiétez pas, nous allons nous en occuper lorsque nous apprendrons comment faire fonctionner le bouton dans un DM. Bon, maintenant, passons au fichier d'index. Exportons à partir du message créer. Exportons la fonction de création de message. Allons dans le fichier main.js et au-dessous du non prêt, passons au message, le client. Passons devant un client. Et je pense que c'est presque fini. Nous avons besoin d'une autre chose. Et ce sont les plus intenses. N'oubliez pas que notre corps ne va pas prendre d'informations inutiles. Nous devons donc spécifier le type d' informations que nous voulons que le robot reçoive. Passons à la documentation où nous avons parlé de ces intenses et intenses. N'oubliez pas que nous avons ici le score Z, la documentation de l' API. Pour moi, au moins ce n'est pas clair à 100 %, mais nous avons besoin de ces intentions car nous devons recevoir des messages d'un canal de guilde. Une fois que nous avons obtenu ces informations de la chaîne et des choses similaires, comme par exemple la création, la mise à jour, la suppression de chaînes. Ensuite, nous allons recevoir les messages. De la part des guildes. Nous allons donc avoir besoin de cette intention de messages de guilde. Nous avons besoin de ceux qui sont trop intenses ici. Allons donc importer intensément, puis devenons intenses. Cette culpabilité au point de lin crée une intensité qui signale à Gil les messages. Bonjour. Ok, parfait. Donc maintenant, si nous allons sur le serveur, je faisais quelques tests. Essayons maintenant de taper. Je dois répondre avec le punk. Le débat est mon nom complet. Je peux modifier mon nom complet en faisant quelque chose comme ça, en sauvegardant les modifications. Et si je tape rose, ça va répondre avec le punk retest. Pourquoi ? Parce que nous disons de le faire dans le code. Nous vous demandons d' obtenir le nom complet. Ok, parfait. Donc maintenant, si j'essaie de taper ping dans un message direct, vous pouvez voir que les bourgeons ne veulent donc pas Me répondre. Pourquoi est-ce que c'est ? Eh bien, il y a une raison si nous allons sur le disque ou le guide SIG et que nous passons à la mise à jour à partir de la version V12, V13 de d squared. Jess, tu vas voir ces choses dans les canaux M. Il est dit que ces API quadrillées V8 et plus tard à la fin des canaux n' émettent pas la ville créer le groupe. Cela signifie que ces critères demandent qu'il ne soit pas en mesure de les encaisser automatiquement. Rappelez-vous que ces créations de tau proviennent de ces guildes. Chattel crée. Il ne le fait pas sur d Squared API version huit. Donc, pour que vos robots reçoivent les m, ce canal partiel doit être activé. Cela nous amène à une autre question. Que sont les partials ? Nous avons ici dans le guide lui-même la section « structures partielles ». Vous pouvez lire ce paragraphe. Mais la chose la plus importante ici, c'est la dernière phrase ici. Avant cette fonctionnalité. Ces magnifiques clients, les événements n' émettent pas si l'un des nécessaires est école structurée ne soit pas construite avec suffisamment pour garantir une structure entièrement fonctionnelle. Si vous n' optez pas pour un DCS partiel c'est toujours le cas dans notre code. Dans notre fichier main.js que vous êtes, vous pouvez voir que nous n'avons pas de partiels activés. Lorsque nous envoyons un message à About dans un message direct, IEP ne peut pas dire de quel canal nous essayons d'envoyer ce message. Si nous allons ici, envoyez un message à ce canal, ceux-ci ne seront pas définis, mais cette jupe JS est suffisamment assignée pour l'attribuer à différents types de types. Et cela semble redondant. Mais ici, nous avons le canal DM, qui provient du script S. Si nous envoyons ce message à partir d'un message direct, à partir du message direct interne, vous n'aurez pas cette information. Pour dire à ces Cortez, Hé, nous allons essayer d'envoyer ce message à un message direct. Ensuite, nous devons activer ces canaux partiels , et c'est tout. Et nous avons également besoin d'une autre intention, les messages directs DOT de lin. Un. Nous pouvons maintenant envoyer des messages car l'argent va écouter les messages directs. Et peu importe si nous n'avions pas les informations sur la chaîne, car nous sommes activés ces partiels et nous allons recevoir un message va probablement être de type DM canal ou quelque chose comme ça. comme ça. Nous allons taper ping ici. Nous avons un punk indéfini, les gars de l'informatique. Maintenant, le message, le message ne fait pas partie de la taupe parce que l'auteur du message ne fait pas partie d'une culpabilité. Donc, pour résoudre ce problème, nous allons dire le nom d'utilisateur de point de message. Si nous allons envoyer un message, il va prendre mon nom d'utilisateur à la place. C'est ça. C'est tout ce que nous devons faire pour que notre message crée un écouteur, écoute des messages soit sur une guilde, soit suffisamment de messages directs. Une autre chose que je voulais dire ici, c'est que dans cet accord, nous avions ces commandes avec un préfixe comme des commandes. Le monde a commencé avec Adam, sans signe d'exclamation ni point d' interrogation. Je ne sais pas. C'est ce qui a été fait à l'avenir. J'allais vérifier quelque chose comme, je ne sais pas si le contenu du message commence par quelque chose comme ça, puis gère à nouveau la commande. Et c'est l'ancienne façon de faire les choses. La nouvelle méthode consiste à utiliser une commande barre oblique, et c'est ce que nous allons faire dans les scores que nous allons faire, tout le reste que nous allons faire dans ce cours se fera par le biais d'une barre oblique de commentaires. Ils sont bien, bien meilleurs dans la gestion de choses telles que les validations, comme la gestion des options. Beaucoup de bonnes choses. C'est ce que nous allons voir dans les prochaines vidéos. J'espère que ça vous a plu. Assurez-vous de faire un gamète. On se voit dans la vidéo suivante. Adieu. 15. Gestion des commandes Slash: Dans cette vidéo, nous allons obtenir tout ce dont nous avons besoin pour gérer ses commandes de cils. La première chose que nous allons faire est à l'intérieur de la source. Nous allons définir un fichier appelé types dot ts. Et nous allons créer une interface appelée commande barre oblique. Il va avoir une propriété appelée commande, qui sera de type constructeur de commandes obliques. Ces types proviennent de ces cours, des constructeurs de barres obliques, qui est la bibliothèque que nous allons utiliser pour créer des commandes. Ensuite, il va avoir une propriété run, qui sera essentiellement une fonction ou un rappel que nous appellerons lorsque nous gérerons l'interaction. Cela va recevoir un paramètre appelé interaction, qui sera de type interaction de commande. Nous allons renvoyer la promesse nulle de cette chose afin que nous puissions gérer les opérations asynchrones. Et pourtant, ces types vont être utilisés dans de nombreux endroits. C'est pourquoi je voulais être centralisé et commun pour les anciens fichiers. Bon, nous allons maintenant créer un nouveau dossier appelé cette barre oblique de commandes obliques. Et dans ce dossier, nous allons créer un fichier index.html, non un fichier de dossier, index.js. Dans ce fichier, nous allons créer un tableau de commandes obliques. Et chaque élément de ce tableau va être de type barre oblique. Si facile, simplement, faisons-le comme cette commande barre oblique, qui va être de type est la commande barre oblique. Et ça va être un tableau. Pour l'instant, nous n'avions aucune commande, donc nous avons défini par défaut un tableau vide. Lorsque nous commençons à créer nos commandes, ces tableaux seront remplis de ces valeurs. Ok, super. Allons maintenant créer un nouvel auditeur ici. Nous allons appeler cela sur l'interaction. En effet. Pourquoi en interaction ? Super. Parce que les commandes de cils sont ce qu'elles appellent des interactions. Exportons const sur la création d'interaction. Cela va recevoir un client qui sera de type client du fléau. Va dire que l'interaction client crée. Nous allons avoir un rappel d' évier pour ça. Et ce rappel asynchrone va avoir une interaction avec cela en ce moment, c'est une interaction de type. Rappelez-vous que dans nos types, il s'agira d'une interaction de type commande. Donc, ici, ces années d'interaction de type, et ici il s'agit d'interaction de commande de type. Eh bien, parce qu'une interaction peut se produire lorsque vous cliquez également sur un bouton, lorsque vous sélectionnez quelque chose dans un menu ou lorsque vous faites quelque chose dans le menu contextuel. Tout d'abord, nous devons nous assurer qu'il s' agit réellement d'une interaction de commande, de commande. Pour cela, nous avons des commentaires sur les points d'interaction. Nous avons cette méthode ici. Et si dans une commande, nous allons appeler autre fonction et une autre fonction appelée commande barre oblique de handle. Créons cette fonction en dessous de cette chose ici. Appelons ça la commande « handle slash ». Ce sera aussi un évier. Et il va recevoir une interaction d'interaction de commande de type. Tout d'abord, nous allons obtenir la commande barre oblique à partir de ces commandes de cils, de tableaux, de barre oblique à partir de commandes barre oblique. C'est une gomme à effacer. Nous pouvons utiliser la commande Find de la méthode fine. Nous allons dire que la commande slash, la commande point, le nom du point, est égal au nom de la commande point d'interaction. Laissez-moi le dire comme ça. En fait, juste dans le but d'enregistrer, faites une petite chose ici. Je vais au plus beau RC. Je vais le mettre à 80 que je ne peux pas. Vous pouvez mieux voir ce qui se passe ici. Permettez-moi donc d'utiliser mon script à partir d'un paquet adjacent. Je vais donc dire le format sacré. Encore une fois, il va formater tous mes fichiers uniquement dans le but de retarder parce que mon écran n'est pas si grand. Une commande barre oblique peut être soit une commande barre oblique, soit non définie. Nous devons vérifier si cette chose est définie en premier. Si elle n'est pas définie parce que la commande barre oblique n'a pas été trouvée pour quelque raison que ce soit. Nous pouvons répondre en disant interaction point réponse. Nous devons dire commande de contenu, introuvable. Nous revenons. C'est ainsi que nous répondons à l'interaction, à la commande barre oblique en disant simplement interaction qui répond. Si c'est le cas, s'il a trouvé la commande barre oblique, alors nous allons attendre que la commande lash exécutée et nous passons l'interaction. Fonctionnement très facile. Maintenant, ici dans le client que nous allons juste attendre, gérer une commande barre oblique et nous passons l'interaction. Ceci. C'est vrai. Nous avons maintenant un moyen de gérer n'importe quelle commande. Nous devons simplement commencer à ajouter des éléments ici dans ce tableau. Et c'est ce que nous allons faire dans la prochaine vidéo. Mais avant de terminer cette vidéo, rappelez-vous que nous ne l'avons pas fait, nous ne les avons pas utilisés lors fonction de création d' interaction dans le main.js. Alors, faisons-le maintenant. Exportez-le à partir de ce fichier d'index. L'exportation à partir d'une interaction crée. Exportons sur les notes d' interaction. Nous pouvons donc l'obtenir à partir d'ici. Interaction crée un client. Ok, super. Je pense que c'est tout ce que nous allons faire dans cette vidéo. Je serai comme si c'était à vous voir dans le prochain. Au revoir. 16. Création de commande Hello: Dans cette vidéo, nous allons créer notre première commande barre oblique. Ce sera juste une commande de salutation. Donc, vous plongez simplement comme un coup fouet et ça va vous répondre par bonjour. Et il va mentionner votre nom d'affichage. Créons donc un nouveau fichier appelé Hello Dot. Exportons const la commande hello, qui va être de type barre oblique. Il doit commander et la mauvaise propriété. Définissons donc d'abord la commande à l'aide d'un générateur de commandes obliques. C'est ce que je vous disais il y a quelques vidéos sur le modèle de conception du constructeur. Nous avons ici deux options. Nous non plus, voyons voir, déclarer la classe. Nous devons définir les propriétés en appelant certaines méthodes. C'est ce que nous allons faire, définir le nom. Le nom de la commande va être bonjour et la description envoyée, qui va être renvoyée une ligne de salutation. Il s'agit de la commande constructeur en action. Désolé, c'est le pouvoir de conception du constructeur en action. Nous déclarons la classe , puis nous commençons à ajouter les propriétés de cette classe avec ces méthodes. Ici. Encore une fois, tout ce qui a besoin du verre, va être ajouté par des méthodes. C'est ça. C'est le constructeur, le signe thyroïdien. Nous allons maintenant définir la méthode run. Rappelez-vous que cette chose reçoit une interaction. Nous allons simplement dire une interaction de poids. Cette réponse. Et le contenu va être Hello. Nous allons utiliser une interpolation de chaîne et nous devons obtenir le pseudo du membre, le nom mentionné. Comment faisons-nous cela ? Comment obtenir le surnom de membrane mentionné ? Eh bien, il y a à l'intérieur ces bâtisseurs le surnom mentionné. Il suffit de lui transmettre l'ID utilisateur. Et c'est tout. Rappelez-vous, mentionnez le surnom et nous transmettons l'ID utilisateur de l'interaction. C'est essentiellement ça. Ce que nous devons faire maintenant, c'est de le placer dans cette commande barre oblique ici. Disons bonjour, commandement. C'est ça. Soyez aussi en bonne santé pour importer cette chose directement. C'est ça. Maintenant, allons commencer à def main. Maintenant, si nous allons sur notre serveur et essayons de rechercher cette commande, vous verrez que nous n'avions pas commande Hello. Que se passe-t-il ici ? Par conséquent, pour obtenir nos commandes, n'oubliez pas que nous spécifions ces commandes d'application dans les autorisations. Allons à Bud Course Def. Allons dans le générateur d'URL. N'oubliez pas que nous prenons cette chose ici. Dans ces partitions, il existe deux types de commandes. Il s'agit de commandes d'application disponibles pour les anciennes guildes pour tous les serveurs. Comment activer cette chose ? Eh bien, allons-y alors que peut-être l'auditeur non prêt. Prêt. Après avoir dit cela, les corps et la ligne, nous pouvons faire ce qui suit. Nous pouvons dire ensemble de points d'application cliente. Et nous pouvons entendre dire toutes les commandes. Tout d'abord, veillez à ce que le client, cette application soit peut-être la valeur nulle. Nous allons donc utiliser l'opérateur de chaîne optionnel ici. Nous pouvons définir cette gamme de demandes. D'ici. Nous pouvons le mettre ici essentiellement. Mais quel est le problème avec ça ? Eh bien, il n'y a pas de problème. Allons le faire maintenant. Disons des commandes. Disons les commandes de ce truc ici. C'est ma commande de barre oblique d'ici. Allons, allons obtenir uniquement la commande point de commande barre oblique sur JSON. En gros, là où nous convertissons cette chose ici, ces classes ici, deux objets adjacents, c'est quelque chose que le constructeur de commandes barre oblique peut faire. Nous pouvons simplement passer des commandes ici. C'est ça. C'est ainsi que vous enregistrez les commandes de l'application. Mais il y a un problème à faire. Si je lance ça, John def main à nouveau et mon cours de livre Davies en ligne, allons dans mon serveur et tapons. Bonjour. Vous pouvez voir que je n'ai toujours pas ces commandements ici. Pourquoi est-ce que c'est ? Eh bien, c'est parce que les commandes de l' application prennent un certain temps pour se propager. Cela peut prendre jusqu'à une heure. C'est pourquoi dans ce cours, nous allons également enregistrer les commandes de la guilde car elles sont immédiates, immédiates. Nous devons simplement envoyer une requête HTTP à l'API Discord et c'est tout. Les commandes seront affichées immédiatement. Sinon, je dois attendre une heure pour les voir et ce n'est pas pratique. Mais oui, c'est ainsi que vous enregistrez des commandes pour toutes vos guildes. C'est donc tout pour l'instant. Dans la vidéo suivante, nous allons voir comment enregistrer des commandes v0 pour notre guilde uniquement parce qu'elles seront nécessaires. J'espère que cette vidéo vous a plu. On se voit dans le prochain. Au revoir. 17. Enregistrement des commandes de la guilde: Bonjour. Nous avons donc attendu plus d'une heure, peut-être la commande de l'application disponible ici sur notre serveur. Au fait, vous savez, lorsque vous vous développez, vous ne voulez pas attendre une heure ou deux pour tester vos choses. Vous voulez que cela soit médiateur. C'est pourquoi nous allons créer un script afin d'enregistrer les commandes de guilde. Ce que nous devons faire, c'est d'aller ici à l'intérieur source et de créer un nouveau fichier appelé commandes de rendement enregistré. Vous pouvez le nommer n'importe quoi. Au fait, j'ai choisi des commandes de culpabilité enregistrées et nous allons créer cette fonction de commande de registre, qui va être asynchrone. Ici, nous allons faire deux ou trois choses. Tout d'abord, nous allons définir les commentaires que nous voulions enregistrer. Nous allons obtenir les commandes obliques partir de ce fichier d'index de commandes de cils, et nous allons les mapper. Et nous allons détruire uniquement la propriété command et la convertir en commande JSON que Jason. C'est essentiellement ce que j'ai fait ici sur l'auditeur non prêt. Je viens de le faire dans la structure ici, mais nous pouvons essayer de le faire ici aussi. Donc, oui, c'est fondamentalement la même chose, mal maintenant dans ce script ici, si vous le souhaitez, vous pouvez créer une fonction pour obtenir, réutiliser ici et à droite, un auditeur qui dépend de vous, Je sais que je vais classer ces clients de repos avec un repos. Avec ces restes qui proviennent de ces SIG de base, c'est le repos oblique. Et nous devons spécifier la version à utiliser. Je vais préciser que je veux utiliser version 9 au moment de l'enregistrement de cette vidéo, nous devons définir un jeton pour être autorisé à faire le put-call pour enregistrer le rendement de notre application commandes. Nous appelons donc ce jeton de jeu et nous lui donnons le jeton de notre fichier de conflit. Au fait, enveloppons tout ce qui est à l'intérieur ici dans un piège d'essai. Ils sont à l'intérieur de l'essai. Et maintenant, nous allons dire dans le journal de la console commençons à actualiser les commandes de rendement. Ensuite, nous avons émis le point de repos de l'appel API. Il va s'agir d'une demande PUT. Où dois-je, quel est le point de terminaison où nous allons passer cet appel d'API. Eh bien, nous devons obtenir cela à partir des routes. À partir de ces types d' API notés, VP9. Nous disons « route ». L'application produit les commandes. Cette chose, comme vous pouvez le voir ici dans la documentation de cette méthode. Il s'agit de l'itinéraire pour ces trois points de terminaison ici. Nous allons donc appeler le point de terminaison put on needs dans l'URL, l' l'application et l'ID de guilde. Nous allons donc juste obtenir l'ID de l'application, l' ID de guilde. Et le corps va être les commandements que nous venons de rassembler d'ici. est aussi facile que ça. Ensuite, nous allons imprimer à nouveau que nous avons réussi ou rechargé les commandes de la guilde. D'accord ? S'il y a une erreur pour une raison quelconque, nous allons simplement imprimer cette erreur. Ensuite, la dernière chose à faire est simplement appelée cette fonction ici. C'est ça. Maintenant, nous sommes prêts à enregistrer notre culpabilité. La prochaine chose que nous allons faire est de créer ou de modifier nos scripts ici. Une chose avant de faire cela, je pense que nous avons installé NPM ou plutôt toutes les dépendances des actifs. Mais en fait, je ne veux pas le faire. Je voulais l'installer en tant que dépendance sourde. Enlevons-le. Avec John. Supprimer npm tout exécuter. Ajoutons-le encore une fois. Mais en tant que dépendance de développement comme celle-ci, moins D npm majuscule exécute tout. Et il va être ajouté en tant que dépendance de développement. Que va-t-on faire ensuite ? Nous allons définir ces commandes ou scripts de culpabilité du registre. Utiliser D comme nœud pour exécuter le fichier TypeScript. Nous allons dire que les commandes de culpabilité du registre source. Ensuite, nous allons à The find the Deaf, un script qui va utiliser ces npm run all NPN Bernal peut être utilisé comme ceci pour exécuter commandes séquentielles sont comme ceux-ci à utiliser pour exécuter commentaires parallèles. Nous voulons qu'ils soient séquentiels. Nous voulons d'abord enregistrer les commandes de guilde émises par cet appel d'API. Ensuite, je veux exécuter la colonne sourde principale dans cet ordre. Enfin, nous allons définir le script qui va être utilisé en production. Et cela ne sera que le même que def main, mais pas de main.js reconstruit lors de la compilation, lorsque nous avons construit notre projet. En fait, nous pouvons le faire maintenant. Jahren construit juste un, vous pouvez le voir, vous verrez que ce dossier Build a été créé. Et nous avons tous nos fichiers à partir de la source. Mais en JavaScript, main.js est cette chose ici. Vous pouvez donc voir que nous allons exécuter ce fichier en production et c'est pourquoi ce script de démarrage n'a pas été accordé ici. Mais c'est pour l'avenir. Pour l'instant, sortons sourds. D'accord. On dirait que nous avons enregistré les commandes avec succès. Si nous allons sur le serveur et que vous tapez est slash bonjour, vous pouvez voir que nous avons maintenant deux commandes barre oblique. L'une sera pour les commandes de l' application, et l'autre devrait être pour les félicitations de la guilde. Nous pouvons donc maintenant les tester immédiatement. Ils vont être répétés deux fois et un développement que je ne pense pas que ce soit un problème. Ensuite, si nous voulons tester la commande en dehors du serveur AAA, nous voulions la tester dans un message direct. Eh bien, nous n'avions pas trop d'alternative. Nous devons attendre, hum, jusqu'à ce que le commandement East soit enregistré en tant que commande globale. Essayez de le tester , de le tester sur le serveur, puis de le tester sur le message direct s'il doit être disponible. Message acidotique. C'est tout pour cette vidéo, j'espère que ça vous plaira. On se voit dans la vidéo suivante. Au revoir. 18. Déploiement À Heroku: Bonjour, donc maintenant vient la partie amusante. En fait, nous avons maintenant quelque chose qui fonctionne. Ma philosophie est donc que si vous avez quelque chose qui fonctionne, vous avez déployé le plus tôt possible en production. Parce qu'après, ça va devenir de plus en plus compliqué. Nous sommes sur Heroku. Si vous n'aviez pas de compte , rendez-vous sur Heroku, heroku.com et créez un compte. n'y a pas de science à faire cela. Ensuite, vous aurez votre tableau de bord. Voici dashboard.heroku.com. Et comme vous pouvez le voir, j'ai acheté mon application pour mon serveur. Mais évidemment, pour ce cours, nous allons aller ici et créer une nouvelle application. On peut l'appeler cours Discord bot. Les régions que vous pouvez choisir les États-Unis ou vous pouvez choisir dans l' original comme, eh bien, il n'y a que deux régions, oui , en tant qu'Europe, je vais choisir les États-Unis. Créez ici. Je vais improviser un peu. Donc oui, nous allons nous connecter à GitHub, souvenons que nous avons hébergé notre projet plutôt que ce dépôt GitHub. Vous devez pousser toutes vos commandes, désolé, toutes vos commandes. Si vous ne l'avez pas fait, c'est facile, simplement git, ajoutez git commit avec un message, votre message de commit. Je n'avais rien pour le moment, donc ça ne me dira rien au gamète, au travail en traitement. Et puis Git Push. Pousser. Si c'est la première fois que vous faites votre agenda push, vous devez faire git push moins u origin master ou le nom de la branche, c' est-à-dire votre branche principale. Donc après, désolé, après cela, ils vont dans ces Déploiement et connectent GitHub, connectent votre GitHub et recherchent cela. Ces 44, oui, vous devez d'abord, je pense, connecter votre compte de GitHub à Heroku. Comme je l'ai déjà fait avec mon autre projet. Il ne me montre pas ici, mais ça va vous inciter à le faire. Si c'est la première fois que vous le faites. Eh bien, je dois indiquer le nom de mon dépôt. En fait, je ne sais pas que c'est le haut de ma tête. Donc, si je vais ici, et ce sera ces derniers, ils ont marqué le parcours. Laissez-moi juste copier le nom de cette chose. Allons ici et collé la recherche. Je le montre ici. Je vais juste cliquer sur ce bouton pour dire que Connect va essayer de se connecter. D'accord, et ça me dit quelle est ma branche principale ? Ma branche principale s'appelle Master. Attendez qu'un CI passe avant le bleu, nous n'avions pas de CI. On peut laisser ça comme ça. Ensuite, nous devons aller dans les paramètres. Nous devons aller dans les barreaux de conflit. Je dois ajouter notre environnement de développement, je suis désolé, nos variables d'environnement ici. N'oubliez pas que dans le modèle EMF, nous avons l'ID de l'application qui est divisé ici. La valeur de ces choses. Vous pouvez le rechercher sur votre obligation de buck course prod. Rappelez-vous que c'est celui-ci ici. La valeur va être cette chose ici. Ensuite, nous allons ajouter l'autre clé, qui est l'ID de guilde. Donc, l'ID de guilde ne l'est pas. Oui, en fait, nous n'avons pas besoin l'identifiant de guilde car l'ID de culpabilité ne sera utilisé que pour le registre. Enregistrez le commandement de culpabilité, désolé, nous avons cherché la culpabilité , l' iode, tout notre projet. Vous pouvez voir que nous ne l'utilisons ici que dans les commandes de culpabilité du registre. Nous n'allons donc pas établir cette culpabilité IV. Et le jeton, le jeton dont nous avons réellement besoin, il ira jusqu'à où est-ce qu'il a acheté quelque chose ? Token de réinitialisation. Il suffit de le faire. Et ça va me donner un signe et je l'affronte ici et j'ajoute le problème de l'environnement. Je pense que c'est tout ce nous avons à faire à l'intérieur d'Heroku. Aussi facile que ça. Nous devons créer un autre fichier en ligne. Nous devons créer ces fichiers proc ici. Ces Procfile, nous devons mettre le fil de travail démarré. Pourquoi devons-nous faire cela ? Eh bien, lorsque nous avons déployé une application dans Heroku, Heroku va supposer que votre application va être liée à un port. Mais comme vous pouvez le voir, notre application, nous sommes en train de spécifier ici, hé, lie cette chose au port 3 000 ou quelque chose comme ça. C'est une règle générale. Si votre obligation de ne pas vous lier à un port spécifique , Audi ne fonctionne pas. Et c'est ce que nous allons faire ici. Le travailleur a besoin d'un certain commandement pour démarrer le travailleur, évidemment, cela va être gênant de commencer. Rappelez-vous, sait, construit principal. Heroku est assez intelligent pour créer votre application car elle va chercher des scripts, ce qu'on appelle build. Et il va lancer ce script ici. abord, il va installer les dépendances. Il vient de dire les dépendances de développement ainsi que les dépendances. Il va créer votre application, puis il va supprimer les dépendances de développement. Et enfin, il va s' exécuter, désolée, la commande que vous spécifiez ici, ce qui est gênant, commence dans ce cas. Je pense que c'est tout ce que nous devons faire. Essayons ces choses. Nous allons donc ajouter un commit, ajouter un fichier Brock, un fichier pour le déploiement Heroku. Allons le pousser. Ok, donc si je fais ça et que je vais à l'activité, voyons voir, ça devrait apparaître ici. Oui, je pense que nous devions cliquer sur ce bouton ici. Et ils se déploieront automatiquement. Voyons donc si cela résout notre problème. Je suppose que nous devons, nous devons faire une commande, refaire un git push. Allons donc faire quelque chose comme ça. Git commit moins, moins une minute. Je suis ici à la fin pour que ce soit différent. Ensuite, nous devons faire Git Push, Dash, Dash Force. Maintenant, nous avons déjà parcouru l'histoire. Bonne histoire, et elle apparaît maintenant ici. Voyons la progression de la construction. Cela va aller au détective de l'application NodeJS. Et il est écrit dans les binaires de style et ne neigait pas. Et npm utilise-t-il un résultat d'erreur dans la version Node ? Oui, c'est probablement un. Nous devrions également le faire. Mais tout d'abord, voyons voir. Nous devons encore spécifier la version du nœud que nous voulons utiliser ici. Mais voyons ce qu' il fait ici. Il installe des dépendances. C'est un bâtiment avec John construit. Exécutez ces commandes TSC. Ensuite, il imprime les dépendances de développement. Ensuite, il met en cache la construction avec ces commandes de trésorerie géantes. C'est donc assez intelligent pour le faire. Et découvert ces types de seins, les profils déclarent les types de travailleur et du web. Nous n'avons pas besoin du Web, donc nous allons désactiver cette chose ici. Allons à C. Ok, donc c'est là. Il a fallu beaucoup de temps à montrer. J'ai eu les ressources incontournables. Et dans les ressources, il va magasiner sur le Web et le travailleur. Sur le Web, nous allons le désactiver. Chez Worker, nous allons l'activer. C'est ça. Maintenant, si nous allons ici pour vous montrer plus de journaux d'affichage, il s'agira de vos journaux. Vous allez voir que maintenant notre cours acheté est mis en ligne. C'est essentiellement ça. Nous l'avons eu maintenant. Notre chemin va être maintenant que notre sang est en production. Essentiellement. Ce que nous devons faire, ça ne se montre pas ici. Il est ici. C'est donc une surprise. Voyons voir. Bon, donc ça marche. Je pensais qu'il allait falloir plus de temps pour obtenir les commandes des applications ici, mais c'était presque immédiatement. Et c'était une surprise pour moi. Mais oui. Il est maintenant là. Il est en production et ça va toujours être une ligne ici parce que, vous savez, c'est à Heroku, donc oui. Oui, c'est tout. Nous avons tout déployé avec succès à Heroku. J'espère que cette vidéo vous a plu. On se voit dans le prochain. Au revoir. 19. Ajout De La Version De Noeud Dans Le Paquet Json: Bonjour, juste une chose de plus. Rappelez-vous dans le module de construction que nous n'avons pas spécifié la version du nœud. Il a utilisé la version LTS de suppose, qui est 16.4.2. Je pense donc que c' est une coïncidence. En fait, il n' utilise pas de fichier NVM ou C, mais avec la version LTS Heroku. Nous voulons donc faire correspondre la version que nous utilisons en développement à celle utilisée en production, puis il est facile d'ajouter ces moteurs, Robert D dans le paquet JSON et ajouter ces nœuds. Ceux-ci, elle sera la même version ici. Donc maintenant, nous allons laisser Heroku utiliser la version de nœud qu'il veut, allons utiliser la même chose que nous utilisons pour le développement. Et si c'est le cas, si vous travaillez en équipe, vous pouvez choisir de ne pas les mettre à jour tant que vous ne le savez pas, vous mettez à jour correctement les paquets et des choses similaires. C'est donc quelque chose qui arrive beaucoup lorsque vous travaillez dans un grand projet. Vous ne voulez pas vous contenter de mettre à jour les dernières nouveautés sans vous soucier de casser les changements et les choses de ce genre. C'est pourquoi vous voulez probablement la même version que vous utilisez et développez en production, d'accord, donc fondamentalement, nous abandonnons, tout est ajouté à la version du nœud. En fait, à côté, ce sera notre message de validation. Ensuite, on se fait pousser. Nous pouvons aller à l'activité et rafraîchir cette chose. Nous avons maintenant ces nouvelles constructions en cours. Et maintenant, vous pouvez voir que ce n' est plus sans précision. Il va utiliser 16.4.2 c'est assez rapide. Ces constructions, elles ont fini aussi vite. Nous pouvons maintenant accéder aux journaux BYU. Vous pouvez voir oui. Bien sûr, le large n'est pas aligné, donc oui. C'est essentiellement ça. Je serai comme cette vidéo. On se voit dans le prochain. Au revoir. 20. Ajouter la commande: Bonjour. Donc, dans cette vidéo, nous allons commencer à ajouter une autre commande, qui va pouvoir ajouter deux chiffres. Je sais que cela semble très facile à faire et en fait, c'est facile à faire, mais nous allons commencer à augmenter la complexité de nos commandes au fur et à mesure que les vidéos passent. Bon, ajoutons une autre commande appelée add app.js. Je vais exporter une variable const appelée commande EPC, qui va être de type commande lash. Et il semble que TypeScript ne m'aide pas. Je dois donc importer cette commande mentalement en tant que barre oblique à partir de la propriété command et de la propriété. Commençons par faire la propriété command, et nous allons utiliser le générateur de commandes obliques. Voyons donc si VSCode m'aide à connaître la commande slash. Oui, il semble que cette chèvre m' aide à importer automatiquement, c' est-à-dire le générateur de commandes slash. Ajoutons une option numérique. Nous avons ici une méthode appelée option ajouter un numéro. Ici, je vais dire option. Nous devons maintenant commencer à construire cette option ici. Nous allons dire, nous allons passer un rappel avec une option qui est, qui est de type son option de numéro de commande de cils. Et nous allons utiliser le modèle constructeur pour construire une hypothèse. Je dois d'abord dire que le nom, je vais être numéro un. Et la description. La description peut également ressembler au numéro un. Nous allons définir le nécessaire pour être vrai. Lorsque nous exécutons notre commande as lash. Nous allons devoir entrer ce numéro un. Numéro un. Nous allons maintenant ajouter un deuxième numéro. Nous allons dire l'option numéro. Option. Nous allons faire la même chose. Mais cette fois, nous allons appeler ce numéro deux et le numéro deux. Maintenant, nous devons également définir le nom de la commande, évidemment. Le nom va donc être à l'adresse. Et aussi cette description, qui va être, renvoie la somme de deux nombres. Ok, super. Nous avons maintenant notre propriété de commandement. Définissons maintenant correctement notre course. Disons une course asynchrone. Et cela va avoir une interaction comme arguments. Et voyons ce que nous allons faire à l'intérieur de ces rappels ici. abord, nous allons tirer parti de l'interaction. Nous allons distraire cette chose ici. Que se passe-t-il ici ? Ce n'est pas comme ça. C'est comme si j'avais oublié. Oui, sans ça, comme ça, j'ai presque oublié comment la même chose a été corrigée en JavaScript ? Donc, oui, l'interaction va être quelque chose de destructeur par semaine par rapport à ces options ici. Parmi les options, nous pouvons obtenir le numéro un et le numéro deux. Numéro un, on peut le faire comme ça. Options delta obtention du numéro. Je vais passer le nom de l'option, qui est numéro un. Nous allons passer le deuxième paramètre qui va être requis. Ceux-ci exigés ici seront les mêmes que ceux qui sont requis ici. Nous allons donc dire que nous allons dire vrai. Et cela me dit essentiellement que ce numéro un va toujours être défini et qu'il viendra toujours dans notre interaction. Comme vous pouvez le voir, le numéro un est de type numéro. Si je retire ces vrais ici, numéro un est teint numéro ou nul. Mais nous savons que nous ne pouvons pas exécuter cette commande si nous ne passons pas ces deux options. Nous voulons donc que le nombre soit toujours défini. numéro deux va être la même chose, mais avec le nom numéro deux. Nous avons maintenant le numéro un et le numéro deux. Nous avons donc juste besoin de la somme, qui est essentiellement numéro un. Numéro un plus numéro deux, et c'est tout. J'ai maintenant la somme de deux chiffres. Et nous allons dire, attendez, interaction. L'autre réponse. Le contenu sera, eh bien, nous allons dire que le numéro un plus le numéro deux est égal à la somme. Et c'est tout. Maintenant, nous pouvons commencer à tester notre commande, mais n'oubliez pas de la mettre dans celles-ci sous forme de commandes de cils. Essayons donc de le mettre comme cette commande. C'est là. Allons taper la profondeur dans notre terminal car rappelez-vous que profondeur brutale va enregistrer les commandes de la guilde. Et puis ça va commencer notre sourd Jahren. Ok, donc maintenant, les noyaux du livre, chevalet neuf. Voyons voir. Oui, maintenant Dev and Prod ou Land, rappelez-vous que fier sera toujours en ligne parce qu'il est déjà déployé. On peut donc entrer une barre oblique. Et notre développement de cours est vert en ce moment. Allons donc ici et les commandes cd ici. Et nous avons deux commandes. La seule facilité pour le monde et l'autre concerne le commandement de la guilde. Essayons donc n'importe lequel d'entre eux. Ils sont les mêmes. Nous allons dire que dix plus 1610 plantes plus 16 sont égales à 70. Maintenant, allons-y et tapez. Essayons d' exécuter cette commande. Note ci-dessous, dix plus 61718. Notre commande de cils fonctionne à la fois dans une guilde et à l'intérieur du dm. C'est tout. N'oubliez pas que vous souhaitez déployer votre nouvelle commande, puis créer un gamète et le pousser à maîtriser ou à n' importe quelle branche que vous avez définie pour le déploiement automatique. Et c'est tout. Vous allez voir cela se refléter dans la production. C'est ça. J'espère que ça vous plaira. On se voit dans la vidéo suivante. Adieu. 21. Ajouter un lien: Bonjour et bienvenue. Aujourd'hui, nous allons ajouter une autre commande qui va simplement afficher un lien. Pour aller sur Google. Avec cela, vous saurez comment ajouter des liens à vos interactions. Créons un nouveau fichier. Appelons ces google.png. Il suffit de copier et de coller depuis l'application, partir de la commande de l'application. De toute évidence, il va falloir remplacer beaucoup de choses ici. Dans la commande crée un nouveau. Tout d'abord, modifions la commande Google Office. Peut-être. Dans la commande, créons le nouveau générateur de commandes obliques. Et nous allons juste définir le nom de ces derniers pour qu'ils soient Google. Et la description renvoie un lien vers Google, le plus simple. Maintenant, dans l'interaction, supprimez tout cela et procédons comme suit. Créons le lien en bas. Nous allons instancier une ligne d'action de message de classe de ligne d'action de message. De ces corpons, je suis. Nous pouvons ajouter des composants à ces lignes. Nous pouvons ajouter des composants avec cette méthode d'ajout de composants. Le seul composant que nous allons ajouter dans notre cas est le bas du message. Disons donc le bouton de message qui est importé de la partition js. Nous pouvons définir l'URL ici. Vous pouvez voir l'URL définie. Définissons une constante appelée URL Google. Il va évidemment s' agir de google.com. URL Google. C'est ce qui permet de définir le style comme lien. Comme vous pouvez le constater, nous avons plus d'options. Nous avons Bangor, link, primaire, secondaire et succès. Parce que le bouton Message peut non seulement être un lien, il peut s'agir d'un bouton normal et nous allons les utiliser plus tard dans ce cours. Mais les liens sont des boutons spéciaux car ils sont censés être cliqués et rhétoriques en raison d'un endroit. C'est pourquoi ils ont besoin d'une URL définie. Vous devez appeler la méthode set URL définir le style est lié. L'étiquette ne sera que Google ou ce que vous voulez. Maintenant, nous pouvons essentiellement sous le bouton de lien, il suffit d'attendre. L'interaction ne répond pas. Ici, nous pouvons transmettre un objet et le sujet accepte la propriété de ces composants, qui est un tableau de composants. Et le seul composant sur lequel nous aurons ce bouton de lien ici. Ok, super. Maintenant, mettons également ces éléments à l'intérieur de ce tableau de commandes obliques. Allons-y et Google Commande. Allons courir sourd déchirant. Il a enregistré les ordres de culpabilité. Maintenant, le développeur du cours de bosse, elle sera en ligne. Je devrais donc pouvoir taper Google ici. Il me donne ce lien ici, qui si je clique dessus, il va dire retenir ces linguales, vous emmener sur google.com. Voulez-vous vraiment y aller et vous pouvez faire confiance à ce domaine si vous faites confiance à Google. Je fais confiance à Google et bien, dans mon deuxième moniteur, ouvrez google.com. C'est ainsi que vous ajoutez des liens à votre robot. J'espère que cette vidéo vous a plu. On se voit dans le prochain. Au revoir. 22. Commande d'information utilisateur Partie 1: Bonjour et bienvenue. Dans cette vidéo, nous allons créer une commande permettant de connaître les informations utilisateur de quelqu'un. Commençons par créer un nouveau fichier appelé userinfo dot ds. Copions la boilerplate à partir de la dernière commande que nous avons créée. Nous allons avoir besoin de ça. Aller, je vais écrire ceci partir de zéro et aussi à partir de zéro. Juste en bas. En fin de compte, cette commande va être appelée, désolé, elle aura d' abord une option utilisateur. Nous pouvons ajouter une option utilisateur. Ici. Nous pouvons soit aussi vite que l'option utilisateur de la commande barre oblique, soit construire l'option à l'intérieur ici avec un rappel. Nous allons donc faire la deuxième méthode. Je vais dire « option ». Cette option vous permet de définir le nom de l'option. Je vais appeler ça la description de l'utilisateur. Je vais dire l'utilisateur, que nous connaîtrons. Nous allons définir la valeur requise de ces options pour qu'elle soit vraie. Nous ne pouvons pas utiliser cette commande sans spécifier l' utilisateur que nous voulons connaître. Ensuite, il faut bien évidemment lire le nom. Et je vais nommer ces commandes des informations de soulignement de l'utilisateur. Ensuite, nous allons dire, la description à renvoyer les informations de l'utilisateur, de l'utilisateur spécifié. Dans la fonction Run. Nous allons créer ce qu'on appelle un pari M. Tout d'abord, prenons l'utilisateur. Comment obtenir l' utilisateur de l'option ? Eh bien, l'interaction a une propriété options. Cette propriété options possède une méthode appelée get user. Nous devons spécifier le nom de l'option, qui est celle-ci. Nous allons donc copier l'utilisateur. Ceux-ci peuvent recevoir un deuxième argument, qui est facultatif, et c'est la condition requise. Nous allons dire, oui, c'est nécessaire. Ainsi, notre type d'utilisateur variable est de type utilisateur. Si je ne les spécifie pas, ça va dire, Hey, c'est utilisateur ou null. Mais nous savons que nous ne pouvons pas exécuter cette commande si nous ne spécifions pas ces options et nous allons dire nécessaire. Maintenant que nous avons l'utilisateur, nous pouvons obtenir des informations le concernant. On peut dire const, avatar, affichage de points utilisateur, URL d' avatar, qui nous donnera une URL de l'avatar. Et maintenant, nous allons commencer à créer notre premier, je vais dire M pari nouveau message M, qui vient des scores points js. Il s'agit donc d'une importation à partir de ces coordonnées. Et les week-ends spécifient plusieurs choses ici. abord, nous allons spécifier la couleur, la couleur, et nous avons de nombreuses options que nous pouvons utiliser par défaut Vous pouvez utiliser du code hexadécimal si vous le souhaitez. Mais je vais dire que je veux que ces outils soient flous. Je ne sais pas quelle est la couleur. Nous pouvons également définir le titre. Le titre sera la balise utilisateur. Donc, vous avez dit cette étiquette. Nous pouvons également spécifier la vignette du jeu de miniatures. Et ce sera l'avatar que nous avons obtenu d'ici à partir de l'URL de l'avatar d' affichage de points de l'utilisateur. Nous pouvons également ajouter la date à laquelle ces utilisateurs se sont enregistrés pour la première fois. Je vais utiliser ces autres champs. Je vais dire que le nom va être enregistré à l'adresse. La date, sera créée par l'utilisateur. Il doit s'agir d'une chaîne. Donc, pour l'instant, mettons ces deux verres de dattes. Nous allons créer plus tard une fonction qui tient compte du fait que le local de l'utilisateur de l'interaction, désolé. Le troisième paramètre est cette ligne. Champ qui nous indique essentiellement que nous pouvons ajouter d'autres champs en ligne. Je vais donc dire oui, car nous allons ajouter d'autres champs à l'avenir. Avant de le faire, ajoutons également un pied de page. Je vais dire intégrer ce filtre. Et je les fais séparément. Parce qu'entre cette chose ici, ces lignes de code et ces lignes de code, nous allons ajouter d'autres choses à notre système intégré. Ici. Dans le pied de page défini, vous transmettez un objet possédant une propriété appelée texte. Et je suis là. Je vais dire que l'ID de l'utilisateur est le point utilisateur. Enfin, nous allons répondre à cette interaction en disant une réponse d'interaction. Et je vais dire, désolé, mes lits. Et nous allons passer nos embarcations. Nous allons ajouter d'autres choses. Pour l'instant. Modifions le nom de ces commandes, les commandes d'informations utilisateur. Évidemment, nous devons l'ajouter ici, commande d'informations utilisateur. Parlons de fils sourds, et voyons ce qui se passe. Allons-y. Attendons les deux débits de courbes en ligne. Allons maintenant sur notre serveur et saisissons les informations utilisateur. Vous pouvez voir ici que je peux sélectionner tous les utilisateurs disponibles sur mon serveur, qui ne sont que trois. Voyons voir, le mien, mon propre utilisateur. Il est dit que c'est mon tag. J'ai été inscrit le vendredi 29 novembre 2019. Et c'est l'idée de mon utilisateur, et c'est la couleur du pôle flou, et c'est l'avatar, que je l'ai défini comme vignette. Passons en revue ce qui se passait ici. Nous avons défini la couleur pour qu' elle soit floue, c'est cette ligne ici. Nous avons défini le titre comme étant la balise utilisateur, ce qui est ici. Nous avons ajouté la vignette, qui est mon avatar ici. Et nous avons ce domaine qui est enregistré à l'adresse. Enregistré à correspond au titre de ces champs ou du nom. Et nous avons la valeur qui est user.name a créé cette chaîne à ce jour. Ces valeurs ici. Et nous avons également ces vrais, ce qui signifie que le champ d est intégré. Et cela aura plus de sens une fois que nous ajouterons plus d'informations à ces éléments intégrés ici. C'est tout pour cette vidéo. Dans la vidéo suivante, nous allons ajouter plus d'informations à ces n-bits. J'espère que ça vous plaira. On se voit dans la vidéo suivante. Adieu. 23. Commande d'information utilisateur Partie 2: Bon, continuons donc avec nos informations utilisateur de M ben. N'oubliez pas que notre bot peut réellement envoyer vos réponses à l'intérieur d'un rendement et en dehors du rendement. Si vous êtes à l'intérieur d'une guilde, vous disposerez d'informations supplémentaires telles que, par exemple, le surnom que vous utilisez à l'intérieur, ressentez cette culpabilité, désolé. Le joint chez. Donc, lorsque vous rejoignez ce serveur ou que vous êtes coupable en particulier. Et aussi ce qu'on appelle ça, les rôles que tu as dans cette culpabilité. Toutes ces informations ne seront disponibles que si l'interaction provient d'une culpabilité entre la création de l'Intégrer et la définition du pied de page pour l'intégration. Je vais d'abord vérifier si l'interaction provient d'une interaction de guilde dans le rendement. Si c'est vrai, nous aurons des informations supplémentaires. Tout d'abord, nous allons obtenir la guilde de la culpabilité de l' interaction. Nous allons donc définir cette variable de guilde où le CE, interaction cette culpabilité. Maintenant, si nous le faisons, voyons la définition de la définition de type de Gill. Vous allez voir qu'ils peuvent être guildes ou nuls. Fondamentalement, c'est parce que le roi de la guilde n'est pas dans la cache. Si cela se produit, nous allons dire ou, et nous allons dire, attendez, interaction. Un client qui se guilde, permettez-moi de les fermer un peu. Ce truc. Et nous allons passer l' interaction, l'ID de guilde. Cela revient à une culpabilité. Et comme vous pouvez le constater, nous utilisons le poids. Si cette chose est nulle , nous allons chercher la guilde. Et maintenant, vous pouvez voir que la variable de champ n'est que de type, culpabilité. C'est génial. Et maintenant, nous pouvons obtenir le membre de ces guildes. Ce que nous allons faire, c'est dire membre constant, EC égal aux membres de la guilde que nous devons rechercher dans le cache. Obtenez l'utilisateur. Encore une fois, si ces éléments ne sont pas dans le cache, ils reviendront sur définis. Cette fois, il retourne non défini. Si cette chose retourne indéfinie, alors nous allons dire que nous allons chercher le, pour le, pour que le membre puisse dire attendre les membres de la guilde qui vont chercher. Et nous allons transmettre l'ID utilisateur. Et ces effets vont renvoyer une prémisse qui renvoie une promesse avec un membre de la guilde. Maintenant, nous pouvons voir que ce membre n' est que de type « big deal ». Il ne sera plus indéfini. Et maintenant, nous sommes sûrs que la culpabilité et le membre de cette guilde existent. Maintenant, nous allons obtenir le joint sur le terrain auprès des membres. disons donc simplement que le membre dot se joint à cela. Vous pouvez aussi détruire si vous le souhaitez. Nous allons également obtenir le rôle de maladie des rôles des membres qui comptent. Heureusement, ces choses sont de type collection, c'est-à-dire, qui a une chaîne et une collection de règles dans la partition, le jazz n'est qu'une carte avec des choses supplémentaires. Et quand je parle de lui, j' ai dit quelque chose comme cette nouvelle carte. Il s'agit d'une carte en JavaScript. La collection n'est essentiellement qu'une carte avec d' autres choses. Maintenant, nous allons définir la description des incorporés qui vont dire M, mais c'est une description définie. Et nous allons utiliser une fonction YouTube, qui provient en fait de ces constructeurs de slash de garde js, qui est le surnom de membre mentionné. Voyons voir. Pour ce faire, nous devons transmettre un ID de membre, qui est l'ID utilisateur. Voyons voir ce que nous avons jusqu'à présent. Allons sur notre serveur. Tapez qu'est-ce que c'est ? Userinfo, et c'est mon utilisateur. Et vous pouvez voir que c'est la méchante. Désolé de ce surnom de membre mentionné. OK. C'est comme ça, mais à l'intérieur des enrobages. Je peux donc cliquer dessus et vous verrez des choses. Revenons maintenant au code et voyons qu'ils rejoignent ça. Vous pouvez voir qu'il y a une date. C'est de type date ou ancienne. Donc, nous allons simplement dire adhérer à cela. Si cette chose existe , je vais ajouter un champ. Le champ va être appelé « joint at ». Maintenant, nous allons mettre la date, mais au lieu de les faire, joignez cette chaîne à date. C'est génial. La fonction à l'intérieur de cette méthode ici appelée appelons-le obtenir les formats ont. Cela va recevoir une date qui va être de type. Je vais y retourner. Au lieu d'utiliser une chaîne de date, je vais utiliser deux chaînes de date locales. Et nous allons utiliser l' interaction, le local. Ici. Nous avons deux choses ici. Le premier est le local. La personne qui utilise la commande ou le local de la Guilde, qui est l'auteur local Gil. Je vais l'utiliser pour utiliser le local de l'utilisateur exécutant cette commande. Et nous pouvons préciser que le jour de la semaine est une chemise longue et étroite. Il ne s'agit donc que de JavaScript. Nous pouvons spécifier l'engrenage à deux chiffres ou numérique, numérique le mois. Encore une fois, nous avons de nombreuses options pour DDD long, court numérique étroit. Je vais répéter les poumons le jour, beaucoup d'options à la TNT ou au numérique. Je vais le dire numérique. C'est à vous de choisir. Vous pouvez utiliser n'importe quelle autre chose étrangère si vous le souhaitez. Ok, donc ils sont dans ce joint et je vais passer à la date de mise en forme. Je vais passer la variable jointe à la variable. Je vais dire que ces champs devraient être intégrés. Ici aussi, permettez-moi d'utiliser la même fonction ici. Obtenez des dates formatées. Je vais passer un utilisateur qui a créé cela. Ok, super. Voyons maintenant ce que nous avons ici. Reprenons Userinfo avec moi-même. Et comme vous pouvez le constater maintenant, je me suis inscrit le vendredi 29 novembre 2019 et j'ai rejoint le serveur le vendredi 25 mars 2010202022. Désolé. C'est l' articulation de ce domaine. Ajoutons maintenant une autre chose, savoir les rôles que nous avons spécifiés ici, les rôles. Voyons maintenant. Filtrons d'abord les rôles. Parce que, eh bien, créons d'abord quelques rôles, parce que je pense que je n'avais pas de serveur. Voyons où cela peut être dans les paramètres du serveur. Allons dans Roles. Et comme vous pouvez le voir, nous avons deux rôles, mais bien sûr sourds et achetés, bien sûr préparer. Il y a tout le monde, qui est un rouleau complet, c'est génial. Un autre, disons le propriétaire. Et ça va être jello. Et un bas a mentionné ce rôle. Nous allons le garder comme ça. Afficher le membre du rôle séparément des membres de la terre, peu importe. Nous allons donc enregistrer les modifications ici dans les membres. Je vais m'ajouter ici. Maintenant, vous pouvez voir que j'ai ce rôle de jello ici. Allons ici. Je vais dire M lit ce champ. Commençons par créer une variable appelée rôles filtrés. Pour l'instant, je vais juste prendre la chaleur de la carte tableau de rôles , comme ce rôle. Et puis je vais utiliser un autre utilitaire de la mention du rouleau froid des constructeurs. Je vais dire que Roll a mentionné que je vais passer un rôle. Enfin. Voyons voir, je vais me joindre à ce truc. Ce tableau avec un espace. Donc, en gros, je vais juste dire des rouleaux. Ensuite, je vais interpoler les rôles de filtre cette longueur et les mettre entre crochets comme celui-ci. Pour voir le nombre de rôles de cet utilisateur. Et la valeur de cette chose va être des rôles filtrés. En fait, je ne peux pas le faire parce que c' est déjà joint. Cela va donc me donner la longueur de la chaîne plutôt que la longueur du tableau. Alors, faisons-le ici. Ok, donc maintenant je sais que je n'ai pas spécifié cette chose comme en ligne, donc elle devrait apparaître sous les champs inscrits et joints à. Allons ici et saisissons UserInfo. Mettons-moi moi même. Comme vous pouvez le voir, nous avons ces rouleaux et il est dit que j'ai deux rôles, le rôle de propriétaire et l'annonce chez tout le monde. Cette annonce à tout le monde. Je ne veux peut-être pas le montrer. Je vais juste dire les rôles de filtrage. Et ici, je vais filtrer les rôles. Je vais dire Roll, Roll. Si le nom du rôle n'est pas égal à tout le monde, je ne veux pas inclure ce rôle. Maintenant. Je dois vérifier si les rôles de filtre ont des éléments, car il peut s'agir d'un tableau vide pour quelqu'un qui vient de rejoindre, par exemple, ECM va juste dire règles de filtre qui durent ces éléments. Et je vais le faire ici. Maintenant, saisissons à nouveau UserInfo avec moi-même. Et maintenant, vous pouvez voir que j'ai filtré ça chez tout le monde parce que ça n'a pas de sens de le mettre ici. Si vous le vouliez, vous le calculez. Si vous ne le voulez pas, vous pouvez le filtrer. Et l'héritage, j'ai mes rôles de propriétaire. OK. C'est donc ça. Je pense que la partie la plus importante que vous devez en tirer est que ces informations ne peuvent être incluses que. Iv, vous êtes coupable d'avoir besoin d'aller chercher la Guilde et le membre s'ils ne sont pas dans le cache. En fait, écrivons ici un message d'allèle à notre robot. Disons UserInfo. Cette fois, je peux juste mettre comme moi ou les bots. Voyons ce qui se passe. Maintenant, je ne peux obtenir que ces informations, le registre ajoute l'ID. Je peux obtenir des informations supplémentaires car cette commande n'est pas exécutée par la culpabilité d'AIG. C'est ça. J'espère que ça vous plaira et que vous savez maintenant comment obtenir des membres de guildes et, au fond, en les connaissant, vos possibilités sont infinies. Conditions de construction de bots. Vous utilisez TypeScript, donc nous sommes en bonne voie. J'espère que cette vidéo vous a plu. On se voit dans le prochain. Au revoir. 24. Commandement du sondage Partie 1: Bonjour et bienvenue. Nous allons maintenant commencer à créer une commande de sondage et de barre oblique. Ce sera la chose la plus complexe que nous allons faire maintenant. Commençons par créer un nouveau fichier appelé pole dot ds. Et notre sondage va être très, très complet. Nous allons donc construire quelque chose de très, très complet. La première chose que je vais faire est d'aller copier et coller certaines choses ici. Enlevons tout ici. Enlevons-les. Et modifions ces commandes pour qu'elles soient la commande pull, qui sera de type barre oblique. Commençons à construire notre commandement. Ici. Mettons tout simplement pour que nous n'obtenions pas cette erreur. C'est annuler l'interaction. Commençons à construire la commande ici. Notre commande E va être un complexe d'allèles. Donc, ce que je vais faire, c'est créer une fonction qui va être appelée immédiatement. Expression de fonction immédiatement invoquée, ou qui est essentiellement le Sud, contrairement à ce que vous créez votre fonction ici, vous dites amour du Conseil, peu importe, bas. Maintenant, c'est une fonction et pour l'appeler immédiatement, vous le faites comme ça. Il s'agit d'une expression de fonction. Et immédiatement évoqué l'expression fonctionnelle invoquée. Si j'attribue ces deux variables a, vous verrez cet ABC. Vous allez voir que le type de cette chose est une fonction qui renvoie nulle, retourne par exemple une. Ensuite, cette chose va renvoyer un numéro, sa fonction normale, mais elle est appelée immédiatement. C'est ce que je vais faire ici parce que ma fonction va être un peu complexe. Et c'est pourquoi je devais faire une logique particulière ici. Commençons par déclarer une variable de commande barre oblique de coût. Je vais dire que Mu est un constructeur de commandes obliques. Et pour l'instant, vous pouvez voir que ces commandes se plaignent du créateur de commandes slash, nous pouvons, pour se débarrasser de cette erreur, simplement renvoyer les commandes barre oblique . Maintenant, nous avons une carte d'identité propre sans avertissement ou quoi que ce soit de ce genre. Commençons maintenant à créer cette commande barre oblique. La première chose que nous allons ajouter est une option entière qui sera le moment où le sondage sera disponible. Pour cela, je vais dire une option de type entier. D'accord ? J'ai besoin de construire l'option. Je crée donc un rappel comme argument. Et ce sera le nom du point Option. Le nom de cette option va être heure. Ensuite, je dois définir la description. Et la description va être la durée du sondage. Maintenant, je vais dire que c'est un argument obligatoire. Tellement triste, nécessaire à vrai. De plus, je veux mettre une valeur moyenne et la valeur maximale. C'est à vous de décider, mais je veux une valeur moyenne de 1 et une valeur maximale de 60. Maintenant que nous avons le temps, nous devons maintenant spécifier l'unité de temps. Nous devons voir s'il s'agit de secondes, de minutes, d'heures. Pour ça. abord, je vais créer une énumération, qui sera une unité de temps. Je vais dire que les secondes sont égales à quelques secondes. Cela signifie qu'il est égal à des minutes et des heures égales aux nôtres. Ce n'est pas nécessaire, mais je veux le faire comme une bonne pratique pour que vous ayez un endroit central où vous gérez ce genre de choses. Ajoutons maintenant une autre option qui sera une option entière. Je suis désolé, une option de chaîne. Je vais dire ajouter une option de chaîne. Je vais créer l'option de rappel ici, ce nom de jeu. Et leur nom va être des unités de soulignement temporel. Une chose, je ne pense pas avoir mentionné ces noms, mais ces noms ne peuvent être séparés que par un trait de soulignement. Si vous faites quelque chose comme ça, cela va échouer. Si vous avez des mots composés comme ceux-ci, utilisez un trait de soulignement. Maintenant, la description va être n'importe quelle, juste pour dire que l'unité de temps sera utilisée. Cela va également s' avérer nécessaire. Je vais donc fixer le salaire requis sur vrai. Et c'est là que j'ajoute les choix. Donc, aux choix et ceux-ci s'attendent à un ensemble de tableaux. Le premier, il sera le deuxième, la deuxième option. Je vais donc dire l'unité de temps point secondes. Et le premier élément de ce tableau sera le nom qui sera affiché dans cette cour. Et la deuxième valeur se trouve sur le deuxième élément de ces tableaux pour être la valeur réelle que vous allez utiliser dans votre code. Ici, je peux mettre des secondes, et ici je peux mettre des secondes d'unité de temps. Ou vous pouvez simplement utiliser la même chose si vous ne vous souciez pas de la capitalisation. Je vais le faire ici. Je vais juste répéter le nom et la valeur. Et je vais répéter ce processus. Mais avec quelques minutes, avec des heures. Heures et heures. Encore une fois, si vous souhaitez modifier l'étiquette qui sera affichée dans ce carré, il suffit de modifier ce premier élément du tableau. Dans ce cas, je ne m'en souciais pas trop, donc je vais utiliser le même nom et la même valeur. Maintenant, rappelez-vous que nous devons nommer ces commandes. Donc, définissons le nom sera pole et la description va être, crée un sondage. Ou si vous pensez à quelque chose de mieux, n'hésitez pas à l'ajouter. Nous allons maintenant ajouter les options. Et les options vont être totalement deux options vont être nécessaires parce que quand il au moins deux options pour un poteau. Et les huit autres options, car cela aura un maximum de dix options. Les autres options seront facultatives. Pourquoi est-ce que c'est ? Eh bien, la façon dont nous voulons voter pour notre pôle est pour réagir à certains emojis. Nous n'avons que dix emojis pour les numéros 12345678910. Nous ne pouvons avoir qu'au plus dix options. En fait, faisons-le. Créons ce tableau d'emojis. Je vais le créer. En fait, je vais juste le copier et le coller. Mais il faut que tu puisses aller à cette cour, aller sur cette grille. Ici. Vous pouvez accéder à cet accord et chercher cet emoji. Laissez-moi voir. Où sont ces emojis ? Peut-être que Tier bien, chercher. Je pense que c'est quelque chose comme un ou vous pouvez simplement l'envoyer à vous-même ou autre et le copier dans votre code comme celui-ci en quelques guillemets simples autour. C'est ainsi que vous créez ces différents emojis. C'est donc quelque chose que nous allons utiliser à l'avenir. Mais je vous dis juste comment vous pouvez créer ces tableaux d'emojis. Et l'autre chose que nous allons faire est créer le tableau d'options. Je vais appeler ça des options. Laissez-moi l'ajouter ici. Nous allons utiliser le tableau point des méthodes. Le premier paramètre de 0 distinct, un objet itérable. Un objet itérable peut donc être quelque chose qui spécifie essentiellement la longueur du tableau. Je veux dire, hé, je veux un tableau de longueur dix. Et la deuxième option est une carte fn. Il s'agit donc d'une fonction de mappage permettant d'appeler chaque élément du tableau et créer un tableau à partir d'un objet itérable. Mais ici, le deuxième argument est l'indice. heure actuelle, notre baie a 10123456789. Et nous voulons convertir ces valeurs en quelque chose de plus complexe. Et je veux y retourner. Dans un objet pour chacun de ces index, l'objet aura quelque chose comme la moyenne, qui sera le nom de notre option. Je vais utiliser l' interpolation de chaînes ici. Ça va être moi plus un. Lorsque nous aurons 0, ce sera l'option 1. Quand nous en aurons une, ce sera l' option deux, etc. Jusqu'à ce que nous atteignions, je suis égal à neuf. Il s'agira de l'option dix, ce qui sera essentiellement l'hypothèse ici. Le second sera la description. Là, ici. Je vais juste dire option, sondage, option. Je ne connais pas le numéro ici. Je vais dire que j'ai encore une fois plus un. Cela va donc être la description de l'hypothèse. Et la propriété la plus importante que nous allons ajouter ici, c'est qu'elles sont nécessaires. Requis va être booléen. De toute évidence. N'oubliez pas que les deux premières options seront nécessaires car nous avons besoin d'au moins deux options. Si je suis inférieur ou égal à un, alors nous sommes bons parce que c'est 01. Donc, les deux premières options, ce sont celles qui seront nécessaires et ces valeurs seront vraies. Maintenant, dans notre commande, nous pouvons, en dessous de cela, nous pouvons choisir chacune de ces options, ajouter une option de chaîne comme nous l'avons fait ici. Faisons ça. Pour chacun d'entre eux. Je vais déconstruire ici les propriétés de chaque objet. N'oubliez pas que nous avons un nom, nous avons une description, nous avons un retour obligatoire. Nous allons faire quelque chose avec ces propriétés. dire la commande barre oblique, l'option de chaîne, l'option de chaîne. Je vais construire l'option. Nous allons dire une option qui a dit nom. C'est le nom qui a été spécifié ici. Option Je plus une description. Cela va être la description a été spécifiée ici, l'option numéro I plus un. Et ensuite, nous allons dire que requis est égal à requis. D'accord ? C'est ainsi que nous avons créé ou ajoutons dynamiquement de nombreuses options. Nous ajoutons donc dix options et les deux premières sont obligatoires. Je pense que la vidéo est longue, donc je vais continuer construire cette commande dans la vidéo suivante. Adieu. 25. Commandement du scrutin Partie 2: Bonjour et bienvenue. Commençons donc. Continuons à ajouter d' autres options à notre commande barre oblique. Avant de renvoyer, notre commande barre oblique aura une autre option de chaîne. Ajoutez donc l'option de chaîne et construisons cette option. On va dire l'option qui donne le nom, le titre. Et nous allons définir la description. Permettez-moi de terminer ça. Et ce sera le titre du poteau, donc le pollen doit avoir un titre. C'est ce que nous faisons ici. Nous allons également ajouter une autre option de chaîne. Et cette fois-ci, il s' agira de la description du poteau, la description réelle d'un bol. Notez également que je les envoie pour être facultatifs. Donc, pendant que je vais être requis, je vais dire la description du sous-nom. Et la description de la description sera celle d'un ballon. Est-ce que Paul va éventuellement avoir un titre et une description. Ensuite, je vais dire ajouter l'option booléenne. Maintenant, c'est si difficile d'écrire ce symbole plus grand que le symbole. Et la dernière option va être quelque chose appelé l'option DM vilain cinq qui définit le nom DM N5. Notre pool va envoyer un message comme le sondage et avec succès. Et cela va être vrai ou faux. Donc, si vous définissez la valeur false, le sondage se terminera correctement, mais il ne vous avertira pas via un DM. Maintenant, la description de l'ensemble, nous allons dire si la pulpe s'est terminée avec succès. Super. Ce sont donc les trois dernières options facultatives que nous allons ajouter à nos commentaires. Avant d'aller plus loin, je voudrais vous expliquer encore une chose. Eh bien, tout d'abord, comme je vous l'ai dit dans la dernière vidéo, nous allons réagir au pôle, qui va évidemment envoyer un message. Et le message va être : il va y avoir des réactions qui vont avoir 1234, ces emojis ici. Pour ajouter ces émojis à un message, nous avons besoin d'une autre intention et nous allons l'ajouter avant de l'oublier. Et ça va être qualifié d'intense. Cela signale la culpabilité, les messages, les réactions. Nous avons donc besoin de cette intention. Et l'autre chose que je voulais vous dire , c'est que nous allons permettre que ces sondages ne soient appelés qu'à l'intérieur d'une guilde. Et pourquoi pas DM ? Eh bien, vous pouvez certainement utiliser un poteau à l'intérieur d'un DM avec plusieurs personnes. Mais ça devient plus compliqué que ce qu'il est. Nous allons donc simplement nous concentrer sur le fait que cette chose fonctionne à l'intérieur d'une guilde et dans un canal de texte. Ce que nous allons faire dans cette course vers l'est, c'est comme ça. Si l'interaction n'est pas coupable, coupable, nous avons cette méthode de culpabilité pour l'interaction. Si cette chose n'est pas coupable, nous allons répondre. Interaction. Cette réponse. Nous allons répondre avec du contenu. Vous ne pouvez utiliser ces commandes qu'à l'intérieur d'un serveur. La deuxième chose, c'est que l'interaction n'a pas de canal. Parce que si vous allez voir le type d' interaction de ce canal, voyons quel est le type de cette chose. Cette chose peut être soit un canal basé sur du texte, soit null. Si le canal de texte n'existe pas, si vous essayez de faire des choses bizarres. Ici, je vais juste dire réponse aux données d'interaction. Le contenu est que vous ne pouvez utiliser cette commande que dans un canal. Pour être plus précis. Je vais aussi le dire, ou le client n'a donc pas la bonne intention. Alors pourquoi je dis que le client n'a pas les bonnes intentions, vous allez dans le fichier main.js. Vous allez voir que nous avons cette intensité qui signale les guildes. Et si vous vous en souvenez correctement, ces informations nous permettent de voir des informations sur les canaux de la guilde. Si nous ne définissons pas cette intention, il ne sera pas en mesure interagir avec ce canal. Même si vous essayez d'exécuter la commande barre oblique dans un canal basé sur du texte. Pour être clair à 100 %, j'ajoute un message ici. C'est huit. Dans la vidéo suivante, où nous allons faire c'est commencer à construire l'interaction ici, ce qui va être un peu compliqué. Alors prends-moi dans la vidéo suivante. Adieu. 26. Commandement du scrutin Partie 3: Bonjour et bienvenue. Nous allons maintenant commencer à créer notre message intégré. Le message intégré va donc être Web contenant les informations relatives au sondage. Pour cela, nous allons avoir besoin informations sur la guilde, informations au-dessus du membre, informations sur les options brillantes. Parce que rappelez-vous, nous n' avons que deux options requises. Nous avons d'autres options optionnelles. Nous n'avons qu'à obtenir ceux qui sont spécifiés. Nous devons obtenir des informations sur l'heure, l'heure avez-vous besoin du titre, la description, etc. Avant de commencer, j'ai oublié de faire quelque chose ici. Nous devons revenir après avoir postulé, car nous ne voulons pas continuer avec le flux suivant que nous allons définir ici. Tout d'abord, déconstruisons à partir de l'interaction. Beaucoup de choses. Nous allons obtenir les options pour obtenir l'utilisateur, nous allons obtenir l'ID de guilde. Je vais chercher le client pour l'instant. Donc, la première chose que je veux obtenir, les informations sur la culpabilité, je vais obtenir ces variables de culpabilité. N'oubliez pas que nous l'avons déjà fait dans UserInfo. Nous obtenons l'interaction de cette guilde et cette chose n'existe pas parce qu'elle peut revenir, vous serez notre null. Ensuite, nous allons le récupérer à partir de l'interaction qui guilde qui récupère l'interaction que BLAT. Alors, faisons-le. L'interaction fait de la culpabilité. Et si je ne fais que cela, la culpabilité sera de type. Si je le survole, culpabilité ou non, je veux que cela soit toujours affiné. Et c'est pourquoi je vais faire un client que les guildes vont chercher. Et je vais passer la guillotine comme dette ECS. Maintenant que j'ai la culpabilité, je peux maintenant obtenir la formation de la membrane. Encore une fois, c'est quelque chose que nous avons fait dans les informations utilisateur et nous pouvons simplement copier et coller ici. Guildez les membres qui ont mis en cache Get User ID. Cette chose peut renvoyer soit un membre branchial soit indéfini. Ou je ne veux pas que cela soit indéfini. Donc, si ce n'est pas défini, je vais le chercher auprès de la guilde des membres qui vous vont chercher, monsieur. Ok, super. J'ai maintenant des informations sur la guilde. J'ai des informations sur le membre. Maintenant, je veux que les options affichées soient classées, ce qui va être un tableau contenant uniquement les options affichées ou spécifiées. Je vais déclarer les options affichées. Et je vais obtenir le tableau d'options. Et ensuite, je vais le cartographier. Donc le premier argument, il peut s'agir de la course. Il peut donc s'agir d'un objet possédant ces propriétés. Je vais juste déconstruire le nom d'ici. C'est la seule chose dont j'ai besoin. Le deuxième argument est l'index, que je vais l'appeler I. Cette chose va renvoyer un autre objet qui va contenir l'emoji associé à cette option. Et comment puis-je obtenir le MOG ? Je viens d'accéder au tableau d' images à la position I. C'est tout. Maintenant, nous avons besoin de l'étiquette, qui va essentiellement être, si vous vous souvenez dans UserInfo, quelque chose comme ceux-ci, étiquetés ici dans l'étiquette de champ, peut, ce peut être cette option de description numéro un. En fait, faisons-le. Cela permet également de déconstruire la description. Je vais définir l'étiquette comme étant la description. Si vous voulez. Vous pouvez spécifier n'importe quelle autre chose. Mais pour l'instant, restons simples et définissons la description sur la valeur. y aura des options qui obtiendront le nom de la chaîne. Nous allons donc associer cette option à son nom. Et si vous survolez ça, ça va être une chaîne ou nulle. Pourquoi ? Parce qu'il peut être présent ou non. Et nous allons filtrer ces choses en fonction de cela. Maintenant que nous avons ces cartes, nous allons dire filtre à points. Je vais avoir l'option épaule. Ici. Je vais juste dire, Hé, donnez-moi ces valeurs où l'option brille, cette valeur est la bonne. Vérité. Si cette chose est nulle , le filtre va le filtrer. Voici une chose intéressante. Si nous allons ici et survolez ces options affichées, vous voyez qu'il s'agit d'un tableau d'objets et que ces objets ont la chaîne emoji, étiquetée chaîne. Et voici la partie intéressante. La valeur est une chaîne ou une valeur nulle. Cependant, nous avons déjà filtré les valeurs nulles. agit donc d'une chose intéressante dans TypeScript lorsque vous appliquez un filtre à une carte et que vous filtrez en fonction d'une condition quelconque, il ne multiplie pas le type pour vous. Vous devez vraiment le faire vous-même. Et comment pouvons-nous faire cela ? En fait, c'est assez simple. Après cette option affichée, nous allons dire colonne affichée option. Et nous allons spécifier le type emoji, chaîne, étiquette, force de valeur de chaîne. Maintenant, je survole ces options affichées. Vous pouvez voir que maintenant la valeur est toujours, sa formation a été filtrée et le type d'affichage d' une option a été corrigé. C'est quelque chose que peu de gens connaissent, mais c'est très, très utile. Maintenant que les options sont affichées, nous allons obtenir les informations comme l'heure. Le temps est des options qui entrent dans votre temps. Il est nécessaire. Nous allons donc le mettre en valeur. Nous allons obtenir le temps dont vous avez besoin avec options et obtenez un moment étrange dont vous avez besoin. Ceux-ci sont également nécessaires. Et voici la partie intéressante. Cette chose en ce moment est de type chaîne qui se souvient que les choix de l'annonce, nous les définissons comme une unité de temps. Donc elle sera comme S time parce que c'est quelque chose à partir de là. Nous savons qu'il souffre de là. Maintenant, const, titré va être options dot obtenir le titre de force, et c'est facultatif. Nous n'allons donc pas envoyer qui sont nécessaires pour être vrais, nous obtiendrons également la description. Options qui obtiennent une description de chaîne. Pourquoi pas ? La variable phi méchante de DM. Options booléennes et non définies. Ils peuvent être booléens ou nuls. Si cette chose est nulle, alors, en fait, si cette chose est fausse, nous voulons que ce soit faux. Mais si nous faisons cela, nous allons passer à cette condition ici. Si je l'ai fait, cela sera toujours vrai. Oui, vous pouvez voir que DM notifie vrai. Je veux donc que ceux-ci soient soit vrais, soit faux, donc booléens. Donc, pour les dettes, je vais utiliser cet opérateur ici, double point d'interrogation. Donc, si je vois cela, c'est maintenant de type booléen. Ce double point d' interrogation me dit, hé, est-ce que cette chose est toujours indéfinie ou nulle ? Alors, allez ici. Si cette chose est fausse, alors gardez-la comme telle, fausse. Si c'est vrai, c'est évident que ça va être vrai. Si cette chose n'est pas nulle ou non définie, allez ici et définissez-la sur true. C'est donc comme la valeur par défaut. C'est comme le volume par défaut. Quoi d'autre ? C'est tout ce que nous allons obtenir. Nous avons maintenant beaucoup d'informations. Nous devons maintenant utiliser ces informations. Nous devons utiliser ces informations. Nous allons créer l'intégration au-dessus de toutes ces choses et en dessous de toutes ces conditions ici, je vais créer une fonction à l'intérieur de cette fonction. C'est ce qu'on appelle une fermeture dans le script GAO. Je vais recevoir un appel que ça va construire et ça ou mort au lit. Ce que vous voulez. Je vais appeler ça s'embarquer. Construit dans le lit. Son intelligent, correct. La première chose que nous allons faire est de déclarer ces formats à l'unité temporelle. Et je vais dire que c'est de type unité de temps ou chaîne. Ensuite, je vais le régler ici, alors que c' est des unités de temps. C'est la partie intéressante des fermetures. Nous pouvons utiliser des variables en dehors de la fonction. Lorsque vous déclarez une fonction à l'intérieur d'une fonction, la fonction interne peut utiliser des éléments de la fonction externe. C'est essentiellement une fermeture. Pourquoi ? Je déclare ces variables de format à l'unité temporelle. Eh bien, si le temps est égal à un, si le temps est égal à un, alors je veux ce format de temps. Vous devez avoir des unités de temps formatées, 0 moins une. Donc, ce que cette chose fait, c'est que si vous dites le poteau, temps est d'une heure. Donc, au lieu de dire une heure, cela va être transformé en une heure. C'est essentiellement ce qu'il y a ici. juste une petite chose, mais c'est bien d'avoir ça. Bon, alors commençons à créer notre intégration. Donc je vais dire que const and bad va être un nouveau message M beth de disque ou Jess. Je vais définir l'auteur sur objet BIM avec une propriété name qui sera le membre du nom complet. Nous pouvons également définir l'URL de l'icône. J'ai une sorte d'URL. Il s'agit de l'utilisateur qui affichera une URL cible. C'est ça. Maintenant, nous avons les auteurs dans le même lit. Nous allons maintenant définir le titre. Le titre sera soit le titre que nous obtiendrons d'ici. N'oubliez pas que c'est une chaîne ou une valeur nulle. Si cette chose est nulle, je vais le régler sur quelque chose comme Paul, quelque chose comme ça. Nous allons maintenant définir la description. En fait, ici. Je ne veux pas autoriser les chaînes vides, donc je vais également utiliser l'opérateur OR. C'est à vous de choisir. Vous pouvez utiliser ceci ou ceci. Je vais les utiliser parce que je ne veux pas de tuiles vides. Bien que je pense que cela n'est pas permis par l'option que je ne connais pas. Maintenant, la description sera soit cette description, soit quelque chose comme React to boat. Le sondage sera disponible pour le temps. Pour mon moment difficile. Il s'agit du message par défaut et c'est que vous transmettez la description. Ensuite, vous allez définir cela, si ce n'est la belle passe qui , alors vous allez définir ce message ici. Nous allons définir la couleur de l'embed. Ça va être que je ne sais pas, bleu. C'est à vous de choisir. Je vais définir le pied de page en disant quelque chose comme dans le texte en cas de tirage, une option aléatoire sélectionnée. Maintenant que nous avons ces éléments intégrés, nous voulons ajouter les champs. Tout comme nous avons ajouté les champs ici. Rappelez-vous où sont les champs IT. Nous voulons maintenant ajouter ces champs ici à l'élément. Pour cela, je vais utiliser le tableau d'options brillantes. Je vais économiser pour chaque option affichée. Je vais chercher l'étiquette. Je vais avoir la valeur , puis j'aurai l'emoji. Le rappel va simplement intégrer ce champ d'ajout. Le premier argument est le nom, qui sera l'étiquette. Le deuxième argument sera la valeur, qui sera la valeur du tiret emoji. Le troisième argument sera l'intérieur des terres. Je ne veux pas que ça soit à l'intérieur des terres, donc je vais le garder comme ça. Enfin, nous allons renvoyer l'intégration à partir de ces modèles de build. Maintenant que nous avons ces fonctions intégrées, nous allons juste dire que const et lit sont égaux à construire, à les construire, alors. C'est ça. Nous avons fait beaucoup de choses ici. Fondamentalement, nous obtenons l'information du branchion, du membre. Nous serions en mesure de montrer un spectacle. Nous obtenons cette description du titre de l'unité de temps. Ces DM ont averti que nous n'avons pas encore utilisé. Ensuite, nous utilisons des fermetures pour créer cette fonction qui formate le temps dont vous avez besoin en premier. Ensuite, il définit l' auteur, le titre, la description, la couleur, le fluide central, ou il ajoute tous ces champs pour les options brillantes et renvoie l'intégration DDL finale. Et nous l'appelons ici. Beaucoup de choses à digérer. Arrêtons-nous ici et continuons dans la vidéo suivante. Adieu. 27. Commandement du scrutin Partie 4: Bonjour et bienvenue. Continuons à construire notre commande de sondage. Maintenant, nous avons le système Embed. Nous allons maintenant ajouter quelques boutons. Et il ne s' agira que de deux boutons. Définissons donc ces boutons. Obtenir des boutons. En dessous de notre fonction construite et Beth. Nous allons créer une autre fonction par laquelle vous pouvez compacter cette fonction en cliquant ici dans le code VS. Je vais créer ça, obtenir des boutons ou construire des boutons, peu importe. Une fonction qui va devenir une fonction interne. Et puis je vais juste retourner une nouvelle ligne d'action de message. Rappelez-vous que nous les utilisons déjà, je pense que c'était peut-être Google. Ici, nous avons ajouté ces méthodes section corde, et nous devons ajouter quelques composants pour ajouter des boutons ici. Nous allons donc ajouter deux boutons. Le premier sera ce nouveau bouton de message. Fermez ça. Et je vais définir l'ID personnalisé pour qu'il soit annulé. Ce bouton va nous permettre d'annuler le poteau. Aller définir l'étiquette comme étant égale à Annulation. Il a dit cette tuile. Ce sera comme un fond de rat. L'autre bouton, qui va être le bouton de message. Nous allons définir le client. Et seule la personne qui a créé ce sondage sera en mesure de le faire avant l'expiration du délai. Je sais que c'est peut-être quelque chose que nous ne voulions pas sonder, nous voulons que tout le monde vote. Mais cela va nous permettre d'apprendre certaines choses sur les autorisations et sur ce genre de choses. Ladite étiquette. Tirez maintenant et satisfaites d'être primaire. Vous pouvez le rendre secondaire, peu importe. Je vais juste le faire. Le principal ici, ce sera des boutons construits qui n'obtiennent pas de bas. Maintenant, nous avons l'intégration, nous avons les boutons. Maintenant, nous allons faire quelque chose de très intéressant. Nous allons dire interaction qui répond. Nous n'allons pas répondre avec l'imbed ou le bouton. Nous allons juste répondre avec un message générique tel que Paul a créé avec succès. Ensuite, nous allons envoyer le lit M mauvais en tant que message séparé, poids du message. Et peut-être devons-nous déconstruire le canal de l'interaction. Maintenant, la chaîne n'est qu'un canal basé sur le texte de culpabilité. Ce sable. Ici, nous allons inclure l'intégration, qui ne sera que les composants, qui seront les boutons. Pourquoi je fais cela, pourquoi j'envoie d'abord un message générique, puis je crée séparément le message et je l'envoie séparément. Eh bien, il m'a fallu beaucoup de temps pour le remarquer, mais rappelez-vous que si nous passons à notre commande, nous avons défini la valeur moyenne un et réglez la valeur maximale sur 60. Il peut s'agir de secondes, de minutes ou d'heures. Voici la partie intéressante. Vous ne pouvez pas répondre. Vous ne pouvez rien faire avec l'interaction. Avec réponse d'interaction. Vous pouvez tout faire. Vous avez supprimé, vous pouvez y répondre. Vous pouvez tout faire. Si 15 minutes se sont écoulées depuis votre usine. Il y a donc un jeton qui a expiré en coulisses, alors vous ne pouvez pas actualiser ce jeton. Il est impossible pour le moment de le faire. Nous devons donc créer le message car ce message, qui est de type message, peut être modifié après 15 minutes. Si nous ne devions modifier que la réponse, nous n'aurions rien pu faire. Mais ce message, chapitre 15 minutes, nous allons pouvoir modifier cela. Vous allez voir à quoi je veux modifier ce message. Alors que nous allons de l'avant. C'est pourquoi je fais ce truc ici. En fait, nous pouvons exécuter Def. Nous pouvons aller à cet accord. Remarquez cela, mais Chris Davies en ligne, nous pouvons, évidemment, nous devons enregistrer cette chose. Nous ne l'avons pas fait. Annulons ça. Et écoutons ajouter les commandes de sondage. Allons courir sourd harring. Encore une fois. Quel cours y a-t-il en ligne ? Voyons voir, sondages. Maintenant, je dois spécifier l'heure, disons 15 secondes. Bon, maintenant, nous avons ces trois options ici. Rappelez-vous ces options que les étiquettes de ces options sont en fait ce que nous avons dit ici. Ceux-ci, la première chose dans le désarroi, unités de temps vont être des secondes ou l'option 1 sera une et l' option deux sera moi. Et si je tape la touche de tabulation, je peux voir que j'ai toutes ces options supplémentaires facultatives. Gardons ça comme ça. Maintenant, il est dit que Paul a créé avec succès , c'est mon nom complet, mon avatar. Je n'ai pas défini de titre, donc le titre va être pole. React aux deux sondages sera disponible pendant 15 secondes. Et ici, nous avons l'option de sondage numéro un. Cela me pousse à réagir avec un si je voulais sélectionner un, deux, si je veux sélectionner B, et ça dit dessiner un aléatoire, ce sera une option aléatoire qui est sélectionnée. Alors que cette option aléatoire est désélectionnée, je dois annuler et terminer le sondage. Maintenant, si je clique dessus, ça ne fera rien. Cela va me dire que cette interaction échoue parce que nous n'avons pas créé de collecteurs pour les fonds. Essayons donc de le faire. On va peut-être finir ça dans la prochaine vidéo. Je veux dire, finis de créer le collecteur de composants. Mais ajoutons d'abord un temps en millisecondes. Et MS, je vais nommer cette fonction pour obtenir du temps. Mme, en millisecondes. Je veux convertir le temps pendant lequel j'ai passé deux millisecondes. Pour cela, c'est assez facile. Je vais juste créer une autre fonction interne appelée get time in an in NMS, désolé, ici, et nous allons créer une instruction switch. Je vais prendre les unités de chronométrage. Et cette fois, vous devez vous rappeler que e est de type unité de temps. Je peux donc dire le cas en quelques secondes. Je vais retourner le temps multiplié par cent dix cents, car ce temps sera en quelques secondes. Pour le convertir en millisecondes, je dois le multiplier par une. Dans le cas d'une unité de temps en minutes , je dois retourner le temps multiplié par 60, multiplié par un millième. Cela convertit donc le temps en minutes en secondes, puis ce facteur deux millisecondes. Et enfin, si l'unité de temps est la nôtre, temps de retour est multiplié par 3 600 fois 10000. D'accord ? C'est donc le nombre de secondes en une heure. C'est donc le deuxième. Vous pouvez également le faire d'une autre manière. Mais c'est mieux pour moi. C'est plus compréhensible car il y a 303 600 secondes en une heure, puis je convertit les secondes en millisecondes. Vous pouvez peut-être mettre ça à l'intérieur d' un autre ou à l'extérieur ici. Mais de toute façon, je l'accorde ici comme fonction intérieure pour que je puisse utiliser temps dont vous avez besoin dans le temps comme celui-ci. Sans passer la mort, une dispute ou quelque chose comme ça. Maintenant que j'ai le temps en secondes, et c'est un nombre que je vais créer ce qu'on appelle collecteur. Et nous aurons besoin ici de collectionneurs composants et collecteurs de réactions. La réaction est que le collecteur va filtrer et spécifier combien de temps nous voulons que les réactions soient collectées. Et les composants collecteurs sont les mêmes, mais pour les composants qui, dans ce cas, sont les bouteilles. Donc, cette réaction est un peu plus compliquée. Commençons donc par le collecteur de composants. Collecteur de composants. Pour créer le collecteur GED ou construire des composants. Et commençons à construire cette chose. Donc en dessous du timing d'obtenir, la masse. Faisons vraiment ça. En dessous du moment, le gâchis. Je vais créer le collecteur de composants de construction, une fonction simple qui va renvoyer un message. Rappelez-vous donc que nous avons la variable de message qui crée, alors que c'est le collecteur de composants de message. Et comme option, nous devons spécifier combien de fois nous voulons collecter des interactions pour ces bloqueurs. C'est donc là que nous utilisons ce temps. Mlle Bible. C'est ça. Nous avons maintenant notre collecteur de composants qui sera utile à l'avenir. Encore une fois, il s'agit d'une vidéo en train de se faire seul, alors arrêtons ici et continuons dans la vidéo suivante. Adieu. 28. Commandement du scrutin Partie 5: Bonjour et bienvenue. Nous avons maintenant le collecteur de composants. Maintenant, nous devons créer le collecteur de réactions qui va être compliqué mais pas trop, juste un peu. Créons cette réaction appelée électeur comme ça. Créer la fonction de collecteur de réactions de génération qui sera créée sous le collecteur de composants de facturation sera la conférence Build Reactions. La première chose que nous voulons faire, et ce n'est qu' une chose d'optimisation. Est pour créer et carte des emojis. Ces cartes emojis vont avoir comme clés, l'image elle-même. La valeur va être un dicton booléen, Hey, ouais, ces emoji East dans les options affichées que nous envoyons dans l'Intégrer. Donc, quelque chose comme ça. Cela va simplement faire cela manuellement. Comme prenons ces 3 premiers hématologues. Alors que c'est ici. Supposons que la première option s'affiche bien, les deux premières seront toujours affichées comme ceci. Ensuite, le troisième, il peut être vrai ou faux. Donc, si nous spécifions l' option numéro trois, il s'agit de l'option numéro trois. Cela va être vrai. Si nous ne l'avons pas précisé, ce sera faux. Et la même chose avec quatre ou 56700 jusqu'à dix. C'est ce que nous voulons construire avant de construire le collecteur de réactions. Bon, donc c'est plutôt simple. Créons cette carte emojis montrée. Et au fait, pourquoi je fais ça ? Eh bien, parce que je veux créer un filtre dans le courant, dans le collecteur de réactions qui le dit. Il me dit que c'est un emoji ici ? Oui, puis filtrez-le. N'est-ce pas ici ? Alors ? Filtrez-le. Désolé, s'il est ici , ne le filtrez pas. Si c'est faux, filtrez-le, quelque chose comme ça. Encore une fois, il s'agit uniquement d' une optimisation. Nous pouvons y parvenir en trouvant simplement l'emoji dans les options affichées à chaque fois, mais ce n'est pas suffisant. Un objet accédant à des éléments d'un objet présente une complexité temporelle de O one. Et c'est pourquoi nous faisons cela. carte des emojis affichée sera affichée des options qui réduisent la réduction pouvez-vous spécifier et réduire le résultat des commentaires ? Je le suis. Donc, dans notre cas, ça va être un objet. On peut dire enregistrer ces chapeaux x récurrents deux paramètres. Le premier est le type de clé, qui va être de type chaîne. Et le type de la valeur qui va être de type Boolean. C'est essentiellement le type, désolé, de notre carte qui en résulte. Le premier facilite un rappel. Permettez-moi de terminer ça. Dans ce rappel, nous allons d'abord obtenir la carte. Deuxièmement, l'image. Nous allons déconstruire l'emoji de l'option ici. Le deuxième argument n'est qu'un argument qui est un rappel. Et le deuxième argument sera la valeur initiale, qui sera un objet vide, une carte vide, peu importe. Ce n'est pas la carte, à proprement parler, c'est juste un objet, mais sa fonction est d'être cartographique. C'est pourquoi je les appelle. Je vais donc dire emoji de carte, être vrai et retourner la carte. C'est ça. C'est notre émission, leur montrer le mode que Mab va être la chose que je viens de vous montrer avant. Créons maintenant le collecteur de messages, disons qu'il retourne un message qui crée un collecteur de réactions. Le premier bien sera le moment. Combien de temps nous voulons que les réactions soient collectées. Je ne vais pas seulement programmer le gâchis, mais juste tester les composants. C'est pourquoi nous avons créé cette fois-ci. Et ensuite dans MS pour le réutiliser ici et dans le collecteur de composants. Et la deuxième chose que nous allons utiliser, c'est le filtre. Le filtre est un rappel. Le rappel reçoit une réaction. Nous allons dire que les émoji de ces réactions étaient une réaction que le nom de point emoji. Ce nom est en fait comme ça ici. Ce sera donc le nom du singe. Ces choses peuvent être à bout ou à ficelle ou nulle pour être honnête à 100%, je ne comprends pas pourquoi elle peut être nulle, mais nous allons juste être en sécurité ici. Nous allons dire non emoji, puis nous retournerons faux. Quand le vent, les emojis bizarres n'ont pas de nom. Si cette chose porte un nom que nous allons dire, revenez. Et nous allons utiliser un double bang pour le lancer sur un booléen. Et nous allons dire que les emojis ont montré la carte et cette chose va être montrée. Et nous allons simplement cartographier. Cette chose va être vraie, soit cette chose ne sera pas définie. Si c'est vrai, alors la double banque vraie est toujours vraie. Et si cette chose n'est pas définie parce qu'elle n'est pas affichée sur la carte des motifs, alors cette chose ne sera pas définie. Un double coup d'indéfini va être faux. Nous avons maintenant créé notre collecteur de réactions et notre collecteur de composants. Maintenant, créons une autre variable. En fait, ça va être deux, mais pour l'instant, ce sera juste un. Et cela va s'appeler des fréquences. Ce sera encore un objet. Enregistre donc le numéro de chaîne. Il va s'agir d'un numéro de chaîne d' enregistrement. Cela signifie qu'il s'agira d'un objet avec des clés en tant que flux. Si le nombre est le nombre de fois et que l' emoji apparaît. Donc, ce sera comme si les fréquences comptaient. D'accord ? Ce que nous allons faire ensuite, c'est créer la fonction qui sera en mesure de placer des informations à l'intérieur de ces fréquences. C'est ce que nous allons faire dans la prochaine vidéo. Je serai comme ça. On se voit dans la vidéo suivante. Adieu. 29. Commandement du scrutin Partie 6: Nous avons maintenant notre collecteur de réactions ou notre collecteur de composants. Nous devons maintenant préciser ce que nous voulons faire lorsque nous collectons quelque chose que nous allons créer. Composants. Sur les composants collectent la fonction qu'il va spécifier ce que nous voulons faire lorsque nous appelons une clique, dans ce cas à partir des boutons. Tout d'abord, je dois préciser une chose. Si nous allons chez les personnes non assurées pour créer un auditeur, nous devons faire face à un changement d'allèle. Lorsque nous cliquons sur un bouton. Rappelez-vous les boutons difficiles à annuler et, et Paul maintenant bouton. Nous ne devons rien faire lorsque cette interaction intervient. C'est donc ce que nous allons faire ici. Va dire si l'interaction, en bas, va dire attendre l'interaction. Ce V pour. En gros, nous disons à ces marqués, hé, ne faites rien pour l'instant. Parce que l'interaction du bouton, ce que nous allons réellement faire avec le bouton que nous allons gérer dans la commande Tout. Nous allons créer une méthode de collecte de composants, notre fonction interne ici. Je vais le créer sous le collecteur de composants de ceinture. Désolé, ci-dessous la réaction de build est collectionneur. Je vais créer ces composants collectés. Je vais dire collectionneur de composants, collectionner. Rappelez-vous que nous les avons mis à disposition, puis non collectées. C'est ce qui nous intéresse. Et nous allons recevoir l'interaction entre les composants. C'est la partie déroutante car, désolé, car ces interactions entre composants viennent ici sur notre interaction crée. Et ici aussi, nous ne voulons pas le gérer ici, peut-être que vous allez construire plus de commandes. Vous devez donc les modifier et jeter le fond du bol. Mais pour l'instant, nous allons le faire. Donc, nous allons juste dire, Hé, je ne voulais rien faire avec ce bouton ici que je veux faire quelque chose ici sur les composants. La première chose à faire est de vérifier si l' ID personnalisé du point d' interaction de coupe du composant est égal à annuler. N'oubliez pas l'identifiant client que nous avons indiqué sur le bouton. Nous allons maintenant vérifier si c'est le bas de l'annulation. Voici la partie intéressante. Je vais dire E de l'interaction des composants. Cet ID est différent de celui de l'utilisateur. N'oubliez pas que ces utilisateurs utilisent fermetures afin que nous puissions utiliser des variables extérieures à cette fonction. Il s'agit de l'utilisateur de l'interaction. Donc, si ce n'est pas votre ID de l'ID d'interaction utilisateur , nous allons dire une interaction de composant de poids. Récupère la réponse. Je vais vous expliquer cela dans un instant. Interaction des composants éloignée. Suivi. Je vais dire du contenu. Vous ne pouvez pas annuler. Tirez. L'éphémère va être vrai. De toute évidence, nous allons revenir. Ce que je fais ici, c' est aller chercher le replay. N'oubliez pas que la réponse peut se faire après certains moments. Nous devons donc récupérer la réponse de ces interactions entre composants. Ensuite, effectuez ces suivis. Si je fais cela, ça ne marchera pas. Nous devons d'abord chercher la réponse. Nous devons ensuite donner suite à cette réponse. Ce sont des femmes. Je pense que nous n'en avons pas parlé. C'est une vraie femme signifie que vous seul pourrez voir le message. Si ce n'est pas le cas. Si je suis le, si l'ID utilisateur de l'interaction du composant est égal à mon ID , nous devons faire quelque chose. Nous devons arrêter le collecteur de réactions. Donc ces collecteurs de réactions ont cette méthode de talon et nous pouvons spécifier un récent et nous allons dire que la raison est annuler, tirer. Ce récent sera investi dans votre avenir lorsque nous créerons notre collecteur de réactions et notre fonction. C'est donc la première condition. La première condition lorsque le bouton que nous interagissons facilement le bouton d'annulation. Maintenant, lorsque nous cliquons sur les autres boutons. Nous allons donc dire que si l'interaction des composants que l' iode de Kusto est égal au pôle N, va faire essentiellement la même chose. Laissez-moi copier et coller ça. Au lieu de dire que vous ne pouvez pas annuler ce bol, nous allons dire que vous ne pouvez pas terminer cet automne. Si je suis autorisé à mettre fin au sondage, je vais appeler les méthodes de données du collecteur de réactions. Peut-être pourrait-on préciser ce que je ne vais pas préciser un récent ici. Nous n'allons pas préciser de raison ici. Arrêtez simplement le truc ici. Nous pouvons éventuellement mettre un retour ici. Ce n'est pas nécessaire car cette dernière condition, au fait, je vais l'ajouter quand même. Ok, donc maintenant nous avons nos propres composants collectés. En gros, passons en revue ce que nous avons fait. Nous avons réglé un appel vers l'on collecte une interdiction du collecteur de composants, où la première technologie et si c'est le bouton d'annulation, la pizza le bouton d'annulation, nous allons vérifier si nous sommes autorisé à annuler le ballon. Nous sommes le même utilisateur qui a créé l'interaction initiale de notation de la commande poll. Et puis nous y allons, nous ne sommes pas autorisés. Ensuite, nous allons faire un suivi avec une personne qui a essayé d' annuler le fond et de dire : «  Hé, vous pouvez annuler cette balle. Et si nous sommes autorisés, nous allons simplement augmenter le collecteur de réactions avec cette méthode supérieure. Et il en va de même pour le sondage final. Nous vérifions si l'utilisateur qui a créé le sondage n'est pas un utilisateur. Nous allons juste dire que vous ne pouvez pas mettre fin à ce sondage. Et si nous sommes l'utilisateur de cette grille au pôle, les réactions de l'État romain ont collecté ce stock sans aucune raison. Ce sera comme un estab normal comme si le temps a expiré, mais simplement en cliquant simplement sur le bouton. Bon, donc c'est tout. Dans la vidéo suivante, nous allons ajouter les réactions. J'espère que ça vous plaira. On se voit dans la vidéo suivante. Adieu. 30. Commandement du scrutin Partie 7: D'accord. Il est temps d'ajouter que les réactions pour ce rapport vont juste attendre les réactions au message. De toute évidence. Pour cela, nous allons créer une autre fonction. Ce sera donc quelque chose comme les réactions de const. Et ça va être synchronisé. C'est pourquoi nous sommes pondérés. Que ce soit un dysfonctionnement va être une jolie scène. Nous allons juste dire pour l'avance, j'égaux à 0, je suis inférieur aux options brillées longueur de point I plus, plus. On va juste attendre. Le message qui réagit. Options affichées de l'IA. UN MOOC. C'est ça. Nous allons simplement ajouter chaque réaction des options brillées au message. Message. Est-ce que cette méthode réagit que vous passez l' emoji et c'est tout. Nous réagissons simplement au message. Maintenant, ajoutons du fil. Allons courir en cas de sourd, désolé. Faisons en sorte que nous ayons les réactions du message de guilde. Nous pouvons réagir. Allons ici et créons un sondage. Temps de minuscules secondes. Ajoutons une option trois C. Pourquoi pas une option pour d Phi ? Ceci, vous pouvez voir que nous avons 1234. Ce sont là les réactions et nous pouvons évidemment y réagir. Maintenant, la dernière étape consistera à collecter toutes ces réactions après l'expiration du délai ou après avoir cliqué sur le bouton de sondage maintenant. Commençons par le faire. Nous allons créer une réaction On, se termine sur les réactions. Encore une fois, cela va être une fonction. Ajoutons ça sur le sens de la réaction. Ce que nous allons faire ici, est prendre en charge le collectionneur de réactions. Nous allons passer un rappel asynchrone. Et ce rappel asynchrone comporte deux arguments. Le premier est celui collecté. Il s'agit essentiellement des entrées collectives qui vont être une carte et une version récente. Rappelez-vous, quand nous avons fait collecter les composants et nous l'avons ajouté en haut et ces derniers récents ici. C'est la raison pour laquelle nous allons recevoir ici. Maintenant que nous avons toutes les réactions sur ces cartes collectées, nous devons voir celle qui a la fréquence la plus élevée. C'est la première chose que nous allons faire. Nous allons dire que la touche max soit une chaîne vide et que le nombre maximum soit 0. Nous allons donc initialiser ces deux variables. Je vais dire pour const, clé et valeur des entrées de points collectées. Il existe une méthode pour ces collectifs, qui est rappelé qu'il s'agit d'une collection qui est essentiellement une carte fantaisie. Il a donc ces méthodes d'entrées. Nous allons dire que si le nombre de valeurs est supérieur au nombre maximal, clé maximale est égale à c0 et le nombre maximum est égal à value.com. Ok, parfait. Maintenant, rappelez-vous que nous avions ces réseaux de fréquences, donc maintenant nous allons l'utiliser. Après cela, nous allons économiser les fréquences d' équipe qui seront égales à value.com. clé est essentiellement l'emoji et la valeur est une réaction de message. Nous pouvons donc rechercher ce type. Nous pouvons, laissez-moi voir si nous pouvons le faire. Réaction par message. Voyons voir. Nous pouvons exprimer la réaction du message d'aujourd'hui. Nous pouvons essayer de l'importer et il suffit de cliquer sur Ctrl ici. Et c'est le cas. Il va passer à la définition de cette réaction de message. Comme vous pouvez le constater, nous avons ce compte public. Nous avons ce message que l'utilisateur supprime la récupération. C'est donc tout ce que cette réaction au message a. L'une des choses importantes ici, c'est le compte. Nous voulons connaître le nombre de réactions de ce message et évidemment la clé de l'ECMO. Maintenant que nous connaissons la clé maximale, le Mexique, souvenez-vous de l'ECMO. Maintenant que nous connaissons ces informations, nous pouvons obtenir les informations, toutes les informations du gagnant. Il suffit d'aller aux options brillées et de trouver, trouver l'élément où l'emoji est égal à la touche maximale. Emoji est incroyablement similaire à max key. Nous pouvons en fait renommer ces deux emojis les plus fréquents, c' est-à-dire qu'ils sont plus grands. Nous avons les emoji les plus fréquents est égal à emoji, alors c'est le gagnant. Maintenant, nous pouvons commencer, nous pouvons commencer à modifier notre intégration. Rappelez-vous que nous l'avons fait, alors que notre intégration , Voici nos embarcations, nous pouvons commencer à modifier cette chose. La première chose que je vais dire, c'est la couleur. Je veux qu'ils soient verts parce que le pôle et la dette et quand quelque chose et avec succès, la couleur est généralement verte. Et la description sera à moitié vapeur et le gagnant va utiliser une interpolation de cordes. Nous saisissons cette valeur. La dactylographie m' aide en fait avec ces points d'interrogation car le gagnant peut également être indéfini. Si ce n'est pas défini, ce sera un cas bizarre. Probablement. Nous allons régler cette affaire à l'avenir. Pour l'instant. Soyons satisfaits de ça. Et je vais également réinitialiser les champs. Les champs vont être un tableau vide. Maintenant, je le veux aussi, j'ai redémarré les champs, mais je veux également voir la tension de chacune des options. Je vais juste dire les options affichées. Maintenant, je vais avoir la valeur et l'emoji. Je vais dire intégrer ce champ d'application. Je vais enregistrer que le nom sera celui de Bode pour la valeur. Ce sera les textes du nom. Et je vais dire les fréquences d'emoji à une chaîne. Parce que c'est un nombre pour le convertir en force. Et c'est tout. Maintenant, nous pouvons voir les votes pour chaque option. La prochaine étape consistera donc à supprimer toutes les réactions du message. Nous avons juste besoin de dire que les réactions qui suppriment, c'est à vous de décider. Vous pouvez laisser les réactions si vous le souhaitez, mais je veux les supprimer. La dernière chose sera un message de poids. Eh bien, ce n'est pas une dernière chose que nous allons faire, mais juste pour voir quelque chose sur Discord, nous allons dire l'édition des points de message et nous allons dire « intégrer ». Les composants incorporés vont être un tableau vide. Nous ne voulions pas ajouter de boutons ici. Pour l'instant, ajoutons une étape supplémentaire ici. Nous allons enregistrer les notifications DM égales à true. Nous allons dire un moyen de poncer les utilisateurs. Et nous allons dire votre sondage. Et nous allons ajouter le message, cette URL, ce message, cette URL, puis le succès complet. Je pense que c'est tout ce dont nous avons besoin pour l'événement du collecteur de réactions. Essayons donc de tester ces choses maintenant. L'heure, disons 15 secondes. Option B, le sondage a été créé avec succès. Nous avons ces deux options. Je vais voter pour. L'option de. Je vais attendre quelques secondes pour voir ce qui se passe. C'est donc ce qui se passe. Incorporer l'habitat de l'intestin. Il est dit maintenant que le polaire est terminé et que le vainqueur, il est ce bateau pour un, un seul vote et les votes pour B. Et c'est tout. Je pense que nous avons fait un excellent travail pour cela. Et remarquez que j'ai ce message indiquant votre sondage et que, si je clique sur ce lien, il va me lire ce message ici. C'est tout pour cette vidéo, nous devons toujours manipuler ces boutons ici. Nous allons le faire dans la vidéo suivante. Adieu. 31. Commandement du scrutin Partie 8: Bonjour et bienvenue. Maintenant, faisons encore une chose. Prenons en charge l'affaire où nous annulons le poteau. Parce que si nous allons ici et que nous disons Paul, disons dix minutes, options a et b. Et supposons, d'accord, j'ai recueilli les réactions. Je veux savoir, je veux mettre fin au scrutin. Je vais juste mettre fin au scrutin maintenant. Ça va marcher. Il va m'envoyer le message à 10h5 pour faire quelque chose de spécial ici car il ne fait que suivre le flux des réactions et de l'événement. Lorsque nous avons un sondage récent et des raisons annulé, nous voulons faire quelque chose, être amis. Nous allons dire ici que le récent u équivaut à annuler un sondage. Je vais dire que les intègrent la couleur rouge. Et ensuite, je vais définir la description sur quelque chose comme ça. Ball West a annulé le jeu, défini le pied de page sur Null. Supprimez le pied de page. C'est ça. Également. J'annule le scrutin. Je ne veux pas simplement m' envoyer un message au SM parce que c'est idiot. Je sais déjà que j' annule le scrutin. Je vais ajouter une condition ici. Vous avez récemment changé que d'annuler, les extraire, de m'envoyer ce message aussi. Voyons ce qui se passe. Si je dis Paul, c'est l'heure. Je suis dix minutes, A et B par opposition, j'ai fait quelque chose de mal. Je ne voulais pas mettre A et B et C, alors je clique simplement sur ces annulations. Et maintenant, il est dit que ces sondages West ont annulé des bateaux pour un bateau pour moi. Si vous souhaitez les supprimer également, il vous suffit d'ajouter le champ, de définir les champs comme étant vous suffit d'ajouter le champ, de définir les un tableau vide ou null où que vous soyez. Et c'est tout. C'est ce vous devez faire pour les supprimer si vous le souhaitez. C'est tout pour l'instant. Nous avons tout sur place, je pense. Mais il y a encore une prise, une autre affaire H. Si vous souhaitez déployer cela en production et que vous êtes une entreprise sérieuse et que vous avez une assurance qualité, vous ne le transmettrez pas. Je vais vous dire pourquoi il y a un bug dans notre application en ce moment. Si je dis sonder une seconde et deviner ce qui se passe, ça va échouer. Si je fais N pole maintenant, ça ne marchera pas. Cela va dire que ces interactions échouent. Si je dis encore une fois, 1 seconde, et B. Maintenant, c'est encore pire. Il ne répond pas parce que j'ai probablement quelque chose. Oui, l'application se bloque, vous pouvez voir Impossible de lire choses de propriété sur la lecture fine sur la chaîne. Si je vais ici, on utilise ça juste pour drainer la sculpture de réaction et l'événement en disant : Hé, cette chose n'a pas fréquences et cette chose n'est pas définie. Je n'ai probablement pas eu le temps pour les entrées collectives de la clé et de la valeur. Maintenant, cette chose n'est pas définie. Nous avons de nombreuses options ici. N'oubliez pas que nous avons ajouté une certaine valeur moyenne. Définissez le corps maximum sur 16. Mais quand il s'agit d'une seconde, nous ne pouvons pas changer dynamiquement ces derniers pour qu'ils soient 51020, peu importe, car nous ne savons pas à l'avance ce que l'utilisateur va mettre. Si ce sera des secondes, des minutes, des heures. C'est juste déclaratif, n'est-ce pas ? Nous n'avions donc pas le moyen de le savoir à l'avance. Nous avons deux options ici et nous devons prendre une décision. La première est de voir si l'heure est ici, désolé, pas cette fois. Le mot qu'il a dit, le timing MS, est inférieur à un certain seuil. Nous pouvons dire que le sondage est trop court, nous avons besoin de plus de temps pour que cette chose réagisse, pour que les messages soient dans le message, que les réactions soient dans le message. C'est une option. La deuxième option, qui, à mon avis est un peu plus compliquée, mais c'est mieux car cette fois en millisecondes. Cela dépend du nombre de réactions que vous ajoutez. Si vous n'avez que deux réactions , cinq secondes suffisent. Mais si vous ajoutez dix réactions, cela prend peut-être un peu plus de temps. Vous devez donc placer le seuil pour être Hager, vous devez augmenter le seuil. Allons donc ajouter une autre variable appelée trop vite. C'est le nom de ma variable. On va appeler ça trop vite. J'ai appris à faire des choses intéressantes selon que trop vite est faux ou vrai. Nous allons définir par défaut cette variable plus rapide pour être fausse. Dans le, où est-il, les réactions. Et nous allons, en dessous de cette boucle for-loop, disons trop vite, est égal aux options affichées. Doublement. Différent des touches de points d'objet. fréquences. Cette langue. Fondamentalement, les fréquences sont un tableau qui doit avoir la même longueur que les options affichées. Si le poly se sécurise trop vite , ce ne sera pas vrai. Les fréquences ne seront pas de la même taille que celle des options affichées. Si c'est vrai, nous voulons faire quelque chose juste en dessous de cette chose. Je vais dire trop vite, trop vite. Ensuite, nous allons dire intégrer cet ensemble Description. Je vais dire que le poteau est trop faible pour que les réactions y surviennent. Parce que vous voyez, ils augmentent. Nous allons définir la couleur pour qu'elle soit rouge parce que quelque chose de mauvais s'est produit. Je vais définir le pied de page pour qu'il soit nul. Si c'est trop rapide, sinon nous voulons faire ce que nous avons fait ici. Ce truc ici, ça va être dans la clause autre. Ici aussi, je veux, je ne veux pas envoyer le message rapidement c'est vrai. Si ce n'est pas trop rapide. Et le récent sondage n'est pas annulé, DM notifie est vrai. Alors envoyez-moi un message au DM. C'est essentiellement que nous devons encore faire une autre chose à ce sujet. Essayons tout de suite. C'est donc génial. Le sondage avec 1 seconde. Voyons voir. Bien que les réactions aient été ajoutées, il fixe que le temps de pôle est trop bas pour que les réactions y soient. Il y avait une condition de course là-bas. Faisons donc cela avec d'autres options comme celle-ci. Je pense que c'est suffisant. D'accord, 1 seconde et je n'ai pas le temps de réagir, mais ça ajoute toujours les réactions. C'est toujours dans la réaction. C'est donc une chose que nous devons éviter. Et c'est très simple à résoudre. Nous passons simplement à la section Ajouter des réactions. Rappelez-vous qu'il y avait cette boucle for-loop qui, si elle est trop rapide pour aller trop vite, alors revenez à l'intérieur pour ajouter plus de réactions à cette chose. Recommençons ça. 1 seconde, A, B, C, D. Je pense que c'est suffisant. 12, c'est trop rapide et maintenant je n'ajoute plus de réactions. Je dois augmenter le temps de cette chose. Maintenant, je pense que nous avons tout en place pour que ce sondage fonctionne. Vous pouvez maintenant ajouter un poteau. Le temps peut aller de 1 à 16 ans. Si j'ai essayé 17 minutes, ça va déjà se plaindre. Entier b en entrée de un à 60. Je dis 24 heures, A et B. Cela va marcher. En fait, cela va marcher. Si c'est le cas, vous utilisez cette commande en production, vous allez travailler à condition ne pas arrêter votre processus. C'est également une chose intéressante que vous devez savoir. Nous n'allons pas faire cela, mais je voulais simplement faire des commentaires là-dessus. Lorsque nous déployons une nouvelle modification, lorsque nous effectuons un nouveau déploiement de notre code, le code va probablement être remplacé et le processus va être fermé. Cette chose ne fonctionnera pas parce qu'il n'y a pas de processus qui écoute cette chose. Il va traîner pour l'éternité. C'est là qu'il existe plusieurs stratégies de déploiement qui existent dans plusieurs développements. bleu, le vert, les catégories et tout ça, quoi qu'il en soit. Ce n'est pas quelque chose que nous allons voir, mais il suffit de penser à cela. Que si vous comptez effectuer un nouveau déploiement et qu'un sondage n' est pas terminé. Et vous rencontrerez un problème si vous essayez de remplacer votre ancien code par un nouveau code. Mais encore une fois, ce problème n'est pas facile à résoudre. C'est pourquoi il y a des gens spécialisés dans ce genre de choses. Et la malédiction sera très, très complexe si nous essayons d' être aussi parfaits là-dessus. À propos de ça, c'est tout. J'espère que ça vous plaira. On se voit dans la vidéo suivante. Adieu. 32. Commande API Partie 1: Nous avons terminé notre sondage. Ajoutons maintenant une autre commande qui va utiliser une API. Pour les appels d'API. Nous allons utiliser l' axe du fil axiom pour installer ces dépendances. Je pensais, eh bien, ce que l'on peut utiliser Frank échantillon, contrairement aux animaux. Je vais donc utiliser cette API Deacon, qui est l'API non officielle de mon animal East. Et plus précisément, nous allons obtenir un animateur aléatoire à partir d'ici. Nous allons donc passer un appel GET, obtenir des demandes à ce point de terminaison ici. Vous pouvez voir que cette chose peut renvoyer 200, vous avez lu les retours avec succès et animer ou 400 en cas de mauvaise demande ou quelque chose comme ça. C'est leur exemple de réponse. Vous pouvez tout couvrir et vous pouvez voir toutes les choses qui sont retournées ici. Vous pouvez voir qu'il renvoie l'URL, peut-être qu'il redirige vers mon animal, au moins .com ou autre. Le titre du carrelage japonais. Quoi d'autre ? Les plaies de type, épisode, épisodes, IV, C'est Erin ne sont pas de durée. Nous avons beaucoup de choses ici. Ajoutons un nouveau fichier appelé get random animate. Il suffit de copier une chose ici. Modifions ces éléments aléatoires et n'oublions pas de les ajouter ici. Le nom de cette commande va être « get random element ». On va juste dire qu'il retourne un élément aléatoire. Maintenant, nous allons également déclarer une URL d'animation aléatoire constante, qui sera cette URL ici. voici un, il suffit de le copier, de le coller. Vous y allez. Maintenant, nous allons utiliser des axes et nous allons utiliser x pour former la réponse, de sorte que la réponse soit quelque chose qui nous donne déjà ces informations, les informations non pertinentes que nous voulons d'ici. Je viens de créer ce type et je vais juste copier et coller parce que DC fait beaucoup de saisie et je ne voulais pas me concentrer sur la frappe ici. type get random animal response va avoir une propriété appelée data. Et ces données, ou il y aura beaucoup de choses ici. Je n'ai pas tout inclus. Si vous souhaitez inclure tout ce qui vient d'être ajouté à ce type. Modifiez le sang que nous allons faire ici dans ces commandes. Et c'est tout. L'URL, le titre, le titre et le Japon, la marée, les épisodes. Synopsis classement des images. En fait, je vais juste utiliser un Web p ici. Supprimons donc cette propriété ici. L'URL de l'image, qui sera constituée de chaînes, score en fonction des durées. C'est l'évaluation des genres, thèmes, beaucoup de choses. Ce n'est pas tout ce que ces API peuvent renvoyer. Il peut rendre les pires choses. Je vais simplement les utiliser dans le cadre de cet exemple. Enlevons ça. Et la première chose que je vais faire, interaction de poids d' E qui est favorable. Permettez-moi donc de vous expliquer pourquoi j'utilise ces différents noirs parce que je pense que nous ne l'avons pas encore utilisé. Mais nous utilisons quelque chose de similaire ici sur l' interaction du bouton qui a différé la mise à jour. Le troisième pli signifie essentiellement la même chose. Donc ça veut dire, hé, je ne veux pas répondre à ces moments parce que l'API appelée peut dire, eh bien, si elle échoue, c'est dommage, mais ça peut être lent parce que les serveurs sont lents parce qu'il y en a aussi beaucoup de trafic ou autre. C'est pourquoi nous en avons besoin différemment. Par défaut. Vous pouvez. Si vous prenez plus de trois secondes pour répondre, vous aurez des problèmes, n'est-ce pas ? Alors, mais mon garçon, fais des problèmes d'écharpe. Donc, pour différer l'application plus de trois secondes, vous devez les utiliser pour le sang. C'est donc un mécanisme pour dire, peut-être, peut-être que je peux prendre plus de trois secondes pour répondre. Attendez-moi. Ensuite, nous allons obtenir la réponse de l'appel d'API. Nous allons donc utiliser des axes pour cela. Rappelez-vous quand les axes de pierre vont dire accès point get, ils s'attendent à un argument. Et le premier argument auquel il s'attend, réponse, le type de réponse. C'est le cas, le type de données de la réponse qui va obtenir des données aléatoires sur la réponse animale. Maintenant, cela va être une fonction, il faut donc passer quelques arguments. La première est l'URL d'animation aléatoire. Le second est un objet options. Il peut être aussi complexe que vous le souhaitez. La seule chose que je veux, c'est la réponse la plus facile à transformer. Cette réponse va être de type n'importe lequel car il s'agit de JSON. Je vais dire que Jason constant est égal à JSON.Parse response rag. Maintenant, c'est de type. Donc je vais juste dire, Hé, je veux que ce soit de type avoir des anomalies aléatoires, puis retourner JSON ça. Je sais. Cela peut être un peu compliqué car la documentation de l'axe n'est même pas claire. Mais ensuite, nous essayons d' expliquer ce que j'ai fait ici. Axis obtient, j'ai besoin de passer un certain type. Le genre sera celui que je retourne ici, Ok, donc ce type de retour doit être le genre de cette chose. Ici, j'attribue le type, le JSON.Parse parce que c'est la réponse brute. Il va avoir ces données avec toutes ces choses. C'est pourquoi je dis, Hey, je veux que ce JSON après l' analyse soit cette fois. À partir de là, je vais juste retourner les données JSon. Une partie de cette réponse est qu'un axe répond avec ce type ici. Voici la partie déroutante d'un battement abîmé, confus. Maintenant, la réponse comporte de nombreux éléments tels que le café, les données, les en-têtes, les requêtes, le statut et les statistiques standard. C'est celui qui est intéressant pour nous car les données vont contenir toutes ces choses ici toutes ces choses que nous avons spécifiées dans notre type. Je vais tirer parti de la réponse. Je vais déconstruire les données. Ici. Je vais juste déconstruire beaucoup de choses. Titre en images japonaises. Les images sont un objet. Alors ici, je vais juste déconstruire le web B, qui est encore une fois un autre objet que je vais déconstruire l'URL de l'image. Nous pouvons déconstruire plus de choses comme le classement, l'URL, un synopsis de type. Ceci permet de tatouer le score obtenu par la note, la durée. Les genres. Je pense que nous savons une chose. D'accord, nous avons donc déconstruit toutes ces informations à partir de la réponse. Dans la vidéo suivante, nous allons en fait créer l'Intégrer et répondre avec l'émetteur. J'espère que cette vidéo vous a plu. On se voit dans le prochain. Au revoir. 33. Partie 2 de commande de l'API: Bonjour et bienvenue. Maintenant, nous n'avons plus qu' à monter le Embed, ce qui est la partie facile. Je pense. La clarté consiste à intégrer la variable. Appelez cela un nouveau message intégré. Rappelez-vous deux méthodes importantes, gambit du score point js. Définissez ensuite le titre. Cela sera égal à l'URL du titre. Il sera égal à l'URL que nous déconstruisons ici. Très bien. Quoi d'autre ? Nous pouvons définir l'image comme URL de l'image. Et on peut fixer les deux premiers. Le nom peut être le titre en japonais. La description peut être le synopsis. Et nous allons ajouter plus d'informations. Mais pour l'instant, répondons. Modifions la réponse. Que devons-nous faire ? Ne répondez pas, mais modifiez la réponse. Pourquoi est-ce que c'est ? Eh bien, la raison est que nous avons renvoyé la réponse afin que cela puisse prendre plus de trois secondes d'excédent. Nous devons donc maintenant modifier la réponse lorsque nous le faisons, au lieu de simplement rejouer. Allons courir sourd déchirant. J'ai déjà testé cela. Courez. La commande get random animate. Je prends ces animaux. C'est l'auteur, qui est le titre et les DC japonais. Il s'agit du titre avec une URL. Donc, si vous cliquez dessus, il vous redirigera vers mon animal vous pouvez probablement voir qu'il vous redirigera vers mon animal. Est-ce que c'est atteint ? La description de ces intégrations, le synopsis, l'image sera bien celle renvoyée par l'API. Nous voulons ajouter plus d' informations car nous avons plus d'informations disponibles ici pour cela, allons créer juste une petite fonction d'aide pour ajouter des champs. Je vais appeler ce champ de fonction. Cela va recevoir un champ qui sera une chaîne et une valeur qui sera une chaîne ou un nombre. Ce que nous allons faire, c'est dire que si la valeur existe, la valeur existe. Nous allons prendre l' InBev et ajouter le champ. Le nom sera le champ et la valeur sera une chaîne de valeur point deux car n'oubliez pas qu'il peut s' agir d'un nombre ou d'une chaîne. Donc, s'il s'agit d'une chaîne à chaîne ne fera rien. S'il s'agit d'un nombre, il va simplement convertir la chaîne. C'est vrai, on disait : Hé, je veux que ça soit en ligne. Voici une chose intéressante. Peut-être avez-vous déjà pensé à cela, mais regardé que nous faisons ici une condition d'affirmation disant evalue, pourquoi nous faisons cela. Eh bien, nous sommes en train de dire : Hé, tout peut aller bien ? Mais ce n'est pas vrai. Je l'ai peut-être vu, et c'est purement expérimental. Et c'est quelque chose qui n'est pas détaillé dans la documentation. Mais il se peut que, par exemple, score au lieu du nombre soit non. Au lieu de cela, nous pouvons le faire, nous pouvons certainement faire ce nombre ou null. Mais encore une fois, je dois chauffer l'API plusieurs fois pour voir toutes les choses qui peuvent être nulles ou même indéfinies. C'est donc quelque chose qui a craint cette API. Ce n'est pas de notre faute, c'est le pli API qui ne spécifie pas ce qui peut être nul et ce qui ne peut pas être nul. Mais vous pouvez certainement faire quelque chose comme ça. Ce sera plus correct. Ce sera plus correct, mais je ne veux pas toucher l'API plusieurs fois juste pour voir ce qui est défini et ce qui n' est pas défini. Au lieu de le faire, je les fais simplement dans le code, disons, Hey Eve, seules les valeurs présentes. Parce que n'oubliez pas que ces TypeScript vont être compilés en JavaScript. Et lorsque vous exécutez ces valeurs, ce n'est pas quelque chose qui peut venir sous la forme d'une chaîne ou d'un nombre, cela peut venir maintenant. C'est juste que nous voyons dans les claquettes. Bien. Hé, nous savons que c' est une chaîne ou un nombre, mais dans le monde réel, ils peuvent être nuls. C'est donc une petite explication à ce sujet. Maintenant, faisons quelque chose. Appelons cette fonction f. Avec le rang de champ. Nous allons passer le rang. Appelons ça avec le type qui va passer le temps. Appelons ça avec un score. Score. Et vous voyez que cela devient très facile car nous définissons cette fonction. Puis il a marqué par. Ensuite, nous avons la note. On peut aussi ajouter quoi d'autre ? Vous pouvez ajouter cette durée. Nous en avons. Nous devons également ajouter un tatouage de statut. Permettez-moi de l'ajouter ci-dessous marqué par. Nous avons maintenant utilisé toutes ces informations. Nous n'avons que des genres et des thèmes qu'ils sont matriciels, donc nous devons le convertir en chaîne, et c'est assez facile à faire. Nous avons juste besoin de le faire. Nous allons dire des genres, une corde ou quelque chose comme ça. Ce sera des genres qui cartographient, cette carte. Nous allons obtenir le nom et l'URL. Et nous allons utiliser un lien hypertexte du fléau est slash builders. Cette chose s'attend essentiellement à ce que le premier argument soit les textes qui vont être affichés, qui dans ce cas, ce sera le nom. Et le deuxième argument est l'URL. Nous allons faire de même, mais avec les thèmes. Thèmes. Thèmes, thèmes, boissons est égal à cela. Maintenant, nous ajoutons simplement les champs indiquant les genres, qui vont être la jaunisse, une chaîne. Et il s'agit toujours d'une carte. Nous devons donc nous joindre à cette chose et nous pouvons rejoindre la base des achats ou par de nouvelles lignes, je vais le faire par de nouvelles lignes. Je vais faire de même, mais avec les thèmes. Thèmes, force. Je pense que c'est fini. Allons ici chercher un animal aléatoire. Encore une fois, ça prend son temps. À l'application n'a pas répondu probablement parce que c'était le serveur qui était en cours de redémarrage. Et maintenant, nous avons cette chose ici. Le titre en japonais, je ne comprends pas qu'il s'agisse d'un titre. Et vous pouvez cliquer dessus et il lira reg en raison de mon animal est le synopsis du type. C'est dire que le propriétaire est fini de diffuser des tatouages, lire des thèmes de durée et de regarder ça. C'est intéressant parce que cette chose ici n'a pas la partition, la partition par genre. Aucune de ces informations n'est donc présente. Et nous n'avons pas eu d'erreur car nous avons ajouté ces valeurs IV. Vous pouvez constater que dans le monde réel ces informations ne peuvent pas être présentes. Et il vaudra mieux que vous puissiez faire quelque chose comme ça. Mais encore une fois, la documentation n'est pas claire et je ne veux pas trop lire là-dessus. C'est ça. Vous savez maintenant comment créer des commandes appelées API. L'important ici est ces interactions qu'avant de répondre. Parce que si vous ne faites pas cela, vous aurez des problèmes. De plus, cette chose peut échouer. Axial, peut retourner peut-être 500 ou quelque chose comme ça. Alors ce sera génial si vous le pouvez. Peu d'améliorations pour gérer ces cas. Cette documentation dit : Non, ils reviennent toujours en écriture manuscrite ou 400. Et si vous faites une mauvaise demande ou quelque chose du genre, mais ce n'est pas vrai. Il y a de la documentation qui ment que vous pouvez avoir un 500, vous pouvez avoir 4142, peu importe, peu importe, parce que rien n'est parfait dans le monde du logiciel. Vous devez donc également voir ce cas où l'appel API lui-même échoue. C'est ça, c'est tout. J'espère que cette vidéo vous a plu. On se voit dans le prochain. Au revoir. 34. Commandes d'aide: Bonjour et bienvenue. Nous allons maintenant ajouter la dernière commande, qui sera à la commande qui définit les sous-commandes. Ce sera une commande d'aide. Donc, en gros, ce que nous allons faire dans la partition Est, quelque chose comme une barre oblique. Et cela nous montrera une liste de sous-commandes où nous pourrons obtenir plus d'informations. Comme par exemple, Une autre information sur le sondage, alors je dirai dans cette cour que c'est une aide luxuriante du sondage Mme Slash. Nous allons le faire pour chaque commande ici. Je veux dire, nous pouvons, mais nous allons ajouter une propriété nuptiale appelée Aide dans le type de cette commande barre oblique. Nous allons donc ajouter quelque chose comme ça, aider la force. Maintenant, si je l'inclue dans n'importe quel côté, quelles que les commandes que je veux, alors cela s' affichera dans cette liste. Et si ce n'est pas le cas, ça ne se montrera pas. Nous allons le faire de manière très intelligente. Tout d'abord, créons une aide avec ce fichier ts. Et ce que nous allons faire ici va être un peu différent. Nous allons faire ici, c'est créer la fonction qui va recevoir un argument d'aération d'aide. Et nous allons voir ce genre de choses dans un instant. Et cette fonction va renvoyer une commande barre oblique. Commençons donc à le faire. Disons d'exporter const, commande d'aide. Cela va recevoir un assistant A. Et nous allons voir quel type de sphincters. Et cela va renvoyer une commande barre oblique. L'assistant a. Définissons ce type ici. Type d'exportation, aide. Il va s'agir d'un tableau. Ce tableau va être un tableau d'objets le nom de la sous-commande, qui sera une chaîne. Description de la sous-commande, qui sera une chaîne. Et une aide de sous-commande d'aide, qui sera également une chaîne de caractères. Ok, donc maintenant, nous allons utiliser ce type de raid d'aide. Et en gros maintenant ce que nous allons faire, faciliter le fichier index.js. Nous allons faire un petit changement ici. Premièrement, nous n'allons pas exporter cette chose tout de suite. Nous voulons d'abord obtenir ces aides en effectuant une transformation vers les commandes barre oblique. Ensuite, nous allons appeler cette fonction de commande d'aide. Et nous allons le pousser vers cette barre oblique. Et nous allons exporter cela à la fin. Donc, la dernière étape, nous pouvons le faire maintenant. Il va exporter ces commandes obliques. Définissons maintenant l'aide ou le but. Ces commandes d'aide a vont être une barre oblique. Nous allons d' abord filtrer les commandes qui n'ont pas de propriété de santé. Nous allons dire commandement. Cette chose va me donner uniquement les commandes qui ont l'aide de la propriété. C'est pourquoi j'utilise ces deux opérateurs bancaires qui frappent l'opérateur pour filtrer ces choses. Ensuite, je vais dire « Dot Map ». Et je vais avoir le commandement. Et l'aide. Je vais retourner un objet. Et cet objet va avoir le nom de la sous-commande, qui sera le nom du canal de commande. Description de la sous-commande, qui sera la commande de cette description. En fait, laissez-moi taper cette chose ici. L'aide du sous-commandement, qui va être ainsi, aide Roberta ici. Greg, maintenant, il se plaint pourquoi ? Parce que rappelez-vous ces choses, un acier m'a permis de voir le genre de choses. Vous pouvez voir que le type de cette chose est une chaîne de sous-commande, une description de sous-commande de la sous-commande chaîne maintenue dans la chaîne ou sur le Rechercher. Dans notre assistant, un type. N'oubliez pas que cela n' est pas indéfini. Pour corriger cela dans le filtre. Ici, on peut dire commande oblique de commande oblique. Ce que je fais avec ces exigences exige essentiellement que chaque propriété du type que nous passons est obligatoire. Cela convertira ces choses ici en quelque chose comme la même chose, mais sans cette propriété pour être facultative. C'est ce que la poussière requise dans TypeScript. Maintenant que nous avons cela, nous devons obtenir le commandement de l'aide. Je vais dire que la commande d'aide va être une commande d'aide. Nous passons une pluie d'aide. Enfin, nous allons dire que les commandes obliques qui ont aidé à entrer en jeu. Ensuite, nous allons l'exporter comme dernière étape. Maintenant que nous avons un filtre de ces commandes sans la propriété help que nous avons passé avec succès taux d'assistance à la commande help. Commençons à construire notre commande d'aide. Rappelez-vous donc qu'ils doivent renvoyer une commande barre oblique. Mais avant de faire cela, nous allons faire quelque chose de très intelligent, à savoir construire une carte d'aide. Nous avons fait quelque chose de similaire dans la commande poll où nous construisons une carte emoji ou quelque chose du genre. Eh bien, ici, nous allons faire essentiellement la même chose. Nous allons créer une carte où les clés sont le nom de la sous-commande. La valeur est l'aide, c'est l'aide à renforcer l'aide du sous-commandement. Je vais prendre le tableau d'aide. Je vais le réduire. Et le type, le résultat de cette chose va être un objet où la clé est une chaîne et la valeur est également étrange. Maintenant, je vais passer un rappel. Et le deuxième argument est la valeur initiale, qui va être un tableau vide. La carte sera cette matrice ici. Ensuite, le deuxième argument est la valeur actuelle que vous pouvez voir avec le nom de la sous-commande, description de la sous-commande et l'aide des sous-commandes. Je vais déconstruire cette chose et je vais obtenir le nom de la sous-commande et l'aide de la sous-commande. Et je vais faire ici est essentiellement dire que la carte du nom du sous-commandement est égale à la santé du sous-commandement. Et rendez-les. Maintenant que nous avons construit, construit cette carte, nous devons renvoyer cette commande oblique, n'est-ce pas ? Je vais donc retourner un ordre. Cette commande va être un IIFE. Si vous ne vous souvenez pas de ce que c'est. Il s'agit d'une expression de fonction immédiatement appelée. Donc, quelque chose comme ça, quelque chose comme ça. Il s'agit d'un IIFE. Ces fichiers IIFE doivent revenir est le constructeur de commandes Lash. Je vais déclarer la commande slash égale à nu is slash command builder. Je vais définir le nom pour aider. Je vais définir la description pour obtenir de l'aide pour une commande spécifique. Maintenant, je vais obtenir cette information. Chaque tableau de la baie. Je vais dire que pour chacun, je vais obtenir le nom, la description. Ce que je vais faire de cette information Ysaye, c'est commande slash, cette sous-commande. Je dois construire le sous-commandement. Et pour construire la sous-commande, je vais juste dire sous-commande que SetName. Et puis je vais définir le nom sur cette variable ici, name , qui libère le nom de la sous-commande. Et ce sera le nom de la sous-commande de description de sous-commande, puis définira la description comme description de sous-commande. Cette astuce, nous avons ajouté des sous-commandes pour toutes les commandes qui ont l'aide de la préparer. Enfin, il suffit de retourner cette dernière commande. Maintenant, les années 80 se plaignent parce qu'il approprié de courir vers l'est pas ici. Nous allons donc simplement ajouter la fonction run, qui va recevoir une interaction. Et puis je vais dire que nous aider à nous former sera égal pour aider à cartographier les adoptions d'interaction. Cela reçoit des sous-commandes. Et c'est tout. Nous avons juste besoin de répondre maintenant à la direction qui répond avec le contenu. Le contenu va nous aider à rêver. C'est ça. C'est tout ce que nous devons faire. Afin d'ajouter dynamiquement ces commandes d'aide aux commandes qui possèdent cette propriété. Par exemple, permettez-moi d' ajouter une propriété en entendant le sondage car cela peut être plus complexe. Dans l'aide, nous allons ajouter du texte comme une commande. Pour créer un sondage dont le temps est compris entre 160 secondes, minutes, heures. Alors que jusqu'à dix options. Vous pouvez également, éventuellement, ajouter un titre, une description de titre, une description du titre, et si vous souhaitez ou non être averti VIA DM lorsque le pôle se termine. Je pense que c'est un texte assez raisonnable pour notre commande d'extraction, n'est-ce pas ? Maintenant que cette chose a une commande d'aide, nous sommes désolés, une propriété santé. On peut être sourd. Je suis, voyons ce qui se passe. Je les ai achetés en ligne. Allons donc taper de l'aide. Maintenant, vous pouvez voir que nous avons de l'aide au sondage. Maintenant, il est écrit commande pour la notation que j'ai tirée qui peut avoir un temps entre tous les textes que nous venons de définir. Ajoutons-en un pour le bonjour. Peut-être ajoutons-en un pour les informations utilisateur car le jaune est trop simple. Il va y avoir de l'aide. Cette commande renvoie les informations de l'utilisateur. L'heure où il a rejoint le serveur pour discorder son profil, image, ses rôles, etc. Maintenant, allons lancer le développement. Encore une fois. Allons sur notre serveur. Maintenant, vous pouvez voir que j'ai l'aide à tirer et j'ai également tenu à userinfo. Si je tape, je vous aide, désolé, OVNI. C'est dire que cette commande renvoie l'OVNI de l'utilisateur comme le moment où il a rejoint. Toutes ces informations peuvent être très utiles pour l'utilisateur. Vous pouvez voir que seules les options sont réservées aux commandes qui possèdent cette propriété help. Pour ceux qui n'ont pas la propriété qu'ils sont et cela est montré. Et pourquoi j'ai décidé de le faire de cette façon. Je l'ai fait de cette façon parce que je ne veux pas ajouter d'informations inutiles. C'est ça, c'est tout. J'espère que cette vidéo vous a plu et vous verrez dans la prochaine. 35. Ajouter Jest Config: Bonjour et bienvenue. Dans cette section, je vais vous montrer comment ajouter des tests à nos commandes. C'est quelque chose que je n'ai pas vu très bien faire parce que c'est un sujet complexe en ce sens qu' il ne s'agit pas de bibliothèques qui ont essayé de marquer des choses comme l'interaction, qui est un sujet très complexe. Nous pouvons donc passer des heures à essayer d'étudier comment traire un objet filet. C'est tout à fait possible, mais cela va prendre beaucoup de temps. Donc, disclaimer ici facilement, nous allons tester, nous allons ajouter des tests. Une commande pour vous montrer comment c'est fait. Mais ce n'est probablement pas le meilleur moyen. Mais encore une fois, je ne vois pas d'autre meilleure façon de le faire. Tout d'abord, nous avons besoin de toute cette plaque de cuisson pour configurer notre configuration car nous allons utiliser Oui. Alors ajoutons d'abord en tant que dépendance sourde, plaisantage et de types simplement parce que où voyez-vous dans TypeScript, alors même si nous n' utilisons pas TypeScript, nous avons besoin de cette bibliothèque pour JavaScript pour aidez-nous à compléter automatiquement les méthodes à l'intérieur. Allons juste à ce truc. Et attendons un instant que cela se termine. Maintenant, ajoutons des haltères ou de la Bible ou, cependant, je ne sais pas comment c'est vraiment des pronoms. Mais ces années, il s'agira de trois leviers qui vont nous aider à transférer le code de fichier écrit en JavaScript. Donc les tests écrits en TypeScript, JavaScript. Il est donc prédéfini qu'il sera utilisé par digest afin que vous puissiez comprendre nos tests TypeScript. Ajoutons-les comme ça, mais Bellcore, Bell préréglage, préréglage TypeScript. Le fichier que je vais ajouter, vous pouvez également le trouver dans la documentation de juste pour qu'il ne soit pas facile de trouver cette documentation. Mais tout d'abord, exécutons cette commande pour initialiser notre fichier de configuration. Tellement foutue TSC, tiret, tiret dedans. Pas de TAC, désolé, bordez-y. Il va poser quelques questions, alors essayons d'y répondre. Nous aimerions utiliser l'ESC. Nous exécutons des tests de grattage du paquet JSON. Je répondrai oui. Nous aimerions utiliser TypeScript pour le fichier de configuration. Je vais encore dire oui. Et cela va me dire de choisir l'environnement de test qui sera utilisé pour les tests. Si nous réagissions par exemple, nous allons lier JS DOM, mais nous utilisons un revers. Nous allons dire noeud. Voulez-vous simplement ajouter des rapports de couverture pour l'instant ? Je vais chanter non, parce que sa couverture ne va pas être bonne parce qu'on ne va écrire qu'un seul test. À partir de laquelle il devrait être utilisé pour instrumenter la couverture du code. Et encore une fois, nous n'allons pas faire attention à la couverture du code. Vous pouvez donc sélectionner ce que je vais sélectionner V8. Vous pouvez le dire par Bill, effacer automatiquement les appels simulés, instances et les résultats avant chaque test. Je vais dire oui. Je vais vous expliquer ce que c' est, ce qu'ils ont généré. Il a donc généré ces fichiers. Et la dernière question qui disait, effacez automatiquement les instances et les résultats de Michael avant que chaque test soit traduit dans cette propriété ici, effacer MCS égal à vrai. Le fournisseur de couverture. Et ce qui est tout, tout le reste est commandé pour que nous puissions le laisser comme ça. Le projet se développe probablement. Vous devrez voir les options ici, juste alors voir quelle est cette option ici, et pleurer pour les utiliser. Maintenant que nous avons ce fichier juste dot config dot txt, nous devons créer un autre fichier qui va s' appeler bible dot dot js. Cela va nous aider à utiliser nos fichiers de script de type. Je vais simplement utiliser le module qui exporte. Et nous allons dire des préréglages. Nous allons d'abord mettre un tableau, le premier élément, qui aura un EMF prédéfini par barre oblique de babble, puis ne cible aucun courant. Le deuxième élément sera simplement le type de script prédéfini de barre oblique. C'est ça. Ce fichier de configuration pour bible va nous permettre d'écrire des tests avec TypeScript, ce qui est génial car nous voulons que tout soit écrit en TypeScript. Je pense que TypeScript se plaint parce qu'il dit fichier juste un conflit que TS Il n'a pas souscrit cerf, qui est le dossier source. Je pense donc que c'est quelque chose comme ça ici. Donc source de chevreuil, c'est dire, Hé, ce fichier copy.txt n'est pas à l'intérieur de la source. Je me plains, c'est facile à résoudre. Nous disons simplement qu'ici exclut évidemment les modules de nœuds juste au cas où et juste point ds. C'est donc ça. Maintenant, le problème est sel et je pense que les modules Node ne sont même pas nécessaires. Mais je vais juste le mettre ici, juste au cas où. Mais je pense qu'il n'est pas nécessaire de le mettre ici. Mais il vaut mieux être explicite que d'avoir des erreurs, des erreurs imprévisibles et imprévues. C'est ça. Dans la vidéo suivante, nous allons essayer d' ajouter un test pour une commande. J'espère que cette vidéo vous a plu. On se voit dans le prochain. Au revoir. 36. Test Pour Ajouter Une Commande: Bonjour et bienvenue. Dans cette vidéo, nous allons réellement créer le test. N'oubliez pas, dans notre commande add, qui est la commande que nous allons tester. Nous avons évidemment la propriété command et la propriété qui est une fonction asynchrone. Nous allons donc tester la mauvaise propriété uniquement parce qu' il s'agit d'une logique métier réelle. La commande n'est qu'un moyen déclaratif de créer. Je le recommande. Vous pouvez essayer de créer un taux de test, mais cela n'apporte pas trop de valeur que de tester la logique métier réelle. Ok, alors ajoutons un dossier à l'intérieur est moins de commande appelée tâches. Les tests internes, ajoutons un nouveau fichier appelé add tasks dot ts. Ici, nous allons évidemment importer la commande at à partir de ce fichier. Et dans le test, nous allons dire qu'il répond avec la somme de deux chiffres. Nous allons exécuter ces fonctions d'exécution. Et cette fonction d'exécution n'est pas une seule méthode. Nous devons transmettre son rappel de réflexion. Donc maintenant, ce que nous allons faire, c'est essayer de marquer ces numéros, car nous avons besoin que ce bon nombre réponde ou renvoie une valeur. Ainsi, ce numéro un doit trouver un numéro deux est également défini. Pour ce faire, créons une variable appelée nombre. On va juste dire « Dot Fn ». C'est une marque réelle et nous pouvons faire ces grilles et la fonction MAC option des textes et des simulations d'implémentation. Nous pouvons donc faire beaucoup de choses avec cette simple fonction MAC. Nous allons appeler ce simulacre ou la valeur du tour. Une fois. Nous allons en dire un et nous allons le refaire. Retourne la valeur une fois, MOG retourne, mais d'autres mais avec cinq. Ce que cette chose fait, c' est dire : Hé, la première fois que vous m'appelez, retournez un, le numéro un va faire un. Et la deuxième fois que vous m' appelez, revenez cinq. Donc, le numéro deux va bien se passer. Bon, créons maintenant l'objet d'interaction réel. Et c'est là que je n'ai pas trouvé la meilleure façon de le faire. Parce qu'il n'y a pas de bibliothèques pour essayer de marquer cet objet d' interaction, ce qui est assez complexe. De toute évidence, nous utilisions JavaScript, cela ne posera pas de problème, mais comme nous utilisons TypeScript, il n'y a pas de bonne façon de le faire. Options intérieures. Nous allons ajouter ce truc « obtenir le numéro ». Maintenant, lorsque le test sera exécuté, nous allons déconstruire les options, ce qui sera le sujet ici. Et puis à partir de ces options, nous allons obtenir ces chiffres ici. Numéro. C'est la première chose que nous devons bouffer. Et la deuxième chose que nous devons marquer ces réponses, qui va encore être ajustée. Cette chose n'a pas besoin de limitation car elle ne renvoie rien. Mais nous allons nous attendre à ce que ces réponses soient appelées avec ce contenu. Juste ici. Nous allons nous attendre à qu'il soit appelé avec cet objet ici, avec ce contenu et avec les valeurs correctes. Désolé, c'est MC, il y a des valeurs renvoyées. Ok, alors allons maintenant essayer d'exécuter les méthodes d'exécution. Nous allons donc dire la commande Add qui s'exécute dans le poids. Nous allons passer l'interaction. Et ça va se plaindre parce que l'interaction East aucun de type commande l'interaction. Nous pouvons essayer de faire ces interactions en tant qu'interaction commande à partir de ces JS marqués. Et il va toujours se plaindre parce qu'il a besoin de beaucoup d'autres choses ici pour être considéré comme une interaction. C'est la partie où je n'aime pas ça, mais je ne vois aucune autre alternative. Nous le considérons d'abord comme inconnu, puis nous leur demandons en interaction. Encore une fois, ce n'est pas une bonne chose, mais c'est la seule chose que j' ai découverte en essayant de tester ces choses ici. Ils osent, elle sera bibliothèques pour essayer le truc des singes. Cela se produit lorsque vous avez une bibliothèque open source comme celle-ci carrée, oui, je pense qu'elles ne sont pas terminées. Ils n'ont pas d'interaction. J'attends donc de marquer ce genre de choses, mais ils n'en ont pas. Il existe en fait un paquet, mais il est très ancien et il n'est pas pris en charge. Et il a très peu de téléchargements. Je veux donc l'utiliser dans ce cours. Je vais juste utiliser ces moulages, jouer ici. Maintenant, on peut dire que l'on s'attend que le numéro deux ait été appelé deux fois, a été appelé à des fois. Nous pouvons également nous attendre à ce que l' interaction ne réponde pas. Avoir été appelé largeur, pour avoir été appelé avec. Et nous allons passer le contenu de l'objet. Un, cinq derniers équivaut à six. Il s'agit essentiellement de notre test. Maintenant, lorsque nous avons créé toutes ces configurations, je pensais qu'il y avait une question disant : Hé, vous vouliez gratter pour tester vos fichiers, vos fichiers de test. Et nous avons dit oui, nous pouvons exécuter ces tests de fil qui vont faire tourner les invités en coulisses. Et comme vous pouvez le constater, nous avons réussi ces tests. Ces tests, son schéma. Bon, c'est ça, c'est tout. Nous avons ajouté un test. Et l'important que je voulais vous montrer ici, c'est que cette chose ici, comme je l'appellerai une direction louée, ce n'est pas la meilleure façon d'écrire des tests. Nous voulons un objet d' interaction entièrement moqué. Mais pour l'instant, ils ne le sont pas. Eh bien, c'est possible, mais il va prendre beaucoup temps d'essayer construire nos propres laboratoires pour cela. Je viens de faire ce casting ici, c'est vrai, le test. Maintenant que vous savez comment ajouter un test comme celui-ci, il sera très facile de le faire pour d'autres commandes. Je vous recommande vivement de le faire pour toutes les commandes en tant qu'exercice. J'espère que cette vidéo vous a plu. voit lors de la prochaine conférence. Au revoir. 37. Partie 1 de Self: Bonjour et bienvenue. Nous allons maintenant créer une commande pour vous attribuer des rôles avec des emojis personnalisés. La première étape consistera à accéder à votre serveur, à accéder aux paramètres du serveur et à passer à emoji. Ici, vous pouvez ajouter vos emojis personnalisés. Nous allons ajouter à cela. Le premier sera un JavaScript emoji JavaScript. Et le second sera à l'image TypeScript. Maintenant que nous avons ces deux images Q-Star, nous pouvons obtenir les ID et les noms de ces emojis en tapant colonne oblique inverse, JavaScript, colonne oblique inverse, TypeScript. Il s'agit de la version que nous devons définir dans notre code pour pouvoir utiliser ces emojis. C'est ce que nous devons faire dans le code. Allons-y et, dans notre code, allons ici à la source. Et ajoutons un fichier appelé Self Roles. Ce ne sera qu'un tableau. Une fois encore. Ce tableau aura le plus d'informations, le nom du rôle et sa couleur. Appelons ce truc vendre des rôles. Et ça va être un tableau. Et le type de ce tableau sera emoji, qui sera un objet portant le nom du module. L'idée du moment. C'est la première chose. Ce nom du rôle, qui sera une chaîne, et la couleur qui sera de type couleur pouvant être résolue à partir du carré juste pour que nous puissions sélectionner les couleurs disponibles. Maintenant, il va s' agir d'un tableau, et ici nous allons coder en dur les rôles que nous voulons créer. Cela va être un peu différent, va nous permettre de nous faciliter la vie. Nous allons coder ces informations en dur. Nous n'allons pas transmettre les informations à notre commande barre oblique Add Roles. Bon, donc l'emoji va être un nom. Javascript. Je vais être cette chose ici, ce numéro ici. Le nom va être le rôle d'amoureux de JavaScript. Je ne sais pas ce que vous voulez mettre ici, la couleur, nous avons toutes ces options car ces couleurs peuvent être résolues. Maintenant, copions ceci mais avec TypeScript. Nous allons donc dire TypeScript Lebur. Nous allons dire le type de grattage et la pièce d'identité sera celle-ci. Bien sûr, avouons-le ici. Et mettons le bleu ici parce que TypeScript, c'est bleu. Maintenant que nous avons ces mêmes rôles, ajoutons les rôles Ajouter des rôles, des rôles commande, des points ts. Et encore une fois, copions-collons. Et essayons d'abord de construire la commande. Évidemment, les premières règles commandent. Cette commande va être très, très simple pour ne pas en avoir trop. Il va avoir un nom défini avec les règles. Définissez la description comme étant, crée un message indiquant que les utilisateurs peuvent obtenir leur propre rôle. L'important ici, c' est que nous allons dire définir les autorisations par défaut sur false car nous ne voulions pas que personne exécute ces commandes, exécute cette commande dans la méthode run. Cela va aussi être, eh bien, il va avoir sa complexité. Mais la première chose que nous voulons faire à l'Est, c'est d'assouplir un rendement mis en cache. Tu te souviens de ça avec ça ? Je pense que c' était dans le sondage. Voyons voir. Oui, je pense que nous avons dit coupable. Maintenant, nous allons voir, dire que nous voulons qu'ils soient dans un rendement de trésorerie. La différence est que la culpabilité qui se trouve dans le cache sont celles que le bot sait quand il est, le livre, quand on exécute Yarn sourd ou quelque chose comme ça. OK. Mais ces derniers sont intégrés, vous savez, à certains serveurs. Dans mon cas, il est invité sur mon serveur. Et ce seront les rendements mis en cache. Vous verrez pourquoi je l'ai fait dans un instant. Interaction qui répond au contenu. Vous ne pouvez pas utiliser ces commandes en dehors de la culpabilité mise en cache. Retour. Revenons après ça. Ensuite, nous allons créer une fonction pour construire le M ben, appelons-le build embed. Fonction étroite. Nous allons dire que la description des pistes est égale à vous donner une flèche. Et deux nouvelles lignes. Nous allons parcourir tous ces tableaux de rôles personnels. Nous allons donc dire quatre colonnes. Rôle des rôles personnels. Nous importons cela. Nous allons concaténer cette chaîne comme celle-ci. Nous allons dire que rappelez-vous cette syntaxe. Je t'ai dit de mettre des emojis comme ça. Roll Dot Emoji, un nom. Puis Roll Dot Emoji DID va dire le nom du rôle. Deux nouvelles lignes. Ensuite, nous retournons le pari Embed comme ce nouveau message M, comme ceci. Définissez le titre égal à des rôles et définissez la description égale à la description et à la couleur. Vous pouvez mettre la couleur que vous voulez. Je vais choisir n'importe quelle couleur ici, couleur aléatoire. Maintenant que nous avons cette fonction pour construire le pari final, créons ici dans le corps d'interaction. C'est génial. L'intégration, les intégrations égales à build et Beth et permettent de répondre par un message. Nous allons dire qu'une réponse au point d' interaction de poids intègre et nous passons le MDF. Et maintenant, si vous voyez que le type de message est nul, si nous voulons récupérer la réponse, nous devons passer cette option chercher la réponse. Vous verrez que vous verrez maintenant que le type de message est message. Si je les prenais et que je mettais du rendement, le type de cette chose sera API, message ou message booléen. Ce que je veux faire ensuite, c'est réagir à ce message avec des emojis personnalisés. Et nous ne pouvons pas le faire si le type de cette chose est un message d'API. Pour cela, je dis le rendement en espèces. Maintenant, le type ne sera que message. Maintenant que je parle de réagir, il va être très facile de réagir. Construisons simplement cette fonction. Réagissez pour intégrer une fonction asynchrone. Encore une fois, nous allons parcourir tous les rôles de soi. Donc pour le CMS, le rôle des auto-rouleaux. Attendez, le message Dot réagit. Et nous allons passer la chaîne que nous venons de créer ici. Alors que celui-ci, en fait, nous allons faire fonctionner l'utilité pour construire cela. Mais de toute façon, vous pouvez le faire. Et maintenant, nous devons juste attendre de réagir à l'impact sur Jahren sourd en ce moment. Allons-y ici. Allons-y et attendons ça. Ok, maintenant, ou j'ai acheté cette ligne. Voyons voir. Oh, et nous le devons, évidemment, nous devons le mettre dans ce tableau à partir des commandes de cils. Faisons ça. Ajoutons la commande Autres rôles. Allons fuir. Encore une fois. Voyons maintenant, si nous avons l'ajout, nous avons maintenant l'ajout de rôles ici. Mais regardez cela, je ne peux pas l'utiliser. Et pourquoi est-ce que c'est ? Eh bien, n'oubliez pas que nous avons défini les autorisations par défaut sur false. Nous devons donc autoriser , autoriser ou autoriser un rôle, ou autoriser un rôle, quelle que soit l'exécution de cette commande. Et c'est ce que nous allons faire dans la prochaine vidéo. J'espère que ça vous a plu. On se voit dans la vidéo suivante. Adieu. 38. Partie 2 de Self: Bonjour et bienvenue. Maintenant que nous savons que nous ne pouvons pas utiliser notre propre commande oblique, faisons quelque chose et créons le nouveau fichier appelé permissions. Permissions dot ts. Nous allons créer un tableau. Et ce tableau va contenir ces trois informations. La première, la commande, le nom, la commande à laquelle nous voulons ajouter certaines autorisations, l'ID de guilde et l'ID de guilde, sont importants car nous devons définir les commandes de l'application, les autorisations. Et même si la documentation dit, permettez-moi de vous montrer la documentation , Think reste au chaud. Permettez-moi de vous montrer les autorisations d'une commande oblique. Vous pouvez dire que c'est ainsi que vous ajoutez des autorisations pour les commandes Guild. Et vous pouvez également le faire pour les commandes de l'application. Mais cette chose ici n'est pas vraie. Vous voulez, ne me croyez pas, mais j'ai demandé sur leur serveur parce que ce n'est pas vrai. Si vous essayez de le faire comme ça, TypeScript va se plaindre parce qu'il va dire que j'ai besoin d'un identifiant de guilde. Je ne peux pas définir d'autorisations à partir de la commande de l'application sans guillotine, ce qui est étrange, c'est bizarre car si vous dites, Hé, je veux définir des autorisations pour un global ou une application et je ne devrais pas avoir besoin de l'idée de guilde. Mais je leur ai demandé leurs serveurs et ils m'ont dit : «  Hé, c'est une faute de frappe, c'est incorrect. Vous devez réellement passer une pièce d'identité, un AD de guilde. C'est pourquoi la documentation doit être à jour car elle est erronée. Avec cette chose à l'esprit. Nous allons créer ces tableaux d'autorisations const d' exportation. Il va s' agir de type array. Il s'agira d'un tableau d' objets avec le nom de commande, chaîne, l'ID de guilde, qui sera une chaîne. Et le tableau d'autorisations, qui sera de type applications, autorisation de commande Theta, et le taux de cela. Bon, voyons ce que nous pouvons faire ici. C'est génial. Et la pluie. Le nom de la commande sera notre commande rôles. L'ID de guilde va être notre variable d' environnement d'ID de guilde. M. Permissions va être comme ça, une pièce d'identité. Vous pouvez également définir qu'il s'agit d'un ID de rôle ou d'utilisateur. Dans mon cas, je vais utiliser un identifiant utilisateur. Je peux cliquer sur mon avatar et copier l'ID. Vous vous souvenez que vous devez activer le mode développeur. plus, le type peut être un utilisateur ou une URL. Si vous avez un rôle existant comme mod, envoyez-moi Illustrator, vous pouvez également utiliser cette idée. Mais je vais simplement me guider utilisant la commande et la permission qui est booléenne. Dans ce cas, je vais dire, Hé, je veux que ce soit vrai. Je veux que ces identifiants, ces identifiants d'utilisateur, utilisent ces commandes. Ok, donc maintenant que nous avons cela, nous allons créer ici à l'intérieur ces fonctions de rappel prêt est défini des autorisations qui va définir les autorisations pour les commandes de l' application et la culpabilité commandes. Alors rappelez-vous, l'obligation commande, quoi que vous leur fassiez. Cela peut être immédiat comme nous l' avons vu dans ce cours, mais cela peut être le cas, cela peut prendre une heure pour refléter les changements. C'est pourquoi nous allons le faire ici pour les commandes d'obligations et les commandements de culpabilité. Je pense qu'il n'y a pas moyen qu'ils aient 0 ans, mais je ne connais pas une façon de le faire, entendre les ordres de culpabilité enregistrés. Je pense donc qu'il est plus facile de le faire ici. Tout d'abord, nous allons rendre cette fonction asynchrone. Ici. Je vais définir cela pour qu'il s'agisse de commandes. Laissez-moi voir, peut-être appelons-ça des commandes d'application. Créons maintenant la fonction ici, une fonction interne appelée définir les autorisations. Encore une fois, il va être dans une fonction sinc. Dans cette fonction asynchrone, nous allons d' abord parcourir toutes les autorisations du tableau d'autorisations pour obtenir une autorisation constante d'autorisations. Nous allons d'abord récupérer la commande globale que nous faisons référence à l'intérieur de cet objet d'autorisation. Appelons ça comme ça. Commande globale égale aux commandes de l'application. Ils sont les mêmes, ils sont synonymes. Trouvez. En fait, laissez-moi. Attendez ce truc ici. Commande Find, où le nom du point de commande, EC est égal au nom de la commande de point d'autorisation. Maintenant, ces commandes peuvent être soit une commande soit ajoutons ici le séparateur. Cette chose peut donc être soit une commande, soit en finale. Donc, si une commande globale existe, cette chose existe. Peut-être que nous n'en avons même pas besoin. Utilisons l'opérateur de chaîne optionnel. Donc, si les axes de commande globaux sont définis, nous allons définir les autorisations, le jeu de points d'autorisation est égal à et nous devons transmettre un ID de culpabilité. Et les autorisations, évidemment, cette autorisation, les autorisations comme celle-ci. En fait, laissez-moi simplement déconstruire de la permission. Permettez-moi de déconstruire l'ID de guilde. Et les autorisations. Faites-le simplement comme ça. Comme ça. Voyons voir. La culpabilité. D'accord. Maintenant que nous les avons configurés pour la commande globale, faisons-le maintenant pour les commandes de guilde. Donc, tout d'abord, nous devons obtenir le rendement. Et nous allions chercher le client coupable. Read donne ce lot. Juste pour être sûr. N'oubliez pas que nous pouvons simplement l'obtenir en premier à partir du cache que vous pourriez exister. Alors, Client, laissez-moi faire ça. Laissez-moi le faire comme ça. Client dot, dot cash get et nous transmettons un ID de guilde. Et il peut s'agir de l'une ou l'autre des offres non définies. Nous pouvons donc le récupérer s'il n'existe pas. Client.write donne cet ID de récupération, de rendement. Maintenant, cette chose va toujours être définie. Maintenant que nous avons la culpabilité, prenons les commandes de ces champs. commandes de rendement, du poids, de la culpabilité, ça commande. Et c'est important, nous allons le chercher. Si on essayait de le récupérer dans les caches, ça ne marchera pas. Allons toujours le chercher. Ensuite, allons chercher la commande de champ en particulier. Comme ça. Maintenant, si cette chose existe, nous définissons les autorisations, mais cette fois-ci, nous n'avons pas besoin de passer une commande VIP de rendement qui définit les autorisations, les autorisations. C'est ça. Maintenant que nous avons cette fonction, nous devons évidemment l'appeler après les commandes de l' application. Allons donc des informations et attendons ça. Et maintenant, nous pouvons accéder à notre serveur. Et c'est un type de rôles. Nous allons taper cette chose. Et maintenant, vous pouvez voir que notre intégration est envoyée. Nous pouvons l'utiliser et nous pouvons réagir à cette chose. Et rien ne va se passer car nous n'avons évidemment pas ajouté ce code pour créer des rôles. C'est donc ce que nous allons faire dans la prochaine vidéo. Créez le code, la note, le rôle, Désolé, Dans notre dernière commande. Commande Rôles. J'espère que cette vidéo vous a plu. On se voit dans le prochain. Au revoir. 39. N'oubliez pas d'ajouter l'ID de la guilde à vos variables environnementales !: Bonjour et bienvenue. Eh bien, ce n'est qu'un rappel que maintenant que nous utilisons l'ID de guilde, nous devons le spécifier. Désolé. Nous devons le préciser ici. Dans les variables d'environnement ou les barres de conflit. L'héroïne, Heroku. Il suffit de taper l'ID de guilde et d'obtenir une carte d'identité de culpabilité. Rappelez-vous comment l'obtenir comme ça. Puis je viens de commencer. C'est ça. Maintenant, vous n'aurez aucune erreur sur votre ceinture. Ou lorsque vous démarrez l' application plutôt que de la reconstruire. C'est ça. Je serai comme ça. On se voit lors de la prochaine conférence. Au revoir. 40. Partie 3 de Self: Bonjour et bienvenue. Maintenant que nous savons comment utiliser notre propre commande barre oblique, créons la fonction. Pour créer les rôles IV, ils existent. Nous allons prendre les rôles du tableau des rôles personnels. Et nous n'allons les créer que s'ils existent. Créons donc ici dans la commande Ajouter des rôles une barre oblique, cette fonction va très bien, les rôles. Si Xist doit être asynchrone. Obtenons les rôles existants. En faisant une interaction de poids cette guilde qui roule la récupération de points. Cette fois, culpabilité, ces solidifiants parce que nous l'avons fait dans une culpabilité mise en cache. Construisons maintenant la carte. Cela va être, disons que le type sera une collection ou une carte, où les clés sont les ID des rôles et les valeurs sont les rôles eux-mêmes. Nous voulons les convertir en quelque chose comme cette carte où un objet où les clés sont désormais les noms de leurs rôles comme l'amateur JavaScript. Et le volume va simplement être booléen. Dis, en disant : Hé, ces existences réelles qui roulent. Appelons ce rôle existant de la carte. Et ce sont les rôles existants qui vont diminuer. Nous allons utiliser la réduction ici. La virgule booléenne. Cela va être le résultat de cela. Ensuite, nous obtenons le résultat qui est la valeur initiale. Ajoutons donc la valeur initiale. Le résultat sera ce tableau vide et il va être ajouté quelques propriétés au fur et à mesure que nous échangeons le plus large. Et la seconde sera chacune de ces valeurs. Et chacun de ces organes de rôle a un nom. Ce que nous allons faire, un résultat de nom est égal à vrai et renvoie le résultat. Bien que cela, désolé, je pense que ce n'est pas correct. Je pense qu'ils devraient être ici comme ça. Maintenant que nous avons la carte de rôles existante, parcourons chacun des rôles personnels et vérifions si le rôle existe déjà, puis continuons. Sinon, nous créons la ligne comme celle-ci pour un rôle constant des rôles personnels. Pour dire que si la carte de rôles existante nom cumulatif est vraie, nous continuons. Sinon, nous attendons l'interaction point, point, rôles, création de points. Et nous pouvons passer ici les nombreuses, nombreuses options. Le premier est évidemment le nom du rôle, ce qui est le plus important. On peut passer une couleur. Va passer la couleur enroulée. Nous pouvons le passer. C'est mentionable ou non. Je vais dire non. Nous pouvons également passer comme des emoji Unicode ou des emojis personnalisés. Mais en fait, cette fonctionnalité est réservée aux serveurs qui ont nitro à deux niveaux ou quelque chose du genre. J'ai donc besoin de beaucoup de besoins des utilisateurs sur le serveur nitro, où j'ai besoin d'acheter beaucoup de nitro, de booster, quel que soit leur nom. Je ne peux pas faire ça. Je peux mettre un emoji personnalisé dès maintenant. Je vais donc simplement spécifier ces options ici. Si vous souhaitez voir plus d'options, vous pouvez accéder à la documentation ou vous pouvez accéder à la définition de TypeScript et voir, hé, vous pouvez passer une raison. Vous allez ici, vous pouvez nommer le palan choléra, la position du rôle. C'est peut-être important. Je ne vais pas spécifier ici les autorisations aussi bien que cela est facultatif, mais vous pouvez le faire aussi. L'icône Emoji Unicode que nous ne pouvons pas mettre tristement parce que nous n'avons pas assez de boosts. Et c'est tout. Nous avons juste besoin de les appeler maintenant. que ça s'appelait, Comment ai-je appelé ça créer une fonction d'existence relative. Ok, donc maintenant si nous allons sur notre serveur et tapez à nouveau des rôles, voyons voir, je n'ai que ce rôle propriétaire froid. Et si je clique sur ce truc, voyons voir. Je ne l'ai pas encore eu. Voyons voir, cliquons ici. Je ne l'avais pas parce que évidemment je ne teste pas ce moment que le Raleigh l' a triste , mais je voulais juste voir que le rôle a été créé. Désolé, je suis allé dans le futur et ce n'est pas bon. Allons dans les paramètres du serveur, Les rôles, et vous pouvez voir maintenant que nous avons ces JavaScript plus bas que l'amateur de TypeScript. Nous avons donc créé nos rôles. Si j'exécute cette commande à nouveau aux règles et que je vais dans les rôles de paramètres du serveur, vous verrez qu' ils sont les mêmes. Ils n'ont pas changé. Si je ne fais pas cette condition ici, j'aurai beaucoup de rôles répétés. Ce n'est pas le cas ici. Alors maintenant, dans la prochaine vidéo, nous allons commencer à essayer, lorsque nous réagirons à cette chose, nous allons nous ajouter ces rôles. Réfléchissez-y avant de passer à la vidéo suivante. collecteur de réactions, comme nous l'avons fait dans le sondage, ne fonctionnera pas dans ce cas. Pourquoi ? Parce qu'il y a une viande maigre de réactions et qu'elles limiteront le temps. Et nous ne voulions pas le boiteux, n'est-ce pas ? Nous voulons que ce message soit là pour toujours et que les gens cliquent simplement sur cette chose et se donnent des rôles. Nous allons en fait ajouter un autre auditeur pour voir si nous pouvons recevoir des réactions aux messages. J'espère que cette vidéo vous a plu. On se voit dans le prochain. Au revoir. 41. Partie 4 de Self: Bonjour et bienvenue. Maintenant, nous avons notre lit M, qui a ces réactions comme dans notre sondage. Nous devons maintenant obtenir une annonce, les rôles de l'utilisateur qui y a réagi jusqu'à la fin. Allons créer un nouvel auditeur appelé à la réaction des messages. Faisons ça comme ça. Coûts d'exportation sur la réaction des messages. On va passer devant un client. Ce cours va revenir nul. Nous allons dire client sur, et nous avons toutes ces options. Nous voulons que la réaction du message au Kohlberg soit un rappel asynchrone. Et ce rappel asynchrone va avoir la réaction et l' utilisateur qui a réagi. La réaction est donc de type, réaction de la NASA et l'utilisateur est de type, utilisateur ou polonais ou partiel, réaction partielle ou partielle. Je pense que ce n'est pas le cas, nous n'avons pas encore précisé les partiels, mais nous allons le faire ensuite. Tout d'abord, c'est vrai. La logique. Ce que nous voulons faire ici, c'est d'abord vérifier si le message de réaction interaction point, nom du point. Si cela existe, nous voulons qu'ils soient de type AD. Nous voulons d'abord vérifier s'il s'agit de l'interaction Ajouter des rôles. Ensuite, nous voulons trouver le rôle de soi. Je vais trouver le rôle. Oui, en fait, faisons-le dehors. Appelons ce rôle de réaction. Faites-le en dehors de cette déclaration si. Nous allons trouver que l'emoji auto-roll, roll dot que je n'ai pas fait, c'est pour être égal, laissez-moi clore cette réaction. Ce rôle de réaction existe. Réaction rho. Cela va faire partie de notre condition si. Nous voulons également vérifier que leur message n'est pas un message de culpabilité, message de réaction ou un message de culpabilité. Et nous voulons également vérifier si l'utilisateur va envoyer. Ce n'est pas plus haut, car n'oubliez notre bateau est celui qui est chargé de réagir, mais nous ne voulons pas ajouter de rôles à notre bateau acheté en magasin. Allons chercher la culpabilité avec le message de réaction point. Maintenant que j'ai l'ID de culpabilité, je vais dire que le rendement est égal à, encore une fois client.Lisez les guildes que l'argent qui obtient ID de guilde devrait être distribué. Si cette chose n'existe pas, alors soyez coupable ou indéfinie, alors nous attendons les rendements de ce lot. La culpabilité. La culpabilité est toujours définie. Nous voulons maintenant obtenir un rôle existant. Les rôles existants équivaut à la culpabilité. Que les rôles qui encaissent. Il s'agira d'une collection où les clés sont les identifiants des règles et les valeurs sont les sujets de rôle eux-mêmes. Nous allons maintenant obtenir le rôle à ajouter. Le rôle à ajouter sera égal, désolé, aux règles existantes. Nous allons trouver, nous allons trouver un rôle existant où le nom de point de rôle existant est égal à notre nom de point de réaction. D'accord, désolé. Maintenant que nous avons le rôle à ajouter, encore une fois, il peut s'agir d'un rôle ou non défini si vous vous tournez pour trouver non seulement renvoyé et ne rien faire. Mais si cette chose est de type rôle, alors nous allons dire const, l'ID utilisateur est égal à l'ID de point utilisateur. Nous allons chercher le membre de la guilde. Rendez une fois de plus, offrez aux membres qui encaissent ce Gad, l'ID utilisateur. Ou si cette chose n'existe pas, rappelez-vous, elle peut être comme ça. Si je le fais comme ça, ce sera membre de la guilde ou à l'amende. Donc, si ce n'est pas défini, je vais attendre. Membres de guilde qui récupère l'ID utilisateur. Maintenant, le membre est toujours membre de la guilde. Et ici, nous devons faire attention si les rôles de membres en espèces ont le rôle d'ajouter un ID de point. Le membre a déjà le rôle. Alors, nous ne voulions rien faire. Tu viens de revenir. Sinon, on ne ferait que les rôles. Les rôles sont la deuxième ligne. C'est notre logique qui est très profonde ici. Voyons si ça marche. Maintenant, le corps est en ligne, c'est des rôles. Et vous pouvez voir maintenant que les commandes de l' application ne fonctionnaient pas parce que nous avons dû attendre un certain temps pour que cela fonctionne. OK. Alors maintenant, regardez mes rôles. Je n'ai le propriétaire que si, si je réagis à cela maintenant, je n'avais toujours pas le neuronal. Voyons pourquoi. Faisons un débogage. Essayons encore. Peut-être, peut-être, refaisons-le. Peut-être que je pense que ce qui se passe ? Nous avons oublié de faire quelque chose. On a oublié de le mettre dans le main.js, tu te souviens ? Donc, sur la réaction du message, cette erreur stupide pour moi. Refaisons-le. Si je dis, si je réagis à cela, je vais avoir l'amateur de TypeScript. Et si je réagis à cela, je vais avoir l' amateur de JavaScript. Maintenant, ça marche. Maintenant, ça marche. Dans la vidéo suivante, ce que nous allons faire est le même, mais lorsque nous supprimons la réaction. On se voit dans la vidéo suivante. Adieu. 42. Partie 5 de Self: Bonjour et bienvenue. Nous avons la possibilité d'ajouter des rôles en réagissant aux emoji. Faisons de même. Mais lorsque nous éliminons la réaction, nous voulons que le rôle dans la logique soit très similaire. Il suffit de copier et de coller ça. Mais au lieu d'une réaction à, appelons cela une réaction, supprimons. Renommez cela évidemment lors de la réaction du message, supprimez. L'événement sera celui de ces événements. Suppression de la réaction du message. La logique est presque la même. Ce que nous devons changer. Ce n'est pas le rôle à ajouter. Il sera enroulé pour le retirer. Et en fait, nous n'avons pas besoin de cette condition car nous n'allons pas envoyer son envoi. Comme si je suis un engin avec une réaction et que je retire la réaction parce que vous n'y avez pas réagi. Cela n'est donc pas nécessaire et cela doit être supprimé. Je pense que c'est tout. Nous n'avons besoin de rien de plus pour cela. Nous avons juste besoin d'une autre chose. Nous avons juste besoin d'envoyer un message de réaction. Remarquez que nous avons mis ces deux choses. Nous allons le mettre dans le fichier d'index. Alors, faisons-le. Exporter sur message, À partir de la réaction du message, sur la réaction du message, supprimer. Mettons-les ici. Au lieu de les mettre ici. Disons ça comme ça. C'est ça. Maintenant, nous avons le message, réaction, la suppression, le tout configuré. Allons-y et essayons ici. Les rôles. Laissez-moi d'abord voir que l' atome a n'importe quel rôle. Réagissons donc à ces deux choses. Donc maintenant, je dois JavaScript et l'amateur de TypeScript. Maintenant, si je retire celui-ci, je n'avais plus le TypeScript. Et si je sors celui-ci, maintenant je n'avais pas besoin de JavaScript, super. Et si je le fais, encore une fois, j'ai les rôles. Si je retire les réactions, je n'ai plus les rôles. D'accord. Donc, c'est tout. C'est comme ça que vous faites. J'espère que vous aimeriez vous voir lors de la prochaine conférence. Au revoir. 43. IMPORTANT : Permissions V2 mise à jour: Bonjour et bienvenue. J'ai une mise à jour. Si vous essayez de faire une sacrée profondeur. instant, vous allez voir que l' application se bloque. Cela est dû au fait que ces tribunaux ont introduit les autorisations de la version deux. Cela signifie que nous ne pouvons plus le faire maintenant. Allons voir les auditeurs sur le message prêt. Désolé, pas prêt, désolé. Nous ne pouvons plus le faire. Ce que nous avons fait ici a défini des autorisations. Mais nous ne pouvons plus le faire. Nous devons supprimer cela. Malheureusement, cela ne va pas marcher. Nous pouvons toujours le faire. Et la lèvre c'est ça. C'est ça. autorisations, il ne fonctionnera plus car les autorisations vont maintenant être ajoutées à l'intérieur de la partition elle-même. Maintenant, le serveur redémarre les deux cours Debbie en ligne. Allons au score et voilà. Mais le personnel du cours est propre ligne. Alors, comment gérer les autorisations ? Eh bien, nous allons ici, nous allons aux paramètres du serveur, nous passons aux intégrations et aux intégrations. Nous allons au cours des sourds. Évidemment, vous pouvez faire de même avec quel cours large. Vous pouvez également gérer les autorisations à partir d'ici. ce moment, il est dit que les rôles AD, il ne dit pas. Nous pouvons cliquer ici et mettre l'évier maintenant et économiser. en va de même pour celui-ci, les avertissements pour fraude. Et l'autre est pour les deux sourds. Et c'est ici que vous serez en mesure de gérer toutes ces autorisations pour chacune de ces commandes. C'est une petite mise à jour. C'est un changement radical par rapport au score. J'espère que ça vous plaira. voit lors de la prochaine conférence. Au revoir. 44. 500 Conclusion: Félicitations, vous parvenez à terminer ce cours avec succès et vous apprendrez des compétences précieuses que vous pourrez postuler pour devenir un meilleur ingénieur logiciel. Vous apprenez ici peut également être appliqué, l'avant et au back-end, peu importe. Qu'est-ce que vous apprenez ? Il s'agit d'un résumé de ce que vous avez appris. Replanifier les messages créant une barre oblique commande les liens inférieurs, les collecteurs de messages intètrent les réactions. Sous-commandes Collectors, obtenir des informations sur un utilisateur, comme obtenir la guilde, obtenir des informations sur les membres aux options des commandes lors de tâches simples, déploiement sur Heroku, bonnes pratiques, etc. La chose, compétence la plus précieuse ici, ce sont les meilleures pratiques, je pense, parce qu' il faut écrire un bon code. Écrire un bon code n'est qu'une question de suivre les meilleures pratiques. J'espère que ce cours vous a plu et que je vous verrai dans mon prochain cours. Au revoir.