DCbot.czSK

Návody

Jak nahrát Discord bota na hosting

Od tokenu po běžícího bota za pár minut. Vyberte si nasazení z Gitu, nebo nahrajte soubory přes SFTP.

Než začnete

  1. V Discord Developer Portalu vytvořte aplikaci a v sekci Bot vygenerujte token.
  2. Zapněte jen ty Privileged Gateway Intents, které bot opravdu používá (například Message Content nebo Server Members).
  3. Pozvěte bota na svůj server odkazem z části OAuth2 s oprávněními bot a applications.commands.
  4. Objednejte tarif v ceníku a v nastavení serveru zvolte prostředí: Node.js, Python nebo Java.

Nasazení z Gitu

Nejpohodlnější cesta. Bot se při každém startu stáhne z repozitáře a nainstaluje závislosti, takže aktualizace znamená jen git push a restart.

  1. V klientském panelu otevřete záložku Spuštění.
  2. Do pole Git repozitář vložte adresu ve tvaru https://github.com/uzivatel/muj-bot.git a vyplňte větev (obvykle main).
  3. U soukromého repozitáře vyplňte uživatelské jméno a přístupový token (na GitHubu Fine-grained token jen pro čtení obsahu daného repozitáře). Token se v panelu zobrazuje skrytě.
  4. Zapněte Automatickou aktualizaci, pokud chcete při každém startu stáhnout nejnovější verzi.
  5. Nastavte hlavní soubor (například index.js, main.py nebo bot.jar) a server spusťte.

Soubor .env s tokenem nikdy necommitujte. Přidejte ho do .gitignore a na serveru ho vytvořte ručně ve správci souborů.

node_modules/
__pycache__/
.venv/
.env
*.log

Nahrání přes SFTP

Hodí se, když bot není v Gitu nebo nahráváte hotový JAR. Přihlašovací údaje (adresa, port, uživatel a heslo) najdete v klientském panelu v záložce SFTP.

  1. Otevřete klienta FileZilla nebo WinSCP a zvolte protokol SFTP.
  2. Zadejte adresu, port, uživatele a heslo z panelu.
  3. Nahrajte soubory bota do kořenové složky. Složky node_modules ani .venv nenahrávejte, závislosti se nainstalují samy.
  4. V panelu nastavte hlavní soubor a server spusťte.

Menší úpravy zvládnete i bez SFTP přímo ve správci souborů v panelu.

Token v souboru .env

Token, hesla k databázi a další tajné údaje patří do souboru .env v kořeni serveru. V kódu je načtete jako proměnné prostředí.

DISCORD_TOKEN=sem-vlozte-token
DB_HOST=adresa-z-panelu
DB_USER=uzivatel-z-panelu
DB_PASSWORD=heslo-z-panelu
DB_NAME=nazev-databaze

Node.js (balíček dotenv):

require('dotenv').config();
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once('ready', () => console.log(`Ready: ${client.user.tag}`));
client.login(process.env.DISCORD_TOKEN);

Python (balíček python-dotenv):

import os
import discord
from dotenv import load_dotenv

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

@client.event
async def on_ready():
    print(f"Ready: {client.user}")

client.run(os.environ["DISCORD_TOKEN"])

Token nikdy nevkládejte do konzole, do veřejného repozitáře ani na Discord. Pokud unikne, v Developer Portalu ho ihned vygenerujte znovu.

Node.js a package.json

Při startu se spustí npm install --omit=dev, proto musí být všechny potřebné balíčky v dependencies. Hlavní soubor nastavíte v panelu, nebo ho určí pole main.

{
  "name": "muj-bot",
  "version": "1.0.0",
  "main": "index.js",
  "engines": { "node": ">=20" },
  "dependencies": {
    "discord.js": "^14.16.0",
    "dotenv": "^16.4.0"
  }
}

TypeScript nejdřív zkompilujte (tsc) a jako hlavní soubor nastavte výsledný dist/index.js, nebo build spouštějte ve skriptu postinstall.

Python a requirements.txt

Při startu se nainstalují balíčky ze souboru requirements.txt. Verze uvádějte konkrétně, ať se bot po aktualizaci nerozbije.

discord.py==2.4.0
python-dotenv==1.0.1
aiomysql==0.2.0

Jako hlavní soubor nastavte například main.py. Verzi Pythonu změníte v nastavení serveru.

Java a JAR

U Javy se nic neinstaluje, spouští se hotový soubor JAR se všemi závislostmi (tzv. fat JAR). Sestavíte ho například pluginem Shadow pro Gradle nebo Maven Shade.

plugins {
    id 'java'
    id 'com.gradleup.shadow' version '8.3.5'
}

dependencies {
    implementation 'net.dv8tion:JDA:5.2.1'
}

jar { manifest { attributes 'Main-Class': 'cz.example.Bot' } }

Výsledný soubor (například build/libs/bot-all.jar) nahrajte přes SFTP a v panelu ho nastavte jako hlavní soubor. Java potřebuje aspoň 512 MB RAM, doporučujeme tarif s 1 GB.

Připojení k databázi

Databázi MySQL vytvoříte v panelu v záložce Databáze. Adresu serveru, port, uživatele a heslo zkopírujte do .env. Jako adresu použijte tu z panelu, ne localhost.

const mysql = require('mysql2/promise');
const db = mysql.createPool({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
});

Časté problémy

Used disallowed intents
Bot žádá intent, který není zapnutý v Developer Portalu. Zapněte ho v sekci Bot, nebo ho z kódu odeberte.
An invalid token was provided / LoginFailure
Token v .env je špatně zkopírovaný nebo byl vygenerován znovu. Vložte aktuální token bez mezer a uvozovek.
Cannot find module / ModuleNotFoundError
Balíček chybí v package.json nebo requirements.txt. Doplňte ho a server restartujte.
Bot se po chvíli sám vypne
Nejčastěji dojde paměť. Ve statistikách zkontrolujte využití RAM a případně přejděte na větší tarif.

Nevíte si rady? Napište nám na Discord CHOST.cz.

Připraveno k nasazení?

Vyberte tarif a bot může běžet ještě dnes.