botx_api/api/v3/chats/create/
models.rs

1use serde::{Serialize, Deserialize};
2use uuid::Uuid;
3
4use crate::bot::models::ChatType;
5
6/// Запрос на создания чате
7#[derive(Debug, Serialize, Deserialize, Default, Clone, Builder)]
8#[builder(setter(into, prefix = "with", strip_option))]
9pub struct CreateChatRequest {
10    /// Имя чата
11    pub name : String,
12
13    /// (Default: null) - описание чата
14    #[builder(default)]
15    pub description: Option<String>,
16
17    /// Тип чата (chat|group_chat|channel)
18    pub chat_type: ChatType,
19
20    /// Список HUID участников чата
21    pub members: Vec<Uuid>,
22
23    /// (Default: null) - аватар чата в формате data URL + base64 data (RFC 2397)
24    #[builder(default)]
25    pub avatar: Option<String>,
26
27    /// (Default: false) - если true, то созданный чат будет иметь признаки шаред чата
28    pub shared_history: bool,
29}
30
31/// Ответ eXpress на запрос создания чате
32#[derive(Debug, Serialize, Deserialize, Clone)]
33pub struct CreateChatResponse {
34    /// Результат запроса
35    pub result: CreateChatResult,
36}
37
38#[derive(Debug, Serialize, Deserialize, Clone)]
39pub struct CreateChatResult {
40    /// id созданного чата
41    pub chat_id: Uuid,
42}
43
44/// Ошибки при создании чате
45#[derive(Debug, Serialize, Deserialize, Clone)]
46#[serde(tag = "reason")]
47pub enum CreateChatError {
48    /// Боту запрещено создавать чаты
49    #[serde(rename(serialize = "chat_not_found", deserialize = "chat_not_found"))]
50    ChatCreationIsProhibited(ChatCreationIsProhibited),
51
52    // TODO: добавить десериализацию в HashMap<string, string> когда завезут реализацию
53    /// Неопределенная ошибка, смотрите логи
54    #[serde(other)]
55    Other,
56}
57
58/// Боту запрещено создавать чаты
59#[derive(Debug, Serialize, Deserialize, Clone)]
60pub struct ChatCreationIsProhibited {
61    /// Список ошибок
62    pub errors: Vec<String>,
63
64    /// Дополнительная информация об ошибке
65    pub error_data: ChatCreationIsProhibitedData,
66}
67
68#[derive(Debug, Serialize, Deserialize, Clone)]
69pub struct ChatCreationIsProhibitedData {
70    /// id бота 
71    pub bot_id: Uuid,
72}