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()
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.
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
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í:
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)
:0
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?
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 🤓
Muy bueno...
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
Perfecto!, me ha funcionado!