Przejdź do treści
Zamów serwer

Bot Discord i aplikacje w Pythonie: wgrywanie kodu i uruchamianie

Bot Discord w Node.js albo aplikacja w Pythonie krok po kroku: token, wgrywanie kodu, plik startowy i zależności w Uruchamianiu, GitHub, porty i logi.

7 min czytania Zaktualizowano 
Na tej stronie10 sekcji
  1. Jaki pakiet i jaka wersja
  2. Token bota Discord
  3. Przygotuj kod u siebie
  4. Wgraj pliki na serwer
  5. Ustaw serwer w zakładce Uruchamianie
  6. Uruchom i sprawdź logi
  7. Kod z GitHuba
  8. Aplikacja z portem (strona, API)
  9. Najczęstsze problemy
  10. Zobacz też

Ten poradnik pokazuje, jak uruchomić bota Discord (Node.js) albo aplikację w Pythonie tak, żeby działała całą dobę bez Twojego komputera: od tokenu bota, przez wgranie kodu i ustawienia w panelu, po logi i automatyczne aktualizacje z GitHuba. Pakiety i ceny znajdziesz w cenniku botów i aplikacji.

Jaki pakiet i jaka wersja#

W formularzu zamówienia wybierasz jedną z dwóch wersji:

  • Bot Discord (Node.js): boty w discord.js i inne programy w JavaScripcie albo TypeScripcie,
  • Python / Bot / Backend: boty w discord.py, boty na Telegrama, skrypty działające w tle i proste API.
PakietRAMProcesorDyskDla kogo
Standard 2 GB (Intel Xeon)2 GB1 wątek20 GBbot Discord albo mała aplikacja
Standard 4 GB (Intel Xeon)4 GB1,5 wątku25 GBkilka botów albo większy backend
Premium 2 GB (Ryzen 9 9950X)2 GB1,5 wątku20 GBbot na szybkim rdzeniu
Premium 4 GB (Ryzen 9 9950X)4 GB2 wątki30 GBwiększy backend na szybkim rdzeniu

Zwykły bot na kilku serwerach Discorda zużywa niewiele pamięci i 2 GB to spory zapas. Więcej potrzebują boty muzyczne, boty na setkach serwerów i aplikacje, które trzymają dużo danych w pamięci. Zamów Standard 2 GB.

Token bota Discord#

  1. Wejdź na discord.com/developers/applications (otwiera się w nowej karcie) i kliknij New Application.
  2. W zakładce Bot kliknij Reset Token i skopiuj token. Discord pokaże go tylko raz.
  3. Jeśli bot ma czytać treść wiadomości (np. komendy z prefiksem !), włącz tam Message Content Intent. Podobnie Server Members Intent, jeśli kod potrzebuje listy członków.
  4. W zakładce OAuth2, w części URL Generator, zaznacz zakresy bot i applications.commands, wybierz uprawnienia bota i otwórz wygenerowany link, żeby zaprosić bota na swój serwer Discord.

Ważne

Token to hasło do bota. Nie wpisuj go na stałe w kod, który trafia do publicznego repozytorium (np. na GitHub), i nie wklejaj go na Discordzie. Jeśli wyciekł, od razu zresetuj go w portalu.

Przygotuj kod u siebie#

Token trzymaj w pliku .env w głównym folderze projektu, a jeśli używasz Gita, dopisz .env do .gitignore:

.env
DISCORD_TOKEN=tutaj_wklej_token

Node.js. Na komputerze, w folderze bota, wpisz npm install discord.js dotenv. Powstanie plik package.json z listą zależności. Najprostszy bot w pliku bot.js:

JavaScript
require('dotenv').config();
const { Client, Events, GatewayIntentBits } = require('discord.js');

const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, (c) => console.log(`Bot działa jako ${c.user.tag}`));
client.login(process.env.DISCORD_TOKEN);

Python. Zależności wypisz w pliku requirements.txt, każdą w osobnej linii:

Tekst
discord.py
python-dotenv

Najprostszy bot w pliku app.py:

Python
import os
import discord
from dotenv import load_dotenv

load_dotenv()
client = discord.Client(intents=discord.Intents.default())

@client.event
async def on_ready():
    print(f"Bot działa jako {client.user}")

client.run(os.getenv("DISCORD_TOKEN"))

Wgraj pliki na serwer#

  1. Zaloguj się na panel.nexorahost.pl (otwiera się w nowej karcie), otwórz serwer z listy Moje serwery i przejdź do zakładki Pliki.
  2. Kliknij Wyślij i wybierz pliki bota: kod, package.json albo requirements.txt oraz .env. Folder z podfolderami utworzysz przyciskiem Utwórz katalog.

    Zakładka Pliki z przyciskami Wyślij (1) i Utwórz katalog (2); na zrzucie pliki serwera Minecraft, przy bocie lista wygląda tak samo
    Zakładka Pliki z przyciskami Wyślij (1) i Utwórz katalog (2); na zrzucie pliki serwera Minecraft, przy bocie lista wygląda tak samo
  3. Większy projekt wgrasz wygodniej przez SFTP programem WinSCP albo FileZilla. Adres i nazwę użytkownika znajdziesz w zakładce Ustawienia, a hasło jest takie samo jak do panelu.

    Dane SFTP w zakładce Ustawienia: SERVER ADDRESS (1), USERNAME (2) i przycisk Launch SFTP (3)
    Dane SFTP w zakładce Ustawienia: SERVER ADDRESS (1), USERNAME (2) i przycisk Launch SFTP (3)

Nie wgrywaj folderu node_modules ani wirtualnego środowiska Pythona (venv). Serwer instaluje zależności sam przy każdym starcie. Plik .env możesz też utworzyć od razu w panelu przyciskiem New File i zapisać przyciskiem ZAPISZ.

Ustaw serwer w zakładce Uruchamianie#

  1. W menu po lewej wybierz Uruchamianie.

    Zakładka Uruchamianie bota Node.js: OBRAZ DOCKER z wersją Node.js i pola GIT REPO ADDRESS, INSTALL BRANCH, USER UPLOADED FILES, AUTO UPDATE, ADDITIONAL NODE PACKAGES, GIT USERNAME, GIT ACCESS TOKEN i UNINSTALL NODE PACKAGES
    Zakładka Uruchamianie bota Node.js: OBRAZ DOCKER z wersją Node.js i pola GIT REPO ADDRESS, INSTALL BRANCH, USER UPLOADED FILES, AUTO UPDATE, ADDITIONAL NODE PACKAGES, GIT USERNAME, GIT ACCESS TOKEN i UNINSTALL NODE PACKAGES
  2. W OBRAZ DOCKER wybierz wersję Node.js albo Pythona. Najlepiej tę samą główną wersję, której używasz na komputerze (sprawdzisz ją poleceniem node -v albo python --version).
  3. Wpisz plik startowy. Pola zapisują się same chwilę po zmianie.

    Node.jsPythonCo ustawia
    MAIN FILEAPP PY FILEplik, od którego startuje program (domyślnie bot.js i app.py); może być w podfolderze, np. src/index.js
    ADDITIONAL NODE PACKAGESADDITIONAL PYTHON PACKAGESdodatkowe pakiety do zainstalowania, oddzielone spacjami
    UNINSTALL NODE PACKAGESbrakpakiety do usunięcia przy starcie
    brakREQUIREMENTS FILEplik z zależnościami (domyślnie requirements.txt)
    ADDITIONAL ARGUMENTSbrakdodatkowe parametry dla Node.js

    Pola GIT REPO ADDRESS, INSTALL BRANCH (w Pythonie GIT BRANCH), GIT USERNAME, GIT ACCESS TOKEN, AUTO UPDATE i USER UPLOADED FILES służą do pobierania kodu z GitHuba. Opisujemy je niżej.

Wielkość liter w nazwach plików ma znaczenie. Jeśli w MAIN FILE wpiszesz bot.js, a plik nazywa się Bot.js, bot nie wystartuje.

Uruchom i sprawdź logi#

  1. Przejdź do Konsoli i kliknij Uruchom.

    Konsola: menu (1), przyciski Uruchom, Restart i Zatrzymaj (2), karty z adresem i zużyciem (3) oraz pole komendy (4); na zrzucie serwer Minecraft
    Konsola: menu (1), przyciski Uruchom, Restart i Zatrzymaj (2), karty z adresem i zużyciem (3) oraz pole komendy (4); na zrzucie serwer Minecraft
  2. Przy starcie serwer instaluje zależności: przy Node.js z package.json (bez devDependencies), przy Pythonie z pliku z REQUIREMENTS FILE. Pierwszy start trwa przez to dłużej.
  3. Wszystko, co program wypisuje (console.log, print), zobaczysz w Konsoli. Tam też pojawią się błędy.

Bot działa, dopóki go nie zatrzymasz. Jeśli chcesz go restartować o stałej porze, ustaw to w Harmonogramach.

Uwaga

Pakiety z devDependencies nie są instalowane. Wszystko, czego bot potrzebuje do działania (np. discord.js i dotenv), musi być w dependencies.

Kod z GitHuba#

Zamiast wgrywać pliki ręcznie, możesz pobrać kod z repozytorium Git. Serwer klonuje repozytorium przy instalacji, a przy każdym starcie może pobierać nowe zmiany.

  1. Pobierz kopię zapasową albo ważne pliki (np. .env) na dysk.
  2. W zakładce Pliki usuń wszystkie pliki serwera. Repozytorium da się sklonować tylko do pustego folderu.
  3. W Uruchamianiu wpisz adres repozytorium w GIT REPO ADDRESS (np. https://github.com/nick/moj-bot) i, jeśli trzeba, gałąź w INSTALL BRANCH (w Pythonie GIT BRANCH). Pole USER UPLOADED FILES zostaw wyłączone.
  4. Repozytorium prywatne wymaga GIT USERNAME i GIT ACCESS TOKEN. Token utworzysz w ustawieniach GitHuba (Personal access tokens). Adres musi zaczynać się od https://.
  5. W zakładce Ustawienia kliknij Zainstaluj ponownie.

    Zakładka Ustawienia, ramka ZAINSTALUJ PONOWNIE z przyciskiem Zainstaluj ponownie (1)
    Zakładka Ustawienia, ramka ZAINSTALUJ PONOWNIE z przyciskiem Zainstaluj ponownie (1)
  6. Po instalacji wgraj z powrotem .env i uruchom serwer.

Włączone AUTO UPDATE pobiera nowe zmiany z repozytorium przy każdym starcie. Wystarczy wysłać zmiany na GitHuba i kliknąć Restart.

Aplikacja z portem (strona, API)#

Bot Discord nie potrzebuje portu. Jeśli jednak Twoja aplikacja ma nasłuchiwać na porcie (prosta strona, API, webhook), użyj portu serwera z karty Adres w Konsoli i adresu 0.0.0.0. Numer portu program odczyta ze zmiennej środowiskowej SERVER_PORT:

Python
port = int(os.getenv("SERVER_PORT", "8000"))

W Node.js to process.env.SERVER_PORT. Aplikacja będzie dostępna pod adresem z karty Adres. Jeśli potrzebujesz drugiego portu, zobacz artykuł Dodatkowe porty.

Najczęstsze problemy#

  • Brak modułu (Cannot find module w Node.js, ModuleNotFoundError w Pythonie). Pakietu nie ma w package.json (w dependencies) albo w requirements.txt.
  • Błąd nieprawidłowego tokenu. Token został zresetowany, skopiowano go ze spacją albo nie wczytał się z pliku .env (sprawdź, czy plik nazywa się dokładnie .env i leży w głównym folderze serwera).
  • Błąd o niedozwolonych intencjach (disallowed intents). Włącz w portalu Discorda te intencje, których używa kod.
  • Bot jest online, ale nie reaguje na komendy z !. Brak Message Content Intent.
  • Nie widać komend z ukośnikiem. Bot ich nie zarejestrował albo został zaproszony bez zakresu applications.commands.
  • Instalacja z GitHuba się nie udała. Folder serwera nie był pusty, adres repozytorium jest zły albo brakuje tokenu do prywatnego repozytorium. Błąd zobaczysz w Konsoli podczas instalacji.
  • Bot nie startuje. Zła nazwa pliku startowego albo błąd w kodzie widoczny w Konsoli. Zobacz Serwer nie startuje.

Zobacz też#