58 lines
1.0 KiB
Go
58 lines
1.0 KiB
Go
package models
|
|
|
|
import (
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/beego/beego/v2/core/logs"
|
|
tb "gopkg.in/tucnak/telebot.v2"
|
|
)
|
|
|
|
var b *tb.Bot
|
|
|
|
func initTgBot() {
|
|
go func() {
|
|
if Config.TelegramBotToken == "" {
|
|
return
|
|
}
|
|
var err error
|
|
b, err = tb.NewBot(tb.Settings{
|
|
Token: Config.TelegramBotToken,
|
|
Poller: &tb.LongPoller{Timeout: 10 * time.Second},
|
|
})
|
|
if err != nil {
|
|
logs.Warn("监听tgbot失败")
|
|
return
|
|
}
|
|
b.Handle(tb.OnText, func(m *tb.Message) {
|
|
rt := handleMessage(m.Text, "tg", m.Sender.ID)
|
|
switch rt.(type) {
|
|
case string:
|
|
b.Send(m.Sender, rt.(string))
|
|
case *http.Response:
|
|
b.SendAlbum(m.Sender, tb.Album{&tb.Photo{File: tb.FromReader(rt.(*http.Response).Body)}})
|
|
}
|
|
})
|
|
logs.Info("监听tgbot")
|
|
b.Start()
|
|
}()
|
|
}
|
|
|
|
func tgBotNotify(msg string) {
|
|
if b == nil {
|
|
return
|
|
}
|
|
if Config.TelegramUserID == 0 {
|
|
logs.Warn("tgbot未绑定用id")
|
|
return
|
|
}
|
|
b.Send(&tb.User{ID: Config.TelegramUserID}, msg)
|
|
}
|
|
|
|
func SendTgMsg(id int, msg string) {
|
|
if b == nil || id == 0 {
|
|
return
|
|
}
|
|
b.Send(&tb.User{ID: id}, msg)
|
|
}
|