Fix scenario where guild exists in file, but with no submissionChannel set

late-submissions
Elnu 3 years ago
parent c3baa99068
commit 095062f17d

@ -125,13 +125,14 @@ async fn submit(ctx: &Context, msg: &Message) -> CommandResult {
// there are large duplicated sections that need to be merged somehow. // there are large duplicated sections that need to be merged somehow.
let guild_data = get_guild_data(); let guild_data = get_guild_data();
let guild = msg.guild_id.unwrap().as_u64().to_string(); let guild = msg.guild_id.unwrap().as_u64().to_string();
if !guild_data.contains_key(&guild) { let current_guild_data = &guild_data[&guild].as_object().unwrap();
if !guild_data.contains_key(&guild) || !current_guild_data.contains_key("submissionChannel") {
msg.reply(&ctx.http, "Submissions aren't enabled for this server yet.").await?; msg.reply(&ctx.http, "Submissions aren't enabled for this server yet.").await?;
return Ok(()); return Ok(());
} }
let submission_channel = &guild_data[&guild].as_object().unwrap()["submissionChannel"].as_str().unwrap(); let submission_channel = current_guild_data["submissionChannel"].as_str().unwrap();
if submission_channel != &msg.channel_id.as_u64().to_string() { if submission_channel != &msg.channel_id.as_u64().to_string() {
msg.reply(&ctx.http, format!("Sorry, submissions aren't permitted here. Please go to <#{}>. Thanks!", submission_channel)).await?; msg.reply(&ctx.http, format!("Sorry, submissions aren't permitted here. Please go to <#{}>. Thanks!", guild)).await?;
return Ok(()); return Ok(());
} }
if msg.attachments.len() == 0 { if msg.attachments.len() == 0 {

@ -77,7 +77,13 @@ async fn setSubmissionChannel(ctx: &Context, msg: &Message) -> CommandResult {
let guild = msg.guild_id.unwrap().as_u64().to_string(); let guild = msg.guild_id.unwrap().as_u64().to_string();
let channel = msg.channel_id.as_u64().to_string(); let channel = msg.channel_id.as_u64().to_string();
if guild_data.contains_key(&guild) { if guild_data.contains_key(&guild) {
guild_data[&guild].as_object_mut().unwrap()["submissionChannel"] = channel.into(); let mut current_guild_data = guild_data[&guild].as_object().unwrap().clone();
if current_guild_data.contains_key("submissionChannel") {
current_guild_data["submissionChannel"] = channel.into();
} else {
current_guild_data.insert(String::from("submissionChannel"), channel.into());
}
guild_data[&guild] = current_guild_data.into();
} else { } else {
guild_data.insert(guild, json!({ guild_data.insert(guild, json!({
"submissionChannel": channel "submissionChannel": channel

Loading…
Cancel
Save