Skip to content

💖一套业务逻辑,多个平台支持!异步核心框架GsCore,为插件编写提供完善平台支持、核心数据库统一、复用游戏查询逻辑、网页控制台,支持Bot列表: NoneBot2 & HoshinoBot & ZeroBot & YunZaiBot & Koishi

License

Notifications You must be signed in to change notification settings

Genshin-bots/gsuid_core

Repository files navigation

⚙️GenshinUID Core 0.7.1

Code style: black Imports: isort Lint: flake8 pre-commit.ci status

KimigaiiWuyi/GenshinUID 的核心部分,平台无关,支持 HTTP/WS 形式调用,便于移植到其他平台以及框架。

💖一套业务逻辑,多个平台支持!

🎉 详细文档 ( 快速开始(安装) | 链接Bot | 插件市场 )

优点&特色

  • 🔀 异步优先:异步处理大量消息流,不会阻塞任务运行
  • 🔧 易于开发:即使完全没有接触过Python,也能在一小时内迅速上手 👉 插件编写指南
  • 热重载:修改插件配置&安装插件&更新插件,无需重启也能直接应用
  • 🌎 网页控制台:集成网页控制台,可以通过WEB直接操作插件数据库/配置文件/检索日志/权限控制/数据统计/批量发送 等超多操作
  • 📄 高度统一:统一所有插件插件前缀/配置管理/帮助图生成/权限控制/数据库写入/订阅消息,所有插件编写常见方法一应俱全,插件作者可通过简单的继承重写实现高度统一的逻辑
  • 💻 多元适配:借助上游Bot (NoneBot2 / Koishi / YunzaiBot) 适配,支持QQ/QQ频道/微信/Tg/Discord/飞书/KOOK/DODO/OneBot v11(v12)等多个平台,做到一套业务逻辑,多个平台支持
  • 🚀 作为插件:该项目不能独立使用,作为上游Bot (NoneBot2 / Koishi / YunzaiBot) 的插件使用,无需迁移原本Bot,保留之前全部的功能,便于充分扩展
  • 🛠 内置命令:借助内置命令,轻松完成重启/状态/安装插件/更新插件/更新依赖等操作
  • 📝 帮助系统:通过统一适配,可按照不同权限输出不同帮助,并支持插件的二级菜单注册至主帮助目录,并支持在帮助界面使用不同的自定义前缀
主菜单帮助示例

感谢


Important

以下内容未经验证。

使用 docker 镜像部署

此镜像使用下文的 Github Actions 自动构建,每 12 小时更新

请先安装好 Docker


可通过如下指令拉取镜像并运行:

docker run -d \
--name gsuidcore \
-e TZ=Asia/Shanghai \
-e GSCORE_HOST=0.0.0.0 \
-p 18765:8765 \
-v /opt/gscore_data:/gsuid_core/data \
-v /opt/gscore_plugins:/gsuid_core/gsuid_core/plugins \
lilixxs666/gsuid-core:dev

在本地按照以上指令容器运行后,可直接进入localhost:18965/genshinuid进入核心的后台管理界面 相关文档见:

镜像参数说明:

参数 功能
-d 服务后台运行
--name gsuidcore 生成的容器名称,可选,这里指定为 gsuidcore,若不写则系统给随机名称
-p 18765:8765 端口映射,可选,默认不做映射,只有映射的端口才能被外部访问
这里设置为容器内 8765 端口 → 外部 18765 端口
-e TZ=Asia/Shanghai 时区,可选,默认值=Asia/Shanghai
-e GSCORE_HOST=0.0.0.0 服务监听地址:可选,默认值=localhost
-v /opt/gscore_data:/gsuid_core/data 文件映射,可选,只有映射的路径内的文件才能直接从外部读写:原软件的 data 文件夹
可从外部的 /opt/gscore_data 位置访问
-v /opt/gscore_plugins:/gsuid_core/gsuid_core/plugins 文件映射,可选,只有映射的路径内的文件才能直接从外部读写:原软件的 plugins 文件夹
可从外部的 /opt/gscore_plugins 位置访问                  

一些容器部署的常见问题 详见下文【5. 容器部署的相关使用说明】

镜像构建整体流程:

  • 主分支同步(Github Actions 每 12 小时执行一次):项目主分支(gsuid-core:master) --> fork 的分支 (gsuid-core-prci:master)

  • 镜像构建(Github Actions 每 12 小时执行一次):fork 的分支 (gsuid-core-prci:master) --> 编译 --> 发布到 dockerhub

用于实现以上构建流程的 fork 库地址:

Github Action 配置文件:

  • master 分支自动同步:./github/workflows/master-autosync.yaml
  • docker 镜像自动构建:./github/workflows/docker-autobuild.yaml

使用 Docker compose 从代码构建 docker 容器(可选)

请先安装好 Docker 与Docker Compose

  1. git clone gsuid-core本体
git clone https://github.com/Genshin-bots/gsuid_core.git --depth=1 --single-branch
  1. 安装所需插件(可选)
# cd进入插件文件夹内
cd plugins
# 安装v4 GenshinUID
git clone -b v4 https://github.com/KimigaiiWuyi/GenshinUID.git --depth=1 --single-branch
  1. Docker Compose 启动

注意:根据 docker 版本及插件安装情况,composer 命令可能为docker-composerdocker composer,若下面的语句执行提示指令出错,请换一个语句尝试(若两个语句都提示指令出错,则是Docker Composer没有安装

# 进入项目根目录(此目录下包含 Dockerfile 和 docker-compose.yaml 文件)

# 初次安装,需要编译、安装依赖,需执行以下指令:
docker-compose up -d --build

# 之后的部署配置,仅修改 docker-compose.yaml 文件,需执行以下指令:
# 先停止相关容器
docker-compose down
# 再按照新的配置部署新的容器
docker-compose up -d

# 在同一机器上多次重复构建,会出现大量无用的镜像,可使用以下指令清空未使用的镜像
docker container prune -f
  1. Docker Compose 配置文件说明
services:
  gsuid-core:
    build:
      context: .
      # 指定要使用的镜像构建文件
      # Dockerfile = 原软件源(连到国外服务器,适用 Github CI/CD 或 Docker Hub 等外网环境)
      # Dockerfile.cn = 国内镜像源(使用国内镜像源,适用于自己或国内服务器构建)
      dockerfile: Dockerfile.cn
    container_name: gsuidcore
    privileged: true
    restart: unless-stopped
    environment:
      # TZ = 时区设置,可选参数,默认为 Asia/Shanghai
      # GSCORE_HOST = 服务监听地址 (0.0.0.0 = 监听全部地址,启动容器可直接进后台) 可选参数,默认 locaohost (只允许容器内本地访问)
      - TZ=Asia/Shanghai
      - GSCORE_HOST=0.0.0.0
    ports:
      # 端口映射,可自由修改,以下为:容器(core 中配置)8765 对应外部的 18765 端口
      - 18765:8765
    volumes:
      # 仅映射需要的文件夹,避免数据冲突
      # 如需访问项目根目录,需要通过 docker exec -it <容器id> bash 进入容器内部
      # 进入后默认的 /gsuid_core 即为插件根目录,路径与文档路径保持一致
      - /opt/gscore_data:/gsuid_core/data
      - /opt/gscore_plugins:/gsuid_core/gsuid_core/plugins
  1. 容器部署的相关使用说明
  • 如需访问容器部署的 core 的其他路径(上面 yaml 文件中没有映射的文件或路径)则需要通过docker exec -it <容器id> bash进入,进入后默认的/gsuid_core即对应文档中的 core 根目录gsuid_core,其他文档路径与官方文档对应

  • 若不设定环境变量GSCORE_HOST,则 core 默认监听在localhost地址,Docker 部署后无法直接连接

    需要修改config.json文件中的HOST配置,参考 https://docs.sayu-bot.com/Started/CoreConfig.html

    (以上面的 yaml 文件为例,配置文件在文档中的路径为gsuid_core/data,则对应在容器外部的地址为/gscore_data/config.json,需将其中的host配置修改为0.0.0.0

    然后执行docker restart <容器id>重启容器

  • 关于端口配置,由于 docker 容器本身会对端口做转发(对应 yaml 文件中的port部分,因此建议使用 docker compose 的相关配置或 docker 指令来修改端口,而不用 core 本身的配置来修改

    同时每次 docker 修改端口、监听地址后都需要先删除当前容器重新执行docker compose up -d指令重新部署

  • 如需增加插件,建议使用命令进行安装,也可进入容器项目根目录手动安装

  • 如果Bot(例如 NoneBot2、HoshinoBot)也是Docker部署的,Core或其插件更新后,建议将Core和Bot的容器都重启,保证修改生效

About

💖一套业务逻辑,多个平台支持!异步核心框架GsCore,为插件编写提供完善平台支持、核心数据库统一、复用游戏查询逻辑、网页控制台,支持Bot列表: NoneBot2 & HoshinoBot & ZeroBot & YunZaiBot & Koishi

Topics

Resources

License

Stars

Watchers

Forks

Languages