use serde::{Deserialize, Serialize};
use serde_json::Value;
mod sender;
pub use sender::{MessageBuilder, MessageReplyBuilder, MessageSender, MessageSenderOptions};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct MessageId(pub String);
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "type", content = "id", rename_all = "snake_case")]
pub enum Recipient {
Chat(String),
User(String),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum MessageContent {
Text { text: String },
Card { card: Value },
Custom { msg_type: String, content: Value },
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct NormalizedMessage {
pub message_id: String,
pub chat_id: String,
pub sender_id: String,
pub text: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub thread_id: Option<String>,
#[serde(default)]
pub mentions: Vec<String>,
#[serde(default)]
pub raw: Value,
}