DEV Community

Cover image for Mantener activo tu bot de Discord.py en Replit
Alexander G
Alexander G

Posted on • Edited on

Mantener activo tu bot de Discord.py en Replit

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 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 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, 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()
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Luego en nuestro archivo principal, en la parte final de nuestro código, justo antes del TOKEN, colocamos:

live()
Enter fullscreen mode Exit fullscreen mode

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

Vamos ahora vamos a UpTimeRobot, si no tienes una cuenta, crearte una es simple, luego de tener una cuenta nos vamos a la parte de monitores

image

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

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

Top comments (6)

Collapse
 
greedyboy profile image
Greedyboy

:0

Collapse
 
pausuerte profile image
PauSuerte

Buenaass, tengo un bot en repl.it con el que este método me funciona de maravilla pero estoy intentando programar un segundo bot y repl.it no me abre la pestaña del servidor. Por lo tanto no puedo copiar el link para mantenerlo activo en uptimerobot. ¿Qué puedo hacer?

Collapse
 
alexanderg profile image
Alexander G

Hola Pau :3 Cómo estás? Bueno primero que nada bueno q te sirva el post 😃 y respecto a el segundo bot podría ser q no se este ejecutando flask q es el que crea la página a acceder desde UpTimeRobot pero eso dependería de tu código. Si necesitas ayuda me podés decir

Un cordial saludo 🤓

Collapse
 
theriusblackers profile image
Arturo Gamboa

Muy bueno...

Collapse
 
frostri profile image
FRostri

noice, será que funciona algo similar con heroku o servicios así? Aunque heroku ya de por si permite subir el bot normalmente sin necesidad de algo como eso

Collapse
 
misterblack6 profile image
MrblackDeveloper_87

Perfecto!, me ha funcionado!