# Python-Bot deployen

> Schritt-für-Schritt-Anleitung zum Deployment eines Python-Discord-Bots (discord.py oder py-cord) bei Daki Hosting.

Diese Anleitung führt dich durch das Deployment eines Python-Discord-Bots bei Daki Hosting — von der Erstellung deines Servers über die sichere Hinterlegung deines Bot-Tokens bis zum Livegang.

## Das lernst du hier

- Wie du einen Python-Server für deinen Bot erstellst
- Wie du deinen Code hochlädst
- Wie du Install-Befehl, Startup Command und Python-Version konfigurierst
- Wie du deinen Bot-Token sicher über eine `.env`-Datei hinterlegst
- Wie du deinen Bot startest und prüfst, ob er funktioniert

---

## Voraussetzungen

- Ein Daki-Konto (Free Tier oder bezahlt) — siehe [Konto erstellen](https://daki.cc/de/wiki/guides/account-create)
- Ein Discord-Bot mit einem **Bot-Token**, erstellt im [Discord Developer Portal](https://discord.com/developers/applications)
- Dein Quellcode inklusive einer `requirements.txt` mit allen Abhängigkeiten (z. B. `discord.py` oder `py-cord` sowie `python-dotenv`)

> **Info:** Discord-Bots verbinden sich **ausgehend** mit den Servern von Discord und benötigen keinen eingehenden Port. Deshalb funktionieren Discord-Bots sowohl im Free Tier als auch mit bezahlten Plänen. Betreibst du zusätzlich einen HTTP-Server (z. B. für Webhooks oder ein Web-Dashboard), brauchst du einen bezahlten Plan, denn öffentlich erreichbare Ports gibt es nur in bezahlten Plänen. Siehe [Netzwerk & Zuteilungen](https://daki.cc/de/wiki/guides/network-allocations).

---

## Deployment

**Schritt 1: Python-Server erstellen**

1. Melde dich im Free-Tier-Dashboard auf [free.daki.cc](https://free.daki.cc) oder im Billing Panel auf [billing.daki.cc](https://billing.daki.cc) an.
2. Erstelle einen neuen Server und wähle das **Python**-Egg.
3. Gib deinem Server einen Namen (z. B. `MyPythonBot`).

Die vollständige Anleitung findest du unter [Deinen ersten Server erstellen](https://daki.cc/de/wiki/guides/create-server).

**Schritt 2: Portal öffnen**

Melde dich per SSO im Portal an oder direkt auf [portal.daki.cc](https://portal.daki.cc). Siehe [Portal-Überblick](https://daki.cc/de/wiki/guides/portal).

**Schritt 3: Code deines Bots hochladen**

**Option A — als ZIP hochladen (am einfachsten):**
1. Komprimiere deinen Projektordner zu einer `.zip`-Datei.
2. Gehe im Portal zum Tab **Files** und klicke auf **Upload**.
3. Klicke mit der rechten Maustaste auf die `.zip`-Datei und dann auf **Extract**.

**Option B — per SFTP (ohne Größenlimit):**
Verwende deine SFTP-Zugangsdaten aus dem Tab **Settings**, um den Ordner direkt hochzuladen. Siehe [Dateiverwaltung](https://daki.cc/de/wiki/guides/file-manager).

> **Info:** Lege eine `requirements.txt` in den Projektstamm. Der Install-Befehl nutzt sie, um deine Abhängigkeiten zu installieren.

**Schritt 4: Tab Startup konfigurieren**

Öffne den Tab **Startup** und konfiguriere alle drei Felder:

**1. Docker Image** — Wähle die Python-Version, die dein Bot benötigt (z. B. **Python 3.13**). Python 3.13 ist eine sichere Standardwahl, wenn du unsicher bist; neuere Versionen funktionieren, sofern alle deine Bibliotheken sie unterstützen. Vermeide Versionen mit der Markierung **EOL**, denn sie erhalten keine Sicherheitsupdates mehr.

**2. Install Command** — Setze diesen Befehl, damit deine Abhängigkeiten automatisch installiert werden:
```
pip install -r requirements.txt
```
**3. Startup Command** — Setze hier den Befehl, der deinen Bot ausführt:
- `python main.py` — wenn deine Einstiegsdatei `main.py` heißt
- `python bot.py` — wenn deine Einstiegsdatei `bot.py` heißt
- `python -m mypackage` — wenn dein Projekt als Paket aufgebaut ist

Du kannst diese Befehle frei an die Struktur und Anforderungen deines Projekts anpassen.

Siehe [Starteinstellungen](https://daki.cc/de/wiki/guides/startup-settings) für eine vollständige Erklärung.

**Schritt 5: Bot-Token über eine .env-Datei hinterlegen**

Speichere deinen Discord-Bot-Token in einer `.env`-Datei auf dem Server, damit er nie in deinem Quellcode auftaucht.

1. Klicke im Tab **Files** auf **New File** und nenne die Datei `.env`.
2. Trage deinen Token ein:
   ```
   BOT_TOKEN=your_discord_bot_token_here
   ```
3. Klicke auf **Save**.

Stelle sicher, dass `python-dotenv` in deiner `requirements.txt` steht, und lade die Datei dann in deinem Code:

```python

from dotenv import load_dotenv

import os

import discord



load_dotenv()

TOKEN = os.environ.get("BOT_TOKEN")



intents = discord.Intents.default()

client = discord.Client(intents=intents)



@client.event

async def on_ready():

    print(f"Logged in as {client.user}")



client.run(TOKEN)

```
Siehe [Umgebungsvariablen](https://daki.cc/de/wiki/guides/environment-variables) für mehr Details zur Verwendung von `.env`-Dateien.

**Schritt 6: Bot starten**

Klicke im Tab **Console** auf **Start**. Ein erfolgreicher Start gibt Folgendes aus:

```

Logged in as MyBot#1234

```
Erscheinen Fehler, sieh in der Anleitung zur [Fehlerbehebung](https://daki.cc/de/wiki/guides/troubleshooting) nach.

---

## Häufige Probleme

**ModuleNotFoundError: No module named 'discord'**

Deine Abhängigkeiten wurden nicht installiert. Prüfe, ob `discord.py` oder `py-cord` in der `requirements.txt` steht und ob der Install-Befehl im Tab **Startup** auf `pip install -r requirements.txt` gesetzt ist. Starte den Server neu, um die Installation auszulösen.

**ModuleNotFoundError: No module named 'dotenv'**

Füge `python-dotenv` zu deiner `requirements.txt` hinzu und starte den Server neu.

**discord.errors.LoginFailure: Improper token has been passed**

Dein Token in der `.env`-Datei ist falsch oder fehlt. Öffne die `.env`-Datei im Tab **Files** und prüfe den Wert genau. Entferne überflüssige Leerzeichen oder Anführungszeichen.

**Fehler PrivilegedIntentsRequired**

Dein Bot fordert Intents an, die im Discord Developer Portal nicht aktiviert sind. Aktiviere die benötigten privilegierten Intents (z. B. Message Content Intent) in den Einstellungen deiner Bot-Anwendung und stelle sicher, dass dein Code dieselben Intents anfordert.

**Server stürzt sofort nach dem Start ab**

Lies die Ausgabe in der **Console**, um den Fehler zu finden. Häufige Ursachen: falscher Startbefehl (Tippfehler im Dateinamen oder falscher Pfad), fehlende `requirements.txt` oder ein fehlendes Paket. Siehe [Fehlerbehebung](https://daki.cc/de/wiki/guides/troubleshooting).

---

## Nächste Schritte

- [Umgebungsvariablen](https://daki.cc/de/wiki/guides/environment-variables) — Vollständige Anleitung zu `.env`-Dateien und zum Auslesen von Variablen im Code.
- [Kostenlosen Server aktiv halten](https://daki.cc/de/wiki/guides/save-free-server-from-purge) — Sieh regelmäßig Werbung an, damit dein Free-Tier-Server läuft.
- [Dateiverwaltung](https://daki.cc/de/wiki/guides/file-manager) — Aktualisiere deinen Code nach Änderungen.

---
Source: https://daki.cc/de/wiki/guides/deploy-python
