From 9d01b6954afd79b895cd28e3c32233332d43649a Mon Sep 17 00:00:00 2001 From: toast-ts <96593068+toast-ts@users.noreply.github.com> Date: Mon, 30 Jan 2023 06:48:55 +1100 Subject: [PATCH] Squash two embeds together. --- src/commands/statistics.ts | 72 ++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/src/commands/statistics.ts b/src/commands/statistics.ts index feea196..546a29c 100644 --- a/src/commands/statistics.ts +++ b/src/commands/statistics.ts @@ -1,11 +1,27 @@ import Discord,{SlashCommandBuilder} from 'discord.js'; -import TClient from 'src/client'; +import {version} from 'typescript'; import si from 'systeminformation'; +import TClient from 'src/client'; import os from 'node:os'; -import { version } from 'typescript'; -import { VERSION } from 'ts-node'; export default { async run(client: TClient, interaction: Discord.ChatInputCommandInteraction<'cached'>){ + // Host specification (L9-L22, L55-L70) + // Bytes conversion + function formatBytes(bytes:number, decimals:number = 2) { + if (bytes === 0) return '0 Bytes'; + const k = 1024; + const dm = decimals < 0 ? 0 : decimals; + const sizes = ['Bytes', 'KB', 'MB', 'GB']; + const i = Math.floor(Math.log(bytes) / Math.log(k)); + return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; + }; + var DJSver = require('discord.js').version; + const cpu = await si.cpu(); + const ram = await si.mem(); + const osInfo = await si.osInfo(); + const currentLoad = await si.currentLoad(); + + // Command usage (L25-L54) const columns = ['Command name', 'Count']; const includedCommands = client.commands.filter(x=>x.uses).sort((a,b)=>b.uses - a.uses); if (includedCommands.size == 0) return interaction.reply(`No commands have been used yet.\nUptime: **${client.formatTime(client.uptime as number, 3, {longNames: true, commas: true})}**`); @@ -36,39 +52,25 @@ export default { } else { embed.addFields({name: '\u200b', value: `\`\`\`\n${rows.join('')}\`\`\``}) }; - - // Bytes conversion - function formatBytes(bytes:number, decimals:number = 2) { - if (bytes === 0) return '0 Bytes'; - const k = 1024; - const dm = decimals < 0 ? 0 : decimals; - const sizes = ['Bytes', 'KB', 'MB', 'GB']; - const i = Math.floor(Math.log(bytes) / Math.log(k)); - return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; - } - var DJSver = require('discord.js').version; - const cpu = await si.cpu(); - const ram = await si.mem(); - const osInfo = await si.osInfo(); - const currentLoad = await si.currentLoad(); - const embed1 = new client.embed().setColor(client.config.embedColor).setTitle('Statistics: Host Info').setDescription([ - `> __Dependencies__`, - `**TypeScript:** ${version}`, - `**TS-Node:** ${VERSION}`, - `**NodeJS:** ${process.version}`, - `**DiscordJS:** ${DJSver}`, - `> __Host__`, - `**Operating System:** ${osInfo.distro + ' ' + osInfo.release}`, - `**CPU:** ${cpu.manufacturer} ${cpu.brand}`, - `**Memory:** ${formatBytes(ram.used)}/${formatBytes(ram.total)}`, - `**NodeJS:** ${formatBytes(process.memoryUsage().heapUsed)}/${formatBytes(process.memoryUsage().heapTotal)}`, - `**Load Usage:**\nUser: ${currentLoad.currentLoadUser.toFixed(1)}%\nSystem: ${currentLoad.currentLoadSystem.toFixed(1)}%`, - `**Uptime:**\nHost: ${client.formatTime((os.uptime()*1000), 2, {longNames: true, commas: true})}\nBot: ${client.formatTime(client.uptime as number, 2, {commas: true, longNames: true})}` - ].join('\n')) - .setFooter({text: `Load time: ${client.formatTime(Date.now() - interaction.createdTimestamp, 2, {longNames: true, commas: true})}`}); - interaction.reply({embeds: [embed, embed1]}) + embed.addFields( + {name: '> __Dependencies__', value: [ + `**TypeScript:** ${version}`, + `**NodeJS:** ${process.version}`, + `**DiscordJS:** ${DJSver}`, + `**Axios:** ${client.axios.VERSION}` + ].join('\n')}, + {name: '> __Host__', value: [ + `**Operating System:** ${osInfo.distro + ' ' + osInfo.release}`, + `**CPU:** ${cpu.manufacturer} ${cpu.brand}`, + `**Memory:** ${formatBytes(ram.used)}/${formatBytes(ram.total)}`, + `**NodeJS:** ${formatBytes(process.memoryUsage().heapUsed)}/${formatBytes(process.memoryUsage().heapTotal)}`, + `**Load Usage:**\nUser: ${currentLoad.currentLoadUser.toFixed(1)}%\nSystem: ${currentLoad.currentLoadSystem.toFixed(1)}%`, + `**Uptime:**\nHost: ${client.formatTime((os.uptime()*1000), 2, {longNames: true, commas: true})}\nBot: ${client.formatTime(client.uptime as number, 2, {commas: true, longNames: true})}` + ].join('\n')} // Nice + ); + interaction.reply({embeds: [embed], fetchReply: true}).then((x)=>x.edit({embeds: [new client.embed(x.embeds[0].data).setFooter({text: `Load time: ${client.formatTime(x.createdTimestamp - interaction.createdTimestamp, 2, {longNames: true, commas: true})}`})]})) }, data: new SlashCommandBuilder() .setName('statistics') - .setDescription('See a list of commands ordered by their usage or bot stats') + .setDescription('See a list of commands ordered by their usage or host stats') } \ No newline at end of file