botx_api/api/models/
bubble.rs

1use serde::{Serialize, Deserialize};
2
3use super::{handler::Handler, align::Align};
4
5
6/// кнопки команд расположенные под сообщением, представленные в виде двумерного массива объектов.
7#[derive(Debug, Serialize, Deserialize, Default, Clone, Builder)]
8#[builder(setter(into, prefix = "with", strip_option))]
9pub struct Bubble {
10    /// тело команды
11    pub command: String,
12
13    /// наименование команды
14    pub label: String,
15
16    /// (Default: {}) - объект с данными, которые будут отправлены в качестве параметров команды при нажатие на кнопку
17    #[serde(skip_serializing_if = "Option::is_none")]
18    #[builder(default)]
19    pub data: Option<serde_json::Value>,
20
21    /// объект с клиентскими опциями кнопки
22    #[builder(default)]
23    pub opts: BubbleOptions
24}
25
26#[derive(Debug, Serialize, Deserialize, Default, Clone, Builder)]
27#[builder(setter(into, prefix = "with", strip_option))]
28pub struct BubbleOptions {
29    /// (Default: 1) - если значение true, то при нажатие на кнопку в чат не будет отправлено сообщение с текстом команды и сама команда отправится боту в фоне
30    #[serde(skip_serializing_if = "Option::is_none")]
31    #[builder(default)]
32    pub silent: Option<bool>,
33
34    /// (Default: 1) - размер кнопки по горизонтали
35    #[serde(skip_serializing_if = "Option::is_none")]
36    #[builder(default)]
37    pub h_size: Option<u32>,
38
39    /// (Default: false) - если значение true, то при нажатии на кнопку отобразится всплывающее уведомление с заданным в alert_text сообщением
40    #[serde(skip_serializing_if = "Option::is_none")]
41    #[builder(default)]
42    pub show_alert: Option<bool>,
43
44    /// (Default: null) - текст уведомления. Если значение null, то выведется тело команды
45    #[serde(skip_serializing_if = "Option::is_none")]
46    #[builder(default)]
47    pub alert_text: Option<String>,
48
49    /// (Default: “bot”) - если значение “client”, то при нажатии на кнопку команда не должна отправляться боту, а должна обрабатываться самим клиентом
50    #[serde(skip_serializing_if = "Option::is_none")]
51    #[builder(default)]
52    pub handler: Option<Handler>,
53
54    /// (Default: null) - цвет текста в hex формате
55    #[serde(skip_serializing_if = "Option::is_none")]
56    #[builder(default)]
57    pub font_color: Option<String>,
58
59    /// (Default: null) - цвет фона/границ в hex формате
60    #[serde(skip_serializing_if = "Option::is_none")]
61    #[builder(default)]
62    pub background_color: Option<String>,
63
64    /// (Default: “left”) - выравнивание текста left|center|right
65    #[serde(skip_serializing_if = "Option::is_none")]
66    #[builder(default)]
67    pub align: Option<Align>
68}