koishi-plugin-oni-wiki-qq 0.0.9 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +11 -1
- package/lib/index.js +58 -38
- package/package.json +2 -2
package/lib/index.d.ts
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
import { Context, Schema } from "koishi";
|
|
2
2
|
export declare const name = "oni-wiki-qq";
|
|
3
3
|
export declare const inject: string[];
|
|
4
|
-
export declare const usage = "\n - 0.0.9 \u5C1D\u8BD5\u79FB\u9664\u5BFC\u822A\u6846,\u66F4\u65B0koishi\u4F9D\u8D56\n - 0.0.8 \u5BF9\u9009\u62E9\u7684\u5176\u4ED6\u9879\u8FDB\u884C\u5F31\u667A\u4E00\u6837\u7684\u5904\u7406,\u514D\u5F97 errlog \u90FD\u5FEB 13M \u4E86\n - 0.0.7 \u5BF9\u7F51\u5740\u8FDB\u884C\u7F16\u7801\u4EE5\u786E\u4FDD\u4E0D\u4F1A\u51FA\u73B0\u5947\u5947\u602A\u602A\u7684\u95EE\u9898\n - 0.0.6 \u7A7A\u7F51\u5740\u9519\u8BEF\u5904\u7406\n - 0.0.5 \u592A\u4E45\u6CA1\u5199\u5FD8\u8BB0build\u4E86...\n - 0.0.4 \u715E\u7B14\u817E\u8BAF\u4E0D\u7ED9\u53D1md\u4E86\u8279\n - 0.0.3 \u5C06\u94FE\u63A5\u6539\u4E3Amd\u53D1\u9001\u4EE5\u7ED5\u8FC7\u6C9F\u817E\u8BAF\u7684\u94FE\u63A5\u62E6\u622A\n - 0.0.2 \u57FA\u672C\u529F\u80FD\u5B8C\u6210\n - 0.0.1 \u521D\u59CB\u5316\uFF0C\u660E\u5929\u518D\u6162\u6162\u5199\u4E86\uFF08\n";
|
|
4
|
+
export declare const usage = "\n - 0.1.0 \u6DFB\u52A0\u767B\u5F55\u548C\u70B9\u51FBcookies\u6309\u94AE,\u5220\u9664\u6CA1\u6CD5\u5224\u65AD\u7B54\u6848\u7684\u4EE3\u7801\n - 0.0.9 \u5C1D\u8BD5\u79FB\u9664\u5BFC\u822A\u6846,\u66F4\u65B0koishi\u4F9D\u8D56\n - 0.0.8 \u5BF9\u9009\u62E9\u7684\u5176\u4ED6\u9879\u8FDB\u884C\u5F31\u667A\u4E00\u6837\u7684\u5904\u7406,\u514D\u5F97 errlog \u90FD\u5FEB 13M \u4E86\n - 0.0.7 \u5BF9\u7F51\u5740\u8FDB\u884C\u7F16\u7801\u4EE5\u786E\u4FDD\u4E0D\u4F1A\u51FA\u73B0\u5947\u5947\u602A\u602A\u7684\u95EE\u9898\n - 0.0.6 \u7A7A\u7F51\u5740\u9519\u8BEF\u5904\u7406\n - 0.0.5 \u592A\u4E45\u6CA1\u5199\u5FD8\u8BB0build\u4E86...\n - 0.0.4 \u715E\u7B14\u817E\u8BAF\u4E0D\u7ED9\u53D1md\u4E86\u8279\n - 0.0.3 \u5C06\u94FE\u63A5\u6539\u4E3Amd\u53D1\u9001\u4EE5\u7ED5\u8FC7\u6C9F\u817E\u8BAF\u7684\u94FE\u63A5\u62E6\u622A\n - 0.0.2 \u57FA\u672C\u529F\u80FD\u5B8C\u6210\n - 0.0.1 \u521D\u59CB\u5316\uFF0C\u660E\u5929\u518D\u6162\u6162\u5199\u4E86\uFF08\n";
|
|
5
5
|
export interface Config {
|
|
6
6
|
api: string;
|
|
7
7
|
imgPath: string;
|
|
8
8
|
urlPath: string;
|
|
9
|
+
navSelector: string;
|
|
10
|
+
contentSelector: string;
|
|
11
|
+
loginUrl: string;
|
|
12
|
+
userNameSelector: string;
|
|
13
|
+
passwordSelector: string;
|
|
14
|
+
checkBoxSelector: string;
|
|
15
|
+
userName: string;
|
|
16
|
+
password: string;
|
|
17
|
+
mainPage: string;
|
|
18
|
+
btnSelector: string;
|
|
9
19
|
}
|
|
10
20
|
export declare const Config: Schema<Config>;
|
|
11
21
|
export declare function apply(ctx: Context, config: Config): void;
|
package/lib/index.js
CHANGED
|
@@ -43,6 +43,7 @@ var import_node_os = __toESM(require("node:os"));
|
|
|
43
43
|
var name = "oni-wiki-qq";
|
|
44
44
|
var inject = ["puppeteer"];
|
|
45
45
|
var usage = `
|
|
46
|
+
- 0.1.0 添加登录和点击cookies按钮,删除没法判断答案的代码
|
|
46
47
|
- 0.0.9 尝试移除导航框,更新koishi依赖
|
|
47
48
|
- 0.0.8 对选择的其他项进行弱智一样的处理,免得 errlog 都快 13M 了
|
|
48
49
|
- 0.0.7 对网址进行编码以确保不会出现奇奇怪怪的问题
|
|
@@ -56,7 +57,19 @@ var usage = `
|
|
|
56
57
|
var Config = import_koishi.Schema.object({
|
|
57
58
|
api: import_koishi.Schema.string().default("https://oxygennotincluded.wiki.gg/zh/api.php").description("api地址"),
|
|
58
59
|
imgPath: import_koishi.Schema.string().default(import_node_os.default.homedir() + "/wikiImg/").description("图片保存路径"),
|
|
59
|
-
urlPath: import_koishi.Schema.string().description("图片公网访问路径")
|
|
60
|
+
urlPath: import_koishi.Schema.string().description("图片公网访问路径"),
|
|
61
|
+
navSelector: import_koishi.Schema.string().description("导航框类名").default(".navbox"),
|
|
62
|
+
contentSelector: import_koishi.Schema.string().description("内容区选择器").default("#mw-content-text"),
|
|
63
|
+
loginUrl: import_koishi.Schema.string().description("登录页面地址").default(
|
|
64
|
+
"https://oxygennotincluded.wiki.gg/zh/index.php?title=Special:%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95&returnto=%E9%A6%96%E9%A1%B5"
|
|
65
|
+
),
|
|
66
|
+
userNameSelector: import_koishi.Schema.string().description("用户名输入区选择器").default("input[name='wpName']"),
|
|
67
|
+
passwordSelector: import_koishi.Schema.string().description("密码输入区选择器").default("input[name='wpPassword']"),
|
|
68
|
+
checkBoxSelector: import_koishi.Schema.string().description("总是保持登录复选框").default("inpt[name='wpRemeber']"),
|
|
69
|
+
userName: import_koishi.Schema.string().description("用户名"),
|
|
70
|
+
password: import_koishi.Schema.string().description("密码"),
|
|
71
|
+
mainPage: import_koishi.Schema.string().default("https://oxygennotincluded.wiki.gg/zh/").description("主页地址"),
|
|
72
|
+
btnSelector: import_koishi.Schema.string().default(".NN0_TB_DIsNmMHgJWgT7U").description("需要点击的按钮选择器")
|
|
60
73
|
});
|
|
61
74
|
function apply(ctx, config) {
|
|
62
75
|
const logger = ctx.logger;
|
|
@@ -79,7 +92,7 @@ function apply(ctx, config) {
|
|
|
79
92
|
await (0, import_koishi.sleep)(500);
|
|
80
93
|
const res = await getWiki(config.api);
|
|
81
94
|
if (res.length == 0) {
|
|
82
|
-
return `在Wiki里没找到或API
|
|
95
|
+
return `在Wiki里没找到或API查询超时,如有需要,请按照游戏内名称重新发起查询....`;
|
|
83
96
|
}
|
|
84
97
|
const title = [...res[0]];
|
|
85
98
|
let itemUrl = [...res[1]];
|
|
@@ -92,40 +105,7 @@ function apply(ctx, config) {
|
|
|
92
105
|
return `截图发生错误.请稍后重试..`;
|
|
93
106
|
}
|
|
94
107
|
} else {
|
|
95
|
-
|
|
96
|
-
session.send(
|
|
97
|
-
`wiki里没有找到,你可以看看底下有没有你需要的,有,回复数字序号,没有,请等待查询超时减轻服务器压力.
|
|
98
|
-
1.${one}
|
|
99
|
-
2.${two}
|
|
100
|
-
3.${three}`
|
|
101
|
-
);
|
|
102
|
-
const awlist = [1, 2, 3];
|
|
103
|
-
const awser = +(await session.prompt(50 * 1e3))?.replace(/\s+/g, "")?.slice(-1) || NaN;
|
|
104
|
-
if (awlist.includes(awser)) {
|
|
105
|
-
switch (awlist.includes(awser)) {
|
|
106
|
-
case (one == "萌新的骨头汤" && awser == 1):
|
|
107
|
-
return (0, import_koishi.h)("img", {
|
|
108
|
-
src: `${encodeURI(config.urlPath + one)}.jpeg`
|
|
109
|
-
});
|
|
110
|
-
case (two == "" && awser == 2):
|
|
111
|
-
return (0, import_koishi.h)("img", {
|
|
112
|
-
src: `${encodeURI(config.urlPath + two)}.jpeg`
|
|
113
|
-
});
|
|
114
|
-
case (three == "" && awser == 3):
|
|
115
|
-
return (0, import_koishi.h)("img", {
|
|
116
|
-
src: `${encodeURI(config.urlPath + three)}.jpeg`
|
|
117
|
-
});
|
|
118
|
-
default:
|
|
119
|
-
let res2 = await screenShot(itemUrl[awser - 1]);
|
|
120
|
-
if (res2) {
|
|
121
|
-
return (0, import_koishi.h)("img", { src: `${encodeURI(urlPath)}` });
|
|
122
|
-
} else {
|
|
123
|
-
return `截图发生错误.请稍后重试..`;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
} else if (Number.isNaN(awser)) {
|
|
127
|
-
return `您输入的选项有误,已完结本轮查询,如有需要,请重新发起查询.`;
|
|
128
|
-
}
|
|
108
|
+
return `没有在wiki内找到${itemName},如有需要,请按照游戏内名称重新发起查询`;
|
|
129
109
|
}
|
|
130
110
|
async function getWiki(api) {
|
|
131
111
|
return await ctx.http.get(api, {
|
|
@@ -159,11 +139,11 @@ function apply(ctx, config) {
|
|
|
159
139
|
content: "#mw-content-text{padding: 40px}"
|
|
160
140
|
});
|
|
161
141
|
try {
|
|
162
|
-
await page.$eval(
|
|
142
|
+
await page.$eval(config.navSelector, (el) => el.remove());
|
|
163
143
|
} catch (error) {
|
|
164
144
|
logger.error(error);
|
|
165
145
|
}
|
|
166
|
-
const selector = await page.$(
|
|
146
|
+
const selector = await page.$(config.contentSelector);
|
|
167
147
|
return await selector.screenshot({
|
|
168
148
|
type: "jpeg",
|
|
169
149
|
quality: 50,
|
|
@@ -177,6 +157,46 @@ function apply(ctx, config) {
|
|
|
177
157
|
}
|
|
178
158
|
__name(screenShot, "screenShot");
|
|
179
159
|
});
|
|
160
|
+
ctx.command("loginwiki", "使用账户登录", { authority: 4 }).action(async ({ session }) => {
|
|
161
|
+
const page = await ctx.puppeteer.page();
|
|
162
|
+
logger.info(`正在前往登录页:${config.loginUrl}`);
|
|
163
|
+
await page.goto(config.loginUrl, {
|
|
164
|
+
timeout: 0
|
|
165
|
+
});
|
|
166
|
+
await (0, import_koishi.sleep)(4e3);
|
|
167
|
+
logger.info(`输入用户名`);
|
|
168
|
+
await page.type(config.userNameSelector, config.userName);
|
|
169
|
+
await (0, import_koishi.sleep)(1e3);
|
|
170
|
+
logger.info(`输入密码`);
|
|
171
|
+
await page.type(config.passwordSelector, config.password);
|
|
172
|
+
await (0, import_koishi.sleep)(1e3);
|
|
173
|
+
logger.info("点击保持登录复选框");
|
|
174
|
+
await page.click(config.checkBoxSelector);
|
|
175
|
+
await (0, import_koishi.sleep)(1e3);
|
|
176
|
+
await page.click(`button[type="submit"]`);
|
|
177
|
+
await (0, import_koishi.sleep)(6e3);
|
|
178
|
+
const img = await page.screenshot({ type: "jpeg", quality: 50 });
|
|
179
|
+
session.send(import_koishi.h.image(img, "jpeg/image"));
|
|
180
|
+
await page.close().then(() => logger.info(`页面已经成功关闭`));
|
|
181
|
+
return `登录已完成.`;
|
|
182
|
+
});
|
|
183
|
+
ctx.command("clickBtn").action(async ({ session }) => {
|
|
184
|
+
const page = await ctx.puppeteer.page();
|
|
185
|
+
await page.goto(config.mainPage, { timeout: 0 });
|
|
186
|
+
const selector = await page.$(config.btnSelector);
|
|
187
|
+
await (0, import_koishi.sleep)(8e3);
|
|
188
|
+
await selector.click().then(() => logger.info(`成功点击了按钮`)).catch((err) => logger.info(`出错啦,${err}`));
|
|
189
|
+
await (0, import_koishi.sleep)(8e3);
|
|
190
|
+
await page.click(`button[type="submit"]`).then(() => logger.info(`点击了按钮`)).catch((err) => logger.error(`出错了,${err}`));
|
|
191
|
+
await (0, import_koishi.sleep)(5e3);
|
|
192
|
+
session.send(
|
|
193
|
+
import_koishi.h.image(
|
|
194
|
+
await page.screenshot({ type: "jpeg", quality: 80 }),
|
|
195
|
+
"jpeg/image"
|
|
196
|
+
)
|
|
197
|
+
);
|
|
198
|
+
page.close;
|
|
199
|
+
});
|
|
180
200
|
}
|
|
181
201
|
__name(apply, "apply");
|
|
182
202
|
function checkFileExists(filePath) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "koishi-plugin-oni-wiki-qq",
|
|
3
3
|
"description": "缺氧wiki查询",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.1.1",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
7
7
|
"files": [
|
|
@@ -15,6 +15,6 @@
|
|
|
15
15
|
"plugin"
|
|
16
16
|
],
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"koishi": "^4.17.
|
|
18
|
+
"koishi": "^4.17.11"
|
|
19
19
|
}
|
|
20
20
|
}
|