تیم LinoTool
نویسنده

اگر برای آنلاین نگه داشتن یک ربات تلگرامی مجبور شدهاید VPS بخرید، هاست تهیه کنید یا دائماً درگیر تنظیمات سرور باشید، Telegram Serverless میتواند مسیر متفاوتی را پیش روی شما بگذارد.
ایده اصلی ساده است: بهجای اینکه کد ربات را روی سروری که خودتان مدیریت میکنید اجرا کنید، اجرای آن روی زیرساخت Serverless تلگرام انجام میشود. در نتیجه بخش قابل توجهی از دردسرهای مربوط به نگهداری سرور حذف میشود و توسعهدهنده میتواند تمرکز بیشتری روی خود ربات بگذارد.
در این مطلب با Telegram Serverless، ابزار tgcloud، نحوه ساخت پروژه، اجرای محلی، Deploy و استفاده از SQLite آشنا میشویم.
در روش معمول ساخت ربات تلگرام، شما کد ربات را روی VPS یا یک سرویس میزبانی اجرا میکنید. یعنی باید محیط اجرا را آماده کنید، برنامه را همیشه فعال نگه دارید و در صورت بروز مشکل، خودتان آن را برطرف کنید.
در معماری Serverless، این مدل تغییر میکند. زیرساخت اجرای کد توسط پلتفرم مدیریت میشود و شما بیشتر روی منطق برنامه تمرکز میکنید.
برای رباتهایی که نیاز به یک بکاند دائمی دارند اما نمیخواهند از همان ابتدا هزینه و پیچیدگی VPS را تحمل کنند، این مدل میتواند جذاب باشد.
اول از همه باید یک ربات تلگرام داشته باشید. ساخت و مدیریت ربات از طریق BotFather انجام میشود.
تلگرام در مستندات رسمی خود نیز BotFather را ابزار اصلی ایجاد و مدیریت رباتها معرفی میکند.
در صورتی که قابلیت Serverless برای حساب شما فعال شده باشد، میتوانید از داخل BotFather به گزینه مربوط به Serverless دسترسی پیدا کنید.
مسیر موردنظر:
Bot → Serverless → CLI Access
در این مرحله یک توکن برای دسترسی CLI دریافت میکنید.
این توکن را باید کاملاً محرمانه نگه دارید. آن را داخل GitHub، کانال تلگرام، کد عمومی یا فایلهایی که در اختیار دیگران قرار میدهید قرار ندهید.
پس از آماده شدن دسترسی، میتوانید پروژه ربات را با ابزار tgcloud ایجاد کنید.
برای ساخت یک پروژه جدید:
npm create @tgcloud/bot my-bot
سپس وارد پوشه پروژه شوید:
cd my-bot
این روش باعث میشود قالب اولیه موردنیاز برای توسعه ربات ایجاد شود و بتوانید کدنویسی را از همان ساختار شروع کنید.
بعد از ساخت پروژه، باید محیط توسعه را به حساب Serverless متصل کنید.
برای این کار:
npx tgcloud login
با اجرای این دستور، پروژه شما برای استفاده از محیط Serverless آماده میشود.
یکی از بخشهای کاربردی این workflow این است که لازم نیست هر تغییر کوچک را مستقیماً روی محیط اصلی Deploy کنید.
برای اجرای پروژه بهصورت محلی:
npx tgcloud run
با این کار میتوانید منطق ربات، پاسخها و رفتار برنامه را قبل از انتشار نسخه نهایی بررسی کنید.
این روش مخصوصاً زمانی مفید است که هنوز در مرحله توسعه و تست هستید.
وقتی پروژه آماده شد، میتوانید آن را روی محیط Serverless منتشر کنید:
npx tgcloud push
از این مرحله به بعد، کد ربات روی زیرساخت Serverless اجرا میشود و دیگر لازم نیست برای اجرای دائمی آن یک VPS جداگانه داشته باشید.
البته این موضوع به معنای حذف تمام محدودیتهای فنی نیست؛ پروژه همچنان باید با امکانات و محدودیتهای محیط Serverless سازگار باشد.
رباتهای واقعی معمولاً فقط پیام دریافت و ارسال نمیکنند. خیلی از آنها نیاز دارند اطلاعات کاربران، امتیازها، تنظیمات، سفارشها یا وضعیتهای مختلف را ذخیره کنند.
برای چنین مواردی، Telegram Serverless امکان استفاده از SQLite را فراهم میکند.
SQLite یک دیتابیس سبک و مبتنی بر فایل است که برای بسیاری از پروژههای کوچک و متوسط انتخاب مناسبی محسوب میشود.
برای اعمال تغییرات دیتابیس در پروژه میتوانید از:
npx tgcloud migrate
استفاده کنید.
این محیط میتواند برای پروژههای مختلفی کاربرد داشته باشد، مثلاً:
البته مناسب بودن Serverless برای یک پروژه به میزان پردازش، وابستگیها، منابع موردنیاز و معماری خود ربات بستگی دارد.
در یک VPS معمولی، شما مسئول بخش زیادی از زیرساخت هستید؛ از نصب محیط اجرا گرفته تا مدیریت سرویس و نگهداری سرور.
اما در Serverless، این مسئولیت تا حد زیادی به پلتفرم منتقل میشود.
در نتیجه برای یک پروژه ساده، ممکن است بتوانید بسیار سریعتر شروع کنید و نیازی به درگیر شدن با مدیریت مستقیم سرور نداشته باشید.
خیر.
اگر ربات شما به پردازشهای سنگین، کتابخانههای خاص، فایلسیستم دائمی، کنترل کامل روی سیستمعامل یا سرویسهای خاصی نیاز دارد، ممکن است یک VPS انتخاب مناسبتری باشد.
همچنین بهتر است قبل از انتقال یک ربات بزرگ، محدودیتهای محیط اجرا و APIهای در دسترس را بررسی کنید.
برای آشنایی با قابلیتهای رسمی رباتها و API تلگرام:
در هاست معمولی، برنامه روی سروری اجرا میشود که منابع آن از قبل مشخص شدهاند و شما یا شرکت ارائهدهنده باید محیط اجرای آن را مدیریت کنید.
در Serverless، ایده اصلی این است که توسعهدهنده بیشتر با کد و منطق برنامه کار کند و زیرساخت اجرا توسط پلتفرم مدیریت شود.
بنابراین Serverless بیشتر یک روش اجرای برنامه است تا یک نوع هاست معمولی.
توکن ربات در واقع کلید دسترسی به ربات شماست. اگر فرد دیگری به آن دسترسی پیدا کند، میتواند از طرف ربات درخواست ارسال کند و کنترل قابل توجهی روی آن داشته باشد.
به همین دلیل، توکن را مثل یک رمز عبور در نظر بگیرید.
تلگرام نیز در مستندات رسمی خود درباره محافظت از Bot Token تأکید کرده است.
نباید صرفاً بر اساس عبارت «Serverless» تصور کرد که این سرویس همیشه و برای هر میزان استفاده کاملاً رایگان است.
شرایط دسترسی، محدودیت منابع و سیاستهای سرویس ممکن است تغییر کند. بنابراین قبل از انتقال پروژه اصلی، بهتر است آخرین شرایط رسمی Telegram Serverless را بررسی کنید.
Telegram Serverless روشی برای اجرای ربات تلگرام است که بخش مهمی از مدیریت زیرساخت را از دوش توسعهدهنده برمیدارد. با ابزار tgcloud میتوانید پروژه را ایجاد کنید، آن را به حساب Serverless متصل کنید، بهصورت محلی اجرا کنید و در نهایت با push روی زیرساخت Serverless Deploy کنید.
پشتیبانی از SQLite نیز باعث میشود این محیط برای رباتهایی که نیاز به ذخیره اطلاعات دارند کاربرد بیشتری پیدا کند.
برای پروژههای ساده و متوسط، این روش میتواند جایگزین جذابی برای راهاندازی VPS باشد؛ اما برای رباتهای سنگین یا پروژههایی که به کنترل کامل سرور نیاز دارند، بهتر است محدودیتهای محیط را قبل از مهاجرت بررسی کنید.
تیم LinoTool
تیمی متخصص در ایجاد ابزارهای کارآمد و آموزش بهتر