Skip to content

Commit a21b34d

Browse files
committed
feat(commands): add complete ping command
1 parent a88d03e commit a21b34d

5 files changed

Lines changed: 39 additions & 8 deletions

File tree

rustmail/src/bot.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,6 @@ pub async fn run_bot(
184184

185185
{
186186
let mut data = client.data.write().await;
187-
188187
data.insert::<ShardManagerKey>(client.shard_manager.clone());
189188
}
190189

rustmail/src/commands/ping/slash_command/ping.rs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1+
use std::collections::HashMap;
12
use crate::bot::ShardManagerKey;
23
use crate::commands::{BoxFuture, CommunityRegistrable, RegistrableCommand};
34
use crate::config::Config;
4-
use crate::errors::ModmailResult;
5+
use crate::errors::{DiscordError, ModmailError, ModmailResult};
56
use crate::handlers::InteractionHandler;
67
use crate::i18n::get_translated_message;
78
use serenity::FutureExt;
89
use serenity::all::{CommandInteraction, Context, CreateCommand, ResolvedOption};
910
use std::sync::Arc;
11+
use std::time::Duration;
12+
use crate::utils::{defer_response, MessageBuilder};
1013

1114
pub struct PingCommand;
1215

@@ -56,6 +59,8 @@ impl RegistrableCommand for PingCommand {
5659
let config = config.clone();
5760

5861
Box::pin(async move {
62+
defer_response(&ctx, &command).await?;
63+
5964
let shard_manager = ctx
6065
.data
6166
.read()
@@ -69,7 +74,16 @@ impl RegistrableCommand for PingCommand {
6974
runners.get(&ctx.shard_id).and_then(|runner| runner.latency)
7075
};
7176

72-
println!("Latency for shard {}: {:?}", ctx.shard_id, latency);
77+
let mut params = HashMap::new();
78+
params.insert("latency".to_string(), format!("{:?}", latency.unwrap_or(Duration::default()).as_millis()));
79+
80+
let response = MessageBuilder::system_message(&ctx, &config)
81+
.translated_content("slash_command.ping_command", Some(&params), None, None).await
82+
.to_channel(command.channel_id)
83+
.build_interaction_message_followup().await;
84+
85+
command.create_followup(&ctx.http, response).await
86+
.map_err(|e| ModmailError::Discord(DiscordError::ApiError(e.to_string())))?;
7387

7488
Ok(())
7589
})

rustmail/src/commands/ping/text_command/ping.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
use std::collections::HashMap;
12
use crate::bot::ShardManagerKey;
23
use crate::prelude::config::*;
34
use crate::prelude::errors::*;
45
use crate::prelude::handlers::*;
56
use serenity::all::{Context, Message};
67
use std::sync::Arc;
8+
use std::time::Duration;
9+
use crate::utils::MessageBuilder;
710

811
pub async fn ping(
912
ctx: Context,
@@ -24,7 +27,14 @@ pub async fn ping(
2427
runners.get(&ctx.shard_id).and_then(|runner| runner.latency)
2528
};
2629

27-
println!("Latency for shard {}: {:?}", ctx.shard_id, latency);
30+
let mut params = HashMap::new();
31+
params.insert("latency".to_string(), format!("{:?}", latency.unwrap_or(Duration::default()).as_millis()));
32+
33+
let _ = MessageBuilder::system_message(&ctx, &config)
34+
.translated_content("slash_command.ping_command", Some(&params), None, None).await
35+
.to_channel(msg.channel_id)
36+
.send(true).await
37+
.map_err(|e| ModmailError::Discord(DiscordError::ApiError(e.to_string())))?;
2838

2939
Ok(())
3040
}

rustmail/src/i18n/language/en.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -885,7 +885,7 @@ pub fn load_english_messages(dict: &mut ErrorDictionary) {
885885
);
886886
dict.messages.insert(
887887
"help.ping".to_string(),
888-
DictionaryMessage::new("Show the actual latency of the Discord API."),
888+
DictionaryMessage::new("Show the actual latency of the bot."),
889889
);
890890
dict.messages.insert(
891891
"add_reminder.helper".to_string(),
@@ -934,6 +934,10 @@ pub fn load_english_messages(dict: &mut ErrorDictionary) {
934934
);
935935
dict.messages.insert(
936936
"slash_command.ping_command_desc".to_string(),
937-
DictionaryMessage::new("Check the discord API latency"),
937+
DictionaryMessage::new("Check the discord bot latency."),
938+
);
939+
dict.messages.insert(
940+
"slash_command.ping_command".to_string(),
941+
DictionaryMessage::new("The Discord bot latency is **{latency}** ms."),
938942
);
939943
}

rustmail/src/i18n/language/fr.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -906,7 +906,7 @@ pub fn load_french_messages(dict: &mut ErrorDictionary) {
906906
);
907907
dict.messages.insert(
908908
"help.ping".to_string(),
909-
DictionaryMessage::new("Permet d'afficher la latence actuelle de l'API Discord."),
909+
DictionaryMessage::new("Permet d'afficher la latence actuelle du bot."),
910910
);
911911
dict.messages.insert(
912912
"add_reminder.helper".to_string(),
@@ -946,6 +946,10 @@ pub fn load_french_messages(dict: &mut ErrorDictionary) {
946946
);
947947
dict.messages.insert(
948948
"slash_command.ping_command_desc".to_string(),
949-
DictionaryMessage::new("Afficher la latence actuelle de l'API Discord"),
949+
DictionaryMessage::new("Afficher la latence actuelle du bot."),
950+
);
951+
dict.messages.insert(
952+
"slash_command.ping_command".to_string(),
953+
DictionaryMessage::new("La latence actuelle du bot est de **{latency}** ms."),
950954
);
951955
}

0 commit comments

Comments
 (0)