server_monitor_bot.js aktualisiert
This commit is contained in:
parent
366e09340a
commit
38a13342fe
|
@ -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() {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue