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 ] 罗莎莉亚: [ 修女 ]