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

فهرست مطالب مقاله ساخت ربات تلگرام بدون هاست و سرور

ساخت ربات تلگرام بدون هاست و سرور: راهنمای کامل با Telegram Serverless

اگر تا حالا دنبال ساخت ربات تلگرام بدون هاست و سرور بودید، احتمالاً به یک دیوار برخورد کرده‌اید: نیاز به یک سرور همیشه‌روشن (Always-On) برای دریافت پیام‌ها. خبر خیلی خوب این است که از تیر ۱۴۰۵ (ژوئیه ۲۰۲۶)، خودِ تلگرام یک قابلیت رسمی به‌نام Telegram Serverless عرضه کرده که اجازه می‌دهد بک‌اند ربات تلگرام و دیتابیس ربات مستقیماً روی زیرساخت تلگرام اجرا شود — بدون نیاز حتی به یک حساب شخص‌ثالث. در این مقاله ابتدا ساده‌ترین و رسمی‌ترین روش را قدم‌به‌قدم یاد می‌گیرید، و در ادامه روش‌های جایگزین با پلتفرم‌های ابری رایگان (Cloudflare Workers، Vercel، Render) را هم پوشش می‌دهیم.

سرورلس یعنی چه و چرا برای ربات تلگرام مناسب است؟

در معماری سنتی، ربات شما باید روی یک سرور به‌صورت دائم در حال اجرا باشد تا پیام‌های ورودی را با متد Polling بررسی کند. این یعنی هزینه ثابت ماهانه، حتی وقتی هیچ کاربری با ربات کار نمی‌کند.

در مدل سرورلس، به‌جای Polling از وب هوک خودکار استفاده می‌شود. تلگرام هر بار که پیامی برای ربات ارسال می‌شود، یک درخواست HTTP به کد شما می‌فرستد؛ کد فقط در همان لحظه اجرا می‌شود، پاسخ را برمی‌گرداند و خاموش می‌شود. نتیجه؟ صفر هزینه نگهداری زیرساخت برای ساخت ربات تلگرام بدون هاست و سرور.

این روش برای سه گروه به‌خصوص مناسب است:

  • دانشجویان و برنامه‌نویسانی که می‌خواهند بدون هزینه یاد بگیرند.
  • استارتاپ‌ها و کسب‌وکارهای کوچک که برای MVP یا اتوماسیون داخلی به ربات نیاز دارند.
  • هرکسی که به دنبال میزبانی رایگان ربات تلگرام بدون خرید هاست است.

تلگرام سرورلس (Telegram Serverless) چیست؟ ساده‌ترین روش ساخت ربات تلگرام بدون هاست و سرور

Telegram Serverless یک محیط اجرای رسمی است که خودِ تلگرام در اختیار توسعه‌دهندگان قرار داده تا بک‌اند ربات تلگرام یا Mini App را مستقیم روی زیرساخت تلگرام اجرا کنند. برخلاف روش‌های قبلی که نیاز به یک پلتفرم ابری واسط (مثل Cloudflare یا Vercel) داشتند، اینجا همه‌چیز — کد، اجرای آن، و حتی دیتابیس — داخل خودِ تلگرام است.

ویژگی‌های اصلی این قابلیت جدید:

  • بدون زیرساخت جداگانه: هیچ سروری برای اجاره، پچ کردن یا مانیتور کردن وجود ندارد؛ کد به‌صورت خودکار مقیاس می‌گیرد.
  • همه‌چیز آماده: Bot API، یک دیتابیس داخلی SQLite، و HTTP خروجی از ابتدا در دسترس هر ماژول هستند — نیازی به نصب یا تنظیم اعتبارنامه نیست.
  • اجرای سریع و ایزوله: هر فراخوانی در یک V8 Isolate سبک و نزدیک به سیستم‌های خودِ تلگرام اجرا می‌شود.
  • وب‌هوک خودکار: برخلاف روش‌های سنتی، دیگر لازم نیست دستی setWebhook بزنید؛ خودِ پلتفرم وب‌هوک را با هندلرهای دیپلوی‌شده هماهنگ نگه می‌دارد.

منبع رسمی این قابلیت مستندات Telegram Serverless است.

بنر-طراحی-ربات-هوشمند

روش اول و توصیه‌شده: ساخت ربات تلگرام بدون هاست و سرور با Telegram Serverless

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

مرحله ۱: فعال‌سازی Serverless از BotFather

برای فعال‌سازی Serverless از BotFather قبل از هر چیز باید این قابلیت را برای رباتتان روشن کنید:

  1. وارد چت با @BotFather شوید.
  2. ربات موردنظر را انتخاب کنید و روی گزینه Serverless بزنید.
  3. آن را فعال کنید. با این کار، هندلرها، دیتابیس و توکن دسترسی CLI برای شما باز می‌شود.

بعد از فعال‌سازی Serverless از BotFather طبق مراحل زیر پیش بروید:

مرحله ۲: ساخت پروژه

روی سیستم خودتان (نیاز به Node.js نسخه ۱۸ به بالا دارید) دستور زیر را اجرا کنید:

npm create @tgcloud/bot example_bot
cd example_bot

این دستور یک پوشه آماده با ساختار زیر می‌سازد:

example_bot/
├─ handlers/
│  └─ message.js
├─ lib/
├─ schema.js
└─ package.json

سپس ربات را با توکن دسترسی CLI (از مسیر BotFather → ربات شما → Serverless → CLI Access) متصل کنید:

npx tgcloud login

مرحله ۳: نوشتن هندلر (Handler) و schema.js

فایل schema.js جدول دیتابیس ربات را تعریف می‌کند:

import { table, integer } from 'sdk/db';

export const counters = table('counters', {
  chatId: integer('chat_id').primaryKey(),
  seen:   integer('seen').notNull().default(0),
});

فایل handlers/message.js منطق پاسخ‌دهی ربات را مشخص می‌کند:

import { api, db } from 'sdk';
import { counters } from 'schema';
import { sql } from 'sdk/db';

export default async function (message) {
  const chatId = message.chat.id;

  const [row] = await db.insert(counters)
    .values({ chatId, seen: 1 })
    .onConflictDoUpdate({
      target: counters.chatId,
      set: { seen: sql`${counters.seen} + 1` },
    })
    .returning()
    .run();

  await api.sendMessage({
    chat_id: chatId,
    text: `پیام شما دریافت شد. این پیام ${row.seen}اُمین پیام شماست.`,
  });
}

مرحله ۴: دیپلوی و اجرای Migration

npx tgcloud push       # آپلود کد
npx tgcloud migrate    # ساخت جدول دیتابیس

همین! ربات شما اکنون زنده است، بدون این‌که یک خط کد روی هیچ سرور یا هاستی اجرا شده باشد.

مرحله ۵: تست بدون دیپلوی

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

npx tgcloud run handlers/message '{ chat: { id: 1 }, text: "سلام" }'

تفاوت Telegram Serverless با پلتفرم‌های سرورلس عمومی (Cloudflare / Vercel / Render)

ویژگیTelegram ServerlessCloudflare Workers / Vercel / Render
نیاز به حساب شخص‌ثالثخیربله
دیتابیس داخلیبله (SQLite رایگان و آماده)باید جدا تنظیم شود
تنظیم وب‌هوکخودکاردستی (setWebhook)
مناسب برایربات‌های تلگرامی و Mini Appهر نوع اپلیکیشن وب یا API عمومی
انعطاف زبان برنامه‌نویسیفقط JavaScriptچندزبانه (Python، JS و غیره)
مناسب برای پردازش سنگین/AIمحدودتر (محیط سبک V8)در برخی پلتفرم‌ها (مثل Render) انعطاف بیشتر

اگر ربات شما صرفاً برای تلگرام است و نیازی به منطق پیچیده یا زبان غیر از جاوااسکریپت ندارید، Telegram Serverless سریع‌ترین و ساده‌ترین راه ساخت ربات تلگرام بدون هاست و سرور است. اگر به Python یا پردازش‌های سنگین‌تر نیاز دارید، روش‌های جایگزین زیر همچنان گزینه‌های معتبری هستند.

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

مقایسه پلتفرم‌های رایگان سرورلس عمومی

پلتفرممحدودیت پلن رایگاننقطه قوتنقطه ضعف برای ربات تلگرام
Cloudflare Workers۱۰۰ هزار درخواست در روز، ۱۰ میلی‌ثانیه CPU در هر اجرابدون Cold Start محسوس، شبکه جهانی سریعبرای پردازش‌های سنگین (مثل کار با فایل یا AI) محدودیت CPU سخت‌گیرانه است
Vercel (Hobby)حدود ۱۰۰ گیگابایت پهنای باند و مجموعه‌ای از توابع سرورلس در ماه؛ فقط برای استفاده شخصی/غیرتجاریدیپلوی بسیار ساده، یکپارچگی عالی با گیت‌هابپلن رایگان برای پروژه‌های تجاری مجاز نیست
Render (Free Web Service)۵۱۲ مگابایت رم، ۰.۱ CPU، خاموش‌شدن سرویس پس از ۱۵ دقیقه بی‌فعالیتیپشتیبانی مستقیم از Python/Node به‌صورت وب‌سرویس کامل (نه فقط تابع)Cold Start حدود ۳۰ تا ۶۰ ثانیه‌ای که می‌تواند باعث Timeout در پاسخ به وب‌هوک تلگرام شود

نکته شفاف: تلگرام برای وب‌هوک خودکار انتظار پاسخ سریع دارد. اگر از Render استفاده می‌کنید، حتماً یک سرویس Ping دوره‌ای (مثل UptimeRobot) راه بیندازید تا ربات «نخوابد».

ساخت ربات با Cloudflare Workers

npm install -g wrangler
wrangler login
npm create cloudflare@latest telegram-bot
cd telegram-bot

کد ربات (JavaScript):

export default {
  async fetch(request, env) {
    if (request.method !== "POST") {
      return new Response("سلام! ربات فعال است.");
    }

    const update = await request.json();
    const chatId = update.message?.chat?.id;
    const text = update.message?.text;

    if (chatId && text) {
      await fetch(
        `https://api.telegram.org/bot${env.BOT_TOKEN}/sendMessage`,
        {
          method: "POST",
          headers: { "Content-Type": "application/json" },
          body: JSON.stringify({
            chat_id: chatId,
            text: `پیام شما دریافت شد: ${text}`,
          }),
        }
      );
    }

    return new Response("OK");
  },
};

توکن ربات را در جای امن ذخیره کنید و دیپلوی کنید:

wrangler secret put BOT_TOKEN
wrangler deploy

ساخت ربات با Vercel (Python)

ساختار پروژه:

telegram-bot-vercel/
├── api/
│   └── webhook.py
└── requirements.txt

کد وب‌هوک خودکار:

from http.server import BaseHTTPRequestHandler
import json
import os
import urllib.request

BOT_TOKEN = os.environ.get("BOT_TOKEN")

class handler(BaseHTTPRequestHandler):
    def do_POST(self):
        content_length = int(self.headers['Content-Length'])
        body = json.loads(self.rfile.read(content_length))

        chat_id = body.get("message", {}).get("chat", {}).get("id")
        text = body.get("message", {}).get("text")

        if chat_id and text:
            url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
            data = json.dumps({
                "chat_id": chat_id,
                "text": f"پیام شما دریافت شد: {text}"
            }).encode()
            req = urllib.request.Request(
                url, data=data,
                headers={"Content-Type": "application/json"}
            )
            urllib.request.urlopen(req)

        self.send_response(200)
        self.end_headers()
        self.wfile.write(b"OK")

متغیر محیطی BOT_TOKEN را در Settings > Environment Variables با نام BOT_TOKEN اضافه کنید و دیپلوی کنید:

vercel --prod

ساخت ربات با Render (مناسب پروژه‌های Python سنگین‌تر)

from flask import Flask, request
import requests
import os

app = Flask(__name__)
BOT_TOKEN = os.environ.get("BOT_TOKEN")

@app.route("/webhook", methods=["POST"])
def webhook():
    update = request.get_json()
    chat_id = update.get("message", {}).get("chat", {}).get("id")
    text = update.get("message", {}).get("text")

    if chat_id and text:
        requests.post(
            f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage",
            json={"chat_id": chat_id, "text": f"پیام شما دریافت شد: {text}"}
        )
    return "OK", 200

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)))

فایل requirements.txt: flask / requests / gunicorn. دستور استارت در Render: gunicorn app:app

اتصال وب‌هوک خودکار (فقط برای روش‌های جایگزین)

در روش Telegram Serverless این مرحله خودکار است. اما در Cloudflare/Vercel/Render باید دستی وب‌هوک را تنظیم کنید:

curl -F "url=https://your-domain.com/webhook" \
https://api.telegram.org/bot<TOKEN>/setWebhook

برای بررسی وضعیت:

curl https://api.telegram.org/bot<TOKEN>/getWebhookInfo

رفع خطاهای رایج (Troubleshooting)

خطا در Telegram Serverless: وب‌هوک «Out of Sync» است یعنی هندلرهای دیپلوی‌شده با تنظیمات فعلی وب‌هوک هماهنگ نیستند. با دستور npx tgcloud webhook sync آن را دوباره هماهنگ کنید.

خطا در Telegram Serverless: هشدار (Warning) هنگام Migrate معمولاً وقتی رخ می‌دهد که یک ستون یا جدول را حذف کرده‌اید. تغییرات مخرب باید جداگانه و آگاهانه تأیید شوند؛ پیش از تأیید، پیام هشدار را با دقت بخوانید.

خطا: Wrong response from the webhook: 500 Internal Server Error (در روش‌های جایگزین) یعنی کد شما قبل از پاسخ‌دادن با خطا متوقف شده. لاگ پلتفرم (Cloudflare Dashboard، Vercel Logs یا Render Logs) را چک کنید.

خطا: Timeout یا پاسخ‌ندادن ربات بعد از مدتی سکوت (در Render) به دلیل Cold Start است. راه‌حل: یک سرویس مانیتورینگ رایگان مثل UptimeRobot را روی آدرس سلامت سرویس تنظیم کنید.

خطا: Unauthorized هنگام فراخوانی API تلگرام توکن اشتباه کپی شده یا در متغیر محیطی درست ثبت نشده است.

سؤالات متداول

آیا ساخت ربات تلگرام بدون هاست و سرور واقعاً رایگان است؟ بله. با Telegram Serverless حتی نیازی به هیچ حساب پلتفرم شخص‌ثالثی ندارید و کاملاً رایگان است. در روش‌های جایگزین هم تا زمانی که در محدوده پلن رایگان بمانید (مثل ۱۰۰ هزار درخواست روزانه در Cloudflare Workers) هزینه‌ای پرداخت نمی‌کنید.

Telegram Serverless چه تفاوتی با روش‌های قبلی ساخت ربات تلگرام بدون سرور دارد؟ تفاوت اصلی این است که در Telegram Serverless همه‌چیز — از اجرای کد تا دیتابیس و مدیریت وب‌هوک — داخل زیرساخت خودِ تلگرام انجام می‌شود؛ در حالی که در روش‌های قبلی باید یک پلتفرم ابری جداگانه (مثل Cloudflare یا Vercel) را خودتان تنظیم و مدیریت کنید.

بهترین روش برای ساخت ربات تلگرام بدون هاست و سرور کدام است؟ اگر ربات شما صرفاً برای تلگرام است، Telegram Serverless ساده‌ترین و رسمی‌ترین گزینه است. اگر به زبان‌های دیگر (مثل Python) یا منابع محاسباتی بیشتر نیاز دارید، Cloudflare Workers یا Render گزینه‌های مناسب‌تری هستند.

تفاوت Webhook و Polling در ربات تلگرام چیست؟ در Polling، ربات به‌صورت مداوم از سرور تلگرام سؤال می‌کند که «پیام جدیدی هست؟» که نیاز به یک فرآیند همیشه‌روشن دارد. در Webhook، تلگرام خودش پیام را ارسال می‌کند؛ همین تفاوت است که ساخت ربات تلگرام بدون هاست و سرور را ممکن می‌سازد.

جمع‌بندی و قدم بعدی

ساخت ربات تلگرام بدون هاست و سرور دیگر یک چالش فنی پیچیده نیست. با قابلیت رسمی Telegram Serverless می‌توانید در چند دقیقه، بدون هیچ حساب شخص‌ثالث، اولین ربات خود را با دیتابیس داخلی راه‌اندازی کنید. اگر به انعطاف بیشتری نیاز دارید، Cloudflare Workers، Vercel و Render همچنان گزینه‌های رایگان و قابل‌اعتمادی هستند.

اگر همین حالا می خواهید شروع کنید، به BotFather بروید، Serverless را برای رباتتان فعال کنید و دستور npm create @tgcloud/bot را اجرا کنید. اگر در هر مرحله به مشکلی برخوردید، بخش رفع خطاهای رایج را دوباره مرور کنید یا سؤال خود را برای ما بفرستید همچنین برای سفارش ساخت ربات تلگرام حرفه ای می توانید در صفحه طراحی ربات هوشمند درخواست خود را ثبت بفرمایید.

برای کسب اطلاعات بیشتر از شیوه ساخت ربات تلگرام از صفحه آموزش کامل ساخت ربات تلگرام از صفر تا صد (۲۰۲۶) دیدن بفرمایید.

این صفحه چقدر برای شما مفیدبود ؟

5 / 5. 500

اولین کسی باشید که به این صفحه رای می‌دهد..

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

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

Enter the code
CAPTCHA

اپلیکیشن مشابه دیوار اپ‌ساز