bot.js aktualisiert

This commit is contained in:
M_Viper 2024-09-07 17:20:16 +00:00
parent 11c2cab1c3
commit 9285725d1e
1 changed files with 155 additions and 38 deletions

187
bot.js
View File

@ -271,6 +271,120 @@ function logError(error) {
fs.appendFileSync(ERROR_LOG_PATH, errorMessage);
}
const faqFilePath = path.join(__dirname, 'faq.json'); // Pfad zur faq.json im Hauptverzeichnis
const authorizedUsers = [USER1_ID, USER2_ID];
// Funktion zum Laden der FAQs
function loadFaqs() {
if (!fs.existsSync(faqFilePath)) {
fs.writeFileSync(faqFilePath, JSON.stringify([])); // Leere Datei erstellen, wenn sie nicht existiert
}
const faqs = JSON.parse(fs.readFileSync(faqFilePath));
return faqs;
}
// Funktion zum Speichern der FAQs
function saveFaqs(faqs) {
fs.writeFileSync(faqFilePath, JSON.stringify(faqs, null, 2));
}
// /faq Befehl: Zeigt alle FAQs an
bot.onText(/\/faq/, (msg) => {
const chatId = msg.chat.id;
const faqs = loadFaqs();
if (faqs.length === 0) {
bot.sendMessage(chatId, 'Es gibt derzeit keine FAQs.');
} else {
let response = 'Häufig gestellte Fragen:\n\n';
faqs.forEach((faq, index) => {
response += `${index + 1}. *${faq.question}*\n${faq.answer}\n\n`;
});
bot.sendMessage(chatId, response, { parse_mode: 'Markdown' });
}
});
// /add_faq Befehl: Interaktives Hinzufügen einer neuen FAQ (nur für autorisierte Benutzer)
bot.onText(/\/add_faq/, (msg) => {
const chatId = msg.chat.id;
const userId = msg.from.id.toString();
if (!authorizedUsers.includes(userId)) {
bot.sendMessage(chatId, '❌ Du bist nicht autorisiert, diesen Befehl auszuführen.');
return;
}
// Frage nach der FAQ-Frage
bot.sendMessage(chatId, 'Bitte gib die FAQ-Frage ein:', {
reply_markup: { force_reply: true }
}).then(sentMessage => {
bot.onReplyToMessage(sentMessage.chat.id, sentMessage.message_id, (reply) => {
const question = reply.text;
// Frage nach der FAQ-Antwort
bot.sendMessage(chatId, 'Bitte gib die Antwort auf die Frage ein:', {
reply_markup: { force_reply: true }
}).then(sentMessage => {
bot.onReplyToMessage(sentMessage.chat.id, sentMessage.message_id, (reply) => {
const answer = reply.text;
// FAQ speichern
const faqs = loadFaqs();
faqs.push({ question, answer });
saveFaqs(faqs);
bot.sendMessage(chatId, '✅ FAQ erfolgreich hinzugefügt.');
});
});
});
});
});
// /del_faq Befehl: Interaktives Entfernen einer FAQ (nur für autorisierte Benutzer)
bot.onText(/\/del_faq/, (msg) => {
const chatId = msg.chat.id;
const userId = msg.from.id.toString();
if (!authorizedUsers.includes(userId)) {
bot.sendMessage(chatId, '❌ Du bist nicht autorisiert, diesen Befehl auszuführen.');
return;
}
const faqs = loadFaqs();
if (faqs.length === 0) {
bot.sendMessage(chatId, 'Es gibt derzeit keine FAQs zum Löschen.');
return;
}
// Liste der FAQs anzeigen und um Eingabe der Nummer bitten
let response = 'Welche FAQ möchtest du löschen?\n\n';
faqs.forEach((faq, index) => {
response += `${index + 1}. *${faq.question}*\n${faq.answer}\n\n`;
});
bot.sendMessage(chatId, response, {
parse_mode: 'Markdown',
reply_markup: { force_reply: true }
}).then(sentMessage => {
bot.onReplyToMessage(sentMessage.chat.id, sentMessage.message_id, (reply) => {
const faqIndex = parseInt(reply.text, 10) - 1;
if (isNaN(faqIndex) || faqIndex < 0 || faqIndex >= faqs.length) {
bot.sendMessage(chatId, '❌ Ungültige Auswahl.');
return;
}
// FAQ löschen
faqs.splice(faqIndex, 1);
saveFaqs(faqs);
bot.sendMessage(chatId, '✅ FAQ erfolgreich gelöscht.');
});
});
});
// Handler für den /admin-Befehl
bot.onText(/\/admin/, (msg) => {
const chatId = msg.chat.id;
@ -531,7 +645,7 @@ bot.on('message', async (msg) => {
console.log('Sende Nachricht an Entwickler-Chat-ID:', DEV_CHAT_ID); // Debugging-Ausgabe
await bot.sendMessage(DEV_CHAT_ID, devMessage, { parse_mode: 'Markdown' });
console.log('Nachricht erfolgreich gesendet.');
bot.sendMessage(chatId, '✅ Ihre Nachricht wurde erfolgreich gesendet! Vielen Dank für Ihr Feedback.');
bot.sendMessage(chatId, '✅ Ihre Nachricht wurde erfolgreich gesendet! Vielen Dank.');
} catch (error) {
console.error('Fehler beim Senden der Nachricht:', error);
bot.sendMessage(chatId, '🚫 Etwas ist schiefgelaufen. Ihre Nachricht konnte nicht gesendet werden.');
@ -1326,15 +1440,6 @@ function getTypeKeyboard() {
};
}
// Funktion zum Senden des Wunsches an zwei Benutzer
async function sendWish(wish, type, chatId) {
const message = `✨ **Achtung!** ✨\n\nEin neuer Wunsch ist eingegangen:\n\n🔹 **Typ:** ${type}\n\n🔹 **Titel:**\n${wish}`;
@ -1978,10 +2083,10 @@ bot.onText(/\/f_log/, (msg) => {
}
});
// Funktion zum Erstellen der Hilfennachricht
function createHelpMessage(chatId) {
// Basis-Hilfe-Nachricht für alle Benutzer
let helpMessage = `📜 *Hier ist eine Liste der verfügbaren Befehle:*\n\n` +
// Funktion zum Erstellen der allgemeinen Hilfennachricht
function createHelpMessage() {
return `📜 *Hier ist eine Liste der verfügbaren Befehle:*\n\n` +
`👋 /start - Registriert deinen Zugang.\n\n` +
`🔔 /notification\\_on - Aktiviert Benachrichtigungen für neue Filme.\n\n` +
`🔕 /notification\\_off - Deaktiviert Benachrichtigungen für neue Filme.\n\n` +
@ -1995,44 +2100,56 @@ function createHelpMessage(chatId) {
`💭 /wunsch - Nutze diesen Befehl, um einen Filmwunsch zu äußern.\n\n` +
`🔝 /empfehlung - Film Empfehlung des Tages.\n\n` +
`💬 /feedback - Gib Feedback zum Bot.\n\n` +
`🔧 /dev - Funktionswunsch oder Bug melden. \n\n` +
`❓ /help - Zeigt diese Hilfennachricht an. \n\n\n`;
`🔧 /dev - Funktionswunsch oder Bug melden.\n\n` +
`❓ /faq - Zeigt eine Liste der häufig gestellten Fragen an.\n\n` +
`❓ /help - Zeigt diese Hilfennachricht an.\n\n`;
}
const additionalCommands = `*👨‍💻 Admin Befehle* \n\n` +
// Funktion zum Erstellen der Admin-Hilfennachricht
function createAdminHelpMessage() {
return `*👨‍💻 Admin Befehle* \n\n` +
`🤖 /bot - Zeigt Informationen über den Bot.\n\n` +
`🛠️ /admin - sendet eine Nachricht an alle Nutzer.\n\n` +
`👤 /user - Zeigt Benutzerinformationen an.\n\n` +
`📝 /logs - Zeigt die letzten Fehlermeldungen an.\n\n` +
`🗑️ /log\\_delete - Löscht Logs.\n\n` +
`📝 /f\\_log - Sendet die Feedback als .txt-Datei.`;
// Debug-Ausgaben zur Überprüfung
console.log(`Received chatId: ${chatId}`);
console.log(`Configured USER1_ID: ${USER1_ID}`);
console.log(`Configured USER2_ID: ${USER2_ID}`);
// Nur Benutzer in der .env-Datei erhalten die zusätzlichen Befehle
if (chatId.toString() === USER1_ID || chatId.toString() === USER2_ID) {
helpMessage += additionalCommands;
}
return helpMessage;
`📝 /f\\_log - Sendet die Feedback als .txt-Datei.\n\n` +
`❓ /add\\_faq - Fügt eine neue Frage zur FAQ hinzu.\n\n` +
`🗑️ /del\\_faq - Löscht eine FAQ.\n\n`;
}
// /help-Befehl verarbeiten
bot.onText(/\/help/, (msg) => {
const chatId = msg.chat.id;
const helpMessage = createHelpMessage(chatId);
const helpMessage = createHelpMessage();
bot.sendMessage(chatId, helpMessage, { parse_mode: 'Markdown' }).catch(error => {
logError(`Error sending help message to chatId ${chatId}: ${error.message}`);
console.log(`Error sending help message to chatId ${chatId}: ${error.message}`);
});
logMessage(`Sent help message to chatId ${chatId}`);
console.log(`Sent help message to chatId ${chatId}`);
});
// /admin_help-Befehl verarbeiten
bot.onText(/\/a_help/, (msg) => {
const chatId = msg.chat.id;
// Überprüfung, ob der Benutzer berechtigt ist
if (chatId.toString() === process.env.USER1_ID || chatId.toString() === process.env.USER2_ID) {
const adminHelpMessage = createAdminHelpMessage();
bot.sendMessage(chatId, adminHelpMessage, { parse_mode: 'Markdown' }).catch(error => {
console.log(`Error sending admin help message to chatId ${chatId}: ${error.message}`);
});
console.log(`Sent admin help message to chatId ${chatId}`);
} else {
bot.sendMessage(chatId, "Du hast keine Berechtigung, diesen Befehl zu verwenden.", { parse_mode: 'Markdown' }).catch(error => {
console.log(`Error sending unauthorized message to chatId ${chatId}: ${error.message}`);
});
}
});
// Funktion zum Abrufen der letzten 10 hinzugefügten Filme
async function fetchLatest10Movies() {