Bot Discord: menjalankan dan memantau
Menjalankan bot Discord di VPS dengan systemd, membatasi memori, membaca log, menangani rate limit, dan memperbarui tanpa downtime.
Diperbarui 23 Agustus 2026
Bot Discord memegang koneksi WebSocket persisten ke gateway Discord, jadi ia membutuhkan mesin yang tetap menyala. Kebutuhan sumber dayanya tergolong moderat, tetapi berbeda dari bot Telegram, ia lebih buruk dalam menangani restart: setiap restart memaksa koneksi baru ke gateway.
Instalasi
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
Letakkan token dan ID di .env. Token dari Discord Developer Portal adalah akses penuh ke bot — perlakukan seperti kata sandi.
Untuk pustaka Python prosedurnya sama, dengan virtual environment; lihat Aplikasi Python.
Service
/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 alih-alih lima detik standar: saat koneksi ke gateway terputus, restart yang terlalu sering menyebabkan blokir sementara pada koneksi dari sisi Discord.
MemoryMax mencegah bot dengan kebocoran memori menyeret seluruh mesin down bersamanya — terutama penting pada VDS-1 dengan 2 GB.
Pemantauan
systemctl status dbot
journalctl -u dbot -f
journalctl -u dbot --since today -p err
systemctl show dbot -p NRestarts
NRestarts adalah metrik yang paling berguna: jika penghitungnya bertambah setiap jam, bot sedang crash dan Restart=always menutupinya.
Penggunaan memori service tertentu:
systemctl status dbot | grep Memory
Untuk gambaran keseluruhan mesin, lihat grafik CPU, memori, dan trafik di "Overview" panel pada /hosting/vds/m/<id>.
Rate limiting
Discord membatasi panggilan API. Tandanya adalah error 429 di log dan perintah yang "macet". Yang membantu:
- jangan mengirim pesan dalam loop tanpa jeda;
- edit satu pesan alih-alih mengirim pesan baru;
- cache data referensi alih-alih memintanya pada setiap event;
- gunakan antrean Redis untuk siaran massal.
Pembaruan
cd /srv/dbot
sudo -u dbot git pull
sudo -u dbot npm ci --omit=dev
systemctl restart dbot
journalctl -u dbot -n 50
Baris terakhir wajib: pastikan bot terhubung ke gateway alih-alih crash pada dependensi baru.
Error umum
| Gejala | Penyebab |
|---|---|
| Bot online tetapi tidak merespons perintah | Intent yang diperlukan tidak diaktifkan di Developer Portal |
| Reconnect terus-menerus | RestartSec terlalu pendek, atau crash di event handler |
Invalid token | Token diregenerasi dan .env tidak diperbarui |
| Perintah terduplikasi | Dua salinan bot berjalan — periksa ps aux | grep node |
| Mesin mulai swapping | Tidak ada MemoryMax, ada kebocoran di kode |
Jangan jalankan bot di bawah
screenatautmux. Sesi bertahan saat SSH terputus, tetapi tidak saat mesin reboot — dan dalam sebulan Anda akan lupa di mana bot itu berjalan.