Hogyan lehet létrehozni egy Python Discord botot?
A saját Discord szervered sok munkával járhat, ezért népszerűek az adminisztratív funkciókat ellátó botok. A Python discord.py könyvtár és alapvető Python ismeretek segítségével könnyedén megtervezheted a saját botodat.
Lépésről lépésre a saját Python Discord botodhoz
Mielőtt elkezdenéd a bot programozását, létre kell hoznod egy Discord botot. A Discord segítségével létrehozhatod a saját alkalmazásodat, és miután ezt megtetted, semmi sem állhat a Discord botod útjába. A Discord botodhoz szükséges kód az automatizálni kívánt feladatoktól függ. Az ebben az oktatóanyagban bemutatott bot célja, hogy szerepköröket adjon hozzá egy Discord szerveren belül.
1. lépés: telepítse a discord.py programot
A bot létrehozásához elengedhetetlen eszköz a Python könyvtár discord.py. Mielőtt elkezdené, telepítenie kell a rendszerére a pip segítségével, ahogyan az a Python esetében szokásos. Windows rendszeren a telepítéshez a megfelelő terminálparancs:
py -3 -m pip install -U discord.pypython2. lépés: Python dokumentum létrehozása
Hozzon létre egy új Python dokumentumot a bot kódolásához. A Python fájlhoz különböző kódszerkesztőket vagy integrált fejlesztői környezetet (IDE) használhat, például a Pycharmot.
3. lépés: csatlakozás a Discordhoz
Először importáld a Discord könyvtárat a Python dokumentumodba. Állítsd be a Discord fejlesztői oldalon a Discord bot regisztrációja során kapott bot token-t. Ehhez cseréld ki a helyőrzőt a saját bot token-edre:
import discord
TOKEN = token_placeholderpythonA Discord API-val való interakcióhoz szükséged van a könyvtárra. A Discordhoz való csatlakozáshoz szükséged lesz az úgynevezett kliens objektum egy példányára. Ehhez használd a következő kódot:
client = discord.Client()python4. lépés: Ellenőrizze, hogy a kapcsolat sikeresen létrejött-e.
Annak érdekében, hogy a botod megfelelően csatlakozzon a Discord szerverhez, illessz be egy aszinkron módszert a Python fájlodba. Ezt úgy érheted el, hogy reagálsz az on_ready eseményre, amely a discord.py API-ban van definiálva. Ahhoz, hogy a függvényed eseménykezelőként működjön, használd a @client.event dekorátort Pythonban.
@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})')pythonAz aszinkron függvényeket gyakran használják a Discord bot programozásban. Ez biztosítja, hogy a függvény a fő szálaktól elkülönült, dedikált szálon futjon, lehetővé téve a bot feladatok párhuzamos végrehajtását anélkül, hogy blokkolná a fő szálat.
5. lépés: funkciók hozzáadása a bothoz
A bot funkciók megvalósításához a discord.py-ban a on_message eseményt használjuk. Ez az esemény akkor aktiválódik, amikor a Discord bot üzenetet kap. Az esemény kezeléséhez a módszernek először meg kell határoznia az üzenet feladóját, majd végre kell hajtania a kívánt funkciót, például szerepkörök hozzáadását.
@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}')Először a függvény ellenőrzi, hogy a fogadott üzenetet maga a Discord bot küldte-e. Ha igen, akkor a függvény a return utasítással kilép.
A következő lépés az üzenet tartalmának alaposabb vizsgálata. Ha az üzenet a !add_role karakterlánccal kezdődik, a bot parancsként ismeri fel. Ez azt jelenti, hogy a szerver felhasználóinak a !add_role karakterlánccal kell kezdeményezniük a Discord bot felé irányuló kéréseket. Bár bármely karakterlánc használható parancsként, célszerűbb olyan karakterláncokat használni, amely ek nem gyakoriak a természetes nyelvben.
A bot a Python split() függvény segítségével a helyesen értelmezett parancsból meghatározza a kívánt szerepkör nevét. Ezt követően megkeresi a megfelelő szerepkört a szerveren. Ehhez a message objektumot használhatja, amely a message.guild mezőben számos információt tartalmaz a szerverről.
Ha a szerepkör nem létezik, és ennek következtében értéke „None”, akkor hibaüzenet jelenik meg, és a függvény a return utasítással leáll. Ha a szerepkör létezik, akkor szükség szerint hozzárendelődik. Ehhez a discord.py könyvtár add_roles függvényét használjuk, amely szintén a message objektumban van definiálva.