میزبانی ربات تلگرام پایتون با Webhook؛ بررسی زیرساخت با نمونه HTTP، توکن خصوصی، داده پایدار و دسترسی ناحیه. نمونه Python بات کامل یا ثبت خودکار Webhook نیست.
پیش از شروع
- حساب فعال و دسترسی ساخت پروژه در فضای کاری داشته باشید. از داده آزمایشی استفاده کنید.
- نام پروژه، ناحیه، منابع و هزینه را پیش از تأیید نهایی بررسی کنید. کلیدها و رمزها را فقط در تنظیمات خصوصی کنسول وارد کنید.
نمونه و فایلهای لازم
مشاهده فایلهای نمونه HTTP پایتون؛ فایلهای اصلی: app.py و requirements.txt. فرمان زیر کل مخزن را دریافت میکند؛ پوشه این آموزش python است.
git clone https://github.com/Paasta-Cloud/examples.git
cd examples/pythonاین نمونه از کتابخانه استاندارد Python استفاده میکند؛ requirements.txt عمداً خالی است.
app.py مقدار PORT را میخواند و روی 0.0.0.0 گوش میدهد. برای برنامه واقعی، نسخه Python را در .python-version مشخص کنید.
ساخت پروژه از کنسول
- در کنسول «ساخت اپلیکیشن» را باز کنید و منبع
Gitیا آپلود سورس را انتخاب کنید. - برای
Git، مخزنexamplesو شاخهmainرا انتخاب کنید و پوشه پروژه درMonorepoراpythonقرار دهید. برای آپلود، فقط محتوای همان پوشه را بفرستید؛node_modules،.venvو خروجی ساخت محلی لازم نیستند. - نتیجه بررسی سورس را بخوانید. اگر مخزن را برای پروژه خودتان
forkکردهاید، اتصالGitباید به همان مخزن دارای تغییرات اشاره کند. - در تنظیمات اجرا، پورت 8000 و مسیر سلامت
/healthرا بررسی کنید. فرمان اجرا و متغیرهای موردنیاز را با جدول زیر تطبیق دهید. - پلن، ناحیه، دیسک و هزینه منابع را مرور کنید و ساخت را تأیید کنید. مراحل ساخت و اجرا را در صفحه استقرار دنبال کنید.

فرمانها و تنظیمات نمونه
| تنظیم | مقدار |
|---|---|
| ساخت یا نصب | pip install -r requirements.txt |
| اجرا | python app.py |
| پورت داخلی | 8000 |
| مسیر سلامت | /health |
فرمان ساخت را برای شناخت مراحل میبینید؛ پاستا آن را از سورس تشخیص میدهد. override فرمان اجرا فقط وقتی لازم است که فرمان پروژه با نمونه فرق داشته باشد. پورت داخلی باید با پورت واقعی برنامه یکسان باشد؛ پورت رایانه محلی معیار نیست.
بررسی نتیجه
دامنه HTTPS پروژه را باز کنید. نتیجه مورد انتظار نمونه: Python is running on Paasta.
مسیر /health باید پاسخ موفق بدهد. در لاگ اجرا خطای تکرارشونده نباشد؛ بعد از آمادهشدن برنامه، یک درخواست واقعی و یک refresh را هم بررسی کنید.
curl -i https://YOUR_PROJECT.paasta.app/healthآدرس بالا نمونه است؛ دامنه واقعی را از صفحه پروژه کپی کنید، چون ممکن است دامنه ناحیه داشته باشد.
خطاهای رایج ربات تلگرام
ModuleNotFoundError
نام پکیج واردشده در سورس را به requirements.txt اضافه کنید؛ نصب روی رایانه شما آن را وارد تصویر نمیکند.
فرایند اجرا میشود اما آدرس باز نمیشود
از اجرای اسکریپت وب مطمئن شوید؛ اسکریپتی که فقط محاسبه میکند و خارج میشود سرویس وب نیست.
انتشار نسخه بعدی و داده ماندگار
برای نسخه بعدی از همان پروژه استفاده کنید. فایل موقت داخل برنامه ماندگار نیست؛ داده مهم را در دیتابیس یا دیسک پایدار نگه دارید و قبل از تغییر ساختار داده بکاپ بگیرید. Rollback نسخه برنامه، migration یا داده دیتابیس را خودکار به عقب برنمیگرداند.
راهنماهای مرتبط
- تنظیمات اجرا و متغیرها
- نسخهها و بازگشت
- اتصال دیتابیس
- دیسک پایدار
- بکاپ و بازیابی
- بررسی خطای استقرار
- معرفی ربات تلگرام
اتصال ربات تلگرام به Webhook
نمونه Python بالا فقط Build، HTTP و مسیر سلامت را بررسی میکند؛ منطق بات، ثبت Webhook و اعتبارسنجی پیام بخشی از کد شما هستند. این مسیر برای برنامه وب با Webhook است؛ سازگاری polling و Worker بدون endpoint وب باید جدا بررسی شود.
- با حساب خودتان در
BotFatherیک بات آزمایشی بسازید. توکن را فقط در تنظیمات خصوصیRuntimeنگه دارید؛ آن را درGit، تصویر یاlogنگذارید. endpointدریافت پیام را در برنامه بسازید و مسیر سلامت را از پردازش پیام جدا نگه دارید. برنامه باید روی 0.0.0.0 و پورت پروژه گوش بدهد.- قبل از انتخاب ناحیه عملیاتی، اتصال همان سرویس به
Bot APIو دریافت درخواست روی دامنهHTTPSرا بررسی کنید. این راهنما دسترسی تضمینیTelegramاز همه ناحیهها را وعده نمیدهد. Webhookرا از مسیر رسمیTelegramباURLنهایی وsecret_tokenتنظیم کنید وheaderمربوط را درbackendاعتبارسنجی کنید. دریافت یکPOSTبهتنهایی هویت فرستنده را ثابت نمیکند.- وضعیت را با
getWebhookInfoبررسی و یک پیام بیخطر ارسال کنید. برای یک باتWebhookوpollingرا همزمان فعال فرض نکنید. - با
update_idو وضعیت ثبتشده از اجرای تکراری عمل حساس جلوگیری کنید. داده مهم را در دیتابیس یا دیسک پایدار نگه دارید و پس ازRestartو انتشار دوباره نتیجه را بسنجید.
Webhook پیام دریافت نمیکند
URL، HTTPS، وضعیت getWebhookInfo، پاسخ endpoint و دسترسی شبکه ناحیه را بررسی کنید. توکن یا payload حساس را برای عیبیابی در log عمومی چاپ نکنید.
پیام دوباره پردازش میشود
تحویل دوباره پیام ممکن است رخ دهد؛ پذیرش درخواست و ثبت نتیجه باید با شناسه update و منطق برنامه هماهنگ باشند. افزایش Replica بهتنهایی پردازش دقیقاً یکبار ایجاد نمیکند.
قرارداد اتصال را از مستند رسمی setWebhook و getWebhookInfo بررسی کنید. هزینه میزبانی از APIهای بیرونی جداست و یک بات معمولی الزاماً به مدل هوش مصنوعی نیاز ندارد.