mirror of
https://github.com/teloxide/teloxide.git
synced 2024-12-22 14:35:36 +01:00
add methods to send venue action
This commit is contained in:
parent
a95829243a
commit
c1568065e0
1 changed files with 119 additions and 11 deletions
|
@ -1,4 +1,8 @@
|
|||
use crate::core::requests::{ChatId, RequestContext};
|
||||
use crate::core::network;
|
||||
use crate::core::requests::{
|
||||
ChatId, Request, RequestContext, RequestFuture, ResponseResult,
|
||||
};
|
||||
use crate::core::types::{Message, ReplyMarkup};
|
||||
|
||||
//TODO:: need implementation
|
||||
///Use this method to send information about a venue. On success, the sent
|
||||
|
@ -9,35 +13,139 @@ struct SendVenue<'a> {
|
|||
ctx: RequestContext<'a>,
|
||||
/// Integer or String Yes Unique identifier for the target chat or
|
||||
/// username of the target channel (in the format @channelusername)
|
||||
chat_id: ChatId,
|
||||
pub chat_id: ChatId,
|
||||
/// Float number Yes Latitude of the venue
|
||||
latitude: f64,
|
||||
pub latitude: f64,
|
||||
///Float number Yes Longitude of the venue
|
||||
longitude: f64,
|
||||
pub longitude: f64,
|
||||
/// Yes Name of the venue
|
||||
title: String,
|
||||
pub title: String,
|
||||
///String Yes Address of the venue
|
||||
address: String,
|
||||
pub address: String,
|
||||
/// String Optional Foursquare identifier of the venue
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
foursquare_id: Option<String>,
|
||||
pub foursquare_id: Option<String>,
|
||||
/// String Optional Foursquare type of the venue, if known. (For
|
||||
/// example, “arts_entertainment/default”, “arts_entertainment/aquarium” or
|
||||
/// “food/icecream”.)
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
foursquare_type: Option<String>,
|
||||
pub foursquare_type: Option<String>,
|
||||
/// Boolean Optional Sends the message silently. Users will receive a
|
||||
/// notification with no sound.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
disable_notification: Option<bool>,
|
||||
pub disable_notification: Option<bool>,
|
||||
/// Integer Optional If the message is a reply, ID of the original
|
||||
/// message
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
reply_to_message_id: Option<i32>,
|
||||
pub reply_to_message_id: Option<i32>,
|
||||
/// InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardRemove or
|
||||
/// ForceReply Optional Additional interface options. A JSON-serialized
|
||||
/// object for an inline keyboard, custom reply keyboard, instructions to
|
||||
/// remove reply keyboard or to force a reply from the user.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
reply_markup: Option<()>, //TODO: need concrete type
|
||||
pub reply_markup: Option<ReplyMarkup>,
|
||||
}
|
||||
|
||||
impl<'a> Request<'a> for SendVenue<'a> {
|
||||
type ReturnValue = Message;
|
||||
|
||||
fn send(self) -> RequestFuture<'a, ResponseResult<Self::ReturnValue>> {
|
||||
Box::pin(async move {
|
||||
network::request_json(
|
||||
&self.ctx.client,
|
||||
&self.ctx.token,
|
||||
"sendVenue",
|
||||
Some(&self),
|
||||
)
|
||||
.await
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> SendVenue<'a> {
|
||||
pub fn new(
|
||||
ctx: RequestContext<'a>,
|
||||
chat_id: ChatId,
|
||||
latitude: f64,
|
||||
longitude: f64,
|
||||
title: String,
|
||||
address: String,
|
||||
) -> Self {
|
||||
Self {
|
||||
ctx,
|
||||
chat_id,
|
||||
latitude,
|
||||
longitude,
|
||||
title,
|
||||
address,
|
||||
foursquare_id: None,
|
||||
foursquare_type: None,
|
||||
disable_notification: None,
|
||||
reply_to_message_id: None,
|
||||
reply_markup: None,
|
||||
}
|
||||
}
|
||||
pub fn chat_id<T>(mut self, chat_id: T) -> Self
|
||||
where
|
||||
T: Into<ChatId>,
|
||||
{
|
||||
self.chat_id = chat_id.into();
|
||||
self
|
||||
}
|
||||
|
||||
pub fn longitude<T>(mut self, longitude: T) -> Self
|
||||
where
|
||||
T: Into<f64>,
|
||||
{
|
||||
self.longitude = longitude.into();
|
||||
self
|
||||
}
|
||||
|
||||
pub fn latitude<T>(mut self, latitude: T) -> Self
|
||||
where
|
||||
T: Into<f64>,
|
||||
{
|
||||
self.latitude = latitude.into();
|
||||
self
|
||||
}
|
||||
|
||||
pub fn title<T>(mut self, title: T) -> Self
|
||||
where
|
||||
T: Into<String>,
|
||||
{
|
||||
self.title = title.into();
|
||||
self
|
||||
}
|
||||
|
||||
pub fn address<T>(mut self, address: T) -> Self
|
||||
where
|
||||
T: Into<String>,
|
||||
{
|
||||
self.address = address.into();
|
||||
self
|
||||
}
|
||||
|
||||
pub fn foursquare_id<T>(mut self, foursquare_id: T) -> Self
|
||||
where
|
||||
T: Into<String>,
|
||||
{
|
||||
self.foursquare_id = Some(foursquare_id.into());
|
||||
self
|
||||
}
|
||||
|
||||
pub fn disable_notification<T>(mut self, disable_notification: T) -> Self
|
||||
where
|
||||
T: Into<bool>,
|
||||
{
|
||||
self.disable_notification = Some(disable_notification.into());
|
||||
self
|
||||
}
|
||||
|
||||
pub fn foursquare_type<T>(mut self, foursquare_type: T) -> Self
|
||||
where
|
||||
T: Into<bool>,
|
||||
{
|
||||
self.foursquare_type = Some(foursquare_type.into());
|
||||
self
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue