Merge remote-tracking branch 'pr0head/master' into develop

bot-api-6.1
Syfaro 2017-12-29 12:56:31 -06:00
commit 4ec899a62e
5 changed files with 67 additions and 14 deletions

View File

@ -266,7 +266,7 @@ func TestSendWithContact(t *testing.T) {
func TestSendWithLocation(t *testing.T) { func TestSendWithLocation(t *testing.T) {
bot, _ := getBot(t) bot, _ := getBot(t)
_, err := bot.Send(tgbotapi.NewLocation(ChatID, 40, 40)) _, err := bot.Send(tgbotapi.NewLocation(ChatID, 40, 40, 86400))
if err != nil { if err != nil {
t.Error(err) t.Error(err)

View File

@ -573,6 +573,7 @@ type LocationConfig struct {
BaseChat BaseChat
Latitude float64 // required Latitude float64 // required
Longitude float64 // required Longitude float64 // required
LivePeriod int // optional
} }
// values returns a url.Values representation of LocationConfig. // 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("latitude", strconv.FormatFloat(config.Latitude, 'f', 6, 64))
v.Add("longitude", strconv.FormatFloat(config.Longitude, '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 return v, nil
} }
@ -593,6 +597,51 @@ func (config LocationConfig) method() string {
return "sendLocation" return "sendLocation"
} }
// LocationConfig contains information about a SendLocation request.
type EditMessageLiveLocationConfig struct {
BaseEdit
Latitude float64 // required
Longitude float64 // required
}
// values returns a url.Values representation of EditMessageLiveLocationConfig.
func (config EditMessageLiveLocationConfig) values() (url.Values, error) {
v, err := config.BaseEdit.values()
if err != nil {
return v, err
}
v.Add("latitude", strconv.FormatFloat(config.Latitude, 'f', 6, 64))
v.Add("longitude", strconv.FormatFloat(config.Longitude, 'f', 6, 64))
return v, nil
}
// method returns Telegram API method name for edit message Live Location.
func (config EditMessageLiveLocationConfig) method() string {
return "editMessageLiveLocation"
}
// LocationConfig contains information about a StopMessageLiveLocation request.
type StopMessageLiveLocationConfig struct {
BaseEdit
}
// values returns a url.Values representation of StopMessageLiveLocationConfig.
func (config StopMessageLiveLocationConfig) values() (url.Values, error) {
v, err := config.BaseEdit.values()
if err != nil {
return v, err
}
return v, nil
}
// method returns Telegram API method name for stop message Live Location.
func (config StopMessageLiveLocationConfig) method() string {
return "stopMessageLiveLocation"
}
// VenueConfig contains information about a SendVenue request. // VenueConfig contains information about a SendVenue request.
type VenueConfig struct { type VenueConfig struct {
BaseChat BaseChat

View File

@ -268,13 +268,14 @@ func NewContact(chatID int64, phoneNumber, firstName string) ContactConfig {
// NewLocation shares your location. // NewLocation shares your location.
// //
// chatID is where to send it, latitude and longitude are coordinates. // 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{ return LocationConfig{
BaseChat: BaseChat{ BaseChat: BaseChat{
ChatID: chatID, ChatID: chatID,
}, },
Latitude: latitude, Latitude: latitude,
Longitude: longitude, Longitude: longitude,
LivePeriod: live_period,
} }
} }
@ -465,13 +466,14 @@ func NewInlineQueryResultDocument(id, url, title, mimeType string) InlineQueryRe
} }
// NewInlineQueryResultLocation creates a new inline query location. // 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{ return InlineQueryResultLocation{
Type: "location", Type: "location",
ID: id, ID: id,
Title: title, Title: title,
Latitude: latitude, Latitude: latitude,
Longitude: longitude, Longitude: longitude,
LivePeriod: live_period,
} }
} }

View File

@ -127,13 +127,14 @@ func TestNewInlineQueryResultDocument(t *testing.T) {
} }
func TestNewInlineQueryResultLocation(t *testing.T) { func TestNewInlineQueryResultLocation(t *testing.T) {
result := tgbotapi.NewInlineQueryResultLocation("id", "name", 40, 50) result := tgbotapi.NewInlineQueryResultLocation("id", "name", 40, 50, 86400)
if result.Type != "location" || if result.Type != "location" ||
result.ID != "id" || result.ID != "id" ||
result.Title != "name" || result.Title != "name" ||
result.Latitude != 40 || result.Latitude != 40 ||
result.Longitude != 50 { result.Longitude != 50 ||
result.LivePeriod != 86400 {
t.Fail() t.Fail()
} }
} }

View File

@ -662,6 +662,7 @@ type InlineQueryResultLocation struct {
ID string `json:"id"` // required ID string `json:"id"` // required
Latitude float64 `json:"latitude"` // required Latitude float64 `json:"latitude"` // required
Longitude float64 `json:"longitude"` // required Longitude float64 `json:"longitude"` // required
LivePeriod int `json:"live_period"` // optional
Title string `json:"title"` // required Title string `json:"title"` // required
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"` ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
InputMessageContent interface{} `json:"input_message_content,omitempty"` InputMessageContent interface{} `json:"input_message_content,omitempty"`