koishi-plugin-oni-wiki-qq 0.0.8 → 0.1.0

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 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.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,8 @@ 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按钮,删除没法判断答案的代码
47
+ - 0.0.9 尝试移除导航框,更新koishi依赖
46
48
  - 0.0.8 对选择的其他项进行弱智一样的处理,免得 errlog 都快 13M 了
47
49
  - 0.0.7 对网址进行编码以确保不会出现奇奇怪怪的问题
48
50
  - 0.0.6 空网址错误处理
@@ -55,7 +57,19 @@ var usage = `
55
57
  var Config = import_koishi.Schema.object({
56
58
  api: import_koishi.Schema.string().default("https://oxygennotincluded.wiki.gg/zh/api.php").description("api地址"),
57
59
  imgPath: import_koishi.Schema.string().default(import_node_os.default.homedir() + "/wikiImg/").description("图片保存路径"),
58
- 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("需要点击的按钮选择器")
59
73
  });
60
74
  function apply(ctx, config) {
61
75
  const logger = ctx.logger;
@@ -101,26 +115,11 @@ function apply(ctx, config) {
101
115
  const awlist = [1, 2, 3];
102
116
  const awser = +(await session.prompt(50 * 1e3))?.replace(/\s+/g, "")?.slice(-1) || NaN;
103
117
  if (awlist.includes(awser)) {
104
- switch (awlist.includes(awser)) {
105
- case (one == "萌新的骨头汤" && awser == 1):
106
- return (0, import_koishi.h)("img", {
107
- src: `${encodeURI(config.urlPath + one)}.jpeg`
108
- });
109
- case (two == "" && awser == 2):
110
- return (0, import_koishi.h)("img", {
111
- src: `${encodeURI(config.urlPath + two)}.jpeg`
112
- });
113
- case (three == "" && awser == 3):
114
- return (0, import_koishi.h)("img", {
115
- src: `${encodeURI(config.urlPath + three)}.jpeg`
116
- });
117
- default:
118
- let res2 = await screenShot(itemUrl[awser - 1]);
119
- if (res2) {
120
- return (0, import_koishi.h)("img", { src: `${encodeURI(urlPath)}` });
121
- } else {
122
- return `截图发生错误.请稍后重试..`;
123
- }
118
+ let res2 = await screenShot(itemUrl[awser - 1]);
119
+ if (res2) {
120
+ return (0, import_koishi.h)("img", { src: `${encodeURI(urlPath)}` });
121
+ } else {
122
+ return `截图发生错误.请稍后重试..`;
124
123
  }
125
124
  } else if (Number.isNaN(awser)) {
126
125
  return `您输入的选项有误,已完结本轮查询,如有需要,请重新发起查询.`;
@@ -157,7 +156,12 @@ function apply(ctx, config) {
157
156
  await page.addStyleTag({
158
157
  content: "#mw-content-text{padding: 40px}"
159
158
  });
160
- const selector = await page.$("#mw-content-text");
159
+ try {
160
+ await page.$eval(config.navSelector, (el) => el.remove());
161
+ } catch (error) {
162
+ logger.error(error);
163
+ }
164
+ const selector = await page.$(config.contentSelector);
161
165
  return await selector.screenshot({
162
166
  type: "jpeg",
163
167
  quality: 50,
@@ -171,6 +175,46 @@ function apply(ctx, config) {
171
175
  }
172
176
  __name(screenShot, "screenShot");
173
177
  });
178
+ ctx.command("loginwiki", "使用账户登录", { authority: 4 }).action(async ({ session }) => {
179
+ const page = await ctx.puppeteer.page();
180
+ logger.info(`正在前往登录页:${config.loginUrl}`);
181
+ await page.goto(config.loginUrl, {
182
+ timeout: 0
183
+ });
184
+ await (0, import_koishi.sleep)(4e3);
185
+ logger.info(`输入用户名`);
186
+ await page.type(config.userNameSelector, config.userName);
187
+ await (0, import_koishi.sleep)(1e3);
188
+ logger.info(`输入密码`);
189
+ await page.type(config.passwordSelector, config.password);
190
+ await (0, import_koishi.sleep)(1e3);
191
+ logger.info("点击保持登录复选框");
192
+ await page.click(config.checkBoxSelector);
193
+ await (0, import_koishi.sleep)(1e3);
194
+ await page.click(`button[type="submit"]`);
195
+ await (0, import_koishi.sleep)(6e3);
196
+ const img = await page.screenshot({ type: "jpeg", quality: 50 });
197
+ session.send(import_koishi.h.image(img, "jpeg/image"));
198
+ await page.close().then(() => logger.info(`页面已经成功关闭`));
199
+ return `登录已完成.`;
200
+ });
201
+ ctx.command("clickBtn").action(async ({ session }) => {
202
+ const page = await ctx.puppeteer.page();
203
+ await page.goto(config.mainPage, { timeout: 0 });
204
+ const selector = await page.$(config.btnSelector);
205
+ await (0, import_koishi.sleep)(8e3);
206
+ await selector.click().then(() => logger.info(`成功点击了按钮`)).catch((err) => logger.info(`出错啦,${err}`));
207
+ await (0, import_koishi.sleep)(8e3);
208
+ await page.click(`button[type="submit"]`).then(() => logger.info(`点击了按钮`)).catch((err) => logger.error(`出错了,${err}`));
209
+ await (0, import_koishi.sleep)(5e3);
210
+ session.send(
211
+ import_koishi.h.image(
212
+ await page.screenshot({ type: "jpeg", quality: 80 }),
213
+ "jpeg/image"
214
+ )
215
+ );
216
+ page.close;
217
+ });
174
218
  }
175
219
  __name(apply, "apply");
176
220
  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.0.8",
4
+ "version": "0.1.0",
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.9"
18
+ "koishi": "^4.17.10"
19
19
  }
20
20
  }