Discord bot: spustenie a monitoring
Spustenie Discord bota na VPS pod systemd, obmedzenie pamäte, čítanie logov, riešenie rate limitov a aktualizácia bez výpadku.
Aktualizované 23. augusta 2026
Discord bot drží trvalé WebSocket spojenie s Discord gateway, takže potrebuje stroj, ktorý je stále zapnutý. Jeho nároky na zdroje sú skromné, no na rozdiel od Telegram bota horšie znáša reštarty: každý z nich vynúti nové pripojenie ku gateway.
Inštalácia
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
Token a ID vlož do .env. Token z Discord Developer Portal je plný prístup k botovi — správaj sa k nemu ako k heslu.
Pri Python knižniciach je postup rovnaký, s virtuálnym prostredím; pozri Python aplikácia.
Služba
/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 namiesto štandardných piatich sekúnd: keď spojenie s gateway spadne, časté reštarty vedú k dočasnému blokovaniu pripojení zo strany Discordu.
MemoryMax zabráni tomu, aby bot s únikom pamäte stiahol so sebou celý stroj — dôležité najmä na VDS-1 s 2 GB.
Monitorovanie
systemctl status dbot
journalctl -u dbot -f
journalctl -u dbot --since today -p err
systemctl show dbot -p NRestarts
NRestarts je najužitočnejšia metrika: ak počítadlo rastie každú hodinu, bot padá a Restart=always to len maskuje.
Využitie pamäte konkrétnej služby:
systemctl status dbot | grep Memory
Pre celkový obraz o stroji pozri grafy CPU, pamäte a prevádzky v „Prehľade“ panela na /hosting/vds/m/<id>.
Rate limiting
Discord obmedzuje volania API. Príznakmi sú chyby 429 v logoch a príkazy, ktoré „zamrznú“. Pomáha:
- neposielaj správy v slučke bez prestávok;
- uprav jednu správu namiesto posielania nových;
- cacheuj referenčné dáta namiesto ich vyžadovania pri každej udalosti;
- použi frontu Redis na hromadné rozosielanie.
Aktualizácia
cd /srv/dbot
sudo -u dbot git pull
sudo -u dbot npm ci --omit=dev
systemctl restart dbot
journalctl -u dbot -n 50
Posledný riadok je povinný: uisti sa, že sa bot pripojil ku gateway a nespadol na novej závislosti.
Časté chyby
| Príznak | Príčina |
|---|---|
| Bot je online, ale neodpovedá na príkazy | V Developer Portal nie sú zapnuté potrebné intents |
| Neustále reconnecty | RestartSec je príliš krátky alebo pád v obsluhe udalosti |
Invalid token | Token bol vygenerovaný nanovo a .env nebol aktualizovaný |
| Príkazy sa duplikujú | Bežia dve kópie bota — skontroluj ps aux | grep node |
| Stroj začína swapovať | Chýba MemoryMax, únik v kóde |
Nespúšťaj bota pod
screenalebotmux. Session prežije odpojenie SSH, ale nie reštart stroja — a o mesiac zabudneš, kde vlastne beží.