summaryrefslogtreecommitdiff
path: root/commands/mem.js
blob: 2d6fa66cb6546c7908e1329c49b674a5750fe820 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const os = require("os");

module.exports = (parameter, wrapper) => {
    function prettySize(size) {
        if (size < 1024) {
            return size + " bytes";
        } else if (size < 1024**2) {
            return (size / 1024).toFixed(2) + " KiB";
        } else if (size < 1024**3) {
            return (size / 1024**2).toFixed(2) + " MiB";
        } else if (size < 1024**4) {
            return (size / 1024**3).toFixed(2) + " GiB";
        }
    }

    function getPercentage(used, total) {
        return (used / total) * 100;
    }

    let percentage = getPercentage(os.totalmem() - os.freemem(), os.totalmem());
    let bars = Math.round(percentage / 4);
    let percentage2 = getPercentage(process.memoryUsage().heapUsed, process.memoryUsage().heapTotal);
    let bars2 = Math.round(percentage2 / 4);

    wrapper.send("💻 Here is how much RAM this bot is using:\n\n#### General\n" +
        "\n* **System:** " + prettySize(os.totalmem() - os.freemem()) + "/" + prettySize(os.totalmem()) + "\n<br>`[" + "=".repeat(bars) + " ".repeat(25 - bars) + "]`" +
        "\n* **Process:** " + prettySize(process.memoryUsage().heapUsed) + "/" + prettySize(process.memoryUsage().heapTotal) + "\n<br>`[" + "=".repeat(bars2) + " ".repeat(25 - bars2) + "]`" +
        "\n\n#### Advanced" +
        "\n* **Resident set size:** " + prettySize(process.memoryUsage().rss) +
        "\n* **Binary buffers:** " + prettySize(process.memoryUsage().arrayBuffers) +
        "\n* **C++ objects:** " + prettySize(process.memoryUsage().external)
    );
}