Add birthdays and bring back task handling

This commit is contained in:
joeyahines committed 2025-03-16 15:56:26 -06:00
1 parent da59ae0bc9
commit 699a02c642
3 files changed
+76 -89

No files matched your search

+24 -29
View File
@@ -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(())