رفتن به محتوای اصلی

بات‌ها

میزبانی بات‌های تلگرام روی TelegramOS: ثبت، فلوهای بصری، وب‌هوک‌ها، broadcastها و محدودیت‌های نرخ به زبان ساده.

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

ثبت بات

  1. بات خود را در تلگرام با گفتگو با @BotFather بسازید. یک توکن API دریافت می‌کنید.
  2. در پلتفرم، به بات‌ها > ثبت بات جدید بروید.
  3. نام کاربری بات، توکن API دریافتی از BotFather و در صورت تمایل یک نام نمایشی را وارد کنید.
  4. پلتفرم توکن را با Telegram Bot API بررسی می‌کند و در صورت موفقیت، بات را در فضای کاری شما ثبت می‌کند.
فیلدالزامیتوضیح
نام کاربریبله‎⁦@username⁩ بات در تلگرام
توکن APIبلهتوکنی که BotFather صادر کرده است
نام نمایشینهیک برچسب دوستانه برای فضای کاری شما (به‌طور پیش‌فرض نام تلگرامی بات)
حالت تحویلنهpolling (پیش‌فرض) یا webhook — پایین‌تر ببینید
فلوهانهآرایه‌ی JSONB از تعریف‌های فلو

تعریف فلوها

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

تریگرزمان اجرا
commandکاربر یک دستور می‌فرستد (مثلاً /start، /help)
messageپیامی در چت با بات می‌رسد
callbackکاربر یک دکمه‌ی کیبورد inline را فشار می‌دهد
member_joinعضو جدیدی به گروهی که بات در آن است می‌پیوندد
scheduleبر اساس زمان‌بندی
webhookیک فراخوانی وب‌هوک ورودی
گروه گرهگره‌ها
اقدام‌ها (14)send_message، send_media، edit_message، delete_message، typing، ask، buttons، http، db، ai، poll، dice، location، contact
منطق (6)condition، switch، set_variable، delay، random، loop
جریان (3)end، goto، call

حالت تحویل: polling یا وب‌هوک

شکل 6. تحویل پولینگ در برابر وب‌هوک، تریگرها و نودهایی که گردش‌کار می‌تواند به کار ببرد، سشن گردش‌کار و محدودیت‌های ربات و برودکست.

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

  • Polling — پلتفرم به‌روزرسانی‌ها را با getUpdates می‌کشد. نیازی به URL عمومی نیست. این حالت پیش‌فرض است و پشت NAT هم کار می‌کند.
  • وب‌هوک — پلتفرم endpoint خودش را برای بات شما با setWebhook ثبت می‌کند، تا تلگرام به‌روزرسانی‌ها را مستقیماً به آن push کند. شما URL نمی‌دهید و به سرور خودتان هم نیاز ندارید.

تحویل‌های وب‌هوک با یک secret تصادفی 32 بایتی احراز هویت می‌شوند که پلتفرم برای هر بات تولید می‌کند و به‌عنوان secret_token به تلگرام می‌دهد. تلگرام آن را در هر به‌روزرسانی در هدر X-Telegram-Bot-Api-Secret-Token برمی‌گرداند و درخواست‌های بدون secret منطبق رد می‌شوند. تغییر به وب‌هوک یک secret جدید می‌سازد؛ بازگشت به polling آن را پاک می‌کند.

اگر برای پلتفرم URL عمومی وب‌هوک پیکربندی نشده باشد، بات‌ها روی polling نگه داشته می‌شوند.

درخواست‌هایی که گره‌ی درخواست HTTP یک فلو می‌فرستد ساده‌اند: فقط هدرهایی را که شما پیکربندی کرده‌اید حمل می‌کنند و امضا نمی‌شوند، پس چنین endpointهایی را با یک مسیر مخفی یا فهرست مجاز IP محافظت کنید. وب‌هوک‌های رویداد که در تنظیمات → کلیدهای API → وب‌هوک‌ها ثبت می‌شوند متفاوت‌اند — هر تحویل با X-TGP-Signature (HMAC-SHA256) امضا می‌شود؛ ببینید API › وب‌هوک‌ها.

محدودیت‌های نرخ

محدودیتدامنهمقدار
گیرندگان broadcastبه ازای هر broadcast100
طول پیام broadcastبه ازای هر broadcast1000 نویسه
فاصله‌ی ارسالدرون یک broadcast~0.05 ثانیه بین پیام‌ها
ثبت باتبه ازای هر کاربر10 در دقیقه

نشست‌های فلو

فلوها یک‌باره نیستند. هر بات به ازای هر چت یک نشست فلو نگه می‌دارد و متغیرهایی که فلو تنظیم می‌کند در آن نشست زندگی می‌کنند.

  • ask فلو را متوقف می‌کند؛ پاسخ کاربر در همان چت آن را از سر می‌گیرد.
  • نشست بعد از 6 ساعت منقضی می‌شود.

برای وضعیتی که باید بیش از یک نشست دوام بیاورد، آن را در سیستم خودتان نگه دارید، مثلاً از طریق گره‌ی http.

نقشه‌ی راه

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

  • broadcastهای زمان‌بندی‌شده (یک‌باره و تکرارشونده)
  • پشتیبانی از حالت inline
  • یکپارچه‌سازی پرداخت از طریق Telegram Stars
  • داشبورد تحلیل بات (حجم پیام، رشد کاربران، زمان پاسخ)

ایمنی broadcast

broadcastهای بات‌ها مشمول این محدودیت‌ها هستند:

  • حداکثر 100 گیرنده به ازای هر broadcast
  • حداکثر 1000 نویسه به ازای هر پیام
  • فاصله‌گذاری: ارسال‌ها با فاصله‌ی حدود 0.05 ثانیه انجام می‌شوند
  • فیلتر کلمات اسپم: متن‌هایی که شامل کلماتی مانند "airdrop"، "casino" یا "buy now" باشند رد می‌شوند
گزارش مشکل در این صفحه
⁨بات‌ها⁩ | مستندات TelegramOS