Skip to content

Latest commit

 

History

History
112 lines (78 loc) · 6.14 KB

RAILWAY_DEPLOYMENT.md

File metadata and controls

112 lines (78 loc) · 6.14 KB

راهنمای استقرار در Railway

این راهنما به شما کمک می‌کند تا برنامه ربات تلگرام را در Railway با موفقیت مستقر کنید و مشکلات رایج را برطرف کنید.

نصب و راه‌اندازی در Railway

  1. ساخت حساب Railway: اگر هنوز حساب ندارید، در Railway.app ثبت‌نام کنید.

  2. ایجاد پروژه جدید: یک پروژه جدید در Railway ایجاد کنید و آن را به مخزن گیت‌هاب خود متصل کنید.

  3. تنظیم متغیرهای محیطی: متغیرهای محیطی زیر را در تنظیمات پروژه Railway خود اضافه کنید:

    • TELEGRAM_BOT_TOKEN: توکن ربات تلگرام خود
    • DATABASE_URL: URL دیتابیس PostgreSQL (به صورت خودکار توسط Railway تنظیم می‌شود)
    • SESSION_SECRET: یک رشته تصادفی برای رمزگذاری نشست‌ها
    • CREATOR_TELEGRAM_ID (اختیاری): شناسه تلگرام شما برای دریافت اطلاعیه‌های ربات
  4. استقرار برنامه: پس از تنظیم متغیرهای محیطی، برنامه به صورت خودکار مستقر می‌شود.

رفع خطای 409 (Conflict) تلگرام

اگر با خطای 409 Conflict مواجه شدید، به این معنی است که چندین نمونه از ربات به طور همزمان در حال اجرا هستند. برای رفع این مشکل:

روش 1: استفاده از اسکریپت رفع خطا

  1. به بخش Shell پروژه Railway خود بروید.
  2. دستور زیر را اجرا کنید:
    python fix_telegram_errors.py
    
  3. سپس برنامه را مجدداً راه‌اندازی کنید.

روش 2: تنظیم مجدد Webhook

  1. به بخش Shell پروژه Railway خود بروید.
  2. دستور زیر را اجرا کنید:
    python railway_webhook_setup.py
    
  3. این اسکریپت به طور خودکار webhook را حذف و مجدداً تنظیم می‌کند.

روش 3: حذف دستی Webhook

  1. با مرورگر خود به آدرس زیر بروید (توکن خود را جایگزین کنید):
    https://api.telegram.org/bot<YOUR_TOKEN>/deleteWebhook?drop_pending_updates=true
    
  2. سپس به بخش Variables در Railway بروید.
  3. متغیر TELEGRAM_BOT_TOKEN را ویرایش کنید (بدون تغییر دادن مقدار) و ذخیره کنید تا برنامه مجدداً راه‌اندازی شود.

بررسی وضعیت Webhook

برای بررسی وضعیت فعلی webhook، می‌توانید به آدرس زیر مراجعه کنید:

https://api.telegram.org/bot<YOUR_TOKEN>/getWebhookInfo

اگر webhook به درستی تنظیم شده باشد، باید آدرس دامنه Railway شما را در قسمت url مشاهده کنید.

رفع مشکلات نصب پکیج‌ها

اگر با خطای distutils یا سایر خطاهای مربوط به نصب پکیج‌ها مواجه شدید:

  1. اطمینان حاصل کنید که فایل pyproject.toml-railway را به pyproject.toml تغییر نام داده‌اید.
  2. دستور زیر را در Shell اجرا کنید:
    python fix-distutils.py
    
  3. سپس برنامه را مجدداً راه‌اندازی کنید.

تست عملکرد صحیح ربات

پس از استقرار موفقیت‌آمیز، ربات خود را در تلگرام امتحان کنید:

  1. به ربات خود پیام /start بفرستید.
  2. اگر ربات پاسخ داد، به این معنی است که همه چیز به درستی کار می‌کند.
  3. اگر پاسخی دریافت نکردید، لاگ‌های برنامه را در بخش Logs Railway بررسی کنید.

راهنمای عیب‌یابی اضافی

ربات پاسخ نمی‌دهد

  • ابتدا مطمئن شوید که برنامه در حال اجراست (وضعیت Live در Railway).
  • لاگ‌ها را برای خطاهای احتمالی بررسی کنید.
  • از بخش Shell دستور python check_bot_status.py را اجرا کنید تا وضعیت ربات را بررسی کنید.

خطاهای دیتابیس

  • مطمئن شوید که سرویس PostgreSQL در Railway فعال و متصل است.
  • از بخش Shell دستور psql $DATABASE_URL -c "SELECT 1" را اجرا کنید تا اتصال دیتابیس را بررسی کنید.

اشکال‌زدایی پیشرفته

برای بررسی دقیق‌تر مشکلات، می‌توانید لاگ‌ها را با دستور زیر مشاهده کنید:

tail -f /tmp/telegram_bot.log

بهینه‌سازی عملکرد

برای بهینه‌سازی عملکرد ربات در Railway:

  1. تعداد نمونه‌ها را به 1 محدود کنید تا از اجرای چندین نمونه همزمان جلوگیری شود.
  2. از autoscaling استفاده نکنید.
  3. در تنظیمات Railway، گزینه Always On را فعال کنید تا ربات همیشه فعال باشد.

سؤالات متداول

س: چرا ربات گاهی اوقات با تأخیر پاسخ می‌دهد؟
ج: Railway در برخی موارد برنامه‌های غیرفعال را به حالت خواب می‌برد. برای جلوگیری از این مشکل، گزینه Always On را فعال کنید.

س: آیا می‌توانم از long polling به جای webhook استفاده کنم؟
ج: بله، برای استفاده از long polling، به بخش Shell بروید و دستور python fix_webhook.py را اجرا کنید، سپس متغیر محیطی BOT_MODE را به polling تغییر دهید.

س: چگونه می‌توانم مطمئن شوم که فقط یک نمونه از ربات اجرا می‌شود؟
ج: از اسکریپت smart_launcher.py استفاده کنید که به طور هوشمند از اجرای چندین نمونه جلوگیری می‌کند.