clock and timezone cmd
This commit is contained in:
parent
2cde012c15
commit
e88e4cc4f1
@ -10,7 +10,18 @@ use serenity::{
|
||||
framework::standard::CommandResult,
|
||||
};
|
||||
|
||||
use crate::THEME_COLOR;
|
||||
use chrono_tz::Tz;
|
||||
|
||||
use chrono::{
|
||||
DateTime,
|
||||
offset::Utc,
|
||||
};
|
||||
|
||||
use crate::{
|
||||
THEME_COLOR,
|
||||
SQLPool,
|
||||
models::UserData,
|
||||
};
|
||||
|
||||
|
||||
#[command]
|
||||
@ -52,3 +63,19 @@ async fn donate(ctx: &Context, msg: &Message, _args: String) -> CommandResult {
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[command]
|
||||
async fn clock(ctx: &Context, msg: &Message, args: String) -> CommandResult {
|
||||
let pool = ctx.data.read().await
|
||||
.get::<SQLPool>().cloned().expect("Could not get SQLPool from data");
|
||||
|
||||
let user_data = UserData::from_id(&msg.author, &ctx, pool).await.unwrap();
|
||||
|
||||
let tz: Tz = user_data.timezone.parse().unwrap();
|
||||
|
||||
let now = Utc::now().with_timezone(&tz);
|
||||
|
||||
let _ = msg.channel_id.say(&ctx, format!("Current time: **{}**", now.format("%H:%M:%S"))).await;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
@ -12,6 +12,8 @@ use serenity::{
|
||||
|
||||
use regex::Regex;
|
||||
|
||||
use chrono_tz::Tz;
|
||||
|
||||
use crate::{
|
||||
models::{
|
||||
ChannelData,
|
||||
@ -60,7 +62,33 @@ async fn timezone(ctx: &Context, msg: &Message, args: String) -> CommandResult {
|
||||
let pool = ctx.data.read().await
|
||||
.get::<SQLPool>().cloned().expect("Could not get SQLPool from data");
|
||||
|
||||
let user_data = UserData::from_id(&msg.author, &ctx, pool.clone()).await.unwrap();
|
||||
match args.parse::<Tz>() {
|
||||
Ok(_) => {
|
||||
let mut user_data = UserData::from_id(&msg.author, &ctx, pool.clone()).await.unwrap();
|
||||
|
||||
user_data.timezone = args;
|
||||
|
||||
user_data.commit_changes(pool).await;
|
||||
|
||||
let _ = msg.channel_id.say(&ctx, "Timezone changed").await;
|
||||
}
|
||||
|
||||
Err(_) => {
|
||||
let _ = msg.channel_id.say(&ctx, "Unrecognised timezone").await;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[command]
|
||||
async fn language(ctx: &Context, msg: &Message, args: String) -> CommandResult {
|
||||
let pool = ctx.data.read().await
|
||||
.get::<SQLPool>().cloned().expect("Could not get SQLPool from data");
|
||||
|
||||
let mut user_data = UserData::from_id(&msg.author, &ctx, pool.clone()).await.unwrap();
|
||||
|
||||
user_data.commit_changes(pool).await;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
@ -60,8 +60,10 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||
.add_command("help", &info_cmds::HELP_COMMAND)
|
||||
.add_command("info", &info_cmds::INFO_COMMAND)
|
||||
.add_command("donate", &info_cmds::DONATE_COMMAND)
|
||||
.add_command("clock", &info_cmds::CLOCK_COMMAND)
|
||||
.add_command("todo", &todo_cmds::TODO_PARSE_COMMAND)
|
||||
.add_command("blacklist", &moderation_cmds::BLACKLIST_COMMAND)
|
||||
.add_command("timezone", &moderation_cmds::TIMEZONE_COMMAND)
|
||||
.build();
|
||||
|
||||
let mut client = Client::new(&env::var("DISCORD_TOKEN").expect("Missing DISCORD_TOKEN from environment"))
|
||||
|
Loading…
Reference in New Issue
Block a user