plex-bot.js aktualisiert
This commit is contained in:
parent
30c940be00
commit
b1f96183f3
128
plex-bot.js
128
plex-bot.js
|
@ -329,17 +329,60 @@ bot.onText(/\/trailer/, (msg) => {
|
|||
});
|
||||
});
|
||||
|
||||
// Globale Variable zum Zählen der Passwortanforderungen
|
||||
let passwordRequestCount = 0;
|
||||
let passwordChangeRequired = false; // Sperrt Login, wenn Passwortänderung nötig ist
|
||||
let newPassword = ''; // Speichert das neue Passwort
|
||||
|
||||
|
||||
|
||||
bot.onText(/\/passwd/, (msg) => {
|
||||
const chatId = msg.chat.id;
|
||||
const userId = msg.from.id.toString();
|
||||
|
||||
// Überprüfen, ob das Passwort geändert werden muss
|
||||
if (passwordChangeRequired) {
|
||||
const reply = `⚠️ Der Befehl /passwd ist zurzeit nicht verfügbar! Der Zugang wurde gesperrt bitte wenden dich an den Admin.`;
|
||||
bot.sendMessage(chatId, reply, { parse_mode: 'HTML' });
|
||||
return; // Beende die Ausführung, wenn das Passwort geändert werden muss
|
||||
}
|
||||
|
||||
if (authorizedUsers.includes(userId)) {
|
||||
const password = process.env.ADMIN_PW; // Passwort aus der .env-Datei
|
||||
// Zähler für Passwortanforderungen erhöhen
|
||||
passwordRequestCount++;
|
||||
|
||||
// Wenn die Anzahl der Anfragen 10 erreicht, muss das Passwort geändert werden
|
||||
if (passwordRequestCount >= 10) {
|
||||
newPassword = generateRandomPassword(); // Zufälliges sicheres Passwort generieren
|
||||
updateEnvPassword(newPassword); // Neues Passwort in der .env speichern
|
||||
|
||||
const changePwMessage = `⚠️ Du hast das Passwort zu oft angefordert. Der Zugang wurde gesperrt.`;
|
||||
|
||||
bot.sendMessage(chatId, changePwMessage, {
|
||||
parse_mode: 'HTML',
|
||||
protect_content: true,
|
||||
}).then((sentMessage) => {
|
||||
setTimeout(() => {
|
||||
bot.deleteMessage(chatId, sentMessage.message_id).catch((err) => {
|
||||
console.error('Fehler beim Löschen der Nachricht:', err);
|
||||
});
|
||||
}, 30000); // 30 Sekunden
|
||||
});
|
||||
|
||||
// Zähler zurücksetzen und Sperre aktivieren
|
||||
passwordRequestCount = 0;
|
||||
passwordChangeRequired = true; // Passwort muss geändert werden
|
||||
|
||||
return; // Beende die Ausführung, um das alte Passwort nicht mehr zu senden
|
||||
}
|
||||
|
||||
// Passwort aus der .env-Datei holen
|
||||
const password = process.env.ADMIN_PW;
|
||||
const reply = `🔒 Das Passwort für den Adminbereich lautet:\n\n<span class="tg-spoiler">${password}</span>\n\n‼️<em>Hinweis:‼\n</em> Diese Nachricht wird automatisch in 30 Sekunden gelöscht.`;
|
||||
|
||||
bot.sendMessage(chatId, reply, {
|
||||
parse_mode: 'HTML',
|
||||
protect_content: true // Inhalt schützen
|
||||
protect_content: true, // Inhalt schützen
|
||||
}).then((sentMessage) => {
|
||||
setTimeout(() => {
|
||||
bot.deleteMessage(chatId, sentMessage.message_id).catch((err) => {
|
||||
|
@ -355,7 +398,7 @@ bot.onText(/\/passwd/, (msg) => {
|
|||
}, 30000); // 30 Sekunden
|
||||
|
||||
// Nachricht an den Dev senden
|
||||
const devMessage = `🔒 Das Passwort für den Adminbereich wurde angefordert von:\n\n\n👤 <strong>@${msg.from.username}</strong>\n\n🆔 ID: <strong>${userId}</strong>\n\n\n📅 Datum: <strong>${new Date().toLocaleDateString('de-DE')}</strong>\n\n🕒 Uhrzeit: <strong>${new Date().toLocaleTimeString('de-DE')}</strong>`;
|
||||
const devMessage = `🔒 Das Passwort für den Adminbereich wurde angefordert von:\n\n👤 <strong>@${msg.from.username}</strong>\n\n🆔 ID: <strong>${userId}</strong>\n\n📅 Datum: <strong>${new Date().toLocaleDateString('de-DE')}</strong>\n\n🕒 Uhrzeit: <strong>${new Date().toLocaleTimeString('de-DE')}</strong>`;
|
||||
|
||||
bot.sendMessage(process.env.DEV_CHAT_ID, devMessage, { parse_mode: 'HTML' }).catch((err) => {
|
||||
console.error('Fehler beim Senden der Dev-Nachricht:', err);
|
||||
|
@ -365,7 +408,7 @@ bot.onText(/\/passwd/, (msg) => {
|
|||
|
||||
bot.sendMessage(chatId, reply, {
|
||||
parse_mode: 'HTML',
|
||||
protect_content: true // Inhalt schützen
|
||||
protect_content: true,
|
||||
}).then((sentMessage) => {
|
||||
setTimeout(() => {
|
||||
bot.deleteMessage(chatId, sentMessage.message_id).catch((err) => {
|
||||
|
@ -382,11 +425,88 @@ bot.onText(/\/passwd/, (msg) => {
|
|||
}
|
||||
});
|
||||
|
||||
// /key Befehl
|
||||
bot.onText(/\/key/, (msg) => {
|
||||
const chatId = msg.chat.id;
|
||||
const userId = msg.from.id.toString();
|
||||
|
||||
if (authorizedUsers.includes(userId)) {
|
||||
if (passwordChangeRequired) {
|
||||
const reply = `🔑 Neues Passwort:\n<span class="tg-spoiler">${newPassword}</span>\n\nDiese Nachricht wird in 30 Sekunden gelöscht.`;
|
||||
bot.sendMessage(chatId, reply, { parse_mode: 'HTML' }).then((sentMessage) => {
|
||||
setTimeout(() => {
|
||||
bot.deleteMessage(chatId, sentMessage.message_id);
|
||||
}, 30000);
|
||||
});
|
||||
|
||||
setTimeout(() => {
|
||||
bot.deleteMessage(chatId, msg.message_id);
|
||||
}, 30000);
|
||||
|
||||
passwordChangeRequired = false; // /passwd wieder aktivieren
|
||||
} else {
|
||||
bot.sendMessage(chatId, "⚠️ Das Passwort wurde nicht geändert. Du kannst den /passwd Befehl nutzen.", { parse_mode: 'HTML' });
|
||||
}
|
||||
} else {
|
||||
bot.sendMessage(chatId, "🚫 Zugriff verweigert!", { parse_mode: 'HTML' });
|
||||
}
|
||||
});
|
||||
|
||||
// Funktion zum Generieren eines sicheren zufälligen Passworts mit mindestens 12 Zeichen
|
||||
function generateRandomPassword() {
|
||||
const uppercaseChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
const lowercaseChars = 'abcdefghijklmnopqrstuvwxyz';
|
||||
const digits = '0123456789';
|
||||
const specialChars = '@#$!';
|
||||
|
||||
const allChars = uppercaseChars + lowercaseChars + digits + specialChars;
|
||||
|
||||
let password = '';
|
||||
|
||||
// Stelle sicher, dass das Passwort mindestens je einen Großbuchstaben, Kleinbuchstaben, Zahl und Sonderzeichen enthält
|
||||
password += uppercaseChars.charAt(Math.floor(Math.random() * uppercaseChars.length));
|
||||
password += lowercaseChars.charAt(Math.floor(Math.random() * lowercaseChars.length));
|
||||
password += digits.charAt(Math.floor(Math.random() * digits.length));
|
||||
password += specialChars.charAt(Math.floor(Math.random() * specialChars.length));
|
||||
|
||||
// Fülle das restliche Passwort mit zufälligen Zeichen auf, um 12 Zeichen zu erreichen
|
||||
for (let i = 4; i < 12; i++) {
|
||||
password += allChars.charAt(Math.floor(Math.random() * allChars.length));
|
||||
}
|
||||
|
||||
// Das Passwort zufällig durchmischen
|
||||
return shuffleString(password);
|
||||
}
|
||||
|
||||
// Funktion zum Mischen eines Strings (optional, um die Zeichen zufällig anzuordnen)
|
||||
function shuffleString(string) {
|
||||
const array = string.split('');
|
||||
for (let i = array.length - 1; i > 0; i--) {
|
||||
const j = Math.floor(Math.random() * (i + 1));
|
||||
[array[i], array[j]] = [array[j], array[i]];
|
||||
}
|
||||
return array.join('');
|
||||
}
|
||||
|
||||
// Funktion zum Aktualisieren des Passworts in der .env-Datei
|
||||
function updateEnvPassword(newPassword) {
|
||||
const envFilePath = path.resolve(__dirname, '.env');
|
||||
|
||||
// Die aktuelle .env-Datei lesen
|
||||
let envContent = fs.readFileSync(envFilePath, 'utf-8');
|
||||
|
||||
// Das Passwort in der Datei ändern
|
||||
envContent = envContent.replace(/ADMIN_PW=.*/, `ADMIN_PW=${newPassword}`);
|
||||
|
||||
// Die geänderte Datei speichern
|
||||
fs.writeFileSync(envFilePath, envContent);
|
||||
|
||||
// Umgebungsvariable aktualisieren, ohne den Bot neu zu starten
|
||||
process.env.ADMIN_PW = newPassword;
|
||||
|
||||
// Passwortänderung abgeschlossen
|
||||
passwordChangeRequired = false; // Sperre aufheben, Login wieder möglich
|
||||
}
|
||||
|
||||
const usersNightMode = {}; // Temporärer Speicher für Nachtmodus
|
||||
|
||||
|
|
Loading…
Reference in New Issue