Merge pull request #270 from Gropher/master

Added HandleUpdate method for serverless deploy. Fixes #260
bot-api-6.1
Syfaro 2020-07-20 13:41:14 -05:00 committed by GitHub
commit 8717c40e7c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 7 deletions

19
bot.go
View File

@ -552,18 +552,23 @@ func (bot *BotAPI) ListenForWebhook(pattern string) UpdatesChannel {
ch := make(chan Update, bot.Buffer) ch := make(chan Update, bot.Buffer)
http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) { http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) {
bytes, _ := ioutil.ReadAll(r.Body) ch <- bot.HandleUpdate(w, r)
r.Body.Close()
var update Update
json.Unmarshal(bytes, &update)
ch <- update
}) })
return ch 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()
var update Update
json.Unmarshal(bytes, &update)
return update
}
// AnswerInlineQuery sends a response to an inline query. // AnswerInlineQuery sends a response to an inline query.
// //
// Note that you must respond to an inline query within 30 seconds. // Note that you must respond to an inline query within 30 seconds.

View File

@ -593,6 +593,35 @@ func ExampleNewWebhook() {
} }
} }
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() { func ExampleAnswerInlineQuery() {
bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken") // create new bot bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken") // create new bot
if err != nil { if err != nil {