mirror of
https://github.com/fumiama/ReiBot.git
synced 2026-06-05 00:50:25 +08:00
feat: ctx add api Break
This commit is contained in:
10
context.go
10
context.go
@@ -148,3 +148,13 @@ func (ctx *Ctx) SendAudio(file tgba.RequestFileData, replytosender bool, caption
|
||||
}
|
||||
return ctx.Caller.Send(&msg)
|
||||
}
|
||||
|
||||
// Block 匹配成功后阻止后续触发
|
||||
func (ctx *Ctx) Block() {
|
||||
ctx.ma.SetBlock(true)
|
||||
}
|
||||
|
||||
// Block 在 pre, rules, mid 阶段阻止后续触发
|
||||
func (ctx *Ctx) Break() {
|
||||
ctx.ma.Break = true
|
||||
}
|
||||
|
||||
9
event.go
9
event.go
@@ -219,6 +219,9 @@ loop:
|
||||
if m.Engine != nil {
|
||||
for _, handler := range m.Engine.preHandler {
|
||||
if !handler(ctx) { // 有 pre handler 未满足
|
||||
if m.Block { // 阻断后续
|
||||
break loop
|
||||
}
|
||||
continue loop
|
||||
}
|
||||
}
|
||||
@@ -226,6 +229,9 @@ loop:
|
||||
|
||||
for _, rule := range m.Rules {
|
||||
if rule != nil && !rule(ctx) { // 有 Rule 的条件未满足
|
||||
if m.Block { // 阻断后续
|
||||
break loop
|
||||
}
|
||||
continue loop
|
||||
}
|
||||
}
|
||||
@@ -234,6 +240,9 @@ loop:
|
||||
if m.Engine != nil {
|
||||
for _, handler := range m.Engine.midHandler {
|
||||
if !handler(ctx) { // 有 mid handler 未满足
|
||||
if m.Block { // 阻断后续
|
||||
break loop
|
||||
}
|
||||
continue loop
|
||||
}
|
||||
}
|
||||
|
||||
4
go.mod
4
go.mod
@@ -3,14 +3,14 @@ module github.com/fumiama/ReiBot
|
||||
go 1.18
|
||||
|
||||
require (
|
||||
github.com/FloatTech/floatbox v0.0.0-20221010032535-3acc1e46c8a9
|
||||
github.com/FloatTech/floatbox v0.0.0-20221010154018-16998fe73c7b
|
||||
github.com/FloatTech/zbpctrl v1.5.2-0.20221010032757-ed784af72c91
|
||||
github.com/RomiChan/syncx v0.0.0-20220404072119-d7ea0ae15a4c
|
||||
github.com/fumiama/go-base16384 v1.5.4
|
||||
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1
|
||||
github.com/sirupsen/logrus v1.9.0
|
||||
github.com/stretchr/testify v1.8.0
|
||||
github.com/wdvxdr1123/ZeroBot v1.5.2-0.20221010014449-b4fd5aee6033
|
||||
github.com/wdvxdr1123/ZeroBot v1.5.2-0.20221010153647-ef3e42aff1ff
|
||||
)
|
||||
|
||||
require (
|
||||
|
||||
8
go.sum
8
go.sum
@@ -1,5 +1,5 @@
|
||||
github.com/FloatTech/floatbox v0.0.0-20221010032535-3acc1e46c8a9 h1:dKjfeGDNZlU/U8qIpEPk9kWCJwBqfboWNT14JRmM4jU=
|
||||
github.com/FloatTech/floatbox v0.0.0-20221010032535-3acc1e46c8a9/go.mod h1:VVtyTHm1I6bTkzefaTEYE9jhqP+nciu3mb3JhKDjHvI=
|
||||
github.com/FloatTech/floatbox v0.0.0-20221010154018-16998fe73c7b h1:UOREhlQ4DRaFItwTnj5JUHYfOZqcwz0QjzAU0R2OWCo=
|
||||
github.com/FloatTech/floatbox v0.0.0-20221010154018-16998fe73c7b/go.mod h1:QOOZGdU9EhrunQv9qiYB4tyR5450QW2HjlkoVWAlzJ8=
|
||||
github.com/FloatTech/sqlite v0.5.0 h1:U7J5Omc534PqmH6csfu+ypCo3DS8L91l5lTsxUu3b/U=
|
||||
github.com/FloatTech/sqlite v0.5.0/go.mod h1:i33d92OtR8jcp5fBUvQtospf27+MkfUxnGwnZ95E/dA=
|
||||
github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b h1:tvciXWq2nuvTbFeJGLDNIdRX3BI546D3O7k7vrVueZw=
|
||||
@@ -46,8 +46,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
|
||||
github.com/tidwall/gjson v1.14.3 h1:9jvXn7olKEHU1S9vwoMGliaT8jq1vJ7IH/n9zD9Dnlw=
|
||||
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
|
||||
github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
|
||||
github.com/wdvxdr1123/ZeroBot v1.5.2-0.20221010014449-b4fd5aee6033 h1:iTudCMGNgzwMMqlXB1E5DObVX7cz8enaooD8nRtCmXg=
|
||||
github.com/wdvxdr1123/ZeroBot v1.5.2-0.20221010014449-b4fd5aee6033/go.mod h1:shG/ruauisKaVcov4amrFJtkeDl7nl+Q00IXB2PqFsc=
|
||||
github.com/wdvxdr1123/ZeroBot v1.5.2-0.20221010153647-ef3e42aff1ff h1:CCLcXk7ZlT26MQ8Ad7RreGTd4XPwmtiA6Qe4J+saZSI=
|
||||
github.com/wdvxdr1123/ZeroBot v1.5.2-0.20221010153647-ef3e42aff1ff/go.mod h1:shG/ruauisKaVcov4amrFJtkeDl7nl+Q00IXB2PqFsc=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
|
||||
@@ -20,6 +20,8 @@ type Matcher struct {
|
||||
Temp bool
|
||||
// Block 是否阻断后续 Matcher,为 true 时当前Matcher匹配成功后,后续Matcher不参与匹配
|
||||
Block bool
|
||||
// Break 是否退出后续匹配流程, 只有 rule 返回 false 且此值为真才会退出, 且不对 mid handler 以下的 rule 生效
|
||||
Break bool
|
||||
// priority 优先级,越小优先级越高
|
||||
priority int
|
||||
// Event 当前匹配到的事件
|
||||
|
||||
Reference in New Issue
Block a user