fixed a lot of message formatting that had been ignored

This commit is contained in:
jude 2020-10-11 01:42:19 +01:00
parent 1afa04d61c
commit 1f41343e2e
6 changed files with 57 additions and 12 deletions

11
Cargo.lock generated
View File

@ -1,5 +1,15 @@
# This file is automatically @generated by Cargo. # This file is automatically @generated by Cargo.
# It is not intended for manual editing. # It is not intended for manual editing.
[[package]]
name = "Inflector"
version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
dependencies = [
"lazy_static",
"regex",
]
[[package]] [[package]]
name = "adler" name = "adler"
version = "0.2.3" version = "0.2.3"
@ -1121,6 +1131,7 @@ dependencies = [
name = "reminder_rs" name = "reminder_rs"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"Inflector",
"async-trait", "async-trait",
"chrono", "chrono",
"chrono-tz", "chrono-tz",

View File

@ -22,6 +22,7 @@ custom_error = "1.7.1"
serde = "1.0.115" serde = "1.0.115"
serde_json = "1.0.57" serde_json = "1.0.57"
rand = "0.7.3" rand = "0.7.3"
Inflector = "0.11.4"
[dependencies.regex_command_attr] [dependencies.regex_command_attr]
path = "./regex_command_attr" path = "./regex_command_attr"

View File

@ -11,12 +11,14 @@ use serenity::{
}; };
use chrono::offset::Utc; use chrono::offset::Utc;
use chrono_tz::Tz;
use crate::{ use crate::{
models::{
UserData,
GuildData,
},
THEME_COLOR, THEME_COLOR,
SQLPool, SQLPool,
models::UserData,
}; };
use std::time::{ use std::time::{
@ -65,7 +67,11 @@ async fn info(ctx: &Context, msg: &Message, _args: String) -> CommandResult {
.get::<SQLPool>().cloned().expect("Could not get SQLPool from data"); .get::<SQLPool>().cloned().expect("Could not get SQLPool from data");
let user_data = UserData::from_user(&msg.author, &ctx, &pool).await.unwrap(); let user_data = UserData::from_user(&msg.author, &ctx, &pool).await.unwrap();
let desc = user_data.response(&pool, "info").await; let guild_data = GuildData::from_guild(msg.guild(&ctx).await.unwrap(), &pool).await.unwrap();
let desc = user_data.response(&pool, "info").await
.replacen("{user}", &ctx.cache.current_user().await.name, 1)
.replacen("{prefix}", &guild_data.prefix, 1);
msg.channel_id.send_message(ctx, |m| m msg.channel_id.send_message(ctx, |m| m
.embed(move |e| e .embed(move |e| e
@ -117,9 +123,7 @@ async fn clock(ctx: &Context, msg: &Message, args: String) -> CommandResult {
let user_data = UserData::from_user(&msg.author, &ctx, &pool).await.unwrap(); let user_data = UserData::from_user(&msg.author, &ctx, &pool).await.unwrap();
let tz: Tz = user_data.timezone.parse().unwrap(); let now = Utc::now().with_timezone(&user_data.timezone());
let now = Utc::now().with_timezone(&tz);
if args == "12" { if args == "12" {
let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "clock/time").await.replacen("{}", &now.format("%I:%M:%S %p").to_string(), 1)).await; let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "clock/time").await.replacen("{}", &now.format("%I:%M:%S %p").to_string(), 1)).await;

View File

@ -18,6 +18,10 @@ use regex::Regex;
use chrono_tz::Tz; use chrono_tz::Tz;
use chrono::offset::Utc;
use inflector::Inflector;
use crate::{ use crate::{
models::{ models::{
ChannelData, ChannelData,
@ -78,15 +82,21 @@ async fn timezone(ctx: &Context, msg: &Message, args: String) -> CommandResult {
.get::<SQLPool>().cloned().expect("Could not get SQLPool from data"); .get::<SQLPool>().cloned().expect("Could not get SQLPool from data");
let mut user_data = UserData::from_user(&msg.author, &ctx, &pool).await.unwrap(); let mut user_data = UserData::from_user(&msg.author, &ctx, &pool).await.unwrap();
let guild_data = GuildData::from_guild(msg.guild(&ctx).await.unwrap(), &pool).await.unwrap();
if !args.is_empty() { if !args.is_empty() {
match args.parse::<Tz>() { match args.parse::<Tz>() {
Ok(_) => { Ok(_) => {
user_data.timezone = args; user_data.timezone = args;
user_data.commit_changes(&pool).await; user_data.commit_changes(&pool).await;
let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "timezone/set_p").await).await; let now = Utc::now().with_timezone(&user_data.timezone());
let content = user_data.response(&pool, "timezone/set_p").await
.replacen("{timezone}", &user_data.timezone, 1)
.replacen("{time}", &now.format("%H:%M").to_string(), 1);
let _ = msg.channel_id.say(&ctx, content).await;
} }
Err(_) => { Err(_) => {
@ -95,7 +105,11 @@ async fn timezone(ctx: &Context, msg: &Message, args: String) -> CommandResult {
} }
} }
else { else {
let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "timezone/no_argument").await).await; let content = user_data.response(&pool, "timezone/no_argument").await
.replace("{prefix}", &guild_data.prefix)
.replacen("{timezone}", &user_data.timezone, 1);
let _ = msg.channel_id.say(&ctx, content).await;
} }
Ok(()) Ok(())
@ -124,7 +138,19 @@ SELECT code FROM languages WHERE code = ? OR name = ?
}, },
Err(_) => { Err(_) => {
let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "lang/invalid").await).await; let language_codes = sqlx::query!("SELECT name, code FROM languages")
.fetch_all(&pool)
.await
.unwrap()
.iter()
.map(|language| format!("{} ({})", language.name.to_title_case(), language.code.to_uppercase()))
.collect::<Vec<String>>()
.join("\n");
let content = user_data.response(&pool, "lang/invalid").await
.replacen("{}", &language_codes, 1);
let _ = msg.channel_id.say(&ctx, content).await;
}, },
} }
@ -151,7 +177,10 @@ async fn prefix(ctx: &Context, msg: &Message, args: String) -> CommandResult {
guild_data.prefix = args; guild_data.prefix = args;
guild_data.commit_changes(&pool).await; guild_data.commit_changes(&pool).await;
let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "prefix/success").await).await; let content = user_data.response(&pool, "prefix/success").await
.replacen("{prefix}", &guild_data.prefix, 1);
let _ = msg.channel_id.say(&ctx, content).await;
} }
Ok(()) Ok(())

View File

@ -437,7 +437,6 @@ WHERE
reminder_ids.push(reminder.id); reminder_ids.push(reminder.id);
let time = user_data.timezone().timestamp(reminder.time as i64, 0); let time = user_data.timezone().timestamp(reminder.time as i64, 0);
// todo show reminder message instead of name
format!("**{}**: '{}' *<#{}>* at {}", count + 1, reminder.content, reminder.channel, time.format("%Y-%m-%D %H:%M:%S")) format!("**{}**: '{}' *<#{}>* at {}", count + 1, reminder.content, reminder.channel, time.format("%Y-%m-%D %H:%M:%S"))
}); });

View File

@ -85,6 +85,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
.add_command("help", &info_cmds::HELP_COMMAND) .add_command("help", &info_cmds::HELP_COMMAND)
.add_command("info", &info_cmds::INFO_COMMAND) .add_command("info", &info_cmds::INFO_COMMAND)
.add_command("invite", &info_cmds::INFO_COMMAND)
.add_command("donate", &info_cmds::DONATE_COMMAND) .add_command("donate", &info_cmds::DONATE_COMMAND)
.add_command("dashboard", &info_cmds::DASHBOARD_COMMAND) .add_command("dashboard", &info_cmds::DASHBOARD_COMMAND)
.add_command("clock", &info_cmds::CLOCK_COMMAND) .add_command("clock", &info_cmds::CLOCK_COMMAND)