Skip to content

Commit 4324f05

Browse files
authored
Merge branch 'master' into feature-branch-name
2 parents 53e0f81 + b012df4 commit 4324f05

7 files changed

Lines changed: 109 additions & 56 deletions

File tree

data

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.20
44

55
require (
66
github.com/Baidu-AIP/golang-sdk v1.1.1
7-
github.com/FloatTech/AnimeAPI v1.7.1-0.20250717123723-d300df538b46
7+
github.com/FloatTech/AnimeAPI v1.7.1-0.20250901143505-180d33844860
88
github.com/FloatTech/floatbox v0.0.0-20250513111443-adba80e84e80
99
github.com/FloatTech/gg v1.1.3
1010
github.com/FloatTech/imgfactory v0.2.2-0.20230413152719-e101cc3606ef
@@ -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-20250812083039-f1b27f21d8c9
25+
github.com/fumiama/deepinfra v0.0.0-20250910022828-8cde75e137f4
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

go.sum

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
github.com/Baidu-AIP/golang-sdk v1.1.1 h1:RQsAmgDSAkiq22I6n7XJ2t3afgzFeqjY46FGhvrx4cw=
22
github.com/Baidu-AIP/golang-sdk v1.1.1/go.mod h1:bXnGw7xPeKt8aF7UCELKrV6UZ/46spItONK1RQBQj1Y=
33
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
4-
github.com/FloatTech/AnimeAPI v1.7.1-0.20250717123723-d300df538b46 h1:X6ZbOWoZJIoHCin+CeU92Q3EwpvglyQ4gc5BZhOtAwo=
5-
github.com/FloatTech/AnimeAPI v1.7.1-0.20250717123723-d300df538b46/go.mod h1:XXG1eBJf+eeWacQx5azsQKL5Gg7jDYTFyyZGIa/56js=
4+
github.com/FloatTech/AnimeAPI v1.7.1-0.20250901143505-180d33844860 h1:ddthsMzYC2LZ517/71W//9VsXT82CSBALVt3sQY5vfA=
5+
github.com/FloatTech/AnimeAPI v1.7.1-0.20250901143505-180d33844860/go.mod h1:CzpSeo5Pvslnq7Ho14E438Yn/flFMKzjGeX2nbC1mzk=
66
github.com/FloatTech/floatbox v0.0.0-20250513111443-adba80e84e80 h1:lFD1pd8NkYCrw0QpTX/T5pJ67I7AL5eGxQ4v0r9f81Q=
77
github.com/FloatTech/floatbox v0.0.0-20250513111443-adba80e84e80/go.mod h1:IWoFFqu+0FeaHHQdddyiTRL5z7gJME6qHC96qh0R2sc=
88
github.com/FloatTech/gg v1.1.3 h1:+GlL02lTKsxJQr4WCuNwVxC1/eBZrCvypCIBtxuOFb4=
@@ -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-20250812083039-f1b27f21d8c9 h1:X2h8RnCgC04LmwBoizYbFawXh/h6CouXmhYtaVuUn7k=
63-
github.com/fumiama/deepinfra v0.0.0-20250812083039-f1b27f21d8c9/go.mod h1:wW05PQSn8mo1mZIoa6LBUE+3xIBjkoONvnfPTV5ZOhY=
62+
github.com/fumiama/deepinfra v0.0.0-20250910022828-8cde75e137f4 h1:cV3HXXLNudIL9rIEYt1RCgl6H4703nE3+jL4pJNsRtc=
63+
github.com/fumiama/deepinfra v0.0.0-20250910022828-8cde75e137f4/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=
@@ -124,8 +124,8 @@ github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
124124
github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
125125
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
126126
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
127-
github.com/jinzhu/now v1.0.1 h1:HjfetcXq097iXP0uoPCdnM4Efp5/9MsM0/M+XOTeR3M=
128127
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
128+
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
129129
github.com/jozsefsallai/gophersauce v1.0.1 h1:BA3ovtQRrAb1qYU9JoRLbDHpxnDunlNcEkEfhCvDDCM=
130130
github.com/jozsefsallai/gophersauce v1.0.1/go.mod h1:YVEI7djliMTmZ1Vh01YPF8bUHi+oKhe3yXgKf1T49vg=
131131
github.com/kanrichan/resvg-go v0.0.2-0.20231001163256-63db194ca9f5 h1:BXnB1Gz4y/zwQh+ZFNy7rgd+ZfMOrwRr4uZSHEI+ieY=

plugin/aichat/main.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,9 @@ func init() {
126126
mod = model.NewOpenAI(
127127
cfg.ModelName, cfg.Separator,
128128
temperature, topp, maxn,
129-
)
129+
).SetExtra(&map[string]bool{
130+
"enable_thinking": false,
131+
})
130132
case 1:
131133
mod = model.NewOLLaMA(
132134
cfg.ModelName, cfg.Separator,
@@ -516,7 +518,9 @@ func llmchat(prompt string, temp int64) (string, error) {
516518
mod = model.NewOpenAI(
517519
cfg.ModelName, cfg.Separator,
518520
temperature, topp, maxn,
519-
)
521+
).SetExtra(&map[string]bool{
522+
"enable_thinking": false,
523+
})
520524
case 1:
521525
mod = model.NewOLLaMA(
522526
cfg.ModelName, cfg.Separator,

plugin/bilibili/bilibili_parse.go

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ import (
2424
)
2525

2626
const (
27-
enableHex = 0x10
28-
unableHex = 0x7fffffff_fffffffd
27+
enableVideoSummary = int64(0x10)
28+
disableVideoSummary = ^enableVideoSummary
29+
enableVideoDownload = int64(0x20)
30+
disableVideoDownload = ^enableVideoDownload
2931
bilibiliparseReferer = "https://www.bilibili.com"
3032
)
3133

@@ -92,9 +94,9 @@ func init() {
9294
data := c.GetData(ctx.Event.GroupID)
9395
switch option {
9496
case "开启", "打开", "启用":
95-
data |= enableHex
97+
data |= enableVideoSummary
9698
case "关闭", "关掉", "禁用":
97-
data &= unableHex
99+
data &= disableVideoSummary
98100
default:
99101
return
100102
}
@@ -105,6 +107,35 @@ func init() {
105107
}
106108
ctx.SendChain(message.Text("已", option, "视频总结"))
107109
})
110+
en.OnRegex(`^(开启|打开|启用|关闭|关掉|禁用)视频上传$`, zero.AdminPermission).SetBlock(true).
111+
Handle(func(ctx *zero.Ctx) {
112+
gid := ctx.Event.GroupID
113+
if gid <= 0 {
114+
// 个人用户设为负数
115+
gid = -ctx.Event.UserID
116+
}
117+
option := ctx.State["regex_matched"].([]string)[1]
118+
c, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx])
119+
if !ok {
120+
ctx.SendChain(message.Text("找不到服务!"))
121+
return
122+
}
123+
data := c.GetData(ctx.Event.GroupID)
124+
switch option {
125+
case "开启", "打开", "启用":
126+
data |= enableVideoDownload
127+
case "关闭", "关掉", "禁用":
128+
data &= disableVideoDownload
129+
default:
130+
return
131+
}
132+
err := c.SetData(gid, data)
133+
if err != nil {
134+
ctx.SendChain(message.Text("出错啦: ", err))
135+
return
136+
}
137+
ctx.SendChain(message.Text("已", option, "视频上传"))
138+
})
108139
en.OnRegex(searchVideo).SetBlock(true).Limit(limit.LimitByGroup).Handle(handleVideo)
109140
en.OnRegex(searchDynamic).SetBlock(true).Limit(limit.LimitByGroup).Handle(handleDynamic)
110141
en.OnRegex(searchArticle).SetBlock(true).Limit(limit.LimitByGroup).Handle(handleArticle)
@@ -127,7 +158,7 @@ func handleVideo(ctx *zero.Ctx) {
127158
return
128159
}
129160
c, ok := ctx.State["manager"].(*ctrl.Control[*zero.Ctx])
130-
if ok && c.GetData(ctx.Event.GroupID)&enableHex == enableHex {
161+
if ok && c.GetData(ctx.Event.GroupID)&enableVideoSummary == enableVideoSummary {
131162
summaryMsg, err := getVideoSummary(cfg, card)
132163
if err != nil {
133164
msg = append(msg, message.Text("ERROR: ", err))
@@ -136,12 +167,14 @@ func handleVideo(ctx *zero.Ctx) {
136167
}
137168
}
138169
ctx.SendChain(msg...)
139-
downLoadMsg, err := getVideoDownload(cfg, card, cachePath)
140-
if err != nil {
141-
ctx.SendChain(message.Text("ERROR: ", err))
142-
return
170+
if ok && c.GetData(ctx.Event.GroupID)&enableVideoDownload == enableVideoDownload {
171+
downLoadMsg, err := getVideoDownload(cfg, card, cachePath)
172+
if err != nil {
173+
ctx.SendChain(message.Text("ERROR: ", err))
174+
return
175+
}
176+
ctx.SendChain(downLoadMsg...)
143177
}
144-
ctx.SendChain(downLoadMsg...)
145178
}
146179

147180
func handleDynamic(ctx *zero.Ctx) {

plugin/crypter/handlers.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
package crypter
33

44
import (
5+
"github.com/FloatTech/AnimeAPI/airecord"
6+
"github.com/sirupsen/logrus"
57
zero "github.com/wdvxdr1123/ZeroBot"
68
"github.com/wdvxdr1123/ZeroBot/message"
79
)
@@ -10,7 +12,14 @@ import (
1012
func houEncryptHandler(ctx *zero.Ctx) {
1113
text := ctx.State["regex_matched"].([]string)[1]
1214
result := encodeHou(text)
13-
ctx.SendChain(message.Text(result))
15+
logrus.Infoln("[crypter] 回复内容:", result)
16+
recCfg := airecord.GetConfig()
17+
record := ctx.GetAIRecord(recCfg.ModelID, recCfg.Customgid, result)
18+
if record != "" {
19+
ctx.SendChain(message.Record(record))
20+
} else {
21+
ctx.SendChain(message.Text(result))
22+
}
1423
}
1524

1625
func houDecryptHandler(ctx *zero.Ctx) {

plugin/niuniu/main.go

Lines changed: 42 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22
package niuniu
33

44
import (
5+
"errors"
56
"fmt"
67
"math/rand"
78
"strconv"
9+
"strings"
810
"time"
911

1012
"github.com/FloatTech/AnimeAPI/niu"
@@ -18,12 +20,6 @@ import (
1820
"github.com/wdvxdr1123/ZeroBot/message"
1921
)
2022

21-
type lastLength struct {
22-
TimeLimit time.Time
23-
Count int
24-
Length float64
25-
}
26-
2723
var (
2824
en = control.AutoRegister(&ctrl.Options[*zero.Ctx]{
2925
DisableOnDefault: false,
@@ -47,8 +43,8 @@ var (
4743
})
4844
dajiaoLimiter = rate.NewManager[string](time.Second*90, 1)
4945
jjLimiter = rate.NewManager[string](time.Second*150, 1)
50-
jjCount = syncx.Map[string, *lastLength]{}
51-
register = syncx.Map[string, *lastLength]{}
46+
jjCount = syncx.Map[string, *niu.PKRecord]{}
47+
register = syncx.Map[string, *niu.PKRecord]{}
5248
)
5349

5450
func init() {
@@ -103,15 +99,19 @@ func init() {
10399
en.OnFullMatch("出售牛牛", zero.OnlyGroup).SetBlock(true).Handle(func(ctx *zero.Ctx) {
104100
gid := ctx.Event.GroupID
105101
uid := ctx.Event.UserID
102+
key := fmt.Sprintf("%d_%d", gid, uid)
106103
sell, err := niu.Sell(gid, uid)
107-
if err != nil {
104+
if errors.Is(err, niu.ErrCanceled) || errors.Is(err, niu.ErrNoNiuNiu) {
105+
ctx.SendChain(message.Text(err))
106+
jjCount.Delete(key)
107+
return
108+
} else if err != nil {
108109
ctx.SendChain(message.Text("ERROR:", err))
109110
return
110111
}
112+
111113
// 数据库操作成功之后,及时删除残留的缓存
112-
key := fmt.Sprintf("%d_%d", gid, uid)
113-
_, ok := jjCount.Load(key)
114-
if ok {
114+
if _, ok := jjCount.Load(key); ok {
115115
jjCount.Delete(key)
116116
}
117117
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(sell))
@@ -140,29 +140,33 @@ func init() {
140140
cost int
141141
scope string
142142
description string
143-
count int
144143
}{
145-
1: {"伟哥", 300, "打胶", "可以让你打胶每次都增长", 5},
146-
2: {"媚药", 300, "打胶", "可以让你打胶每次都减少", 5},
147-
3: {"击剑神器", 500, "jj", "可以让你每次击剑都立于不败之地", 2},
148-
4: {"击剑神稽", 500, "jj", "可以让你每次击剑都失败", 2},
144+
1: {"伟哥", 100, "打胶", "可以让你打胶每次都增长"},
145+
2: {"媚药", 100, "打胶", "可以让你打胶每次都减少"},
146+
3: {"击剑神器", 300, "jj", "可以让你每次击剑都立于不败之地"},
147+
4: {"击剑神稽", 300, "jj", "可以让你每次击剑都失败"},
149148
}
150149

151150
var messages message.Message
151+
messages = append(messages, ctxext.FakeSenderForwardNode(ctx,
152+
message.Text("输入对应序号进行购买商品"),
153+
message.Text(
154+
"使用说明:\n"+
155+
"商品id-商品数量\n"+
156+
"如想购买10个伟哥\n"+
157+
"即:1-10")))
152158
messages = append(messages, ctxext.FakeSenderForwardNode(ctx, message.Text("牛牛商店当前售卖的物品如下")))
153159
for id := 1; id <= len(propMap); id++ {
154160
product := propMap[id]
155-
productInfo := fmt.Sprintf("商品%d\n商品名: %s\n商品价格: %dATRI币\n商品作用域: %s\n商品描述: %s\n使用次数:%d",
156-
id, product.name, product.cost, product.scope, product.description, product.count)
161+
productInfo := fmt.Sprintf("商品%d\n商品名: %s\n商品价格: %dATRI币\n商品作用域: %s\n商品描述: %s",
162+
id, product.name, product.cost, product.scope, product.description)
157163
messages = append(messages, ctxext.FakeSenderForwardNode(ctx, message.Text(productInfo)))
158164
}
159165
if id := ctx.Send(messages).ID(); id == 0 {
160166
ctx.Send(message.Text("发送商店失败"))
161167
return
162168
}
163-
164-
ctx.SendChain(message.Text("输入对应序号进行购买商品"))
165-
recv, cancel := zero.NewFutureEvent("message", 999, false, zero.CheckUser(uid), zero.CheckGroup(gid), zero.RegexRule(`^(\d+)$`)).Repeat()
169+
recv, cancel := zero.NewFutureEvent("message", 999, false, zero.CheckUser(uid), zero.CheckGroup(gid), zero.RegexRule(`^(\d+)-(\d+)$`)).Repeat()
166170
defer cancel()
167171
timer := time.NewTimer(120 * time.Second)
168172
answer := ""
@@ -174,13 +178,13 @@ func init() {
174178
return
175179
case r := <-recv:
176180
answer = r.Event.Message.String()
177-
n, err := strconv.Atoi(answer)
178-
if err != nil {
179-
ctx.SendChain(message.Text("ERROR: ", err))
180-
return
181-
}
182181

183-
if err = niu.Store(gid, uid, n); err != nil {
182+
// 解析输入的商品ID和数量
183+
parts := strings.Split(answer, "-")
184+
productID, _ := strconv.Atoi(parts[0])
185+
quantity, _ := strconv.Atoi(parts[1])
186+
187+
if err := niu.Store(gid, uid, productID, quantity); err != nil {
184188
ctx.SendChain(message.Text("ERROR: ", err))
185189
return
186190
}
@@ -227,7 +231,7 @@ func init() {
227231
return
228232
}
229233

230-
if err := niu.Redeem(gid, uid, last.Length); err != nil {
234+
if err := niu.Redeem(gid, uid, *last); err != nil {
231235
ctx.SendChain(message.Text("ERROR:", err))
232236
return
233237
}
@@ -337,7 +341,7 @@ func init() {
337341
}
338342
uid := ctx.Event.UserID
339343
gid := ctx.Event.GroupID
340-
msg, length, err := niu.JJ(gid, uid, adduser, patternParsed[0].Text()[1])
344+
msg, length, niuID, err := niu.JJ(gid, uid, adduser, patternParsed[0].Text()[1])
341345
if err != nil {
342346
ctx.SendChain(message.Text("ERROR: ", err))
343347
jjLimiter.Delete(fmt.Sprintf("%d_%d", ctx.Event.GroupID, ctx.Event.UserID))
@@ -346,24 +350,27 @@ func init() {
346350
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(msg))
347351
j := fmt.Sprintf("%d_%d", gid, adduser)
348352
count, ok := jjCount.Load(j)
349-
var c lastLength
353+
var c niu.PKRecord
350354
// 按照最后一次被 jj 时的时间计算,超过60分钟则重置
351355
if !ok {
352356
// 第一次被 jj
353-
c = lastLength{
357+
c = niu.PKRecord{
358+
NiuID: niuID,
354359
TimeLimit: time.Now(),
355360
Count: 1,
356361
Length: length,
357362
}
358363
} else {
359-
c = lastLength{
364+
c = niu.PKRecord{
365+
NiuID: niuID,
360366
TimeLimit: time.Now(),
361367
Count: count.Count + 1,
362368
Length: count.Length,
363369
}
364370
// 超时了,重置
365371
if time.Since(c.TimeLimit) > time.Hour {
366-
c = lastLength{
372+
c = niu.PKRecord{
373+
NiuID: niuID,
367374
TimeLimit: time.Now(),
368375
Count: 1,
369376
Length: length,
@@ -397,7 +404,7 @@ func init() {
397404
data, ok := register.Load(key)
398405
switch {
399406
case !ok || time.Since(data.TimeLimit) > time.Hour*24:
400-
data = &lastLength{
407+
data = &niu.PKRecord{
401408
TimeLimit: time.Now(),
402409
Count: 1,
403410
}

0 commit comments

Comments
 (0)