2025-03-08 15:45:33 +00:00

6.4 KiB

Telegram Plex Bot

Dieser Bot überwacht Plex-Wiedergaben, um Account Sharing zu erkennen und zu verhindern. Er kann Benutzer verwarnen, sperren und bietet ein Dashboard zur Überwachung der Aktivitäten.

Funktionen

  • Account Sharing Erkennung: Überwacht aktive Plex-Sessions, um festzustellen, ob mehrere Geräte gleichzeitig denselben Account verwenden.
  • Benachrichtigungen: Sendet Warnungen an einen Telegram-Kanal, wenn Account Sharing erkannt wird.
  • Automatische Sperrung: Sperrt Benutzer automatisch nach einer bestimmten Anzahl von Verstößen.
  • Whitelist: Ermöglicht das Hinzufügen von Benutzern zu einer Whitelist, um die Account Sharing-Prüfung zu umgehen.
  • Dashboard: Bietet ein Web-Dashboard zur Anzeige von Statistiken wie aktive Sessions, gesperrte Benutzer und Verstöße.
  • Wartungsmodus: Ermöglicht das Anhalten aller Bot-Aktivitäten während der Wartung.
  • Telegram-Befehle: Bietet verschiedene Telegram-Befehle zur Steuerung des Bots und zur Überwachung des Plex-Servers.

Voraussetzungen

  • Node.js

  • npm (oder Yarn)

  • Einen Telegram Bot Token (erhalten von BotFather)

  • Eine Plex Media Server Instanz

  • Eine .env-Datei mit den folgenden Umgebungsvariablen:

    TELEGRAM_BOT_TOKEN=Dein_Telegram_Bot_Token
    PLEX_URL=Deine_Plex_URL (z.B. http://localhost:32400)
    PLEX_TOKEN=Dein_Plex_Token
    TELEGRAM_CHAT_ID=Deine_Telegram_Chat_ID
    DASHBOARD_PASSWORD=Dein_Dashboard_Passwort
    

Installation

  1. Clone das Repository:

    git clone <repository-url>
    cd <repository-name>
    
  2. Installiere die Abhängigkeiten:

    npm install
    

    oder mit Yarn:

    yarn install
    
  3. Konfiguriere die Umgebungsvariablen:

    Erstelle eine .env-Datei im Hauptverzeichnis des Projekts und füge die erforderlichen Umgebungsvariablen hinzu (siehe "Voraussetzungen").

  4. Starte den Bot:

    npm start
    

    oder mit Yarn:

    yarn start
    

Konfiguration

.env Datei

Die .env-Datei muss im Hauptverzeichnis des Projekts erstellt werden und die folgenden Variablen enthalten:

  • TELEGRAM_BOT_TOKEN: Der Token deines Telegram Bots. Du erhältst diesen von BotFather.
  • PLEX_URL: Die URL zu deinem Plex Media Server. Stelle sicher, dass du das Protokoll (http oder https) angibst. Beispiel: http://localhost:32400 oder https://dein-plex-server.de.
  • PLEX_TOKEN: Dein Plex Token. Du findest diesen in den Plex Server Einstellungen.
  • TELEGRAM_CHAT_ID: Die Chat-ID des Telegram-Kanals oder der Gruppe, in dem/der der Bot Benachrichtigungen senden soll. Du kannst diese ID mit einem anderen Bot wie z.B. dem "IDBot" herausfinden.
  • DASHBOARD_PASSWORD: Das Passwort für den Zugriff auf das Dashboard.

Whitelist

Die Whitelist wird in der Datei whitelist.json gespeichert. Du kannst Benutzer manuell hinzufügen oder entfernen, indem du die Datei bearbeitest oder die Telegram-Befehle verwendest.

Überwachte Benutzer

Die Liste der überwachten Benutzer ist im Code in der Variable monitoredUsers definiert. Passe diese Liste an, um die Plex-Benutzernamen der Benutzer einzutragen, die auf Account Sharing überwacht werden sollen.

Telegram Befehle

  • /start: Startet den Bot.
  • /help: Zeigt eine Liste der verfügbaren Befehle und eine kurze Beschreibung an.
  • /reload: Führt eine manuelle Überprüfung aller aktiven Wiedergaben durch.
  • /stats: Zeigt Statistiken zu aktiven Sessions, gebannten Benutzern, Verstößen und Whitelist-Nutzern an.
  • /whitelist <Benutzername>: Fügt einen Benutzer zur Whitelist hinzu (verhindert Accountsharing-Überprüfung).
  • /remove_whitelist <Benutzername>: Entfernt einen Benutzer von der Whitelist.
  • /unban <Benutzername>: Hebt den Bann für einen Benutzer auf.
  • /multiple_devices: Zeigt Benutzer mit mehreren Geräten an.
  • /server_status: Prüft den Status des Plex-Servers.
  • /maintenance: Aktiviert den Wartungsmodus.
  • /end_maintenance: Deaktiviert den Wartungsmodus.

Dashboard

Das Dashboard ist unter /index auf dem Server erreichbar (z.B. http://localhost:3000/index). Du musst das in der .env Datei definierte Passwort eingeben, um auf das Dashboard zuzugreifen. Das Dashboard zeigt Statistiken zu aktiven Sessions, gebannten Benutzern, Verstößen, CPU- und RAM-Auslastung des Servers.

Funktionsweise

Der Bot führt regelmäßig die Funktion checkPlexActivity() aus, um die aktuellen Plex-Sessions abzurufen. Für jede Session werden folgende Prüfungen durchgeführt:

  1. Whitelist-Prüfung: Wenn der Benutzer auf der Whitelist steht, werden keine weiteren Prüfungen durchgeführt.
  2. Account Sharing-Prüfung: Wenn der Benutzer mehr als eine aktive Session hat, wird dies als Account Sharing gewertet.
  3. Verstöße zählen: Bei jedem erkannten Account Sharing wird ein Verstoß für den Benutzer gezählt.
  4. Automatische Sperrung: Wenn ein Benutzer eine bestimmte Anzahl von Verstößen erreicht hat, wird er automatisch für eine bestimmte Zeit gesperrt.
  5. Benachrichtigungen: Der Bot sendet Benachrichtigungen an den Telegram-Kanal über erkannte Account Sharing-Vorfälle, Warnungen und Sperrungen.

Erweiterungen

  • Erweiterte Konfiguration: Implementiere eine Konfigurationsdatei, um weitere Einstellungen wie die Anzahl der zulässigen Verstöße, die Dauer der Sperre und die Intervalle für die Prüfungen zu konfigurieren.
  • Datenbankintegration: Verwende eine Datenbank zur Speicherung von Benutzerdaten, Verstößen und Sperrungen, um die Datenpersistenz zu verbessern.
  • Benutzerfreundlichere Befehle: Implementiere komplexere Befehle mit Inline-Tastaturen für eine einfachere Bedienung.
  • Anpassbare Nachrichten: Ermögliche die Anpassung der Nachrichten, die der Bot an den Telegram-Kanal sendet.

Fehlerbehebung

  • Bot startet nicht: Stelle sicher, dass alle Umgebungsvariablen in der .env-Datei korrekt konfiguriert sind.
  • Bot sendet keine Benachrichtigungen: Überprüfe, ob der Bot die Berechtigung hat, Nachrichten an den Telegram-Kanal zu senden.
  • Dashboard ist nicht erreichbar: Stelle sicher, dass der Server läuft und dass die Firewall den Zugriff auf den Port (standardmäßig 3000) erlaubt.

Lizenz

MIT

Autor

M_Viper