diff --git a/src/commands/challenge.rs b/src/commands/challenge.rs index 61f8151..6abf0dc 100644 --- a/src/commands/challenge.rs +++ b/src/commands/challenge.rs @@ -125,9 +125,10 @@ 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() @@ -148,11 +149,18 @@ pub async fn submit(ctx: Context<'_>, submission: serenity::Attachment) -> Resul break; } } - let username = author.username(); + let username = if author.discriminator == 0 { // new usernames + author.name.clone() + } else { + format!("{}#{}", author.name, author.discriminator) + }; 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; @@ -462,6 +470,7 @@ 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(),) @@ -471,7 +480,7 @@ pub async fn suggest( let mut embed_author = serenity::builder::CreateEmbedAuthor::default(); embed_author .icon_url(get_avatar(author)) - .name(author.username()) + .name(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 6009a9a..cc74f61 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -13,19 +13,6 @@ 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(); @@ -388,10 +375,7 @@ 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) @@ -402,12 +386,8 @@ 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 - )); + leaderboard_html.push_str(&format!("#{:0>4}", discriminator)); } leaderboard_html.push_str(&format!("{count}