Skip to content

Commit 2df5216

Browse files
committed
feat(aichat): add OLLaMA & GenAI support
1 parent a29f4cb commit 2df5216

File tree

7 files changed

+118
-41
lines changed

7 files changed

+118
-41
lines changed

go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ require (
1212
github.com/FloatTech/sqlite v1.7.1
1313
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562
1414
github.com/FloatTech/zbpctrl v1.7.0
15-
github.com/FloatTech/zbputils v1.7.2-0.20250329045338-867cbba7dd6e
15+
github.com/FloatTech/zbputils v1.7.2-0.20250329125132-70de78bc2407
1616
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7
1717
github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5
1818
github.com/Tnze/go-mc v1.20.2
@@ -22,7 +22,7 @@ require (
2222
github.com/disintegration/imaging v1.6.2
2323
github.com/fumiama/ahsai v0.1.0
2424
github.com/fumiama/cron v1.3.0
25-
github.com/fumiama/deepinfra v0.0.0-20250222123807-c64d9d26d2f8
25+
github.com/fumiama/deepinfra v0.0.0-20250329170232-577f83008e8d
2626
github.com/fumiama/go-base16384 v1.7.0
2727
github.com/fumiama/go-registry v0.2.7
2828
github.com/fumiama/gotracemoe v0.0.3
@@ -44,7 +44,7 @@ require (
4444
github.com/sirupsen/logrus v1.9.3
4545
github.com/tidwall/gjson v1.18.0
4646
github.com/wcharczuk/go-chart/v2 v2.1.2
47-
github.com/wdvxdr1123/ZeroBot v1.8.0
47+
github.com/wdvxdr1123/ZeroBot v1.8.2-0.20250329125451-74392a01085b
4848
gitlab.com/gomidi/midi/v2 v2.1.7
4949
golang.org/x/image v0.24.0
5050
golang.org/x/sys v0.30.0
@@ -61,7 +61,7 @@ require (
6161
github.com/faiface/beep v1.1.0 // indirect
6262
github.com/fumiama/go-simple-protobuf v0.2.0 // indirect
6363
github.com/fumiama/gofastTEA v0.0.10 // indirect
64-
github.com/fumiama/imgsz v0.0.4 // indirect
64+
github.com/fumiama/imgsz v0.0.2 // indirect
6565
github.com/gabriel-vasile/mimetype v1.0.4 // indirect
6666
github.com/go-ole/go-ole v1.2.6 // indirect
6767
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
@@ -86,7 +86,7 @@ require (
8686
github.com/tklauser/go-sysconf v0.3.12 // indirect
8787
github.com/tklauser/numcpus v0.6.1 // indirect
8888
github.com/yusufpapurcu/wmi v1.2.4 // indirect
89-
golang.org/x/exp/shiny v0.0.0-20250210185358-939b2ce775ac // indirect
89+
golang.org/x/exp/shiny v0.0.0-20250305212735-054e65f0b394 // indirect
9090
golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a // indirect
9191
golang.org/x/net v0.33.0 // indirect
9292
modernc.org/libc v1.61.0 // indirect

go.sum

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562 h1:snfw7FNFym1eNnLrQ
1717
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
1818
github.com/FloatTech/zbpctrl v1.7.0 h1:Hxo6EIhJo+pHjcQP9QgIJgluaT1pHH99zkk3njqTNMo=
1919
github.com/FloatTech/zbpctrl v1.7.0/go.mod h1:xmM4dSwHA02Gei3ogCRiG+RTrw/7Z69PfrN5NYf8BPE=
20-
github.com/FloatTech/zbputils v1.7.2-0.20250329045338-867cbba7dd6e h1:gUJCtinmohHTHrYLQXoMqsmFLhPwexOyzuOrXXtRZb8=
21-
github.com/FloatTech/zbputils v1.7.2-0.20250329045338-867cbba7dd6e/go.mod h1:2nILgq7ps2fLsfhns1/L2yCAM2OfIwWbEl28yLztuzk=
20+
github.com/FloatTech/zbputils v1.7.2-0.20250329125132-70de78bc2407 h1:2+cY/Yn30x8hOczSvnU/lnj/jgtxmGyfOfv0eJn5GQI=
21+
github.com/FloatTech/zbputils v1.7.2-0.20250329125132-70de78bc2407/go.mod h1:LOBLheF9yCSSYAA85MtkQNyVYP1DblttTLk5OYFbtpk=
2222
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
2323
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 h1:S/ferNiehVjNaBMNNBxUjLtVmP/YWD6Yh79RfPv4ehU=
2424
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w=
@@ -59,8 +59,8 @@ github.com/fumiama/ahsai v0.1.0 h1:LXD61Kaj6kJHa3AEGsLIfKNzcgaVxg7JB72OR4yNNZ4=
5959
github.com/fumiama/ahsai v0.1.0/go.mod h1:fFeNnqgo44i8FIaguK659aQryuZeFy+4klYLQu/rfdk=
6060
github.com/fumiama/cron v1.3.0 h1:ZWlwuexF+HQHl3cYytEE5HNwD99q+3vNZF1GrEiXCFo=
6161
github.com/fumiama/cron v1.3.0/go.mod h1:bz5Izvgi/xEUI8tlBN8BI2jr9Moo8N4or0KV8xXuPDY=
62-
github.com/fumiama/deepinfra v0.0.0-20250222123807-c64d9d26d2f8 h1:T3i87JQ1CR+9jyHXjhIWEUR9yO9gvOzRRlboeWHLtz0=
63-
github.com/fumiama/deepinfra v0.0.0-20250222123807-c64d9d26d2f8/go.mod h1:wW05PQSn8mo1mZIoa6LBUE+3xIBjkoONvnfPTV5ZOhY=
62+
github.com/fumiama/deepinfra v0.0.0-20250329170232-577f83008e8d h1:LCiYR+AbnDn8QV3s8yJrE+N340s3KwkvLjmDDQbWYvs=
63+
github.com/fumiama/deepinfra v0.0.0-20250329170232-577f83008e8d/go.mod h1:wW05PQSn8mo1mZIoa6LBUE+3xIBjkoONvnfPTV5ZOhY=
6464
github.com/fumiama/go-base16384 v1.7.0 h1:6fep7XPQWxRlh4Hu+KsdH+6+YdUp+w6CwRXtMWSsXCA=
6565
github.com/fumiama/go-base16384 v1.7.0/go.mod h1:OEn+947GV5gsbTAnyuUW/SrfxJYUdYupSIQXOuGOcXM=
6666
github.com/fumiama/go-registry v0.2.7 h1:tLEqgEpsiybQMqBv0dLHm5leia/z1DhajMupwnOHeNs=
@@ -71,8 +71,8 @@ github.com/fumiama/gofastTEA v0.0.10 h1:JJJ+brWD4kie+mmK2TkspDXKzqq0IjXm89aGYfoG
7171
github.com/fumiama/gofastTEA v0.0.10/go.mod h1:RIdbYZyB4MbH6ZBlPymRaXn3cD6SedlCu5W/HHfMPBk=
7272
github.com/fumiama/gotracemoe v0.0.3 h1:iI5EbE9A3UUbfukG6+/soYPjp1S31eCNYf4tw7s6/Jc=
7373
github.com/fumiama/gotracemoe v0.0.3/go.mod h1:tyqahdUzHf0bQIAVY/GYmDWvYYe5ik1ZbhnGYh+zl40=
74-
github.com/fumiama/imgsz v0.0.4 h1:Lsasu2hdSSFS+vnD+nvR1UkiRMK7hcpyYCC0FzgSMFI=
75-
github.com/fumiama/imgsz v0.0.4/go.mod h1:bISOQVTlw9sRytPwe8ir7tAaEmyz9hSNj9n8mXMBG0E=
74+
github.com/fumiama/imgsz v0.0.2 h1:fAkC0FnIscdKOXwAxlyw3EUba5NzxZdSxGaq3Uyfxak=
75+
github.com/fumiama/imgsz v0.0.2/go.mod h1:dR71mI3I2O5u6+PCpd47M9TZptzP+39tRBcbdIkoqM4=
7676
github.com/fumiama/jieba v0.0.0-20221203025406-36c17a10b565 h1:sQuR2+N5HurnvsZhiKdEg+Ig354TaqgCQRxd/0KgIOQ=
7777
github.com/fumiama/jieba v0.0.0-20221203025406-36c17a10b565/go.mod h1:UUEvyLTJ7yoOA/viKG4wEis4ERydM7+Ny6gZUWgkS80=
7878
github.com/fumiama/libc v0.0.0-20240530081950-6f6d8586b5c5 h1:jDxsIupsT84A6WHcs6kWbst+KqrRQ8/o0VyoFMnbBOA=
@@ -194,8 +194,8 @@ github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+F
194194
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
195195
github.com/wcharczuk/go-chart/v2 v2.1.2 h1:Y17/oYNuXwZg6TFag06qe8sBajwwsuvPiJJXcUcLL6E=
196196
github.com/wcharczuk/go-chart/v2 v2.1.2/go.mod h1:Zi4hbaqlWpYajnXB2K22IUYVXRXaLfSGNNR7P4ukyyQ=
197-
github.com/wdvxdr1123/ZeroBot v1.8.0 h1:v7m+0kGtL6XQlUH9O/LzmOntDJs2clzVj93YsAWWMbk=
198-
github.com/wdvxdr1123/ZeroBot v1.8.0/go.mod h1:C86nQ0gIdAri4K2vg8IIQIslt08zzrKMcqYt8zhkx1M=
197+
github.com/wdvxdr1123/ZeroBot v1.8.2-0.20250329125451-74392a01085b h1:JCnjOzTIOUmNaIbNnWu2ICYyVkbujl+xjuINNgSQeBM=
198+
github.com/wdvxdr1123/ZeroBot v1.8.2-0.20250329125451-74392a01085b/go.mod h1:C86nQ0gIdAri4K2vg8IIQIslt08zzrKMcqYt8zhkx1M=
199199
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
200200
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
201201
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
@@ -211,8 +211,8 @@ golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v
211211
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
212212
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
213213
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
214-
golang.org/x/exp/shiny v0.0.0-20250210185358-939b2ce775ac h1:v0JK6d+F5Wcwvfz5i1UMwk2jaCEC0jkGM1xYmr6n3VQ=
215-
golang.org/x/exp/shiny v0.0.0-20250210185358-939b2ce775ac/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o=
214+
golang.org/x/exp/shiny v0.0.0-20250305212735-054e65f0b394 h1:bFYqOIMdeiCEdzPJkLiOoMDzW/v3tjW4AA/RmUZYsL8=
215+
golang.org/x/exp/shiny v0.0.0-20250305212735-054e65f0b394/go.mod h1:ygj7T6vSGhhm/9yTpOQQNvuAUFziTH7RUiH74EoE2C8=
216216
golang.org/x/image v0.0.0-20190220214146-31aff87c08e9/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
217217
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
218218
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=

plugin/aichat/main.go

Lines changed: 94 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import (
66
"os"
77
"strconv"
88
"strings"
9-
"sync/atomic"
10-
"unsafe"
119

1210
"github.com/fumiama/deepinfra"
1311
"github.com/fumiama/deepinfra/model"
@@ -24,13 +22,15 @@ import (
2422
)
2523

2624
var (
27-
api *deepinfra.API
28-
en = control.AutoRegister(&ctrl.Options[*zero.Ctx]{
25+
// en data [4 type] [8 temp] [8 rate] LSB
26+
en = control.AutoRegister(&ctrl.Options[*zero.Ctx]{
2927
DisableOnDefault: false,
3028
Extra: control.ExtraFromString("aichat"),
3129
Brief: "OpenAI聊天",
3230
Help: "- 设置AI聊天触发概率10\n" +
3331
"- 设置AI聊天温度80\n" +
32+
"- 设置AI聊天接口类型[OpenAI|OLLaMA|GenAI]\n" +
33+
"- 设置AI聊天接口地址https://xxx\n" +
3434
"- 设置AI聊天密钥xxx\n" +
3535
"- 设置AI聊天模型名xxx\n" +
3636
"- 重置AI聊天系统提示词\n" +
@@ -44,14 +44,22 @@ var (
4444
var (
4545
modelname = model.ModelDeepDeek
4646
systemprompt = chat.SystemPrompt
47+
api = deepinfra.OpenAIDeepInfra
4748
sepstr = ""
4849
noreplyat = false
4950
)
5051

52+
var apitypes = map[string]uint8{
53+
"OpenAI": 0,
54+
"OLLaMA": 1,
55+
"GenAI": 2,
56+
}
57+
5158
func init() {
5259
mf := en.DataFolder() + "model.txt"
5360
sf := en.DataFolder() + "system.txt"
5461
pf := en.DataFolder() + "sep.txt"
62+
af := en.DataFolder() + "api.txt"
5563
nf := en.DataFolder() + "NoReplyAT"
5664
if file.IsExist(mf) {
5765
data, err := os.ReadFile(mf)
@@ -77,6 +85,14 @@ func init() {
7785
sepstr = string(data)
7886
}
7987
}
88+
if file.IsExist(af) {
89+
data, err := os.ReadFile(af)
90+
if err != nil {
91+
logrus.Warnln("read api", err)
92+
} else {
93+
api = string(data)
94+
}
95+
}
8096
noreplyat = file.IsExist(nf)
8197

8298
en.OnMessage(func(ctx *zero.Ctx) bool {
@@ -92,6 +108,7 @@ func init() {
92108
}
93109
rate := c.GetData(gid)
94110
temp := (rate >> 8) & 0xff
111+
typ := (rate >> 16) & 0x0f
95112
rate &= 0xff
96113
if !ctx.Event.IsToMe && rand.Intn(100) >= int(rate) {
97114
return
@@ -109,29 +126,47 @@ func init() {
109126
logrus.Warnln("ERROR: get extra err: empty key")
110127
return
111128
}
112-
var x deepinfra.API
113-
y := &x
114-
if api == nil {
115-
x = deepinfra.NewAPI(deepinfra.APIDeepInfra, key)
116-
atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&api)), unsafe.Pointer(&x))
117-
} else {
118-
y = api
119-
}
129+
120130
if temp <= 0 {
121131
temp = 70 // default setting
122132
}
123133
if temp > 100 {
124134
temp = 100
125135
}
126136

127-
data, err := y.Request(chat.Ask(model.NewOpenAI(
128-
modelname, sepstr,
129-
float32(temp)/100, 0.9, 4096,
130-
), gid, systemprompt))
137+
var x deepinfra.API
138+
var mod model.Protocol
139+
140+
switch typ {
141+
case 0:
142+
x = deepinfra.NewAPI(api, key)
143+
mod = model.NewOpenAI(
144+
modelname, sepstr,
145+
float32(temp)/100, 0.9, 4096,
146+
)
147+
case 1:
148+
x = deepinfra.NewAPI(api, key)
149+
mod = model.NewOLLaMA(
150+
modelname, sepstr,
151+
float32(temp)/100, 0.9, 4096,
152+
)
153+
case 2:
154+
x = deepinfra.NewAPI(api, key)
155+
mod = model.NewGenAI(
156+
modelname,
157+
float32(temp)/100, 0.9, 4096,
158+
)
159+
default:
160+
logrus.Warnln("[aichat] unsupported AI type", typ)
161+
return
162+
}
163+
164+
data, err := x.Request(chat.Ask(mod, gid, systemprompt))
131165
if err != nil {
132-
logrus.Warnln("[niniqun] post err:", err)
166+
logrus.Warnln("[aichat] post err:", err)
133167
return
134168
}
169+
135170
txt := chat.Sanitize(strings.Trim(data, "\n  "))
136171
if len(txt) > 0 {
137172
chat.Reply(gid, txt)
@@ -221,6 +256,48 @@ func init() {
221256
}
222257
ctx.SendChain(message.Text("成功"))
223258
})
259+
en.OnPrefix("设置AI聊天接口类型", zero.SuperUserPermission).SetBlock(true).Handle(func(ctx *zero.Ctx) {
260+
args := strings.TrimSpace(ctx.State["args"].(string))
261+
if args == "" {
262+
ctx.SendChain(message.Text("ERROR: empty args"))
263+
return
264+
}
265+
c, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx])
266+
if !ok {
267+
ctx.SendChain(message.Text("ERROR: no such plugin"))
268+
return
269+
}
270+
typ, ok := apitypes[args]
271+
if !ok {
272+
ctx.SendChain(message.Text("ERROR: 未知类型 ", args))
273+
return
274+
}
275+
gid := ctx.Event.GroupID
276+
if gid == 0 {
277+
gid = -ctx.Event.UserID
278+
}
279+
val := c.GetData(gid) & (^0x0f0000)
280+
err := c.SetData(gid, val|(int64(typ&0x0f)<<16))
281+
if err != nil {
282+
ctx.SendChain(message.Text("ERROR: set data err: ", err))
283+
return
284+
}
285+
ctx.SendChain(message.Text("成功"))
286+
})
287+
en.OnPrefix("设置AI聊天接口地址", zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).Handle(func(ctx *zero.Ctx) {
288+
args := strings.TrimSpace(ctx.State["args"].(string))
289+
if args == "" {
290+
ctx.SendChain(message.Text("ERROR: empty args"))
291+
return
292+
}
293+
api = args
294+
err := os.WriteFile(af, []byte(args), 0644)
295+
if err != nil {
296+
ctx.SendChain(message.Text("ERROR: ", err))
297+
return
298+
}
299+
ctx.SendChain(message.Text("成功"))
300+
})
224301
en.OnPrefix("设置AI聊天密钥", zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).Handle(func(ctx *zero.Ctx) {
225302
args := strings.TrimSpace(ctx.State["args"].(string))
226303
if args == "" {

plugin/manager/manager.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ func init() { // 插件主体
156156
ctx.SendChain(message.Text("全员自闭结束~"))
157157
})
158158
// 禁言
159-
engine.OnMessage(zero.NewPattern().Text("^禁言").At().Text("(\\d+)\\s*(.*)").AsRule(), zero.OnlyGroup, zero.AdminPermission).SetBlock(true).
159+
engine.OnMessage(zero.NewPattern(nil).Text("^禁言").At().Text("(\\d+)\\s*(.*)").AsRule(), zero.OnlyGroup, zero.AdminPermission).SetBlock(true).
160160
Handle(func(ctx *zero.Ctx) {
161161
parsed := ctx.State[zero.KeyPattern].([]zero.PatternParsed)
162162
duration := math.Str2Int64(parsed[2].Text()[1])
@@ -650,7 +650,7 @@ func init() { // 插件主体
650650
if rsp.RetCode == 0 {
651651
ctx.SendChain(message.Text(option, "成功"))
652652
} else {
653-
ctx.SendChain(message.Text(option, "失败, 信息: ", rsp.Msg, "解释: ", rsp.Wording))
653+
ctx.SendChain(message.Text(option, "失败, 信息: ", rsp.Message, "解释: ", rsp.Wording))
654654
}
655655
})
656656
engine.OnCommand("精华列表", zero.OnlyGroup, zero.AdminPermission).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) {
@@ -699,7 +699,7 @@ func init() { // 插件主体
699699
if rsp.RetCode == 0 {
700700
ctx.SendChain(message.Text("取消成功"))
701701
} else {
702-
ctx.SendChain(message.Text("取消失败, 信息: ", rsp.Msg, "解释: ", rsp.Wording))
702+
ctx.SendChain(message.Text("取消失败, 信息: ", rsp.Message, "解释: ", rsp.Wording))
703703
}
704704
})
705705
}

plugin/niuniu/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ func init() {
308308
}
309309
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(msg))
310310
})
311-
en.OnMessage(zero.NewPattern().Text(`^(?:.*使用(.*))??jj`).At().AsRule(),
311+
en.OnMessage(zero.NewPattern(nil).Text(`^(?:.*使用(.*))??jj`).At().AsRule(),
312312
zero.OnlyGroup).SetBlock(true).Limit(func(ctx *zero.Ctx) *rate.Limiter {
313313
lt := jjLimiter.Load(fmt.Sprintf("%d_%d", ctx.Event.GroupID, ctx.Event.UserID))
314314
ctx.State["jj_last_touch"] = lt.LastTouch()

plugin/qqwife/favorSystem.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ type favorability struct {
3232

3333
func init() {
3434
// 好感度系统
35-
engine.OnMessage(zero.NewPattern().Text(`^查好感度`).At().AsRule(), zero.OnlyGroup, getdb).SetBlock(true).Limit(ctxext.LimitByUser).
35+
engine.OnMessage(zero.NewPattern(nil).Text(`^查好感度`).At().AsRule(), zero.OnlyGroup, getdb).SetBlock(true).Limit(ctxext.LimitByUser).
3636
Handle(func(ctx *zero.Ctx) {
3737
patternParsed := ctx.State[zero.KeyPattern].([]zero.PatternParsed)
3838
fiancee, _ := strconv.ParseInt(patternParsed[1].At(), 10, 64)
@@ -49,7 +49,7 @@ func init() {
4949
)
5050
})
5151
// 礼物系统
52-
engine.OnMessage(zero.NewPattern().Text(`^买礼物给`).At().AsRule(), zero.OnlyGroup, getdb).SetBlock(true).Limit(ctxext.LimitByUser).
52+
engine.OnMessage(zero.NewPattern(nil).Text(`^买礼物给`).At().AsRule(), zero.OnlyGroup, getdb).SetBlock(true).Limit(ctxext.LimitByUser).
5353
Handle(func(ctx *zero.Ctx) {
5454
gid := ctx.Event.GroupID
5555
uid := ctx.Event.UserID

plugin/qqwife/function.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func init() {
9393
ctx.SendChain(message.Text("设置成功"))
9494
})
9595
// 单身技能
96-
engine.OnMessage(zero.NewPattern().Text(`^(娶|嫁)`).At().AsRule(), zero.OnlyGroup, getdb, checkSingleDog).SetBlock(true).Limit(ctxext.LimitByUser).
96+
engine.OnMessage(zero.NewPattern(nil).Text(`^(娶|嫁)`).At().AsRule(), zero.OnlyGroup, getdb, checkSingleDog).SetBlock(true).Limit(ctxext.LimitByUser).
9797
Handle(func(ctx *zero.Ctx) {
9898
gid := ctx.Event.GroupID
9999
uid := ctx.Event.UserID
@@ -168,7 +168,7 @@ func init() {
168168
)
169169
})
170170
// NTR技能
171-
engine.OnMessage(zero.NewPattern().Text(`^当`).At().Text(`的小三`).AsRule(), zero.OnlyGroup, getdb, checkMistress).SetBlock(true).Limit(ctxext.LimitByUser).
171+
engine.OnMessage(zero.NewPattern(nil).Text(`^当`).At().Text(`的小三`).AsRule(), zero.OnlyGroup, getdb, checkMistress).SetBlock(true).Limit(ctxext.LimitByUser).
172172
Handle(func(ctx *zero.Ctx) {
173173
gid := ctx.Event.GroupID
174174
uid := ctx.Event.UserID
@@ -254,7 +254,7 @@ func init() {
254254
)
255255
})
256256
// 做媒技能
257-
engine.OnMessage(zero.NewPattern().Text(`做媒`).At().At().AsRule(), zero.OnlyGroup, zero.AdminPermission, getdb, checkMatchmaker).SetBlock(true).Limit(ctxext.LimitByUser).
257+
engine.OnMessage(zero.NewPattern(nil).Text(`做媒`).At().At().AsRule(), zero.OnlyGroup, zero.AdminPermission, getdb, checkMatchmaker).SetBlock(true).Limit(ctxext.LimitByUser).
258258
Handle(func(ctx *zero.Ctx) {
259259
gid := ctx.Event.GroupID
260260
uid := ctx.Event.UserID

0 commit comments

Comments
 (0)