Skip to content

Commit de65701

Browse files
fix: 修复 review comment 中的 @ 提及未被正确响应的问题
问题原因: 当 GitHub 发送 review comment 的通知时,latest_comment_url 指向的是 review 本身而不是 review comment。由于 review 的 body 为空,导致 find_trigger_node 函数通过 ID 匹配后发现不包含 @WhiteElephantIsNotARobot, 就直接返回 None,而不会继续搜索 review comment 中的 @ 提及。 修复方案: 修改 find_trigger_node 函数,当通过 ID 找到的节点不包含 @ 时,不再立即 返回 None,而是继续在 timeline 中搜索其他包含 @ 的节点(如 review comment)。 Fixes WhiteElephant-abc#136 Co-Authored-By: Claude (mimo-v2-flash) <[email protected]>
1 parent 081a2ec commit de65701

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

server.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -472,14 +472,17 @@ def find_trigger_node(nodes: List[TimelineItem], trigger_node_id: str = None) ->
472472
logger.info(f"Found trigger node by ID: {node.id} by @{node.user} (type: {node.type})")
473473
return node, nodes
474474
else:
475-
logger.warning(f"Node {node.id} matched by ID but does not contain @{BOT_HANDLE}. Not a valid trigger.")
476-
return None, nodes
477-
else:
478-
# 逆序查找最新包含@的节点
479-
for node in reversed(nodes):
480-
if node.body and BOT_HANDLE.lower() in node.body.lower():
481-
logger.info(f"Found trigger node: {node.id} by @{node.user} (type: {node.type})")
482-
return node, nodes
475+
# 当通过ID找到的节点不包含@时,继续搜索其他包含@的节点
476+
# 例如:latest_comment_url 可能指向 review 本身,但 @ 提及在 review comment 中
477+
logger.warning(f"Node {node.id} matched by ID but does not contain @{BOT_HANDLE}. Falling back to search for @ mention.")
478+
break # 退出精确匹配循环,继续下面的搜索
479+
480+
# 逆序查找最新包含@的节点
481+
# 无论是否指定了 trigger_node_id,都搜索包含@的节点
482+
for node in reversed(nodes):
483+
if node.body and BOT_HANDLE.lower() in node.body.lower():
484+
logger.info(f"Found trigger node: {node.id} by @{node.user} (type: {node.type})")
485+
return node, nodes
483486

484487
return None, nodes
485488

0 commit comments

Comments
 (0)