From ec04c40cc8b9dc5cb7b3ba7a82dab3fca88bb0c3 Mon Sep 17 00:00:00 2001 From: jellywx Date: Fri, 18 Dec 2020 17:41:36 +0000 Subject: [PATCH] deduplication --- src/commands/moderation_cmds.rs | 37 +++----------------- src/commands/reminder_cmds.rs | 60 +++++++-------------------------- src/commands/todo_cmds.rs | 28 +++++---------- 3 files changed, 24 insertions(+), 101 deletions(-) diff --git a/src/commands/moderation_cmds.rs b/src/commands/moderation_cmds.rs index 1a75012..eb31d24 100644 --- a/src/commands/moderation_cmds.rs +++ b/src/commands/moderation_cmds.rs @@ -15,6 +15,7 @@ use inflector::Inflector; use levenshtein::levenshtein; use crate::{ + command_help, consts::{REGEX_ALIAS, REGEX_CHANNEL, REGEX_COMMANDS, REGEX_ROLE, THEME_COLOR}, framework::SendIterator, get_ctx_data, @@ -240,17 +241,7 @@ async fn change_meridian(ctx: &Context, msg: &Message, args: String) { } else { let prefix = GuildData::prefix_from_id(msg.guild_id, &pool).await; - let _ = msg - .channel_id - .send_message(&ctx, |m| { - m.embed(|e| { - e.title("Meridian Help").color(*THEME_COLOR).description( - lm.get(&user_data.language, "help/meridian") - .replace("{prefix}", &prefix), - ) - }) - }) - .await; + command_help(ctx, msg, lm, &prefix, &user_data.language, "meridian").await; } } @@ -539,19 +530,9 @@ WHERE }) .await; } else { - let desc = lm.get(&language, "help/restrict"); let prefix = GuildData::prefix_from_id(msg.guild_id, &pool).await; - let _ = msg - .channel_id - .send_message(ctx, |m| { - m.embed(move |e| { - e.title("Restrict Help") - .description(desc.replace("{prefix}", &prefix)) - .color(*THEME_COLOR) - }) - }) - .await; + command_help(ctx, msg, lm, &prefix, &language, "restrict").await; } } @@ -677,17 +658,7 @@ SELECT command FROM command_aliases WHERE guild_id = (SELECT id FROM guilds WHER } } else { let prefix = GuildData::prefix_from_id(msg.guild_id, &pool).await; - let desc = lm.get(&language, "help/alias"); - let _ = msg - .channel_id - .send_message(ctx, |m| { - m.embed(move |e| { - e.title("Alias Help") - .description(desc.replace("{prefix}", &prefix)) - .color(*THEME_COLOR) - }) - }) - .await; + command_help(ctx, msg, lm, &prefix, &language, "alias").await; } } diff --git a/src/commands/reminder_cmds.rs b/src/commands/reminder_cmds.rs index 9d91e53..d477e5a 100644 --- a/src/commands/reminder_cmds.rs +++ b/src/commands/reminder_cmds.rs @@ -16,7 +16,7 @@ use serenity::{ use tokio::process::Command; use crate::{ - check_subscription_on_message, + check_subscription_on_message, command_help, consts::{ CHARACTERS, DAY, HOUR, LOCAL_TIMEZONE, MAX_TIME, MINUTE, MIN_INTERVAL, PYTHON_LOCATION, REGEX_CHANNEL, REGEX_CHANNEL_USER, REGEX_CONTENT_SUBSTITUTION, REGEX_INTERVAL_COMMAND, @@ -178,18 +178,8 @@ async fn offset(ctx: &Context, msg: &Message, args: String) { if args.is_empty() { let prefix = GuildData::prefix_from_id(msg.guild_id, &pool).await; - let desc = lm.get(&user_data.language, "help/offset"); - let _ = msg - .channel_id - .send_message(ctx, |m| { - m.embed(move |e| { - e.title("Offset Help") - .description(desc.replace("{prefix}", &prefix)) - .color(*THEME_COLOR) - }) - }) - .await; + command_help(ctx, msg, lm, &prefix, &user_data.language, "offset").await; } else { let parser = TimeParser::new(&args, user_data.timezone()); @@ -781,19 +771,9 @@ DELETE FROM timers WHERE owner = ? AND name = ? } _ => { - let desc = lm.get(&language, "help/timer"); let prefix = GuildData::prefix_from_id(msg.guild_id, &pool).await; - let _ = msg - .channel_id - .send_message(ctx, |m| { - m.embed(move |e| { - e.title("Timer Help") - .description(desc.replace("{prefix}", &prefix)) - .color(*THEME_COLOR) - }) - }) - .await; + command_help(ctx, msg, lm, &prefix, &language, "timer").await; } } } @@ -1199,33 +1179,17 @@ async fn remind_command(ctx: &Context, msg: &Message, args: String, command: Rem } None => { - let desc = lm.get( - &user_data.language, - match command { - RemindCommand::Remind => "help/remind", - - RemindCommand::Interval => "help/interval", - }, - ); - - let title = match command { - RemindCommand::Remind => "Remind Help", - - RemindCommand::Interval => "Interval Help", - }; - let prefix = GuildData::prefix_from_id(msg.guild_id, &pool).await; - let _ = msg - .channel_id - .send_message(ctx, |m| { - m.embed(move |e| { - e.title(title) - .description(desc.replace("{prefix}", &prefix)) - .color(*THEME_COLOR) - }) - }) - .await; + match command { + RemindCommand::Remind => { + command_help(ctx, msg, lm, &prefix, &user_data.language, "remind").await + } + + RemindCommand::Interval => { + command_help(ctx, msg, lm, &prefix, &user_data.language, "interval").await + } + } } } } diff --git a/src/commands/todo_cmds.rs b/src/commands/todo_cmds.rs index 5fe1aab..636edd5 100644 --- a/src/commands/todo_cmds.rs +++ b/src/commands/todo_cmds.rs @@ -12,8 +12,7 @@ use serenity::{ use std::fmt; use crate::{ - consts::THEME_COLOR, - get_ctx_data, + command_help, get_ctx_data, models::{GuildData, UserData}, }; use sqlx::MySqlPool; @@ -431,32 +430,21 @@ async fn todo_guild(ctx: &Context, msg: &Message, args: String) { async fn show_help(ctx: &Context, msg: &Message, target: Option) { let (pool, lm) = get_ctx_data(&ctx).await; - let user_data = UserData::from_user(&msg.author, &ctx, &pool).await.unwrap(); - let prefix = GuildData::prefix_from_id(msg.guild_id, &pool).await; + let language = UserData::language_of(&msg.author, &pool); + let prefix = GuildData::prefix_from_id(msg.guild_id, &pool); let command = match target { - None => "help/todo", + None => "todo", Some(t) => { if t.channel.is_some() { - "help/todoc" + "todoc" } else if t.guild.is_some() { - "help/todos" + "todos" } else { - "help/todo" + "todo" } } }; - let desc = lm.get(&user_data.language, command); - - let _ = msg - .channel_id - .send_message(ctx, |m| { - m.embed(move |e| { - e.title("Todo Help") - .description(desc.replace("{prefix}", &prefix)) - .color(*THEME_COLOR) - }) - }) - .await; + command_help(ctx, msg, lm, &prefix.await, &language.await, command).await; }