diff --git a/src/commands/challenge.rs b/src/commands/challenge.rs index 84c90d0..945b075 100644 --- a/src/commands/challenge.rs +++ b/src/commands/challenge.rs @@ -149,17 +149,11 @@ 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 = &username; if !existing_submitter { let mut submitter_data = Map::new(); submitter_data.insert( String::from("username"), - username.clone().into(), + format!("{}#{}", author.name, author.discriminator).into(), ); let mut images: Vec = Vec::new(); for (i, attachment) in attachments.iter().enumerate() { @@ -179,9 +173,10 @@ pub async fn submit(ctx: Context<'_>, submission: serenity::Attachment) -> Resul } requires_rebuild = true; let file_name = format!( - "{}-{}-{}{}.{}", + "{}-{}-{}-{}{}.{}", submission_data.len() + 1, slugify(&author.name), + author.discriminator, timestamp, if i == 0 { "".to_owned() @@ -261,6 +256,7 @@ pub async fn submit(ctx: Context<'_>, submission: serenity::Attachment) -> Resul channel .send_message(&ctx.serenity_context().http, |m| { m.embed(|e| { + let username = format!("{}#{}", author.name, author.discriminator); let domain = get_domain(); let n = get_challenge_number(); let mut description = format!( diff --git a/src/utils.rs b/src/utils.rs index cc74f61..bcae7f5 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -67,10 +67,6 @@ pub fn get_submission_data(challenge: i32) -> Vec { json } Err(ref e) if e.kind() == std::io::ErrorKind::NotFound => { - // Create parent directory if not exists - if let Some(parent_dir) = std::path::Path::new(&submission_data_path).parent() { - fs::create_dir_all(parent_dir).unwrap(); - } let mut file = File::create(&submission_data_path).unwrap(); file.write_all(b"[]").unwrap(); file.flush().unwrap(); @@ -375,7 +371,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..LENGTH].iter().enumerate() { let place = i + 1; let user = serenity::UserId(id.parse::().unwrap()) .to_user(&ctx.serenity_context().http) @@ -384,12 +380,7 @@ pub async fn leaderboard(ctx: &Context<'_>) -> Result<(), Error> { let profile = format!("https://discord.com/users/{id}"); let name = &user.name; let discriminator = user.discriminator; - leaderboard_html.push_str(&format!("")); + leaderboard_html.push_str(&format!("", discriminator)); } leaderboard_html.push_str("
{place} {name}")); - // New usernames have #0000 discriminator - if discriminator != 0 { - leaderboard_html.push_str(&format!("#{:0>4}", discriminator)); - } - leaderboard_html.push_str(&format!("{count}
{place} {name}#{:0>4}{count}
"); let mut file = std::fs::OpenOptions::new()