چگونه ربات Telegram را میزبانی کنیم
در این صفحه
ربات Telegram فقط تا زمانی پاسخ میدهد که کدش در حال اجرا باشد. اگر آن را روی لپتاپ خود بسازید، به محض اینکه لپتاپ به خواب برود ساکت میشود — پس هر رباتی دیر یا زود به جایی نیاز دارد که همیشه روشن بماند.
این راهنما کل مسیر را پوشش میدهد: ساخت ربات با BotFather، انتخاب بین polling و webhook، یک نمونه کاربردی در Python و در JavaScript، محدودیتها و قوانینی که Telegram تعیین کرده، و اینکه چگونه ربات را 24/7 آنلاین نگه دارید.
مرحله ۱: ربات را با BotFather بسازید
- در Telegram، @BotFather را باز کنید و
/newbotرا بفرستید. - یک نام نمایشی برای ربات انتخاب کنید و سپس یک نام کاربری: ۵ تا ۳۲ نویسه شامل حروف لاتین، ارقام و زیرخط، که به
botختم شود — برای نمونهmy_shop_helper_bot. - BotFather با توکن پاسخ میدهد که شبیه
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11است. هر کسی آن را داشته باشد ربات شما را کنترل میکند، پس آن را بیرون از کد نگه دارید و هرگز با کسی به اشتراک نگذارید. اگر لو رفت،/tokenرا به BotFather بفرستید تا توکن جدیدی بگیرید.
دو فرمان دیگر BotFather که دانستنشان مفید است: /setcommands فهرست فرمانهایی را اضافه میکند که کاربران هنگام تایپ / میبینند، و /setprivacy تعیین میکند ربات در گروهها چه چیزی را ببیند. حالت حریم خصوصی بهطور پیشفرض روشن است، پس ربات در گروه فقط فرمانهایی را که برای آن است و پاسخ به پیامهای خودش را دریافت میکند — مگر اینکه آن را مدیر کنید.
Polling یا webhook؟
ربات پیامهایش را از Telegram به یکی از دو روش دریافت میکند — هرگز هر دو بهطور همزمان:
| Long polling | Webhook | |
|---|---|---|
| نحوه کار | ربات مدام از طریق یک اتصال باز از Telegram پیامهای جدید را میپرسد | Telegram هر بهروزرسانی را به نشانی HTTPS شما میفرستد |
| نیازمندیها | فقط دسترسی خروجی به اینترنت | یک دامنه، یک گواهی معتبر و پورت 443، 80، 88 یا 8443 |
| مناسب برای | تقریبا همه رباتها، و سادهترین برای میزبانی | رباتهای بسیار پرترافیک یا پلتفرمهای serverless |
با polling شروع کنید. به دامنه، گواهی یا پورت باز نیازی ندارد و همه کتابخانهها از آن پشتیبانی میکنند. اگر زمانی روی توکن webhook تنظیم شده، ابتدا deleteWebhook را فراخوانی کنید — تا وقتی webhook فعال است، polling کار نمیکند.
رباتهای polling روی میزبانی ربات HytHost بدون نیاز به تنظیم دامنه یا پورت باز اجرا میشوند — Python یا Node.js از €0.89 در ماه.
مشاهده پلنهای میزبانی رباتمرحله ۲الف: ربات در Python (python-telegram-bot)
python-telegram-bot 22 به Python 3.10 یا جدیدتر نیاز دارد. آن را با pip install python-telegram-bot نصب کنید و bot.py را بسازید:
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes, MessageHandler, filters
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text("Hi! Send me a message and I will echo it.")
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text(update.message.text)
def main() -> None:
application = Application.builder().token(os.environ["TELEGRAM_TOKEN"]).build()
application.add_handler(CommandHandler("start", start))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
application.run_polling(allowed_updates=Update.ALL_TYPES)
if __name__ == "__main__":
main()
aiogram 3 گزینه محبوب دیگر در Python است و آن هم به Python 3.10 یا جدیدتر نیاز دارد.
مرحله ۲ب: ربات در JavaScript (grammY)
grammY فریمورک Telegram برای Node.js است که بهطور فعال نگهداری میشود. npm install grammy را اجرا کنید و bot.js را بسازید:
const { Bot } = require("grammy");
const bot = new Bot(process.env.TELEGRAM_TOKEN);
bot.command("start", (ctx) => ctx.reply("Welcome! Up and running."));
bot.on("message:text", (ctx) => ctx.reply(ctx.message.text));
process.once("SIGINT", () => bot.stop());
process.once("SIGTERM", () => bot.stop());
bot.start();
آموزشهای قدیمیتر از Telegraf استفاده میکنند که از فوریه 2024 نسخه جدیدی منتشر نکرده است؛ برای ربات جدید، grammY انتخاب مطمئنتری است.
محدودیتها و قوانین Telegram برای رباتها
محدودیتها طبق پرسشهای متداول رباتهای Telegram:
- حدود یک پیام در ثانیه در یک گفتگو، ۲۰ پیام در دقیقه در یک گروه و در مجموع حدود ۳۰ پیام در ثانیه.
- فایلها: ربات میتواند تا 50 MB ارسال و تا 20 MB دانلود کند.
- در هر لحظه فقط یک نسخه از ربات میتواند polling کند. نسخه دوم خطای Conflict: terminated by other getUpdates request میگیرد — برای آزمایش از توکن جداگانه استفاده کنید.
قوانین: شرایط Telegram برای توسعهدهندگان ربات، اسپم، پیامهای ناخواسته و دور زدن محدودیت نرخ را ممنوع میکند. ربات به سیاست حریم خصوصی نیاز دارد (اگر سیاست خودتان را ننویسید، سیاست استاندارد Telegram اعمال میشود) و باید دادههای کاربر را در صورت درخواست او حذف کند. خودکارسازی یک حساب شخصی بهجای ربات — به اصطلاح userbot — موضوعی کاملا متفاوت است و Telegram حسابهایی را که برای فلود یا اسپم استفاده میشوند مسدود میکند.
میزبانی ربات Telegram در HytHost
پلنهای میزبانی ربات ما رباتهای Telegram را هم مانند رباتهای Discord اجرا میکنند:
- یک پلن و محیط اجرا انتخاب کنید — Python برای python-telegram-bot یا aiogram، و Node.js برای grammY. در زبانه Startup نسخه Python 3.10 یا جدیدتر، یا نسخه فعلی Node.js را انتخاب کنید.
- کد خود را آپلود کنید با مدیر فایل یا SFTP، همراه با
requirements.txtیاpackage.json. - توکن را در فایل
.envبگذارید یا در یک متغیر محیطی، نه در کد. - آن را اجرا کنید. با polling ربات به دامنه یا پورت باز نیازی ندارد؛ اگر از کار بیفتد، پنل آن را دوباره راهاندازی میکند.
آنچه قوانین ما مجاز میداند: رباتهایی که بر پایه Bot API رسمی و با توکن BotFather ساخته شدهاند. مجاز نیست: userbotهایی که یک حساب شخصی را خودکار میکنند، پیامهای انبوه ناخواسته، جمعآوری (scraping) اطلاعات کاربران یا گروهها، و رباتهایی که رسانه را بدون داشتن حقوق آن دانلود و بازنشر میکنند. رباتی که این قوانین را نقض کند تعلیق میشود.
پلنها شامل یک پایگاه داده MySQL و پشتیبانگیری هستند. ربات Discord هم میسازید؟ چگونه ربات Discord بسازیم را ببینید.
ربات Telegram خود را بدون رایانهتان 24/7 آنلاین نگه دارید: میزبانی ربات Python یا Node.js از €0.89 در ماه، همراه با راهاندازی مجدد.
مشاهده پلنهای میزبانی رباتپرسشهای متداول
میتوانید آن را رایگان روی رایانه خودتان اجرا کنید، اما هر بار که رایانه به خواب برود یا راهاندازی مجدد شود، آفلاین میشود. پلنهای رایگان ابری اغلب برنامههای بیکار را متوقف میکنند یا میزان استفاده را محدود میکنند. برای رباتی که آنلاین بماند، یک میزبانی پولی کوچک گزینه قابلاعتماد است.
Polling برای تقریبا همه رباتها: به دامنه، گواهی یا پورت باز نیازی ندارد. Webhook برای رباتهای بسیار پرترافیک یا پلتفرمهای serverless مناسب است و به HTTPS روی پورت 443، 80، 88 یا 8443 نیاز دارد. یک توکن نمیتواند همزمان از هر دو استفاده کند.
/token را به @BotFather بفرستید و ربات را انتخاب کنید تا توکن جدیدی بگیرید، سپس آن را در هر جایی که ربات اجرا میشود بهروز کنید. توکن را در یک متغیر محیطی یا فایل .env نگه دارید، هرگز در کدی که به اشتراک میگذارید.
دو نسخه از ربات با یک توکن polling میکنند، مثلا یکی روی رایانه شما و یکی روی سرور. یکی از آنها را متوقف کنید و برای آزمایش از ربات و توکن جداگانه استفاده کنید.
خیلی کم. یک ربات معمولی Python یا Node.js که به فرمانها پاسخ میدهد معمولا روی 512 MB بدون مشکل اجرا میشود؛ رباتهایی که تصویر پردازش میکنند یا دادههای زیادی در حافظه نگه میدارند به مقدار بیشتری نیاز دارند.
ربات Telegram شما، آنلاین 24/7
میزبانی ربات HytHost ربات Telegram شما را با Python یا Node.js همراه با راهاندازی مجدد خودکار، پایگاه داده MySQL و پشتیبانگیری اجرا میکند — از €0.89 در ماه.
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hoursاین راهنما برایتان مفید بود؟