diff --git a/src/types/dice.rs b/src/types/dice.rs new file mode 100644 index 00000000..b0354d2b --- /dev/null +++ b/src/types/dice.rs @@ -0,0 +1,38 @@ +use serde::{Deserialize, Serialize}; + +use crate::requests::SendDiceEmoji; + +/// This object represents an animated emoji that displays a random value. +#[serde_with_macros::skip_serializing_none] +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +#[non_exhaustive] +pub struct Dice { + /// Emoji on which the dice throw animation is based. + emoji: SendDiceEmoji, + + /// Value of the dice. + /// + /// 1-6 for [`SendDiceEmoji::Dice`] and [`SendDiceEmoji::Darts`], 1-5 for + /// [`SendDiceEmoji::Basketball`]. + /// + /// [`SendDiceEmoji::Dice`]: crate::types::SendDiceEmoji::Dice + /// [`SendDiceEmoji::Darts`]:crate::types::SendDiceEmoji::Darts + /// [`SendDiceEmoji::Basketball`]:crate::types::SendDiceEmoji::Basketball + value: i32, +} + +impl Dice { + pub fn new(emoji: SendDiceEmoji, value: i32) -> Self { + Self { emoji, value } + } + + pub fn emoji(mut self, val: SendDiceEmoji) -> Self { + self.emoji = val; + self + } + + pub fn value(mut self, val: i32) -> Self { + self.value = val; + self + } +} diff --git a/src/types/mod.rs b/src/types/mod.rs index d917c94c..04415d32 100644 --- a/src/types/mod.rs +++ b/src/types/mod.rs @@ -14,6 +14,7 @@ pub use chat_permissions::*; pub use chat_photo::*; pub use chosen_inline_result::*; pub use contact::*; +pub use dice::*; pub use document::*; pub use encrypted_credentials::*; pub use encrypted_passport_element::*; @@ -103,6 +104,7 @@ mod chat_permissions; mod chat_photo; mod chosen_inline_result; mod contact; +mod dice; mod document; mod file; mod force_reply;