- discord.js v14 Bot mit Slash-Command-Registry (Guild oder global) - Konfiguration über .env mit Validierung (config.js) - Dockerfile + docker-compose.yml für Portainer-Deployment - README mit Schritt-für-Schritt-Anleitung (Discord Developer Portal) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.3 KiB
3.3 KiB
EcoBot
Discord-Bot + Webinterface für die EcoGame-Community.
Features (Roadmap):
- ✅ Bot online +
/pingSlash-Command - ⬜ Commit-Feed: Gitea-Push-Webhooks → Discord-Embeds + SQLite-Archiv
- ⬜ Devlog-Archiv: tägliche Devlogs archivieren
- ⬜ Webinterface: Discord-Login, Devlog- & Commit-Seiten
Stack: Node.js 20+, discord.js v14, Fastify (ab Feature 2), React (ab Feature 4), SQLite, Docker
Setup: Discord-App anlegen (einmalig)
1. App erstellen
- Öffne das Discord Developer Portal
- New Application → Name:
EcoBot→ Create - Unter General Information die Application ID kopieren
→ das ist
DISCORD_CLIENT_ID
2. Bot-Token holen
- Linke Seitenleiste → Bot
- Reset Token → Token kopieren → das ist
DISCORD_TOKEN⚠️ Der Token wird nur einmal angezeigt — direkt in die.enveintragen! - Auf der Bot-Seite weiter unten: Message Content Intent aktivieren (brauchen wir ab Feature 3 zum Lesen der Devlog-Nachrichten)
3. Bot auf den Server einladen
- Linke Seitenleiste → OAuth2 → URL Generator
- Scopes ankreuzen:
botundapplications.commands - Bot Permissions ankreuzen:
- Send Messages
- Embed Links
- Read Message History
- Generierte URL unten kopieren, im Browser öffnen, deinen Server auswählen → Autorisieren
4. Server-ID holen (für sofortige Slash-Commands)
- In Discord: Einstellungen → Erweitert → Entwicklermodus aktivieren
- Rechtsklick auf deinen Server → Server-ID kopieren
→ das ist
DISCORD_GUILD_ID
5. .env anlegen
cp .env.example .env
Dann die drei Werte eintragen. Die .env ist in .gitignore und landet nie im Repo.
Lokal starten (Entwicklung)
npm install
npm run dev
Erwartete Ausgabe:
[bot] Eingeloggt als EcoBot#1234
[bot] 1 Slash-Command(s) registriert (Guild)
Dann in Discord: /ping → Bot antwortet mit Latenz. 🎉
Deployment (Docker / Portainer)
Variante A: Portainer-Stack aus Git (empfohlen)
- Portainer → Stacks → Add stack
- Repository wählen:
- URL:
https://git.d4rkst3r.de/D4rkst3r/ecobot.git - Compose path:
docker-compose.yml
- URL:
- Unter Environment variables die drei Werte aus der
.enveintragen (DISCORD_TOKEN,DISCORD_CLIENT_ID,DISCORD_GUILD_ID) — alternativenv_fileweglassen und die Variablen direkt im Stack setzen - Deploy the stack
Variante B: Manuell auf dem Server
git clone git@gitea:D4rkst3r/ecobot.git
cd ecobot
cp .env.example .env # Werte eintragen
docker compose up -d --build
Logs prüfen:
docker logs -f ecobot
Projektstruktur
ecobot/
├── src/
│ ├── index.js # Einstiegspunkt
│ ├── config.js # Env-Konfiguration mit Validierung
│ └── bot/
│ ├── client.js # Discord-Client, Command-Registry, Interactions
│ └── commands/
│ └── ping.js # /ping — Lebenszeichen
├── .env.example # Vorlage für Secrets (nach .env kopieren)
├── Dockerfile
├── docker-compose.yml
└── README.md
Neue Slash-Commands: Datei in src/bot/commands/ anlegen (exportiert data + execute)
und in src/bot/client.js bei commandModules eintragen.