kowalski/commands/stats.js

55 lines
1.8 KiB
JavaScript
Raw Normal View History

2024-06-01 22:56:49 +00:00
const os = require('os');
module.exports = function (bot, msg) {
const chatId = msg.chat.id;
2024-06-02 13:28:14 +00:00
const botAdmin = process.env.TGBOT_ADMINS;
2024-06-01 22:56:49 +00:00
function formatUptime(uptime) {
const hours = Math.floor(uptime / 3600);
const minutes = Math.floor((uptime % 3600) / 60);
2024-06-01 22:58:49 +00:00
const seconds = Math.floor(uptime % 60);
2024-06-01 22:56:49 +00:00
return `${hours}h ${minutes}m ${seconds}s`;
}
function getSystemInfo() {
const platform = os.platform();
const release = os.release();
2024-06-02 12:00:21 +00:00
const arch = os.arch();
2024-06-01 22:56:49 +00:00
const cpuModel = os.cpus()[0].model;
const cpuCores = os.cpus().length;
const totalMemory = (os.totalmem() / (1024 ** 3)).toFixed(2) + ' GB';
const freeMemory = (os.freemem() / (1024 ** 3)).toFixed(2) + ' GB';
2024-06-02 12:00:21 +00:00
const loadAverage = os.loadavg().map(avg => avg.toFixed(2)).join(', ');
2024-06-01 22:56:49 +00:00
const uptime = formatUptime(os.uptime());
2024-06-02 12:00:21 +00:00
const nodeVersion = process.version;
const homeDir = os.homedir();
const hostName = os.hostname();
const tempDir = os.tmpdir();
const userInfo = os.userInfo();
2024-06-01 22:56:49 +00:00
2024-06-01 22:58:49 +00:00
return `*Server Stats*\n\n` +
2024-06-02 12:00:21 +00:00
`*OS:* \`${platform} ${release}\`\n` +
`*Arch:* \`${arch}\`\n` +
`*Node.js Version:* \`${nodeVersion}\`\n` +
`*CPU:* \`${cpuModel}\`\n` +
`*CPU Cores:* \`${cpuCores} cores\`\n` +
`*RAM:* \`${freeMemory} / ${totalMemory}\`\n` +
`*Load Average:* \`${loadAverage}\`\n` +
`*Uptime:* \`${uptime}\`\n\n` +
`*Username*: \`${userInfo.username}\`\n` +
`*Hostname:* \`${hostName}\`\n` +
`*Home Directory:* \`${homeDir}\`\n` +
`*Temp. Directory:* \`${tempDir}\``;
2024-06-01 22:56:49 +00:00
}
const message = getSystemInfo();
2024-06-02 13:28:14 +00:00
const isAdmin = botAdmin.includes(msg.from.id.toString());
2024-06-02 13:23:36 +00:00
if (isAdmin) {
bot.sendMessage(chatId, message, { parse_mode: 'Markdown' })
2024-06-02 13:27:01 +00:00
.catch(error => console.error('WARN: Message cannot be sent: ', error));
2024-06-02 13:23:36 +00:00
} else {
return;
}
}