ساخت بات تلگرام بدون سرور

زمان لازم برای خواندن: حدود ۱۵ دقیقه
ساخت بات تلگرام بدون سرور

بیشتر آموزش‌های ساخت بات تلگرام با این فرض شروع می‌شوند که باید یک VPS یا هاست در اختیار داشته باشید تا برنامه همیشه در حال اجرا باشد. این روش هنوز هم کاربرد دارد، اما برای بسیاری از پروژه‌ها تنها گزینه موجود نیست. اگر بات شما قرار نیست هزاران درخواست هم‌زمان را پردازش کند یا وابستگی خاصی به زیرساخت اختصاصی ندارد، استفاده از یک پلتفرم Serverless می‌تواند راهکار ساده‌تر و کم‌هزینه‌تری باشد. در این مدل، به جای مدیریت سرور، تنها کد خود را منتشر می‌کنید و زیرساخت اجرا را به ارائه‌دهنده سرویس می‌سپارید.

سرویس Workers کلودفلر یکی از همین گزینه‌هاست که امکان اجرای کد را بدون مدیریت سرور فراهم می‌کند. اگر این سرویس را با Workers AI ترکیب کنید، می‌توانید بدون راه‌اندازی زیرساخت اختصاصی، یک بات تلگرام مبتنی بر هوش مصنوعی بسازید. در این آموزش، یک بات تلگرام که با جاوا اسکریپت نوشته شده است روی Workers کلودفلر مستقر می‌شود. این بات پیام کاربران را دریافت کرده، آن‌ها را برای مدل‌های هوش مصنوعی کلودفلر ارسال می‌کند و پاسخ تولیدشده دوباره از طریق API تلگرام به کاربر نمایش داده خواهد شد.

در پایان این آموزش، بدون نیاز به خرید سرور یا مدیریت زیرساخت، یک بات تلگرام مبتنی بر هوش مصنوعی خواهید داشت که کاملاً روی بستر کلودفلر اجرا می‌شود.

فهرست مطالب

معماری پروژه

قبل از شروع مراحل نصب، بهتر است بدانیم درخواست‌ها چگونه بین سرویس‌ها جابه‌جا می‌شوند.

در این ساختار، هیچ برنامه‌ای روی VPS یا سرور شخصی اجرا نمی‌شود و تمام پردازش‌ها توسط زیرساخت کلودفلر انجام می‌شود.

پیش‌نیازها

قبل از شروع، بهتر است ابزارها و حساب‌های زیر را آماده داشته باشید.

۱) حساب کلودفلر: برای استفاده از سرویس Workers و Workers AI به یک حساب کلودفلر نیاز دارید. اگر هنوز حسابی ایجاد نکرده‌اید، می‌توانید از پلن رایگان استفاده کنید که برای این آموزش کافی است.

۲) توکن بات تلگرام: بات تلگرام از طریق BotFather@ ساخته می‌شود و پس از ایجاد، یک توکن در اختیار شما قرار می‌گیرد که برای فراخوانی API بات تلگرام مورد استفاده قرار می‌گیرد.

۳) Node.js: نمونه پروژه این آموزش با جاوا اسکریپت توسعه داده شده و برای نصب وابستگی‌ها به Node.js و npm نیاز خواهید داشت. برای اطمینان از نصب صحیح، می‌توانید دستورات زیر را اجرا کنید:

node -v
npm -v

در صورت مشاهده شماره نسخه، محیط توسعه شما آماده است.

معرفی Workers کلودفلر

سرویس Workers کلودفلر یک پلتفرم Serverless برای اجرای کد در Edge Network کلودفلر است. برخلاف روش‌های سنتی، در این سرویس خبری از نصب سیستم عامل، مدیریت وب‌سرور یا پیکربندی ماشین مجازی نیست. تنها کافیست کد خود را دیپلوی کنید تا کلودفلر آن را در شبکه جهانی خود اجرا کند.

مزیت اصلی وُرکرز، اجرای برنامه در نزدیک‌ترین موقعیت جغرافیایی به کاربر است که باعث کاهش زمان پاسخ‌گویی می‌شود. در زمان نگارش این نوشته، توسعه برنامه با زبان‌های زیر به‌صورت مستقیم امکان‌پذیر است:

  • جاوا اسکریپت
  • تایپ اسکریپت
  • پایتون
  • راست

همچنین به دلیل پشتیبانی از وب‌اسمبلی (WASM)، می‌توان زبان‌های دیگری مانند Go و C و C++ و کاتلین را نیز پس از کامپایل اجرا کرد. این ویژگی باعث شده Workers تنها برای ساخت API مناسب نباشد و بتوان از آن برای توسعه وب‌هوک‌ها، سرویس‌های REST، پردازش درخواست‌ها و حتی اجرای برخی بارهای کاری هوش مصنوعی نیز استفاده کرد.

معرفی Workers AI کلودفلر

علاوه بر خود ورکرز، سرویس دیگری به نام Workers AI نیز توسط کلودفلر ارائه می‌شود که در واقع سرویس اجرای مدل‌های هوش مصنوعی این شرکت است. این سرویس روی همان زیرساخت Workers اجرا می‌شود. به جای نصب مدل یا مدیریت GPU، تنها کافی است درخواست خود را به API این سرویس ارسال کنید.

در زمان نگارش این نوشته، کلودفلر از ده‌ها مدل متن‌باز پشتیبانی می‌کند؛ از جمله:

  • Llama
  • DeepSeek
  • Gemma
  • Whisper
  • Stable Diffusion

بنابراین می‌توان بدون راه‌اندازی زیرساخت اختصاصی، قابلیت‌هایی مانند تولید متن، ترجمه، خلاصه‌سازی، تبدیل گفتار به متن و تولید تصویر را در پروژه‌های مختلف پیاده‌سازی کرد. در این آموزش از همین قابلیت برای پاسخ‌گویی بات تلگرام استفاده می‌کنیم.

مرحله ۱) ساخت بات تلگرام

اولین قدم، ایجاد یک بات جدید در تلگرام است. برای این کار، BotFather@ را در تلگرام جستجو کرده و گفتگو را آغاز کنید. با پاسخ دادن به سوالات بات‌فادر (مانند نام و آیدی بات)، یک بات جدید برای خود بسازید. پس از تکمیل این مراحل، یک توکن در اختیار شما قرار می‌گیرد. این توکن برای ارتباط برنامه با API رسمی تلگرام مورد استفاده قرار می‌گیرد.

تذکر امنیتی: هر شخصی که به این توکن دسترسی داشته باشد، می‌تواند از طریق API به بات شما متصل شود! بنابراین آن را در مخازن عمومی گیت‌هاب یا فایل‌های قابل انتشار قرار ندهید.

مرحله ۲) آماده‌سازی فایل‌های پروژه

در مرحله دوم از ساخت بات تلگرام، پروژه را روی سیستم خود آماده کرده، تنظیمات موردنیاز را انجام می‌دهیم و در نهایت آن را روی Workers کلودفلر دیپلوی می‌کنیم.

همانطور که پیشتر توضیح داده شد،‌ زبان‌های مختلفی توسط سرویس ورکرز پشتیبانی می‌شوند که در اینجا یک بات آزمایشی با زبان جاوا اسکریپت برای شما آماده شده است. این بات، پس از استقرار، پیام متنی از شما دریافت می‌کند و پس از پردازش توسط مدل هوش مصنوعی انتخابی، پاسخ AI را برای شما ارسال می‌کند.

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

git clone https://github.com/reza-qalekhani/cf-telegram-bot.git

وارد پوشه پروژه شوید و پیش‌نیازهای مرحله (۳) را نصب کنید:

cd cf-telegram-bot
npm install

اگر هنگام اجرای دستور بالا با خطای npm: command not found مواجه شد، به این معنی است که Node.js روی سیستم شما نصب نیست یا متغیرهای محیطی آن به درستی تنظیم نشده‌اند. در این صورت ابتدا Node.js را نصب کرده و سپس دوباره دستور را اجرا کنید.

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

npx wrangler login

در این مرحله پنجره مرورگر پیش‌فرض شما باز می‌شود که پس از لاگین به حساب کلودفلر خود،‌ باید به wrangler مجوز دسترسی به حساب بدهید. بعد از تأیید دسترسی، دوباره به ترمینال بازگردید. در صورت موفقیت‌آمیز بودن فرآیند، wrangler آماده استفاده خواهد بود.

توضیح: مدل AI مدنظر خود را می‌توانید در خط اول فایل src\index.js مشخص کنید. کافیست شناسه مدل مدنظر را از فهرست مدل‌های Workers AI کپی کرده و در متغیر MODEL تعریف کنید. دقت داشته باشید که فهرست مدل‌های قابل استفاده ممکن است در طول زمان تغییر کند. برای مشاهده آخرین مدل‌های پشتیبانی‌شده، به مستندات رسمی کلودفلر مراجعه کنید.

مرحله ۳) دیپلوی بات روی کلودفلر

پس از ورود موفقیت‌آمیز به حساب کاربری خود، wrangler آماده دیپلوی پروژه شماست. اما باید اطلاعات حساس مانند توکن بات را به صورت محرمانه برای کلودفلر ارسال کنیم. این کار با استفاده از secretها انجام می‌شود. پس از اجرای هر دستور، wrangler مقدار آن را از شما دریافت کرده و به صورت رمزنگاری‌شده در پروژه و حساب کاربری کلودفلر شما ذخیره می‌کند.

ابتدا دستور زیر را وارد کنید:

npx wrangler secret put TELEGRAM_BOT_TOKEN

در جواب، توکن بات که در مرحله (۱) ساختید را به wrangler بدهید. سپس دستور زیر را وارد کنید:

npx wrangler secret put TELEGRAM_WEBHOOK_SECRET

این مقدار می‌تواند بین ۱ تا ۲۵۶ کاراکتر و فقط شامل حروف بزرگ و کوچک انگلیسی، اعداد، – و _ باشد.

پس از تنظیم secretهای پروژه، دستور زیر را اجرا کنید تا فایل‌های پروژه بر روی کلودفلر بارگذاری شوند:

npm run deploy

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

https://<WORKER_NAME>.<SUBDOMAIN>.workers.dev

مرحله ۴) تنظیم وب‌هوک بات تلگرام

تلگرام برای ارسال پیام‌های کاربران به بات، از مکانیسمی به نام وب‌هوک استفاده می‌کند. به جای اینکه برنامه دائماً وضعیت پیام‌های جدید را بررسی کند، تلگرام هر پیام را مستقیماً به آدرس ورکر شما ارسال می‌کند. برای تنظیم وب‌هوک، دستور زیر را اجرا کنید:

curl -X POST "https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/setWebhook" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://<YOUR_WORKER_ADDRESS>","secret_token":"<TELEGRAM_WEBHOOK_SECRET>","allowed_updates":["message"]}'

دقت کنید که قبل از اجرای دستور، مقادیر زیر باید با مقادیر پروژه خودتان جایگزین شود:

  • توکن بات شما: <TELEGRAM_BOT_TOKEN>
  • توکن امنیتی وب‌هوک: <TELEGRAM_WEBHOOK_SECRET>
  • آدرس ورکر شما: <YOUR_WORKER_ADDRESS>

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

{"ok":true,"result":true,"description":"Webhook was set"}

برای اطمینان از ثبت صحیح وب‌هوک می‌توانید اطلاعات آن را دریافت کنید. به سادگی می‌توانید آدرس زیر را در مرورگر خود وارد کنید:

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

در صفحه نمایش داده شده، آدرس وب‌هوک و وضعیت اتصال نمایش داده می‌شود. در صورتی که مقدار pending_update_count برابر صفر باشد و خطایی نیز گزارش نشود، ارتباط بین تلگرام و ورکر شما به درستی برقرار شده است و شما با موفقیت مراحل ساخت بات تلگرام را به پایان رسانده‌اید.

مرحله ۵) اولین تست بات

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

  • تلگرام پیام را دریافت می‌کند.
  • پیام به ورکر ارسال می‌شود.
  • ورکر درخواست را به مدل AI منتقل می‌کند.
  • پاسخ مدل دریافت می‌شود.
  • پاسخ از طریق API تلگرام به کاربر نمایش داده می‌شود.

در صورتی که پاسخی دریافت نکردید، ابتدا خروجی دستور getWebhookInfo را بررسی کنید و سپس لاگ‌های ورکر را مشاهده کنید تا علت خطا مشخص شود.

بهبود امنیت پروژه

تا این مرحله از ساخت بات تلگرام، پروژه را روی سرویس Workers کلودفلر مستقر کرده‌اید و ارتباط آن با تلگرام از طریق وب‌هوک برقرار شده است. اگر هدف شما صرفاً یادگیری یا آزمایش این معماری باشد، همین مراحل کافی است؛ اما اگر قرار است بات را در یک محیط واقعی اجرا کنید، رعایت چند نکته اهمیت زیادی دارد.

۱) اطلاعات حساس را داخل کد قرار ندهید: توکن بات تلگرام، توکن API کلودفلر و سایر اطلاعات محرمانه نباید مستقیماً در فایل‌های پروژه یا مخزن Git ذخیره شوند. در این آموزش از secretهای wrangler برای مدیریت اطلاعات حساس استفاده شد که روش مناسب‌تری نسبت به تعریف آن‌ها در فایل‌های پروژه است. اگر پروژه را روی گیت‌هاب منتشر می‌کنید، قبل از Push کردن مخزن، فایل‌ها و تاریخچه کامیت‌ها را بررسی کنید تا هیچ توکن یا Secret به اشتباه منتشر نشده باشد.

۲) برای مدیریت خطا برنامه‌ریزی کنید: در یک پروژه واقعی، همیشه این احتمال وجود دارد که سرویس‌های خارجی با خطا مواجه شوند. برای مثال ممکن است درخواست به Workers AI با خطا مواجه شود یا API تلگرام موقتاً در دسترس نباشد. همچنین از آنجایی که با API کار می‌کنیم، محدودیت نرخ درخواست (Rate Limit) و یا طولانی شدن زمان اجرای درخواست، از مشکلات رایج هستند. بنابراین بهتر است این وضعیت‌ها را در کد مدیریت کرده و در صورت امکان، پاسخ مناسبی به کاربر نمایش دهید.

خطاهای متداول

۱) وب‌هوک ثبت نمی‌شود: اگر دستور setWebhook با خطا مواجه شد، موارد زیر را بررسی کنید:

  • صحیح بودن توکن بات
  • معتبر بودن آدرس ورکر
  • پایان یافتن موفق فرآیند دیپلوی
  • استفاده از آدرس HTTPS

برای بررسی وضعیت وب‌هوک، می‌توانید از دستور getWebhookInfo که در مرحله (۴) معرفی شد استفاده کنید.

۲) ورکر اجرا می‌شود اما بات پاسخی نمی‌دهد: در چنین شرایطی، معمولاً یکی از موارد زیر علت مشکل است:

  • مقدار یکی از Secretها اشتباه است.
  • درخواست به Workers AI با خطا مواجه شده است.
  • خطایی در کد جاوا اسکریپت رخ داده است.
  • پاسخ مناسب به API تلگرام ارسال نمی‌شود.

بهترین راه برای یافتن علت، بررسی لاگ‌های ورکر است.

۳) کلودفلر خطای احراز هویت می‌دهد: اگر هنگام دیپلوی با خطاهای مربوط به احراز هویت (Authentication) مواجه شدید، ابتدا بررسی کنید:

  • ورود به حساب کلودفلر با wrangler login با موفقیت انجام شده باشد.
  • اتصال شبکه شما پایدار باشد.

پرسش‌های متداول

  1. آیا برای اجرای این پروژه به VPS نیاز دارم؟

    خیر. در این آموزش، کد برنامه روی سرویس Workers کلودفلر اجرا می‌شود و نیازی به سرور مجازی یا اختصاصی برای ساخت بات تلگرام نیست.

  2. آیا استفاده از Workers کلودفلر رایگان است؟

    کلودفلر پلن رایگانی برای Workers ارائه می‌دهد، اما محدودیت‌ها و شرایط استفاده ممکن است در طول زمان تغییر کنند. برای اطلاع از آخرین جزئیات، مستندات رسمی کلودفلر را بررسی کنید.

  3. آیا می‌توان از زبان‌های دیگری غیر از جاوا اسکریپت استفاده کرد؟

    بله. کلودفلر از چند زبان به‌صورت مستقیم پشتیبانی می‌کند و از طریق وب‌اسمبلی نیز امکان اجرای برخی زبان‌های دیگر وجود دارد. جزئیات این موضوع را در مستندات رسمی کلودفلر می‌توانید مشاهده کنید.

  4. آیا می‌توان مدل هوش مصنوعی دیگری استفاده کرد؟

    در صورتی که مدل موردنظر توسط Workers AI پشتیبانی شود، بله. فهرست مدل‌های در دسترس ممکن است در طول زمان تغییر کند.

  5. اگر توکن بات تلگرام لو برود چه باید کرد؟

    در این شرایط، بهتر است از طریق BotFather توکن قبلی را باطل کرده و یک توکن جدید ایجاد کنید. سپس مقدار جدید را در Secretهای پروژه جایگزین کنید.

  6. آیا می‌توان این پروژه را به یک بات چندمنظوره تبدیل کرد؟

    بله. ساختار پروژه قابلیت توسعه دارد و می‌توانید امکاناتی مانند دستورات سفارشی، اتصال به پایگاه داده یا سرویس‌های دیگر را به آن اضافه کنید.

در این آموزش، مراحل ساخت بات تلگرام روی سرویس Workers کلودفلر را مرور کردیم. ابتدا با مفهوم ورکر و Workers AI آشنا شدیم، سپس یک بات تلگرام ایجاد کردیم، پروژه را با استفاده از wrangler روی کلودفلر مستقر کردیم و در نهایت ارتباط آن را از طریق وب‌هوک با تلگرام برقرار کردیم.

این معماری برای بسیاری از پروژه‌های کوچک و متوسط، روشی ساده برای اجرای یک بات تلگرام بدون مدیریت سرور فراهم می‌کند. همچنین در صورت نیاز، می‌توانید امکانات بیشتری مانند پایگاه داده، احراز هویت، حافظه گفتگو یا سرویس‌های دیگر کلودفلر را نیز به پروژه اضافه کنید.


چند مثال از نمونه بات‌های مبتنی بر کلودفلر

این بات‌ها به عنوان نمونه کد جهت آشنایی با معماری و پیاده‌سازی ویژگی‌های قابل استفاده، در اینجا معرفی شده‌اند. صحت عملکرد و یا امنیت کدهای آنها توسط نویسنده این نوشته، بررسی نشده است.

  • Telegram ID-Finder Bot: این ربات به کاربران کمک می‌کند آیدی عددی خودشان، کاربران دیگر، یا کانال/گروه‌ها را پیدا کنند. همچنین شامل پنل مدیریت کامل، سیستم عضویت اجباری، سیستم تبلیغات و ارسال همگانی، و ۱۵ زبان از پیش تعبیه‌شده است.
  • Telegram Multi-Tool Bot: با این ربات یک پیام را یک‌بار می‌سازید — همراه با دکمه‌های شیشه‌ای رنگی اختیاری — و بدون برچسب «فوروارد شده از»، آن را به هر کانال یا گروهی که ربات در آن ادمین است، فوری یا زمان‌بندی‌شده ارسال می‌کنید. این پروژه شامل مقصدهای ذخیره‌شده، اشتراک‌گذاری اینلاین، پیدا کردن آیدی عددی، و یک پنل مدیریت کامل است.
  • NetraUploader Bot: یک ربات تلگرام که فایل‌ها را در یک کانال خصوصی تلگرام (متعلق به خودتان) ذخیره می‌کند و برای هر فایل یک لینک/کد دانلود اختصاصی می‌دهد. از ۱۰ زبان رابط کاربری، پنل مدیریت، عضویت اجباری اختیاری و حذف خودکار فایل ارسالی پشتیبانی می‌کند.

آخرین به‌روزرسانی: ۰۷ آبان ۱۴۰۵ | برچسب‌ها: - - -

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

مشاوره رایگان

علاقمند به یادگیری طراحی سایت یا دنبال مشاوره در این زمینه هستی؟