Vodenje lastnega strežnika Discord lahko zahteva veliko dela, zato so pri­lju­blje­ni boti, ki pre­vza­me­jo ad­mi­ni­stra­tiv­ne 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 pro­gra­mi­ra­ti svojega bota, morate ustvariti Discord bot. V Discordu lahko ustvarite lastno apli­ka­ci­jo, in ko to storite, vam nič več ne bo stalo na poti pri razvoju vašega Discord bota. Koda, ki jo po­tre­bu­je­te za svojega Discord bota, je odvisna od nalog, ki jih želite av­to­ma­ti­zi­ra­ti. Bot, pred­sta­vljen v tem vodiču, je namenjen dodajanju vlog znotraj Discord strežnika.

Korak 1: namestite discord.py

Za ustvar­ja­nje botov je knjižnica Python discord.py ne­po­gre­šlji­vo 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 na­me­sti­tev v terminalu:

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

Korak 2: ustvarite dokument v jeziku Python

Ustvarite nov dokument v jeziku Python za pro­gra­mi­ra­nje svojega bota. Za svojo datoteko v jeziku Python lahko uporabite različne ure­je­val­ni­ke kode ali in­te­gri­ra­no 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 re­gi­stra­ci­ji svojega Discorda bota na raz­vi­jal­ski strani Discorda. Za to za­me­njaj­te na­do­me­stni znak s svojim žetonom bota:

import discord
TOKEN = token_placeholder
python

Za ko­mu­ni­ka­ci­jo z Di­s­cor­do­vim API-jem po­tre­bu­je­te knjižnico. Da bi se povezali z Discordom, po­tre­bu­je­te instanco tako ime­no­va­ne­ga od­je­mal­ske­ga objekta. Za njegovo ustvar­ja­nje uporabite naslednjo kodo:

client = discord.Client()
python

Korak 4: Preverite, ali je bila povezava uspešno vzpo­sta­vlje­na

Da bi za­go­to­vi­li, da je vaš bot pravilno povezan s stre­žni­kom Discord, vključite asinhrono metodo v svojo datoteko Python. To dosežete z odzivom na dogodek on_ready, ki je opre­de­ljen v API-ju discord.py. Da bo vaša funkcija delovala kot ob­de­lo­va­lec dogodkov, uporabite dekorator @client.event v Pythonu.

@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})')
python
Note

Pri pro­gra­mi­ra­nju botov za Discord se pogosto upo­ra­blja­jo asinhrone funkcije. To za­go­ta­vlja, 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 funk­ci­o­nal­no­sti svojemu botu

Za im­ple­men­ta­ci­jo funk­ci­o­nal­no­sti bota v datoteki discord.py se uporablja dogodekon_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­ši­lja­te­lja sporočila in nato izvesti želeno funk­ci­o­nal­nost, na primer dodajanje vlog.

@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 Di­s­cor­do­va bot. Če je to res, se funkcija zaključi z izjavo return.

Naslednji korak vključuje po­drob­nej­š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 upo­rab­ni­ki strežnika zahteve botu Discord začeti z nizom !add_role. Čeprav je mogoče kot ukaz uporabiti kateri koli niz, je pri­po­ro­člji­vo upo­ra­blja­ti nize, ki se v naravnem jeziku običajno ne upo­ra­blja­jo.

Bot na podlagi pravilno ra­zu­mlje­ne­ga 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 de­fi­ni­ra­na znotraj objekta message.

Go to Main Menu