From 6a0a99c1930491ba63541f895c0751302b4d75d2 Mon Sep 17 00:00:00 2001 From: ElnuDev Date: Tue, 13 Jun 2023 18:45:08 -0700 Subject: [PATCH 1/3] Use trait for username display, fix suggestion username --- src/commands/challenge.rs | 9 ++------- src/utils.rs | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/commands/challenge.rs b/src/commands/challenge.rs index 6abf0dc..36b52b2 100644 --- a/src/commands/challenge.rs +++ b/src/commands/challenge.rs @@ -149,11 +149,7 @@ pub async fn submit(ctx: Context<'_>, submission: serenity::Attachment) -> Resul break; } } - let username = if author.discriminator == 0 { // new usernames - author.name.clone() - } else { - format!("{}#{}", author.name, author.discriminator) - }; + let username = author.username(); let username = &username; if !existing_submitter { let mut submitter_data = Map::new(); @@ -470,7 +466,6 @@ pub async fn suggest( am }); m.embed(|e| { - let username = format!("{}#{}", author.name, author.discriminator); e.title("New suggestion"); e.description(if let Context::Prefix(ctx) = ctx { format!("{suggestion}\n\n[See original message]({})", ctx.msg.link(),) @@ -480,7 +475,7 @@ pub async fn suggest( let mut embed_author = serenity::builder::CreateEmbedAuthor::default(); embed_author .icon_url(get_avatar(author)) - .name(username) + .name(author.username()) .url(format!("https://discord.com/users/{}", author.id)); e.set_author(embed_author); if let Some(accent_color) = accent_color { diff --git a/src/utils.rs b/src/utils.rs index cc74f61..cd272e6 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -13,6 +13,19 @@ use std::io::Read; use std::io::Write; use std::process::Command; +pub trait User { + fn username(&self) -> String; +} + +impl User for serenity::User { + fn username(&self) -> String { + if self.discriminator == 0 { + return self.name.clone(); + } + format!("{}#{}", self.name, self.discriminator) + } +} + pub fn get_challenge_number() -> i32 { let challenge_dir = format!("{}/content/challenges", env::var("HUGO").unwrap()); let paths = fs::read_dir(challenge_dir).unwrap(); @@ -386,6 +399,7 @@ pub async fn leaderboard(ctx: &Context<'_>) -> Result<(), Error> { let discriminator = user.discriminator; leaderboard_html.push_str(&format!("{place} {name}")); // New usernames have #0000 discriminator + // Can't use User trait user.display_name() because of muted span if discriminator != 0 { leaderboard_html.push_str(&format!("#{:0>4}", discriminator)); } From ac7909da8d47678147517ffc4394f7115a2a8e0d Mon Sep 17 00:00:00 2001 From: ElnuDev Date: Tue, 13 Jun 2023 18:49:40 -0700 Subject: [PATCH 2/3] Remove discriminator from new images to existing submissions --- src/commands/challenge.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/commands/challenge.rs b/src/commands/challenge.rs index 36b52b2..b6a1a10 100644 --- a/src/commands/challenge.rs +++ b/src/commands/challenge.rs @@ -125,10 +125,9 @@ pub async fn submit(ctx: Context<'_>, submission: serenity::Attachment) -> Resul } requires_rebuild = true; let file_name = format!( - "{}-{}-{}-{}{}.{}", + "{}-{}-{}{}.{}", i + 1, slugify(&author.name), - author.discriminator, timestamp, if i == 0 { "".to_owned() From 74b0e6141a880740f43ee7adda23bdedbf6a395a Mon Sep 17 00:00:00 2001 From: ElnuDev Date: Tue, 13 Jun 2023 18:49:47 -0700 Subject: [PATCH 3/3] cargo fmt --- src/commands/challenge.rs | 5 +---- src/utils.rs | 10 ++++++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/commands/challenge.rs b/src/commands/challenge.rs index b6a1a10..61f8151 100644 --- a/src/commands/challenge.rs +++ b/src/commands/challenge.rs @@ -152,10 +152,7 @@ pub async fn submit(ctx: Context<'_>, submission: serenity::Attachment) -> Resul let username = &username; if !existing_submitter { let mut submitter_data = Map::new(); - submitter_data.insert( - String::from("username"), - username.clone().into(), - ); + submitter_data.insert(String::from("username"), username.clone().into()); let mut images: Vec = Vec::new(); for (i, attachment) in attachments.iter().enumerate() { let extension; diff --git a/src/utils.rs b/src/utils.rs index cd272e6..6009a9a 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -388,7 +388,10 @@ pub async fn leaderboard(ctx: &Context<'_>) -> Result<(), Error> { let mut top_submitters: Vec<(&String, &u32)> = submission_counts.iter().collect(); top_submitters.sort_by(|a, b| b.1.cmp(a.1)); let mut leaderboard_html = String::from(""); - for (i, (id, count)) in top_submitters[0..std::cmp::min(top_submitters.len(), LENGTH)].iter().enumerate() { + for (i, (id, count)) in top_submitters[0..std::cmp::min(top_submitters.len(), LENGTH)] + .iter() + .enumerate() + { let place = i + 1; let user = serenity::UserId(id.parse::().unwrap()) .to_user(&ctx.serenity_context().http) @@ -401,7 +404,10 @@ pub async fn leaderboard(ctx: &Context<'_>) -> Result<(), Error> { // New usernames have #0000 discriminator // Can't use User trait user.display_name() because of muted span if discriminator != 0 { - leaderboard_html.push_str(&format!("#{:0>4}", discriminator)); + leaderboard_html.push_str(&format!( + "#{:0>4}", + discriminator + )); } leaderboard_html.push_str(&format!("")); }
{count}