ایک Telegram bot جو صرف آپ کے لیپ ٹاپ کے کھلے رہنے تک چلتا ہے وہ دراصل چل نہیں رہا — یہ demo کر رہا ہے۔ اسے دراصل آن لائن رکھنے کو، رات 3 بجے جواب دیتا، آپ کے reboots اور اپنے کریشز سے بچتا، اسے ایک سرور پر رہنا چاہیے۔ یہ رہا پورا راستہ، ابتدا سے انتہا تک، کمانڈز کے ساتھ۔
پہلے اچھی خبر: ایک bot ایک چھوٹا ورک لوڈ ہے۔ یہ زیادہ تر messages کے انتظار میں idle بیٹھتا ہے، تو سب سے سستا باکس اسے خوب چلاتا ہے — کوئی dedicated IP، domain، کوئی fancy چیز نہیں۔
1. BotFather سے ایک token لیں
Telegram میں، @BotFather کو message کریں، /newbot بھیجیں، ایک نام اور username چنیں۔ یہ آپ کو ایک token دیتا ہے جو 12345:AAH... جیسا لگتا ہے۔ اسے ایک پاس ورڈ کی طرح برتیں — جس کے پاس یہ ہو وہ آپ کے bot کو کنٹرول کرتا ہے۔
2. ایک minimal bot
سرور میں SSH کریں، Python اور لائبریری سیٹ کریں:
sudo apt update && sudo apt install -y python3-venv
mkdir ~/mybot && cd ~/mybot
python3 -m venv venv && source venv/bin/activate
pip install python-telegram-bot
ایک bot جو جواب دیتا ہے — ~/mybot/bot.py:
import os
from telegram.ext import ApplicationBuilder, CommandHandler
async def start(update, ctx):
await update.message.reply_text("Alive and on a server. 🟢")
app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
نوٹ کریں یہ token کو ایک environment variable سے پڑھتا ہے — hardcoded نہیں۔ یہ اگلے قدم میں اہم ہے۔
3. وہ حصہ جو دراصل اسے چلتا رکھتا ہے: systemd
اگر آپ بس python bot.py چلائیں، تو یہ اُس لمحے مر جاتا ہے جب آپ SSH بند کریں۔ ایک systemd سروس ہی اسے logout، کریشز، اور reboots سے بچاتی ہے۔ /etc/systemd/system/mybot.service بنائیں:
[Unit]
Description=Telegram bot
After=network-online.target
[Service]
WorkingDirectory=/home/youruser/mybot
Environment=BOT_TOKEN=12345:AAH...your-token
ExecStart=/home/youruser/mybot/venv/bin/python bot.py
Restart=always
RestartSec=5
User=youruser
[Install]
WantedBy=multi-user.target
پھر:
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo systemctl status mybot # active (running) کہنا چاہیے
journalctl -u mybot -f # live logs
Restart=always وہ لائن ہے جو اصل کام کرتی ہے — کریش، اور یہ 5 سیکنڈ میں واپس۔ enable مطلب یہ ایک ری بوٹ کے بعد آتا ہے۔ یہی "میں نے ایک بار ایک bot چلایا" اور "میرا bot اوپر ہے" کے بیچ پورا فرق ہے۔
4. کوئی domain یا کھلے ports کیوں نہیں
bot long polling استعمال کرتا ہے — یہ updates کے لیے Telegram تک پہنچتا ہے، تو کسی چیز کو اندر پہنچنے کی ضرورت نہیں۔ کوئی public URL، inbound firewall rule، dedicated IP نہیں۔ بالکل اسی لیے ایک NAT VPS (shared IP، ایک پورٹ پر SSH) ایک bot کے لیے ایک ٹھیک اور سستا گھر ہے۔ Webhooks بہت زیادہ حجم کے لیے موجود ہیں، لیکن آپ کو شروع کرنے کو تقریباً یقیناً ان کی ضرورت نہیں۔
ایماندار احتیاطیں
- Token صفائی: یہاں یہ وضاحت کو unit فائل میں inline ہے — ایک لاک-ڈاؤن باکس پر ٹھیک، لیکن کسی شیئر-شدہ چیز کے لیے، اسے بجائے ایک root-only
EnvironmentFileسے لوڈ کریں، اور اسے کبھی git پر commit نہ کریں۔ لیک ہوا؟ BotFather میں revoke کریں، ایک نیا جاری کریں۔ - بھاری bots: اگر آپ کا bot خود کام کرے (image generation، ایک local ماڈل)، تو یہ اب چھوٹا نہیں — اُس حساب سے size کریں۔
بس۔ پہلے باکس کو security checklist سے لاک کریں، سروس ڈالیں، اور آپ کا bot آن لائن رہتا ہے چاہے آپ رہیں یا نہ۔ ایک کرپٹو-ادا VPS پر آپ اسے فیصلہ کرنے کے ایک منٹ بعد چلتا رکھ سکتے ہیں۔
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔