OffshoreVps
آموزش‌ها8 اکتبر 20265 دقیقه مطالعهنوشته‌ی تیم OffshoreVps

چگونه یک ربات Telegram را روی VPS میزبانی کنیم

توکن ربات را بگیرید، یک ربات Python بنویسید، توکن را ایمن نگه دارید و با یک سرویس systemd آن را به‌صورت ۲۴/۷ روشن نگه دارید.

ربات تلگرام باید همیشه در حال اجرا باشد تا به پیام‌ها پاسخ دهد. اجرای آن روی لپ‌تاپ یعنی هر وقت درِ آن را ببندید آفلاین می‌شود. یک VPS کوچک با چند دلار در ماه این مشکل را حل می‌کند. این راهنما یک ربات Python را به‌صورت سرویس systemd اجرا می‌کند تا هنگام بوت شروع شود و پس از خرابی دوباره راه بیفتد.

پنجره‌ی ترمینال روی یک VPS که دستورهای میزبانی ربات Telegram را نشان می‌دهد، با «sudo apt update && sudo apt install -y python3 p» شروع می‌شود
نوع دستورهایی که در این راهنما روی سرور خود اجرا می‌کنید.

VPS با چه اندازه‌ای؟

بیشتر ربات‌ها سبک‌اند. طرحی با 1 تا 2 vCPU و 2 GB RAM کاملاً کافی است. برای طرح‌های پیشنهادی، هاستینگ ربات تلگرام را ببینید.

مرحله 1: توکن ربات بگیرید

با @BotFather در تلگرام صحبت کنید، /newbot را بفرستید، یک نام و یک نام کاربری که به bot ختم شود انتخاب کنید و توکن را کپی کنید. با آن مانند رمز عبور رفتار کنید، چون هر کس آن را داشته باشد می‌تواند ربات را کنترل کند.

مرحله 2: سرور را آماده کنید

sudo apt update && sudo apt install -y python3 python3-venv
sudo adduser --disabled-password --gecos "" botuser
sudo -iu botuser
mkdir ~/mybot && cd ~/mybot
python3 -m venv .venv
. .venv/bin/activate
pip install python-telegram-bot

مرحله 3: یک ربات کوچک بنویسید

# bot.py
import os
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

async def start(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Hello! I am running on a VPS.")

app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()

Polling به هیچ پورت بازی نیاز ندارد، پس لازم نیست دامنه یا webhook راه بیندازید.

گام‌های این راهنما به ترتیب: ۱. VPS در چه اندازه‌ای؟؛ ۲. توکن ربات را بگیرید؛ ۳. یک ربات کوچک بنویسید؛ ۴. توکن را ایمن نگه دارید؛ ۵. به‌روزرسانی و پایش؛ ۶. polling یا webhook؟
گام‌های این راهنما به ترتیب.

مرحله 4: توکن را امن ذخیره کنید

echo "BOT_TOKEN=123456:ABC..." > ~/mybot/.env
chmod 600 ~/mybot/.env

مرحله 5: آن را به‌صورت سرویس اجرا کنید

به‌عنوان کاربر مدیر برگردید و /etc/systemd/system/mybot.service را بسازید:

[Unit]
Description=Telegram bot
After=network-online.target

[Service]
User=botuser
WorkingDirectory=/home/botuser/mybot
EnvironmentFile=/home/botuser/mybot/.env
ExecStart=/home/botuser/mybot/.venv/bin/python bot.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo journalctl -u mybot -f

به‌روزرسانی و نظارت

  • کد را به‌روزرسانی کنید، سپس sudo systemctl restart mybot.
  • لاگ‌ها را با journalctl -u mybot -n 100 بررسی کنید.
  • اگر ربات داده ذخیره می‌کند از پشتیبان‌ها استفاده کنید.

Polling یا webhook؟

Polling ساده‌ترین است و برای بیشتر ربات‌ها مناسب. اگر در حجم بالا به تحویل فوری نیاز دارید از webhook استفاده کنید که دامنه و HTTPS لازم دارد. میزبانی با Nginx و HTTPS را ببینید.