Skip to content

Commit 80dc1ed

Browse files
committed
fix regex filter
1 parent 7318c07 commit 80dc1ed

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

service/bot/remote.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,15 +230,27 @@ func handleApiFrame(cli *client.QQClient, req *onebot.Frame) *onebot.Frame {
230230
func HandleEventFrame(cli *client.QQClient, eventFrame *onebot.Frame) {
231231
eventFrame.Ok = true
232232
eventFrame.BotId = cli.Uin
233+
eventBytes, err := eventFrame.Marshal() // 原消息
234+
if err != nil {
235+
log.Errorf("event 序列化错误 %v", err)
236+
return
237+
}
233238

234239
for _, ws := range WsServers {
240+
235241
if ws.EventFilter != nil && len(ws.EventFilter) > 0 { // 有event filter
236242
if !int32SliceContains(ws.EventFilter, int32(eventFrame.FrameType)) {
237243
log.Debugf("EventFilter 跳过 [%s](%s)", ws.Name, ws.wsUrl)
238244
continue
239245
}
240246
}
241247

248+
err := proto.Unmarshal(eventBytes, eventFrame) // 每个serverGroup, eventFrame 恢复原消息,防止因正则匹配互相影响
249+
if err != nil {
250+
log.Errorf("failed to unmarshal raw event frame, %+v", err)
251+
return
252+
}
253+
242254
report := true // 是否上报event
243255

244256
if ws.regexp != nil { // 有prefix filter
@@ -261,13 +273,13 @@ func HandleEventFrame(cli *client.QQClient, eventFrame *onebot.Frame) {
261273
}
262274

263275
if report {
264-
eventBytes, err := eventFrame.Marshal()
276+
sendingBytes, err := eventFrame.Marshal() // 使用正则修改后的eventFrame
265277
if err != nil {
266278
log.Errorf("event 序列化错误 %v", err)
267-
return
279+
continue
268280
}
269281
log.Debugf("上报 event 给 [%s](%s)", ws.Name, ws.wsUrl)
270-
_ = ws.Send(websocket.BinaryMessage, eventBytes)
282+
_ = ws.Send(websocket.BinaryMessage, sendingBytes)
271283
}
272284
}
273285
}

0 commit comments

Comments
 (0)