Archived
1
This repository has been archived on 2022-11-04. You can view files and clone it, but cannot push or open issues or pull requests.
fwzookeeper/vendor/gitlab.com/toby3d/telegram/get_updates.go
2018-11-29 20:32:51 +04:00

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
}