Een Discord-bot maken
Op deze pagina
Een Discord-bot is een programma dat met een eigen account inlogt op Discord en commando's beantwoordt, modereert, spelletjes speelt of updates plaatst. Om er een te maken heb je drie dingen nodig: een applicatie in de Developer Portal van Discord, een paar regels code en een plek waar die code kan draaien.
Deze gids bouwt een werkende bot met een /ping-slashcommando, in Python (discord.py) of JavaScript (discord.js): kies de taal die je kent.
Stap 1: Maak de applicatie en het bottoken aan
- Open de Developer Portal. Ga naar discord.com/developers/applications, maak een nieuwe applicatie aan en geef die een naam.
- Haal het token op. Klik op de pagina Bot op Reset Token en kopieer het. Discord toont het maar één keer; ben je het kwijt, reset het dan opnieuw.
- Houd het token geheim. Het is het wachtwoord van de bot: wie het heeft, bestuurt je bot. Plak het nooit in code die je deelt en commit het nooit naar Git.
Stap 2: Nodig de bot uit op je server
- Open de pagina Installation van je applicatie.
- Voeg bij de standaard installatie-instellingen voor servers de scopes
botenapplications.commandstoe, plus de rechten die de bot nodig heeft: voor deze gids is Send Messages genoeg. - Open de installatielink die je krijgt, kies je server en geef toestemming. De bot verschijnt in de ledenlijst, offline totdat je code draait.
Oudere tutorials gebruiken OAuth2 > URL Generator met dezelfde twee scopes; dat werkt nog steeds.
Stap 3a: Schrijf de bot in Python (discord.py)
discord.py 2.7 vereist Python 3.8 of nieuwer. Installeer het en maak bot.py aan:
pip install discord.py
import os
import discord
from discord import app_commands
class Bot(discord.Client):
def __init__(self):
super().__init__(intents=discord.Intents.default())
self.tree = app_commands.CommandTree(self)
async def setup_hook(self):
await self.tree.sync()
bot = Bot()
@bot.tree.command(description="Replies with Pong!")
async def ping(interaction: discord.Interaction):
await interaction.response.send_message("Pong!")
bot.run(os.environ["DISCORD_TOKEN"])
Start het met het token in een omgevingsvariabele, bijvoorbeeld DISCORD_TOKEN=your-token python bot.py op Linux of macOS.
Stap 3b: Schrijf de bot in JavaScript (discord.js)
discord.js 14 vereist Node.js 18 of nieuwer. Voer in een nieuwe map npm install discord.js uit en maak index.js aan:
const { Client, Events, GatewayIntentBits, REST, Routes, SlashCommandBuilder } = require('discord.js');
const commands = [new SlashCommandBuilder().setName('ping').setDescription('Replies with Pong!').toJSON()];
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, async (c) => {
await new REST().setToken(process.env.DISCORD_TOKEN).put(Routes.applicationCommands(c.user.id), { body: commands });
console.log(`Logged in as ${c.user.tag}`);
});
client.on(Events.InteractionCreate, async (interaction) => {
if (interaction.isChatInputCommand() && interaction.commandName === 'ping') await interaction.reply('Pong!');
});
client.login(process.env.DISCORD_TOKEN);
Start het met DISCORD_TOKEN=your-token node index.js. Zodra de console Logged in toont, typ je /ping in je server.
Houd het token uit je code
- Gebruik een omgevingsvariabele of een
.env-bestand, en zet.envin.gitignorevóór je eerste commit. - Is het token gelekt, reset het dan meteen op de pagina Bot. Het oude token werkt niet meer en je werkt het nieuwe bij op de plek waar de bot draait.
- GitHub scant openbare repository's op Discord-bottokens en meldt ze aan Discord, dat ze kan intrekken; een per ongeluk gepusht token werkt daardoor vaak al niet meer voordat je het doorhebt.
Stap 4: Houd je bot online
Je bot is alleen online zolang de code draait. Sluit je de terminal of zet je de pc uit, dan gaat hij offline. Je hebt drie opties:
- Je eigen pc: gratis en prima om te bouwen en te testen, maar de bot slaapt zodra de computer slaapt.
- Een gratis pakket: de meeste zetten bots die de hele maand draaien stil of beperken ze; de voor- en nadelen staan naast elkaar in gratis Discord-bothosting.
- Bothosting: een kleine server die altijd aan staat. Bij HytHost Discord-bothosting upload je je project, kies je Node.js, Python of een andere runtime, en het panel start de bot en herstart hem als hij crasht.
De volledige uitleg, van uploaden tot automatisch herstarten, staat in een Discord-bot 24/7 hosten.
Laat je bot draaien zonder je pc aan te laten staan: HytHost Discord-bothosting ondersteunt Node.js, Python, Java, Go, C#, Bun en Lavalink, vanaf €0.89/mnd.
Bekijk bothostingpakkettenVeelgestelde vragen
Ja. De applicatie, het token en de code aanmaken kost niets, en discord.py en discord.js zijn gratis. Je betaalt alleen als je hem wilt hosten op een plek die online blijft.
De taal die je al kent. discord.py en discord.js zijn allebei volwassen en dekken de volledige Discord API. Ken je geen van beide, dan leest Python eenvoudiger; JavaScript heeft het grotere ecosysteem aan libraries.
Controleer of je hem hebt uitgenodigd met de scope applications.commands en of de code de commando's heeft gesynchroniseerd. Globale commando's kunnen even nodig hebben om te verschijnen; herstart Discord als ze niet verschijnen.
Voor het lezen van gewone berichttekst is de Message Content-intent nodig, aangezet in de Developer Portal en aangevraagd in je code. Zonder die intent ontvangt de bot nog steeds slashcommando's, vermeldingen en DM's.
Reset het meteen op de pagina Bot van de Developer Portal. Het oude token werkt niet meer; zet het nieuwe op de plek waar de bot draait en verwijder het oude uit je code of geschiedenis.
Je bot online zonder je pc
HytHost Discord-bothosting draait Node.js, Python, Java, Go, C#, Bun of Lavalink met een MySQL-database en back-ups, vanaf €0.89/mnd.
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hoursWas deze gids nuttig?