meridian command for switching from 12/24 format

This commit is contained in:
2020-12-16 16:53:13 +00:00
parent 2bcaf0718f
commit 6311099cc6
8 changed files with 127 additions and 32 deletions

View File

@ -239,7 +239,7 @@ async fn dashboard(ctx: &Context, msg: &Message, _args: String) {
}
#[command]
async fn clock(ctx: &Context, msg: &Message, args: String) {
async fn clock(ctx: &Context, msg: &Message, _args: String) {
let data = ctx.data.read().await;
let pool = data
@ -251,26 +251,17 @@ async fn clock(ctx: &Context, msg: &Message, args: String) {
let language = UserData::language_of(&msg.author, &pool).await;
let timezone = UserData::timezone_of(&msg.author, &pool).await;
let meridian = UserData::meridian_of(&msg.author, &pool).await;
let now = Utc::now().with_timezone(&timezone);
let clock_display = lm.get(&language, "clock/time");
if args == "12" {
let _ = msg
.channel_id
.say(
&ctx,
clock_display.replacen("{}", &now.format("%I:%M:%S %p").to_string(), 1),
)
.await;
} else {
let _ = msg
.channel_id
.say(
&ctx,
clock_display.replacen("{}", &now.format("%H:%M:%S").to_string(), 1),
)
.await;
}
let _ = msg
.channel_id
.say(
&ctx,
clock_display.replacen("{}", &now.format(meridian.fmt_str()).to_string(), 1),
)
.await;
}

View File

@ -225,6 +225,68 @@ async fn timezone(ctx: &Context, msg: &Message, args: String) {
}
}
#[command]
async fn change_meridian(ctx: &Context, msg: &Message, args: String) {
let pool;
let lm;
{
let data = ctx.data.read().await;
pool = data
.get::<SQLPool>()
.cloned()
.expect("Could not get SQLPool from data");
lm = data.get::<LanguageManager>().cloned().unwrap();
}
let mut user_data = UserData::from_user(&msg.author, &ctx, &pool).await.unwrap();
if &args == "12" {
user_data.meridian_time = true;
user_data.commit_changes(&pool).await;
let _ = msg
.channel_id
.send_message(&ctx, |m| {
m.embed(|e| {
e.title(lm.get(&user_data.language, "meridian/title"))
.color(*THEME_COLOR)
.description(lm.get(&user_data.language, "meridian/12"))
})
})
.await;
} else if &args == "24" {
user_data.meridian_time = false;
user_data.commit_changes(&pool).await;
let _ = msg
.channel_id
.send_message(&ctx, |m| {
m.embed(|e| {
e.title(lm.get(&user_data.language, "meridian/title"))
.color(*THEME_COLOR)
.description(lm.get(&user_data.language, "meridian/24"))
})
})
.await;
} else {
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"))
})
})
.await;
}
}
#[command]
async fn language(ctx: &Context, msg: &Message, args: String) {
let pool;

View File

@ -59,11 +59,7 @@ fn shorthand_displacement(seconds: u64) -> String {
let time_repr = format!("{:02}:{:02}:{:02}", hours, minutes, seconds);
if days > 0 {
format!("{} days, {}", days, time_repr)
} else {
time_repr
}
format!("{} days, {}", days, time_repr)
}
fn longhand_displacement(seconds: u64) -> String {
@ -129,6 +125,7 @@ async fn pause(ctx: &Context, msg: &Message, args: String) {
let language = UserData::language_of(&msg.author, &pool).await;
let timezone = UserData::timezone_of(&msg.author, &pool).await;
let meridian = UserData::meridian_of(&msg.author, &pool).await;
let mut channel = ChannelData::from_channel(msg.channel(&ctx).await.unwrap(), &pool)
.await
@ -168,7 +165,7 @@ async fn pause(ctx: &Context, msg: &Message, args: String) {
"{}",
&timezone
.timestamp(timestamp, 0)
.format("%Y-%m-%d %H:%M:%S")
.format(meridian.fmt_str())
.to_string(),
);
@ -430,6 +427,7 @@ async fn look(ctx: &Context, msg: &Message, args: String) {
let language = UserData::language_of(&msg.author, &pool).await;
let timezone = UserData::timezone_of(&msg.author, &pool).await;
let meridian = UserData::meridian_of(&msg.author, &pool).await;
let flags = LookFlags::from_string(&args);
@ -524,7 +522,7 @@ LIMIT
let time_display = match flags.time_display {
TimeDisplayType::Absolute => timezone
.timestamp(reminder.time as i64, 0)
.format("%Y-%m-%d %H:%M:%S")
.format(meridian.fmt_str())
.to_string(),
TimeDisplayType::Relative => {
@ -641,7 +639,7 @@ WHERE
count + 1,
reminder.display_content(),
reminder.channel,
time.format("%Y-%m-%d %H:%M:%S")
time.format(user_data.meridian().fmt_str())
)
});