Skip to content

Commit

Permalink
feat(manager): add slow send (#985)
Browse files Browse the repository at this point in the history
  • Loading branch information
fumiama committed Oct 1, 2024
1 parent fbadd89 commit 817c4fa
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 2 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ require (
github.com/fumiama/go-registry v0.2.7
github.com/fumiama/gotracemoe v0.0.3
github.com/fumiama/jieba v0.0.0-20221203025406-36c17a10b565
github.com/fumiama/slowdo v0.0.0-20241001065001-bc474bd3fb21
github.com/fumiama/terasu v0.0.0-20240507144117-547a591149c0
github.com/fumiama/unibase2n v0.0.0-20240530074540-ec743fd5a6d6
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ github.com/fumiama/jieba v0.0.0-20221203025406-36c17a10b565 h1:sQuR2+N5HurnvsZhi
github.com/fumiama/jieba v0.0.0-20221203025406-36c17a10b565/go.mod h1:UUEvyLTJ7yoOA/viKG4wEis4ERydM7+Ny6gZUWgkS80=
github.com/fumiama/libc v0.0.0-20240530081950-6f6d8586b5c5 h1:jDxsIupsT84A6WHcs6kWbst+KqrRQ8/o0VyoFMnbBOA=
github.com/fumiama/libc v0.0.0-20240530081950-6f6d8586b5c5/go.mod h1:15P6ublJ9FJR8YQCGy8DeQ2Uwur7iW9Hserr/T3OFZE=
github.com/fumiama/slowdo v0.0.0-20241001065001-bc474bd3fb21 h1:sqg6DgXnL7PcArzLnKgaiQbs2nY6xdR21ChA+ciAjz0=
github.com/fumiama/slowdo v0.0.0-20241001065001-bc474bd3fb21/go.mod h1:nFAMdYFZxaTG/HLmRO0mKmvaGJ/vKtgYj06x8q2LusY=
github.com/fumiama/sqlite3 v1.29.10-simp h1:c5y3uKyU0q9t0/SyfynzYyuslQ5zP+5CD8e0yYY554A=
github.com/fumiama/sqlite3 v1.29.10-simp/go.mod h1:ItX2a1OVGgNsFh6Dv60JQvGfJfTPHPVpV6DF59akYOA=
github.com/fumiama/terasu v0.0.0-20240507144117-547a591149c0 h1:So/3Bg/m2ZcUvqCzzEjjkjHBjcvnV3AN5tCxwsdMwYU=
Expand Down
4 changes: 2 additions & 2 deletions plugin/manager/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -496,10 +496,10 @@ func init() { // 插件主体
var w welcome
err := db.Find("farewell", &w, "where gid = "+strconv.FormatInt(ctx.Event.GroupID, 10))
if err == nil {
ctx.SendGroupMessage(ctx.Event.GroupID, message.ParseMessageFromString(welcometocq(ctx, w.Msg)))
collectsend(ctx, message.ParseMessageFromString(welcometocq(ctx, w.Msg))...)
} else {
userid := ctx.Event.UserID
ctx.SendChain(message.Text(ctx.CardOrNickName(userid), "(", userid, ")", "离开了我们..."))
collectsend(ctx, message.Text(ctx.CardOrNickName(userid), "(", userid, ")", "离开了我们..."))
}
}
})
Expand Down
40 changes: 40 additions & 0 deletions plugin/manager/slow.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package manager

import (
"time"

"github.com/FloatTech/zbputils/ctxext"
"github.com/RomiChan/syncx"
"github.com/fumiama/slowdo"

Check failure on line 8 in plugin/manager/slow.go

View workflow job for this annotation

GitHub Actions / lint

could not import github.com/fumiama/slowdo (-: cannot compile Go 1.22 code) (typecheck)
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message"
)

var slowsenders = syncx.Map[int64, *syncx.Lazy[*slowdo.Job[message.MessageSegment, *zero.Ctx]]]{}

func collectsend(ctx *zero.Ctx, msgs ...message.MessageSegment) {
id := ctx.Event.GroupID
if id == 0 {
// only support group
return
}
lazy, _ := slowsenders.LoadOrStore(id, &syncx.Lazy[*slowdo.Job[message.MessageSegment, *zero.Ctx]]{
Init: func() *slowdo.Job[message.MessageSegment, *zero.Ctx] {
x, err := slowdo.NewJob(time.Second*5, ctx, func(ctx *zero.Ctx, msg []message.MessageSegment) {
m := make(message.Message, len(msg))
for i, item := range msg {
m[i] = ctxext.FakeSenderForwardNode(ctx, item)
}
ctx.SendGroupForwardMessage(id, m)
})
if err != nil {
panic(err)
}
return x
},
})
job := lazy.Get()
for _, msg := range msgs {
job.Add(msg)
}
}

0 comments on commit 817c4fa

Please sign in to comment.