beatsaber-bot-core 0.2.0-dev.6 → 0.2.0-dev.8

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.
Files changed (73) hide show
  1. package/lib/api/base/blRequset.js +7 -7
  2. package/lib/api/base/blRequset.js.map +1 -1
  3. package/lib/api/interfaces/beatsaver/ws.d.ts +8 -2
  4. package/lib/cmd/bind/bind-beatleader.js.map +1 -1
  5. package/lib/cmd/bind/bind-beatsaver.js.map +1 -1
  6. package/lib/cmd/bind/bind-id-beatleader.js.map +1 -1
  7. package/lib/cmd/bind/bind-scoresaber.js.map +1 -1
  8. package/lib/cmd/bind/index.d.ts +2 -2
  9. package/lib/cmd/bsmap/id-search.d.ts +1 -1
  10. package/lib/cmd/bsmap/id-search.js +1 -1
  11. package/lib/cmd/bsmap/id-search.js.map +1 -1
  12. package/lib/cmd/bsmap/key-search.d.ts +1 -1
  13. package/lib/cmd/bsmap/latest.d.ts +1 -1
  14. package/lib/cmd/builder.d.ts +2 -2
  15. package/lib/cmd/builder.js +20 -1
  16. package/lib/cmd/builder.js.map +1 -1
  17. package/lib/cmd/deprecated/cmp.d.ts +1 -1
  18. package/lib/cmd/deprecated/me.d.ts +2 -2
  19. package/lib/cmd/deprecated/tmp.d.ts +1 -1
  20. package/lib/cmd/deprecated/whois.d.ts +2 -2
  21. package/lib/cmd/help.d.ts +1 -1
  22. package/lib/cmd/rank.d.ts +2 -2
  23. package/lib/cmd/rank.js +4 -2
  24. package/lib/cmd/rank.js.map +1 -1
  25. package/lib/cmd/score.d.ts +2 -2
  26. package/lib/cmd/subscribe/index.d.ts +2 -2
  27. package/lib/cmd/subscribe/subjoin.d.ts +2 -2
  28. package/lib/cmd/subscribe/subleave.d.ts +2 -2
  29. package/lib/cmd/subscribe/unsubscribe.d.ts +2 -2
  30. package/lib/db/index.d.ts +0 -34
  31. package/lib/db/index.js +0 -2
  32. package/lib/errors/index.d.ts +25 -41
  33. package/lib/errors/index.js +54 -59
  34. package/lib/errors/index.js.map +1 -1
  35. package/lib/index.d.ts +1 -1
  36. package/lib/index.js +1 -1
  37. package/lib/index.js.map +1 -1
  38. package/lib/interface/bot.d.ts +1 -1
  39. package/lib/interface/{db.d.ts → db/index.d.ts} +2 -1
  40. package/lib/interface/db/index.js +18 -0
  41. package/lib/interface/db/index.js.map +1 -0
  42. package/lib/interface/db/models.d.ts +34 -0
  43. package/lib/interface/{db.js → db/models.js} +1 -1
  44. package/lib/interface/db/models.js.map +1 -0
  45. package/lib/interface/index.d.ts +0 -1
  46. package/lib/interface/index.js +0 -1
  47. package/lib/interface/index.js.map +1 -1
  48. package/lib/schedules/index.d.ts +3 -2
  49. package/lib/schedules/index.js +13 -16
  50. package/lib/schedules/index.js.map +1 -1
  51. package/lib/schedules/interface.d.ts +17 -0
  52. package/lib/schedules/interface.js +3 -0
  53. package/lib/schedules/interface.js.map +1 -0
  54. package/lib/schedules/oauthTokenRefreshTask.d.ts +2 -5
  55. package/lib/schedules/oauthTokenRefreshTask.js +9 -9
  56. package/lib/schedules/oauthTokenRefreshTask.js.map +1 -1
  57. package/lib/utils/cache.d.ts +2 -0
  58. package/lib/utils/cache.js +30 -0
  59. package/lib/utils/cache.js.map +1 -0
  60. package/lib/utils/index.d.ts +5 -0
  61. package/lib/utils/index.js +77 -0
  62. package/lib/utils/index.js.map +1 -0
  63. package/lib/ws/beatsaver.d.ts +6 -1
  64. package/lib/ws/beatsaver.js +28 -29
  65. package/lib/ws/beatsaver.js.map +1 -1
  66. package/package.json +2 -1
  67. package/lib/interface/db.js.map +0 -1
  68. package/lib/interface/tables.d.ts +0 -0
  69. package/lib/interface/tables.js +0 -1
  70. package/lib/interface/tables.js.map +0 -1
  71. package/lib/utils.d.ts +0 -2
  72. package/lib/utils.js +0 -25
  73. package/lib/utils.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BeatSaverWSHandler = void 0;
4
+ const utils_1 = require("../utils");
4
5
  class BeatSaverWSHandler {
5
6
  logger;
6
7
  render;
@@ -21,39 +22,37 @@ class BeatSaverWSHandler {
21
22
  onClose() {
22
23
  this.logger.info('BeatsaverWS closed');
23
24
  }
24
- async onEvent(event) {
25
- const data = JSON.parse(event.toString());
25
+ eventParser(event) {
26
+ return JSON.parse(event.toString());
27
+ }
28
+ eventFilter = (data) => {
29
+ return (data.type === 'MAP_UPDATE' &&
30
+ data.msg.versions.some((it) => it.state == 'Published') &&
31
+ data.msg.declaredAi === 'None');
32
+ };
33
+ eventIdSelector = (data) => `ws.bs.${data.type === 'MAP_DELETE' ? data.msg : data.msg.id}.${data.type}`;
34
+ async BSWSHandler(data) {
26
35
  // this.logger.info('Beatsaver message received', data.type, data?.msg?.id)
27
- if (data.type === 'MAP_UPDATE') {
28
- const bsmap = data.msg;
29
- if (!bsmap.versions.some((it) => it.state == 'Published')) {
30
- return;
31
- }
32
- if (bsmap.declaredAi != 'None') {
33
- return;
34
- }
35
- const userId = bsmap.uploader.id;
36
- const subscriptions = await this.db.getAllSubScriptionByUIDAndPlatform.apply(this.db, [
37
- userId,
38
- 'beatsaver',
39
- ]);
40
- const restSub = subscriptions.filter((it) => it.subscribe.type == 'beatsaver-map' && it.subscribe.enable == true);
41
- // cacheService
42
- if (restSub.length === 0)
43
- return;
44
- const image = this.render.renderMap(bsmap);
45
- for (const item of restSub) {
46
- const session = this.botService.getSessionByChannelInfo(item.groupChannel);
47
- if (!session) {
48
- continue;
49
- }
50
- await session.send(`本群谱师 「<at id="${item.account.uid}"/> (${bsmap.uploader.name})」刚刚发布了新谱面,「${bsmap.name}」`);
51
- // text + mention element
52
- await session.send(await image);
53
- await session.sendAudioByUrl(bsmap.versions[0].previewURL);
36
+ const bsmap = data.msg;
37
+ const userId = bsmap.uploader.id;
38
+ const subscriptions = await this.db.getAllSubScriptionByUIDAndPlatform(userId, 'beatsaver');
39
+ const restSub = subscriptions.filter((it) => it.subscribe.type == 'beatsaver-map' && it.subscribe.enable == true);
40
+ // cacheService
41
+ if (restSub.length === 0)
42
+ return;
43
+ const image = this.render.renderMap(bsmap);
44
+ for (const item of restSub) {
45
+ const session = this.botService.getSessionByChannelInfo(item.groupChannel);
46
+ if (!session) {
47
+ continue;
54
48
  }
49
+ await session.send(`本群谱师 「<at id="${item.account.uid}"/> (${bsmap.uploader.name})」刚刚发布了新谱面,「${bsmap.name}」`);
50
+ // text + mention element
51
+ await session.send(await image);
52
+ await session.sendAudioByUrl(bsmap.versions[0].previewURL);
55
53
  }
56
54
  }
55
+ onEvent = (0, utils_1.handleWSEventWithCache)(this, this.BSWSHandler, 1000 * 60 * 15, this.eventParser, this.eventFilter, this.eventIdSelector);
57
56
  }
58
57
  exports.BeatSaverWSHandler = BeatSaverWSHandler;
59
58
  //# sourceMappingURL=beatsaver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"beatsaver.js","sourceRoot":"","sources":["../../src/ws/beatsaver.ts"],"names":[],"mappings":";;;AAQA,MAAa,kBAAkB;IACZ,MAAM,CAAQ;IACvB,MAAM,CAAe;IACrB,UAAU,CAA2B;IAC7C,KAAK,GAAW,6BAA6B,CAAA;IACrC,EAAE,CAAO;IACjB,MAAM,CAAQ;IACd,YACE,EAAS,EACT,MAAqB,EACrB,MAAc,EACd,MAAc,EACd,UAAqC;QAErC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACxC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAU;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAqB,CAAA;QAC7D,2EAA2E;QAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;YACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,WAAW,CAAC,EAAE,CAAC;gBAC1D,OAAM;YACR,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;gBAC/B,OAAM;YACR,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAA;YAChC,MAAM,aAAa,GACjB,MAAM,IAAI,CAAC,EAAE,CAAC,kCAAkC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE;gBAC9D,MAAM;gBACN,WAAW;aACZ,CAAC,CAAA;YACJ,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAClC,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,eAAe,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CACtE,CAAA;YACD,eAAe;YACf,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAM;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAC1C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,uBAAuB,CACrD,IAAI,CAAC,YAAY,CAClB,CAAA;gBACD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,SAAQ;gBACV,CAAC;gBACD,MAAM,OAAO,CAAC,IAAI,CAChB,iBAAiB,IAAI,CAAC,OAAO,CAAC,GAAG,QAAQ,KAAK,CAAC,QAAQ,CAAC,IAAI,eAAe,KAAK,CAAC,IAAI,GAAG,CACzF,CAAA;gBACD,yBAAyB;gBACzB,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAA;gBAC/B,MAAM,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;CACF;AArED,gDAqEC"}
1
+ {"version":3,"file":"beatsaver.js","sourceRoot":"","sources":["../../src/ws/beatsaver.ts"],"names":[],"mappings":";;;AAOA,mCAAuD;AAEvD,MAAa,kBAAkB;IACZ,MAAM,CAAQ;IACvB,MAAM,CAAe;IACrB,UAAU,CAA2B;IAC7C,KAAK,GAAW,6BAA6B,CAAA;IACrC,EAAE,CAAO;IACjB,MAAM,CAAQ;IACd,YACE,EAAS,EACT,MAAqB,EACrB,MAAc,EACd,MAAc,EACd,UAAqC;QAErC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACxC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACxC,CAAC;IAED,WAAW,CAAC,KAAK;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAqB,CAAA;IACzD,CAAC;IAED,WAAW,GAAG,CAAC,IAAsB,EAAE,EAAE;QACvC,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,YAAY;YAC1B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,WAAW,CAAC;YACvD,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,CAC/B,CAAA;IACH,CAAC,CAAA;IACD,eAAe,GAAG,CAAC,IAAsB,EAAE,EAAE,CAC3C,SAAS,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;IAE7E,KAAK,CAAC,WAAW,CAAC,IAAsB;QACtC,2EAA2E;QAE3E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAY,CAAA;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAA;QAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,kCAAkC,CACpE,MAAM,EACN,WAAW,CACZ,CAAA;QACD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAClC,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,eAAe,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CACtE,CAAA;QACD,eAAe;QACf,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC1C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,SAAQ;YACV,CAAC;YACD,MAAM,OAAO,CAAC,IAAI,CAChB,iBAAiB,IAAI,CAAC,OAAO,CAAC,GAAG,QAAQ,KAAK,CAAC,QAAQ,CAAC,IAAI,eAAe,KAAK,CAAC,IAAI,GAAG,CACzF,CAAA;YACD,yBAAyB;YACzB,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAA;YAC/B,MAAM,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,GAAG,IAAA,8BAAsB,EAC9B,IAAI,EACJ,IAAI,CAAC,WAAW,EAChB,IAAI,GAAG,EAAE,GAAG,EAAE,EACd,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,eAAe,CACrB,CAAA;CACF;AAjFD,gDAiFC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "beatsaber-bot-core",
3
3
  "description": "一个用于新版 Steam 家庭的库存监控 Bot 插件",
4
- "version": "0.2.0-dev.6",
4
+ "version": "0.2.0-dev.8",
5
5
  "types": "lib/index.d.ts",
6
6
  "files": [
7
7
  "lib"
@@ -56,6 +56,7 @@
56
56
  "chart.js": "^4.4.3",
57
57
  "country-flag-icons": "^1.5.11",
58
58
  "dayjs": "^1.11.3",
59
+ "lru-cache": "^11.0.1",
59
60
  "lucide-react": "^0.379.0",
60
61
  "react": "^18.3.1",
61
62
  "react-dom": "^18.3.1"
@@ -1 +0,0 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/interface/db.ts"],"names":[],"mappings":""}
File without changes
@@ -1 +0,0 @@
1
- //# sourceMappingURL=tables.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/interface/tables.ts"],"names":[],"mappings":""}
package/lib/utils.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare const sleep: (millsec?: number) => Promise<void>;
2
- export declare const convertDiff: (diff: string | null) => any;
package/lib/utils.js DELETED
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertDiff = exports.sleep = void 0;
4
- const sleep = async (millsec = 5000) => {
5
- await new Promise((resolve, reject) => {
6
- setTimeout(resolve, millsec);
7
- });
8
- };
9
- exports.sleep = sleep;
10
- const diffMap = {
11
- E: 'Easy',
12
- N: 'Normal',
13
- H: 'Hard',
14
- EX: 'Expert',
15
- EP: 'ExpertPlus',
16
- 'EX+': 'ExpertPlus',
17
- };
18
- const convertDiff = (diff) => {
19
- if (!diff) {
20
- return diff;
21
- }
22
- return diffMap[diff.toUpperCase()];
23
- };
24
- exports.convertDiff = convertDiff;
25
- //# sourceMappingURL=utils.js.map
package/lib/utils.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,KAAK,GAAG,KAAK,EAAE,UAAkB,IAAI,EAAE,EAAE;IACpD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAJY,QAAA,KAAK,SAIjB;AAED,MAAM,OAAO,GAAG;IACd,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,MAAM;IACT,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,YAAY;IAChB,KAAK,EAAE,YAAY;CACpB,CAAA;AAEM,MAAM,WAAW,GAAG,CAAC,IAAmB,EAAE,EAAE;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;AACpC,CAAC,CAAA;AALY,QAAA,WAAW,eAKvB"}