Support ephemeral reminder confirmations

This commit is contained in:
jude
2023-05-11 19:40:33 +01:00
parent 4b42966284
commit aa931328b0
8 changed files with 171 additions and 25 deletions

View File

@ -1,5 +1,6 @@
pub mod channel_data;
pub mod command_macro;
pub mod guild_data;
pub mod reminder;
pub mod timer;
pub mod user_data;
@ -8,7 +9,7 @@ use chrono_tz::Tz;
use poise::serenity_prelude::{async_trait, model::id::UserId, ChannelType};
use crate::{
models::{channel_data::ChannelData, user_data::UserData},
models::{channel_data::ChannelData, guild_data::GuildData, user_data::UserData},
CommandMacro, Context, Data, Error, GuildId,
};
@ -18,6 +19,8 @@ pub trait CtxData {
async fn author_data(&self) -> Result<UserData, Error>;
async fn guild_data(&self) -> Option<Result<GuildData, Error>>;
async fn timezone(&self) -> Tz;
async fn channel_data(&self) -> Result<ChannelData, Error>;
@ -27,17 +30,22 @@ pub trait CtxData {
#[async_trait]
impl CtxData for Context<'_> {
async fn user_data<U: Into<UserId> + Send>(
&self,
user_id: U,
) -> Result<UserData, Box<dyn std::error::Error + Sync + Send>> {
async fn user_data<U: Into<UserId> + Send>(&self, user_id: U) -> Result<UserData, Error> {
UserData::from_user(user_id, &self.discord(), &self.data().database).await
}
async fn author_data(&self) -> Result<UserData, Box<dyn std::error::Error + Sync + Send>> {
async fn author_data(&self) -> Result<UserData, Error> {
UserData::from_user(&self.author().id, &self.discord(), &self.data().database).await
}
async fn guild_data(&self) -> Option<Result<GuildData, Error>> {
if let Some(guild_id) = self.guild_id() {
Some(GuildData::from_guild(guild_id, &self.data().database).await)
} else {
None
}
}
async fn timezone(&self) -> Tz {
UserData::timezone_of(self.author().id, &self.data().database).await
}