Discord بوٹ: لانچ اور مانیٹرنگ
VPS پر systemd کے تحت Discord بوٹ چلانا، میموری محدود کرنا، لاگز پڑھنا، rate limits سے نمٹنا، اور ڈاؤن ٹائم کے بغیر اپ ڈیٹ کرنا۔
اپ ڈیٹ 23 اگست، 2026
A Discord بوٹ Discord گیٹ وے سے مستقل WebSocket کنکشن رکھتا ہے، اس لیے اسے ایسی مشین درکار ہوتی ہے جو آن رہے۔ اس کے وسائل کی ضرورت معمولی ہے، لیکن Telegram بوٹ کے برعکس یہ ری اسٹارٹ کو زیادہ بری طرح سنبھالتا ہے: ہر ری اسٹارٹ گیٹ وے سے نئے کنکشن کا تقاضا کرتا ہے۔
انسٹالیشن
useradd -r -m -d /srv/dbot -s /usr/sbin/nologin dbot
cd /srv/dbot && sudo -u dbot git clone https://github.com/you/bot.git .
sudo -u dbot npm ci --omit=dev
install -o dbot -g dbot -m 600 /dev/null /srv/dbot/.env
ٹوکن اور IDs کو .env میں رکھیں۔ Discord Developer Portal سے حاصل کردہ ٹوکن بوٹ تک مکمل رسائی ہے — اسے پاس ورڈ کی طرح محفوظ رکھیں۔
Python لائبریریوں کے لیے طریقہ کار وہی ہے، ورچوئل انوائرنمنٹ کے ساتھ؛ دیکھیں Python ایپ۔
سروس
/etc/systemd/system/dbot.service:
[Unit]
Description=Discord bot
After=network-online.target
Wants=network-online.target
[Service]
User=dbot
WorkingDirectory=/srv/dbot
EnvironmentFile=/srv/dbot/.env
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=15
MemoryMax=512M
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now dbot
RestartSec=15 معیاری پانچ سیکنڈ کے بجائے: جب گیٹ وے سے کنکشن ٹوٹ جائے تو بار بار ری اسٹارٹ Discord کی طرف سے کنکشنز پر عارضی پابندی کا سبب بنتا ہے۔
MemoryMax میموری لیک والے بوٹ کو پوری مشین کو اپنے ساتھ گرنے سے روکتا ہے — خاص طور پر VDS-1 پر 2 GB کے ساتھ یہ اہم ہے۔
مانیٹرنگ
systemctl status dbot
journalctl -u dbot -f
journalctl -u dbot --since today -p err
systemctl show dbot -p NRestarts
NRestarts سب سے کارآمد میٹرک ہے: اگر کاؤنٹر ہر گھنٹے بڑھ رہا ہو تو بوٹ کریش ہو رہا ہے اور Restart=always اسے چھپا رہا ہے۔
کسی مخصوص سروس کا میموری استعمال:
systemctl status dbot | grep Memory
مشین کی مجموعی تصویر کے لیے، پینل کے /hosting/vds/m/<id> پر "Overview" میں CPU، میموری اور ٹریفک کے گراف دیکھیں۔
ریٹ لیمٹنگ
Discord API کالز پر ریٹ لیمٹ لگاتا ہے۔ اس کی علامات لاگز میں 429 ایررز اور ایسے کمانڈز ہیں جو "اٹک" جاتے ہیں۔ جو مدد کرتا ہے:
- بغیر وقفے کے لوپ میں پیغامات نہ بھیجیں؛
- نئے پیغامات بھیجنے کے بجائے ایک ہی پیغام میں ترمیم کریں؛
- ہر ایونٹ پر ڈیٹا مانگنے کے بجائے ریفرنس ڈیٹا کیش کریں؛
- بڑے پیمانے پر براڈکاسٹ کے لیے Redis قطار استعمال کریں۔
اپ ڈیٹنگ
cd /srv/dbot
sudo -u dbot git pull
sudo -u dbot npm ci --omit=dev
systemctl restart dbot
journalctl -u dbot -n 50
آخری لائن لازمی ہے: یقینی بنائیں کہ بوٹ گیٹ وے سے جڑا ہے، نہ کہ کسی نئی ڈیپنڈنسی پر کریش ہوا۔
عام ایررز
| علامت | وجہ |
|---|---|
| بوٹ آن لائن ہے لیکن کمانڈز کا جواب نہیں دیتا | Developer Portal میں مطلوبہ intents فعال نہیں ہیں |
| مسلسل ری کنیکٹس | RestartSec بہت کم ہے، یا ایونٹ ہینڈلر میں کریش ہے |
Invalid token | ٹوکن دوبارہ جنریٹ ہوا اور .env اپ ڈیٹ نہیں ہوا |
| کمانڈز ڈپلیکیٹ ہو رہے ہیں | بوٹ کی دو کاپیاں چل رہی ہیں — ps aux | grep node چیک کریں |
| مشین سوئپنگ شروع کر دیتی ہے | MemoryMax نہیں ہے، کوڈ میں لیک ہے |
بوٹ کو
screenیاtmuxکے تحت نہ چلائیں۔ سیشن SSH ڈسکنیکٹ سے بچ جاتا ہے، لیکن مشین ری بوٹ سے نہیں — اور ایک مہینے میں آپ بھول جائیں گے کہ یہ کہاں چل رہا ہے۔