Discord-Bot erstellen mit Python: von Null bis online

Einen Discord-Bot in Python zu schreiben, kostet einen Abend. Ihn rund um die Uhr online zu halten, kostet ein Hostingpaket. Hier der vollstaendige Weg: vom Erstellen der Bot-Applikation bis zu einem funktionierenden Bot auf dem Gamepanel von HostValues.

Schritt 1: Bot-Applikation erstellen

  1. Gehe zum Discord Developer Portal und klicke auf "New Application".
  2. Gib der Applikation einen Namen und klicke auf "Create".
  3. Gehe zum Tab "Bot" und klicke auf "Reset Token", um ein Token zu generieren. Kopiere das Token und speichere es sicher. Du siehst es nur einmal.
  4. Aktiviere unter "Privileged Gateway Intents" die folgenden Optionen: Presence Intent, Server Members Intent und Message Content Intent.
  5. Gehe zu "OAuth2", waehle unter Scopes "bot" und unter Bot Permissions die Rechte, die dein Bot braucht (mindestens: Send Messages, Read Message History).
  6. Kopiere die generierte URL und oeffne sie im Browser, um den Bot deinem Server hinzuzufuegen.

Schritt 2: Der Code

Erstelle einen Ordner mit zwei Dateien:

requirements.txt

discord.py>=2.5
python-dotenv

bot.py

import os
import discord
from discord.ext import commands
from dotenv import load_dotenv

load_dotenv()

bot = commands.Bot(
    command_prefix="!",
    intents=discord.Intents.all()
)

@bot.event
async def on_ready():
    print(f"Online als {bot.user}")

@bot.command()
async def ping(ctx):
    await ctx.send(f"Pong! Latency: {round(bot.latency * 1000)}ms")

@bot.command()
async def hallo(ctx):
    await ctx.send(f"Hoi {ctx.author.display_name}!")

bot.run(os.getenv("DISCORD_TOKEN"))

.env

DISCORD_TOKEN=dein_token_hier

Teste lokal: pip install -r requirements.txt, dann python bot.py. Tippe !ping auf deinem Discord-Server. Funktioniert es? Weiter zum Hosting.

Schritt 3: Auf dem Gamepanel hosten

  1. Bestelle ein Discord-Botpaket.
  2. Lade bot.py, requirements.txt und .env ueber den Tab Files hoch. Lade nicht den Ordner __pycache__ oder eine virtuelle Umgebung hoch.
  3. Stelle im Tab Startup die Startdatei auf bot.py ein und waehle Python 3.12.
  4. Starte den Server. Das Panel installiert automatisch die Packages aus requirements.txt.
  5. In der Konsole erscheint "Online als BotName". Dein Bot ist jetzt rund um die Uhr erreichbar.

Slash Commands hinzufuegen

Slash Commands sind die moderne Art, mit Bots zu interagieren. Sie erscheinen im Discord-Menue, wenn du / tippst:

@bot.tree.command(name="info", description="Zeigt Serverinformationen")
async def info(interaction: discord.Interaction):
    guild = interaction.guild
    await interaction.response.send_message(
        f"{guild.name} hat {guild.member_count} Mitglieder."
    )

# Fuege hinzu in on_ready:
@bot.event
async def on_ready():
    await bot.tree.sync()
    print(f"Online als {bot.user}")

Die drei Fehler, die jeder macht

  • Token im Code. Lege das Token in eine .env-Datei, nicht in bot.py. Ein Token, das auf GitHub landet, wird von Discord automatisch widerrufen.
  • Intents nicht aktiviert. Wenn du discord.Intents.all() verwendest, aber die Intents nicht im Developer Portal angehakt hast, startet der Bot, reagiert aber auf nichts.
  • requirements.txt vergessen. Das Panel kann keine Packages installieren, wenn die Datei fehlt. Lokal funktioniert es, weil du manuell installiert hast.

Wie viel RAM braucht mein Bot?

Ein einfacher Befehls- oder Moderationsbot: weniger als 256 MB. Das kleinste Paket mit 1 GB ist mehr als ausreichend. Ein Musikbot auf mehreren Servern: 2 GB.

Kann ich mehrere Bots auf einem Paket betreiben?

Ja. Verwende pm2 (npm install -g pm2), um mehrere Python-Scripts gleichzeitig auszufuehren. Drei kleine Bots passen in 1 GB.

discord.py oder discord.js?

Python, wenn du mit dem Programmieren anfaengst: Die Syntax ist lesbarer. JavaScript, wenn du bereits Weberfahrung hast oder ein Dashboard bauen willst. Beide Bibliotheken werden aktiv gepflegt und sind funktional gleichwertig.

Sieh dir die Discord-Botpakete an oder die KVM VPS, wenn du neben dem Bot auch eine Website oder Datenbank betreibst.


Noch Fragen? Erstelle ein Support-Ticket und unser Team hilft dir weiter.

Zurück zum Blog