آموزش ساخت ربات Serverless تلگرام؛ اجرای ربات بدون VPS
تلگرام قابلیت جدیدی با نام Telegram Serverless ارائه کرده که به توسعهدهنده اجازه میدهد کد بکاند ربات و Mini App را مستقیماً روی زیرساخت تلگرام اجرا کند؛ بدون نیاز به VPS، کانتینر یا سرور جداگانه.
در این آموزش یک ربات ساده میسازیم، Serverless را فعال میکنیم و با JavaScript آن را Deploy میکنیم.
Telegram Serverless چیست؟
در این روش کد ربات داخل محیط ایزوله V8 تلگرام اجرا میشود. همچنین Bot API، دیتابیس SQLite و HTTP خروجی در اختیار پروژه قرار دارد.
ساختار پروژه هم بسیار ساده است:
my-bot/ ├── handlers/ │ └── message.js ├── lib/ └── schema.js
۱. فعال کردن Serverless در BotFather
ابتدا یک ربات با @BotFather بسازید. سپس وارد تنظیمات همان ربات شوید:
BotFather → Your Bot → Serverless → Enable
بعد از فعالسازی، بخش CLI Access نیز در اختیار شما قرار میگیرد. توجه کنید که توکن CLI با Bot Token معمولی متفاوت است.
۲. ساخت پروژه
برای شروع به Node.js نسخه 18 یا بالاتر نیاز دارید. سپس دستور زیر را اجرا کنید:
npm create @tgcloud/bot my-bot cd my-bot
این دستور ساختار اولیه پروژه و ابزار tgcloud را ایجاد میکند.
۳. اتصال پروژه به ربات
از داخل BotFather مسیر Serverless → CLI Access → Access token را باز کنید و سپس در ترمینال بزنید:
npx tgcloud login
توکن CLI را وارد کنید تا پروژه به ربات متصل شود.
۴. نوشتن اولین کد ربات
فایل زیر را باز کنید:
handlers/message.js
و کد ساده زیر را قرار دهید:
import { api } from 'sdk'; export default async function (message) { await api.sendMessage({ chat_id: message.chat.id, text: `سلام 👋\nشما گفتید: ${message.text ?? ''}`, }); }
در Serverless تلگرام، هر فایل داخل handlers میتواند مسئول یک نوع Update باشد. برای پیامهای معمولی از message.js استفاده میشود.
۵. اجرای ربات
برای انتشار کد روی زیرساخت تلگرام کافی است اجرا کنید:
npx tgcloud push
بعد از انتشار، ربات آماده دریافت پیام است و دیگر نیازی به تنظیم دستی Webhook ندارید؛ Telegram Serverless این بخش را مدیریت میکند.
۶. تست کد بدون Deploy
یکی از قابلیتهای جالب tgcloud امکان اجرای Handler قبل از انتشار است:
npx tgcloud run handlers/message \ '{ chat: { id: 1 }, text: "سلام" }'
به این شکل میتوانید منطق ربات را سریع تست و سپس Deploy کنید.
۷. استفاده از دیتابیس SQLite
هر ربات Serverless یک دیتابیس SQLite داخلی دارد که اطلاعات آن بین اجراهای مختلف باقی میماند.
برای مثال در schema.js میتوان یک جدول ایجاد کرد:
import { table, integer, text } from 'sdk/db'; export const users = table('users', { id: integer('id').primaryKey({ autoIncrement: true }), chatId: integer('chat_id').notNull(), name: text('name') });
بعد از تغییر Schema:
npx tgcloud push npx tgcloud migrate
دستور push کد را منتشر میکند و migrate تغییرات دیتابیس را اعمال میکند.
ساختار نهایی پروژه
my-bot/ ├── handlers/ │ └── message.js ├── lib/ ├── schema.js └── .tgcloud/
فایلهای handlers برای دریافت رویدادهای تلگرام، lib برای کدهای مشترک و schema.js برای دیتابیس استفاده میشوند.
مزیت Telegram Serverless چیست؟
- بدون نیاز به VPS
- اجرای کد روی زیرساخت خود تلگرام
- دیتابیس SQLite داخلی
- دسترسی مستقیم به Bot API
- Deploy ساده با
tgcloud - امکان توسعه ربات و Mini App
جمعبندی
با Telegram Serverless ساخت ربات بسیار سادهتر شده است. کافی است قابلیت Serverless را در BotFather فعال کنید، پروژه را با tgcloud بسازید، Handler بنویسید و با push آن را منتشر کنید.
اگر به روش قدیمیتر ساخت ربات علاقه دارید، مقاله آموزش ساخت ربات تلگرامی با پایتون را هم ببینید.
سوالات متداول
آیا برای Telegram Serverless به VPS نیاز داریم؟
خیر. کد ربات روی زیرساخت Telegram Serverless اجرا میشود و نیازی به سرور جداگانه ندارید.
زبان برنامهنویسی Telegram Serverless چیست؟
محیط Serverless تلگرام بر پایه ماژولهای JavaScript طراحی شده است.
آیا دیتابیس هم دارد؟
بله. هر پروژه یک دیتابیس SQLite داخلی دارد که اطلاعات آن بین اجراهای مختلف باقی میماند.