Dein Discord-Bot mit Python: Erstelle jetzt dein eigenes Tool!
Ein eigener Discord-Server kann viel Arbeit machen. Deshalb sind Bots, die administrative Aufgaben übernehmen, extrem beliebt. So ein Bot lässt sich mit der Python-Bibliothek discord.py und ein wenig Python-Wissen ganz einfach selbst bauen.
Schritt für Schritt zum eigenen Discord-Bot in Python
Bevor du mit dem Programmieren loslegst, musst du einen Discord-Bot anlegen. Dazu kannst du direkt bei Discord eine Application erstellen. Danach steht deinem Projekt nichts mehr im Weg. Welchen Code du brauchst, hängt von den gewünschten Aufgaben ab. In dieser Anleitung zeigen wir dir einen Bot, der Rollen auf einem Discord-Server vergibt.
Schritt 1: discord.py installieren
Für deinen Bot nutzt du hauptsächlich die Python-Library discord.py. Diese musst du zuerst auf deinem System installieren. Wie gewohnt geschieht das in Python über pip. Unter Windows nutzt du dafür diesen Terminalbefehl:
py -3 -m pip install -U discord.pypythonSchritt 2: Python-Dokument erstellen
Erstelle ein neues Python-Dokument für deinen Bot-Code. Du kannst dafür einfache Code-Editoren oder eine integrierte Entwicklungsumgebung (IDE) wie Pycharm verwenden.
Schritt 3: Verbindung zu Discord aufbauen
Importiere die Discord-Bibliothek in dein Dokument und hinterlege das Bot-Token. Dieses hast du bei der Registrierung deines Bots auf der Discord-Developerseite bekommen. Ersetze den Platzhalter einfach durch dein persönliches Token:
import discord
TOKEN = token_placeholderpythonDu brauchst die Bibliothek, um mit der Discord-API zu kommunizieren. Damit die Verbindung klappt, ist zudem eine Instanz des Client-Objekts nötig. Diese erzeugst du so:
client = discord.Client()pythonSchritt 4: Verbindung prüfen
Als Nächstes baust du eine asynchrone Methode ein. Sie prüft, ob die Verbindung zwischen Bot und Server glatt läuft. Dafür nutzt du das on_ready-Event der discord.py-API. Damit deine Funktion als Event-Handler erkannt wird, verwendest du den Dekorator @client.event.
@client.event
async def on_ready():
print(f'{client.user} ist mit folgenden Servern verbunden:\n')
for server in client.guilds:
print(f'{server.name}(id: {server.id})')pythonBei Discord-Bots wird oft mit asynchronen Funktionen gearbeitet. Dadurch läuft die Funktion in einem eigenen Bereich ab, ohne das Hauptprogramm zu stoppen. So kann dein Bot mehrere Aufgaben gleichzeitig erledigen.
Schritt 5: Funktionen hinzufügen
Die discord.py-API bietet ein Event, mit dem du die Logik deines Bots steuerst: das on_message-Event. Es wird jedes Mal ausgelöst, wenn dein Bot eine Nachricht erhält. Die entsprechende Methode prüft zuerst, wer die Nachricht geschickt hat, und führt dann die Aktion aus – hier das Zuweisen einer Rolle.
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('!add_role'):
# Rollenname herausfinden
role_name = message.content.split(' ')[1]
# entsprechende Discord-Rolle suchen
role = discord.utils.get(message.guild.roles, name=role_name)
# Überprüfung, ob die Rolle existiert
if role is None:
await message.channel.send(f'Role "{role_name}" existiert nicht)
return
# Zuweisung der Rolle
await message.author.add_roles(role)
await message.channel.send(f'Rolle "{role_name}" wurde hinzugefuegt zu {message.author}')