Kaip sukurti „Python“ botą „Discord“
Savo „Discord“ serverio priežiūra gali pareikalauti nemažai darbo, todėl botai, kurie perima administracines funkcijas, yra labai populiarūs. Naudodamiesi „Python“ biblioteka „discord.py“ ir taikydami pagrindines „Python“ žinias, galite lengvai sukurti savo botą.
Žingsnis po žingsnio – kaip sukurti savo „Python“ botą „Discord“
Prieš pradėdami programuoti botą, turėtumėte sukurti „Discord“ botą. „Discord“ platformoje galite sukurti savo programą, o tai padarę, jūsų „Discord“ botui niekas nebesutrukdys. „Discord“ botui reikalingas kodas priklauso nuo užduočių, kurias norite automatizuoti. Šiame vadove pateiktas botas skirtas vaidmenims „Discord“ serveryje priskirti.
1 žingsnis: įdiekite „discord.py“
Norint sukurti savo botą, būtina naudoti Python biblioteką „discord.py“. Prieš pradėdami, turite ją įdiegti savo kompiuteryje naudodami „pip“, kaip įprasta Python aplinkoje. „Windows“ sistemoje įdiegimui reikalinga terminalo komanda yra tokia:
py -3 -m pip install -U discord.pypython2 žingsnis: sukurti Python dokumentą
Sukurkite naują Python dokumentą, kuriame parašysite savo boto kodą. Python failui kurti galite naudoti įvairius kodų redaktorius arba integruotą programavimo aplinką (IDE), pavyzdžiui, „Pycharm“.
3 žingsnis: prisijunkite prie „Discord“
Pirmiausia įkelkite „Discord“ biblioteką į savo „Python“ failą. Nustatykite boto žetoną, kurį gavote užregistravę savo „Discord“ botą „Discord“ kūrėjų svetainėje. Norėdami tai padaryti, pakeiskite vietos laikiklį savo boto žetonu:
import discord
TOKEN = token_placeholderpythonNorint sąveikauti su „Discord“ API, reikalinga biblioteka. Norint prisijungti prie „Discord“, reikės vadinamojo kliento objekto egzemplioriaus. Norėdami jį sukurti, naudokite šį kodą:
client = discord.Client()python4 žingsnis: Patikrinkite, ar ryšys buvo sėkmingai užmegztas
Kad jūsų botas būtų tinkamai prijungtas prie „Discord“ serverio, įtraukite asinchroninį metodą į savo „Python“ failą. Tai galima padaryti reaguojant į on_ready įvykį, kuris apibrėžtas „discord.py“ API. Kad jūsų funkcija veiktų kaip įvykio tvarkyklė, „Python“ naudokite @client.event dekoratorių.
@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})')pythonProgramuojant „Discord“ botus dažnai naudojamos asinchroninės funkcijos. Tai užtikrina, kad funkcija būtų vykdoma atskirame, nuo pagrindinio srauto nepriklausančiame sraute, o tai leidžia lygiagrečiai vykdyti boto užduotis, neblokuojant pagrindinio srauto.
5 žingsnis: pridėkite funkcijų savo botui
Norint įgyvendinti boto funkcionalumą „discord.py“, naudojamas on_message įvykis. Šis įvykis suaktyvinamas kiekvieną kartą, kai jūsų „Discord“ botas gauna žinutę. Norint apdoroti šį įvykį, jūsų metodas pirmiausia turėtų nustatyti žinutės siuntėją, o tada įvykdyti norimą veiksmą, pavyzdž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šnagrinėti pranešimo turinį. Jei pranešimas prasideda simbolių seka !add_role, botas ją atpažįsta kaip komandą. Tai reiškia, kad serverio vartotojai 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 vartojamos natūralioje kalboje.
Botas, naudodamas Python funkciją split(), iš teisingai interpretuotos komandos nustato pageidaujamą vaidmens pavadinimą. Po to jis suranda atitinkamą vaidmenį jūsų serveryje. Tai galima padaryti pasinaudojant objektu message, kurio lauke message.guild yra įvairi informacija apie jūsų serverį.
Jei vaidmuo neegzistuoja ir todėl jo reikšmė yra „None“, generuojamas klaidos pranešimas, o funkcija nutraukiama naudojant return instrukciją. Jei vaidmuo egzistuoja, jis priskiriamas pagal poreikį. Tam naudojame add_roles funkciją iš „discord.py“ bibliotekos, kuri taip pat apibrėžta message objekte.