Cómo crear un botín de discordia con discord. js, Typescript y Heroku | David Armendariz | Skillshare

Velocidad de reproducción


1.0x


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

Cómo crear un botín de discordia con discord. js, Typescript y Heroku

teacher avatar David Armendariz

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción

      2:27

    • 2.

      Cosas que debes saber

      4:56

    • 3.

      WSL

      2:45

    • 4.

      NVM

      5:49

    • 5.

      Extensiones de VSCode

      4:43

    • 6.

      Código Github

      1:16

    • 7.

      Cómo Crear Un Servidor Y Bots

      5:14

    • 8.

      Configuración inicial Parte 1

      14:08

    • 9.

      Configuración inicial Parte 2

      15:22

    • 10.

      Configuración inicial Parte 3

      6:17

    • 11.

      Configuración inicial Parte 4

      2:11

    • 12.

      ACTUALIZACIÓN: cómo arreglar las versiones

      2:04

    • 13.

      Cómo hacer que el bot

      11:29

    • 14.

      Ping Pong

      11:44

    • 15.

      Cómo manejar comandos

      8:04

    • 16.

      Cómo crear un comando

      7:11

    • 17.

      Cómo registrar comandos

      8:08

    • 18.

      Cómo implementar Heroku

      10:19

    • 19.

      Cómo agregar versión de nodo

      2:21

    • 20.

      Añade un comando

      7:48

    • 21.

      Añadir enlace

      4:35

    • 22.

      Command de información del usuario

      8:54

    • 23.

      Command de información del usuario

      14:22

    • 24.

      Command de encuesta

      14:17

    • 25.

      Command de encuesta

      6:20

    • 26.

      Command de encuesta

      16:33

    • 27.

      Command de encuesta

      12:40

    • 28.

      Command 5

      8:04

    • 29.

      Command de encuesta

      8:10

    • 30.

      Command de encuesta

      11:21

    • 31.

      Command de encuesta

      11:50

    • 32.

      Command API

      9:10

    • 33.

      Command API

      10:25

    • 34.

      Command

      14:02

    • 35.

      Cómo agregar la configuración de la braga

      7:15

    • 36.

      Prueba para agregar comando

      7:46

    • 37.

      Parte 1 de los roles individuales

      10:26

    • 38.

      Parte 2 de los roles individuales

      9:36

    • 39.

      ¡No te olvides de agregar el id de gremio a tus variables de entorno!

      0:45

    • 40.

      Parte 3 de los roles individuales

      6:22

    • 41.

      Parte 4 de los roles individuales

      7:40

    • 42.

      Parte 5 de los roles individuales

      3:05

    • 43.

      IMPORTANTE: actualización de permisos V2

      2:11

    • 44.

      Conclusión 500

      1:03

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

1764

Estudiantes

--

Proyectos

Acerca de esta clase

¡Bienvenido a este curso! En este curso aprenderás cómo codificar un bot listo para la producción con discord.js y el paquete recomendado para crear comandos de barras de seguridad, que son los @discordjs/builders. Este último implementa un patrón de diseño llamado patrón de "constructor", que facilita la construcción de objetos de clases. Tampoco perderemos el tiempo y desplegaremos nuestro bot en Heroku tan pronto como podamos. Este es siempre uno de los primeros pasos que quieres hacer y lo haremos con CD (implementación continua) conectando Heroku a nuestra reposición de GitHub. Muchos tutoriales por ahí te muestran cómo codificar bots sin una estructura y cómo implementarlo para… ¡En este curso no es así! Aprenderemos muchas cosas que te ayudarán a ser un mejor desarrollador de software en general. No solo aprenderás a codificar un bot, sino que aprenderás las mejores prácticas, como crear un bot para el desarrollo y otro para la producción. ¡Lo haremos como si nosotros íbamos a construir una aplicación web!

  • TypeScript

  • Respuesta a los mensajes

  • Cómo crear comandos de barra

  • Cómo crear botones y enlaces

  • Cómo crear colectores de mensajes

  • Crear embeds

  • Cómo crear colectores

  • Cómo crear subcomandos

  • Obtén información sobre un usuario y sus roles

  • Cómo agregar opciones a comandos

  • Añade pruebas simples

  • Cómo implementar Heroku y conectarlo a GitHub para CD

  • Mejores prácticas

  • Etc...

Conoce a tu profesor(a)

Teacher Profile Image

David Armendariz

Profesor(a)

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!

Ver perfil completo

Level: Intermediate

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. INTRODUCCIÓN: Hola y bienvenidos a este curso. Mi nombre es Debbie ellos en papás y soy Ingeniero Senior de Software y matemático. De qué se trata este curso. En este curso, aprenderás a codificar la producción lista, pero con esto sugiere y desplegado a Heroku, la palabra clave aquí está lista para la producción. Muchos tutoriales por ahí te muestran cómo cocinar, pero sin una estructura claramente definida y desplegada para replicar. Nunca, nunca te recomendaré que hagas este tipo de cosas. En este curso, vamos a aprender las mejores prácticas y cómo desplegar tu trasero a Heroku usando el despliegue continuo. Lo que aprenderás, aprenderás TypeScript, lo cual es impresionante porque te da seguridad de escribir en JavaScript, que es claramente algo que quieres cuando estás trabajando en grandes proyectos. Incluso si no estás trabajando en grandes proyectos, debes estar familiarizado con TypeScript porque ese es el objetivo de tu carrera como ingeniero de software para escribir buen código, responder a mensajes y estos tribunales . Entonces la antigua forma de hacer comandos en los squirts era agregar un prefijo como signo de exclamación, y ese será el comienzo de tu mandato. Pero también vamos a aprender a crear un comando slash, que es la forma moderna de crear comandos en estos grupos. Botones y enlaces de cuadrícula. Recolectores de mensajes, incrustado, nos dirigimos rápido y mensajes que los pensamientos pueden enviar. Reacciones coleccionistas para reaccionar mensajes. Grandes subcomandos, obtener información sobre un usuario y sus roles en las opciones, los comandos en las pruebas a nuestros comandos y desplegados a Heroku, como dije, desconectado a GitHub para el despliegue continuo de CD, eso significa que empujas un cambio y no tuviste que preocuparte por nada. Acabas de ver tu código desplegado y tu último cambio en producción, mejores prácticas, etc, etc. Aprenderás mucho en este curso. Y espero que hayas disfrutado el curso tanto como lo disfruté haciéndolo. Nos vemos en la próxima conferencia. Adiós. 2. Cosas que debes saber: Hola y bienvenidos de vuelta. Tengo que contarles algunas cosas antes de que iniciemos este curso. En primer lugar, un descargo de responsabilidad sobre estos ds de punto cuadrado. Vamos a utilizar la última versión de este código dot js en el momento de grabar este video, que es la versión 13. Además, vamos a utilizar la forma recomendada de construir comandos, que es que d squared j's es paquete de constructores azotados. Entonces esta no es una aplicación empaquetada que implementa el constructor, el patrón de signos, y es realmente, realmente bueno. Esta es la forma recomendada de construir una barra de comandos y otras cosas. Entonces vamos a utilizar estas bibliotecas. Pero sin embargo, este paquete aún no tiene una versión v1 significa que cambia muy a menudo. Te da actualizaciones muy, muy a menudo. Y aún no sabemos cuándo se estabilizará y puedes seguir tus actualizaciones tiene la página más joven de GitHub o bajo el canal Squared, donde también pueden resolver muchas, muchas dudas. Si lo tienes. Vamos a usar el subsistema de Windows para Linux. Wsl. He estado codificando en linux de mi vida y me inconveniente que Linux sea el mejor sistema operativo para recubrir. Tengo todo lo que también usó el Mac y Windows. Y esta es mi opinión, pero creo que la cojera es lo mejor para ir. No obstante, la grabación de puerta gritando Linux puede resultar en videos de mala calidad dependiendo de su máquina. Principalmente por estos porque por problemas de incompatibilidad de hardware y cosas así. Y desgraciadamente ese es también mi caso. Y lo hice en cursos anteriores y algunos alumnos se quejarán la calidad del video de las lecciones. Entonces por eso voy a usar Windows Subsystem para Linux. Windows Subsistema para Linux es básicamente tener una distribución de Linux dentro de tus ventanas. Entonces es genial para codificar porque básicamente es como una camiseta nativa de Linux, pero dentro de Windows. Por lo que puedo usar software de grabación para grabar lecciones con una mejor calidad de audio y video. Vamos a usar nvm. Te voy a mostrar en un futuro video cómo instalarlo. Bueno, las instrucciones de cómo instalarlo. Y esta es básicamente una herramienta para administrar múltiples vs. de nodo en su máquina. Y NodeJS, obviamente, estos dos sólo funciona para Linux y Mac. Entonces si estás en Windows versus una alternativa, también tienes una versión de Linux o algo así. Pero es simplemente más fácil darle una oportunidad al Subsistema Windows para Linux porque podrás instalar nvm en Windows si vas a usar Windows Subsistema para Linux, y será muy, muy fácil. Y vamos a usar vía alcance. No he usado este código o programa en múltiples lenguajes de programación, python, Ruby, JavaScript, TypeScript, ellos, incluso ir link. Y esto es sólo mi opinión, pero creo que si usas VS Code con la extensión correcta, por lo que puede ser aún mejor que las alternativas como Webster. También he usado WebStorm, pero realmente, realmente me gusta más VS Code con unas extensiones correctas, ¿verdad? Vamos a usar Heroku. Heroku tiene un nivel gratuito donde podrás alojar tu brote de forma gratuita. Y te dará obviamente cantidad de horas al mes. Probablemente necesites poner tu tarjeta de crédito. Quieres quedarte esas horas libres si solo tienes uno pero, y quieres pagar cualquier cosa al mes si haces esto. Pese a que te recomiendo que pongas tu tarjeta de crédito en Heroku para que tu bot pueda estar vivo todo el tiempo. Entonces estas son las cosas que debes saber. Y en los próximos videos te voy a mostrar cómo, por ejemplo, instalar nvm, instalar nvm, que es yo creo que aquí la parte más importante, que tal vez no todos conocen estas barras de herramientas. Es bastante estándar si estás usando múltiples versiones de nodo. Al igual que en mi caso, donde uso una versión para un proyecto en R1 para el trabajo y cosas así. Eso es todo. Espero que te haya gustado este video. Nos vemos en la siguiente. Adiós. 3. WSL: Hola y bienvenidos de vuelta. Entonces una cosa que ACE opcional, pero realmente te recomiendo que hagas si estás usando Windows, instala Windows Subsistema para Linux. Por lo que solo busca Google Windows Subsistema para Linux, ve al primer enlace. Aquí. Te mostrará todos los requisitos previos para instalar Windows Subsistema para Linux. Es, dice que los humanos están ejecutando Windows diez, brush y 2004 y hangar o Windows 11. Si ya tiene Windows 11, entonces solo tiene que hacerlo en el símbolo del sistema de Windows, WSL menos menos install. Lo siento. Estos comandos habilitarán los componentes opcionales requeridos. Descarga el último kernel de Linux, establece WSL como tu predeterminado e instala distribución de Linux para que te enrolles por defecto. Ver a continuación para cambiar esto. Entonces esto es nuevo. Creo que la última vez que revisé esta documentación, tenías que instalar manualmente el Subsistema de Windows para Linux a la derecha. Ahora, si haces esto un comando, vas a ver que Windows Subsistema para Linux para aliviar el valor predeterminado, que es mejor que el. Honestamente, realmente te recomiendo que te quedes con Ubuntu si prefieres usar en otros estos SRO, que no he hecho porque estoy de acuerdo con Ubuntu. Entonces puedes, puedes seguir estas instrucciones. Y luego tendrás después de seguir toda esta guía, tendrás estos terminales donde podrás usar una herida para escuchar. Puede hacer sudo apt actualizar y usar, lo siento. Creo que tengo mi teclado en inglés. Usa el teclado español. Se puede montar. Así que gota día esto, se puede ver que esto es Ubuntu. Es como tener un hueso a tu máquina Windows. Eso es todo. Eso es todo lo que quería mostrarte cómo hacer esto. Sólo tienes que seguir estas instrucciones aquí. Y de nuevo, esto es opcional pero muy recomendable. Ver en el siguiente video, Adiós. 4. NVM: Hola y bienvenidos de vuelta. Estoy en la página GitHub Administrador de versiones de VM o Node. Lo puedes encontrar y tendrías MDM dash, SH, una slash npm es la org moon. Este es el nombre. Podemos leer un poco sobre estos. Puedes ver Indiana te permite instalar y usar rápidamente diferentes versiones de nodo a través de la línea de comandos. Por lo que es fácil como los días y el uso final y la versión que quieras. Si quieres instalar una versión como esta y luego instalar 12. O incluso puedes especificar una versión más específica como 12.21 para cualquier versión de manager para que no se ingrese Díaz, se instala por usuario e invoca por shell y funciona en cualquier shell compatible con POSIX. Supongo que H dash TSH, TSH, que es el que uso. Bash, que es el que probablemente vas a usar si estás usando Linux. Utilicé TSH, a pesar de que estoy usando un subsistema de Windows para Linux, es bastante genial. Si quisieras echarle un vistazo, puedes hacerlo. En particular en estas plataformas. Macos y Windows Subsistema para Linux, Unix incluye todas las distros de Linux y Windows. Wsl es lo que te dije, Subsistema de Windows para Linux. Entonces por eso te recomiendo que lo pruebes instalando y actualizando y así sucesivamente que rasparon, solo tienes que ejecutar estos comandos en tu terminal. Entonces si estás en el Subsistema de Windows para Linux o Mac o Linux, solo tienes que copiar este comando aquí y pegarlo aquí. Y eso se va a instalar en VM en tu máquina. Y va a intentar escribir en cualquiera de estos archivos así, dot css HRC, que en caso de que estés usando SSH. Bash RC incluye que estás usando bash. Voy a añadir estas líneas de código aquí. Déjame ver si podemos ver aquí. Vamos a la Tabla de Contenidos. Vemos otra información adicional, verificamos aislamiento, solo teclea estos comandos. Vm o simplemente escriba en VM. Eso te va a decir si está instalado o no, entonces un tipo windows aquí. Sin embargo, notas importantes, eso es, ahí es donde quería ir. Si estás ejecutando un sistema sin banner preempaquetado disponible, lo que significa que vas a hacerlo así que no JS o esto no. Este no es nuestro caso. Nosotros macOS y Linux, ya tenemos estos paquetes aquí. Es bastante raro que no tuvieras paz ya instalada. Nodo npm también soportaba ventanas. En algunos casos, se trabaja a través del Subsistema de Windows para Linux. Dependiendo de la versión de WSL, esto es importante, suelen tener versión dos que vamos a ver. Y también debe trabajar con el Bash o un segue. No he usado estas dos cosas. No sé cuáles son. De hecho, sabio para Windows y campo Turnitin, que no son ni orden ni desarrollados por nosotros. Estos conocen estos NBS y las ventanas. Entonces si no quieres tomar mi consejo y simplemente usando nuestra herramienta o simplemente instala NodeJS desde cero. También se puede hacer eso yendo a saber simplemente aburrido. Puedes ir a suggest.org e instalar Node Desde aquí, pero va a ser una versión fija. Y realmente no recomiendo eso. Pero si tienes nvm, si tienes Windows, también puedes usar NPV para Windows. A pesar de que no te voy a mostrar cómo hacer esto porque no he usado esta cosa. Eso es todo. Cuando tengas instalado y VM, te puedo mostrar aquí un par de comandos. Npm current me va a mostrar la versión actual, 12.10, DMLS me va a mostrar todas las versiones que he instalado. Se puede ver que tengo muchas versiones instaladas y por defecto es 12.100. Si quisiera instalar una versión específica y puedo, déjame escribir ayuda aquí en india install help. Aquí puedes ver todos los comandos de ayuda. Probablemente este sea el que estamos tratando de decirte, los indios salan versión específica. Si quieres resolver la versión LTS, solo nvm instala dash, dash LTS. Y si sí queremos utilizar una versión específica, lo siento, la versión LTS utilizada como LTS. O si quieres usar otra versión que tengas aquí, npm usa Catorce Puntos en 16 por ejemplo. Y ahora vas a estar usando esa versión. Nvm actual. Voy a ver que es esa versión que especificé. Eso es todo. Esta es una herramienta muy cool, así que te recomiendo que la uses en este curso. Eso es todo. Espero que te guste. Nos vemos en el siguiente video. Adiós. 5. Extensiones de VSCode: Hola y bienvenidos de vuelta. Como dije, voy a usar VSCode, necesita mi ID favorita y realmente lo recomiendo. Es totalmente opcional. Si quieres instalarlo, solo busca Visual Studio Code y Google y busca cómo descargarlo o simplemente ve directamente a codificar Visual Studio que vienen cargados para tu puerta de software, pero ese no es el punto de este video. El punto de este video es mostrarte algunas extensiones útiles porque muchos estudiantes en el pasado me han preguntado qué extensiones se utilizan. Y sólo estoy quería mostrarte algunos de ellos. En primer lugar, si estás usando un Subsistema Windows para Linux, esto probablemente sea muy importante para instalar el WSL o extensión bash remoto. Este es el primero que quieres resolver. Estás usando Windows Subsistema para dispositivo Linux. Ver esto instalado localmente. Y me desplazo hacia abajo, se puede ver que estos son así. Y si me desplazo sobre estos íconos, dice que esta extensión está habilitada en el host de extensión remota porque prefiere timón algunos de ellos preferidos a los tuyos en el host WSL. Así que déjame mostrarte algunas extensiones que sí quiero usar, tal vez no sólo por el marcador, sino para otras cosas también. Por ejemplo, este color halite y luego web colors Editor Senior. Entonces vamos a usar algunos colores aquí en este curso, pero puedes usar también colores hexadecimales aquí en este curso, si lo prefieres, lo voy a usar, pero sin duda puedes hacerlo si quieres. Y estas extensiones te darán el color en la parte superior de la cadena de color hexadecimal diese aquí. De acuerdo, entonces qué más tal vez está vinculado es muy importante. Vamos a configurar algunas reglas de LinkedIn y estas buenas lentes bastante importantes también son muy buenas. Pero esto funciona mejor si estás, si estás trabajando en un proyecto más grande con otras personas, para ver la culpa y cosas así, para ver las solicitudes de encuesta hechas. Para cambio específico en el código. Es bastante bueno. ¿ Qué más? Costos de importación. Esto es muy bueno porque te muestra el costo importante y el tamaño de algunas importaciones. Nuevamente, inicialmente para el desarrollo web donde esto es muy importante. Estos fueron útiles en ese arco iris. Me gusta. Esto solo te está mostrando algunos colores cuando estás sangrando código, código de Delhi. Esto es muy, muy útil. ¿ Qué más? Esto es para el desarrollo asistido por IA solo a la superficie de autofinalización de ciertas cosas. Creo que con el script por lotes esto es menos útil, pero sigue siendo muy, muy útil. Por lo que recomiendo encarecidamente estas extensiones. Bueno, ¿qué más? Más bonita, más bonita es muy, muy importante, muy, muy importante. Porque vamos a utilizar durante este curso el formateo de código es algo que debes automatizar. Recuerda los corchetes, esto también es muy útil de hacer. El Raqueta está en el mismo auto para ver dónde comienza y dónde termina. ¿ Qué más? Déjame ver. Qué más tengo aquí. Veamos YAML, Morris y lente de error sabio. Este también es muy guay tener los errores que se muestran en el código. Creo que esto es muy, muy útil. Material Icono Tema. Sí, esto es sólo una cosa puramente visual. Entonces puedes ver estos iconos aquí, los íconos de material. Sólo una cosa visual. Creo que esas son las que te recomiendo para este curso y tal vez para el desarrollo web. Se puede ver que tengo otras cosas, GraphQL terraform. Estos no son necesarios para este curso. Entonces eso es todo. Eso es todo lo que quería mostrarte cómo hacerlo, como el video. Nos vemos en la siguiente. Adiós. 6. Código Github: Hola y bienvenidos de vuelta. Sólo quiero decir que todo el código de este curso está dentro de este repo. Me puedes encontrar en GitHub como w0 que han sido ese iss. Y puedes encontrar esta puntuación SDI repo. Pero por supuesto, todos los gametos están aquí. Puedes ir aquí. El primer gameto, si querías ver como ellos, cambios específicos. Para una lección. Tú vas a, por ejemplo, este gameto y puedes ver, oye, acabo de añadir estas piezas de código aquí. Entonces si quieres ver lo real como contenido de todos decodificar todos los archivos. Por ejemplo, aquí, agregaron reacciones al colector. Este es el código que agregué. Y aquí se puede ver Examinar archivos. Así que ve a Examinar Archivos. Y este es el código en ese estado. Ese es el peso. Puedes navegar por el código a través de las lecciones de las puntuaciones. Eso es todo. Si tienes alguna pregunta, solo tienes que ponerlas. Estaré feliz de contestar. Nos vemos en la siguiente lección. Adiós adiós. 7. Crear Un Servidor Y Bots: En este video, vamos a calificar los servidores para que podamos probar nuestro bot. Es bonita vista de ECE ya tiene un servidor, luego siéntase libre de omitir esta parte e ir a la parte donde estoy creando el capullo para el ciber. Simplemente haga clic aquí. Crea el mío propio. Sí, eso se llama el servidor. El marcador. Comprado servidor, lo que sea. Genial. Sí, tengo ayudas. Un montón de propinas ahí. Voy al navegador y voy a los desarrolladores de slash score.com como aplicaciones azotadas. Entonces puedes ver que ya tengo estos dos bots creados para mi servidor de discordia personal. Vamos a crear dos más. Digamos que este va a ser el curso comprado anotado. Vamos a crearlo. En esta pestaña aquí. Voy a añadir un botón. Sí, hazlo. Estos nombre de usuario no pueden contener el nombre de usuario de puntuación. De acuerdo, así que vamos a quitar el d cuadrado del nombre, guardar los cambios, y vamos a tratar de crearlo de nuevo. Así que ahora tengo mi trasero por supuesto la muerte. Esto va a ser útil sordo local. Y vamos a la o. Y vamos al generador de URL. Estos 0s donde vas a crear la URL para invitar a tu barco, estás a punto de tu servidor. Por lo que necesita algunos ámbitos, algunos permisos. Voy a seleccionar este permiso de error. Y también estos comandos de aplicación permiso. Voy a explicar lo que estos en un futuro. Cuando le das los permisos de brote, debes darle todas las cosas que estos bots pueden hacer en tu servidor. Entonces si vas a cumplir BAD real escalable con mucho usuario, se asegura de que solo tenga los permisos necesarios. Pero estamos aprendiendo aquí, así que sólo vamos a seleccionar Administradores que pueda hacer todo. No tuvimos que preocuparnos darle todos los permisos. De acuerdo, así que ahora vamos a copiar este enlace aquí. Vamos a pegarlo. Y entonces va a decir que, sí, quieres agregar estos cursos masivos sordos a un servidor. Tengo mi servidor de discordia personal y mi servidor que acabo de crear. Entonces eso es como éste. Sigamos confirmando que esto va a tener los permisos de administrador. Vamos a autorizarla. Tenemos que resolver estos pequeños Capture aquí. Ojalá no sea un robot. Verificar. Genial. Entonces ahora si vamos a los puntajes, si vamos a los puntajes, pero claro, vas a ver que en el canal general, que es el canal predeterminado, vas a tener el curso spot def por aquí. De hecho, está aquí, pero está fuera de línea en este momento. Cuando estás construyendo un real comprado y quieres desplegar en producción, pero aún quieres hacer tareas. Entonces la estrategia que utilizo oriente para hacerla sorda pero orgullosa. Pero si volvemos aquí a aplicaciones y creamos una nueva aplicación, voy a crear pero sondeo de curso. De acuerdo, por lo que estos sólo se van a utilizar para producto y en este momento no somos el punto de los productos, así que no te preocupes. Ahora creamos el trasero. Vamos a lo mismo, pero la aplicación ordena y vamos a darle permisos al administrador. Copia el enlace, péguelo en el navegador. Selecciona el servidor, que es éste. Autorizar resuelto el capitán. Camiones. Más camiones. Sí. Creé con éxito en pero para sordos, eso es lo que vamos a utilizar principalmente en este curso. Y cuando desplieguemos a prod, vamos a usar estos aquí. Eso es todo por este video. Espero que te guste. Nos vemos en la siguiente. Adiós. 8. Configuración inicial Parte 1: Ok, Ahora que tenemos nuestro servidor y pensamientos creados, es hora de empezar a escribir código. Ve a tu directorio favorito y creando nueva carpeta llamada, no sé la puntuación del curso. Vayamos aquí. Voy a usar VSCode, voy a abrir estos directorio vacío, y voy a abrir un terminal integrado. Tengo un atajo para estos que puedes hacerlo desde aquí. Supongo. Sí, nueva terminal. Y eso va a crear una nueva terminal para ti. De acuerdo, así que antes que nada, vamos a inicializar estos anchos, conseguir que podamos crear gametos y todas esas cosas. Ahora necesitamos inicializar un archivo package.json. Pero antes que nada, vamos a crear un archivo nvm RC. Entonces digamos Touch dot nvm RC. Aquí, vamos a poner la versión de nodo que queremos utilizar en este proyecto. Déjame ver cuál es mi versión actual y VM. Está anticuado. Vamos a instalar la versión LTS. Eso es no, Versión 16.14.2. Voy a poner ese número aquí, 16.14 a cada vez que estés dentro de este directorio, tienes que escribir este comando npm use. Y vas a estas versión aquí. Si no tenías esa versión, entonces es NVM la va a instalar para ti. Además, si tienes curiosidad, tengo como un déjame ver. Si puedo mostrarte. Tengo un archivo dot C RC y tengo estos cocineros aquí porque estoy usando z ASH. Probablemente estés usando lo mismo si estás en Mac. Estoy en el Subsistema Windows para Linux, pero estoy usando un COSH porque es tan grande. Aquí puedes ver que tengo este uso automático de nvm. Lo que hace el libro básicamente es cada vez que ingresas a un directorio que tiene estos archivos nvm RC, va a hacer que nvm use automáticamente para usted. Por ejemplo, si cierro este terminal y lo abro, lo abro de nuevo, entonces estás viendo que estos hook están encontrando estos archivos MRC de NBA y está emitiendo ese comando nvm use. Si tienes curiosidad, puedes pausar el video, agregarlo a tu archivo TSH RC. Si estás usando bash, entonces tienes que hacer probablemente otra cosa, o simplemente Google cómo hacerlo. Pero eso es totalmente opcional. Si no quieres usar ese aro, entonces solo escribe npm use cada vez. Ahora que tenemos nuestra versión de nodo, vamos a usar discordantes. Vamos a instalar Yarn porque prefiero el hilo sobre NPM. Entonces vamos a decir npm instalar menos g hilo. Eso instala el dibujo a nivel mundial. Ahora podemos hacer algo como hilo en ella menos y. y va a crear este paquete lección de punto para mí. Entonces ahora que tenemos nuestro archivo nvm RC están empaquetados archivo JSON, también vamos a necesitar un archivo de configuración ts porque vamos a usar TypeScript. Entonces, antes que nada, agreguemos TypeScript. Entonces hilo a menos capital D, para que le decimos que es una dependencia de dev TypeScript. Ahora tenemos estos módulos de nodo carpeta y estos hilo ese archivo de registro. Estos módulos de nodo. No queríamos comprometerlo porque es demasiado grande y es innecesario. Entonces antes de ir más allá, vamos a crear este dot git ignore portón trasero del archivo que no queremos elogiar módulos de nodo. Por lo que ahora se puede ver que se volvió gris porque no está siendo ignorado por el bien. Ahora vamos a agregar TypeScript, el conflicto de Ts que archivo JSON. Digamos hilo, TSC, guión, guión en él. Y como se puede ver, crea este archivo aquí. Está bien, genial. Entonces con este expediente, lo estamos diciendo. El código que queremos compilar con estas opciones aquí. Para que como se puede ver, hay muchas, muchas opciones. La mayoría de ellos son comentados y tienen valores predeterminados. No vamos a bucear profundamente en estos. Probablemente vamos a modificar esto por ahí fuera. Y no sé qué más, pero por ahora, vamos a mantenerlo así. De acuerdo, así que ahora que tenemos a Ts cómodas, tenemos qué más hemos empacado JSON. Agreguemos más guapa. Si no sabes qué es el nivel libre, es básicamente un formateador de código. En lugar de pelear. Si quieres cotizaciones semi simples o cotizaciones dobles, solo tienes que hacer un archivo de configuración y definirlo y hacer el código para que los militares cuiden esos detalles. Así que antes que nada ve y las extensiones, si estás usando VSCode, entonces busca al predicador. Si estás usando otro IDE mientras tienes que buscar cómo usar predicador con tu IDE. Pero en este código, EECS instalando estos códigos más bonitos para el cambio monetario. Vale, pero eso no es todo. También necesitamos agregar un archivo de configuración. Vamos a crear estos puntos. Archivo RC de nivel gratuito. Digamos que en mi proyecto, yo una sola cita en lugar de comillas dobles. Y hay muchas y muchas opciones que puedes configurar. Al igual que, ya sabes, veamos qué otras opciones tenemos. Probablemente punto y coma, punto y coma, coma final. Esto es por tener una coma al final de sus objetos y cosas así. Entonces supongamos que este es un objeto siguiendo comas, sólo va a darle estas comas aquí. Sí, de hecho tienen estas extensiones que me dicen las flechas que tengo en mi código. Me está diciendo que es un auto de arrastre, pero eso es porque este es un Jason. Esto no es JavaScript. En JavaScript, voy a tener riqueza TypeScript. Vamos a tener estas coma trailing. Puedes buscar todas estas opciones aquí. O imprimir lejos con estos también algo que me gusta. Me gusta poner los 100 entrenamientos que rompe después de 120 personajes. De acuerdo, entonces esa es la configuración que vamos a usar para predicador en este proyecto. Ahora necesitamos una cosa más que va a ser después con enlaces ES. Entonces vamos a crear un RC, ese archivo JSON. Nuevamente, hay una extensión VSCO que puedes usar, que se llama ES pelusa. De hecho, ese habitar instalado porque necesitaba instalarlo para Windows Subsistema para Linux. Voy a resolverlo después de este video. Pero lo importante aquí es que estos archivos de configuración, tenemos que escribirlo. En primer lugar, voy a decir raíz igual a verdad. ¿ Cuál es esta ruta que básicamente te dice está vinculada. Oye, no busques más archivos de configuración fuera de este directorio. Déjame ver si puedo pasar el cursor de esta cosa. No me dice, pero eso es básicamente lo que es la raíz. Nos está diciendo, no intentes obtener configuración desde fuera de estos repo. Entonces necesito un analizador porque vamos a usar TypeScript. Y de hecho, instalemos el plugin que va a hacer un excelente trabajo con TypeScript. Así que darn ab menos capital D, TypeScript slash analizador y TypeScript slash ES lint login. Tuve un error. Veamos. No se encontró el analizador TypeScript. Oh, lo siento, no es analizador TypeScript. Es TypeScript ES analizador de pelusas y TypeScript dash Eastland, plutonio Eastland. Y viste que ahora tenemos estos desconcertantes errores de guión estancado. Puedes simplemente eliminarlo o ponerlo en el gitignore. Prefiero ponerlo indicado ni digo todo lo que empieza con una extensión de log, solo ignórala. Entonces estrella dot log, ignóralo. Ahora se puede ver que el desenlace de error de guión malvado se volvió gris. Perfecto. Ahora en el analizador aquí, vamos a decir, vamos a decir tipo, usa el analizador de barras de pelusa TypeScript ES. Vamos a ampliar la configuración. Y esa configuración proviene de estos plug-in que instalamos. Por lo que decimos plug-in columna, TypeScript, ES barra de pelusa recomendada. Slash recomendado es básicamente un conjunto de reglas opinionadas de los autores de estos paquete de pelusa TypeScript dash ES. Eso solo te da las mejores opciones para ES enlazadas. A diferencia de las reglas predeterminadas que son mejores prácticas y demás. Eso es lo que estamos haciendo aquí con estas extensiones y dándole este valor aquí. Sólo estamos ampliando un conjunto de reglas con mejores prácticas. Ahora que lo tenemos todo, también instalemos enlaces de dependencia de dev ácido y también más bonitos. Me estás diciendo, ¿por qué estás, estás instalando estos paquetes si ya estamos usando estas extensiones aquí? Bueno, una cosa es tu IDE usando estas extensiones. La otra cosa es instalar estas dependencias para que pueda hacer lo que está haciendo el ID. Pero desde la CLI, es solo una buena práctica porque probablemente estés usando algo muy esotérico como Vin, que es una tasa de identificación complicada de usar. Ni siquiera es una idea. Creo que es como editor de texto o algo así. Si estás usando eso y eso no tiene como un plug-in para su inclinado o para más bonito de lo que probablemente quieras hacer ese formato de código o linting desde la línea de comandos. Vale, por eso estoy instalando estos paquetes en el paquete Jason. Por lo que ahora hemos vinculado, tenemos muebles, y podemos empezar a crear algunos scripts aquí con el fin formatear nuestro código o vinculado o código. Vamos a hacer eso más tarde. En este momento. Solo quería hacerte saber por qué instalamos es lyndon más bonita una de las cosas que el paquete realmente hace algo desde el enlace CLI, hilo más bonito, lo que sea. Otra cosa es que tu ID. Lo hace instalando la configuración de extensión. Ok. Entonces eso es todo para la configuración, para todo el abrigo de calderas. Simplemente haz un git add git commit con tu mensaje. Por lo que eso no perdió estos avances. Espero que te haya gustado este video. Nos vemos en la siguiente. 9. Configuración inicial Parte 2: En este video, vamos a seguir haciendo algunos cambios de configuración. Sé que son aburridos, pero créeme, si lo haces bien desde el principio, va a ser mucho más divertido escribir código porque ya no teníamos que preocuparnos por ello. Empecemos desde el principio. Y entonces solo vamos a escribir códigos y probablemente hacer algunos cambios de configuración, pero va a ser mínimo. Entonces vamos a entrar en estos archivos de configuración ts y vamos a modificar a cosas que van a ser importantes. El primero es la cerveza de raíz. Entonces esto básicamente le dice a tipos grupo, ¿dónde están sus archivos? Y voy a escribir todos mis archivos TypeScript y escribir el directorio fuente que aún no he calificado, pero puedo hacerlo ahora mismo. Haz tu fuente. En estos directorio vacíos. Vamos a escribir todos nuestros tipos de archivos grid. Y la segunda cosa es estas querida opción. Así que básicamente voy a decir que cuando compilar los archivos TypeScript, quiero poner todos esos archivos compilados en estos directorio de compilación. Como estamos haciendo estos, queremos poner eso dentro de este archivo gitignore porque no queríamos entrar en la compilación del proyecto. Esas son las únicas dos cosas que quiero hacer en el archivo de configuración ts. Ahora vamos y vamos a abrir el archivo JSON del paquete. Aquí, vamos a sumar algunas dependencias. Te voy a explicar cuáles son estas dependencias, aunque vas a entender las mejores, las usamos. Eso es genial. Algunos guiones también. Entonces, antes que nada, recuerda lo que te dije en el último video. Instalamos este blogging en código VS. Pero supongamos que estás en eso usando este código y estás usando algún ID esotérico o editor de texto, entonces necesitas dar a otros desarrolladores una manera de inclinarte y formatear su código. Para eso, vamos a crear dos scripts aquí del uno para LinkedIn. Y vamos a decir que es fuente vinculada. Vamos a ordenar, vamos a vincular esos archivos con una extensión TS. Te estoy diciendo aquí estas escriturales solo vincularon la carpeta fuente, todo dentro de la carpeta fuente y todo lo que tiene una extensión tf. Puedes hacerlo más general. Por ejemplo, puedes decidir apoyarte en todo lo que hay dentro de aquí. Pero si haces esto, asegúrate de poner E está vinculado ignorar archivo con los módulos de nodo y la carpeta Build. De lo contrario vas a inclinar cosas que no quieres prestar. Sólo voy a hacerlo así, mantenerlo simple. Y luego voy a añadir otro script llamado formato, donde vamos a usar lo más bonito. Creo que ese comando podría ser algo así, ¿verdad? Y tenemos que especificar a qué queremos formatear. Entonces voy a decir fuente una slash, todo aquí adentro. Todo lo que termina con el archivo dot txt. De nuevo, puedes hacerlo más general como guión más bonito, guión, punto derecho. Pero entonces hay que crear el archivo de ignorar punto más bonito con el fin de ignorar la carpeta de módulos de nodo. De nuevo, vamos a mantenerlo simple. Hagámoslo así. Vamos a probar estos dos guiones aquí. Agreguemos un archivo de índice dot txt. Y hagamos algo así como tipo de pruebas sin costo en la cadena aleatoria de asignación. Mi extensión VS Code me está diciendo, Hey, tienes un problema aquí. Pero supongamos que no estás usando este código, entonces tenemos que de hecho que estoy tratando de formatear y guardar y no puedo recordar, yo estaba haciendo algo aquí. Entonces si le dijera al editor ese formato en seguro a verdadero, entonces cuando guardo este archivo, se puede ver que más guapa está agregando aquí el punto y coma. Y eso es porque aquí especificé esta cosa. Soltero, Soltero, lo siento, semi igual a verdad. Si quieres hacerlo como lo que hice ahora mismo por seguro de metano, ve a la configuración que archivo JSON, que será. Probablemente aquí tengo un atajo, pero lo puedes encontrar con este ícono de engranaje. Ve a la configuración, y puedes configurarlo en la interfaz de usuario o puedes ir a este ícono aquí y decir ajustes abiertos. Y Jason, y yo usamos a Jason porque para mí es más fácil. De verdad. Basta con añadir esta opción aquí, editar, editor que formato inseguro igual a verdadero. Y luego cuando guardes tu archivo, vas a formatear tu código con predicador. Pero supongamos de nuevo, no tienes una identificación como esta, entonces solo necesito hacer lo siguiente. Eso significa, permítanme que esta opción sea falsa. Entonces si guardé el expediente, no va a admitir ese punto y coma. Así que voy y ejecuto este formato de hilo de comando, y lo puedes ver en ese punto y coma para mí. Ahora si corro durante el viento, vas a ver que tengo este problema. La prueba es asignar el valor pero nunca se usa. Tienes que solucionar estos problemas. Y básicamente, llegamos a hacer cualquier cosa aquí porque esto es sólo una prueba que yo estaba haciendo. Pero así es como se captura Es Lean terrorismo errores más bonitos con estos guiones. De hecho aquí también puedo este comando fijo. Me gustó esto. Tratará de corregir estos errores o advertencias aquí, pero a veces puede porque Eastland va a quitar tu variable, eso será una lástima, ¿verdad? Entonces cuando tengas otros problemas solucionables, estas banderas solo lo van a hacer por ti. De acuerdo, entonces ahora tenemos estos guiones. Quiero sumar dos más. Ese va a ser el comando build. Sólo voy a ejecutar TSC. Gsc significa construyó el compilador del proyecto TypeScript usando todas estas propiedades, escuchando el conflicto de TA que Jason. Vamos a sumar también un cheque tipos, que va a ser el mismo comando TSC. Pero vamos a añadir estos bandera sin imagen. Entonces lo que esto es talentoso TypeScript es básicamente no construir nada, solo revisa los tipos. Asegúrate de que sean correctos. Asegúrate de que no estamos haciendo nada raro. Sí. Esa es la bandera de no Emmett. Ok. Creo que ya hemos terminado. Ahora. Hagamos dos cosas más. Vamos a sumar las dependencias que vamos a utilizar. Obviamente vamos a usar un jazz Z-score, que es la dependencia más importante aquí. Ese es el punto este curso usando estas biblioteca de ajuste de discordia. Y luego vamos a sugerir a los constructores de barras. De acuerdo, así que voy a tomarme un momento para explicar qué es este descortés paquete lésbico. Por lo que podemos escribir código solo con estos t-score dot js biblioteca. Y eso está totalmente bien. Pero la documentación que guía en realidad te recomienda usar estos paquete Z-score js slash builders con el fin implementar el patrón constructor de son algunas clases que se utilizan para poder cortar comandos, cosas así. Si no sabes cuál es el patrón constructor, te recomiendo encarecidamente que leas al respecto porque el patrón del constructor está en el patrón de signo. Si no has escuchado este término antes, el patrón de signos, de nuevo, te sugiero encarecidamente que leas sobre él porque si quieres convertirte en un verdadero desarrollador de software suave, real, y tal vez eres un desarrollador de software, pero un buen desarrollador de software, entonces necesitas saber cuál es el patrón de constructor. En realidad es una pregunta de entrevista bastante común cuando te preguntaron, Oye, ¿sabes de los mismos padres? Hábleme de ello. Dime cuáles son el patrón de diseño conductual o algo así? Los patrones de diseño creacional y cosas así. Entonces el patrón constructor es un patrón de diseño creacional que nos permite construir objetos con métodos en lugar de pasar todo a su estructura de costos. Por lo que en realidad es bonita, bastante útil, Bastante genial. Sugiero leer al respecto. Esta es la biblioteca que vamos a usar un wrapper para la partitura JS para usar estos constructores. También vamos a usar este z-score solo rebanar el descanso. Los puntajes. Tipos de Api. Estas dos bibliotecas nos van a permitir hacer una llamada API a la API. ¿ Por qué queremos hacer una llamada API a la API z-scores? Bueno, básicamente porque queremos registrar nuestros comandos de slash. Para registrar nuestros comandos slash, necesitamos hacer una llamada API al sqrt y decir, Hey, estos son mis comandos, los registraron. Y sí, esa es básicamente la función de estas dos bibliotecas aquí. Entonces queremos usar dot f para gestionar nuestras variables de entorno porque vamos a tener tres variables de entorno. El token, token secreto del pero, el ID de aplicación en el ID de gremio o el ID del servidor. Recuerda, la constante en el contexto de los lazos de programación en estas puntuaciones y cosas así. Los servidores se llaman gremios. Una dependencia más, que va a ser NPM o tío, que nos va a permitir crear un guion que se ejecuta secuencialmente o en paralelo, en nuestro caso va a ser secuencial. Vas a ver para qué es útil esto. Una biblioteca bastante cool. En realidad. Agreguemos esta cosa. Después de que hicimos esto. Eso es esperar a que esto termine. Vamos a sumar algunas otras dependencias de dev. El primero va a ser tipo de nota nodo. Básicamente, si estás trabajando con conocerlas, ten viaje estas bibliotecas. Básicamente obligatorio. O si vas a encontrar problemas de intercambio de Bay. Siempre lo tuve. Cuando esté utilizando sepa que TypeScript. Entonces vamos a agregar otra dependencia dev, que es el nodo uno. nodo uno va a utilizar para iniciar nuestro servidor de desarrollo. Cada vez que hagamos un cambio, el servidor va a detectar ese tanque. Reinicia el servidor por nosotros para que no tengamos que parar para servir como comenzó de nuevo. No, el nodo uno va a estar a cargo de eso. Uno más. Va a ser ts node. Recuerda que te dije que no íbamos a hacer una llamada API. Entonces la API de discordia. Entonces vamos a ejecutar el archivo, que vamos a llamar registro un alijo comandos dot ts. Y estos registros, dash, dash, guión comandos dot dS va a ser como un guión o algo así. Cada vez que iniciamos el AB en producción o reiniciamos el servidor de desarrollo, vamos a ejecutar este script y luego arrancamos el servidor o iniciamos la bombilla y el servidor. Va a ser una secuencia de comandos ejecutados primero, ejecutar este archivo y luego arrancar el servidor. Para ejecutar el archivo TypeScript, necesitamos usar estos nodos Ts porque no podemos simplemente ir y decir, Hey, no hay nombre de espacio del archivo. Eso no va a funcionar porque es un archivo TypeScript en producción, no necesitamos esto. Y por eso estamos agregando estas dependencias de desarrollo. Ya te expliqué por qué necesitamos estos npm correr toda la dependencia. Esto se debe a que queremos ejecutar primero el script, el script de comando register slash, y luego iniciar el servidor. Y estoy poniendo estos en las dependencias y no en las dependencias dev porque queremos hacer eso también en producción. Si lo he puesto en dependencias dev, no se va a instalar en producción. Eso es básicamente todo. Eso es esperar a que esto termine. Y eso en realidad se eliminó este archivo de índice. Eso es todo por este alelo de video un poco demasiado largo. Entonces en el siguiente video vamos a agregar nuestros archivos de entorno. Por eso espero que te haya gustado este video. Nos vemos en la siguiente. Adiós. 10. Configuración inicial Parte 3: De acuerdo, continuemos con la configuración. Vamos a usar WAF como te dije, para leer nuestras variables de entorno. Por eso aún no los hemos definido, así que vamos a crear dos archivos. El primero va a ser plantilla de puntos EnB, y la otra va a ser esa sólo la plantilla de puntos EnB. Vamos a tal como sugiere el nombre de archivo, poner plantilla de nuestras variables de entorno. Vamos a necesitar el ID de solicitud. Vamos a necesitar identificarnos. Y vamos a necesitar el token, el token secreto de la, pero sólo voy a copiar todo aquí y pegarlo aquí. Y obviamente ese punto NB archiva el que va a tener los valores reales. Y no queríamos comprometer esos valores en un repositorio. Apenas agreguemos otra entrada a nuestro git. Ignorar todo lo que termina con una EnB, luego ignóralo. Ahora puedes ver que NBC en gris porque no queremos comprometerlo en GitHub. ¿ Cómo obtenemos estos valores reales? Vayamos al portal de desarrolladores d cuadrado. Vamos a la información general aquí. Puede encontrar el ID de la solicitud. Así que vamos a copiar y pegar aquí. Entonces vamos a buscar la identificación del gremio. Para conseguir el GIL que sí tenías que ser, hay que empezar habilitado el modo desarrollador en estas casillas. Por lo que sólo tiene que ir a Configuración de usuario. Y creo que debería estar en algún lugar bandas auditivas tal vez, sí, aquí tienes el modo desarrollador, solo habilitarlo. Y luego vas a poder copiar tu ID de gremio desde donde decía. Déjame ver, vamos a la configuración del servidor. ¿ Dónde está el ID de culpa? Creo que tenemos que hacer clic derecho en el servidor en el panel izquierdo aquí y simplemente copiar el ID. Así que sólo voy a copiar el DNI e ir básico aquí. Se ve muy, muy similar al ID de la aplicación, pero no lo es. El token va a estar escuchando por dentro, pero haga clic en el token Reset que se va a mostrar en primer lugar si no has creado, si aún no has conseguido el token, y esto es va a ser el token secreto. Por lo que sólo haga clic aquí, cópielo y péguelo aquí. Obviamente voy a eliminar este token después de terminar de grabar este curso, así que ni siquiera intentes usarlo. Recuerda, estas son como la contraseña de tus barcos, nunca la compartas con nadie. Por lo que ahora tenemos nuestro archivo ENV, nuestra plantilla DMV. Ahora, un patrón que me gusta usar en todos mis proyectos y cursos facilidad de uso o para centralizar todas estas variables de entorno en un solo archivo. Así que empecemos a escribir nuestro primer archivo TypeScript, que va a ser el punto de conflicto ts. Vamos a importar punto m del punto F. Y vamos a decir dot eso con el conflicto. Esto básicamente dice, Oye, ve a ese archivo BNB y obtén todas esas variables de entorno. Ahora vamos a exportar const el token, que va a ser proceso ese token de punto de la NBA. Vamos a hacer una, no sé cómo decir esto como un valor predeterminado de una cadena vacía. Porque si pasamos el cursor sobre estos, ves que el proceso de token BNB puede ser una cadena o no definido. Pero queremos que siempre se defina para que no tuviéramos errores de TypeScript raros. Esto va a ser de tipo, string y stream o undefined. Entonces eso también es un patrón que me gusta usar. Entonces vamos a exportar el ID de aplicación const, que se va a procesar en un ID de aplicación de punto F o cadena vacía. Y luego exportar const gremio ID, que se va a procesar la EnB para una industria. Al hacer estos o cadena vacía donde estamos atando tanque TypeScript, ID de aplicación Tolkien y el ID todo va a ser definido siempre como una fuerza. El k que ni siquiera estamos definiendo, definiéndolo aquí. No se preocupa. discordia se va a quejar que lo estás pasando un anti fuerza. Esto es simplemente básicamente para evitar errores de TypeScript cuando codificamos. Este es el patrón como usar porque aquí puedo verlos todos. Medio ambiente, la Biblia no está haciendo proceso que soy ficha gorda en un lugar aleatorio en el código. Entonces Ben, teniendo, teniendo una muñeca alrededor del código, es mejor tener un lugar centralizado para cenar. Creo que ahora tenemos nuestra configuración de variables de entorno para nuestro proyecto y están listas para usarlas. Tenemos que hacer un paso más de configuración. Pero esta vez va a ser bastante fácil. Así que hagamos eso en el siguiente video. Adiós. 11. Configuración inicial Parte 4: Hola. En este video, solo vamos a crear un repositorio en GitHub. Si no tienes contando GitHub que solo calificar estos, muy, muy fácil de hacer. Entonces ve a reposo y crea un nuevo repositorio. Vamos a llamarlo. No sé el marcador, claro. Voy a decir un repo por estas puntuaciones. Curso. Voy a hacerlo público. Y voy a crear el REPL. ¿ Por qué necesitamos nuestro repositorio? Bueno, básicamente porque queremos conectarlo con Heroku cuando lo desplieguemos. Entonces cada vez que hagamos a un comediante alguna rama, va a ser el maestro o el principal, donde quieras llamarlo. Entonces heroico iba a leer desde el rebelde, desplegado automáticamente a un servidor de instancias. Para vincular el servidor, lo siento, el repo con nuestro repositorio local, necesitamos hacer algo como esto. Ya estábamos tenemos un repositorio existente. Copiemos todo aquí haciendo clic en este botón. Y ahora vamos a nuestra CLI, nuestra terminal. Sólo copiemos y peguemos. Ahora. Invitar a refrescar esta página aquí. Se puede ver que ahora tengo, tengo algún código aquí. Eso es todo. Eso es todo lo que quería mostrarte. Es muy importante esta parte, porque sin el repo, no vamos a tener la integración de Heroku. Eso es todo. Ahora, en realidad podemos empezar codificar y esa va a ser la parte divertida de esto. Te veo en el siguiente video. Adiós. 12. ACTUALIZACIÓN: Arreglar las versiones del paquete: Hola y bienvenidos de vuelta. Como dije en videos anteriores, vamos a utilizar versiones específicas de los paquetes relacionados para desalentar el jazz porque son demasiado mucho título. Cambian muy a menudo no están en el lanzamiento v1. Se pueden ver estas faldas JS wheelers es un acero sobre 0.12. Entonces esto no es a pesar de que el lanzamiento v1, por lo que es muy, muy cambiante. Para arreglar estos paquetes se van a decir Jahren. Estos Juzgados de Justicia exuberantes constructores en varios puntos de puntos aquí. Estos anotaron el jazz slash rest en 0.3, y estos anotaron tipos API 0.30 puntos 0. Este script.js se encuentra en el oriente en la versión 13, versión 13. Pero aún así, si de alguna manera actualizamos esta cosa, vamos a tener problemas de compatibilidad con estas otras bibliotecas. Sólo vamos a hacer lo mismo con VSCO o jazz y 13.6. Cuando hagamos esto, veamos qué pasa. Se puede ver que ahora estos cuatro paquetes cambiaron. Ya no tiene estos signos de quilates, lo que significa que ahora no podemos intentar actualizar estas otras dos versiones de estos paquetes. El John Locke también cambió porque esto es lo que se utiliza para arreglar estas cosas. Eso es todo. Esto es muy importante. De lo contrario probablemente tengas problemas con las bibliotecas. Espero que te guste verte en el siguiente video. Adiós. 13. Hacer que el Bot vaya en línea: Vamos a empezar a crear nuestro bot. Entonces vamos a crear un nuevo archivo y dentro de la fuente, golden main.js. Y eso es un comienzo el cliente importante desde el marcador, Jess. Eso es genial. La nueva variable cliente, la nueva palabra clave. Ahora vamos a tener estos errores TypeScript. Si ves aquí dice esperaba el que discutía sobre agallas 0. Como puedes ver aquí, las opciones son un argumento obligatorio porque no tiene un signo de interrogación antes de la columna. Si es lana, entonces será opcional, pero no tiene. Vamos y control-haga clic aquí o Comando haga clic donde sea. Podemos ver que el cliente es una clase que extiende los planes base y su constructor espera estas opciones argumento que es de tipo opciones de cliente. Veamos cuáles son las opciones de este cliente. Para que puedas especificar muchas cosas, cartas, conteo de camisas, y hacer efectivo. Y observa que todos son opcionales porque tienen estos interrogante ante la columna. Pero hay uno que no es opcional. Y es esta propiedad intensa aquí. Esta es la que tenemos que precisar. Porque de lo contrario vamos a tener ese error aquí. Los otros son opcionales. Si vamos aquí a la definición de tipo de esto, se está complicando. Entonces, en lugar de intentar adivinar qué es esta cosa, se va a la documentación, será más claro. Si vas a d squared j's esa guía y vas a la puerta de entrada intensa sección. Vas a decir qué intentes son. Intentos Ghibli fueron introducidos por dy squared. Entonces los desarrolladores de bots pueden elegir qué eventos recibe su sangre en función de qué datos necesita funcionar. Eso es básicamente todo. Esa es la frase más importante aquí. Básicamente, si estás montando un autobús y nombre es usado por mucha y mucha gente. Quieres asegurarte de que solo reciba los datos que necesita para que funcione. De lo contrario, vas a tener problemas de escalabilidad porque tu cuerpo va a tener, va a recibir montones y montones de eventos. Lo han hecho aseado. Déjame ver, Habilitar, habilitando intenso. Puedes ver para especificar lo que quieras que recibas tu buck. Primero, piense en qué eventos necesita operar su botón. A continuación, seleccione la intención requerida y agréguelas a la estructura de costos de su cliente como se muestra a continuación. Todo el gateway intenso y los eventos pertenecientes a cada uno se enumeran en la documentación de la API de Discord. De acuerdo, Entonces esta es la parte importante aquí. Vamos a ir aquí. Y da un ejemplo. Si necesitas que tus traseros reciban mensajes, necesitas tener intención de mensajes de gremio. Nosotros queremos eso. Lo vamos a sumar más tarde. Si querías que tu trasero publicara un mensaje de bienvenida para un nuevo miembro, entonces necesitas que el miembro del gremio en indi sugiere que necesitas una intención de miembros del gremio, y así sucesivamente. Así es como se especifica esta cosa. Intenso que abandera esa culpa. Por lo que necesitamos conseguir eso de estos patios también. Pero vamos primero a la documentación de la API de discordia y veamos cuáles son los incidentes aquí. Por lo que tenemos los gremios, lo que permite, te permite crear gremio crear gremio de actualización, eliminar, canalizar, Crear actualización de canal, eliminar canales, actualización amenazas de grado de subproceso, o eliminar etapa grados de instancia. Y muchas cosas. Para los miembros del gremio. Puedes agregar miembros, actualizarlos, eliminarlos. Para bandas se pueden entonces miembros para emojis. No puedes actualizar actualizaciones de pegatinas emojis, gillion integración gremio web hooks, presencias, gremio chicos fincas mensajes de Gil. Esta es la que vamos a usar mucho. ¿ Qué más? Mensajes de culpa, reacción, creo que también se usarán en el discurso. Mensajes con el fin de enviar DMs, reacciones directas de mensajes y mecanografía directa de mensajes, horario de eventos, etcétera. Hay algunos que son privilegiados, intensos, como las presencias calificadas y miembros ceder por su sentido. Si la naturaleza de los datos. Entonces básicamente puedes usarlos, pero cuando llegues, cuando tus botones, como muy famosos, entonces necesitarás verificación de tu trasero para apoyar esta cosa aquí. Pero no los vamos a utilizar en este curso. Para que estés al tanto. Estos se pueden usar antes de que tu parachoques se haga famoso. Y tenemos limitación de tasas. Dice que se les permite enviar 120 comentarios de gateway cada 60 segundos, lo que significa que puedes enviar un promedio solo dos comandos por segundo. Clientes que superaron su límite inmediatamente se desconectaron de la puerta de entrada. Y de manera similar a la API HTTP, los delincuentes reincidentes tendrán revocado su eje API. Entonces, ¿eso es qué más? Bueno, puedes, puedes aprender mucho sobre todas las cosas aquí. Creo que solo quería mostrarte cuáles son estas intenciones de Gateway. Por ahora. No nos vamos a preocupar por ellos, pero aún tenemos que especificarlo. Vamos a decir intenso, y vamos a decir una matriz vacía. Va a sumar lo intenso más tarde. Ok, Ahora tenemos que iniciar sesión al cliente, pero antes de cargarle al cliente, iniciar sesión básicamente significará que su cuerpo va a estar en línea. Antes de hacer eso, voy a crear un oyente listo. Entonces cuando un cliente esté listo, vamos a recibir un evento. Creo que se llama Listo o algo así. Solo vamos a sacar el registro de la consola diciendo que nuestros cuerpos en línea. Vamos a crear la nueva carpeta de oyentes. Aquí vamos a crear primero un archivo Ready dot txt. Índice. El archivo ts en inlisto. Voy a exportar provocó una función no lista que va a recibir un cliente que va a ser de tipo. Cliente. El código es genial porque me permite auto importar al cliente de la discordia. Adivina. Voy a decir que los clientes están listos. Entonces cuando recibamos estos eventos listos, entonces vamos a hacer algo. Veamos qué vamos a hacer. Dentro de aquí. Vamos a decir registro de consola. Voy a decir que vamos a usar una interpolación de cadenas y decir cliente que el usuario, que el nombre de usuario está en línea. ¿ De acuerdo? Ahora TypeScript se queja diciendo que el objeto es posiblemente conocido porque el usuario es posiblemente. Mira la definición de tipo aquí. Déjame pasar el cursor de nuevo, un cliente o usuario o un nulo. Por qué puede ser no. Pues recuerda que creamos primero y obligación y eso, pero luego después creamos duplicación, el brote no es obligatorio para tener una aplicación. Llegamos a tener una aplicación que no tiene usuario amigo. Y por eso usted, señor. De acuerdo, así que básicamente podemos resolver este problema simplemente poniendo aquí estos signo de interrogación. A esto se le llama el encadenamiento opcional y se enfría la función de madre y JavaScript, pero lo obtenemos de forma gratuita cuando estamos trabajando con ese script. Ahora vamos a ir a nuestro archivo principal y vamos a llamar a estas función no lista. Pero primero, vamos a escuchar este archivo de índice que vamos a exportar en listo desde ya. Ahora. Básicamente podemos simplemente exportar desde el archivo de índice. Y eso significará que sólo tendremos que importarlo de una slash oyentes en lugar de su última correa es slash oyentes como rayo de azotes. Porque vamos a tener más oyentes aquí. Ahora no está listo. Recuerda estas necesidades. Los clientes van a pasar a un cliente. Y ahora vamos a decir token de registro de clientes. El token, recuerda que lo definimos en el archivo de conflicto. Ahí está. Ahora tenemos nuestro cliente conectado. ¿ Cómo empezamos esto aquí? Bueno, empecemos creando un raspado dentro package.json. Entonces aquí voy a crear un nuevo script llamado Sordo columna main. Voy a usar el nodo uno, fuente de nodo, main.js. Entonces el nodo uno es genial porque maneja automáticamente archivos TypeScript. No tuvimos que hacer ninguna configuración loca para que funcionara con TypeScript. Entonces vamos a ejecutar este comando con hilo, columna media, y esperamos que funcione. Pero curso dev East en línea. Entonces vamos a estas puntuaciones. Y como puedes ver aquí, mi capullo, estos en línea, está abajo. Está por encima de mí. Y sí, el curso de bulbo amplio, desafortunadamente. Desafortunadamente, el acero de la tierra porque aún no lo hemos desplegado. Pero sí, está en línea, así que logramos iniciar sesión nuestro bot aquí. Tan cool, Eso es todo. Vamos a hacer estos videos. Y vamos a empezar a divertirnos más en los próximos. Adiós. 14. Ping Pong: En este video, vamos a empezar a crear nuestra primera interacción con sobre. Lo que vamos a hacer es que vamos a escribir rosa en un canal, canal de servidor. Y el cuerpo va a responder con punk. Es un ejemplo muy, muy sencillo, pero vamos a aprender muchos conceptos. Vayamos aquí y tecleamos en mensaje crear. Vamos a importar el cliente desde el score dot js. Voy a exportar contras esto en mensaje crear oyente, que va a conseguir el cliente de tipo cliente. Vamos a decir cliente que aquí tenemos todas estas opciones. Pero el que vamos a conseguir un mensaje crea la curva. Estos van a ser la devolución de llamada. Cuando recibimos un nuevo mensaje. Estos reciben un mensaje que va a ser de tipo mensaje. Se pueden ver métodos de tipo. En primer lugar, vamos a hacer un dicho tecnológico Si los exhibe autor del mensaje, este mensaje de método tiene una propiedad de autor. Y estas otras propiedades de Roberts de tipo usuario. Y este tipo de usuario tiene estos pero propiedad que me dice si el usuario E sub mantequilla o no. Y es un booleano, así que es verdad o falso, entonces vamos a volver. Entonces si esto es cierto, vamos a volver porque no queremos escuchar mensajes que vienen de golpes. Entonces vamos a conseguir el contenido del mensaje, que va a ser mensaje que el contenido que toLowerCase prueba caso. Vamos a decir si contenta estos igual a rosa. ¿ De acuerdo? Vamos a responder a estos mensajes. ¿ Cómo respondemos a un mensaje? El mensaje tiene métodos de respuesta y podemos pasar una sincronización de cadena o una carga útil de mensaje o un mensaje de respuesta opciones. Puedes seguir control-click aquí. Y si te interesa ver todas estas cosas aquí, puedes consultar las definiciones de tipo. Vamos a hacer las cosas con una carga útil de mensaje en el futuro. Así que por ahora vamos a mantenerlo simple y simplemente pasar una cuerda. Va a ser una cadena interpolada porque vamos a conseguir el nombre para mostrar del, la persona que envió el mensaje rosa. Digamos que el mensaje no recuerda, punto, display, nombre, columna. El punk. Mira a estos miembros es una propiedad opcional. Siempre, siempre es un opcional apropiadamente desde el mensaje. ¿Por qué? Porque este mensaje se puede enviar desde un, desde un servidor o puede enviarse en un DM. Vamos a ver cómo hacer que estos funcionen en ADM en un momento. Pero por ahora, esto está haciendo, estos, haciendo uso del operador de cadena opcional para ver si estos no son nulos o si esto no existe, entonces esto va a estar básicamente en definido. Entonces va a decir punk columna indefinido. Pero no te preocupes, vamos a encargarnos de eso cuando aprendamos a hacer que el botón funcione en una DM. De acuerdo, así que ahora vamos al archivo de índice. Vamos a exportar desde el mensaje crear. Vamos a exportar el mensaje crea la función. Vamos al archivo main.js y debajo del no listo, vamos al mensaje, el cliente. Pasemos a un cliente. Y creo que casi estamos terminados. Necesitamos una cosa más. Y esos son los intensos. Recuerda que nuestro cuerpo no va a tomar información innecesaria. Por lo que necesitamos especificar qué tipo de información queremos que reciba el bot. Vamos a la documentación donde hablamos de esos intensos, intensos. Así que recuerda, aquí tenemos la puntuación Z, la documentación de la API. Para mí, al menos no es 100% claro, pero necesitamos estas intenciones porque necesitamos recibir mensajes de un canal de gremio. Una vez que obtenemos esa información del canal y cosas así, como por ejemplo, canalizar crear, actualizar, eliminar. Entonces vamos a conseguir los mensajes. De los gremios. Entonces vamos a necesitar esta intención de mensajes de gremio. Necesitamos aquellos demasiado intensos aquí. Así que vayamos e importemos intensos para luego ponernos intensos. Esa culpa de lunares de lino construye un intenso que las banderas salpican a Gil los mensajes. Hola. Está bien, perfecto. Entonces ahora si vamos al servidor, yo estaba haciendo algunas pruebas. Ahora vamos a tratar de escribir. Necesito entrar en respuesta con punk. Debate es mi nombre para mostrar. Puedo editar mi nombre para mostrar haciendo algo como esto, guardar los cambios. Y si escribo rosa, va a responder con el punk retest. ¿ Por qué? Porque estamos diciendo que haga eso en el código. Te estamos diciendo que consigas el nombre para mostrar. Está bien, perfecto. Por lo que ahora si trato de escribir ping en un mensaje directo, se puede ver que los brotes así no quieren responderme. ¿ Por qué es eso? Bueno, hay una razón si vamos al disco o guía GIS y vamos a la actualización desde V12, versión V13 de d cuadrado. Jess, vas a ver estas cosas en los canales m. Dice Estos al cuadrado API V8 y posteriormente al final los canales no emiten el pueblo crear la banda. Eso significa que estos criterios piden que no pueda cobrarlos automáticamente. Recuerda que estos tau crea viene de estos gremios sangría aquí está. Chattel crea. No hace eso en d squared API versión ocho. Entonces para que tus bots recibieran las m, ese canal parcial debe estar habilitado. Eso lleva, nos lleva a otra pregunta. ¿ Qué son los parciales? Aquí tenemos en la propia guía sección llamada estructuras parciales. Se puede leer a través de este párrafo. Pero lo más importante aquí es esta última frase aquí. Antes de esta característica. Estos precioso cliente, los eventos no emitirán si uno de los necesarios es estructurado escuela no se construya con suficiente para garantizar si estructura totalmente funcional. Si no optas por DCS parcial sigue siendo el caso en nuestro código. En nuestro archivo main.js estás, puedes ver que no tenemos ninguna parcial habilitada. Cuando enviamos un mensaje a sobre en un mensaje directo, IEP no puede decir de qué canal estamos tratando de enviar este mensaje. Si vamos aquí, mensaje ese canal, estos serán indefinidos, pero esta falda JS se asigna lo suficiente para asignarlo a diferentes tipos de tipos. Y suena redundante. Pero aquí tenemos el canal DM, que es algo del guión S. Si tuviéramos que enviar este mensaje desde un directo, desde el mensaje directo interno, no tendrás esa información. Para decirle a estos Cortez, Hey, vamos a tratar de enviar este mensaje a un mensaje directo. Entonces tenemos que habilitar estos canales parciales , y eso es todo. Y también necesitamos otra intención, que es el lino DOT mensajes directos. Uno. Ahora podemos enviar mensajes porque el buck va a escuchar mensajes directos. Y no importa si no teníamos la información del canal porque estamos habilitados que los parciales de canal y vamos a recibir mensaje probablemente va a ser de tipo canal DM o algo así así. Vamos, tecleemos ping aquí. Tenemos punk indefinido, chicos de TI. Ahora, el mensaje, el mensaje no topan los miembros porque el autor del mensaje no es parte de una culpa. Entonces para arreglar esto, vamos a decir mensaje dot dot nombre de usuario. Si vamos a enviar un mensaje, va a tomar mi nombre de usuario en su lugar. Eso es todo. Eso es todo lo que tenemos que hacer para que nuestro mensaje cree oyente, para escuchar mensajes ya sea en un gremio o suficiente mensaje directo. Una cosa más que quería decir aquí es que en este acorde, teníamos estos comandos con un prefijo como comandos. Mundo comenzó con Adán, sin signo de exclamación ni signo de interrogación. No lo sé. Esto es lo que se hizo en el futuro. Iba a revisar algo como, no sé si el contenido del punto del mensaje que comienza con algo como esto, luego manejar el comando de nuevo. Y esta es la vieja forma de hacer las cosas. La nueva forma es usando un comando de slash, y eso es lo que vamos a hacer en las puntuaciones iban a, todo lo demás que vamos a hacer en este curso será a través de una slash comentarios. Son manera, mucho mejor en el manejo de cosas como validaciones, en cosas como manejar opciones arriba. Muchas cosas buenas. Eso es lo que vamos a ver en los próximos videos. Espero que te hayan gustado estos. Asegúrate de hacer un gameto. Nos vemos en el siguiente video. Adiós. 15. Manejo de comandos de Slash: En este video, vamos a conseguir todo lo que necesitamos para poder manejar sus comandos de pestañas. Lo primero que vamos a hacer E es dentro de la fuente. Vamos a definir un archivo llamado types dot ts. Y vamos a crear una interfaz llamada comando slash. Va a tener una propiedad llamada comando, que va a ser de tipo constructor de comando slash. Este tipo proviene de estos patios, constructores de slash, que es la biblioteca que vamos a utilizar para construir comandos. Entonces va a tener run property, que va a ser básicamente una función o una devolución de llamada a la que vamos a llamar cuando manejemos la interacción. Esto va a recibir un parámetro llamado interacción, que va a ser de tipo interacción de comandos. Vamos a devolver promesa nula de esta cosa para que podamos manejar operaciones asíncronas. Y sin embargo estos, este tipo se va a utilizar en muchos lugares. Entonces por eso quería estar en algún lugar centralizado y común para los archivos antiguos. De acuerdo, ahora vamos a crear una nueva carpeta llamada esta slash comandos slash grants. Y dentro de esta carpeta vamos a crear un archivo index.html, no un archivo de carpeta, index.js. Dentro de este archivo, vamos a crear una matriz de comandos de slash. Y cada elemento de esta matriz va a ser de tipo comando slash. Tan fácil, simplemente, hagámoslo como este comando slash, que va a ser de tipo es comando slash. Y va a ser una matriz. Por ahora no teníamos ningún comando, así que vamos por defecto a una matriz vacía. Cuando empezamos a crear nuestros comandos, estas matrices se van a llenar con esos valores. Bien, genial. Ahora vamos y vamos a crear un nuevo oyente aquí. Lo vamos a llamar a la interacción. Efectivamente. ¿ Por qué en la interacción? Genial. Porque como comandos de latigazos son lo que llaman interacciones. Vamos a exportar const en la interacción crear. Esto va a recibir a un cliente que va a ser de tipo cliente desde el flagelo. Va a decir que la interacción del cliente crea. Vamos a tener una devolución de llamada de sumidero para esto. Y esta devolución de llamada asíncrona va a conseguir una interacción con eso en este momento, es de interacción tipo. Recuerda que en nuestro, nuestros tipos va a ser de tipo interacción de comando. Entonces y aquí, estos 0s de interacción tipo, y aquí es de tipo interacción de comando. Bueno, porque una interacción puede ser cuando también haces clic en un botón, cuando seleccionas algo de un menú, o cuando haces algo desde el menú contextual. En primer lugar, tenemos que asegurarnos de que esto es en realidad una interacción de comando, comando. Para eso, tenemos interacción dot comment. Tenemos este método aquí. Y si en un comando entonces vamos a llamar a otra función y otra función llamada handle slash command. Vamos a crear esa función debajo de esta cosa aquí. Vamos a llamarlo manejar comando slash. Esto va a ser un fregadero también. Y va a recibir una interacción de tipo de interacción de comando. En primer lugar, vamos a obtener el comando slash de estos comandos de lash, arrays, comando slash de comandos de slash. Esto es un borrador. Podemos utilizar el método fino Find comando. Vamos a decir es comando slash comando dot comando dot name igual a interacción dot nombre del comando. Déjame ponerlo así. De hecho, solo con el propósito de grabar, haz aquí una cosita. Voy al RC más bonito. Voy a ponerlo a 80 que no puedo. Se puede ver mejor lo que está pasando aquí. Así que permítanme de hecho usar mi script de empaquetado adyacente. Entonces voy a decir maldita formato. Nuevamente, va a formatear todos mis archivos sólo con el propósito de retardar porque mi pantalla no es tan grande. Un comando de slash puede ser un comando de slash o no definido. Tenemos que comprobar si esta cosa está definida primero. Si no está definido porque comando slash no se encontró por cualquier razón. Podemos responder diciendo interacción dot reply. Tenemos que decir comando contenido, no encontrado. Volvemos. Es así como respondemos al, a la interacción, al comando slash diciendo simplemente interacción que responden. Si lo es, si se encuentra el comando slash, entonces vamos a esperar como comando de latigazo dot run y pasamos la interacción. Función tan muy fácil. Ahora aquí en el cliente que sólo vamos a esperar, manejar un comando de slash y pasamos la interacción. Esto. Correcto. Ahora tenemos una forma de manejar cualquier comando. Solo tenemos que empezar a agregar cosas aquí en esta matriz. Y eso es lo que vamos a hacer en el siguiente video. Pero antes de terminar este video, recuerda que no lo hemos hecho, no los hemos utilizado en interacción crear función dentro del main.js. Así que hagámoslo ahora mismo. Exporte desde este archivo de índice. Exportar desde una interacción crea. Exportemos en grados de interacción. Para que podamos conseguirlo desde aquí. Interacción crear cliente. Bien, genial. Creo que eso es todo lo que vamos a hacer en este video. Seré como Es Nos vemos en la siguiente. Adiós. 16. Crear un comando de Hello: En este video, vamos a crear nuestro primer comando de slash. Sólo va a ser un saludo comandos. Así que simplemente buceas como latigazo hola y te va a responder con hola. Y va a mencionar tu nombre para mostrar. Así que vamos a crear un nuevo archivo llamado hola dot. Exportamos const el comando hello, que va a ser de tipo comando slash. Necesita mandar y la propiedad equivocada. Así que primero definamos el comando con un constructor de comandos de slash. Esto es lo que te estaba contando hace unos videos sobre el patrón de diseño constructor. Aquí tenemos dos opciones. Nosotros tampoco, vamos a ver, declaramos clase. Tenemos que establecer básicamente las propiedades llamando a algunos métodos. Esto es lo que vamos a hacer, set name. El nombre del comando va a ser hola y enviada descripción, que va a ser devuelve una línea de saludo. Este es el comando constructor en acción. Lo siento tanto, este es el poder del diseño del constructor en acción. Declaramos la clase y luego comenzamos a sumar las propiedades de esta clase con estos métodos. Aquí. Nuevamente, todo lo que necesita el vaso, se va a sumar por métodos. Eso es todo. Ese es el constructor, el signo tiroideo. Ahora vamos a definir el método run. Recuerda que esta cosa recibe una interacción. Simplemente vamos a decir una interacción de peso. Esa respuesta. Y el contenido va a ser Hola. Vamos a usar una interpolación de cadenas y necesitamos conseguir que el miembro nick, nombre mencionado. ¿ Cómo hacemos eso? ¿ Cómo obtenemos el apodo de membrana mencionado? Bueno, hay dentro estos constructores apodo miembro mencionado. Sólo tenemos que pasarle el ID de usuario. Y eso es todo. Recuerda, mención de apodo, y pasamos el ID de usuario de interacción. Esto es básicamente. Lo que tenemos que hacer ahora es básicamente ponerlo dentro de este comando slash aquí. Digamos hola comando. Eso es todo. Ser tan buena salud para importar esta cosa directamente. Eso es todo. Ahora vamos a empezar a darn def main. Ahora si vamos a nuestro servidor y tratamos de buscar ese comando, vas a ver que no teníamos ningún comando Hello. ¿ Qué está pasando aquí? Entonces para obtener nuestros comandos, recuerde que especificamos estos comandos de aplicación en los permisos. Vamos a brote curso def. Vamos al generador de URL. Así que recuerda que llevamos esta cosa aquí. En estas puntuaciones, hay dos tipos de comandos. Esos son comandos de aplicación que están disponibles para gremios antiguos para todos los servidores. ¿ Sobre cómo activamos esa cosa? Bueno, vamos a entrar mientras que tal vez el oyente no listo. Listo. Después de decir eso, los cuerpos y la línea, podemos hacer lo siguiente. Podemos decir aplicación cliente dot dot set. Y podemos oír dicho todos los comandos. En primer lugar, ver que el cliente, esa aplicación es posiblemente la nula. Así que utilicemos aquí el operador de cadena opcional. Podemos establecer estos conjuntos de demandas. A partir de aquí. Podemos configurarlo aquí básicamente. Pero, ¿cuál es el problema con esto? Bueno, en realidad no hay problema. Hagámoslo ahora mismo. Digamos comandos. Digamos que los comandos de latigazos de esta cosa de aquí. Ese es mi comando bit slash desde aquí. Vamos a conseguir, vamos a conseguir sólo el comando de slash dot comando a JSON. Básicamente donde estamos convirtiendo esta cosa aquí, estas clases aquí, dos objetos adyacentes, eso es algo que el constructor de comandos de slash puede hacer. Sólo podemos pasar comandos aquí. Eso es todo. Así es como registras los comandos de la aplicación. Pero hay una captura en hacer esto. Si ejecuto eso, John def main otra vez y mi libro curso Davies en línea, vamos a entrar en mi servidor y escribir. Hola. Se puede ver que todavía no tengo estos mandos aquí. ¿ Por qué es eso? Bueno, es porque los comandos de la aplicación tardan algún tiempo para propagarse. Puede tardar hasta una hora. Entonces por eso en este curso, también vamos a registrar los comandos del gremio porque son Inmediatos, Inmediatos. Tenemos que solo hacer una solicitud HTTP a la API de discordia y eso es todo. Los comandos se van a mostrar de inmediato. De lo contrario, tengo que esperar una hora para verlos y eso no es conveniente. Pero sí, así es como registras comandos para todos tus gremios. Así que eso es todo por ahora. En el siguiente video, vamos a ver cómo podemos registrar comandos v0 para nuestro gremio solo porque van a ser necesarios. Espero que te haya gustado este video. Nos vemos en la siguiente. Adiós. 17. Registro de comandos del gremio: Hola. Por lo que ahora esperábamos más de una hora tal vez al comando de aplicación disponible aquí en nuestro servidor. Por el, ya sabes, cuando te estás desarrollando, no quieres esperar una o dos horas para probar tus cosas. Quieres que eso esté en mediación. Por eso vamos a crear un guión para registrar comandos de gremio. Lo que tenemos que hacer es ir aquí dentro source y crear un nuevo archivo llamado comandos de rendimiento registrado. Puedes nombrarlo como sea. Por cierto, elegí comandos de culpabilidad registrados y vamos a crear estas función de comando de registro, que va a ser asíncrona. Aquí vamos a hacer un par de cosas. En primer lugar, vamos a definir los comentarios que queríamos registrar. Vamos a obtener los comandos de barra inclinada de estos archivos de índice de comandos de pestañas, y lo vamos a mapear. Y vamos a destruir sólo la propiedad de comando y convertirla a JSON mando que Jason. Vale, eso es básicamente lo que hice aquí en el oyente no listo. Acabo de hacer en la estructura aquí, pero podemos tratar de hacer eso aquí también. Entonces, sí, eso es básicamente lo mismo, malo ahora dentro de este script aquí, si quieres, puedes hacer una función para conseguirla, reutilizarla aquí y a la derecha, un oyente que depende de ti, Sé que van a calificar a estos clientes de descanso con un descanso. Con estos descansos que proviene de estos SIG core es slash rest. Y tenemos que especificar qué versión usar. Voy a especificar que quiero usar versión nueve en el momento en que estoy grabando este video, tenemos que establecer un token para que se autorice hacer el put-call para registrar nuestro rendimiento de aplicación comandos. Por lo que llamamos a este set token y le damos el token de nuestro archivo de conflicto. Por cierto, vamos a envolver todo dentro aquí en un try-catch. Estos dentro del try. Y ahora vamos a decir en el registro de la consola empezando a refrescar los comandos yield. Entonces emitimos la API real call rest dot. Va a ser una solicitud PUT. ¿ Dónde hago? ¿Cuál es el punto final donde vamos a hacer esta llamada API. Bueno, tenemos que sacarlo de las rutas. A partir de estos tipos de API puntuados, VP9. Decimos ruta. La aplicación cede los comandos. Esta cosa, como se puede ver aquí en la documentación de este método. Esta es la ruta para estos tres puntos finales aquí. Por lo que vamos a llamar al punto final put en las necesidades en la URL, el ID de la aplicación y el ID de gremio. Entonces sólo vamos a conseguir el ID de solicitud, el ID de gremio. Y el cuerpo va a ser los mandos que acabamos de reunir desde aquí. Tan fácil como esto. Y luego vamos a imprimir de nuevo que con éxito o recargamos los comandos del gremio. ¿ De acuerdo? Si hay un error por alguna razón sólo vamos a imprimir ese error. Entonces lo último que hay que hacer se acaba llamar esta función aquí. Eso es todo. Ahora estamos listos para registrar nuestro inicio de culpabilidad. Lo siguiente que vamos a hacer es crear o modificar nuestros scripts aquí. Una cosa antes de hacer esto, creo que instalamos NPM o más bien toda dependencia de activos. Pero en realidad no quiero hacer eso. Quería instalarlo como dependencia sorda. Vamos a quitarlo. Con John. Eliminar npm ejecutar todo. Vamos a añadirlo de nuevo. Pero como dependencia de dev como esta, menos capital D npm ejecutar todo. Y se va a sumar como dependencia de dev. ¿ Qué vamos a hacer a continuación? Vamos a definir estos comandos o guiones de culpabilidad de registro. Va a usar D como nodo para ejecutar el archivo TypeScript. Vamos a decir que fuente registran comandos de culpabilidad. Entonces vamos a The find the Sordo, un script que va a usar estos npm run todo NPN Bernal se puede utilizar así para ejecutar comandos secuenciales son como estos a ti para usar para ejecutar comentarios paralelos. Queremos que estos sean secuenciales. Queremos primero registrar los comandos de gremio emitidos esa llamada API. Entonces quiero ejecutar sordos columna main en ese orden. último pero no menos importante, vamos a definir es iniciar el script, que se va a utilizar en producción. Y esto sólo va a ser lo mismo que def main, pero no reconstruido main.js cuando compilamos, cuando construimos nuestro proyecto. De hecho, podemos hacerlo ahora mismo. Jahren construir solo una, puedes ver, verás que se han creado estos Build folder. Y tenemos todos nuestros archivos de fuente. Pero en JavaScript, main.js es esto aquí. que puedan ver que vamos a ejecutar ese archivo en producción y por eso no se le concedió este script de inicio aquí. Pero eso es para el futuro. Por ahora, vamos a correr sordos malditos. Ok. Parece que registramos los comandos con éxito. Si vamos al servidor y el tipo es slash hola, se puede ver que ahora tenemos dos comandos slash. Uno será para los comandos de aplicación, y el otro debe ser para el gremio elogia. Por lo que ahora podemos probar estos de inmediato. Se van a repetir dos veces y desarrollo que no creo que sea un tema. Entonces podemos, si queremos probar el comando fuera del servidor AAA, queríamos probarlo en un mensaje directo. Bueno, no teníamos demasiada alternativa. Tenemos que esperar, um, hasta que el comando Este se registre como comando global. Intenta probarlo, probarlo en el servidor, y luego intenta probarlo en el mensaje directo si necesita estar disponible. Mensaje acidótico. Eso es todo por este video, espero que te guste. Nos vemos en el siguiente video. Adiós. 18. Desplegar A Heroku: Hola, Así que ahora viene la parte divertida. En realidad ahora tenemos algo que funciona. Entonces mi filosofía es que si tienes algo que está funcionando, entonces desplegado lo antes posible como producción. Porque entonces después sólo se va a complicar cada vez más. Estamos en Heroku. Si no tenías una cuenta, entonces simplemente ve a Heroku, heroku.com y crea una cuenta. No hay ciencia al hacer eso. Entonces vas a tener tu tablero. Aquí está dashboard.heroku.com. Y como pueden ver, tengo comprada mi aplicación para mi servidor. Pero obviamente para este curso vamos a ir aquí y crear una nueva app. Se puede llamar curso de bot Discord. Las regiones que puedes elegir Estados Unidos o puedes elegir en el original como, bueno, solo hay dos regiones, sí como Europa, voy a elegir Estados Unidos. Crea aquí arriba. Voy a improvisar un poco. Entonces sí, vamos a conectarnos con GitHub, recordamos que nosotros, nosotros, alojamos nuestro proyecto que ese repo de GitHub. Tienes que empujar todos tus comandos, lo siento, todos tus mandos. Si no lo has hecho, es fácil, solo git, agrega git commit con un mensaje, tu mensaje de confirmación. Bueno, no tenía nada en este momento, así que no me va a decir nada a gamete, trabajar en tratamiento. Y luego git push. Empuje. Si es la primera vez que estás haciendo tu push agenda, tienes que hacer git push menos u origin master o el nombre de la rama, esa es tu rama principal. Entonces después, lo siento, después de que hagas eso, luego van a estos Desplegar y conectar GitHub, conecta tu GitHub y busca eso. Estos 44, sí, tienes que primero, creo, conectar tu cuenta de GitHub a Heroku. Como ya hice eso con mi otro proyecto. No me está mostrando aquí, pero va a incitarte a hacer eso. Si ese es el si es la primera vez que lo haces. Bueno, entonces tengo que poner el nombre de mi repo. En realidad no lo sé que la parte superior de mi cabeza. Entonces si voy aquí, y serán estos, estos anotaron sobre el curso. Así que déjame sólo copiar el nombre de esta cosa. Vayamos aquí y pegamos la búsqueda. Mostrándolo aquí. Sólo voy a hacer click en este botón diciendo que Connect intentará conectarse. De acuerdo, ¿y me está diciendo cuál es mi rama principal? Mi rama principal se llama Maestro. Espera a que pase un CI ante el azul, no teníamos CI. Podemos dejarlo así. Entonces tenemos que ir a los ajustes. Tenemos que ir a las barras de conflicto. Necesito agregar nuestro entorno de desarrollo, lo siento, nuestras variables ambientales aquí. Recuerda en la plantilla EMF tenemos el ID de aplicación que la divide aquí. El valor para estas cosas. Puedes buscarlo en tu buck course prod obligación. Recuerda que es éste de aquí. El valor va a ser esta cosa aquí. Después vamos y añadimos la otra clave, que es el ID del gremio. Entonces el ID del gremio no lo es. Sí, en realidad no necesitamos la identificación de gremio porque el ID de culpa se va a utilizar sólo para el registro. Registrar comando de culpabilidad, lo siento, buscamos culpabilidad, yodo, todo nuestro proyecto. Se puede ver que sólo lo estamos usando aquí dentro de los comandos de registro de culpabilidad. Entonces no vamos a poner esta culpa IV. Y el token, el token que realmente necesitamos, irá a donde se compró una cosa todavía? Restablecer token. Sólo hazlo. Y me va a dar token y me enfrento aquí y agrego el problema del medio ambiente. Creo que eso es todo lo tenemos que hacer básicamente dentro de Heroku. Tan fácil como eso. Tenemos que crear un archivo más en línea. Tenemos que crear estos archivo proc aquí. Estos Procfile, tenemos que poner el hilo trabajador iniciado. ¿ Por qué tenemos que hacer esto? Bueno, cuando implementamos alguna aplicación en Heroku, heroku va a suponer que tu aplicación va a estar vinculada a algún puerto. Pero como pueden ver, nuestra aplicación nosotros, estamos en especificar aquí, hey, une esta cosa al puerto 3 mil o algo así. Esta es una regla general. Si tu obligación de no vincularte a un puerto específico, entonces solo Audi no funciona. Y eso es lo que vamos a hacer aquí. El trabajador necesita algún comando para arrancar al trabajador, obviamente, eso va a ser discorvante para empezar. Recuerda, sabe, construido principal. Heroku es lo suficientemente inteligente como para construir tu aplicación porque va a buscar scripts, algo llamado built. Y va a ejecutar este guión aquí. En primer lugar, se va a instalar las dependencias. Acaba de decir dependencias de dev así como dependencias. Se va a construir tu aplicación, entonces va a eliminar las dependencias dev. Y finalmente se va a ejecutar, maldita, lo siento, el comando que usted especifica aquí, que es discorvante, empieza en este caso. Creo que eso es todo lo que tenemos que hacer. Pongamos a prueba estas cosas. Así que agreguemos un commit, agregó el archivo Brock, archivo para la implementación de Heroku. Vamos a empujarlo. De acuerdo, entonces si hago esto y voy a la actividad, vamos a ver, debería aparecer aquí. Sí, creo que necesitábamos hacer click en este botón aquí. Y van a despliegues automáticos. Entonces veamos si eso resuelve nuestro problema. Supongo que tenemos que hacerlo, tenemos que hacer un comando, hacer un git push otra vez. Así que vamos a hacer algo como esto. Git commit menos, menos un minuto. Estoy aquí al final para que sea diferente. Entonces tenemos que hacer git push, dash, dash force. Ahora, alguna vez montamos la historia. Buena historia, y ahora está apareciendo aquí. Veamos el progreso de la construcción. Esto va a la detective de la aplicación NodeJS. Y dice en peinar binarios y no nevó. ¿ Y es npm usar un resultado de falla en la versión Node? Sí, eso probablemente sea uno. También debemos hacerlo. Pero antes que nada, veamos. Tenemos que especificar aún la versión del nodo que queremos utilizar aquí. Pero veamos qué está haciendo aquí. Se trata de instalar dependencias. Es edificio con John construido. Ejecutar estos comandos TSC. Entonces está imprimiendo las dependencias de dev. Entonces está guardando la compilación en caché con estos gigantescos comandos de efectivo. Entonces es lo suficientemente inteligente como para hacer eso. Y descubrió este tipo de mama, los perfiles declaran tipos de trabajador y web. No necesitamos la Web, así que vamos a desactivar esta cosa aquí. Vamos a C. De acuerdo, así que aquí está. Tomó mucho tiempo para mostrarse. He tenido los recursos de ir a. Y en recursos va a comprar web y trabajador. En web, vamos a desactivarlo. En trabajador, vamos a habilitarlo. Eso es todo. Ahora si vamos aquí para mostrarte más registros de vista, estos van a ser tus registros. Vas a ver que ahora nuestro curso comprado trajo en línea. Eso es básicamente todo. Ya lo tenemos. Nuestro camino va a ser ahora nuestra sangre está en producción. Básicamente. Lo que tenemos que hacer, no se muestra aquí. Se está mostrando aquí. Entonces eso es una sorpresa. Veamos. De acuerdo, entonces funciona. Pensé que iba a tomar más tiempo conseguir aquí los comandos de las aplicaciones, pero fue casi de inmediato. Y eso fue una sorpresa para mí. Pero sí. Ya está ahí. Está en producción y siempre va a ser una línea aquí porque, ya sabes, está en Heroku, así que sí. Sí, eso es todo. Hemos desplegado todo con éxito a Heroku. Espero que te haya gustado este video. Nos vemos en la siguiente. Adiós. 19. Añadir Versión De Nodo En Paquete Json: Hola, Así que sólo una cosa más. Recuerda en la orejeta build, dijo que no especificamos la versión del nodo. Se utilizó la versión LTS de suponer, que es 16.4.2. Entonces creo que eso es una coincidencia. En realidad no está usando el archivo NVM o C, usando la versión LTS Heroku. Por lo que queremos igualar la versión que estamos utilizando en desarrollo a la versión donde usar en producción entonces es fácil solo añadir estos motores, Robert D en el paquete JSON y añadir estos nodos. Estos, ella va a ser la misma versión aquí. Por lo que ahora vamos a dejar que Heroku solo use cualquier versión de nodo que quieran, vamos a usar lo mismo que estamos usando para el desarrollo. Y si lo estás, si estás trabajando en equipo, entonces puedes optar por no actualizarlos hasta que lo sepas, actualizas los paquetes correctamente y cosas así. Entonces eso es algo que sucede mucho cuando estás trabajando en un gran proyecto. No quieres simplemente actualizarte a lo último sin preocuparte por romper cambios y cosas por el estilo. Es por eso que probablemente quieras la misma versión que estás usando y desarrollo en producción, vale, Así que básicamente nos damos por vencidos, todo se agrega la versión del nodo. De hecho, adyacente, Ese va a ser nuestro mensaje de compromiso. Entonces obtenemos empuje. Podemos ir a la actividad y refrescar esta cosa. Ahora tenemos estas nuevas construidas en progreso. Y ahora se puede ver que esto ya no es inespecificado. Se va a usar 16.4.2 es bastante rápido. Estas construcciones, básicamente terminó tan rápido. Ahora podemos ir a los registros de BYU. Se puede ver si. Por supuesto, amplia no está alineada, así que sí. Eso es básicamente todo. Seré como este video. Nos vemos en la siguiente. Adiós. 20. Añadir Comando: Hola. Entonces en este video, vamos a empezar a agregar otro comando, que va a poder sumar dos números. Sé que suena muy fácil hacer y de hecho, es fácil de hacer, pero vamos a empezar a aumentar la complejidad de nuestros comandos a medida que pasan los videos. De acuerdo, entonces vamos a agregar otro comando llamado add app.js. Voy a exportar una variable const llamada comando EPC, que va a ser de tipo como comando lash. Y parece que TypeScript no me está ayudando. Por lo que tengo que importar esto mentalmente como comando slash desde la propiedad de comando y la propiedad. Primero, hagamos la propiedad command, y vamos a usar el constructor de comandos de slash. Así que veamos si VSCode me ayuda a saber comando slash. Sí, parece que esta cabra me ayude a importar automáticamente, eso es el constructor de comandos de slash. Agreguemos una opción numérica. Tenemos aquí un método llamado opción agregar número. Aquí voy a decir opción. Ahora tenemos que empezar a construir estas opciones aquí. Vamos a decir, vamos a pasar una devolución de llamada con una opción que es, que es de tipo su opción de número de comando de latigazo. Y vamos a usar el patrón constructor para construir suposición. Entonces primero tengo que decir que el nombre, voy a ser el número uno. Y la descripción. La descripción puede ser algo así como el número uno. Vamos a establecer lo requerido para que sea verdad. Cuando ejecutamos nuestro comando como latigazo. Nos van a requerir ingresar estos número uno. Número uno. Ahora vamos a sumar un segundo número. Vamos a decir opción numérica. Opción. Vamos a hacer lo mismo. Pero esta vez vamos a llamar a este número dos y número dos. Por lo que ahora tenemos que establecer también el nombre del comando, obviamente. Entonces el nombre va a estar en. Y también esa descripción, que va a ser devuelve la suma de dos números. Está bien, genial. Ahora tenemos nuestra propiedad de mando. Ahora definamos nuestra carrera correctamente. Digamos que la carrera asíncrona. Y esto va a tener una interacción como argumentos. Y veamos qué vamos a hacer dentro de estos callback aquí. En primer lugar, vamos a salir de la interacción. Vamos a distraer esta cosa aquí. ¿Qué pasa aquí? No es así. Es como en realidad lo olvidé. Sí, sin estos, así, casi me olvido ¿cómo se solucionó lo mismo en JavaScript? Entonces, sí, la interacción va a ser algo a la semana destructor de estas opciones aquí. De opciones podemos obtener el número uno y el número dos. Número uno, podemos hacerlo así. Opciones delta obteniendo número. Voy a pasar el nombre de la opción, que es el número uno. Vamos a pasar el segundo parámetro que se va a requerir. Estos requeridos aquí va a ser lo mismo que se requiere aquí. Entonces vamos a decir, vamos a decir verdad. Y eso básicamente me dice que estos número uno siempre se va a definir y siempre va a venir en nuestra interacción. Para que como se puede ver, el número uno es de tipo número. Si elimino estos true aquí, número uno es numero teñido o nulo. Pero sabemos que no podemos ejecutar este comando si no pasamos estas dos opciones. Por lo que queremos número mientras que se defina siempre. número dos va a ser lo mismo, pero con el nombre número dos. Ahora tenemos el número uno y el número dos. Por lo que sólo necesitamos la suma, que es básicamente número uno. Número uno más número dos, y eso es todo. Ahora tengo la suma de dos números. Y vamos a decir, espera, interacción. La otra respuesta. El contenido va a ser, bueno, vamos a decir el número uno más El número dos es igual a la suma. Y eso es todo. Ahora podemos empezar a probar nuestro comando, pero primero recuerda ponerlo en estos como comandos de latigazos. Entonces vamos a tratar de ponerlo así comando. Ahí está. Vamos a teclear maldita profundidad en nuestra terminal porque recuerda, profundidad desconcertante va a registrar los comandos del gremio. Y entonces va a empezar a nuestros sordos Jahren. De acuerdo, entonces ahora el libro núcleos dev, caballete nueve. Veamos. Sí, Ahora dev y prod o tierra, recuerda orgulloso siempre va a estar en línea porque ya está desplegado. Para que podamos ir y teclear una barra. Y nuestro curso de brote dev está verde en este momento. Así que vamos aquí y cd comandos aquí. Y tenemos dos comandos. La única facilidad para lo global y la otra es para el mando del gremio. Así que probemos cualquiera de esos. Son lo mismo. Vamos a decir diez más 1610 plantas más 16 es igual a 70. Ahora vamos a teclear. Vamos a tratar de ejecutar este comando. Nota a continuación, diez más 61718. Nuestro comando de latigazos funciona tanto en un gremio como en el interior dm. Eso es todo. Recuerda que quieres desplegar tu nuevo comando, luego solo haz un gameto y empujarlo a master o a cualquier rama que establezcas para Automatic Deploy. Y eso es todo. Lo vas a ver reflejado en la producción. Eso es todo. Espero que te guste. Nos vemos en el siguiente video. Adiós. 21. Añadir enlace: Hola y bienvenidos de vuelta. Hoy vamos a añadir otro comando que simplemente va a mostrar un enlace. Para ir a Google. Con esto, sabrás cómo agregar enlaces a tus interacciones. Vamos a crear un nuevo archivo. Llamemos a estos google.png. En realidad solo copiemos y peguemos desde la aplicación, desde el comando app. Obviamente, vamos a necesitar reemplazar muchas cosas aquí. En el comando crea un nuevo. En primer lugar, cambiemos el comando de Google de Office. Tal vez. En el comando, vamos a crear el nuevo constructor de comandos de barra inclinada. Y sólo vamos a poner el nombre de estos para ser Google. Y la descripción devuelve un enlace a Google, conjunto más simple. Ahora en la interacción, elimine todo esto, y hagamos lo siguiente. Vamos a crear el enlace inferior. Vamos a crear una instancia de una fila de acción de mensaje de clase de fila de acción de mensaje de mensaje de acción. De estos corp dot js. Podemos agregar componentes a estas filas. Podemos agregar componentes con este método add components. El único componente que vamos a añadir en nuestro caso es el fondo del mensaje. Entonces digamos botón de mensaje que se importa de la partitura js. Podemos establecer la URL aquí. Se puede ver establecer URL. Definamos una constante llamada URL de Google. Esto obviamente va a ser google.com. URL de Google. Eso ha establecido el estilo para que sea enlace. Como se puede ver, tenemos más opciones. Tenemos Bangor, link, primaria, secundaria, y éxito. Porque el botón Mensaje no sólo puede ser un enlace, puede ser un botón normal y realidad vamos a usarlos más adelante en este curso. Pero los enlaces son botones especiales porque están pensados para ser clicados y retórica debido a un lugar. Entonces es por eso que necesitan una URL establecida. Es necesario llamar al método conjunto URL sería establecer el estilo está vinculado. El sello sólo va a ser Google o lo que quieras. Ahora podemos básicamente debajo del botón de enlace, solo espera. La interacción no responde. Aquí podemos pasar en un objeto y el sujeto acepta estos componentes propiedad, que es una matriz de componentes. Y el único componente que vamos a tener este botón de enlace aquí. Bien, Genial. Ahora, también vamos a poner estos dentro de estos comandos slash array. Así que vamos a ir y el comando de google. Vamos a correr discordantes sordos. Se registraron los comandos de culpabilidad. Ahora el curso de protuberancia dev, ella estará en línea. Por lo que debería poder escribir Google aquí. Me da estos link aquí, que si hago clic en él, va a decir aguantar estos lingual, llevarte a google.com. ¿ Estás seguro de que quieres ir allí y puedes confiar en este dominio si confías en Google. Confío en Google y bueno, en mi segundo monitor, abre google.com. Así es como agregas enlaces a tu bot. Espero que te haya gustado este video. Nos vemos en la siguiente. Adiós. 22. Parte 1 del comando de información del usuario: Hola y bienvenidos de vuelta. En este video, vamos a crear un comando para conocer esa información de usuario de alguien. Empecemos creando un nuevo archivo llamado userinfo dot ds. Copiemos la calderilla del último comando que lo creamos. Vamos a necesitar esto. Al ir, se va a escribir esto desde cero y también estos desde cero. Justo abajo. Vamos en última instancia esto, se va a llamar a estos comandos, lo siento, va a tener primero una opción de usuario. Podemos agregar una opción de usuario. Aquí. Podemos ya sea tan rápido como la opción de usuario de comando slash, o podemos construir la opción dentro aquí con una devolución de llamada. Entonces hagamos el segundo método. Voy a decir opción. Esta opción, puede establecer el nombre de la opción. Voy a llamarlo descripción de usuario. Voy a decir el usuario, del que sabremos. Vamos a establecer la requerida de estas opciones para que sea verdad. No podemos usar este comando sin especificar el usuario que queremos conocer. Entonces tenemos que leer obviamente el nombre. Y voy a nombrar estos comandos usuario subrayado info. Y luego entraremos en decir, la descripción a ser devuelve la información del usuario, del usuario especificado. En la función de ejecución. Vamos a crear lo que se llama apuesta M. En primer lugar, vamos a conseguir al usuario. ¿ Cómo sacamos al usuario de la opción? Bueno, la interacción tiene una propiedad de opciones. Esta propiedad de opciones tiene un método llamado get user. Tenemos que especificar el nombre de la opción, que es éste. Entonces vamos a copiar usuario. Estos pueden recibir un segundo argumento, que es opcional, y es el requerido. Vamos a decir, sí, se requiere. Para que nuestro tipo de estas variables usuario sea de tipo usuario. Si no especifico estos requeridos, va a decir, Hey, esto es usuario o null. Pero sabemos que no podemos ejecutar este comando si no especificamos estas opciones y vamos a decir requerido. Por lo que ahora que tenemos al usuario, podemos conseguir alguna información sobre él o ella. Podemos decir const, avatar, usuario dot display, avatar URL, que nos dará una URL del avatar. Y ahora vamos a empezar a crear nuestro primero, voy a decir M apuesta nuevo mensaje M, que viene de las puntuaciones dot js. Entonces eso es una importación desde estas coordenadas. Y los fines de semana especifican múltiples cosas aquí. En primer lugar, vamos a especificar el color, el color, y tenemos muchas opciones que podemos usar por defecto, puedes usar código hexadecimal si lo deseas. Pero voy a decir que quiero que estos sean herramienta borrosa. No sé cuál es el color. También podemos establecer el título. El título va a ser la etiqueta de usuario. Entonces dijiste esa etiqueta. También podemos especificar la miniatura conjunto de miniaturas. Y este va a ser el avatar que obtuvimos de aquí del usuario dot display avatar URL. También podemos sumar cuando estos usuarios se registraron por primera vez. Voy a usar estos otros campos. Voy a decir que el nombre se va a registrar en. La fecha, se va a crear el usuario en. Estos necesitan ser una cuerda. Entonces por ahora, vamos a poner estas dos fechas de bebida. Vamos a más adelante crear una función que tenga en cuenta que el local del usuario de la interacción, lo siento. El tercer parámetro es esta línea. Campo que básicamente nos dice que podemos añadir más campos en línea. Entonces sólo voy a decir que sí, porque vamos a sumar más campos en el futuro. Antes de hacer eso, agreguemos también un pie de página. Voy a decir embed que dicho Filter. Y los estoy haciendo por separado. Porque entre esta cosa aquí, estas líneas de código y estas líneas de código, vamos a añadir más cosas a nuestro embebido. Aquí. En el pie de página establecido, se pasa un objeto que tiene una propiedad llamada texto. Y aquí estoy. Voy a decir ID del usuario es punto de usuario. Por último, vamos a responder a esta interacción diciendo respuesta de interacción. Y voy a decir m, lo siento, m camas. Y vamos a pasar nuestras incrustaciones. Vamos a sumar más cosas. Por ahora. Vamos a cambiar el nombre de estos comandos, los comandos info del usuario. Obviamente, tenemos que agregarlo aquí, comando info del usuario. Hablemos de hilo sordo, y veamos qué pasa. Vamos. Esperemos ambas curvas débitos en línea. Ahora vamos a nuestro servidor y tecleemos información de usuario. Aquí se puede ver que puedo seleccionar todos los usuarios que están disponibles en mi servidor, que son sólo tres. Veamos, mío, mi propio usuario. Está diciendo que esta es mi etiqueta. Me registraron el viernes 292019 de noviembre. Y esta es la idea de mi usuario, y este es el color del polo de desenfoque, y este es el avatar, que lo puse como una miniatura. Repasemos lo que estaba pasando aquí. Ponemos el color para que sea polo borroso, esa es esta línea aquí. Establecemos el título para que sea la etiqueta de usuario, que es esta cosa aquí. Agregamos la miniatura, que es mi avatar aquí. Y tenemos estos campos que se registra en. Registrado en es el título de estos campos o el nombre. Y tenemos el valor que es user.name creado que hasta la fecha cadena. Estos valoran aquí. Y también tenemos estos verdaderos, lo que significa que el campo d está en línea. Y estos tendrán más sentido una vez que agreguemos más información a estos incrustados aquí. Eso es todo por este video. En el siguiente video, vamos a añadir más información a estos n-bits. Espero que te guste. Nos vemos en el siguiente video. Adiós. 23. Comando Parte 2 de la Parte 2: De acuerdo, así que continuemos con nuestra información de usuario de M ben. Recuerda que nuestro bot realmente puede enviar tus respuestas dentro de un rendimiento y fuera del rendimiento. Si estás dentro de un gremio, tendrás información adicional como, por ejemplo, el apodo que usas dentro de eso, siente esa culpa, lo siento. El conjunto en. Entonces cuando te unes a ese servidor o culpable en particular. Y también lo que se llama, los roles que tienes dentro de esa culpa. Toda esta información estará disponible solo si la interacción proviene de una culpa entre crear el Embed y establecer el pie de página para el Embed. Primero voy a comprobar si la interacción proviene de una interacción de gremio en rendimiento. Si esto es cierto, entonces vamos a tener información adicional. En primer lugar, vamos a sacar al gremio de la culpa de la que proviene la interacción. Entonces vamos a definir estas variable gremio donde el CE, interacción esa culpa. Ahora si hacemos d's, veamos la definición de la definición de tipo de Gill. Vas a ver que estos pueden ser gremio o nulo. Básicamente sucede porque el rey gremio no está en el caché. Si eso sucede, vamos a decir o, y vamos a decir, espera, interacción. Un cliente que gremios, déjame cerrar estos un poco. Esa búsqueda. Y vamos a pasar la interacción, el ID del gremio. Estos devuelven una culpa. Y como se puede ver, estamos usando el peso. Si esta cosa es nula, entonces vamos a buscar al gremio. Y ahora se puede ver que la variable de campo es sólo de tipo, culpa. Eso es un gran. Y ahora podemos conseguir al miembro de estos gremios. Entonces lo que vamos a hacer es decir miembro constante, EC igual a miembros del gremio que necesitamos buscar dentro del cache. Obtener usuario. Nuevamente, si estas cosas no están en el caché, entonces va a volver en definido. Esta vez vuelve indefinido. Si esta cosa vuelve indefinida, entonces vamos a decir, vamos a buscar para el, para el, para que el miembro diga aguardan miembros del gremio que busquen. Y vamos a pasar el ID de usuario. Y estos efectos va a devolver una premisa que devuelve una promesa con un miembro del gremio. Ahora podemos ver que el miembro es solo de tipo miembro de big deal. Ya no va a ser indefinido. Y ahora estamos seguros de que existe la culpa y el miembro dentro de este gremio. Ahora vamos a conseguir el conjunto en campo de los integrantes. Por lo que simplemente decimos miembro dot unirse a eso. También puedes destructor si quieres. También vamos a obtener el rol enfermedad de los roles de los miembros que cobran dinero en efectivo. Afortunadamente, estos, esto es de tipo colección, que es, que tiene una cadena y una colección de reglas realmente en la partitura, jazz es solo un mapa con cosas adicionales. Y cuando me refiero a él, lo tengo, digo algo así como estos nuevo mapa. Este es un mapa en JavaScript. La colección es básicamente solo un mapa con cosas adicionales. Ahora vamos a establecer la descripción de los embeds van a decir M, pero eso es descripción del conjunto. Y vamos a usar una función de YouTube, que viene de hecho de estos constructores de barra js de guardia, que es el apodo miembro mencionado. Veamos. A esto tenemos que pasar un ID de miembro, que es el ID de usuario. Veamos, veamos lo que tenemos en hasta ahora. Vamos a nuestro servidor. Vamos a teclear ¿qué es? Userinfo, y ese es mi usuario. Y se puede ver que este es el medio. Siento ese apodo miembro mencionado. Ok. Es como hacer esto, pero dentro de las incrustaciones. Para que pueda dar click sobre esto y verás cosas. Ahora, volvamos al código y veamos que estos se unen a eso. Se puede ver que tiene fecha. Es de tipo fecha o un viejo. Por lo que sólo vamos a decir que únete a eso. Si esto existe, entonces voy a añadir un campo. El campo se va a llamar conjunta en. Ahora vamos a poner la fecha, pero en lugar de hacer estos, únete a esa cadena hasta la fecha. Eso es genial. La función dentro de este método aquí llamada llamémoslo obtener formatos tienen. Esto va a recibir una fecha que va a ser de tipo. Voy a regresar. En lugar de usar la cadena hasta la fecha, voy a usar dos cadena de fecha local. Y vamos a usar la interacción, lo local. Aquí. Aquí tenemos dos cosas. El primero es el local. La persona que está utilizando el mando o el gremio local, que es el autor local Gil. Voy a usarlo para usar el local del usuario que ejecuta este comando. Y en realidad podemos especificar el día de la semana para ser camisa larga, estrecha. Entonces esto es sólo JavaScript. Podemos especificar el engranaje para que sea de dos dígitos o numéricos, numéricos el mes. Nuevamente, tenemos muchas opciones para DDD largo, corto numérico estrecho. Voy a decir pulmones el día de nuevo, muchas opciones a la TDT o numérico. Lo voy a decir numérico. Esto depende de ti. usar cualquier otra cosa extranjera si quieres. De acuerdo, entonces estos en este conjunto y voy a pasar a la fecha obtener formateada. Voy a pasar la unida en variable. Voy a decir que estos deben ser un campo en línea. También aquí, permítanme usar aquí la misma función. Obtener fechas formateadas. Voy a pasar a un usuario que creó eso. Bien, genial. Ahora veamos qué tenemos aquí. Volvamos a usar userinfo conmigo mismo. Y como pueden ver ahora, tengo registro al viernes 292019 y me uní en el servidor Viernes, Marzo 252010202022. Lo siento. Ese es el conjunto de ese campo. Ahora vamos a añadir otra cosa, que son los roles que, especificamos aquí, los roles. Así que ahora veamos. Filtremos primero los roles. Porque, bueno, primero vamos a crear algunos roles en realidad, porque creo que no tenía ningún servidor. Veamos dónde tal vez en la configuración del servidor. Vamos a Roles. Y como se puede ver, tenemos dos roles, pero por supuesto sordos y comprados, por supuesto prep. Ahí están estos Todos, que es un rollo completo, eso es genial. Otro, digamos dueño. Y va a ser jello. Y un bajo mencionó este papel. Vamos a mantenerlo así. Mostrar miembro del rol por separado de los miembros de una tierra, no importa. Entonces vamos a guardar los cambios aquí en los miembros. Me voy a sumar aquí. Ahora se puede ver que tengo este papel de gelina aquí. Vámonos aquí. Voy a decir M cama ese campo. En realidad vamos a crear primero una variable llamada roles filtrados. Por ahora solo voy a tomar los roles array map heat, como este rol. Y luego voy a usar otra utilidad de los constructores de rollo frío mención. Voy a decir roll mencionado que voy a pasar un papel. Por último. Veamos, voy a unirme a esta cosa. Esta matriz con un espacio. Así que básicamente aquí sólo voy a decir rollos. Después va a interpolar los roles de filtro esa longitud y ponerlo entre paréntesis como este. Para ver cuántos roles tiene este usuario. Y el valor de esta cosa va a ser roles filtrados. En realidad, no puedo hacer esto porque esto ya está unido. Entonces esto me va a conseguir la longitud de la cadena en lugar de la longitud de la matriz. Entonces hagamos esto aquí. De acuerdo, entonces ahora sé que no especificé esta cosa como inline, por lo que debería aparecer debajo de la registrada y unida en los campos. Vamos aquí y tecleamos UserInfo. Vamos a ponerme a mí mismo. Como se puede ver, tenemos estos rollos y dice que tengo dos roles, el rol propietario y el anuncio a todos. Este anuncio a todos. A lo mejor no quiero mostrarlo. Sólo voy a decir roles de filtro. Y aquí voy a filtrar los roles. Voy a decir roll, roll. Si el nombre del rol no es igual a todos, no quiero incluir ese rol. Ahora. Tengo que comprobar realmente si los roles de filtro tiene alguno, cualquier elemento porque puede ser una matriz vacía para alguien que acaba de unirse, por ejemplo, eso es ECM solo va a decir reglas de filtro que longitud estos elementos. Y voy a hacerlo en esta cosa de aquí. Ahora volvamos a escribir UserInfo conmigo mismo. Y ahora se puede ver que lo filtré a todos porque no tiene sentido ponerlo aquí. Si lo quisieras, lo computas. Si no lo quieres, puedes filtrarlo. Y patrimonio, tengo mis roles dueño. Ok. Entonces eso es todo. Creo que la parte más importante que se tiene que obtener de esto es que sólo se puede incluir esta información. Iv, estás dentro de una culpa que necesitas para buscar al Gremio y al miembro si no están en el caché. De hecho, vamos a escribir aquí mensaje alelo a nuestro bot aquí. Digamos UserInfo. Esta vez sólo puedo poner como yo o los bots. Veamos qué pasa. Ahora sólo puedo obtener esta información, el registro agrega el ID. Puedo obtener información adicional porque este comando no se ejecuta desde la culpa AIG. Eso es todo. Espero que les guste y que ahora sepan cómo conseguir miembros de gremios y básicamente Bye, al conocer estas, sus posibilidades son infinitas. Términos de construcción de bots. Estás usando TypeScript, así que estamos en buen camino. Espero que te haya gustado este video. Nos vemos en la siguiente. Adiós. 24. Parte 1 del Comando de la Encuesta: Hola y bienvenidos de vuelta. Ahora vamos a empezar a construir un comando de sondeo y barra. Esta será la cosa más compleja que vamos a hacer ahora. Empecemos creando un nuevo archivo llamado pole dot ds. Y nuestra encuesta va a ser muy, muy completa. Entonces vamos a construir algo que es muy, muy completo. Lo primero que voy a hacer es ir a copiar y pegar en algunas cosas aquí. Quitemos todo aquí. Vamos a quitar estos. Y vamos a cambiar estos para ser el comando pull, que va a ser de tipo comando slash. Empecemos a construir nuestro mando. Aquí. Pongamos lo que sea justo para que no consigamos ese error. Eso es cancelar la interacción. Empecemos a construir el mando aquí. Nuestro mando E va a ser un complejo alelo. Entonces lo que voy a hacer es crear una función que se va a llamar de inmediato. Inmediatamente invocado expresión de función, o que es básicamente el Sur, a diferencia de que usted crea su función aquí, usted dice el amor del Consejo, lo que sea, bajo. Ahora esta es una función y para llamarla de inmediato, lo haces así. Esa es una expresión de función. Y de inmediato evocó invocó expresión funcional. Si asigno estas dos variables a, vas a ver que ABC. Vas a ver que el tipo de esta cosa es una función que devuelve void, devuelve por ejemplo uno. Entonces esta cosa va a devolver un número, su función normal, pero se llama de inmediato. Eso es lo que voy a hacer aquí porque mi función va a ser un poco compleja. Y por eso necesitaba hacer alguna lógica especial dentro de aquí. Comencemos a declarar una variable de comando de barra de costo. Voy a decir que Mu es constructor de comandos de slash. Y en este momento se puede ver que estos comandos se quejan de que estos espera constructor de comando slash, podemos, para deshacernos de ese error, simplemente devolver los comandos de slash. Ahora tenemos una identificación limpia sin advertencias ni nada por el estilo. Ahora empecemos a crear estos comandos de slash. Lo primero que vamos a agregar es una opción entera que va a ser el momento en que la encuesta va a estar disponible. Para eso, voy a decir una opción entera. ¿ De acuerdo? Necesito construir la opción. Entonces creo una devolución de llamada como argumento. Y esto va a ser Option dot name. El nombre de esta opción va a ser tiempo. Entonces necesito establecer la descripción. Y la descripción va a ser cuánto tiempo va a durar la encuesta. Ahora, voy a decir que este es un argumento requerido. Tan triste, requerido a verdad. Además, quiero poner un valor medio y el valor máximo. Esto depende totalmente de ti, pero quiero un valor medio de uno y un valor máximo de 60. Ahora que tenemos el tiempo, ahora tenemos que especificar la unidad de tiempo. Tenemos que ver si esto es segundos, minutos, horas. Para eso. Primero, voy a crear una enum, que va a ser unidad de tiempo. Voy a decir segundos iguales a segundos. Lo que significa igual a minutos y horas iguales a la nuestra. Esto no es necesario, pero quiero hacerlo como una mejor práctica para que tengas un lugar central donde manejes este tipo de cosas. Ahora vamos a añadir otra opción que va a ser una opción entera. Lo siento, una opción de cuerda. Voy a decir agregar una opción de cadena. Voy a crear la opción de devolución de llamada aquí, ese nombre establecido. Y el nombre de estos va a ser unidades de subrayado tiempo. Una cosa, no creo que haya mencionado estos, pero estos nombres sólo pueden ser como si sólo se pueden separar por un guion bajo. Si haces algo como esto, va a fallar. Si tienes palabras compuestas como estas, usa un subrayado. Ahora la descripción va a ser lo que sea, sólo va a decir a tiempo unidad ser utilizada. Esto también se va a requerir. Entonces voy a fijar el salario requerido a verdadero. Y aquí es donde agrego las opciones. Entonces en las elecciones y estas espera una matriz de matrices. El primero, va a ser el segundo, la segunda opción. Entonces voy a decir unidad de tiempo dot segundos. Y el primer elemento de esta matriz va a ser el nombre que se va a mostrar en este tribunal. Y el segundo valor está en el segundo elemento de estas matrices para ser el valor real que vas a utilizar en tu código. Aquí puedo poner segundos, y aquí puedo poner segundos unidad de tiempo. O simplemente puedes usar lo mismo si no te importa la capitalización. Voy a hacer eso aquí. Sólo voy a repetir el nombre y el valor. Y voy a repetir este proceso. Pero con minutos, con horas. Horario y horario. Nuevamente, si quieres cambiar la etiqueta que se va a mostrar en este cuadrado, solo cambia este primer elemento de la matriz. En este caso, eso no me importaba demasiado, así que solo voy a usar el mismo nombre y valor. Ahora, recuerda que necesitamos nombrar estos comandos. Entonces vamos a poner el nombre va a ser polo y la descripción va a ser, crea una encuesta. O si piensas en algo mejor, siéntete libre de agregarlo. Ahora vamos a sumar las opciones. Y las opciones van a ser totalmente dos opciones van a ser requeridas porque cuando al menos dos opciones para un polo. Y las ocho opciones restantes, porque esto va a tener un máximo de diez opciones. Las opciones restantes van a ser opcionales. ¿Por qué es eso? Bueno, la forma en que queremos votar por nuestro polo oriente para reaccionar ante algunos emojis. Sólo tenemos diez emojis para los números 12345678910. Sólo podemos tener como máximo diez opciones. De hecho, hagamos eso. Vamos a crear esa matriz emojis. Voy a crearlo. En realidad, sólo voy a copiarlo y pegarlo. Pero hay que básicamente se puede ir a esta cancha, ir a esta parrilla. Aquí. Puedes ir a este acorde y buscar ese emoji. Déjame ver. ¿Dónde está ese emojis? Tal vez Tier bien, busca. Creo que es algo como uno o puedes simplemente enviarlo a ti mismo o lo que sea y copiarlo en tu código como este en algunas citas individuales a su alrededor. Así es como se crea estas matriz de emojis. Entonces esto es algo que vamos a utilizar en el futuro. Pero yo solo, solo te estoy diciendo cómo puedes construir estos emojis array. Y lo otro que vamos a hacer es crear la matriz de opciones. Voy a llamar a esta opciones. Permítanme añadirlo aquí. Vamos a utilizar el punto array de métodos. El primer parámetro de distinto 0s, un objeto iterable. Entonces un objeto iterable puede ser algo que básicamente especifica la longitud de la matriz. Quiero decir, oye, quiero una matriz de longitud diez. Y la segunda opción es un mapa fn. Por lo tanto, es una función de mapeo para llamar a cada elemento de la matriz y crear una matriz a partir de un objeto iterable. Pero básicamente aquí el segundo argumento es el índice. En este momento, nuestra matriz tiene 10123456789. Y queremos convertir estos valores en algo más complejo. Y quiero regresar. En un objeto para cada uno de estos índices, el objeto va a tener algo así como la media, que va a ser el nombre de nuestra opción. Voy a usar la interpolación de cadenas aquí. Va a ser yo más uno. Cuando tengamos 0, esta va a ser la opción uno. Cuando tengamos uno, va a ser la opción dos, etc, etcétera hasta que lleguemos igual a nueve. Esta va a ser la opción diez, que va a ser básicamente la suposición aquí. El segundo va a ser la descripción. Aquí. Sólo voy a decir opción, sondeo, opción. No sé número aquí. Voy a decir que más uno de nuevo. Entonces esa va a ser la descripción de la suposición. Y la propiedad más importante que vamos a añadir aquí es que se requieren. Obligatorio va a ser un booleano. Obviamente. Recuerda que las dos primeras opciones van a ser requeridas porque necesitamos al menos dos opciones. Si soy menor o igual a uno, entonces somos buenos porque esos son 01. Por lo que las dos primeras opciones, esas son las que se van a requerir y estos valores van a ser ciertos. Ahora en nuestro comando, podemos, debajo de esto, podemos ir por cada una de estas opciones, agregar una opción de cadena como lo hicimos aquí. Hagamos eso. Para cada uno. Voy a deconstruir las propiedades de cada objeto aquí. Recuerda que tenemos un nombre, tenemos una descripción, tenemos una devolución requerida. Vamos a hacer algo con estas propiedades. Se va a decir el comando slash, la opción string, la opción string. Ir a construir la opción. Vamos a decir opción que dicho nombre. Ese va a ser el nombre que aquí se especificó. Opción I más una dicha descripción. Esa va a ser la descripción se especificó aquí, opción número I más uno. Y entonces vamos a decir requeridos iguales requeridos. ¿ De acuerdo? Así es como construimos o agregamos dinámicamente muchas opciones. Por lo que estamos agregando diez opciones y las dos primeras son obligatorias. Creo que el video se está haciendo largo, así que continuaré construyendo este comando en el siguiente video. Adiós. 25. Parte 2 del Comando de la Encuesta: Hola y bienvenidos de vuelta. Entonces empecemos. Vamos a seguir agregando algunas opciones más a nuestro comando slash. Antes de devolver nuestro comando slash van a tener otras opciones de cadena. Así que agrega la opción string y vamos a construir esta opción. Vamos a decir opción ese nombre establecido, título. Y vamos a establecer la descripción. Permítanme cerrar esto. Y este va a ser el título del polo, por lo que el polen necesita tener un título. Esto es lo que estamos haciendo aquí. Además, vamos a agregar otra opción de cadena. Y esta vez, estos van a ser la descripción del poste, la descripción real de un cuenco. cuenta también que estoy enviando estos para que sean opcionales. Entonces durante una va a ser requerida, voy a decir descripción de sub nombre. Y la descripción de la descripción va a ser esa descripción de una pelota. Are Paul va a tener opcionalmente un título y una descripción. Entonces voy a decir añadir la opción booleana. Ahora, tan difícil de escribir este mayor que símbolo. Y la última opción va a ser algo llamado DM travieso cinco opción que establece el nombre DM N5. Nuestra alberca va a enviar un mensaje COMO la encuesta y con éxito. Y esto va a ser verdadero o falso. Entonces si lo configuras en falso, entonces la encuesta va a terminar con éxito, pero no te va a notificar a través de un DM. Ahora la descripción del conjunto, vamos a decir si el pero el, la pulpa terminó con éxito. Genial. Por lo que esas son las últimas tres opciones opcionales, opcionales que vamos a añadir a nuestros comentarios. Entonces antes de avanzar más, quiero explicarte una cosa más. Bueno, en primer lugar, como te dije en el último video, vamos a reaccionar al polo, que va a mandar un mensaje obviamente. Y el mensaje va a ser, va a tener algunas reacciones que van a tener 1234, estos emojis aquí. Para añadir estos emojis a un mensaje, necesitamos otra intención y vamos a sumar antes de que lo olvidemos. Y se va a llamar intenso. Eso marca esa culpa, mensajes, reacciones. Por lo que necesitamos esta intención. Y lo otro que quería decirte es que vamos a permitir que estas encuestas solo se llamen dentro de un gremio. ¿ Y por qué no dm? Bueno, sin duda puedes usar un poste dentro de un DM con múltiples personas. Pero simplemente se complica más de lo que es. Así que sólo nos vamos a centrar en hacer que esto funcione dentro de un gremio y dentro de un canal de texto. Lo que vamos a hacer en esta corrida este, hazlo así. Si la interacción no está en una culpa, culpa, tenemos esto en el método de culpa para la interacción. Si esto no está en la culpa, vamos a responder. Interacción. Esa respuesta. Vamos a responder con contenido. Sólo se pueden utilizar estos comandos dentro de un servidor. Lo segundo es que la interacción no tiene canal. Porque si vas a ver el tipo de interacción de ese canal, veamos cuál es el tipo de esta cosa. Esta cosa puede ser canal basado en texto o nulo. Si el canal de texto no existe, si estás tratando de hacer cosas raras. Aquí, sólo van a decir respuesta de datos de interacción. El contenido es, sólo se puede utilizar este comando en un canal. Ser más específico. Yo también voy a decir, o el cliente así no tiene la intención correcta. Entonces por qué estoy diciendo que el cliente no tiene las intenciones correctas, usted irá al archivo main.js. Vas a ver que tenemos esta intensa que banderas que gremios. Y si recuerdas correctamente, estos nos permiten ver información sobre los canales del gremio. Si no establecemos esta intención, entonces no va a ser capaz conseguir interacción ese canal. Incluso si está tratando de ejecutar el comando slash en un canal basado en texto. Sólo para ser 100% claro, estoy agregando pedazo de mensaje aquí. Eso son ocho. En el siguiente video donde vamos a hacer es empezar a construir realmente la interacción aquí, que va a ser alelo un poco complicado. Entonces ten en cuenta conmigo en el siguiente video. Adiós. 26. Parte 3 del Comando de la Encuesta: Hola y bienvenidos de vuelta. Ahora vamos a empezar a construir nuestro incrustar el mensaje. Por lo que el mensaje embebido va a ser Web contiene la información sobre la encuesta. Para eso, vamos a necesitar la información sobre el gremio, información por encima del miembro, información sobre las opciones brilladas. Porque recuerda, sólo tenemos dos opciones requeridas. Contamos con opciones opcionales adicionales. Sólo necesitamos conseguir los que se especifiquen. Necesitamos obtener la información sobre la hora, el tiempo que necesita el título, la descripción, y así sucesivamente. Antes de empezar, me olvidé de hacer algo aquí. Tenemos que volver después de aplicar porque no queremos continuar con el siguiente flujo que vamos a definir aquí. En primer lugar, deconstruyamos de la interacción. Muchas cosas. Vamos a conseguir las opciones van a conseguir el usuario, vamos a conseguir el ID de gremio. Voy a conseguir al cliente por ahora. Entonces lo primero que quiero conseguir estos, la información de culpa, voy a conseguir estas variables de culpa. Recuerda, ya hicimos esto en el UserInfo. Obtenemos la interacción que gremio y esta cosa no existe porque puede regresar, usted será nuestro nulo. Entonces lo vamos a buscar de la interacción esa línea que gremios que obtienen interacción que BLAT. Entonces hagamos eso. La interacción hace culpa. Y si sólo hago esto, entonces la culpa va a ser de tipo. Si me pongo sobre él, culpa o no, quiero que esto sea siempre refinado. Y por eso voy a hacer cliente que gremios dot fetch. Y voy a pasar la guillotina como deuda ECS. Ahora que tengo la culpa, la información ahora puedo conseguir la formación de membrana. Nuevamente, esto es algo que hicimos en el userinfo y en realidad podemos simplemente copiar y pegar aquí. Guild up miembros que caché hasta Obtener User ID. Esta cosa puede devolver ya sea miembro de la agill o indefinido. O no quiero que esto sea indefinido. Entonces si esto es indefinido, entonces lo voy a buscar del gremio de miembros que lo busquen, señor. Bien, genial. Ahora tengo información sobre el gremio. Tengo información sobre el miembro. Ahora, quiero conseguir que las opciones mostradas estén clasificadas, que va a ser una matriz que contenga solo las opciones mostradas o especificadas. Voy a declarar opciones mostradas. Y voy a conseguir la matriz de opciones. Y luego lo voy a mapear. Por lo que el primer argumento, estos pueden ser raza ella. Por lo que puede ser un objeto con estas propiedades. Sólo voy a deconstruir el nombre desde, desde aquí. Eso es lo único que necesito. El segundo argumento es el índice, que lo voy a llamar I. Esta cosa va a devolver otro objeto que va a contener el emoji asociado a esta opción. ¿ Y cómo obtengo el MOG? Bueno, solo accedo a la matriz de imágenes en la posición i. Ahora necesitamos la etiqueta, que básicamente va a ser, si recuerdas en el UserInfo, algo como estos, etiquetados aquí en la etiqueta de campo, puede, puede ser esta descripción opción número uno. De hecho, hagamos eso. Eso también es deconstruir la descripción. Voy a poner la etiqueta para que sea la descripción. Si quieres. Puedes especificar cualquier otra cosa. Pero por ahora vamos a mantenerlo simple y vamos a configurarlo a la descripción sobre el valor. Va a ser opciones que obtengan el nombre de la cadena. Entonces vamos a conseguir que esa opción se asocie a su nombre. Y se pasa por encima de esto, va a ser una cadena o nulo. ¿ Por qué? Porque puede estar presente o no. Y vamos a filtrar estas cosas en base a eso. Ahora que tenemos estos mapa, vamos a decir filtro de puntos. Voy a tener la opción de hombro. Aquí. Sólo voy a decir, Hey, sólo dame esos valores donde la opción brilló, ese valor es la multa. Truthy. Si esta cosa es nula, entonces el filtro lo va a filtrar. Aquí viene una cosa interesante. Si vamos aquí y pasamos por encima de estas opciones mostradas, ves que se trata de una matriz de objetos, y estos objetos tienen la cadena emoji, cadena etiquetada. Y aquí viene la parte interesante. El valor es una cadena o nulo. No obstante, ya filtramos aquellos valores que son nulos. Entonces esto es algo interesante en TypeScript que cuando aplicas un filtro a un mapa y filtras en función de alguna condición, entonces no va a multiplicar el tipo por ti. En realidad tienes que hacerlo tú mismo. ¿ Y cómo hacemos eso? Bueno, en realidad es bastante simple. Nosotros, después de esta opción mostrada, vamos a decir columna muestra opción. Y vamos a especificar el tipo emoji, string, label, string value strength. Ahora pongo el cursor sobre estas opciones mostradas. Se puede ver que ahora el valor es siempre, su entrenamiento fue filtrar y se fijó el tipo de espectáculo una opción. Esto es algo que no mucha gente sabe, pero es muy, muy útil. Ahora que tenemos se muestran opciones, vamos a conseguir la información como la hora. El tiempo son opciones que se meten en su tiempo. Se requiere. Entonces vamos a ponerlo en verdad. Vamos a conseguir el tiempo que necesitas con opciones dot conseguir un momento extraño que necesitas. Éstas también se requieren. Y aquí viene la parte interesante. Esta cosa en este momento es de tipo string que recuerdan que las opciones de anuncios, configuramos para que sean una unidad de tiempo. Entonces ella será como tiempo S porque es algo de ahí. Sabemos que está sufriendo desde ahí. Ahora, const, titulado va a ser opciones dot obtener el título de fuerza, y esto es opcional. Por lo que no vamos a enviar que se requieren para ser verdad, vamos a conseguir la descripción también. Opciones que obtienen una descripción de cadena. ¿ Por qué no? La variable phi traviesa DM. Opciones que se vuelven booleanas, no definen. Estos pueden ser booleanos o nulos. Si esta cosa es nula, entonces en realidad, si esta cosa es falsa, queremos que esto sea falso. Pero si hacemos esto, entonces vamos a ir a esta condición aquí. Si hice esto, esto siempre va a ser cierto. Sí, se puede ver que dm notificar verdadero. Por lo que quiero que estos sean verdaderos o falsos, así que un booleano. Entonces para la deuda, voy a usar este operador aquí, doble signo de interrogación. Entonces si veo esto, ahora es de tipo Boolean. Este doble signo de interrogación me dice, oye, ¿ esta cosa es siempre en esta cosa indefinida o nula? Entonces ve aquí. Si esto es falso, entonces sólo guárdelo como eso, como falso. Si esto es cierto, obviamente va a ser verdad. Si esta cosa no es nula o indefinida, entonces ve aquí y configúrela a true. Entonces esto es como el valor predeterminado. Eso es como el volumen predeterminado. ¿Qué más? Eso es todo lo que vamos a conseguir. Ahora tenemos mucha información. Ahora necesitamos utilizar esta información. Necesitamos utilizar esta información. Vamos a crear la incrustación por encima de todas estas cosas y debajo de todas estas condiciones aquí, voy a crear una función dentro de esta función. Entonces eso se llama cierre en guión GAO. Voy a conseguir una llamada que construya y eso o muerto en la cama. Lo que quieras. Voy a llamarlo conseguir incrustado. En realidad construir en cama. Sonido inteligente, correcto. Lo primero que vamos a hacer es declarar estos formato en unidad de tiempo. Y voy a decir que esto es de tipo unidades de tiempo o cadena. Entonces voy a ponerlo a esta cosa aquí, mientras que es unidades de tiempo. Esta es la parte interesante sobre los cierres. Podemos usar variables fuera de la función. Cuando declaras una función dentro de una función, la función interna puede usar cosas de la función externa. Eso es básicamente un cierre. ¿ Por qué? Estoy declarando estos formato en variable unidad de tiempo. Bueno, si el tiempo es igual a uno, si el tiempo es igual a uno, entonces quiero este formato de tiempo. Es necesario formatear unidades de tiempo, 0 menos una. Entonces, lo que está haciendo esta cosa es básicamente si dijiste el polo, tiempo para ser una hora. Entonces en lugar de decir una hora, esto se va a transformar a una hora. Eso es básicamente lo que aquí. Sólo una cosa muy pequeña, pero es agradable tener esto. De acuerdo, así que ahora empecemos a crear nuestra incrustación. Entonces voy a decir const y malo va a ser nuevo mensaje M beth del disco o de Jess. Voy a establecer al autor objeto BIM con una propiedad de nombre que va a ser el miembro que muestre el nombre. También podemos establecer el icono URL. Yo tipo de URL. Este va a ser el usuario que muestre una URL de destino. Eso es todo. Ahora tenemos a los autores colocados en la misma cama. Ahora vamos a fijar el título. El título tampoco va a ser el título que obtenemos de aquí. Recuerda que esto es una cadena o nulo. Si esta cosa es nula, entonces voy a ponerla en algo así como Paul, algo así. Ahora vamos a establecer la descripción. En realidad aquí. No quiero permitir cadenas vacías, así que voy a usar también el operador OR. Eso depende de ti. Puedes usar esto o esto. Voy a usar estos porque no quiero azulejos vacíos. A pesar de que creo que eso no está permitido por la opción que no conozco. Ahora, la descripción va a ser o bien esa descripción o algo así como React to boat. El sondeo va a estar disponible por tiempo. Por mi difícil momento conseguir. Este va a ser el mensaje predeterminado y va a ser que pases descripción. Entonces vas a establecer eso, si no el hermoso pase que entonces vas a poner este mensaje aquí. Vamos a establecer el color del Embed. Eso va a ser no lo sé, azul. Eso depende de ti. Voy a poner el pie de página diciendo algo así como en el texto en caso de un empate, una opción aleatoria seleccionada. Por lo que ahora que tenemos estos incrutados, queremos sumar los campos. Del mismo modo que agregamos aquí los campos. Recuerde dónde campos TI. Ahora queremos sumar esos campos aquí al elemento. Para eso, voy a usar la matriz de opciones brilladas. Voy a ahorrar para cada opción mostrada. Voy a conseguir la etiqueta. Voy a conseguir el valor y luego voy a conseguir el emoji. El callback sólo va a incrustar ese campo add. El primer argumento es el nombre, que va a ser la etiqueta. El segundo argumento va a ser el valor, que va a ser el valor de guión emoji. El tercer argumento va a ser el Inland. No quiero que esto sea tierra adentro, así que voy a mantenerlo así. Por último, vamos a devolver el embed de estas plantillas de compilación. Ahora que tenemos estas función build-in, sólo vamos a decir const y cama es igual a construirlas, construirlas, entonces. Eso es todo. Aquí hemos hecho muchas cosas. Básicamente obtenemos la información de la agalla, del miembro. Podríamos mostrar un show up. Obtenemos estos tiempo descripción del título de unidad de tiempo. Estos DM notificaron que aún no hemos utilizado. Y luego usamos cierres para crear esta función que formatea el tiempo que necesitas primero. Después establece el autor, el título, la descripción, el color, el fluido central, o agrega todos esos campos para las opciones brilladas y devuelve el embebido DDL final. Y lo llamamos aquí. Muchas cosas para digerir. Paremos aquí y continuemos en el siguiente video. Adiós. 27. Parte 4 del Comando de la Encuesta: Hola y bienvenidos de vuelta. Continuemos construyendo nuestro mando de sondeo. Ahora tenemos el Embed. Ahora vamos a añadir algunos botones. Y estos van a ser sólo dos botones. Así que definamos estos botones. Obtener botones. Debajo de nuestra función construida y Beth. Vamos a crear otra función por donde puedas compactar esta función haciendo clic aquí en código VS. Voy a crear esto, conseguir botones o construir botones, lo que sea. Una función, que va, nuevo va a ser una función interna. Y luego solo voy a devolver nueva fila de acción de mensaje. Recuerda que ya usamos estos en, creo que tal vez fue Google. Aquí agregamos estos métodos sección cuerda, y necesitamos agregar algunos componentes para agregar botones aquí. Entonces vamos a agregar en realidad dos botones. El primero va a ser este nuevo botón de mensaje. Cierra esto. Y voy a estar configurando el ID personalizado para que se cancele. Este botón nos va a permitir cancelar el poste. Va a establecer la etiqueta para que sea igual a cancelar. Dijo este azulejo. Esto va a ser como un fondo de rata. El otro botón, que va a ser botón de mensaje. Vamos a configurar al cliente. Y sólo la persona que creó esta encuesta va a poder hacerlo antes de que expire el tiempo. Sé que tal vez esto es algo que no queríamos sondeo, queremos que todos voten. Pero esto nos va a permitir aprender algunas cosas sobre permisos y cosas así. El dicho sello. Tira ahora y satisface ser primaria. Puedes hacerlo secundario, lo que sea. Sólo voy a hacerlo. El primario aquí, esto se va a construir botones no obtener fondos. Ahora tenemos, tenemos el embed, tenemos los botones. Ahora vamos a hacer algo muy interesante. Vamos a decir interacción esa respuesta. No vamos a responder con el imbed ni con el botón. Sólo vamos a responder con algún mensaje genérico como Paul creado con éxito. Entonces vamos a mandar mal la cama M como mensaje separado, peso del mensaje. Y tal vez necesitamos aquí para deconstruir el canal a partir de la interacción. Ahora el canal es solo canal de culpabilidad basado en texto. Esa arena. Aquí vamos a incluir la incrustación, que va a ser sólo los componentes, que van a ser los botones. Por qué estoy haciendo esto, por qué primero estoy enviando un mensaje genérico y luego estoy creando por separado el mensaje y lo envío es por separado. Bueno, estos me llevó mucho tiempo darme cuenta, pero recuerda que si vamos a nuestro comando, tenemos estos valores medios establecidos a uno y establecemos el valor máximo en 60. Puede ser segundos, minutos, u horas. Aquí viene la parte interesante. No puedes contestar. No se puede hacer nada con la interacción. Con respuesta de interacción. Puedes hacer cualquier cosa. Usted borrado, puede responderlo. Puedes hacer cualquier cosa. Si han pasado 15 minutos desde tu planta. Entonces hay un token que detrás de escena se caducó, entonces no se puede actualizar ese token. Es imposible ahora mismo hacer eso. Entonces tenemos que crear el mensaje porque este mensaje, que es de tipo mensaje, éste se puede modificar después de 15 minutos. Si solo tuviéramos que editar la respuesta, no íbamos a poder hacer nada. Pero este mensaje, Capítulo 15 minutos, vamos a poder modificar eso. Vas a ver a qué quiero modificar este mensaje. A medida que avanzamos. Entonces por eso estoy haciendo esta cosa aquí. Ahora en realidad podemos ejecutar def. Podemos ir a este acorde. Observe que, pero Chris Davies en línea, podemos, obviamente necesitamos registrar esta cosa. No hemos hecho eso. Vamos a cancelar esto. Y escuchemos agregar los comandos de la encuesta. Vamos a correr discordantes sordos. Una vez más. ¿ Qué curso hay en línea? Veamos, sondeo. Ahora tengo que precisar la hora, digamos 15 segundos. De acuerdo, entonces ahora tenemos estas tres opciones aquí. Recuerda estas opciones que las etiquetas de estas opciones son en realidad lo que dijimos aquí. Estos, lo primero aquí en desorden, las unidades de tiempo van a ser segundos o la Opción uno va a ser una y la opción dos va a ser yo. Y si escribo la tecla tabulador, puedo ver que tengo todas estas opciones adicionales, opcionales. Mantengámoslo así. Ahora dice que Paul creó con éxito este es mi nombre para mostrar, mi avatar. Yo no fijé un título, así que el título va a ser pole. Reaccionar a ambos la encuesta va a estar disponible durante 15 segundos. Y aquí tenemos la opción de sondeo número uno. Me está incitando a reaccionar con uno si quería seleccionar una, dos, si quiero seleccionar B, y está diciendo dibujar un aleatorio, será una opción aleatoria se selecciona. Entonces mientras que esa opción aleatoria anula la selección, tengo que cancelar y la encuesta final. Ahora si hago clic en ellos, no va a hacer nada. Me va a decir que esta interacción falla porque no hemos creado los coleccionistas para los fondos. Entonces intentemos hacer eso. A lo mejor vamos a terminar esto en el siguiente video. Quiero decir, terminar de crear el colector de componentes. Pero primero agreguemos un tiempo en milisegundos. Y MS, voy a nombrar esta función conseguir tiempo. Ms, en milisegundos. Quiero convertir el tiempo que pasé dos milisegundos. Para eso, es bastante fácil. Solo voy a crear otra función interna llamada obtener tiempo en un in NMS, lo siento, aquí, y vamos a crear una sentencia switch. Voy a tomar las unidades de cronometraje. Y esta vez necesitas recordar e es de tipo unidad de tiempo. Por lo que puedo decir caso que segundos. Voy a devolver el tiempo multiplicado por ciento diez cientos, porque esta vez va a ser en segundos. Para convertirlo a milisegundos, tengo que multiplicarme por uno. En el caso de unidad de tiempo para ser minutos, entonces tengo que devolver el tiempo multiplicado por 60, multiplicado por una milésima. Entonces esto convierte el tiempo en minutos a segundos y luego estos factores dos milisegundos. Y por último, si la unidad horaria es nuestra, tiempo de retorno multiplicado por 3 mil 600 veces 10000. ¿ De acuerdo? Entonces este es el número de segundos en una hora. Entonces este es el segundo. También puedes hacerlo de otra manera. Pero esto es mejor para mí. Es más comprensible porque hay 303,600 segundos en, en una hora y luego convierto segundos a milisegundos. Tal vez puedas poner esto dentro de otro o fuera de aquí. Pero de todos modos, solo lo estoy otorgando aquí como una función interna para que pueda usar el tiempo que necesites a tiempo como este. Sin pasar ninguna muerte, un argumento o algo así. Ahora que tengo el tiempo en segundos, y este es un número voy a crear lo que se llama coleccionista. Y vamos a necesitar aquí a los coleccionistas él componentes colector y sus reacciones coleccionista. La reacción es colector va a filtrar y especificar cuántos, cuánto tiempo queremos que se recojan las reacciones. Y los componentes colectan lo mismo pero para los componentes que en este caso son las botellas. Para que esa reacción sea coleccionista es un poco más complicada. Así que empecemos con colector de componentes. Componentes colector. Va a crear el recolector de componentes GED o construir. Y empecemos a construir esa cosa. Entonces por debajo del get timing, la masa. Hagamos esto en realidad. Debajo del cronometraje, el lío. Voy a crear el recopilador de componentes de compilación, de nuevo, una función simple que va a devolver un mensaje. Entonces recuerda que tenemos la variable de mensaje que crea, mientras que es colector de componentes de mensaje. Y como opción necesitamos especificar cuántas veces queremos recolectar interacciones para estos bloqueadores. Entonces ahí es donde usamos estos tiempos. Sra. Bible. Eso es todo. Ahora tenemos nuestro colector de componentes que va a ser útil en el futuro. Nuevamente, se está volviendo solo video, así que vamos a parar aquí y continuar en el siguiente video. Adiós. 28. Parte 5 del Comando de la Encuesta: Hola y bienvenidos de vuelta. Ahora tenemos el colector de componentes. Ahora tenemos que crear el coleccionista de reacciones que va a ser alelos marcan complicado pero no demasiado, sólo un poco. Vamos a crear esta reacción llamada elector así. Crear la función de recopilador de reacciones de compilación que se creará debajo del recopilador de componentes de factura va a ser la conferencia de reacciones de compilación. Lo primero que queremos hacer, y esto es puramente una cosa de optimización. Oriente para crear y mapa de emojis. Estos emojis mapa va a tener como claves, la imagen misma. El valor va a ser un dicho booleano, Hey, sí, estos emoji East en las opciones mostradas que enviamos en el Embed. Entonces algo como esto. Esto sólo va a hacer esto manualmente. Al igual que tomemos estos 3 primeros hematólogos. Considerando que aquí. Supongamos que la primera opción está mostrando bien, las dos primeras siempre se van a mostrar así. Entonces el tercero, puede ser verdadero o falso. Entonces si especificamos la opción número tres, esta es la opción número tres. Esto va a ser cierto. Si no especificamos va a ser falso. Y lo mismo con cuatro o 56700 hasta diez. Esto es lo que queremos construir primero antes de construir el coleccionista de reacciones. De acuerdo, entonces en realidad es bastante simple. Vamos a crear este mapa de emojis mostrado. Y por cierto, ¿por qué estoy haciendo esto? Bueno, porque quiero crear un filtro en la corriente, en el coleccionista de reacciones que cuenta, eso. Me dice, oye, ¿ este emoji está aquí? Sí, entonces filtra. ¿No está aquí? ¿ Entonces? Filtrar. Lo siento, si está aquí, entonces no lo filtre. Si es falso, entonces filtra, algo así. Nuevamente, esto es puramente algo que es para la optimización. Podemos lograr esto simplemente encontrando el emoji en las opciones mostradas cada vez, pero eso no es suficiente. Un objeto que accede a elementos en un objeto tiene una complejidad temporal de O uno. Y por eso estamos haciendo esto. Se muestran emojis mapa se van a mostrar opciones que reducen la reducción ¿ se puede especificar y reducir el resultado de las revisiones? Yo lo soy. Entonces en nuestro caso va a ser un objeto. Podemos decir grabar estos x sombreros recurrentes dos parámetros. El primero es el tipo de la clave, que va a ser de tipo string. Y el tipo del valor que va a ser de tipo Boolean. Ese es el básicamente el, lo siento, el tipo de nuestro mapa resultante. El primero alivia una devolución de llamada. Permítanme cerrar esto. En esta devolución de llamada, vamos a conseguir primero el mapa. En segundo lugar la imagen. Vamos a deconstruir el emoji desde la opción aquí. El segundo argumento es solo un argumento que es una devolución de llamada. Y el segundo argumento va a ser el valor inicial, que va a ser un objeto vacío, mapa vacío, lo que sea. Este no es el mapa, estrictamente hablando, esto es sólo un objeto pero su función es ser mapa. Entonces es por eso que los llamo arriba. Entonces voy a decir mapa emoji, sé verdad y devuelva el mapa. Eso es todo. Ese es nuestro show, mostrarles el modo solo Mab va a ser lo que acabo de mostrarte antes. Ahora vamos a crear el recolector de mensajes, digamos que devuelve mensaje que crea coleccionista de reacción. El primer inmueble va a ser el momento. Cuánto tiempo queremos que se recojan las reacciones. No sólo voy a estar cronometrando el lío, solo probando los componentes. Por eso creamos esta vez. Y luego en MS para reutilizarlo tanto aquí como en el colector de componentes. Y lo segundo que vamos a utilizar es el filtro. El filtro es una devolución de llamada. La devolución de llamada recibe una reacción. Vamos a decir, vamos a sacar el emoji de estas reacciones fueron una reacción de ese nombre de punto emoji. Este nombre es en realidad como esta cosa aquí. Por lo que estos serán el nombre del mono. Esta cosa puede ser en o cadena o nula para ser 100% honesta, no entiendo por qué puede ser nulo, pero sólo vamos a estar seguros aquí. Vamos a decir no emoji, luego volver falso. Cuando el viento emojis raros entonces no tienen nombre. Si esta cosa tiene un nombre que vamos a decir volver. Y vamos a usar un doble bang para lanzarlo a un booleano. Y vamos a decir que se muestran emojis mapa fuera y esta cosa se va a mostrar. Y sólo vamos a mapear. Esta cosa va a ser verdad o esta cosa va a ser indefinida. Si esto es cierto, entonces el doble banco true sigue siendo cierto. Y si esta cosa es indefinida porque no está en estos mostrados el mapa de motivos, entonces esta cosa va a ser indefinida. Un doble golpe de undefined va a ser falso. Ahora hemos creado nuestro colector de reacciones y nuestro colector de componentes. Ahora, vamos a crear una variable más. En realidad van a ser dos, pero por ahora sólo va a ser uno. Y esto se va a llamar frecuencias. Esto va a ser un objeto de nuevo. Entonces registra el número de cadena. Va a ser número de cadena de registro. Eso significa que va a ser un objeto con claves como corriente. Si el número va a ser el número de veces y aparece el emoji. Entonces va a ser como un recuento de frecuencias. ¿ De acuerdo? Entonces lo que vamos a hacer a continuación es crear la función que va a ser capaz de poner información dentro de estas frecuencias. Eso es lo que vamos a hacer en el siguiente video. Yo seré así. Nos vemos en el siguiente video. Adiós. 29. Parte 6 del Comando de la Encuesta: Ahora tenemos nuestro colector de reacciones o colector de componentes. Ahora tenemos que especificar qué queremos hacer cuando recogemos algo que vamos a crear. Componentes. En componentes recogen función que va a especificar lo que queremos hacer cuando llamamos a una camarilla, en este caso desde los botones. En primer lugar, tengo que especificar una cosa. Si vamos a los no asegurados podemos crear oyente, tenemos que cumplir con un cambio alelo. Cuando hacemos clic en un botón. Recuerda los botones difíciles de cancelar y, y Paul ahora botón. Tenemos que no hacer nada cuando llegue esa interacción. Vale, así que eso es lo que vamos a hacer aquí. Va a decir si la interacción, abajo, va a decir esperar interacción. Esa V para. Básicamente les estamos diciendo a estos anotados, hey, no hagas nada por ahora. Porque la interacción del botón, lo que realmente vamos a hacer con el botón que vamos a manejar dentro del comando Todo. Vamos a crear un método de recolección de componentes, nuestra función interna aquí. Voy a crearlo debajo del colector de componentes de la correa. Lo siento, por debajo de la reacción de construcción está colector. Voy a crear estos componentes recoger. Voy a decir componentes colector, recoger. Recuerda que tenemos estos en disponer y luego no recogidos. Eso es lo que nos interesa. Y vamos a recibir la interacción componente. Esta es la parte confusa porque, lo siento, porque estos componentes de interacción viene aquí en nuestra interacción crea. Y también aquí no queremos manejarlo aquí, tal vez vas a construir unos comandos más. Por lo que hay que modificar estos y descartar el fondo del tazón. Pero por ahora vamos a hacer eso. Así que sólo vamos a decir, Hey, no quería hacer nada con este botón aquí que quiero hacer algo aquí en componentes. Lo primero es comprobar si el componente de corte de interacción punto personalizado ID es igual a cancelar. Recuerda esa identificación de cliente que dijimos en el botón. Ahora vamos a comprobar si este es el fondo de cancelación. Aquí viene la parte interesante. Va a decir E de la interacción de componentes. Ese ID es diferente al ID de usuario. Estos usuarios, recuerden, estamos utilizando cierres para que podamos usar variables desde fuera de esta función. Este es el usuario de la interacción. Entonces si no es tu ID del ID de interacción del usuario, entonces vamos a decir una interacción de componente de peso. Fetch respuesta. Voy a explicar esto en un momento. Interacción componente de distancia. Seguimiento. Voy a decir contenido. No se puede cancelar. Tire. El efímero va a ser cierto. Obviamente vamos a regresar. Lo que estoy haciendo aquí es básicamente buscar la repetición. Recuerda que la respuesta puede ser después de ciertos tiempos. Por lo que tenemos que buscar la respuesta de estos componentes de interacción. Entonces haciendo estos seguimiento. Si hago esto, no va a funcionar. Primero tenemos que buscar la respuesta. Entonces tenemos que dar seguimiento a esa respuesta. Estas son femeninas. Creo que no hemos hablado de esto. Esta es una mujer verdadera significa que solo tú podrás ver el mensaje. Si ese no es el caso. Si soy el, si el ID de usuario de la interacción del componente es igual a mi ID, entonces tenemos que hacer algo. Tenemos que detener al coleccionista de reacciones. Por lo que estas reacciones colector tiene estos método stub y podemos especificar un reciente y vamos a decir que la razón es cancelar, tirar. Este reciente va a ser invertir en su futuro cuando creamos nuestro coleccionista de reacciones y función. Vale, entonces esta es la primera condición. El primer estado cuando el botón que estamos interactuando con facilidad el botón cancelar. Ahora cuando estamos haciendo click en los otros botones. Entonces vamos a decir si la interacción componente que yodo Kusto es igual al polo N, va a hacer básicamente lo mismo. Déjame copiar y pegar esto. Que en vez de decir, no se puede cancelar este tazón, vamos a decir, no se puede terminar este otoño. Si se me permite terminar la encuesta, voy a llamar a métodos de material de datos del recolector de reacciones. A lo mejor podemos especificar lo que no voy a especificar un reciente aquí. No vamos a especificar una razón aquí. Sólo detente la cosa aquí. Opcionalmente podemos poner un retorno aquí. No es necesario porque esta última condición, por cierto, la voy a sumar de todos modos. De acuerdo, así que ahora tenemos nuestros propios componentes recogen. Básicamente, revisemos lo que hicimos. Ponemos una llamada de vuelta hacia el on cobramos una prohibición del colector de componentes, donde primero tech y si es el botón de cancelar, la pizza el botón cancelar, vamos a comprobar si estamos permitido cancelar la pelota. Somos el mismo usuario que creó la interacción inicial de calificar el comando sondeo. Y entonces vamos, no se nos permite. Entonces solo vamos a seguir con una persona que intentó cancelar el fondo y decir, Hey, puedes cancelar esta pelota. Y si se nos permite, sólo vamos a subir al coleccionista de reacciones con estos método top. Y lo mismo con la encuesta final. Estamos comprobando si el usuario que creó la encuesta, no somos usuario. Solo vamos a decir que no puedes terminar con esta encuesta. Y si somos el usuario que grilla en el polo, reacciones del estado romano recogieron ese stock sin ningún motivo. Sólo va a ser como un estab normal como si el tiempo expiró, pero básicamente simplemente haciendo clic en el botón. Vale, así que eso es todo. En el siguiente video, vamos a sumar las reacciones. Espero que te guste. Nos vemos en el siguiente video. Adiós. 30. Comando de la encuesta Parte 7: Ok. Es hora de sumar las reacciones para ese informe sólo va a esperar a las reacciones al mensaje. Obviamente. Para eso, vamos a crear otra función. Entonces va a ser algo así como reacciones de const. Y esto va a ser sincronía. Por eso estamos ponderados. Que va a ser disfunción va a ser bonita escena. Sólo vamos a decir por lead, yo igual a 0, yo menos que las opciones brilladas dot length I plus, plus. Sólo vamos a esperar. El mensaje que reaccionan. Opciones mostradas de IA. A MOOC. Eso es todo. Solo vamos a agregar cada reacción de las opciones brilladas al mensaje. Mensaje. Tiene este método reaccionar que pases el emoji y eso es todo. Simplemente reaccionamos al mensaje. Ahora, agreguemos hilo. Corremos durante sordos, lo siento. Vamos a asegurarnos de que tengamos las reacciones del mensaje del gremio. Podemos reaccionar. Vayamos aquí y creamos una encuesta. Tiempo diminutos segundos. Vamos a añadir una opción tres C. ¿Por qué no una opción para d Phi? Esto, se puede ver que tenemos 1234. Esas son las reacciones y obviamente podemos reaccionar ante ellas. Ahora el paso final será recoger todas estas reacciones después de que expire el tiempo o después de hacer clic en el botón de sondeo ahora. Empecemos a hacer eso. Vamos a crear una reacción On, termina en reacciones. De nuevo, esto va a ser una función. Vamos a añadirlo al sentido de reacción. Lo que vamos a hacer aquí, oriente tomar el coleccionista de reacciones encendido. Vamos a pasar una devolución de llamadas asíncrona. Y esta devolución de llamadas asíncrona tiene dos argumentos. El primero es el recogido. Esto es básicamente las entradas colectivas va a ser un mapa y un reciente. Recuerda, cuando teníamos los componentes recolectan y agregamos esto como top y estos recientes aquí. Bueno, esa es la razón por la que vamos a recibir aquí. Ahora que tenemos todas las reacciones en estos mapa recogidos, necesitamos ver cuál tiene la frecuencia más alta. Eso es lo primero que vamos a hacer. Vamos a decir que dejemos que la clave max sea una cadena vacía y dejemos que el recuento máximo sea 0. Entonces inicialicemos estas dos variables. Voy a decir por const, clave y valor de las entradas de puntos recogidos. Hay un método para estos colectivos, que es recordar que esta es una colección que es básicamente un mapa de fantasía. Por lo que tiene este método de entradas. Vamos a decir si el recuento de valores mayor que el recuento máximo, va a decir que la clave máxima es igual a c0 y el recuento máximo es igual a value.com. Bien, perfecto. Ahora, recuerda que teníamos estas frecuencias array, así que ahora mismo vamos a usarla. Después de eso, vamos a guardar frecuencias de equipo va a ser igual a value.com. Clave básicamente es emoji y el valor es alguna reacción de mensaje. Para que podamos buscar este tipo. Podemos, déjame ver si podemos hacer eso. Reacción del mensaje. Veamos. Podemos la reacción del mensaje de hoy. Podemos intentar importarlo y solo control-click aquí. Y lo hará. Se irá a la definición de esta reacción de mensaje. Para que como pueden ver, tenemos este conteo público. Tenemos este mensaje usuario eliminar fetch. Entonces eso son todas las cosas que tiene esta reacción del mensaje. Una de las cosas importantes aquí es la cuenta. Queremos conocer el recuento de esa reacción de mensaje y obviamente la ECMO clave. Ahora que conocemos la llave max, el México, recuerda ECMO. Ahora que conocemos esa información, podemos obtener la información, toda la información del ganador. Sólo tenemos que ir a las opciones brilladas y encontrar, encontrar el elemento que donde el emoji es igual a la clave máxima. Emoji es igual a la clave máxima. En realidad podemos cambiar el nombre de estos dos emojis más frecuentes, que es mayor. Tenemos emoji más frecuente es igual a emoji, entonces ese es el ganador. Ahora podemos empezar, podemos empezar a modificar nuestro embed. Recuerda que tenemos, mientras que nuestro embed, Aquí están nuestros incrustar, podemos empezar a modificar esa cosa. Lo primero que voy a decir es el color. Quiero que estos sean verdes porque el polo y la deuda y cuando algo y con éxito, el color suele ser verde. Y la descripción va a ser la mitad de vapor y el ganador va a usar una interpolación de cuerdas. Ingresamos ese valor. Typescript en realidad me ayuda con estos puntos de signo de interrogación porque el ganador también puede ser indefinido. Si es indefinido, ese será un caso raro. Probablemente. Vamos a arreglar ese caso en el futuro. Por ahora. Seamos felices con esto. Y también voy a restablecer los campos. Los campos va a ser una matriz vacía. Ahora, quiero también, reinicié los campos, pero quiero ver también la tensión para cada una de las opciones. Sólo voy a decir opciones mostradas. Ahora voy a conseguir el valor y el emoji. Voy a decir incrustar ese campo de aplicación. Voy a guardar el nombre va a ser Bode por el valor. Esos van a ser los textos para el nombre. Y voy a decir frecuencias de emoji a una cuerda. Porque este es un número para convertirlo en fuerza. Y eso es todo. Ahora, podemos ver los votos para cada opción. Por lo que el siguiente paso será eliminar todas las reacciones del mensaje. Sólo tenemos que decir esperar mensaje de que las reacciones que remoción, que esto depende de usted. Puedes dejar la, las reacciones si quieres, pero yo quiero quitarlas. Lo final va a ser un mensaje de peso. Bueno, no es una cosa final que vamos a hacer, sino sólo para ver algo en Discord, vamos a decir mensaje dot edit y vamos a decir incrustado. Integrar componentes va a ser una matriz vacía. No queríamos agregar botones aquí. Por ahora, agreguemos aquí un paso adicional. Vamos a salvar a DM notifica igual a verdadero. Vamos a decir una forma en que los usuarios que arena. Y vamos a decir tu sondeo. Y vamos a agregar el mensaje, esa URL, mensaje, esa URL, luego éxito plenamente. Creo que eso es todo lo necesitamos para el evento del coleccionista de reacciones. Entonces intentemos probar estas cosas ahora. Tiempo, digamos 15 segundos. Opción B, la encuesta creada con éxito. Tenemos estas dos opciones. Voy a votar por. La opción a. Voy a esperar un par de segundos y ver qué pasa. Vale, entonces esto es lo que pasa. Incruste hábitat gut. Dice ahora que el polar ha terminado y el ganador, está siendo ese barco para un fue uno, sólo un voto y los votos por B. Y eso es, eso es todo. Creo que hicimos un gran trabajo por esto. Y fíjate que tengo este mensaje diciendo tu sondeo y con éxito, si hago click en ese enlace, me va a leer reg a este mensaje aquí. Eso es todo para este video, todavía necesitamos manejar estos botones aquí. Hagámoslo en el siguiente video. Adiós. 31. Comando de la encuesta Parte 8: Hola y bienvenidos de vuelta. Ahora, hagamos una cosa más. Manejemos el caso donde cancelamos el poste. Porque si vamos aquí y decimos Paul, digamos diez minutos, opción a y b. Y supongamos, bien, he recogido las reacciones. Quiero saber, quiero terminar con la encuesta. Sólo voy a terminar la encuesta ahora. Va a funcionar. Me va a enviar el mensaje a las 10.5 para hacer algo especial aquí porque solo sigue el flujo de las reacciones y el evento. Cuando tenemos una encuesta reciente y razones canceladas, queremos hacer algo, ser amigos. Vamos a decir aquí, e de reciente u es igual a cancelar encuesta. Voy a decir inmuta set color a rojo. Y luego voy a poner la descripción a algo como estos. Ball West canceló el set, estableció que el pie de página sea nulo. Retire el pie de página. Eso es todo. También. Estoy cancelando la encuesta. No quiero simplemente enviarme un mensaje en el DM porque tonto. Ya sé que estoy cancelando la encuesta. Voy a añadir una condición aquí. Hace poco es diferente a cancelar, tirar de ellos, enviarme ese mensaje también. Veamos qué pasa. Si digo Paul, tiempo. Tengo diez minutos, a y B en contraposición, hice algo mal. No quería poner a y B y C, así que solo hago clic en estos cancelan. Y ahora dice estos sondeos West cancelaron barcos para un barco para mí. Si quieres eliminar estos también, puedes, solo tienes que agregar el campo, establecer los campos para que sean una matriz vacía o null dondequiera que sea. Y eso es todo. Eso es lo que debes hacer para eliminarlos si quieres. Eso es todo por ahora. Tenemos todo en el lugar, creo. Pero hay una captura más, un caso H más. Si quieres desplegar esto a la producción y eres una empresa seria y tienes QA, no pasarías. Te diré por qué hay algún error en nuestra app en este momento. Si digo sondeo 1 segundo y adivina qué pasa, sólo va a fallar. Si hago N pole ahora, no va a funcionar. Se va a decir que estas interacciones fracasan. Si digo una vez más, 1 segundo, y B. Ahora es aún peor. No está respondiendo porque probablemente tenga algo. Sí, la app crash, se puede ver No se puede leer cosas de la propiedad en la fina lectura a cadena. Si voy aquí, estamos usando eso simplemente drenando la escultura de reacción y evento diciendo, Hey, esta cosa no tiene frecuencias y esta cosa está indefinida. Probablemente no tuvo tiempo para las entradas colectivas a la clave y al valor. Entonces ahora esta cosa está indefinida. Tenemos muchas opciones aquí. Recuerda que agregamos estos cierto valor medio. Establece el cuerpo máximo para ser 16. Pero cuando segundos, no podemos cambiar dinámicamente estos por ser 51020, lo que sea, porque no sabemos con anticipación lo que va a poner el usuario. Si va a ser segundos, minutos, horas. Esto es sólo declarativo, ¿verdad? Entonces no teníamos forma de saberlo antes de tiempo. Aquí tenemos dos opciones y tenemos que tomar una decisión. El primero es ver si la hora aquí, lo siento, no esta vez. La palabra que dijo, el tiempo MS, es menor que algún umbral. Podemos decir, oye, la encuesta Oriente demasiado corta, necesitamos más tiempo para que esta cosa reaccione, para que los mensajes estén adentro, para que las reacciones estén en el mensaje. Esa es una opción. La segunda opción, que creo que es un poco más complicada, pero es mejor porque esta vez en milisegundos. Depende del número de reacciones que estés agregando. Si solo tienes como dos reacciones, entonces cinco segundos son suficientes. Pero si estás agregando diez reacciones, tal vez tome un poco más de tiempo. Por lo que hay que poner el umbral para ser Hager, hay que aumentar el umbral. Entonces vamos a agregar otra variable llamada demasiado rápido. Ese es el nombre de mi variable. Se va a llamar demasiado rápido. Aprendí ir a hacer cosas interesantes dependiendo de si demasiado rápido es falso o verdadero. Vamos a omitir esto a variable más rápida para ser falso. En el, dónde está, las reacciones. Y vamos a, debajo de este for-loop, digamos demasiado rápido, es igual a las opciones mostradas. Duplicación. Diferente de las teclas de punto de objeto. Frecuencias. Ese idioma. Básicamente las frecuencias es una matriz que debe ser de la misma longitud de las opciones mostradas. Si el poli se asegura demasiado rápido, entonces esto no va a ser cierto. Las frecuencias no va a ser del mismo tamaño de las opciones mostradas longitud de punto. Si esto es cierto, entonces queremos hacer algo justo debajo de esta cosa aquí. Voy a decir demasiado rápido, demasiado rápido. Entonces vamos a decir incrustar ese conjunto Descripción. Va a decir que el pole time es demasiado bajo para que las reacciones estén en ello. Porque ver, están aumentando. Vamos a poner el color para que sea rojo porque pasó algo malo. Voy a establecer que el pie de página sea nulo. Esto es si es demasiado rápido, contrario queremos hacer lo que hicimos aquí. Esta cosa aquí, va a estar en la cláusula else. También aquí, quiero, no quiero enviar el mensaje a rápido es cierto. Si no es demasiado rápido. Y el reciente no es cancelado sondeo, DM notifique es cierto. Entonces envíame enviarme un mensaje a la dm. Eso es básicamente tenemos que seguir haciendo una cosa más al respecto. Vamos a probarlo ahora mismo. Entonces eso es genial. El sondeo con 1 segundo. Veamos. A pesar de que se añadieron las reacciones, establece que el tiempo de polo es demasiado bajo para que las reacciones estén en él. Allí había como una condición de carrera. Entonces hagámoslo con más opciones como esta. Creo que eso es suficiente. Vale, 1 segundo y no tiene tiempo para reaccionar, pero sigue agregando las reacciones. Todavía está fuera en la reacción. Entonces esa es una cosa que tenemos que evitar. Y eso es muy sencillo de arreglar. Simplemente vamos a las reacciones de Agregar. Recuerda que hubo este for-loop que si es demasiado rápido para ir demasiado rápido, entonces solo regresa dentro quiero agregar más reacciones a esta cosa. Hagamos esto otra vez. 1 segundo, a, B, C, D. Creo que eso es suficiente. 12, es demasiado rápido y ahora no estoy agregando más reacciones. Necesito aumentar el tiempo de esta cosa. Ahora, creo que tenemos todo en su lugar para que estos sondeos funcionen. Ahora puedes agregar un poste. El tiempo puede ser de uno a 16. Si intenté a 17 minutos, ya se va a quejar. Entero de entrada b de uno a 60. Digo 24 horas, a y B. Esto va a funcionar. En realidad, esto va a funcionar. Si lo estás, estás usando este comando en producción, vas a trabajar siempre y cuando no cierres tu proceso. Esto es algo interesante también que hay que saber. No vamos a hacer esto, pero sólo quería comentar sobre eso. Cuando implementamos un nuevo cambio, cuando hagamos un nuevo despliegue de nuestro código, probablemente el código va a ser reemplazado y el proceso se va a cerrar. Esta cosa no va a funcionar porque no hay un proceso que esté escuchando esta cosa. Va a pasar el rato por la eternidad. Ahí es donde hay múltiples estrategias de despliegue que se encuentran, que existen en varios desarrollo. Azul, verde, las categorías y todas esas cosas, lo que no. Eso no es algo que vamos a ver, pero sólo piensa en eso. Eso si vas a hacer un nuevo despliegue y hay una encuesta que no ha terminado. Y vas a tener un problema si intentas reemplazar tu código antiguo por código nuevo. Pero de nuevo, no es un problema fácil de resolver. Por eso hay personas especializadas en este tipo de cosas. Y la maldición será muy, muy compleja si tratamos de ser tan perfecto en esto. Acerca de Eso es todo. Espero que te guste. Nos vemos en el siguiente video. Adiós. 32. Parte 1 del comando API: Terminamos nuestra encuesta. Ahora vamos a agregar un comando más que va a usar una API. Para llamadas API. Vamos a usar eje de hilo axioma para instalar estas dependencias. Estaba pensando, bueno, qué podemos usar la muestra Frank, a diferencia de los animales. Entonces voy a usar esta API de Deacon, que es la no oficial de mi animal East API. Y más específicamente, van a conseguir un animador aleatorio desde aquí. Entonces vamos a hacer una llamada GET, GET solicita a este punto final aquí. Se puede ver que esta cosa puede devolver 200, has leído retornos con éxito y animar o 400 si hay una mala solicitud o algo así. Este es su ejemplo de respuesta. Puedes abarcar todo y puedes ver todas las cosas aquí que se devuelven. Se puede ver que devuelve la URL, tal vez redirige a mi animal, al least.com o lo que sea. El título alicatado japonés. ¿ Qué más? El tipo llagas, episodio, episodios, el IV, It's Erin no son duración. Tenemos muchas y muchas cosas aquí. Agreguemos un nuevo archivo llamado get random animate. En realidad solo copiemos una cosa aquí. Vamos a modificar estos aleatorios y no olvidemos agregarlo aquí. El nombre de este comando va a ser obtener elemento aleatorio. Sólo vamos a decir que devuelve un elemento aleatorio. Ahora también vamos a declarar una URL animada aleatoria constante, que va a ser estas URL aquí. Aquí hay uno, sólo cópielo, pegarlo. Ahí vas. Ahora, vamos a usar ejes y vamos a usar x como también para formar la respuesta para que la respuesta sea algo que ya nos da esta información, la información irrelevante que queremos a partir de aquí. Acabo de crear este tipo y sólo voy a copiar y pegar porque la cantidad de tecleado de DC y no quería concentrarme en escribir aquí. Tipo obtener respuesta aleatoria animal va a tener una propiedad llamada datos. Y estos datas, o va a tener muchas cosas aquí. No incluí todo. Si quieres incluir todo lo que acaba de agregar a este tipo. Modifica la sangre que vamos a hacer aquí en estos comandos. Y eso es todo. El URL, el título, el título y Japón, la marea, los episodios. Sinopsis clasifica las imágenes. En realidad, sólo voy a usar una web p aquí. Así que vamos a eliminar esta propiedad aquí. El URL de la imagen, que va a ser la puntuación de cadenas anotada por duraciones. Eso es calificar géneros, temas, muchas cosas. No es todo lo que estas API pueden devolver. Puede devolver más cosas peores. Sólo voy a utilizar estos para los efectos de este ejemplo. Vamos a quitar esto. Y lo primero que voy a hacer, interacción de peso de E que la favorable. Así que déjame explicarte por qué estoy usando estos negros diferentes porque creo que aún no hemos usado esto. Pero usamos algo similar aquí en el, en la interacción botón que difería la actualización. El tercer pliego significa básicamente lo mismo. Entonces significa, oye, quiero no contestar estos momentos porque la API llamada puede decir, bueno, si falla, es una lástima, pero puede ser lento porque los servidores son lentos porque también hay mucho tráfico o lo que sea. Es por eso que necesitamos que éstos difieran. Por defecto. Puedes. Si te tardas más de tres segundos en contestar, vas a tener problemas, ¿verdad? Entonces pero chico, haz problemas de bufanda. Por lo que para aplazarse para aplicar más de tres segundos, es necesario usarlos para la sangre. Entonces este es un mecanismo para decir, oye, tal vez, tal vez, tal vez pueda tardarme más de tres segundos en contestar. Así que sólo espérame. Entonces vamos a conseguir la respuesta de la llamada API. Entonces vamos a usar ejes para estos. Recuerda cuando los ejes de piedra van a decir access dot get, estos esperan un argumento. Y el primer argumento que espera, respuesta, el tipo de respuesta. Ya va, el tipo de datos de la respuesta que va a ser obtener datos aleatorios de respuesta animal. Ahora, esto va a ser una función, así que tenemos que pasar algunos argumentos. El primero es la URL animada aleatoria. El segundo es un objeto de opciones. Puede ser tan complejo como quieras. Lo único que quiero, la respuesta de transformación más fácil. Esta respuesta va a ser de tipo cualquiera porque sea JSON. Voy a decir constante Jason es igual a JSON.parse trapo respuesta. Ahora esto es de tipo. Así que sólo voy a decir, Hey, quiero que esto sea de tipo conseguir anomalías aleatorias, y luego devolver JSON eso. Lo sé. Esto puede ser un poco complicado porque ni siquiera está claro en la documentación del eje. Pero luego tratamos de explicar lo que hice aquí. Axis sí consigue, necesito pasar algún tipo. El tipo va a ser lo que vuelvo Aquí, Ok, Así que ese tipo de retorno tiene que ser el tipo de esta cosa. Aquí estoy asignando el tipo, el JSON.parse porque esta es la respuesta sin procesar. Va a tener estos datos con todas estas cosas. Por eso estoy diciendo, Hey, quiero que este JSON después de analizar sea esta vez. A partir de ahí, solo voy a devolver los datos de JSoN. Parte de esta respuesta es un eje responde con este tipo aquí. Aquí viene la parte confusa de un downbeat, confuso. Ahora la respuesta tiene muchas cosas como café, datos, encabezados, solicitud, estado y estadísticas estándar. Esta es la que nos resulta interesante porque los datos van a tener todas estas cosas aquí que especificamos en nuestro tipo. Voy a sacar de la respuesta. Voy a deconstruir datos. Aquí. Sólo voy a deconstruir muchas cosas. Título en imágenes japonesas. Las imágenes son un objeto. Entonces aquí solo voy a deconstruir la web B, que de nuevo es otro objeto que voy a deconstruir la URL de la imagen. Podemos deconstruir más cosas como el rango, la URL, una sinopsis de tipo. Esto tatuajes la puntuación anotada por la calificación, duración. Los géneros. Creo que sabemos una cosa. De acuerdo, entonces hemos deconstruido toda esta información de la respuesta. En el siguiente video, realidad vamos a construir el Embed y responder con el emit. Espero que te haya gustado este video. Nos vemos en la siguiente. Adiós. 33. Parte 2 del comando API: Hola y bienvenidos de vuelta. Ahora sólo tenemos que montar el Embed, que es la parte fácil. Creo. La claridad es incrustar la variable. Llámalo nuevo mensaje incrustado. Recuerda dos métodos importantes, gambit del score dot js. Entonces establece el título. Esto va a ser igual a la URL del Título. Va a ser igual a la URL que deconstruimos aquí. Muy bien. ¿ Qué más? Podemos establecer la imagen para que sea la URL de la imagen. Y podemos establecer los dos superiores. El nombre puede ser el título en japonés. La descripción puede ser la sinopsis. Y vamos a sumar más información. Pero por ahora vamos a contestar. Vamos a editar la respuesta. ¿ Qué tenemos que hacer? No responde, pero edita respuesta. ¿ Por qué es eso? Bueno, la razón es porque nos referimos la respuesta para que pueda tardar más de tres segundos superávit. Por lo que ahora necesitamos editar la respuesta cuando hagamos eso, en lugar de solo retocar. Vamos a correr discordantes sordos. Ya han estado probando esto. Corre. El comando get random animate. Yo consigo estos animales. Este es el autor, que es el título y los DC japoneses. Estos serán el título con una URL. Por lo que si haces click en esto, te redirigirá a mi animal es probable que puedas ver que te redirigirá a mi animal. ¿ Eso se conoció? La descripción de estas incrustaciones, la sinopsis, la imagen será bien la imagen devuelta por la API. Queremos añadir más información porque tenemos más información disponible aquí para eso, vamos a crear solo una pequeña función auxiliar para agregar campos. Voy a llamar a esta función f campo. Esto va a recibir un campo que va a ser una cadena, y un valor que va a ser cadena o un número. Lo que vamos a hacer es decir si el valor existe, el valor existe. Vamos a tomar el InBev y sumar el campo. El nombre va a ser el campo y el valor va a ser valor punto dos cadena porque recuerda que puede ser un número o una cadena. Entonces si es una cadena a cadena no va a hacer nada. Si es un número, solo va a convertir la cadena. Estas verdaderas, solía decir, Hey, quiero que esto esté en línea. Aquí viene algo interesante. A lo mejor ya pensaste en esto, pero miró que estamos haciendo aquí una condición de aserción diciendo evalue, por qué estamos haciendo esto. Bueno, aquí estamos diciendo, Hey, todo puede salir bien? Pero eso no es cierto. A lo mejor he visto, y esto es puramente experimental. Y es algo que no se detalla en la documentación. Pero puede ser que, por ejemplo, puntuación en lugar de número es no. En cambio, podemos hacer, sin duda podemos hacer este número o nulo. Pero de nuevo, tengo que estar calentando la API varias veces para ver todas las cosas que son que pueden ser nulas o incluso indefinidas. Entonces eso es algo que chupó de esta API. No es nuestra culpa, es el pliegue de las API el que no especifica lo que puede ser nulo y lo que no puede ser nulo. Pero definitivamente puedes hacer algo como esto. Será más correcto. Será más correcto, pero no quiero golpear la API varias veces solo para ver qué está definido y qué no está definido. En lugar de hacer eso, acabo de hacer esto en el código, digamos, Hey Eve, sólo los valores presentes. Porque recuerda estos TypeScript se va a compilar a JavaScript. Y cuando ejecutas estos valores, no es algo que pueda venir como una cadena o un número, puede venir ahora. Es sólo que estamos viendo en grifo. Bueno. Oye, sabemos que esto es cadena o un número, pero en el mundo real, estos pueden ser nulos. Entonces esa es una pequeña explicación de esto. Ahora hagamos algo. Llamemos a esta función f. Con el rango de campo. Vamos a pasar el rango. Vamos a llamarlo con el tipo va a pasar el tiempo. Vamos a llamarlo con puntuación. Puntaje. Y ves que esto se está volviendo muy fácil porque definimos esta función. Después anotó por. Entonces tenemos la calificación. Podemos sumar también el ¿qué más? Se puede añadir esa duración. Nosotros tenemos estos. También necesitamos sumar un estado tatuajes. Permítanme añadirlo a continuación anotado por. Ahora hemos utilizado toda esa información. Solo tenemos géneros y temas que son array, por lo que necesitamos convertirla de alguna manera en una cadena, y eso es bastante fácil de hacer. Sólo tenemos que hacer esto. Vamos a decir géneros, una cuerda o algo así. Van a ser géneros que mapa, ese mapa. Vamos a conseguir el nombre y la URL. Y vamos a usar un hipervínculo del flagelo js slash builders. Esto básicamente espera como primer argumento, los textos que se van a mostrar, que en este caso va a ser el nombre. Y el segundo argumento es la URL. Vamos a hacer lo mismo, pero con los temas. Temas. Temas, temas es bebida es igual a esto. Ahora solo agregamos los campos diciendo géneros, va a ser la ictericia, una cuerda. Y esto sigue siendo un mapa. Entonces necesitamos unirnos a esta cosa y podemos unirnos a ella compra base o por nuevas líneas, lo voy a hacer por nuevas líneas. Voy a hacer lo mismo, pero con los temas. Temas, fuerza. Creo que ya hemos terminado. Vayamos aquí y consigamos un animal al azar. Una vez más, se está tomando su tiempo. En la aplicación no respondió probablemente porque era el servidor se estaba reiniciando. Y ahora tenemos esta cosa aquí. El título en japonés, no entiendo que sea un título. Y se puede hacer click en eso y se leerá reg debido a mi animal es la sinopsis del tipo. Está diciendo que el dueño es tatuajes terminados de ventilar, leer temas de duración y mira eso. Esto es interesante porque esta cosa aquí no tiene la partitura, la partitura por los géneros. Por lo que nada de esa información está presente. Y no tuvimos un error porque agregamos estos IV valor. Se puede ver que en el mundo real esa información no puede estar presente. Y será mejor si puedes hacer algo como esto. Pero de nuevo, no queda claro de la documentación y no quiero leer demasiado en eso. Eso es todo. Ahora ya sabes cómo hacer comandos que llamaran una API. Lo importante aquí es estas interacciones que antes de responder. Porque si no haces eso, entonces vas a tener problemas. Además, esta cosa puede fallar. Axial, puede devolver tal vez 500 o algo así. Entonces será impresionante si puedes. Pequeñas mejoras para manejar esos casos. Esa documentación dice, No, estos siempre regresan a escribir a mano o 400. Y si haces una mala petición o algo así, pero eso no es cierto. Hay documentación que está mintiendo que puedes tener un 500, puedes tener yo no sé, 4142, lo que sea, lo que sea, porque nada es perfecto en el mundo del software. Por lo que también hay que ver ese caso donde falla la propia llamada API. Eso es, eso es todo. Espero que te haya gustado este video. Nos vemos en la siguiente. Adiós. 34. Comando de ayuda: Hola y bienvenidos de vuelta. Ahora vamos a agregar el último comando, que va a estar al comando que define subcomandos. Va a ser un comando de ayuda. Entonces básicamente lo que vamos a hacer en el marcador Este, algo así como una ayuda de barra. Y eso nos mostrará una lista de subcomandos donde podemos obtener más información. Al igual que por ejemplo, Una información más sobre la encuesta, entonces en este tribunal diré que es una ayuda exuberante encuesta de MS Slash. Vamos a hacer eso por cada mando aquí. Quiero decir, podemos, pero vamos a agregar propiedad nupcial llamada Ayuda dentro del tipo de este comando slash. Entonces aquí vamos a agregar algo como esto, ayudar a la fuerza. Ahora, si incluyo eso dentro de cualquier lado, cualquiera que sea el comando que quiera, entonces se va a mostrar en esa lista. Y si no, entonces no se va a mostrar. Vamos a hacer eso de una manera muy inteligente. En primer lugar, vamos a crear una ayuda con ese archivo ts. Y lo que vamos a hacer aquí va a ser un poco diferente. Lo vamos a hacer aquí es crear la función que va a recibir una ayuda airear argumento. Y vamos a ver ese tipo de esta cosa en un momento. Y estas función va a devolver un comando slash. Entonces empecemos a hacer eso. Digamos exportar const, comando de ayuda. Esto va a recibir un ayudante Y vamos a ver qué tipo de esfínteres. Y esto va a devolver un comando de barra. El ayudante a. definamos ese tipo aquí. Tipo de exportación, Ayuda. Esto va a ser una matriz. Esta matriz va a ser una matriz de objetos que tienen el nombre del subcomando, que va a ser una cadena. Descripción del subcomando, que va a ser cadena. Y una ayuda de subcomando de ayuda, que también va a ser una cadena. De acuerdo, entonces ahora vamos a usar este tipo de raid ayudante. Y básicamente ahora lo que vamos a hacer, facilidad en el archivo index.js. Vamos a hacer un pequeño cambio aquí. En primer lugar, no vamos a exportar esto de inmediato. Primero queremos conseguir estos ayudantes re haciendo alguna transformación a los comandos de barra. Entonces vamos a llamar a esta función de comando de ayuda. Y vamos a empujarlo a estos comandos de barra. Y vamos a exportar eso al final. Entonces el último paso, podemos hacerlo ahora mismo. Se va a exportar estos comandos de barra inclinada. Ahora definamos la ayuda o el objetivo. Estos ayudantes a va a ser una barra de comandos. Vamos a filtrar primero aquellos comandos que no tienen propiedad de salud. Vamos a decir comando. Esta cosa me va a dar sólo los comandos que tienen la ayuda de la propiedad. Por eso estoy usando estos dos operador bancario va a explotar operador para filtrar esas cosas hacia fuera. Entonces voy a decir mapa de puntos. Y voy a conseguir el comando. Y la ayuda. Voy a devolver un objeto. Y este objeto va a tener el nombre del subcomando, que va a ser el nombre del conducto de comando. El subcomando descripción, que va a ser el comando esa descripción. De hecho, déjame escribir aquí esta cosa. El submando ayuda, que va a ser esta ayuda a Roberta aquí. Greg, ahora se está quejando ¿por qué? Porque recuerda estas cosas, un acero me dejó ver el tipo de esta cosa. Se puede ver que el tipo de esta cosa es cadena de subcomando, descripción del subcomando del subcomando string sostuvo la cadena o en el Find. En nuestro ayudante un tipo. Recuerda que esto no es indefinido. Con el fin de arreglar eso en el filtro. Aquí podemos decir comando requerido comando slash. Lo que estoy haciendo con estos requeridos requieren básicamente dice que cada inmueble del tipo que pasamos es obligatorio. Va a convertir estas cosas aquí a algo así como lo mismo, pero sin esta propiedad para ser opcional. Eso es lo que el polvo requerido en TypeScript. Ahora que tenemos esto, necesitamos conseguir el comando de ayuda. Voy a decir que el comando de Ayuda va a ser comando de ayuda. Pasamos una lluvia ayudante. Por último, vamos a decir comandos de barra inclinada que empujar ayudaron a entrar. Entonces vamos a exportarlo como último paso. Ahora que tenemos un filtro a cabo esos comandos sin la propiedad de ayuda que hemos pasado con éxito estas tasa de ayudantes al comando help. Empecemos a construir nuestro comando de ayuda. Entonces recuerda estas necesidades para devolver un comando de barra inclinada. Pero antes de hacer eso, vamos a hacer algo muy inteligente, que es construir un mapa de ayuda. Hicimos algo parecido en el comando sondeo donde construimos algún mapa de emoji o algo así. Bueno, aquí vamos a hacer básicamente lo mismo. Vamos a construir un mapa donde las claves son el nombre del subcomando. El valor es ayuda, es la ayuda a fortalecer la ayuda del submando. Voy a tomar la matriz de ayuda. Voy a reducirla. Y el tipo, el resultado de esta cosa va a ser un objeto donde la clave es una cadena y el valor también es extraño. Ahora voy a pasar una devolución de llamadas. Y el segundo argumento es el valor inicial, que va a ser una matriz vacía. Mapa será esta matriz aquí. Y luego el segundo argumento es el valor actual que se puede ver tiene el nombre del subcomando, descripción del subcomando, y la ayuda del subcomando. Voy a deconstruir esta cosa y voy a conseguir el nombre del submando y la ayuda del submando. Y yo voy a hacer aquí es básicamente decir mapa del nombre del submando es igual a la salud del submando. Y devolverlos arriba. Ahora que hemos construido, construido este mapa, necesitamos devolver este comando slash, ¿verdad? Entonces voy a devolver un comando. Este mando va a ser un IIFE. Si no recuerdas lo que es eso. Es una expresión de función inmediatamente invocada. Entonces algo como esto, algo como esto. Se trata de un IIFE. Estas necesidades de IIFE para regresar es constructor de comandos de Lash. Voy a declarar comando slash igual a nu es constructor de comandos de barra inclinada. Voy a poner el nombre para que sea ayuda. Voy a establecer la descripción para obtener ayuda para un comando específico. Ahora, voy a conseguir esa información. Cada matriz de la matriz. Voy a decir por cada uno, voy a conseguir el nombre, la descripción. Lo que voy a hacer con esta información Ysaye es comando slash, ese subcomando. Necesito construir el submando. Y para construir el subcomando, solo voy a decir subcomando ese setName. Y luego voy a establecer el nombre a estas variables aquí, nombre, que liberan el nombre del subcomando. Y esto será Soy subcomando descripción sub comando name, y luego establecer la descripción para que sea descripción del subcomando. Ese consejo, hemos agregado subcomandos para todos esos comandos que tienen la ayuda a prepararlo. Por último, sólo devuelva este último comando. Ahora ochenta quejándose porque apropiado para correr al este no aquí. Entonces solo vamos a agregar la función run, que va a recibir una interacción. Y entonces voy a decir, ayudarnos a entrenar va a ser igual para ayudar a mapear adopciones de interacción. Eso consigue sub comandos. Y eso es todo. Sólo tenemos que responder ahora dirección que responda con el contenido. El contenido va a ser que nos ayude a soñar. Eso es todo. Eso es todo lo que tenemos que hacer. Con el fin de agregar dinámicamente estos comando help para los comandos que tienen esta propiedad. Por ejemplo, permítanme añadir algún inmueble escuchando la encuesta porque puede ser más compleja. En la ayuda que, vamos a añadir algún texto como comando. Por crear una encuesta que tenga un tiempo entre 160 segundos, minutos, horas. tanto que un hasta diez opciones. También puede opcionalmente, también puede agregar un título, una descripción del título, descripción del título, y si desea o no que se le notifique VIA DM cuando finalice el polo. Creo que ese es un texto bastante razonable para nuestro comando pull, ¿verdad? Ahora que esta cosa tiene un comando de Ayuda, nosotros, lo sentimos, una propiedad de salud. Podemos correr sordos. Yo soy, veamos qué pasa. Compré estos en línea. Entonces vamos a teclear ayuda. Ahora se puede ver que tenemos encuesta de ayuda. Ahora dice comando para la calificación que saqué que puede tener un tiempo entre todos los textos que acabamos de definir. Agreguemos uno para el hola. Tal vez agreguemos uno para userinfo porque el amarillo es demasiado simple. La ayuda va a ser. Este comando devuelve la información del usuario. El momento en que él o ella se unió al servidor para Discord su perfil, imagen, los roles, etc. Ahora vamos a correr dev. Una vez más. Vamos a nuestro servidor. Ahora se puede ver que tengo ayuda para tirar y también me he aferrado a userinfo. Si escribo ayuda, lo siento, OVNI. Está diciendo que estos comandos devuelve el OVNI del usuario como el momento en que él, ella se unió. Toda esta información que puede ser muy útil para el usuario. Se puede ver que esto es sólo las opciones son sólo para aquellos comandos que tienen estas propiedades de ayuda. Para aquellos que no tienen la propiedad que son y eso se muestra. Y por qué decidí hacerlo de esta manera. Lo hice de esta manera porque no quiero agregar información innecesaria. Eso es, eso es todo. Espero que te haya gustado este video y nos vemos en el siguiente. 35. Añadir Config.: Hola y bienvenidos de vuelta. En esta sección les voy a mostrar cómo agregar pruebas a nuestros comandos. Esto es algo que no he visto hecho muy bien porque es un tema complejo en el sentido de que no son ninguna biblioteca por ahí que tratara marcar cosas como la interacción, que es un tema muy complejo. Por lo que podemos pasar horas tratando investigar sobre cómo ordeñar objeto neto. Eso es totalmente posible, pero va a ser muy, mucho tiempo. Entonces descargo de responsabilidad aquí fácilmente, vamos a probar, vamos a sumar pruebas. Un comando para mostrarte cómo se hace. Pero probablemente no sea la mejor manera. Pero de nuevo, no veo ninguna otra mejor manera de hacerlo. En primer lugar, necesitamos toda esa calderilla para configurar nuestra configuración porque vamos a usar Sí. Así que primero agreguemos como dependencia sorda, broma y tipos solo porque dónde ves en TypeScript entonces incluso si no estamos usando TypeScript, necesitamos esta biblioteca para JavaScript para ayúdanos con la autorealización de los métodos en su interior. Sólo vamos a esta cosa. Y esperemos un momento para que esto se complete. Ahora, agreguemos barra o Biblia o sin embargo, no sé cómo eso es pronombres realmente. Pero estos 0s, estas van a ser tres palancas que nos van a ayudar a transferir código de archivo escrito en JavaScript. Entonces las pruebas que están escritas en TypeScript, JavaScript. Por lo que es un preset que va a ser utilizado por digest para que usted pueda entender nuestras pruebas TypeScript. Vamos a agregarlos así, pero Bellcore, preset Bell, Preset TypeScript. El archivo que voy a añadir, también lo puedes encontrar, encuéntralo en la documentación de solo para que no sea fácil encontrar esa documentación. Pero antes que nada, ejecutemos este comando para inicializar nuestro archivo de configuración justo. Así que maldita TSC, dash, dash en ella. No TAC, lo siento, Darn acaba de salpicar, salpicar en ella. Se va a hacer algunas preguntas, así que intentemos responderlas. Nos gustará usar el ESC. Estamos ejecutando pruebas de raspado paquete JSON. Responderé sí. Nos gustará usar TypeScript para el archivo de configuración. Diré que sí otra vez. Y me va a decir elegir el entorno de prueba que se utilizará para las pruebas. Si fuéramos reaccionar por ejemplo, vamos a vincular JS DOM, pero estamos usando un revés. Vamos a decir nodo. ¿ Quieres solo agregar informes de cobertura por ahora? Voy a cantar no, porque su cobertura no va a ser buena porque sólo vamos a escribir una prueba. Que de cualquiera se debe utilizar para instrumento para la cobertura del código. Y de nuevo, no vamos a tener cuidado con la cobertura del código. Para que puedas seleccionar lo que aquí voy a seleccionar V8. Se lo puede decir por Bill, borrar automáticamente llamadas simuladas, instancias y resultados antes de cada prueba. Voy a decir que sí. Te voy a explicar qué es esto , qué generaron estos. Por lo que generó estos archivos. Y la última pregunta que dijo, borrar automáticamente las instancias y resultados de Michael antes de que cada prueba una vez fuera traducida a esta propiedad aquí, claro MCS igual a verdadero. El proveedor de cobertura. Y lo que es todo, todo lo demás está mandado para que podamos dejarlo así. El proyecto crece probablemente. Tendrás que ver las opciones aquí, justo entonces ver qué es cada opción aquí así, y llorar para usarlas. Ahora que tenemos ese archivo apenas dot config dot txt, necesitamos crear otro archivo que se va a llamar bible dot dot js. Esto nos va a ayudar para nuestros archivos de script tipo. Sólo voy a usar módulo que exporta. Y vamos a decir presets. Vamos a poner primero una matriz, el primer elemento, que va a tener balbucear barra preestablecida EMF, luego apunta sin corriente. El segundo elemento sólo va a ser barra preestablecida tipo de script. Eso es todo. Este archivo de configuración para biblia nos va a permitir escribir pruebas con TypeScript, cual es genial porque queremos que todo se escriba en TypeScript. Creo que TypeScript se está quejando porque está diciendo archivo sólo un conflicto que TS No está suscrito ciervo, que es la carpeta fuente. Entonces creo que lo especificado algo así aquí. Entonces fuente de corzos, está diciendo, Hey, esto sólo ese archivo copy.txt no está dentro de la fuente. Entonces me quejo, esto es fácil de arreglar. Simplemente decimos aquí excluye obviamente módulos de nodo por si acaso y apenas dot dot ds. Entonces eso es todo. Ahora el problema es la sal y creo que los módulos de Nodo ni siquiera es necesario. Pero sólo lo estoy poniendo aquí, por si acaso. Pero creo que no es necesario ponerlo aquí. Pero es mejor ser explícito que tener errores, errores impredecibles e impredecibles . Eso es todo. Ahora en el siguiente video, lo que vamos a hacer es intentar agregar una prueba para un comando. Espero que te haya gustado este video. Nos vemos en la siguiente. Adiós. 36. Prueba Para Añadir Comando: Hola y bienvenidos de vuelta. En este video, realmente vamos a crear la prueba. Recuerda, en nuestro comando add, que es el comando que vamos a probar. Tenemos obviamente la propiedad de comando y la propiedad que es una función asíncrona. Entonces vamos a probar la propiedad equivocada solo porque esta es la lógica empresarial real. El comando es sólo una forma declarativa de crear. Yo lo recomiendo. Puedes intentar construir una tasa de prueba, pero no agrega demasiados valor como probar la lógica empresarial real. De acuerdo, así que vamos a agregar una carpeta dentro es menos comando llamado tareas. El interior de las pruebas, vamos a agregar un nuevo archivo llamado agregar tareas dot ts. Aquí vamos a importar obviamente el comando at desde ese archivo. Y en la prueba, vamos a decir que responde con la suma de dos números. Vamos a ejecutar estas función de ejecución. Y esta función de ejecución no es un solo método. Tenemos que transmitir su devolución de llamada de pensar. Entonces ahora lo que vamos a hacer es tratar de marcar estos obtener número porque necesitamos que este buen número responda o devuelva un valor. Por lo que también se define ese número uno es encontrar un número dos. Para hacer eso, vamos crear una variable llamada número. Vamos a decir sólo punto Fn. Esta es una marca real y podemos hacer estas cuadrículas y función MAC opcionalmente textos y simulacro de implementación. Entonces podemos hacer básicamente un montón de cosas con esta función solo MAC. Vamos a llamar a este simulacro o el valor de giro. Una vez. Vamos a decir uno y lo vamos a hacer de nuevo. Devolver valor una vez, retorno MOG, pero otros pero con cinco. Lo que esta cosa está haciendo es básicamente decir, Oye, la primera vez que me llamas, devuelves uno, el número uno va a hacer uno. Y la segunda vez que me llames, regresa cinco. Entonces el número dos va a estar bien. Bien, ahora vamos a crear el objeto de interacción real. Y es aquí donde no he encontrado la mejor manera de hacer esto. Porque no hay bibliotecas para tratar de marcar estos objeto de interacción, que es bastante, bastante complejo. Obviamente estábamos usando JavaScript, estos no serán un problema, pero como estamos usando TypeScript, no hay una buena manera de hacerlo. Opciones interiores. Vamos a sumar esto get number thing. Ahora, cuando se ejecute la prueba, vamos a deconstruir opciones, que va a ser el tema aquí. Y luego a partir de esas opciones vamos a conseguir estos obtener la cosa número aquí. Número. Eso es lo primero que necesitamos para chocar. Y lo segundo que necesitamos para marcar estas respuesta, que va a ser de nuevo ajustar. Esta cosa no necesita ninguna limitación porque no devuelve nada. Pero en realidad vamos a esperar que estas respuestas se llamara con estos contenidos. Aquí mismo. Vamos a esperar que se llamara con este objeto aquí, con este contenido y con los valores correctos. Lo siento, esto es MC, devuelva los de valor. De acuerdo, así que ahora vamos a tratar de ejecutar los métodos de ejecución. Entonces vamos a decir Agregar comando que se ejecute dentro del peso. Vamos a pasar la interacción. Y se va a quejar porque interacción Este ninguno de tipo manda la interacción. Podemos tratar de hacer estas interacciones como interacción comandos desde estos anotados JS. Y todavía va a quejarse porque necesita mucho, de, de otras cosas aquí para ser considerado una interacción. Esta es la parte donde no me gusta, pero no veo ninguna otra alternativa. Primero lo echamos como desconocido y luego les preguntamos en interacción. Nuevamente, esto no es algo bueno, pero es lo único que he descubierto al intentar probar estas cosas aquí. Se atreven, ella será bibliotecas para tratar de cosa de monos. Eso sucede cuando se tiene una biblioteca de código abierto como esta al cuadrado, sí, creo que no están terminadas. No tienen una interacción. Así que espero para marcar este tipo de cosas, pero no tienen una. En realidad hay un paquete, pero es como muy viejo y no es compatible. Y tiene muy pocas descargas. Por lo que quiero usar eso en este curso. Sólo voy a usar estos lanzamientos, echando aquí. Ahora podemos decir Esperar obtener número dos han sido llamados dos veces, han sido llamados a veces. También podemos esperar que la interacción no responda. Se han llamado ancho, para haber sido llamado con. Y vamos a pasar el contenido del objeto. Uno, los cinco últimos es igual a seis. Esta es básicamente nuestra prueba. Ahora, cuando creamos toda esta configuración, pensando que había una pregunta diciendo: Oye, querías raspar para probar tus archivos, tus archivos de prueba. Y dijimos que sí, podemos ejecutar estos test de hilo va a correr invitado detrás de escena. Y como pueden ver, hemos pasado estas pruebas. Estas pruebas, su patrón. De acuerdo, así que eso es, eso es todo. Agregamos una prueba. Y lo importante que quería mostrarles aquí es que estas cosas aquí, como lo conoceré como dirección encomiada, esta no es la mejor manera de escribir pruebas. Queremos y objeto de interacción totalmente burlada. Pero en este momento no lo son. Bueno, es posible, pero va a ser muy, mucho tiempo tratar construir nuestros propios laboratorios para esto. Así que acabo de hacer este casting aquí, correcto, la prueba. Entonces ahora que ya sabes cómo agregar una prueba como esta, será muy fácil hacerlo para otros comandos. Te recomiendo encarecidamente que lo hagas por todos los comandos como ejercicio. Espero que te haya gustado este video. Nos vemos en la próxima conferencia. Adiós adiós. 37. Parte 1 de los roles individuales: Hola y bienvenidos de vuelta. Ahora vamos a crear un comando para asignarte algunos roles con algunos emojis personalizados. El primer paso será ir a tu servidor e ir a la configuración del servidor e ir a emoji. Aquí puedes añadir tus emojis personalizados. Vamos a sumar a. El primero va a ser un JavaScript emoji JavaScript. Y el segundo va a estar en TypeScript image. Ahora que tenemos estas dos imágenes Q-star, podemos obtener los ID y los nombres de estos emojis escribiendo columna barra invertida, JavaScript, columna de barra invertida , TypeScript. Esta es la versión que tenemos que establecer en nuestro código para poder utilizar estos emojis. Esto es lo que tenemos que hacer en el código. Vamos y en nuestro código, vamos a ir aquí a fuente. Y agreguemos un archivo llamado autoroles. Esto va a ser sólo una matriz. Nuevamente. Esta matriz va a tener la mayor cantidad de información, el nombre del rol, y su color. Llamemos a esta cosa vender roles. Y esto va a ser una matriz. Y el tipo de esta matriz va a ser emoji, que va a ser un objeto con el nombre del módulo. La idea del momento. Eso es lo primero. Ese nombre del rol, que va a ser una cadena, y el color que va a ser de tipo color resolvible desde el cuadrado solo para que podamos seleccionar los colores disponibles. Ahora, esto va a ser una matriz, y aquí vamos a codificar duro los roles que queremos crear. Esto va a ser un poco diferente, nos va a permitir hacer nuestra vida más fácil. Vamos a codificar duro esta información. No vamos a pasar a nuestro, a nuestro comando Add Roles slash la información. De acuerdo, entonces el emoji va a ser nombre. Javascript. Id va a ser esta cosa aquí, este número aquí. El nombre va a ser el rol de amante de JavaScript. No sé lo que quieras poner aquí, el color, tenemos todas estas opciones porque estos colores resolvibles apretados. Ahora vamos a copiar esto pero con TypeScript. Entonces vamos a decir TypeScript Lebur. Vamos a decir tipo de raspado y el ID va a ser estos. Por supuesto, seamos realistas aquí. Y pongamos el azul aquí porque TypeScript, es azul. Ahora que tenemos y estos auto o roles, agreguemos los Agregar Roles, roles comando, dot ts. Y de nuevo, vamos a copiar y pegar. Y intentemos construir primero el comando. Obviamente vamos primero reglas mando. Este comando va a ser muy, muy sencillo de realmente no va a tener demasiado. Va a tener un nombre fijo con las reglas. Establecer descripción para ser, crea un mensaje de que las personas pueden obtener sus propios roles. Lo importante aquí es que vamos a decir establecer permisos predeterminados a false porque no queríamos que nadie ejecutara estos comandos, para ejecutar este comando en el método run. También va a ser, bueno, va a tener su complejidad. Pero lo primero que queremos hacer Oriente que estos aliviando un rendimiento en caché. ¿ Recuerdas eso con él? Esto, creo que fue en la encuesta. Veamos. Sí, creo que dijimos en culpa. Ahora vamos a ver, decir que queremos que estos estén en un rendimiento en efectivo. La diferencia es que la culpa que están en el caché son las que el bot sabe cuándo, el libro, cuando corremos sordos Yarn o algo así. Ok. Pero estos incrustados, ya sabes, a algunos servidores. En mi caso, está invitado a mi servidor. Y esos van a ser los rendimientos en caché. Verás por qué hice esto en un momento. Interacción que responden contenido. No se puede utilizar este comando fuera de la culpa en caché. Regreso. Volvamos después de eso. Entonces vamos a crear una función para construir el M ben, llamémoslo built embed. Función estrecha. Vamos a decir que la descripción de plomo es igual a darse flecha. Y dos nuevas líneas. Vamos a iterar a través de toda esa matriz de roles de auto. Entonces vamos a decir cuatro columnas. Papel de los roles de uno mismo. Importamos eso. Vamos a concatenar esta cadena así. Vamos a decir que recuerda esa sintaxis. Te dije que pusieras emojis así. Roll dot emoji, un nombre. Entonces roll dot emoji DIÓ va a decir nombre de rol. Dos nuevas líneas. Entonces devolvemos la apuesta Embebido como este nuevo mensaje M, así. Establezca el título igual a los roles y establezca la descripción igual a la descripción y el color. Puedes poner el color que quieras. Escogeré cualquier color aquí, color aleatorio. Ahora que tenemos esta función para construir la apuesta final, vamos a crear aquí en el cuerpo de interacción. Eso es genial. El embed, incrustaciones iguales a construir y Beth y dejar responder con un mensaje. Vamos a decir que una interacción de peso dot reply incrusta y pasamos el MDF. Y ahora si ves en el tipo de mensaje es nulo, si queremos buscar la respuesta, necesitamos pasar estas opción buscar respuesta. Ya verás, ya verás que el tipo de mensaje es mensaje. Si fuera a tomar estos y poner en rendimiento, el tipo de esta cosa será API, mensaje o mensaje Boolean. Lo que quiero hacer a continuación es reaccionar a este mensaje con un emojis personalizados. Y no podemos hacer eso si el tipo de esta cosa es mensaje API. Para eso, digo en rendimiento en efectivo. Ahora el tipo será sólo mensaje. Ahora que estoy hablando de reaccionar, va a ser muy fácil reaccionar. Simplemente, construyamos esta función. Reaccionar para incrustar una función asíncrona. Nuevamente, vamos a iterar a través de todos los roles de uno mismo. Entonces para CMS, papel de auto rollos. Oh espera, mensaje punto reaccionar. Y vamos a pasar la cuerda que acabamos de crear aquí. Considerando que éste, de hecho, haremos función de utilidad para construir esto. Pero de todos modos, se puede hacer eso. Y ahora solo tenemos que esperar a reaccionar a impactar en Jahren sordos en este momento. Vayamos aquí. Vayamos y esperemos esto. Vale, ahora, o compré esta línea. Veamos. Ah, y tenemos que hacerlo, obviamente tenemos que ponerlo en esta matriz aquí desde los comandos de latigazos. Hagamos eso. Agreguemos el comando de otros roles. Vamos a correr maldita. Una vez más. Veamos ahora, si tenemos el add, ahora tenemos los Agregar Roles aquí. Pero mira esto, no puedo usarlo. ¿ Y por qué es eso? Bueno, recuerda que establecemos los permisos predeterminados a false. Entonces lo que tenemos que hacer es permitirnos, permitirnos o permitir un rol, lo que sea para ejecutar este comando. Y eso es lo que vamos a hacer en el siguiente video. Ojalá te haya gustado este. Nos vemos en el siguiente video. Adiós. 38. Parte 2 de los roles individuales: Hola y bienvenidos de vuelta. Ahora que sabemos que no podemos usar nuestro propio comando slash, hagamos algo y creemos el nuevo archivo llamado permisos. Permisos dot ts. Vamos a crear una matriz. Y esta matriz va a tener estas tres piezas de información. El primero, el comando, nombre, el que comando que queremos agregar algunos permisos, el ID de gremio y el ID de gremio es importante porque necesitamos establecer los comandos de aplicación, permisos. Y aunque la documentación diga, permítanme mostrarles el hecho de la documentación, Think se mantiene caliente. Déjame mostrarte un comando slash permisos. Se puede decir que así es como se agregan permisos para los comandos de Gremio. Y también puedes hacerlo por comandos de aplicación. Pero esto aquí no es cierto. Quieres, no me creas, pero le pregunté en su servidor porque esto no es cierto. Si intentas hacerlo así, TypeScript se va a quejar porque va a decir, hey, necesito una identificación de gremio. No puedo establecer permisos desde el comando de la aplicación sin una guillotina, cual es un extraño, lo cual es un extraño,es raro porque si estás diciendo, Hey, quiero establecer permisos para un global o aplicación mando y no debería necesitar la idea del gremio. Pero les pregunté sus servidores y dicen, Hey, esto es un error tipográfico, esto es incorrecto. En realidad necesitas pasar una identificación, un AD gremio. Entonces es por eso que la documentación necesita estar actualizada porque éstas están equivocadas. Con esa cosa en mente. Vamos a crear estos permisos const de exportación array. Esto va a ser de tipo array. Va a ser una matriz de objetos con nombre de comando, cadena, ID de gremio, que va a ser cadena. Y la matriz de permisos, que va a ser de tipo aplicaciones, permiso de comando Theta, y la tasa de eso. De acuerdo, así que veamos qué podemos hacer aquí. Eso es genial. Y la lluvia. El nombre del comando va a ser nuestro mando de roles. El ID de gremio va a ser nuestra variable de entorno de ID de gremio. El señor permisos va a ser así, una identificación. Y puedes configurar estos para que sean un ID de rol o un ID de usuario. En mi caso, voy a usar un ID de usuario. Puedo hacer click en mi avatar y copiar el DNI. Recuerda que necesitas tener habilitado el modo desarrollador. Y el tipo puede ser un usuario o una URL. Si tienes un rol existente como mod, envíame Illustrator lo que sea, puedes usar esa idea también. Pero sólo voy a guiarme usa comando y el permiso que es un booleano. En este caso, voy a decir, Hey, quiero que esto sea cierto. Quiero que estos ID, estos ID de usuario, usen estos comandos. De acuerdo, así que ahora que tenemos eso, vamos a crear aquí dentro estos on ready callback se establece la función de permisos que va a establecer los permisos tanto para los comandos de la aplicación como para la culpa comandos. Así que recuerda, manda obligación, lo que sea que les hagas. Puede ser inmediato como hemos visto en este curso, pero puede ser, puede tardar una hora en reflejar los cambios. Entonces por eso lo vamos a hacer aquí tanto por los comandos de obligación como por los comandos de culpabilidad. Creo que no hay manera de que sean 0s, pero no sé de una forma de hacerlo, escuchar los comandos de culpabilidad registrados. Entonces creo que es más fácil hacerlo aquí. En primer lugar, vamos a hacer que esta función sea asíncrona. Aquí. Voy a configurar esto para que se establezca comandos. Déjame ver, tal vez llamémoslo comandos de aplicación. Ahora vamos a crear la función aquí, una función interna llamada establecer permisos. Nuevamente, va a estar en una función sinc. Dentro de estas función asíncrona, vamos a iterar primero a través de todos los permisos de la matriz de permisos para una constante, permiso de permisos. Primero vamos a buscar el comando global que nos estamos refiriendo dentro de este objeto de permiso. Vamos a llamarlo así. Comando global igual a los comandos de aplicación. Son iguales, son sinónimos. Encuentra. En realidad, déjame. Espera esta cosa aquí. Buscar comando, donde comando dot name, EC igual a permisos nombre de comando dot. Ahora estos comandos pueden ser o bien un comando o vamos a añadir aquí el separador. Entonces esta cosa puede ser ya sea un comando o en la final. Entonces si existe el comando global, esta cosa existe. Tal vez ni siquiera necesitamos eso. Vamos a utilizar el operador de cadena opcional. Entonces si ejes de comando globales, vamos a establecer los permisos, permisos set de puntos es igual a, y necesitamos pasar un ID de culpa de culpa. Y los permisos, obviamente, este permiso, los permisos de permiso como este. De hecho, déjame simplemente deconstruir del permiso. Déjame deconstruir el ID del gremio. Y los permisos. Sólo hazlo así. Así. Veamos. Culpa. Ok. Ahora que los hemos puesto para el comando global, hagámoslo ahora por los comandos del gremio. Entonces, antes que nada, necesitamos conseguir el rendimiento. Y íbamos a buscar la culpa client.read rinde ese lote. Sólo para estar seguros. Recuerda que solo podemos conseguirlo primero desde el caché que podrías existir. Entonces Cliente, Déjame hacer esto. Déjame hacerlo así. Cliente dot, dot cash get y pasamos una identificación de gremio. Y estas pueden ser cualquiera de las ofertas son indefinidas. Entonces podemos buscarlo si no existe. Client.write rendimientos que fetch, yield ID. Ahora esta cosa siempre se va a definir. Ahora que tenemos la culpa, vamos a sacar los comandos de esos campos. Comandos de rendimiento, peso, culpa, que manda. Y esto es importante, vamos a buscarlo. Si tratamos de sacarlo de los cachés, no va a funcionar. Vamos a buscarlo siempre. Y luego vamos a buscar el, el comando de campo en particular. Así. Ahora si esto existe, establecemos los permisos, pero esta vez no necesitamos pasar un comando de rendimiento VIP que se establecen permisos, permisos. Eso es todo. Ahora que tenemos esta función, obviamente necesitamos llamarla después de los comandos de la aplicación. Así que vamos a la información y esperemos eso. Y ahora podemos ir a nuestro servidor. Y vamos a tipo de roles. Vamos a escribir esta cosa. Y ahora se puede ver que nuestro embed es enviado. Podemos usarlo y podemos reaccionar ante esta cosa. Y no va a pasar nada porque obviamente no hemos agregado ese código para crear roles. Entonces eso es lo que vamos a hacer en el siguiente video. Crea el código, calificación, el rol, Lo sentimos, En nuestro último comando. Comando roles. Espero que te haya gustado este video. Nos vemos en la siguiente. Adiós. 39. ¡No olvides añadir el id de gremio a tus variables de entorno!: Hola y bienvenidos de vuelta. Bueno, esto es sólo un recordatorio que ahora que estamos usando el ID de gremio, necesitamos especificarlo. Lo siento. Tenemos que especificarlo aquí. En el entorno variables o barras de conflicto. La heroína, Heroku. Así que solo escribe ID de gremio y consigue dibujó la identificación de la culpa. Recuerda cómo conseguirlo así. Entonces acaba de empezar. Eso es todo. Ahora, no tendrás ningún error en tu cinturón. O cuando inicias la aplicación en lugar de reconstruirlo. Eso es todo. Yo seré así. Nos vemos en la próxima conferencia. Adiós. 40. Parte 3 de los roles individuales: Hola y bienvenidos de vuelta. Ahora que sabemos usar nuestro propio comando slash, vamos a crear la función. Para crear los roles IV, existen. Vamos a tomar los roles de la matriz de autoroles. Y los vamos a crear sólo si existen. Así que vamos a crear aquí en el comando Agregar roles una slash, esa función va genial, roles. Si Xist va a ser asíncrono. Vamos a conseguir los roles existentes. Al hacer una interacción de peso ese gremio que rueda punto fetch. Esta vez culpa, estos solidificando porque hicimos esto en culpa en caché. Ahora construyamos el mapa. Esto va a ser, digamos que el tipo va a ser una colección o un mapa, donde las claves son los identificadores de los roles y los valores son los roles mismos. Queremos convertir estos a algo como este mapa donde un objeto donde las claves son ahora los nombres de sus roles como amante de JavaScript. Y el volumen sólo va a ser un booleano. Di, diciendo, Hey, estos rodando existencia real. Llamemos a esto roles existentes de mapa. Y esto va a ser roles existentes que disminuyan. Aquí vamos a utilizar la reducción. La coma de cuerda Boolean. Eso va a ser el resultado de esto. Entonces obtenemos el resultado que es el valor inicial. Entonces vamos a añadir el valor inicial. El resultado va a ser estas matriz vacía y se van a agregar algunas propiedades a medida que negociamos las más amplias. Y el segundo va a ser cada uno de estos valores. Y cada uno de estos órganos de rol tiene un nombre. Lo que vamos a hacer, un resultado del nombre es igual a verdadero y devolver el resultado. tanto que eso, lo siento, creo que esto no es correcto. Creo que estos deberían estar aquí así. Entonces ahora que tenemos el mapa de roles existentes, vamos a iterar a través de cada uno de los roles de uno mismo y verificamos si el rol ya existe, entonces continuamos. De lo contrario creamos la fila como esta para el rol constante de roles de uno mismo. Vamos a decir si el mapa de roles existentes de nombre enrollado es cierto, entonces continuamos. De lo contrario, esperamos interacción dot, dot, roles, dot create. Y podemos pasar aquí las muchas, muchas opciones. El primero obviamente es el nombre del rol, que es lo más importante. Podemos pasar un color. Va a pasar el color enrollado. Podemos pasarlo. Es mencionable o no. Voy a decir que no. También podemos pasar como Emoji Unicode o emojis personalizados. Pero en realidad esa característica está reservada para servidores que han nivelado dos de nitro o algo así. Entonces necesito muchas necesidades de usuarios en el servidor con nitro, donde necesito comprar mucho nitro, boost, como sea que se llamen. No puedo hacer eso. Puedo poner un emoji personalizado ahora mismo. Por lo que sólo voy a especificar estas opciones aquí. Si quieres ver más opciones, puedes ir a la documentación o puedes ir aquí a la definición de TypeScript y ver, oye, puedes pasar una razón. Tú vas aquí, puedes nombrar polipasto de cólera, la posición del papel también. Tal vez eso sea importante. No voy a especificar aquí los permisos también que bueno es opcional, pero también puedes hacerlo. El icono Emoji Unicode que no podemos poner tristemente porque no tenemos suficientes impulsos. Y eso es todo. Sólo tenemos que llamarlos ahora. Se llamaba, ¿Cómo lo llamé crear relativa existe función. De acuerdo, así que ahora si vamos a nuestro servidor y escribimos de nuevo roles, vamos a ver, sólo tengo este rol dueño frío. Y si hago clic en esta cosa, vamos a ver. Todavía no lo tenía. Veamos, vamos a hacer clic aquí. No lo tenía porque obviamente no estoy probando este momento que el Raleigh lo triste pero solo quería ver que se creó el papel. Lo siento, entré en el futuro y eso no está bien. Vamos a la configuración del servidor, Los roles, y ya puedes ver que tenemos estos JavaScript bajar este amante de TypeScript. Por lo que ahora hemos creado nuestros, nuestros roles. Si vuelvo a ejecutar este comando en las reglas y voy a los roles de configuración del servidor, vas a ver que son iguales. No han cambiado. Si yo, si no hago esta condición aquí, tendré muchos roles repetidos. Ese no es el caso aquí. Por lo que ahora en el siguiente video vamos a empezar a intentar, cuando reaccionemos ante esta cosa, vamos a sumarnos esos roles. Solo piénsalo antes de ir al siguiente video. Reacciones coleccionista, como hicimos en la encuesta no va a funcionar en este caso. ¿ Por qué? Porque tiene una carne magra de reacciones y van a limitar el tiempo. Y no queríamos el cojo, ¿verdad? Queremos que ese mensaje esté ahí para siempre y la gente simplemente haga clic en esa cosa y se den a sí mismos en roles. En realidad vamos a agregar otro oyente para ver si podemos recibir reacciones de mensajes. Espero que te haya gustado este video. Nos vemos en la siguiente. Adiós. 41. Parte 4 de los roles de uno mismo: Hola y bienvenidos de vuelta. Entonces ahora tenemos nuestra cama M, que tiene estas reacciones como en nuestra encuesta. Ahora necesitamos realmente conseguir un anuncio, los roles para el usuario que reaccionó ante ellos hasta el final. Vamos a crear un nuevo oyente llamado a la reacción del mensaje. Hagámoslo así. Costos de exportación en reacción de mensajes. Vamos a pasar a un cliente. Este curso va a volver nulo. Vamos a decir cliente, y tenemos todas estas opciones. Queremos que la reacción del mensaje en el Kohlberg va a ser una devolución de llamada asíncrona. Y esta devolución de llamada asíncrona va a tener la reacción y el usuario que reaccionó. Entonces la reacción es de tipo, reacción nasa y el usuario es de tipo, usuario o usuario polaco o parcial, métodos parciales reacción o usuario parcial. Creo que no lo hemos hecho, aún no hemos especificado los parciales, pero vamos a hacer eso a continuación. Primero, vamos a la derecha. La lógica. Lo que queremos hacer aquí es primero comprobar si el mensaje de reacción interacción punto, nombre de punto. Si esto existe, queremos que estos sean de tipo roles de AD. Queremos primero comprobar si es la interacción Agregar Roles. Entonces queremos encontrar los papeles de uno mismo. Voy a encontrar el papel. Sí, de hecho, hagamos esto afuera. Llamemos a este papel de reacción. Hacerlo fuera de esto si declaración. Vamos a encontrar que el auto roll, roll dot emoji que no lo hice, es para ser igual, déjame cerrar esta reacción. Este rol de reacción existe. Reacción rho. Esto va a ser parte de nuestra condición si. También queremos revisar su mensaje no es una culpa, reaccionar mensaje, mensaje de reacción en culpa. Y también queremos comprobar si el usuario va a enviar. Esto no está arriba porque recuerda, nuestro barco es el encargado de reaccionar, pero no queremos agregar roles a nuestra tienda comprada. Ahora vamos a conseguir la culpa con el punto del mensaje de reacción. Ahora que tengo el ID de culpa, voy a decir que el rendimiento es igual a, nuevo client.read gremios que dinero en efectivo que reciben identificación de gremio se debe repartir ID. Si esta cosa no existe, entonces sea culpa o indefinida, entonces esperamos rendimientos ese lote. La culpa. La culpa siempre está definida. Ahora queremos conseguir un rol existente. Los roles existentes son iguales a la culpa. Que los roles que dinero en efectivo. Esta va a ser una colección donde las claves son los identificadores de las reglas y los valores son los propios sujetos de rol. Ahora vamos a conseguir el papel para sumar. El rol a agregar va a ser igual, lo siento, a las reglas existentes. Vamos a encontrar, vamos a encontrar un rol existente donde el nombre de punto de rol existente sea igual a nuestro nombre de punto de rollo de reacción. Vale, lo siento. Ahora que tenemos el papel que añadir, de nuevo, estos pueden ser un rol o indefinido si se gira para encontrar no solo devuelto y no hacer nada. Pero si esta cosa e es de tipo rol, entonces vamos a decir const, usuario es igual al ID de punto de usuario. Vamos a conseguir al miembro del gremio. Rendir de nuevo, tratar a los miembros que cobran ese Gad, el ID de usuario. O si esta cosa no existe, recuerda, puede ser así. Si lo hago así, va a ser miembro del gremio o en la multa. Entonces si no está definido, voy a esperar. Miembros del gremio que obtienen el ID de usuario. Ahora, el miembro siempre es miembro del gremio. Y aquí hay que tener cuidado si los roles de miembro que cash tiene el rol de agregar ID de punto. El miembro ya tiene el papel. Entonces no queríamos hacer nada. Sólo regresas. De lo contrario acabaríamos en los papeles. Los roles son la segunda fila. Esta es nuestra lógica que se ejecuta profundidad discortante aquí. Veamos si funciona. Ahora el cuerpo está en línea, eso son roles. Y ya se puede ver que los comandos de la aplicación funcionando no funcionaban porque tuvimos que esperar algún tiempo para que funcionara. Ok. Así que ahora mira mis roles. Sólo tengo dueño si yo, si reacciono a estos ahora, todavía no tenía el neural. Veamos por qué. Hagamos algo de depuración. Vamos a intentarlo de nuevo. Tal vez, tal vez, quizá hagámoslo de nuevo. A lo mejor creo que lo que está pasando? Nos olvidamos de hacer algo. Nos olvidamos de ponerlo dentro del main.js, ¿recuerdas? Así que en reacción de mensaje, ese cliente estúpido error para mí. Hagámoslo de nuevo. Si digo, si reacciono ante esto, voy a conseguir el amante de TypeScript. Y si reacciono ante estos, voy a conseguir el amante de JavaScript. Ahora está funcionando. Ahora está funcionando. En el siguiente video, lo que vamos a hacer es lo mismo, pero cuando eliminemos la reacción. Nos vemos en el siguiente video. Adiós. 42. Parte 5 de los roles individuales: Hola y bienvenidos de vuelta. Tenemos la capacidad de agregar roles al reaccionar ante emoji. Hagamos lo mismo. Pero cuando sacamos la reacción, queremos sacar el papel en la lógica es muy similar. Vamos a copiar y pegar esto. Pero en lugar de una reacción al, llamémoslo una reacción, quitar. Cambie el nombre de esto obviamente en la reacción del mensaje, elimine. El evento serán estos. Reacción de mensaje eliminar. La lógica es casi la misma. Lo que necesitamos cambiar. Este no es el papel que hay que añadir. Esto será enrollado para quitar. Y en realidad no necesitamos esta condición porque no vamos a enviar su no es posible enviar. Al igual que soy una incrustación con una reacción y saco la reacción porque no has reaccionado a ella. Por lo que esto no es necesario y esto debe eliminarse. Creo que eso es todo. No necesitamos nada más para esto. Sólo necesitamos una cosa más. Sólo tenemos que enviar mensajes de reacción eliminar. Observe que ponemos estas dos cosas. Lo pondremos en el expediente de índice. Entonces hagamos eso. Exportar en mensaje, De en la reacción del mensaje, en la reacción del mensaje, eliminar. Vamos a ponerlos aquí. En lugar de ponerlos aquí. Pongámoslo así. Eso es todo. Ahora tenemos el mensaje, reacción, remover, todo configurado. Así que vamos a probarlo aquí. Los roles. Déjame ver primero, átomo tiene algún papel. Así que vamos a reaccionar a estas dos cosas. Por lo que ahora tengo que JavaScript y el amante de TypeScript. Ahora si saco éste, ahora no tenía el TypeScript. Y si saco éste, ahora no tenía que JavaScript, genial. Y si lo hago, una vez más, me dan los papeles. Si saco las reacciones, ya no tengo los papeles. Ok. Entonces eso es todo. Así es como lo haces. Espero que les guste verte en la próxima conferencia. Adiós. 43. IMPORTANTE: Permisos V2 actualización: Hola y bienvenidos de vuelta. Tengo una actualización. Si estás tratando de correr profundidad malvada. Ahora mismo, vas a ver que la aplicación se bloquea. Esto se debe a que estos tribunales introdujeron permisos versión dos. Eso significa que ahora no podemos hacer esto. Vamos a los oyentes en el mensaje listo. Lo siento, no está listo, lo siento. Ya no podemos hacer esto. Lo que hicimos aquí estableció permisos. Sin embargo, no podemos hacerlo más. Tenemos que eliminar esto. Desafortunadamente, no va a funcionar. Todavía podemos hacer esto. Y el labio esto. Eso es todo. Esos permisos, ya no va a funcionar porque ahora se van a sumar los permisos dentro del propio marcador. Ahora el servidor está reiniciando ambos cursos Debbie's en línea. Vayamos al anotado y ahí vas. Pero el personal del curso Oriente propia línea. Entonces, ¿cómo gestionamos los permisos? Bueno, vamos aquí, vamos a la configuración del servidor, vamos a integraciones e integraciones. Vamos a brote curso sordo. Obviamente se puede hacer lo mismo con qué curso amplio. Y puedes administrar permisos desde aquí. En este momento dice que los roles de AD, no está diciendo. Podemos hacer click aquí y poner fregadero ahora y guardar. Lo mismo para éste, advertencias por fraude. Y el otro es para ambos sordos. Y es aquí donde podrás administrar todos esos permisos para cada uno de ese comando. Eso es una pequeña actualización. Eso es un cambio de ruptura con el anotado. Espero que te guste. Nos vemos en la próxima conferencia. Adiós. 44. 500 Conclusión: Enhorabuena, logras terminar este curso con éxito y aprenderás algunas habilidades valiosas que puedes aplicar para ser mejor ingeniero de software. Usted aprende aquí se puede aplicar también, el frente y back-end, lo que sea. ¿ Qué aprendes? Este es un resumen de lo que aprendiste. Vuelva a planificar a los mensajes creando una slash comandos slinks inferiores, los colectores de mensajes infunden reacciones. Subcomandos de coleccionistas, obtener información sobre un usuario, como obtener el gremio, obtener información de los miembros en opciones a comandos en tareas simples, desplegar a Heroku, mejores prácticas y etc, etc., La cosa, la habilidad más valiosa aquí son las mejores prácticas, creo, porque hay que escribir buen código. Escribir un buen código es sólo cuestión de seguir las mejores prácticas. Espero que hayan disfrutado de este curso y nos vean en mi próximo curso. Adiós.