# Kako ustvariti bot za Discord v Pythonu

Vodenje lastnega strežnika Discord lahko zahteva veliko dela, zato so priljubljeni boti, ki prevzamejo administrativne naloge. S pomočjo knjižnice discord.py za Python in osnovnega znanja jezika Python lahko enostavno ustvarite svojega lastnega bota.

## Korak za korakom do lastnega bot za Discord v Pythonu

Preden začnete programirati svojega bota, morate ustvariti Discord bot. **V Discordu** lahko **ustvarite lastno aplikacijo**, in ko to storite, vam nič več ne bo stalo na poti pri razvoju vašega Discord bota. Koda, ki jo potrebujete za svojega Discord bota, je odvisna od nalog, ki jih želite avtomatizirati. Bot, predstavljen v tem vodiču, je namenjen **dodajanju vlog znotraj Discord strežnika**.

### Korak 1: namestite discord.py

Za ustvarjanje botov je knjižnica Python discord.py nepogrešljivo orodje. Preden začnete, jo morate v skladu z običajno prakso pri Pythonu namestiti v svoj sistem s pomočjo pip. V sistemu Windows je ustrezen ukaz za namestitev v terminalu:

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

### Korak 2: ustvarite dokument v jeziku Python

Ustvarite nov dokument v jeziku Python za programiranje svojega bota. Za svojo datoteko v jeziku Python lahko uporabite različne urejevalnike kode ali **integrirano razvojno okolje (IDE)**, kot je na primer Pycharm.

### 3. korak: poveži se z Discordom

Najprej uvozite knjižnico Discord v svoj Pythonov dokument. Nastavite žeton bota, ki ste ga prejeli **ob registraciji svojega Discorda bota** na razvijalski strani Discorda. Za to zamenjajte nadomestni znak s svojim žetonom bota:

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

Za komunikacijo z Discordovim API-jem potrebujete knjižnico. Da bi se povezali z Discordom, potrebujete instanco tako imenovanega odjemalskega objekta. Za njegovo ustvarjanje uporabite naslednjo kodo:

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

### Korak 4: Preverite, ali je bila povezava uspešno vzpostavljena

Da bi zagotovili, da je vaš bot pravilno povezan s strežnikom Discord, vključite asinhrono metodo v svojo datoteko Python. To dosežete z odzivom na dogodek `on_ready`, ki je opredeljen v API-ju discord.py. Da bo vaša funkcija delovala kot obdelovalec dogodkov, uporabite dekorator `@client.event` v Pythonu.

```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 Pri programiranju botov za Discord se pogosto uporabljajo asinhrone funkcije. To zagotavlja, da funkcija teče v namenskem niti, ločenem od glavnega niti, kar omogoča vzporedno izvajanje nalog bota, ne da bi pri tem blokirali glavni niti.

### Korak 5: dodajte funkcionalnosti svojemu botu

Za implementacijo funkcionalnosti bota v datoteki discord.py se uporablja **dogodek`on_message`**. Ta dogodek se sproži vsakič, ko vaš Discord bot prejme sporočilo. Za obdelavo tega dogodka mora vaša metoda najprej ugotoviti pošiljatelja sporočila in nato izvesti želeno funkcionalnost, na primer dodajanje vlog.

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

Najprej funkcija preveri, ali je prejeto sporočilo poslala sama Discordova bot. Če je to res, se funkcija zaključi z izjavo `return`.

Naslednji korak vključuje **podrobnejšo preučitev vsebine sporočila**. Če se sporočilo začne z nizom `!add_role`, ga bot prepozna kot ukaz. To pomeni, da morajo uporabniki strežnika zahteve botu Discord začeti z nizom `!add_role`. Čeprav je mogoče kot ukaz uporabiti kateri koli niz, je priporočljivo uporabljati nize, ki **se v naravnem jeziku običajno ne uporabljajo**.

Bot na podlagi pravilno razumljenega ukaza z uporabo funkcije Python split() določi ime želene vloge. Nato poišče ustrezno vlogo na vašem strežniku. To lahko storite z uporabo objekta `message`, ki v polju `message.guild` vsebuje različne podatke o vašem strežniku.

Če vloga ne obstaja in ima zato vrednost »None«, se prikaže sporočilo o napaki, funkcija pa se prekine z izjavo `return`. Če vloga obstaja, se dodeli po potrebi. Za to uporabimo funkcijo `add_roles` iz knjižnice discord.py, ki je prav tako definirana znotraj objekta `message`.

Note Vaš Discord bot je sposoben opravljati vse naloge, ki mu jih dodelite. Lahko oblikujete bote, ki izvajajo funkcije, podobne tistim pri znanem botu za klepet in moderiranje MEE6, ali pa celo sami programirate svoje Discord glasbene bote. To smo ponazorili s preprostim primerom, ki ga lahko začetniki zlahka sledijo.


This is a markdown version of: [https://www.ionos.com/sl-si/digitalguide/streznik/znanje/pythonov-bot-za-discord/](https://www.ionos.com/sl-si/digitalguide/streznik/znanje/pythonov-bot-za-discord/) for AI/LLM consumption.