2.6 KiB
Python Basics - Discord Bot
Die Bibliothek welche wir für dieses Beisiel verwenden lautet py-cord.
Du kannst pycord installieren indem du folgenden Befehl im Terminal ausführst: python3 -m pip install py-cord
Aufbau des Codes
Imports
An dieser Stelle importiert man alle, für das Projekt benötigten, Bibliotheken. Z.B.:
import discord from discord.ext import commands
Intents
Als Nächstes gibt man an, wie der Bot Nutzerdaten verarbeitet. In diesem Beispiel reichen die defaults:
intents = discord.Intents.default() intents.members = True intents.message_content = True
Bot Variable deklarieren
Hier wird die bot-Variable deklariert. Außerdem wird noch der Prefix festgelegt (!), die Botbeschreibung wird hinzugefügt und die zuvor eingestellten intents werden übergeben.
bot = commands.Bot( command_prefix=commands.when_mentioned_or("!"), description=description, intents=intents)
Bot Events (@)
Sogenannte Events werden mit dem @bot.event Dekorator versehen. Dieser "Dekoriert" sozusagen den darunterliegenden Code.
Ein Beispiel für ein Bot-Event, wenn der Bot eingeloggt und bereit ist:
@bot.event async def on_ready(): print(f"Logged in as {bot.user} (ID: {bot.user.id})") print("------")
Bot Commands
Um ein Command zu erstellen gibt es auch wieder einen Dekorator. Commands werden mit dem @bot.command() Dekorator versehen.
Ein Beispiel für einen Command um zwei Strings miteinander zu verbinden:
bot.command() async def add(ctx: commands.Context, left: int, right: int): """Adds two numbers together.""" await ctx.send(str(left + right))
Last but not least bot.run()
bot.run("TOKEN") kommt immer an das Ende deines Codes.
Dieser Codeschnipsel bildet den Abschluss.
Das Beispiel einmal zusammengesetzt
import discord
from discord.ext import commands
description = """
An example bot to showcase the discord.ext.commands extension module.
There are a number of utility commands being showcased here.
"""
intents = discord.Intents.default()
intents.members = True
intents.message_content = True
bot = commands.Bot(
command_prefix=commands.when_mentioned_or("!"),
description=description,
intents=intents)
@bot.event
async def on_ready():
print(f"Logged in as {bot.user} (ID: {bot.user.id})")
print("------")
@bot.command()
async def add(ctx: commands.Context, left: int, right: int):
"""Adds two numbers together."""
await ctx.send(str(left + right))
bot.run("TOKEN")