one-api/common/notify/notifier.go
Buer a3719cd78a
feat: add notifier (#144)
* ♻️ refactor: email refactor

*  feat: add notifier
2024-04-09 15:00:06 +08:00

99 lines
2.3 KiB
Go

package notify
import (
"context"
"one-api/common"
"one-api/common/notify/channel"
"github.com/spf13/viper"
)
type Notifier interface {
Send(context.Context, string, string) error
Name() string
}
func InitNotifier() {
InitEmailNotifier()
InitDingTalkNotifier()
InitLarkNotifier()
InitPushdeerNotifier()
InitTelegramNotifier()
}
func InitEmailNotifier() {
if viper.GetBool("notify.email.disable") {
common.SysLog("email notifier disabled")
return
}
smtp_to := viper.GetString("notify.email.smtp_to")
emailNotifier := channel.NewEmail(smtp_to)
AddNotifiers(emailNotifier)
common.SysLog("email notifier enable")
}
func InitDingTalkNotifier() {
access_token := viper.GetString("notify.dingtalk.token")
secret := viper.GetString("notify.dingtalk.secret")
keyWord := viper.GetString("notify.dingtalk.keyWord")
if access_token == "" || (secret == "" && keyWord == "") {
return
}
var dingTalkNotifier Notifier
if secret != "" {
dingTalkNotifier = channel.NewDingTalk(access_token, secret)
} else {
dingTalkNotifier = channel.NewDingTalkWithKeyWord(access_token, keyWord)
}
AddNotifiers(dingTalkNotifier)
common.SysLog("dingtalk notifier enable")
}
func InitLarkNotifier() {
access_token := viper.GetString("notify.lark.token")
secret := viper.GetString("notify.lark.secret")
keyWord := viper.GetString("notify.lark.keyWord")
if access_token == "" || (secret == "" && keyWord == "") {
return
}
var larkNotifier Notifier
if secret != "" {
larkNotifier = channel.NewLark(access_token, secret)
} else {
larkNotifier = channel.NewLarkWithKeyWord(access_token, keyWord)
}
AddNotifiers(larkNotifier)
common.SysLog("lark notifier enable")
}
func InitPushdeerNotifier() {
pushkey := viper.GetString("notify.pushdeer.pushkey")
if pushkey == "" {
return
}
pushdeerNotifier := channel.NewPushdeer(pushkey, viper.GetString("notify.pushdeer.url"))
AddNotifiers(pushdeerNotifier)
common.SysLog("pushdeer notifier enable")
}
func InitTelegramNotifier() {
bot_token := viper.GetString("notify.telegram.bot_api_key")
chat_id := viper.GetString("notify.telegram.chat_id")
if bot_token == "" || chat_id == "" {
return
}
telegramNotifier := channel.NewTelegram(bot_token, chat_id)
AddNotifiers(telegramNotifier)
common.SysLog("telegram notifier enable")
}