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}