Kā izveidot Python Discord botu
Sava „Discord“ servera uzturēšana var prasīt daudz darba, tāpēc ir populāri boti, kas veic administratīvās funkcijas. Tu vari viegli izveidot savu botu, izmantojot Python bibliotēku „discord.py“ un piemērojot pamata Python zināšanas.
Soli pa solim uz savu Python Discord botu
Pirms sākt bota programmēšanu, tev ir jāizveido Discord bots. Tu vari izveidot savu lietojumprogrammu 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 nepieciešams Discord botam, ir atkarīgs no uzdevumiem, kurus vēlies automatizēt. Šajā apmācībā aprakstītais bots ir paredzēts lomu pievienošanai Discord serverī.
1. solis: instalējiet discord.py
Lai izveidotu savu botu, Python bibliotēka „discord.py“ ir neaizstājams rīks. Pirms sākt darbu, tā jāinstalē sistēmā, izmantojot „pip“, kā tas ir ierasts Python vidē. Windows vidē instalēšanai jāizmanto šāda termināļa komanda:
py -3 -m pip install -U discord.pypython2. solis: izveidojiet Python dokumentu
Izveidojiet jaunu Python dokumentu, lai programmētu savu botu. Python faila izveidei varat izmantot dažādus koda redaktorus vai integrētu attīstības vidi (IDE), piemēram, Pycharm.
3. solis: izveidojiet savienojumu ar Discord
Vispirms importējiet Discord bibliotēku savā Python programmā. Iestatiet bota atslēgu, ko saņēmāt , reģistrējot savu Discord botu Discord izstrādātāju vietnē. Lai to izdarītu, aizstājiet vietas turētāju ar savu bota atslēgu:
import discord
TOKEN = token_placeholderpythonLai sazinātos ar Discord API, tev ir nepieciešama bibliotēka. Lai izveidotu savienojumu ar Discord, tev būs nepieciešams tā saucamā klienta objekta eksemplārs. Lai to izveidotu, izmanto šādu kodu:
client = discord.Client()python4. solis: Pārliecinieties, ka savienojums ir izveidots veiksmīgi
Lai nodrošinātu, ka jūsu bots ir pareizi savienots ar Discord serveri, iekļaujiet 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 apstrādātājs, izmantojiet Python dekoratoru @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})')pythonDiscord bota programmēšanā bieži tiek izmantotas asinhronās funkcijas. Tas nodrošina, ka funkcija darbojas atsevišķā, no galvenā pavediena nošķirtā pavedienā, ļaujot paralēli izpildīt bota uzdevumus, neblokējot galveno pavedienu.
5. solis: pievienojiet savam botam funkcijas
Lai īstenotu bota funkcionalitāti programmā „discord.py“, tiek izmantots notikumson_message “. Šis notikums tiek izraisīts ikreiz, kad jūsu Discord bots saņem ziņojumu. Lai apstrā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 pievienošana.
@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ārtraukta, izmantojot 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 lietotājiem pieprasījumi 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 interpretējot komandu ar Python funkcijas split() palīdzību. Pēc tam tas atrod attiecīgo lomu jūsu serverī. To var izdarīt, izmantojot objektu message, kura laukā message.guild ir iekļauta dažāda informācija 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ārtraukta, izmantojot return rindu. Ja loma pastāv, tā tiek piešķirta atbilstoši vajadzībai. Šim nolūkam mēs izmantojam add_roles funkciju no bibliotēkas „discord.py“, kas ir definēta arī message objektā.