93 lines
2.6 KiB
Markdown
93 lines
2.6 KiB
Markdown
# Python Basics - Discord Bot
|
|
|
|
Die Bibliothek welche wir für dieses Beisiel verwenden lautet [`py-cord`](https://pycord.dev/).
|
|
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")
|
|
``` |