Zum Inhalt

So verwenden Sie die Discord-API mit Python: Eine ausführliche Anleitung

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:

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.

Mitreden

E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind MIT * gekennzeichnet. *