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

۱. انتخاب مدل ارتباطی: وب‌هوک در برابر Long Polling

تلگرام دو روش اصلی برای دریافت پیام‌ها و رویدادها در اختیار برنامه‌نویسان قرار می‌دهد:

  • روش Long Polling: سرور شما به صورت مداوم متد getUpdates تلگرام را فراخوانی می‌کند. این روش برای تست‌های محلی مناسب است اما تاخیر بالا ایجاد کرده و منابع پردازشی سرور را هدر می‌دهد.
  • روش وب‌هوک (Webhooks): سرورهای تلگرام به محض وقوع هر رویداد یک درخواست HTTP POST به آدرس امن HTTPS شما ارسال می‌کنند. این ساختار بر روی زیرساخت‌های سرورلس مانند Cloudflare Workers تا بی‌نهایت مقیاس‌پذیر است.
نکته مهم: در محیط پروداکشن همواره از وب‌هوک استفاده کنید و مطمئن شوید سرور شما در کمتر از ۱۵۰۰ میلی‌ثانیه کد وضعیت HTTP 200 ارسال می‌کند تا تلگرام اقدام به ارسال مجدد درخواست ننماید.

۲. پیاده‌سازی اندپوینت وب‌هوک سرورلس

در ادامه یک نمونه کُد استاندارد با جاوااسکریپت مدرن برای دریافت وب‌هوک و پاسخ سریع آورده شده است:

export async function onRequestPost({ request, env }) {
  const payload = await request.json();
  const { message, callback_query } = payload;

  if (message && message.text === '/start') {
    await fetch(`https://api.telegram.org/bot${env.BOT_TOKEN}/sendMessage`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        chat_id: message.chat.id,
        text: 'به زنتری خوش آمدید! چگونه می‌توانیم به شما کمک کنیم؟',
        parse_mode: 'HTML'
      })
    });
  }

  return new Response('OK', { status: 200 });
}

۳. مدیریت محدودیت نرخ ارسال (Rate Limiting)

تلگرام ارسال پیام‌ها را به حداکثر ۳۰ پیام در ثانیه به صورت کلی و ۱ پیام در ثانیه در هر گروه محدود می‌کند. برای مدیریت ترافیک‌های سنگین:

  1. از صف‌های پیام (Message Queues) مانند Redis یا Cloudflare Queues برای بافر کردن ارسال‌ها استفاده کنید.
  2. خطاهای وضعیت 429 Too Many Requests را مانیتور کرده و پارامتر retry_after را رعایت نمایید.
  3. برای ارسال‌های انبوه کانالی از متد sendChatAction با فاصله زمانی مناسب استفاده کنید.

آماده راه‌اندازی ربات اختصاصی خود هستید؟

تیم مهندسی زنتری پیشرفته‌ترین بات‌ها و مینی‌اپ‌های تلگرامی را برای شما توسعه می‌دهد.