diff --git a/src/main.rs b/src/main.rs index fd372e8..21424e9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ mod lib; use crate::lib::{text_is_leet, time_is_leet}; -use chrono::NaiveDateTime; +use chrono::{NaiveDateTime, NaiveTime, Local}; use sqlx::AnyPool; use sqlx::any::AnyPoolOptions; use teloxide::{prelude::*, RequestError, dispatching::UpdateFilterExt, utils::command::BotCommands}; @@ -61,7 +61,7 @@ async fn check_leet(username: &str, sent_time: NaiveDateTime, pool: &AnyPool) -> if let Some(latest_leet) = latest_leet { let distance = sent_time - latest_leet.2; - if distance.num_hours() < 24 { + if distance.num_hours() < 1 { return Err(LeetError::AlreadyHitLeet); } } @@ -99,7 +99,9 @@ fn message_ok() -> Result<(), MessageHandlerError> { #[command(rename = "lowercase", description = "score commands")] enum LeetCommand { #[command(description = "get scores")] - Scores + Scores, + #[command(description = "get current time info")] + Time } #[derive(Error,Debug)] @@ -171,6 +173,25 @@ async fn leet_command_handler(message: Message, cmd: LeetCommand, bot: AutoSend< let msg = format!("Leet scores:\n{}", scores_str); + bot.send_message(message.chat.id, msg).await?; + }, + LeetCommand::Time => { + let message_time = message.date + .with_timezone(&Local) + .naive_local(); + let current_time = Local::now().time(); + let leet_time = NaiveTime::from_hms(13,37,30); + let distance_to_leet = leet_time - current_time; + + let msg = format!("My current time is: {} +message was sent at: {} +leet is at: {}, in {} seconds", + current_time, + message_time, + leet_time, + distance_to_leet.num_seconds() + ); + bot.send_message(message.chat.id, msg).await?; } }