Files
pixelpoebel/README.md
sarah f84539d5ab
All checks were successful
Auto Build and Push Docker Image / build (push) Successful in 7s
feat: add count-up Stopwatch module with persistence in SQLite
2026-08-03 18:57:16 +02:00

162 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Pixelpöbel Discord Bot
Ein moderner, modularer Discord-Bot in TypeScript.
## 🚀 Installation
```bash
npm install
```
## ⚙️ Konfiguration
Erstelle `.env` Datei:
```env
DISCORD_TOKEN=dein_bot_token
CLIENT_ID=deine_client_id
TWITCH_CLIENT_ID=deine_twitch_id
TWITCH_CLIENT_SECRET=deine_twitch_secret
TWITCH_USERNAME=dein_twitch_username
TWITCH_OAUTH_TOKEN=oauth:xxxxxxxxxxxxxxxxxx
BOT_OWNER_ID=deine_discord_user_id
# Optional: Automatische Slash-Command Registrierung bei Bot-Start (default: true)
AUTO_DEPLOY=true
```
### TwitchMonitor Setup
1. **Twitch OAuth Token holen:** https://chatterino.com/client_login
2. **Username:** Dein Twitch Username
3. **Bot Owner ID:** Deine Discord User ID (für Fehlerbenachrichtigungen)
> ⚠️ **Hinweis:** Der Twitch OAuth Token kann ungültig werden. In diesem Fall wirst du automatisch per Discord DM benachrichtigt.
## 🚀 Start
```bash
# Development
npm run dev
# Production
npm run build
npm start
```
## 🐳 Docker
```bash
# Build und Start
docker-compose up -d --build
# Logs ansehen
docker-compose logs -f pixelpoebel-bot
# Stoppen
docker-compose down
# Container neu bauen
docker-compose up -d --build --force-recreate
```
## 📋 Commands registrieren
Befehle werden standardmäßig **automatisch bei jedem Bot-Start** registriert. Du kannst dies über `AUTO_DEPLOY=false` in der `.env` deaktivieren.
Für manuelle Updates oder im Notfall:
```bash
npm run deploy
```
## 🎮 Befehle
### Öffentlich
- `/ping` Latenz test
- `/help` Alle Befehle
- `/cat [typ]` Zufälliges Katzenbild oder Katzen-GIF (Auswahl: Bild / GIF)
- `/catgif` Zufälliges Katzen-GIF direkt posten
- `/twitch online <channel>` Twitch-Status
- `/twitch list` Überwachte Kanäle
- `/twitch help` Twitch-Hilfe
- `/timer list` Timer dieses Kanals
- `/timer help` Timer-Hilfe
- `/trigger list` Alle Trigger anzeigen
- `/trigger help` Trigger-Hilfe
### Timer (Erinnerungen)
- `/timer add <zeit> <nachricht>` Timer hinzufügen
- `/timer remove <id>` Timer entfernen (Mod)
- `/timer list` Timer dieses Kanals
- `/timer listall` Alle Timer (Mod)
- `/timer help` Timer-Hilfe
### Stoppuhr (Hochzählender Timer)
- `/stopwatch start <name>` Startet eine neue Stoppuhr mit Namen
- `/stopwatch status [name]` Abgelaufene Zeit abfragen
- `/stopwatch stop <name>` Stoppuhr beenden & Laufzeit ausgeben
- `/stopwatch list` Aktive Stoppuhren auflisten
- `/stopwatch help` Stoppuhr-Hilfe
### Trigger (Auto-Antworten)
- `/trigger add <wort> <antwort>` Trigger hinzufügen (Mod)
- `/trigger remove <wort>` Trigger entfernen (Mod)
- `/trigger list` Alle Trigger anzeigen
- `/trigger help` Trigger-Hilfe
### Twitch
- `/twitch online <kanal>` Prüft ob Kanal online ist
- `/twitch add <streamer1, streamer2, ...>` Streamer überwachen (Mod)
- `/twitch remove <streamer1, streamer2, ...>` Streamer entfernen (Mod)
- `/twitch list` Überwachte Kanäle
- `/twitch listall` Alle überwachten Streamer (Mod)
- `/twitch help` Twitch-Hilfe
### TwitchMonitor (IRC Chat Logging)
- `/twitchmonitor add <twitch> <discord>` Twitch-Kanal zum IRC-Monitoring hinzufügen (Mod)
- `/twitchmonitor remove <twitch>` Kanal vom Monitoring entfernen (Mod)
- `/twitchmonitor list` Alle überwachten Twitch-Kanäle
- `/twitchmonitor help` Hilfe anzeigen
### Rollen-Auswahl
- `/rolesetup create <#kanal> <name>` Rollen-Auswahl Message erstellen
- `/rolesetup add <kategorie> <@rolle> [emoji]` Rolle zur Auswahl hinzufügen
- `/rolesetup edit <kategorie> <rolle> [neues_emoji]` Emoji ändern
- `/rolesetup remove <kategorie> <rolle>` Rolle entfernen
- `/rolesetup delete <kategorie>` Kategorie löschen
- `/rolesetup config <kategorie> max:1 exclusive:true` Einstellungen
- `/rolesetup list` Alle Kategorien anzeigen
### Admin
- `/admin kick <user>` Nutzer kicken
- `/admin warn <user> <reason>` Nutzer verwarnen
- `/admin unwarn <user>` Letzte Warnung entfernen
- `/admin mute <user> <dauer> <einheit>` Nutzer muten
- `/admin unmute <user>` Nutzer entmuten
- `/admin ban <user>` Nutzer bannen
- `/admin unban <id>` Nutzer entbannen
- `/admin purge amount <1-100>` X Nachrichten löschen
- `/admin purge time <dauer> <min|hour>` Nachrichten der letzten X Zeit löschen
- `/admin purge user <user> <1-100>` X Nachrichten eines Nutzers löschen
- `/admin purge all` Alle Nachrichten löschen (max 100)
- `/admin config` Warn-System konfigurieren
- `/admin help` Admin-Hilfe
### Owner
- `/owner deploy` Commands neu registrieren
- `/owner stats` Bot-Statistiken
- `/owner servers` Alle Server
- `/owner help` Owner-Hilfe
## 📡 Features & Optimierungen
-**Modular Architecture:** TypeScript-basiert, ESM-Unterstützung, strikte Typisierung.
-**High Performance Database:** SQLite mit **WAL-Modus**, **Fremdschlüssel-Unterstützung**, **Datenbank-Indizes** (für schnelle Abfragen von Mod-Logs, Timern und Twitch-Monitoren) und **chirurgischem In-Memory Caching** für Guild-Settings und Trigger.
-**Centralized Event Logging:** Ein zentrales `EventLogger`-System zur strukturierten und verlässlichen Erfassung von Server-Ereignissen (Nachrichten, Rollen, Nicknames, Kanäle, Kicks, Bans, Warnungen).
-**Optimized Twitch Polling:** Nutzt **Batch-Requests** (100 Kanäle pro Request), Datenbank-Transaktionen und ein 2-Minuten-Intervall für zeitnahe Benachrichtigungen.
-**TwitchMonitor IRC:** Echtzeit IRC Chat-Logging (Mod-Events) via **wiederverwendbaren Webhooks** und FIFO-Cache.
-**Advanced Moderation & Safety:** Warn-System mit Auto-Actions, umfangreiches Purge-System, abgesicherte Timeout-Limits (max. 28 Tage gemäß Discord-API) und vollständiges Exception handling.
-**Role Selection:** Self-Service Rollen-System über Discord Select Menus mit automatischer Berechtigungsprüfung und Fehlerabfangung.
-**Smart Auto-Response System:** Präzises Trigger-Wort-Matching mit Wortgrenzen-Regex (`\b`), um Falsch-Positive zu vermeiden.
-**Reminders:** Intelligentes Zeit-Parsing (z.B. "morgen 15:00", "30min").
-**Developer & Team Support:** Unterstützung von Discord Developer Teams und `BOT_OWNER_ID` Fallback für Owner-Befehle.
-**Docker Support:** Containerisiertes Deployment inklusive Volume-Mounts für Daten.