این راهنما به شما کمک میکند تا برنامه ربات تلگرام را در Railway با موفقیت مستقر کنید و مشکلات رایج را برطرف کنید.
-
ساخت حساب Railway: اگر هنوز حساب ندارید، در Railway.app ثبتنام کنید.
-
ایجاد پروژه جدید: یک پروژه جدید در Railway ایجاد کنید و آن را به مخزن گیتهاب خود متصل کنید.
-
تنظیم متغیرهای محیطی: متغیرهای محیطی زیر را در تنظیمات پروژه Railway خود اضافه کنید:
TELEGRAM_BOT_TOKEN
: توکن ربات تلگرام خودDATABASE_URL
: URL دیتابیس PostgreSQL (به صورت خودکار توسط Railway تنظیم میشود)SESSION_SECRET
: یک رشته تصادفی برای رمزگذاری نشستهاCREATOR_TELEGRAM_ID
(اختیاری): شناسه تلگرام شما برای دریافت اطلاعیههای ربات
-
استقرار برنامه: پس از تنظیم متغیرهای محیطی، برنامه به صورت خودکار مستقر میشود.
اگر با خطای 409 Conflict مواجه شدید، به این معنی است که چندین نمونه از ربات به طور همزمان در حال اجرا هستند. برای رفع این مشکل:
- به بخش Shell پروژه Railway خود بروید.
- دستور زیر را اجرا کنید:
python fix_telegram_errors.py
- سپس برنامه را مجدداً راهاندازی کنید.
- به بخش Shell پروژه Railway خود بروید.
- دستور زیر را اجرا کنید:
python railway_webhook_setup.py
- این اسکریپت به طور خودکار webhook را حذف و مجدداً تنظیم میکند.
- با مرورگر خود به آدرس زیر بروید (توکن خود را جایگزین کنید):
https://api.telegram.org/bot<YOUR_TOKEN>/deleteWebhook?drop_pending_updates=true
- سپس به بخش Variables در Railway بروید.
- متغیر
TELEGRAM_BOT_TOKEN
را ویرایش کنید (بدون تغییر دادن مقدار) و ذخیره کنید تا برنامه مجدداً راهاندازی شود.
برای بررسی وضعیت فعلی webhook، میتوانید به آدرس زیر مراجعه کنید:
https://api.telegram.org/bot<YOUR_TOKEN>/getWebhookInfo
اگر webhook به درستی تنظیم شده باشد، باید آدرس دامنه Railway شما را در قسمت url
مشاهده کنید.
اگر با خطای distutils
یا سایر خطاهای مربوط به نصب پکیجها مواجه شدید:
- اطمینان حاصل کنید که فایل
pyproject.toml-railway
را بهpyproject.toml
تغییر نام دادهاید. - دستور زیر را در Shell اجرا کنید:
python fix-distutils.py
- سپس برنامه را مجدداً راهاندازی کنید.
پس از استقرار موفقیتآمیز، ربات خود را در تلگرام امتحان کنید:
- به ربات خود پیام
/start
بفرستید. - اگر ربات پاسخ داد، به این معنی است که همه چیز به درستی کار میکند.
- اگر پاسخی دریافت نکردید، لاگهای برنامه را در بخش 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 محدود کنید تا از اجرای چندین نمونه همزمان جلوگیری شود.
- از autoscaling استفاده نکنید.
- در تنظیمات Railway، گزینه Always On را فعال کنید تا ربات همیشه فعال باشد.
س: چرا ربات گاهی اوقات با تأخیر پاسخ میدهد؟
ج: Railway در برخی موارد برنامههای غیرفعال را به حالت خواب میبرد. برای جلوگیری از این مشکل، گزینه Always On را فعال کنید.
س: آیا میتوانم از long polling به جای webhook استفاده کنم؟
ج: بله، برای استفاده از long polling، به بخش Shell بروید و دستور python fix_webhook.py
را اجرا کنید، سپس متغیر محیطی BOT_MODE
را به polling
تغییر دهید.
س: چگونه میتوانم مطمئن شوم که فقط یک نمونه از ربات اجرا میشود؟
ج: از اسکریپت smart_launcher.py
استفاده کنید که به طور هوشمند از اجرای چندین نمونه جلوگیری میکند.