beatsaber-bot-core 0.3.0-rc.2 → 0.3.0-rc.20

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 (75) hide show
  1. package/dist/cjs/cmd/bind/bind-beatleader.js +8 -11
  2. package/dist/cjs/cmd/bind/bind-beatleader.js.map +1 -1
  3. package/dist/cjs/cmd/bind/bind-beatsaver.js +7 -12
  4. package/dist/cjs/cmd/bind/bind-beatsaver.js.map +1 -1
  5. package/dist/cjs/cmd/bind/bind-id-beatleader.js +8 -11
  6. package/dist/cjs/cmd/bind/bind-id-beatleader.js.map +1 -1
  7. package/dist/cjs/cmd/bind/bind-id-beatsaver.js +7 -11
  8. package/dist/cjs/cmd/bind/bind-id-beatsaver.js.map +1 -1
  9. package/dist/cjs/cmd/bind/bind-scoresaber.js +9 -14
  10. package/dist/cjs/cmd/bind/bind-scoresaber.js.map +1 -1
  11. package/dist/cjs/cmd/rank.js +3 -3
  12. package/dist/cjs/cmd/rank.js.map +1 -1
  13. package/dist/cjs/cmd/score.js +2 -2
  14. package/dist/cjs/cmd/score.js.map +1 -1
  15. package/dist/cjs/cmd/subscribe/beatleader.js +1 -1
  16. package/dist/cjs/cmd/subscribe/beatleader.js.map +1 -1
  17. package/dist/cjs/cmd/subscribe/beatsaver.js +1 -1
  18. package/dist/cjs/cmd/subscribe/beatsaver.js.map +1 -1
  19. package/dist/cjs/cmd/subscribe/id-beatleader-score.js +1 -1
  20. package/dist/cjs/cmd/subscribe/id-beatleader-score.js.map +1 -1
  21. package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js +1 -1
  22. package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js.map +1 -1
  23. package/dist/cjs/cmd/subscribe/index.js +4 -4
  24. package/dist/cjs/cmd/subscribe/index.js.map +1 -1
  25. package/dist/cjs/cmd/subscribe/subleave.js +4 -4
  26. package/dist/cjs/cmd/subscribe/subleave.js.map +1 -1
  27. package/dist/cjs/common/i18n/index.js +2 -1
  28. package/dist/cjs/common/i18n/index.js.map +1 -1
  29. package/dist/cjs/core/session.js.map +1 -1
  30. package/dist/cjs/events/schedules/temp.js +1 -1
  31. package/dist/cjs/events/schedules/temp.js.map +1 -1
  32. package/dist/cjs/events/ws/beatleader.js +1 -1
  33. package/dist/cjs/events/ws/beatleader.js.map +1 -1
  34. package/dist/cjs/events/ws/beatsaver.js +2 -2
  35. package/dist/cjs/events/ws/beatsaver.js.map +1 -1
  36. package/dist/cjs/services/i18n/index.js +2 -2
  37. package/dist/cjs/services/i18n/index.js.map +1 -1
  38. package/dist/esm/cmd/bind/bind-beatleader.js +8 -11
  39. package/dist/esm/cmd/bind/bind-beatleader.js.map +1 -1
  40. package/dist/esm/cmd/bind/bind-beatsaver.js +7 -12
  41. package/dist/esm/cmd/bind/bind-beatsaver.js.map +1 -1
  42. package/dist/esm/cmd/bind/bind-id-beatleader.js +8 -11
  43. package/dist/esm/cmd/bind/bind-id-beatleader.js.map +1 -1
  44. package/dist/esm/cmd/bind/bind-id-beatsaver.js +7 -11
  45. package/dist/esm/cmd/bind/bind-id-beatsaver.js.map +1 -1
  46. package/dist/esm/cmd/bind/bind-scoresaber.js +9 -14
  47. package/dist/esm/cmd/bind/bind-scoresaber.js.map +1 -1
  48. package/dist/esm/cmd/rank.js +3 -3
  49. package/dist/esm/cmd/rank.js.map +1 -1
  50. package/dist/esm/cmd/score.js +2 -2
  51. package/dist/esm/cmd/score.js.map +1 -1
  52. package/dist/esm/cmd/subscribe/beatleader.js +1 -1
  53. package/dist/esm/cmd/subscribe/beatleader.js.map +1 -1
  54. package/dist/esm/cmd/subscribe/beatsaver.js +1 -1
  55. package/dist/esm/cmd/subscribe/beatsaver.js.map +1 -1
  56. package/dist/esm/cmd/subscribe/id-beatleader-score.js +1 -1
  57. package/dist/esm/cmd/subscribe/id-beatleader-score.js.map +1 -1
  58. package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js +1 -1
  59. package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js.map +1 -1
  60. package/dist/esm/cmd/subscribe/index.js +4 -4
  61. package/dist/esm/cmd/subscribe/index.js.map +1 -1
  62. package/dist/esm/cmd/subscribe/subleave.js +4 -4
  63. package/dist/esm/cmd/subscribe/subleave.js.map +1 -1
  64. package/dist/esm/common/i18n/index.js +2 -1
  65. package/dist/esm/common/i18n/index.js.map +1 -1
  66. package/dist/esm/events/schedules/temp.js +1 -1
  67. package/dist/esm/events/schedules/temp.js.map +1 -1
  68. package/dist/esm/events/ws/beatleader.js +1 -1
  69. package/dist/esm/events/ws/beatleader.js.map +1 -1
  70. package/dist/esm/events/ws/beatsaver.js +2 -2
  71. package/dist/esm/events/ws/beatsaver.js.map +1 -1
  72. package/dist/esm/services/i18n/index.js +2 -2
  73. package/dist/esm/services/i18n/index.js.map +1 -1
  74. package/dist/types/index.d.ts +1 -1
  75. package/package.json +8 -17
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cmd/subscribe/index.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface\";\nimport { beatleader } from './beatleader'\nimport { beatsaver } from './beatsaver'\nimport { NoneSubscriptionExistError } from '@/services/errors'\nimport { idBeatsaverMapper } from './id-beatsaver-mapper'\n\nexport default () =>\n new CommandBuilder()\n .setName('subscribe')\n .addAlias('bbsub')\n .addAlias('/subbl', { options: { type: 'beatleader' } })\n .addAlias('/subbs', { options: { type: 'beatsaver' } })\n .addAlias('blsub', { options: { type: 'beatleader' } })\n .addAlias('bssub', { options: { type: 'beatsaver' } })\n .addAlias('subbl', { options: { type: 'beatleader' } })\n .addAlias('subbs', { options: { type: 'beatsaver' } })\n .addAlias('subbl', { options: { type: 'beatleader' } })\n .addAlias('submapper', { options: { type: 'bsmapper' } })\n .addOption('type', 'type:string')\n .setDescription('clear an auth account relate info')\n .setExecutor(async (c) => {\n // check admin permission\n // if (options.type === 'beatsaver-alert') {\n // return alert(c)\n // }\n\n if (c.options.type === 'beatsaver') {\n if (c.input) return idBeatsaverMapper(c)\n return beatsaver(c)\n }\n\n if (c.options.type === 'beatleader') {\n return beatleader(c)\n }\n\n // return subscription info\n const rows = await c.services.db.getSubscriptionInfoByUGID(\n c.session.channel.id,\n c.session.user.id\n )\n\n if (rows.length < 1) {\n throw new NoneSubscriptionExistError()\n }\n let text = c.session.text('commands.bsbot.subscribe.info.header') + '\\n'\n for (const row of rows) {\n if (row.subscribe.type.startsWith('group')) {\n text += c.session.text(\n 'commands.bsbot.subscribe.info.group-body-item',\n {\n type:\n row.subscribe.type +\n `(${row.subscribe.data?.mapperName} ${row.subscribe.data?.mapperId})`,\n }\n )\n } else {\n text += c.session.text('commands.bsbot.subscribe.info.body-item', {\n type: row.subscribe.type,\n cnt: row.memberCount,\n enable: row.subscribe.enable,\n })\n if (row.me) {\n text += c.session.text(\n 'commands.bsbot.subscribe.info.body-item-include-you'\n )\n }\n }\n\n text += '\\n\\n'\n }\n await c.session.sendQuote(text)\n })\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,sBAAqB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B,SAAS,kCAAkC;AAC3C,SAAS,yBAAyB;AAElC,IAAO,oBAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,WAAW,EACnB,SAAS,OAAO,EAChB,SAAS,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACtD,SAAS,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACrD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACrD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACpD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACrD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACpD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACrD,SAAS,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,EAAE,CAAC,EACvD,UAAU,QAAQ,aAAa,EAC/B,eAAe,mCAAmC,EAClD,YAAY,CAAO,MAAM;AApB9B;AA0BM,MAAI,EAAE,QAAQ,SAAS,aAAa;AAClC,QAAI,EAAE,MAAO,QAAO,kBAAkB,CAAC;AACvC,WAAO,UAAU,CAAC;AAAA,EACpB;AAEA,MAAI,EAAE,QAAQ,SAAS,cAAc;AACnC,WAAO,WAAW,CAAC;AAAA,EACrB;AAGA,QAAM,OAAO,MAAM,EAAE,SAAS,GAAG;AAAA,IAC/B,EAAE,QAAQ,QAAQ;AAAA,IAClB,EAAE,QAAQ,KAAK;AAAA,EACjB;AAEA,MAAI,KAAK,SAAS,GAAG;AACnB,UAAM,IAAI,2BAA2B;AAAA,EACvC;AACA,MAAI,OAAO,EAAE,QAAQ,KAAK,sCAAsC,IAAI;AACpE,aAAW,OAAO,MAAM;AACtB,QAAI,IAAI,UAAU,KAAK,WAAW,OAAO,GAAG;AAC1C,cAAQ,EAAE,QAAQ;AAAA,QAChB;AAAA,QACA;AAAA,UACE,MACE,IAAI,UAAU,OACd,KAAI,SAAI,UAAU,SAAd,mBAAoB,UAAU,KAAI,SAAI,UAAU,SAAd,mBAAoB,QAAQ;AAAA,QACtE;AAAA,MACF;AAAA,IACF,OAAO;AACL,cAAQ,EAAE,QAAQ,KAAK,2CAA2C;AAAA,QAChE,MAAM,IAAI,UAAU;AAAA,QACpB,KAAK,IAAI;AAAA,QACT,QAAQ,IAAI,UAAU;AAAA,MACxB,CAAC;AACD,UAAI,IAAI,IAAI;AACV,gBAAQ,EAAE,QAAQ;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,YAAQ;AAAA,EACV;AACA,QAAM,EAAE,QAAQ,UAAU,IAAI;AAChC,EAAC;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cmd/subscribe/index.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface\";\nimport { beatleader } from './beatleader'\nimport { beatsaver } from './beatsaver'\nimport { NoneSubscriptionExistError } from '@/services/errors'\nimport { idBeatsaverMapper } from './id-beatsaver-mapper'\n\nexport default () =>\n new CommandBuilder()\n .setName('subscribe')\n .addAlias('bbsub')\n .addAlias('/subbl', { options: { type: 'beatleader' } })\n .addAlias('/subbs', { options: { type: 'beatsaver' } })\n .addAlias('blsub', { options: { type: 'beatleader' } })\n .addAlias('bssub', { options: { type: 'beatsaver' } })\n .addAlias('subbl', { options: { type: 'beatleader' } })\n .addAlias('subbs', { options: { type: 'beatsaver' } })\n .addAlias('subbl', { options: { type: 'beatleader' } })\n .addAlias('submapper', { options: { type: 'bsmapper' } })\n .addOption('type', 'type:string')\n .setDescription('clear an auth account relate info')\n .setExecutor(async (c) => {\n // check admin permission\n // if (options.type === 'beatsaver-alert') {\n // return alert(c)\n // }\n\n if (c.options.type === 'beatsaver') {\n if (c.input) return idBeatsaverMapper(c)\n return beatsaver(c)\n }\n\n if (c.options.type === 'beatleader') {\n return beatleader(c)\n }\n\n // return subscription info\n const rows = await c.services.db.getSubscriptionInfoByUGID(\n c.session.channel.id,\n c.session.user.id\n )\n\n if (rows.length < 1) {\n throw new NoneSubscriptionExistError()\n }\n let text = c.session.text('commands.bsbot.subscribe.info.header') + '\\n'\n for (const row of rows) {\n if (row.subscription.type.startsWith('group')) {\n text += c.session.text(\n 'commands.bsbot.subscribe.info.group-body-item',\n {\n type:\n row.subscription.type +\n `(${row.subscription.data?.mapperName} ${row.subscription.data?.mapperId})`,\n }\n )\n } else {\n text += c.session.text('commands.bsbot.subscribe.info.body-item', {\n type: row.subscription.type,\n cnt: row.memberCount,\n enable: row.subscription.enabled,\n })\n if (row.me) {\n text += c.session.text(\n 'commands.bsbot.subscribe.info.body-item-include-you'\n )\n }\n }\n\n text += '\\n\\n'\n }\n await c.session.sendQuote(text)\n })\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,sBAAqB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B,SAAS,kCAAkC;AAC3C,SAAS,yBAAyB;AAElC,IAAO,oBAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,WAAW,EACnB,SAAS,OAAO,EAChB,SAAS,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACtD,SAAS,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACrD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACrD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACpD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACrD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACpD,SAAS,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACrD,SAAS,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,EAAE,CAAC,EACvD,UAAU,QAAQ,aAAa,EAC/B,eAAe,mCAAmC,EAClD,YAAY,CAAO,MAAM;AApB9B;AA0BM,MAAI,EAAE,QAAQ,SAAS,aAAa;AAClC,QAAI,EAAE,MAAO,QAAO,kBAAkB,CAAC;AACvC,WAAO,UAAU,CAAC;AAAA,EACpB;AAEA,MAAI,EAAE,QAAQ,SAAS,cAAc;AACnC,WAAO,WAAW,CAAC;AAAA,EACrB;AAGA,QAAM,OAAO,MAAM,EAAE,SAAS,GAAG;AAAA,IAC/B,EAAE,QAAQ,QAAQ;AAAA,IAClB,EAAE,QAAQ,KAAK;AAAA,EACjB;AAEA,MAAI,KAAK,SAAS,GAAG;AACnB,UAAM,IAAI,2BAA2B;AAAA,EACvC;AACA,MAAI,OAAO,EAAE,QAAQ,KAAK,sCAAsC,IAAI;AACpE,aAAW,OAAO,MAAM;AACtB,QAAI,IAAI,aAAa,KAAK,WAAW,OAAO,GAAG;AAC7C,cAAQ,EAAE,QAAQ;AAAA,QAChB;AAAA,QACA;AAAA,UACE,MACE,IAAI,aAAa,OACjB,KAAI,SAAI,aAAa,SAAjB,mBAAuB,UAAU,KAAI,SAAI,aAAa,SAAjB,mBAAuB,QAAQ;AAAA,QAC5E;AAAA,MACF;AAAA,IACF,OAAO;AACL,cAAQ,EAAE,QAAQ,KAAK,2CAA2C;AAAA,QAChE,MAAM,IAAI,aAAa;AAAA,QACvB,KAAK,IAAI;AAAA,QACT,QAAQ,IAAI,aAAa;AAAA,MAC3B,CAAC;AACD,UAAI,IAAI,IAAI;AACV,gBAAQ,EAAE,QAAQ;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,YAAQ;AAAA,EACV;AACA,QAAM,EAAE,QAAQ,UAAU,IAAI;AAChC,EAAC;","names":[]}
@@ -25,7 +25,7 @@ var subleave_default = () => new CommandBuilder().setName("subleave").addAlias("
25
25
  c.session.user.id
26
26
  );
27
27
  if (c.options.type === "beatleader") {
28
- const blSub = subs.find((it) => it.subscribe.type == "beatleader-score");
28
+ const blSub = subs.find((it) => it.subscription.type == "beatleader-score");
29
29
  if (!(blSub == null ? void 0 : blSub.me)) {
30
30
  return c.session.sendQuote(
31
31
  c.session.text(
@@ -34,14 +34,14 @@ var subleave_default = () => new CommandBuilder().setName("subleave").addAlias("
34
34
  );
35
35
  }
36
36
  yield c.services.db.removeFromSubGroupBySubAndUid(
37
- blSub.subscribe.id,
37
+ blSub.subscription.id,
38
38
  c.session.user.id
39
39
  );
40
40
  yield c.session.sendQuote(
41
41
  c.session.text("commands.bsbot.subscribe.leave.success.beatleader")
42
42
  );
43
43
  } else if (c.options.type === "beatsaver") {
44
- const bsSub = subs.find((it) => it.subscribe.type == "beatsaver-map");
44
+ const bsSub = subs.find((it) => it.subscription.type == "beatsaver-map");
45
45
  if (!(bsSub == null ? void 0 : bsSub.me)) {
46
46
  yield c.session.sendQuote(
47
47
  c.session.text("commands.bsbot.subscribe.leave.not-exist.beatsaver")
@@ -49,7 +49,7 @@ var subleave_default = () => new CommandBuilder().setName("subleave").addAlias("
49
49
  return;
50
50
  }
51
51
  yield c.services.db.removeFromSubGroupBySubAndUid(
52
- bsSub.subscribe.id,
52
+ bsSub.subscription.id,
53
53
  c.session.user.id
54
54
  );
55
55
  yield c.session.sendQuote(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cmd/subscribe/subleave.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface\";\n\nexport default () =>\n new CommandBuilder()\n .setName('subleave')\n .addAlias('bbleave')\n .addAlias('/leavebl', { options: { type: 'beatleader' } })\n .addAlias('/leavebs', { options: { type: 'beatsaver' } })\n .addAlias('leavebl', { options: { type: 'beatleader' } })\n .addAlias('leavebs', { options: { type: 'beatsaver' } })\n .addOption('type', 'type:string')\n .setDescription('')\n .setExecutor(async (c) => {\n // getUserJoinedGroupMember\n const subs = await c.services.db.getSubscriptionInfoByUGID(\n c.session.channel.id,\n c.session.user.id\n )\n if (c.options.type === 'beatleader') {\n const blSub = subs.find((it) => it.subscribe.type == 'beatleader-score')\n if (!blSub?.me) {\n return c.session.sendQuote(\n c.session.text(\n 'commands.bsbot.subscribe.leave.not-exist.beatleader'\n )\n )\n }\n await c.services.db.removeFromSubGroupBySubAndUid(\n blSub.subscribe.id,\n c.session.user.id\n )\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.leave.success.beatleader')\n )\n } else if (c.options.type === 'beatsaver') {\n const bsSub = subs.find((it) => it.subscribe.type == 'beatsaver-map')\n if (!bsSub?.me) {\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.leave.not-exist.beatsaver')\n )\n return\n }\n\n await c.services.db.removeFromSubGroupBySubAndUid(\n bsSub.subscribe.id,\n c.session.user.id\n )\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.leave.success.beatsaver')\n )\n }\n })\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,sBAAqB;AAE7B,IAAO,mBAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,UAAU,EAClB,SAAS,SAAS,EAClB,SAAS,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACxD,SAAS,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACvD,SAAS,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACvD,SAAS,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACtD,UAAU,QAAQ,aAAa,EAC/B,eAAe,EAAE,EACjB,YAAY,CAAO,MAAM;AAExB,QAAM,OAAO,MAAM,EAAE,SAAS,GAAG;AAAA,IAC/B,EAAE,QAAQ,QAAQ;AAAA,IAClB,EAAE,QAAQ,KAAK;AAAA,EACjB;AACA,MAAI,EAAE,QAAQ,SAAS,cAAc;AACnC,UAAM,QAAQ,KAAK,KAAK,CAAC,OAAO,GAAG,UAAU,QAAQ,kBAAkB;AACvE,QAAI,EAAC,+BAAO,KAAI;AACd,aAAO,EAAE,QAAQ;AAAA,QACf,EAAE,QAAQ;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,UAAM,EAAE,SAAS,GAAG;AAAA,MAClB,MAAM,UAAU;AAAA,MAChB,EAAE,QAAQ,KAAK;AAAA,IACjB;AACA,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,mDAAmD;AAAA,IACpE;AAAA,EACF,WAAW,EAAE,QAAQ,SAAS,aAAa;AACzC,UAAM,QAAQ,KAAK,KAAK,CAAC,OAAO,GAAG,UAAU,QAAQ,eAAe;AACpE,QAAI,EAAC,+BAAO,KAAI;AACd,YAAM,EAAE,QAAQ;AAAA,QACd,EAAE,QAAQ,KAAK,oDAAoD;AAAA,MACrE;AACA;AAAA,IACF;AAEA,UAAM,EAAE,SAAS,GAAG;AAAA,MAClB,MAAM,UAAU;AAAA,MAChB,EAAE,QAAQ,KAAK;AAAA,IACjB;AACA,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,kDAAkD;AAAA,IACnE;AAAA,EACF;AACF,EAAC;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cmd/subscribe/subleave.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface\";\n\nexport default () =>\n new CommandBuilder()\n .setName('subleave')\n .addAlias('bbleave')\n .addAlias('/leavebl', { options: { type: 'beatleader' } })\n .addAlias('/leavebs', { options: { type: 'beatsaver' } })\n .addAlias('leavebl', { options: { type: 'beatleader' } })\n .addAlias('leavebs', { options: { type: 'beatsaver' } })\n .addOption('type', 'type:string')\n .setDescription('')\n .setExecutor(async (c) => {\n // getUserJoinedGroupMember\n const subs = await c.services.db.getSubscriptionInfoByUGID(\n c.session.channel.id,\n c.session.user.id\n )\n if (c.options.type === 'beatleader') {\n const blSub = subs.find((it) => it.subscription.type == 'beatleader-score')\n if (!blSub?.me) {\n return c.session.sendQuote(\n c.session.text(\n 'commands.bsbot.subscribe.leave.not-exist.beatleader'\n )\n )\n }\n await c.services.db.removeFromSubGroupBySubAndUid(\n blSub.subscription.id,\n c.session.user.id\n )\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.leave.success.beatleader')\n )\n } else if (c.options.type === 'beatsaver') {\n const bsSub = subs.find((it) => it.subscription.type == 'beatsaver-map')\n if (!bsSub?.me) {\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.leave.not-exist.beatsaver')\n )\n return\n }\n\n await c.services.db.removeFromSubGroupBySubAndUid(\n bsSub.subscription.id,\n c.session.user.id\n )\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.leave.success.beatsaver')\n )\n }\n })\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,sBAAqB;AAE7B,IAAO,mBAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,UAAU,EAClB,SAAS,SAAS,EAClB,SAAS,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACxD,SAAS,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACvD,SAAS,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC,EACvD,SAAS,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,EAAE,CAAC,EACtD,UAAU,QAAQ,aAAa,EAC/B,eAAe,EAAE,EACjB,YAAY,CAAO,MAAM;AAExB,QAAM,OAAO,MAAM,EAAE,SAAS,GAAG;AAAA,IAC/B,EAAE,QAAQ,QAAQ;AAAA,IAClB,EAAE,QAAQ,KAAK;AAAA,EACjB;AACA,MAAI,EAAE,QAAQ,SAAS,cAAc;AACnC,UAAM,QAAQ,KAAK,KAAK,CAAC,OAAO,GAAG,aAAa,QAAQ,kBAAkB;AAC1E,QAAI,EAAC,+BAAO,KAAI;AACd,aAAO,EAAE,QAAQ;AAAA,QACf,EAAE,QAAQ;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,UAAM,EAAE,SAAS,GAAG;AAAA,MAClB,MAAM,aAAa;AAAA,MACnB,EAAE,QAAQ,KAAK;AAAA,IACjB;AACA,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,mDAAmD;AAAA,IACpE;AAAA,EACF,WAAW,EAAE,QAAQ,SAAS,aAAa;AACzC,UAAM,QAAQ,KAAK,KAAK,CAAC,OAAO,GAAG,aAAa,QAAQ,eAAe;AACvE,QAAI,EAAC,+BAAO,KAAI;AACd,YAAM,EAAE,QAAQ;AAAA,QACd,EAAE,QAAQ,KAAK,oDAAoD;AAAA,MACrE;AACA;AAAA,IACF;AAEA,UAAM,EAAE,SAAS,GAAG;AAAA,MAClB,MAAM,aAAa;AAAA,MACnB,EAAE,QAAQ,KAAK;AAAA,IACjB;AACA,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,kDAAkD;AAAA,IACnE;AAAA,EACF;AACF,EAAC;","names":[]}
@@ -1,10 +1,11 @@
1
1
  import { interpolate } from "./parser.js";
2
2
  import { interpolateString } from "./util.js";
3
- const defaultLang = "en-US";
3
+ const defaultLang = "zh-CN";
4
4
  const createTranslator = (translateObject) => {
5
5
  return (path, params = {}, lang = defaultLang) => _translate(translateObject, path, params, lang);
6
6
  };
7
7
  const _translate = (translateObject, path, params = {}, lang = defaultLang) => {
8
+ console.log("translate", path, params, lang);
8
9
  const keys = path.split(".");
9
10
  let result = translateObject[lang];
10
11
  if (!result) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/common/i18n/index.ts"],"sourcesContent":["import {interpolate} from \"./parser\";\nimport {interpolateString} from \"./util\";\n\nconst defaultLang = \"en-US\";\n\nexport const createTranslator = (translateObject: object) => {\n return (path: string, params = {}, lang = defaultLang) => _translate(translateObject, path, params, lang)\n}\nconst _translate = (\n translateObject: object,\n path: string,\n params = {},\n lang = defaultLang\n) => {\n const keys = path.split('.')\n let result = translateObject[lang]\n if(!result) {\n return null\n }\n for (const key of keys) {\n if (result[key] !== undefined) {\n result = result[key]\n } else {\n return null\n }\n }\n try {\n if (typeof result === 'string') {\n return interpolate(result, params)\n }\n } catch (e) {\n return interpolateString(result, params)\n }\n return null\n}\n"],"mappings":"AAAA,SAAQ,mBAAkB;AAC1B,SAAQ,yBAAwB;AAEhC,MAAM,cAAc;AAEb,MAAM,mBAAmB,CAAC,oBAA4B;AAC3D,SAAO,CAAC,MAAc,SAAS,CAAC,GAAG,OAAO,gBAAgB,WAAW,iBAAiB,MAAM,QAAQ,IAAI;AAC1G;AACA,MAAM,aAAa,CACjB,iBACA,MACA,SAAS,CAAC,GACV,OAAO,gBACJ;AACH,QAAM,OAAO,KAAK,MAAM,GAAG;AAC3B,MAAI,SAAS,gBAAgB,IAAI;AACjC,MAAG,CAAC,QAAQ;AACV,WAAO;AAAA,EACT;AACA,aAAW,OAAO,MAAM;AACtB,QAAI,OAAO,GAAG,MAAM,QAAW;AAC7B,eAAS,OAAO,GAAG;AAAA,IACrB,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI;AACF,QAAI,OAAO,WAAW,UAAU;AAC9B,aAAO,YAAY,QAAQ,MAAM;AAAA,IACnC;AAAA,EACF,SAAS,GAAG;AACV,WAAO,kBAAkB,QAAQ,MAAM;AAAA,EACzC;AACA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../../src/common/i18n/index.ts"],"sourcesContent":["import {interpolate} from \"./parser\";\nimport {interpolateString} from \"./util\";\n\nconst defaultLang = \"zh-CN\";\n\nexport const createTranslator = (translateObject: object) => {\n return (path: string, params = {}, lang = defaultLang) => _translate(translateObject, path, params, lang)\n}\nconst _translate = (\n translateObject: object,\n path: string,\n params = {},\n lang = defaultLang\n) => {\n\n console.log(\"translate\", path, params, lang)\n const keys = path.split('.')\n let result = translateObject[lang]\n if(!result) {\n return null\n }\n for (const key of keys) {\n if (result[key] !== undefined) {\n result = result[key]\n } else {\n return null\n }\n }\n try {\n if (typeof result === 'string') {\n return interpolate(result, params)\n }\n } catch (e) {\n return interpolateString(result, params)\n }\n return null\n}\n"],"mappings":"AAAA,SAAQ,mBAAkB;AAC1B,SAAQ,yBAAwB;AAEhC,MAAM,cAAc;AAEb,MAAM,mBAAmB,CAAC,oBAA4B;AAC3D,SAAO,CAAC,MAAc,SAAS,CAAC,GAAG,OAAO,gBAAgB,WAAW,iBAAiB,MAAM,QAAQ,IAAI;AAC1G;AACA,MAAM,aAAa,CACjB,iBACA,MACA,SAAS,CAAC,GACV,OAAO,gBACJ;AAEH,UAAQ,IAAI,aAAa,MAAM,QAAQ,IAAI;AAC3C,QAAM,OAAO,KAAK,MAAM,GAAG;AAC3B,MAAI,SAAS,gBAAgB,IAAI;AACjC,MAAG,CAAC,QAAQ;AACV,WAAO;AAAA,EACT;AACA,aAAW,OAAO,MAAM;AACtB,QAAI,OAAO,GAAG,MAAM,QAAW;AAC7B,eAAS,OAAO,GAAG;AAAA,IACrB,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI;AACF,QAAI,OAAO,WAAW,UAAU;AAC9B,aAAO,YAAY,QAAQ,MAAM;AAAA,IACnC;AAAA,EACF,SAAS,GAAG;AACV,WAAO,kBAAkB,QAAQ,MAAM;AAAA,EACzC;AACA,SAAO;AACT;","names":[]}
@@ -32,7 +32,7 @@ const LBScoreMonitor = (c) => __async(null, null, function* () {
32
32
  })
33
33
  ]);
34
34
  for (const group of channels) {
35
- const session = c.agentService.getAgentSessionByChannelInfo(group.channel);
35
+ const session = yield c.agentService.getAgentSessionByChannelInfo(group.channel);
36
36
  if (!session) {
37
37
  continue;
38
38
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/events/schedules/temp.ts"],"sourcesContent":["import { EventHandlerCtx } from \"@/core\";\nimport { Config } from \"@/config\";\nimport {Services} from \"@/interface\";\n\nexport const LBScoreMonitor = async (c: EventHandlerCtx<Services, Config>) => {\n const channels = await c.services.db.getSubscriptionsByType('lb-rank')\n if (channels.length <= 0) {\n return\n }\n const [hitbuf, scorebuf] = await Promise.all([\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/hitcnt', {\n selector: '#render-result',\n }),\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/score', {\n selector: '#render-result',\n }),\n ])\n for (const group of channels) {\n // 获取一个带有 Agent 的 Service\n const session = c.agentService.getAgentSessionByChannelInfo(group.channel)\n if (!session) {\n continue\n }\n await session.sendImgBuffer(hitbuf, 'image/png')\n await session.sendImgBuffer(scorebuf, 'image/png')\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAIO,MAAM,iBAAiB,CAAO,MAAyC;AAC5E,QAAM,WAAW,MAAM,EAAE,SAAS,GAAG,uBAAuB,SAAS;AACrE,MAAI,SAAS,UAAU,GAAG;AACxB;AAAA,EACF;AACA,QAAM,CAAC,QAAQ,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC3C,EAAE,SAAS,OAAO,UAAU,wCAAwC;AAAA,MAClE,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,EAAE,SAAS,OAAO,UAAU,uCAAuC;AAAA,MACjE,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACD,aAAW,SAAS,UAAU;AAE5B,UAAM,UAAU,EAAE,aAAa,6BAA6B,MAAM,OAAO;AACzE,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,UAAM,QAAQ,cAAc,QAAQ,WAAW;AAC/C,UAAM,QAAQ,cAAc,UAAU,WAAW;AAAA,EACnD;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/events/schedules/temp.ts"],"sourcesContent":["import { EventHandlerCtx } from \"@/core\";\nimport { Config } from \"@/config\";\nimport {Services} from \"@/interface\";\n\nexport const LBScoreMonitor = async (c: EventHandlerCtx<Services, Config>) => {\n const channels = await c.services.db.getSubscriptionsByType('lb-rank')\n if (channels.length <= 0) {\n return\n }\n const [hitbuf, scorebuf] = await Promise.all([\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/hitcnt', {\n selector: '#render-result',\n }),\n c.services.render.renderUrl('https://aiobs.ktlab.io/tmp/lb/score', {\n selector: '#render-result',\n }),\n ])\n for (const group of channels) {\n // 获取一个带有 Agent 的 Service\n const session = await c.agentService.getAgentSessionByChannelInfo(group.channel)\n if (!session) {\n continue\n }\n await session.sendImgBuffer(hitbuf, 'image/png')\n await session.sendImgBuffer(scorebuf, 'image/png')\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAIO,MAAM,iBAAiB,CAAO,MAAyC;AAC5E,QAAM,WAAW,MAAM,EAAE,SAAS,GAAG,uBAAuB,SAAS;AACrE,MAAI,SAAS,UAAU,GAAG;AACxB;AAAA,EACF;AACA,QAAM,CAAC,QAAQ,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC3C,EAAE,SAAS,OAAO,UAAU,wCAAwC;AAAA,MAClE,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,EAAE,SAAS,OAAO,UAAU,uCAAuC;AAAA,MACjE,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,CAAC;AACD,aAAW,SAAS,UAAU;AAE5B,UAAM,UAAU,MAAM,EAAE,aAAa,6BAA6B,MAAM,OAAO;AAC/E,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AACA,UAAM,QAAQ,cAAc,QAAQ,WAAW;AAC/C,UAAM,QAAQ,cAAc,UAAU,WAAW;AAAA,EACnD;AACF;","names":[]}
@@ -52,7 +52,7 @@ class BeatleaderWSHandler {
52
52
  if (restSub.length === 0) return;
53
53
  const img = yield this.render.renderScore(data.id.toString());
54
54
  for (const item of restSub) {
55
- const session = this.agentService.getAgentSessionByChannelInfo(item.channel);
55
+ const session = yield this.agentService.getAgentSessionByChannelInfo(item.channel);
56
56
  if (!session) {
57
57
  continue;
58
58
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/events/ws/beatleader.ts"],"sourcesContent":["import { WSHandler } from './handler'\nimport { AgentService, Logger } from '@/core'\nimport { Config } from '@/config'\nimport { DB } from '@/interface/db'\nimport {RenderService} from \"@/services\";\nimport { BeatLeaderWSEvent } from \"@/services/api/interfaces/beatleader\";\n\nexport class BeatleaderWSHandler<T> implements WSHandler {\n private readonly logger: Logger\n private render: RenderService\n private agentService: AgentService\n wsUrl: string = 'wss://sockets.api.beatleader.xyz/scores'\n private db: DB\n config: Config\n constructor(\n db: DB,\n render: RenderService,\n logger: Logger,\n config: Config,\n agentService: AgentService\n ) {\n this.logger = logger\n this.render = render\n this.agentService = agentService\n this.config = config\n this.db = db\n }\n\n onOpen() {\n this.logger.info('BeatleaderWS opened')\n }\n\n onClose() {\n this.logger.info('BeatleaderWS closed')\n }\n\n async onEvent(event: any) {\n const data = JSON.parse(event.toString()) as BeatLeaderWSEvent\n const playerId = data.player.id\n // const ok = BeatLeaderFilter(data, ...this.config.BLScoreFilters)\n // if (!ok) {\n // return\n // }\n // logger.info('Received beatleader message',data.id, data.player.id);\n // cache all playerId\n const subscriptions = await this.db.getAllSubscriptionByUIDAndPlatform(playerId, 'beatleader')\n // .filter(item=> {\n // const channelFilters = item.sub.data as BLScoreFilter[]\n // const memberFilters = item.member.subscribeData\n // return BeatLeaderFilter(data, ...channelFilters, ...memberFilters)\n // })\n const restSub = subscriptions.filter((it) =>\n it.subscription.type == 'beatleader-score' && it.subscription.enabled == true\n )\n // cacheService\n if (restSub.length === 0) return\n const img = await this.render.renderScore(data.id.toString())\n for (const item of restSub) {\n const session = this.agentService.getAgentSessionByChannelInfo(item.channel)\n if (!session) {\n continue\n }\n await session.send(\n `恭喜 <at id=\"${item.account.userId}\"/> 刚刚在谱面「${data.leaderboard.song.name}」中打出了 ${(data.accuracy * 100).toFixed(2)}% 的好成绩`\n )\n await session.sendImgBuffer(img)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,oBAA4C;AAAA,EAOvD,YACE,IACA,QACA,QACA,QACA,cACA;AAZF,wBAAiB;AACjB,wBAAQ;AACR,wBAAQ;AACR,iCAAgB;AAChB,wBAAQ;AACR;AAQE,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,SAAS;AACd,SAAK,KAAK;AAAA,EACZ;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,KAAK,qBAAqB;AAAA,EACxC;AAAA,EAEA,UAAU;AACR,SAAK,OAAO,KAAK,qBAAqB;AAAA,EACxC;AAAA,EAEM,QAAQ,OAAY;AAAA;AACxB,YAAM,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AACxC,YAAM,WAAW,KAAK,OAAO;AAO7B,YAAM,gBAAgB,MAAM,KAAK,GAAG,mCAAmC,UAAU,YAAY;AAM7F,YAAM,UAAU,cAAc;AAAA,QAAO,CAAC,OACpC,GAAG,aAAa,QAAQ,sBAAsB,GAAG,aAAa,WAAW;AAAA,MAC3E;AAEA,UAAI,QAAQ,WAAW,EAAG;AAC1B,YAAM,MAAM,MAAM,KAAK,OAAO,YAAY,KAAK,GAAG,SAAS,CAAC;AAC5D,iBAAW,QAAQ,SAAS;AAC1B,cAAM,UAAU,KAAK,aAAa,6BAA6B,KAAK,OAAO;AAC3E,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,UACZ,wBAAc,KAAK,QAAQ,MAAM,2CAAa,KAAK,YAAY,KAAK,IAAI,mCAAU,KAAK,WAAW,KAAK,QAAQ,CAAC,CAAC;AAAA,QACnH;AACA,cAAM,QAAQ,cAAc,GAAG;AAAA,MACjC;AAAA,IACF;AAAA;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/events/ws/beatleader.ts"],"sourcesContent":["import { WSHandler } from './handler'\nimport { AgentService, Logger } from '@/core'\nimport { Config } from '@/config'\nimport { DB } from '@/interface/db'\nimport {RenderService} from \"@/services\";\nimport { BeatLeaderWSEvent } from \"@/services/api/interfaces/beatleader\";\n\nexport class BeatleaderWSHandler<T> implements WSHandler {\n private readonly logger: Logger\n private render: RenderService\n private agentService: AgentService\n wsUrl: string = 'wss://sockets.api.beatleader.xyz/scores'\n private db: DB\n config: Config\n constructor(\n db: DB,\n render: RenderService,\n logger: Logger,\n config: Config,\n agentService: AgentService\n ) {\n this.logger = logger\n this.render = render\n this.agentService = agentService\n this.config = config\n this.db = db\n }\n\n onOpen() {\n this.logger.info('BeatleaderWS opened')\n }\n\n onClose() {\n this.logger.info('BeatleaderWS closed')\n }\n\n async onEvent(event: any) {\n const data = JSON.parse(event.toString()) as BeatLeaderWSEvent\n const playerId = data.player.id\n // const ok = BeatLeaderFilter(data, ...this.config.BLScoreFilters)\n // if (!ok) {\n // return\n // }\n // logger.info('Received beatleader message',data.id, data.player.id);\n // cache all playerId\n const subscriptions = await this.db.getAllSubscriptionByUIDAndPlatform(playerId, 'beatleader')\n // .filter(item=> {\n // const channelFilters = item.sub.data as BLScoreFilter[]\n // const memberFilters = item.member.subscribeData\n // return BeatLeaderFilter(data, ...channelFilters, ...memberFilters)\n // })\n const restSub = subscriptions.filter((it) =>\n it.subscription.type == 'beatleader-score' && it.subscription.enabled == true\n )\n // cacheService\n if (restSub.length === 0) return\n const img = await this.render.renderScore(data.id.toString())\n for (const item of restSub) {\n const session = await this.agentService.getAgentSessionByChannelInfo(item.channel)\n if (!session) {\n continue\n }\n await session.send(\n `恭喜 <at id=\"${item.account.userId}\"/> 刚刚在谱面「${data.leaderboard.song.name}」中打出了 ${(data.accuracy * 100).toFixed(2)}% 的好成绩`\n )\n await session.sendImgBuffer(img)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,oBAA4C;AAAA,EAOvD,YACE,IACA,QACA,QACA,QACA,cACA;AAZF,wBAAiB;AACjB,wBAAQ;AACR,wBAAQ;AACR,iCAAgB;AAChB,wBAAQ;AACR;AAQE,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,SAAS;AACd,SAAK,KAAK;AAAA,EACZ;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,KAAK,qBAAqB;AAAA,EACxC;AAAA,EAEA,UAAU;AACR,SAAK,OAAO,KAAK,qBAAqB;AAAA,EACxC;AAAA,EAEM,QAAQ,OAAY;AAAA;AACxB,YAAM,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AACxC,YAAM,WAAW,KAAK,OAAO;AAO7B,YAAM,gBAAgB,MAAM,KAAK,GAAG,mCAAmC,UAAU,YAAY;AAM7F,YAAM,UAAU,cAAc;AAAA,QAAO,CAAC,OACpC,GAAG,aAAa,QAAQ,sBAAsB,GAAG,aAAa,WAAW;AAAA,MAC3E;AAEA,UAAI,QAAQ,WAAW,EAAG;AAC1B,YAAM,MAAM,MAAM,KAAK,OAAO,YAAY,KAAK,GAAG,SAAS,CAAC;AAC5D,iBAAW,QAAQ,SAAS;AAC1B,cAAM,UAAU,MAAM,KAAK,aAAa,6BAA6B,KAAK,OAAO;AACjF,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,UACZ,wBAAc,KAAK,QAAQ,MAAM,2CAAa,KAAK,YAAY,KAAK,IAAI,mCAAU,KAAK,WAAW,KAAK,QAAQ,CAAC,CAAC;AAAA,QACnH;AACA,cAAM,QAAQ,cAAc,GAAG;AAAA,MACjC;AAAA,IACF;AAAA;AACF;","names":[]}
@@ -79,7 +79,7 @@ class BeatSaverWSHandler {
79
79
  if (restSub.length === 0 && restGroupSubs) return;
80
80
  const image = this.render.renderMap(bsmap);
81
81
  for (const item of restSub) {
82
- const session = this.agentService.getAgentSessionByChannelInfo(item.channel);
82
+ const session = yield this.agentService.getAgentSessionByChannelInfo(item.channel);
83
83
  if (!session) {
84
84
  continue;
85
85
  }
@@ -90,7 +90,7 @@ class BeatSaverWSHandler {
90
90
  yield session.sendAudioByUrl(bsmap.versions[0].previewURL);
91
91
  }
92
92
  for (const item of restGroupSubs) {
93
- const session = this.agentService.getAgentSessionByChannelInfo(item.channel);
93
+ const session = yield this.agentService.getAgentSessionByChannelInfo(item.channel);
94
94
  if (!session) {
95
95
  continue;
96
96
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/events/ws/beatsaver.ts"],"sourcesContent":["import { WSHandler } from './handler'\nimport {AgentService, EventHandlerCtx, Logger} from '@/core'\nimport { Config } from '@/config'\nimport { DB } from '@/interface/db'\nimport { handleWSEventWithCache } from '@/utils'\nimport {BeatSaverWSEvent, BSMap} from \"@/services/api/interfaces/beatsaver\";\nimport {RenderService} from \"@/services\";\nimport {Services} from \"@/interface\";\nexport class BeatSaverWSHandler<T> implements WSHandler {\n private readonly logger: Logger\n private render: RenderService\n private agentService: AgentService\n wsUrl: string = 'wss://ws.beatsaver.com/maps'\n private db: DB\n config: Config\n constructor(\n db: DB,\n render: RenderService,\n logger: Logger,\n config: Config,\n agentService: AgentService\n ) {\n this.logger = logger\n this.render = render\n this.agentService = agentService\n this.config = config\n this.db = db\n }\n\n onOpen() {\n this.logger.info('BeatsaverWS opened')\n }\n\n onClose() {\n this.logger.info('BeatsaverWS closed')\n }\n\n eventParser(event) {\n return JSON.parse(event.toString()) as BeatSaverWSEvent\n }\n\n eventFilter = (data: BeatSaverWSEvent) => {\n return (\n data.type === 'MAP_UPDATE' &&\n data.msg.versions.some((it) => it.state == 'Published') &&\n data.msg.declaredAi === 'None'\n )\n }\n eventIdSelector = (data: BeatSaverWSEvent) =>\n `ws.bs.${data.type === 'MAP_DELETE' ? data.msg : data.msg.id}.${data.type}`\n\n async BSWSHandler(data: BeatSaverWSEvent) {\n // this.logger.info('Beatsaver message received', data.type, data?.msg?.id)\n\n const bsmap = data.msg as BSMap\n const userId = bsmap.uploader.id\n const subscriptions = await this.db.getAllSubscriptionByUIDAndPlatform(\n String(userId),\n 'beatsaver'\n )\n\n const restSub = subscriptions.filter(\n (it) =>\n it.subscription.type == 'beatsaver-map' && it.subscription.enabled == true\n )\n const gids = restSub.map((it) => it.channel.id)\n const groupSubs = await this.db.getIDSubscriptionByType('id-beatsaver-map')\n const restGroupSubs = groupSubs.filter(\n (it) =>\n !gids.includes(it.channel.id) &&\n it.subscription.data?.mapperId?.toString() === userId.toString()\n )\n\n // cacheService\n if (restSub.length === 0 && restGroupSubs) return\n const image = this.render.renderMap(bsmap)\n for (const item of restSub) {\n const session = this.agentService.getAgentSessionByChannelInfo(item.channel)\n if (!session) {\n continue\n }\n await session.send(\n `本群谱师 「<at id=\"${item.account.userId}\"/> (${bsmap.uploader.name})」刚刚发布了新谱面,「${bsmap.name}」`\n )\n // text + mention element\n await session.sendImgBuffer(await image)\n await session.sendAudioByUrl(bsmap.versions[0].previewURL)\n }\n for (const item of restGroupSubs) {\n const session = this.agentService.getAgentSessionByChannelInfo(item.channel)\n if (!session) {\n continue\n }\n await session.send(\n `谱师「${bsmap.uploader.name}」刚刚发布了新谱面,「${bsmap.name}」`\n )\n // text + mention element\n await session.sendImgBuffer(await image)\n await session.sendAudioByUrl(bsmap.versions[0].previewURL)\n }\n }\n\n onEvent = handleWSEventWithCache(\n this,\n this.BSWSHandler,\n 1000 * 60 * 15,\n this.eventParser,\n this.eventFilter,\n this.eventIdSelector\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA,SAAS,8BAA8B;AAIhC,MAAM,mBAA2C;AAAA,EAOtD,YACE,IACA,QACA,QACA,QACA,cACA;AAZF,wBAAiB;AACjB,wBAAQ;AACR,wBAAQ;AACR,iCAAgB;AAChB,wBAAQ;AACR;AA2BA,uCAAc,CAAC,SAA2B;AACxC,aACE,KAAK,SAAS,gBACd,KAAK,IAAI,SAAS,KAAK,CAAC,OAAO,GAAG,SAAS,WAAW,KACtD,KAAK,IAAI,eAAe;AAAA,IAE5B;AACA,2CAAkB,CAAC,SACjB,SAAS,KAAK,SAAS,eAAe,KAAK,MAAM,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI;AAqD3E,mCAAU;AAAA,MACR;AAAA,MACA,KAAK;AAAA,MACL,MAAO,KAAK;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAvFE,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,SAAS;AACd,SAAK,KAAK;AAAA,EACZ;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,KAAK,oBAAoB;AAAA,EACvC;AAAA,EAEA,UAAU;AACR,SAAK,OAAO,KAAK,oBAAoB;AAAA,EACvC;AAAA,EAEA,YAAY,OAAO;AACjB,WAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACpC;AAAA,EAYM,YAAY,MAAwB;AAAA;AAGxC,YAAM,QAAQ,KAAK;AACnB,YAAM,SAAS,MAAM,SAAS;AAC9B,YAAM,gBAAgB,MAAM,KAAK,GAAG;AAAA,QAClC,OAAO,MAAM;AAAA,QACb;AAAA,MACF;AAEA,YAAM,UAAU,cAAc;AAAA,QAC5B,CAAC,OACC,GAAG,aAAa,QAAQ,mBAAmB,GAAG,aAAa,WAAW;AAAA,MAC1E;AACA,YAAM,OAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE;AAC9C,YAAM,YAAY,MAAM,KAAK,GAAG,wBAAwB,kBAAkB;AAC1E,YAAM,gBAAgB,UAAU;AAAA,QAC9B,CAAC,OAAI;AApEX;AAqEQ,kBAAC,KAAK,SAAS,GAAG,QAAQ,EAAE,OAC5B,cAAG,aAAa,SAAhB,mBAAsB,aAAtB,mBAAgC,gBAAe,OAAO,SAAS;AAAA;AAAA,MACnE;AAGA,UAAI,QAAQ,WAAW,KAAK,cAAe;AAC3C,YAAM,QAAQ,KAAK,OAAO,UAAU,KAAK;AACzC,iBAAW,QAAQ,SAAS;AAC1B,cAAM,UAAU,KAAK,aAAa,6BAA6B,KAAK,OAAO;AAC3E,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,UACZ,0CAAiB,KAAK,QAAQ,MAAM,QAAQ,MAAM,SAAS,IAAI,sEAAe,MAAM,IAAI;AAAA,QAC1F;AAEA,cAAM,QAAQ,cAAc,MAAM,KAAK;AACvC,cAAM,QAAQ,eAAe,MAAM,SAAS,CAAC,EAAE,UAAU;AAAA,MAC3D;AACA,iBAAW,QAAQ,eAAe;AAChC,cAAM,UAAU,KAAK,aAAa,6BAA6B,KAAK,OAAO;AAC3E,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,UACZ,qBAAM,MAAM,SAAS,IAAI,qEAAc,MAAM,IAAI;AAAA,QACnD;AAEA,cAAM,QAAQ,cAAc,MAAM,KAAK;AACvC,cAAM,QAAQ,eAAe,MAAM,SAAS,CAAC,EAAE,UAAU;AAAA,MAC3D;AAAA,IACF;AAAA;AAUF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/events/ws/beatsaver.ts"],"sourcesContent":["import { WSHandler } from './handler'\nimport {AgentService, EventHandlerCtx, Logger} from '@/core'\nimport { Config } from '@/config'\nimport { DB } from '@/interface/db'\nimport { handleWSEventWithCache } from '@/utils'\nimport {BeatSaverWSEvent, BSMap} from \"@/services/api/interfaces/beatsaver\";\nimport {RenderService} from \"@/services\";\nimport {Services} from \"@/interface\";\nexport class BeatSaverWSHandler<T> implements WSHandler {\n private readonly logger: Logger\n private render: RenderService\n private agentService: AgentService\n wsUrl: string = 'wss://ws.beatsaver.com/maps'\n private db: DB\n config: Config\n constructor(\n db: DB,\n render: RenderService,\n logger: Logger,\n config: Config,\n agentService: AgentService\n ) {\n this.logger = logger\n this.render = render\n this.agentService = agentService\n this.config = config\n this.db = db\n }\n\n onOpen() {\n this.logger.info('BeatsaverWS opened')\n }\n\n onClose() {\n this.logger.info('BeatsaverWS closed')\n }\n\n eventParser(event) {\n return JSON.parse(event.toString()) as BeatSaverWSEvent\n }\n\n eventFilter = (data: BeatSaverWSEvent) => {\n return (\n data.type === 'MAP_UPDATE' &&\n data.msg.versions.some((it) => it.state == 'Published') &&\n data.msg.declaredAi === 'None'\n )\n }\n eventIdSelector = (data: BeatSaverWSEvent) =>\n `ws.bs.${data.type === 'MAP_DELETE' ? data.msg : data.msg.id}.${data.type}`\n\n async BSWSHandler(data: BeatSaverWSEvent) {\n // this.logger.info('Beatsaver message received', data.type, data?.msg?.id)\n\n const bsmap = data.msg as BSMap\n const userId = bsmap.uploader.id\n const subscriptions = await this.db.getAllSubscriptionByUIDAndPlatform(\n String(userId),\n 'beatsaver'\n )\n\n const restSub = subscriptions.filter(\n (it) =>\n it.subscription.type == 'beatsaver-map' && it.subscription.enabled == true\n )\n const gids = restSub.map((it) => it.channel.id)\n const groupSubs = await this.db.getIDSubscriptionByType('id-beatsaver-map')\n const restGroupSubs = groupSubs.filter(\n (it) =>\n !gids.includes(it.channel.id) &&\n it.subscription.data?.mapperId?.toString() === userId.toString()\n )\n\n // cacheService\n if (restSub.length === 0 && restGroupSubs) return\n const image = this.render.renderMap(bsmap)\n for (const item of restSub) {\n const session = await this.agentService.getAgentSessionByChannelInfo(item.channel)\n if (!session) {\n continue\n }\n await session.send(\n `本群谱师 「<at id=\"${item.account.userId}\"/> (${bsmap.uploader.name})」刚刚发布了新谱面,「${bsmap.name}」`\n )\n // text + mention element\n await session.sendImgBuffer(await image)\n await session.sendAudioByUrl(bsmap.versions[0].previewURL)\n }\n for (const item of restGroupSubs) {\n const session = await this.agentService.getAgentSessionByChannelInfo(item.channel)\n if (!session) {\n continue\n }\n await session.send(\n `谱师「${bsmap.uploader.name}」刚刚发布了新谱面,「${bsmap.name}」`\n )\n // text + mention element\n await session.sendImgBuffer(await image)\n await session.sendAudioByUrl(bsmap.versions[0].previewURL)\n }\n }\n\n onEvent = handleWSEventWithCache(\n this,\n this.BSWSHandler,\n 1000 * 60 * 15,\n this.eventParser,\n this.eventFilter,\n this.eventIdSelector\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA,SAAS,8BAA8B;AAIhC,MAAM,mBAA2C;AAAA,EAOtD,YACE,IACA,QACA,QACA,QACA,cACA;AAZF,wBAAiB;AACjB,wBAAQ;AACR,wBAAQ;AACR,iCAAgB;AAChB,wBAAQ;AACR;AA2BA,uCAAc,CAAC,SAA2B;AACxC,aACE,KAAK,SAAS,gBACd,KAAK,IAAI,SAAS,KAAK,CAAC,OAAO,GAAG,SAAS,WAAW,KACtD,KAAK,IAAI,eAAe;AAAA,IAE5B;AACA,2CAAkB,CAAC,SACjB,SAAS,KAAK,SAAS,eAAe,KAAK,MAAM,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI;AAqD3E,mCAAU;AAAA,MACR;AAAA,MACA,KAAK;AAAA,MACL,MAAO,KAAK;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAvFE,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,SAAS;AACd,SAAK,KAAK;AAAA,EACZ;AAAA,EAEA,SAAS;AACP,SAAK,OAAO,KAAK,oBAAoB;AAAA,EACvC;AAAA,EAEA,UAAU;AACR,SAAK,OAAO,KAAK,oBAAoB;AAAA,EACvC;AAAA,EAEA,YAAY,OAAO;AACjB,WAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAAA,EACpC;AAAA,EAYM,YAAY,MAAwB;AAAA;AAGxC,YAAM,QAAQ,KAAK;AACnB,YAAM,SAAS,MAAM,SAAS;AAC9B,YAAM,gBAAgB,MAAM,KAAK,GAAG;AAAA,QAClC,OAAO,MAAM;AAAA,QACb;AAAA,MACF;AAEA,YAAM,UAAU,cAAc;AAAA,QAC5B,CAAC,OACC,GAAG,aAAa,QAAQ,mBAAmB,GAAG,aAAa,WAAW;AAAA,MAC1E;AACA,YAAM,OAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE;AAC9C,YAAM,YAAY,MAAM,KAAK,GAAG,wBAAwB,kBAAkB;AAC1E,YAAM,gBAAgB,UAAU;AAAA,QAC9B,CAAC,OAAI;AApEX;AAqEQ,kBAAC,KAAK,SAAS,GAAG,QAAQ,EAAE,OAC5B,cAAG,aAAa,SAAhB,mBAAsB,aAAtB,mBAAgC,gBAAe,OAAO,SAAS;AAAA;AAAA,MACnE;AAGA,UAAI,QAAQ,WAAW,KAAK,cAAe;AAC3C,YAAM,QAAQ,KAAK,OAAO,UAAU,KAAK;AACzC,iBAAW,QAAQ,SAAS;AAC1B,cAAM,UAAU,MAAM,KAAK,aAAa,6BAA6B,KAAK,OAAO;AACjF,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,UACZ,0CAAiB,KAAK,QAAQ,MAAM,QAAQ,MAAM,SAAS,IAAI,sEAAe,MAAM,IAAI;AAAA,QAC1F;AAEA,cAAM,QAAQ,cAAc,MAAM,KAAK;AACvC,cAAM,QAAQ,eAAe,MAAM,SAAS,CAAC,EAAE,UAAU;AAAA,MAC3D;AACA,iBAAW,QAAQ,eAAe;AAChC,cAAM,UAAU,MAAM,KAAK,aAAa,6BAA6B,KAAK,OAAO;AACjF,YAAI,CAAC,SAAS;AACZ;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,UACZ,qBAAM,MAAM,SAAS,IAAI,qEAAc,MAAM,IAAI;AAAA,QACnD;AAEA,cAAM,QAAQ,cAAc,MAAM,KAAK;AACvC,cAAM,QAAQ,eAAe,MAAM,SAAS,CAAC,EAAE,UAAU;AAAA,MAC3D;AAAA,IACF;AAAA;AAUF;","names":[]}
@@ -5,13 +5,13 @@ import { createTranslator } from "../../common/i18n/index.js";
5
5
  class I18nService {
6
6
  constructor(config) {
7
7
  __publicField(this, "translator");
8
- this.translator = createTranslator(config != null ? config : {});
8
+ this.translator = createTranslator(config);
9
9
  }
10
10
  mergeConfig(lang, obj) {
11
11
  }
12
12
  loadLang(lang) {
13
13
  }
14
- tran(path, params = {}, lang = "zh-cn") {
14
+ tran(path, params = {}, lang = "zh-CN") {
15
15
  return this.translator(path, params, lang);
16
16
  }
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/services/i18n/index.ts"],"sourcesContent":["import {createTranslator} from \"@/common/i18n\";\n\nexport class I18nService {\n translator: (path: string, params: any, lang: string) => string\n constructor(config?: any) {\n this.translator = createTranslator(config ?? {})\n }\n mergeConfig(lang: string, obj: any) {\n\n }\n\n loadLang(lang: string) {\n\n }\n\n tran(path: string, params = {}, lang = 'zh-cn'): string {\n return this.translator(path, params, lang)\n }\n}\n"],"mappings":";;;AAAA,SAAQ,wBAAuB;AAExB,MAAM,YAAY;AAAA,EAEvB,YAAY,QAAc;AAD1B;AAEE,SAAK,aAAa,iBAAiB,0BAAU,CAAC,CAAC;AAAA,EACjD;AAAA,EACA,YAAY,MAAc,KAAU;AAAA,EAEpC;AAAA,EAEA,SAAS,MAAc;AAAA,EAEvB;AAAA,EAEA,KAAK,MAAc,SAAS,CAAC,GAAG,OAAO,SAAiB;AACtD,WAAO,KAAK,WAAW,MAAM,QAAQ,IAAI;AAAA,EAC3C;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/services/i18n/index.ts"],"sourcesContent":["import {createTranslator} from \"@/common/i18n\";\n\nexport class I18nService {\n translator: (path: string, params: any, lang: string) => string\n constructor(config?: any) {\n this.translator = createTranslator(config)\n }\n mergeConfig(lang: string, obj: any) {\n\n }\n\n loadLang(lang: string) {\n\n }\n\n tran(path: string, params = {}, lang = 'zh-CN'): string {\n return this.translator(path, params, lang)\n }\n}\n"],"mappings":";;;AAAA,SAAQ,wBAAuB;AAExB,MAAM,YAAY;AAAA,EAEvB,YAAY,QAAc;AAD1B;AAEE,SAAK,aAAa,iBAAiB,MAAM;AAAA,EAC3C;AAAA,EACA,YAAY,MAAc,KAAU;AAAA,EAEpC;AAAA,EAEA,SAAS,MAAc;AAAA,EAEvB;AAAA,EAEA,KAAK,MAAc,SAAS,CAAC,GAAG,OAAO,SAAiB;AACtD,WAAO,KAAK,WAAW,MAAM,QAAQ,IAAI;AAAA,EAC3C;AACF;","names":[]}
@@ -47,7 +47,7 @@ interface PassiveSession extends ISession {
47
47
  agent: SessionAgent;
48
48
  }
49
49
  interface AgentService {
50
- getAgentSessionByChannelInfo(channel: Channel$1): PositiveSession;
50
+ getAgentSessionByChannelInfo(channel: Channel$1): Promise<PositiveSession>;
51
51
  }
52
52
  interface PositiveSession extends ISession {
53
53
  channel: Channel$1;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "beatsaber-bot-core",
3
3
  "description": "Beatsaber bot",
4
- "version": "0.3.0-rc.2",
4
+ "version": "0.3.0-rc.20",
5
5
  "files": [
6
6
  "dist"
7
7
  ],
@@ -26,25 +26,15 @@
26
26
  "require": "./dist/cjs/interface/**/*.js",
27
27
  "import": "./dist/esm/interface/**/*.js"
28
28
  },
29
- "./service": {
29
+ "./services": {
30
30
  "types": "./dist/types/index.d.ts",
31
- "require": "./dist/cjs/service/*.js",
32
- "import": "./dist/esm/service/*.js"
31
+ "require": "./dist/cjs/services/*.js",
32
+ "import": "./dist/esm/services/*.js"
33
33
  },
34
- "./service/*": {
34
+ "./services/*": {
35
35
  "types": "./dist/types/index.d.ts",
36
- "require": "./dist/cjs/service/*/index.js",
37
- "import": "./dist/esm/service/*/index.js"
38
- },
39
- "./infra": {
40
- "types": "./dist/types/index.d.ts",
41
- "require": "./dist/cjs/infra/index.js",
42
- "import": "./dist/esm/infra/index.js"
43
- },
44
- "./infra/*": {
45
- "types": "./dist/types/index.d.ts",
46
- "require": "./dist/cjs/infra/*/index.js",
47
- "import": "./dist/esm/infra/*/index.js"
36
+ "require": "./dist/cjs/services/*",
37
+ "import": "./dist/esm/services/*"
48
38
  }
49
39
  },
50
40
  "keywords": [
@@ -56,6 +46,7 @@
56
46
  "access": "public"
57
47
  },
58
48
  "dependencies": {
49
+ "typeid-js": "1.2.0",
59
50
  "@aws-sdk/client-s3": "^3.840.0",
60
51
  "@ktfun/styled-qr-code-node": "^1.6.5",
61
52
  "chart.js": "^4.5.0",