Mantener activo tu bot de Discord.py en Replit
Tags: python, replit, flask
Published: 2021-04-14 20:00:48

Hace un tiempo, estuve empezando a crear bot de discord, con python, me gustó mucho la verdad, el único inconveniente era que tenía era que para mantener mi bot activo debía tener, o la consola ejecutando o mantener la pestaña en [Replit](replit.com) activa, y eso a largo plazo no es nada productivo ni interesante.

**Mi solución**

  Seguramente habrán mas métodos para hacerlo pero el método que yo elegí es el siguiente. Esto no es un método nuevo ni novedoso, se trata de función en flask, pero no te asustes si aún no sabes flask, es realmente muy fácil, es crear un servidor en flask, luego con una página llamada [UpTimeRobot](https://uptimerobot.com/) configurar la dirección creada por flask, para que  UptimeRobot vea constantemente la página, y así este activo tu bot las 24hrs. 

**Importante**

   Cabe destacar que debes tener una cuenta en [replit](replit.com), y tener tu código del bot en un repls, en este post no te enseñaré a crear un bot, solo a mantenerlo activo, pero a futuro espero hacer un post sobre, crear bot en discord.py usar replit, instalar paquetes y demás.

**Sin màs rodeos, comencemos**

   Sea como sea que tengas tu código lo importante es que, al mismo nivel del main.py(o el archivo principal de tu bot), crees un archivo con el nombre keep_alive.py, adentro de ese archivo colocaras:
```
from flask import Flask
from threading import Thread

app = Flask('')

@app.route('/')
def home():
    return "Bot is online!"

def run():
  app.run(host='0.0.0.0',port=8080)

def live():  
    t = Thread(target=run)
    t.start()
```
   Esa es toda la función en Flask, solo queda importar la función live a nuestro main.py o el archivo principal del bot para poder ejecutar la función, colocando el siguiente código el la parte superior de nuestro archivo principal:
```
from keep_alive import live 
```
  Luego en nuestro archivo principal, en la parte final de nuestro código, justo antes del TOKEN, colocamos:
```
live()
```
  Si ejecutamos nuestro bot encontraremos, con que ahora hay una ventana en el replit, que contiene una página o algo así, simplemente con el texto: Bot is online!, si buscamos, encontramos un dirección, un enlace, ese enlace lo usaremos en UptimerRobot.

**Imagen uno**
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sh7gvay42080u8lk6etz.png)



  Vamos ahora vamos a [UpTimeRobot](https://uptimerobot.com/), si no tienes una cuenta, crearte una es simple, luego de tener una cuenta nos vamos a la parte de monitores 

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

*Aquí tengo uno porque ya he usado el servicio, a ustedes no les debe salir nada*

  Luego le damos a Add new Monitor,y seleccionamos las siguientes opciones:

* En Monitor Type: HTTP(s)


* En Friendly Name: El nombre de tu bot o el que quieras
          
                      
* En URL (or IP): Aquí deben poner la URL que les da replit, (Imagen 1)


* La constancia la dejamos igual en 5 minutos, y si gustan activan las notificaciones 

 Obviando el Friendly Name y la URL(La url es importante que pongas la que te da replit correctamente) les debería quedar así:


![Image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6w2ke9gmqe2nicjh9x3e.png)


   Luego de darle Create Monitor, nuestro monitor ya debe estar listo, ahora la próxima vez que ejecutemos nuestro bot, el monitor estará realizando peticiones GET y lo mantendrán activo.

Cabe destacar que ya hay páginas como Heroku y otros servicios que están hechos para mantener aplicaciones de este tipo.


Espero que el post se les haga fácil de seguir, si tienen una duda, si no les funciona o alguna cosa, puedes decírmelo por los comentarios