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.py
python

2. 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_placeholder
python

A 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()
python

4. 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})')
python
Megjegyzés

Az 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.

Ugrás a főmenübe