60 lines
2.2 KiB
Go
60 lines
2.2 KiB
Go
package telegram
|
|
|
|
import json "github.com/pquerna/ffjson/ffjson"
|
|
|
|
// GetUpdatesParameters represents data for GetUpdates method.
|
|
type GetUpdatesParameters struct {
|
|
// Identifier of the first update to be returned. Must be greater by one than
|
|
// the highest among the identifiers of previously received updates. By
|
|
// default, updates starting with the earliest unconfirmed update are
|
|
// returned. An update is considered confirmed as soon as getUpdates is
|
|
// called with an offset higher than its update_id. The negative offset can
|
|
// be specified to retrieve updates starting from -offset update from the
|
|
// end of the updates queue. All previous updates will forgotten.
|
|
Offset int `json:"offset,omitempty"`
|
|
|
|
// Limits the number of updates to be retrieved. Values between 1—100 are
|
|
// accepted. Defaults to 100.
|
|
Limit int `json:"limit,omitempty"`
|
|
|
|
// Timeout in seconds for long polling. Defaults to 0, i.e. usual short
|
|
// polling. Should be positive, short polling should be used for testing
|
|
// purposes only.
|
|
Timeout int `json:"timeout,omitempty"`
|
|
|
|
// List the types of updates you want your bot to receive. For example,
|
|
// specify [“message”, “edited_channel_post”, “callback_query”] to only
|
|
// receive updates of these types. See Update for a complete list of
|
|
// available update types. Specify an empty list to receive all updates
|
|
// regardless of type (default). If not specified, the previous setting will
|
|
// be used.
|
|
//
|
|
// Please note that this parameter doesn't affect updates created before the
|
|
// call to the getUpdates, so unwanted updates may be received for a short
|
|
// period of time.
|
|
AllowedUpdates []string `json:"allowed_updates,omitempty"`
|
|
}
|
|
|
|
// GetUpdates receive incoming updates using long polling. An Array of
|
|
// Update objects is returned.
|
|
func (bot *Bot) GetUpdates(params *GetUpdatesParameters) (updates []Update, err error) {
|
|
dst, err := json.Marshal(params)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
resp, err := bot.request(dst, MethodGetUpdates)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
if params == nil {
|
|
params = new(GetUpdatesParameters)
|
|
params.Limit = 100
|
|
}
|
|
|
|
updates = make([]Update, params.Limit)
|
|
err = json.Unmarshal(*resp.Result, &updates)
|
|
return
|
|
}
|