Savo „Discord“ serverio priežiūra gali pa­rei­ka­lau­ti nemažai darbo, todėl botai, kurie perima ad­mi­nist­ra­ci­nes funkcijas, yra labai po­pu­lia­rūs. Nau­do­da­mie­si „Python“ bi­b­lio­te­ka „discord.py“ ir taikydami pag­rin­di­nes „Python“ žinias, galite lengvai sukurti savo botą.

Žingsnis po žingsnio – kaip sukurti savo „Python“ botą „Discord“

Prieš pradėdami prog­ra­muo­ti botą, tu­rė­tu­mė­te sukurti „Discord“ botą. „Discord“ plat­for­mo­je galite sukurti savo programą, o tai padarę, jūsų „Discord“ botui niekas ne­be­su­truk­dys. „Discord“ botui rei­ka­lin­gas kodas priklauso nuo užduočių, kurias norite au­to­ma­ti­zuo­ti. Šiame vadove pateiktas botas skirtas vaid­me­nims „Discord“ serveryje priskirti.

1 žingsnis: įdiekite „discord.py“

Norint sukurti savo botą, būtina naudoti Python bi­b­lio­te­ką „discord.py“. Prieš pradėdami, turite ją įdiegti savo kom­piu­te­ry­je naudodami „pip“, kaip įprasta Python aplinkoje. „Windows“ sistemoje įdiegimui rei­ka­lin­ga terminalo komanda yra tokia:

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

2 žingsnis: sukurti Python dokumentą

Sukurkite naują Python dokumentą, kuriame pa­ra­šy­si­te savo boto kodą. Python failui kurti galite naudoti įvairius kodų re­dak­to­rius arba in­te­gruo­tą prog­ra­ma­vi­mo aplinką (IDE), pa­vyz­džiui, „Pycharm“.

3 žingsnis: pri­si­jun­ki­te prie „Discord“

Pir­miau­sia įkelkite „Discord“ bi­b­lio­te­ką į savo „Python“ failą. Nu­sta­ty­ki­te boto žetoną, kurį gavote už­re­gist­ra­vę savo „Discord“ botą „Discord“ kūrėjų sve­tai­nė­je. Norėdami tai padaryti, pa­kei­s­ki­te vietos laikiklį savo boto žetonu:

import discord
TOKEN = token_placeholder
python

Norint są­vei­kau­ti su „Discord“ API, rei­ka­lin­ga bi­b­lio­te­ka. Norint pri­si­jung­ti prie „Discord“, reikės va­di­na­mo­jo kliento objekto eg­zemp­lio­riaus. Norėdami jį sukurti, naudokite šį kodą:

client = discord.Client()
python

4 žingsnis: Pa­tik­rin­ki­te, ar ryšys buvo sėkmingai užmegztas

Kad jūsų botas būtų tinkamai pri­jung­tas prie „Discord“ serverio, įtraukite asin­ch­ro­ni­nį metodą į savo „Python“ failą. Tai galima padaryti rea­guo­jant į on_ready įvykį, kuris api­brėž­tas „discord.py“ API. Kad jūsų funkcija veiktų kaip įvykio tvarkyklė, „Python“ naudokite @client.event deko­ra­to­rių.

@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

Prog­ra­muo­jant „Discord“ botus dažnai nau­do­ja­mos asin­ch­ro­ni­nės funkcijos. Tai užtikrina, kad funkcija būtų vykdoma atskirame, nuo pag­rin­di­nio srauto ne­pri­klau­san­čia­me sraute, o tai leidžia ly­gia­gre­čiai vykdyti boto užduotis, ne­blo­kuo­jant pag­rin­di­nio srauto.

5 žingsnis: pridėkite funkcijų savo botui

Norint įgy­ven­din­ti boto funk­cio­na­lu­mą „discord.py“, nau­do­ja­mas on_message įvykis. Šis įvykis su­ak­ty­vi­na­mas kiekvieną kartą, kai jūsų „Discord“ botas gauna žinutę. Norint apdoroti šį įvykį, jūsų metodas pir­miau­sia turėtų nustatyti žinutės siuntėją, o tada įvykdyti norimą veiksmą, pa­vyz­džiui, priskirti vaidmenis.

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

Iš pradžių funkcija patikrina, ar gautą žinutę išsiuntė pats „Discord“ botas. Jei taip, funkcija baigiama naudojant return teiginį.

Kitas žingsnis – atidžiau iš­nag­ri­nė­ti pranešimo turinį. Jei pra­ne­ši­mas prasideda simbolių seka !add_role, botas ją atpažįsta kaip komandą. Tai reiškia, kad serverio var­to­to­jai turi pradėti užklausas „Discord“ botui naudodami simbolių seką !add_role “. Nors kaip komandą galima naudoti bet kokią simbolių seką, geriau rinktis tokias, kurios nėra dažnai var­to­ja­mos na­tū­ra­lio­je kalboje.

Botas, nau­do­da­mas Python funkciją split(), iš teisingai in­ter­pre­tuo­tos komandos nustato pa­gei­dau­ja­mą vaidmens pa­va­di­ni­mą. Po to jis suranda ati­tin­ka­mą vaidmenį jūsų serveryje. Tai galima padaryti pa­si­nau­do­jant objektu message, kurio lauke message.guild yra įvairi in­for­ma­ci­ja apie jūsų serverį.

Jei vaidmuo ne­eg­zis­tuo­ja ir todėl jo reikšmė yra „None“, ge­ne­ruo­ja­mas klaidos pra­ne­ši­mas, o funkcija nu­trau­kia­ma naudojant return inst­ruk­ci­ją. Jei vaidmuo eg­zis­tuo­ja, jis pri­ski­ria­mas pagal poreikį. Tam naudojame add_roles funkciją iš „discord.py“ bi­b­lio­te­kos, kuri taip pat apibrėžta message objekte.

Go to Main Menu