NUEVO 📢 Oferta de lanzamiento limitada: ¡hasta un 70% de descuento en tu primer mes, en todos los juegos!Ver planes

Cómo mover un bot de Telegram a PlayNHost

Hosting de bots de DiscordUpdated Oct 29, 20268 min read

Mover un bot de Telegram desde PythonAnywhere, Replit, Railway o tu PC es copiar sus archivos, pegar el mismo token, pasarlo a polling si usaba un webhook e iniciarlo aquí cuando la copia antigua esté detenida. El token es el mismo, así que el bot conserva su @usuario, sus chats y sus usuarios. Los pasos:

  1. Consigue un plan de bots configurado para Telegram, con el lenguaje en el que está escrito tu bot.
  2. Copia tus archivos en Files (zip, subir, Extraer), por SFTP o desde Git, con requirements.txt o package.json.
  3. Define el Archivo de entrada y el Entorno de ejecución en la página Bot, sección Código.
  4. Pega el token en la página Bot, sección Telegram, y haz clic en Conectar.
  5. Importa tus demás ajustes con Pegar un archivo .env en la sección Entorno.
  6. Si tu bot usaba un webhook, cámbialo a polling.
  7. Detén la copia antigua, pulsa Iniciar aquí y mira la Console hasta que tu bot inicie sesión.

Cada paso se explica más abajo.

Antes de empezar

  • Reúne el código del bot y sus archivos de datos (archivos SQLite, archivos JSON, ajustes guardados) en una sola carpeta. Si vienes de un hosting, descárgalos como zip o cópialos desde su explorador de archivos.
  • Apunta todos los ajustes que el hosting anterior daba a tu bot: su archivo .env o las variables que definiste en su panel.
  • Prevé detener la copia antigua justo antes de iniciar la nueva. Telegram deja que solo una copia de un bot pida mensajes: dos copias se echan la una a la otra con 409 Conflict.

1. Consigue un plan configurado para Telegram

En alojamiento de bots de Telegram, haz clic en Crear servidor en un plan, responde ¿Para qué plataforma es tu bot? con Telegram y elige el lenguaje de tu bot: Node.js, Python, Java, C# (.NET), Bun, Deno, Go o Rust. STARTER (0.5 GB) basta para la mayoría de los bots: mira python-telegram-bot vs aiogram en PlayNHost para la memoria que medimos.

¿Ya tienes un plan de bots configurado para Discord? En la página Bot, sección Discord, tarjeta ¿Para qué es este bot?, elige Telegram y confirma con Cambiar. ¿Lenguaje equivocado? En la sección Código, haz clic en Cambiar lo que se ejecuta junto a Entorno de ejecución.

2. Copia los archivos

  • Bot pequeño: comprime la carpeta en un zip, sube el zip en Files, márcalo y haz clic en Extraer.
  • Carpeta grande: usa SFTP. Datos de SFTP en Files te da la dirección; inicias sesión con la contraseña de tu panel.
  • Código en GitHub: conecta el repositorio en su lugar y sube solo tus archivos de datos. Mira Cómo desplegar y actualizar tu bot desde GitHub.

No incluyas venv, .venv, __pycache__ ni node_modules: el servidor instala los paquetes por sí mismo. Tu carpeta principal aquí es /home/container. Si tu código abre archivos de datos con una ruta completa de tu hosting anterior (como /home/yourname/mybot/data.db), cámbiala por una ruta relativa a la carpeta principal. Más información: Cómo subir el código de tu bot.

3. Paquetes y archivo de entrada

En el hosting anterior puede que instalaras los paquetes a mano en una consola. Aquí salen de un archivo:

  • Python: un requirements.txt con un paquete por línea, por ejemplo python-telegram-bot o aiogram. Escribe los nombres de los paquetes que importa tu código. ¿Otro nombre de archivo o carpeta? Defínelo en Archivo de requisitos, en la tarjeta Ajustes de la sección Código.
  • Node.js y Bun: tu package.json con sus dependencies.

En Python, Node.js y Bun los paquetes se instalan en el primer inicio. Después se instalan de nuevo solo cuando los cambias (la lista de paquetes, el archivo de paquetes o la versión del entorno de ejecución), cuando falta node_modules, o una vez al día. Entre una y otra vez, la Console dice:

[PlayNHost] Packages are up to date. They install again when you change them, or after a day.

En la página Bot, sección Código, tarjeta Cómo se ejecuta, pon en Archivo de entrada el archivo que iniciaba tu hosting anterior (por ejemplo main.py o src/index.js; bot.py e index.js son los predeterminados) y elige la misma versión de Entorno de ejecución. Haz clic en el botón Guardar junto a cada campo que cambies. Detalles por lenguaje: Python, Node.js.

4. El token

  1. En la página Bot, sección Telegram, pega el token del bot y haz clic en Conectar. El panel lo comprueba con Telegram y muestra el @usuario de tu bot. ¿Lo has perdido? En @BotFather envía /mybots, elige tu bot y después API Token.
  2. Tu código recibe el token como TELEGRAM_BOT_TOKEN, y también como BOT_TOKEN, TOKEN, TELEGRAM_TOKEN y TELOXIDE_TOKEN. Si tu código lee otro nombre, cambia esa línea a uno de estos.
  3. Si el token está escrito en tu código o en un config.json, sustitúyelo por la variable de entorno, por ejemplo os.environ["TELEGRAM_BOT_TOKEN"] en Python o process.env.TELEGRAM_BOT_TOKEN en Node.js. Bórralo de cualquier archivo .env que hayas subido.

5. Los demás ajustes

  1. Abre la sección Entorno y haz clic en Pegar un archivo .env.
  2. Pega tu .env antiguo o las variables del panel de tu hosting anterior. La línea del token aparece marcada como Omitida, con Tu token de Telegram va en la página Bot, Telegram, así que esa línea se omite. Tu código lo lee como TELEGRAM_BOT_TOKEN, y también como BOT_TOKEN, TOKEN, TELEGRAM_TOKEN y TELOXIDE_TOKEN.
  3. Revisa la lista (los nombres que parecen secretos reciben una etiqueta Secreto) y haz clic en el botón de importar, por ejemplo Importar 3 variables.

¿Usas python-dotenv? Las variables de Entorno ya están en os.environ, y load_dotenv() no las sobrescribe. ¿Tenías una base de datos MySQL? Crea una en la página Bases de datos: Cómo usar una base de datos con tu bot.

6. Del webhook al polling

Algunos servicios de hosting ejecutan un bot con un webhook, por ejemplo mediante una aplicación web en PythonAnywhere. Aquí tu bot usa long polling: le pide a Telegram los mensajes nuevos y no necesita una dirección propia. Un webhook necesita una dirección HTTPS pública, que estos planes todavía no incluyen. Cambia el inicio de tu bot:

LibreríaQuitaUsa
python-telegram-botapplication.run_webhook(...)application.run_polling()
aiogram 3La aplicación web aiohttp con SimpleRequestHandlerawait dp.start_polling(bot)
pyTelegramBotAPIbot.set_webhook(...) y la ruta de Flaskbot.infinity_polling()
grammYwebhookCallback(bot, ...)bot.start()
Telegrafbot.launch({ webhook: ... })bot.launch()

Un pequeño servidor web que solo mantenía despierto al bot en el hosting anterior no hace falta aquí: el bot funciona todo el tiempo.

El webhook sigue configurado en tu bot en Telegram hasta que algo lo quite. python-telegram-bot y grammY lo quitan por sí solos cuando empieza el polling. Con otro código, la sección Telegram muestra Hay un webhook configurado en este bot: haz clic en Quitar webhook y confirma. Los mensajes en espera se conservan, así que tu bot los recoge aquí.

7. Cambia de copia

  1. Detén el bot en el hosting anterior: una tarea siempre activa o programada en PythonAnywhere, un despliegue en Replit o Railway, o la ventana de terminal o el script en tu PC.
  2. Pulsa Iniciar aquí y mira la Console hasta que tu bot inicie sesión. Imprime una línea como Logged in as @your_bot cuando esté listo: la etiqueta del Resumen pasa entonces a En línea en Telegram.
  3. Envía un comando a tu bot en Telegram. Después cancela el hosting anterior.

Si algo no funciona

  • Tu bot también se está ejecutando en otro sitio encima de la consola: la copia antigua sigue ejecutándose. Detenla y reinicia aquí. Mira Solucionar el error 409 Conflict de un bot de Telegram.
  • Hay un webhook configurado en tu bot: haz clic en Quitar el webhook y reinicia.
  • Un nombre de archivo incorrecto, un lenguaje equivocado o un paquete que falta aparece en los primeros segundos de la consola, a menudo como un aviso. Mira Por qué tu bot se sigue deteniendo.
  • El bot arranca pero ha perdido sus datos: comprueba que los archivos de datos conservan la misma estructura de carpetas, y que tu código los abre con una ruta relativa a /home/container.

¿Ya tienes tu bot en otro proveedor? Tráelo con nosotros

NUESTROS ÚLTIMOS BLOGS