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:
py -3 -m pip install -U discord.pypythonKorak 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:
import discord
TOKEN = token_placeholderpythonZa 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:
client = discord.Client()pythonKorak 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.
@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})')pythonPri 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 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šiljatelja sporočila in nato izvesti želeno funkcionalnost, 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 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.