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

如何使用GitHub GraphQL API筛选GitHub App创建的议题?

正确筛选GitHub机器人创建的开放议题

我正将GitHub机器人从REST API迁移到GraphQL API,目标是筛选pacstall/pacstall-programs仓库中由pacstall-pacbot创建的开放议题。尝试了以下两个查询:

query ListOpenIssues {
  repository(name: "pacstall-programs", owner: "pacstall") {
    issues(last: 100, filterBy: {states: OPEN, createdBy: "app/pacstall-pacbot"}) {
      nodes {
        number
        title
        url
      }
    }
  }
}
query ListOpenIssues {
  repository(name: "pacstall-programs", owner: "pacstall") {
    issues(last: 100, filterBy: {states: OPEN, createdBy: "pacstall-pacbot"}) {
      nodes {
        number
        title
        url
      }
    }
  }
}

但两个查询均返回空结果:

{
  "data": {
    "repository": {
      "issues": {
        "nodes": []
      }
    }
  }
}

问题原因

你之前的查询返回空的核心原因是:GitHub GraphQL API的issues.filterBy.createdBy字段要求传入GitHub应用的ID,而非应用名称(包括app/<应用名>格式也不支持直接作为参数传入)。

解决方案

方案1:通过应用ID筛选(推荐)

  1. 先查询你的GitHub应用ID:
    执行以下GraphQL查询,获取pacstall-pacbot的唯一ID:
query GetPacbotID {
  app(login: "pacstall-pacbot") {
    id
  }
}
  1. 将获取到的ID替换到议题查询中:
query ListOpenIssues {
  repository(name: "pacstall-programs", owner: "pacstall") {
    issues(last: 100, filterBy: {states: OPEN, createdBy: "替换为上面得到的应用ID"}) {
      nodes {
        number
        title
        url
      }
    }
  }
}

方案2:客户端过滤

如果不想提前查询应用ID,可以先获取所有开放议题,再在客户端代码中过滤作者为app/pacstall-pacbot的条目:

query ListOpenIssues {
  repository(name: "pacstall-programs", owner: "pacstall") {
    issues(last: 100, filterBy: {states: OPEN}) {
      nodes {
        number
        title
        url
        author {
          login
        }
      }
    }
  }
}

之后在你的代码中筛选author.login === "app/pacstall-pacbot"的议题即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:15:35