Change reminder sending behaviour to keep reminders but flag them as sent
This commit is contained in:
@ -302,6 +302,7 @@ INNER JOIN
|
||||
ON
|
||||
reminders.channel_id = channels.id
|
||||
WHERE
|
||||
reminders.`status` = 'pending' AND
|
||||
reminders.`id` IN (
|
||||
SELECT
|
||||
MIN(id)
|
||||
@ -358,7 +359,7 @@ WHERE
|
||||
&& self.interval_days == Some(0)
|
||||
&& self.interval_months == Some(0)
|
||||
{
|
||||
self.force_delete(pool).await;
|
||||
self.set_sent(pool).await;
|
||||
}
|
||||
|
||||
let now = Utc::now();
|
||||
@ -408,9 +409,9 @@ WHERE
|
||||
None::<&'static str>,
|
||||
)
|
||||
.await;
|
||||
self.force_delete(pool).await;
|
||||
self.set_failed(pool, "Failed to update 4 times and so is being deleted").await;
|
||||
} else if self.expires.map_or(false, |expires| updated_reminder_time > expires) {
|
||||
self.force_delete(pool).await;
|
||||
self.set_sent(pool).await;
|
||||
} else {
|
||||
sqlx::query!(
|
||||
"UPDATE reminders SET `utc_time` = ? WHERE `id` = ?",
|
||||
@ -422,7 +423,7 @@ WHERE
|
||||
.expect(&format!("Could not update time on Reminder {}", self.id));
|
||||
}
|
||||
} else {
|
||||
self.force_delete(pool).await;
|
||||
self.set_sent(pool).await;
|
||||
}
|
||||
}
|
||||
|
||||
@ -468,13 +469,28 @@ WHERE
|
||||
}
|
||||
}
|
||||
|
||||
async fn force_delete(&self, pool: impl Executor<'_, Database = Database> + Copy) {
|
||||
sqlx::query!("DELETE FROM reminders WHERE `id` = ?", self.id)
|
||||
async fn set_sent(&self, pool: impl Executor<'_, Database = Database> + Copy) {
|
||||
sqlx::query!("UPDATE reminders SET `status` = 'sent' WHERE `id` = ?", self.id)
|
||||
.execute(pool)
|
||||
.await
|
||||
.expect(&format!("Could not delete Reminder {}", self.id));
|
||||
}
|
||||
|
||||
async fn set_failed(
|
||||
&self,
|
||||
pool: impl Executor<'_, Database = Database> + Copy,
|
||||
message: &'static str,
|
||||
) {
|
||||
sqlx::query!(
|
||||
"UPDATE reminders SET `status` = 'failed', `status_message` = ? WHERE `id` = ?",
|
||||
message,
|
||||
self.id
|
||||
)
|
||||
.execute(pool)
|
||||
.await
|
||||
.expect(&format!("Could not delete Reminder {}", self.id));
|
||||
}
|
||||
|
||||
async fn pin_message<M: Into<u64>>(&self, message_id: M, http: impl AsRef<Http>) {
|
||||
let _ = http.as_ref().pin_message(self.channel_id, message_id.into(), None).await;
|
||||
}
|
||||
@ -649,7 +665,11 @@ WHERE
|
||||
None::<&'static str>,
|
||||
)
|
||||
.await;
|
||||
self.force_delete(pool).await;
|
||||
self.set_failed(
|
||||
pool,
|
||||
"Could not be sent as channel does not exist",
|
||||
)
|
||||
.await;
|
||||
}
|
||||
10004 => {
|
||||
self.log_error(
|
||||
@ -658,7 +678,8 @@ WHERE
|
||||
None::<&'static str>,
|
||||
)
|
||||
.await;
|
||||
self.force_delete(pool).await;
|
||||
self.set_failed(pool, "Could not be sent as guild does not exist")
|
||||
.await;
|
||||
}
|
||||
50001 => {
|
||||
self.log_error(
|
||||
@ -667,7 +688,11 @@ WHERE
|
||||
None::<&'static str>,
|
||||
)
|
||||
.await;
|
||||
self.force_delete(pool).await;
|
||||
self.set_failed(
|
||||
pool,
|
||||
"Could not be sent as permissions are invalid",
|
||||
)
|
||||
.await;
|
||||
}
|
||||
50007 => {
|
||||
self.log_error(
|
||||
@ -676,7 +701,8 @@ WHERE
|
||||
None::<&'static str>,
|
||||
)
|
||||
.await;
|
||||
self.force_delete(pool).await;
|
||||
self.set_failed(pool, "Could not be sent as user has DMs disabled")
|
||||
.await;
|
||||
}
|
||||
_ => {
|
||||
self.log_error(
|
||||
|
Reference in New Issue
Block a user