IT Projekte / Home Lab / Smart Home / Games

Allgemein, Discord

Discord Bot Programmieren 2023

Erstelle Dein eigenes Python-Skript mit Pycord und lasse Deinen Discord Bot Deinen ersten Befehl reagieren.

Du benötigst Folgendes:

  • Einen Discord Account
  • Einen Discord Server
  • Einen Discord Bot

Erstelle Deinen eigenen Discord Server
Lege Deinen eigenen Discord Bot an

1. PyCharm installieren

Als ersten Schritt lädst Du Dir Python von hier herunter und installierst es.

Wenn Du Python erfolgreich installiert hast, kannst Du Dir die Community Version von PyCharm unter folgendem Link herunterladen.

Nach der Installation öffnest Du PyCharm und wählst New Project, zum erstellen eines neuen Projektes aus.

Discord Bot - Erstelle ein neues Projekt
Discord Bot – Erstelle ein neues Projekt

Du kannst jetzt entscheiden, ob Du alle Pakete, die Du für dieses Projekt benötigst, nur für das Projekt zugänglich machen möchtest, oder ob diese global auf Deinem PC genutzt werden können. Wenn Du die Pakete global anlegen magst, dann wähle hierzu Previously configured interpreter aus. Am Ende klicke auf Create, um das Projekt zu erstellen.

Discord Bot - Definiere den Interpreter
Discord Bot – Definiere den Interpreter

2. Pycord Paket installieren

Öffne im unteren Bereich der IDE den Python Packages Tab, suche nach py-cord und installiere es mit Install package.

py-cord
Discord Bot - Installiere Pycord
Discord Bot – Installiere Pycord

Alternativ kannst Du es auch über das Terminal installieren:

pip install py-cord

3. Skript und Bot verknüpfen

Du musst Deinen Bot, den Du zuvor erstellt hast, mit Deinem Skript verknüpfen. Hierzu bindest Du den Token Deines Bots im Projekt mit ein.

3.1 .env Datei anlegen

Erstelle hierzu eine neue Datei .env in dieser Datei speicherst Du Deinen Token ab.

.env
Discord Bot - .env
Discord Bot – .env

Du legst hier eine Variable TOKEN an, welcher Du den Token Deines Bots zuweist.
Es wäre hier drüber zum Beispiel möglich auch mehrere Bots ansprechen zu können, in dem Du einfach mehrere Tokens hinterlegst.

TOKEN = xxxxxxxx

Installiere das Paket python-dotenv, um die .env Datei in Deinen Scripten nutzen zu können.

python -m pip install python-dotenv

Oder über die Python Packages.

Discord Bot - python-dotenv installieren
Discord Bot – python-dotenv installieren

3.2 Script erstellen

Lege eine weitere Datei an, welche den Code Deines Bots beinhalten soll.

In diese Datei importierst Du mit import discord pycord. import os, welches ein Grundmodul ist, das Du benötigst, um den Token aus der .env Datei zuladen. Und import load_dotenv ermöglicht es Dir, die .env Datei laden zu können.

import discord
import os
from dotenv import load_dotenv

Lade erst alle Variablen aus Deiner .env Datei, aktuell ist dies nur Dein Token.


dotenv.load_dotenv()

3.3 Deinen Bot erstellen

Erstelle eine neue Instanz Bot von Discord.Bot(). Dieses Objekt kann im weiteren Verlauf verschiedene Parameter beinhalten, auf die Du zugreifen kannst.

bot = discord.Bot()

3.3.1 Folgende Funktion lässt Deinen Bot Online gehen:

Mit dem @event überschriebst Du die on_ready() Methode, um ein Ereignis zu definieren, welches automatisch ausgeführt werden soll, wenn der Bot einsatzbereit ist. Das async vor der Funktion führt dazu, dass der Code nicht von Oben nach Unten abgearbeitet wird, sondern, dass diese Methode jederzeit ausgeführt werden kann. Mit print gibst Du in Deiner Konsole folgende Zeilen aus.

@bot.event
async def on_ready():
    print(f"{bot.user} is ready and online!")

3.3.2 Lass Deinen Bot mit dem Server interagieren:

Es fehlt nur noch, dass Dein Bot auch reagieren kann. Dies kann er zum Beispiel über die Slash-Befehle.

Nutze hierzu @slash_command(), um einen Slash-Befehl oder auch mehrere zu definieren. Du kannst dabei innerhalb der Klammern dem Befehl einen Namen und eine Beschreibung geben. Diese werden dann auch auf Deinem Server angezeigt, um dem Nutzer die möglichen Befehle anbieten zu können.

Auch hier wird wieder eine async Funktion verwendet und der Methodenname ist frei wählbar. Damit der Bot weiß worauf, er reagieren soll, wird Deiner Methode eine Variable mit angegeben.

In dieser einfachen Funktion antwortet der Bot mit Hey! auf Deine Nachricht hello. Vor Deiner Reaktion steht noch das await, was dafür da ist, damit das Skript / der Bot darauf wartet, dass auch die Antwort ausgeführt wurde, bevor er wieder auf weitere Aktionen wartet.

@bot.slash_command(name = "hello", description = "Say hello to the bot")
async def say_hello(ctx):
    await ctx.respond("Hey!")

3.3.3 Dein Bot geht online

Zu guter Letzt möchtest Du Deinen Bot auch aktivieren, dies geschieht in dem Du mit Deinem Objekt bot die Methode run() ausführst. Dieser übergibst Du Deinen Token, damit Dein Programm mit Deinem Bot und dieser mit Deinem Server interagieren kann.

bot.run(os.getenv('TOKEN'))

Am Ende sollte Dein Code für den Anfang wie folgt aussehen:

#-------------------------------------------------------------------
# created by Frederic Kohl
# 28.03.2023
#
# sources
# https://guide.pycord.dev/getting-started/creating-your-first-bot (28.03.2023 20:40)
#-------------------------------------------------------------------
import discord
import os
from dotenv import load_dotenv

load_dotenv() # load all the variables from the env file
bot = discord.Bot()

@bot.event
async def on_ready():
    print(f"{bot.user} is ready and online!")

@bot.slash_command(name = "hello", description = "Say hello to the bot")
async def say_hello(ctx):
    await ctx.respond("Hey!")

bot.run(os.getenv('TOKEN')) # run the bot with the token

3.4 Skript ausführen:

Dein erstelltes Skript kannst Du schnell mit einem Rechtsklick auf Deinen Code und einem Klick auf Run ausführen.

Discord Bot - Skript ausführen
Discord Bot – Skript ausführen

Es sollte sich nun unten ein Tab namens Run öffnen. Hier kannst Du Dein Skript beobachten und auch sehen, dass der Print-Befehl ausgeführt wurde.

Discord Bot - Konsolen Ausgabe
Discord Bot – Konsolen Ausgabe

Auf Deinem Discord Server sollte jetzt Dein Bot ebenfalls als online angezeigt werden.

Discord Bot - Der Bot ist online
Discord Bot – Der Bot ist online

4. Discord Server und Bot

Wenn Du jetzt in einen Chat einen Slash tippst, bekommst Du schon viele Möglichkeiten vorgegeben, welche von Beginn an integriert sind.

Discord Bot - Allgemeine Slash-Befehle
Discord Bot – Allgemeine Slash-Befehle

Gibst Du aber /hello ein, so bekommst Du auch im Vorschlag schon, diesen angezeigt und was dieser Befehl bewirkt.

Discord Bot - Slash-Befehl hello
Discord Bot – Slash-Befehl hello

Bestätigst Du diese Nachricht, so antwortet Dein Bot auf Deine Nachricht mit Hey!

Discord Bot - Rückmeldung vom Bot
Discord Bot – Rückmeldung vom Bot

Weitere hilfreiche Seiten:

https://docs.pycord.dev/en/stable/ (27.03.2023 17:22)

https://guide.pycord.dev/introduction/ (27.03.2023 17:25)

Titelbild von Discord