Commit a43a82ff authored by nanahira's avatar nanahira

Merge branch 'next'

parents 420d8bd3 42c856d0
Pipeline #6079 passed with stages
in 2 minutes and 12 seconds
...@@ -44,7 +44,7 @@ export interface Config { ...@@ -44,7 +44,7 @@ export interface Config {
### 说明 ### 说明
* `adminContext` 一个上下文函数,设置管理员接口作用域。如 `(ctx) => ctx.private('1111111111')` 为只对 QQ 号是 1111111111 的私聊消息有效 * `adminContext` 管理员接口作用域
* `autoChangeName` 公演开始之前是否修改每个演员机器人的群名片。推荐开启。 * `autoChangeName` 公演开始之前是否修改每个演员机器人的群名片。推荐开启。
...@@ -60,4 +60,4 @@ export interface Config { ...@@ -60,4 +60,4 @@ export interface Config {
* `groupId` 目标群。`playbookFilename` 是公演剧本文件,需要在服务器放好。后面的参数可以以 人物名=帐号 的形式指定特定的人物,否则随机分配。 * `groupId` 目标群。`playbookFilename` 是公演剧本文件,需要在服务器放好。后面的参数可以以 人物名=帐号 的形式指定特定的人物,否则随机分配。
* 例: `act.create 11111111 play1 幽幽子=2222222` 在群 11111111 创建一个公演,剧本是 play1,位于 `/path/to/playbookPathPrefix/play1.json`,同时指定人物幽幽子为 2222222 扮演。 * 例: `act.create 11111111 play1 幽幽子=2222222` 在群 11111111 创建一个公演,剧本是 play1,位于 `/path/to/playbookPathPrefix/play1.json`,同时指定人物幽幽子为 2222222 扮演。
* `.delete <groupId:number>` 停止公演。 * `.delete <groupId:number>` 停止公演。
\ No newline at end of file
{ {
"name": "koishi-plugin-act", "name": "koishi-plugin-act",
"version": "1.0.0", "version": "1.0.3",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"version": "1.0.0", "name": "koishi-plugin-act",
"license": "ISC", "version": "1.0.3",
"license": "MIT",
"dependencies": { "dependencies": {
"source-map-support": "^0.5.19" "source-map-support": "^0.5.19"
}, },
"devDependencies": { "devDependencies": {
"@koishijs/plugin-onebot": "^4.0.0-alpha.7",
"@types/lodash": "^4.14.172", "@types/lodash": "^4.14.172",
"@types/mustache": "^4.1.2", "@types/mustache": "^4.1.2",
"@types/node": "^16.4.11", "@types/node": "^16.4.11",
...@@ -21,8 +23,7 @@ ...@@ -21,8 +23,7 @@
"eslint": "^7.32.0", "eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.0", "eslint-plugin-prettier": "^3.4.0",
"koishi-adapter-onebot": "^3.1.0", "koishi": "^4.0.0-alpha.8",
"koishi-core": "^3.13.0",
"load-json-file": "^6.2.0", "load-json-file": "^6.2.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"moment": "^2.29.1", "moment": "^2.29.1",
...@@ -34,10 +35,6 @@ ...@@ -34,10 +35,6 @@
"typescript": "^4.3.5", "typescript": "^4.3.5",
"webpack": "^5.48.0", "webpack": "^5.48.0",
"webpack-cli": "^4.7.2" "webpack-cli": "^4.7.2"
},
"peerDependencies": {
"koishi-adapter-onebot": "^3.1.0",
"koishi-core": "^3.13.0"
} }
}, },
"node_modules/@babel/code-frame": { "node_modules/@babel/code-frame": {
...@@ -193,9 +190,9 @@ ...@@ -193,9 +190,9 @@
"dev": true "dev": true
}, },
"node_modules/@koa/router": { "node_modules/@koa/router": {
"version": "10.1.0", "version": "10.1.1",
"resolved": "https://registry.npmjs.org/@koa/router/-/router-10.1.0.tgz", "resolved": "https://registry.npmjs.org/@koa/router/-/router-10.1.1.tgz",
"integrity": "sha512-QZiCDn8Fd9vVN0qCWw81fToF5GMdtyPD04fIOHXiCCmXB6sznhjHMd3xbVS2ZxrgLWrcN8s6tIItEv0wuXt2Ow==", "integrity": "sha512-ORNjq5z4EmQPriKbR0ER3k4Gh7YGNhWDL7JBW+8wXDrHLbWYKYSJaOJ9aN06npF5tbTxe2JBOsurpJDAvjiXKw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"debug": "^4.1.1", "debug": "^4.1.1",
...@@ -208,6 +205,56 @@ ...@@ -208,6 +205,56 @@
"node": ">= 8.0.0" "node": ">= 8.0.0"
} }
}, },
"node_modules/@koishijs/core": {
"version": "4.0.0-alpha.8",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.0.0-alpha.8.tgz",
"integrity": "sha512-0SSweBTdXfSeD1IlWeBiAKDWD7MYGqHlhhuKAAstZDQm+Hh5oyX5oaZBhTUxbwwDjk//HwYH9AeLqqHTgVZYWw==",
"dev": true,
"dependencies": {
"@koishijs/utils": "^5.0.0-alpha.4",
"fastest-levenshtein": "^1.0.12"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/@koishijs/plugin-onebot": {
"version": "4.0.0-alpha.7",
"resolved": "https://registry.npmjs.org/@koishijs/plugin-onebot/-/plugin-onebot-4.0.0-alpha.7.tgz",
"integrity": "sha512-gcQupD0RSXoW8FjhQL8TTfXK5N+spKFJuivEtGHLWEZFV4r8g64FOWdUcdyaIJMao/XEN0BYT6tgxXSKNL1h6A==",
"dev": true,
"dependencies": {
"qface": "^1.2.0",
"ws": "^8.2.1"
},
"peerDependencies": {
"koishi": "^4.0.0-alpha.8"
}
},
"node_modules/@koishijs/utils": {
"version": "5.0.0-alpha.4",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-5.0.0-alpha.4.tgz",
"integrity": "sha512-cB1mUh3iLQKVHd8O9Lbdm/8LPmQ/VtiO+DlnAZXwbyczSIBu3HJiQo5t9pjy4LFcOoboEO4iCfbqBXpA2L/JHg==",
"dev": true,
"dependencies": {
"supports-color": "^8.1.0"
}
},
"node_modules/@koishijs/utils/node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/@nodelib/fs.scandir": { "node_modules/@nodelib/fs.scandir": {
"version": "2.1.5", "version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
...@@ -402,12 +449,6 @@ ...@@ -402,12 +449,6 @@
"integrity": "sha512-/BHF5HAx3em7/KkzVKm3LrsD6HZAXuXO1AJZQ3cRRBZj4oHZDviWPYu0aEplAqDFNHZPW6d3G7KN+ONcCCC7pw==", "integrity": "sha512-/BHF5HAx3em7/KkzVKm3LrsD6HZAXuXO1AJZQ3cRRBZj4oHZDviWPYu0aEplAqDFNHZPW6d3G7KN+ONcCCC7pw==",
"dev": true "dev": true
}, },
"node_modules/@types/lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==",
"dev": true
},
"node_modules/@types/mime": { "node_modules/@types/mime": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
...@@ -933,12 +974,12 @@ ...@@ -933,12 +974,12 @@
} }
}, },
"node_modules/axios": { "node_modules/axios": {
"version": "0.21.1", "version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"follow-redirects": "^1.10.0" "follow-redirects": "^1.14.0"
} }
}, },
"node_modules/balanced-match": { "node_modules/balanced-match": {
...@@ -2485,66 +2526,26 @@ ...@@ -2485,66 +2526,26 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true "dev": true
}, },
"node_modules/koishi-adapter-onebot": { "node_modules/koishi": {
"version": "3.1.0", "version": "4.0.0-alpha.8",
"resolved": "https://registry.npmjs.org/koishi-adapter-onebot/-/koishi-adapter-onebot-3.1.0.tgz", "resolved": "https://registry.npmjs.org/koishi/-/koishi-4.0.0-alpha.8.tgz",
"integrity": "sha512-6IobmR9gUDOw9KR6zMQ3BDrNyhj0Hc2AG1ST+iiyEKVu3zWWfJqZl3s3J42TiZKcZbXICDU/lKjv5ldTWX3iaw==", "integrity": "sha512-Q8Zp+K/P8woCHQRHOOWzSYDE1twJo/Frm5wcUDXMuhYySZtX6ci31ciVE+KSIh230yD30wYpWRbo1xhwTzepvg==",
"dev": true,
"dependencies": {
"axios": "^0.21.1",
"koishi-utils": "^4.2.3",
"qface": "1.1.0",
"ws": "^7.4.5"
},
"peerDependencies": {
"koishi-core": "^3.12.1"
}
},
"node_modules/koishi-core": {
"version": "3.13.0",
"resolved": "https://registry.npmjs.org/koishi-core/-/koishi-core-3.13.0.tgz",
"integrity": "sha512-VIB3ykL89xt1/xkRq2bELKk9n2expEy+xrzYOXBJmrjvs8wbCspyUKDYPfCBgj9z+O5tu5nyfn5TjIdwhnIj3g==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@koa/router": "^10.0.0", "@koa/router": "^10.1.1",
"@types/koa__router": "^8.0.4", "@koishijs/core": "^4.0.0-alpha.8",
"@types/lru-cache": "^5.1.0", "@koishijs/utils": "^5.0.0-alpha.4",
"@types/ws": "^7.4.2", "@types/koa": "*",
"axios": "^0.21.1", "@types/koa__router": "*",
"fastest-levenshtein": "^1.0.12", "@types/ws": "^7.4.7",
"axios": "^0.21.4",
"koa": "^2.13.1", "koa": "^2.13.1",
"koa-bodyparser": "^4.3.0", "koa-bodyparser": "^4.3.0"
"koishi-utils": "^4.2.3",
"lru-cache": "^6.0.0"
}, },
"engines": { "engines": {
"node": ">=12.0.0" "node": ">=12.0.0"
} }
}, },
"node_modules/koishi-utils": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/koishi-utils/-/koishi-utils-4.2.3.tgz",
"integrity": "sha512-FKOEazHwXDXI1XLIYz9Ox950bvXB5ZlYrfLML0OSZlfgY/QMbJi3bMcvMbN/TcT7BhzYTT+CHIWsJyuWt8CdXA==",
"dev": true,
"dependencies": {
"supports-color": "^8.1.0"
}
},
"node_modules/koishi-utils/node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/levn": { "node_modules/levn": {
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
...@@ -3098,9 +3099,9 @@ ...@@ -3098,9 +3099,9 @@
} }
}, },
"node_modules/qface": { "node_modules/qface": {
"version": "1.1.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/qface/-/qface-1.1.0.tgz", "resolved": "https://registry.npmjs.org/qface/-/qface-1.2.0.tgz",
"integrity": "sha512-NQ86A5bZPUO2m/t9P1VzncwuukM/5dCeLwXO5tfEvkYeAvBrXnrQLPngPxDRITIIm+eVb9NXu+YYVca3wdGmBg==", "integrity": "sha512-MZX1YphF8AXwYKwR7xS1pHar1+bNW86sN+TytI1OidLyDg4ptWzWkyY65lat1UoYzVbKkOU4KySKTbPmYDHzpg==",
"dev": true "dev": true
}, },
"node_modules/qs": { "node_modules/qs": {
...@@ -4023,12 +4024,12 @@ ...@@ -4023,12 +4024,12 @@
"dev": true "dev": true
}, },
"node_modules/ws": { "node_modules/ws": {
"version": "7.5.3", "version": "8.2.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
"integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": ">=8.3.0" "node": ">=10.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"bufferutil": "^4.0.1", "bufferutil": "^4.0.1",
...@@ -4197,9 +4198,9 @@ ...@@ -4197,9 +4198,9 @@
"dev": true "dev": true
}, },
"@koa/router": { "@koa/router": {
"version": "10.1.0", "version": "10.1.1",
"resolved": "https://registry.npmjs.org/@koa/router/-/router-10.1.0.tgz", "resolved": "https://registry.npmjs.org/@koa/router/-/router-10.1.1.tgz",
"integrity": "sha512-QZiCDn8Fd9vVN0qCWw81fToF5GMdtyPD04fIOHXiCCmXB6sznhjHMd3xbVS2ZxrgLWrcN8s6tIItEv0wuXt2Ow==", "integrity": "sha512-ORNjq5z4EmQPriKbR0ER3k4Gh7YGNhWDL7JBW+8wXDrHLbWYKYSJaOJ9aN06npF5tbTxe2JBOsurpJDAvjiXKw==",
"dev": true, "dev": true,
"requires": { "requires": {
"debug": "^4.1.1", "debug": "^4.1.1",
...@@ -4209,6 +4210,46 @@ ...@@ -4209,6 +4210,46 @@
"path-to-regexp": "^6.1.0" "path-to-regexp": "^6.1.0"
} }
}, },
"@koishijs/core": {
"version": "4.0.0-alpha.8",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.0.0-alpha.8.tgz",
"integrity": "sha512-0SSweBTdXfSeD1IlWeBiAKDWD7MYGqHlhhuKAAstZDQm+Hh5oyX5oaZBhTUxbwwDjk//HwYH9AeLqqHTgVZYWw==",
"dev": true,
"requires": {
"@koishijs/utils": "^5.0.0-alpha.4",
"fastest-levenshtein": "^1.0.12"
}
},
"@koishijs/plugin-onebot": {
"version": "4.0.0-alpha.7",
"resolved": "https://registry.npmjs.org/@koishijs/plugin-onebot/-/plugin-onebot-4.0.0-alpha.7.tgz",
"integrity": "sha512-gcQupD0RSXoW8FjhQL8TTfXK5N+spKFJuivEtGHLWEZFV4r8g64FOWdUcdyaIJMao/XEN0BYT6tgxXSKNL1h6A==",
"dev": true,
"requires": {
"qface": "^1.2.0",
"ws": "^8.2.1"
}
},
"@koishijs/utils": {
"version": "5.0.0-alpha.4",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-5.0.0-alpha.4.tgz",
"integrity": "sha512-cB1mUh3iLQKVHd8O9Lbdm/8LPmQ/VtiO+DlnAZXwbyczSIBu3HJiQo5t9pjy4LFcOoboEO4iCfbqBXpA2L/JHg==",
"dev": true,
"requires": {
"supports-color": "^8.1.0"
},
"dependencies": {
"supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"@nodelib/fs.scandir": { "@nodelib/fs.scandir": {
"version": "2.1.5", "version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
...@@ -4394,12 +4435,6 @@ ...@@ -4394,12 +4435,6 @@
"integrity": "sha512-/BHF5HAx3em7/KkzVKm3LrsD6HZAXuXO1AJZQ3cRRBZj4oHZDviWPYu0aEplAqDFNHZPW6d3G7KN+ONcCCC7pw==", "integrity": "sha512-/BHF5HAx3em7/KkzVKm3LrsD6HZAXuXO1AJZQ3cRRBZj4oHZDviWPYu0aEplAqDFNHZPW6d3G7KN+ONcCCC7pw==",
"dev": true "dev": true
}, },
"@types/lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==",
"dev": true
},
"@types/mime": { "@types/mime": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
...@@ -4803,12 +4838,12 @@ ...@@ -4803,12 +4838,12 @@
"dev": true "dev": true
}, },
"axios": { "axios": {
"version": "0.21.1", "version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"dev": true, "dev": true,
"requires": { "requires": {
"follow-redirects": "^1.10.0" "follow-redirects": "^1.14.0"
} }
}, },
"balanced-match": { "balanced-match": {
...@@ -5986,54 +6021,21 @@ ...@@ -5986,54 +6021,21 @@
} }
} }
}, },
"koishi-adapter-onebot": { "koishi": {
"version": "3.1.0", "version": "4.0.0-alpha.8",
"resolved": "https://registry.npmjs.org/koishi-adapter-onebot/-/koishi-adapter-onebot-3.1.0.tgz", "resolved": "https://registry.npmjs.org/koishi/-/koishi-4.0.0-alpha.8.tgz",
"integrity": "sha512-6IobmR9gUDOw9KR6zMQ3BDrNyhj0Hc2AG1ST+iiyEKVu3zWWfJqZl3s3J42TiZKcZbXICDU/lKjv5ldTWX3iaw==", "integrity": "sha512-Q8Zp+K/P8woCHQRHOOWzSYDE1twJo/Frm5wcUDXMuhYySZtX6ci31ciVE+KSIh230yD30wYpWRbo1xhwTzepvg==",
"dev": true, "dev": true,
"requires": { "requires": {
"axios": "^0.21.1", "@koa/router": "^10.1.1",
"koishi-utils": "^4.2.3", "@koishijs/core": "^4.0.0-alpha.8",
"qface": "1.1.0", "@koishijs/utils": "^5.0.0-alpha.4",
"ws": "^7.4.5" "@types/koa": "*",
} "@types/koa__router": "*",
}, "@types/ws": "^7.4.7",
"koishi-core": { "axios": "^0.21.4",
"version": "3.13.0",
"resolved": "https://registry.npmjs.org/koishi-core/-/koishi-core-3.13.0.tgz",
"integrity": "sha512-VIB3ykL89xt1/xkRq2bELKk9n2expEy+xrzYOXBJmrjvs8wbCspyUKDYPfCBgj9z+O5tu5nyfn5TjIdwhnIj3g==",
"dev": true,
"requires": {
"@koa/router": "^10.0.0",
"@types/koa__router": "^8.0.4",
"@types/lru-cache": "^5.1.0",
"@types/ws": "^7.4.2",
"axios": "^0.21.1",
"fastest-levenshtein": "^1.0.12",
"koa": "^2.13.1", "koa": "^2.13.1",
"koa-bodyparser": "^4.3.0", "koa-bodyparser": "^4.3.0"
"koishi-utils": "^4.2.3",
"lru-cache": "^6.0.0"
}
},
"koishi-utils": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/koishi-utils/-/koishi-utils-4.2.3.tgz",
"integrity": "sha512-FKOEazHwXDXI1XLIYz9Ox950bvXB5ZlYrfLML0OSZlfgY/QMbJi3bMcvMbN/TcT7BhzYTT+CHIWsJyuWt8CdXA==",
"dev": true,
"requires": {
"supports-color": "^8.1.0"
},
"dependencies": {
"supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
}
} }
}, },
"levn": { "levn": {
...@@ -6452,9 +6454,9 @@ ...@@ -6452,9 +6454,9 @@
"dev": true "dev": true
}, },
"qface": { "qface": {
"version": "1.1.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/qface/-/qface-1.1.0.tgz", "resolved": "https://registry.npmjs.org/qface/-/qface-1.2.0.tgz",
"integrity": "sha512-NQ86A5bZPUO2m/t9P1VzncwuukM/5dCeLwXO5tfEvkYeAvBrXnrQLPngPxDRITIIm+eVb9NXu+YYVca3wdGmBg==", "integrity": "sha512-MZX1YphF8AXwYKwR7xS1pHar1+bNW86sN+TytI1OidLyDg4ptWzWkyY65lat1UoYzVbKkOU4KySKTbPmYDHzpg==",
"dev": true "dev": true
}, },
"qs": { "qs": {
...@@ -7101,9 +7103,9 @@ ...@@ -7101,9 +7103,9 @@
"dev": true "dev": true
}, },
"ws": { "ws": {
"version": "7.5.3", "version": "8.2.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
"integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
"dev": true, "dev": true,
"requires": {} "requires": {}
}, },
......
{ {
"name": "koishi-plugin-act", "name": "koishi-plugin-act",
"version": "1.0.3", "version": "2.0.0",
"description": "A plugin playing acts in QQ groups", "description": "A plugin playing acts in QQ groups",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts",
"dependencies": { "dependencies": {
"source-map-support": "^0.5.19" "source-map-support": "^0.5.19"
}, },
"peerDependencies": { "peerDependencies": {
"koishi-adapter-onebot": "^3.1.0", "koishi": "^4.0.0-alpha.8",
"koishi-core": "^3.13.0" "@koishijs/plugin-onebot": "^4.0.0-alpha.7"
}, },
"devDependencies": { "devDependencies": {
"@koishijs/plugin-onebot": "^4.0.0-alpha.7",
"@types/lodash": "^4.14.172", "@types/lodash": "^4.14.172",
"@types/mustache": "^4.1.2", "@types/mustache": "^4.1.2",
"@types/node": "^16.4.11", "@types/node": "^16.4.11",
...@@ -21,8 +23,7 @@ ...@@ -21,8 +23,7 @@
"eslint": "^7.32.0", "eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.0", "eslint-plugin-prettier": "^3.4.0",
"koishi-adapter-onebot": "^3.1.0", "koishi": "^4.0.0-alpha.8",
"koishi-core": "^3.13.0",
"load-json-file": "^6.2.0", "load-json-file": "^6.2.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"moment": "^2.29.1", "moment": "^2.29.1",
......
import 'source-map-support/register'; import 'source-map-support/register';
import type { Context } from 'koishi-core'; import type { Context } from 'koishi';
import { Config, MyPlugin } from './plugin'; import { Config, MyPlugin } from './plugin';
export { Config } from './plugin'; export { Config } from './plugin';
export const name = 'act-index'; export const name = 'act';
const plugin = new MyPlugin();
export const schema = plugin.schema;
export function apply(ctx: Context, config: Config) { export function apply(ctx: Context, config: Config) {
ctx.plugin(new MyPlugin(), config); ctx.plugin(plugin, config);
} }
import { Playbook } from './Playbook'; import { Playbook } from './Playbook';
import type { CQBot } from 'koishi-adapter-onebot'; import type { OneBotBot } from '@koishijs/plugin-onebot/lib/bot';
import moment, { Moment } from 'moment'; import moment, { Moment } from 'moment';
export enum ShowStatus { export enum ShowStatus {
...@@ -10,7 +10,7 @@ export enum ShowStatus { ...@@ -10,7 +10,7 @@ export enum ShowStatus {
export class Show { export class Show {
status: ShowStatus = ShowStatus.Idle; status: ShowStatus = ShowStatus.Idle;
private characterBotMap = new Map<number, CQBot>(); private characterBotMap = new Map<number, OneBotBot>();
// eslint-disable-next-line @typescript-eslint/no-empty-function // eslint-disable-next-line @typescript-eslint/no-empty-function
onFinish: (message: string, show: Show) => void = () => {}; onFinish: (message: string, show: Show) => void = () => {};
private step = 0; private step = 0;
...@@ -23,14 +23,14 @@ export class Show { ...@@ -23,14 +23,14 @@ export class Show {
for (const character of playbook.characters) { for (const character of playbook.characters) {
character.playFun = async (line, text) => { character.playFun = async (line, text) => {
const bot = this.characterBotMap.get(character.id); const bot = this.characterBotMap.get(character.id);
await bot.$sendGroupMsg(this.groupId, text, true); await bot.internal.sendGroupMsg(this.groupId, text, true);
}; };
} }
} }
private getPerformingBots() { private getPerformingBots() {
return Array.from(this.characterBotMap.values()); return Array.from(this.characterBotMap.values());
} }
useCharacter(id: number, bot: CQBot) { useCharacter(id: number, bot: OneBotBot) {
this.characterBotMap.set(id, bot); this.characterBotMap.set(id, bot);
} }
isCharacterFull() { isCharacterFull() {
...@@ -38,20 +38,21 @@ export class Show { ...@@ -38,20 +38,21 @@ export class Show {
this.characterBotMap.has(c.id), this.characterBotMap.has(c.id),
); );
} }
async autoCharacters(bots: CQBot[]) { async autoCharacters(bots: OneBotBot[]) {
let availableBots: CQBot[] = []; let availableBots: OneBotBot[] = [];
const botNameMap = new Map<string, string>(); const botNameMap = new Map<string, string>();
for (const bot of bots) { for (const bot of bots) {
if (!(bot.type && bot.type.startsWith('onebot'))) { if (bot.adapter.platform !== 'onebot') {
continue; continue;
} }
const groups = await bot.$getGroupList(); const groups = await bot.internal.getGroupList();
const matchGroup = groups.find((g) => g.groupId === this.groupId); const matchGroup = groups.find((g) => g.group_id === this.groupId);
if (matchGroup) { if (matchGroup) {
availableBots.push(bot); availableBots.push(bot);
botNameMap.set( botNameMap.set(
bot.selfId.toString(), bot.selfId.toString(),
(await bot.$getGroupMemberInfo(this.groupId, bot.selfId)).nickname, (await bot.internal.getGroupMemberInfo(this.groupId, bot.selfId))
.nickname,
); );
} }
} }
...@@ -109,7 +110,11 @@ export class Show { ...@@ -109,7 +110,11 @@ export class Show {
for (const character of this.playbook.characters) { for (const character of this.playbook.characters) {
const bot = this.characterBotMap.get(character.id); const bot = this.characterBotMap.get(character.id);
try { try {
await bot.$setGroupCard(this.groupId, bot.selfId, character.name); await bot.internal.setGroupCard(
this.groupId,
bot.selfId,
character.name,
);
} catch (e) { } catch (e) {
return `Change name for ${bot.selfId} ${ return `Change name for ${bot.selfId} ${
character.name character.name
......
import 'source-map-support/register'; import 'source-map-support/register';
import type { Context, Session } from 'koishi-core'; import { Context, Schema, Session } from 'koishi';
import { Show } from './playbook/Show'; import { Show } from './playbook/Show';
import { Playbook } from './playbook/Playbook'; import { Playbook } from './playbook/Playbook';
import { plainToClass } from 'class-transformer'; import { plainToClass } from 'class-transformer';
import loadJsonFile from 'load-json-file'; import loadJsonFile from 'load-json-file';
import type { CQBot } from 'koishi-adapter-onebot'; import { MaybeArray } from 'koishi';
import type { OneBotBot } from '@koishijs/plugin-onebot/lib/bot';
const selectors = [
'user',
'guild',
'channel',
'self',
'private',
'platform',
] as const;
type SelectorType = typeof selectors[number];
type SelectorValue = boolean | MaybeArray<string | number>;
type BaseSelection = { [K in SelectorType as `$${K}`]?: SelectorValue };
export interface Selection extends BaseSelection {
$and?: Selection[];
$or?: Selection[];
$not?: Selection;
}
export interface Config { export interface Config {
adminContext: (ctx: Context) => Context; adminContext: Selection;
autoChangeName: boolean; autoChangeName: boolean;
dropHelp: boolean; dropHelp: boolean;
playbookPathPrefix: string; playbookPathPrefix: string;
...@@ -19,21 +39,26 @@ export class MyPlugin { ...@@ -19,21 +39,26 @@ export class MyPlugin {
adminCtx: Context; adminCtx: Context;
shows = new Map<number, Show>(); shows = new Map<number, Show>();
name = 'act'; name = 'act-main';
schema: Schema<Config> = Schema.object({
adminContext: Schema.any('管理员接口作用域。'),
autoChangeName: Schema.boolean(
'公演开始之前是否修改每个演员机器人的群名片。推荐开启。',
).default(true),
playbookPathPrefix: Schema.string(
'公演剧本存放路径。公演剧本的文件名是 `/path/to/playbookPathPrefix/name.json` 对应于 name 剧本。',
).default('./playbooks'),
dropHelp: Schema.boolean('是否删除 `help` 命令,避免社死 (?)').default(
false,
),
});
apply(ctx: Context, config: Config) { apply(ctx: Context, config: Config) {
this.ctx = ctx; this.ctx = ctx;
this.config = { this.config = Schema.validate(config, this.schema);
adminContext: (ctx) => ctx.private(),
autoChangeName: false,
dropHelp: false,
playbookPathPrefix: './playbooks',
...config,
};
if (this.config.dropHelp) { if (this.config.dropHelp) {
ctx.command('help').dispose(); ctx.command('help').dispose();
} }
this.adminCtx = this.config.adminContext(ctx); this.adminCtx = this.ctx.select(this.config.adminContext);
const showComamnd = this.adminCtx const showComamnd = this.adminCtx
.command('act [groupId:number]', '获取公演状态') .command('act [groupId:number]', '获取公演状态')
.usage('不带参数获取所有正在公演的群,带参数则获取特定群。') .usage('不带参数获取所有正在公演的群,带参数则获取特定群。')
...@@ -110,9 +135,9 @@ export class MyPlugin { ...@@ -110,9 +135,9 @@ export class MyPlugin {
} catch (e) { } catch (e) {
return `无法加载剧本文件 ${playbookPath}: ${e.toString()}`; return `无法加载剧本文件 ${playbookPath}: ${e.toString()}`;
} }
const bots: CQBot[] = (this.ctx.bots.filter( const bots: OneBotBot[] = this.ctx.bots.filter(
(b) => b.type && b.type.startsWith('onebot'), (b) => b.adapter.platform === 'onebot',
) as unknown) as CQBot[]; ) as OneBotBot[];
const show = new Show(groupId, playbook, this.config.autoChangeName); const show = new Show(groupId, playbook, this.config.autoChangeName);
for (const specificCharacter of specificCharacters) { for (const specificCharacter of specificCharacters) {
const [characterName, botId] = specificCharacter.split('='); const [characterName, botId] = specificCharacter.split('=');
......
...@@ -25,4 +25,8 @@ module.exports = { ...@@ -25,4 +25,8 @@ module.exports = {
}, },
path: path.resolve(__dirname, "dist"), path: path.resolve(__dirname, "dist"),
}, },
externals: {
'koishi': 'koishi',
'@koishijs/plugin-onebot/lib/bot': '@koishijs/plugin-onebot/lib/bot',
}
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment