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
use responses::user::User; use responses::message::Message; use super::raw::queries; use error::UnexpectedResponse; use try_from::TryFrom; #[derive(Debug, Clone)] pub struct CallbackQuery { pub id: String, pub from: User, pub message: Option<Message>, pub inline_message_id: Option<String>, pub chat_instance: String, pub data: Option<String>, pub game_short_name: Option<String>, } impl TryFrom<queries::CallbackQuery> for CallbackQuery { type Error = UnexpectedResponse; fn try_from(value: queries::CallbackQuery) -> Result<Self, UnexpectedResponse> { match value { queries::CallbackQuery { id, from, message, inline_message_id, data, game_short_name, chat_instance } => { let message = message .map(TryFrom::try_from) .map_or(Ok(None), |x| x.map(Some)); message.map(|message| CallbackQuery { id, from, message, inline_message_id, chat_instance, data, game_short_name, }) } } } }