You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查Issue是否为Pull Request?Github App Webhook场景

嘿,这个问题我太熟了!之前开发GitHub App处理Webhook的时候刚好研究过,给你说两个直接有效的方法:

一、快速判断issue_comment Webhook的评论是否在Pull Request中

在issue_comment的Webhook payload里,issue对象本身就带了关键的判断依据——pull_request属性。因为GitHub的Pull Request本质上就是一种特殊的Issue,所以如果这条评论是在PR里的,payload.issue.pull_request会是一个包含PR相关链接的对象;如果是普通Issue的评论,这个值就是null。

举个实际代码的例子(以Node.js处理Webhook为例):

// 假设payload是你接收到的Webhook原始数据
if (payload.issue.pull_request) {
  console.log("这条评论来自Pull Request!");
  // 还能通过payload.issue.pull_request.url获取PR的API链接,进一步操作
} else {
  console.log("这条评论来自普通Issue!");
}
二、检查任意Issue是否为Pull Request

不管是通过Webhook拿到的Issue对象,还是调用GitHub API获取的Issue详情,判断逻辑都是一样的:看Issue数据里的pull_request字段。

比如你调用GitHub API获取某个Issue的详情(接口:GET /repos/{owner}/{repo}/issues/{issue_number}),返回的JSON结构里:

  • 如果存在pull_request字段且不为null(里面会有html_url、url等PR相关属性),那这个Issue就是Pull Request;
  • 如果pull_request是null,那就是普通Issue。

举个curl调用的例子:

curl -H "Authorization: token YOUR_GITHUB_TOKEN" \
  https://api.github.com/repos/你的用户名/你的仓库/issues/Issue编号

另外补充个小技巧:如果你已经知道Issue编号,也可以直接尝试访问PR的API端点(GET /repos/{owner}/{repo}/pulls/{编号}),如果返回200状态码就是PR,404就是普通Issue,但这种方法不如检查pull_request字段高效,毕竟多了一次API请求。

内容的提问来源于stack exchange,提问作者Ztyx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:13:31