plex-bot.js aktualisiert

This commit is contained in:
M_Viper 2024-10-18 13:02:39 +00:00
parent dbf1fe80ff
commit c18e957ddc
1 changed files with 121 additions and 47 deletions

View File

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