kowalski/commands/stats.js
2024-06-02 14:55:44 +00:00

55 lines
1.8 KiB
JavaScript

const os = require('os');
module.exports = function (bot, msg) {
const chatId = msg.chat.id;
const botAdmin = process.env.TGBOT_ADMINS;
function formatUptime(uptime) {
const hours = Math.floor(uptime / 3600);
const minutes = Math.floor((uptime % 3600) / 60);
const seconds = Math.floor(uptime % 60);
return `${hours}h ${minutes}m ${seconds}s`;
}
function getSystemInfo() {
const platform = os.platform();
const release = os.release();
const arch = os.arch();
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';
const loadAverage = os.loadavg().map(avg => avg.toFixed(2)).join(', ');
const uptime = formatUptime(os.uptime());
const nodeVersion = process.version;
const homeDir = os.homedir();
const hostName = os.hostname();
const tempDir = os.tmpdir();
const userInfo = os.userInfo();
return `*Server Stats*\n\n` +
`*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}\``;
}
const message = getSystemInfo();
const isAdmin = botAdmin.includes(msg.from.id.toString());
if (isAdmin) {
bot.sendMessage(chatId, message, { parse_mode: 'Markdown' })
.catch(error => console.error('WARN: Message cannot be sent: ', error));
} else {
return;
}
}