From c9ba3cfc141a124b429990911cd92b51611fbf78 Mon Sep 17 00:00:00 2001
From: Qin Fandong
Date: Tue, 4 Jan 2022 21:46:00 +0800
Subject: [PATCH 01/10] =?UTF-8?q?=E6=8F=90=E4=BE=9B=E4=B8=80=E4=B8=AA?=
=?UTF-8?q?=E5=89=8D=E7=AB=AF=E8=8E=B7=E5=8F=96=E5=8F=82=E6=95=B0=E7=9A=84?=
=?UTF-8?q?=20API?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...00\345\217\221\346\214\207\345\274\225.md" | 9 +++----
src/views/component/README.txt | 26 +++++++++++++++++++
src/views/component/card-8/app.js | 6 ++---
src/views/component/common/README.txt | 2 ++
src/views/component/common/param.js | 14 ++++++++++
src/views/component/common/utils.js | 12 ---------
src/views/component/material/app.js | 4 +--
src/views/genshin-aby.html | 5 ++--
src/views/genshin-artifact.html | 4 +--
src/views/genshin-card.html | 5 ++--
src/views/genshin-character.html | 5 ++--
src/views/genshin-gacha.html | 5 ++--
src/views/genshin-overview.html | 5 ++--
src/views/genshin-package.html | 5 ++--
14 files changed, 69 insertions(+), 38 deletions(-)
create mode 100644 src/views/component/README.txt
create mode 100644 src/views/component/common/README.txt
create mode 100644 src/views/component/common/param.js
delete mode 100644 src/views/component/common/utils.js
diff --git "a/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md" "b/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
index 1a8935235..7fe78a40f 100644
--- "a/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
+++ "b/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
@@ -185,13 +185,10 @@ index 8cd0307..46c4400 100644
插件通过 URL 传递数据给前端部分,详情请见 `render` 方法的定义。如果你要在前端中使用这些数据,需要自行解析 URL ,下面是目前我们用来解析 URL 中的数据的代码。
```js
-mounted() {
- const params = JSON.parse(
- decodeURIComponent(escape(window.atob(new URL(window.location.href).searchParams.get("data")) || "{}"))
- );
+import { getParams } from "../common/param.js";
- // this.prop = params.prop;
-},
+const params = getParams(window.location.href);
+//const sth = params.sth;
```
> 1. 使用选项 `viewDebug: 1` 来进行实时前端调试。
diff --git a/src/views/component/README.txt b/src/views/component/README.txt
new file mode 100644
index 000000000..e5ce17117
--- /dev/null
+++ b/src/views/component/README.txt
@@ -0,0 +1,26 @@
+./aby/
+ genshin-aby.html
+
+./artifact/
+ genshin-artifact.html
+
+./card/
+ genshin-card.html
+
+./card-8/
+ genshin-card-8.html
+
+./common/
+ 公共库
+
+./character/
+ genshin-character.html
+
+./gacha/
+ genshin-gacha.html
+
+./overview/
+ genshin-overview.html
+
+./package/
+ genshin-package.html
diff --git a/src/views/component/card-8/app.js b/src/views/component/card-8/app.js
index d6984ab38..bfad739e9 100644
--- a/src/views/component/card-8/app.js
+++ b/src/views/component/card-8/app.js
@@ -83,7 +83,7 @@ import HomeBox from "./home-box.js";
// eslint-disable-next-line no-undef
const { defineComponent, computed } = Vue;
-import { decodeUriData } from "../common/utils.js";
+import { getParams } from "../common/param.js";
export default defineComponent({
name: "Card8Box",
@@ -95,9 +95,7 @@ export default defineComponent({
HomeBox,
},
setup() {
- const params = JSON.parse(decodeUriData(new URL(window.location.href).searchParams.get("data")) || "{}");
-
- // params.avatars = params.avatars.slice(0, 8);
+ const params = getParams(window.location.href);
function findArea(id) {
return params.explorations.find((el) => el.id === id);
diff --git a/src/views/component/common/README.txt b/src/views/component/common/README.txt
new file mode 100644
index 000000000..7081e5b42
--- /dev/null
+++ b/src/views/component/common/README.txt
@@ -0,0 +1,2 @@
+./param.js
+ getParams 从 window.location.href 中获取参数
diff --git a/src/views/component/common/param.js b/src/views/component/common/param.js
new file mode 100644
index 000000000..3ade5cf3b
--- /dev/null
+++ b/src/views/component/common/param.js
@@ -0,0 +1,14 @@
+function decodeURIComponentHelper(base64) {
+ return decodeURIComponent(
+ atob(base64)
+ .split("")
+ .map((c) => "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2))
+ .join("")
+ );
+}
+
+function getParams(href) {
+ return JSON.parse(decodeURIComponentHelper(new URL(href).searchParams.get("data")) || "{}");
+}
+
+export { getParams };
diff --git a/src/views/component/common/utils.js b/src/views/component/common/utils.js
deleted file mode 100644
index 6eb8bebae..000000000
--- a/src/views/component/common/utils.js
+++ /dev/null
@@ -1,12 +0,0 @@
-function decodeUriData(base64data) {
- return decodeURIComponent(
- atob(base64data)
- .split("")
- .map(function (c) {
- return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
- })
- .join("")
- );
-}
-
-export { decodeUriData };
diff --git a/src/views/component/material/app.js b/src/views/component/material/app.js
index 23d73e910..1c46a344c 100644
--- a/src/views/component/material/app.js
+++ b/src/views/component/material/app.js
@@ -17,7 +17,7 @@ import MaterialColumn from "./column.js";
// eslint-disable-next-line no-undef
const { defineComponent } = Vue;
-import { decodeUriData } from "../common/utils.js";
+import { getParams } from "../common/param.js";
export default defineComponent({
name: "MaterialApp",
@@ -28,7 +28,7 @@ export default defineComponent({
setup() {
const starBASE64 =
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI4LjU2OCAxNC42MjNjLTkuNzQxLS41NjQtMTIuNjQ0LTMuODg0LTEzLjczNC0xMy43MzQtLjUxNCA5LjkxNy0zLjQxIDEzLjA5Mi0xMy43MzMgMTMuNzM0IDkuOTYzLjM4MyAxMy4wNzkgMy43ODcgMTMuNzMzIDEzLjczNCAxLjE2My05LjUxMSA0LjEyNi0xMi42NDkgMTMuNzM0LTEzLjczNHoiIGZpbGw9IiMyRTNENTQiIHN0cm9rZT0iIzJFM0Q1NCIvPjwvc3ZnPg==";
- const params = JSON.parse(decodeUriData(new URL(window.location.href).searchParams.get("data")) || "{}");
+ const params = getParams(window.location.href);
const day = params.day;
const character = params.character.data;
const weapon = params.weapon.data;
diff --git a/src/views/genshin-aby.html b/src/views/genshin-aby.html
index 4d9854036..0b79c0050 100644
--- a/src/views/genshin-aby.html
+++ b/src/views/genshin-aby.html
@@ -207,7 +207,8 @@
diff --git a/src/views/genshin-material.html b/src/views/genshin-material.html
index 66084bf18..d762d1842 100644
--- a/src/views/genshin-material.html
+++ b/src/views/genshin-material.html
@@ -3,7 +3,7 @@
genshin-material
-
+
From b7d9dde4cc2ab2ba4808a45c78bc5686100d2e08 Mon Sep 17 00:00:00 2001
From: Qin Fandong
Date: Tue, 4 Jan 2022 22:49:01 +0800
Subject: [PATCH 03/10] =?UTF-8?q?=E6=9C=89=E4=B8=AA=E5=8F=82=E6=95=B0?=
=?UTF-8?q?=E7=9A=84=E5=90=8D=E5=AD=97=E4=BC=BC=E4=B9=8E=E4=B8=8D=E5=A4=AA?=
=?UTF-8?q?=E5=AF=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/component/common/param.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/views/component/common/param.js b/src/views/component/common/param.js
index 3ade5cf3b..be510f217 100644
--- a/src/views/component/common/param.js
+++ b/src/views/component/common/param.js
@@ -1,6 +1,7 @@
-function decodeURIComponentHelper(base64) {
+function decodeURIComponentHelper(encoded) {
return decodeURIComponent(
- atob(base64)
+ window
+ .atob(encoded)
.split("")
.map((c) => "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2))
.join("")
From 7c7efbc02e80c3dd33eac381ea7d235b18ef2335 Mon Sep 17 00:00:00 2001
From: Qin Fandong
Date: Wed, 5 Jan 2022 00:23:58 +0800
Subject: [PATCH 04/10] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A0=E6=B3=95?=
=?UTF-8?q?=E5=AE=8C=E6=95=B4=E5=A4=8D=E8=AF=BB=E5=BC=95=E7=94=A8=E4=BF=A1?=
=?UTF-8?q?=E6=81=AF=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8CFix=20#556?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/utils/load.js | 2 +-
src/utils/oicq.js | 26 +++++++++++++++++++++-----
2 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/src/utils/load.js b/src/utils/load.js
index ae50a12a1..3a6c5a5c9 100644
--- a/src/utils/load.js
+++ b/src/utils/load.js
@@ -202,7 +202,7 @@ function processedOnline(bot) {
function processed(msg, plugins, type, bot) {
if (undefined !== msg.raw_message && Array.isArray(msg.message)) {
- msg.raw_message = toCqcode(msg.message);
+ msg.raw_message = toCqcode(msg);
}
// 如果好友增加了,尝试向新朋友问好
diff --git a/src/utils/oicq.js b/src/utils/oicq.js
index ddb8af414..428d47acc 100644
--- a/src/utils/oicq.js
+++ b/src/utils/oicq.js
@@ -3,12 +3,11 @@
* https://github.com/takayama-lily/oicq
* ==========================================================================
* 因为 oicq 维护的这几个 API 有兼容性问题,所以在此重新实现。
- * 在 oicq 修复后,因为切换官方 API 会涉及到特殊节点代码升级后不正常的问题,
- * 所以尽量不切换到官方 API 。
* ========================================================================== */
import lodash from "lodash";
import querystring from "querystring";
+import { genDmMessageId } from "oicq/lib/message/message.js";
const CQ = {
"[": "[",
@@ -50,10 +49,20 @@ function qs(text, sep = ",", equal = "=") {
return ret;
}
-function toCqcode(message = []) {
+// BREAKING 参数已改变
+function toCqcode(msg = {}) {
+ const isQuote = lodash.hasIn(msg, ["source", "message"]);
let cqcode = "";
+ let firstAtParsed = false;
- (Array.isArray(message) ? message : [message]).forEach((c) => {
+ if (true === isQuote) {
+ const quote = { ...msg.source, flag: 1 };
+ const mid = genDmMessageId(quote.user_id, quote.seq, quote.rand, quote.time, quote.flag);
+
+ cqcode += `[CQ:reply,id=${mid}]`;
+ }
+
+ (msg.message || []).forEach((c) => {
if ("text" === c.type) {
cqcode += c.text;
return;
@@ -62,7 +71,14 @@ function toCqcode(message = []) {
const s = querystring.stringify(c, ",", "=", {
encodeURIComponent: (s) => s.replace(new RegExp(Object.keys(CQInside).join("|"), "g"), (s) => CQInside[s] || ""),
});
- cqcode += `[CQ:${c.type}${s ? "," : ""}${s}]`;
+ const cq = `[CQ:${c.type}${s ? "," : ""}${s}]`;
+
+ cqcode += cq;
+
+ if ("at" === c.type && false === firstAtParsed && true === isQuote) {
+ cqcode += cq;
+ firstAtParsed = true;
+ }
});
return cqcode;
From a36726e5447fe01fad3c2bd60bfba5fddd515ad8 Mon Sep 17 00:00:00 2001
From: Mark Chen <9006264+Mark9804@users.noreply.github.com>
Date: Wed, 5 Jan 2022 13:49:22 +0900
Subject: [PATCH 05/10] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E5=BC=80=E5=8F=91?=
=?UTF-8?q?=E6=96=87=E6=A1=A3=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...00\345\217\221\346\214\207\345\274\225.md" | 37 ++++++++++++++-----
1 file changed, 28 insertions(+), 9 deletions(-)
diff --git "a/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md" "b/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
index 5341365ef..9708e40eb 100644
--- "a/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
+++ "b/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
@@ -20,7 +20,9 @@ Adachi-BOT
└── src
├── plugins # 插件
├── utils # 核心库
- └── views # 网页
+ └── views # 前端(包含 html 和组件)
+ └── component # 前端组件 (js、css和前端共用 API)
+ └── common # 共用 API 存取位置
```
## 插件开发
@@ -180,21 +182,38 @@ index 8cd0307..46c4400 100644
### 前端部分
-本项目使用 [Vue.js](https://github.com/vuejs/vue.git) 和 [Puppeteer](https://github.com/puppeteer/puppeteer.git) 协作完成前端部分的工作。
+本项目使用 [Vue.js](https://github.com/vuejs/vue.git) 和 [Puppeteer](https://github.com/puppeteer/puppeteer.git) 协作完成前端部分的工作。你也可以使用你喜欢的前端框架来完成绘图工作,不一定局限于 Vue。
-如果你的插件需要绘图,那么请使用 `../data/js/` 中恰当版本的 Vue.js 在 `../src/views/` 中编写前端部分,并在插件中使用 `../src/utils/render.js` 中的 `render` 方法完成绘图并发送给用户。
+如果你的插件需要绘图,那么请使用 `../data/js/` 中恰当版本的 Vue.js* 在 `../src/views/` 中编写前端部分,并在插件中使用 `../src/utils/render.js` 中的 `render` 方法完成绘图并发送给用户。
+
+
+ * :关于 Vue.js 的版本……
+ `../data/js/` 当中含有以下文件:
+ | 文件名 | 描述 |
+ | :----------------- | :--------------------- |
+ | vue2.js | Vue 2.x 完整版 (开发环境) |
+ | vue2.min.js | Vue 2.x 生产环境 |
+ | vue3.global.js | Vue 3.x 完整版 (开发环境) |
+ | vue3.global.min.js | Vue 3.x 生产环境 |
+ 请注意,我们在将来的开发中会逐渐弃用 Vue 2,所以开发指引中将只会使用 Vue 3 作为示例。
+
-插件通过 URL 传递数据给前端部分,详情请见 `render` 方法的定义。如果你要在前端中使用这些数据,需要自行解析 URL ,下面是目前我们用来解析 URL 中的数据的代码。
+
+插件通过 URL 传递数据给前端部分,详情请见 `render` 方法的定义。如果你要在前端中使用这些数据,需要自行解析 URL 。我们已经将解析 URL 的函数封装在了 `../common/param.js` 当中,如无特殊情况,我们鼓励您使用该微型库当中的 `getParams` 方法来完成参数解析。
+
+以下是一个示例。
```js
import { getParams } from "../common/param.js";
-
-const params = getParams(window.location.href);
-//const prop1 = params.prop1;
+...
+setup() {
+ const params = getParams(window.location.href);
+ //const prop1 = params.prop1;
+}
```
-> 1. 使用选项 `viewDebug: 1` 来进行实时前端调试。
-> 2. 在机器人运行时使用命令 `npm run tool-view -- -h` 来查看如何调试 `../data/record/last_params/` 下的前端数据文件。
+> 1. 可以在 `config.yml` 当中指定选项 `viewDebug: 1` 来进行实时前端调试。如果您也计划使用 Vue 进行开发,我们推荐使用 [Vue.js devtools](https://v3.cn.vuejs.org/guide/installation.html#vue-devtools) ( [Chrome](https://chrome.google.com/webstore/detail/vuejs-devtools/ljjemllljcmogpfapbkkighbhhppjdbg), [Firefox](https://addons.mozilla.org/en-US/firefox/addon/vue-js-devtools/) ) 进行数据调试,这会使查看网页和数据结构变得不那么痛苦。
+> 2. 在机器人运行时,可以使用命令 `npm run tool-view -- -h` 来查看如何调试 `../data/record/last_params/` 下的前端数据文件。
### 开发步骤
From 6442e2540d28c80a38312daaf1300ceb6b075df4 Mon Sep 17 00:00:00 2001
From: Mark Chen <9006264+Mark9804@users.noreply.github.com>
Date: Wed, 5 Jan 2022 13:56:01 +0900
Subject: [PATCH 06/10] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=BC=80=E5=8F=91?=
=?UTF-8?q?=E6=96=87=E6=A1=A3=E4=B8=AD=20=20=E6=A0=87=E7=AD=BE?=
=?UTF-8?q?=E5=BD=93=E4=B8=AD=E7=BC=A9=E8=BF=9B=E5=AF=BC=E8=87=B4=E6=8E=92?=
=?UTF-8?q?=E7=89=88=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...00\345\217\221\346\214\207\345\274\225.md" | 22 +++++++++++--------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git "a/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md" "b/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
index 9708e40eb..3f6dd91b4 100644
--- "a/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
+++ "b/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
@@ -187,15 +187,19 @@ index 8cd0307..46c4400 100644
如果你的插件需要绘图,那么请使用 `../data/js/` 中恰当版本的 Vue.js* 在 `../src/views/` 中编写前端部分,并在插件中使用 `../src/utils/render.js` 中的 `render` 方法完成绘图并发送给用户。
- * :关于 Vue.js 的版本……
- `../data/js/` 当中含有以下文件:
- | 文件名 | 描述 |
- | :----------------- | :--------------------- |
- | vue2.js | Vue 2.x 完整版 (开发环境) |
- | vue2.min.js | Vue 2.x 生产环境 |
- | vue3.global.js | Vue 3.x 完整版 (开发环境) |
- | vue3.global.min.js | Vue 3.x 生产环境 |
- 请注意,我们在将来的开发中会逐渐弃用 Vue 2,所以开发指引中将只会使用 Vue 3 作为示例。
+* :关于 Vue.js 的版本……
+
+> `../data/js/` 当中含有以下文件:
+>
+> | 文件名 | 描述 |
+> | :----------------- | :--------------------- |
+> | vue2.js | Vue 2.x 完整版 (开发环境) |
+> | vue2.min.js | Vue 2.x 生产环境 |
+> | vue3.global.js | Vue 3.x 完整版 (开发环境) |
+> | vue3.global.min.js | Vue 3.x 生产环境 |
+>
+> 请注意,**我们在将来的开发中会逐渐弃用 Vue 2**,所以开发指引中将只会使用 Vue 3 作为示例。
+
From 87996807302d29f62c5157c6f9f3c3b93419ba38 Mon Sep 17 00:00:00 2001
From: Mark Chen <9006264+Mark9804@users.noreply.github.com>
Date: Wed, 5 Jan 2022 15:24:38 +0900
Subject: [PATCH 07/10] =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E4=B8=8D=E5=8F=AF?=
=?UTF-8?q?=E8=A7=81=E7=9A=84=E5=AD=97=E7=AC=A6=20\u00a0=20=E4=B8=BA?=
=?UTF-8?q?=E8=8B=B1=E6=96=87=E5=8D=8A=E8=A7=92=E7=A9=BA=E6=A0=BC=20\u0020?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...345\274\200\345\217\221\346\214\207\345\274\225.md" | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git "a/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md" "b/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
index 3f6dd91b4..6e96d61c0 100644
--- "a/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
+++ "b/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
@@ -10,18 +10,18 @@
Adachi-BOT
├── app.js # 主程序
├── config
-│ ├── command.yml # 用户插件配置
-│ ├── command_master.yml # 管理员插件配置
-│ └── setting.yml # 基础配置
+│ ├── command.yml # 用户插件配置
+│ ├── command_master.yml # 管理员插件配置
+│ └── setting.yml # 基础配置
├── data
-│ └── db # 数据库文件
+│ └── db # 数据库文件
├── resources
├── resources_custom
└── src
├── plugins # 插件
├── utils # 核心库
└── views # 前端(包含 html 和组件)
- └── component # 前端组件 (js、css和前端共用 API)
+ └── component # 前端组件 (js、css和前端共用 API)
└── common # 共用 API 存取位置
```
From a5ea951381b528daf3eb88b60abf8b52a8c2ae41 Mon Sep 17 00:00:00 2001
From: Qin Fandong
Date: Thu, 6 Jan 2022 11:50:44 +0800
Subject: [PATCH 08/10] =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...00\345\217\221\346\214\207\345\274\225.md" | 51 +++++++++----------
1 file changed, 24 insertions(+), 27 deletions(-)
diff --git "a/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md" "b/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
index 6e96d61c0..181f56de3 100644
--- "a/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
+++ "b/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
@@ -20,9 +20,7 @@ Adachi-BOT
└── src
├── plugins # 插件
├── utils # 核心库
- └── views # 前端(包含 html 和组件)
- └── component # 前端组件 (js、css和前端共用 API)
- └── common # 共用 API 存取位置
+ └── views # 网页
```
## 插件开发
@@ -110,7 +108,7 @@ index 8cd0307..46c4400 100644
break;
case hasEntrance(msg.text, "master", "reply_auth"):
setReplyAuth(msg);
---
+---
2.34.1
```
@@ -182,42 +180,41 @@ index 8cd0307..46c4400 100644
### 前端部分
-本项目使用 [Vue.js](https://github.com/vuejs/vue.git) 和 [Puppeteer](https://github.com/puppeteer/puppeteer.git) 协作完成前端部分的工作。你也可以使用你喜欢的前端框架来完成绘图工作,不一定局限于 Vue。
+#### 介绍
-如果你的插件需要绘图,那么请使用 `../data/js/` 中恰当版本的 Vue.js* 在 `../src/views/` 中编写前端部分,并在插件中使用 `../src/utils/render.js` 中的 `render` 方法完成绘图并发送给用户。
-
-
-* :关于 Vue.js 的版本……
-
-> `../data/js/` 当中含有以下文件:
->
-> | 文件名 | 描述 |
-> | :----------------- | :--------------------- |
-> | vue2.js | Vue 2.x 完整版 (开发环境) |
-> | vue2.min.js | Vue 2.x 生产环境 |
-> | vue3.global.js | Vue 3.x 完整版 (开发环境) |
-> | vue3.global.min.js | Vue 3.x 生产环境 |
->
-> 请注意,**我们在将来的开发中会逐渐弃用 Vue 2**,所以开发指引中将只会使用 Vue 3 作为示例。
-
-
+本项目使用 [Vue.js](https://github.com/vuejs/vue.git) 和 [Puppeteer](https://github.com/puppeteer/puppeteer.git) 协作完成前端部分的工作。如果插件需要根据数据动态生成图片,则需要使用 `../data/js/` 中恰当版本的 Vue.js 在 `../src/views/` 中编写网页,并在插件中使用 `../src/utils/render.js` 中的 `render` 方法对该网页进行截图。
+| Vue.js | 来源 |
+| --- | --- |
+| `../data/js/vue2.js` | `https://cn.vuejs.org/js/vue.js` |
+| `../data/js/vue2.min.js` | `https://cn.vuejs.org/js/vue.min.js` |
+| `../data/js/vue3.global.js` | `https://unpkg.com/vue@next/dist/vue.global.js` |
+| `../data/js/vue3.global.prod.js` | `https://unpkg.com/vue@next/dist/vue.global.prod.js` |
-插件通过 URL 传递数据给前端部分,详情请见 `render` 方法的定义。如果你要在前端中使用这些数据,需要自行解析 URL 。我们已经将解析 URL 的函数封装在了 `../common/param.js` 当中,如无特殊情况,我们鼓励您使用该微型库当中的 `getParams` 方法来完成参数解析。
+> 我们的 CI 会保证 Vue.js 版本总是为最新。
-以下是一个示例。
+插件通过 URL 参数传递数据给前端部分,详情请见 `render` 方法的定义。你需要在网页中从 URL 参数中获取数据。
```js
import { getParams } from "../common/param.js";
-...
+
setup() {
const params = getParams(window.location.href);
//const prop1 = params.prop1;
}
```
-> 1. 可以在 `config.yml` 当中指定选项 `viewDebug: 1` 来进行实时前端调试。如果您也计划使用 Vue 进行开发,我们推荐使用 [Vue.js devtools](https://v3.cn.vuejs.org/guide/installation.html#vue-devtools) ( [Chrome](https://chrome.google.com/webstore/detail/vuejs-devtools/ljjemllljcmogpfapbkkighbhhppjdbg), [Firefox](https://addons.mozilla.org/en-US/firefox/addon/vue-js-devtools/) ) 进行数据调试,这会使查看网页和数据结构变得不那么痛苦。
-> 2. 在机器人运行时,可以使用命令 `npm run tool-view -- -h` 来查看如何调试 `../data/record/last_params/` 下的前端数据文件。
+#### 调试
+
+项目中提供了一些手段帮助你进行调试。
+
+1. 可以在 `config.yml` 当中指定选项 `viewDebug: 1` 来进行实时前端调试。
+2. 在机器人运行时,可以使用命令 `npm run tool-view -- -h` 来查看如何调试 `../data/record/last_params/` 下的前端数据。
+
+调试时建议使用 [Vue.js devtools](https://v3.cn.vuejs.org/guide/installation.html#vue-devtools) ,它同样提供以下浏览器的插件。
+
+1. [Chrome](https://chrome.google.com/webstore/detail/vuejs-devtools/ljjemllljcmogpfapbkkighbhhppjdbg
+2. [Firefox](https://addons.mozilla.org/en-US/firefox/addon/vue-js-devtools/)
### 开发步骤
From e9a3d11c623340d529e6b147df3f7702351cabf2 Mon Sep 17 00:00:00 2001
From: Qin Fandong
Date: Thu, 6 Jan 2022 11:54:15 +0800
Subject: [PATCH 09/10] =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...274\200\345\217\221\346\214\207\345\274\225.md" | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git "a/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md" "b/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
index 181f56de3..da30d76a8 100644
--- "a/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
+++ "b/docs/\345\274\200\345\217\221\346\214\207\345\274\225.md"
@@ -178,11 +178,11 @@ index 8cd0307..46c4400 100644
| `global.bots` | 所有可用的 `msg.bot` |
| `global.bots.logger` | `global.bots[0].logger` |
-### 前端部分
+### 网页部分
#### 介绍
-本项目使用 [Vue.js](https://github.com/vuejs/vue.git) 和 [Puppeteer](https://github.com/puppeteer/puppeteer.git) 协作完成前端部分的工作。如果插件需要根据数据动态生成图片,则需要使用 `../data/js/` 中恰当版本的 Vue.js 在 `../src/views/` 中编写网页,并在插件中使用 `../src/utils/render.js` 中的 `render` 方法对该网页进行截图。
+本项目使用 [Vue.js](https://github.com/vuejs/vue.git) 和 [Puppeteer](https://github.com/puppeteer/puppeteer.git) 协作完成网页的工作。如果插件需要根据数据动态生成图片,则需要使用 `../data/js/` 中恰当版本的 Vue.js 在 `../src/views/` 中编写网页,并在插件中使用 `../src/utils/render.js` 中的 `render` 方法对该网页进行截图。
| Vue.js | 来源 |
| --- | --- |
@@ -193,7 +193,7 @@ index 8cd0307..46c4400 100644
> 我们的 CI 会保证 Vue.js 版本总是为最新。
-插件通过 URL 参数传递数据给前端部分,详情请见 `render` 方法的定义。你需要在网页中从 URL 参数中获取数据。
+插件通过 URL 参数传递数据给网页,详情请见 `render` 方法的定义。你需要在网页中从 URL 参数中获取数据。
```js
import { getParams } from "../common/param.js";
@@ -208,19 +208,19 @@ setup() {
项目中提供了一些手段帮助你进行调试。
-1. 可以在 `config.yml` 当中指定选项 `viewDebug: 1` 来进行实时前端调试。
-2. 在机器人运行时,可以使用命令 `npm run tool-view -- -h` 来查看如何调试 `../data/record/last_params/` 下的前端数据。
+1. 可以在 `config.yml` 当中指定选项 `viewDebug: 1` 来进行实时调试。
+2. 在机器人运行时,可以使用命令 `npm run tool-view -- -h` 来查看如何调试 `../data/record/last_params/` 下的数据。
调试时建议使用 [Vue.js devtools](https://v3.cn.vuejs.org/guide/installation.html#vue-devtools) ,它同样提供以下浏览器的插件。
-1. [Chrome](https://chrome.google.com/webstore/detail/vuejs-devtools/ljjemllljcmogpfapbkkighbhhppjdbg
+1. [Chrome](https://chrome.google.com/webstore/detail/vuejs-devtools/ljjemllljcmogpfapbkkighbhhppjdbg)
2. [Firefox](https://addons.mozilla.org/en-US/firefox/addon/vue-js-devtools/)
### 开发步骤
1. 在 `../config_defaults/command.yml` 中添加入口。
2. 在 `../src/plugins/` 目录下实现插件。
-3. 如有需要,在 `../src/views/` 下实现前端部分。
+3. 如有需要,在 `../src/views/` 下实现网页。
## 数据库
From a93848cf9e8a1ca9b819e7008954161cc1884822 Mon Sep 17 00:00:00 2001
From: Qin Fandong
Date: Thu, 6 Jan 2022 13:10:00 +0800
Subject: [PATCH 10/10] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=88=AB=E5=90=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
config_defaults/names.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/config_defaults/names.yml b/config_defaults/names.yml
index 02cc64d86..9f6e5b539 100644
--- a/config_defaults/names.yml
+++ b/config_defaults/names.yml
@@ -52,7 +52,7 @@ character:
七七: [ 77, 僵尸 ]
甘雨: [ 椰羊, 王小美 ]
优菈: [ 尤拉 ]
- 申鹤: [ ]
+ 申鹤: [ 小姨 ]
埃洛伊: [ ]
迪奥娜: [ 猫, dio ]
罗莎莉亚: [ 修女 ]