Skip to content
VDS · Aplikacije i botovi

Discord bot: pokretanje i nadzor

Pokretanje Discord bota na VPS-u pod systemd-om, ograničavanje memorije, čitanje logova, rešavanje rate limit-a i ažuriranje bez zastoja.

Ažurirano 23. avgust 2026.

Discord bot drži stalnu WebSocket vezu sa Discord gateway-om, pa mu treba mašina koja je stalno uključena. Zahtevi za resursima su mu skromni, ali za razliku od Telegram bota lošije podnosi restarte: svaki restart zahteva novu vezu sa gateway-om.

Instalacija

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 i ID-ove stavi u .env. Token iz Discord Developer Portal-a je pun pristup botu — tretiraj ga kao lozinku.

Za Python biblioteke postupak je isti, uz virtuelno okruženje; vidi Python aplikacija.

Servis

/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 umesto standardnih pet sekundi: kada veza sa gateway-om padne, česti restarti dovode do privremene blokade konekcija sa Discord-ove strane.

MemoryMax sprečava da bot sa curenjem memorije povuče celu mašinu za sobom — posebno važno na VDS-1 sa 2 GB.

Nadzor

systemctl status dbot
journalctl -u dbot -f
journalctl -u dbot --since today -p err
systemctl show dbot -p NRestarts

NRestarts je najkorisnija metrika: ako brojač raste svakog sata, bot pada i Restart=always to samo maskira.

Potrošnja memorije određenog servisa:

systemctl status dbot | grep Memory

Za opštu sliku mašine pogledaj grafikone CPU-a, memorije i saobraćaja u „Pregledu“ panela na /hosting/vds/m/<id>.

Ograničenje brzine

Discord ograničava broj API poziva. Znaci su 429 greške u logovima i komande koje se „zaglave“. Šta pomaže:

  • ne šalji poruke u petlji bez pauza;
  • menjaj jednu poruku umesto da šalješ nove;
  • keširaj referentne podatke umesto da ih tražiš na svaki događaj;
  • koristi Redis red za masovna obaveštenja.

Ažuriranje

cd /srv/dbot
sudo -u dbot git pull
sudo -u dbot npm ci --omit=dev
systemctl restart dbot
journalctl -u dbot -n 50

Poslednja linija je obavezna: uveri se da se bot povezao na gateway, a nije pao zbog nove zavisnosti.

Česte greške

SimptomUzrok
Bot je onlajn ali ne odgovara na komandePotrebni intents nisu uključeni u Developer Portal-u
Stalna ponovna povezivanjaRestartSec je prekratak, ili je pad u event handler-u
Invalid tokenToken je regenerisan a .env nije ažuriran
Komande se duplirajuRade dve kopije bota — proveri ps aux | grep node
Mašina počinje da svopujeNema MemoryMax, curenje u kodu

Ne pokreći bota pod screen ili tmux. Sesija preživi prekid SSH veze, ali ne i restart mašine — a za mesec dana ćeš zaboraviti gde uopšte radi.