Sia python-telegram-bot sia aiogram funzionano bene su ogni piano bot PlayNHost, compreso il piano STARTER da 0,5 GB (da 1,99 US$ al mese). Nelle nostre misure un bot python-telegram-bot 22 ha usato circa 40 MB di memoria e un bot aiogram 3 circa 169 MB, quindi la memoria non è ciò che decide tra i due. Scegli quella di cui segui esempi e tutorial. Il nostro bot di partenza in Python usa python-telegram-bot, perché è la libreria Python per bot Telegram con più stelle e più download, e la più leggera che abbiamo misurato.
Cosa abbiamo misurato
Abbiamo misurato ogni libreria sui nostri server, con un bot costruito e pronto ad avviarsi (la memoria usata dal processo, prima di qualsiasi messaggio):
| Libreria | 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 da solo ha usato 8 MB nello stesso test. Il tuo codice, i dati che tiene in memoria e il numero di chat si sommano a questi numeri.
Perché va bene qualsiasi dimensione di piano
Il piano STARTER da 0,5 GB esegue una qualsiasi di queste librerie con spazio per il tuo codice: anche aiogram, la più pesante, ne usa circa un terzo. Scegli 1 GB o più quando il tuo bot tiene dati in memoria, gestisce file o immagini, oppure esegue più bot nello stesso processo. Piani e prezzi: Hosting per bot Telegram.
Confronto diretto
| python-telegram-bot | aiogram | |
|---|---|---|
| Memoria misurata | Circa 40 MB (versione 22) | Circa 169 MB (versione 3) |
| Stelle su GitHub (29 ott 2026) | 29.536 | 5.912 |
| Download da PyPI, ultimi 30 giorni (29 ott 2026) | 6,76 milioni | 2,76 milioni |
| Chiamata di polling | application.run_polling() | await dp.start_polling(bot) |
| Nome del token nei suoi esempi ufficiali | Nessuno (un segnaposto "TOKEN") | BOT_TOKEN |
| Un webhook rimasto impostato sul bot | Rimosso da solo quando parte il polling | Non rimosso: riprova sul 409 Conflict |
| Un token rifiutato (401) | Smette di riprovare: Invalid token. Aborting retry loop. | Continua a riprovare, quindi il bot sembra in esecuzione |
| Un’altra copia in esecuzione (409) | Continua a riprovare | Continua a riprovare |
aiogram è comune nei tutorial e nelle risposte in lingua russa. Se segui un tutorial, usa la libreria che usa lui.
Cosa significa sul tuo server
- Il token: il pannello lo passa al tuo codice come
TELEGRAM_BOT_TOKEN,BOT_TOKEN,TOKEN,TELEGRAM_TOKENeTELOXIDE_TOKEN. L’os.getenv("BOT_TOKEN")di aiogram funziona così com’è; negli esempi di python-telegram-bot sostituisci il segnaposto conos.environ["TOKEN"]oos.environ["TELEGRAM_BOT_TOKEN"]. - Un bot che sembra in esecuzione ma non risponde: aiogram continua a riprovare con un token rifiutato e su
409 Conflict, e python-telegram-bot su409 Conflict. Il pannello legge la console e mostra un banner con la causa, per esempio Il tuo bot è in esecuzione anche altrove. Vedi Come risolvere l’errore 409 Conflict di un bot Telegram. - Un webhook di un vecchio host: python-telegram-bot lo rimuove quando parte il polling. Con aiogram, clicca Rimuovi il webhook nella pagina Bot, sezione Telegram, oppure chiama
await bot.delete_webhook()prima distart_polling. - Online su Telegram: il badge nella Panoramica passa a Online su Telegram quando la console mostra una riga di bot pronto. aiogram stampa
Run polling for bot @your_botquando il logging è aINFO. Con python-telegram-bot, stampa tuLogged in as @your_bot, come fa il nostro bot di partenza. - Il tuo token nella console: quando Telegram rifiuta il token, il messaggio di errore di python-telegram-bot contiene il token stesso. Il nostro bot di partenza intercetta
InvalidTokene stampa invece una riga semplice, e nasconde il token nelle sue righe di log. - Versione di Python: python-telegram-bot 22 richiede Python 3.10 o più recente. Il Runtime nella sezione Codice offre da 3.10 a 3.14, con 3.12 come predefinita.
Lo stesso bot nelle due librerie
Entrambe rispondono a /start e leggono il token che il pannello fornisce. Metti la libreria in requirements.txt e il codice in bot.py, il File di avvio predefinito.
python-telegram-bot, file requirements.txt:
python-telegram-bot>=22,<23
File 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, file requirements.txt:
aiogram>=3,<4
File 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 versione aiogram registra i log a livello INFO, quindi stampa Run polling for bot @your_bot quando è pronta, e rimuove un webhook rimasto sul bot prima di iniziare il polling.
E su Node.js
Il nostro bot di partenza per Node.js usa grammY. Nel nostro test grammY e Telegraf hanno usato circa la stessa memoria (61 e 60 MB), quindi entrambi vanno bene su qualsiasi piano. Abbiamo scelto grammY perché è ancora aggiornato (1.46.0 il 26 ago 2026, contro l’ultima versione di Telegraf, 4.16.3, del 29 feb 2024).
Domande frequenti
Quale usa il bot di partenza?
python-telegram-bot 22 su un server Python, grammY su un server Node.js. Clicca Crea un bot di partenza nel riquadro Configura il tuo bot della Panoramica. Vedi Come ospitare un bot Telegram.
Posso passare da una libreria all’altra più avanti?
Sì. Entrambe girano sullo stesso server Python: cambia requirements.txt e il tuo codice, poi riavvia. Il nuovo pacchetto si installa a quell’avvio perché il file dei pacchetti è cambiato.
Mi serve un piano più grande per aiogram?
No. Con circa 169 MB sta nel piano STARTER da 0,5 GB con margine. Un piano più grande aiuta quando è il tuo bot a crescere: dati tenuti in memoria, file e immagini, o più bot nello stesso processo.



