|
|
|
@ -1,4 +1,4 @@ |
|
|
|
|
# Golang bindings for the Telegram Bot API |
|
|
|
|
# Golang bindings for the Telegram Bot API with support socks5 proxy |
|
|
|
|
|
|
|
|
|
[](http://godoc.org/github.com/go-telegram-bot-api/telegram-bot-api) |
|
|
|
|
[](https://travis-ci.org/go-telegram-bot-api/telegram-bot-api) |
|
|
|
@ -51,68 +51,4 @@ func main() { |
|
|
|
|
updates, err := bot.GetUpdatesChan(u) |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
bot.Send(msg) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
If you need to use webhooks (if you wish to run on Google App Engine), |
|
|
|
|
you may use a slightly different method. |
|
|
|
|
|
|
|
|
|
```go |
|
|
|
|
package main |
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"gopkg.in/telegram-bot-api.v4" |
|
|
|
|
"log" |
|
|
|
|
"net/http" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
func main() { |
|
|
|
|
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) |
|
|
|
|
} |
|
|
|
|
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, you may generate a self signed certficate, 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 |
|
|
|
|
properly signed. |
|
|
|
|
|
|
|
|
|
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 3560 -subj "//O=Org\CN=Test" -nodes |
|
|
|
|
|
|
|
|
|
Now that [Let's Encrypt](https://letsencrypt.org) has entered public beta, |
|
|
|
|
you may wish to generate your free TLS certificate there. |
|
|
|
|
if |
|
|
|
|