- 🌟 原神 (Genshin Impact)
- ⭐ 崩坏:星穹铁道 (Honkai: Star Rail)
- 🔥 绝区零 (Zenless Zone Zero)
- ⚡ 崩坏 3 (Honkai Impact 3rd)
- 🌊 鸣潮 (Wuthering Waves)
- 🧪 明日方舟:终末地 (Arknights: Endfield) —— 实验性支持
- 📱 版本监控 - 实时检测游戏版本更新
- 🔔 自动推送 - 版本更新及预下载通知
- 🖼️ 图文推送 - 支持图片(可选模板)与纯文字两种推送形式
- 📥 下载链接 - 获取正式版 / 预下载的客户端、资源包直链
- 📊 历史数据 - 记录各版本包体与更新包大小,可随时查询
- ⚙️ 灵活配置 - 每个游戏独立配置推送开关、频率与推送群
- 🕐 定时任务 - 自动定时检查更新
- 💾 混合存储 - Redis 保存当前版本状态,内置 SQLite 保存历史版本数据
- 🎛️ 多端可视化配置 - Guoba、Karin-Web、Yunzai-NG 配置界面
- 🔘 快捷按钮 -
当前版本回复自动附带命令按钮
- ✅ 任选其一:Miao-Yunzai、TRSS-Yunzai、Karin、Yunzai-NG
- ✅ nodejs 22.13+(依赖内置
node:sqlite) - ✅ Redis 数据库(Yunzai-NG 下由内核提供 KV,无需单独部署)
- 克隆插件
# 使用 Miao-Yunzai、TRSS-Yunzai 和 Yunzai-NG
## 使用GitCode
git clone https://gitcode.com/rainbowwarmth/GamePush-Plugin.git ./plugins/GamePush-Plugin
## 使用Gitee
git clone https://gitee.com/rainbowwarmth/GamePush-Plugin.git ./plugins/GamePush-Plugin
## 使用CNB
git clone https://cnb.cool/rainbowwarmth/GamePush-Plugin.git ./plugins/GamePush-Plugin
## 使用GitHub
git clone https://github.com/rainbowwarmth/GamePush-Plugin.git ./plugins/GamePush-Plugin
# 使用 Karin
## 使用GitCode
git clone https://gitcode.com/rainbowwarmth/GamePush-Plugin.git ./plugins/karin-plugin-gamepush
## 使用Gitee
git clone https://gitee.com/rainbowwarmth/GamePush-Plugin.git ./plugins/karin-plugin-gamepush
## 使用CNB
git clone https://cnb.cool/rainbowwarmth/GamePush-Plugin.git ./plugins/karin-plugin-gamepush
## 使用GitHub
git clone https://github.com/rainbowwarmth/GamePush-Plugin.git ./plugins/karin-plugin-gamepush
⚠️ 插件依靠目录名识别 Karin:目录名包含karin时按 Karin 加载,否则按宿主package.json的name区分 Miao-Yunzai / TRSS-Yunzai / Yunzai-NG。请勿随意改名。
- 安装依赖
pnpm install -P💡 Yunzai-NG 依赖
@yunzai-ng/core(已声明为 optionalDependencies,正常安装即会引入)。
- 启动机器人
# 重启 Miao-Yunzai / TRSS-Yunzai / Karin / Yunzai-NG 即可自动加载插件首次加载时插件会自动从远端拉取游戏版本数据库(GamePush-Plugin.db),并在后续启动时按版本号增量更新。
| 命令 | 功能 | 权限 | 特别说明 |
|---|---|---|---|
#[游戏]版本监控 |
手动触发一次版本检查 | Master | |
#[游戏]开启版本推送 |
将当前群加入推送列表 | Master | 仅限群聊 |
#[游戏]关闭版本推送 |
将当前群移出推送列表 | Master | 仅限群聊 |
#[游戏]当前版本 |
查看正式版本与预下载版本 | 所有用户 | 回复附带快捷按钮 |
#[游戏]版本数据 |
查看历史版本更新包大小列表 | 所有用户 | |
#[游戏]版本数据 [版本号] |
查看指定版本的详细数据 | 所有用户 | |
#[游戏]获取下载链接 |
获取当前正式版本下载链接 | 所有用户 | 原神、崩坏 3 不支持获取 |
#[游戏]获取预下载链接 |
获取当前预下载版本链接 | 所有用户 | 原神、崩坏 3 不支持获取 |
命令前的
#可省略或重复(#原神当前版本、原神当前版本均可)。
- 🌟 原神:
#原神/#ys/#YS - ⭐ 崩坏:星穹铁道:
*/#星铁/#崩铁/#星穹/#星轨/#穹轨/#铁道/#星穹铁道/#崩坏星穹铁道 - 🔥 绝区零:
%/%/#绝区零/#绝区/#zzz/#ZZZ - ⚡ 崩坏 3:
!/!/#崩坏3/#崩坏三/#崩三/#崩3/#三崩子/#bbb - 🌊 鸣潮:
~/~/#鸣潮/#ww/#WW/#mc - 🏜️ 终末地:
:/:/#终末地/#zmd
📌 原神的前缀可以省略:
#当前版本、#版本数据、#版本监控等不带游戏名的命令默认作用于原神。
⚠️ 别名区分大小写(#Zzz、#Ww不匹配);星铁与崩坏 3 没有sr/SR/bh3/BH3英文别名。
| 命令 | 功能 | 权限 |
|---|---|---|
#[游戏]删除rediskey |
删除游戏 Redis 键值 | Master |
#[游戏]删除预下载rediskey |
删除预下载 Redis 键值 | Master |
#[游戏]设置rediskey 版本 |
设置游戏 Redis 键值 | Master |
#[游戏]设置预下载rediskey 版本 |
设置游戏预下载 Redis 键值 | Master |
#更新游戏版本数据 |
合并远程游戏版本历史数据(保留本地记录) | Master |
管理命令的游戏前缀同样可省略,省略时默认作用于原神。
插件采用混合存储:当前版本状态存放在 Redis / 内核 KV,历史版本包体数据存放在内置 SQLite(node:sqlite,无需安装 better-sqlite3)。
数据库文件名固定为 GamePush-Plugin.db,存放目录随框架而变:
| 框架 | 数据库路径 |
|---|---|
| Miao-Yunzai / TRSS-Yunzai | data/GamePush-Plugin.db |
| Karin | @karinjs/karin-plugin-gamepush/data/GamePush-Plugin.db |
| Yunzai-NG | data/plugin/GamePush-Plugin/sql/GamePush-Plugin.db |
- 首次启动时会从远程拉取版本历史数据作为初始数据,失败仅告警并回退到本地库。
#更新游戏版本数据采用INSERT OR IGNORE合并而非覆盖,本地记录不会丢失。- 使用 Yunzai-NG 时,插件在自己的
data/plugin/GamePush-Plugin/sql/下维护数据库,并在首次启动时只读导入原内核目录data/sql/GamePush-Plugin/中的历史数据;原数据库不会被删除或修改。
| 框架 | 配置文件 |
|---|---|
| Miao-Yunzai / TRSS-Yunzai | data/GamePush-Plugin.yaml |
| Karin | @karinjs/karin-plugin-gamepush/config/GamePush-Plugin.yaml |
| Yunzai-NG | config/GamePush-Plugin.yaml(由内核托管,面板可视化编辑) |
插件支持三套可视化配置界面,可按框架选用:
| 框架 | 配置方式 |
|---|---|
| Miao-Yunzai / TRSS-Yunzai | Guoba-Plugin |
| Karin | Karin-Web(web.config.js) |
| Yunzai-NG | 内核配置界面(model/plugin.js 中的 schema) |
可配置项:
- 🎛️ 推送开关 / 日志开关
- ⏰ 定时任务 cron 表达式
- 👥 推送的「机器人 + 群」列表
- 🖼️ 消息类型(图片 / 文字)与 html 模板(默认 / 简约)
GamePush-Plugin/
├── 📁 apps/ # 功能模块(Yunzai / Karin)
│ ├── 🎮 ys.js # 原神功能
│ ├── ⭐ sr.js # 星铁功能
│ ├── 🔥 zzz.js # 绝区零功能
│ ├── ⚡ bh3.js # 崩坏3功能
│ ├── 🌊 ww.js # 鸣潮功能
│ ├── 🏜️ zmd.js # 终末地功能
│ ├── ⚙️ set.js # 设置管理
│ └── 📋 task.js # 定时任务
├── 📁 components/ # 组件模块(路径、配置、请求)
├── 📁 lib/ # 工具库
│ └── 📁 runtime/ # 框架兼容层
│ ├── index.js # 运行时选择与统一接口
│ ├── yunzai.js # Miao/TRSS-Yunzai 适配
│ ├── karin.js # Karin 适配
│ ├── yunzai-ng.js # Yunzai-NG 适配
│ ├── sqlite-db.js # node:sqlite 历史数据存储
│ ├── buttons.js # 命令按钮构建
│ └── compat.js # 旧版导入兼容垫片
├── 📁 model/ # 数据模型与命令实现
│ ├── commands.js # 命令定义
│ └── plugin.js # Yunzai-NG 插件定义
├── 📁 resources/ # 资源文件
├── 🔧 index.js # 入口文件
├── 🎛️ guoba.support.js # Guoba支持
├── 🎛️ web.config.js # Karin-Web 支持
└── 📦 package.json # 项目配置
- 框架: Miao-Yunzai 、 TRSS-Yunzai 、Karin 、Yunzai-NG
- 语言: JavaScript (ES6+)
- 数据库: Redis(版本状态)+ Node 内置
node:sqlite(版本历史,无需安装better-sqlite3) - 任务调度: Cron
- 配置管理: Guoba 、Karin-Web 、Yunzai-NG schema
所有框架差异收敛在 lib/runtime/,业务代码只依赖统一的 rt 对象:
- 通过插件目录名与宿主
package.json的name识别框架,加载对应适配器 - 适配器统一提供
logger、kv、db、http、config、render、sendGroupMsg、makeForward、normalizeEvent、segment、commandButtons等接口 - 新增框架只需补一个适配器文件,无需改动
apps/与model/业务逻辑
- 🧩 运行时抽象层 - 业务代码只依赖
rt接口,框架差异由适配器消化 - 🧭 命令描述符 - 命令逻辑写成纯函数,各框架按自己的方式注册
- 🔄 模块化设计 - 每个游戏独立模块
- 📡 API 监控 - 实时获取官方版本信息
- 💾 数据持久化 - Redis 保存当前版本状态,Node 内置 SQLite 保存历史版本数据
- 🎯 精准推送 - 避免重复通知
- ⚡ 高性能 - 异步处理,低资源占用
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目基于 MIT License 开源协议。
rainbowwarmth
- 🐙 GitHub: @rainbowwarmth
感谢以下项目和开发者:
- Miao-Yunzai - 强大的机器人框架
- TRSS-Yunzai - 强大的机器人框架
- Karin - 强大的机器人框架
- Yunzai-NG - 可插拔运行时内核
- Guoba-Plugin - 可视化配置支持