Een Telegram-bot verhuizen van PythonAnywhere, Replit, Railway of je pc is: zijn bestanden kopiëren, hetzelfde token plakken, hem op polling zetten als hij een webhook gebruikte, en hem hier starten zodra de oude kopie is gestopt. Het token blijft hetzelfde, dus de bot houdt zijn @gebruikersnaam, zijn chats en zijn gebruikers. De stappen:
- Zorg voor een botpakket dat voor Telegram is ingesteld, met de taal waarin je bot is geschreven.
- Kopieer je bestanden in Files (zip, upload, Uitpakken), via SFTP of vanuit Git, met
requirements.txtofpackage.json. - Stel het Startbestand en de Runtime in op de pagina Bot, deel Code.
- Plak het token op de pagina Bot, deel Telegram, en klik op Verbinden.
- Importeer je andere instellingen met Een .env-bestand plakken in het deel Omgeving.
- Als je bot een webhook gebruikte, zet hem dan om naar polling.
- Stop de oude kopie, druk hier op Starten en volg Console tot je bot inlogt.
Elke stap wordt hieronder uitgelegd.
Voordat je begint
- Verzamel de code van de bot en zijn databestanden (SQLite-bestanden, JSON-bestanden, opgeslagen instellingen) in één map. Bij een host download je ze als zip of kopieer je ze uit zijn bestandsbrowser.
- Noteer elke instelling die de oude host je bot gaf: zijn
.env-bestand of de variabelen die je in zijn dashboard hebt ingesteld. - Plan de oude kopie vlak voor de start van de nieuwe te stoppen. Telegram laat maar één kopie van een bot berichten opvragen: twee kopieën duwen elkaar weg met
409 Conflict.
1. Zorg voor een pakket dat voor Telegram is ingesteld
Klik op Telegram-bothosting bij een pakket op Server aanmaken, beantwoord Voor welk platform is je bot? met Telegram en kies de taal van je bot: Node.js, Python, Java, C# (.NET), Bun, Deno, Go of Rust. STARTER (0,5 GB) is genoeg voor de meeste bots: zie python-telegram-bot vs aiogram op PlayNHost voor het geheugen dat we hebben gemeten.
Heb je al een botpakket dat voor Discord is ingesteld? Kies op de pagina Bot, deel Discord, in de kaart Waar is deze bot voor? de optie Telegram en bevestig met Overschakelen. Verkeerde taal? Klik in het deel Code naast Runtime op Wijzigen wat er draait.
2. Kopieer de bestanden
- Kleine bot: zip de map, upload de zip in Files, vink hem aan en klik op Uitpakken.
- Grote map: gebruik SFTP. SFTP-gegevens in Files geeft het adres; je logt in met je panelwachtwoord.
- Code op GitHub: koppel in plaats daarvan de repository en upload alleen je databestanden. Zie Je bot deployen en bijwerken vanuit GitHub.
Laat venv, .venv, __pycache__ en node_modules weg: de server installeert de packages zelf. Je hoofdmap hier is /home/container. Opent je code databestanden via een volledig pad van de oude host (zoals /home/yourname/mybot/data.db), wijzig dat dan naar een pad relatief aan de hoofdmap. Meer: Je botcode uploaden.
3. Packages en startbestand
Bij de oude host heb je packages misschien met de hand in een console geïnstalleerd. Hier komen ze uit een bestand:
- Python: een
requirements.txtmet één package per regel, bijvoorbeeldpython-telegram-botofaiogram. Schrijf de namen op van de packages die je code importeert. Andere bestandsnaam of map? Stel die in onder Requirements-bestand op de kaart Instellingen van het deel Code. - Node.js en Bun: je
package.jsonmet zijndependencies.
Op Python, Node.js en Bun worden de packages bij de eerste start geïnstalleerd. Daarna worden ze alleen opnieuw geïnstalleerd als je ze wijzigt (de packagelijst, het packagebestand of de runtimeversie), als node_modules ontbreekt, of eens per dag. Tussendoor zegt Console:
[PlayNHost] Packages are up to date. They install again when you change them, or after a day.
Zet op de pagina Bot, deel Code, kaart Hoe hij draait, het Startbestand op het bestand dat je oude host startte (bijvoorbeeld main.py of src/index.js; bot.py en index.js zijn de standaardwaarden) en kies dezelfde Runtime-versie. Klik op de knop Opslaan naast elk veld dat je wijzigt. Details per taal: Python, Node.js.
4. Het token
- Plak het token van de bot op de pagina Bot, deel Telegram, en klik op Verbinden. Het panel controleert het bij Telegram en toont de @gebruikersnaam van je bot. Kwijt? Stuur @BotFather
/mybots, kies je bot en dan API Token. - Je code krijgt het token als
TELEGRAM_BOT_TOKEN, en ook alsBOT_TOKEN,TOKEN,TELEGRAM_TOKENenTELOXIDE_TOKEN. Leest je code een andere naam, wijzig die regel dan naar een van deze. - Staat het token in je code of in een
config.json, vervang het dan door de omgevingsvariabele, bijvoorbeeldos.environ["TELEGRAM_BOT_TOKEN"]in Python ofprocess.env.TELEGRAM_BOT_TOKENin Node.js. Verwijder het uit elk.env-bestand dat je hebt geüpload.
5. De andere instellingen
- Open het deel Omgeving en klik op Een .env-bestand plakken.
- Plak je oude
.envof de variabelen uit het dashboard van je oude host. De tokenregel is gemarkeerd met Overgeslagen, met Je Telegram-token komt op de Bot-pagina, Telegram, dus die regel wordt overgeslagen. Je code leest het als TELEGRAM_BOT_TOKEN, en ook als BOT_TOKEN, TOKEN, TELEGRAM_TOKEN en TELOXIDE_TOKEN. - Controleer de lijst (namen die op geheimen lijken, krijgen een badge Geheim) en klik op de importknop, bijvoorbeeld 3 variabelen importeren.
Gebruik je python-dotenv? Variabelen uit Omgeving staan al in os.environ, en load_dotenv() overschrijft ze niet. Had je een MySQL-database? Maak er een op de pagina Databases: Een database gebruiken met je bot.
6. Van webhook naar polling
Sommige hosts draaien een bot op een webhook, bijvoorbeeld via een webapp op PythonAnywhere. Hier gebruikt je bot long polling: hij vraagt Telegram om nieuwe berichten en heeft geen eigen adres nodig. Een webhook heeft een openbaar HTTPS-adres nodig, dat deze pakketten nog niet bevatten. Pas het begin van je bot aan:
| Library | Verwijderen | Gebruiken |
|---|---|---|
| python-telegram-bot | application.run_webhook(...) | application.run_polling() |
| aiogram 3 | De aiohttp-webapp met SimpleRequestHandler | await dp.start_polling(bot) |
| pyTelegramBotAPI | bot.set_webhook(...) en de Flask-route | bot.infinity_polling() |
| grammY | webhookCallback(bot, ...) | bot.start() |
| Telegraf | bot.launch({ webhook: ... }) | bot.launch() |
Een kleine webserver die de bot bij de oude host alleen wakker hield, heb je hier niet nodig: de bot draait de hele tijd.
De webhook blijft bij Telegram op je bot ingesteld tot iets hem verwijdert. python-telegram-bot en grammY verwijderen hem zelf zodra het pollen begint. Bij andere code toont het deel Telegram Er is een webhook ingesteld op deze bot: klik op Webhook verwijderen en bevestig. De wachtende berichten blijven bewaard, dus je bot haalt ze hier op.
7. Schakel over
- Stop de bot bij de oude host: een always-on-taak of geplande taak op PythonAnywhere, een deployment op Replit of Railway, of het terminalvenster of script op je pc.
- Druk hier op Starten en volg Console tot je bot inlogt. Print een regel zoals
Logged in as @your_botzodra hij klaar is: het statuslabel op Overzicht verandert dan in Online in Telegram. - Stuur je bot een commando in Telegram. Zeg daarna de oude host op.
Als iets niet werkt
- Je bot draait ook ergens anders boven de console: de oude kopie draait nog. Stop hem en herstart dan hier. Zie Telegram-bot 409 Conflict oplossen.
- Er is een webhook ingesteld op je bot: klik op De webhook verwijderen en herstart dan.
- Een verkeerde bestandsnaam, een verkeerde taal of een ontbrekend package verschijnt in de eerste seconden van de console, vaak als banner. Zie Waarom je bot blijft stoppen.
- De bot start maar is zijn gegevens kwijt: controleer of de databestanden dezelfde mapstructuur hebben behouden en of je code ze opent via een pad relatief aan
/home/container.



