all repos — telegram-bot-api @ 5aaa0b2d03cc570c5c04e52021b509822c980c3f

Golang bindings for the Telegram Bot API

Bot API 4.6: Polls 2.0, misc. changes
TJ Horner me@tjhorner.com
Fri, 24 Jan 2020 22:42:19 -0500
commit

5aaa0b2d03cc570c5c04e52021b509822c980c3f

parent

5ce2767dadc468aaf629a3119d806f33d68e10ef

4 files changed, 59 insertions(+), 22 deletions(-)

jump to
M configs.goconfigs.go

@@ -3,6 +3,7 @@

import ( "io" "net/url" + "strconv" ) // Telegram constants

@@ -503,8 +504,13 @@

// SendPollConfig allows you to send a poll. type SendPollConfig struct { BaseChat - Question string - Options []string + Question string + Options []string + IsAnonymous bool + Type string + AllowsMultipleAnswers bool + CorrectOptionID int64 + IsClosed bool } func (config SendPollConfig) params() (Params, error) {

@@ -515,6 +521,11 @@ }

params["question"] = config.Question err = params.AddInterface("options", config.Options) + params["is_anonymous"] = strconv.FormatBool(config.IsAnonymous) + params.AddNonEmpty("type", config.Type) + params["allows_multiple_answers"] = strconv.FormatBool(config.AllowsMultipleAnswers) + params["correct_option_id"] = strconv.FormatInt(config.CorrectOptionID, 10) + params["is_closed"] = strconv.FormatBool(config.IsClosed) return params, err }
M go.modgo.mod

@@ -1,3 +1,5 @@

module github.com/go-telegram-bot-api/telegram-bot-api/v5 require github.com/technoweenie/multipartstreamer v1.0.1 + +go 1.13
M helpers.gohelpers.go

@@ -821,8 +821,9 @@ return SendPollConfig{

BaseChat: BaseChat{ ChatID: chatID, }, - Question: question, - Options: options, + Question: question, + Options: options, + IsAnonymous: true, // This is Telegram's default. } }
M types.gotypes.go

@@ -38,6 +38,7 @@ CallbackQuery *CallbackQuery `json:"callback_query"`

ShippingQuery *ShippingQuery `json:"shipping_query"` PreCheckoutQuery *PreCheckoutQuery `json:"pre_checkout_query"` Poll *Poll `json:"poll"` + PollAnswer *PollAnswer `json:"poll_answer"` } // UpdatesChannel is the channel for getting updates.

@@ -52,12 +53,15 @@ }

// User is a user on Telegram. type User struct { - ID int `json:"id"` - FirstName string `json:"first_name"` - LastName string `json:"last_name"` // optional - UserName string `json:"username"` // optional - LanguageCode string `json:"language_code"` // optional - IsBot bool `json:"is_bot"` // optional + ID int `json:"id"` + FirstName string `json:"first_name"` + LastName string `json:"last_name"` // optional + UserName string `json:"username"` // optional + LanguageCode string `json:"language_code"` // optional + IsBot bool `json:"is_bot"` // optional + CanJoinGroups bool `json:"can_join_groups"` // optional + CanReadAllGroupMessages bool `json:"can_read_all_group_messages"` // optional + SupportsInlineQueries bool `json:"supports_inline_queries"` // optional } // String displays a simple text version of a user.

@@ -271,11 +275,12 @@ }

// MessageEntity contains information about data in a Message. type MessageEntity struct { - Type string `json:"type"` - Offset int `json:"offset"` - Length int `json:"length"` - URL string `json:"url"` // optional - User *User `json:"user"` // optional + Type string `json:"type"` + Offset int `json:"offset"` + Length int `json:"length"` + URL string `json:"url"` // optional + User *User `json:"user"` // optional + Language string `json:"language"` // optional } // ParseURL attempts to parse a URL contained within a MessageEntity.

@@ -420,12 +425,23 @@ Text string `json:"text"`

VoterCount int `json:"voter_count"` } +// PollAnswer represents an answer of a user in a non-anonymous poll. +type PollAnswer struct { + PollID string `json:"poll_id"` + User User `json:"user"` + OptionIDs []int `json:"option_ids"` +} + // Poll contains information about a poll. type Poll struct { - ID string `json:"id"` - Question string `json:"question"` - Options []PollOption `json:"options"` - IsClosed bool `json:"is_closed"` + ID string `json:"id"` + Question string `json:"question"` + Options []PollOption `json:"options"` + IsClosed bool `json:"is_closed"` + IsAnonymous bool `json:"is_anonymous"` + Type string `json:"type"` + AllowsMultipleAnswers bool `json:"allows_multiple_answers"` + CorrectOptionID int `json:"correct_option_id"` // optional } // UserProfilePhotos contains a set of user profile photos.

@@ -459,9 +475,16 @@ }

// KeyboardButton is a button within a custom keyboard. type KeyboardButton struct { - Text string `json:"text"` - RequestContact bool `json:"request_contact"` - RequestLocation bool `json:"request_location"` + Text string `json:"text"` + RequestContact bool `json:"request_contact"` + RequestLocation bool `json:"request_location"` + RequestPoll KeyboardButtonPollType `json:"request_poll"` +} + +// KeyboardButtonPollType represents type of a poll, which is allowed to +// be created and sent when the corresponding button is pressed. +type KeyboardButtonPollType struct { + Type string `json:"type"` } // ReplyKeyboardHide allows the Bot to hide a custom keyboard.