# Sådan opretter du en Discord-bot i Python

Det kan være ret tidskrævende at drive sin egen Discord-server, og derfor er bots, der varetager de administrative opgaver, meget populære. Du kan nemt udvikle din egen bot ved hjælp af Python-biblioteket discord.py og ved at anvende grundlæggende Python-kundskaber.

## Trin for trin til din egen Python-Discord-bot

Inden du går i gang med at programmere din bot, skal du oprette en Discord-bot. Du kan **oprette din egen applikation på Discord**, og når du har gjort det, står intet i vejen for din Discord-bot. Den kode, du har brug for til din Discord-bot, afhænger af de opgaver, du ønsker at automatisere. Den bot, der præsenteres i denne vejledning, er beregnet til **at tilføje roller på en Discord-server**.

### Trin 1: Installer discord.py

Python-biblioteket discord.py er et uundværligt værktøj, når du skal oprette din bot. Inden du går i gang, skal du installere det på din computer ved hjælp af pip, som det er kutyme med Python. I Windows er den relevante terminalkommando til installation:

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

### Trin 2: Opret et Python-dokument

Opret et nyt Python-dokument til at programmere din bot. Du kan bruge forskellige kodeeditorer til din Python-fil eller et **integreret udviklingsmiljø (IDE)** som f.eks. PyCharm.

### Trin 3: Opret forbindelse til Discord

Start med at importere Discord-biblioteket til dit Python-program. Indtast det bot-token, du modtog, **da du registrerede din Discord-bot** på Discords udviklerhjemmeside. For at gøre dette skal du erstatte pladsholderen med dit eget bot-token:

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

Du skal bruge biblioteket for at kunne kommunikere med Discord-API’en. For at oprette forbindelse til Discord skal du have en instans af det såkaldte klientobjekt. Brug følgende kode til at oprette denne:

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

### Trin 4: Kontroller, at forbindelsen er oprettet

For at sikre, at din bot er korrekt forbundet til Discord-serveren, skal du inkludere en asynkron metode i din Python-fil. Dette gøres ved at reagere på `on_ready`, som er defineret i discord.py-API’en. For at din funktion kan fungere som en begivenhedshåndterer, skal du bruge `@client.event` i 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})')
```

Note Asynkrone funktioner bruges ofte i programmeringen af Discord-bots. Dette sikrer, at funktionen kører i en dedikeret tråd, der er adskilt fra hovedtråden, hvilket gør det muligt at udføre bot-opgaver parallelt uden at blokere hovedtråden.

### Trin 5: Tilføj funktioner til din bot

For at implementere bot-funktionalitet i discord.py benyttes **begivenheden`on_message`**. Denne begivenhed udløses, hver gang din Discord-bot modtager en besked. For at håndtere denne begivenhed skal din metode først identificere afsenderen af beskeden og derefter udføre den ønskede handling, f.eks. at tildele roller.

```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}')
```

Først kontrollerer funktionen, om den modtagne besked er sendt af Discord-botten selv. Hvis det er tilfældet, afsluttes funktionen ved hjælp af `return`.

Det næste trin indebærer en **nærmere gennemgang af meddelelsens indhold**. Hvis meddelelsen begynder med strengen `!add_role`, genkender boten den som en kommando. Dette betyder, at serverbrugere skal indlede anmodninger til Discord-boten med strengen `!add_role`. Selvom enhver streng kan bruges som kommando, foretrækkes det at anvende strenge, der **ikke er almindeligt forekommende i naturligt sprog**.

Botten fastlægger det ønskede rollenavn ud fra en korrekt fortolket kommando ved hjælp af Python-funktionen split(). Derefter finder den den relevante rolle på din server. Dette gøres ved at benytte `message`, som indeholder en række oplysninger om din server i `message.guild`.

Hvis rollen ikke findes og derfor har værdien »None«, genereres der en fejlmeddelelse, og funktionen afsluttes ved hjælp af `return`. Hvis rollen findes, tildeles den efter behov. Til dette bruger vi `add_roles` fra biblioteket discord.py, som også er defineret i `message` objektet.

Note Din Discord-bot kan udføre alle de opgaver, du giver den. Du kan udvikle bots, der udfører funktioner svarende til den velkendte chat- og moderationsbot MEE6, eller endda programmere dine egne Discord-musikbots. Vi har illustreret dette ved hjælp af et simpelt eksempel, som begyndere nemt kan følge.


This is a markdown version of: [https://www.ionos.com/da-dk/digitalguide/server/know-how/python-discord-bot/](https://www.ionos.com/da-dk/digitalguide/server/know-how/python-discord-bot/) for AI/LLM consumption.