@@ -110,6 +110,74 @@ func main() {
110110}
111111```
112112
113+ If you need to publish your bot on AWS Lambda(or something like it) and AWS API Gateway,
114+ you can use such example:
115+
116+ In this code used AWS Lambda Go net/http server adapter [ algnhsa] ( https://github.com/akrylysov/algnhsa )
117+
118+ ``` go
119+ package main
120+
121+ import (
122+ " github.com/akrylysov/algnhsa"
123+ " github.com/go-telegram-bot-api/telegram-bot-api"
124+ " log"
125+ " net/http"
126+ )
127+
128+ func answer (w http .ResponseWriter , r *http .Request ) {
129+ bot , err := tgbotapi.NewBotAPI (" MyAwesomeBotToken" )
130+ if err != nil {
131+ log.Fatal (err)
132+ }
133+
134+ bot.Debug = true
135+ updates := bot.ListenForWebhookRespReqFormat (w, r)
136+ for update := range updates {
137+ if update.Message == nil {
138+ continue
139+ }
140+ log.Printf (" [%s ] %s " , update.Message .From .UserName , update.Message .Text )
141+
142+ msg := tgbotapi.NewMessage (update.Message .Chat .ID , update.Message .Text )
143+ msg.ReplyToMessageID = update.Message .MessageID
144+ _ , err := bot.Send (msg)
145+ if err != nil {
146+ log.Printf (" Error send message: %s | Error: %s " , msg.Text , err.Error ())
147+ }
148+ }
149+ }
150+
151+ func setWebhook (_ http .ResponseWriter , _ *http .Request ) {
152+ bot , err := tgbotapi.NewBotAPI (" MyAwesomeBotToken" )
153+ if err != nil {
154+ log.Fatal (err)
155+ }
156+
157+ bot.Debug = true
158+
159+ log.Printf (" Authorized on account %s " , bot.Self .UserName )
160+
161+ _, err = bot.SetWebhook (tgbotapi.NewWebhook (" https://your_api_gateway_address.com/" +bot.Token ))
162+ if err != nil {
163+ log.Fatal (err)
164+ }
165+ info , err := bot.GetWebhookInfo ()
166+ if err != nil {
167+ log.Fatal (err)
168+ }
169+ if info.LastErrorDate != 0 {
170+ log.Printf (" Telegram callback failed: %s " , info.LastErrorMessage )
171+ }
172+ }
173+
174+ func main () {
175+ http.HandleFunc (" /set_webhook" , setWebhook)
176+ http.HandleFunc (" /MyAwesomeBotToken" , answer)
177+ algnhsa.ListenAndServe (http.DefaultServeMux , nil )
178+ }
179+ ```
180+
113181If you need, you may generate a self signed certficate, as this requires
114182HTTPS / TLS. The above example tells Telegram that this is your
115183certificate and that it should be trusted, even though it is not
0 commit comments