Meteen naar de inhoud

Hoe de Discord API met Python te gebruiken: een uitgebreide handleiding

De Discord API biedt talloze mogelijkheden voor ontwikkelaars om te integreren met Discord, bots te bouwen, servers te automatiseren en communities te verbeteren met behulp van Python. In deze uitgebreide gids van meer dan 2000 woorden duiken we diep in de Discord API-mogelijkheden, vereisten, authenticatie, eindpunten, bibliotheken, voorbeeldprojecten en geavanceerde technieken – zodat u alles krijgt wat u moet weten om aan de slag te gaan.

Waarom de Discord API gebruiken met Python?

Voordat we ingaan op de code, is het de moeite waard om enkele van de coole dingen te benadrukken die ontwikkelaars hebben gebouwd met behulp van de Python Discord API:

  • Mee6 – Een van de populairste Discord-bots met meer dan 250 miljoen gebruikers. Biedt moderatie, nivellering, muziek, Twitch, Reddit en andere integraties.

  • YAGPDB – Bot boordevol functies met meer dan 100 opdrachten voor moderatie, logboekregistratie, rolbeheer, herinneringen en meer. Gebruikt op meer dan 600,000 Discord-servers.

  • onenigheid.py – Prominente API-wrapperbibliotheek die veel van de eerste Discord-bots in Python mogelijk maakte. Biedt eenvoudige abstracties voor bots en integraties.

  • disStream – Muziekstreamingbot met wachtrijen voor afspeellijsten, YouTube/Twitch-ondersteuning en geluidsfilters zoals basversterking.

  • discordbot.py – Bot die gebruik maakt van machinaal leren voor geautomatiseerde moderatie van giftige inhoud en spam. Toont AI-integraties.

  • onenigheid-feedback – Klantfeedbackbot waarmee gebruikers gemakkelijk beoordelingen, beoordelingen en feedback kunnen indienen via Discord DM’s.

En dit zijn slechts een handvol voorbeelden: ontwikkelaars hebben Discord op creatieve manieren geïntegreerd met platforms variërend van Reddit en GitHub tot apps als Spotify, waarbij ze gebruik hebben gemaakt van de flexibiliteit van Python.

Vereisten voor het gebruik van de Discord API

Voordat u zich gaat verdiepen in coderen, moet u deze vereiste stappen doornemen:

Maak een Discord-account aan

  • Uiteraard heb je een Discord-account nodig – meld je gratis aan op oneens.com als je er geen hebt.

Maak een Discord-server

  • Maak een server in Discord om te testen. Dit geeft u volledige beheerderstoegang in plaats van te vertrouwen op een andere server.

  • Voor openbare/productiebots wilt u later uitnodigingslinks genereren om toe te voegen aan andere servers.

Schakel ontwikkelaarsmodus in

  • Ga in Discord naar Gebruikersinstellingen > Geavanceerd > Ontwikkelaarsmodus om extra opties te ontgrendelen.

Python installeren

  • Zorg ervoor dat Python is geïnstalleerd en klaar is om te coderen. Discord API ondersteunt Python 3.8 of hoger.

  • Stel optioneel een virtuele omgeving in om afhankelijkheden te isoleren.

Discord API-referenties verkrijgen

Om API-aanroepen te doen, moeten we inloggegevens genereren:

Maak een Discord-applicatie

  • In het Discord-ontwikkelaarsportal, Maak een Nieuwe Applicatie.

  • Hiermee wordt de app geregistreerd en worden configuratieopties geboden.

Maak een Bot-account aan

  • Voeg op het tabblad Bot in uw toepassing een nieuw botaccount toe.

  • U kunt de gebruikersnaam, avatar enz. aanpassen.

Kopieer het token

  • Onthul en kopieer het token van de bot onder het tabblad Bot. Dit wordt gebruikt om API-verzoeken te verifiëren.

  • Bewaar dit veilig als een wachtwoord. Iedereen met het token kan uw bot besturen.

Ontvang kanaal-ID's

  • Klik onder uw Discord-server met de rechtermuisknop op een kanaal en selecteer "ID kopiëren" om de kanaal-ID op te halen.

  • We gebruiken kanaal-ID's om aan te geven waar berichten naartoe moeten worden gestuurd.

Authenticatie met de Discord API

Met de token- en kanaal-ID's kunnen we nu authenticeren. Er zijn twee benaderingen:

Bot-tokens

  • Wordt gebruikt voor botaccounts om te authenticeren met volledige machtigingen.

  • Geef het token door in de Authorization koptekst:

headers = {
    ‘Authorization‘: ‘Bot ‘ + bot_token
}

Gebruikerstokens

  • Kan worden gebruikt voor gebruikersaccounts, maar heeft beperkte rechten.

  • Gegenereerd op het tabblad OAuth2 in uw Discord-ontwikkelaarsapp.

  • Authenticeer op dezelfde manier:

headers = {
    ‘Authorization‘: ‘Bearer ‘ + user_token
} 

Bottokens komen vaker voor voor volledige API-toegang. Gebruikerstokens maken interactie namens de gebruiker mogelijk.

Common Discord API-eindpunten

De Discord API stelt een aantal eindpunten bloot voor verschillende entiteiten, zoals kanalen, berichten, gebruikers enz.

Enkele veel voorkomende eindpunten zijn:

  • Kanalen - /channels/{channel.id}
  • Berichten - /channels/{channel.id}/messages
  • Reacties - /channels/{channel.id}/messages/{message.id}/reactions
  • gilden - /guilds/{guild.id}
  • Leden - /guilds/{guild.id}/members

We voeren bewerkingen uit zoals het verzenden van berichten door verzoeken in te dienen bij deze eindpunten.

Discord API Wrapper-bibliotheken

Hoewel we de onbewerkte API rechtstreeks kunnen aanroepen, kunnen Python-wrapperbibliotheken de zaken vereenvoudigen:

  • onenigheid.py – De populairste bibliotheek met een intuïtief objectgeoriënteerd ontwerp.
  • slang – Een vork van discord.py bijgewerkt voor de nieuwste API-wijzigingen.
  • hikari – Prestatiegerichte wikkelaar gericht op snelheid.
  • volgend koord – Asynchrone API-wrapper gebouwd voor Python 3.10+.

Deze bieden eenvoudige abstracties voor bots, opdrachten, gebeurtenissen enz., waardoor ontwikkeltijd wordt bespaard ten opzichte van onbewerkte verzoeken.

Berichten verzenden

Laten we een code bekijken voor het verzenden van een bericht met behulp van de /channels/{channel.id}/messages eindpunt:

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)

We gebruiken een POST-verzoek met de content lichaamslading om ons bericht te verzenden.

Berichten ophalen

Om berichten op te halen, halen we het van hetzelfde eindpunt en parseren we het antwoord:

response = requests.get(url, headers=headers)

json_data = response.json()

for message in json_data:
   print(message[‘content‘])

Het antwoord bevat een reeks berichtobjecten waar we doorheen kunnen itereren.

Berichten bewerken

Om een ​​bericht te bewerken, hebben we de message.id waarde en gebruik een PATCH-verzoek:

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)

Reageren op berichten

We kunnen reageren met behulp van de /reactions/{emoji}/@me eindpunt:

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}/reactions/👍/@me"

response = requests.put(url, headers=headers)

Dit voegt een duim omhoog-reactie toe aan het bericht van de bot.

Berichten verwijderen

Ten slotte kunnen we verwijderen met een DELETE-verzoek:

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"

response = requests.delete(url, headers=headers) 

Het bovenstaande zou u een goed overzicht moeten geven van veel voorkomende berichtbewerkingen. Laten we nu het werken met de WebSocket API bespreken.

Gebruikmaken van de WebSocket-API

De Discord API biedt twee connectiviteitsopties:

REST API – Gebruikt voor de meeste bewerkingen, zoals het verzenden van berichten.

WebSocket-API – Voor het luisteren naar realtime gebeurtenissen zoals berichten.

Met WebSockets kunnen gebeurtenisgestuurde bots worden gemaakt die reageren op live gebeurtenissen in plaats van de REST API te pollen.

Hier is bijvoorbeeld een eenvoudige gebeurtenishandler on_message:

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‘)

Deze reageert onmiddellijk op berichten in plaats van te wachten op een API-aanroep.

API-fouten afhandelen

Bij het aanroepen van de API moeten we fouten netjes afhandelen:

try:
    response = requests.post(url, headers=headers, json=data)
    response.raise_for_status()
except requests.exceptions.HTTPError as err:
    print(err)
    print(response.text)

Enkele veel voorkomende fouten zijn:

  • 50001 – Ontbrekende toegang tot de bron
  • 50035 – Ongeldige verzoektekst
  • 429 – Tarief beperkt

Zie de docs voor details over fouten.

Een Discord-bot bouwen in Python

Laten we een voorbeeldbot doornemen om de kernmogelijkheden te laten zien:

Bot-functies:

  • Verstuur een begroeting bij het opstarten
  • Beantwoord berichten met "help"
  • Verwijder berichten met verboden woorden
  • Voeg reactie-emoji-reacties toe
  • Reageer met afbeeldingen/emoji's
# 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)

Dit toont een eenvoudige maar functionele Discord-bot in Python die reageert op gebeurtenissen en opdrachten.

Geavanceerde Discord API-tips en -trucs

Laten we deze handleiding afronden met enkele professionele tips:

  • Gebruik ledenschrapen met LISTENER intenties om toetredingsdata te krijgen, status te verhogen enz. die niet in de standaardgegevens staan.

  • Maak gebruik van natuurlijke taalverwerking en AI zoals TensorFlow voor geautomatiseerde moderatie op basis van berichtsemantiek versus trefwoorden.

  • Plan lucratieve advertenties, aankondigingen enz. met cronjobs of planners zoals APScheduler voor optimale timing.

  • Implementeer aangepaste logica om uw bot te beschermen tegen misbruik, zoals het beperken van individuele gebruikers.

  • Bouw een webdashboard met Flask of FastAPI voor het besturen van uw bot via HTTP versus alleen Discord.

  • Gebruik multithreading om rekenintensieve taken, zoals het genereren van analyserapporten, te parallelliseren.

  • Creëer helperfuncties en abstracties rond de API-aanroepen die u het vaakst gebruikt.

Door enkele van deze meer geavanceerde mogelijkheden te hacken, kunt u uw bot echt onderscheiden van de massa.

Laatste gedachten over de Discord API

De Discord API biedt geweldige mogelijkheden om bots en tools te bouwen die de Discord-ervaring voor communities en servers verbeteren. In combinatie met de veelzijdigheid van Python hebben ontwikkelaars een geweldige basis voor het brengen van creatieve integraties en automatisering naar de ruim 100 miljoen gebruikers van Discord.

Ik hoop dat deze diepgaande duik van meer dan 2000 woorden je voorziet van de vereisten, authenticatie, eindpuntkennis, voorbeelden en technieken die nodig zijn om de Discord API in je eigen projecten te gaan gebruiken. De gemeenschappen die jouw creaties gebruiken, zullen je dankbaar zijn!

Enkele laatste bronnen die het ontdekken waard zijn terwijl u uw reis voortzet:

Nu – ga aan de slag en codeer iets geweldigs! De Python Discord-gemeenschap kan niet wachten om te zien wat je bouwt.

Doe mee aan het gesprek

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *