Wie man einen Discord-Bot (Python) auf OuiPanel hostet
Geschätzte Zeit: 15 Minuten
Schwierigkeit: Mittel ⭐⭐
Servertyp: Python
📋 Einführung
Dieser Leitfaden erklärt, wie Sie einen mit discord.py (Python) entwickelten Discord-Bot auf OuiPanel hosten. Ihr Bot wird rund um die Uhr online sein.
Was Sie benötigen
| Voraussetzung | Beschreibung |
|---|---|
| 🤖 Ein Discord-Bot | Erstellt auf dem Discord Developer Portal |
| 🔑 Der Bot-Token | Geheimer Schlüssel zur Verbindung Ihres Bots |
| 📁 Die Bot-Dateien | Ihr Quellcode (bot.py, requirements.txt, usw.) |
| 🐍 Ein Python-Server | Auf OuiHeberg bestellt |
🤖 Schritt 1: Bot auf Discord erstellen
Wenn Sie bereits Ihren Bot und seinen Token haben, gehen Sie zum Schritt 2 über.
Anwendung erstellen
- Gehen Sie zum Discord Developer Portal
- Melden Sie sich mit Ihrem Discord-Konto an
- Klicken Sie auf New Application

- Geben Sie Ihrer Anwendung einen Namen (z.B. "Mein Python-Bot")
- Akzeptieren Sie die Nutzungsbedingungen
- Klicken Sie auf Create

Token abrufen
Der Token ist der geheime Schlüssel, der es Ihrem Code ermöglicht, sich mit dem Bot zu verbinden.
- In der Bot-Sektion finden Sie den TOKEN-Bereich
- Klicken Sie auf Reset Token
- Bestätigen Sie durch Klicken auf Yes, do it!
- Klicken Sie auf Copy, um den Token zu kopieren

⚠️ WICHTIG - SICHERHEIT:
- Der Token ist wie ein Passwort. Teilen Sie ihn NIEMALS!
- Fügen Sie ihn niemals in öffentlichen Code (GitHub, GitLab, usw.) ein
- Wenn Ihr Token kompromittiert ist, regenerieren Sie ihn sofort
- Bewahren Sie ihn sicher für den nächsten Schritt auf
Intents aktivieren
Die Intents ermöglichen es Ihrem Bot, auf bestimmte Informationen zuzugreifen (Nachrichten, Mitglieder, usw.).
- Weiterhin in der Bot-Sektion, scrollen Sie bis zu Privileged Gateway Intents
- Aktivieren Sie die erforderlichen Intents:
| Intent | Beschreibung | Empfehlung |
|---|---|---|
PRESENCE INTENT | Status der Mitglieder anzeigen | Optional |
SERVER MEMBERS INTENT | Auf die Liste der Mitglieder zugreifen | Optional |
MESSAGE CONTENT INTENT | Inhalte von Nachrichten lesen | ✅ Erforderlich |

- Klicken Sie auf Save Changes
⚠️ Wichtig: Ohne
MESSAGE CONTENT INTENTkann Ihr Bot nicht den Inhalt von Benutzer-Nachrichten lesen.
Bot auf Ihrem Discord-Server einladen
- Klicken Sie im linken Menü auf OAuth2
- Klicken Sie auf URL Generator

- In der SCOPES-Sektion, aktivieren Sie:
- ✅
bot
- ✅
- In der BOT PERMISSIONS-Sektion, aktivieren Sie die erforderlichen Berechtigungen:
| Berechtigung | Beschreibung |
|---|---|
Administrator | Alle Berechtigungen (einfach aber umfassend) |
| ODER spezifische Berechtigungen: | |
Send Messages | Nachrichten senden |
Read Message History | Nachrichtenverlauf lesen |
Embed Links | Links einbetten |
Attach Files | Dateien anhängen |
Use Slash Commands | Slash-Befehle verwenden |

- Am Ende der Seite, kopieren Sie die generierte URL

- Öffnen Sie diese URL in Ihrem Browser
- Wählen Sie den Server aus, auf dem Sie den Bot einladen möchten
- Klicken Sie auf Autoriser
- Wenn gefordert, vervollständigen Sie das Captcha

✅ Ihr Bot erscheint nun in der Mitgliederliste Ihres Servers (vorübergehend offline).
📁 Schritt 2: Vorbereiten der Bot-Dateien
Dateistruktur
Ihr Bot sollte diese Struktur haben:
📁 MonBotPython/
├── 📄 bot.py ← Hauptdatei (oder main.py, index.py...)
├── 📄 requirements.txt ← Python-Abhängigkeiten
├── 📄 .env ← Bot-Token (auf dem Server erstellt)
└── 📁 cogs/ ← (Optional) Modulordner
Datei requirements.txt
Erstellen Sie eine Datei requirements.txt mit den Abhängigkeiten discord.py und python-dotenv:
audioop-lts==0.2.1
discord.py==2.3.2
python-dotenv==1.0.0
💡 Diese beiden Pakete sind unerlässlich:
discord.py: Die Bibliothek zur Interaktion mit Discordpython-dotenv: Zum Laden des Tokens aus der Datei.env
Hauptdatei (bot.py)
Erstellen Sie Ihre Hauptdatei mit python-dotenv, um den Token zu laden:
import os
import discord
from discord.ext import commands
from dotenv import load_dotenv
# Load environment variables from .env
load_dotenv()
# Configuration of intents
intents = discord.Intents.default()
intents.message_content = True
# Creating the bot with a prefix
bot = commands.Bot(command_prefix='!', intents=intents)
# Event: Bot ready
@bot.event
async def on_ready():
print(f'✅ Bot connected as {bot.user.name}')
print(f'📊 Connected to {len(bot.guilds)} server(s)')
# Command: !ping
@bot.command()
async def ping(ctx):
"""Responds Pong with latency"""
latency = round(bot.latency * 1000)
await ctx.send(f'🏓 Pong! Latency: {latency}ms')
# Command: !hello
@bot.command()
async def hello(ctx):
"""Says hello"""
await ctx.send(f'👋 Hello {ctx.author.name}!')
# Error handling
@bot.event
async def on_command_error(ctx, error):
if isinstance(error, commands.CommandNotFound):
await ctx.send('❌ Unknown command.')
else:
print(f'Error: {error}')
# Connect with the token from .env
bot.run(os.getenv('DISCORD_TOKEN'))
⚠️ Important:
load_dotenv()must be called before usingos.getenv().
📤 Step 3: Upload Files to OuiPanel
Using the File Manager
- Log in to OuiPanel
- Select your Python server
- In the side menu, click on File Manager

- Delete default files (if any)
- Click on Upload
- Upload your files:
bot.py(ormain.py,index.py...)requirements.txt- Your folders (
cogs/...) if needed

⚠️ Do not upload: The
.envfile will be created directly on the server in the next step (more secure).
Using SFTP (Recommended for multiple files)
- Connect via SFTP with FileZilla
- Drag and drop all content from your bot folder
- Verify that all files are uploaded correctly
📖 Check the guide "SFTP Access with FileZilla" for detailed instructions.
🔑 Step 4: Create the .env File (Token)
Never put your token directly in the code! Create a .env file on the server.
Create the .env file
- In the File Manager, click on New file
- Name it
.env(with the dot in front) - Add the following content:
# Discord bot token
DISCORD_TOKEN=your_token_here

- Replace
your_token_herewith the token copied in Step 1 - Click on Create or Save
Example with a real token (format):
DISCORD_TOKEN=MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.ABcdEF.abcdefghijklmnopqrstuvwxyz123456
Example with multiple variables:
# Discord bot token
DISCORD_TOKEN=MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.ABcdEF.abcdefghijklmnopqrstuvwxyz123456
# Command prefix
PREFIX=!
# Owner ID (optional)
OWNER_ID=123456789012345678
⚠️ Important:
- No spaces around the
=- No quotes around the values
- Never share this file
Final Structure on the Server
📁 Root of the server/
├── 📄 .env ← Contains DISCORD_TOKEN
├── 📄 bot.py ← Your code
├── 📄 requirements.txt ← Dependencies
└── ...
⚙️ Step 5: Configure the Startup File
OuiPanel needs to know which Python file to run at startup.
Accessing the settings
- In the side menu, click on Configuration
- Click on Server Settings

Configuring the file to run
Locate the File to execute field:

| Your main file | Value to set |
|---|---|
bot.py | bot.py |
main.py | main.py |
index.py | index.py |
app.py | app.py |
src/bot.py | src/bot.py |
⚠️ Important: The name must match exactly your file (case-sensitive).
🚀 Step 6: Start the Bot
Launch the server
- In the side menu, click on Console
- Click on Start
Automatic installation of dependencies
On the first start, the server automatically installs packages from requirements.txt:
Installing requirements from requirements.txt...
Collecting discord.py==2.3.2
Collecting python-dotenv==1.0.0
Successfully installed discord.py-2.3.2 python-dotenv-1.0.0
Running bot.py...
✅ Bot connected as MyBot
📊 Connected to 1 server(s)

✅ Step 7: Verify the Bot is Working
In the OuiPanel Console
You should see:
✅ Bot connected as MyBot
📊 Connected to 1 server(s)
On Discord
- Open Discord
- Go to the server where you invited the bot
- Your bot should appear online (green dot)
- Test a command:
!ping - The bot responds: 🏓 Pong! Latency: XXms

🔧 Troubleshooting
The bot doesn't start
| ❌ Error | ✅ Solution |
|---|---|
ModuleNotFoundError: No module named 'discord' | Check requirements.txt and restart |
ModuleNotFoundError: No module named 'dotenv' | Add python-dotenv to requirements.txt |
FileNotFoundError: bot.py | Incorrect startup file configured |
SyntaxError | Error in your Python code |
Tokenfehler
| ❌ Fehler | ✅ Lösung |
|---|---|
LoginFailure: Improper token has been passed | Überprüfen Sie den Token in .env |
HTTPException: 401 Unauthorized | Ungültiger Token, regenerieren Sie ihn |
PrivilegedIntentsRequired | Aktivieren Sie die Intents im Discord-Portal |
Der Bot liest keine Nachrichten
| ❌ Ursache | ✅ Lösung |
|---|---|
| MESSAGE CONTENT INTENT deaktiviert | Aktivieren Sie es im Discord-Portal |
| Falsch konfigurierte Intents im Code | Fügen Sie intents.message_content = True hinzu |
Überprüfen Sie Ihren Code:
intents = discord.Intents.default()
intents.message_content = True # Diese Zeile ist erforderlich!
Die .env-Datei wird nicht gelesen
| ❌ Ursache | ✅ Lösung |
|---|---|
| python-dotenv nicht installiert | Überprüfen Sie requirements.txt |
| load_dotenv() nicht aufgerufen | Fügen Sie load_dotenv() vor os.getenv() hinzu |
| Falscher Dateiname | Die Datei muss genau .env heißen |
| Falsches Format | Keine Leerzeichen um das = |
pip install fehlgeschlagen
| ❌ Fehler | ✅ Lösung |
|---|---|
requirements.txt not found | Stellen Sie sicher, dass die Datei im Stammverzeichnis liegt |
Could not find a version | Überprüfen Sie die Namen und Versionen der Pakete |
🔒 Sicherheit der .env-Datei
| ✅ Zu tun | ❌ Nicht tun |
|---|---|
Halten Sie .env nur auf dem Server | Teilen Sie .env nicht |
Erstellen Sie .env direkt auf OuiPanel | Den Token im Code speichern |
Fügen Sie .env zur .gitignore hinzu | Commiten Sie .env auf GitHub |
Empfohlene .gitignore-Datei:
# Umgebungsvariablen
.env
.env.local
# Python
__pycache__/
*.py[cod]
venv/
💡 Best Practices
Sicherheit
- ✅ Teilen Sie niemals Ihren Token
- ✅ Erstellen Sie die
.envdirekt auf dem Server - ✅ Regenerieren Sie den Token bei Kompromittierung
Leistung
- ✅ Aktivieren Sie nur die notwendigen Intents
- ✅ Verwenden Sie
commands.Botanstelle vondiscord.Clientfür Befehle - ✅ Verwenden Sie Cogs, um Ihren Code zu organisieren
Code
- ✅ Behandeln Sie Fehler mit try/except
- ✅ Fügen Sie Logs mit
print()oder dem Modullogginghinzu - ✅ Verwenden Sie Cogs für umfangreiche Bots
📂 Fortgeschrittene Struktur mit Cogs (Empfohlen)
Für einen organisierteren Bot:
📁 MonBotPython/
├── 📄 bot.py ← Einstiegspunkt
├── 📄 requirements.txt
├── 📄 .env ← Auf dem Server erstellt
├── 📁 cogs/
│ ├── 📄 moderation.py ← Moderationsbefehle
│ ├── 📄 fun.py ← Spaßbefehle
│ └── 📄 utility.py ← Hilfsbefehle
└── 📄 config.py ← Nicht sensible Konfiguration
Beispiel für bot.py mit Cogs:
import os
import discord
from discord.ext import commands
from dotenv import load_dotenv
load_dotenv()
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='!', intents=intents)
# Lade die Cogs beim Start
@bot.event
async def on_ready():
print(f'✅ Bot verbunden als {bot.user.name}')
# Lade die Cogs
for filename in os.listdir('./cogs'):
if filename.endswith('.py'):
await bot.load_extension(f'cogs.{filename[:-3]}')
print(f'📦 Cog geladen: {filename}')
bot.run(os.getenv('DISCORD_TOKEN'))
Beispiel für ein Cog (cogs/fun.py):
import discord
from discord.ext import commands
class Fun(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.command()
async def ping(self, ctx):
"""Antwortet mit Pong!"""
latency = round(self.bot.latency * 1000)
await ctx.send(f'🏓 Pong! Latenz: {latency}ms')
@commands.command()
async def hello(self, ctx):
"""Sagt Hallo"""
await ctx.send(f'👋 Hallo {ctx.author.name}!')
async def setup(bot):
await bot.add_cog(Fun(bot))
📝 Zusammenfassung
1. Erstellen Sie den Bot auf dem Discord Developer Portal
2. Holen Sie sich den Token (Token zurücksetzen → Kopieren)
3. Aktivieren Sie MESSAGE CONTENT INTENT
4. Laden Sie den Bot ein (OAuth2 → URL-Generator → Bot + Anwendungen.Befehle)
5. Bereiten Sie die Dateien vor (bot.py + requirements.txt mit python-dotenv)
6. Laden Sie die Dateien auf OuiPanel hoch (ohne die .env-Datei)
7. Erstellen Sie die .env-Datei auf dem Server mit dem Token
8. Konfigurieren Sie die Startdatei (bot.py, main.py...)
9. Starten Sie den Server
10. Überprüfen Sie, ob der Bot auf Discord online ist → !ping
