all repos — telegram-bot-api @ 2024a55b8769e678719ba5dce8463cc7e1415e53

Golang bindings for the Telegram Bot API

updates.go (view raw)

 1package tgbotapi
 2
 3import (
 4	"log"
 5	"time"
 6)
 7
 8// UpdatesChan returns a chan that is called whenever a new message is gotten.
 9func (bot *BotAPI) UpdatesChan(config UpdateConfig) (chan Update, error) {
10	bot.Updates = make(chan Update, 100)
11
12	go func() {
13		for {
14			updates, err := bot.GetUpdates(config)
15			if err != nil {
16				if bot.Debug {
17					panic(err)
18				} else {
19					log.Println(err)
20					log.Println("Failed to get updates, retrying in 3 seconds...")
21					time.Sleep(time.Second * 3)
22				}
23
24				continue
25			}
26
27			for _, update := range updates {
28				if update.UpdateID >= config.Offset {
29					config.Offset = update.UpdateID + 1
30					bot.Updates <- update
31				}
32			}
33		}
34	}()
35
36	return bot.Updates, nil
37}