From e4ef3d0c66a2c3984877d51c752c6fdba63bd9ec Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 1 May 2024 00:01:10 +0100 Subject: [PATCH] Better ping command --- src/commands/general/ping.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/commands/general/ping.rs b/src/commands/general/ping.rs index 09544ee..f4bd501 100644 --- a/src/commands/general/ping.rs +++ b/src/commands/general/ping.rs @@ -1,11 +1,34 @@ +use std::time::{Duration, Instant}; + use crate::{Context, Error}; use log::trace; +use poise::CreateReply; + +const PING_PREFIX: &str = "<:catstareback:1078622789885497414> Pong!"; /// Replies with pong! #[poise::command(slash_command, prefix_command, track_edits = true, ephemeral)] pub async fn ping(ctx: Context<'_>) -> Result<(), Error> { trace!("Running ping command!"); - ctx.say("Pong!").await?; + + let start = Instant::now(); + let response = ctx.say(PING_PREFIX).await?; + + let rtt = start.elapsed().as_millis(); + let gateway_ping = match ctx.ping().await { + Duration::ZERO => "Undetermined".to_string(), + duration => format!("{}ms", duration.as_millis()), + }; + + response + .edit( + ctx, + CreateReply::default().content(format!( + "{PING_PREFIX}\n\nRTT: {rtt}ms\nGateway: {gateway_ping}", + )), + ) + .await?; + Ok(()) }