botx_api/bot/models/command_data.rs
1use serde::{Serialize, Deserialize};
2use uuid::Uuid;
3
4use super::chat_type::ChatType;
5
6// #[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
7// #[serde(untagged)]
8// pub enum CommandData {
9// /// Событие отправляется при создание чата
10// ChatCreated(ChatCreatedCommand),
11// /// Событие отправляется при добавление мемберов в чат
12// AddedToChat(AddedToChatCommand),
13// /// Событие отправляется при удалении администратором участников чата
14// DeletedFromChat(DeletedFromChatCommand),
15// /// Событие отправляется при выходе участников из чата
16// LeftFromChat(LeftFromChatCommand),
17// /// Событие отправляется клиентом при взаимодействии со smartapp приложением
18// SmartappEvent(SmartappEventCommand),
19// /// Событие отправляется ботом при взаимодействие с другими ботами
20// InternalBotNotification(InternalBotNotificationCommand),
21// /// Событие отправляется при успешном логине пользователя на CTS
22// CtsLogin(CtsLoginLogoutCommand),
23// /// Событие отправляется при успешном выходе пользователя с CTS
24// CtsLogout(CtsLoginLogoutCommand),
25// /// Текстовая информация события
26// Text(String),
27// /// Кстомная информация события
28// Other(serde_json::Value),
29// }
30
31// impl CommandData {
32// pub fn unwrap_other(&self) -> &serde_json::Value {
33// match self {
34// CommandData::Other(other) => other,
35// _ => panic!("Unexpected command data"),
36// }
37// }
38// }
39
40/// Событие отправляется при создание чата
41#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
42pub struct ChatCreatedCommandData {
43 /// uuid чата
44 pub group_chat_id: Uuid,
45
46 /// тип чата
47 pub chat_type: ChatType,
48
49 /// имя чата
50 pub name: String,
51
52 /// huid создателя чата
53 pub creator: Uuid,
54
55 pub members: Vec<ChatCreatedCommandMembers>,
56}
57
58/// Событие отправляется при удалении чата пользователем
59#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
60pub struct ChatDeletedByUserCommandData {
61 /// uuid чата
62 pub group_chat_id: Uuid,
63
64 /// huid пользователя
65 pub user_huid: Uuid,
66}
67
68#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
69pub struct ChatCreatedCommandMembers {
70 /// huid участника
71 pub huid: Uuid,
72
73 /// имя участника
74 pub name: Option<String>,
75
76 /// тип участника
77 pub user_kind: UserKind,
78
79 /// является/не является админом
80 pub admin: bool,
81}
82
83/// тип участника
84#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone, Copy)]
85pub enum UserKind {
86 #[serde(rename(serialize = "user", deserialize = "user"))]
87 User,
88 #[serde(rename(serialize = "cts_user", deserialize = "cts_user"))]
89 CtsUser,
90 #[serde(rename(serialize = "unregistered", deserialize = "unregistered"))]
91 Unregistered,
92 #[serde(rename(serialize = "botx", deserialize = "botx"))]
93 Botx
94}
95
96/// Событие отправляется при добавление мемберов в чат
97#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
98pub struct AddedToChatCommandData {
99 /// список добавленных мемберов
100 pub added_members: Vec<Uuid>,
101}
102
103/// Событие отправляется при удалении администратором участников чата
104#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
105pub struct DeletedFromChatCommandData {
106 /// список идентификаторов удаленных пользователей
107 pub deleted_members: Vec<Uuid>,
108}
109
110/// Событие отправляется при выходе участников из чата
111#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
112pub struct LeftFromChatCommandData {
113 /// список идентификаторов покинувших чат пользователей
114 pub left_members: Vec<Uuid>,
115}
116
117/// Событие отправляется при выходе участников из чата
118#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
119pub struct EventEditCommandData {
120 /// список идентификаторов покинувших чат пользователей
121 pub body: String,
122}
123
124/// Событие отправляется клиентом при взаимодействии со smartapp приложением
125#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
126pub struct SmartappEventCommandData {
127 /// уникальный идентификатор запроса
128 #[serde(rename(serialize = "ref", deserialize = "ref"))] // ref зарезервировано
129 pub request_ref: Uuid,
130
131 /// ID смарт аппа
132 pub smartapp_id: Uuid,
133
134 /// пользовательские данные
135 pub data: serde_json::Value,
136
137 /// опции запроса
138 pub opts: serde_json::Value,
139
140 /// версия протокола smartapp <-> bot
141 pub smartapp_api_version: u16,
142}
143
144/// Событие отправляется ботом при взаимодействие с другими ботами
145#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
146pub struct InternalBotNotificationCommandData {
147 /// пользовательские данные
148 pub data: serde_json::Value,
149
150 /// опции запроса
151 pub opts: serde_json::Value,
152}
153
154/// Событие отправляется при успешном логине пользователя на CTS
155#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
156pub struct CtsLoginCommandData {
157 /// huid пользователя
158 pub user_huid: Uuid,
159
160 /// id сервера на который был произведен логин или <br/>
161 /// id сервера с которого был произведен выход
162 pub cts_id: Uuid,
163}
164
165/// Событие отправляется при успешном выходе пользователя с CTS
166#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
167pub struct CtsLogoutCommandData {
168 /// huid пользователя
169 pub user_huid: Uuid,
170
171 /// id сервера на который был произведен логин или <br/>
172 /// id сервера с которого был произведен выход
173 pub cts_id: Uuid,
174}