mod friend;
pub use friend::*;
mod group;
pub use group::*;
use super::EventBase;
use strum::{Display, EnumString, IntoStaticStr};
#[derive(Debug, Clone, EnumString, Display, IntoStaticStr)]
pub enum NotionSubEvent {
#[strum(serialize = "receiveLike")]
ReceiveLike,
#[strum(serialize = "friendAdd")]
FriendAdd,
#[strum(serialize = "friendDecrease")]
FriendDecrease,
#[strum(serialize = "privatePoke")]
PrivatePoke,
#[strum(serialize = "privateRecall")]
PrivateRecall,
#[strum(serialize = "privateFileUpload")]
PrivateFileUpload,
#[strum(serialize = "groupPoke")]
GroupPoke,
#[strum(serialize = "GroupRecall")]
GroupRecall,
#[strum(serialize = "groupFileUpload")]
GroupFileUpload,
#[strum(serialize = "groupCardChange")]
GroupCardChange,
#[strum(serialize = "groupMemberTitleChange")]
GroupMemberTitleChange,
#[strum(serialize = "groupHighlightsChange")]
GroupHighlightsChange,
#[strum(serialize = "groupMemberAdd")]
GroupMemberAdd,
#[strum(serialize = "groupMemberDecrease")]
GroupMemberDecrease,
#[strum(serialize = "groupAdminChange")]
GroupAdminChange,
#[strum(serialize = "groupSignIn")]
GroupSignIn,
#[strum(serialize = "groupMemberBan")]
GroupMemberBan,
#[strum(serialize = "groupWholeBan")]
GroupWholeBan,
#[strum(serialize = "groupMessageReaction")]
GroupMessageReaction,
#[strum(serialize = "groupLuckKing")]
GroupLuckKing,
#[strum(serialize = "groupHonorChange")]
GroupHonorChange,
}
#[derive(Debug, Clone)]
pub enum NotionEvent {
ReceiveLike(ReceiveLike),
FriendAdd(FriendAdd),
PrivatePoke(PrivatePoke),
PrivateRecall(PrivateRecall),
PrivateFileUpload(PrivateFileUpload),
GroupPoke(GroupPoke),
GroupRecall(GroupRecall),
GroupFileUpload(GroupFileUpload),
GroupCardChange(GroupCardChange),
GroupMemberTitleChange(GroupMemberTitleChange),
}
pub trait NotionBase: Send + Sync + EventBase {
type Content;
fn notion(&self) -> &str;
fn content(&self) -> Self::Content;
}
#[derive(Debug, Clone)]
pub struct NotionBuilder<Contact, Sender> {
pub event_id: String,
pub time: u64,
pub self_id: String,
pub user_id: String,
pub contact: Contact,
pub sender: Sender,
}