Sign inSign up

cscs181/qq-github-bot

By cscs181

•Updated 23 days ago

GitHub Bot for QQ

Image
Integration & delivery
Developer tools
0

10K+

cscs181/qq-github-bot repository overview

qq-github-bot

⁠QQ-GitHub-Bot

✨ GitHub Bot for QQ ✨

Docker Hub LICENSE Python Version NoneBot Version Black Pyright Ruff

Release Pre-Commit Pyright Ruff

OneBot V11 QQ

⁠简介

在 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 ReviewPR Review 相关操作
Starstar、unstar 仓库
Pushpush commit 到仓库
Release创建、修改、发布等 Release 相关操作

⁠部署

Warning

请注意,[go-cqhttp](https://github.com/Mrs4s/go-cqhttp) 的部署方式已不再提供说明,请自行配置连接。 如果使用 docker 部署,可以参考使用 `docker compose --profile go-cqhttp up -d` 命令启动。
⁠Docker
  1. 部署要求

    • 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) 渲染图片,不限制内存可能会导致渲染大图时直接卡死服务器。

  2. 注册 GitHub App 配置 GitHub App:

    1. callback URL 为 http://<your-domain>/github/auth
    2. webhook URL 为 http://<your-domain>/github/webhooks/<app_id>,可在 app 创建完成后添加
    3. 权限为 Contents (Read Only), Deployments (Read Only), Issues (Read and Write), Pull requests (Read and Write), Metadata (Read Only) 和 Starring (Read and Write)
    4. Webhook 事件参考 事件订阅⁠ 自行选择需要的事件
    5. 取消勾选 Expire user authorization tokens 或在 app optional feature 中 opt-out
    6. 勾选 Request user authorization (OAuth) during installation
    7. 记录 app_id, client_id,生成并下载 private_key, client_secret 备用
  3. 下载 docker-compose.yml⁠ 至任意空目录

  4. 在 docker-compose.yml 同目录下创建 .env 并写入如下配置项:

    # 可选,参考 nonebot superuser 格式
    SUPERUSERS=["机器人管理号"]
    
    # 必填,可以访问到机器人的公网地址,用于上传图片
    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 数据库配置项
    # 如果使用 docker compose / helm 部署则无需修改
    POSTGRES_USER=bot
    POSTGRES_PASSWORD=postgres_password
    POSTGRES_DB=bot
    
    # 必填,redis 数据库配置项
    # 如果使用 docker compose / helm 部署则无需修改
    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
    # private_key 是从 github app 配置中下载的私钥
    # 私钥开头结尾应与示例一致,注意每行需要引号与逗号,结尾不应有逗号
    # 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 中的配置视情况修改,如无必要请勿修改!

  5. 启动

    在目录下执行 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):

Open in GitHub Codespaces

修改 .env.dev 文件中的部分配置项,然后执行 python bot.py 即可。

如需连接到 Redis 或 Postgres 数据库调试,请确保 VSCode 已正确映射端口 (必要时可以重新映射 6379、5432 端口),使用本地工具远程连接即可。

Tag summary

Content type

Image

Digest

sha256:e08273415…

Size

897.9 MB

Last updated

23 days ago

docker pull cscs181/qq-github-bot:sha-0fd94b9