# Hoe maak je een Python Discord-bot

Je eigen Discord-server kan veel werk zijn, daarom zijn bots die administratieve taken uitvoeren zo populair. Je kunt eenvoudig je eigen bot ontwerpen met behulp van de Python-bibliotheek discord.py en basiskennis van Python.

## Stap voor stap naar je eigen Python Discord-bot

Voordat je begint met het programmeren van je bot, moet je een Discord-bot aanmaken. Je kunt **je eigen applicatie aanmaken met Discord** en zodra je dat hebt gedaan, staat niets je Discord-bot nog in de weg. De code die je nodig hebt voor je Discord-bot hangt af van de taken die je wilt automatiseren. De bot die in deze tutorial wordt gepresenteerd, is bedoeld om **rollen toe te voegen binnen een Discord-server**.

### Stap 1: installeer discord.py

Om je bot te maken, is de Python-bibliotheek discord.py een essentieel hulpmiddel. Voordat je aan de slag gaat, moet je deze op je systeem installeren met pip, zoals gebruikelijk is bij Python. Op Windows is de juiste terminalopdracht voor installatie:

```python
py -3 -m pip install -U discord.py
```

### Stap 2: Python-document aanmaken

Maak een nieuw Python-document aan om je bot te programmeren. Je kunt verschillende code-editors gebruiken voor je Python-bestand of een **geïntegreerde ontwikkelomgeving (IDE)** zoals Pycharm.

### Stap 3: maak verbinding met Discord

Importeer eerst de Discord-bibliotheek in uw Python-document. Stel het bot-token in dat u hebt ontvangen **bij het registreren van uw Discord-bot** op de Discord-ontwikkelaarssite. Vervang hiervoor de tijdelijke aanduiding door uw aangepaste bot-token:

```python
import discord
TOKEN = token_placeholder
```

Je hebt de bibliotheek nodig om te communiceren met de Discord API. Om verbinding te maken met Discord, heb je een instantie van het zogenaamde clientobject nodig. Gebruik de volgende code om dit te maken:

```python
client = discord.Client()
```

### Stap 4: Controleer of de verbinding succesvol tot stand is gebracht.

Om ervoor te zorgen dat je bot goed is verbonden met de Discord-server, moet je een asynchrone methode toevoegen aan je Python-bestand. Dit doe je door te reageren op de `on_ready` -gebeurtenis, die is gedefinieerd in de discord.py API. Om je functie te laten werken als een gebeurtenisverwerker, gebruik je de `@client.event` in Python.

```python
@client.event
async def on_ready():
    print(f'{client.user} is connected to the following server:\n')
    for server in client.guilds:
        print(f'{server.name}(id: {server.id})')
```

Opmerking Asynchrone functies worden vaak gebruikt bij het programmeren van Discord-bots. Dit zorgt ervoor dat de functie op een speciale thread draait, los van de hoofdthread, waardoor bot-taken parallel kunnen worden uitgevoerd zonder de hoofdthread te blokkeren.

### Stap 5: voeg functionaliteiten toe aan je bot

Om botfunctionaliteit in discord.py te implementeren, wordt de **`on_message` gebeurtenis** gebruikt. Deze gebeurtenis wordt geactiveerd wanneer je Discord-bot een bericht ontvangt. Om deze gebeurtenis af te handelen, moet je methode eerst de afzender van het bericht bepalen en vervolgens de gewenste functionaliteit uitvoeren, zoals het toevoegen van rollen.

```none
@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith('!add_role'):
        # Find role name
        role_name = message.content.split(' ')[1]
        # search corresponding Discord role
        role = discord.utils.get(message.guild.roles, name=role_name)
        # Check if the role exists
        if role is None:
            await message.channel.send(f'Role "{role_name}" does not exist)
            return
        # Role assignment
        await message.author.add_roles(role)
        await message.channel.send(f'Role "{role_name}" was added to {message.author}')
```

In eerste instantie controleert de functie of het ontvangen bericht door de Discord-bot zelf is verzonden. Als dat het geval is, wordt de functie afgesloten met behulp van de `return` -instructie.

De volgende stap bestaat uit een **nadere bestudering van de inhoud van het bericht**. Als het bericht begint met de tekenreeks `!add_role`, herkent de bot dit als een commando. Dit geeft aan dat servergebruikers verzoeken aan de Discord-bot moeten initiëren met de tekenreeks `!add_role`. Hoewel elke tekenreeks als commando kan worden gebruikt, verdient het de voorkeur om tekenreeksen te gebruiken die **niet vaak in natuurlijke taal worden gebruikt**.

De bot bepaalt de gewenste rolnamen op basis van een correct geïnterpreteerd commando met behulp van de Python-functie split(). Vervolgens lokaliseert hij de relevante rol op uw server. U kunt dit doen door gebruik te maken van het `message` object, dat verschillende informatie over uw server bevat in het `message.guild`.

Als de rol niet bestaat en dus de waarde ‘None’ heeft, wordt er een foutmelding gegenereerd en wordt de functie beëindigd met behulp van de `return`. Als de rol wel bestaat, wordt deze toegewezen zoals nodig is. Hiervoor gebruiken we de `add_roles` uit de discord.py-bibliotheek, die ook is gedefinieerd in het `message`.

Opmerking Je Discord-bot kan alle taken uitvoeren die je hem opdraagt. Je kunt bots ontwerpen die functies uitvoeren die vergelijkbaar zijn met de bekende chat- en moderatiebot MEE6, of zelfs je eigen Discord-muziekbots programmeren. We hebben dit geïllustreerd aan de hand van een eenvoudig voorbeeld dat beginners gemakkelijk kunnen volgen.


This is a markdown version of: [https://www.ionos.com/nl-be/digitalguide/server/knowhow/python-discord-bot/](https://www.ionos.com/nl-be/digitalguide/server/knowhow/python-discord-bot/) for AI/LLM consumption.