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
- V Discord Developer Portalu vytvořte aplikaci a v sekci Bot vygenerujte token.
- Zapněte jen ty Privileged Gateway Intents, které bot opravdu používá (například Message Content nebo Server Members).
- Pozvěte bota na svůj server odkazem z části OAuth2 s oprávněními
botaapplications.commands. - 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.
- V klientském panelu otevřete záložku Spuštění.
- Do pole Git repozitář vložte adresu ve tvaru
https://github.com/uzivatel/muj-bot.gita vyplňte větev (obvyklemain). - 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ě.
- Zapněte Automatickou aktualizaci, pokud chcete při každém startu stáhnout nejnovější verzi.
- Nastavte hlavní soubor (například
index.js,main.pynebobot.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
*.logNahrá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.
- Otevřete klienta FileZilla nebo WinSCP a zvolte protokol SFTP.
- Zadejte adresu, port, uživatele a heslo z panelu.
- Nahrajte soubory bota do kořenové složky. Složky
node_modulesani.venvnenahrávejte, závislosti se nainstalují samy. - 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-databazeNode.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.0Jako 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
.envje š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.jsonneborequirements.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.