Discord-bot maken met Python: van nul tot online

Een Discord-bot in Python schrijven kost een avond. Hem 24/7 online houden kost een hostingpakket. Hieronder de volledige weg: van het aanmaken van de botapplicatie tot een werkende bot op het gamepanel van HostValues.

Stap 1: botapplicatie aanmaken

  1. Ga naar het Discord Developer Portal en klik op "New Application".
  2. Geef de applicatie een naam en klik op "Create".
  3. Ga naar het tabblad "Bot" en klik op "Reset Token" om een token te genereren. Kopieer het token en sla het veilig op. U ziet het maar een keer.
  4. Zet onder "Privileged Gateway Intents" de volgende opties aan: Presence Intent, Server Members Intent en Message Content Intent.
  5. Ga naar "OAuth2", selecteer onder Scopes "bot" en onder Bot Permissions de rechten die uw bot nodig heeft (minimaal: Send Messages, Read Message History).
  6. Kopieer de gegenereerde URL en open die in uw browser om de bot aan uw server toe te voegen.

Stap 2: de code

Maak een map aan met twee bestanden:

requirements.txt

discord.py>=2.5
python-dotenv

bot.py

import os
import discord
from discord.ext import commands
from dotenv import load_dotenv

load_dotenv()

bot = commands.Bot(
    command_prefix="!",
    intents=discord.Intents.all()
)

@bot.event
async def on_ready():
    print(f"Online als {bot.user}")

@bot.command()
async def ping(ctx):
    await ctx.send(f"Pong! Latency: {round(bot.latency * 1000)}ms")

@bot.command()
async def hallo(ctx):
    await ctx.send(f"Hoi {ctx.author.display_name}!")

bot.run(os.getenv("DISCORD_TOKEN"))

.env

DISCORD_TOKEN=uw_token_hier

Test lokaal: pip install -r requirements.txt, daarna python bot.py. Typ !ping in uw Discord-server. Werkt het? Door naar hosting.

Stap 3: hosten op het gamepanel

  1. Bestel een Discord-botpakket.
  2. Upload bot.py, requirements.txt en .env via het tabblad Files. Upload niet de map __pycache__ of een virtuele omgeving.
  3. Stel in het tabblad Startup het startbestand in op bot.py en kies Python 3.12.
  4. Start de server. Het panel installeert automatisch de packages uit requirements.txt.
  5. In de console verschijnt "Online als BotNaam". Uw bot is nu 24/7 bereikbaar.

Slash commands toevoegen

Slash commands zijn de moderne manier om met bots te werken. Ze verschijnen in het Discord-menu als u / typt:

@bot.tree.command(name="info", description="Toont serverinformatie")
async def info(interaction: discord.Interaction):
    guild = interaction.guild
    await interaction.response.send_message(
        f"{guild.name} heeft {guild.member_count} leden."
    )

# Voeg toe aan on_ready:
@bot.event
async def on_ready():
    await bot.tree.sync()
    print(f"Online als {bot.user}")

De drie fouten die iedereen maakt

  • Token in de code. Zet het token in een .env-bestand, niet in bot.py. Een token dat op GitHub terechtkomt wordt door Discord automatisch ingetrokken.
  • Intents niet aangezet. Als u discord.Intents.all() gebruikt maar de intents niet in het Developer Portal aanvinktt, start de bot maar reageert hij op niets.
  • requirements.txt vergeten. Het panel kan geen packages installeren als het bestand er niet is. Lokaal werkt het omdat u handmatig hebt geinstalleerd.

Hoeveel RAM heeft mijn bot nodig?

Een simpele commando- of moderatiebot: minder dan 256 MB. Het kleinste pakket van 1 GB is ruim voldoende. Een muziekbot op meerdere servers: 2 GB.

Kan ik meerdere bots op een pakket draaien?

Ja. Gebruik pm2 (npm install -g pm2) om meerdere Python-scripts tegelijk te draaien. Drie kleine bots passen in 1 GB.

discord.py of discord.js?

Python als u begint met programmeren: de syntax is leesbaarder. JavaScript als u al webervaring heeft of een dashboard wilt bouwen. Beide bibliotheken zijn actief onderhouden en evenwaardig in functionaliteit.

Bekijk de Discord-botpakketten of de KVM VPS als u naast de bot ook een website of database draait.


Komt u er niet uit? Open een support ticket, ons team helpt u graag verder.

Terug naar de blog