Sava „Discord“ servera uz­tu­rē­ša­na var prasīt daudz darba, tāpēc ir populāri boti, kas veic ad­mi­nis­tra­tī­vās funkcijas. Tu vari viegli izveidot savu botu, iz­man­to­jot Python bib­lio­tē­ku „discord.py“ un pie­mē­ro­jot pamata Python zināšanas.

Soli pa solim uz savu Python Discord botu

Pirms sākt bota prog­ram­mē­ša­nu, tev ir jāizveido Discord bots. Tu vari izveidot savu lie­to­jum­prog­ram­mu ar Discord palīdzību, un, tiklīdz tas būs izdarīts, nekas vairs nekavēs tavu Discord bota darbību. Kods, kas tev ne­pie­cie­šams Discord botam, ir atkarīgs no uz­de­vu­miem, kurus vēlies au­to­ma­ti­zēt. Šajā apmācībā ap­rak­stī­tais bots ir paredzēts lomu pie­vie­no­ša­nai Discord serverī.

1. solis: in­sta­lē­jiet discord.py

Lai izveidotu savu botu, Python bib­lio­tē­ka „discord.py“ ir ne­aiz­stā­jams rīks. Pirms sākt darbu, tā jāinstalē sistēmā, iz­man­to­jot „pip“, kā tas ir ierasts Python vidē. Windows vidē in­sta­lē­ša­nai jāizmanto šāda termināļa komanda:

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

2. solis: iz­vei­do­jiet Python dokumentu

Iz­vei­do­jiet jaunu Python dokumentu, lai prog­ram­mē­tu savu botu. Python faila izveidei varat izmantot dažādus koda re­dak­to­rus vai integrētu at­tīs­tī­bas vidi (IDE), piemēram, Pycharm.

3. solis: iz­vei­do­jiet sa­vie­no­ju­mu ar Discord

Vispirms im­por­tē­jiet Discord bib­lio­tē­ku savā Python programmā. Iestatiet bota atslēgu, ko saņēmāt , re­ģis­trē­jot savu Discord botu Discord iz­strā­dā­tā­ju vietnē. Lai to izdarītu, aiz­stā­jiet vietas turētāju ar savu bota atslēgu:

import discord
TOKEN = token_placeholder
python

Lai sazinātos ar Discord API, tev ir ne­pie­cie­ša­ma bib­lio­tē­ka. Lai izveidotu sa­vie­no­ju­mu ar Discord, tev būs ne­pie­cie­šams tā saucamā klienta objekta ek­s­em­plārs. Lai to izveidotu, izmanto šādu kodu:

client = discord.Client()
python

4. solis: Pār­lie­ci­nie­ties, ka sa­vie­no­jums ir izveidots veiksmīgi

Lai no­dro­ši­nā­tu, ka jūsu bots ir pareizi savienots ar Discord serveri, ie­kļau­jiet savā Python failā asinhrono metodi. To var panākt, reaģējot uz notikumu on_ready, kas ir definēts discord.py API. Lai jūsu funkcija darbotos kā notikuma ap­strā­dā­tājs, iz­man­to­jiet Python de­ko­ra­to­ru @client.event “.

@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

Discord bota prog­ram­mē­ša­nā bieži tiek iz­man­to­tas asin­hro­nās funkcijas. Tas nodrošina, ka funkcija darbojas atsevišķā, no galvenā pavediena nošķirtā pavedienā, ļaujot paralēli izpildīt bota uzdevumus, ne­blo­kē­jot galveno pavedienu.

5. solis: pie­vie­no­jiet savam botam funkcijas

Lai īstenotu bota fun­kcio­na­li­tā­ti programmā „discord.py“, tiek izmantots notikumson_message “. Šis notikums tiek izraisīts ikreiz, kad jūsu Discord bots saņem ziņojumu. Lai ap­strā­dā­tu šo notikumu, jūsu metodei vispirms jānosaka ziņojuma sūtītājs un pēc tam jāizpilda vēlamā darbība, piemēram, lomu pie­vie­no­ša­na.

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

Sākumā funkcija pārbauda, vai saņemto ziņojumu ir nosūtījis pats Discord bots. Ja tas tā ir, funkcija tiek pār­trauk­ta, iz­man­to­jot return teikumu.

Nākamais solis ir ziņojuma satura rūpīgāka pārbaude. Ja ziņojums sākas ar teksta virkni !add_role, bots to atpazīst kā komandu. Tas nozīmē, ka servera lie­to­tā­jiem pie­pra­sī­ju­mi Discord botam jāuzsāk ar teksta virkni !add_role “. Lai gan par komandu var izmantot jebkuru teksta virkni, ieteicams izmantot tās, kas dabiskajā valodā netiek plaši lietotas.

Bots nosaka vēlamo lomas nosaukumu, pareizi in­ter­pre­tē­jot komandu ar Python funkcijas split() palīdzību. Pēc tam tas atrod attiecīgo lomu jūsu serverī. To var izdarīt, iz­man­to­jot objektu message, kura laukā message.guild ir iekļauta dažāda in­for­mā­ci­ja par jūsu serveri.

Ja loma nepastāv un tādējādi tās vērtība ir „None“, tiek ģenerēts kļūdas ziņojums un funkcija tiek pār­trauk­ta, iz­man­to­jot return rindu. Ja loma pastāv, tā tiek piešķirta at­bil­sto­ši va­ja­dzī­bai. Šim nolūkam mēs iz­man­to­jam add_roles funkciju no bib­lio­tē­kas „discord.py“, kas ir definēta arī message objektā.

Go to Main Menu