diff --git a/configs.go b/configs.go index c0293ce..84912ab 100644 --- a/configs.go +++ b/configs.go @@ -571,8 +571,9 @@ func (config VoiceConfig) method() string { // LocationConfig contains information about a SendLocation request. type LocationConfig struct { BaseChat - Latitude float64 // required - Longitude float64 // required + Latitude float64 // required + Longitude float64 // required + LivePeriod int // optional } // values returns a url.Values representation of LocationConfig. @@ -584,6 +585,9 @@ func (config LocationConfig) values() (url.Values, error) { v.Add("latitude", strconv.FormatFloat(config.Latitude, 'f', 6, 64)) v.Add("longitude", strconv.FormatFloat(config.Longitude, 'f', 6, 64)) + if config.LivePeriod != 0 { + v.Add("live_period", strconv.Itoa(config.LivePeriod)) + } return v, nil } diff --git a/helpers.go b/helpers.go index 132d957..2c5d046 100644 --- a/helpers.go +++ b/helpers.go @@ -268,13 +268,14 @@ func NewContact(chatID int64, phoneNumber, firstName string) ContactConfig { // NewLocation shares your location. // // chatID is where to send it, latitude and longitude are coordinates. -func NewLocation(chatID int64, latitude float64, longitude float64) LocationConfig { +func NewLocation(chatID int64, latitude float64, longitude float64, live_period int) LocationConfig { return LocationConfig{ BaseChat: BaseChat{ ChatID: chatID, }, - Latitude: latitude, - Longitude: longitude, + Latitude: latitude, + Longitude: longitude, + LivePeriod: live_period, } } @@ -465,13 +466,14 @@ func NewInlineQueryResultDocument(id, url, title, mimeType string) InlineQueryRe } // NewInlineQueryResultLocation creates a new inline query location. -func NewInlineQueryResultLocation(id, title string, latitude, longitude float64) InlineQueryResultLocation { +func NewInlineQueryResultLocation(id, title string, latitude, longitude float64, live_period int) InlineQueryResultLocation { return InlineQueryResultLocation{ - Type: "location", - ID: id, - Title: title, - Latitude: latitude, - Longitude: longitude, + Type: "location", + ID: id, + Title: title, + Latitude: latitude, + Longitude: longitude, + LivePeriod: live_period, } } diff --git a/types.go b/types.go index 91875bb..691a645 100644 --- a/types.go +++ b/types.go @@ -331,8 +331,9 @@ type Contact struct { // Location contains information about a place. type Location struct { - Longitude float64 `json:"longitude"` - Latitude float64 `json:"latitude"` + Longitude float64 `json:"longitude"` + Latitude float64 `json:"latitude"` + LivePeriod int `json:"live_period"` } // Venue contains information about a venue, including its Location. @@ -639,11 +640,12 @@ type InlineQueryResultDocument struct { // InlineQueryResultLocation is an inline query response location. type InlineQueryResultLocation struct { - Type string `json:"type"` // required - ID string `json:"id"` // required - Latitude float64 `json:"latitude"` // required - Longitude float64 `json:"longitude"` // required - Title string `json:"title"` // required + Type string `json:"type"` // required + ID string `json:"id"` // required + Latitude float64 `json:"latitude"` // required + Longitude float64 `json:"longitude"` // required + LivePeriod int `json:"live_period"` // optional + Title string `json:"title"` // required ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"` InputMessageContent interface{} `json:"input_message_content,omitempty"` ThumbURL string `json:"thumb_url"` @@ -679,8 +681,9 @@ type InputTextMessageContent struct { // InputLocationMessageContent contains a location for displaying // as an inline query result. type InputLocationMessageContent struct { - Latitude float64 `json:"latitude"` - Longitude float64 `json:"longitude"` + Latitude float64 `json:"latitude"` + Longitude float64 `json:"longitude"` + LivePeriod int `json:"live_period"` } // InputVenueMessageContent contains a venue for displaying