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
use serde::{Serialize, Deserialize};
use super::{handler::Handler, align::Align};
/// кнопки команд расположенные под сообщением, представленные в виде двумерного массива объектов.
#[derive(Debug, Serialize, Deserialize, Default, Clone, Builder)]
#[builder(setter(into, prefix = "with", strip_option))]
pub struct Bubble {
/// тело команды
pub command: String,
/// наименование команды
pub label: String,
/// (Default: {}) - объект с данными, которые будут отправлены в качестве параметров команды при нажатие на кнопку
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub data: Option<serde_json::Value>,
/// объект с клиентскими опциями кнопки
#[builder(default)]
pub opts: BubbleOptions
}
#[derive(Debug, Serialize, Deserialize, Default, Clone, Builder)]
#[builder(setter(into, prefix = "with", strip_option))]
pub struct BubbleOptions {
/// (Default: 1) - если значение true, то при нажатие на кнопку в чат не будет отправлено сообщение с текстом команды и сама команда отправится боту в фоне
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub silent: Option<bool>,
/// (Default: 1) - размер кнопки по горизонтали
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub h_size: Option<u32>,
/// (Default: false) - если значение true, то при нажатии на кнопку отобразится всплывающее уведомление с заданным в alert_text сообщением
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub show_alert: Option<bool>,
/// (Default: null) - текст уведомления. Если значение null, то выведется тело команды
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub alert_text: Option<String>,
/// (Default: “bot”) - если значение “client”, то при нажатии на кнопку команда не должна отправляться боту, а должна обрабатываться самим клиентом
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub handler: Option<Handler>,
/// (Default: null) - цвет текста в hex формате
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub font_color: Option<String>,
/// (Default: null) - цвет фона/границ в hex формате
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub background_color: Option<String>,
/// (Default: “left”) - выравнивание текста left|center|right
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pub align: Option<Align>
}