# Discord-Bots

Source : https://webgune.cloud/de-de/docs/bots-discord · Mis à jour le 2026-10-27

# Discord-Bots

Ein Dienst vom Typ **Discord-Bot** ist für einen Prozess gedacht, der sich mit Discord verbindet und im Wartezustand bleibt. Er braucht weder HTTP-Port noch Domain.

## Einen Bot erstellen

1. In Ihrem Projekt, **+ Neuer Dienst** und wählen Sie den Typ **Discord-Bot**.
2. Wählen Sie die Runtime: **JavaScript** (Node.js) oder **Python**.
3. Verbinden Sie das GitHub-Repository, das den Bot-Code enthält.
4. Fügen Sie Ihr Token in den Umgebungsvariablen hinzu (niemals im Code):

```bash
DISCORD_TOKEN=ihr-bot-token
```

## Minimalbeispiel (discord.js)

```javascript
import { Client, GatewayIntentBits } from "discord.js";

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once("ready", () => console.log(`Verbunden: ${client.user.tag}`));

client.login(process.env.DISCORD_TOKEN);
```

## Minimalbeispiel (discord.py)

```python
import os, discord

client = discord.Client(intents=discord.Intents.default())

@client.event
async def on_ready():
    print(f"Verbunden: {client.user}")

client.run(os.environ["DISCORD_TOKEN"])
```

## Shard-Modus

Ab 2.500 Servern verlangt Discord, die Verbindung des Bots in **Shards** aufzuteilen. Aktivieren Sie den **Shard-Modus** beim Erstellen des Bots oder später im Tab **Discord-Bot** und wählen Sie die Anzahl der Shards (2 bis 32). Das Bedienfeld zeigt die von Discord für Ihren Bot empfohlene Anzahl, etwa ein Shard pro 1.000 Server.

Jeder Shard läuft in einem eigenen Pod: Die Last verteilt sich auf mehrere Maschinen, und ein abstürzender Shard reißt die anderen nicht mit. Die Pods starten nacheinander im Abstand von einigen Sekunden, um das Identify-Limit von Discord einzuhalten. Jeder Pod erhält drei Variablen:

| Variable | Inhalt |
|---|---|
| `SHARD_ID` | Shard-Nummer dieses Pods (0, 1, 2…) |
| `SHARD_COUNT` | Gesamtzahl der Shards |
| `SHARDS` | `[SHARD_ID]`, im von discord.js erwarteten Format |

**discord.js** liest `SHARDS` und `SHARD_COUNT` selbst: Das Minimalbeispiel oben funktioniert unverändert. Verwenden Sie keinen zusätzlichen `ShardingManager`, diese Rolle übernimmt bereits die Plattform.

**discord.py**: Übergeben Sie beide Variablen an den Client.

```python
import os, discord
from discord.ext import commands

bot = commands.AutoShardedBot(
    command_prefix="!",
    intents=discord.Intents.default(),
    shard_ids=[int(os.environ["SHARD_ID"])],
    shard_count=int(os.environ["SHARD_COUNT"]),
)

bot.run(os.environ["DISCORD_TOKEN"])
```

Eine Änderung der Shard-Anzahl startet alle Pods des Bots neu, da jeder die neue Gesamtzahl kennen muss. Im Tab **Logs** wählen Sie über eine Auswahl den Shard, dessen Logs Sie lesen. Autoscaling ist für einen Bot mit Shards nicht verfügbar: Er läuft immer mit einem Pod pro Shard.

## Verbindungsstatus

Das Bedienfeld des Dienstes zeigt zusätzlich zum Container-Status den **Discord-Verbindungsstatus** des Bots an: Sie sehen sofort, ob der Bot auf Discord-Seite online ist, nicht nur, ob der Prozess läuft.

## Wichtige Hinweise

- Kein Port zu konfigurieren: ein Bot exponiert keinen HTTP-Server. Wenn Ihr Code trotzdem einen Port öffnet (integriertes Dashboard…), bevorzugen Sie einen klassischen Web-Dienst.
- Der Prozess muss am Leben bleiben: ein Skript, das sich beendet, verursacht einen Neustart in Endlosschleife. Die Diagnose ist dieselbe wie bei [Startbefehlen](/docs/commande-demarrage).
- Die Logs des Bots sind in Echtzeit im Tab **Logs** verfügbar.
