Zarówno python-telegram-bot, jak i aiogram działają dobrze w każdym planie dla botów PlayNHost, także w planie STARTER 0,5 GB (od 1,99 USD miesięcznie). W naszych własnych pomiarach bot na python-telegram-bot 22 zajmował około 40 MB pamięci, a bot na aiogram 3 około 169 MB, więc o wyborze między nimi nie decyduje pamięć. Wybierz tę, według której przykładów i poradników pracujesz. Nasz bot startowy w Pythonie używa python-telegram-bot, bo to najczęściej oznaczana gwiazdkami i najczęściej pobierana biblioteka Pythona do botów Telegram, a przy tym najlżejsza ze zmierzonych.
Co zmierzyliśmy
Zmierzyliśmy każdą bibliotekę na naszych serwerach, z gotowym do uruchomienia botem (pamięć zajmowana przez proces, zanim przyjdą jakiekolwiek wiadomości):
| Biblioteka | Pamięć |
|---|---|
| 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 |
Sam Python zajął w tym samym teście 8 MB. Do tych liczb dochodzą twój kod, dane trzymane w pamięci i liczba czatów.
Dlaczego wystarczy dowolny rozmiar planu
Plan STARTER 0,5 GB uruchamia każdą z tych bibliotek i zostawia miejsce na twój kod: nawet aiogram, najcięższy, zajmuje około jednej trzeciej. Wybierz 1 GB lub więcej, gdy twój bot trzyma dane w pamięci, obsługuje pliki lub obrazy albo uruchamia kilka botów w jednym procesie. Plany i ceny: Hosting botów Telegram.
Obok siebie
| python-telegram-bot | aiogram | |
|---|---|---|
| Zmierzona pamięć | Około 40 MB (wersja 22) | Około 169 MB (wersja 3) |
| Gwiazdki na GitHub (29 paź 2026) | 29 536 | 5 912 |
| Pobrania z PyPI w ostatnich 30 dniach (29 paź 2026) | 6,76 mln | 2,76 mln |
| Wywołanie pollingu | application.run_polling() | await dp.start_polling(bot) |
| Nazwa tokena w oficjalnych przykładach | Brak (wartość zastępcza "TOKEN") | BOT_TOKEN |
| Webhook pozostawiony na bocie | Usuwany sam, gdy startuje polling | Nie jest usuwany: ponawia próby przy błędzie 409 Conflict |
| Odrzucony token (401) | Przestaje ponawiać: Invalid token. Aborting retry loop. | Odrzucony przy starcie: zatrzymuje się z błędem TelegramUnauthorizedError. Unieważniony w trakcie działania: ciągle ponawia, więc bot wygląda na działającego |
| Działa inna kopia (409) | Ciągle ponawia | Ciągle ponawia |
aiogram często pojawia się w rosyjskojęzycznych poradnikach i odpowiedziach. Jeśli idziesz za poradnikiem, użyj biblioteki, której on używa.
Co to oznacza na twoim serwerze
- Token: panel przekazuje go twojemu kodowi jako
TELEGRAM_BOT_TOKEN,BOT_TOKEN,TOKEN,TELEGRAM_TOKENiTELOXIDE_TOKEN. Kod aiogramos.getenv("BOT_TOKEN")działa bez zmian; w przykładach python-telegram-bot zamień wartość zastępczą naos.environ["TOKEN"]alboos.environ["TELEGRAM_BOT_TOKEN"]. - Bot wygląda na działającego, ale nie odpowiada: aiogram ciągle ponawia próby z tokenem unieważnionym w trakcie działania i przy
409 Conflict, a python-telegram-bot przy409 Conflict. Panel czyta konsolę i pokazuje baner z przyczyną, na przykład Twój bot działa też gdzie indziej. Zobacz Jak naprawić błąd 409 Conflict bota Telegram. - Webhook ze starego hostingu: python-telegram-bot usuwa go, gdy startuje polling. W aiogram kliknij Usuń webhook na stronie Bot, w sekcji Telegram, albo wywołaj
await bot.delete_webhook()przedstart_polling. - Online w Telegramie: znacznik na stronie Przegląd zmienia się na Online w Telegramie, gdy konsola pokazuje linię gotowości. aiogram wypisuje
Run polling for bot @your_bot, gdy logowanie jest na poziomieINFO. W python-telegram-bot wypiszLogged in as @your_botsamodzielnie, tak jak robi to nasz bot startowy. - Twój token w konsoli: gdy Telegram odrzuca token, komunikat błędu python-telegram-bot zawiera sam token. Nasz bot startowy przechwytuje
InvalidTokeni wypisuje zamiast tego czytelną linię, a w swoich liniach logu ukrywa token. - Wersja Pythona: python-telegram-bot 22 wymaga Pythona 3.10 lub nowszego. Lista Runtime w sekcji Kod oferuje wersje od 3.10 do 3.14, a domyślna to 3.12.
Ten sam bot w obu bibliotekach
Oba odpowiadają na /start i odczytują token, który daje im panel. Wpisz bibliotekę do requirements.txt, a kod do bot.py, czyli domyślnej wartości pola Plik startowy.
Dla python-telegram-bot: requirements.txt
python-telegram-bot>=22,<23
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()
Dla aiogram: requirements.txt
aiogram>=3,<4
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"])
async with bot.context():
await bot.delete_webhook()
await dp.start_polling(bot)
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
asyncio.run(main())
Wersja aiogram loguje na poziomie INFO, więc gdy jest gotowa, wypisuje Run polling for bot @your_bot, a przed startem pollingu usuwa webhook pozostawiony na bocie. Bot jest otwierany przez async with bot.context(), co zamyka sesję HTTP aiogram po zakończeniu programu. Bez tego odrzucony token wypisuje po tracebacku także błędy Unclosed client session.
A w Node.js
Nasz bot startowy w Node.js używa grammY. W naszym teście grammY i Telegraf zajęły mniej więcej tyle samo pamięci (61 i 60 MB), więc każda pasuje do dowolnego planu. Wybraliśmy grammY, bo nadal jest aktualizowana (1.46.0 z 26 sierpnia 2026, podczas gdy ostatnie wydanie Telegraf, 4.16.3, ukazało się 29 lutego 2024).
Pytania, które zadają ludzie
Której używa bot startowy?
python-telegram-bot 22 na serwerze Python i grammY na serwerze Node.js. Kliknij Utwórz bota startowego na karcie Skonfiguruj swojego bota na stronie Przegląd. Zobacz Jak hostować bota Telegram.
Czy mogę później przejść z jednej biblioteki na drugą?
Tak. Obie działają na tym samym serwerze Python: zmień requirements.txt i swój kod, a potem zrestartuj. Nowy pakiet zainstaluje się przy tym starcie, bo plik pakietów się zmienił.
Czy do aiogram potrzebuję większego planu?
Nie. Przy około 169 MB mieści się w planie STARTER 0,5 GB z dużym zapasem. Większy plan pomaga, gdy rośnie sam bot: dane trzymane w pamięci, pliki i obrazy albo kilka botów w jednym procesie.



