conogram 0.2.19

An async wrapper for Telegram Bot API
Documentation
use serde::{Deserialize, Serialize};

use crate::{entities::keyboard_button::KeyboardButton, utils::deserialize_utils::is_false};

/// This object represents a [custom keyboard](https://core.telegram.org/bots/features#keyboards) with reply options (see [Introduction to bots](https://core.telegram.org/bots/features#keyboards) for details and examples). Not supported in channels and for messages sent on behalf of a Telegram Business account.
///
/// API Reference: [link](https://core.telegram.org/bots/api/#replykeyboardmarkup)
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct ReplyKeyboardMarkup {
    /// Array of button rows, each represented by an Array of [KeyboardButton](https://core.telegram.org/bots/api/#keyboardbutton) objects
    pub keyboard: Vec<Vec<KeyboardButton>>,

    /// *Optional*. Requests clients to always show the keyboard when the regular keyboard is hidden. Defaults to *false*, in which case the custom keyboard can be hidden and opened with a keyboard icon.
    #[serde(default, skip_serializing_if = "is_false")]
    pub is_persistent: bool,

    /// *Optional*. Requests clients to resize the keyboard vertically for optimal fit (e.g., make the keyboard smaller if there are just two rows of buttons). Defaults to *false*, in which case the custom keyboard is always of the same height as the app's standard keyboard.
    #[serde(default, skip_serializing_if = "is_false")]
    pub resize_keyboard: bool,

    /// *Optional*. Requests clients to hide the keyboard as soon as it's been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat - the user can press a special button in the input field to see the custom keyboard again. Defaults to *false*.
    #[serde(default, skip_serializing_if = "is_false")]
    pub one_time_keyboard: bool,

    /// *Optional*. The placeholder to be shown in the input field when the keyboard is active; 1-64 characters
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub input_field_placeholder: Option<String>,

    /// *Optional*. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the *text* of the [Message](https://core.telegram.org/bots/api/#message) object; 2) if the bot's message is a reply to a message in the same chat and forum topic, sender of the original message.  
    ///
    /// *Example:* A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.
    #[serde(default, skip_serializing_if = "is_false")]
    pub selective: bool,
}

// Divider: all content below this line will be preserved after code regen