ما الذي تحضره معك
- كود بوتك: ريبو على GitHub، أو مجلده، أو ملف zip.
- ملف المكتبات، مثل
requirements.txtأوpyproject.toml. - أسماء المتغيرات وقيمها، ومنها التوكن.
- ملفات البيانات التي كتبها بوتك، مثل
bot.sqliteأوdata.json.
وقّف النسخة القديمة أولًا
في تيليقرام، التوكن الواحد يشغّل بوتًا واحدًا فقط في الوقت نفسه، فتتلقى النسخة الثانية الخطأ 409 Conflict. وفي ديسكورد تتصل النسختان معًا وترد كل منهما، فيتكرر كل رد مرتين. لذلك وقّف بوتك في الاستضافة القديمة قبل أول نشر هنا، أو أنشئ له توكنًا جديدًا.
ما لا تحتاجه هنا
- الـ keep-alive: سيرفر ويب صغير مثل
keep_alive.pyمع Flask، تزوره خدمة مثل UptimeRobot. نبقي بوتك شغّالًا طوال الوقت دونه، ولا يصل إليه أحد من الخارج إلا إذا فعّلت عنوان الويب أو أحد المنفذين. - pm2 و nohup و screen: شغّل بوتك مباشرة، مثل
python main.py. ننفّذ له ريستارت بأنفسنا إذا تعطّل، ولا نرى التعطّل إلا عندما يتوقف بوتك نفسه. - الـ webhook في تيليقرام: يكفي الـ polling، مثل
app.run_polling()في python-telegram-bot كما في قالبنا. ولاستخدام الـ webhook، فعّل عنوان الويب كما في شرح «عنوان الويب والمنافذ لبوتك».
انقل المتغيرات
ضع كل قيمة من ملف .env أو من Secrets في Replit أو من متغيرات استضافتك القديمة في متغيرات بوتك بالاسم نفسه، وفعّل حساس على القيم السرية. والصق ملف .env كاملًا في خانة المتغيرات مرة واحدة إذا كان لديك. ويقرؤها كودك بـ os.environ أو os.getenv كما هي.
ما نقرؤه من كودك
نقرأ ملفات المكتبات و Procfile وملف إصدار بايثون، ولا نقرأ إعدادات استضافتك القديمة:
- Heroku و Railway: نشغّل سطر
worker:أوbot:منProcfile، ولا نقرأ سطرweb:. ونقرأ إصدار بايثون منruntime.txt. - Replit: لا نقرأ ملف
.replit. - Discloud: لا نقرأ
discloud.config، فإذا لم نجد ملفMAINالذي حدّدته فيه، فاكتبه في أمر التشغيل. - استضافة Pterodactyl: لا نقرأ أمر التشغيل من لوحتها، ولا حاجة إلى
git pullعند التشغيل، بل اربط GitHub وفعّل انشر مع كل push. - VPS: لا حاجة إلى systemd أو screen، فنحن نشغّل بوتك وننفّذ له ريستارت.
وإذا لم نجد طريقة لتشغيل بوتك، فاضبط أمر التشغيل من إعدادات بوتك، أو أضف ملف serverk.json في أعلى الكود:
{
"start": "python src/run.py"
}ويوضح شرح «كيف نثبّت مشروع بايثون ونشغّله» الملفات التي نبحث عنها بالترتيب.
انقل بياناتك
بعد أول نشر، ارفع ملفات بياناتك من تبويب الملفات إلى المسار الذي يقرؤه كودك. وأبقِها خارج الريبو وخارج كل رفع، لتبقى كما هي في النشرات التالية.
هل ساعدك هذا الشرح؟
ساهم في تحسين هذا الشرح
الشروحات مفتوحة المصدر، فإذا كان لديك تصحيح أو إضافة، افتح Pull Request على github.com/serverkgg/bot-python