Telegram Bot - Parte 3: Deploy a Heroku
Tags: heroku, javascript, programming, spanish
Published: 2022-07-02 22:53:03

Última parte de nuestro primer proyecto de fin de semana.
📢📢 Vamos a deployear nuestro código y dejar el pequeño bot operativo en Telegram. 
&nbsp;
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. 
&nbsp;
Primero, una pequeña intro-recordatorio de qué es [Heroku](https://www.heroku.com/), el gran servicio que vamos a utilizar en esta etapa de nuestro proyecto:
&nbsp;
**Heroku** 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 **Heroku** se encarga de la infraestructura que hay detrás.
&nbsp;
&nbsp;
### ¿Es gratis? 😐
Además de poseer planes de pago, **Heroku** 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).
&nbsp;
### ¿Qué lenguajes soporta? ✋
Actualmente, y según el sitio oficial: 
-   NodeJS.
-   Ruby.
-   Java.
-   PHP.
-   Python.
-   Go.
-   Scala.
-   Clojure.
&nbsp;

## Manos a la obra

### Creando el archivo Procfile 
Primero, nuestro archivo `Procfile`, 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 [Procfile documentación oficial](https://devcenter.heroku.com/articles/procfile)

En la raíz del proyecto, creamos el archivo indicado con el siguiente contenido:

    worker: node bot.js
    // En mi caso bot.js indica el nombre de mi archivo.

### Creamos la aplicación en Heroku

Desde el panel de administración de Heroku (después de crear nuestra cuenta), vamos a *Nueva -> Nueva App*. Además del nombre y la región, podemos seleccionar el método de deployment. 

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)

&nbsp;
#### Deployeamos desde terminal
Volvemos a nuestra terminal y escribimos lo siguiente:

    heroku login

    heroku git:remote -a NombreDeMiBot
    
    git add .
    
    git commit -m "First commit"
    // Push a Heroku!
    git push heroku main


#### ✨✨✨✨ Super aclaración ✨✨✨✨
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 *Variables de Entorno*: 
**TELEGRAF_KEY: token_obtenido_de_botFather**

También podríamos configurarlo desde terminal:
```
 heroku config:set TELEGRAF_KEY=99999999999999
```

El paso siguiente es ir a la pestaña *Resources*:
- deshabilitar web npm start (para aplicaciones webs)
- habilitar worker node bot.js


![ResourcesHeroku](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rd4ow1ghss2saqyo4nlh.png)

Listo! Tenemos nuestro bot funcionando! 

<img width="100%" style="width:100%" src="https://media.giphy.com/media/dM2xuxnJCg4H6/giphy.gif">



¿Te sirvió el post? 
Copate compartiendo y 

[![Invitame un café en cafecito.app](https://cdn.cafecito.app/imgs/buttons/button_6.svg)](https://cafecito.app/enzotrucchi)