server_monitor_bot.js aktualisiert

This commit is contained in:
M_Viper 2024-01-25 20:09:20 +01:00
parent 366e09340a
commit 38a13342fe
1 changed files with 88 additions and 21 deletions

View File

@ -9,6 +9,8 @@ const logDirectory = 'logs/';
let usersAddingServer = {};
let isShowingDetails = false;
const botStartTime = new Date();
const { promisify } = require('util');
const exec = promisify(require('child_process').exec);
const developerChatIds = process.env.DEVELOPER_CHAT_IDS.split(',');
@ -18,7 +20,7 @@ const bot = new TelegramBot(token, { polling: true });
if (!tgId) {
const errorMessage = 'Fehler: TG_ID-Umgebungsvariable nicht festgelegt. Der Bot wird nicht gestartet.';
const errorMessage = 'Fehler: Die ID wurde geändert. Der Bot wird nicht gestartet.';
console.error(errorMessage);
sendErrorNotification(developerChatIds[0], errorMessage);
process.exit(1);
@ -82,7 +84,7 @@ bot.onText(/\/stats/, (msg) => {
// Version des Telegram Bot API-Pakets
const telegramBotApiVersion = getTelegramBotApiVersion();
// Nachricht mit den Statistiken senden
// Nachricht mit den Statistiken senden
bot.sendMessage(chatId, `
*Statistik*
Gesamtanzahl der überwachten Server: ${serverCount}
@ -363,36 +365,87 @@ bot.onText(/\/info/, (msg) => {
bot.sendMessage(chatId, infoMessage, options);
});
// Füge diese Funktion hinzu, um Fehlerbenachrichtigungen und das Protokoll zu handhaben
bot.on('polling_error', (error) => {
console.error(`Polling error: ${error.message}`);
sendErrorNotification(developerChatId, `Polling error: ${error.message}`);
// Event-Handler für den Befehl /log_clear
bot.onText(/\/error_clear/, (msg) => {
const chatId = msg.chat.id;
// Überprüfen, ob die Chat-ID des Benutzers in den Developer-Chat-IDs enthalten ist
if (!isDeveloperChat(chatId)) {
bot.sendMessage(chatId, 'Dieser Befehl ist nur für Entwickler');
return;
}
try {
const logFileName = 'error.log';
const logFilePath = logFileName; // Pfade im gleichen Verzeichnis
// Lösche den Inhalt des Logfiles
fs.writeFileSync(logFilePath, '');
bot.sendMessage(chatId, 'Der Log-Inhalt wurde erfolgreich gelöscht.');
} catch (error) {
console.error(`Fehler beim Löschen des Log-Inhalts: ${error.message}`);
bot.sendMessage(chatId, 'Fehler beim Löschen des Log-Inhalts.');
}
});
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled rejection:', reason);
sendErrorNotification(developerChatId, `Unhandled rejection: ${reason}`);
});
// Event-Handler für den Befehl /error_send
bot.onText(/\/error_send/, (msg) => {
const chatId = msg.chat.id;
process.on('uncaughtException', (error) => {
console.error('Uncaught exception:', error);
sendErrorNotification(developerChatId, `Uncaught exception: ${error}`);
// Überprüfen, ob die Chat-ID des Benutzers in den Developer-Chat-IDs enthalten ist
if (!isDeveloperChat(chatId)) {
bot.sendMessage(chatId, 'Dieser Befehl ist nur für Entwickler');
return;
}
try {
const logFileName = 'error.log';
const logFilePath = logFileName; // Pfade im gleichen Verzeichnis
// Überprüfe, ob die Logdatei existiert
if (fs.existsSync(logFilePath)) {
// Sende die Logdatei als Dokument an den Entwickler
bot.sendDocument(chatId, logFilePath);
} else {
bot.sendMessage(chatId, `Die Logdatei ${logFileName} existiert nicht.`);
}
} catch (error) {
console.error(`Fehler beim Senden der Logdatei: ${error.message}`);
bot.sendMessage(chatId, 'Fehler beim Senden der Logdatei.');
}
});
// Füge diese Funktion hinzu, um Fehlerbenachrichtigungen und das Protokoll zu handhaben
bot.on('polling_error', (error) => {
console.error(`Polling error: ${error.message}`);
sendErrorNotification(developerChatId, `Polling error: ${error.message}`);
sendErrorNotification(developerChatIds, `Polling error: ${error.message}`);
});
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled rejection:', reason);
sendErrorNotification(developerChatId, `Unhandled rejection: ${reason}`);
sendErrorNotification(developerChatIds, `Unhandled rejection: ${reason}`);
});
process.on('uncaughtException', (error) => {
console.error('Uncaught exception:', error);
sendErrorNotification(developerChatId, `Uncaught exception: ${error}`);
sendErrorNotification(developerChatIds, `Uncaught exception: ${error}`);
});
// Füge diese Funktion hinzu, um Fehlerbenachrichtigungen und das Protokoll zu handhaben
bot.on('polling_error', (error) => {
console.error(`Polling error: ${error.message}`);
sendErrorNotification(developerChatIds, `Polling error: ${error.message}`);
});
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled rejection:', reason);
sendErrorNotification(developerChatIds, `Unhandled rejection: ${reason}`);
});
process.on('uncaughtException', (error) => {
console.error('Uncaught exception:', error);
sendErrorNotification(developerChatIds, `Uncaught exception: ${error}`);
});
// Funktion zum Senden von Fehlerbenachrichtigungen und Erstellen des Fehlerprotokolls
@ -566,10 +619,22 @@ function sendStatusMessage(chatId, serverName, serverStatus) {
bot.sendMessage(chatId, statusMessage);
}
bot.onText(/\/uptime/, async (msg) => {
// Funktion, um die Bot-Uptime in Tagen, Stunden und Minuten zu erhalten
function getBotUptime() {
const uptimeMilliseconds = new Date() - botStartTime; // botStartTime sollte irgendwo definiert und beim Bot-Start festgelegt sein
// Berechne Tage, Stunden und Minuten
const days = Math.floor(uptimeMilliseconds / (1000 * 60 * 60 * 24));
const hours = Math.floor((uptimeMilliseconds % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const minutes = Math.floor((uptimeMilliseconds % (1000 * 60 * 60)) / (1000 * 60));
return { days, hours, minutes };
}
bot.onText(/\/uptime/, (msg) => {
const chatId = msg.chat.id;
const uptime = await getUptime();
bot.sendMessage(chatId, `Bot Uptime: ${uptime}`);
const { days, hours, minutes } = getBotUptime();
bot.sendMessage(chatId, `Bot Uptime: ${days} Tage, ${hours} Stunden und ${minutes} Minuten`);
});
bot.onText(/\/start/, (msg) => {
@ -926,7 +991,9 @@ if (isDeveloperChat(chatId)) {
'- /error: Zeigt den error Log an\n' +
'- /stats: Zeigt an, wie viele Personen den Bot nutzen\n' +
'- /user_id Zeigt eine Liste von Usern an die den Bot nutzen\n' +
`- /user_delete "ID" löscht alle Server des Benutzer`;
'- /user_delete "ID" löscht alle Server des Benutzer\n' +
'- /error_send schickt die error.log Datei\n' +
'- /error_clear löscht alle einträge im error.log';
}
bot.sendMessage(chatId, helpMessage);
@ -997,4 +1064,4 @@ async function checkAndSendServerStatus() {
}
}
}
}
}