# 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](https://nodejs.org/) - [npm](https://www.npmjs.com/) (oder [Yarn](https://yarnpkg.com/)) - Einen Telegram Bot Token (erhalten von [BotFather](https://t.me/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 cd ``` 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](https://t.me/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 `: Fügt einen Benutzer zur Whitelist hinzu (verhindert Accountsharing-Überprüfung). - `/remove_whitelist `: Entfernt einen Benutzer von der Whitelist. - `/unban `: 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](LICENSE) ## Autor M_Viper