جديد 📢 عرض الإطلاق لفترة محدودة: خصم حتى 70% على شهرك الأول في كل لعبة.عرض الباقات

python-telegram-bot مقابل aiogram على PlayNHost

استضافة بوتات DiscordUpdated Oct 29, 20266 min read

تعمل python-telegram-bot وaiogram كلتاهما جيدًا على كل باقات البوت في PlayNHost، بما فيها باقة STARTER بسعة 0.5 GB (من US$1.99 شهريًا). في قياساتنا استخدم بوت python-telegram-bot 22 نحو 40 MB من الذاكرة، وبوت aiogram 3 نحو 169 MB، فلا تحسم الذاكرة الاختيار بينهما. اختر المكتبة التي تتبع أمثلتها وشروحاتها. يستخدم بوتنا التجريبي بلغة Python مكتبة python-telegram-bot، لأنها أكثر مكتبات Python لبوتات Telegram نجومًا وتنزيلًا، وأخفّ ما قسناه.

ما الذي قسناه

قسنا كل مكتبة على سيرفراتنا، مع بوت مبني وجاهز للتشغيل (الذاكرة التي تستخدمها العملية، قبل أي رسالة):

المكتبةالذاكرة
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

استخدمت Python وحدها 8 MB في الاختبار نفسه. يضيف كودك والبيانات التي يحتفظ بها في الذاكرة وعدد المحادثات إلى هذه الأرقام.

لماذا تصلح أي باقة

تشغّل باقة STARTER بسعة 0.5 GB أيًّا من هذه المكتبات مع مساحة لكودك: حتى aiogram، الأثقل، تستخدم نحو ثلثها. اختر 1 GB أو أكثر عندما يحتفظ بوتك ببيانات في الذاكرة، أو يتعامل مع ملفات أو صور، أو يشغّل عدة بوتات في عملية واحدة. الباقات والأسعار في استضافة بوت Telegram.

مقارنة جنبًا إلى جنب

python-telegram-botaiogram
الذاكرة التي قسناهانحو 40 MB (الإصدار 22)نحو 169 MB (الإصدار 3)
نجوم GitHub (29 أكتوبر 2026)29,5365,912
تنزيلات PyPI في آخر 30 يومًا (29 أكتوبر 2026)6.76 مليون2.76 مليون
استدعاء الاستطلاعapplication.run_polling()await dp.start_polling(bot)
اسم الرمز في أمثلتها الرسميةلا يوجد (عنصر نائب "TOKEN")BOT_TOKEN
webhook تُرك معيّنًا على البوتتزيله من تلقاء نفسها عند بدء الاستطلاعلا تزيله: تعيد المحاولة عند 409 Conflict
رمز مرفوض (401)تتوقف عن المحاولة: Invalid token. Aborting retry loop.تواصل المحاولة، فيبدو البوت شغّالًا
نسخة أخرى تعمل (409)تواصل المحاولةتواصل المحاولة

aiogram شائعة في الشروحات والإجابات باللغة الروسية. إذا كنت تتبع شرحًا، فاستخدم المكتبة التي يستخدمها.

ماذا يعني ذلك على سيرفرك

  • الرمز: تعطيه اللوحة لكودك باسم TELEGRAM_BOT_TOKEN وBOT_TOKEN وTOKEN وTELEGRAM_TOKEN وTELOXIDE_TOKEN. يعمل os.getenv("BOT_TOKEN") في aiogram كما هو؛ وفي أمثلة python-telegram-bot استبدل العنصر النائب بـ os.environ["TOKEN"] أو os.environ["TELEGRAM_BOT_TOKEN"].
  • بوت يبدو شغّالًا لكنه لا يرد: تواصل aiogram إعادة المحاولة مع رمز مرفوض ومع 409 Conflict، وpython-telegram-bot مع 409 Conflict. تقرأ اللوحة ما في Console وتعرض شريط تنبيه فيه السبب، مثل بوتك يعمل في مكان آخر أيضًا. راجع إصلاح خطأ 409 Conflict في بوت Telegram.
  • webhook من استضافة قديمة: تزيله python-telegram-bot عند بدء الاستطلاع. ومع aiogram اضغط إزالة الـ webhook في صفحة البوت، قسم Telegram، أو استدعِ await bot.delete_webhook() قبل start_polling.
  • متصل في Telegram: تتحول الشارة في نظرة عامة إلى متصل في Telegram عندما تُظهر Console سطر الجاهزية. تطبع aiogram Run polling for bot @your_bot عندما يكون مستوى السجل INFO. ومع python-telegram-bot اطبع Logged in as @your_bot بنفسك، كما يفعل بوتنا التجريبي.
  • رمزك في Console: عندما يرفض Telegram الرمز، تحتوي رسالة الخطأ في python-telegram-bot على الرمز نفسه. يلتقط بوتنا التجريبي InvalidToken ويطبع سطرًا واضحًا بدلًا منه، ويخفي الرمز في أسطر سجله.
  • إصدار Python: تحتاج python-telegram-bot 22 إلى Python 3.10 أو أحدث. تعرض بيئة التشغيل في قسم الكود الإصدارات من 3.10 إلى 3.14، والافتراضي 3.12.

البوت نفسه في المكتبتين

كلتاهما ترد على /start وتقرأ الرمز الذي تعطيه اللوحة. ضع المكتبة في requirements.txt والكود في bot.py، وهو ملف البدء الافتراضي.

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

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"])
    await bot.delete_webhook()
    await dp.start_polling(bot)


if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    asyncio.run(main())

تسجّل نسخة aiogram عند المستوى INFO، فتطبع Run polling for bot @your_bot عندما تصبح جاهزة، وتزيل webhook تُرك على البوت قبل أن تبدأ الاستطلاع.

وعلى Node.js

يستخدم بوتنا التجريبي بلغة Node.js مكتبة grammY. في اختبارنا استخدمت grammY وTelegraf الذاكرة نفسها تقريبًا (61 و60 MB)، فكلتاهما تناسب أي باقة. اخترنا grammY لأنها لا تزال تُحدَّث (الإصدار 1.46.0 في 26 أغسطس 2026، مقابل آخر إصدار لـ Telegraf، وهو 4.16.3، في 29 فبراير 2024).

أسئلة يطرحها الناس

أيهما يستخدمه البوت التجريبي؟

python-telegram-bot 22 على سيرفر Python، وgrammY على سيرفر Node.js. اضغط إنشاء بوت تجريبي للبدء في بطاقة إعداد بوتك ضمن نظرة عامة. راجع كيف تستضيف بوت Telegram.

هل أستطيع التحويل من مكتبة إلى الأخرى لاحقًا؟

نعم. تعمل كلتاهما على سيرفر Python نفسه: غيّر requirements.txt وكودك، ثم أعد التشغيل. تُثبَّت الحزمة الجديدة عند ذلك التشغيل لأن ملف الحزم تغيّر.

هل أحتاج إلى باقة أكبر لـ aiogram؟

لا. بنحو 169 MB تتسع في باقة STARTER بسعة 0.5 GB مع مساحة فائضة. تفيد باقة أكبر عندما يكبر البوت نفسه: بيانات محفوظة في الذاكرة، أو ملفات وصور، أو عدة بوتات في عملية واحدة.

بوتك مستضاف في مكان آخر بالفعل؟ انقله إلينا

أحدث مقالات المدونة