Add utils and memory
All checks were successful
Build and push container image / build (push) Successful in 4m23s
All checks were successful
Build and push container image / build (push) Successful in 4m23s
This commit is contained in:
parent
fbca39ed5d
commit
7bf2ff0b4d
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -833,7 +833,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "kon"
|
||||
version = "0.1.16"
|
||||
version = "0.1.18"
|
||||
dependencies = [
|
||||
"cargo_toml",
|
||||
"gamedig",
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "kon"
|
||||
version = "0.1.16"
|
||||
version = "0.1.18"
|
||||
rust-version = "1.74"
|
||||
edition = "2021"
|
||||
|
||||
|
@ -1,4 +1,11 @@
|
||||
use crate::Error;
|
||||
use crate::{
|
||||
Error,
|
||||
utils::{
|
||||
format_duration,
|
||||
format_memory,
|
||||
concat_message
|
||||
}
|
||||
};
|
||||
|
||||
use sysinfo::System;
|
||||
use uptime_lib::get;
|
||||
@ -14,6 +21,11 @@ pub async fn uptime(ctx: poise::Context<'_, (), Error>) -> Result<(), Error> {
|
||||
let mut sys = System::new_all();
|
||||
sys.refresh_all();
|
||||
|
||||
// Fetch system's memory usage
|
||||
let memory_used = System::used_memory(&sys);
|
||||
let memory_free = System::free_memory(&sys);
|
||||
let memory_total = System::total_memory(&sys);
|
||||
|
||||
// Fetch system's uptime
|
||||
let sys_uptime = get().unwrap().as_secs();
|
||||
|
||||
@ -26,27 +38,12 @@ pub async fn uptime(ctx: poise::Context<'_, (), Error>) -> Result<(), Error> {
|
||||
proc_uptime = now.duration_since(time_started).unwrap().as_secs();
|
||||
}
|
||||
|
||||
ctx.reply(format!("System: `{}`\nProcess: `{}`", format_duration(sys_uptime), format_duration(proc_uptime))).await?;
|
||||
let stat_msg = vec![
|
||||
format!("System: `{}`", format_duration(sys_uptime)),
|
||||
format!("Process: `{}`", format_duration(proc_uptime)),
|
||||
format!("Memory: `{} / {} / {}`", format_memory(memory_free), format_memory(memory_used), format_memory(memory_total))
|
||||
];
|
||||
ctx.reply(concat_message(stat_msg)).await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn format_duration(secs: u64) -> String {
|
||||
let days = secs / 86400;
|
||||
let hours = (secs % 86400) / 3600;
|
||||
let minutes = (secs % 3600) / 60;
|
||||
let seconds = secs % 60;
|
||||
|
||||
let mut formatted_string = String::new();
|
||||
if days > 0 {
|
||||
formatted_string.push_str(&format!("{}d, ", days));
|
||||
}
|
||||
if hours > 0 || days > 0 {
|
||||
formatted_string.push_str(&format!("{}h, ", hours));
|
||||
}
|
||||
if minutes > 0 || hours > 0 {
|
||||
formatted_string.push_str(&format!("{}m, ", minutes));
|
||||
}
|
||||
formatted_string.push_str(&format!("{}s", seconds));
|
||||
|
||||
formatted_string
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
mod commands;
|
||||
mod controllers;
|
||||
mod models;
|
||||
mod utils;
|
||||
|
||||
use poise::serenity_prelude::{self as serenity};
|
||||
use std::{
|
||||
|
37
src/utils.rs
Normal file
37
src/utils.rs
Normal file
@ -0,0 +1,37 @@
|
||||
pub fn concat_message(messages: Vec<String>) -> String {
|
||||
messages.join("\n")
|
||||
}
|
||||
|
||||
pub fn format_duration(secs: u64) -> String {
|
||||
let days = secs / 86400;
|
||||
let hours = (secs % 86400) / 3600;
|
||||
let minutes = (secs % 3600) / 60;
|
||||
let seconds = secs % 60;
|
||||
|
||||
let mut formatted_string = String::new();
|
||||
if days > 0 {
|
||||
formatted_string.push_str(&format!("{}d, ", days));
|
||||
}
|
||||
if hours > 0 || days > 0 {
|
||||
formatted_string.push_str(&format!("{}h, ", hours));
|
||||
}
|
||||
if minutes > 0 || hours > 0 {
|
||||
formatted_string.push_str(&format!("{}m, ", minutes));
|
||||
}
|
||||
formatted_string.push_str(&format!("{}s", seconds));
|
||||
|
||||
formatted_string
|
||||
}
|
||||
|
||||
pub fn format_memory(bytes: u64) -> String {
|
||||
let kb = 1024;
|
||||
let mb = 1024 * 1024;
|
||||
let gb = 1024 * 1024 * 1024;
|
||||
|
||||
match bytes {
|
||||
b if b >= gb => format!("{:.0} GB", (b as f64 / (1024.0 * 1024.0 * 1024.0)).ceil()),
|
||||
b if b >= mb => format!("{:.0} MB", (b as f64 / (1024.0 * 1024.0)).ceil()),
|
||||
b if b >= kb => format!("{:.0} KB", (b as f64 / 1024.0).ceil()),
|
||||
_ => format!("{:.0} B", bytes),
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user