Move bot config to separate struct.
This commit is contained in:
parent
aa0cdf3719
commit
1b1af39b61
8 changed files with 353 additions and 286 deletions
181
example/example_bot.go
Normal file
181
example/example_bot.go
Normal file
|
@ -0,0 +1,181 @@
|
|||
package example
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/eli-l/telegram-bot-api/v7"
|
||||
)
|
||||
|
||||
func ExampleNewBotAPI() {
|
||||
cfg := tgbotapi.NewBotConfig("MyAwesomeBotToken", tgbotapi.APIEndpoint, true)
|
||||
bot := tgbotapi.NewBot(cfg)
|
||||
|
||||
if err := bot.Validate(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
usr, err := bot.GetMe()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Printf("Authorized on account %s", usr.UserName)
|
||||
u := tgbotapi.NewUpdate(0)
|
||||
u.Timeout = 60
|
||||
|
||||
updates := bot.GetUpdatesChan(u)
|
||||
|
||||
// Optional: wait for updates and clear them if you don't want to handle
|
||||
// a large backlog of old messages
|
||||
time.Sleep(time.Millisecond * 500)
|
||||
updates.Clear()
|
||||
|
||||
for update := range updates {
|
||||
if update.Message == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
fmt.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)
|
||||
|
||||
msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text)
|
||||
msg.ReplyParameters.MessageID = update.Message.MessageID
|
||||
|
||||
_, err := bot.Send(msg)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func ExampleNewWebhook() {
|
||||
cfg := tgbotapi.NewBotConfig("MyAwesomeBotToken", tgbotapi.APIEndpoint, true)
|
||||
bot := tgbotapi.NewBot(cfg)
|
||||
|
||||
if err := bot.Validate(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
usr, err := bot.GetMe()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Printf("Authorized on account %s", usr.UserName)
|
||||
|
||||
wh, err := tgbotapi.NewWebhookWithCert("https://www.google.com:8443/"+cfg.GetToken(), tgbotapi.FilePath("cert.pem"))
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
_, err = bot.Request(wh)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
info, err := bot.GetWebhookInfo()
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if info.LastErrorDate != 0 {
|
||||
fmt.Printf("failed to set webhook: %s", info.LastErrorMessage)
|
||||
}
|
||||
|
||||
updates := bot.ListenForWebhook("/" + cfg.GetToken())
|
||||
go http.ListenAndServeTLS("0.0.0.0:8443", "cert.pem", "key.pem", nil)
|
||||
|
||||
for update := range updates {
|
||||
fmt.Printf("%+v\n", update)
|
||||
}
|
||||
}
|
||||
|
||||
func ExampleWebhookHandler() {
|
||||
cfg := tgbotapi.NewBotConfig("MyAwesomeBotToken", tgbotapi.APIEndpoint, true)
|
||||
bot := tgbotapi.NewBot(cfg)
|
||||
|
||||
if err := bot.Validate(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
usr, err := bot.GetMe()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Printf("Authorized on account %s", usr.UserName)
|
||||
|
||||
wh, err := tgbotapi.NewWebhookWithCert("https://www.google.com:8443/"+cfg.GetToken(), tgbotapi.FilePath("cert.pem"))
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
_, err = bot.Request(wh)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
info, err := bot.GetWebhookInfo()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if info.LastErrorDate != 0 {
|
||||
fmt.Printf("[Telegram callback failed]%s", info.LastErrorMessage)
|
||||
}
|
||||
|
||||
http.HandleFunc("/"+cfg.GetToken(), func(w http.ResponseWriter, r *http.Request) {
|
||||
update, err := bot.HandleUpdate(r)
|
||||
if err != nil {
|
||||
fmt.Printf("%+v\n", err.Error())
|
||||
} else {
|
||||
fmt.Printf("%+v\n", *update)
|
||||
}
|
||||
})
|
||||
|
||||
go http.ListenAndServeTLS("0.0.0.0:8443", "./tests/cert.pem", "./tests/key.pem", nil)
|
||||
}
|
||||
|
||||
func ExampleInlineConfig() {
|
||||
cfg := tgbotapi.NewBotConfig("MyAwesomeBotToken", tgbotapi.APIEndpoint, true)
|
||||
bot := tgbotapi.NewBot(cfg)
|
||||
|
||||
if err := bot.Validate(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
usr, err := bot.GetMe()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Printf("Authorized on account %s", usr.UserName)
|
||||
|
||||
u := tgbotapi.NewUpdate(0)
|
||||
u.Timeout = 60
|
||||
|
||||
updates := bot.GetUpdatesChan(u)
|
||||
|
||||
for update := range updates {
|
||||
if update.InlineQuery == nil { // if no inline query, ignore it
|
||||
continue
|
||||
}
|
||||
|
||||
article := tgbotapi.NewInlineQueryResultArticle(update.InlineQuery.ID, "Echo", update.InlineQuery.Query)
|
||||
article.Description = update.InlineQuery.Query
|
||||
|
||||
inlineConf := tgbotapi.InlineConfig{
|
||||
InlineQueryID: update.InlineQuery.ID,
|
||||
IsPersonal: true,
|
||||
CacheTime: 0,
|
||||
Results: []interface{}{article},
|
||||
}
|
||||
|
||||
if _, err := bot.Request(inlineConf); err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue