Discord बॉट: लॉन्च और मॉनिटरिंग
VPS पर systemd के तहत Discord बॉट चलाना, मेमोरी सीमित करना, लॉग पढ़ना, rate limits से निपटना, और डाउनटाइम के बिना अपडेट करना।
23 अगस्त 2026 को अपडेट किया गया
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
टोकन और ID को .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 मेमोरी लीक वाले बॉट को पूरी मशीन को अपने साथ डुबोने से रोकता है — 2 GB वाले VDS-1 पर यह खास तौर पर ज़रूरी है।
मॉनिटरिंग
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 डिस्कनेक्ट बचा लेता है, लेकिन मशीन रीबूट नहीं — और एक महीने में आप भूल जाएँगे कि यह चल कहाँ रहा है।