تعمل 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-bot | aiogram | |
|---|---|---|
| الذاكرة التي قسناها | نحو 40 MB (الإصدار 22) | نحو 169 MB (الإصدار 3) |
| نجوم GitHub (29 أكتوبر 2026) | 29,536 | 5,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 مع مساحة فائضة. تفيد باقة أكبر عندما يكبر البوت نفسه: بيانات محفوظة في الذاكرة، أو ملفات وصور، أو عدة بوتات في عملية واحدة.



