Add birthdays and bring back task handling
This commit is contained in:
3 files changed
+76
-89
No files matched your search
+24
-29
@@ -1,4 +1,5 @@
|
||||
use crate::config::GlobalData;
|
||||
use std::sync::Arc;
|
||||
//use crate::discord::shop::restock_shop;
|
||||
use crate::discord::Context;
|
||||
use crate::error::Error;
|
||||
@@ -80,11 +81,11 @@ impl Task {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn create_reoccurring_tasks(ctx: Context<'_>) -> Result<(), Error> {
|
||||
Task::add_task(&ctx.data().db, TaskType::CheckBirthdays, Utc::now())?;
|
||||
Task::add_task(&ctx.data().db, TaskType::RestockShop, Utc::now())?;
|
||||
pub async fn create_reoccurring_tasks(data: &Arc<GlobalData>) -> Result<(), Error> {
|
||||
Task::add_task(&data.db, TaskType::CheckBirthdays, Utc::now())?;
|
||||
Task::add_task(&data.db, TaskType::RestockShop, Utc::now())?;
|
||||
Task::add_task(
|
||||
&ctx.data().db,
|
||||
&data.db,
|
||||
TaskType::HandleReload,
|
||||
Utc::now() + Duration::hours(1),
|
||||
)?;
|
||||
@@ -92,9 +93,11 @@ impl Task {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn run_tasks(ctx: Context<'_>) -> Result<(), Error> {
|
||||
let active_tasks: Vec<Task> = ctx
|
||||
.data()
|
||||
pub async fn run_tasks(
|
||||
ctx: &poise::serenity_prelude::Context,
|
||||
data: &Arc<GlobalData>,
|
||||
) -> Result<(), Error> {
|
||||
let active_tasks: Vec<Task> = data
|
||||
.db
|
||||
.filter(|_, task: &Task| task.time < Utc::now())?
|
||||
.collect();
|
||||
@@ -102,43 +105,35 @@ impl Task {
|
||||
for task in active_tasks {
|
||||
match task.task_type {
|
||||
TaskType::RemoveRole { user_id, role_id } => {
|
||||
let user = ctx.data().cfg.guild_id.member(ctx.http(), user_id).await?;
|
||||
let user = data.cfg.guild_id.member(&ctx.http, user_id).await?;
|
||||
|
||||
info!("Removing role {} from {}", role_id, user.display_name());
|
||||
user.remove_role(ctx.http(), role_id).await?;
|
||||
user.remove_role(&ctx.http, role_id).await?;
|
||||
}
|
||||
TaskType::CheckBirthdays => {
|
||||
info!("Checking Birthdays");
|
||||
let todays_birthdays = BirthdayEntry::todays_birthdays(
|
||||
&ctx.data().db,
|
||||
chrono::Utc::now().date_naive(),
|
||||
)?;
|
||||
let todays_birthdays =
|
||||
BirthdayEntry::todays_birthdays(&data.db, chrono::Utc::now().date_naive())?;
|
||||
|
||||
for birth in todays_birthdays {
|
||||
if let Ok(user) = ctx
|
||||
.data()
|
||||
.cfg
|
||||
.guild_id
|
||||
.member(ctx.http(), birth.discord_id)
|
||||
.await
|
||||
if let Ok(user) =
|
||||
data.cfg.guild_id.member(&ctx.http, birth.discord_id).await
|
||||
{
|
||||
ctx.data()
|
||||
.cfg
|
||||
data.cfg
|
||||
.announcement_channel
|
||||
.say(ctx.http(), format!("Happy birthday {}!", user.mention()))
|
||||
.say(&ctx.http, format!("Happy birthday {}!", user.mention()))
|
||||
.await?;
|
||||
|
||||
let compliment = RandomResponseTemplate::get_random_response(
|
||||
&ctx.data().db,
|
||||
&data.db,
|
||||
ResponseType::Compliment,
|
||||
user.display_name(),
|
||||
)?
|
||||
.unwrap_or("I couldn't think of anything funny tbh...".to_string());
|
||||
|
||||
ctx.data()
|
||||
.cfg
|
||||
data.cfg
|
||||
.announcement_channel
|
||||
.say(ctx.http(), compliment)
|
||||
.say(&ctx.http, compliment)
|
||||
.await?;
|
||||
}
|
||||
}
|
||||
@@ -155,7 +150,7 @@ impl Task {
|
||||
.unwrap();
|
||||
|
||||
Task::add_task(
|
||||
&ctx.data().db,
|
||||
&data.db,
|
||||
TaskType::CheckBirthdays,
|
||||
next_check.with_timezone(&Utc),
|
||||
)?;
|
||||
@@ -173,14 +168,14 @@ impl Task {
|
||||
// }
|
||||
|
||||
Task::add_task(
|
||||
&ctx.data().db,
|
||||
&data.db,
|
||||
TaskType::RestockShop,
|
||||
Utc::now() + Duration::hours(1),
|
||||
)?;
|
||||
}
|
||||
}
|
||||
|
||||
let _ = ctx.data().db.remove::<Task>(task.id().unwrap()).is_ok();
|
||||
let _ = data.db.remove::<Task>(task.id().unwrap()).is_ok();
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
||||
Reference in new issue
Block a user