رجوع
مركز المعرفة

انقل بوتك من استضافة أخرى

من Replit و Discloud و Railway و Heroku واستضافات Pterodactyl و VPS، ما تحضره معك وما يتغيّر هنا.

آخر تحديث 2026-10-13
ابدأ من هنا
النشر

ما الذي تحضره معك

  • كود بوتك: ريبو على 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