MyPackBot/internal/updates/channel.go

69 lines
1.5 KiB
Go
Raw Normal View History

package updates
import (
"fmt"
2018-06-24 17:37:20 +00:00
"net/url"
log "github.com/kirillDanshin/dlog"
2018-06-24 17:37:20 +00:00
"gitlab.com/toby3d/mypackbot/internal/bot"
"gitlab.com/toby3d/mypackbot/internal/config"
"gitlab.com/toby3d/mypackbot/internal/models"
tg "gitlab.com/toby3d/telegram"
)
// Channel return webhook or long polling channel with bot updates
2018-06-24 17:37:20 +00:00
func Channel(webhookMode bool) (updates tg.UpdatesChannel, err error) {
log.Ln("Preparing channel for updates...")
if !webhookMode {
log.Ln("Use LongPolling updates")
2018-06-24 17:37:20 +00:00
var info *tg.WebhookInfo
info, err = bot.Bot.GetWebhookInfo()
if err != nil {
return
}
if info.URL != "" {
log.Ln("Deleting webhook...")
2018-06-24 17:37:20 +00:00
_, err = bot.Bot.DeleteWebhook()
return
}
2018-06-24 17:37:20 +00:00
updates = bot.Bot.NewLongPollingChannel(&tg.GetUpdatesParameters{
Offset: 0,
Limit: 100,
Timeout: 60,
AllowedUpdates: models.AllowedUpdates,
})
2018-06-24 17:37:20 +00:00
return
}
set, err := url.Parse(config.Config.GetString("telegram.webhook.set"))
if err != nil {
return nil, err
}
listen := config.Config.GetString("telegram.webhook.listen")
serve := config.Config.GetString("telegram.webhook.serve")
log.Ln(
"Trying set webhook on address:",
2018-06-24 17:37:20 +00:00
fmt.Sprint(set.String(), bot.Bot.AccessToken),
)
log.Ln("Creating new webhook...")
2018-06-24 17:37:20 +00:00
params := tg.NewWebhook(fmt.Sprint(set, listen, bot.Bot.AccessToken), nil)
params.MaxConnections = 40
params.AllowedUpdates = models.AllowedUpdates
updates = bot.Bot.NewWebhookChannel(
set,
params, // params
"", // certFile
"", // keyFile
serve, // serve
)
2018-06-24 17:37:20 +00:00
return
}