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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
use rsb_derive::Builder;
use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
use crate::blocks::*;
use crate::common::*;
use crate::events::*;
use crate::messages::*;
#[allow(clippy::large_enum_variant)]
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum SlackPushEvent {
#[serde(rename = "url_verification")]
UrlVerification(SlackUrlVerificationEvent),
#[serde(rename = "event_callback")]
EventCallback(SlackPushEventCallback),
#[serde(rename = "app_rate_limited")]
AppRateLimited(SlackAppRateLimitedEvent),
}
#[skip_serializing_none]
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
pub struct SlackUrlVerificationEvent {
pub challenge: String,
}
#[skip_serializing_none]
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
pub struct SlackAppRateLimitedEvent {
pub team_id: String,
pub minute_rate_limited: SlackDateTime,
pub api_app_id: String,
}
#[skip_serializing_none]
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
pub struct SlackPushEventCallback {
pub team_id: SlackTeamId,
pub api_app_id: SlackAppId,
pub event: SlackEventCallbackBody,
pub event_id: SlackEventId,
pub event_time: SlackDateTime,
pub event_context: Option<SlackEventContext>,
pub authed_users: Option<Vec<SlackUserId>>,
pub authorizations: Option<Vec<SlackEventAuthorization>>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum SlackEventCallbackBody {
#[serde(rename = "message")]
Message(SlackMessageEvent),
#[serde(rename = "app_home_opened")]
AppHomeOpened(SlackAppHomeOpenedEvent),
#[serde(rename = "app_mention")]
AppMention(SlackAppMentionEvent),
#[serde(rename = "app_uninstalled")]
AppUninstalled(SlackAppUninstalledEvent),
}
#[skip_serializing_none]
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
pub struct SlackMessageEvent {
#[serde(flatten)]
pub origin: SlackMessageOrigin,
#[serde(flatten)]
pub content: Option<SlackMessageContent>,
#[serde(flatten)]
pub sender: SlackMessageSender,
pub subtype: Option<SlackMessageEventType>,
pub hidden: Option<bool>,
pub edited: Option<SlackMessageEventEdited>,
pub deleted_ts: Option<SlackTs>,
}
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
pub enum SlackMessageEventType {
#[serde(rename = "bot_message")]
BotMessage,
#[serde(rename = "me_message")]
MeMessage,
#[serde(rename = "channel_join")]
ChannelJoin,
#[serde(rename = "bot_add")]
BotAdd,
#[serde(rename = "bot_remove")]
BotRemove,
#[serde(rename = "channel_topic")]
ChannelTopic,
#[serde(rename = "channel_purpose")]
ChannelPurpose,
#[serde(rename = "channel_name")]
ChannelName,
#[serde(rename = "message_changed")]
MessageChanged,
#[serde(rename = "message_deleted")]
MessageDeleted,
#[serde(rename = "tombstone")]
Tombstone,
#[serde(rename = "joiner_notification")]
JoinerNotification,
#[serde(rename = "slackbot_response")]
SlackbotResponse,
}
#[skip_serializing_none]
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
pub struct SlackAppHomeOpenedEvent {
pub user: SlackUserId,
pub channel: SlackChannelId,
pub tab: String,
pub view: Option<SlackView>,
}
#[skip_serializing_none]
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
pub struct SlackAppMentionEvent {
pub user: SlackUserId,
pub channel: SlackChannelId,
#[serde(flatten)]
pub content: SlackMessageContent,
#[serde(flatten)]
pub origin: SlackMessageOrigin,
}
#[skip_serializing_none]
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
pub struct SlackMessageEventEdited {
pub user: SlackUserId,
pub ts: SlackTs,
}
#[skip_serializing_none]
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
pub struct SlackAppUninstalledEvent {}