diff --git a/Cargo.lock b/Cargo.lock index b42f702..00f0a69 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -972,7 +972,7 @@ dependencies = [ [[package]] name = "kon" -version = "0.3.2" +version = "0.3.3" dependencies = [ "bb8", "bb8-postgres", diff --git a/Cargo.toml b/Cargo.toml index f4c2583..a53cacb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kon" -version = "0.3.2" +version = "0.3.3" edition = "2021" [dependencies] diff --git a/src/commands/uptime.rs b/src/commands/uptime.rs index 5608a2a..f401428 100644 --- a/src/commands/uptime.rs +++ b/src/commands/uptime.rs @@ -9,12 +9,43 @@ use crate::{ use sysinfo::System; use uptime_lib::get; -use std::time::{ - Duration, - SystemTime, - UNIX_EPOCH +use std::{ + fs::File, + path::Path, + time::{ + Duration, + SystemTime, + UNIX_EPOCH + }, + io::{ + BufRead, + BufReader + } }; +fn get_os_info() -> String { + let path = Path::new("/etc/os-release"); + let mut name = "BoringOS".to_string(); + let mut version = "v0.0".to_string(); + + if let Ok(file) = File::open(&path) { + let reader = BufReader::new(file); + for line in reader.lines() { + if let Ok(line) = line { + if line.starts_with("NAME=") { + name = line.split('=').nth(1).unwrap_or_default().trim_matches('"').to_string(); + } else if line.starts_with("VERSION=") { + version = line.split('=').nth(1).unwrap_or_default().trim_matches('"').to_string(); + } else if line.starts_with("VERSION_ID=") { + version = line.split('=').nth(1).unwrap_or_default().trim_matches('"').to_string(); + } + } + } + } + + format!("{} {}", name, version) +} + /// Retrieve host and bot uptimes #[poise::command(slash_command)] pub async fn uptime(ctx: poise::Context<'_, (), Error>) -> Result<(), Error> { @@ -22,13 +53,12 @@ pub async fn uptime(ctx: poise::Context<'_, (), Error>) -> Result<(), Error> { let mut sys = System::new_all(); sys.refresh_all(); - // Fetch system's operating system - let sys_os_info = os_info::get(); - let sys_os = format!("{} {}", sys_os_info.os_type(), sys_os_info.version()); - // Fetch system's uptime let sys_uptime = get().unwrap().as_secs(); + // Fetch system's processor + let cpu = sys.cpus(); + // Fetch bot's process uptime let curr_pid = sysinfo::get_current_pid().unwrap(); let now = SystemTime::now(); @@ -42,7 +72,8 @@ pub async fn uptime(ctx: poise::Context<'_, (), Error>) -> Result<(), Error> { format!("**{} {}**", _bot.name, BOT_VERSION.as_str()), format!(">>> System: `{}`", format_duration(sys_uptime)), format!("Process: `{}`", format_duration(proc_uptime)), - format!("OS: `{}`", sys_os) + format!("CPU: `{}`", format!("{}", cpu[0].brand())), + format!("OS: `{}`", get_os_info()) ]; ctx.reply(concat_message(stat_msg)).await?;