<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: enzotrucchi</title>
    <description>The latest articles on DEV Community by enzotrucchi (@enzotrucchi).</description>
    <link>https://dev.to/enzotrucchi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F71123%2F6a725314-198e-422a-b02b-159fcec17bc8.jpg</url>
      <title>DEV Community: enzotrucchi</title>
      <link>https://dev.to/enzotrucchi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/enzotrucchi"/>
    <language>en</language>
    <item>
      <title>Un nuevo look, un viejo look</title>
      <dc:creator>enzotrucchi</dc:creator>
      <pubDate>Mon, 25 Jul 2022 21:37:00 +0000</pubDate>
      <link>https://dev.to/enzotrucchi/un-nuevo-look-un-viejo-look-3a03</link>
      <guid>https://dev.to/enzotrucchi/un-nuevo-look-un-viejo-look-3a03</guid>
      <description>&lt;h2&gt; Renovación de mi web con Jekyll y GitHub Pages &lt;/h2&gt;

&lt;p&gt;Como cualquier renovación, la de mi web personal viene de la mano de una (o varias) necesidades.&lt;/p&gt;

&lt;p&gt;Aquí mi lluvía de ideas/necesidades, sin ningún orden de importancia:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No quería utilizar &lt;a href="https://wordpress.com/es/"&gt;WordPress&lt;/a&gt; -otra vez-: No tengo nada en su contra, me parece que, bien utilizada, es una herramienta super sencilla y práctica. Ojo, tiene sus particularidades: Plugins, Base de datos, cositas que no son dificiles de utilizar ni configurar, pero hay que tener ganas.&lt;/li&gt;
&lt;li&gt;No quería quedarme en &lt;strong&gt;HTML/CSS&lt;/strong&gt;. Me gusta, me gusta.. Mi sitio anterior (+ algunos construídos en los últimos años) estaba desarrollado siguiendo una plantilla HTML/CSS, pero quería probar algo distinto. Además, cansa un poco la "&lt;em&gt;lucha&lt;/em&gt;" por tener sitios super estéticos y siguiendo las tendencias de diseño en donde cada año se actualiza un border, un rounded, la forma de presentación de un elemento y demás. 
En este caso estaba buscando algo &lt;strong&gt;más minimalista, más práctico, más enfocado al contenido puro&lt;/strong&gt;. Lo demás, gracias por ahora.&lt;/li&gt;
&lt;li&gt;Hablando de contenido: Quería que fuese una gran parte de contenido de código, por lo que debía ser fácil utilizar &lt;a href="https://www.markdownguide.org/"&gt;markdown&lt;/a&gt; y que el código quede entendible. La otra opción, usar imagenes de algún servicio como &lt;a href="https://carbon.now.sh/"&gt;Carbon&lt;/a&gt;, pero al momento de copiar/pegar el código (y tambien leerlo), al usuario se le termina haciendo dificil desde una imagen. Vamos a por el buen markdown.&lt;/li&gt;
&lt;li&gt;Dedicarle el menor tiempo posible (y a eso restale unos minutos) al armado de base de datos, configuración de backups, configuración plugins, etc.
 
 &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔎 Primer intento: Publicando algunas entradas en el Blog &lt;a href="https://dev.to/enzotrucchi"&gt;Dev&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Arranqué posteando algunas entradas de prueba en Dev. Si bien soy usuario del Blog desde hace un par de años, está bueno también probar el otro lado. Mi experiencia hasta ahora: Excelente. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Facilidad para escribir entradas (si bien por lo general uso un editor de Markdown y después copio/pego el contenido).&lt;/li&gt;
&lt;li&gt;Guías de otros usuarios&lt;/li&gt;
&lt;li&gt;Permite crear series de entradas relacionadas.&lt;/li&gt;
&lt;li&gt;Provee un dashboard bastante completo.&lt;/li&gt;
&lt;li&gt;Tiene una gran base de usuarios (si bien la mayoría de habla Inglesa, también hay contenido en español, cómo el mío).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Primera prueba cumplida. DEV.to es genial y voy a seguir utilizandolo en el futuro.&lt;br&gt;
Además, podría servirte &lt;a href="https://dev.to/davidmm1707/should-you-use-medium-or-dev-to-2g1d"&gt;esta&lt;/a&gt; comparativa entre DEV y MEDIUM (otra plataforma de Blog muy conocida en el ambiente tech).&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
 &lt;/p&gt;

&lt;h2&gt;
  
  
  🔎 Segundo intento: Jekyll + GitHub Pages
&lt;/h2&gt;

&lt;p&gt;Mi segundo intento viene de la mano de &lt;a href="https://pages.github.com/"&gt;Github Pages&lt;/a&gt;&lt;br&gt;
En la misma web que linkeo, podes ver que se hace mención a Jekyll como herramienta de Blogging. Por lo tanto no hace falta una explicación tan larga. Alcanza con ver el vídeo introductorio.&lt;/p&gt;

&lt;p&gt;En mi caso ya tenía dominio comprado (enzotrucchi.com), pero si ese no fuera el caso, se podría alojar de manera gratuita de la siguiente forma: &lt;a href="//enzotrucchi.com"&gt;username.github.io&lt;/a&gt; &lt;br&gt;
Las buenas noticias, además de que es gratuito el hospedaje, no paran:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Se puede utilizar markdown&lt;/li&gt;
&lt;li&gt;Hay plantillas de Jekyll por montones, de estilo minimalista, old school o lo que se te ocurra.&lt;/li&gt;
&lt;li&gt;Se puede hacer live reload si utilizamos Jekyll en local (versiones nuevas nativo, si no se puede bypassear)&lt;/li&gt;
&lt;li&gt;Está preparado y optimizado para el despligue en GitHub pages: Sólo con un push a la rama indicada, el despliegue con los cambios es automático y se refleja en la web.&lt;/li&gt;
&lt;li&gt;Se puede utilizar un dominio propio y se configura literalmente en 5 minutos.&lt;/li&gt;
&lt;li&gt;Permite https&lt;/li&gt;
&lt;li&gt;Si bien no tiene un gestor de contenido tipo CMS como Wordpress, es fácil crear entradas desde el editor o directamente desde GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A todo esto, obviamente ya tenemos dos ganadores: Web personal en GitHub pages, Blog de replicación de contenidos: DEV&lt;br&gt;
 &lt;br&gt;
 &lt;/p&gt;

&lt;h2&gt;
  
  
  🔎 Tercer intento: Jekyll + GitHub Pages + Jekyll Now
&lt;/h2&gt;

&lt;p&gt;Y si faltaba algo más: &lt;br&gt;
Buscando info y repos de Jekyll, me encontré con esta locura: &lt;br&gt;
&lt;a href="https://github.com/barryclark/jekyll-now"&gt;Jekyll Now&lt;/a&gt; quien a partír de un simple Fork, nos deja nuestro blog estilizado de forma minimalista y un diseño que algunos considerarán antiguo pero digamoslé mejor Old School.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jekyll Now&lt;/strong&gt; makes it easier to create your Jekyll blog, by eliminating a lot of the up front setup.&lt;/p&gt;

&lt;p&gt;Acá podes ver como quedó el repo: &lt;a href="https://github.com/enzotrucchi/enzotrucchi.github.io"&gt;https://github.com/enzotrucchi/enzotrucchi.github.io&lt;/a&gt;&lt;br&gt;
Y acá &lt;a href="https://enzotrucchi.com"&gt;ingresá a mi web&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Espero te sirva el post! Recordá que para cada necesidad, hay una o varias soluciones diferentes!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/peAFQfg7Ol6IE/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/peAFQfg7Ol6IE/giphy.gif" width="500" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
 &lt;br&gt;
&lt;a href="https://cafecito.app/enzotrucchi"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R9F9M-Od--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.cafecito.app/imgs/buttons/button_6.svg" alt="Invitame un café en cafecito.app" width="192" height="40"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>spanish</category>
      <category>markdown</category>
    </item>
    <item>
      <title>ToDo List (o lista de tareas) en Ionic</title>
      <dc:creator>enzotrucchi</dc:creator>
      <pubDate>Mon, 11 Jul 2022 01:43:57 +0000</pubDate>
      <link>https://dev.to/enzotrucchi/todo-list-o-lista-de-tareas-en-ionic-2idn</link>
      <guid>https://dev.to/enzotrucchi/todo-list-o-lista-de-tareas-en-ionic-2idn</guid>
      <description>&lt;p&gt;Antes de comenzar: &lt;/p&gt;

&lt;p&gt;👉🏾 &lt;a href="https://ionic-todo-list-7e44b.web.app/"&gt;Demo&lt;/a&gt; operativa.&lt;/p&gt;

&lt;p&gt;👉🏾  &lt;a href="https://github.com/enzotrucchi/ionic-lista-tareas"&gt;Repo&lt;/a&gt; en GitHub &lt;/p&gt;

&lt;p&gt;🎯 Proyecto realizado con Ionic 6 y utilizando Ionic Storage. Permite agregar, modificar, eliminar tareas. &lt;br&gt;
Se presentan en una lista.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Objetivo del proyecto:
&lt;/h2&gt;

&lt;p&gt;Desarrollar una app utilizando Ionic 6, que tenga como principal funcionalidad administrar tareas. Utilizaremos &lt;strong&gt;IonicStorage&lt;/strong&gt; para almacenar en local las tareas.&lt;br&gt;
 En la primera versión, vamos a desarrollar un servicio para gestionar las tareas:&lt;br&gt;
        - Crear tarea&lt;br&gt;
        - Modificar&lt;br&gt;
        - Borrar&lt;br&gt;
        - Obtener todas&lt;br&gt;
        - Obtener por Id&lt;/p&gt;

&lt;p&gt;Así nos debería quedar nuestra app:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/l6x3rJ3HRNtBSKUOV3/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/l6x3rJ3HRNtBSKUOV3/giphy.gif" width="239" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  Iniciando el proyecto en Ionic
&lt;/h3&gt;

&lt;p&gt;Vamos a utilizar la opción blank para tener una plantilla limpia. &lt;/p&gt;

&lt;p&gt;📢 En mi caso elegí la opción de Angular al momento de seleccionar el frame con el cual trabajar, por lo tanto en la carpeta que seleccciones, abrimos terminal y tipeamos: &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ionic start todo-list blank
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Estructura de archivos y carpetas 📃
&lt;/h3&gt;

&lt;p&gt;¡Empezamos la parte interesante!&lt;br&gt;
Lo primero que voy a hacer es armar la estructura de carpetas y archivos que posteriormente vamos a utilizar.&lt;br&gt;
Con esto, &lt;em&gt;ya podríamos hacer nuestro primer commit.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7VxIhRPU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kg23s8yb3rt3igoolhsa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7VxIhRPU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kg23s8yb3rt3igoolhsa.png" alt="Estructura de archivos" width="456" height="709"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
 &lt;/p&gt;
&lt;h3&gt;
  
  
  Instalando Ionic Storage
&lt;/h3&gt;

&lt;p&gt;Para la versión 6 de Ionic, utilizando Angular, instalamos Ionic Storage con npm, basandonos en el siguiente link:&lt;br&gt;
&lt;a href="https://github.com/ionic-team/ionic-storage"&gt;Ionic Storage Oficial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Siguiendo la documentación oficial: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If using Angular, install the  &lt;code&gt;@ionic/storage-angular&lt;/code&gt;  library instead:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @ionic/storage-angular
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Interface
&lt;/h3&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export  interface  ITarea {

    id?:  number;

    titulo:  string;

    descripcion:  string;

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Definiendo nuestro component home.page
&lt;/h3&gt;

&lt;p&gt;Vamos a basarnos en componentes de Ionic como  &lt;strong&gt;ion-item-options&lt;/strong&gt; y &lt;strong&gt;ion-buttons&lt;/strong&gt;, además de utilizar una lista de items para mostrar las tareas que ya tengamos cargadas. &lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HZTJ420q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hh6awdsccwy3egrnn27j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HZTJ420q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hh6awdsccwy3egrnn27j.png" alt="home.page.html" width="880" height="991"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cuando ingresemos a este componente, vamos a buscar las tareas a nuestro servicio. Para tomar estas tareas que nos devuelve el servicio y poder utilizarlas en nuestro componente, ya tenemos definido un array de tareas siguiendo la interfaz &lt;strong&gt;&lt;em&gt;ITarea&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Después, sólo utilizamos &lt;em&gt;AlertController&lt;/em&gt; para el cuadro de diálogo de eliminar y nos vamos a la ruta /tareas enviando el id si estamos modificando una tarea. Caso contrario, estamos agregando. Vamos a /tareas pero sin enviar id. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YOE28SmS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l08vyx2tk8syot5bqatt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YOE28SmS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l08vyx2tk8syot5bqatt.png" alt="home.page.ts" width="880" height="1554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En nuestro servicio definimos los métodos para hacer CRUD de Tarea. &lt;br&gt;
📌 Importante no olvidarse de esta línea (ya que nos dará error al intentar utilizar storage): &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;await this.storage.create();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Lo demás, sólo un poco de Js   ✔️  ✔️ &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7VANG8Z8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7qcw6q3lsvjt9vecthfs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7VANG8Z8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7qcw6q3lsvjt9vecthfs.png" alt="tarea.service" width="880" height="1793"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eso es todo!&lt;br&gt;
Con un poquito de &lt;em&gt;Js&lt;/em&gt; y utilizando &lt;em&gt;IonicStorage&lt;/em&gt;, tenemos funcionando nuestra lista de tareas con opción de eliminar, agregar y modificar .&lt;/p&gt;

&lt;p&gt;Si te gustó, compartilo!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hasta la vista!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/l1J3CbFgn5o7DGRuE/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/l1J3CbFgn5o7DGRuE/giphy.gif" width="480" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://cafecito.app/enzotrucchi"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R9F9M-Od--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.cafecito.app/imgs/buttons/button_6.svg" alt="Invitame un café en cafecito.app" width="192" height="40"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>ionic</category>
      <category>typescript</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Telegram Bot - Parte 3: Deploy a Heroku</title>
      <dc:creator>enzotrucchi</dc:creator>
      <pubDate>Sat, 02 Jul 2022 22:53:03 +0000</pubDate>
      <link>https://dev.to/enzotrucchi/telegram-bot-parte-3-deploy-a-heroku-1d47</link>
      <guid>https://dev.to/enzotrucchi/telegram-bot-parte-3-deploy-a-heroku-1d47</guid>
      <description>&lt;p&gt;Última parte de nuestro primer proyecto de fin de semana.&lt;br&gt;
📢📢 Vamos a deployear nuestro código y dejar el pequeño bot operativo en Telegram. &lt;br&gt;
 &lt;br&gt;
Vamos a necesitar un proveedor de hosting para mantener operativo nuestro bot. Si bien existen varios, en este caso elegí Heroku por el plan gratuito que nos brinda. &lt;br&gt;
 &lt;br&gt;
Primero, una pequeña intro-recordatorio de qué es &lt;a href="https://www.heroku.com/"&gt;Heroku&lt;/a&gt;, el gran servicio que vamos a utilizar en esta etapa de nuestro proyecto:&lt;br&gt;
 &lt;br&gt;
&lt;strong&gt;Heroku&lt;/strong&gt; es una solución de Plataforma como Servicio (PaaS) basada en la nube para que el cliente solo se preocupe de desarrollar su aplicación mientras &lt;strong&gt;Heroku&lt;/strong&gt; se encarga de la infraestructura que hay detrás.&lt;br&gt;
 &lt;br&gt;
 &lt;/p&gt;
&lt;h3&gt;
  
  
  ¿Es gratis? 😐
&lt;/h3&gt;

&lt;p&gt;Además de poseer planes de pago, &lt;strong&gt;Heroku&lt;/strong&gt; pone a nuestra disposición un plan gratuito, lo que hay que tener en cuenta es que si una aplicación no recibe ninguna solicitud en 30 minutos, entrará en modo suspensión, por lo que a la siguiente petición se levantará de nuevo, lo que tardará más tiempo de que la primera petición (muy pequeño).&lt;br&gt;
 &lt;/p&gt;
&lt;h3&gt;
  
  
  ¿Qué lenguajes soporta? ✋
&lt;/h3&gt;

&lt;p&gt;Actualmente, y según el sitio oficial: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  NodeJS.&lt;/li&gt;
&lt;li&gt;  Ruby.&lt;/li&gt;
&lt;li&gt;  Java.&lt;/li&gt;
&lt;li&gt;  PHP.&lt;/li&gt;
&lt;li&gt;  Python.&lt;/li&gt;
&lt;li&gt;  Go.&lt;/li&gt;
&lt;li&gt;  Scala.&lt;/li&gt;
&lt;li&gt;  Clojure.
 &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Manos a la obra
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Creando el archivo Procfile
&lt;/h3&gt;

&lt;p&gt;Primero, nuestro archivo &lt;code&gt;Procfile&lt;/code&gt;, encargado de configurar los pasos de deployment y el que opcionalmente puede incluír las instrucciones para inicializar nuestro proyecto. Más info disponible en la &lt;a href="https://devcenter.heroku.com/articles/procfile"&gt;Procfile documentación oficial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En la raíz del proyecto, creamos el archivo indicado con el siguiente contenido:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;worker: node bot.js
// En mi caso bot.js indica el nombre de mi archivo.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Creamos la aplicación en Heroku
&lt;/h3&gt;

&lt;p&gt;Desde el panel de administración de Heroku (después de crear nuestra cuenta), vamos a &lt;em&gt;Nueva -&amp;gt; Nueva App&lt;/em&gt;. Además del nombre y la región, podemos seleccionar el método de deployment. &lt;/p&gt;

&lt;p&gt;No es necesario conectarlo a Github si no la seleccionamos. En mi caso, en el primero bot no lo hice, en el segundo si (siempre está bien probar las opciones disponibles)&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;
  
  
  Deployeamos desde terminal
&lt;/h4&gt;

&lt;p&gt;Volvemos a nuestra terminal y escribimos lo siguiente:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;heroku login

heroku git:remote -a NombreDeMiBot

git add .

git commit -m "First commit"
// Push a Heroku!
git push heroku main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h4&gt;
  
  
  ✨✨✨✨ Super aclaración ✨✨✨✨
&lt;/h4&gt;

&lt;p&gt;Si queremos que nuestra app sea más segura, en este punto no deberíamos "exponer" nuestro token (hardcodeado en la parte 1 del tutorial) y en cambio utilizar las &lt;em&gt;Variables de Entorno&lt;/em&gt;: &lt;br&gt;
&lt;strong&gt;TELEGRAF_KEY: token_obtenido_de_botFather&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;También podríamos configurarlo desde terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; heroku config:set TELEGRAF_KEY=99999999999999
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El paso siguiente es ir a la pestaña &lt;em&gt;Resources&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deshabilitar web npm start (para aplicaciones webs)&lt;/li&gt;
&lt;li&gt;habilitar worker node bot.js&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o19aPt3t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rd4ow1ghss2saqyo4nlh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o19aPt3t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rd4ow1ghss2saqyo4nlh.png" alt="ResourcesHeroku" width="880" height="127"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Listo! Tenemos nuestro bot funcionando! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/dM2xuxnJCg4H6/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/dM2xuxnJCg4H6/giphy.gif" width="500" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;¿Te sirvió el post? &lt;br&gt;
Copate compartiendo y &lt;/p&gt;

&lt;p&gt;&lt;a href="https://cafecito.app/enzotrucchi"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R9F9M-Od--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.cafecito.app/imgs/buttons/button_6.svg" alt="Invitame un café en cafecito.app" width="192" height="40"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>heroku</category>
      <category>javascript</category>
      <category>programming</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Telegram Bot - Parte 2: Live reload</title>
      <dc:creator>enzotrucchi</dc:creator>
      <pubDate>Sat, 02 Jul 2022 21:55:13 +0000</pubDate>
      <link>https://dev.to/enzotrucchi/telegram-bot-parte-2-live-reload-3koc</link>
      <guid>https://dev.to/enzotrucchi/telegram-bot-parte-2-live-reload-3koc</guid>
      <description>&lt;p&gt;Listo el código de nuestro pequeño bot en &lt;strong&gt;&lt;em&gt;Js&lt;/em&gt;&lt;/strong&gt;, vamos a agregarle una funcionalidad extra y a aprender a utilizar una herramienta súper útil a la hora de trabajar con Node.js: &lt;a href="https://nodemon.io/"&gt;&lt;strong&gt;Nodemon&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué es Nodemon?
&lt;/h3&gt;

&lt;p&gt;En palabras simples: Es una utilidad que nos sirve para permitir que los cambios que realicemos en nuestro proyecto se implementen en tiempo real. &lt;/p&gt;

&lt;p&gt;En palabras más técnicas -o precisas- y  &lt;a href="https://www.digitalocean.com/community/tutorials/workflow-nodemon-es#:~:text=nodemon%20es%20una%20utilidad%20de,instalar,%20preparar%20y%20configurar%20nodemon%20."&gt;siguiendo la fuente de Digital Ocean&lt;/a&gt;: &lt;strong&gt;nodemon&lt;/strong&gt; es una utilidad de interfaz de línea de comandos (CLI) que envuelve su aplicación Node, vigila el sistema de archivos y reinicia automáticamente el proceso.&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
 &lt;br&gt;
 &lt;/p&gt;
&lt;h3&gt;
  
  
  Instalación
&lt;/h3&gt;

&lt;p&gt;Globalmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm install nodemon -g
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ yarn global add nodemon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Localmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm install nodemon --save-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ yarn add nodemon --dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si vas a instalarlo de manera local, recordá que no vas a poder utilizar el comando nodemon directamente desde línea de comandos.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Uso
&lt;/h3&gt;

&lt;p&gt;Hasta aquí para levantar nuestra aplicación corríamos desde terminal el siguiente comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;node&lt;/span&gt; &lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;js&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El problema con esto es que cada cambio que hagamos en nuestro código, sólo lo veremos después de terminar el proceso y volver a levantarlo. &lt;/p&gt;

&lt;p&gt;🚩 ¿Bastante tedioso no? &lt;/p&gt;

&lt;p&gt;Con Nodemon cambiamos el código de inicialización anterior por el siguiente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;nodemon&lt;/span&gt; &lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;js&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;y en terminal deberíamos ver algo como esto: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NzARD0re--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c1g03w0nxhlpkl4p3nyc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NzARD0re--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c1g03w0nxhlpkl4p3nyc.png" alt="nodemon" width="860" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
 &lt;br&gt;
 &lt;/p&gt;

&lt;p&gt;¡Ahora si! &lt;br&gt;
Cada cambio que realizemos, deberíamos verlo en tiempo real. 👀&lt;/p&gt;

&lt;p&gt;¿Cool no? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/PudZiAbQDUEik/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/PudZiAbQDUEik/giphy.gif" width="480" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
 &lt;/p&gt;

&lt;p&gt;En la próximo y última entrada de nuestro Telegram Bot vamos a subirlo a Heroku y dejarlo operativo en Telegram. 🤘🤘&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>spanish</category>
      <category>heroku</category>
      <category>programming</category>
    </item>
    <item>
      <title>Desarrollando un Bot para Telegram</title>
      <dc:creator>enzotrucchi</dc:creator>
      <pubDate>Sat, 25 Jun 2022 22:11:27 +0000</pubDate>
      <link>https://dev.to/enzotrucchi/desarrollando-un-bot-para-telegram-51ek</link>
      <guid>https://dev.to/enzotrucchi/desarrollando-un-bot-para-telegram-51ek</guid>
      <description>&lt;h2&gt;
  
  
  Objetivos del proyecto:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Etapa 1: Desarrollar y probar nuestro bot en local.&lt;/li&gt;
&lt;li&gt;Etapa 2: Publicarlo por medio de Heroku.
 
 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pero antes de arrancar... ✋&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué son los Bots de Telegram?
&lt;/h3&gt;

&lt;p&gt;¿Escuchaste algo de esto? Si es tu primera vez, te lo resumo así nomás: &lt;br&gt;
 &lt;br&gt;
Son  &lt;strong&gt;aplicaciones de terceros que se ejecutan dentro de la aplicación de mensajería&lt;/strong&gt;. &lt;br&gt;
No necesitas instalarlos ni hacer nada diferente para poder utilizarlos, ya que se utilizan como si estuvieras interactuando con una persona real (Es decír, buscando el nombre del bot en el buscador de la app como harías con cualquier usuario: &lt;em&gt;@nombreDelBot&lt;/em&gt;). &lt;br&gt;
Hay más: Son multiplataforma, y los podes usar en la versión de &lt;em&gt;Telegram&lt;/em&gt; del sistema operativo que quieras.&lt;/p&gt;

&lt;p&gt;Ahora, a nivel dev: Funcionan con una &lt;a href="https://core.telegram.org/bots"&gt;API de Telegram&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
 &lt;/p&gt;

&lt;p&gt;🎌 ¿Intro lista? &lt;br&gt;
¡Manos a la obra con nuestro primer proyecto de fin de semana! 👇👇&lt;/p&gt;
&lt;h2&gt;
  
  
  Requisitos
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://nodejs.org/en/download/"&gt;NodeJs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;npm instalado&lt;/li&gt;
&lt;li&gt;Algún editor de código, yo voy a utilizar el siempre confiable  &lt;a href="https://code.visualstudio.com/download"&gt;Visual Studio Code&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Obvio pero también, tener una cuenta en Telegram.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://telegraf.js.org/"&gt;Telegraf&lt;/a&gt;. Esta librería será la que utilizaremos para crear el bot, específicamente con Js.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Paso a Paso
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Damos de alta nuestro Bot
&lt;/h3&gt;

&lt;p&gt;Abrimos Telegram y vamos a utilizar el Bot "Padre": &lt;strong&gt;botFather&lt;/strong&gt;. Esta cuenta es la administradora de todos los bots, por lo que podrás administrar los tuyos interactuando con ella.&lt;br&gt;
Como dato particular, el nombre del bot debe terminar con "bot". (¿Ya pensaste un nombre marketinero? 😎)&lt;/p&gt;

&lt;p&gt;Una vez en el chat con botFather, basta con hacer /newbot y setear el nombre. Eso es todo.&lt;br&gt;
Nos devolverá un token que necesitaremos luego en nuestro código. De todas formas, podemos volver y chequearlo.&lt;/p&gt;

&lt;p&gt;🎁 En mi caso, voy a hacer un bot que me recuerde los días que cumple años cada miembro de mi familia. Luego intentaré desarrollar uno que les haga regalos y no tenga que gastar.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Primeras lineas
&lt;/h3&gt;

&lt;p&gt;En nuestra carpeta preferida de proyectos, creamos una nueva con el nombre del bot/proyecto. &lt;br&gt;
En mi caso: CumplesDeLaFliaBot&lt;/p&gt;

&lt;p&gt;Nos ubicamos dentro de la carpeta y abrimos linea de comandos: &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm init 

npm install telegraf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Creamos un archivo .js; Por ejemplo: &lt;em&gt;bot.js&lt;/em&gt;.&lt;br&gt;
Aquí tendremos la lógica del bot.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Telegraf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;telegraf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Telegraf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tokenProvistoPorBotFather&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Empezamos con utilizar métodos de Telegraf, en este caso .command para mostrar un saludo personalizado cuando se inicia el bot (vamos a estar capturando el "start" propio de cuando se inicia la conversación)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt; &lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;start&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;telegram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sendMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;¿Otra vez olvidaste los cumpleaños?&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Seteamos nuestro bot en Telegram
&lt;/h3&gt;

&lt;p&gt;Esta sección es necesaria sólo si queres utilizar los &lt;a href="https://core.telegram.org/bots#commands"&gt;comandos&lt;/a&gt; -una especie de accesos rápidos- que te provee botFather. &lt;br&gt;
Para esto vamos a Telegram nuevamente:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;/mybots:&lt;/em&gt; Recuperar la lista de bots propios y seleccionar el necesario.&lt;br&gt;
&lt;em&gt;/setcommands:&lt;/em&gt; Setear comandos que queremos utilizar.&lt;/p&gt;

&lt;p&gt;En mi caso sería (Recordar que tenemos que responder en formato &lt;strong&gt;command&lt;/strong&gt; - &lt;strong&gt;Description&lt;/strong&gt;). Donde &lt;em&gt;command es el comando que vamos a capturar&lt;/em&gt; y &lt;em&gt;description es lo que ve el usuario&lt;/em&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;genaro - Genaro&lt;br&gt;&lt;br&gt;
vito - Vito&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;✅ Listo, volvemos a Visual Studio Code.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Capturando comandos del usuario.
&lt;/h3&gt;

&lt;p&gt;En esta parte vamos a capturar -&amp;gt; devolver. Recordá que podes llamar a una función y hacer lo-que-quieras en ella, y devolver el resultado. Por ejemplo, en otro bot que desarrollé, mandando un parámetro de tipo int a una función, recorría un array de objetos y devolvía uno específico. Anyways..&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt; &lt;span class="c1"&gt;//esperamos el command /genaro y devolvemos la fecha en formato string (dd/mm)&lt;/span&gt;
    &lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/genaro&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;  &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;telegram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sendMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;17/09&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="c1"&gt;//esperamos el command /vito y devolvemos la fecha en formato string (dd/mm)&lt;/span&gt;
    &lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/vito&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;  &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;telegram&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sendMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;11/04&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="c1"&gt;//lanzamos nuestro bot&lt;/span&gt;
    &lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;launch&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Probando nuestro bot en local
&lt;/h3&gt;

&lt;p&gt;Una vez finalizado nuestro código (o durante el desarrollo, porqué no), abrimos terminal y escribimos:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node bot.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Teniendo Telegram abierto, y si seteamos todo de manera correcta: ¡Ya estamos listos para empezar a testear nuestro bot! 🏄&lt;/p&gt;

&lt;p&gt;Próximos episodios de esta maravillosa serie:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Utilizar nodemon para ver cambios en tiempo real, mientras desarrollamos.&lt;/li&gt;
&lt;li&gt;Subir nuestro bot a Heroku y dejarlo operativo en Telegram.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;br&gt;
 &lt;br&gt;
 &lt;br&gt;
¿Te sirvió el post? &lt;br&gt;
Copate compartiendo y &lt;/p&gt;

&lt;p&gt;&lt;a href="https://cafecito.app/enzotrucchi"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R9F9M-Od--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.cafecito.app/imgs/buttons/button_6.svg" alt="Invitame un café en cafecito.app" width="192" height="40"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>api</category>
      <category>codigodefinde</category>
    </item>
    <item>
      <title>Código de Fin de Semana - Introducción</title>
      <dc:creator>enzotrucchi</dc:creator>
      <pubDate>Sat, 25 Jun 2022 22:11:11 +0000</pubDate>
      <link>https://dev.to/enzotrucchi/codigo-de-fin-de-semana-introduccion-2398</link>
      <guid>https://dev.to/enzotrucchi/codigo-de-fin-de-semana-introduccion-2398</guid>
      <description>&lt;h2&gt;
  
  
  De que se trata
&lt;/h2&gt;

&lt;p&gt;Hablemos de situaciones reales que vivimos los devs, en alguna etapa de nuestra carrera:&lt;/p&gt;

&lt;p&gt;😵 ¿Te encontraste alguna vez sin saber que hacer un fin de semana para calmar la ansiedad de tipear un poco de código? &lt;br&gt;
😵 ¿Te abruma tanta información disponible y no sabes por dónde empezar?&lt;br&gt;
😵 ¿Viste un tutorial y queres empezar, pero sabés que eso va a seguir profundizando el agujero del tutorial hell? &lt;br&gt;
 &lt;br&gt;
 &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Nfy8qiR5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p4t8dxbai7cutc641zs2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Nfy8qiR5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p4t8dxbai7cutc641zs2.jpg" alt="Desarrollo" width="880" height="583"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;br&gt;
 &lt;br&gt;
&lt;strong&gt;Proyectos en Fin de Semana&lt;/strong&gt; es una iniciativa propia que busca calmar esa ansiedad de aprendizaje y autorrealización proponiendo un proyecto que puedas realizar en unas pocas horas (no más de 1 día).&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
Así, conseguimos dos objetivos claves: &lt;br&gt;
🎯 &lt;em&gt;Reducir nuestra ansiedad&lt;/em&gt;: Desarrollando algo propio, nuevo y con diferentes enfoques, nos sentimos satisfechos y realizados. &lt;br&gt;
🎯 &lt;em&gt;Aprender y especializarnos&lt;/em&gt;: Cada proyecto nos abre un poquito más la cabeza y nos deja nuevas herramientas, terminología, incluso skills que constantemente debemos reforzar.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué necesitas?
&lt;/h3&gt;

&lt;p&gt;Ganas, un poco de tiempo y auto organización. La idea es que disfrutes cada proyecto y no pierdas tu valioso time-off de trabajo, código, debuggers, y demás tareas diarias a las que estás acostumbrado.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Nivel de programación esperado?
&lt;/h3&gt;

&lt;p&gt;Dependiendo el proyecto. Trataré en lo posible de dejar links a herramientas que se utilizan en cada proyecto con una breve descripción (o tal vez a la propia web).&lt;br&gt;
Aquí una realidad del mundo tech: 🚀 &lt;strong&gt;¡Se aprende haciendo!&lt;/strong&gt;🚀 No te preocupes si no entendes la teoría la primera vez, preocupate si no tenes más ganas de aprenderla.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>spanish</category>
      <category>motivation</category>
    </item>
  </channel>
</rss>
