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

Discord bot: aplikace, token, intenty a bezpečné uložení

Vytvoříte aplikaci v Discord Developer Portalu, získáte token, zapnete jen potřebné intenty, pozvete bota na server a token bezpečně uložíte do souboru .env.

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

Každý Discord bot potřebuje aplikaci v Discord Developer Portalu a token, kterým se přihlašuje. Ukážeme, jak aplikaci založit, které intenty zapnout, jak bota pozvat na server a jak token uložit, aby se nikdy nedostal ven.

Co budete potřebovat

  • Účet na Discordu s ověřeným e-mailem
  • Discord server, na kterém máte oprávnění Spravovat server (na zkoušení si založte vlastní)
  • Asi 10 minut

Vytvoření aplikace#

  1. Otevřete Discord Developer Portal (otevře se v novém okně) a přihlaste se.

  2. Klikněte na New Application.

  3. Napište název (například MujBot), potvrďte souhlas s podmínkami a klikněte na Create.

    Otevře se stránka General Information. Tady můžete nastavit ikonu a popis.

  4. Zkopírujte si Application ID. Říká se mu také Client ID a budete ho potřebovat pro registraci slash příkazů. Není tajné.

Token bota#

Token je heslo bota. Kdo ho má, může bota ovládat: posílat zprávy, mazat kanály, banovat lidi na všech serverech, kde bot je.

  1. V levém menu aplikace klikněte na Bot.
  2. V části Token klikněte na Reset Token a potvrďte. Discord může chtít heslo nebo kód dvoufázového ověření.
  3. Token zkopírujte (Copy) a rovnou ho uložte (části „Uložení tokenu“).

Token se zobrazí jen jednou. Když ho ztratíte, vygenerujte nový tlačítkem Reset Token. Tím se starý token zneplatní.

Token nikdy do kódu ani na GitHub

Token nepište přímo do souboru s kódem, neposílejte ho na Discord, do screenshotu ani podpoře. Když unikne, hned klikněte na Reset Token a nový token vložte do .env na serveru. Bot se starým tokenem se odpojí.

Pozor na záměnu: krátký řetězec Client Secret na stránce OAuth2 není token bota. Token je delší a skládá se ze tří částí oddělených tečkou.

Privileged Gateway Intents#

Intenty říkají Discordu, jaké události má botovi posílat. Většina je volná, tři jsou privilegované a musíte je zapnout na stránce Bot v části Privileged Gateway Intents:

IntentCo bot dostaneKdy ho zapnout
Presence IntentStav členů (online, hraje hru, vlastní status).Jen když bot stav členů opravdu používá (statistiky aktivity).
Server Members IntentSeznam členů serveru a události příchodu a odchodu.Uvítací zprávy, automatické role po připojení, práce se seznamem členů.
Message Content IntentText, přílohy a embedy běžných zpráv.Jen když bot čte běžné zprávy (příkazy s prefixem jako !help, moderace textu). Slash příkazy ho nepotřebují.
  • Zapněte jen to, co bot potřebuje. Intent musí být zapnutý v Developer Portalu i požadovaný v kódu (GatewayIntentBits v discord.js).
  • Když kód požaduje intent, který v Developer Portalu zapnutý není, Discord spojení ukončí a bot hlásí Used disallowed intents.
  • Bot na 100 a více serverech musí projít ověřením aplikace a privilegované intenty mu Discord musí schválit. Když aplikaci vidí víc než 10 000 uživatelů, Discord pro další používání privilegovaných intentů vyžaduje žádost a kontrolu, kterou se pak každý rok obnovuje.

Bez Message Content Intent bot vidí text jen u zpráv, ve kterých je zmíněný, v soukromých zprávách se sebou a u zpráv, které sám poslal.

Pozvání bota na server#

  1. V levém menu aplikace klikněte na Installation.

  2. V části Installation Contexts nechte zaškrtnuté Guild Install (instalace na server). User Install potřebujete jen pro příkazy, které si uživatelé přidávají do svého účtu.

  3. V části Install Link zvolte Discord Provided Link.

  4. V části Default Install Settings u Guild Install přidejte do Scopes položky applications.commands a bot.

    • bot – přidá na server uživatele bota.
    • applications.commands – dovolí botovi vytvořit na serveru slash příkazy.
  5. Po přidání bot se objeví Permissions. Vyberte jen oprávnění, která bot potřebuje (tabulka níže), a uložte změny.

  6. Zkopírujte odkaz z Install Link a otevřete ho v prohlížeči.

  7. Zvolte Add to server, vyberte server a potvrďte Authorize.

    Bot se objeví v seznamu členů serveru (zatím offline, dokud ho nespustíte).

OprávněníNa co ho bot potřebuje
View ChannelsVidět kanály, kde má pracovat.
Send MessagesPosílat zprávy.
Embed LinksPosílat embedy (zprávy s rámečkem a nadpisem).
Read Message HistoryČíst starší zprávy (odpovědi, úklid).
Manage RolesJen když bot přiděluje role. Spravuje pouze role pod svou nejvyšší rolí.
AdministratorNedávejte. Bot s tímto právem může na serveru všechno. Když token unikne, je to katastrofa.

Odkaz můžete vytvořit i ručně na stránce OAuth2 v části OAuth2 URL Generator: zaškrtněte bot a applications.commands, vyberte oprávnění a zkopírujte vygenerovanou adresu.

Uložení tokenu#

Token patří do souboru .env, ne do kódu. Soubor .env vytvořte rovnou na serveru, ať token nemusíte nikam přenášet:

  1. V zákaznické zóně otevřete bota a přejděte na záložku Soubory, do kořenové složky /.

  2. Klikněte na Nový soubor a pojmenujte ho .env (s tečkou na začátku, bez přípony).

  3. Do editoru napište:

    .envini
    DISCORD_TOKEN=<TOKEN_BOTA>
    CLIENT_ID=<APPLICATION_ID>
    GUILD_ID=<ID_SERVERU>
    • DISCORD_TOKEN – token bota. Za <TOKEN_BOTA> dosaďte token z Developer Portalu, bez uvozovek a bez mezer kolem =.
    • CLIENT_ID – Application ID ze stránky General Information.
    • GUILD_ID – ID vašeho Discord serveru (v Discordu zapněte Uživatelská nastavení › Pokročilé › Režim vývojáře, pak klikněte pravým tlačítkem na název serveru › Kopírovat ID serveru).
  4. Uložte klávesami Ctrl+S.

Načtení .env v kódu#

Node.js soubor .env sám nenačte, je potřeba mu to říct. Protože příkaz pro spuštění bota u nás upravit nejde, načtěte .env přímo v kódu. Nejspolehlivější je balíček dotenv (nainstalujete ho v počítači příkazem npm install dotenv):

index.jsJavaScript
const path = require('node:path');
require('dotenv').config({ path: path.join(__dirname, '.env'), quiet: true });

const token = process.env.DISCORD_TOKEN;
  • require('dotenv').config({ … }) – načte proměnné ze souboru do process.env. Musí být úplně nahoře, před kódem, který token používá.
  • path: path.join(__dirname, '.env') – hledá .env ve stejné složce jako index.js, bez ohledu na to, odkud se bot spouští.
  • quiet: true – nevypisuje při startu hlášku o načtení.
  • process.env.DISCORD_TOKEN – hodnota z .env. Je to vždy text (string).

Pro ES moduly ("type": "module" v package.json) použijte import 'dotenv/config'; na prvním řádku.

Bez balíčku to jde od Node.js 20.12 vestavěnou funkcí process.loadEnvFile():

index.jsJavaScript
process.loadEnvFile(require('node:path').join(__dirname, '.env'));

Když soubor .env neexistuje, tato funkce skončí chybou. Verzi Node.js zjistíte podle návodu Verze Node.js. V počítači můžete bota spouštět i příkazem node --env-file=.env index.js.

Soubor .gitignore#

Pokud kód ukládáte do Gitu (GitHub, GitLab), vytvořte v projektu soubor .gitignore:

.gitignoretext
node_modules
.env

Git pak .env ani node_modules nikdy nenahraje. Když už jste .env omylem nahráli, nestačí ho smazat (zůstane v historii). Token hned resetujte.

Další tajné údaje#

Do .env patří i další hesla a klíče: heslo k databázi, klíče API jiných služeb, webhooky. Platí stejná pravidla:

  • v kódu jen process.env.NAZEV, nikdy samotná hodnota,
  • nikdy je nevypisujte do konzole (konzoli může vidět i člen sdílené služby),
  • při úniku je hned zneplatněte u služby, která je vydala.

Ověření#

  • Bot po spuštění přejde na Discordu do stavu online a v Konzoli není An invalid token was provided.
  • Pro kontrolu načtení tokenu vypište jen jeho délku, nikdy token: console.log('Délka tokenu:', process.env.DISCORD_TOKEN?.length);. Výpis undefined znamená, že se .env nenačetl.

Když něco nefunguje#

An invalid token was provided.#

Token je špatný, po Reset Token už neplatí, nebo se vůbec nenačetl. Zkontrolujte délku tokenu (viz Ověření), název proměnné v .env i v kódu (DISCORD_TOKEN) a že v .env nejsou uvozovky ani mezery navíc. Když si nejste jistí, vygenerujte nový token a vložte ho znovu.

Used disallowed intents#

Kód požaduje privilegovaný intent, který není zapnutý v Developer Portalu. Na stránce Bot v Privileged Gateway Intents zapněte požadovaný intent, nebo ho odstraňte z kódu.

process.env.DISCORD_TOKEN je undefined#

  • dotenv se načítá až po kódu, který token používá. Dejte require('dotenv').config(…) na první řádky.
  • Soubor se ve skutečnosti jmenuje .env.txt (Windows skrývá přípony). Na serveru ho přejmenujte na .env.
  • .env je v jiné složce než hlavní soubor. Použijte path.join(__dirname, '.env').

Na stránce Bot jste vypnuli Public Bot, ale na stránce Installation je nastavený Discord Provided Link. Soukromý bot nesmí mít výchozí odkaz. Buď nechte Public Bot zapnutý, nebo v Install Link zvolte None a odkaz vytvořte v OAuth2 URL Generator.

Bot requires a code grant#

Na stránce Bot je zapnuté Requires OAuth2 Code Grant. Pokud ho výslovně nepotřebujete, vypněte ho.

Nevidím svůj server v seznamu při pozvání#

Nemáte na serveru oprávnění Spravovat server. Požádejte vlastníka serveru, nebo bota pozvěte na vlastní server.

Shrnutí

  • Aplikaci vytvoříte v Developer Portalu (New Application), token získáte na stránce Bot tlačítkem Reset Token. Zobrazí se jen jednou.
  • Privilegované intenty (Presence, Server Members, Message Content) zapínejte jen když je bot potřebuje, v Developer Portalu i v kódu.
  • Bota pozvete odkazem ze stránky Installation se scopes bot a applications.commands a s co nejmenšími oprávněními, nikdy Administrator.
  • Token patří do .env na serveru, v kódu ho načtete přes dotenv a .env přidáte do .gitignore.

Hledání v návodech