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) => {
|
bot.onText(/\/passwd/, (msg) => {
|
||||||
const chatId = msg.chat.id;
|
const chatId = msg.chat.id;
|
||||||
const userId = msg.from.id.toString();
|
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)) {
|
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.`;
|
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, {
|
bot.sendMessage(chatId, reply, {
|
||||||
parse_mode: 'HTML',
|
parse_mode: 'HTML',
|
||||||
protect_content: true // Inhalt schützen
|
protect_content: true, // Inhalt schützen
|
||||||
}).then((sentMessage) => {
|
}).then((sentMessage) => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
bot.deleteMessage(chatId, sentMessage.message_id).catch((err) => {
|
bot.deleteMessage(chatId, sentMessage.message_id).catch((err) => {
|
||||||
|
@ -355,7 +398,7 @@ bot.onText(/\/passwd/, (msg) => {
|
||||||
}, 30000); // 30 Sekunden
|
}, 30000); // 30 Sekunden
|
||||||
|
|
||||||
// Nachricht an den Dev senden
|
// 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) => {
|
bot.sendMessage(process.env.DEV_CHAT_ID, devMessage, { parse_mode: 'HTML' }).catch((err) => {
|
||||||
console.error('Fehler beim Senden der Dev-Nachricht:', err);
|
console.error('Fehler beim Senden der Dev-Nachricht:', err);
|
||||||
|
@ -365,7 +408,7 @@ bot.onText(/\/passwd/, (msg) => {
|
||||||
|
|
||||||
bot.sendMessage(chatId, reply, {
|
bot.sendMessage(chatId, reply, {
|
||||||
parse_mode: 'HTML',
|
parse_mode: 'HTML',
|
||||||
protect_content: true // Inhalt schützen
|
protect_content: true,
|
||||||
}).then((sentMessage) => {
|
}).then((sentMessage) => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
bot.deleteMessage(chatId, sentMessage.message_id).catch((err) => {
|
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
|
const usersNightMode = {}; // Temporärer Speicher für Nachtmodus
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue