1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
use crate::blocks::*; use crate::common::*; use crate::events::SlackMessageEventType; use rsb_derive::Builder; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; mod templates; pub use templates::*; #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackMessageOrigin { pub ts: SlackTs, pub channel: Option<SlackChannelId>, pub channel_type: Option<SlackChannelType>, pub thread_ts: Option<SlackTs>, } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackMessageContent { pub text: Option<String>, pub blocks: Option<Vec<SlackBlock>>, } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackMessageSender { pub user: Option<SlackUserId>, pub bot_id: Option<SlackBotId>, pub username: Option<String>, } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackMessage { #[serde(flatten)] pub origin: SlackMessageOrigin, #[serde(flatten)] pub content: SlackMessageContent, } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackHistoryMessage { #[serde(flatten)] pub origin: SlackMessageOrigin, #[serde(flatten)] pub content: SlackMessageContent, #[serde(flatten)] pub sender: SlackMessageSender, pub subtype: Option<SlackMessageEventType>, } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] pub enum SlackMessageResponseType { #[serde(rename = "in_channel")] InChannel, #[serde(rename = "ephemeral")] Ephemeral, }