Skip to content

Commit

Permalink
Update README.
Browse files Browse the repository at this point in the history
  • Loading branch information
Syfaro committed Dec 4, 2021
1 parent 2448930 commit 55f58bf
Showing 1 changed file with 17 additions and 85 deletions.
102 changes: 17 additions & 85 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
[![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
something with plugins and command handlers without having to design
Expand Down Expand Up @@ -45,28 +47,21 @@ func main() {
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.

Expand All @@ -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() {
Expand All @@ -90,17 +85,22 @@ func main() {

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)

Expand All @@ -110,74 +110,6 @@ func main() {
}
```

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)
}
```

If you need, you may generate a self-signed certificate, as this requires
HTTPS / TLS. The above example tells Telegram that this is your
certificate and that it should be trusted, even though it is not
Expand Down

0 comments on commit 55f58bf

Please sign in to comment.