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>
}