NUOVO 📢 Offerta di lancio limitata: fino al 70% di sconto sul tuo primo mese, per tutti i giochi!Vedi i piani

Come spostare un bot Telegram su PlayNHost

Hosting di bot DiscordUpdated Oct 29, 20268 min read

Spostare un bot Telegram da PythonAnywhere, Replit, Railway o dal tuo PC significa copiare i suoi file, incollare lo stesso token, passare al polling se usava un webhook e avviarlo qui dopo aver fermato la vecchia copia. Il token resta lo stesso, quindi il bot mantiene il suo @username, le sue chat e i suoi utenti. I passaggi:

  1. Ordina un piano bot configurato per Telegram, con il linguaggio in cui è scritto il tuo bot.
  2. Copia i tuoi file in Files (zip, caricamento, Estrai), via SFTP o da Git, con requirements.txt o package.json.
  3. Imposta il File di avvio e il Runtime nella pagina Bot, sezione Codice.
  4. Incolla il token nella pagina Bot, sezione Telegram, e clicca Collega.
  5. Importa le altre impostazioni con Incolla un file .env nella sezione Ambiente.
  6. Se il tuo bot usava un webhook, passalo al polling.
  7. Ferma la vecchia copia, premi Avvia qui e guarda Console finché il bot non fa il login.

Ogni passaggio è spiegato qui sotto.

Prima di iniziare

  • Raccogli il codice del bot e i suoi file di dati (file SQLite, file JSON, impostazioni salvate) in una sola cartella. Da un host, scaricali come zip o copiali dal suo gestore di file.
  • Annota ogni impostazione che il vecchio host dava al tuo bot: il suo file .env o le variabili impostate nella sua dashboard.
  • Pianifica di fermare la vecchia copia subito prima di avviare quella nuova. Telegram permette a una sola copia di un bot di chiedere i messaggi: due copie si scalzano a vicenda con 409 Conflict.

1. Ordina un piano per Telegram

Su Hosting per bot Telegram clicca Crea server su un piano, rispondi a Per quale piattaforma è il tuo bot? con Telegram e scegli il linguaggio del tuo bot: Node.js, Python, Java, C# (.NET), Bun, Deno, Go o Rust. STARTER (0,5 GB) basta per la maggior parte dei bot: vedi python-telegram-bot vs aiogram su PlayNHost per la memoria che abbiamo misurato.

Hai già un piano bot configurato per Discord? Nella pagina Bot, sezione Discord, riquadro A cosa serve questo bot?, scegli Telegram e conferma con Cambia. Il linguaggio è sbagliato? Nella sezione Codice clicca Cambia cosa viene eseguito accanto a Runtime.

2. Copia i file

  • Bot piccolo: comprimi la cartella in uno zip, carica lo zip in Files, selezionalo e clicca Estrai.
  • Cartella grande: usa SFTP. Dettagli SFTP in Files mostra l’indirizzo; accedi con la password del tuo pannello.
  • Codice su GitHub: collega invece il repository e carica solo i tuoi file di dati. Vedi Come distribuire e aggiornare il tuo bot da GitHub.

Lascia fuori venv, .venv, __pycache__ e node_modules: il server installa i pacchetti da solo. La tua cartella principale qui è /home/container. Se il tuo codice apre i file di dati con un percorso completo del vecchio host (come /home/yourname/mybot/data.db), cambialo in un percorso relativo alla cartella principale. Altro: Come caricare il codice del tuo bot.

3. Pacchetti e file di avvio

Sul vecchio host potresti aver installato i pacchetti a mano in una console. Qui arrivano da un file:

  • Python: un requirements.txt con un pacchetto per riga, per esempio python-telegram-bot o aiogram. Scrivi i nomi dei pacchetti che il tuo codice importa. Un altro nome di file o un’altra cartella? Impostali sotto File dei requisiti nel riquadro Impostazioni della sezione Codice.
  • Node.js e Bun: il tuo package.json con le sue dependencies.

Su Python, Node.js e Bun i pacchetti si installano al primo avvio. Dopo, si reinstallano solo quando li modifichi (l’elenco dei pacchetti, il file dei pacchetti o la versione del runtime), quando manca node_modules, o una volta al giorno. Nel frattempo Console dice:

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

Nella pagina Bot, sezione Codice, riquadro Come viene eseguito, imposta File di avvio sul file che il tuo vecchio host avviava (per esempio main.py o src/index.js; bot.py e index.js sono i predefiniti) e scegli la stessa versione di Runtime. Clicca il pulsante Salva accanto a ogni campo che modifichi. Dettagli per linguaggio: Python, Node.js.

4. Il token

  1. Nella pagina Bot, sezione Telegram, incolla il token del bot e clicca Collega. Il pannello lo controlla con Telegram e mostra lo @username del tuo bot. Non lo trovi? Su @BotFather invia /mybots, scegli il tuo bot, poi API Token.
  2. Il tuo codice riceve il token come TELEGRAM_BOT_TOKEN, e anche come BOT_TOKEN, TOKEN, TELEGRAM_TOKEN e TELOXIDE_TOKEN. Se il tuo codice legge un altro nome, cambia quella riga con uno di questi.
  3. Se il token è scritto nel tuo codice o in un config.json, sostituiscilo con la variabile d’ambiente, per esempio os.environ["TELEGRAM_BOT_TOKEN"] in Python o process.env.TELEGRAM_BOT_TOKEN in Node.js. Eliminalo da ogni file .env che hai caricato.

5. Le altre impostazioni

  1. Apri la sezione Ambiente e clicca Incolla un file .env.
  2. Incolla il tuo vecchio .env o le variabili dalla dashboard del vecchio host. La riga del token è contrassegnata Saltata con Il token di Telegram va nella pagina Bot, Telegram, quindi questa riga viene saltata. Il tuo codice lo legge come TELEGRAM_BOT_TOKEN, e anche come BOT_TOKEN, TOKEN, TELEGRAM_TOKEN e TELOXIDE_TOKEN.
  3. Controlla l’elenco (i nomi che sembrano segreti ricevono un badge Segreto) e clicca il pulsante di importazione, per esempio Importa 3 variabili.

Usi python-dotenv? Le variabili di Ambiente sono già in os.environ e load_dotenv() non le sovrascrive. Avevi un database MySQL? Creane uno nella pagina Database: Come usare un database con il tuo bot.

6. Dal webhook al polling

Alcuni host eseguono un bot con un webhook, per esempio tramite una web app su PythonAnywhere. Qui il tuo bot usa il long polling: chiede a Telegram i nuovi messaggi e non ha bisogno di un indirizzo proprio. Un webhook richiede un indirizzo HTTPS pubblico, che questi piani per ora non includono. Cambia l’avvio del tuo bot:

LibreriaRimuoviUsa
python-telegram-botapplication.run_webhook(...)application.run_polling()
aiogram 3La web app aiohttp con SimpleRequestHandlerawait dp.start_polling(bot)
pyTelegramBotAPIbot.set_webhook(...) e la route Flaskbot.infinity_polling()
grammYwebhookCallback(bot, ...)bot.start()
Telegrafbot.launch({ webhook: ... })bot.launch()

Un piccolo web server che serviva solo a tenere sveglio il bot sul vecchio host qui non serve: il bot gira sempre.

Il webhook resta impostato sul tuo bot presso Telegram finché qualcosa non lo rimuove. python-telegram-bot e grammY lo rimuovono da soli quando parte il polling. Con altro codice, la sezione Telegram mostra Su questo bot è impostato un webhook: clicca Rimuovi il webhook e conferma. I messaggi in attesa vengono conservati, così il tuo bot li recupera qui.

7. Passa al nuovo host

  1. Ferma il bot sul vecchio host: un’attività sempre attiva o pianificata su PythonAnywhere, un deployment su Replit o Railway, oppure la finestra del terminale o lo script sul tuo PC.
  2. Premi Avvia qui e guarda Console finché il bot non fa il login. Stampa una riga come Logged in as @your_bot quando è pronto: il badge nella Panoramica passa allora a Online su Telegram.
  3. Invia un comando al tuo bot su Telegram. Poi disdici il vecchio host.

Se qualcosa non funziona

  • Il tuo bot è in esecuzione anche altrove sopra la console: la vecchia copia è ancora in esecuzione. Fermala, poi riavvia qui. Vedi Come risolvere l’errore 409 Conflict di un bot Telegram.
  • Sul tuo bot è impostato un webhook: clicca Rimuovi il webhook, poi riavvia.
  • Un nome di file sbagliato, un linguaggio sbagliato o un pacchetto mancante si vede nei primi secondi della console, spesso come banner. Vedi Perché il tuo bot continua a fermarsi.
  • Il bot parte ma ha perso i suoi dati: controlla che i file di dati abbiano mantenuto la stessa struttura di cartelle e che il tuo codice li apra con un percorso relativo a /home/container.

Il tuo bot è già ospitato altrove? Spostalo da noi

ULTIMI ARTICOLI