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

如何通过GitHub API关闭Issue?寻求PyGitHub实现方向

嘿,这事儿其实挺 straightforward 的,我来给你拆解清楚!

先从 GitHub REST API 原生方法说起

要关闭一个 Issue,核心是给 GitHub API 发一个 PATCH 请求,目标端点是:
PATCH /repos/{owner}/{repo}/issues/{issue_number}

请求体里只需要指定 state 字段为 "closed" 就行,另外别忘了带上认证信息(个人访问令牌,PAT),令牌需要有 repo 权限(私有仓库)或者 public_repo 权限(公开仓库)。

举个 curl 命令的例子,你可以直接测试:

curl -X PATCH \
  https://api.github.com/repos/你的用户名/你的仓库名/issues/issue编号 \
  -H "Authorization: token 你的个人访问令牌" \
  -H "Accept: application/vnd.github.v3+json" \
  -d '{"state": "closed"}'

如果想顺便给关闭的 Issue 加个备注(比如说明关闭原因),可以在请求体里加 body 字段,或者单独发一个 Issue comment 请求,不过核心关闭操作就是上面那步。

对应到 PyGitHub 的实现

既然你懂了 API 逻辑,PyGitHub 的写法就很顺了——本质就是把上面的请求封装成了对象方法:

  1. 先通过 PyGitHub 登录,拿到仓库对象
  2. 获取目标 Issue 对象
  3. 调用 edit() 方法,传入 state="closed"

给你个代码示例:

from github import Github

# 用个人访问令牌登录
g = Github("你的个人访问令牌")
# 获取目标仓库
repo = g.get_repo("你的用户名/你的仓库名")
# 获取要关闭的 Issue
issue = repo.get_issue(number=issue编号)
# 关闭 Issue
issue.edit(state="closed")

# 要是想顺便加个关闭说明,也可以在 edit 里加 body,或者单独加评论
issue.create_comment("这个 Issue 已经修复,现在关闭啦!")
小提醒
  • 确保你的个人访问令牌权限足够,不然会返回 403 错误
  • 除了关闭,你也可以用同样的思路把 Issue 重新打开(把 state 设为 "open")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:18:55