Commit aec76ac
fix: 多 bot 话题中 @ 某 bot 时其他 bot 不再抢答 (#262)
* fix: 话题创建者 bot 在 @ 他人时不再抢答(open_id 跨 app 隔离)
多 bot 共处一个话题时,用户 @ 某个 bot,其他 bot 也会响应。
根因:飞书 open_id 按 app 隔离,同一 bot 在不同 app 下 open_id 不同。
thread_bypass 的闸用 `!anyBotMentioned`(是否 @ 了已知 bot)判定,而
getAllBotOpenIds() 只存各 bot 用自己 app 拉到的「自视 open_id」。当用户
@ 了另一个 bot 时,本 bot 的 app 收到的那条 mention 是「对方在本 app 视角
下的 open_id」,不在 knownBotIds 里 → anyBotMentioned 漏判 → 话题创建者
bot 误以为没人被 @ 而走 bypass 抢答。
修复:改用「是否 @ 了非自己」作为不 bypass 的判据。每个 bot 唯一能可靠
识别的就是自己的 open_id —— 只要消息 @ 了除本 bot 外的任何对象,就说明在
叫别人,不 bypass。同时给单 bot 路径补上此前缺失的同款 mention 闸。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test: 覆盖话题创建者 bot 在 @ 他人时不 bypass 抢答
- 多 bot: 创建者 bot 看到 @ 了跨 app open_id 未识别的对象 → 不 bypass
- 单 bot: 创建者 bot 看到 @ 了另一独立服务 bot → 不 bypass
两个用例在修复前均会失败(走 thread_bypass 抢答),修复后通过。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 88bf472 commit aec76ac
2 files changed
Lines changed: 50 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
218 | 218 | | |
219 | 219 | | |
220 | 220 | | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
221 | 231 | | |
222 | 232 | | |
223 | 233 | | |
| |||
321 | 331 | | |
322 | 332 | | |
323 | 333 | | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
324 | 352 | | |
325 | 353 | | |
326 | 354 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
566 | 566 | | |
567 | 567 | | |
568 | 568 | | |
569 | | - | |
570 | 569 | | |
571 | | - | |
572 | | - | |
573 | | - | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
574 | 583 | | |
575 | 584 | | |
576 | 585 | | |
| |||
599 | 608 | | |
600 | 609 | | |
601 | 610 | | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
602 | 620 | | |
603 | 621 | | |
604 | 622 | | |
| |||
0 commit comments