Telegram बॉट को संदेशों का जवाब देने के लिए हर समय चालू रहना पड़ता है। इसे लैपटॉप पर चलाने का मतलब है कि ढक्कन बंद करते ही वह ऑफ़लाइन हो जाता है। एक छोटा VPS महीने के कुछ डॉलर में यह समस्या हल कर देता है। यह गाइड Python बॉट को systemd सेवा के रूप में चलाती है ताकि वह बूट पर शुरू हो और क्रैश के बाद फिर चले।
कितना बड़ा VPS?
ज़्यादातर बॉट हल्के होते हैं। 1 से 2 vCPU और 2 GB RAM वाला प्लान काफ़ी है। सुझाए गए प्लान के लिए Telegram बॉट होस्टिंग देखें।
चरण 1: बॉट टोकन पाएँ
Telegram पर @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()
पोलिंग को खुले पोर्ट की ज़रूरत नहीं, इसलिए आपको डोमेन या वेबहुक सेट अप नहीं करना पड़ता।
चरण 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से लॉग जाँचें।- अगर बॉट डेटा सहेजता है तो बैकअप इस्तेमाल करें।
पोलिंग या वेबहुक?
पोलिंग सबसे सरल है और ज़्यादातर बॉट के लिए ठीक है। अगर ऊँची मात्रा में तत्काल डिलीवरी चाहिए तो वेबहुक इस्तेमाल करें, जिसके लिए डोमेन और HTTPS चाहिए। Nginx और HTTPS के साथ होस्टिंग देखें।