all repos — telegram-bot-api @ 55f58bf98ebe0cb57c449c4dfa5f2e2ec10d33b4

Golang bindings for the Telegram Bot API

Update README.
Syfaro syfaro@huefox.com
Fri, 03 Dec 2021 21:22:53 -0500
commit

55f58bf98ebe0cb57c449c4dfa5f2e2ec10d33b4

parent

24489300eeddd40eae3ca241f584e921335585ad

1 files changed, 17 insertions(+), 85 deletions(-)

jump to
M README.mdREADME.md

@@ -3,9 +3,11 @@

[![Go Reference](https://pkg.go.dev/badge/github.com/go-telegram-bot-api/telegram-bot-api/v5.svg)](https://pkg.go.dev/github.com/go-telegram-bot-api/telegram-bot-api/v5) [![Test](https://github.com/go-telegram-bot-api/telegram-bot-api/actions/workflows/test.yml/badge.svg)](https://github.com/go-telegram-bot-api/telegram-bot-api/actions/workflows/test.yml) -All methods are fairly self-explanatory, and reading the [godoc](http://godoc.org/github.com/go-telegram-bot-api/telegram-bot-api) page should +All methods are fairly self-explanatory, and reading the [godoc](https://pkg.go.dev/github.com/go-telegram-bot-api/telegram-bot-api/v5) page should explain everything. If something isn't clear, open an issue or submit a pull request. + +There are more tutorials and high-level information on the website, [go-telegram-bot-api.dev](https://go-telegram-bot-api.dev). The scope of this project is just to provide a wrapper around the API without any additional features. There are other projects for creating

@@ -45,27 +47,20 @@

u := tgbotapi.NewUpdate(0) u.Timeout = 60 - updates, err := bot.GetUpdatesChan(u) + updates := bot.GetUpdatesChan(u) for update := range updates { - if update.Message == nil { // ignore any non-Message Updates - continue - } + if update.Message != nil { // If we got a message + log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text) - log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text) - - msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text) - msg.ReplyToMessageID = update.Message.MessageID + msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text) + msg.ReplyToMessageID = update.Message.MessageID - bot.Send(msg) + bot.Send(msg) + } } } ``` - -There are more examples on the [site](https://go-telegram-bot-api.dev/) -with detailed information on how to do many kinds of things. -It's a great place to get started on using keyboards, commands, or other -kinds of reply markup. If you need to use webhooks (if you wish to run on Google App Engine), you may use a slightly different method.

@@ -77,7 +72,7 @@ import (

"log" "net/http" - "github.com/go-telegram-bot-api/telegram-bot-api" + "github.com/go-telegram-bot-api/telegram-bot-api/v5" ) func main() {

@@ -90,91 +85,28 @@ 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")) + wh, _ := tgbotapi.NewWebhookWithCert("https://www.google.com:8443/"+bot.Token, "cert.pem") + + _, err = bot.SetWebhook(wh) 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) } + updates := bot.ListenForWebhook("/" + bot.Token) go http.ListenAndServeTLS("0.0.0.0:8443", "cert.pem", "key.pem", nil) for update := range updates { log.Printf("%+v\n", update) } -} -``` - -If you need to publish your bot on AWS Lambda(or something like it) and AWS API Gateway, -you can use such example: - -In this code used AWS Lambda Go net/http server adapter [algnhsa](https://github.com/akrylysov/algnhsa) - -```go -package main - -import ( - "github.com/akrylysov/algnhsa" - "github.com/go-telegram-bot-api/telegram-bot-api" - "log" - "net/http" -) - -func answer(w http.ResponseWriter, r *http.Request) { - bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken") - if err != nil { - log.Fatal(err) - } - - bot.Debug = true - updates := bot.ListenForWebhookRespReqFormat(w, r) - for update := range updates { - if update.Message == nil { - continue - } - log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text) - - msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text) - msg.ReplyToMessageID = update.Message.MessageID - _, err := bot.Send(msg) - if err != nil { - log.Printf("Error send message: %s | Error: %s", msg.Text, err.Error()) - } - } -} - -func setWebhook(_ http.ResponseWriter, _ *http.Request) { - 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.NewWebhook("https://your_api_gateway_address.com/"+bot.Token)) - 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) - } -} - -func main() { - http.HandleFunc("/set_webhook", setWebhook) - http.HandleFunc("/MyAwesomeBotToken", answer) - algnhsa.ListenAndServe(http.DefaultServeMux, nil) } ```