MCPcopy Create free account
hub / github.com/FloatTech/ZeroBot-Plugin-Playground / init

Function init

plugin/slash/main.go:23–70  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

21)
22
23func init() {
24 engine.OnRegex(`^/(.*)$`).SetBlock(true).Handle(func(ctx *zero.Ctx) {
25 getPatternInfo := ctx.State["regex_matched"].([]string)[1]
26 ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(ctx.CardOrNickName(ctx.Event.UserID)+getPatternInfo+"了他自己~"))
27 })
28 /*
29 Params:
30 /rua [CQ:at,qq=123123] || match1 = /rua | match2 = cq... | match3 = id
31 match4 match 5 match 6
32 */
33 engine.OnRegex(`^(/.*)(\[CQ:at,qq=(.*)\])|^(\[CQ:at,qq=(.*)\])\s(/.*)`).SetBlock(true).Handle(func(ctx *zero.Ctx) {
34 getMatchedQID := ctx.State["regex_matched"].([]string)[3]
35 var getMatchedInfo string
36 if getMatchedQID == "" {
37 getMatchedQID = ctx.State["regex_matched"].([]string)[5]
38 getMatchedInfo = ctx.State["regex_matched"].([]string)[6]
39 } else {
40 getMatchedInfo = ctx.State["regex_matched"].([]string)[1]
41 }
42 // use matchedinfo
43 qidToInt64, _ := strconv.ParseInt(getMatchedQID, 10, 64)
44 getUserInfo := ctx.CardOrNickName(qidToInt64)
45 getPersentUserinfo := ctx.CardOrNickName(ctx.Event.UserID)
46 // split info
47 modifyInfo := strings.ReplaceAll(getMatchedInfo, "/", "")
48 splitInfo := strings.Split(modifyInfo, " ")
49 if len(splitInfo) == 2 {
50 ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(getPersentUserinfo+" "+splitInfo[0]+"了"+getUserInfo+splitInfo[1]))
51 } else {
52 ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(getPersentUserinfo+" "+splitInfo[0]+"了"+getUserInfo))
53 }
54 })
55
56 engine.OnRegex(`^(\[CQ:reply,id=(.*)\])\s/(.*)$`).SetBlock(true).Handle(func(ctx *zero.Ctx) {
57 getPatternUserMessageID := ctx.State["regex_matched"].([]string)[2]
58 getPatternInfo := ctx.State["regex_matched"].([]string)[3]
59 getSplit := strings.Split(getPatternInfo, " ")
60 rsp := ctx.CallAction("get_msg", zero.Params{
61 "message_id": getPatternUserMessageID,
62 }).Data.String()
63 sender := gjson.Get(rsp, "sender.user_id").Int()
64 if len(getSplit) == 2 {
65 ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(ctx.CardOrNickName(ctx.Event.UserID)+" "+getSplit[0]+"了 "+ctx.CardOrNickName(sender)+" "+getSplit[1]))
66 } else {
67 ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(ctx.CardOrNickName(ctx.Event.UserID)+" "+getPatternInfo+"了 "+ctx.CardOrNickName(sender)))
68 }
69 })
70}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected