From c18e957ddcf319e18a413502462d9c8bfcc37b4e Mon Sep 17 00:00:00 2001 From: M_Viper Date: Fri, 18 Oct 2024 13:02:39 +0000 Subject: [PATCH] plex-bot.js aktualisiert --- plex-bot.js | 168 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 121 insertions(+), 47 deletions(-) diff --git a/plex-bot.js b/plex-bot.js index 94b87d7..74a6923 100644 --- a/plex-bot.js +++ b/plex-bot.js @@ -457,7 +457,7 @@ function generateRandomPassword() { const uppercaseChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; const lowercaseChars = 'abcdefghijklmnopqrstuvwxyz'; const digits = '0123456789'; - const specialChars = '@#$!'; + const specialChars = '@$!+-*&'; const allChars = uppercaseChars + lowercaseChars + digits + specialChars; @@ -2226,6 +2226,9 @@ function logError(message) { const timestamp = new Date().toISOString(); fs.appendFileSync('error.log', `${timestamp} - ${message}\n`); } + + + // Umgebungsvariable für die Chat-ID der Entwickler const DEV_CHAT_ID = parseInt(process.env.DEV_CHAT_ID, 10); @@ -2246,7 +2249,8 @@ function getDevOptionsKeyboard() { reply_markup: { inline_keyboard: [ [{ text: '💡 Funktionswunsch', callback_data: 'dev_request' }], - [{ text: '🐞 Bug melden', callback_data: 'dev_bug' }] + [{ text: '🐞 Bug melden', callback_data: 'dev_bug' }], + [{ text: '🎬 Film Report', callback_data: 'film_report' }] ] } }; @@ -2292,6 +2296,15 @@ bot.on('callback_query', (query) => { }; break; + case 'film_report': + responseText = '🎬 *Bitte geben Sie den Film Report ein:* \n\nTitel & Fehlerbeschreibung:'; + replyMarkup = { + reply_markup: { + force_reply: true + } + }; + break; + default: // Kein Popup oder Nachricht senden, wenn die Auswahl unbekannt ist return; @@ -2303,32 +2316,52 @@ bot.on('callback_query', (query) => { // Handler für die Antworten auf die Feedback-Anfrage bot.on('message', async (msg) => { if (msg.reply_to_message && (msg.reply_to_message.text.includes('Bitte geben Sie Ihren Funktionswunsch ein:') || - msg.reply_to_message.text.includes('Bitte beschreiben Sie den Bug, den Sie melden möchten:'))) { + msg.reply_to_message.text.includes('Bitte beschreiben Sie den Bug, den Sie melden möchten:') || + msg.reply_to_message.text.includes('Bitte geben Sie den Film Report ein:'))) { const chatId = msg.chat.id; const text = msg.text; const userName = msg.from.first_name + (msg.from.last_name ? ` ${msg.from.last_name}` : ''); const userId = msg.from.id; - const messageType = msg.reply_to_message.text.includes('Funktionswunsch') ? 'Funktionswunsch' : 'Bug'; - const devMessage = { - id: null, // ID wird später zugewiesen - type: messageType, - user: { - name: userName, - id: userId - }, - message: text, - timestamp: new Date().toISOString() - }; + let messageType; + let report; + + if (msg.reply_to_message.text.includes('Funktionswunsch')) { + messageType = 'Funktionswunsch'; + report = { type: messageType, user: { name: userName, id: userId }, message: text }; + } else if (msg.reply_to_message.text.includes('Bug')) { + messageType = 'Bug'; + report = { type: messageType, user: { name: userName, id: userId }, message: text }; + } else if (msg.reply_to_message.text.includes('Film Report')) { + // Hier wird der gesamte Text für Titel und Fehlerbeschreibung verwendet + const userMessage = text.trim(); // Benutzertext + + messageType = 'Film Report'; + report = { + type: messageType, + user: { name: userName, id: userId }, + message: userMessage // Der gesamte Benutzertext wird als Nachricht verwendet + }; + } // Dev Report in die Datei schreiben try { - console.log('Sende Nachricht an Entwickler-Chat-ID:', DEV_CHAT_ID); // Debugging-Ausgabe - await bot.sendMessage(DEV_CHAT_ID, formatDevMessage(devMessage), { parse_mode: 'Markdown' }); + // Nur die DEV_CHAT_ID für Bug und Funktionswunsch + if (messageType === 'Bug' || messageType === 'Funktionswunsch') { + console.log('Sende Nachricht an Entwickler-Chat-ID:', DEV_CHAT_ID); // Debugging-Ausgabe + await bot.sendMessage(DEV_CHAT_ID, formatDevMessage(report), { parse_mode: 'Markdown' }); + } + // DEV_CHAT_ID und USER2_ID für Film Reports + else if (messageType === 'Film Report') { + console.log('Sende Nachricht an Entwickler-Chat-ID und USER2_ID:', DEV_CHAT_ID, USER2_ID); // Debugging-Ausgabe + await bot.sendMessage(DEV_CHAT_ID, formatDevMessage(report), { parse_mode: 'Markdown' }); + await bot.sendMessage(USER2_ID, formatDevMessage(report), { parse_mode: 'Markdown' }); + } + console.log('Nachricht erfolgreich gesendet.'); // Dev Report in die JSON-Datei speichern - saveDevReport(devMessage); + saveDevReport(report); bot.sendMessage(chatId, '✅ Ihre Nachricht wurde erfolgreich gesendet! Vielen Dank.'); } catch (error) { @@ -2356,6 +2389,8 @@ function saveDevReport(report) { // Starte den Bot und erstelle die Datei createDevReportsFile(); + + // Handler für den /bot-Befehl bot.onText(/\/bot/, (msg) => { const chatId = msg.chat.id; @@ -5029,6 +5064,31 @@ app.post('/api/download-backup', (req, res) => { } }); + + + + + + + + + + + + + + + + + + + + + + + + + // API-Endpunkt zum Abrufen der Entwicklerberichte app.get('/api/dev-reports', (req, res) => { try { @@ -5060,43 +5120,43 @@ app.use(bodyParser.json()); // API zum Empfangen der Berichte von der HTML-Seite app.post('/api/submit-report', (req, res) => { - const { type, user, message } = req.body; + const { type, user, message } = req.body; - // Falls keine Chat-ID vorhanden ist, generiere eine zufällige ID - const chatId = user.id || Math.floor(Math.random() * 1000000); + // Falls keine Chat-ID vorhanden ist, generiere eine zufällige ID + const chatId = user.id || Math.floor(Math.random() * 1000000); - const newReport = { - id: Date.now(), // Verwende die aktuelle Zeit als eindeutige ID - type, - user: { - name: user.name || 'Anonym', - id: chatId - }, - message, - timestamp: new Date().toISOString() - }; + const newReport = { + id: Date.now(), // Verwende die aktuelle Zeit als eindeutige ID + type, + user: { + name: user.name || 'Anonym', + id: chatId + }, + message, + timestamp: new Date().toISOString() + }; - try { - // Berichte aus der Datei laden oder ein leeres Array verwenden - let reports = []; - if (fs.existsSync(DEV_REPORTS_FILE_PATH)) { - reports = JSON.parse(fs.readFileSync(DEV_REPORTS_FILE_PATH, 'utf-8')); - } + try { + // Berichte aus der Datei laden oder ein leeres Array verwenden + let reports = []; + if (fs.existsSync(DEV_REPORTS_FILE_PATH)) { + reports = JSON.parse(fs.readFileSync(DEV_REPORTS_FILE_PATH, 'utf-8')); + } - // Füge den neuen Bericht hinzu - reports.push(newReport); + // Füge den neuen Bericht hinzu + reports.push(newReport); - // Datei aktualisieren - fs.writeFileSync(DEV_REPORTS_FILE_PATH, JSON.stringify(reports, null, 2)); + // Datei aktualisieren + fs.writeFileSync(DEV_REPORTS_FILE_PATH, JSON.stringify(reports, null, 2)); - // Optional: Senden des Berichts an Telegram - sendToTelegram(newReport); + // Optional: Senden des Berichts an Telegram + sendToTelegram(newReport); - res.status(200).json({ message: 'Bericht erfolgreich übermittelt.' }); - } catch (error) { - console.error('Fehler beim Schreiben des Berichts:', error); - res.status(500).json({ message: 'Fehler beim Schreiben des Berichts.' }); - } + res.status(200).json({ message: 'Bericht erfolgreich übermittelt.' }); + } catch (error) { + console.error('Fehler beim Schreiben des Berichts:', error); + res.status(500).json({ message: 'Fehler beim Schreiben des Berichts.' }); + } }); function sendToTelegram(report) { @@ -5122,6 +5182,20 @@ function sendToTelegram(report) { + + + + + + + + + + + + + + // Ende Frontend /// Definition der logDebug-Funktion