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.
- package/dist/cjs/cmd/bind/bind-beatleader.js +8 -11
- package/dist/cjs/cmd/bind/bind-beatleader.js.map +1 -1
- package/dist/cjs/cmd/bind/bind-beatsaver.js +7 -12
- package/dist/cjs/cmd/bind/bind-beatsaver.js.map +1 -1
- package/dist/cjs/cmd/bind/bind-id-beatleader.js +8 -11
- package/dist/cjs/cmd/bind/bind-id-beatleader.js.map +1 -1
- package/dist/cjs/cmd/bind/bind-id-beatsaver.js +7 -11
- package/dist/cjs/cmd/bind/bind-id-beatsaver.js.map +1 -1
- package/dist/cjs/cmd/bind/bind-scoresaber.js +9 -14
- package/dist/cjs/cmd/bind/bind-scoresaber.js.map +1 -1
- package/dist/cjs/cmd/rank.js +3 -3
- package/dist/cjs/cmd/rank.js.map +1 -1
- package/dist/cjs/cmd/score.js +2 -2
- package/dist/cjs/cmd/score.js.map +1 -1
- package/dist/cjs/cmd/subscribe/beatleader.js +1 -1
- package/dist/cjs/cmd/subscribe/beatleader.js.map +1 -1
- package/dist/cjs/cmd/subscribe/beatsaver.js +1 -1
- package/dist/cjs/cmd/subscribe/beatsaver.js.map +1 -1
- package/dist/cjs/cmd/subscribe/id-beatleader-score.js +1 -1
- package/dist/cjs/cmd/subscribe/id-beatleader-score.js.map +1 -1
- package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js +1 -1
- package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js.map +1 -1
- package/dist/cjs/cmd/subscribe/index.js +4 -4
- package/dist/cjs/cmd/subscribe/index.js.map +1 -1
- package/dist/cjs/cmd/subscribe/subleave.js +4 -4
- package/dist/cjs/cmd/subscribe/subleave.js.map +1 -1
- package/dist/cjs/common/i18n/index.js +2 -1
- package/dist/cjs/common/i18n/index.js.map +1 -1
- package/dist/cjs/core/session.js.map +1 -1
- package/dist/cjs/events/schedules/temp.js +1 -1
- package/dist/cjs/events/schedules/temp.js.map +1 -1
- package/dist/cjs/events/ws/beatleader.js +1 -1
- package/dist/cjs/events/ws/beatleader.js.map +1 -1
- package/dist/cjs/events/ws/beatsaver.js +2 -2
- package/dist/cjs/events/ws/beatsaver.js.map +1 -1
- package/dist/cjs/services/i18n/index.js +2 -2
- package/dist/cjs/services/i18n/index.js.map +1 -1
- package/dist/esm/cmd/bind/bind-beatleader.js +8 -11
- package/dist/esm/cmd/bind/bind-beatleader.js.map +1 -1
- package/dist/esm/cmd/bind/bind-beatsaver.js +7 -12
- package/dist/esm/cmd/bind/bind-beatsaver.js.map +1 -1
- package/dist/esm/cmd/bind/bind-id-beatleader.js +8 -11
- package/dist/esm/cmd/bind/bind-id-beatleader.js.map +1 -1
- package/dist/esm/cmd/bind/bind-id-beatsaver.js +7 -11
- package/dist/esm/cmd/bind/bind-id-beatsaver.js.map +1 -1
- package/dist/esm/cmd/bind/bind-scoresaber.js +9 -14
- package/dist/esm/cmd/bind/bind-scoresaber.js.map +1 -1
- package/dist/esm/cmd/rank.js +3 -3
- package/dist/esm/cmd/rank.js.map +1 -1
- package/dist/esm/cmd/score.js +2 -2
- package/dist/esm/cmd/score.js.map +1 -1
- package/dist/esm/cmd/subscribe/beatleader.js +1 -1
- package/dist/esm/cmd/subscribe/beatleader.js.map +1 -1
- package/dist/esm/cmd/subscribe/beatsaver.js +1 -1
- package/dist/esm/cmd/subscribe/beatsaver.js.map +1 -1
- package/dist/esm/cmd/subscribe/id-beatleader-score.js +1 -1
- package/dist/esm/cmd/subscribe/id-beatleader-score.js.map +1 -1
- package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js +1 -1
- package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js.map +1 -1
- package/dist/esm/cmd/subscribe/index.js +4 -4
- package/dist/esm/cmd/subscribe/index.js.map +1 -1
- package/dist/esm/cmd/subscribe/subleave.js +4 -4
- package/dist/esm/cmd/subscribe/subleave.js.map +1 -1
- package/dist/esm/common/i18n/index.js +2 -1
- package/dist/esm/common/i18n/index.js.map +1 -1
- package/dist/esm/events/schedules/temp.js +1 -1
- package/dist/esm/events/schedules/temp.js.map +1 -1
- package/dist/esm/events/ws/beatleader.js +1 -1
- package/dist/esm/events/ws/beatleader.js.map +1 -1
- package/dist/esm/events/ws/beatsaver.js +2 -2
- package/dist/esm/events/ws/beatsaver.js.map +1 -1
- package/dist/esm/services/i18n/index.js +2 -2
- package/dist/esm/services/i18n/index.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/package.json +8 -17
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;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;
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;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":[]}
|
@@ -73,7 +73,7 @@ class BeatleaderWSHandler {
|
|
73
73
|
if (restSub.length === 0) return;
|
74
74
|
const img = yield this.render.renderScore(data.id.toString());
|
75
75
|
for (const item of restSub) {
|
76
|
-
const session = this.agentService.getAgentSessionByChannelInfo(item.channel);
|
76
|
+
const session = yield this.agentService.getAgentSessionByChannelInfo(item.channel);
|
77
77
|
if (!session) {
|
78
78
|
continue;
|
79
79
|
}
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;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;
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;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":[]}
|
@@ -100,7 +100,7 @@ class BeatSaverWSHandler {
|
|
100
100
|
if (restSub.length === 0 && restGroupSubs) return;
|
101
101
|
const image = this.render.renderMap(bsmap);
|
102
102
|
for (const item of restSub) {
|
103
|
-
const session = this.agentService.getAgentSessionByChannelInfo(item.channel);
|
103
|
+
const session = yield this.agentService.getAgentSessionByChannelInfo(item.channel);
|
104
104
|
if (!session) {
|
105
105
|
continue;
|
106
106
|
}
|
@@ -111,7 +111,7 @@ class BeatSaverWSHandler {
|
|
111
111
|
yield session.sendAudioByUrl(bsmap.versions[0].previewURL);
|
112
112
|
}
|
113
113
|
for (const item of restGroupSubs) {
|
114
|
-
const session = this.agentService.getAgentSessionByChannelInfo(item.channel);
|
114
|
+
const session = yield this.agentService.getAgentSessionByChannelInfo(item.channel);
|
115
115
|
if (!session) {
|
116
116
|
continue;
|
117
117
|
}
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,mBAAuC;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,uCAAU;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;
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,mBAAuC;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,uCAAU;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":[]}
|
@@ -26,13 +26,13 @@ var import_i18n = require("../../common/i18n/index.js");
|
|
26
26
|
class I18nService {
|
27
27
|
constructor(config) {
|
28
28
|
__publicField(this, "translator");
|
29
|
-
this.translator = (0, import_i18n.createTranslator)(config
|
29
|
+
this.translator = (0, import_i18n.createTranslator)(config);
|
30
30
|
}
|
31
31
|
mergeConfig(lang, obj) {
|
32
32
|
}
|
33
33
|
loadLang(lang) {
|
34
34
|
}
|
35
|
-
tran(path, params = {}, lang = "zh-
|
35
|
+
tran(path, params = {}, lang = "zh-CN") {
|
36
36
|
return this.translator(path, params, lang);
|
37
37
|
}
|
38
38
|
}
|
@@ -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
|
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;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA+B;AAExB,MAAM,YAAY;AAAA,EAEvB,YAAY,QAAc;AAD1B;AAEE,SAAK,iBAAa,8BAAiB,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":[]}
|
@@ -19,6 +19,7 @@ var __async = (__this, __arguments, generator) => {
|
|
19
19
|
});
|
20
20
|
};
|
21
21
|
const handleBeatLeaderBind = (c) => __async(null, null, function* () {
|
22
|
+
var _a;
|
22
23
|
const tokenInfo = yield c.services.api.AIOSaber.getBLOAuthToken(c.input);
|
23
24
|
if (!tokenInfo) {
|
24
25
|
c.session.sendQuote(c.session.text("commands.bsbot.bl.account.not-found"));
|
@@ -48,22 +49,18 @@ const handleBeatLeaderBind = (c) => __async(null, null, function* () {
|
|
48
49
|
const now = /* @__PURE__ */ new Date();
|
49
50
|
const { blAccount } = yield c.services.db.getUserAccountsByUid(c.session.user.id);
|
50
51
|
const account = {
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
otherPlatformInfo: {},
|
52
|
+
userId: c.session.user.id,
|
53
|
+
accountId: (_a = blAccount == null ? void 0 : blAccount.id) != null ? _a : "",
|
54
|
+
providerId: "beatleader",
|
55
|
+
providerUsername: self.name,
|
56
|
+
metadata: {},
|
57
57
|
accessToken: token.access_token,
|
58
58
|
refreshToken: token.refresh_token,
|
59
59
|
lastModifiedAt: now,
|
60
60
|
lastRefreshAt: now,
|
61
|
-
|
62
|
-
|
61
|
+
createdAt: now,
|
62
|
+
type: "oauth"
|
63
63
|
};
|
64
|
-
if (blAccount) {
|
65
|
-
account.id = blAccount.id;
|
66
|
-
}
|
67
64
|
yield c.services.db.addUserBindingInfo(account);
|
68
65
|
c.session.sendQuote(
|
69
66
|
c.session.text("commands.bsbot.bind.bl.success", {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/bind/bind-beatleader.ts"],"sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/bind/bind-beatleader.ts"],"sourcesContent":["import { Account } from '@/interface'\nimport {CmdContext} from \"@/interface\";\n\nexport const handleBeatLeaderBind = async (c: CmdContext) => {\n const tokenInfo = await c.services.api.AIOSaber.getBLOAuthToken(c.input)\n if (!tokenInfo) {\n c.session.sendQuote(c.session.text('commands.bsbot.bl.account.not-found'))\n return\n }\n let token = tokenInfo\n let self = await c.services.api.BeatLeader.getTokenInfo(token.access_token)\n if (!self) {\n const refreshToken = await c.services.api.BeatLeader.refreshOAuthToken(\n token.refresh_token\n )\n if (!refreshToken) {\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bl.invalid-token')\n )\n return\n }\n token = refreshToken\n self = await c.services.api.BeatLeader.getTokenInfo(token.access_token)\n if (!self) {\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bl.unknown-error')\n )\n return\n }\n }\n const now = new Date()\n const { blAccount } = await c.services.db.getUserAccountsByUid(c.session.user.id)\n const account: Partial<Account> = {\n userId: c.session.user.id,\n accountId: blAccount?.id ?? '',\n providerId: 'beatleader',\n providerUsername: self.name,\n metadata: {},\n accessToken: token.access_token,\n refreshToken: token.refresh_token,\n lastModifiedAt: now,\n lastRefreshAt: now,\n createdAt: now,\n type: 'oauth',\n }\n await c.services.db.addUserBindingInfo(account)\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bl.success', {\n name: self.name,\n id: self.id,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAGO,MAAM,uBAAuB,CAAO,MAAkB;AAH7D;AAIE,QAAM,YAAY,MAAM,EAAE,SAAS,IAAI,SAAS,gBAAgB,EAAE,KAAK;AACvE,MAAI,CAAC,WAAW;AACd,MAAE,QAAQ,UAAU,EAAE,QAAQ,KAAK,qCAAqC,CAAC;AACzE;AAAA,EACF;AACA,MAAI,QAAQ;AACZ,MAAI,OAAO,MAAM,EAAE,SAAS,IAAI,WAAW,aAAa,MAAM,YAAY;AAC1E,MAAI,CAAC,MAAM;AACT,UAAM,eAAe,MAAM,EAAE,SAAS,IAAI,WAAW;AAAA,MACnD,MAAM;AAAA,IACR;AACA,QAAI,CAAC,cAAc;AACjB,QAAE,QAAQ;AAAA,QACR,EAAE,QAAQ,KAAK,sCAAsC;AAAA,MACvD;AACA;AAAA,IACF;AACA,YAAQ;AACR,WAAO,MAAM,EAAE,SAAS,IAAI,WAAW,aAAa,MAAM,YAAY;AACtE,QAAI,CAAC,MAAM;AACT,QAAE,QAAQ;AAAA,QACR,EAAE,QAAQ,KAAK,sCAAsC;AAAA,MACvD;AACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,EAAE,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,EAAE,QAAQ,KAAK,EAAE;AAChF,QAAM,UAA4B;AAAA,IAChC,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACvB,YAAW,4CAAW,OAAX,YAAiB;AAAA,IAC5B,YAAY;AAAA,IACZ,kBAAkB,KAAK;AAAA,IACvB,UAAU,CAAC;AAAA,IACX,aAAa,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,IAAE,QAAQ;AAAA,IACR,EAAE,QAAQ,KAAK,kCAAkC;AAAA,MAC/C,MAAM,KAAK;AAAA,MACX,IAAI,KAAK;AAAA,IACX,CAAC;AAAA,EACH;AACF;","names":[]}
|
@@ -40,24 +40,19 @@ const handleBeatSaverBind = (c) => __async(null, null, function* () {
|
|
40
40
|
self = yield c.services.api.BeatSaver.getTokenInfo(token.access_token);
|
41
41
|
}
|
42
42
|
const now = /* @__PURE__ */ new Date();
|
43
|
-
const { bsAccount } = yield c.services.db.getUserAccountsByUid(c.session.user.id);
|
44
43
|
const account = {
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
44
|
+
userId: c.session.user.id,
|
45
|
+
providerId: "beatsaver",
|
46
|
+
accountId: self.id,
|
47
|
+
providerUsername: self.name,
|
48
|
+
metadata: {},
|
49
|
+
scope: "identity,alerts",
|
51
50
|
accessToken: token.access_token,
|
52
51
|
refreshToken: token.refresh_token,
|
53
52
|
lastModifiedAt: now,
|
54
53
|
lastRefreshAt: now,
|
55
|
-
type: "oauth"
|
56
|
-
status: "ok"
|
54
|
+
type: "oauth"
|
57
55
|
};
|
58
|
-
if (bsAccount) {
|
59
|
-
account.id = bsAccount.id;
|
60
|
-
}
|
61
56
|
yield c.services.db.addUserBindingInfo(account);
|
62
57
|
c.session.sendQuote(
|
63
58
|
c.session.text("commands.bsbot.bind.bs.success", {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/bind/bind-beatsaver.ts"],"sourcesContent":["import { CmdContext,
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/bind/bind-beatsaver.ts"],"sourcesContent":["import { CmdContext, Account } from '@/interface'\n\nexport const handleBeatSaverBind = async (c: CmdContext) => {\n const tokenInfo = await c.services.api.AIOSaber.getBSOAuthToken(c.input)\n if (!tokenInfo) {\n c.session.sendQuote(c.session.text('commands.bsbot.bind.bs.not-found'))\n return\n }\n let token = tokenInfo\n let self = await c.services.api.BeatSaver.getTokenInfo(token.access_token)\n if (!self) {\n const refreshToken = await c.services.api.BeatSaver.refreshOAuthToken(\n token.refresh_token\n )\n if (!refreshToken) {\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bs.invalid-token')\n )\n return\n }\n token = refreshToken\n self = await c.services.api.BeatSaver.getTokenInfo(token.access_token)\n }\n const now = new Date()\n const account: Partial<Account> = {\n userId: c.session.user.id,\n providerId: 'beatsaver',\n accountId: self.id,\n providerUsername: self.name,\n metadata: {},\n scope: 'identity,alerts',\n accessToken: token.access_token,\n refreshToken: token.refresh_token,\n lastModifiedAt: now,\n lastRefreshAt: now,\n type: 'oauth',\n }\n await c.services.db.addUserBindingInfo(account)\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bs.success', {\n name: self.name,\n id: self.id,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEO,MAAM,sBAAsB,CAAO,MAAkB;AAC1D,QAAM,YAAY,MAAM,EAAE,SAAS,IAAI,SAAS,gBAAgB,EAAE,KAAK;AACvE,MAAI,CAAC,WAAW;AACd,MAAE,QAAQ,UAAU,EAAE,QAAQ,KAAK,kCAAkC,CAAC;AACtE;AAAA,EACF;AACA,MAAI,QAAQ;AACZ,MAAI,OAAO,MAAM,EAAE,SAAS,IAAI,UAAU,aAAa,MAAM,YAAY;AACzE,MAAI,CAAC,MAAM;AACT,UAAM,eAAe,MAAM,EAAE,SAAS,IAAI,UAAU;AAAA,MAClD,MAAM;AAAA,IACR;AACA,QAAI,CAAC,cAAc;AACjB,QAAE,QAAQ;AAAA,QACR,EAAE,QAAQ,KAAK,sCAAsC;AAAA,MACvD;AACA;AAAA,IACF;AACA,YAAQ;AACR,WAAO,MAAM,EAAE,SAAS,IAAI,UAAU,aAAa,MAAM,YAAY;AAAA,EACvE;AACA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,UAA4B;AAAA,IAChC,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACvB,YAAY;AAAA,IACZ,WAAW,KAAK;AAAA,IAChB,kBAAkB,KAAK;AAAA,IACvB,UAAU,CAAC;AAAA,IACX,OAAO;AAAA,IACP,aAAa,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,MAAM;AAAA,EACR;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,IAAE,QAAQ;AAAA,IACR,EAAE,QAAQ,KAAK,kCAAkC;AAAA,MAC/C,MAAM,KAAK;AAAA,MACX,IAAI,KAAK;AAAA,IACX,CAAC;AAAA,EACH;AACF;","names":[]}
|
@@ -33,7 +33,7 @@ const handleBeatLeaderIDBind = (c) => __async(null, null, function* () {
|
|
33
33
|
const text = c.session.text("commands.bsbot.bind.ack-prompt", {
|
34
34
|
user: `${player.name}(${player.id})`
|
35
35
|
}) + (blAccount ? "," + c.session.text("commands.bsbot.bind.exist", {
|
36
|
-
id: blAccount.
|
36
|
+
id: blAccount.accountId
|
37
37
|
}) : "");
|
38
38
|
yield c.session.sendQuote(text);
|
39
39
|
const prompt = yield c.session.prompt(3e4);
|
@@ -41,19 +41,16 @@ const handleBeatLeaderIDBind = (c) => __async(null, null, function* () {
|
|
41
41
|
throw prompt ? new SessionPromotionCancelError() : new SessionPromotionTimeoutError();
|
42
42
|
}
|
43
43
|
const account = {
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
userId: c.session.user.id,
|
45
|
+
providerId: "beatleader",
|
46
|
+
accountId: player.id.toString(),
|
47
|
+
providerUsername: player.name,
|
48
|
+
metadata: {},
|
49
49
|
lastModifiedAt: now,
|
50
50
|
lastRefreshAt: now,
|
51
|
-
|
52
|
-
|
51
|
+
createdAt: now,
|
52
|
+
type: "id"
|
53
53
|
};
|
54
|
-
if (blAccount) {
|
55
|
-
account.id = blAccount.id;
|
56
|
-
}
|
57
54
|
yield c.services.db.addUserBindingInfo(account);
|
58
55
|
yield c.session.sendQuote(
|
59
56
|
c.session.text("commands.bsbot.bind.bl.success", {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/bind/bind-id-beatleader.ts"],"sourcesContent":["import { CmdContext,
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/bind/bind-id-beatleader.ts"],"sourcesContent":["import { CmdContext, Account } from '@/interface'\nimport {\n BLIDNotFoundError,\n SessionPromotionCancelError,\n SessionPromotionTimeoutError,\n} from '@/services/errors'\n\nexport const handleBeatLeaderIDBind = async (c: CmdContext) => {\n const player = await c.services.api.BeatLeader.getPlayerInfo(c.input)\n if (!player) {\n throw new BLIDNotFoundError({ accountId: c.input })\n }\n\n const now = new Date()\n const { blAccount } = await c.services.db.getUserAccountsByUid(c.session.user.id)\n\n const text =\n c.session.text('commands.bsbot.bind.ack-prompt', {\n user: `${player.name}(${player.id})`,\n }) +\n (blAccount\n ? ',' +\n c.session.text('commands.bsbot.bind.exist', {\n id: blAccount.accountId,\n })\n : '')\n\n await c.session.sendQuote(text)\n\n const prompt = await c.session.prompt(30000)\n if (!prompt || (prompt != 'y' && prompt != 'yes')) {\n throw prompt\n ? new SessionPromotionCancelError()\n : new SessionPromotionTimeoutError()\n }\n const account: Partial<Account> = {\n userId: c.session.user.id,\n providerId: 'beatleader',\n accountId: player.id.toString(),\n providerUsername: player.name,\n metadata: {},\n lastModifiedAt: now,\n lastRefreshAt: now,\n createdAt: now,\n type: 'id',\n }\n await c.services.db.addUserBindingInfo(account)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bl.success', {\n name: player.name,\n id: player.id,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,yBAAyB,CAAO,MAAkB;AAC7D,QAAM,SAAS,MAAM,EAAE,SAAS,IAAI,WAAW,cAAc,EAAE,KAAK;AACpE,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,kBAAkB,EAAE,WAAW,EAAE,MAAM,CAAC;AAAA,EACpD;AAEA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,EAAE,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,EAAE,QAAQ,KAAK,EAAE;AAEhF,QAAM,OACJ,EAAE,QAAQ,KAAK,kCAAkC;AAAA,IAC/C,MAAM,GAAG,OAAO,IAAI,IAAI,OAAO,EAAE;AAAA,EACnC,CAAC,KACA,YACG,MACA,EAAE,QAAQ,KAAK,6BAA6B;AAAA,IAC1C,IAAI,UAAU;AAAA,EAChB,CAAC,IACD;AAEN,QAAM,EAAE,QAAQ,UAAU,IAAI;AAE9B,QAAM,SAAS,MAAM,EAAE,QAAQ,OAAO,GAAK;AAC3C,MAAI,CAAC,UAAW,UAAU,OAAO,UAAU,OAAQ;AACjD,UAAM,SACF,IAAI,4BAA4B,IAChC,IAAI,6BAA6B;AAAA,EACvC;AACA,QAAM,UAA4B;AAAA,IAChC,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACvB,YAAY;AAAA,IACZ,WAAW,OAAO,GAAG,SAAS;AAAA,IAC9B,kBAAkB,OAAO;AAAA,IACzB,UAAU,CAAC;AAAA,IACX,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,kCAAkC;AAAA,MAC/C,MAAM,OAAO;AAAA,MACb,IAAI,OAAO;AAAA,IACb,CAAC;AAAA,EACH;AACF;","names":[]}
|
@@ -33,7 +33,7 @@ const handleBeatSaverIDBind = (c) => __async(null, null, function* () {
|
|
33
33
|
const text = c.session.text("commands.bsbot.bind.ack-prompt", {
|
34
34
|
user: `${mapper.name}(${mapper.id})`
|
35
35
|
}) + (bsAccount ? "," + c.session.text("commands.bsbot.bind.exist", {
|
36
|
-
id: bsAccount.
|
36
|
+
id: bsAccount.accountId
|
37
37
|
}) : "");
|
38
38
|
yield c.session.sendQuote(text);
|
39
39
|
const prompt = yield c.session.prompt(3e4);
|
@@ -41,19 +41,15 @@ const handleBeatSaverIDBind = (c) => __async(null, null, function* () {
|
|
41
41
|
throw prompt ? new SessionPromotionCancelError() : new SessionPromotionTimeoutError();
|
42
42
|
}
|
43
43
|
const account = {
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
userId: c.session.user.id,
|
45
|
+
providerId: "beatsaver",
|
46
|
+
accountId: mapper.id.toString(),
|
47
|
+
providerUsername: mapper.name,
|
48
|
+
metadata: {},
|
49
49
|
lastModifiedAt: now,
|
50
50
|
lastRefreshAt: now,
|
51
|
-
type: "id"
|
52
|
-
status: "ok"
|
51
|
+
type: "id"
|
53
52
|
};
|
54
|
-
if (bsAccount) {
|
55
|
-
account.id = bsAccount.id;
|
56
|
-
}
|
57
53
|
yield c.services.db.addUserBindingInfo(account);
|
58
54
|
c.session.sendQuote(
|
59
55
|
c.session.text("commands.bsbot.bind.bs.success", {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/bind/bind-id-beatsaver.ts"],"sourcesContent":["import { CmdContext,
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/bind/bind-id-beatsaver.ts"],"sourcesContent":["import { CmdContext, Account } from '@/interface'\n\nimport {\n BSIDNotFoundError,\n SessionPromotionCancelError,\n SessionPromotionTimeoutError,\n} from '@/services/errors'\n\nexport const handleBeatSaverIDBind = async (c: CmdContext) => {\n const mapper = await c.services.api.BeatSaver.getBSMapperById(c.input)\n if (!mapper) {\n throw new BSIDNotFoundError({ accountId: c.input })\n }\n // 如果当前bind 是 oauth?改为 id?\n const now = new Date()\n const { bsAccount } = await c.services.db.getUserAccountsByUid(c.session.user.id)\n\n const text =\n c.session.text('commands.bsbot.bind.ack-prompt', {\n user: `${mapper.name}(${mapper.id})`,\n }) +\n (bsAccount\n ? ',' +\n c.session.text('commands.bsbot.bind.exist', {\n id: bsAccount.accountId,\n })\n : '')\n\n await c.session.sendQuote(text)\n\n const prompt = await c.session.prompt(30000)\n if (!prompt || (prompt != 'y' && prompt != 'yes')) {\n throw prompt\n ? new SessionPromotionCancelError()\n : new SessionPromotionTimeoutError()\n }\n const account: Partial<Account> = {\n userId: c.session.user.id,\n providerId: 'beatsaver',\n accountId: mapper.id.toString(),\n providerUsername: mapper.name,\n metadata: {},\n lastModifiedAt: now,\n lastRefreshAt: now,\n type: 'id',\n }\n await c.services.db.addUserBindingInfo(account)\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bs.success', {\n name: mapper.name,\n id: mapper.id,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,wBAAwB,CAAO,MAAkB;AAC5D,QAAM,SAAS,MAAM,EAAE,SAAS,IAAI,UAAU,gBAAgB,EAAE,KAAK;AACrE,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,kBAAkB,EAAE,WAAW,EAAE,MAAM,CAAC;AAAA,EACpD;AAEA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,EAAE,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,EAAE,QAAQ,KAAK,EAAE;AAEhF,QAAM,OACJ,EAAE,QAAQ,KAAK,kCAAkC;AAAA,IAC/C,MAAM,GAAG,OAAO,IAAI,IAAI,OAAO,EAAE;AAAA,EACnC,CAAC,KACA,YACG,MACA,EAAE,QAAQ,KAAK,6BAA6B;AAAA,IAC1C,IAAI,UAAU;AAAA,EAChB,CAAC,IACD;AAEN,QAAM,EAAE,QAAQ,UAAU,IAAI;AAE9B,QAAM,SAAS,MAAM,EAAE,QAAQ,OAAO,GAAK;AAC3C,MAAI,CAAC,UAAW,UAAU,OAAO,UAAU,OAAQ;AACjD,UAAM,SACF,IAAI,4BAA4B,IAChC,IAAI,6BAA6B;AAAA,EACvC;AACA,QAAM,UAA4B;AAAA,IAChC,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACvB,YAAY;AAAA,IACZ,WAAW,OAAO,GAAG,SAAS;AAAA,IAC9B,kBAAkB,OAAO;AAAA,IACzB,UAAU,CAAC;AAAA,IACX,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,MAAM;AAAA,EACR;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,IAAE,QAAQ;AAAA,IACR,EAAE,QAAQ,KAAK,kCAAkC;AAAA,MAC/C,MAAM,OAAO;AAAA,MACb,IAAI,OAAO;AAAA,IACb,CAAC;AAAA,EACH;AACF;","names":[]}
|
@@ -28,12 +28,10 @@ const handleScoreSaberBind = (c) => __async(null, null, function* () {
|
|
28
28
|
if (!scoreSaberUser) {
|
29
29
|
throw new SSIDNotFoundError({ accountId: c.input });
|
30
30
|
}
|
31
|
-
const { ssAccount
|
32
|
-
c.session.user.id
|
33
|
-
);
|
31
|
+
const { ssAccount } = yield c.services.db.getUserAccountsByUid(c.session.user.id);
|
34
32
|
const text = c.session.text("commands.bsbot.bind.ack-prompt", {
|
35
33
|
user: `${scoreSaberUser.name}(${scoreSaberUser.id})`
|
36
|
-
}) + (ssAccount ? "," + c.session.text("commands.bsbot.bind.exist", { id: ssAccount.
|
34
|
+
}) + (ssAccount ? "," + c.session.text("commands.bsbot.bind.exist", { id: ssAccount.accountId }) : "");
|
37
35
|
yield c.session.sendQuote(text);
|
38
36
|
const prompt = yield c.session.prompt(3e4);
|
39
37
|
if (!prompt || prompt != "y" && prompt != "yes") {
|
@@ -41,20 +39,17 @@ const handleScoreSaberBind = (c) => __async(null, null, function* () {
|
|
41
39
|
}
|
42
40
|
const now = /* @__PURE__ */ new Date();
|
43
41
|
const account = {
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
userId: c.session.user.id,
|
43
|
+
accountId: scoreSaberUser.id,
|
44
|
+
providerId: "scoresaber",
|
45
|
+
providerUsername: scoreSaberUser.name,
|
47
46
|
lastModifiedAt: now,
|
48
47
|
lastRefreshAt: now,
|
49
|
-
|
50
|
-
type: "id"
|
51
|
-
status: "ok"
|
48
|
+
createdAt: now,
|
49
|
+
type: "id"
|
52
50
|
};
|
53
|
-
if (ssAccount) {
|
54
|
-
account.id = ssAccount.id;
|
55
|
-
}
|
56
51
|
yield c.services.db.addUserBindingInfo(account);
|
57
|
-
c.session.sendQuote(
|
52
|
+
yield c.session.sendQuote(
|
58
53
|
c.session.text("commands.bsbot.bind.success", {
|
59
54
|
user: `${scoreSaberUser.name}(${scoreSaberUser.id})`
|
60
55
|
})
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/bind/bind-scoresaber.ts"],"sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/bind/bind-scoresaber.ts"],"sourcesContent":["import {Account, CmdContext} from '@/interface'\nimport {\n SessionPromotionCancelError,\n SessionPromotionTimeoutError,\n SSIDNotFoundError,\n} from '@/services/errors'\n\nexport const handleScoreSaberBind = async (c: CmdContext) => {\n const scoreSaberUser = await c.services.api.ScoreSaber.getScoreUserById(c.input)\n if (!scoreSaberUser) {\n throw new SSIDNotFoundError({accountId: c.input})\n }\n const {ssAccount} = await c.services.db.getUserAccountsByUid(c.session.user.id)\n const text =\n c.session.text('commands.bsbot.bind.ack-prompt', {\n user: `${scoreSaberUser.name}(${scoreSaberUser.id})`,\n }) +\n (ssAccount ? ',' + c.session.text('commands.bsbot.bind.exist', {id: ssAccount.accountId,}) : '')\n\n await c.session.sendQuote(text)\n\n const prompt = await c.session.prompt(30000)\n if (!prompt || (prompt != 'y' && prompt != 'yes')) {\n throw prompt\n ? new SessionPromotionCancelError()\n : new SessionPromotionTimeoutError()\n }\n const now = new Date()\n const account: Partial<Account> = {\n userId: c.session.user.id,\n accountId: scoreSaberUser.id,\n providerId: 'scoresaber',\n providerUsername: scoreSaberUser.name,\n lastModifiedAt: now,\n lastRefreshAt: now,\n createdAt: now,\n type: 'id',\n }\n await c.services.db.addUserBindingInfo(account)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.bind.success', {\n user: `${scoreSaberUser.name}(${scoreSaberUser.id})`,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,uBAAuB,CAAO,MAAkB;AAC3D,QAAM,iBAAiB,MAAM,EAAE,SAAS,IAAI,WAAW,iBAAiB,EAAE,KAAK;AAC/E,MAAI,CAAC,gBAAgB;AACnB,UAAM,IAAI,kBAAkB,EAAC,WAAW,EAAE,MAAK,CAAC;AAAA,EAClD;AACA,QAAM,EAAC,UAAS,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,EAAE,QAAQ,KAAK,EAAE;AAC9E,QAAM,OACJ,EAAE,QAAQ,KAAK,kCAAkC;AAAA,IAC/C,MAAM,GAAG,eAAe,IAAI,IAAI,eAAe,EAAE;AAAA,EACnD,CAAC,KACA,YAAY,MAAM,EAAE,QAAQ,KAAK,6BAA6B,EAAC,IAAI,UAAU,UAAU,CAAC,IAAI;AAE/F,QAAM,EAAE,QAAQ,UAAU,IAAI;AAE9B,QAAM,SAAS,MAAM,EAAE,QAAQ,OAAO,GAAK;AAC3C,MAAI,CAAC,UAAW,UAAU,OAAO,UAAU,OAAQ;AACjD,UAAM,SACF,IAAI,4BAA4B,IAChC,IAAI,6BAA6B;AAAA,EACvC;AACA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,UAA4B;AAAA,IAChC,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACvB,WAAW,eAAe;AAAA,IAC1B,YAAY;AAAA,IACZ,kBAAkB,eAAe;AAAA,IACjC,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,+BAA+B;AAAA,MAC5C,MAAM,GAAG,eAAe,IAAI,IAAI,eAAe,EAAE;AAAA,IACnD,CAAC;AAAA,EACH;AACF;","names":[]}
|
package/dist/esm/cmd/rank.js
CHANGED
@@ -21,17 +21,17 @@ var __async = (__this, __arguments, generator) => {
|
|
21
21
|
import { CommandBuilder } from "../interface/index.js";
|
22
22
|
import { parsePlatform, Platform } from "../utils/index.js";
|
23
23
|
import { UnknownUserIDError } from "../services/errors/index.js";
|
24
|
-
var rank_default = () => new CommandBuilder().setName("rank").addOption("p", "platform:string").
|
24
|
+
var rank_default = () => new CommandBuilder().setName("rank").addOption("p", "platform:string").setExecutor((c) => __async(null, null, function* () {
|
25
25
|
let uid = c.session.user.id;
|
26
26
|
if (c.session.mentions && c.session.mentions.length > 0) {
|
27
27
|
uid = c.session.mentions[0].id;
|
28
28
|
}
|
29
29
|
const { blAccount, ssAccount } = yield c.services.db.getUserAccountsByUid(uid);
|
30
|
-
let accountId = Platform.BL && (blAccount == null ? void 0 : blAccount.
|
30
|
+
let accountId = Platform.BL && (blAccount == null ? void 0 : blAccount.accountId);
|
31
31
|
if (c.input) {
|
32
32
|
accountId = c.input;
|
33
33
|
} else if (!accountId) {
|
34
|
-
accountId = Platform.SS && (ssAccount == null ? void 0 : ssAccount.
|
34
|
+
accountId = Platform.SS && (ssAccount == null ? void 0 : ssAccount.accountId);
|
35
35
|
}
|
36
36
|
if (!accountId && !c.input) {
|
37
37
|
throw new UnknownUserIDError();
|
package/dist/esm/cmd/rank.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/cmd/rank.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface\";\nimport { parsePlatform, Platform } from '@/utils'\nimport {UnknownUserIDError} from \"@/services/errors\";\n\nexport default () =>\n new CommandBuilder()\n .setName('rank')\n .addOption('p', 'platform:string')\n .
|
1
|
+
{"version":3,"sources":["../../../src/cmd/rank.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface\";\nimport { parsePlatform, Platform } from '@/utils'\nimport {UnknownUserIDError} from \"@/services/errors\";\n\nexport default () =>\n new CommandBuilder()\n .setName('rank')\n .addOption('p', 'platform:string')\n .setExecutor(async (c) => {\n let uid = c.session.user.id\n if (c.session.mentions && c.session.mentions.length > 0) {\n uid = c.session.mentions[0].id\n }\n const { blAccount, ssAccount } = await c.services.db.getUserAccountsByUid(uid)\n let accountId = Platform.BL && blAccount?.accountId\n\n if (c.input) {\n accountId = c.input\n // preference = undefined\n } else if (!accountId) {\n accountId = Platform.SS && ssAccount?.accountId\n }\n\n if (!accountId && !c.input) {\n throw new UnknownUserIDError()\n }\n const rankPlatform = parsePlatform(c.options.p)\n const img = await c.services.render.renderRank(accountId, rankPlatform)\n await c.session.sendImgBuffer(img)\n })\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,sBAAqB;AAC7B,SAAS,eAAe,gBAAgB;AACxC,SAAQ,0BAAyB;AAEjC,IAAO,eAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,MAAM,EACd,UAAU,KAAK,iBAAiB,EAChC,YAAY,CAAO,MAAM;AACxB,MAAI,MAAM,EAAE,QAAQ,KAAK;AACzB,MAAI,EAAE,QAAQ,YAAY,EAAE,QAAQ,SAAS,SAAS,GAAG;AACvD,UAAM,EAAE,QAAQ,SAAS,CAAC,EAAE;AAAA,EAC9B;AACA,QAAM,EAAE,WAAW,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,GAAG;AAC7E,MAAI,YAAY,SAAS,OAAM,uCAAW;AAE1C,MAAI,EAAE,OAAO;AACX,gBAAY,EAAE;AAAA,EAEhB,WAAW,CAAC,WAAW;AACrB,gBAAY,SAAS,OAAM,uCAAW;AAAA,EACxC;AAEA,MAAI,CAAC,aAAa,CAAC,EAAE,OAAO;AAC1B,UAAM,IAAI,mBAAmB;AAAA,EAC/B;AACA,QAAM,eAAe,cAAc,EAAE,QAAQ,CAAC;AAC9C,QAAM,MAAM,MAAM,EAAE,SAAS,OAAO,WAAW,WAAW,YAAY;AACtE,QAAM,EAAE,QAAQ,cAAc,GAAG;AACnC,EAAC;","names":[]}
|
package/dist/esm/cmd/score.js
CHANGED
@@ -45,13 +45,13 @@ var score_default = () => new CommandBuilder().setName("score").addOption("d", "
|
|
45
45
|
}
|
46
46
|
const mapId = c.input;
|
47
47
|
const score = yield c.services.api.getScoreByPlayerIdAndMapId(
|
48
|
-
account.
|
48
|
+
account.accountId,
|
49
49
|
mapId,
|
50
50
|
diffOption
|
51
51
|
);
|
52
52
|
if (!score) {
|
53
53
|
throw new ScoreNotFoundError({
|
54
|
-
user: account.
|
54
|
+
user: account.providerUsername,
|
55
55
|
id: mapId,
|
56
56
|
diff: diffOption == null ? void 0 : diffOption.difficulty,
|
57
57
|
mode: c.options.m
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/cmd/score.ts"],"sourcesContent":["import { CommandBuilder } from \"@/interface\";\nimport { Platform, convertDiff } from '@/utils'\nimport {\n AccountBindingNotFoundError,\n ScoreNotFoundError,\n} from '@/services/errors'\nexport default () =>\n new CommandBuilder()\n .setName('score')\n .addOption('d', 'difficulty:string')\n .addOption('m', 'mode:string')\n .addAlias('bbscore')\n .addAlias('/score')\n .setExecutor(async (c) => {\n let uid = c.session.user.id\n // let preference = c.userPreference\n if (c.session.mentions && c.session.mentions.length > 0) {\n uid = c.session.mentions[0].id\n // preference = await c.userPreference.getUserPreference(uid)\n }\n\n const { blAccount, ssAccount } = await c.services.db.getUserAccountsByUid(uid)\n let account = Platform.BL && blAccount\n account ||= Platform.SS && ssAccount\n if (!account) {\n throw new AccountBindingNotFoundError()\n }\n\n let diffOption\n if (c.options.d || c.options.m) {\n diffOption = {\n difficulty: convertDiff(c.options.d),\n mode: c.options.m,\n }\n }\n const mapId = c.input\n const score = await c.services.api.getScoreByPlayerIdAndMapId(\n account.
|
1
|
+
{"version":3,"sources":["../../../src/cmd/score.ts"],"sourcesContent":["import { CommandBuilder } from \"@/interface\";\nimport { Platform, convertDiff } from '@/utils'\nimport {\n AccountBindingNotFoundError,\n ScoreNotFoundError,\n} from '@/services/errors'\nexport default () =>\n new CommandBuilder()\n .setName('score')\n .addOption('d', 'difficulty:string')\n .addOption('m', 'mode:string')\n .addAlias('bbscore')\n .addAlias('/score')\n .setExecutor(async (c) => {\n let uid = c.session.user.id\n // let preference = c.userPreference\n if (c.session.mentions && c.session.mentions.length > 0) {\n uid = c.session.mentions[0].id\n // preference = await c.userPreference.getUserPreference(uid)\n }\n\n const { blAccount, ssAccount } = await c.services.db.getUserAccountsByUid(uid)\n let account = Platform.BL && blAccount\n account ||= Platform.SS && ssAccount\n if (!account) {\n throw new AccountBindingNotFoundError()\n }\n\n let diffOption\n if (c.options.d || c.options.m) {\n diffOption = {\n difficulty: convertDiff(c.options.d),\n mode: c.options.m,\n }\n }\n const mapId = c.input\n const score = await c.services.api.getScoreByPlayerIdAndMapId(\n account.accountId,\n mapId,\n diffOption\n )\n if(!score) {\n throw new ScoreNotFoundError({\n user: account.providerUsername, id: mapId,\n diff: diffOption?.difficulty, mode: c.options.m,\n })\n }\n const img = await c.services.render.renderScore(score.id?.toString())\n await c.session.sendImgBuffer(img)\n })\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAS,sBAAsB;AAC/B,SAAS,UAAU,mBAAmB;AACtC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,IAAO,gBAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,OAAO,EACf,UAAU,KAAK,mBAAmB,EAClC,UAAU,KAAK,aAAa,EAC5B,SAAS,SAAS,EAClB,SAAS,QAAQ,EACjB,YAAY,CAAO,MAAM;AAb9B;AAcM,MAAI,MAAM,EAAE,QAAQ,KAAK;AAEzB,MAAI,EAAE,QAAQ,YAAY,EAAE,QAAQ,SAAS,SAAS,GAAG;AACvD,UAAM,EAAE,QAAQ,SAAS,CAAC,EAAE;AAAA,EAE9B;AAEA,QAAM,EAAE,WAAW,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,GAAG;AAC7E,MAAI,UAAU,SAAS,MAAM;AAC7B,wBAAY,SAAS,MAAM;AAC3B,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,4BAA4B;AAAA,EACxC;AAEA,MAAI;AACJ,MAAI,EAAE,QAAQ,KAAK,EAAE,QAAQ,GAAG;AAC9B,iBAAa;AAAA,MACX,YAAY,YAAY,EAAE,QAAQ,CAAC;AAAA,MACnC,MAAM,EAAE,QAAQ;AAAA,IAClB;AAAA,EACF;AACA,QAAM,QAAQ,EAAE;AAChB,QAAM,QAAQ,MAAM,EAAE,SAAS,IAAI;AAAA,IACjC,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF;AACA,MAAG,CAAC,OAAO;AACT,UAAM,IAAI,mBAAmB;AAAA,MAC3B,MAAM,QAAQ;AAAA,MAAkB,IAAI;AAAA,MACpC,MAAM,yCAAY;AAAA,MAAY,MAAM,EAAE,QAAQ;AAAA,IAChD,CAAC;AAAA,EACH;AACA,QAAM,MAAM,MAAM,EAAE,SAAS,OAAO,aAAY,WAAM,OAAN,mBAAU,UAAU;AACpE,QAAM,EAAE,QAAQ,cAAc,GAAG;AACnC,EAAC;","names":[]}
|
@@ -41,7 +41,7 @@ import { SubscriptionExistError } from "../../services/errors/index.js";
|
|
41
41
|
const beatleader = (c) => __async(null, null, function* () {
|
42
42
|
const { blSub } = yield c.services.db.getSubscriptionsByGID(c.session.channel.id);
|
43
43
|
if (blSub) {
|
44
|
-
if (blSub.
|
44
|
+
if (blSub.enabled) {
|
45
45
|
throw new SubscriptionExistError();
|
46
46
|
}
|
47
47
|
const data2 = __spreadProps(__spreadValues({}, blSub), { enable: true });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/subscribe/beatleader.ts"],"sourcesContent":["import { CmdContext } from '@/interface'\nimport { SubscriptionExistError } from '@/services/errors'\n\nexport const beatleader = async (c: CmdContext) => {\n const { blSub } = await c.services.db.getSubscriptionsByGID(c.session.channel.id)\n if (blSub) {\n if (blSub.
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/subscribe/beatleader.ts"],"sourcesContent":["import { CmdContext } from '@/interface'\nimport { SubscriptionExistError } from '@/services/errors'\n\nexport const beatleader = async (c: CmdContext) => {\n const { blSub } = await c.services.db.getSubscriptionsByGID(c.session.channel.id)\n if (blSub) {\n if (blSub.enabled) {\n throw new SubscriptionExistError()\n }\n const data = { ...blSub, enable: true }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatleader.success')\n )\n return\n }\n\n const data = {\n gid: c.session.channel.id,\n type: 'beatleader-score',\n time: new Date(),\n enable: true,\n data: {},\n }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatleader.success')\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,8BAA8B;AAEhC,MAAM,aAAa,CAAO,MAAkB;AACjD,QAAM,EAAE,MAAM,IAAI,MAAM,EAAE,SAAS,GAAG,sBAAsB,EAAE,QAAQ,QAAQ,EAAE;AAChF,MAAI,OAAO;AACT,QAAI,MAAM,SAAS;AACjB,YAAM,IAAI,uBAAuB;AAAA,IACnC;AACA,UAAMA,QAAO,iCAAK,QAAL,EAAY,QAAQ,KAAK;AACtC,UAAM,EAAE,SAAS,GAAG,mBAAmBA,KAAI;AAC3C,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,6CAA6C;AAAA,IAC9D;AACA;AAAA,EACF;AAEA,QAAM,OAAO;AAAA,IACX,KAAK,EAAE,QAAQ,QAAQ;AAAA,IACvB,MAAM;AAAA,IACN,MAAM,oBAAI,KAAK;AAAA,IACf,QAAQ;AAAA,IACR,MAAM,CAAC;AAAA,EACT;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,IAAI;AAC3C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,6CAA6C;AAAA,EAC9D;AACF;","names":["data"]}
|
@@ -41,7 +41,7 @@ import { SubscriptionExistError } from "../../services/errors/index.js";
|
|
41
41
|
const beatsaver = (c) => __async(null, null, function* () {
|
42
42
|
const { bsMapSub } = yield c.services.db.getSubscriptionsByGID(c.session.channel.id);
|
43
43
|
if (bsMapSub) {
|
44
|
-
if (bsMapSub.
|
44
|
+
if (bsMapSub.enabled) {
|
45
45
|
throw new SubscriptionExistError();
|
46
46
|
}
|
47
47
|
const data2 = __spreadProps(__spreadValues({}, bsMapSub), { enable: true });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/subscribe/beatsaver.ts"],"sourcesContent":["import { CmdContext } from '@/interface'\nimport { SubscriptionExistError } from '@/services/errors'\nexport const beatsaver = async (c: CmdContext) => {\n const { bsMapSub } = await c.services.db.getSubscriptionsByGID(c.session.channel.id)\n if (bsMapSub) {\n if (bsMapSub.
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/subscribe/beatsaver.ts"],"sourcesContent":["import { CmdContext } from '@/interface'\nimport { SubscriptionExistError } from '@/services/errors'\nexport const beatsaver = async (c: CmdContext) => {\n const { bsMapSub } = await c.services.db.getSubscriptionsByGID(c.session.channel.id)\n if (bsMapSub) {\n if (bsMapSub.enabled) {\n throw new SubscriptionExistError()\n }\n const data = { ...bsMapSub, enable: true }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatsaver.success')\n )\n return\n }\n const data = {\n gid: c.session.channel.id,\n type: 'beatsaver-map',\n time: new Date(),\n enable: true,\n data: {},\n }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatsaver.success')\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,8BAA8B;AAChC,MAAM,YAAY,CAAO,MAAkB;AAChD,QAAM,EAAE,SAAS,IAAI,MAAM,EAAE,SAAS,GAAG,sBAAsB,EAAE,QAAQ,QAAQ,EAAE;AACnF,MAAI,UAAU;AACZ,QAAI,SAAS,SAAS;AACpB,YAAM,IAAI,uBAAuB;AAAA,IACnC;AACA,UAAMA,QAAO,iCAAK,WAAL,EAAe,QAAQ,KAAK;AACzC,UAAM,EAAE,SAAS,GAAG,mBAAmBA,KAAI;AAC3C,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,4CAA4C;AAAA,IAC7D;AACA;AAAA,EACF;AACA,QAAM,OAAO;AAAA,IACX,KAAK,EAAE,QAAQ,QAAQ;AAAA,IACvB,MAAM;AAAA,IACN,MAAM,oBAAI,KAAK;AAAA,IACf,QAAQ;AAAA,IACR,MAAM,CAAC;AAAA,EACT;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,IAAI;AAC3C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,4CAA4C;AAAA,EAC7D;AACF;","names":["data"]}
|
@@ -55,7 +55,7 @@ const idBeatleaderScore = (c) => __async(null, null, function* () {
|
|
55
55
|
return ((_a = it2.data) == null ? void 0 : _a.playerId) === bluser.id;
|
56
56
|
});
|
57
57
|
if (it) {
|
58
|
-
if (it.
|
58
|
+
if (it.enabled) {
|
59
59
|
throw new SubscriptionExistError();
|
60
60
|
}
|
61
61
|
const data2 = __spreadProps(__spreadValues({}, it), { enable: true });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/subscribe/id-beatleader-score.ts"],"sourcesContent":["import { CmdContext } from '@/interface'\nimport { BLIDNotFoundError, SubscriptionExistError } from '@/services/errors'\n\nexport const idBeatleaderScore = async (c: CmdContext) => {\n if (!c.input) {\n return\n }\n const bluser = await c.services.api.BeatLeader.getPlayerInfo(c.input)\n if (!bluser) {\n throw new BLIDNotFoundError({ accountId: c.input })\n }\n\n const subscribes = await c.services.db.getIDSubscriptionByChannelIDAndType(\n c.session.channel.id,\n 'id-beatleader-score'\n )\n const it = subscribes.find((it) => it.data?.playerId === bluser.id)\n if (it) {\n if (it.
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/subscribe/id-beatleader-score.ts"],"sourcesContent":["import { CmdContext } from '@/interface'\nimport { BLIDNotFoundError, SubscriptionExistError } from '@/services/errors'\n\nexport const idBeatleaderScore = async (c: CmdContext) => {\n if (!c.input) {\n return\n }\n const bluser = await c.services.api.BeatLeader.getPlayerInfo(c.input)\n if (!bluser) {\n throw new BLIDNotFoundError({ accountId: c.input })\n }\n\n const subscribes = await c.services.db.getIDSubscriptionByChannelIDAndType(\n c.session.channel.id,\n 'id-beatleader-score'\n )\n const it = subscribes.find((it) => it.data?.playerId === bluser.id)\n if (it) {\n if (it.enabled) {\n throw new SubscriptionExistError()\n }\n\n const data = { ...it, enable: true }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatsaver-mapper.success', {\n name: bluser.name,\n })\n )\n return\n }\n const data = {\n gid: c.session.channel.id,\n type: 'id-beatsaver-map',\n time: new Date(),\n enable: true,\n data: {\n playerId: bluser.id,\n },\n }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatsaver-mapper.success', {\n name: bluser.name,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,mBAAmB,8BAA8B;AAEnD,MAAM,oBAAoB,CAAO,MAAkB;AACxD,MAAI,CAAC,EAAE,OAAO;AACZ;AAAA,EACF;AACA,QAAM,SAAS,MAAM,EAAE,SAAS,IAAI,WAAW,cAAc,EAAE,KAAK;AACpE,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,kBAAkB,EAAE,WAAW,EAAE,MAAM,CAAC;AAAA,EACpD;AAEA,QAAM,aAAa,MAAM,EAAE,SAAS,GAAG;AAAA,IACrC,EAAE,QAAQ,QAAQ;AAAA,IAClB;AAAA,EACF;AACA,QAAM,KAAK,WAAW,KAAK,CAACA,QAAI;AAhBlC;AAgBqC,kBAAAA,IAAG,SAAH,mBAAS,cAAa,OAAO;AAAA,GAAE;AAClE,MAAI,IAAI;AACN,QAAI,GAAG,SAAS;AACd,YAAM,IAAI,uBAAuB;AAAA,IACnC;AAEA,UAAMC,QAAO,iCAAK,KAAL,EAAS,QAAQ,KAAK;AACnC,UAAM,EAAE,SAAS,GAAG,mBAAmBA,KAAI;AAC3C,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,qDAAqD;AAAA,QAClE,MAAM,OAAO;AAAA,MACf,CAAC;AAAA,IACH;AACA;AAAA,EACF;AACA,QAAM,OAAO;AAAA,IACX,KAAK,EAAE,QAAQ,QAAQ;AAAA,IACvB,MAAM;AAAA,IACN,MAAM,oBAAI,KAAK;AAAA,IACf,QAAQ;AAAA,IACR,MAAM;AAAA,MACJ,UAAU,OAAO;AAAA,IACnB;AAAA,EACF;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,IAAI;AAC3C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,qDAAqD;AAAA,MAClE,MAAM,OAAO;AAAA,IACf,CAAC;AAAA,EACH;AACF;","names":["it","data"]}
|
@@ -55,7 +55,7 @@ const idBeatsaverMapper = (c) => __async(null, null, function* () {
|
|
55
55
|
return ((_a = it2.data) == null ? void 0 : _a.mapperId) === mapper.id;
|
56
56
|
});
|
57
57
|
if (it) {
|
58
|
-
if (it.
|
58
|
+
if (it.enabled) {
|
59
59
|
throw new SubscriptionExistError();
|
60
60
|
}
|
61
61
|
const data2 = __spreadProps(__spreadValues({}, it), { enable: true });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/cmd/subscribe/id-beatsaver-mapper.ts"],"sourcesContent":["import { CmdContext } from '@/interface'\nimport { BSIDNotFoundError, SubscriptionExistError } from '@/services/errors'\nexport const idBeatsaverMapper = async (c: CmdContext) => {\n if (!c.input) {\n return\n }\n const mapper = await c.services.api.BeatSaver.getBSMapperById(c.input)\n if (!mapper) {\n throw new BSIDNotFoundError({ accountId: c.input })\n }\n const subscribes = await c.services.db.getIDSubscriptionByChannelIDAndType(\n c.session.channel.id,\n 'id-beatsaver-map'\n )\n const it = subscribes.find((it) => it.data?.mapperId === mapper.id)\n if (it) {\n if (it.
|
1
|
+
{"version":3,"sources":["../../../../src/cmd/subscribe/id-beatsaver-mapper.ts"],"sourcesContent":["import { CmdContext } from '@/interface'\nimport { BSIDNotFoundError, SubscriptionExistError } from '@/services/errors'\nexport const idBeatsaverMapper = async (c: CmdContext) => {\n if (!c.input) {\n return\n }\n const mapper = await c.services.api.BeatSaver.getBSMapperById(c.input)\n if (!mapper) {\n throw new BSIDNotFoundError({ accountId: c.input })\n }\n const subscribes = await c.services.db.getIDSubscriptionByChannelIDAndType(\n c.session.channel.id,\n 'id-beatsaver-map'\n )\n const it = subscribes.find((it) => it.data?.mapperId === mapper.id)\n if (it) {\n if (it.enabled) {\n throw new SubscriptionExistError()\n }\n\n const data = { ...it, enable: true }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatsaver-mapper.success', {\n name: mapper.name,\n })\n )\n return\n }\n const data = {\n gid: c.session.channel.id,\n type: 'id-beatsaver-map',\n time: new Date(),\n enable: true,\n data: {\n mapperId: mapper.id,\n mapperName: mapper.name,\n },\n }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatsaver-mapper.success', {\n name: mapper.name,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,mBAAmB,8BAA8B;AACnD,MAAM,oBAAoB,CAAO,MAAkB;AACxD,MAAI,CAAC,EAAE,OAAO;AACZ;AAAA,EACF;AACA,QAAM,SAAS,MAAM,EAAE,SAAS,IAAI,UAAU,gBAAgB,EAAE,KAAK;AACrE,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,kBAAkB,EAAE,WAAW,EAAE,MAAM,CAAC;AAAA,EACpD;AACA,QAAM,aAAa,MAAM,EAAE,SAAS,GAAG;AAAA,IACrC,EAAE,QAAQ,QAAQ;AAAA,IAClB;AAAA,EACF;AACA,QAAM,KAAK,WAAW,KAAK,CAACA,QAAI;AAdlC;AAcqC,kBAAAA,IAAG,SAAH,mBAAS,cAAa,OAAO;AAAA,GAAE;AAClE,MAAI,IAAI;AACN,QAAI,GAAG,SAAS;AACd,YAAM,IAAI,uBAAuB;AAAA,IACnC;AAEA,UAAMC,QAAO,iCAAK,KAAL,EAAS,QAAQ,KAAK;AACnC,UAAM,EAAE,SAAS,GAAG,mBAAmBA,KAAI;AAC3C,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,qDAAqD;AAAA,QAClE,MAAM,OAAO;AAAA,MACf,CAAC;AAAA,IACH;AACA;AAAA,EACF;AACA,QAAM,OAAO;AAAA,IACX,KAAK,EAAE,QAAQ,QAAQ;AAAA,IACvB,MAAM;AAAA,IACN,MAAM,oBAAI,KAAK;AAAA,IACf,QAAQ;AAAA,IACR,MAAM;AAAA,MACJ,UAAU,OAAO;AAAA,MACjB,YAAY,OAAO;AAAA,IACrB;AAAA,EACF;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,IAAI;AAC3C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,qDAAqD;AAAA,MAClE,MAAM,OAAO;AAAA,IACf,CAAC;AAAA,EACH;AACF;","names":["it","data"]}
|
@@ -41,18 +41,18 @@ var subscribe_default = () => new CommandBuilder().setName("subscribe").addAlias
|
|
41
41
|
}
|
42
42
|
let text = c.session.text("commands.bsbot.subscribe.info.header") + "\n";
|
43
43
|
for (const row of rows) {
|
44
|
-
if (row.
|
44
|
+
if (row.subscription.type.startsWith("group")) {
|
45
45
|
text += c.session.text(
|
46
46
|
"commands.bsbot.subscribe.info.group-body-item",
|
47
47
|
{
|
48
|
-
type: row.
|
48
|
+
type: row.subscription.type + `(${(_a = row.subscription.data) == null ? void 0 : _a.mapperName} ${(_b = row.subscription.data) == null ? void 0 : _b.mapperId})`
|
49
49
|
}
|
50
50
|
);
|
51
51
|
} else {
|
52
52
|
text += c.session.text("commands.bsbot.subscribe.info.body-item", {
|
53
|
-
type: row.
|
53
|
+
type: row.subscription.type,
|
54
54
|
cnt: row.memberCount,
|
55
|
-
enable: row.
|
55
|
+
enable: row.subscription.enabled
|
56
56
|
});
|
57
57
|
if (row.me) {
|
58
58
|
text += c.session.text(
|