07/06/2024
رحلة مليئة بالتحديات لتشغيل بوت تيليجرام على خوادم الاستضافة ... ونهاية سعيدة،
بعد قضاء أكثر من 23 يومًا في تطوير بوت تيليجرام يحتوي على بيانات كبيرة ويقدم خدمات متعددة، واجهتُ مشكلة غريبة عند محاولة تشغيله على خوادم الاستضافة علما ان تطوير البوت انتهى في 7 ايام عمل.
يعمل البوت بشكل مثالي على بيئة التطوير (pc)، لكن عند رفعه على خادم مشترك (cPanel) واجهتُ مشكلة فقدان البيانات وعدم استجابة البوت عند استخدام خدمات متعددة. قمت بإعادة هيكلة جزء كبير من الكود (حوالي 3000 سطر) لتتبع الرسائل بدقة، لكن دون جدوى.
تواصلتُ مع دعم cPanel و ChatGPT، وأكّدوا أن البوتات المعقدة تحتاج إلى خادم خاص.
قمتُ بعد ذلك بتجربة استضافة PythonAnywhere (خطة مجانية)، ونجح البوت بالعمل بشكل صحيح. لكن للأسف، تحتاج خدمات البوت إلى خطة مدفوعة،
عند الترقية إلى الخطة المدفوعة واجهتُ نفس المشكلة التي واجهتني مع cPanel! 🤯
حاولتُ حل المشكلة بتعديل طريقة تشغيل البوت، بحيث يعمل لمدة 24 ساعة متواصلة ثم أقوم بإعادة تشغيله يدويًا. نجحت هذه الطريقة لفترة وجيزة، لكنّ هذا حلٌّ مؤقت وغير عملي. في اليوم التالي، وبعد إعادة تشغيل البوت، واجهتُ مشاكل جديدة مع خادم PythonAnywhere، حيث أصبح الخادم بطيئًا للغاية وتوقف البوت عن العمل.
تم طرح المشكلة في الموقع العالمي: https://stackoverflow.com/questions/78517574/telegram-bot-using-python-telegram-bot-django
لكن من دون جدوى.
فقدتُ الأمل في PythonAnywhere وقررتُ العودة إلى cPanel، على الرغم من المشاكل التي واجهتها سابقًا. 😔
عدتُ إلى cPanel مُجددًا، وقررتُ هذه المرة وضع خطة عمل مُحكمة. اكتشفتُ أداة رائعة في cPanel تُسمى Cron، تُتيح جدولة المهام وتنفيذها تلقائيًا في أوقات محددة. على سبيل المثال، يُمكنني استخدام Cron لإعادة تشغيل البوت كل 24 ساعة بشكل تلقائي، دون الحاجة للتدخل اليدوي.
لكن واجهتُ مشكلة جديدة مع Cron و Telegram. حيث لا يُمكنني استخدام Cron لإعادة تشغيل البوت بشكل دوري لأن Telegram يسمح باتصال واحد فقط لكل API. وايضا إيقاف البوت وإعادة تشغيله كل فترة يُعدّ حلاً غير عملي وعرضة للأخطاء.
لكن كما تعلم يا صديقي، البرمجة هي فنّ حلّ المشكلات!
تم إنشاء نظام تتبع يُراقب نشاط البوت ويُسجّل الأخطاء عن طريق ملف يوجد به تواريخ وزمن نشاط البوت. في حال توقف البوت عن العمل، يصبح ملف النشاط "خامدًا"، وهنا يأتي دور Cron لإعادة تشغيل البوت تلقائيًا! 🎉
هذه الفكرة هي الحل المثالي! لقد تعلمتُ الكثير من هذه التجربة، واكتسبتُ خبرة قيّمة في تحليل المشكلات وإيجاد الحلول. هذا هو النجاح الحقيقي والاصرار لتنفيذ عمل هذا البوت.
I have a Telegram bot using the python-telegram-bot library and Django. The bot is run and messages are processed via a webhook pythonanywhere. I used the free plan and the bot was working perfectl...