ما الذي تحضره معك
- كود بوتك: ريبو على GitHub، أو مجلده، أو ملف zip.
package.jsonومعه ملف القفل، مثلpackage-lock.json.- أسماء المتغيرات وقيمها، ومنها التوكن.
- ملفات البيانات التي كتبها بوتك، مثل
bot.sqliteأوdata.json.
وقّف النسخة القديمة أولًا
في تيليقرام، التوكن الواحد يشغّل بوتًا واحدًا فقط في الوقت نفسه، فتتلقى النسخة الثانية الخطأ 409 Conflict. وفي ديسكورد تتصل النسختان معًا وترد كل منهما، فيتكرر كل رد مرتين. لذلك وقّف بوتك في الاستضافة القديمة قبل أول نشر هنا، أو أنشئ له توكنًا جديدًا.
ما لا تحتاجه هنا
- الـ keep-alive: سيرفر ويب صغير مثل
keep_alive.jsأو مسار في Express، تزوره خدمة مثل UptimeRobot. نبقي بوتك شغّالًا طوال الوقت دونه، ولا يصل إليه أحد من الخارج إلا إذا فعّلت عنوان الويب أو أحد المنفذين. - pm2 و nodemon و forever: شغّل بوتك مباشرة، مثل
node index.js. ننفّذ له ريستارت بأنفسنا إذا تعطّل، ولا نرى التعطّل إلا عندما يتوقف بوتك نفسه. - الـ webhook في تيليقرام: يكفي الـ polling، مثل
bot.start()في grammY كما في قالبنا. ولاستخدام الـ webhook، فعّل عنوان الويب كما في شرح «عنوان الويب والمنافذ لبوتك».
انقل المتغيرات
ضع كل قيمة من ملف .env أو من Secrets في Replit أو من متغيرات استضافتك القديمة في متغيرات بوتك بالاسم نفسه، وفعّل حساس على القيم السرية. والصق ملف .env كاملًا في خانة المتغيرات مرة واحدة إذا كان لديك.
إذا كان أمر start يستخدم node --env-file=.env، فاحذف هذا الخيار، لأن ملف .env لا يصل مع الكود.
ما نقرؤه من كودك
نقرأ package.json وملف القفل و Procfile، ولا نقرأ إعدادات استضافتك القديمة:
- Heroku و Railway: نشغّل سطر
worker:أوbot:منProcfile، ولا نقرأ سطرweb:. - Replit: لا نقرأ ملف
.replit. - Discloud: لا نقرأ
discloud.config، فإذا لم نجد ملفMAINالذي حدّدته فيه، فضعه في أمرstart. - استضافة Pterodactyl: لا نقرأ أمر التشغيل من لوحتها، ولا حاجة إلى
git pullعند التشغيل، بل اربط GitHub وفعّل انشر مع كل push. - VPS: لا حاجة إلى systemd أو screen، فنحن نشغّل بوتك وننفّذ له ريستارت.
وإذا لم نجد طريقة لتشغيل بوتك، فأضف start إلى package.json، أو ملف serverk.json في أعلى الكود:
{
"start": "node src/main.js"
}ويوضح شرح «كيف نثبّت مشروع Node ونشغّله» الملفات التي نبحث عنها بالترتيب.
انقل بياناتك
بعد أول نشر، ارفع ملفات بياناتك من تبويب الملفات إلى المسار الذي يقرؤه كودك. وأبقِها خارج الريبو وخارج كل رفع، لتبقى كما هي في النشرات التالية.
هل ساعدك هذا الشرح؟
ساهم في تحسين هذا الشرح
الشروحات مفتوحة المصدر، فإذا كان لديك تصحيح أو إضافة، افتح Pull Request على github.com/serverkgg/bot-node