Tanto python-telegram-bot como aiogram funcionan bien en todos los planes de bots de PlayNHost, incluido el plan STARTER de 0.5 GB (desde US$1.99 al mes). En nuestras propias mediciones, un bot de python-telegram-bot 22 usó unos 40 MB de memoria y uno de aiogram 3 unos 169 MB, así que la memoria no es lo que decide entre ellos. Elige la que siguen los ejemplos y tutoriales que usas. Nuestro bot inicial de Python usa python-telegram-bot, porque es la librería de Python para bots de Telegram con más estrellas y más descargas, y la más ligera que medimos.
Qué medimos
Medimos cada librería en nuestros propios servidores, con un bot construido y listo para iniciar (la memoria que usa el proceso, antes de recibir ningún mensaje):
| Librería | Memoria |
|---|---|
| python-telegram-bot 22 (Python 3.13) | 40 MB |
| Telegraf (Node.js 22) | 60 MB |
| grammY (Node.js 22) | 61 MB |
| aiogram 3 (Python 3.13) | 169 MB |
Python solo usó 8 MB en la misma prueba. Tu propio código, los datos que guarda en memoria y el número de chats se suman a estas cifras.
Por qué sirve cualquier tamaño de plan
El plan STARTER de 0.5 GB ejecuta cualquiera de estas librerías con margen para tu propio código: incluso aiogram, la más pesada, usa aproximadamente un tercio. Elige 1 GB o más cuando tu bot guarde datos en memoria, maneje archivos o imágenes, o ejecute varios bots en un mismo proceso. Planes y precios: alojamiento de bots de Telegram.
Lado a lado
| python-telegram-bot | aiogram | |
|---|---|---|
| Memoria que medimos | Unos 40 MB (versión 22) | Unos 169 MB (versión 3) |
| Estrellas en GitHub (29 oct 2026) | 29.536 | 5.912 |
| Descargas en PyPI, últimos 30 días (29 oct 2026) | 6,76 millones | 2,76 millones |
| Llamada de polling | application.run_polling() | await dp.start_polling(bot) |
| Nombre del token en sus ejemplos oficiales | Ninguno (un marcador "TOKEN") | BOT_TOKEN |
| Un webhook que queda configurado en el bot | Lo quita solo cuando empieza el polling | No lo quita: reintenta con 409 Conflict |
| Un token rechazado (401) | Deja de reintentar: Invalid token. Aborting retry loop. | Sigue reintentando, así que el bot parece estar en marcha |
| Otra copia en ejecución (409) | Sigue reintentando | Sigue reintentando |
aiogram es habitual en tutoriales y respuestas en ruso. Si sigues un tutorial, usa la librería que usa él.
Qué significa eso en tu servidor
- El token: el panel se lo da a tu código como
TELEGRAM_BOT_TOKEN,BOT_TOKEN,TOKEN,TELEGRAM_TOKENyTELOXIDE_TOKEN. Elos.getenv("BOT_TOKEN")de aiogram funciona tal cual; en los ejemplos de python-telegram-bot, sustituye el marcador poros.environ["TOKEN"]oos.environ["TELEGRAM_BOT_TOKEN"]. - Un bot que parece estar en marcha pero no responde: aiogram sigue reintentando con un token rechazado y con
409 Conflict, y python-telegram-bot con409 Conflict. El panel lee la consola y muestra un aviso con la causa, por ejemplo Tu bot también se está ejecutando en otro sitio. Mira Solucionar el error 409 Conflict de un bot de Telegram. - Un webhook de un hosting anterior: python-telegram-bot lo quita cuando empieza el polling. Con aiogram, haz clic en Quitar webhook en la página Bot, sección Telegram, o llama a
await bot.delete_webhook()antes destart_polling. - En línea en Telegram: la etiqueta del Resumen pasa a En línea en Telegram cuando la consola muestra una línea de listo. aiogram imprime
Run polling for bot @your_botcuando el registro está enINFO. Con python-telegram-bot, imprime tú mismoLogged in as @your_bot, como hace nuestro bot inicial. - Tu token en la consola: cuando Telegram rechaza el token, el mensaje de error de python-telegram-bot contiene el propio token. Nuestro bot inicial captura
InvalidTokene imprime en su lugar una línea simple, y oculta el token en sus líneas de log. - Versión de Python: python-telegram-bot 22 necesita Python 3.10 o posterior. El Entorno de ejecución de la sección Código ofrece de 3.10 a 3.14, con 3.12 como predeterminado.
El mismo bot en ambas
Ambas responden a /start y leen el token que les da el panel. Pon la librería en requirements.txt y el código en bot.py, el Archivo de entrada predeterminado.
python-telegram-bot: archivo requirements.txt
python-telegram-bot>=22,<23
bot.py
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.effective_message.reply_text("Hello! I am running on PlayNHost.")
async def post_init(application: Application) -> None:
print(f"Logged in as @{application.bot.username}", flush=True)
application = (
Application.builder()
.token(os.environ["TELEGRAM_BOT_TOKEN"])
.post_init(post_init)
.build()
)
application.add_handler(CommandHandler("start", start))
application.run_polling()
aiogram: archivo requirements.txt
aiogram>=3,<4
bot.py
import asyncio
import logging
import os
from aiogram import Bot, Dispatcher
from aiogram.filters import CommandStart
from aiogram.types import Message
dp = Dispatcher()
@dp.message(CommandStart())
async def start(message: Message) -> None:
await message.answer("Hello! I am running on PlayNHost.")
async def main() -> None:
bot = Bot(os.environ["BOT_TOKEN"])
await bot.delete_webhook()
await dp.start_polling(bot)
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
asyncio.run(main())
La versión de aiogram registra en INFO, así que imprime Run polling for bot @your_bot cuando está listo, y quita un webhook que haya quedado en el bot antes de empezar el polling.
Y en Node.js
Nuestro bot inicial de Node.js usa grammY. En nuestra prueba grammY y Telegraf usaron casi la misma memoria (61 y 60 MB), así que cualquiera encaja en cualquier plan. Elegimos grammY porque se sigue actualizando (1.46.0 el 26 de agosto de 2026, frente a la última versión de Telegraf, 4.16.3, del 29 de febrero de 2024).
Preguntas frecuentes
¿Cuál usa el bot inicial?
python-telegram-bot 22 en un servidor Python, grammY en un servidor Node.js. Haz clic en Crear un bot inicial en la tarjeta Configura tu bot del Resumen. Mira Cómo alojar un bot de Telegram.
¿Puedo pasar de una librería a la otra más adelante?
Sí. Ambas se ejecutan en el mismo servidor Python: cambia requirements.txt y tu código, y reinicia. El paquete nuevo se instala en ese inicio porque el archivo de paquetes cambió.
¿Necesito un plan más grande para aiogram?
No. Con unos 169 MB cabe en el plan STARTER de 0.5 GB con espacio de sobra. Un plan más grande ayuda cuando crece tu propio bot: datos guardados en memoria, archivos e imágenes, o varios bots en un mismo proceso.



