Pixelpöbel Discord Bot

Ein moderner, modularer Discord-Bot in TypeScript.

🚀 Installation

npm install

⚙️ Konfiguration

Erstelle .env Datei:

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

# Development
npm run dev

# Production
npm run build
npm start

🐳 Docker

# 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:

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> [startzeit] – Startet eine neue Stoppuhr mit Namen (Mod)
  • /stopwatch status [name] – Abgelaufene Zeit öffentlich abfragen (Für alle sichtbar)
  • /stopwatch stop <name> – Stoppuhr beenden & Laufzeit ausgeben (Mod)
  • /stopwatch list – Aktive Stoppuhren des Servers öffentlich auflisten (Für alle sichtbar)
  • /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").
  • ✅ Persistent Stopwatches: Namentliche hochzählende Stoppuhren mit SQLite-Speicherung, Unterstützung für optionale vergangene Startzeiten (z.B. "14:30", "2h"), Duplikat-Schutz und relativer Discord-Zeitdarstellung.
  • ✅ 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.
Description
No description provided
Readme 540 KiB
Languages
TypeScript 99.9%
Dockerfile 0.1%