Die Discord-API bietet Entwicklern unzählige Möglichkeiten zur Integration in Discord, zum Erstellen von Bots, zur Automatisierung von Servern und zur Verbesserung von Communities mithilfe von Python. In diesem umfassenden Leitfaden mit mehr als 2000 Wörtern befassen wir uns eingehend mit den Funktionen, Voraussetzungen, Authentifizierung, Endpunkten, Bibliotheken, Beispielprojekten und fortgeschrittenen Techniken der Discord-API – und statten Sie mit allem aus, was Sie für den Einstieg wissen müssen.
Warum die Discord-API mit Python verwenden?
Bevor wir uns mit dem Code befassen, lohnt es sich, einige der coolen Dinge hervorzuheben, die Entwickler mit der Python Discord API erstellt haben:
Mee6 – Einer der beliebtesten Discord-Bots mit über 250 Millionen Nutzern. Bietet Moderation, Leveling, Musik, Twitch, Reddit und andere Integrationen.
YAGPDB – Funktionsreicher Bot mit über 100 Befehlen für Moderation, Protokollierung, Rollenverwaltung, Erinnerungen und mehr. Wird auf über 600,000 Discord-Servern verwendet.
discord.py – Prominente API-Wrapper-Bibliothek, die viele der ersten Discord-Bots in Python ermöglichte. Bietet einfache Abstraktionen für Bots und Integrationen.
disStream – Musik-Streaming-Bot mit Playlist-Warteschlangen, YouTube/Twitch-Unterstützung und Soundfiltern wie Bass-Boosting.
discordbot.py – Bot nutzt maschinelles Lernen zur automatisierten Moderation von schädlichen Inhalten und Spam. Präsentiert KI-Integrationen.
Discord-Feedback – Kundenfeedback-Bot, der es Benutzern ermöglicht, Bewertungen, Bewertungen und Feedback bequem über Discord-DMs einzureichen.
Und das sind nur einige Beispiele – Entwickler haben Discord auf kreative Weise in Plattformen von Reddit und GitHub bis hin zu Apps wie Spotify integriert und dabei die Flexibilität von Python genutzt.
Voraussetzungen für die Nutzung der Discord API
Bevor Sie sich mit der Programmierung befassen, sollten Sie die folgenden erforderlichen Schritte abdecken:
Erstellen Sie ein Discord-Konto
- Natürlich benötigen Sie ein Discord-Konto – melden Sie sich kostenlos an unter Discord.com falls du keins hast.
Erstellen Sie einen Discord-Server
Erstellen Sie zum Testen einen Server in Discord. Dadurch erhalten Sie vollen Administratorzugriff, anstatt sich auf einen anderen Server zu verlassen.
Für öffentliche/Produktions-Bots möchten Sie später Einladungslinks generieren, die Sie anderen Servern hinzufügen können.
Aktivieren Sie den Entwicklermodus
- Gehen Sie in Discord zu Benutzereinstellungen > Erweitert > Entwicklermodus, um zusätzliche Optionen freizuschalten.
Installieren Sie Python
Python muss installiert und zum Codieren bereit sein. Die Discord-API unterstützt Python 3.8 oder höher.
Richten Sie optional eine virtuelle Umgebung ein, um Abhängigkeiten zu isolieren.
Erhalten von Discord-API-Anmeldeinformationen
Um API-Aufrufe durchzuführen, müssen wir Anmeldeinformationen generieren:
Erstellen Sie eine Discord-Anwendung
Im Discord-Entwicklerportal, Erstellen Sie eine neue Anwendung.
Dadurch wird die App registriert und Konfigurationsmöglichkeiten bereitgestellt.
Erstellen Sie ein Bot-Konto
Fügen Sie in Ihrer Anwendung auf der Registerkarte „Bot“ ein neues Bot-Konto hinzu.
Sie können den Benutzernamen, den Avatar usw. anpassen.
Kopieren Sie das Token
Zeigen Sie das Token des Bots auf der Registerkarte „Bot“ an und kopieren Sie es. Dies wird zur Authentifizierung von API-Anfragen verwendet.
Bewahren Sie dies wie ein Passwort sicher auf. Jeder mit dem Token kann Ihren Bot steuern.
Rufen Sie Kanal-IDs ab
Klicken Sie unter Ihrem Discord-Server mit der rechten Maustaste auf einen Kanal und wählen Sie „ID kopieren“, um die Kanal-ID zu erhalten.
Wir verwenden Kanal-IDs, um anzugeben, wohin Nachrichten gesendet werden sollen.
Authentifizierung mit der Discord-API
Mit den Token- und Kanal-IDs können wir uns nun authentifizieren. Es gibt zwei Ansätze:
Bot-Token
Wird für Bot-Konten zur Authentifizierung mit vollständigen Berechtigungen verwendet.
Geben Sie den Token weiter
Authorization
Header:
headers = {
‘Authorization‘: ‘Bot ‘ + bot_token
}
Benutzertoken
Kann für Benutzerkonten verwendet werden, verfügt jedoch über eingeschränkte Berechtigungen.
Wird unter der Registerkarte „OAuth2“ in Ihrer Discord-Entwickler-App generiert.
Authentifizieren Sie sich auf ähnliche Weise:
headers = {
‘Authorization‘: ‘Bearer ‘ + user_token
}
Für den vollständigen API-Zugriff sind Bot-Tokens häufiger anzutreffen. Benutzertoken ermöglichen die Interaktion im Namen des Benutzers.
Gemeinsame Discord-API-Endpunkte
Die Discord-API stellt eine Reihe von Endpunkten für verschiedene Entitäten wie Kanäle, Nachrichten, Benutzer usw. bereit.
Zu den häufigsten Endpunkten gehören:
- Kanäle -
/channels/{channel.id}
- Account Beiträge -
/channels/{channel.id}/messages
- Reaktionen -
/channels/{channel.id}/messages/{message.id}/reactions
- Gilden -
/guilds/{guild.id}
- Mitglieder -
/guilds/{guild.id}/members
Wir führen Vorgänge wie das Senden von Nachrichten durch, indem wir Anfragen an diese Endpunkte stellen.
Discord API Wrapper-Bibliotheken
Während wir die Roh-API direkt aufrufen können, können Python-Wrapper-Bibliotheken die Dinge vereinfachen:
- discord.py – Die beliebteste Bibliothek mit einem intuitiven objektorientierten Design.
- disnake – Ein Fork von discord.py, aktualisiert für die neuesten API-Änderungen.
- hikari – Leistungsorientierter Wrapper mit Fokus auf Geschwindigkeit.
- nextcord – Asynchroner API-Wrapper, erstellt für Python 3.10+.
Diese bieten einfache Abstraktionen für Bots, Befehle, Ereignisse usw. und sparen Entwicklungszeit im Vergleich zu reinen Anfragen.
Nachrichten senden
Sehen wir uns einen Code zum Senden einer Nachricht mit dem an /channels/{channel.id}/messages
Endpunkt:
import requests
url = "https://discord.com/api/v9/channels/1234567890/messages"
data = {"content": "Hello world!"}
headers = {
"Authorization": "Bot OTI..."
}
response = requests.post(url, headers=headers, json=data)
Wir verwenden eine POST-Anfrage mit dem content
Körpernutzlast, um unsere Nachricht zu senden.
Nachrichten abrufen
Um Nachrichten abzurufen, GET vom selben Endpunkt und analysieren die Antwort:
response = requests.get(url, headers=headers)
json_data = response.json()
for message in json_data:
print(message[‘content‘])
Die Antwort enthält ein Array von Nachrichtenobjekten, die wir durchlaufen können.
Nachrichten bearbeiten
Um eine Nachricht zu bearbeiten, benötigen wir die message.id
Wert und verwenden Sie eine PATCH-Anfrage:
message_id = "876543234567891234"
url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"
data = {"content": "New message contents!"}
response = requests.patch(url, headers=headers, json=data)
Auf Nachrichten reagieren
Wir können mit dem reagieren /reactions/{emoji}/@me
Endpunkt:
url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}/reactions/👍/@me"
response = requests.put(url, headers=headers)
Dadurch wird eine „Daumen hoch“-Reaktion auf die Nachricht des Bots hinzugefügt.
Nachrichten löschen
Schließlich können wir mit einer DELETE-Anfrage löschen:
url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"
response = requests.delete(url, headers=headers)
Das Obige soll Ihnen einen guten Überblick über gängige Messaging-Vorgänge geben. Lassen Sie uns nun die Arbeit mit der WebSocket-API besprechen.
Nutzung der WebSocket-API
Die Discord-API bietet zwei Konnektivitätsoptionen:
REST API – Wird für die meisten Vorgänge wie das Senden von Nachrichten verwendet.
WebSocket-API – Zum Abhören von Echtzeitereignissen wie Nachrichten.
WebSockets ermöglichen die Erstellung ereignisgesteuerter Bots, die auf Live-Ereignisse reagieren, anstatt die REST-API abzufragen.
Hier ist zum Beispiel ein einfacher on_message-Ereignishandler:
import discord
class MyBot(discord.Client):
async def on_ready(self):
print(‘Logged in as {0}!‘.format(self.user))
async def on_message(self, message):
print(‘Message from {0.author}: {0.content}‘.format(message))
bot = MyBot()
bot.run(‘token‘)
Dies antwortet sofort auf Nachrichten, anstatt auf die Rückkehr eines API-Aufrufs zu warten.
Umgang mit API-Fehlern
Beim Aufruf der API sollten wir Fehler ordnungsgemäß behandeln:
try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
except requests.exceptions.HTTPError as err:
print(err)
print(response.text)
Zu den häufigsten Fehlern gehören:
- 50001 – Fehlender Zugriff auf die Ressource
- 50035 – Ungültiger Anfragetext
- 429 – Tarif begrenzt
Siehe die docs Einzelheiten zu Fehlern finden Sie hier.
Erstellen eines Discord-Bots in Python
Lassen Sie uns einen Beispiel-Bot durchgehen, um die Kernfunktionen zu demonstrieren:
Bot-Funktionen:
- Begrüßung beim Start senden
- Auf Nachrichten antworten, die „Hilfe“ enthalten
- Löschen Sie Nachrichten mit verbotenen Wörtern
- Fügen Sie Reaktions-Emoji-Antworten hinzu
- Mit Bildern/Emojis antworten
# Imports and initialization
import os
import discord
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv(‘DISCORD_TOKEN‘)
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
# Event handlers
@client.event
async def on_ready():
channel = client.get_channel(1234567890)
await channel.send("I‘m alive!")
@client.event
async def on_message(message):
if "help" in message.content:
await message.channel.send("Contact our support team for assistance!")
elif check_for_banned_words(message.content):
await message.delete()
# Reactions
emojis = ["👍", "❤️"]
for emoji in emojis:
await message.add_reaction(emoji)
# Run bot
client.run(TOKEN)
Dies zeigt einen einfachen, aber funktionalen Discord-Bot in Python, der auf Ereignisse und Befehle reagiert.
Erweiterte Tipps und Tricks zur Discord-API
Lassen Sie uns diesen Leitfaden mit einigen Profi-Tipps abrunden:
Verwenden Sie Member Scraping mit
LISTENER
Absichten, Beitrittsdaten, Boosting-Status usw. zu erhalten, die nicht in den Standarddaten enthalten sind.Nutzen Sie die Verarbeitung natürlicher Sprache und KI wie TensorFlow für die automatisierte Moderation basierend auf Nachrichtensemantik und Schlüsselwörtern.
Planen Sie lukrative Anzeigen, Ankündigungen usw. mithilfe von Cron-Jobs oder Planern wie APScheduler für ein optimales Timing.
Implementieren Sie eine benutzerdefinierte Logik, die Ihren Bot vor Missbrauch wie der Ratenbegrenzung einzelner Benutzer schützt.
Erstellen Sie ein Web-Dashboard mit Flask oder FastAPI, um Ihren Bot über HTTP statt nur über Discord zu steuern.
Nutzen Sie Multithreading, um rechenintensive Aufgaben wie die Erstellung von Analyseberichten zu parallelisieren.
Erstellen Sie Hilfsfunktionen und Abstraktionen rund um die API-Aufrufe, die Sie am häufigsten verwenden.
Wenn Sie einige dieser erweiterten Funktionen zusammenhacken, können Sie Ihren Bot wirklich von der Masse abheben.
Abschließende Gedanken zur Discord-API
Die Discord-API bietet großartige Möglichkeiten zum Erstellen von Bots und Tools, die das Discord-Erlebnis für Communities und Server verbessern. Gepaart mit der Vielseitigkeit von Python verfügen Entwickler über eine erstaunliche Grundlage, um den über 100 Millionen Benutzern von Discord kreative Integrationen und Automatisierung bereitzustellen.
Ich hoffe, dass dieser ausführliche Tauchgang mit mehr als 2000 Wörtern Sie mit den Voraussetzungen, Authentifizierung, Endpunktkenntnissen, Beispielen und Techniken ausstattet, die Sie benötigen, um mit der Nutzung der Discord-API in Ihren eigenen Projekten zu beginnen. Die Communities, die Ihre Kreationen verwenden, werden es Ihnen danken!
Einige letzte Ressourcen, die es wert sind, im weiteren Verlauf Ihrer Reise erkundet zu werden:
- Discord-Entwicklerportal – Offizielle API-Referenzdokumentation
- discord.py – Von der Community gepflegte Python-Wrapper-Bibliothek
- Top.dd – Bot-Listing-Verzeichnis, um Ihre Kreationen zu bewerben
Und jetzt machen Sie sich auf den Weg und programmieren Sie etwas Großartiges! Die Python-Discord-Community kann es kaum erwarten, zu sehen, was Sie erstellen.