all repos — telegram-bot-api @ d4b2e3c2136aa63ffce72c297c97a9c3e0a06cc8

Golang bindings for the Telegram Bot API

Added HandleUpdate method for serverless deploy
gropher grophen@gmail.com
Wed, 18 Sep 2019 03:34:37 +0300
commit

d4b2e3c2136aa63ffce72c297c97a9c3e0a06cc8

parent

b33efeebc78563cfeddf19563781cffb16aaabdf

2 files changed, 41 insertions(+), 7 deletions(-)

jump to
M bot.gobot.go

@@ -533,16 +533,21 @@ func (bot *BotAPI) ListenForWebhook(pattern string) UpdatesChannel {

ch := make(chan Update, bot.Buffer) http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) { - bytes, _ := ioutil.ReadAll(r.Body) - r.Body.Close() + ch <- bot.HandleUpdate(w, r) + }) - var update Update - json.Unmarshal(bytes, &update) + return ch +} + +// HandleUpdate parses and returns update received via webhook +func (bot *BotAPI) HandleUpdate(res http.ResponseWriter, req *http.Request) Update { + bytes, _ := ioutil.ReadAll(req.Body) + req.Body.Close() - ch <- update - }) + var update Update + json.Unmarshal(bytes, &update) - return ch + return update } // AnswerInlineQuery sends a response to an inline query.
M bot_test.gobot_test.go

@@ -593,6 +593,35 @@ log.Printf("%+v\n", update)

} } +func ExampleWebhookHandler() { + bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken") + if err != nil { + log.Fatal(err) + } + + bot.Debug = true + + log.Printf("Authorized on account %s", bot.Self.UserName) + + _, err = bot.SetWebhook(tgbotapi.NewWebhookWithCert("https://www.google.com:8443/"+bot.Token, "cert.pem")) + if err != nil { + log.Fatal(err) + } + info, err := bot.GetWebhookInfo() + if err != nil { + log.Fatal(err) + } + if info.LastErrorDate != 0 { + log.Printf("[Telegram callback failed]%s", info.LastErrorMessage) + } + + http.HandleFunc("/" + bot.Token, func(w http.ResponseWriter, r *http.Request) { + log.Printf("%+v\n", bot.HandleUpdate(w, r)) + }) + + go http.ListenAndServeTLS("0.0.0.0:8443", "cert.pem", "key.pem", nil) +} + func ExampleAnswerInlineQuery() { bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken") // create new bot if err != nil {