Added updatesChannel type with Clear() method

bot-api-6.1
lupoDharkael 2016-12-15 22:51:58 +01:00
parent e2916e08ad
commit 66446d51ff
2 changed files with 22 additions and 9 deletions

21
bot.go
View File

@ -7,7 +7,6 @@ import (
"encoding/json"
"errors"
"fmt"
"github.com/technoweenie/multipartstreamer"
"io/ioutil"
"log"
"net/http"
@ -16,6 +15,8 @@ import (
"strconv"
"strings"
"time"
"github.com/technoweenie/multipartstreamer"
)
// BotAPI allows you to interact with the Telegram Bot API.
@ -448,8 +449,9 @@ func (bot *BotAPI) GetWebhookInfo() (WebhookInfo, error) {
}
// GetUpdatesChan starts and returns a channel for getting updates.
func (bot *BotAPI) GetUpdatesChan(config UpdateConfig) (<-chan Update, error) {
updatesChan := make(chan Update, 100)
func (bot *BotAPI) GetUpdatesChan(config UpdateConfig) (updatesChannel, error) {
ch := make(chan Update, 100)
var updatesCh updatesChannel = ch
go func() {
for {
@ -465,18 +467,19 @@ func (bot *BotAPI) GetUpdatesChan(config UpdateConfig) (<-chan Update, error) {
for _, update := range updates {
if update.UpdateID >= config.Offset {
config.Offset = update.UpdateID + 1
updatesChan <- update
ch <- update
}
}
}
}()
return updatesChan, nil
return updatesCh, nil
}
// ListenForWebhook registers a http handler for a webhook.
func (bot *BotAPI) ListenForWebhook(pattern string) <-chan Update {
updatesChan := make(chan Update, 100)
func (bot *BotAPI) ListenForWebhook(pattern string) updatesChannel {
ch := make(chan Update, 100)
var updatesCh updatesChannel = ch
http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) {
bytes, _ := ioutil.ReadAll(r.Body)
@ -484,10 +487,10 @@ func (bot *BotAPI) ListenForWebhook(pattern string) <-chan Update {
var update Update
json.Unmarshal(bytes, &update)
updatesChan <- update
ch <- update
})
return updatesChan
return updatesCh
}
// AnswerInlineQuery sends a response to an inline query.

View File

@ -37,6 +37,16 @@ type Update struct {
CallbackQuery *CallbackQuery `json:"callback_query"`
}
//updatesChannel is the channel for getting updates.
type updatesChannel <-chan Update
//Clear discards all the actual incoming updates
func (ch updatesChannel) Clear() {
for len(ch) != 0 {
<-ch
}
}
// User is a user on Telegram.
type User struct {
ID int `json:"id"`