← back to browse
goat command

system

Show detailed system statistics

0
views
0
likes
0
installs

Aliases: sys, stats, uptime, sysinfo

raw source
const os = require("os");
const { performance } = require("perf_hooks");

module.exports = {
  config: {
    name: "system",
    aliases: ["sys", "stats", "uptime", "sysinfo"],
    version: "1.2",
    author: "Mehedi-saito",
    countDown: 5,
    role: 0,
    shortDescription: {
      en: "Show detailed system statistics"
    },
    description: {
      en: "Displays detailed system statistics"
    },
    category: "info",
    guide: {
      en: "{pn}"
    }
  },

  onStart: async function ({ message, usersData, threadsData }) {
    const start = performance.now();

    // ========== Uptime ==========
    const uptime = process.uptime();
    const days = Math.floor(uptime / (3600 * 24));
    const hours = Math.floor((uptime % (3600 * 24)) / 3600);
    const minutes = Math.floor((uptime % 3600) / 60);
    const seconds = Math.floor(uptime % 60);
    const uptimeStr = `${days}d ${hours}h ${minutes}m ${seconds}s`;

    // ========== Memory ==========
    const totalMem = os.totalmem();
    const freeMem = os.freemem();
    const usedMem = totalMem - freeMem;
    const memUsagePercent = ((usedMem / totalMem) * 100).toFixed(2);

    const formatBytes = (bytes) => {
      const gb = bytes / (1024 ** 3);
      return gb.toFixed(2) + " GB";
    };

    const processMem = (process.memoryUsage().rss / (1024 * 1024)).toFixed(2);

    // ========== CPU ==========
    const cpus = os.cpus();
    const cpuModel = cpus[0].model;
    const cpuCores = cpus.length;

    const load = os.loadavg();
    const load1 = (load[0] * 100 / cpuCores).toFixed(2);
    const load5 = (load[1] * 100 / cpuCores).toFixed(2);
    const load15 = (load[2] * 100 / cpuCores).toFixed(2);

    // ========== Network Interfaces ==========
    const nets = os.networkInterfaces();
    let networkInfo = "";
    for (const name of Object.keys(nets)) {
      for (const net of nets[name]) {
        if (net.family === "IPv4" || net.family === "IPv6") {
          networkInfo += `• ${name}: ${net.family}: ${net.address}\n`;
        }
      }
    }
    if (!networkInfo) networkInfo = "No network interface found";

    // ========== Bot Stats ==========
    const allUsers = await usersData.getAll();
    const allThreads = await threadsData.getAll();
    const totalUsers = allUsers.length;
    const totalGroups = allThreads.filter(t => t.threadID.toString().length > 15).length;

    const ping = (performance.now() - start).toFixed(0);

    const msg = 
`LOADED...
[█████████]

🖥 ⚡ 𝗦𝗬𝗦𝗧𝗘𝗠 𝗦𝗧𝗔𝗧𝗜𝗦𝗧𝗜𝗖𝗦 ⚡
───────────────────────────
🕒 Uptime: ${uptimeStr}
💾 Memory Usage: ${processMem} MB

📊 Total Memory: ${formatBytes(totalMem)}
📉 Free Memory: ${formatBytes(freeMem)}
🔥 Memory Usage: ${memUsagePercent}%
⚡ CPU Load (1m): ${load1}%

⚡ CPU Load (5m): ${load5}%
⚡ CPU Load (15m): ${load15}%
🛠 CPU Cores: ${cpuCores}
🧠 CPU Model: ${cpuModel}

📦 Node.js Version: ${process.version}
🖥 Platform: ${os.platform()}
🏓 Ping: ${ping}ms
👥 Total Users: ${totalUsers}
👥 Total Groups: ${totalGroups}

📨 Messages Processed: 0
✅ Media is not banned in this chat.

🌐 𝗡𝗲𝘁𝘄𝗼𝗿𝗸 𝗜𝗻𝘁𝗲𝗿𝗳𝗮𝗰𝗲𝘀:
${networkInfo.trim()}

💪 I've been running for quite a while now!`;

    message.reply(msg);
  }
};

View raw file