NOWOŚĆ 📢 Ograniczona oferta na start: do 70% zniżki na pierwszy miesiąc, na każdą grę!Zobacz plany

Jak przenieść bota Telegram do PlayNHost

Hosting botów DiscordUpdated Oct 29, 20267 min read

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:

  1. Zamów plan dla botów skonfigurowany pod Telegram, z językiem, w którym napisano twojego bota.
  2. Skopiuj pliki w Files (zip, przesłanie, Rozpakuj), przez SFTP albo z Git, razem z requirements.txt lub package.json.
  3. Ustaw Plik startowy i Runtime na stronie Bot, w sekcji Kod.
  4. Wklej token na stronie Bot, w sekcji Telegram, i kliknij Połącz.
  5. Zaimportuj pozostałe ustawienia przyciskiem Wklej plik .env w sekcji Środowisko.
  6. Jeśli twój bot używał webhooka, zmień go na polling.
  7. 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 .env albo 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.txt z jednym pakietem w linii, na przykład python-telegram-bot albo aiogram. 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.json z 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

  1. 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.
  2. Twój kod dostaje token jako TELEGRAM_BOT_TOKEN, a także jako BOT_TOKEN, TOKEN, TELEGRAM_TOKEN i TELOXIDE_TOKEN. Jeśli twój kod odczytuje inną nazwę, zmień tę linię na jedną z tych.
  3. Jeśli token jest wpisany w twoim kodzie albo w config.json, zastąp go zmienną środowiskową, na przykład os.environ["TELEGRAM_BOT_TOKEN"] w Pythonie albo process.env.TELEGRAM_BOT_TOKEN w Node.js. Usuń go z każdego przesłanego pliku .env.

5. Pozostałe ustawienia

  1. Otwórz sekcję Środowisko i kliknij Wklej plik .env.
  2. Wklej swój stary .env albo 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.
  3. 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:

BibliotekaUsuńUżyj
python-telegram-botapplication.run_webhook(...)application.run_polling()
aiogram 3Aplikację webową aiohttp z SimpleRequestHandlerawait dp.start_polling(bot)
pyTelegramBotAPIbot.set_webhook(...) i trasę Flaskbot.infinity_polling()
grammYwebhookCallback(bot, ...)bot.start()
Telegrafbot.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ę

  1. 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.
  2. 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.
  3. 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.

Twój bot działa już gdzie indziej? Przenieś go do nas

NASZE OSTATNIE WPISY