Pull 模式
Pull 模式通过定时轮询 GitHub API 来获取仓库事件,适合没有公网 IP 或无法配置 Webhook 的场景。
工作原理
- 适配器启动时,获取每个仓库的最新事件 ID
- 按照配置的轮询间隔,定时调用 GitHub Events API
- 比对事件 ID,只处理新产生的事件
- 将事件转换为 Koishi 消息并派发
优势
✅ 无需公网 IP - 适合本地开发和内网环境
✅ 支持代理 - 可配置 HTTP/HTTPS 代理访问 GitHub
✅ 配置简单 - 无需在 GitHub 配置 Webhook
✅ 多仓库友好 - 可同时监听多个仓库
限制
⚠️ 实时性较差 - 取决于轮询间隔,最快也有延迟
⚠️ API 配额限制 - 频繁轮询会消耗 GitHub API 配额
⚠️ 部分事件受限 - 某些事件类型可能无法通过 Events API 获取
API 配额说明
GitHub API 对请求频率有限制:
- 认证请求: 5000 次/小时
- 未认证请求: 60 次/小时
配额计算
假设监听 N 个仓库,轮询间隔为 T 秒:
log
每小时请求次数 = (3600 / T) × N示例:
- 监听 1 个仓库,间隔 30 秒:120 次/小时
- 监听 5 个仓库,间隔 60 秒:300 次/小时
提示
可以通过 GitHub API 响应头查看剩余配额:
X-RateLimit-Limit: 总配额X-RateLimit-Remaining: 剩余配额X-RateLimit-Reset: 重置时间
支持的事件类型
Pull 模式通过 GitHub Events API 获取事件,支持以下类型:
✅ IssuesEvent - Issue 创建、关闭、重新打开
✅ IssueCommentEvent - Issue 评论
✅ PullRequestEvent - PR 创建、关闭、重新打开
✅ PullRequestReviewCommentEvent - PR 审查评论
❌ DiscussionEvent - Discussion 事件(API 不支持)
❌ DiscussionCommentEvent - Discussion 评论(API 不支持)
注意
如果需要完整的 Discussion 事件支持,请使用 Webhook 模式。
代理配置
Pull 模式支持通过代理访问 GitHub API,详见 代理配置。