Awesome
<!-- * @Author : yanyongyu * @Date : 2020-09-10 17:11:45 * @LastEditors : yanyongyu * @LastEditTime : 2024-05-31 15:44:56 * @Description : README * @GitHub : https://github.com/yanyongyu --> <!-- markdownlint-disable MD033 MD041 --> <p align="center"> <a href="https://github.com/cscs181/QQ-GitHub-Bot"><img src="https://github.com/cscs181/QQ-GitHub-Bot/raw/master/assets/logo.svg" width="150" height="150" alt="qq-github-bot"></a> </p> <div align="center">QQ-GitHub-Bot
<!-- prettier-ignore-start --> <!-- markdownlint-disable-next-line MD036 -->✨ GitHub Bot for QQ ✨
<!-- prettier-ignore-end --> </div> <p align="center"></p>
简介
在 QQ 内 订阅, 查看, 处理 GitHub Issue and Pull Request 。
功能简介
主要功能有 (持续更新中):
功能 | 描述 |
---|---|
/状态 或 /status | 获取当前机器人及所在服务器运行状态,支持分布式多节点 |
/install [check|revoke] | 安装 GitHub APP 集成(将用于 Issue/PR, WebHook 等管理) |
/auth [check|revoke] | 授权 APP 以进行用户快捷操作 |
/bind [owner/repo] | 群绑定指定仓库以进行仓库快捷操作 |
/subscribe owner/repo event[/action] | 订阅指定仓库的指定事件(支持多事件订阅) |
/search [code|repo|user] query | 搜索 GitHub 代码、仓库、用户 |
/contribution | 获取最近一年的贡献图 |
owner/repo[#number] 或 GitHub 链接 | 快捷查看仓库 Issue/PR, PR diff 等 |
/link , /repo | 获取 Issue/PR、仓库链接 |
/readme | 查看仓库 README |
/license | 获取仓库许可证 |
/release [tag] | 获取仓库最新 Release,或指定 tag 的 Release |
/deployment | 获取仓库 Deployment 列表 |
/star , /unstar | 快捷 star |
/diff | 查看 PR diff |
/comment | 评论 Issue/PR |
/label [label ...] , /unlabel [label] | 添加删除标签 |
/close [reason] , /reopen | 关闭或重新开启 PR |
/approve [message] | 批准 PR |
/merge [commit] , /squash [commit] , /rebase | 合并 PR |
sentry | 日志监控,上报错误 |
health check | 访问路由地址 /health 即可进行服务状态自检 |
事件订阅
支持的事件根据 GitHub APP 配置的 Webhook 事件列表而定,可以自行选择和更改,推荐选择的事件有:
事件类型 | 事件描述 |
---|---|
Issues | 任何开启、关闭、修改等 Issue 相关操作 |
Issue Comment | 创建、修改、删除 Issue/PR 的评论 |
Pull Request | 任何开启、关闭、修改等 PR 相关操作 |
Pull Request Review | PR Review 相关操作 |
Star | star、unstar 仓库 |
Push | push commit 到仓库 |
Release | 创建、修改、发布等 Release 相关操作 |
部署
[!WARNING] 请注意,go-cqhttp 的部署方式已不再提供说明,请自行配置连接。 如果使用 docker 部署,可以参考使用
docker compose --profile go-cqhttp up -d
命令启动。
Docker
-
部署要求
-
Docker & Docker Compose
curl -sSL https://get.docker.com/ | sh
-
1+ CPU Core
-
1+ GB RAM
-
能够访问 GitHub API 的网络环境
对于内存大小的限制,可以通过修改
docker-compose.yml
中的deploy.resources.limits.memory
来调整,由于采用了 playwright(chromium) 渲染图片,不限制内存可能会导致渲染大图时直接卡死服务器。 -
-
注册 GitHub App 配置 GitHub App:
- callback URL 为
http://<your-domain>/github/auth
- webhook URL 为
http://<your-domain>/github/webhooks/<app_id>
,可在 app 创建完成后添加 - 权限为
Contents (Read Only)
,Deployments (Read Only)
,Issues (Read and Write)
,Pull requests (Read and Write)
,Metadata (Read Only)
和Starring (Read and Write)
- Webhook 事件参考 事件订阅 自行选择需要的事件
- 取消勾选
Expire user authorization tokens
或在 app optional feature 中opt-out
- 勾选
Request user authorization (OAuth) during installation
- 记录
app_id
,client_id
,生成并下载private_key
,client_secret
备用
- callback URL 为
-
下载
docker-compose.yml
至任意空目录 -
在
docker-compose.yml
同目录下创建.env
并写入如下配置项:# 可选,参考 nonebot superuser 格式 SUPERUSERS=["机器人管理号"] # filehost 配置项,用于上传图片 # 必填 FILEHOST_URL_BASE=https://<your-domain> # onebot # 可选 ONEBOT_ACCESS_TOKEN=your_access_token # 可选 ONEBOT_SECRET=your_secret # 可选,QQ 机器人配置项 QQ_BOTS=' [ { "id": "xxx", "token": "xxx", "secret": "xxx", "intent": { "at_messages": false, "guild_messages": true, "direct_message": true } } ] ' # 必填,postgres 数据库配置项 POSTGRES_USER=bot POSTGRES_PASSWORD=postgres_password POSTGRES_DB=bot # 必填,redis 数据库配置项 REDIS_PASSWORD=redis_password # 可选,Sentry DSN 网址 SENTRY_DSN=https://xxxxxxxx.sentry.io/123123 # Github App 配置 # 可选,图片主题,light/dark GITHUB_THEME=light # 必填,github app 配置 # 可选,oauth app 配置,用于没有权限时的 fallback # webhook_secret 与 github app 配置中的 webhook secret 保持一致,如果没有设置则删除 GITHUB_APPS=' [ { "app_id": "", "private_key": [ "-----BEGIN RSA PRIVATE KEY-----", "~~ YOUR PRIVATE KEY HERE ~~", "-----END RSA PRIVATE KEY-----" ], "client_id": "", "client_secret": "", "webhook_secret": "" }, { "client_id": "", "client_secret": "" } ] '
docker-compose.yml
中的配置视情况修改,如无必要请勿修改! -
启动
在目录下执行
docker compose up -d
(旧版方式docker-compose up -d
) 即可。
Kubernetes
待完善,可自行尝试使用 k8s/bot/
目录下的 helm chart
下载或克隆 k8s/bot/
目录,新建文件 values.yaml
,参考目录下的 values.yaml
填写覆盖配置项,然后执行 helm install -n <botnamespace> --create-namespace -f values.yaml <botname> ./k8s/bot
即可。其中 <botnamespace>
为命名空间,<botname>
为部署应用名称,请自行修改。
开发
使用 Codespaces (Dev Container) 一键配置开发环境 (Python、Redis、Postgres):
修改 .env.dev
文件中的部分配置项,然后执行 python bot.py
即可。
如需连接到 Redis 或 Postgres 数据库调试,请确保 VSCode 已正确映射端口 (必要时可以重新映射 6379、5432 端口),使用本地工具远程连接即可。