Přejít na obsah
Aktuální kupón:sleva 10 %Uplatnit v objednávce

Discord bot: nahrání kódu, package.json a spuštění

Připravíte projekt bota v Node.js, správně vyplníte package.json, nahrajete soubory do zákaznické zóny, nastavíte spuštění, zjistíte verzi Node.js a bota spustíte.

  • začátečník
  • ~15 min
  • Aktualizováno 1. 10. 2026

Bot napsaný v Node.js u nás běží nepřetržitě a po pádu se sám spustí znovu. Ukážeme, jak projekt připravit v počítači, co nahrát a co ne, jak nastavit spuštění a jak zjistit verzi Node.js.

Co budete potřebovat

  • Discord bota u StormHostu
  • Kód bota v JavaScriptu (Node.js), ideálně odzkoušený v počítači
  • Token bota z Discord Developer Portalu (návod)
  • Asi 15 minut

Jak bot u nás běží#

  • Prostředí je Node.js. Bot je obyčejná aplikace Node.js, nejčastěji s knihovnou discord.js.
  • Soubory bota spravujete v záložce Soubory (správce souborů v prohlížeči).
  • Spuštění určuje záložka Nastavení: Příkaz pro spuštění (celý příkaz, jen pro čtení) a Proměnné (například název hlavního souboru).
  • Výpis bota (všechno z console.log a chyby) vidíte v záložce Konzole, tam jsou i tlačítka Spustit, Restartovat a Vypnout.
  • Automatický restart: když bot spadne, spustí se znovu. Běží 24 hodin denně, i když máte vypnutý počítač.
  • Paměť je omezená podle balíčku. Využití vidíte pod konzolí.

Příprava projektu v počítači#

Doporučená struktura projektu:

text
muj-bot/
├── package.json
├── package-lock.json
├── index.js
├── deploy-commands.js
├── .env
├── .gitignore
├── commands/
│   └── utility/
│       └── ping.js
└── node_modules/

package.json#

package.json popisuje projekt: jak se jmenuje, který soubor se spouští a jaké balíčky potřebuje. Vytvoříte ho ve složce projektu příkazem npm init -y a balíčky přidáte příkazem npm install discord.js dotenv. Výsledek upravte zhruba takto:

package.jsonJSON
{
  "name": "muj-bot",
  "version": "1.0.0",
  "private": true,
  "main": "index.js",
  "type": "commonjs",
  "scripts": {
    "start": "node index.js"
  },
  "engines": {
    "node": ">=18"
  },
  "dependencies": {
    "discord.js": "^14.27.0",
    "dotenv": "^18.0.5"
  }
}
PoleCo děláCo nastavit
nameNázev projektu. Malá písmena, bez mezer.Libovolný, například muj-bot.
versionVerze vašeho bota.1.0.0, při změnách můžete zvyšovat.
privatetrue zabrání omylem zveřejnit projekt do registru npm.true
mainHlavní soubor, kterým bot začíná.Stejný soubor, jaký spouštíte, obvykle index.js.
typecommonjs = kód používá require(), module = kód používá import.Podle vašeho kódu. Návody discord.js používají commonjs.
scripts.startPříkaz pro npm start v počítači.node index.js
engines.nodeInformace, jakou verzi Node.js bot potřebuje. Verzi nemění, jen upozorní.>=18 pro discord.js 14.
dependenciesBalíčky, které bot potřebuje, s verzemi. ^14.27.0 znamená „14.27.0 nebo novější 14.x“.Vyplní je npm install <BALICEK>, ručně je nepište.

Soubor package-lock.json vznikne sám a zamyká přesné verze všech balíčků. Nahrajte ho na server spolu s package.json, ať se na serveru nainstalují stejné verze jako v počítači.

JSON nesnese chyby

V package.json musí být klíče i texty ve dvojitých uvozovkách, za posledním řádkem bloku nesmí být čárka a komentáře nejsou povolené. Jedna chyba a instalace balíčků skončí chybou EJSONPARSE.

Co nahrát a co ne#

Soubor nebo složkaNahrát?Proč
index.js, commands/, events/ a další kódAnoSamotný bot.
package.json, package-lock.jsonAnoPodle nich se nainstalují balíčky.
.env s tokenemAno, jen na serverBot z něj čte token. Nikdy ho nedávejte na GitHub ani nikomu neposílejte (návod).
node_modules/NeTisíce souborů. Balíčky se mají nainstalovat na serveru. Balíčky s nativním kódem z Windows by na serveru navíc nefungovaly.
.git/, logs/, testovací dataNeServer je nepotřebuje.

Nahrání do zákaznické zóny#

  1. V zákaznické zóně otevřete Moje služby, klikněte na bota a přejděte na záložku Soubory.
  2. Zůstaňte v kořenové složce /. Sem patří package.json a nejlépe i hlavní soubor bota.
  3. Klikněte na Nahrát a vyberte soubory z kořene projektu (index.js, package.json, package-lock.json, .env …). Soubory můžete do okna i přetáhnout.
  4. Pro každou podsložku (například commands) klikněte na Nová složka, otevřete ji a nahrajte do ní její soubory. Celé složky naráz nahrát nejde.

Velký projekt s mnoha složkami pohodlněji nahrajete přes SFTP, přístup vám zřídí podpora (kontakty). Limity správce souborů najdete v návodu Správa souborů.

Nastavení spuštění#

  1. Přejděte na záložku Nastavení.
  2. Rozbalte Příkaz pro spuštění a podívejte se, jakým příkazem se bot spouští. Příkaz je jen pro čtení. Pokud je zakrytý šrafovaným pruhem, je zapnutý režim streamu. Klikněte nahoře na Zobrazit údaje.
  3. V části Proměnné najděte proměnnou s hlavním souborem (podle popisu, typicky s výchozí hodnotou index.js) a vyplňte název svého hlavního souboru, například index.js nebo bot.js.
  4. Klikněte na Uložit.

Změny proměnných se projeví po dalším spuštění bota.

Instalace balíčků#

Balíčky ze package.json se musí nainstalovat na serveru.

  1. V Příkazu pro spuštění zkontrolujte, jestli obsahuje npm install.
  2. Pokud ano, balíčky se nainstalují samy při každém spuštění bota. V konzoli pak uvidíte výpis instalace, například added 25 packages. První start proto trvá déle.
  3. Pokud npm install v příkazu není, nebo se balíčky přesto nenainstalují (bot hlásí Cannot find module 'discord.js'), napište nám. Složku node_modules z počítače nenahrávejte.

Nový balíček přidáte tak, že ho nainstalujete v počítači (npm install <BALICEK>), na server nahrajete nový package.json a package-lock.json a bota restartujete.

Verze Node.js#

Verzi Node.js, na které bot běží, zjistíte z výpisu. Na úplný začátek hlavního souboru přidejte:

index.jsJavaScript
console.log('Node.js', process.version);

Po spuštění uvidíte v Konzoli například Node.js v22.….

  • process.version – verze Node.js, na které kód právě běží, ve tvaru v<HLAVNI>.<VEDLEJSI>.<OPRAVA>.

Co s ní:

Knihovna nebo funkcePotřebná verze Node.js
discord.js 1418 nebo novější
process.loadEnvFile() (načtení .env bez balíčku)20.12 nebo novější
require() balíčků, které existují jen jako ES moduly20.19 nebo 22.12 a novější

Na svém počítači používejte stejnou hlavní verzi jako na serveru, ať se kód chová stejně. Doporučené jsou verze LTS (k 1. 10. 2026 je aktivní LTS Node.js 24, udržovaná LTS Node.js 22). Pole engines v package.json verzi na serveru nezmění. Pokud bot potřebuje jinou verzi Node.js, napište nám.

První start a kontrola#

  1. Přejděte na záložku Konzole a klikněte na Spustit.

  2. Sledujte výpis:

    Výstuptext
    Node.js v22.…
    Ready! Logged in as MujBot#1234

    Řádek Ready! … vypisuje bot z návodu první bot v discord.js. Váš bot může vypisovat jiný text.

  3. Na Discordu má bot zelenou tečku (online).

Aktualizace kódu#

  1. V počítači kód upravte a vyzkoušejte.
  2. V záložce Soubory nahrajte změněné soubory. Nahrání stejnojmenného souboru se zeptá na přepsání, potvrďte ho.
  3. V záložce Konzole klikněte na Restartovat. Node.js načítá kód jen při startu.

Před větší změnou si stáhněte důležité soubory do počítače (tlačítko Stáhnout), ať se máte kam vrátit.

Bot s databází#

Data, která mají přežít restart (body, varování, nastavení serverů), ukládejte do databáze, ne do proměnných v paměti.

  1. V záložce Databáze vytvořte databázi: Název databáze například bot, Povolený přístup z %, tlačítko Vytvořit databázi. Kolik databází můžete mít, ukazuje řádek Využito X z Y.

  2. Údaje zapište do .env na serveru:

    .envini
    DB_HOST=<IP_DATABAZE>
    DB_PORT=3306
    DB_USER=<UZIVATEL>
    DB_PASSWORD=<HESLO>
    DB_NAME=<NAZEV_DATABAZE>

    <IP_DATABAZE> a port jsou v poli Server (část před a za dvojtečkou), ostatní údaje opište z polí Uživatel, Heslo a Název databáze.

  3. V počítači nainstalujte knihovnu mysql2 (npm install mysql2) a v kódu vytvořte připojení:

    db.jsJavaScript
    const mysql = require('mysql2/promise');
    
    const pool = mysql.createPool({
      host: process.env.DB_HOST,
      port: Number(process.env.DB_PORT),
      user: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
      database: process.env.DB_NAME,
      connectionLimit: 5,
    });
    
    module.exports = pool;
    • mysql.createPool({ … }) – vytvoří sadu připojení, která se opakovaně používají. Je odolnější než jedno připojení, které může po delší nečinnosti spadnout.
    • Number(process.env.DB_PORT) – hodnoty z .env jsou text, port musí být číslo.
    • connectionLimit: 5 – nejvýš 5 současných připojení. Botovi to stačí.

    Použití: const db = require('./db'); a pak const [radky] = await db.query('SELECT * FROM body WHERE uzivatel = ?', [id]);. Otazník je zástupný znak: hodnotu do dotazu vloží knihovna bezpečně, chrání to proti SQL injection.

Databázi si pravidelně exportujte, například v programu HeidiSQL (postup).

Bezpečné vypnutí bota#

Při kliknutí na Vypnout nebo Restartovat dostane proces signál k ukončení. Bot se může slušně odhlásit a dokončit zápisy:

index.jsJavaScript
async function ukoncit(signal) {
  console.log(`Přijat ${signal}, ukončuji bota…`);
  await client.destroy();
  process.exit(0);
}
process.on('SIGINT', ukoncit);
process.on('SIGTERM', ukoncit);
  • process.on('SIGINT' | 'SIGTERM', …) – zachytí žádost o ukončení (v počítači ji pošle Ctrl+C, na serveru vypnutí).
  • client.destroy() – odpojí bota od Discordu.
  • process.exit(0) – ukončí proces s kódem 0 (bez chyby).

Pokud máte databázi, zavřete před process.exit i ji (await pool.end()).

Pro pokročilé: TypeScript a jiné sestavení#

Server spouští JavaScript. Kód v TypeScriptu (nebo s jiným sestavením) zkompilujte v počítači (například npx tsc), na server nahrajte výsledné soubory .js (typicky složku dist) a v Proměnných nastavte hlavní soubor na zkompilovaný soubor. Zdrojové soubory .ts a vývojové balíčky (devDependencies) na serveru nepotřebujete.

Ověření#

  • V Konzoli je výpis startu bez chyby a bot nepadá dokola.
  • Bot je na Discordu online a reaguje na příkazy.
  • Po kliknutí na Restartovat se bot do pár sekund vrátí online.

Když něco nefunguje#

Error: Cannot find module 'discord.js'#

Balíčky nejsou nainstalované. Zkontrolujte, že package.json je v kořenové složce a obsahuje discord.js v dependencies. Pak postupujte podle části „Instalace balíčků“.

Error: Cannot find module '/…/index.js'#

Hlavní soubor nesedí s nastavením: soubor má jiný název, je v podsložce, nebo nesedí velká a malá písmena (Index.js a index.js jsou na serveru dva různé soubory). Opravte proměnnou s hlavním souborem, nebo soubor přesuňte do kořene.

npm error code EJSONPARSE#

package.json není platný JSON (chybějící čárka nebo uvozovka, čárka navíc, komentář). Opravte ho v počítači, ověřte příkazem npm install a nahrajte znovu.

Bot se spustí a hned spadne, pořád dokola#

Automatický restart chybu v kódu nevyřeší. Najděte v Konzoli první chybu po startu (řádek s Error a seznamem souborů pod ním), opravte ji a bota spusťte znovu. Vysvětlení nejčastějších hlášek je v návodu logy a chyby.

An invalid token was provided. nebo Used disallowed intents#

Problém s tokenem nebo intenty v Developer Portalu. Postup je v návodu token a intenty.

SyntaxError: Cannot use import statement outside a module#

Kód používá import, ale projekt je nastavený na require(). V package.json nastavte "type": "module", nebo kód přepište na require(). Podrobně v návodu logy a chyby.

Shrnutí

  • Do kořenové složky v záložce Soubory nahrajte kód, package.json, package-lock.json a .env. node_modules nenahrávejte.
  • main v package.json a proměnná s hlavním souborem v záložce Nastavení musí ukazovat na stejný soubor.
  • Balíčky se instalují na serveru. Zda automaticky, poznáte podle npm install v Příkazu pro spuštění.
  • Verzi Node.js zjistíte řádkem console.log(process.version). discord.js 14 potřebuje Node.js 18 a novější.
  • Po každé změně kódu bota restartujte.

Hledání v návodech