all repos — telegram-bot-api @ aea186240dd3e8d1829b19797a6bcabbf7af79f1

Golang bindings for the Telegram Bot API

README.md (view raw)

  1# Golang bindings for the Telegram Bot API
  2
  3[![GoDoc](https://godoc.org/github.com/go-telegram-bot-api/telegram-bot-api?status.svg)](http://godoc.org/github.com/go-telegram-bot-api/telegram-bot-api)
  4[![Travis](https://travis-ci.org/go-telegram-bot-api/telegram-bot-api.svg)](https://travis-ci.org/go-telegram-bot-api/telegram-bot-api)
  5
  6All methods are fairly self explanatory, and reading the [godoc](http://godoc.org/github.com/go-telegram-bot-api/telegram-bot-api) page should
  7explain everything. If something isn't clear, open an issue or submit
  8a pull request.
  9
 10The scope of this project is just to provide a wrapper around the API
 11without any additional features. There are other projects for creating
 12something with plugins and command handlers without having to design
 13all that yourself.
 14
 15Join [the development group](https://telegram.me/go_telegram_bot_api) if
 16you want to ask questions or discuss development.
 17
 18## Example
 19
 20First, ensure the library is installed and up to date by running
 21`go get -u github.com/go-telegram-bot-api/telegram-bot-api`.
 22
 23This is a very simple bot that just displays any gotten updates,
 24then replies it to that chat.
 25
 26```go
 27package main
 28
 29import (
 30	"log"
 31
 32	"github.com/go-telegram-bot-api/telegram-bot-api"
 33)
 34
 35func main() {
 36	bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken")
 37	if err != nil {
 38		log.Panic(err)
 39	}
 40
 41	bot.Debug = true
 42
 43	log.Printf("Authorized on account %s", bot.Self.UserName)
 44
 45	u := tgbotapi.NewUpdate(0)
 46	u.Timeout = 60
 47
 48	updates, err := bot.GetUpdatesChan(u)
 49
 50	for update := range updates {
 51		if update.Message == nil { // ignore any non-Message Updates
 52			continue
 53		}
 54
 55		log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)
 56
 57		msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text)
 58		msg.ReplyToMessageID = update.Message.MessageID
 59
 60		bot.Send(msg)
 61	}
 62}
 63```
 64
 65There are more examples on the [wiki](https://github.com/go-telegram-bot-api/telegram-bot-api/wiki)
 66with detailed information on how to do many different kinds of things.
 67It's a great place to get started on using keyboards, commands, or other
 68kinds of reply markup.
 69
 70If you need to use webhooks (if you wish to run on Google App Engine),
 71you may use a slightly different method.
 72
 73```go
 74package main
 75
 76import (
 77	"log"
 78	"net/http"
 79
 80	"github.com/go-telegram-bot-api/telegram-bot-api"
 81)
 82
 83func main() {
 84	bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken")
 85	if err != nil {
 86		log.Fatal(err)
 87	}
 88
 89	bot.Debug = true
 90
 91	log.Printf("Authorized on account %s", bot.Self.UserName)
 92
 93	_, err = bot.SetWebhook(tgbotapi.NewWebhookWithCert("https://www.google.com:8443/"+bot.Token, "cert.pem"))
 94	if err != nil {
 95		log.Fatal(err)
 96	}
 97	info, err := bot.GetWebhookInfo()
 98	if err != nil {
 99		log.Fatal(err)
100	}
101	if info.LastErrorDate != 0 {
102		log.Printf("Telegram callback failed: %s", info.LastErrorMessage)
103	}
104	updates := bot.ListenForWebhook("/" + bot.Token)
105	go http.ListenAndServeTLS("0.0.0.0:8443", "cert.pem", "key.pem", nil)
106
107	for update := range updates {
108		log.Printf("%+v\n", update)
109	}
110}
111```
112
113If you need, you may generate a self signed certficate, as this requires
114HTTPS / TLS. The above example tells Telegram that this is your
115certificate and that it should be trusted, even though it is not
116properly signed.
117
118    openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 3560 -subj "//O=Org\CN=Test" -nodes
119
120Now that [Let's Encrypt](https://letsencrypt.org) is available,
121you may wish to generate your free TLS certificate there.