69 lines
1.5 KiB
Go
69 lines
1.5 KiB
Go
package updates
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
|
|
log "github.com/kirillDanshin/dlog"
|
|
"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
|
|
func Channel(webhookMode bool) (updates tg.UpdatesChannel, err error) {
|
|
log.Ln("Preparing channel for updates...")
|
|
if !webhookMode {
|
|
log.Ln("Use LongPolling updates")
|
|
|
|
var info *tg.WebhookInfo
|
|
info, err = bot.Bot.GetWebhookInfo()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
if info.URL != "" {
|
|
log.Ln("Deleting webhook...")
|
|
_, err = bot.Bot.DeleteWebhook()
|
|
return
|
|
}
|
|
|
|
updates = bot.Bot.NewLongPollingChannel(&tg.GetUpdatesParameters{
|
|
Offset: 0,
|
|
Limit: 100,
|
|
Timeout: 60,
|
|
AllowedUpdates: models.AllowedUpdates,
|
|
})
|
|
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:",
|
|
fmt.Sprint(set.String(), bot.Bot.AccessToken),
|
|
)
|
|
|
|
log.Ln("Creating new webhook...")
|
|
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
|
|
)
|
|
|
|
return
|
|
}
|