/
alert.go
82 lines (64 loc) · 1.97 KB
/
alert.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
Copyright paskal.maksim@gmail.com
Licensed under the Apache License, Version 2.0 (the "License")
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package alert
import (
"strconv"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
"github.com/maksim-paskal/aks-node-termination-handler/pkg/config"
"github.com/maksim-paskal/aks-node-termination-handler/pkg/template"
"github.com/pkg/errors"
log "github.com/sirupsen/logrus"
)
var bot *tgbotapi.BotAPI
func Init() error {
if len(*config.Get().TelegramToken) == 0 {
log.Warning("not sending Telegram message, no token")
return nil
}
var err error
bot, err = tgbotapi.NewBotAPI(*config.Get().TelegramToken)
if err != nil {
return errors.Wrap(err, "error in NewBotAPI")
}
log.Printf("Authorized on account %s", bot.Self.UserName)
return nil
}
// healthcheck.
func Ping() error {
if len(*config.Get().TelegramToken) != 0 {
if _, err := bot.GetMe(); err != nil {
return errors.Wrap(err, "error in bot.GetMe")
}
}
return nil
}
func SendTelegram(obj *template.MessageType) error {
if len(*config.Get().TelegramToken) == 0 {
return nil
}
messageText, err := template.Message(obj)
if err != nil {
return errors.Wrap(err, "error in template.Message")
}
chatID, err := strconv.Atoi(*config.Get().TelegramChatID)
if err != nil {
return errors.Wrap(err, "error converting chatID")
}
msg := tgbotapi.NewMessage(int64(chatID), messageText)
result, err := bot.Send(msg)
if err != nil {
return errors.Wrap(err, "error in bot.Send")
}
log.Infof("Telegram MessageID=%d", result.MessageID)
return nil
}