diff --git a/plugin/minecraftobserver/minecraftobserver.go b/plugin/minecraftobserver/minecraftobserver.go index c0d6d393..65b80b5d 100644 --- a/plugin/minecraftobserver/minecraftobserver.go +++ b/plugin/minecraftobserver/minecraftobserver.go @@ -3,13 +3,14 @@ package minecraftobserver import ( "fmt" + "strings" + "time" + ctrl "github.com/FloatTech/zbpctrl" "github.com/FloatTech/zbputils/control" zbpCtxExt "github.com/FloatTech/zbputils/ctxext" zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" - "strings" - "time" ) const ( @@ -55,7 +56,7 @@ func init() { } msg = append(msg, message.Text(textMsg)) if id := ctx.Send(msg); id.ID() == 0 { - //logrus.Errorln(logPrefix + "Send failed") + // logrus.Errorln(logPrefix + "Send failed") return } }) @@ -81,7 +82,7 @@ func init() { return } if sid := ctx.Send(message.Text(fmt.Sprintf("服务器 %s 订阅添加成功", addr))); sid.ID() == 0 { - //logrus.Errorln(logPrefix + "Send failed") + // logrus.Errorln(logPrefix + "Send failed") return } // 成功后立即发送一次状态 @@ -92,7 +93,7 @@ func init() { } msg = append(msg, message.Text(textMsg)) if id := ctx.Send(msg); id.ID() == 0 { - //logrus.Errorln(logPrefix + "Send failed") + // logrus.Errorln(logPrefix + "Send failed") return } }) @@ -125,7 +126,7 @@ func init() { stringBuilder.WriteString(fmt.Sprintf("服务器地址: %s\n", v.ServerAddr)) } if sid := ctx.Send(message.Text(stringBuilder.String())); sid.ID() == 0 { - //logrus.Errorln(logPrefix + "Send failed") + // logrus.Errorln(logPrefix + "Send failed") return } }) @@ -187,7 +188,7 @@ func init() { ctx.SendPrivateMessage(su, message.Text(logPrefix, "获取订阅列表失败...")) return } - //logrus.Debugln(logPrefix+"global get ", len(serverList), " subscribe(s)") + // logrus.Debugln(logPrefix+"global get ", len(serverList), " subscribe(s)") serverMap := make(map[string][]serverSubscribe) for _, v := range serverList { serverMap[v.ServerAddr] = append(serverMap[v.ServerAddr], v) @@ -197,12 +198,12 @@ func init() { // 查询当前存储的状态 storedStatus, sErr := dbInstance.getServerStatus(subAddr) if sErr != nil { - //logrus.Errorln(logPrefix+fmt.Sprintf("getServerStatus ServerAddr(%s) error: ", subAddr), sErr) + // logrus.Errorln(logPrefix+fmt.Sprintf("getServerStatus ServerAddr(%s) error: ", subAddr), sErr) continue } isChanged, changedNotifyMsg, sErr := singleServerScan(storedStatus) if sErr != nil { - //logrus.Errorln(logPrefix+"singleServerScan error: ", sErr) + // logrus.Errorln(logPrefix+"singleServerScan error: ", sErr) continue } if !isChanged { @@ -236,12 +237,12 @@ func singleServerScan(oldSubStatus *serverStatus) (changed bool, notifyMsg messa // 获取服务器状态 & 检查是否需要更新 rawServerStatus, err := getMinecraftServerStatus(oldSubStatus.ServerAddr) if err != nil { - //logrus.Warnln(logPrefix+"getMinecraftServerStatus error: ", err) + // logrus.Warnln(logPrefix+"getMinecraftServerStatus error: ", err) err = nil // 计数器没有超限,增加计数器并跳过 if cnt, ts := addPingServerUnreachableCounter(oldSubStatus.ServerAddr, time.Now()); cnt < pingServerUnreachableCounterThreshold && - time.Now().Sub(ts) < pingServerUnreachableCounterTimeThreshold { - //logrus.Warnln(logPrefix+"server ", oldSubStatus.ServerAddr, " unreachable, counter: ", cnt, " ts:", ts) + time.Since(ts) < pingServerUnreachableCounterTimeThreshold { + // logrus.Warnln(logPrefix+"server ", oldSubStatus.ServerAddr, " unreachable, counter: ", cnt, " ts:", ts) return } // 不可达计数器已经超限,则更新服务器状态 @@ -252,17 +253,17 @@ func singleServerScan(oldSubStatus *serverStatus) (changed bool, notifyMsg messa newSubStatus = rawServerStatus.genServerSubscribeSchema(oldSubStatus.ServerAddr, oldSubStatus.ID) } if newSubStatus == nil { - //logrus.Errorln(logPrefix + "newSubStatus is nil") + // logrus.Errorln(logPrefix + "newSubStatus is nil") return } // 检查是否有订阅信息变化 if oldSubStatus.isServerStatusSpecChanged(newSubStatus) { - //logrus.Warnf(logPrefix+"server subscribe spec changed: (%+v) -> (%+v)", oldSubStatus, newSubStatus) + // logrus.Warnf(logPrefix+"server subscribe spec changed: (%+v) -> (%+v)", oldSubStatus, newSubStatus) changed = true // 更新数据库 err = dbInstance.updateServerStatus(newSubStatus) if err != nil { - //logrus.Errorln(logPrefix+"updateServerSubscribeStatus error: ", err) + // logrus.Errorln(logPrefix+"updateServerSubscribeStatus error: ", err) return } // 纯文本信息 diff --git a/plugin/minecraftobserver/model.go b/plugin/minecraftobserver/model.go index 763d5278..f4a937cf 100644 --- a/plugin/minecraftobserver/model.go +++ b/plugin/minecraftobserver/model.go @@ -4,11 +4,12 @@ import ( "crypto/md5" "encoding/hex" "fmt" + "strings" + "time" + "github.com/Tnze/go-mc/chat" "github.com/google/uuid" "github.com/wdvxdr1123/ZeroBot/utils/helper" - "strings" - "time" ) // ==================== @@ -147,7 +148,7 @@ type serverPingAndListResp struct { // and prepended with "data:image/png;base64,". type icon string -//func (i icon) toImage() (icon image.Image, err error) { +// func (i icon) toImage() (icon image.Image, err error) { // const prefix = "data:image/png;base64," // if !strings.HasPrefix(string(i), prefix) { // return nil, errors.Errorf("server icon should prepended with %s", prefix) @@ -237,13 +238,13 @@ func formatSubStatusChangeText(oldStatus, newStatus *serverStatus) string { // 状态由不可达变为可达,反之 if oldStatus.PingDelay == pingDelayUnreachable && newStatus.PingDelay != pingDelayUnreachable { msgBuilder.WriteString("\n-----[Ping延迟]-----\n") - msgBuilder.WriteString(fmt.Sprintf("[旧]\n超时\n")) + msgBuilder.WriteString("[旧]\n超时\n") msgBuilder.WriteString(fmt.Sprintf("[新]\n%v毫秒\n", newStatus.PingDelay)) } if oldStatus.PingDelay != pingDelayUnreachable && newStatus.PingDelay == pingDelayUnreachable { msgBuilder.WriteString("\n-----[Ping延迟]-----\n") msgBuilder.WriteString(fmt.Sprintf("[旧]\n%v毫秒\n", oldStatus.PingDelay)) - msgBuilder.WriteString(fmt.Sprintf("[新]\n超时\n")) + msgBuilder.WriteString("[新]\n超时\n") } return msgBuilder.String() } diff --git a/plugin/minecraftobserver/ping.go b/plugin/minecraftobserver/ping.go index e4691c5e..d691a562 100644 --- a/plugin/minecraftobserver/ping.go +++ b/plugin/minecraftobserver/ping.go @@ -2,9 +2,10 @@ package minecraftobserver import ( "encoding/json" + "time" + "github.com/RomiChan/syncx" "github.com/Tnze/go-mc/bot" - "time" ) var ( @@ -49,12 +50,12 @@ func getMinecraftServerStatus(addr string) (*serverPingAndListResp, error) { var s serverPingAndListResp resp, delay, err := bot.PingAndListTimeout(addr, time.Second*5) if err != nil { - //logrus.Errorln(logPrefix+"PingAndList error: ", err) + // logrus.Errorln(logPrefix+"PingAndList error: ", err) return nil, err } err = json.Unmarshal(resp, &s) if err != nil { - //logrus.Errorln(logPrefix+"Parse json response fail: ", err) + // logrus.Errorln(logPrefix+"Parse json response fail: ", err) return nil, err } s.Delay = delay diff --git a/plugin/minecraftobserver/store.go b/plugin/minecraftobserver/store.go index ff22fabd..0bc85960 100644 --- a/plugin/minecraftobserver/store.go +++ b/plugin/minecraftobserver/store.go @@ -2,13 +2,14 @@ package minecraftobserver import ( "errors" + "os" + "sync" + "time" + fcext "github.com/FloatTech/floatbox/ctxext" "github.com/jinzhu/gorm" zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" - "os" - "sync" - "time" ) const ( @@ -43,7 +44,7 @@ func initializeDB(dbpath string) error { } gdb, err := gorm.Open("sqlite3", dbpath) if err != nil { - //logrus.Errorln(logPrefix+"initializeDB ERROR: ", err) + // logrus.Errorln(logPrefix+"initializeDB ERROR: ", err) return err } gdb.AutoMigrate(&serverStatus{}, &serverSubscribe{}) @@ -60,10 +61,9 @@ var ( dbInstance *db // 开启并检查数据库链接 getDB = fcext.DoOnceOnSuccess(func(ctx *zero.Ctx) bool { - var err error - err = initializeDB(engine.DataFolder() + dbPath) + var err error = initializeDB(engine.DataFolder() + dbPath) if err != nil { - //logrus.Errorln(logPrefix+"initializeDB ERROR: ", err) + // logrus.Errorln(logPrefix+"initializeDB ERROR: ", err) ctx.SendChain(message.Text("[mc-ob] ERROR: ", err)) return false } @@ -81,7 +81,7 @@ func (d *db) getServerStatus(addr string) (*serverStatus, error) { } var ss serverStatus if err := d.sdb.Model(&ss).Where("server_addr = ?", addr).First(&ss).Error; err != nil { - //logrus.Errorln(logPrefix+"getServerStatus ERROR: ", err) + // logrus.Errorln(logPrefix+"getServerStatus ERROR: ", err) return nil, err } return &ss, nil @@ -100,7 +100,7 @@ func (d *db) updateServerStatus(ss *serverStatus) (err error) { ss.LastUpdate = time.Now().Unix() ss2 := ss.deepCopy() if err = d.sdb.Where(&serverStatus{ServerAddr: ss.ServerAddr}).Assign(ss2).FirstOrCreate(ss).Debug().Error; err != nil { - //logrus.Errorln(logPrefix, fmt.Sprintf("updateServerStatus %v ERROR: %v", ss, err)) + // logrus.Errorln(logPrefix, fmt.Sprintf("updateServerStatus %v ERROR: %v", ss, err)) return } return @@ -116,7 +116,7 @@ func (d *db) delServerStatus(addr string) (err error) { d.statusLock.Lock() defer d.statusLock.Unlock() if err = d.sdb.Where("server_addr = ?", addr).Delete(&serverStatus{}).Error; err != nil { - //logrus.Errorln(logPrefix+"deleteSubscribe ERROR: ", err) + // logrus.Errorln(logPrefix+"deleteSubscribe ERROR: ", err) return } return @@ -128,7 +128,7 @@ func (d *db) newSubscribe(addr string, targetID, targetType int64) (err error) { return errDBConn } if targetID == 0 || (targetType != 1 && targetType != 2) { - //logrus.Errorln(logPrefix+"newSubscribe ERROR: 参数错误 ", targetID, " ", targetType) + // logrus.Errorln(logPrefix+"newSubscribe ERROR: 参数错误 ", targetID, " ", targetType) return errParam } d.subscribeLock.Lock() @@ -137,7 +137,7 @@ func (d *db) newSubscribe(addr string, targetID, targetType int64) (err error) { existedRec := &serverSubscribe{} err = d.sdb.Model(&serverSubscribe{}).Where("server_addr = ? and target_id = ? and target_type = ?", addr, targetID, targetType).First(existedRec).Error if err != nil && !gorm.IsRecordNotFoundError(err) { - //logrus.Errorln(logPrefix+"newSubscribe ERROR: ", err) + // logrus.Errorln(logPrefix+"newSubscribe ERROR: ", err) return } if existedRec.ID != 0 { @@ -150,7 +150,7 @@ func (d *db) newSubscribe(addr string, targetID, targetType int64) (err error) { LastUpdate: time.Now().Unix(), } if err = d.sdb.Model(&ss).Create(ss).Error; err != nil { - //logrus.Errorln(logPrefix+"newSubscribe ERROR: ", err) + // logrus.Errorln(logPrefix+"newSubscribe ERROR: ", err) return } return @@ -171,12 +171,12 @@ func (d *db) deleteSubscribe(addr string, targetID int64, targetType int64) (err if gorm.IsRecordNotFoundError(err) { return errors.New("未找到订阅") } - //logrus.Errorln(logPrefix+"deleteSubscribe ERROR: ", err) + // logrus.Errorln(logPrefix+"deleteSubscribe ERROR: ", err) return } if err = d.sdb.Where("server_addr = ? and target_id = ? and target_type = ?", addr, targetID, targetType).Delete(&serverSubscribe{}).Error; err != nil { - //logrus.Errorln(logPrefix+"deleteSubscribe ERROR: ", err) + // logrus.Errorln(logPrefix+"deleteSubscribe ERROR: ", err) return } @@ -184,7 +184,7 @@ func (d *db) deleteSubscribe(addr string, targetID int64, targetType int64) (err var cnt int err = d.sdb.Model(&serverSubscribe{}).Where("server_addr = ?", addr).Count(&cnt).Error if err != nil { - //logrus.Errorln(logPrefix+"deleteSubscribe ERROR: ", err) + // logrus.Errorln(logPrefix+"deleteSubscribe ERROR: ", err) return } if cnt == 0 { @@ -200,7 +200,7 @@ func (d *db) getAllSubscribes() (subs []serverSubscribe, err error) { } subs = []serverSubscribe{} if err = d.sdb.Find(&subs).Error; err != nil { - //logrus.Errorln(logPrefix+"getAllSubscribes ERROR: ", err) + // logrus.Errorln(logPrefix+"getAllSubscribes ERROR: ", err) return } return @@ -213,7 +213,7 @@ func (d *db) getSubscribesByTarget(targetID, targetType int64) (subs []serverSub } subs = []serverSubscribe{} if err = d.sdb.Model(&serverSubscribe{}).Where("target_id = ? and target_type = ?", targetID, targetType).Find(&subs).Error; err != nil { - //logrus.Errorln(logPrefix+"getSubscribesByTarget ERROR: ", err) + // logrus.Errorln(logPrefix+"getSubscribesByTarget ERROR: ", err) return } return