Przejdź do treści
Aktualny kupon:10% zniżkiUżyj w zamówieniu

Bot Discord: przesyłanie kodu, package.json i uruchomienie bota

Przygotuj projekt bota Node.js, poprawnie wypełnij package.json, prześlij pliki w strefie klienta, skonfiguruj uruchamianie, sprawdź wersję Node.js i uruchom bota.

  • początkujący
  • ~15 min
  • Zaktualizowano 9.10.2026

Bot Node.js hostowany u nas działa całą dobę i po awarii uruchamia się ponownie sam. Pokażemy, jak przygotować projekt na komputerze, co przesłać, a czego nie, jak skonfigurować uruchamianie i jak sprawdzić wersję Node.js.

Czego potrzebujesz

  • Bot Discord w StormHost
  • Kod bota w JavaScript (Node.js), najlepiej przetestowany na komputerze
  • Token bota z Discord Developer Portal (poradnik)
  • Około 15 minut

Jak bot działa na naszych serwerach#

  • Środowiskiem jest Node.js. Bot to zwykła aplikacja Node.js, zazwyczaj zbudowana z biblioteką discord.js.
  • Plikami bota zarządzasz w zakładce Pliki (menedżer plików w przeglądarce).
  • Uruchamianie ustawiasz w zakładce Ustawienia: Polecenie startowe (pełne polecenie, tylko do odczytu) i Zmienne (na przykład nazwa pliku głównego).
  • Wyjście bota (wszystko z console.log i błędy) wyświetla zakładka Konsola, w której są też przyciski Start, Restart i Stop.
  • Automatyczny restart: gdy bot się zawiesi, uruchamia się ponownie. Działa 24 godziny na dobę, nawet gdy Twój komputer jest wyłączony.
  • Pamięć jest ograniczona pakietem. Zużycie widzisz pod konsolą.

Przygotowanie projektu na komputerze#

Zalecana 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 opisuje projekt: jego nazwę, plik, od którego się uruchamia, i pakiety, których potrzebuje. Utwórz go w folderze projektu poleceniem npm init -y, a pakiety dodaj poleceniem npm install discord.js dotenv. Potem popraw wynik tak, aby wyglądał mniej więcej tak:

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 robiCo ustawić
nameNazwa projektu. Małymi literami, bez spacji.Dowolna, na przykład muj-bot.
versionWersja Twojego bota.1.0.0; możesz ją podnosić przy kolejnych zmianach.
privatetrue zapobiega przypadkowemu opublikowaniu projektu w rejestrze npm.true
mainPlik główny, od którego bot startuje.Ten sam plik, który uruchamiasz, zwykle index.js.
typecommonjs = kod używa require(), module = kod używa import.Zależy od Twojego kodu. Poradniki discord.js używają commonjs.
scripts.startPolecenie dla npm start na komputerze.node index.js
engines.nodeMówi, jakiej wersji Node.js bot potrzebuje. Nie zmienia wersji, tylko ostrzega.>=18 dla discord.js 14.
dependenciesPakiety, których bot potrzebuje, z wersjami. ^14.27.0 oznacza „14.27.0 lub dowolna nowsza 14.x”.Wypełnia je npm install <PAKIET>; nie wpisuj ich ręcznie.

Plik package-lock.json powstaje automatycznie i blokuje dokładne wersje wszystkich pakietów. Prześlij go na serwer razem z package.json, aby serwer zainstalował te same wersje co Twój komputer.

JSON nie wybacza błędów

W package.json klucze i ciągi znaków muszą być w podwójnych cudzysłowach, po ostatnim elemencie bloku nie może być przecinka, a komentarze są niedozwolone. Jeden błąd i instalacja pakietów kończy się błędem EJSONPARSE.

Co przesłać, a czego nie#

Plik lub folderPrzesłać?Dlaczego
index.js, commands/, events/ i pozostały kodTakSam bot.
package.json, package-lock.jsonTakNa ich podstawie instalowane są pakiety.
.env z tokenemTak, tylko na serwerBot czyta z niego token. Nigdy nie wysyłaj go na GitHub ani nikomu nie udostępniaj (poradnik).
node_modules/NieTysiące plików. Pakiety powinny być instalowane na serwerze. Poza tym pakiety z kodem natywnym zbudowane w Windows nie działałyby na serwerze.
.git/, logs/, dane testoweNieSerwer ich nie potrzebuje.

Przesyłanie w strefie klienta#

  1. W strefie klienta otwórz Moje usługi, kliknij swojego bota i przejdź do zakładki Pliki.
  2. Zostań w folderze głównym /. Tutaj trafia package.json, a najlepiej także plik główny bota.
  3. Kliknij Prześlij i wybierz pliki z katalogu głównego projektu (index.js, package.json, package-lock.json, .env …). Pliki możesz też przeciągnąć do okna.
  4. Dla każdego podfolderu (na przykład commands) kliknij Nowy folder, otwórz go i prześlij do niego pliki. Całych folderów nie da się przesłać naraz.

Duży projekt z wieloma folderami łatwiej przesłać przez SFTP; dostęp skonfiguruje dla Ciebie pomoc techniczna (kontakt). Limity menedżera plików znajdziesz w poradniku o zarządzaniu plikami.

Konfiguracja uruchamiania#

  1. Przejdź do zakładki Ustawienia.
  2. Rozwiń Polecenie startowe i sprawdź, jakie polecenie uruchamia bota. Polecenie jest tylko do odczytu. Jeśli zakrywa je kreskowany pasek, włączony jest tryb streamera. Kliknij Pokaż szczegóły u góry.
  3. W sekcji Zmienne znajdź zmienną pliku głównego (po opisie, zazwyczaj z wartością domyślną index.js) i wpisz nazwę swojego pliku głównego, na przykład index.js lub bot.js.
  4. Kliknij Zapisz.

Zmiany zmiennych zaczynają obowiązywać przy następnym uruchomieniu bota.

Instalacja pakietów#

Pakiety z package.json muszą zostać zainstalowane na serwerze.

  1. Sprawdź, czy Polecenie startowe zawiera npm install.
  2. Jeśli tak, pakiety są instalowane automatycznie przy każdym uruchomieniu bota. Konsola pokazuje wtedy wynik instalacji, na przykład added 25 packages. Dlatego pierwsze uruchomienie trwa dłużej.
  3. Jeśli npm install nie ma w poleceniu albo pakiety mimo to się nie instalują (bot zgłasza Cannot find module 'discord.js'), skontaktuj się z nami. Nie przesyłaj folderu node_modules z komputera.

Aby dodać nowy pakiet, zainstaluj go na komputerze (npm install <PAKIET>), prześlij na serwer nowe package.json i package-lock.json i zrestartuj bota.

Wersja Node.js#

Wersję Node.js, na której działa bot, poznasz z jego wyjścia. Dodaj na samej górze pliku głównego:

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

Po uruchomieniu Konsola pokaże na przykład Node.js v22.….

  • process.version – wersja Node.js, na której aktualnie działa kod, w formie v<MAJOR>.<MINOR>.<PATCH>.

Co z tym zrobić:

Biblioteka lub funkcjaWymagana wersja Node.js
discord.js 1418 lub nowsza
process.loadEnvFile() (wczytywanie .env bez pakietu)20.12 lub nowsza
require() pakietów istniejących tylko jako moduły ES20.19 lub 22.12 i nowsze

Na komputerze używaj tej samej wersji głównej co na serwerze, aby kod zachowywał się tak samo. Zalecane są wersje LTS (według stanu na 1 października 2026 Node.js 24 jest aktywnym LTS, a Node.js 22 LTS w fazie utrzymania). Pole engines w package.json nie zmienia wersji na serwerze. Jeśli Twój bot potrzebuje innej wersji Node.js, skontaktuj się z nami.

Pierwsze uruchomienie i kontrola#

  1. Przejdź do zakładki Konsola i kliknij Start.

  2. Obserwuj wyjście:

    Wyniktext
    Node.js v22.…
    Ready! Logged in as MujBot#1234

    Linię Ready! … wypisuje bot z poradnika pierwszy bot discord.js. Twój bot może wypisać coś innego.

  3. Na Discordzie bot ma zieloną kropkę (online).

Aktualizacja kodu#

  1. Popraw i przetestuj kod na komputerze.
  2. W zakładce Pliki prześlij zmienione pliki. Przy przesyłaniu pliku o tej samej nazwie pojawi się pytanie, czy go nadpisać; potwierdź.
  3. W zakładce Konsola kliknij Restart. Node.js wczytuje kod tylko przy starcie.

Przed większą zmianą pobierz ważne pliki na komputer (przycisk Pobierz), aby mieć do czego wrócić.

Bot z bazą danych#

Dane, które mają przetrwać restart (punkty, ostrzeżenia, ustawienia serwera), przechowuj w bazie danych, a nie w zmiennych w pamięci.

  1. W zakładce Baza danych utwórz bazę: Nazwa bazy danych, na przykład bot, Dozwolone połączenia z %, a następnie przycisk Utwórz bazę danych. Linia Wykorzystano X z Y pokazuje, ile baz możesz mieć.

  2. Zapisz dane dostępowe w pliku .env na serwerze:

    .envini
    DB_HOST=<IP_BAZY_DANYCH>
    DB_PORT=3306
    DB_USER=<UZYTKOWNIK>
    DB_PASSWORD=<HASLO>
    DB_NAME=<NAZWA_BAZY>

    <IP_BAZY_DANYCH> i port znajdziesz w polu Host (części przed i po dwukropku); resztę skopiuj z pól Użytkownik, Hasło i Nazwa bazy danych.

  3. Na komputerze zainstaluj bibliotekę mysql2 (npm install mysql2) i utwórz połączenie w kodzie:

    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({ … }) – tworzy zestaw połączeń, które są używane wielokrotnie. Jest odporniejszy niż pojedyncze połączenie, które może zostać zerwane po dłuższej bezczynności.
    • Number(process.env.DB_PORT) – wartości z .env są tekstem; port musi być liczbą.
    • connectionLimit: 5 – maksymalnie 5 połączeń naraz. Dla bota to aż nadto.

    Użycie: const db = require('./db');, a potem const [rows] = await db.query('SELECT * FROM points WHERE user_id = ?', [id]);. Znak zapytania to symbol zastępczy: biblioteka wstawia wartość do zapytania w bezpieczny sposób, co chroni przed SQL injection.

Regularnie eksportuj bazę danych, na przykład programem HeidiSQL (instrukcja).

Czyste wyłączanie bota#

Gdy klikniesz Stop lub Restart, proces otrzymuje sygnał do zakończenia. Bot może się poprawnie wylogować i dokończyć zapisy:

index.jsJavaScript
async function ukoncit(signal) {
  console.log(`Otrzymano ${signal}, wyłączam bota…`);
  await client.destroy();
  process.exit(0);
}
process.on('SIGINT', ukoncit);
process.on('SIGTERM', ukoncit);
  • process.on('SIGINT' | 'SIGTERM', …) – przechwytuje żądanie zakończenia (na komputerze wysyła je Ctrl+C, na serwerze zatrzymanie bota).
  • client.destroy() – rozłącza bota z Discordem.
  • process.exit(0) – kończy proces z kodem 0 (bez błędu).

Jeśli używasz bazy danych, zamknij ją także przed process.exit (await pool.end()).

Dla zaawansowanych: TypeScript i inne kroki budowania#

Serwer uruchamia JavaScript. Kod w TypeScript (lub z innym krokiem budowania) skompiluj na komputerze (na przykład npx tsc), prześlij na serwer wynikowe pliki .js (zazwyczaj folder dist) i w Zmiennych ustaw jako plik główny plik skompilowany. Pliki źródłowe .ts ani pakiety deweloperskie (devDependencies) nie są na serwerze potrzebne.

Weryfikacja#

  • Konsola pokazuje wyjście startowe bez błędów, a bot nie zawiesza się w kółko.
  • Bot jest online na Discordzie i odpowiada na polecenia.
  • Po kliknięciu Restart bot wraca do stanu online w ciągu kilku sekund.

Rozwiązywanie problemów#

Error: Cannot find module 'discord.js'#

Pakiety nie są zainstalowane. Sprawdź, czy package.json leży w folderze głównym i ma discord.js w dependencies. Następnie postępuj zgodnie z sekcją „Instalacja pakietów”.

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

Plik główny nie zgadza się z ustawieniami: plik ma inną nazwę, leży w podfolderze albo nie zgadza się wielkość liter (Index.js i index.js to na serwerze dwa różne pliki). Popraw zmienną pliku głównego albo przenieś plik do folderu głównego.

npm error code EJSONPARSE#

package.json nie jest poprawnym JSON-em (brakujący przecinek lub cudzysłów, zbędny przecinek, komentarz). Popraw go na komputerze, sprawdź poleceniem npm install i prześlij ponownie.

Bot uruchamia się i od razu pada, w kółko#

Automatyczny restart nie naprawi błędu w kodzie. Znajdź w Konsoli pierwszy błąd po starcie (linia z Error i lista plików pod nią), popraw go i uruchom bota ponownie. Najczęstsze komunikaty objaśniamy w poradniku logi i błędy.

An invalid token was provided. lub Used disallowed intents#

Problem dotyczy tokenu lub intentów w Developer Portal. Kroki znajdziesz w poradniku token i intenty.

SyntaxError: Cannot use import statement outside a module#

Kod używa import, ale projekt jest skonfigurowany pod require(). Ustaw "type": "module" w package.json albo przepisz kod na require(). Więcej w poradniku logi i błędy.

Podsumowanie

  • Kod, package.json, package-lock.json i .env prześlij do folderu głównego w zakładce Pliki. Nie przesyłaj node_modules.
  • main w package.json i zmienna pliku głównego w zakładce Ustawienia muszą wskazywać ten sam plik.
  • Pakiety są instalowane na serwerze. Czy dzieje się to automatycznie, poznasz po npm install w Poleceniu startowym.
  • Wersję Node.js sprawdzisz przez console.log(process.version). discord.js 14 wymaga Node.js 18 lub nowszego.
  • Po każdej zmianie kodu zrestartuj bota.

Wyszukiwanie w poradnikach