# Slik lager du en Discord-bot i Python

Å drive din egen Discord-server kan være ganske arbeidskrevende, og det er derfor boter som tar seg av administrative oppgaver er så populære. Du kan enkelt lage din egen bot ved å bruke Python-biblioteket discord.py og ved å bruke grunnleggende Python-kunnskaper.

## Trinn for trinn til din egen Python-bot på Discord

Før du begynner å programmere boten din, bør du opprette en Discord-bot. Du kan **opprette din egen applikasjon i Discord**, og når du har gjort det, står ingenting i veien for Discord-boten din. Koden du trenger til Discord-boten din, avhenger av oppgavene du ønsker å automatisere. Boten som presenteres i denne veiledningen, er ment å **tildele roller på en Discord-server.**

### Trinn 1: Installer discord.py

For å lage boten din er Python-biblioteket discord.py et uunnværlig verktøy. Før du setter i gang, må du installere det på systemet ditt ved hjelp av pip, slik man vanligvis gjør med Python. I Windows er følgende terminalkommando riktig for installasjon:

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

### Trinn 2: Opprett et Python-dokument

Opprett et nytt Python-dokument for å programmere boten din. Du kan bruke ulike kodeditorer til Python-filen din eller et **integrert utviklingsmiljø (IDE)** som Pycharm.

### Trinn 3: Koble til Discord

Først må du importere Discord-biblioteket til Python-filen din. Angi bot-tokenet du mottok **da du registrerte Discord-boten din** på Discord-utviklersiden. For å gjøre dette må du erstatte plassholderen med ditt eget bot-token:

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

Du trenger biblioteket for å kommunisere med Discord-API-et. For å koble deg til Discord trenger du en instans av det såkalte klientobjektet. Bruk følgende kode for å opprette dette:

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

### Trinn 4: Kontroller at tilkoblingen ble opprettet

For å sikre at boten din er riktig koblet til Discord-serveren, må du inkludere en asynkron metode i Python-filen din. Dette gjøres ved å reagere på `on_ready`, som er definert i discord.py-API-et. For at funksjonen din skal fungere som en hendelseshåndterer, må du bruke `@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 funksjoner brukes ofte i programmering av Discord-boter. Dette sikrer at funksjonen kjører i en egen tråd, atskilt fra hovedtråden, slik at botens oppgaver kan utføres parallelt uten å blokkere hovedtråden.

### Trinn 5: Legg til funksjoner i boten din

For å implementere botfunksjonalitet i discord.py benyttes **hendelsen`on_message`** ». Denne hendelsen utløses hver gang Discord-boten din mottar en melding. For å håndtere denne hendelsen bør metoden din først identifisere avsenderen av meldingen og deretter utføre den ønskede funksjonaliteten, for eksempel å 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 sjekker funksjonen om den mottatte meldingen er sendt av Discord-boten selv. Hvis det er tilfelle, avsluttes funksjonen ved hjelp av `return`.

Det neste trinnet innebærer en **nærmere gjennomgang av meldingens innhold**. Hvis meldingen begynner med strengen `!add_role`, gjenkjenner boten den som en kommando. Dette betyr at serverbrukere må starte forespørsler til Discord-boten med strengen `!add_role` ». Selv om hvilken som helst streng kan brukes som kommando, er det å foretrekke å bruke strenger som **ikke er vanlige i naturlig språk**.

Boten fastslår det ønskede rollenavnet ut fra en korrekt tolket kommando ved hjelp av Python-funksjonen split(). Deretter finner den den aktuelle rollen på serveren din. Du kan gjøre dette ved å benytte objektet `message`, som inneholder en rekke opplysninger om serveren din i feltet `message.guild`.

Hvis rollen ikke finnes og derfor har verdien «None», genereres det en feilmelding, og funksjonen avsluttes ved hjelp av setningen `return`. Hvis rollen finnes, tildeles den etter behov. Til dette bruker vi funksjonen `add_roles` fra biblioteket discord.py, som også er definert i objektet `message`.

Note Discord-boten din kan utføre alle oppgaver du gir den. Du kan utvikle boter som utfører funksjoner i stil med den kjente chat- og modereringsboten MEE6, eller til og med kode dine egne Discord-musikkboter. Vi har illustrert dette ved hjelp av et enkelt eksempel som nybegynnere lett kan følge.


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