1
0
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:
源文雨
2022-10-11 00:14:05 +08:00
parent 95250c70dc
commit 73d5f1e597
5 changed files with 27 additions and 6 deletions

View File

@@ -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
}

View File

@@ -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
View File

@@ -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
View File

@@ -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=

View File

@@ -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 当前匹配到的事件