Naar de inhoud
Actuele kortingscode:10% kortingGebruiken bij je bestelling

Discord-bot: applicatie, token, intents en veilig opslaan

Je maakt een applicatie aan in het Discord Developer Portal, haalt een token op, schakelt alleen de benodigde intents in, nodigt de bot uit op je server en slaat het token veilig op in het bestand .env.

  • beginner
  • ~10 min
  • Bijgewerkt op 2-10-2026

Elke Discord-bot heeft een applicatie in het Discord Developer Portal nodig en een token waarmee hij inlogt. We laten zien hoe je de applicatie aanmaakt, welke intents je inschakelt, hoe je de bot uitnodigt op een server en hoe je het token opslaat, zodat het nooit uitlekt.

Wat je nodig hebt

  • Een Discord-account met een geverifieerd e-mailadres
  • Een Discord-server waarop je het recht Server beheren hebt (maak er zelf een aan om te testen)
  • Ongeveer 10 minuten

De applicatie aanmaken#

  1. Open het Discord Developer Portal (opent in een nieuw venster) en log in.

  2. Klik op New Application.

  3. Typ een naam (bijvoorbeeld MujBot), ga akkoord met de voorwaarden en klik op Create.

    De pagina General Information wordt geopend. Hier kun je een icoon en een beschrijving instellen.

  4. Kopieer het Application ID. Het wordt ook Client ID genoemd en je hebt het nodig om slash-commando's te registreren. Het is niet geheim.

Het token van de bot#

Het token is het wachtwoord van de bot. Wie het heeft, kan de bot besturen: berichten sturen, kanalen verwijderen, mensen bannen op alle servers waar de bot op zit.

  1. Klik in het linkermenu van de applicatie op Bot.
  2. Klik in het gedeelte Token op Reset Token en bevestig. Discord kan om je wachtwoord of een code van de tweestapsverificatie vragen.
  3. Kopieer het token (Copy) en sla het meteen op (gedeelte “Het token opslaan”).

Het token wordt maar één keer getoond. Raak je het kwijt, genereer dan een nieuw token met de knop Reset Token. Daarmee wordt het oude token ongeldig.

Het token nooit in de code of op GitHub

Schrijf het token niet rechtstreeks in een bestand met code en stuur het niet via Discord, in een screenshot of naar support. Lekt het uit, klik dan meteen op Reset Token en zet het nieuwe token in .env op de server. De bot met het oude token verliest de verbinding.

Pas op voor verwarring: de korte tekenreeks Client Secret op de pagina OAuth2 is niet het token van de bot. Het token is langer en bestaat uit drie delen, gescheiden door een punt.

Privileged Gateway Intents#

Intents vertellen Discord welke events het naar de bot moet sturen. De meeste zijn vrij beschikbaar, drie zijn geprivilegieerd en moet je inschakelen op de pagina Bot in het gedeelte Privileged Gateway Intents:

IntentWat de bot krijgtWanneer je hem inschakelt
Presence IntentDe status van leden (online, speelt een game, aangepaste status).Alleen als de bot de status van leden echt gebruikt (activiteitsstatistieken).
Server Members IntentDe ledenlijst van de server en de events bij het binnenkomen en vertrekken van leden.Welkomstberichten, automatische rollen na het joinen, werken met de ledenlijst.
Message Content IntentDe tekst, bijlagen en embeds van gewone berichten.Alleen als de bot gewone berichten leest (commando's met een prefix zoals !help, tekstmoderatie). Slash-commando's hebben hem niet nodig.
  • Schakel alleen in wat de bot nodig heeft. Een intent moet in het Developer Portal zijn ingeschakeld en in de code worden aangevraagd (GatewayIntentBits in discord.js).
  • Vraagt de code een intent aan die in het Developer Portal niet is ingeschakeld, dan verbreekt Discord de verbinding en meldt de bot Used disallowed intents.
  • Een bot op 100 of meer servers moet de verificatie van de applicatie doorlopen en Discord moet zijn geprivilegieerde intents goedkeuren. Als meer dan 10.000 gebruikers de applicatie zien, vereist Discord voor het verdere gebruik van geprivilegieerde intents een aanvraag en een beoordeling, die daarna elk jaar wordt vernieuwd.

Zonder Message Content Intent ziet de bot alleen de tekst van berichten waarin hij wordt genoemd, van privéberichten met hem en van berichten die hij zelf heeft gestuurd.

De bot uitnodigen op een server#

  1. Klik in het linkermenu van de applicatie op Installation.

  2. Laat in het gedeelte Installation Contexts de optie Guild Install (installatie op een server) aangevinkt. User Install heb je alleen nodig voor commando's die gebruikers aan hun eigen account toevoegen.

  3. Kies in het gedeelte Install Link voor Discord Provided Link.

  4. Voeg in het gedeelte Default Install Settings bij Guild Install de items applications.commands en bot toe aan Scopes.

    • bot – voegt de botgebruiker toe aan de server.
    • applications.commands – staat de bot toe om slash-commando's op de server aan te maken.
  5. Na het toevoegen van bot verschijnt Permissions. Selecteer alleen de rechten die de bot nodig heeft (tabel hieronder) en sla de wijzigingen op.

  6. Kopieer de link uit Install Link en open die in je browser.

  7. Kies Add to server, selecteer de server en bevestig met Authorize.

    De bot verschijnt in de ledenlijst van de server (voorlopig offline, totdat je hem start).

RechtWaar de bot het voor nodig heeft
View ChannelsDe kanalen zien waarin hij moet werken.
Send MessagesBerichten sturen.
Embed LinksEmbeds sturen (berichten met een kader en een titel).
Read Message HistoryOudere berichten lezen (antwoorden, opruimen).
Manage RolesAlleen als de bot rollen toekent. Hij beheert alleen rollen onder zijn eigen hoogste rol.
AdministratorNiet geven. Een bot met dit recht kan alles op de server. Als het token uitlekt, is dat een ramp.

Je kunt de link ook handmatig maken op de pagina OAuth2 in het gedeelte OAuth2 URL Generator: vink bot en applications.commands aan, selecteer de rechten en kopieer het gegenereerde adres.

Het token opslaan#

Het token hoort in het bestand .env, niet in de code. Maak het bestand .env direct op de server aan, zodat je het token nergens heen hoeft over te zetten:

  1. Open de bot in je klantaccount en ga naar het tabblad Bestanden, naar de hoofdmap /.

  2. Klik op Nieuw bestand en noem het .env (met een punt aan het begin, zonder extensie).

  3. Typ in de editor:

    .envini
    DISCORD_TOKEN=<BOT_TOKEN>
    CLIENT_ID=<APPLICATION_ID>
    GUILD_ID=<SERVER_ID>
    • DISCORD_TOKEN – het token van de bot. Vervang <BOT_TOKEN> door het token uit het Developer Portal, zonder aanhalingstekens en zonder spaties rond =.
    • CLIENT_ID – het Application ID van de pagina General Information.
    • GUILD_ID – het ID van je Discord-server (schakel in Discord Gebruikersinstellingen › Geavanceerd › Ontwikkelaarsmodus in, klik daarna met de rechtermuisknop op de naam van de server › Server-ID kopiëren).
  4. Sla op met Ctrl+S.

.env laden in de code#

Node.js laadt het bestand .env niet vanzelf, je moet het daar opdracht voor geven. Omdat je het opstartcommando van de bot bij ons niet kunt aanpassen, laad je .env rechtstreeks in de code. Het betrouwbaarst is het pakket dotenv (je installeert het op je computer met het commando 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({ … }) – laadt de variabelen uit het bestand in process.env. Het moet helemaal bovenaan staan, vóór de code die het token gebruikt.
  • path: path.join(__dirname, '.env') – zoekt .env in dezelfde map als index.js, ongeacht van waaruit de bot wordt gestart.
  • quiet: true – toont bij het starten geen melding over het laden.
  • process.env.DISCORD_TOKEN – de waarde uit .env. Dat is altijd tekst (string).

Gebruik voor ES-modules ("type": "module" in package.json) import 'dotenv/config'; op de eerste regel.

Zonder pakket kan het sinds Node.js 20.12 met de ingebouwde functie process.loadEnvFile():

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

Bestaat het bestand .env niet, dan eindigt deze functie met een fout. De Node.js-versie vind je met de handleiding Node.js-versie. Op je computer kun je de bot ook starten met het commando node --env-file=.env index.js.

Het bestand .gitignore#

Bewaar je de code in Git (GitHub, GitLab), maak dan in het project een bestand .gitignore aan:

.gitignoretext
node_modules
.env

Git uploadt .env en node_modules dan nooit. Heb je .env al per ongeluk geüpload, dan is verwijderen niet genoeg (het blijft in de geschiedenis staan). Reset het token meteen.

Overige geheime gegevens#

In .env horen ook andere wachtwoorden en sleutels: het wachtwoord van de database, API-sleutels van andere diensten, webhooks. Hiervoor gelden dezelfde regels:

  • in de code alleen process.env.NAAM, nooit de waarde zelf,
  • schrijf ze nooit naar de console (ook een lid van een gedeelde dienst kan de console zien),
  • maak ze bij een lek meteen ongeldig bij de dienst die ze heeft uitgegeven.

Controle#

  • Na het starten gaat de bot op Discord online en in de Console staat geen An invalid token was provided.
  • Om te controleren of het token is geladen, toon je alleen de lengte ervan, nooit het token zelf: console.log('Lengte van het token:', process.env.DISCORD_TOKEN?.length);. De uitvoer undefined betekent dat .env niet is geladen.

Als iets niet werkt#

An invalid token was provided.#

Het token is onjuist, is na Reset Token niet meer geldig of is helemaal niet geladen. Controleer de lengte van het token (zie Controle), de naam van de variabele in .env en in de code (DISCORD_TOKEN) en of er in .env geen aanhalingstekens of extra spaties staan. Twijfel je, genereer dan een nieuw token en voeg het opnieuw in.

Used disallowed intents#

De code vraagt een geprivilegieerde intent aan die niet is ingeschakeld in het Developer Portal. Schakel op de pagina Bot onder Privileged Gateway Intents de gevraagde intent in of verwijder hem uit de code.

process.env.DISCORD_TOKEN is undefined#

  • dotenv wordt pas geladen na de code die het token gebruikt. Zet require('dotenv').config(…) op de eerste regels.
  • Het bestand heet in werkelijkheid .env.txt (Windows verbergt extensies). Hernoem het op de server naar .env.
  • .env staat in een andere map dan het hoofdbestand. Gebruik path.join(__dirname, '.env').

Je hebt op de pagina Bot de optie Public Bot uitgeschakeld, maar op de pagina Installation is Discord Provided Link ingesteld. Een privébot mag geen standaardlink hebben. Laat Public Bot ingeschakeld, of kies bij Install Link voor None en maak de link in de OAuth2 URL Generator.

Bot requires a code grant#

Op de pagina Bot staat Requires OAuth2 Code Grant aan. Schakel het uit als je het niet uitdrukkelijk nodig hebt.

Ik zie mijn server niet in de lijst bij het uitnodigen#

Je hebt op de server niet het recht Server beheren. Vraag het aan de eigenaar van de server of nodig de bot uit op je eigen server.

Samenvatting

  • De applicatie maak je aan in het Developer Portal (New Application), het token krijg je op de pagina Bot met de knop Reset Token. Het wordt maar één keer getoond.
  • Schakel geprivilegieerde intents (Presence, Server Members, Message Content) alleen in als de bot ze nodig heeft, in het Developer Portal en in de code.
  • De bot nodig je uit met de link van de pagina Installation, met de scopes bot en applications.commands en met zo min mogelijk rechten, nooit Administrator.
  • Het token hoort in .env op de server, in de code laad je het via dotenv en .env voeg je toe aan .gitignore.

Zoeken in de handleidingen