如何通过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 的写法就很顺了——本质就是把上面的请求封装成了对象方法:
- 先通过 PyGitHub 登录,拿到仓库对象
- 获取目标 Issue 对象
- 调用
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
相关产品推荐
相关产品推荐

