GitHub API 参考
约 851 字大约 3 分钟
2026-03-19
GitHubBotAPI完整方法签名 — Issue、Comment、PR、Query、Release 五个 Mixin 共 24 个方法。所有查询/操作方法均返回类型化的 Pydantic 模型而非原始
dict。模型定义见ncatbot.types.github.models。
API 架构
api.github : GitHubBotAPI
├── IssueAPIMixin ← Issue 增删改查 + 标签 + 指派
├── CommentAPIMixin ← 评论增删改查
├── PRAPIMixin ← PR 评论 / 合并 / 关闭 / 审查
├── QueryAPIMixin ← 仓库 / 用户查询
└── ReleaseAPIMixin ← Release 查询 / Assets 列表返回类型总览
| 返回模型 | 说明 | 继承 |
|---|---|---|
GitHubIssueInfo | Issue 详情(含 user / labels / assignees) | GitHubModel |
GitHubLabelInfo | 标签信息 | GitHubModel |
GitHubCommentInfo | 评论详情 | GitHubModel |
GitHubPullRequestInfo | PR 详情(含 head / base) | GitHubModel |
GitHubMergeResult | PR 合并结果 | GitHubModel |
GitHubRepoInfo | 仓库信息(含 owner) | GitHubModel |
GitHubUserInfo | 用户信息 | GitHubModel |
GitHubReleaseInfo | Release 完整信息(含 assets) | GitHubRelease → GitHubModel |
GitHubReleaseAsset | Release Asset | GitHubModel |
所有模型支持 extra="allow"(容忍未声明字段)和 dict 兼容访问(model["key"]、model.get(key))。
Issue 操作(IssueAPIMixin)
create_issue()
async def create_issue(
repo: str,
title: str,
body: str = "",
labels: Optional[List[str]] = None,
assignees: Optional[List[str]] = None,
) -> GitHubIssueInfo| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| repo | str | — | 仓库全名,如 "owner/repo" |
| title | str | — | Issue 标题 |
| body | str | "" | Issue 内容(支持 Markdown) |
| labels | List[str] | None | None | 标签列表 |
| assignees | List[str] | None | None | 指派人列表 |
update_issue()
async def update_issue(
repo: str,
issue_number: int,
*,
title: Optional[str] = None,
body: Optional[str] = None,
state: Optional[str] = None,
labels: Optional[List[str]] = None,
assignees: Optional[List[str]] = None,
) -> GitHubIssueInfo| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| repo | str | — | 仓库全名 |
| issue_number | int | — | Issue 编号 |
| title | str | None | None | 新标题 |
| body | str | None | None | 新内容 |
| state | str | None | None | "open" 或 "closed" |
| labels | List[str] | None | None | 替换标签 |
| assignees | List[str] | None | None | 替换指派人 |
close_issue()
async def close_issue(repo: str, issue_number: int) -> GitHubIssueInforeopen_issue()
async def reopen_issue(repo: str, issue_number: int) -> GitHubIssueInfoget_issue()
async def get_issue(repo: str, issue_number: int) -> GitHubIssueInfoadd_labels()
async def add_labels(repo: str, issue_number: int, labels: List[str]) -> List[GitHubLabelInfo]remove_label()
async def remove_label(repo: str, issue_number: int, label: str) -> Noneset_assignees()
async def set_assignees(repo: str, issue_number: int, assignees: List[str]) -> GitHubIssueInfo评论操作(CommentAPIMixin)
create_issue_comment()
async def create_issue_comment(repo: str, issue_number: int, body: str) -> GitHubCommentInfo| 参数 | 类型 | 说明 |
|---|---|---|
| repo | str | 仓库全名 |
| issue_number | int | Issue 或 PR 编号 |
| body | str | 评论内容(支持 Markdown) |
update_comment()
async def update_comment(repo: str, comment_id: int, body: str) -> GitHubCommentInfodelete_comment()
async def delete_comment(repo: str, comment_id: int) -> Nonelist_issue_comments()
async def list_issue_comments(
repo: str, issue_number: int, page: int = 1, per_page: int = 30
) -> List[GitHubCommentInfo]| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| page | int | 1 | 页码 |
| per_page | int | 30 | 每页数量 |
PR 操作(PRAPIMixin)
create_pr_comment()
async def create_pr_comment(repo: str, pr_number: int, body: str) -> GitHubCommentInfoPR 评论与 Issue 评论共用 GitHub REST 端点。
merge_pr()
async def merge_pr(
repo: str,
pr_number: int,
*,
merge_method: Union[GitHubMergeMethod, str] = GitHubMergeMethod.MERGE,
commit_title: Optional[str] = None,
commit_message: Optional[str] = None,
) -> GitHubMergeResult| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| merge_method | GitHubMergeMethod | str | "merge" | "merge" / "squash" / "rebase" |
| commit_title | str | None | None | 合并提交标题 |
| commit_message | str | None | None | 合并提交消息 |
close_pr()
async def close_pr(repo: str, pr_number: int) -> GitHubPullRequestInforequest_review()
async def request_review(repo: str, pr_number: int, reviewers: List[str]) -> GitHubPullRequestInfoget_pr()
async def get_pr(repo: str, pr_number: int) -> GitHubPullRequestInfo查询操作(QueryAPIMixin)
get_repo()
async def get_repo(repo: str) -> GitHubRepoInfoget_user()
async def get_user(username: str) -> GitHubUserInfoget_authenticated_user()
async def get_authenticated_user() -> GitHubUserInfoRelease 操作(ReleaseAPIMixin)
get_release()
async def get_release(repo: str, release_id: Union[str, int]) -> GitHubReleaseInfo| 参数 | 类型 | 说明 |
|---|---|---|
| repo | str | 仓库全名 |
| release_id | str | int | Release ID |
get_release_by_tag()
async def get_release_by_tag(repo: str, tag: str) -> GitHubReleaseInfo| 参数 | 类型 | 说明 |
|---|---|---|
| repo | str | 仓库全名 |
| tag | str | Git Tag 名称,如 "v5.2.0" |
get_latest_release()
async def get_latest_release(repo: str) -> GitHubReleaseInfolist_release_assets()
async def list_release_assets(
repo: str, release_id: Union[str, int]
) -> List[GitHubReleaseAsset]| 参数 | 类型 | 说明 |
|---|---|---|
| repo | str | 仓库全名 |
| release_id | str | int | Release ID |
返回包含 name, content_type, size, download_count, browser_download_url 等字段的 GitHubReleaseAsset 对象列表。
返回:API 参考首页 · 相关:GitHub API 使用指南 · GitHub 事件
版权所有
版权归属:huan-yp
