fix(kook): 丢弃自我回声消息,防 bot 把自己的回复当入站用户消息
KOOK 网关会把 bot 自己发的消息又推回给 bot(author_id=bot uid),导致 bot 把自己的 回复当成入站用户消息处理(循环/浪费token)。toUnifiedMessage 计算 senderID 后调用 isSelf(senderID) 比对 a.botID(user/me 解析出的 bot 账号 id),命中即返回 ok=false 丢弃。 - identity.go: 新增 isSelf(并发安全,botMu) - message.go: self-echo 丢弃 + debug 日志 - message_test.go: TestToUnified_DropsSelfEcho 验收: go build/vet/test ./... 全绿
This commit is contained in:
1 parent
2c4ade5f28
commit
db8465f68b
3 files changed
+34
No files matched your search
@@ -82,6 +82,12 @@ func (a *Adapter) toUnifiedMessage(data json.RawMessage, frame []byte) (adapter.
|
||||
_ = json.Unmarshal(ev.Extra, &ex)
|
||||
|
||||
senderID, senderName := senderOf(&ev, &ex)
|
||||
// Self-echo: KOOK pushes the bot's own channel messages back to it via the gateway.
|
||||
// Drop them so the bridge never treats the bot's replies as inbound user messages.
|
||||
if a.isSelf(senderID) {
|
||||
a.log.Debug("self message dropped (echo)", "sender_id", senderID, "channel", ev.TargetID)
|
||||
return adapter.UnifiedMessage{}, false
|
||||
}
|
||||
ct, media := messageKind(ev.Type, content)
|
||||
group := channelIsGroup(ev.ChannelType)
|
||||
|
||||
|
||||
Reference in new issue
Block a user