Przeniesienie bota Telegram z PythonAnywhere, Replit, Railway albo z twojego komputera polega na skopiowaniu jego plików, wklejeniu tego samego tokena, przełączeniu go na polling, jeśli używał webhooka, i uruchomieniu go tutaj po zatrzymaniu starej kopii. Token zostaje ten sam, więc bot zachowuje swój @username, swoje czaty i swoich użytkowników. Kroki:
- Zamów plan dla botów skonfigurowany pod Telegram, z językiem, w którym napisano twojego bota.
- Skopiuj pliki w Files (zip, przesłanie, Rozpakuj), przez SFTP albo z Git, razem z
requirements.txtlubpackage.json. - Ustaw Plik startowy i Runtime na stronie Bot, w sekcji Kod.
- Wklej token na stronie Bot, w sekcji Telegram, i kliknij Połącz.
- Zaimportuj pozostałe ustawienia przyciskiem Wklej plik .env w sekcji Środowisko.
- Jeśli twój bot używał webhooka, zmień go na polling.
- Zatrzymaj starą kopię, naciśnij tutaj Uruchom i obserwuj Console, aż twój bot się zaloguje.
Każdy krok jest opisany poniżej.
Zanim zaczniesz
- Zbierz kod bota i jego pliki z danymi (pliki SQLite, pliki JSON, zapisane ustawienia) w jednym folderze. Z hostingu pobierz je jako zip albo skopiuj z jego menedżera plików.
- Zanotuj każde ustawienie, które stary hosting przekazywał twojemu botowi: jego plik
.envalbo zmienne ustawione w jego panelu. - Zaplanuj zatrzymanie starej kopii tuż przed uruchomieniem nowej. Telegram pozwala pobierać wiadomości tylko jednej kopii bota: dwie kopie wypychają się nawzajem z błędem
409 Conflict.
1. Zamów plan skonfigurowany pod Telegram
Na stronie Hosting botów Telegram kliknij Utwórz serwer przy wybranym planie, na pytanie Na jaką platformę jest Twój bot? odpowiedz Telegram i wybierz język swojego bota: Node.js, Python, Java, C# (.NET), Bun, Deno, Go albo Rust. Dla większości botów wystarczy STARTER (0,5 GB): zmierzoną pamięć znajdziesz w python-telegram-bot kontra aiogram w PlayNHost.
Masz już plan dla botów skonfigurowany pod Discord? Na stronie Bot, w sekcji Discord, na karcie Do czego służy ten bot? wybierz Telegram i potwierdź przyciskiem Przełącz. Zły język? W sekcji Kod kliknij Zmień to, co działa obok pozycji Runtime.
2. Skopiuj pliki
- Mały bot: spakuj folder do zip, prześlij zip w Files, zaznacz go i kliknij Rozpakuj.
- Duży folder: użyj SFTP. Adres podaje Dane SFTP w Files; logujesz się hasłem do panelu.
- Kod na GitHub: połącz repozytorium zamiast tego i prześlij tylko pliki z danymi. Zobacz Jak wdrożyć i aktualizować bota z GitHub.
Pomiń venv, .venv, __pycache__ i node_modules: serwer sam instaluje pakiety. Twój główny folder to tutaj /home/container. Jeśli twój kod otwiera pliki z danymi pełną ścieżką ze starego hostingu (na przykład /home/yourname/mybot/data.db), zmień ją na ścieżkę względem głównego folderu. Więcej: Jak przesłać kod swojego bota.
3. Pakiety i plik startowy
Na starym hostingu pakiety mogły być instalowane ręcznie w konsoli. Tutaj pochodzą z pliku:
- Python: plik
requirements.txtz jednym pakietem w linii, na przykładpython-telegram-botalboaiogram. Wpisz do niego nazwy pakietów, które importuje twój kod. Inna nazwa pliku albo folder? Ustaw je w polu Plik wymagań na karcie Ustawienia w sekcji Kod. - Node.js i Bun: twój
package.jsonz sekcjądependencies.
W Pythonie, Node.js i Bun pakiety instalują się przy pierwszym starcie. Potem instalują się ponownie tylko wtedy, gdy je zmienisz (listę pakietów, plik pakietów albo wersję runtime), gdy brakuje node_modules albo raz na dobę. W pozostałych przypadkach Console pokazuje:
[PlayNHost] Packages are up to date. They install again when you change them, or after a day.
Na stronie Bot, w sekcji Kod, na karcie Jak działa ustaw Plik startowy na plik, który uruchamiał stary hosting (na przykład main.py albo src/index.js; domyślne to bot.py i index.js) i wybierz tę samą wersję Runtime. Kliknij przycisk Zapisz obok każdego zmienionego pola. Szczegóły dla poszczególnych języków: Python, Node.js.
4. Token
- Na stronie Bot, w sekcji Telegram, wklej token bota i kliknij Połącz. Panel sprawdza go w Telegramie i pokazuje @username twojego bota. Nie możesz go znaleźć? W @BotFather wyślij
/mybots, wybierz swojego bota, potem API Token. - Twój kod dostaje token jako
TELEGRAM_BOT_TOKEN, a także jakoBOT_TOKEN,TOKEN,TELEGRAM_TOKENiTELOXIDE_TOKEN. Jeśli twój kod odczytuje inną nazwę, zmień tę linię na jedną z tych. - Jeśli token jest wpisany w twoim kodzie albo w
config.json, zastąp go zmienną środowiskową, na przykłados.environ["TELEGRAM_BOT_TOKEN"]w Pythonie alboprocess.env.TELEGRAM_BOT_TOKENw Node.js. Usuń go z każdego przesłanego pliku.env.
5. Pozostałe ustawienia
- Otwórz sekcję Środowisko i kliknij Wklej plik .env.
- Wklej swój stary
.envalbo zmienne z panelu starego hostingu. Linia z tokenem dostaje oznaczenie Pominięto i opis Token Telegram wpisujesz na stronie Bot, w sekcji Telegram, dlatego ta linia jest pomijana. Twój kod odczytuje go jako TELEGRAM_BOT_TOKEN, a także jako BOT_TOKEN, TOKEN, TELEGRAM_TOKEN i TELOXIDE_TOKEN. - Sprawdź listę (nazwy wyglądające na sekrety dostają znaczek Sekret) i kliknij przycisk importu, na przykład Zaimportuj 3 zmienne.
Używasz python-dotenv? Zmienne z sekcji Środowisko są już w os.environ, a load_dotenv() ich nie nadpisuje. Bot miał bazę danych MySQL? Utwórz ją na stronie Bazy danych: Jak używać bazy danych z botem.
6. Z webhooka na polling
Niektóre hostingi uruchamiają bota na webhooku, na przykład przez aplikację webową w PythonAnywhere. Tutaj twój bot używa long pollingu: sam pyta Telegram o nowe wiadomości i nie potrzebuje własnego adresu. Webhook wymaga publicznego adresu HTTPS, którego te plany jeszcze nie obejmują. Zmień start swojego bota:
| Biblioteka | Usuń | Użyj |
|---|---|---|
| python-telegram-bot | application.run_webhook(...) | application.run_polling() |
| aiogram 3 | Aplikację webową aiohttp z SimpleRequestHandler | await dp.start_polling(bot) |
| pyTelegramBotAPI | bot.set_webhook(...) i trasę Flask | bot.infinity_polling() |
| grammY | webhookCallback(bot, ...) | bot.start() |
| Telegraf | bot.launch({ webhook: ... }) | bot.launch() |
Mały serwer webowy, który na starym hostingu tylko nie dawał botowi zasnąć, nie jest tu potrzebny: bot działa cały czas.
Webhook pozostaje ustawiony dla twojego bota w Telegramie, dopóki coś go nie usunie. python-telegram-bot i grammY usuwają go same, gdy startuje polling. Przy innym kodzie sekcja Telegram pokazuje Dla tego bota ustawiono webhook: kliknij Usuń webhook i potwierdź. Oczekujące wiadomości są zachowane, więc twój bot pobierze je tutaj.
7. Przełącz się
- Zatrzymaj bota na starym hostingu: zadanie działające cały czas albo zaplanowane zadanie w PythonAnywhere, wdrożenie w Replit lub Railway albo okno terminala lub skrypt na komputerze.
- Naciśnij tutaj Uruchom i obserwuj Console, aż twój bot się zaloguje. Wypisz linię w rodzaju
Logged in as @your_bot, gdy jest gotowy: znacznik na stronie Przegląd zmieni się wtedy na Online w Telegramie. - Wyślij botowi polecenie w Telegramie. Potem zrezygnuj ze starego hostingu.
Jeśli coś nie działa
- Twój bot działa też gdzie indziej nad konsolą: stara kopia nadal działa. Zatrzymaj ją, a potem uruchom bota tutaj ponownie. Zobacz Jak naprawić błąd 409 Conflict bota Telegram.
- Dla twojego bota ustawiono webhook: kliknij Usuń webhook, a potem uruchom ponownie.
- Zła nazwa pliku, zły język albo brakujący pakiet widać w pierwszych sekundach konsoli, często jako baner. Zobacz Dlaczego twój bot ciągle się zatrzymuje.
- Bot startuje, ale stracił dane: sprawdź, czy pliki z danymi zachowały tę samą strukturę folderów i czy twój kod otwiera je ścieżką względem
/home/container.



