diff --git a/core/scripts/telegrambot/utils/cpu.py b/core/scripts/telegrambot/utils/cpu.py new file mode 100644 index 0000000..a2baed2 --- /dev/null +++ b/core/scripts/telegrambot/utils/cpu.py @@ -0,0 +1,64 @@ +import psutil +import time +from utils.command import * + + +def get_system_usage(): + cpu_usage = psutil.cpu_percent(interval=1) + ram = psutil.virtual_memory() + ram_usage = ram.percent + return cpu_usage, ram_usage + +def format_alert_message(cpu_usage, ram_usage): + return ( + "🚨ALERT🚨\n" + "High CPU and RAM usage detected ⚠️\n\n" + f"πŸ“ˆ CPU: {cpu_usage:.1f}%\n" + f"πŸ“‹ RAM: {ram_usage:.1f}%" + ) + +def monitor_system_resources(): + # Thresholds + CPU_THRESHOLD = 90.0 + RAM_THRESHOLD = 90.0 + CONFIRMATION_DELAY = 60 # seconds + + try: + cpu_usage, ram_usage = get_system_usage() + + if cpu_usage > CPU_THRESHOLD and ram_usage > RAM_THRESHOLD: + time.sleep(CONFIRMATION_DELAY) + cpu_usage, ram_usage = get_system_usage() + + if cpu_usage > CPU_THRESHOLD and ram_usage > RAM_THRESHOLD: + alert_message = format_alert_message(cpu_usage, ram_usage) + + for admin_id in ADMIN_USER_IDS: + try: + bot.send_message(admin_id, alert_message) + except Exception as e: + print(f"Failed to send alert to admin {admin_id}: {str(e)}") + + return True + + except Exception as e: + print(f"Error monitoring system resources: {str(e)}") + + return False + +@bot.message_handler(commands=['system']) +def check_system(message): + if not is_admin(message.from_user.id): + bot.reply_to(message, "Unauthorized access. You do not have permission to use this command.") + return + + try: + cpu_usage, ram_usage = get_system_usage() + response = ( + "πŸ“Š System Resource Usage πŸ“Š\n\n" + f"πŸ“ˆ CPU Usage: {cpu_usage:.1f}%\n" + f"πŸ“‹ RAM Usage: {ram_usage:.1f}%" + ) + bot.reply_to(message, response) + except Exception as e: + bot.reply_to(message, f"Error checking system resources: {str(e)}")