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

python-telegram-bot kontra aiogram w PlayNHost

Hosting botów TelegramUpdated Nov 6, 20266 min read

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):

BibliotekaPamięć
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-botaiogram
Zmierzona pamięćOkoło 40 MB (wersja 22)Około 169 MB (wersja 3)
Gwiazdki na GitHub (29 paź 2026)29 5365 912
Pobrania z PyPI w ostatnich 30 dniach (29 paź 2026)6,76 mln2,76 mln
Wywołanie pollinguapplication.run_polling()await dp.start_polling(bot)
Nazwa tokena w oficjalnych przykładachBrak (wartość zastępcza "TOKEN")BOT_TOKEN
Webhook pozostawiony na bocieUsuwany sam, gdy startuje pollingNie 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 ponawiaCią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_TOKEN i TELOXIDE_TOKEN. Kod aiogram os.getenv("BOT_TOKEN") działa bez zmian; w przykładach python-telegram-bot zamień wartość zastępczą na os.environ["TOKEN"] albo os.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 przy 409 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() przed start_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 poziomie INFO. W python-telegram-bot wypisz Logged in as @your_bot samodzielnie, 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 InvalidToken i 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.

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

NASZE OSTATNIE WPISY