MCPcopy Index your code
hub / github.com/FloatTech/ZeroBot-Plugin / init

Function init

plugin/minecraftobserver/minecraftobserver.go:41–231  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

39)
40
41func init() {
42 // 状态查询
43 engine.OnRegex("^[mM][cC]服务器状态 (.+)$").SetBlock(true).Handle(func(ctx *zero.Ctx) {
44 // 关键词查找
45 addr := ctx.State["regex_matched"].([]string)[1]
46 resp, err := getMinecraftServerStatus(addr)
47 if err != nil {
48 ctx.Send(message.Text("服务器状态获取失败... 错误信息: ", err))
49 return
50 }
51 status := resp.genServerSubscribeSchema(addr, 0)
52 textMsg, iconBase64 := status.generateServerStatusMsg()
53 var msg message.Message
54 if iconBase64 != "" {
55 msg = append(msg, message.Image(iconBase64))
56 }
57 msg = append(msg, message.Text(textMsg))
58 if id := ctx.Send(msg); id.ID() == 0 {
59 // logrus.Errorln(logPrefix + "Send failed")
60 return
61 }
62 })
63 // 添加订阅
64 engine.OnRegex(`^[mM][cC]服务器添加订阅\s*(.+)$`, getDB).SetBlock(true).Handle(func(ctx *zero.Ctx) {
65 // 关键词查找
66 addr := ctx.State["regex_matched"].([]string)[1]
67 status, err := getMinecraftServerStatus(addr)
68 if err != nil {
69 ctx.Send(message.Text("服务器信息初始化失败,请检查服务器是否可用!\n错误信息: ", err))
70 return
71 }
72 targetID, targetType := warpTargetIDAndType(ctx.Event.GroupID, ctx.Event.UserID)
73 err = dbInstance.newSubscribe(addr, targetID, targetType)
74 if err != nil {
75 ctx.Send(message.Text("订阅添加失败... 错误信息: ", err))
76 return
77 }
78 // 插入数据库(首条,需要更新状态)
79 err = dbInstance.updateServerStatus(status.genServerSubscribeSchema(addr, 0))
80 if err != nil {
81 ctx.Send(message.Text("服务器状态更新失败... 错误信息: ", err))
82 return
83 }
84 if sid := ctx.Send(message.Text(fmt.Sprintf("服务器 %s 订阅添加成功", addr))); sid.ID() == 0 {
85 // logrus.Errorln(logPrefix + "Send failed")
86 return
87 }
88 // 成功后立即发送一次状态
89 textMsg, iconBase64 := status.genServerSubscribeSchema(addr, 0).generateServerStatusMsg()
90 var msg message.Message
91 if iconBase64 != "" {
92 msg = append(msg, message.Image(iconBase64))
93 }
94 msg = append(msg, message.Text(textMsg))
95 if id := ctx.Send(msg); id.ID() == 0 {
96 // logrus.Errorln(logPrefix + "Send failed")
97 return
98 }

Callers

nothing calls this directly

Calls 12

getMinecraftServerStatusFunction · 0.85
warpTargetIDAndTypeFunction · 0.85
singleServerScanFunction · 0.85
newSubscribeMethod · 0.80
updateServerStatusMethod · 0.80
deleteSubscribeMethod · 0.80
getSubscribesByTargetMethod · 0.80
getAllSubscribesMethod · 0.80
getServerStatusMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected