use crate::models::{Snowflake, Timestamp};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct MessageUser {
pub id: Option<Snowflake>,
pub username: Option<String>,
pub bot: Option<bool>,
pub avatar: Option<String>,
}
impl MessageUser {
pub fn from_data(data: serde_json::Value) -> Self {
serde_json::from_value(data).unwrap_or_default()
}
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct DirectMessageUser {
pub id: Option<Snowflake>,
pub username: Option<String>,
pub avatar: Option<String>,
}
impl DirectMessageUser {
pub fn from_data(data: serde_json::Value) -> Self {
serde_json::from_value(data).unwrap_or_default()
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
pub struct GroupMessageUser {
pub id: Option<String>,
pub member_openid: Option<String>,
pub union_openid: Option<String>,
}
impl GroupMessageUser {
pub fn from_data(data: serde_json::Value) -> Self {
serde_json::from_value(data).unwrap_or_default()
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
pub struct C2CMessageUser {
pub id: Option<String>,
pub union_openid: Option<String>,
pub user_openid: Option<String>,
}
impl C2CMessageUser {
pub fn from_data(data: serde_json::Value) -> Self {
serde_json::from_value(data).unwrap_or_default()
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
pub struct MessageMember {
pub nick: Option<String>,
pub roles: Option<Vec<Snowflake>>,
pub joined_at: Option<Timestamp>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
pub struct DirectMessageMember {
pub joined_at: Option<Timestamp>,
}
impl DirectMessageMember {
pub fn from_data(data: serde_json::Value) -> Self {
serde_json::from_value(data).unwrap_or_default()
}
}