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
use serde::{Deserialize, Serialize}; use crate::types::True; /// Upon receiving a message with this object, Telegram clients will remove the /// current custom keyboard and display the default letter-keyboard. /// /// By default, custom keyboards are displayed until a new keyboard is sent by a /// bot. An exception is made for one-time keyboards that are hidden immediately /// after the user presses a button (see [`ReplyKeyboardMarkup`]). /// /// [The official docs](https://core.telegram.org/bots/api#replykeyboardremove). /// /// [`ReplyKeyboardMarkup`]: crate::types::ReplyKeyboardMarkup #[serde_with_macros::skip_serializing_none] #[derive(Copy, Clone, Debug, Default, Eq, Hash, PartialEq, Serialize, Deserialize)] #[non_exhaustive] pub struct ReplyKeyboardRemove { /// Requests clients to remove the custom keyboard (user will not be able /// to summon this keyboard; if you want to hide the keyboard from sight /// but keep it accessible, use one_time_keyboard in /// [`ReplyKeyboardMarkup`]). /// /// [`ReplyKeyboardMarkup`]: crate::types::ReplyKeyboardMarkup pub remove_keyboard: True, /// Use this parameter if you want to remove the keyboard for specific /// users only. Targets: 1) users that are `@mentioned` in the `text` of /// the [`Message`] object; 2) if the bot's message is a reply (has /// `reply_to_message_id`), sender of the original message. /// /// Example: A user votes in a poll, bot returns confirmation message in /// reply to the vote and removes the keyboard for that user, while still /// showing the keyboard with poll options to users who haven't voted yet. /// /// [`Message`]: crate::types::Message pub selective: Option<bool>, } impl ReplyKeyboardRemove { pub fn new() -> Self { Self::default() } pub fn selective<T>(mut self, val: T) -> Self where T: Into<bool>, { self.selective = Some(val.into()); self } }