diff --git a/API.md b/API.md index 6d9a634..5366ab9 100644 --- a/API.md +++ b/API.md @@ -445,7 +445,7 @@ pnpm qqbot-plugin install-local ### BangDream -插件 key:`bangDream`。当前源码根目录为 `src/qqbot/plugins/bangDream`,不再使用旧 `tsugu` 子目录。 +插件 key:`bangdream`。旧 `bangDream` 作为兼容别名仍可解析;当前源码根目录为 `src/modules/qqbot/plugins/bangDream`,不再使用旧 `tsugu` 子目录。 | operation key | 命令 | 说明 | | ----------------------------- | ------------- | ------------------------ | @@ -469,7 +469,7 @@ pnpm qqbot-plugin install-local ### FF14 Market -插件 key:`ff14Market`。 +插件 key:`ff14-market`。旧 `ff14Market` 作为兼容别名仍可解析。 | operation key | 说明 | | ------------------- | ------------------------------------------ | diff --git a/README.md b/README.md index c953dec..9d94ca0 100644 --- a/README.md +++ b/README.md @@ -158,7 +158,7 @@ API 暴露 `GET /health/runtime` 作为本地 smoke、Jenkins/K8s 和 ktWorkflow - NapCat 账号新增/编辑支持可选 QQ 登录密码:Admin 只提交 RSA-OAEP 加密后的 `encryptedLoginPassword`,后端解密后必须用显式配置的 `QQBOT_ACCOUNT_SECRET_KEY`(或非默认 `ADMIN_TOKEN_SECRET`)二次加密保存到 `qqbot_account.napcat_login_password_secret`;空值、`change-me` 和历史公开默认值会被拒绝;列表和详情不回显密码,日志会脱敏密码字段。 - NapCat 容器为已知 `selfId` 创建/重建时会注入 `ACCOUNT` 环境变量启用 `-q` 快速登录:容器重启(崩溃/重启策略/宿主重启)能从持久化会话免扫码自动重登;硬踢 `登录已失效` 会话作废仍需扫码。已绑定但缺少 `ACCOUNT` 的旧容器在下一次「更新登录」时原地重建一次补齐(保留 QQ 数据卷),`docker inspect` 已带 `ACCOUNT` 则跳过,重建失败不阻断登录。`ACCOUNT` 只负责指定快速登录账号;如果数据卷内没有该 QQ 的历史登录记录,后端会跳过快速登录并优先尝试账号保存的登录密码,密码登录会按 `QQBOT_NAPCAT_PASSWORD_LOGIN_WAIT_MS` / `QQBOT_NAPCAT_LOGIN_POLL_INTERVAL_MS` 轮询结果,准备中的扫码会话会续期,避免后台密码登录未结束时前端先过期;如果 NapCat 返回 `proofWaterUrl` 或日志出现“需要验证码”,会保持会话 pending 并把腾讯验证码结果 `ticket`/`randstr`/`sid` 通过 `/qqbot/account/scan/captcha/submit` 回交到同一容器的 `/api/QQLogin/CaptchaLogin`,不是让用户只打开外链;密码登录成功后会移除运行态 `NAPCAT_QUICK_PASSWORD`,清理失败则本次登录失败,避免成功态残留明文 env;密码登录也失败、验证码未完成、离线、账号不匹配或缺少 QQ 号时才重置登录态并生成二维码。Admin「更新登录」的 SSE 步骤顺序按实际路径为 `quick-login-*`(已有历史会话)-> `password-login-*` / `password-login-captcha` -> `password-env-cleanup` -> `relogin-reset/qrcode/waiting-scan`。 - NapCat 离线看门狗按 `QQBOT_NAPCAT_WATCHDOG_INTERVAL_MS`(默认 `120000`,最小 `30000`,`QQBOT_NAPCAT_WATCHDOG_ENABLED=false` 关闭)定时巡检在线账号,使掉线/被踢无需管理员打开列表页即可及时发现;检测到离线后先尝试 `ACCOUNT` 历史会话快速登录,再尝试账号保存的登录密码,仍失败时写入离线原因并复用 `super` 站内信告警;看门狗不自动进入扫码阶段。 -- BangDream 当前源码根目录是 `src/qqbot/plugins/bangDream`;不要恢复旧 `tsugu` 层级或旧大桶目录。 +- BangDream 当前源码根目录是 `src/modules/qqbot/plugins/bangDream`;不要恢复旧 `tsugu` 层级或旧大桶目录。 - BangDream 在线命令以 `registry/operation-registry.ts` 为单一来源,新增命令必须同步 SQL/在线命令表并跑 registry/command-SQL 测试。 - BangDream event stage 大图必须保持分页拆图行为,线上 smoke 关注 `imageCount=5`,避免大 canvas OOM 回归。 @@ -194,4 +194,4 @@ BangDream 图片能力改动: | 一级来源 | 使用方式 | License | | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------- | -| [Tsugu BangDream Bot](https://github.com/Yamamoto-2/tsugu-bangdream-bot) | BangDream QQBot 后端能力已重构合入 `src/qqbot/plugins/bangDream`,保留本地 `TSUGU-LICENSE` | MIT | +| [Tsugu BangDream Bot](https://github.com/Yamamoto-2/tsugu-bangdream-bot) | BangDream QQBot 后端能力已重构合入 `src/modules/qqbot/plugins/bangDream`,保留本地 `TSUGU-LICENSE` | MIT | diff --git a/docs/superpowers/plans/2026-06-15-api-admin-full-refactor-v3.md b/docs/superpowers/plans/2026-06-15-api-admin-full-refactor-v3.md index 24052fc..039346e 100644 --- a/docs/superpowers/plans/2026-06-15-api-admin-full-refactor-v3.md +++ b/docs/superpowers/plans/2026-06-15-api-admin-full-refactor-v3.md @@ -1195,15 +1195,15 @@ git -C D:\MyFiles\KT\Vue\kt-template-admin commit -m "feat: 增加QQBot插件管 - Create/modify: `D:\MyFiles\KT\Node\kt-template-online-api\src\modules\qqbot\plugins\bangDream\**` - Test: `D:\MyFiles\KT\Node\kt-template-online-api\test\modules\qqbot\plugins\bangDream\**` -- [ ] **Step 1: Preserve business directories** +- [x] **Step 1: Preserve business directories** Keep business capabilities in `song`, `card`, `character`, `event`, `gacha`, `player`, `cutoff`, `catalog`, with cross-cutting code only in `application`, `registry`, `hook`, `provider`, `policy`, `theme`, `config`, `dictionary`, `search`, `shared`. -- [ ] **Step 2: Convert operation registry to manifest metadata** +- [x] **Step 2: Convert operation registry to manifest metadata** Keep operation keys and aliases stable. `handlerName` becomes worker-internal. -- [ ] **Step 3: Verify BangDream** +- [x] **Step 3: Verify BangDream** Run: @@ -1214,6 +1214,8 @@ pnpm --dir D:\MyFiles\KT\Node\kt-template-online-api run typecheck Expected: PASS. Event stage smoke keeps `imageCount=5`. +Actual note: BangDream moved to `src/modules/qqbot/plugins/bangDream` with the approved business and cross-cutting directory layout preserved. Added `plugin.json` with platform key `bangdream`; manifest operations are asserted against `BANGDREAM_OPERATION_REGISTRY` for stable operation keys, aliases, names, and worker-internal `handlerName`. Runtime registry now uses platform key `bangdream` as primary while resolving legacy `bangDream`; `/qqbot/plugin/*` local HTTP smoke now proves the controller returns platform keys and resolves legacy `bangDream` to `bangdream`. Verification passed via focused registry/command SQL Jest, plugin migration contract, QQBot core module contract path guard, plugin controller HTTP smoke, `pnpm run typecheck`, and `scripts/bangdream-render-smoke.ps1 -OperationKey bangdream.event.stage -Text 310`, which produced `imageCount=5`. + ### Task 6.2: Rewrite FF14 Market, FFLogs, and Repeater **Files:** @@ -1225,19 +1227,19 @@ Expected: PASS. Event stage smoke keeps `imageCount=5`. - Test: `D:\MyFiles\KT\Node\kt-template-online-api\test\modules\qqbot\plugins\fflogs\**` - Test: `D:\MyFiles\KT\Node\kt-template-online-api\test\modules\qqbot\plugins\repeater\**` -- [ ] **Step 1: FF14 Market** +- [x] **Step 1: FF14 Market** Use host runtime HTTP SDK for external requests. No direct axios client in plugin code. -- [ ] **Step 2: FFLogs** +- [x] **Step 2: FFLogs** Use plugin config for credential references. No real secret in manifest, tests, docs, or commits. -- [ ] **Step 3: Repeater** +- [x] **Step 3: Repeater** Use host send queue and account binding. Do not bypass rate limit. -- [ ] **Step 4: Verify** +- [x] **Step 4: Verify** Run: @@ -1248,6 +1250,8 @@ pnpm --dir D:\MyFiles\KT\Node\kt-template-online-api run typecheck Expected: PASS. +Actual note: FF14 Market, FFLogs, and Repeater moved to `src/modules/qqbot/plugins/*` and each now has a platform `plugin.json`. FF14 Market uses platform key `ff14-market` with legacy `ff14Market` compatibility and delegates outbound requests through `QqbotPluginHttpClientService`; FFLogs delegates outbound requests through the same host SDK and keeps credential references in manifest config schema without real secrets; Repeater remains event-plugin driven through host account binding and send queue services. Verification passed via focused plugin Jest, migration direct-HTTP scan for FF14/FFLogs, `/qqbot/plugin/list` and `/qqbot/plugin/operation/list` local HTTP smoke, and `pnpm run typecheck`; final focused Jest covered 9 suites / 27 tests. + ### Task 6.3: Commit Batch 6 Run: diff --git a/scripts/bangdream-render-smoke.ps1 b/scripts/bangdream-render-smoke.ps1 index 160016c..75867a3 100644 --- a/scripts/bangdream-render-smoke.ps1 +++ b/scripts/bangdream-render-smoke.ps1 @@ -48,8 +48,8 @@ const path = require("path"); const { ConfigService } = require("@nestjs/config"); const payload = JSON.parse(Buffer.from("$PayloadBase64", "base64").toString("utf8")); const { ToolsService } = require("./src/common/services/tool.service"); -const { QqbotBangDreamRendererService } = require("./src/qqbot/plugins/bangDream/application/bangdream-renderer.facade"); -const { TsuguApplicationService } = require("./src/qqbot/plugins/bangDream/application/bangdream-application.service"); +const { QqbotBangDreamRendererService } = require("./src/modules/qqbot/plugins/bangDream/application/bangdream-renderer.facade"); +const { TsuguApplicationService } = require("./src/modules/qqbot/plugins/bangDream/application/bangdream-application.service"); (async () => { const renderer = new QqbotBangDreamRendererService(new ConfigService({}), undefined); diff --git a/src/modules/qqbot/core/qqbot-core.module.ts b/src/modules/qqbot/core/qqbot-core.module.ts index e0d7190..920de21 100644 --- a/src/modules/qqbot/core/qqbot-core.module.ts +++ b/src/modules/qqbot/core/qqbot-core.module.ts @@ -24,6 +24,7 @@ import { QqbotDashboardService } from '@/qqbot/dashboard/qqbot-dashboard.service import { QqbotDedupe } from '@/qqbot/dedupe/qqbot-dedupe.entity'; import { QqbotDedupeService } from '@/qqbot/dedupe/qqbot-dedupe.service'; import { QqbotEventService } from '@/qqbot/event/qqbot-event.service'; +import { QqbotPluginHttpClientService } from '@/modules/qqbot/plugin-platform/sdk'; import { QqbotConversation } from '@/qqbot/message/qqbot-conversation.entity'; import { QqbotMessageController } from '@/qqbot/message/qqbot-message.controller'; import { QqbotMessage } from '@/qqbot/message/qqbot-message.entity'; @@ -39,15 +40,15 @@ import { QqbotPermissionService } from '@/qqbot/permission/qqbot-permission.serv import { QqbotEventPluginRegistryService } from '@/qqbot/plugin/qqbot-event-plugin-registry.service'; import { QqbotPluginController } from '@/qqbot/plugin/qqbot-plugin.controller'; import { QqbotPluginRegistryService } from '@/qqbot/plugin/qqbot-plugin-registry.service'; -import { QqbotBangDreamClientService } from '@/qqbot/plugins/bangDream/application/bangdream-client.service'; -import { TsuguApplicationService } from '@/qqbot/plugins/bangDream/application/bangdream-application.service'; -import { QqbotBangDreamRendererService } from '@/qqbot/plugins/bangDream/application/bangdream-renderer.facade'; -import { QqbotBangDreamPluginService } from '@/qqbot/plugins/bangDream/qqbot-bangdream.plugin'; -import { QqbotFf14ClientService } from '@/qqbot/plugins/ff14Market/qqbot-ff14-client.service'; -import { QqbotFf14MarketPluginService } from '@/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin'; -import { QqbotFflogsClientService } from '@/qqbot/plugins/fflogs/qqbot-fflogs-client.service'; -import { QqbotFflogsPluginService } from '@/qqbot/plugins/fflogs/qqbot-fflogs.plugin'; -import { QqbotRepeaterPluginService } from '@/qqbot/plugins/repeater/qqbot-repeater.plugin'; +import { QqbotBangDreamClientService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-client.service'; +import { TsuguApplicationService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-application.service'; +import { QqbotBangDreamRendererService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-renderer.facade'; +import { QqbotBangDreamPluginService } from '@/modules/qqbot/plugins/bangDream/qqbot-bangdream.plugin'; +import { QqbotFf14ClientService } from '@/modules/qqbot/plugins/ff14Market/qqbot-ff14-client.service'; +import { QqbotFf14MarketPluginService } from '@/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin'; +import { QqbotFflogsClientService } from '@/modules/qqbot/plugins/fflogs/qqbot-fflogs-client.service'; +import { QqbotFflogsPluginService } from '@/modules/qqbot/plugins/fflogs/qqbot-fflogs.plugin'; +import { QqbotRepeaterPluginService } from '@/modules/qqbot/plugins/repeater/qqbot-repeater.plugin'; import { QqbotRuleController } from '@/qqbot/rule/qqbot-rule.controller'; import { QqbotRule } from '@/qqbot/rule/qqbot-rule.entity'; import { QqbotRuleEngineService } from '@/qqbot/rule/qqbot-rule-engine.service'; @@ -97,6 +98,7 @@ export const QQBOT_CORE_PROVIDERS = [ QqbotDashboardService, QqbotDedupeService, QqbotEventService, + QqbotPluginHttpClientService, QqbotBangDreamClientService, QqbotBangDreamPluginService, QqbotBangDreamRendererService, diff --git a/src/modules/qqbot/plugin-platform/plugin-platform.module.ts b/src/modules/qqbot/plugin-platform/plugin-platform.module.ts index 19f0635..101cb90 100644 --- a/src/modules/qqbot/plugin-platform/plugin-platform.module.ts +++ b/src/modules/qqbot/plugin-platform/plugin-platform.module.ts @@ -4,14 +4,15 @@ import { AdminAuthGuardModule } from '@/admin/auth/admin-auth-guard.module'; import { QqbotPluginPlatformController } from './plugin-platform.controller'; import { QqbotPluginPlatformService } from './plugin-platform.service'; import { QQBOT_PLUGIN_PLATFORM_ENTITIES } from './persistence'; +import { QqbotPluginHttpClientService } from './sdk'; @Module({ controllers: [QqbotPluginPlatformController], - exports: [QqbotPluginPlatformService], + exports: [QqbotPluginHttpClientService, QqbotPluginPlatformService], imports: [ AdminAuthGuardModule, TypeOrmModule.forFeature([...QQBOT_PLUGIN_PLATFORM_ENTITIES]), ], - providers: [QqbotPluginPlatformService], + providers: [QqbotPluginHttpClientService, QqbotPluginPlatformService], }) export class QqbotPluginPlatformModule {} diff --git a/src/modules/qqbot/plugin-platform/sdk/index.ts b/src/modules/qqbot/plugin-platform/sdk/index.ts index 2d43e69..59e745b 100644 --- a/src/modules/qqbot/plugin-platform/sdk/index.ts +++ b/src/modules/qqbot/plugin-platform/sdk/index.ts @@ -1 +1,2 @@ export * from './plugin-sdk'; +export * from './plugin-http-client.service'; diff --git a/src/modules/qqbot/plugin-platform/sdk/plugin-http-client.service.ts b/src/modules/qqbot/plugin-platform/sdk/plugin-http-client.service.ts new file mode 100644 index 0000000..256c769 --- /dev/null +++ b/src/modules/qqbot/plugin-platform/sdk/plugin-http-client.service.ts @@ -0,0 +1,81 @@ +import { Injectable } from '@nestjs/common'; +import * as http from 'node:http'; +import * as https from 'node:https'; + +export type QqbotPluginHttpClientRequest = { + body?: Buffer | string; + context?: string; + failureMessage?: (statusCode: number) => string; + headers?: Record; + invalidJsonMessage?: string; + method?: string; + timeoutMessage?: string; + timeoutMs?: number; + url: string | URL; +}; + +@Injectable() +export class QqbotPluginHttpClientService { + async requestJson(input: QqbotPluginHttpClientRequest): Promise { + const body = await this.requestText(input); + try { + return JSON.parse(body) as T; + } catch { + throw new Error( + input.invalidJsonMessage || + `${input.context || '插件 HTTP 接口'}返回不是合法 JSON`, + ); + } + } + + requestText(input: QqbotPluginHttpClientRequest): Promise { + const url = input.url instanceof URL ? input.url : new URL(input.url); + const method = input.method || 'GET'; + const timeoutMs = input.timeoutMs || 8000; + const context = input.context || '插件 HTTP 接口'; + + return new Promise((resolve, reject) => { + const client = url.protocol === 'http:' ? http : https; + const request = client.request( + url, + { + headers: { + Accept: 'application/json', + 'User-Agent': 'kt-template-online-api/qqbot-plugin', + ...(input.headers || {}), + }, + method, + timeout: timeoutMs, + }, + (response) => { + let responseBody = ''; + response.setEncoding('utf8'); + response.on('data', (chunk) => { + responseBody += chunk; + }); + response.on('end', () => { + const statusCode = response.statusCode || 500; + if (statusCode >= 400) { + reject( + new Error( + input.failureMessage?.(statusCode) || + `${context}请求失败:${statusCode}`, + ), + ); + return; + } + resolve(responseBody); + }); + }, + ); + request.on('timeout', () => { + request.destroy( + new Error(input.timeoutMessage || `${context}请求超时`), + ); + }); + request.on('error', reject); + if (input.body) request.write(input.body); + request.end(); + }); + } +} diff --git a/src/qqbot/plugins/bangDream/TSUGU-LICENSE b/src/modules/qqbot/plugins/bangDream/TSUGU-LICENSE similarity index 100% rename from src/qqbot/plugins/bangDream/TSUGU-LICENSE rename to src/modules/qqbot/plugins/bangDream/TSUGU-LICENSE diff --git a/src/qqbot/plugins/bangDream/application/bangdream-application.service.ts b/src/modules/qqbot/plugins/bangDream/application/bangdream-application.service.ts similarity index 73% rename from src/qqbot/plugins/bangDream/application/bangdream-application.service.ts rename to src/modules/qqbot/plugins/bangDream/application/bangdream-application.service.ts index 20bea14..909b697 100644 --- a/src/qqbot/plugins/bangDream/application/bangdream-application.service.ts +++ b/src/modules/qqbot/plugins/bangDream/application/bangdream-application.service.ts @@ -4,15 +4,15 @@ import type { QqbotBangDreamCommandInput, QqbotBangDreamCommandOutput, QqbotBangDreamOperationKey, -} from '@/qqbot/plugins/bangDream/qqbot-bangdream.types'; -import { waitForMainDataReady } from '@/qqbot/plugins/bangDream/shared/main-data-store'; +} from '@/modules/qqbot/plugins/bangDream/qqbot-bangdream.types'; +import { waitForMainDataReady } from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; import { createTsuguLogHook, TsuguHookRegistry, -} from '@/qqbot/plugins/bangDream/hook/hook-registry'; -import { getBangDreamOperationDefinition } from '@/qqbot/plugins/bangDream/registry/operation-registry'; -import { TsuguOperationPipeline } from '@/qqbot/plugins/bangDream/application/operation-pipeline'; -import { QqbotBangDreamRendererService } from '@/qqbot/plugins/bangDream/application/bangdream-renderer.facade'; +} from '@/modules/qqbot/plugins/bangDream/hook/hook-registry'; +import { getBangDreamOperationDefinition } from '@/modules/qqbot/plugins/bangDream/registry/operation-registry'; +import { TsuguOperationPipeline } from '@/modules/qqbot/plugins/bangDream/application/operation-pipeline'; +import { QqbotBangDreamRendererService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-renderer.facade'; @Injectable() export class TsuguApplicationService implements OnApplicationBootstrap { diff --git a/src/qqbot/plugins/bangDream/application/bangdream-client.service.ts b/src/modules/qqbot/plugins/bangDream/application/bangdream-client.service.ts similarity index 81% rename from src/qqbot/plugins/bangDream/application/bangdream-client.service.ts rename to src/modules/qqbot/plugins/bangDream/application/bangdream-client.service.ts index 84f16c6..c547b68 100644 --- a/src/qqbot/plugins/bangDream/application/bangdream-client.service.ts +++ b/src/modules/qqbot/plugins/bangDream/application/bangdream-client.service.ts @@ -4,8 +4,8 @@ import type { QqbotBangDreamOperationKey, QqbotBangDreamSongSearchInput, QqbotBangDreamSongSummary, -} from '@/qqbot/plugins/bangDream/qqbot-bangdream.types'; -import { TsuguApplicationService } from '@/qqbot/plugins/bangDream/application/bangdream-application.service'; +} from '@/modules/qqbot/plugins/bangDream/qqbot-bangdream.types'; +import { TsuguApplicationService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-application.service'; @Injectable() export class QqbotBangDreamClientService { diff --git a/src/qqbot/plugins/bangDream/application/bangdream-renderer.facade.ts b/src/modules/qqbot/plugins/bangDream/application/bangdream-renderer.facade.ts similarity index 85% rename from src/qqbot/plugins/bangDream/application/bangdream-renderer.facade.ts rename to src/modules/qqbot/plugins/bangDream/application/bangdream-renderer.facade.ts index 09f1d79..db59f33 100644 --- a/src/qqbot/plugins/bangDream/application/bangdream-renderer.facade.ts +++ b/src/modules/qqbot/plugins/bangDream/application/bangdream-renderer.facade.ts @@ -1,54 +1,59 @@ import { Injectable, Optional } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { DictService } from '@/admin/dict/dict.service'; -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; -import { getPresentEvent } from '@/qqbot/plugins/bangDream/event/event.model'; -import { Gacha, getPresentGachaList } from '@/qqbot/plugins/bangDream/gacha/gacha.model'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; +import { getPresentEvent } from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { + Gacha, + getPresentGachaList, +} from '@/modules/qqbot/plugins/bangDream/gacha/gacha.model'; import { BANGDREAM_GACHA_DEFAULT_SPIN_COUNT, isBirthdayGachaType, -} from '@/qqbot/plugins/bangDream/policy/gacha.policy'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { Song } from '@/qqbot/plugins/bangDream/song/song.model'; -import mainAPI, { waitForMainDataReady } from '@/qqbot/plugins/bangDream/shared/main-data-store'; +} from '@/modules/qqbot/plugins/bangDream/policy/gacha.policy'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { Song } from '@/modules/qqbot/plugins/bangDream/song/song.model'; +import mainAPI, { + waitForMainDataReady, +} from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; import { fuzzySearch, type FuzzySearchResult, -} from '@/qqbot/plugins/bangDream/search/fuzzy-search'; -import { drawCardDetail } from '@/qqbot/plugins/bangDream/card/card-detail.renderer'; -import { drawCardList } from '@/qqbot/plugins/bangDream/card/card-search.renderer'; -import { drawCharacterDetail } from '@/qqbot/plugins/bangDream/character/character-detail.renderer'; -import { drawCharacterList } from '@/qqbot/plugins/bangDream/character/character-search.renderer'; -import { drawCutoffAll } from '@/qqbot/plugins/bangDream/cutoff/cutoff-all.renderer'; -import { drawCutoffDetail } from '@/qqbot/plugins/bangDream/cutoff/cutoff-detail.renderer'; -import { drawCutoffEventTop } from '@/qqbot/plugins/bangDream/cutoff/cutoff-event-top.renderer'; -import { drawCutoffListOfRecentEvent } from '@/qqbot/plugins/bangDream/cutoff/cutoff-recent.renderer'; -import { drawEventDetail } from '@/qqbot/plugins/bangDream/event/event-detail.renderer'; -import { drawEventList } from '@/qqbot/plugins/bangDream/event/event-search.renderer'; -import { drawEventStage } from '@/qqbot/plugins/bangDream/event/event-stage.renderer'; -import { drawGachaDetail } from '@/qqbot/plugins/bangDream/gacha/gacha-detail.renderer'; -import { drawRandomGacha } from '@/qqbot/plugins/bangDream/gacha/gacha-simulate.renderer'; -import { drawPlayerDetail } from '@/qqbot/plugins/bangDream/player/player-detail.renderer'; -import { drawSongChart } from '@/qqbot/plugins/bangDream/song/song-chart.renderer'; -import { drawSongDetail } from '@/qqbot/plugins/bangDream/song/song-detail.renderer'; -import { drawSongList } from '@/qqbot/plugins/bangDream/song/song-search.renderer'; -import { drawSongMetaList } from '@/qqbot/plugins/bangDream/song/song-meta.renderer'; -import { drawSongRandom } from '@/qqbot/plugins/bangDream/song/song-random.renderer'; +} from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search'; +import { drawCardDetail } from '@/modules/qqbot/plugins/bangDream/card/card-detail.renderer'; +import { drawCardList } from '@/modules/qqbot/plugins/bangDream/card/card-search.renderer'; +import { drawCharacterDetail } from '@/modules/qqbot/plugins/bangDream/character/character-detail.renderer'; +import { drawCharacterList } from '@/modules/qqbot/plugins/bangDream/character/character-search.renderer'; +import { drawCutoffAll } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-all.renderer'; +import { drawCutoffDetail } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-detail.renderer'; +import { drawCutoffEventTop } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.renderer'; +import { drawCutoffListOfRecentEvent } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-recent.renderer'; +import { drawEventDetail } from '@/modules/qqbot/plugins/bangDream/event/event-detail.renderer'; +import { drawEventList } from '@/modules/qqbot/plugins/bangDream/event/event-search.renderer'; +import { drawEventStage } from '@/modules/qqbot/plugins/bangDream/event/event-stage.renderer'; +import { drawGachaDetail } from '@/modules/qqbot/plugins/bangDream/gacha/gacha-detail.renderer'; +import { drawRandomGacha } from '@/modules/qqbot/plugins/bangDream/gacha/gacha-simulate.renderer'; +import { drawPlayerDetail } from '@/modules/qqbot/plugins/bangDream/player/player-detail.renderer'; +import { drawSongChart } from '@/modules/qqbot/plugins/bangDream/song/song-chart.renderer'; +import { drawSongDetail } from '@/modules/qqbot/plugins/bangDream/song/song-detail.renderer'; +import { drawSongList } from '@/modules/qqbot/plugins/bangDream/song/song-search.renderer'; +import { drawSongMetaList } from '@/modules/qqbot/plugins/bangDream/song/song-meta.renderer'; +import { drawSongRandom } from '@/modules/qqbot/plugins/bangDream/song/song-random.renderer'; import { BangDreamDictionaryLoader, type BangDreamDictionaryItem, -} from '@/qqbot/plugins/bangDream/dictionary/dictionary-loader'; -import type { QqbotBangDreamOperationHandlerName } from '@/qqbot/plugins/bangDream/registry/operation-registry'; +} from '@/modules/qqbot/plugins/bangDream/dictionary/dictionary-loader'; +import type { QqbotBangDreamOperationHandlerName } from '@/modules/qqbot/plugins/bangDream/registry/operation-registry'; import { BANGDREAM_TSUGU_ENV_KEYS, normalizeBangDreamBoolean, splitBangDreamOptionList, -} from '@/qqbot/plugins/bangDream/config/runtime-options'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-options'; import type { QqbotBangDreamCommandInput, QqbotBangDreamCommandOutput, QqbotBangDreamOperationKey, -} from '@/qqbot/plugins/bangDream/qqbot-bangdream.types'; +} from '@/modules/qqbot/plugins/bangDream/qqbot-bangdream.types'; const SOURCE_NAME = 'Tsugu BangDream Bot 内置源码'; diff --git a/src/qqbot/plugins/bangDream/application/operation-pipeline.ts b/src/modules/qqbot/plugins/bangDream/application/operation-pipeline.ts similarity index 91% rename from src/qqbot/plugins/bangDream/application/operation-pipeline.ts rename to src/modules/qqbot/plugins/bangDream/application/operation-pipeline.ts index b8351f7..1723446 100644 --- a/src/qqbot/plugins/bangDream/application/operation-pipeline.ts +++ b/src/modules/qqbot/plugins/bangDream/application/operation-pipeline.ts @@ -2,15 +2,15 @@ import type { QqbotBangDreamCommandInput, QqbotBangDreamCommandOutput, QqbotBangDreamOperationKey, -} from '@/qqbot/plugins/bangDream/qqbot-bangdream.types'; +} from '@/modules/qqbot/plugins/bangDream/qqbot-bangdream.types'; import type { QqbotBangDreamOperationHandlerName, TsuguOperationDefinition, -} from '@/qqbot/plugins/bangDream/registry/operation-registry'; +} from '@/modules/qqbot/plugins/bangDream/registry/operation-registry'; import { createTsuguHookContext, type TsuguHookRegistry, -} from '@/qqbot/plugins/bangDream/hook/hook-registry'; +} from '@/modules/qqbot/plugins/bangDream/hook/hook-registry'; export type TsuguOperationPipelineOptions = { executeHandler: ( diff --git a/src/qqbot/plugins/bangDream/assets/BG/bg_object_big.png b/src/modules/qqbot/plugins/bangDream/assets/BG/bg_object_big.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/BG/bg_object_big.png rename to src/modules/qqbot/plugins/bangDream/assets/BG/bg_object_big.png diff --git a/src/qqbot/plugins/bangDream/assets/BG/common.png b/src/modules/qqbot/plugins/bangDream/assets/BG/common.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/BG/common.png rename to src/modules/qqbot/plugins/bangDream/assets/BG/common.png diff --git a/src/qqbot/plugins/bangDream/assets/BG/live.png b/src/modules/qqbot/plugins/bangDream/assets/BG/live.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/BG/live.png rename to src/modules/qqbot/plugins/bangDream/assets/BG/live.png diff --git a/src/qqbot/plugins/bangDream/assets/BG/star1.png b/src/modules/qqbot/plugins/bangDream/assets/BG/star1.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/BG/star1.png rename to src/modules/qqbot/plugins/bangDream/assets/BG/star1.png diff --git a/src/qqbot/plugins/bangDream/assets/BG/star2.png b/src/modules/qqbot/plugins/bangDream/assets/BG/star2.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/BG/star2.png rename to src/modules/qqbot/plugins/bangDream/assets/BG/star2.png diff --git a/src/qqbot/plugins/bangDream/assets/Card/B.png b/src/modules/qqbot/plugins/bangDream/assets/Card/B.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Card/B.png rename to src/modules/qqbot/plugins/bangDream/assets/Card/B.png diff --git a/src/qqbot/plugins/bangDream/assets/Card/D.png b/src/modules/qqbot/plugins/bangDream/assets/Card/D.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Card/D.png rename to src/modules/qqbot/plugins/bangDream/assets/Card/D.png diff --git a/src/qqbot/plugins/bangDream/assets/Card/K.png b/src/modules/qqbot/plugins/bangDream/assets/Card/K.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Card/K.png rename to src/modules/qqbot/plugins/bangDream/assets/Card/K.png diff --git a/src/qqbot/plugins/bangDream/assets/Card/L.png b/src/modules/qqbot/plugins/bangDream/assets/Card/L.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Card/L.png rename to src/modules/qqbot/plugins/bangDream/assets/Card/L.png diff --git a/src/qqbot/plugins/bangDream/assets/Card/limitBreakRank.png b/src/modules/qqbot/plugins/bangDream/assets/Card/limitBreakRank.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Card/limitBreakRank.png rename to src/modules/qqbot/plugins/bangDream/assets/Card/limitBreakRank.png diff --git a/src/qqbot/plugins/bangDream/assets/Card/star.png b/src/modules/qqbot/plugins/bangDream/assets/Card/star.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Card/star.png rename to src/modules/qqbot/plugins/bangDream/assets/Card/star.png diff --git a/src/qqbot/plugins/bangDream/assets/Card/star_trained.png b/src/modules/qqbot/plugins/bangDream/assets/Card/star_trained.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Card/star_trained.png rename to src/modules/qqbot/plugins/bangDream/assets/Card/star_trained.png diff --git a/src/qqbot/plugins/bangDream/assets/Card/text.png b/src/modules/qqbot/plugins/bangDream/assets/Card/text.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Card/text.png rename to src/modules/qqbot/plugins/bangDream/assets/Card/text.png diff --git a/src/qqbot/plugins/bangDream/assets/EventStage/combo.png b/src/modules/qqbot/plugins/bangDream/assets/EventStage/combo.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/EventStage/combo.png rename to src/modules/qqbot/plugins/bangDream/assets/EventStage/combo.png diff --git a/src/qqbot/plugins/bangDream/assets/EventStage/judge.png b/src/modules/qqbot/plugins/bangDream/assets/EventStage/judge.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/EventStage/judge.png rename to src/modules/qqbot/plugins/bangDream/assets/EventStage/judge.png diff --git a/src/qqbot/plugins/bangDream/assets/EventStage/life.png b/src/modules/qqbot/plugins/bangDream/assets/EventStage/life.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/EventStage/life.png rename to src/modules/qqbot/plugins/bangDream/assets/EventStage/life.png diff --git a/src/qqbot/plugins/bangDream/assets/EventStage/presentEventMark.png b/src/modules/qqbot/plugins/bangDream/assets/EventStage/presentEventMark.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/EventStage/presentEventMark.png rename to src/modules/qqbot/plugins/bangDream/assets/EventStage/presentEventMark.png diff --git a/src/qqbot/plugins/bangDream/assets/EventStage/undefined.png b/src/modules/qqbot/plugins/bangDream/assets/EventStage/undefined.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/EventStage/undefined.png rename to src/modules/qqbot/plugins/bangDream/assets/EventStage/undefined.png diff --git a/src/qqbot/plugins/bangDream/assets/Fonts/FangZhengHeiTi_GBK.ttf b/src/modules/qqbot/plugins/bangDream/assets/Fonts/FangZhengHeiTi_GBK.ttf similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Fonts/FangZhengHeiTi_GBK.ttf rename to src/modules/qqbot/plugins/bangDream/assets/Fonts/FangZhengHeiTi_GBK.ttf diff --git a/src/qqbot/plugins/bangDream/assets/Fonts/Orbitron Black.ttf b/src/modules/qqbot/plugins/bangDream/assets/Fonts/Orbitron Black.ttf similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Fonts/Orbitron Black.ttf rename to src/modules/qqbot/plugins/bangDream/assets/Fonts/Orbitron Black.ttf diff --git a/src/qqbot/plugins/bangDream/assets/Fonts/old.ttf b/src/modules/qqbot/plugins/bangDream/assets/Fonts/old.ttf similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Fonts/old.ttf rename to src/modules/qqbot/plugins/bangDream/assets/Fonts/old.ttf diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_0.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_0.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_0.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_0.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_1.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_1.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_1.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_1.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_1_1.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_1_1.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_1_1.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_1_1.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_1_2.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_1_2.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_1_2.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_1_2.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_1_3.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_1_3.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_1_3.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_1_3.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_2.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_2.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_2.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_2.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_2_1.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_2_1.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_2_1.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_2_1.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_2_2.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_2_2.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_2_2.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_2_2.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_2_3.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_2_3.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_2_3.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_2_3.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_3.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_3.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_3.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_3.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_3_1.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_3_1.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_3_1.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_3_1.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_3_2.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_3_2.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_3_2.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_3_2.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_3_3.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_3_3.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_3_3.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_3_3.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_4.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_4.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_4_0.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_0.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_4_0.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_0.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_4_1.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_1.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_4_1.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_1.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_4_2.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_2.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_4_2.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_2.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_4_3.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_3.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_4_3.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_3.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_4_4.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_4.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_4_4.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_4.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_4_5.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_5.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_4_5.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_5.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_4_6.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_6.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_4_6.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_6.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_4_7.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_7.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_4_7.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_7.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_4_8.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_8.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_4_8.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_8.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_4_9.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_9.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_4_9.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_4_9.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_5.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_5.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_5.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_5.png diff --git a/src/qqbot/plugins/bangDream/assets/Rank/rank_6.png b/src/modules/qqbot/plugins/bangDream/assets/Rank/rank_6.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Rank/rank_6.png rename to src/modules/qqbot/plugins/bangDream/assets/Rank/rank_6.png diff --git a/src/qqbot/plugins/bangDream/assets/Skill/damage.png b/src/modules/qqbot/plugins/bangDream/assets/Skill/damage.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Skill/damage.png rename to src/modules/qqbot/plugins/bangDream/assets/Skill/damage.png diff --git a/src/qqbot/plugins/bangDream/assets/Skill/judge.png b/src/modules/qqbot/plugins/bangDream/assets/Skill/judge.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Skill/judge.png rename to src/modules/qqbot/plugins/bangDream/assets/Skill/judge.png diff --git a/src/qqbot/plugins/bangDream/assets/Skill/life.png b/src/modules/qqbot/plugins/bangDream/assets/Skill/life.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/Skill/life.png rename to src/modules/qqbot/plugins/bangDream/assets/Skill/life.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/jacket.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/jacket.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/jacket.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/jacket.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/Bar.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Bar.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/Bar.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Bar.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/Flick.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Flick.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/Flick.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Flick.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/FlickTop.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/FlickTop.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/FlickTop.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/FlickTop.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/LeftArrow.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/LeftArrow.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/LeftArrow.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/LeftArrow.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/LeftArrowEnd.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/LeftArrowEnd.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/LeftArrowEnd.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/LeftArrowEnd.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/Long.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Long.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/Long.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Long.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/RightArrow.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/RightArrow.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/RightArrow.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/RightArrow.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/RightArrowEnd.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/RightArrowEnd.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/RightArrowEnd.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/RightArrowEnd.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/Sim.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Sim.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/Sim.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Sim.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/Single.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Single.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/Single.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Single.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/SingleOff.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/SingleOff.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/SingleOff.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/SingleOff.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/Skill.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Skill.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/Skill.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Skill.png diff --git a/src/qqbot/plugins/bangDream/assets/SongChart/note/Tick.png b/src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Tick.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/SongChart/note/Tick.png rename to src/modules/qqbot/plugins/bangDream/assets/SongChart/note/Tick.png diff --git a/src/qqbot/plugins/bangDream/assets/err.png b/src/modules/qqbot/plugins/bangDream/assets/err.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/err.png rename to src/modules/qqbot/plugins/bangDream/assets/err.png diff --git a/src/qqbot/plugins/bangDream/assets/title.png b/src/modules/qqbot/plugins/bangDream/assets/title.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/title.png rename to src/modules/qqbot/plugins/bangDream/assets/title.png diff --git a/src/qqbot/plugins/bangDream/assets/tw.png b/src/modules/qqbot/plugins/bangDream/assets/tw.png similarity index 100% rename from src/qqbot/plugins/bangDream/assets/tw.png rename to src/modules/qqbot/plugins/bangDream/assets/tw.png diff --git a/src/qqbot/plugins/bangDream/card/card-art.layout.ts b/src/modules/qqbot/plugins/bangDream/card/card-art.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/card/card-art.layout.ts rename to src/modules/qqbot/plugins/bangDream/card/card-art.layout.ts diff --git a/src/qqbot/plugins/bangDream/card/card-art.renderer.ts b/src/modules/qqbot/plugins/bangDream/card/card-art.renderer.ts similarity index 89% rename from src/qqbot/plugins/bangDream/card/card-art.renderer.ts rename to src/modules/qqbot/plugins/bangDream/card/card-art.renderer.ts index 775e85e..7925ca2 100644 --- a/src/qqbot/plugins/bangDream/card/card-art.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-art.renderer.ts @@ -1,18 +1,18 @@ -import { setFontStyle } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { Band } from '@/qqbot/plugins/bangDream/catalog/band.model'; -import { Attribute } from '@/qqbot/plugins/bangDream/catalog/attribute.model'; -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; +import { setFontStyle } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { Band } from '@/modules/qqbot/plugins/bangDream/catalog/band.model'; +import { Attribute } from '@/modules/qqbot/plugins/bangDream/catalog/attribute.model'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; import { Image, Canvas, loadImage } from 'skia-canvas'; -import { drawCardIconSkill } from '@/qqbot/plugins/bangDream/card/card-skill-text.renderer'; -import { Skill } from '@/qqbot/plugins/bangDream/catalog/skill.model'; -import { loadImageFromPath } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { getBangDreamAssetPath } from '@/qqbot/plugins/bangDream/theme/asset-manifest'; -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +import { drawCardIconSkill } from '@/modules/qqbot/plugins/bangDream/card/card-skill-text.renderer'; +import { Skill } from '@/modules/qqbot/plugins/bangDream/catalog/skill.model'; +import { loadImageFromPath } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { getBangDreamAssetPath } from '@/modules/qqbot/plugins/bangDream/theme/asset-manifest'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; import { BANGDREAM_CARD_ART_SPEC, BangDreamCardArtAttribute, -} from '@/qqbot/plugins/bangDream/card/card-art.layout'; -import { cardArtResourceRepository } from '@/qqbot/plugins/bangDream/card/card-art.repository'; +} from '@/modules/qqbot/plugins/bangDream/card/card-art.layout'; +import { cardArtResourceRepository } from '@/modules/qqbot/plugins/bangDream/card/card-art.repository'; const cardTypeIconList: { [type: string]: Image } = {}; const starList: { [type: string]: Image } = {}; diff --git a/src/qqbot/plugins/bangDream/card/card-art.repository.ts b/src/modules/qqbot/plugins/bangDream/card/card-art.repository.ts similarity index 72% rename from src/qqbot/plugins/bangDream/card/card-art.repository.ts rename to src/modules/qqbot/plugins/bangDream/card/card-art.repository.ts index c5dd6ff..1463649 100644 --- a/src/qqbot/plugins/bangDream/card/card-art.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-art.repository.ts @@ -1,10 +1,10 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import type { BangDreamCardArtAttribute } from '@/qqbot/plugins/bangDream/card/card-art.layout'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import type { BangDreamCardArtAttribute } from '@/modules/qqbot/plugins/bangDream/card/card-art.layout'; import { createCardIconFramePath, createCardIllustrationFramePath, -} from '@/qqbot/plugins/bangDream/card/card-art.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-art.layout'; export class CardArtResourceRepository { constructor( diff --git a/src/qqbot/plugins/bangDream/card/card-detail.renderer.ts b/src/modules/qqbot/plugins/bangDream/card/card-detail.renderer.ts similarity index 83% rename from src/qqbot/plugins/bangDream/card/card-detail.renderer.ts rename to src/modules/qqbot/plugins/bangDream/card/card-detail.renderer.ts index 018fde0..4f9d5db 100644 --- a/src/qqbot/plugins/bangDream/card/card-detail.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-detail.renderer.ts @@ -1,30 +1,30 @@ -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; -import { Skill } from '@/qqbot/plugins/bangDream/catalog/skill.model'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; +import { Skill } from '@/modules/qqbot/plugins/bangDream/catalog/skill.model'; import { drawList, drawListByServerList, drawListMerge, -} from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawCardIllustration } from '@/qqbot/plugins/bangDream/card/card-art.renderer'; -import { drawSkillInList } from '@/qqbot/plugins/bangDream/card/card-skill-list.renderer'; -import { drawTimeInList } from '@/qqbot/plugins/bangDream/event/event-time.renderer'; -import { drawCardPrefixInList } from '@/qqbot/plugins/bangDream/card/card-prefix.renderer'; -import { drawCardStatInList } from '@/qqbot/plugins/bangDream/card/card-stat.renderer'; -import { drawCardListInList } from '@/qqbot/plugins/bangDream/card/card-icon.renderer'; -import { drawSdCharacterInList } from '@/qqbot/plugins/bangDream/card/card-sd-character.renderer'; -import { drawEventDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; -import { drawGachaDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawCardIllustration } from '@/modules/qqbot/plugins/bangDream/card/card-art.renderer'; +import { drawSkillInList } from '@/modules/qqbot/plugins/bangDream/card/card-skill-list.renderer'; +import { drawTimeInList } from '@/modules/qqbot/plugins/bangDream/event/event-time.renderer'; +import { drawCardPrefixInList } from '@/modules/qqbot/plugins/bangDream/card/card-prefix.renderer'; +import { drawCardStatInList } from '@/modules/qqbot/plugins/bangDream/card/card-stat.renderer'; +import { drawCardListInList } from '@/modules/qqbot/plugins/bangDream/card/card-icon.renderer'; +import { drawSdCharacterInList } from '@/modules/qqbot/plugins/bangDream/card/card-sd-character.renderer'; +import { drawEventDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { drawGachaDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; import { Image, Canvas } from 'skia-canvas'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { createOutputFinalImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; -import { Gacha } from '@/qqbot/plugins/bangDream/gacha/gacha.model'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { createOutputFinalImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { Gacha } from '@/modules/qqbot/plugins/bangDream/gacha/gacha.model'; import { globalDefaultServer, serverNameFullList, -} from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { DetailBlockBuilder } from '@/qqbot/plugins/bangDream/shared/detail-block.builder'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { DetailBlockBuilder } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.builder'; /** * 在QQBot 图片视图层中判断对象是否包含指定自有属性。 diff --git a/src/qqbot/plugins/bangDream/card/card-icon.layout.ts b/src/modules/qqbot/plugins/bangDream/card/card-icon.layout.ts similarity index 94% rename from src/qqbot/plugins/bangDream/card/card-icon.layout.ts rename to src/modules/qqbot/plugins/bangDream/card/card-icon.layout.ts index 46c50f0..0fad573 100644 --- a/src/qqbot/plugins/bangDream/card/card-icon.layout.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-icon.layout.ts @@ -1,4 +1,4 @@ -import { BANGDREAM_CARD_PRIORITY_TYPES } from '@/qqbot/plugins/bangDream/config/runtime-options'; +import { BANGDREAM_CARD_PRIORITY_TYPES } from '@/modules/qqbot/plugins/bangDream/config/runtime-options'; export interface CardIconListSortTarget { cardId: number; diff --git a/src/qqbot/plugins/bangDream/card/card-icon.renderer.ts b/src/modules/qqbot/plugins/bangDream/card/card-icon.renderer.ts similarity index 86% rename from src/qqbot/plugins/bangDream/card/card-icon.renderer.ts rename to src/modules/qqbot/plugins/bangDream/card/card-icon.renderer.ts index e753c7c..f27070d 100644 --- a/src/qqbot/plugins/bangDream/card/card-icon.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-icon.renderer.ts @@ -1,13 +1,13 @@ -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; import { Canvas } from 'skia-canvas'; -import { drawCardIcon } from '@/qqbot/plugins/bangDream/card/card-art.renderer'; -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; +import { drawCardIcon } from '@/modules/qqbot/plugins/bangDream/card/card-art.renderer'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; import { BANGDREAM_CARD_ICON_LIST_SPEC, getCardIconListSpacing, getCardIconListTextSize, sortCardIconListCards, -} from '@/qqbot/plugins/bangDream/card/card-icon.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-icon.layout'; interface CardIconInListOptions { key?: string; diff --git a/src/qqbot/plugins/bangDream/card/card-prefix.layout.ts b/src/modules/qqbot/plugins/bangDream/card/card-prefix.layout.ts similarity index 91% rename from src/qqbot/plugins/bangDream/card/card-prefix.layout.ts rename to src/modules/qqbot/plugins/bangDream/card/card-prefix.layout.ts index 8aa2fa2..382d7ed 100644 --- a/src/qqbot/plugins/bangDream/card/card-prefix.layout.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-prefix.layout.ts @@ -1,4 +1,4 @@ -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; export interface CardPrefixBandLogoSource { height: number; diff --git a/src/qqbot/plugins/bangDream/card/card-prefix.renderer.ts b/src/modules/qqbot/plugins/bangDream/card/card-prefix.renderer.ts similarity index 79% rename from src/qqbot/plugins/bangDream/card/card-prefix.renderer.ts rename to src/modules/qqbot/plugins/bangDream/card/card-prefix.renderer.ts index 0f5f0af..7bd774a 100644 --- a/src/qqbot/plugins/bangDream/card/card-prefix.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-prefix.renderer.ts @@ -1,18 +1,18 @@ -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; import { Canvas } from 'skia-canvas'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { Band } from '@/qqbot/plugins/bangDream/catalog/band.model'; -import { Character } from '@/qqbot/plugins/bangDream/character/character.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { Band } from '@/modules/qqbot/plugins/bangDream/catalog/band.model'; +import { Character } from '@/modules/qqbot/plugins/bangDream/character/character.model'; import { Server, getServerByPriority, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { setFontStyle } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { drawRoundedRect } from '@/qqbot/plugins/bangDream/theme/canvas-rect'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { setFontStyle } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { drawRoundedRect } from '@/modules/qqbot/plugins/bangDream/theme/canvas-rect'; import { BANGDREAM_CARD_PREFIX_SPEC, getCardPrefixBandLogoLayout, -} from '@/qqbot/plugins/bangDream/card/card-prefix.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-prefix.layout'; let prefixBG: Canvas; /** diff --git a/src/qqbot/plugins/bangDream/card/card-rarity.layout.ts b/src/modules/qqbot/plugins/bangDream/card/card-rarity.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/card/card-rarity.layout.ts rename to src/modules/qqbot/plugins/bangDream/card/card-rarity.layout.ts diff --git a/src/qqbot/plugins/bangDream/card/card-rarity.renderer.ts b/src/modules/qqbot/plugins/bangDream/card/card-rarity.renderer.ts similarity index 79% rename from src/qqbot/plugins/bangDream/card/card-rarity.renderer.ts rename to src/modules/qqbot/plugins/bangDream/card/card-rarity.renderer.ts index 29a5125..cc6320b 100644 --- a/src/qqbot/plugins/bangDream/card/card-rarity.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-rarity.renderer.ts @@ -1,11 +1,11 @@ import { Canvas, Image } from 'skia-canvas'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { loadImageFromPath } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { getBangDreamAssetPath } from '@/qqbot/plugins/bangDream/theme/asset-manifest'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { loadImageFromPath } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { getBangDreamAssetPath } from '@/modules/qqbot/plugins/bangDream/theme/asset-manifest'; import { BANGDREAM_RARITY_LIST_SPEC, shouldUseTrainedRarityStar, -} from '@/qqbot/plugins/bangDream/card/card-rarity.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-rarity.layout'; interface RarityInListOptions { key?: string; diff --git a/src/qqbot/plugins/bangDream/card/card-resource.repository.ts b/src/modules/qqbot/plugins/bangDream/card/card-resource.repository.ts similarity index 86% rename from src/qqbot/plugins/bangDream/card/card-resource.repository.ts rename to src/modules/qqbot/plugins/bangDream/card/card-resource.repository.ts index d06d6c7..4fd5c83 100644 --- a/src/qqbot/plugins/bangDream/card/card-resource.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-resource.repository.ts @@ -1,11 +1,11 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { formatNumber } from '@/qqbot/plugins/bangDream/shared/model-utils'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { formatNumber } from '@/modules/qqbot/plugins/bangDream/shared/model-utils'; import { getServerByPriority, Server, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; export interface CardResourceSource { cardId: number; diff --git a/src/qqbot/plugins/bangDream/card/card-sd-character.layout.ts b/src/modules/qqbot/plugins/bangDream/card/card-sd-character.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/card/card-sd-character.layout.ts rename to src/modules/qqbot/plugins/bangDream/card/card-sd-character.layout.ts diff --git a/src/qqbot/plugins/bangDream/card/card-sd-character.renderer.ts b/src/modules/qqbot/plugins/bangDream/card/card-sd-character.renderer.ts similarity index 79% rename from src/qqbot/plugins/bangDream/card/card-sd-character.renderer.ts rename to src/modules/qqbot/plugins/bangDream/card/card-sd-character.renderer.ts index ac9df7d..9bc1347 100644 --- a/src/qqbot/plugins/bangDream/card/card-sd-character.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-sd-character.renderer.ts @@ -1,13 +1,13 @@ -import { Costume } from '@/qqbot/plugins/bangDream/catalog/costume.model'; -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; +import { Costume } from '@/modules/qqbot/plugins/bangDream/catalog/costume.model'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; import { Canvas } from 'skia-canvas'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; import { BANGDREAM_CARD_SD_CHARACTER_SPEC, getCardSdCharacterCropRects, getCardSdCharacterListLineHeight, getCardSdCharacterListTextSize, -} from '@/qqbot/plugins/bangDream/card/card-sd-character.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-sd-character.layout'; /** * 在图片布局层中绘制SD角色In列表。 diff --git a/src/qqbot/plugins/bangDream/card/card-search.renderer.ts b/src/modules/qqbot/plugins/bangDream/card/card-search.renderer.ts similarity index 89% rename from src/qqbot/plugins/bangDream/card/card-search.renderer.ts rename to src/modules/qqbot/plugins/bangDream/card/card-search.renderer.ts index b3bb36e..bafaca0 100644 --- a/src/qqbot/plugins/bangDream/card/card-search.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-search.renderer.ts @@ -1,19 +1,19 @@ -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; -import { Character } from '@/qqbot/plugins/bangDream/character/character.model'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; +import { Character } from '@/modules/qqbot/plugins/bangDream/character/character.model'; import { match, FuzzySearchResult, -} from '@/qqbot/plugins/bangDream/search/fuzzy-search'; +} from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search'; import { Canvas } from 'skia-canvas'; -import { drawCardIcon } from '@/qqbot/plugins/bangDream/card/card-art.renderer'; -import { drawDataBlockHorizontal } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; -import { stackImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { createTsuguEntityMatcher } from '@/qqbot/plugins/bangDream/search/entity-list-matcher'; -import { cardRepository } from '@/qqbot/plugins/bangDream/card/card.repository'; +import { drawCardIcon } from '@/modules/qqbot/plugins/bangDream/card/card-art.renderer'; +import { drawDataBlockHorizontal } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { stackImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { createTsuguEntityMatcher } from '@/modules/qqbot/plugins/bangDream/search/entity-list-matcher'; +import { cardRepository } from '@/modules/qqbot/plugins/bangDream/card/card.repository'; const maxWidth = 7000; type CardAttribute = Card['attribute']; diff --git a/src/qqbot/plugins/bangDream/card/card-skill-list.renderer.ts b/src/modules/qqbot/plugins/bangDream/card/card-skill-list.renderer.ts similarity index 63% rename from src/qqbot/plugins/bangDream/card/card-skill-list.renderer.ts rename to src/modules/qqbot/plugins/bangDream/card/card-skill-list.renderer.ts index be6e93c..925b0fe 100644 --- a/src/qqbot/plugins/bangDream/card/card-skill-list.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-skill-list.renderer.ts @@ -1,13 +1,16 @@ -import { Skill } from '@/qqbot/plugins/bangDream/catalog/skill.model'; +import { Skill } from '@/modules/qqbot/plugins/bangDream/catalog/skill.model'; import { Server, getServerByPriority, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawTipsInList, drawListByServerList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { stackImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { + drawTipsInList, + drawListByServerList, +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { stackImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; import { Canvas } from 'skia-canvas'; -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; interface SkillInListOptions { key?: string; diff --git a/src/qqbot/plugins/bangDream/card/card-skill-text.layout.ts b/src/modules/qqbot/plugins/bangDream/card/card-skill-text.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/card/card-skill-text.layout.ts rename to src/modules/qqbot/plugins/bangDream/card/card-skill-text.layout.ts diff --git a/src/qqbot/plugins/bangDream/card/card-skill-text.renderer.ts b/src/modules/qqbot/plugins/bangDream/card/card-skill-text.renderer.ts similarity index 79% rename from src/qqbot/plugins/bangDream/card/card-skill-text.renderer.ts rename to src/modules/qqbot/plugins/bangDream/card/card-skill-text.renderer.ts index 5e362a8..07e34b3 100644 --- a/src/qqbot/plugins/bangDream/card/card-skill-text.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-skill-text.renderer.ts @@ -1,14 +1,14 @@ -import { Skill } from '@/qqbot/plugins/bangDream/catalog/skill.model'; +import { Skill } from '@/modules/qqbot/plugins/bangDream/catalog/skill.model'; import { Image, Canvas } from 'skia-canvas'; -import { drawTextWithImages } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { loadImageFromPath } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { getBangDreamAssetPath } from '@/qqbot/plugins/bangDream/theme/asset-manifest'; -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +import { drawTextWithImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { loadImageFromPath } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { getBangDreamAssetPath } from '@/modules/qqbot/plugins/bangDream/theme/asset-manifest'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; import { BANGDREAM_SKILL_TEXT_SPEC, BangDreamSkillIconKey, createSkillTextFragments, -} from '@/qqbot/plugins/bangDream/card/card-skill-text.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-skill-text.layout'; const skillIcon: Partial> = {}; /** diff --git a/src/qqbot/plugins/bangDream/card/card-stat.layout.ts b/src/modules/qqbot/plugins/bangDream/card/card-stat.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/card/card-stat.layout.ts rename to src/modules/qqbot/plugins/bangDream/card/card-stat.layout.ts diff --git a/src/qqbot/plugins/bangDream/card/card-stat.renderer.ts b/src/modules/qqbot/plugins/bangDream/card/card-stat.renderer.ts similarity index 86% rename from src/qqbot/plugins/bangDream/card/card-stat.renderer.ts rename to src/modules/qqbot/plugins/bangDream/card/card-stat.renderer.ts index 1dbe19c..7585f8f 100644 --- a/src/qqbot/plugins/bangDream/card/card-stat.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card-stat.renderer.ts @@ -1,19 +1,19 @@ import { Canvas } from 'skia-canvas'; -import { drawText } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { stackImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { drawRoundedRect } from '@/qqbot/plugins/bangDream/theme/canvas-rect'; +import { drawText } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { stackImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { drawRoundedRect } from '@/modules/qqbot/plugins/bangDream/theme/canvas-rect'; import { Card, Stat, limitBreakRankStat, -} from '@/qqbot/plugins/bangDream/card/card.model'; -import { BANGDREAM_STAT_CONFIG } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; +} from '@/modules/qqbot/plugins/bangDream/card/card.model'; +import { BANGDREAM_STAT_CONFIG } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; import { BANGDREAM_STAT_LIST_SPEC, createStatLineText, getStatLineBarLayout, -} from '@/qqbot/plugins/bangDream/card/card-stat.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-stat.layout'; export const statConfig: Record = BANGDREAM_STAT_CONFIG; diff --git a/src/qqbot/plugins/bangDream/card/card.model.ts b/src/modules/qqbot/plugins/bangDream/card/card.model.ts similarity index 93% rename from src/qqbot/plugins/bangDream/card/card.model.ts rename to src/modules/qqbot/plugins/bangDream/card/card.model.ts index dfe1885..67f3104 100644 --- a/src/qqbot/plugins/bangDream/card/card.model.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card.model.ts @@ -1,18 +1,18 @@ -import { Skill } from '@/qqbot/plugins/bangDream/catalog/skill.model'; -import { Character } from '@/qqbot/plugins/bangDream/character/character.model'; +import { Skill } from '@/modules/qqbot/plugins/bangDream/catalog/skill.model'; +import { Character } from '@/modules/qqbot/plugins/bangDream/character/character.model'; import { Server, getServerByPriority, serverList, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { Gacha } from '@/qqbot/plugins/bangDream/gacha/gacha.model'; -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { Gacha } from '@/modules/qqbot/plugins/bangDream/gacha/gacha.model'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; import { Image, loadImage } from 'skia-canvas'; -import { bangDreamMainDataRepository } from '@/qqbot/plugins/bangDream/shared/main-data.repository'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { stringToNumberArray } from '@/qqbot/plugins/bangDream/shared/model-utils'; -import { BANGDREAM_CARD_TYPE_NAME } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; -import { cardResourceRepository } from '@/qqbot/plugins/bangDream/card/card-resource.repository'; +import { bangDreamMainDataRepository } from '@/modules/qqbot/plugins/bangDream/shared/main-data.repository'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { stringToNumberArray } from '@/modules/qqbot/plugins/bangDream/shared/model-utils'; +import { BANGDREAM_CARD_TYPE_NAME } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; +import { cardResourceRepository } from '@/modules/qqbot/plugins/bangDream/card/card-resource.repository'; export interface Stat { //综合力 diff --git a/src/qqbot/plugins/bangDream/card/card.repository.ts b/src/modules/qqbot/plugins/bangDream/card/card.repository.ts similarity index 76% rename from src/qqbot/plugins/bangDream/card/card.repository.ts rename to src/modules/qqbot/plugins/bangDream/card/card.repository.ts index 598107e..6f5b847 100644 --- a/src/qqbot/plugins/bangDream/card/card.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/card/card.repository.ts @@ -1,8 +1,8 @@ -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; import { bangDreamMainDataRepository, type BangDreamMainDataCollection, -} from '@/qqbot/plugins/bangDream/shared/main-data.repository'; +} from '@/modules/qqbot/plugins/bangDream/shared/main-data.repository'; export class CardRepository { /** diff --git a/src/qqbot/plugins/bangDream/catalog/area-item.model.ts b/src/modules/qqbot/plugins/bangDream/catalog/area-item.model.ts similarity index 91% rename from src/qqbot/plugins/bangDream/catalog/area-item.model.ts rename to src/modules/qqbot/plugins/bangDream/catalog/area-item.model.ts index 1f95658..b756d66 100644 --- a/src/qqbot/plugins/bangDream/catalog/area-item.model.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/area-item.model.ts @@ -1,6 +1,6 @@ -import mainAPI from '@/qqbot/plugins/bangDream/shared/main-data-store'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { Card, Stat } from '@/qqbot/plugins/bangDream/card/card.model'; +import mainAPI from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { Card, Stat } from '@/modules/qqbot/plugins/bangDream/card/card.model'; export class AreaItem { areaItemId: number; diff --git a/src/qqbot/plugins/bangDream/catalog/attribute-list.renderer.ts b/src/modules/qqbot/plugins/bangDream/catalog/attribute-list.renderer.ts similarity index 80% rename from src/qqbot/plugins/bangDream/catalog/attribute-list.renderer.ts rename to src/modules/qqbot/plugins/bangDream/catalog/attribute-list.renderer.ts index 8b08e2d..e9dc4d0 100644 --- a/src/qqbot/plugins/bangDream/catalog/attribute-list.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/attribute-list.renderer.ts @@ -1,10 +1,10 @@ -import { Attribute } from '@/qqbot/plugins/bangDream/catalog/attribute.model'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { Attribute } from '@/modules/qqbot/plugins/bangDream/catalog/attribute.model'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; import { Canvas, Image } from 'skia-canvas'; import { BANGDREAM_ENTITY_LIST_SPEC, shouldUseSingleEntityLabel, -} from '@/qqbot/plugins/bangDream/shared/list-entity.layout'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-entity.layout'; interface AttributeInListOptions { key?: string; diff --git a/src/qqbot/plugins/bangDream/catalog/attribute-resource.repository.ts b/src/modules/qqbot/plugins/bangDream/catalog/attribute-resource.repository.ts similarity index 75% rename from src/qqbot/plugins/bangDream/catalog/attribute-resource.repository.ts rename to src/modules/qqbot/plugins/bangDream/catalog/attribute-resource.repository.ts index 8164ab5..02acf9c 100644 --- a/src/qqbot/plugins/bangDream/catalog/attribute-resource.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/attribute-resource.repository.ts @@ -1,5 +1,5 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; export class AttributeResourceRepository { constructor( diff --git a/src/qqbot/plugins/bangDream/catalog/attribute.model.ts b/src/modules/qqbot/plugins/bangDream/catalog/attribute.model.ts similarity index 87% rename from src/qqbot/plugins/bangDream/catalog/attribute.model.ts rename to src/modules/qqbot/plugins/bangDream/catalog/attribute.model.ts index 6e6efd8..d80f040 100644 --- a/src/qqbot/plugins/bangDream/catalog/attribute.model.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/attribute.model.ts @@ -1,6 +1,6 @@ import { loadImage, Image } from 'skia-canvas'; -import { convertSvgToPngBuffer } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { attributeResourceRepository } from '@/qqbot/plugins/bangDream/catalog/attribute-resource.repository'; +import { convertSvgToPngBuffer } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { attributeResourceRepository } from '@/modules/qqbot/plugins/bangDream/catalog/attribute-resource.repository'; const attributeColor = { happy: '#ff6600', diff --git a/src/qqbot/plugins/bangDream/catalog/band-list.renderer.ts b/src/modules/qqbot/plugins/bangDream/catalog/band-list.renderer.ts similarity index 79% rename from src/qqbot/plugins/bangDream/catalog/band-list.renderer.ts rename to src/modules/qqbot/plugins/bangDream/catalog/band-list.renderer.ts index cc831dd..4cf6967 100644 --- a/src/qqbot/plugins/bangDream/catalog/band-list.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/band-list.renderer.ts @@ -1,11 +1,11 @@ -import { Band } from '@/qqbot/plugins/bangDream/catalog/band.model'; -import { getServerByPriority } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { Band } from '@/modules/qqbot/plugins/bangDream/catalog/band.model'; +import { getServerByPriority } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; import { Canvas, Image } from 'skia-canvas'; import { BANGDREAM_ENTITY_LIST_SPEC, shouldUseSingleEntityLabel, -} from '@/qqbot/plugins/bangDream/shared/list-entity.layout'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-entity.layout'; interface BandInListOptions { key?: string; diff --git a/src/qqbot/plugins/bangDream/catalog/band-resource.repository.ts b/src/modules/qqbot/plugins/bangDream/catalog/band-resource.repository.ts similarity index 77% rename from src/qqbot/plugins/bangDream/catalog/band-resource.repository.ts rename to src/modules/qqbot/plugins/bangDream/catalog/band-resource.repository.ts index b4a6758..9b82880 100644 --- a/src/qqbot/plugins/bangDream/catalog/band-resource.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/band-resource.repository.ts @@ -1,6 +1,6 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { formatNumber } from '@/qqbot/plugins/bangDream/shared/model-utils'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { formatNumber } from '@/modules/qqbot/plugins/bangDream/shared/model-utils'; export class BandResourceRepository { constructor( diff --git a/src/qqbot/plugins/bangDream/catalog/band.model.ts b/src/modules/qqbot/plugins/bangDream/catalog/band.model.ts similarity index 85% rename from src/qqbot/plugins/bangDream/catalog/band.model.ts rename to src/modules/qqbot/plugins/bangDream/catalog/band.model.ts index 67a3e18..f3efac0 100644 --- a/src/qqbot/plugins/bangDream/catalog/band.model.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/band.model.ts @@ -1,8 +1,8 @@ -import mainAPI from '@/qqbot/plugins/bangDream/shared/main-data-store'; -import { Character } from '@/qqbot/plugins/bangDream/character/character.model'; +import mainAPI from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; +import { Character } from '@/modules/qqbot/plugins/bangDream/character/character.model'; import { Image, loadImage } from 'skia-canvas'; -import { convertSvgToPngBuffer } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { bandResourceRepository } from '@/qqbot/plugins/bangDream/catalog/band-resource.repository'; +import { convertSvgToPngBuffer } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { bandResourceRepository } from '@/modules/qqbot/plugins/bangDream/catalog/band-resource.repository'; export class Band { bandId: number; diff --git a/src/qqbot/plugins/bangDream/catalog/color.model.ts b/src/modules/qqbot/plugins/bangDream/catalog/color.model.ts similarity index 100% rename from src/qqbot/plugins/bangDream/catalog/color.model.ts rename to src/modules/qqbot/plugins/bangDream/catalog/color.model.ts diff --git a/src/qqbot/plugins/bangDream/catalog/costume-resource.repository.ts b/src/modules/qqbot/plugins/bangDream/catalog/costume-resource.repository.ts similarity index 82% rename from src/qqbot/plugins/bangDream/catalog/costume-resource.repository.ts rename to src/modules/qqbot/plugins/bangDream/catalog/costume-resource.repository.ts index c112cd4..f0695fa 100644 --- a/src/qqbot/plugins/bangDream/catalog/costume-resource.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/costume-resource.repository.ts @@ -1,10 +1,10 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; import { getServerByPriority, Server, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; export interface CostumeSdResourceSource { publishedAt: Array; diff --git a/src/qqbot/plugins/bangDream/catalog/costume.model.ts b/src/modules/qqbot/plugins/bangDream/catalog/costume.model.ts similarity index 82% rename from src/qqbot/plugins/bangDream/catalog/costume.model.ts rename to src/modules/qqbot/plugins/bangDream/catalog/costume.model.ts index c5147cf..776588a 100644 --- a/src/qqbot/plugins/bangDream/catalog/costume.model.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/costume.model.ts @@ -1,9 +1,9 @@ -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import mainAPI from '@/qqbot/plugins/bangDream/shared/main-data-store'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import mainAPI from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; import { Image, loadImage } from 'skia-canvas'; -import { stringToNumberArray } from '@/qqbot/plugins/bangDream/shared/model-utils'; -import { costumeResourceRepository } from '@/qqbot/plugins/bangDream/catalog/costume-resource.repository'; +import { stringToNumberArray } from '@/modules/qqbot/plugins/bangDream/shared/model-utils'; +import { costumeResourceRepository } from '@/modules/qqbot/plugins/bangDream/catalog/costume-resource.repository'; export class Costume { costumeId: number; diff --git a/src/qqbot/plugins/bangDream/catalog/degree-badge.renderer.ts b/src/modules/qqbot/plugins/bangDream/catalog/degree-badge.renderer.ts similarity index 84% rename from src/qqbot/plugins/bangDream/catalog/degree-badge.renderer.ts rename to src/modules/qqbot/plugins/bangDream/catalog/degree-badge.renderer.ts index 1a92182..5c4caf6 100644 --- a/src/qqbot/plugins/bangDream/catalog/degree-badge.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/degree-badge.renderer.ts @@ -1,15 +1,15 @@ -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { Degree } from '@/qqbot/plugins/bangDream/catalog/degree.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { Degree } from '@/modules/qqbot/plugins/bangDream/catalog/degree.model'; import { Server, getServerByPriority, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; import { Canvas } from 'skia-canvas'; import { BANGDREAM_DEGREE_LIST_SPEC, shouldDrawDegreeDecorations, shouldDrawDegreeIcon, -} from '@/qqbot/plugins/bangDream/catalog/degree-list.layout'; +} from '@/modules/qqbot/plugins/bangDream/catalog/degree-list.layout'; /** * 在图片布局层中绘制称号。 diff --git a/src/qqbot/plugins/bangDream/catalog/degree-list.layout.ts b/src/modules/qqbot/plugins/bangDream/catalog/degree-list.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/catalog/degree-list.layout.ts rename to src/modules/qqbot/plugins/bangDream/catalog/degree-list.layout.ts diff --git a/src/qqbot/plugins/bangDream/catalog/degree-list.renderer.ts b/src/modules/qqbot/plugins/bangDream/catalog/degree-list.renderer.ts similarity index 85% rename from src/qqbot/plugins/bangDream/catalog/degree-list.renderer.ts rename to src/modules/qqbot/plugins/bangDream/catalog/degree-list.renderer.ts index 61f8a41..b4bd0b7 100644 --- a/src/qqbot/plugins/bangDream/catalog/degree-list.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/degree-list.renderer.ts @@ -1,20 +1,20 @@ -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; import { Canvas } from 'skia-canvas'; -import { drawDegree } from '@/qqbot/plugins/bangDream/catalog/degree-badge.renderer'; -import { Degree } from '@/qqbot/plugins/bangDream/catalog/degree.model'; +import { drawDegree } from '@/modules/qqbot/plugins/bangDream/catalog/degree-badge.renderer'; +import { Degree } from '@/modules/qqbot/plugins/bangDream/catalog/degree.model'; import { Server, getServerByPriority, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; -import { stackImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { stackImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; import { BANGDREAM_DEGREE_LIST_SPEC, isDegreeRewardType, shouldCollectMusicRankingDegreeRewards, shouldStopAfterFirstMusicRewardGroup, -} from '@/qqbot/plugins/bangDream/catalog/degree-list.layout'; +} from '@/modules/qqbot/plugins/bangDream/catalog/degree-list.layout'; interface DegreeListInListOptions { key?: string; diff --git a/src/qqbot/plugins/bangDream/catalog/degree-resource.repository.ts b/src/modules/qqbot/plugins/bangDream/catalog/degree-resource.repository.ts similarity index 93% rename from src/qqbot/plugins/bangDream/catalog/degree-resource.repository.ts rename to src/modules/qqbot/plugins/bangDream/catalog/degree-resource.repository.ts index 168c9bd..6ea040d 100644 --- a/src/qqbot/plugins/bangDream/catalog/degree-resource.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/degree-resource.repository.ts @@ -1,6 +1,6 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; const LEGACY_ANIMATED_TEXTURE_NAMES = new Set([ 'ani_degree_bilibili_day1', diff --git a/src/qqbot/plugins/bangDream/catalog/degree.model.ts b/src/modules/qqbot/plugins/bangDream/catalog/degree.model.ts similarity index 89% rename from src/qqbot/plugins/bangDream/catalog/degree.model.ts rename to src/modules/qqbot/plugins/bangDream/catalog/degree.model.ts index 5bd1046..e519584 100644 --- a/src/qqbot/plugins/bangDream/catalog/degree.model.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/degree.model.ts @@ -1,8 +1,8 @@ -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; import { Canvas, Image, loadImage } from 'skia-canvas'; -import mainAPI from '@/qqbot/plugins/bangDream/shared/main-data-store'; -import { readJSONFromBuffer } from '@/qqbot/plugins/bangDream/shared/model-utils'; -import { degreeResourceRepository } from '@/qqbot/plugins/bangDream/catalog/degree-resource.repository'; +import mainAPI from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; +import { readJSONFromBuffer } from '@/modules/qqbot/plugins/bangDream/shared/model-utils'; +import { degreeResourceRepository } from '@/modules/qqbot/plugins/bangDream/catalog/degree-resource.repository'; export class Degree { degreeId: number; @@ -123,11 +123,10 @@ export async function getFrameFromAnimatedDegreeAsset( server: Server, frame?: number, ): Promise { - const scriptBuffer = - await degreeResourceRepository.getAnimatedScriptBuffer( - baseImageName, - server, - ); + const scriptBuffer = await degreeResourceRepository.getAnimatedScriptBuffer( + baseImageName, + server, + ); const script = await readJSONFromBuffer(scriptBuffer); const frames: Array = script['Base']['mSprites'] as Array; const framecount = frames.length; diff --git a/src/qqbot/plugins/bangDream/catalog/item-resource.repository.ts b/src/modules/qqbot/plugins/bangDream/catalog/item-resource.repository.ts similarity index 78% rename from src/qqbot/plugins/bangDream/catalog/item-resource.repository.ts rename to src/modules/qqbot/plugins/bangDream/catalog/item-resource.repository.ts index 941d529..58d815e 100644 --- a/src/qqbot/plugins/bangDream/catalog/item-resource.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/item-resource.repository.ts @@ -1,7 +1,7 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { formatNumber } from '@/qqbot/plugins/bangDream/shared/model-utils'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { formatNumber } from '@/modules/qqbot/plugins/bangDream/shared/model-utils'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; export interface ItemResourceSource { resourceId: number; diff --git a/src/qqbot/plugins/bangDream/catalog/item.model.ts b/src/modules/qqbot/plugins/bangDream/catalog/item.model.ts similarity index 82% rename from src/qqbot/plugins/bangDream/catalog/item.model.ts rename to src/modules/qqbot/plugins/bangDream/catalog/item.model.ts index 7a2ff7d..66dbdfb 100644 --- a/src/qqbot/plugins/bangDream/catalog/item.model.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/item.model.ts @@ -2,11 +2,11 @@ import { Image, loadImage } from 'skia-canvas'; import { Server, getServerByPriority, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import mainAPI from '@/qqbot/plugins/bangDream/shared/main-data-store'; -import { itemResourceRepository } from '@/qqbot/plugins/bangDream/catalog/item-resource.repository'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { BANGDREAM_ITEM_TYPE_PREFIXES } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import mainAPI from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; +import { itemResourceRepository } from '@/modules/qqbot/plugins/bangDream/catalog/item-resource.repository'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { BANGDREAM_ITEM_TYPE_PREFIXES } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; export class Item { name: Array; diff --git a/src/qqbot/plugins/bangDream/catalog/server-resource.repository.ts b/src/modules/qqbot/plugins/bangDream/catalog/server-resource.repository.ts similarity index 71% rename from src/qqbot/plugins/bangDream/catalog/server-resource.repository.ts rename to src/modules/qqbot/plugins/bangDream/catalog/server-resource.repository.ts index 4f6ea06..d0de8e6 100644 --- a/src/qqbot/plugins/bangDream/catalog/server-resource.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/server-resource.repository.ts @@ -1,6 +1,6 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { getBangDreamAssetPath } from '@/qqbot/plugins/bangDream/theme/asset-manifest'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { getBangDreamAssetPath } from '@/modules/qqbot/plugins/bangDream/theme/asset-manifest'; export class ServerResourceRepository { constructor( diff --git a/src/qqbot/plugins/bangDream/catalog/server.model.ts b/src/modules/qqbot/plugins/bangDream/catalog/server.model.ts similarity index 88% rename from src/qqbot/plugins/bangDream/catalog/server.model.ts rename to src/modules/qqbot/plugins/bangDream/catalog/server.model.ts index aa5382f..a17f921 100644 --- a/src/qqbot/plugins/bangDream/catalog/server.model.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/server.model.ts @@ -2,14 +2,14 @@ import { loadImage, Image } from 'skia-canvas'; import { globalDefaultServer, serverNameFullList, -} from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { globalServerPriority } from '@/qqbot/plugins/bangDream/config/runtime-config'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { globalServerPriority } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; import { loadImageFromPath, convertSvgToPngBuffer, -} from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { BANGDREAM_SERVER_CODES } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; -import { serverResourceRepository } from '@/qqbot/plugins/bangDream/catalog/server-resource.repository'; +} from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { BANGDREAM_SERVER_CODES } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; +import { serverResourceRepository } from '@/modules/qqbot/plugins/bangDream/catalog/server-resource.repository'; export enum Server { jp, diff --git a/src/qqbot/plugins/bangDream/catalog/skill.model.ts b/src/modules/qqbot/plugins/bangDream/catalog/skill.model.ts similarity index 98% rename from src/qqbot/plugins/bangDream/catalog/skill.model.ts rename to src/modules/qqbot/plugins/bangDream/catalog/skill.model.ts index b5db4b5..7e7b5ee 100644 --- a/src/qqbot/plugins/bangDream/catalog/skill.model.ts +++ b/src/modules/qqbot/plugins/bangDream/catalog/skill.model.ts @@ -1,4 +1,4 @@ -import mainAPI from '@/qqbot/plugins/bangDream/shared/main-data-store'; +import mainAPI from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; export class Skill { skillId: number; diff --git a/src/qqbot/plugins/bangDream/character/character-detail.renderer.ts b/src/modules/qqbot/plugins/bangDream/character/character-detail.renderer.ts similarity index 81% rename from src/qqbot/plugins/bangDream/character/character-detail.renderer.ts rename to src/modules/qqbot/plugins/bangDream/character/character-detail.renderer.ts index 1c5e742..7f3c512 100644 --- a/src/qqbot/plugins/bangDream/character/character-detail.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/character/character-detail.renderer.ts @@ -5,28 +5,28 @@ import { drawListMerge, drawImageListCenter, drawTipsInList, -} from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; import { Image, Canvas } from 'skia-canvas'; import { Server, getServerByPriority, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { Character } from '@/qqbot/plugins/bangDream/character/character.model'; -import { drawCharacterHalfBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; -import { drawDottedLine } from '@/qqbot/plugins/bangDream/theme/canvas-dotted-line'; -import { Band } from '@/qqbot/plugins/bangDream/catalog/band.model'; -import { formatMonthDay } from '@/qqbot/plugins/bangDream/event/event-time.renderer'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { Character } from '@/modules/qqbot/plugins/bangDream/character/character.model'; +import { drawCharacterHalfBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { drawDottedLine } from '@/modules/qqbot/plugins/bangDream/theme/canvas-dotted-line'; +import { Band } from '@/modules/qqbot/plugins/bangDream/catalog/band.model'; +import { formatMonthDay } from '@/modules/qqbot/plugins/bangDream/event/event-time.renderer'; import { stackImage, stackImageHorizontal, -} from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { drawBandInList } from '@/qqbot/plugins/bangDream/catalog/band-list.renderer'; -import { config } from '@/qqbot/plugins/bangDream/search/fuzzy-search'; -import { getColorFromHex } from '@/qqbot/plugins/bangDream/catalog/color.model'; +} from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { drawBandInList } from '@/modules/qqbot/plugins/bangDream/catalog/band-list.renderer'; +import { config } from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search'; +import { getColorFromHex } from '@/modules/qqbot/plugins/bangDream/catalog/color.model'; const rightListWidth = 500; const rightListLine: Canvas = drawDottedLine({ diff --git a/src/qqbot/plugins/bangDream/character/character-list.renderer.ts b/src/modules/qqbot/plugins/bangDream/character/character-list.renderer.ts similarity index 77% rename from src/qqbot/plugins/bangDream/character/character-list.renderer.ts rename to src/modules/qqbot/plugins/bangDream/character/character-list.renderer.ts index ef327fc..42b2d99 100644 --- a/src/qqbot/plugins/bangDream/character/character-list.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/character/character-list.renderer.ts @@ -1,15 +1,15 @@ -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { Character } from '@/qqbot/plugins/bangDream/character/character.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { Character } from '@/modules/qqbot/plugins/bangDream/character/character.model'; import { Server, getServerByPriority, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; import { Canvas, Image } from 'skia-canvas'; import { BANGDREAM_ENTITY_LIST_SPEC, shouldUseSingleEntityLabel, -} from '@/qqbot/plugins/bangDream/shared/list-entity.layout'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-entity.layout'; interface CharacterInListOptions { key?: string; diff --git a/src/qqbot/plugins/bangDream/character/character-resource.repository.ts b/src/modules/qqbot/plugins/bangDream/character/character-resource.repository.ts similarity index 87% rename from src/qqbot/plugins/bangDream/character/character-resource.repository.ts rename to src/modules/qqbot/plugins/bangDream/character/character-resource.repository.ts index 7d80b62..0b921e3 100644 --- a/src/qqbot/plugins/bangDream/character/character-resource.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/character/character-resource.repository.ts @@ -1,6 +1,6 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { formatNumber } from '@/qqbot/plugins/bangDream/shared/model-utils'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { formatNumber } from '@/modules/qqbot/plugins/bangDream/shared/model-utils'; export class CharacterResourceRepository { constructor( diff --git a/src/qqbot/plugins/bangDream/character/character-search.renderer.ts b/src/modules/qqbot/plugins/bangDream/character/character-search.renderer.ts similarity index 71% rename from src/qqbot/plugins/bangDream/character/character-search.renderer.ts rename to src/modules/qqbot/plugins/bangDream/character/character-search.renderer.ts index 579aa64..76a8874 100644 --- a/src/qqbot/plugins/bangDream/character/character-search.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/character/character-search.renderer.ts @@ -1,18 +1,18 @@ -import { Character } from '@/qqbot/plugins/bangDream/character/character.model'; -import mainAPI from '@/qqbot/plugins/bangDream/shared/main-data-store'; +import { Character } from '@/modules/qqbot/plugins/bangDream/character/character.model'; +import mainAPI from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; import { match, FuzzySearchResult, -} from '@/qqbot/plugins/bangDream/search/fuzzy-search'; +} from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search'; import { Canvas } from 'skia-canvas'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { drawCharacterHalfBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawCharacterDetail } from '@/qqbot/plugins/bangDream/character/character-detail.renderer'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { drawCharacterHalfBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawCharacterDetail } from '@/modules/qqbot/plugins/bangDream/character/character-detail.renderer'; const maxWidth = 1370; diff --git a/src/qqbot/plugins/bangDream/character/character.model.ts b/src/modules/qqbot/plugins/bangDream/character/character.model.ts similarity index 95% rename from src/qqbot/plugins/bangDream/character/character.model.ts rename to src/modules/qqbot/plugins/bangDream/character/character.model.ts index 510a0bd..b0f44b1 100644 --- a/src/qqbot/plugins/bangDream/character/character.model.ts +++ b/src/modules/qqbot/plugins/bangDream/character/character.model.ts @@ -1,6 +1,6 @@ -import mainAPI from '@/qqbot/plugins/bangDream/shared/main-data-store'; +import mainAPI from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; import { Image, loadImage } from 'skia-canvas'; -import { characterResourceRepository } from '@/qqbot/plugins/bangDream/character/character-resource.repository'; +import { characterResourceRepository } from '@/modules/qqbot/plugins/bangDream/character/character-resource.repository'; export class Character { characterId: number; diff --git a/src/qqbot/plugins/bangDream/commands/qqbot-bangdream-command.definitions.ts b/src/modules/qqbot/plugins/bangDream/commands/qqbot-bangdream-command.definitions.ts similarity index 92% rename from src/qqbot/plugins/bangDream/commands/qqbot-bangdream-command.definitions.ts rename to src/modules/qqbot/plugins/bangDream/commands/qqbot-bangdream-command.definitions.ts index 01e2465..04460ea 100644 --- a/src/qqbot/plugins/bangDream/commands/qqbot-bangdream-command.definitions.ts +++ b/src/modules/qqbot/plugins/bangDream/commands/qqbot-bangdream-command.definitions.ts @@ -1,7 +1,7 @@ import { BANGDREAM_OPERATION_REGISTRY, type QqbotBangDreamOperationKey, -} from '@/qqbot/plugins/bangDream/registry/operation-registry'; +} from '@/modules/qqbot/plugins/bangDream/registry/operation-registry'; export const BANGDREAM_INPUT_SCHEMA = { properties: { diff --git a/src/qqbot/plugins/bangDream/config/runtime-config.ts b/src/modules/qqbot/plugins/bangDream/config/runtime-config.ts similarity index 85% rename from src/qqbot/plugins/bangDream/config/runtime-config.ts rename to src/modules/qqbot/plugins/bangDream/config/runtime-config.ts index c4a1e4a..635af3a 100644 --- a/src/qqbot/plugins/bangDream/config/runtime-config.ts +++ b/src/modules/qqbot/plugins/bangDream/config/runtime-config.ts @@ -1,17 +1,17 @@ import * as path from 'path'; -import type { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { BANGDREAM_BESTDORI_API_PATHS } from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; +import type { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { BANGDREAM_BESTDORI_API_PATHS } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; import { BANGDREAM_EVENT_STATUS_NAME, BANGDREAM_SERVER_LABELS, -} from '@/qqbot/plugins/bangDream/dictionary/default-dictionary'; +} from '@/modules/qqbot/plugins/bangDream/dictionary/default-dictionary'; import { BANGDREAM_DEFAULT_SERVER_IDS, BANGDREAM_SERVER_PRIORITY_IDS, BANGDREAM_TSUGU_ENV_KEYS, BANGDREAM_TIER_LIST_BY_SERVER, -} from '@/qqbot/plugins/bangDream/config/runtime-options'; -import { logger } from '@/qqbot/plugins/bangDream/shared/bangdream-logger'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-options'; +import { logger } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-logger'; export const projectRoot: string = path.resolve(__dirname, '..'); export const assetsRootPath: string = path.join(projectRoot, 'assets'); diff --git a/src/qqbot/plugins/bangDream/config/runtime-options.ts b/src/modules/qqbot/plugins/bangDream/config/runtime-options.ts similarity index 93% rename from src/qqbot/plugins/bangDream/config/runtime-options.ts rename to src/modules/qqbot/plugins/bangDream/config/runtime-options.ts index bf03b6a..206cb45 100644 --- a/src/qqbot/plugins/bangDream/config/runtime-options.ts +++ b/src/modules/qqbot/plugins/bangDream/config/runtime-options.ts @@ -3,7 +3,7 @@ import { BangDreamCardType, BangDreamEventStageType, BangDreamServerCode, -} from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; +} from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; export const BANGDREAM_TSUGU_ENV_KEYS = { bestdoriBaseUrl: 'BANGDREAM_TSUGU_BESTDORI_BASE_URL', @@ -106,10 +106,7 @@ export function normalizeBangDreamPositiveInteger( return Number.isFinite(parsed) && parsed > 0 ? Math.floor(parsed) : fallback; } -export function normalizeBangDreamBoolean( - value: unknown, - fallback: boolean, -) { +export function normalizeBangDreamBoolean(value: unknown, fallback: boolean) { if (value === undefined || value === null || value === '') return fallback; if (typeof value === 'boolean') return value; return ['1', 'true', 'yes', 'on', '是', '开启'].includes( @@ -121,7 +118,5 @@ export function splitBangDreamOptionList(source: unknown) { if (Array.isArray(source)) { return source.map((item) => `${item}`.trim()).filter(Boolean); } - return `${source || ''}` - .split(/[\s,,]+/) - .filter(Boolean); + return `${source || ''}`.split(/[\s,,]+/).filter(Boolean); } diff --git a/src/qqbot/plugins/bangDream/cutoff/cutoff-all.renderer.ts b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-all.renderer.ts similarity index 69% rename from src/qqbot/plugins/bangDream/cutoff/cutoff-all.renderer.ts rename to src/modules/qqbot/plugins/bangDream/cutoff/cutoff-all.renderer.ts index f9dad62..9896c4f 100644 --- a/src/qqbot/plugins/bangDream/cutoff/cutoff-all.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-all.renderer.ts @@ -1,21 +1,21 @@ -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; import { drawList, line, -} from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; import { Image, Canvas } from 'skia-canvas'; -import { formatTime } from '@/qqbot/plugins/bangDream/event/event-time.renderer'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { Cutoff } from '@/qqbot/plugins/bangDream/cutoff/cutoff.model'; -import { drawCutoffChart } from '@/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer'; -import { serverNameFullList } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { drawEventDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; -import { statusName } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { BangDreamEventStatus } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; -import { getCutoffTierList } from '@/qqbot/plugins/bangDream/policy/cutoff.policy'; +import { formatTime } from '@/modules/qqbot/plugins/bangDream/event/event-time.renderer'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { Cutoff } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff.model'; +import { drawCutoffChart } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer'; +import { serverNameFullList } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { drawEventDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { statusName } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { BangDreamEventStatus } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; +import { getCutoffTierList } from '@/modules/qqbot/plugins/bangDream/policy/cutoff.policy'; /** * 在QQBot 图片视图层中绘制档线全部。 diff --git a/src/qqbot/plugins/bangDream/cutoff/cutoff-chart.layout.ts b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-chart.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/cutoff/cutoff-chart.layout.ts rename to src/modules/qqbot/plugins/bangDream/cutoff/cutoff-chart.layout.ts diff --git a/src/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer.ts b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer.ts similarity index 89% rename from src/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer.ts rename to src/modules/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer.ts index c4502c3..e0e8f60 100644 --- a/src/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer.ts @@ -1,21 +1,21 @@ import { Canvas } from 'skia-canvas'; -import { Cutoff } from '@/qqbot/plugins/bangDream/cutoff/cutoff.model'; -import { drawTimeLineChart } from '@/qqbot/plugins/bangDream/cutoff/timeline-chart.renderer'; -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { CutoffEventTop } from '@/qqbot/plugins/bangDream/cutoff/cutoff-event-top.model'; -import { getPresetColor } from '@/qqbot/plugins/bangDream/catalog/color.model'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { stackImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { BangDreamEventStatus } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; +import { Cutoff } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff.model'; +import { drawTimeLineChart } from '@/modules/qqbot/plugins/bangDream/cutoff/timeline-chart.renderer'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { CutoffEventTop } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.model'; +import { getPresetColor } from '@/modules/qqbot/plugins/bangDream/catalog/color.model'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { stackImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { BangDreamEventStatus } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; import { BANGDREAM_CUTOFF_CHART_SPEC, stripCutoffChartLabelTags, -} from '@/qqbot/plugins/bangDream/cutoff/cutoff-chart.layout'; +} from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-chart.layout'; import type { TimelineChartDataset, TimelineChartPoint, -} from '@/qqbot/plugins/bangDream/cutoff/timeline-chart.layout'; +} from '@/modules/qqbot/plugins/bangDream/cutoff/timeline-chart.layout'; /** * 在图片布局层中绘制档线谱面。 diff --git a/src/qqbot/plugins/bangDream/cutoff/cutoff-detail.renderer.ts b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-detail.renderer.ts similarity index 79% rename from src/qqbot/plugins/bangDream/cutoff/cutoff-detail.renderer.ts rename to src/modules/qqbot/plugins/bangDream/cutoff/cutoff-detail.renderer.ts index 6459b5a..8bf946e 100644 --- a/src/qqbot/plugins/bangDream/cutoff/cutoff-detail.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-detail.renderer.ts @@ -1,22 +1,22 @@ -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; import { drawList, line, drawListMerge, -} from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; import { Image, Canvas } from 'skia-canvas'; -import { formatTimePeriod } from '@/qqbot/plugins/bangDream/event/event-time.renderer'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { Cutoff } from '@/qqbot/plugins/bangDream/cutoff/cutoff.model'; -import { drawCutoffChart } from '@/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer'; -import { serverNameFullList } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { drawEventDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; -import { statusName } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { bangDreamMainDataRepository } from '@/qqbot/plugins/bangDream/shared/main-data.repository'; -import { BangDreamEventStatus } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; +import { formatTimePeriod } from '@/modules/qqbot/plugins/bangDream/event/event-time.renderer'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { Cutoff } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff.model'; +import { drawCutoffChart } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer'; +import { serverNameFullList } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { drawEventDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { statusName } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { bangDreamMainDataRepository } from '@/modules/qqbot/plugins/bangDream/shared/main-data.repository'; +import { BangDreamEventStatus } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; /** * 在QQBot 图片视图层中绘制档线详情。 diff --git a/src/qqbot/plugins/bangDream/cutoff/cutoff-event-top.model.ts b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.model.ts similarity index 93% rename from src/qqbot/plugins/bangDream/cutoff/cutoff-event-top.model.ts rename to src/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.model.ts index 6acfd11..8c2b505 100644 --- a/src/qqbot/plugins/bangDream/cutoff/cutoff-event-top.model.ts +++ b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.model.ts @@ -1,11 +1,11 @@ -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; -import { BangDreamEventStatus } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { BangDreamEventStatus } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; import { cutoffEventTopRepository, type CutoffEventTopPoint, type CutoffEventTopUser, -} from '@/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository'; +} from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository'; export class CutoffEventTop { eventId: number; diff --git a/src/qqbot/plugins/bangDream/cutoff/cutoff-event-top.renderer.ts b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.renderer.ts similarity index 62% rename from src/qqbot/plugins/bangDream/cutoff/cutoff-event-top.renderer.ts rename to src/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.renderer.ts index a5834ec..11a1783 100644 --- a/src/qqbot/plugins/bangDream/cutoff/cutoff-event-top.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.renderer.ts @@ -1,14 +1,14 @@ import { Image, Canvas } from 'skia-canvas'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { serverNameFullList } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { CutoffEventTop } from '@/qqbot/plugins/bangDream/cutoff/cutoff-event-top.model'; -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawEventDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { drawPlayerRankingInList } from '@/qqbot/plugins/bangDream/player/player-ranking.renderer'; -import { drawCutoffEventTopChart } from '@/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { serverNameFullList } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { CutoffEventTop } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.model'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawEventDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { drawPlayerRankingInList } from '@/modules/qqbot/plugins/bangDream/player/player-ranking.renderer'; +import { drawCutoffEventTopChart } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer'; /** * 在QQBot 图片视图层中绘制档线活动排名。 diff --git a/src/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository.ts b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository.ts similarity index 80% rename from src/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository.ts rename to src/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository.ts index 707d0f8..7f457f4 100644 --- a/src/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository.ts @@ -1,6 +1,6 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; export interface CutoffEventTopPoint { time: number; diff --git a/src/qqbot/plugins/bangDream/cutoff/cutoff-predictor.ts b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-predictor.ts similarity index 100% rename from src/qqbot/plugins/bangDream/cutoff/cutoff-predictor.ts rename to src/modules/qqbot/plugins/bangDream/cutoff/cutoff-predictor.ts diff --git a/src/qqbot/plugins/bangDream/cutoff/cutoff-recent.renderer.ts b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-recent.renderer.ts similarity index 75% rename from src/qqbot/plugins/bangDream/cutoff/cutoff-recent.renderer.ts rename to src/modules/qqbot/plugins/bangDream/cutoff/cutoff-recent.renderer.ts index b5773ec..f36bd9b 100644 --- a/src/qqbot/plugins/bangDream/cutoff/cutoff-recent.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff-recent.renderer.ts @@ -1,21 +1,24 @@ import { Event, getRecentEventListByEventAndServer, -} from '@/qqbot/plugins/bangDream/event/event.model'; -import { drawList, line } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; +} from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { + drawList, + line, +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; import { Image, Canvas } from 'skia-canvas'; -import { formatTime } from '@/qqbot/plugins/bangDream/event/event-time.renderer'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { Cutoff } from '@/qqbot/plugins/bangDream/cutoff/cutoff.model'; -import { drawCutoffChart } from '@/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer'; -import { serverNameFullList } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { drawEventDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; -import { drawAttributeInList } from '@/qqbot/plugins/bangDream/catalog/attribute-list.renderer'; -import { drawCharacterInList } from '@/qqbot/plugins/bangDream/character/character-list.renderer'; -import { BangDreamEventStatus } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; +import { formatTime } from '@/modules/qqbot/plugins/bangDream/event/event-time.renderer'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { Cutoff } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff.model'; +import { drawCutoffChart } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-chart.renderer'; +import { serverNameFullList } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { drawEventDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { drawAttributeInList } from '@/modules/qqbot/plugins/bangDream/catalog/attribute-list.renderer'; +import { drawCharacterInList } from '@/modules/qqbot/plugins/bangDream/character/character-list.renderer'; +import { BangDreamEventStatus } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; /** * 在QQBot 图片视图层中绘制档线列表Of最近活动。 diff --git a/src/qqbot/plugins/bangDream/cutoff/cutoff.model.ts b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff.model.ts similarity index 95% rename from src/qqbot/plugins/bangDream/cutoff/cutoff.model.ts rename to src/modules/qqbot/plugins/bangDream/cutoff/cutoff.model.ts index 282aa98..6fa7975 100644 --- a/src/qqbot/plugins/bangDream/cutoff/cutoff.model.ts +++ b/src/modules/qqbot/plugins/bangDream/cutoff/cutoff.model.ts @@ -1,19 +1,19 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import { bangDreamHhwxTrackerProvider } from '@/qqbot/plugins/bangDream/provider/hhwx-tracker.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { bangDreamMainDataRepository } from '@/qqbot/plugins/bangDream/shared/main-data.repository'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import { bangDreamHhwxTrackerProvider } from '@/modules/qqbot/plugins/bangDream/provider/hhwx-tracker.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { bangDreamMainDataRepository } from '@/modules/qqbot/plugins/bangDream/shared/main-data.repository'; import { preferHhwxSource, reportDataSourceProblem, clearDataSourceProblem, -} from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; import { Event, getPresentEvent, -} from '@/qqbot/plugins/bangDream/event/event.model'; -import { predict } from '@/qqbot/plugins/bangDream/cutoff/cutoff-predictor'; -import { logger } from '@/qqbot/plugins/bangDream/shared/bangdream-logger'; +} from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { predict } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-predictor'; +import { logger } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-logger'; import { getCutoffDateByServerTimezone, getCutoffDayIndex, @@ -22,8 +22,8 @@ import { isCutoffDailyCheckpoint, isCutoffTierSupported, resolveCutoffEventSchedule, -} from '@/qqbot/plugins/bangDream/policy/cutoff.policy'; -import { BangDreamEventStatus } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; +} from '@/modules/qqbot/plugins/bangDream/policy/cutoff.policy'; +import { BangDreamEventStatus } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; export class Cutoff { eventId: number; diff --git a/src/qqbot/plugins/bangDream/cutoff/timeline-chart.layout.ts b/src/modules/qqbot/plugins/bangDream/cutoff/timeline-chart.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/cutoff/timeline-chart.layout.ts rename to src/modules/qqbot/plugins/bangDream/cutoff/timeline-chart.layout.ts diff --git a/src/qqbot/plugins/bangDream/cutoff/timeline-chart.renderer.ts b/src/modules/qqbot/plugins/bangDream/cutoff/timeline-chart.renderer.ts similarity index 91% rename from src/qqbot/plugins/bangDream/cutoff/timeline-chart.renderer.ts rename to src/modules/qqbot/plugins/bangDream/cutoff/timeline-chart.renderer.ts index 0d3de00..3fa6522 100644 --- a/src/qqbot/plugins/bangDream/cutoff/timeline-chart.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/cutoff/timeline-chart.renderer.ts @@ -2,15 +2,15 @@ import { Chart, registerables } from 'chart.js'; import type { ChartConfiguration, ChartItem } from 'chart.js'; import { Canvas, FontLibrary, loadImage } from 'skia-canvas'; import 'chartjs-adapter-moment'; -import { assetsRootPath } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { assetErrorImageBuffer } from '@/qqbot/plugins/bangDream/theme/canvas-image'; +import { assetsRootPath } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { assetErrorImageBuffer } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; import { BANGDREAM_TIMELINE_CHART_SPEC, getTimelineDisplayYMax, getTimelineRawYMax, type TimelineChartDataset, type TimelineChartPoint, -} from '@/qqbot/plugins/bangDream/cutoff/timeline-chart.layout'; +} from '@/modules/qqbot/plugins/bangDream/cutoff/timeline-chart.layout'; // 2. 注册 Chart.js 所有组件 Chart.register(...registerables); diff --git a/src/qqbot/plugins/bangDream/dictionary/default-dictionary.ts b/src/modules/qqbot/plugins/bangDream/dictionary/default-dictionary.ts similarity index 98% rename from src/qqbot/plugins/bangDream/dictionary/default-dictionary.ts rename to src/modules/qqbot/plugins/bangDream/dictionary/default-dictionary.ts index fd02cc8..9196047 100644 --- a/src/qqbot/plugins/bangDream/dictionary/default-dictionary.ts +++ b/src/modules/qqbot/plugins/bangDream/dictionary/default-dictionary.ts @@ -7,7 +7,7 @@ import { BangDreamGachaType, BangDreamServerCode, BangDreamSongTag, -} from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; +} from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; export const BANGDREAM_DICTIONARY_CODES = { difficultyAlias: 'BANGDREAM_DIFFICULTY_ALIAS', diff --git a/src/qqbot/plugins/bangDream/dictionary/dictionary-loader.ts b/src/modules/qqbot/plugins/bangDream/dictionary/dictionary-loader.ts similarity index 92% rename from src/qqbot/plugins/bangDream/dictionary/dictionary-loader.ts rename to src/modules/qqbot/plugins/bangDream/dictionary/dictionary-loader.ts index 21c34da..6688474 100644 --- a/src/qqbot/plugins/bangDream/dictionary/dictionary-loader.ts +++ b/src/modules/qqbot/plugins/bangDream/dictionary/dictionary-loader.ts @@ -2,13 +2,13 @@ import { BANGDREAM_DIFFICULTY_NAME_BY_ID, BANGDREAM_SERVER_ID_BY_CODE, BangDreamServerCode, -} from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; +} from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; import { BANGDREAM_DEFAULT_DIFFICULTY_ALIASES, BANGDREAM_DEFAULT_SERVER_ALIASES, BANGDREAM_DICTIONARY_CODES, -} from '@/qqbot/plugins/bangDream/dictionary/default-dictionary'; -import { BANGDREAM_DEFAULT_SERVER_IDS } from '@/qqbot/plugins/bangDream/config/runtime-options'; +} from '@/modules/qqbot/plugins/bangDream/dictionary/default-dictionary'; +import { BANGDREAM_DEFAULT_SERVER_IDS } from '@/modules/qqbot/plugins/bangDream/config/runtime-options'; export type BangDreamDictionaryItem = { label: string; @@ -98,7 +98,8 @@ export class BangDreamDictionaryLoader { item: BangDreamDictionaryItem, ) { const server = - this.resolveServerValue(item.value) ?? this.resolveServerValue(item.label); + this.resolveServerValue(item.value) ?? + this.resolveServerValue(item.label); if (server === undefined) return; this.addServerAlias(map, item.label, server); this.addServerAlias(map, item.value, server); @@ -140,7 +141,9 @@ export class BangDreamDictionaryLoader { map.set(normalized, difficulty); } - private resolveServerValue(value: unknown): BangDreamResolvedServer | undefined { + private resolveServerValue( + value: unknown, + ): BangDreamResolvedServer | undefined { if (value === undefined || value === null || value === '') return undefined; const raw = `${value}`.trim(); const numeric = Number(raw); diff --git a/src/qqbot/plugins/bangDream/event/event-data.repository.ts b/src/modules/qqbot/plugins/bangDream/event/event-data.repository.ts similarity index 92% rename from src/qqbot/plugins/bangDream/event/event-data.repository.ts rename to src/modules/qqbot/plugins/bangDream/event/event-data.repository.ts index 1e871f9..dae00fe 100644 --- a/src/qqbot/plugins/bangDream/event/event-data.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/event/event-data.repository.ts @@ -1,10 +1,10 @@ import { Canvas, Image, loadImage } from 'skia-canvas'; -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; import { getServerByPriority, Server, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; export interface EventAssetContext { assetBundleName: string; @@ -35,9 +35,7 @@ type RewardWithId = { }; export class EventDataRepository { - constructor( - private readonly provider = bangDreamBestdoriProvider, - ) {} + constructor(private readonly provider = bangDreamBestdoriProvider) {} /** * 获取活动远端详情数据。 @@ -45,7 +43,10 @@ export class EventDataRepository { * @param eventId - 活动 ID。 * @param update - 是否强制更新缓存。 */ - async getDetail(eventId: number, update = true): Promise> { + async getDetail( + eventId: number, + update = true, + ): Promise> { const cacheTime = update ? 0 : 1 / 0; return await this.provider.getJson>( `/api/events/${eventId}.json`, @@ -228,9 +229,9 @@ export class EventDataRepository { event: EventRewardContext, server: Server, ): Promise { - const allStamps = await this.provider.getJson< - Record - >('/api/stamps/all.2.json'); + const allStamps = await this.provider.getJson>( + '/api/stamps/all.2.json', + ); const rewardId = this.pickRewardId(event.pointRewards, 'stamp'); if (rewardId === undefined) return undefined; @@ -267,12 +268,10 @@ export class EventDataRepository { const rewardId = this.pickRewardId(event.rankingRewards, 'deco_pins'); if (rewardId === undefined) return undefined; - const { bangDreamMainDataRepository } = await import( - '../shared/main-data.repository' - ); - const allDeco = bangDreamMainDataRepository.getCollection< - Record - >('deco'); + const { bangDreamMainDataRepository } = + await import('../shared/main-data.repository'); + const allDeco = + bangDreamMainDataRepository.getCollection>('deco'); const decoAssetName = allDeco[rewardId]?.assetBundleName; if (!decoAssetName) return undefined; diff --git a/src/qqbot/plugins/bangDream/event/event-detail.renderer.ts b/src/modules/qqbot/plugins/bangDream/event/event-detail.renderer.ts similarity index 87% rename from src/qqbot/plugins/bangDream/event/event-detail.renderer.ts rename to src/modules/qqbot/plugins/bangDream/event/event-detail.renderer.ts index be3003c..c887632 100644 --- a/src/qqbot/plugins/bangDream/event/event-detail.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/event/event-detail.renderer.ts @@ -1,43 +1,43 @@ -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; import { drawList, drawListByServerList, drawListMerge, -} from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; -import { drawGachaDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { drawGachaDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; import { Image, Canvas } from 'skia-canvas'; -import { drawBannerImageCanvas } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; -import { drawTimeInList } from '@/qqbot/plugins/bangDream/event/event-time.renderer'; -import { drawAttributeInList } from '@/qqbot/plugins/bangDream/catalog/attribute-list.renderer'; -import { drawCharacterInList } from '@/qqbot/plugins/bangDream/character/character-list.renderer'; -import { statConfig } from '@/qqbot/plugins/bangDream/card/card-stat.renderer'; -import { drawCardListInList } from '@/qqbot/plugins/bangDream/card/card-icon.renderer'; +import { drawBannerImageCanvas } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { drawTimeInList } from '@/modules/qqbot/plugins/bangDream/event/event-time.renderer'; +import { drawAttributeInList } from '@/modules/qqbot/plugins/bangDream/catalog/attribute-list.renderer'; +import { drawCharacterInList } from '@/modules/qqbot/plugins/bangDream/character/character-list.renderer'; +import { statConfig } from '@/modules/qqbot/plugins/bangDream/card/card-stat.renderer'; +import { drawCardListInList } from '@/modules/qqbot/plugins/bangDream/card/card-icon.renderer'; import { getPresentGachaList, Gacha, -} from '@/qqbot/plugins/bangDream/gacha/gacha.model'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { createOutputFinalImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { drawDegreeListOfEvent } from '@/qqbot/plugins/bangDream/catalog/degree-list.renderer'; +} from '@/modules/qqbot/plugins/bangDream/gacha/gacha.model'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { createOutputFinalImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { drawDegreeListOfEvent } from '@/modules/qqbot/plugins/bangDream/catalog/degree-list.renderer'; import { Song, getPresentSongList, -} from '@/qqbot/plugins/bangDream/song/song.model'; +} from '@/modules/qqbot/plugins/bangDream/song/song.model'; import { globalDefaultServer, serverNameFullList, -} from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { isBirthdayGachaType } from '@/qqbot/plugins/bangDream/policy/gacha.policy'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { isBirthdayGachaType } from '@/modules/qqbot/plugins/bangDream/policy/gacha.policy'; import { drawSongInList, drawSongListInList, -} from '@/qqbot/plugins/bangDream/song/song-list.renderer'; -import { drawDottedLine } from '@/qqbot/plugins/bangDream/theme/canvas-dotted-line'; -import { createHorizontalSeparatorSpec } from '@/qqbot/plugins/bangDream/theme/layout'; -import { DetailBlockBuilder } from '@/qqbot/plugins/bangDream/shared/detail-block.builder'; +} from '@/modules/qqbot/plugins/bangDream/song/song-list.renderer'; +import { drawDottedLine } from '@/modules/qqbot/plugins/bangDream/theme/canvas-dotted-line'; +import { createHorizontalSeparatorSpec } from '@/modules/qqbot/plugins/bangDream/theme/layout'; +import { DetailBlockBuilder } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.builder'; const songSeparatorLine = drawDottedLine( createHorizontalSeparatorSpec({ height: 10 }), @@ -136,10 +136,7 @@ function getEventStatBonusText(event: Event): string { * @param builder - 详情区块构建器。 * @param event - 活动参数。 */ -function appendEventStatBonus( - builder: DetailBlockBuilder, - event: Event, -): void { +function appendEventStatBonus(builder: DetailBlockBuilder, event: Event): void { const statText = getEventStatBonusText(event); if (!statText) { return; diff --git a/src/qqbot/plugins/bangDream/event/event-search.renderer.ts b/src/modules/qqbot/plugins/bangDream/event/event-search.renderer.ts similarity index 83% rename from src/qqbot/plugins/bangDream/event/event-search.renderer.ts rename to src/modules/qqbot/plugins/bangDream/event/event-search.renderer.ts index 88ce671..affc4dc 100644 --- a/src/qqbot/plugins/bangDream/event/event-search.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/event/event-search.renderer.ts @@ -1,44 +1,44 @@ -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; import { match, FuzzySearchResult, -} from '@/qqbot/plugins/bangDream/search/fuzzy-search'; +} from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search'; import { Canvas } from 'skia-canvas'; import { drawDataBlock, drawDataBlockHorizontal, -} from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; -import { line } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; +} from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { line } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; import { stackImage, stackImageHorizontal, resizeImage, -} from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; +} from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; import { Server, getIcon, getServerByName, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; import { Event, getPresentEvent, sortEventList, -} from '@/qqbot/plugins/bangDream/event/event.model'; -import { drawCardListInList } from '@/qqbot/plugins/bangDream/card/card-icon.renderer'; +} from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { drawCardListInList } from '@/modules/qqbot/plugins/bangDream/card/card-icon.renderer'; import { getProbableTimeDifference, formatTime, -} from '@/qqbot/plugins/bangDream/event/event-time.renderer'; -import { drawTextWithImages } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { getEventGachaAndCardList } from '@/qqbot/plugins/bangDream/event/event-detail.renderer'; -import { drawDottedLine } from '@/qqbot/plugins/bangDream/theme/canvas-dotted-line'; -import { statConfig } from '@/qqbot/plugins/bangDream/card/card-stat.renderer'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { createTsuguEntityMatcher } from '@/qqbot/plugins/bangDream/search/entity-list-matcher'; -import { eventRepository } from '@/qqbot/plugins/bangDream/event/event.repository'; -import { createVerticalSeparatorSpec } from '@/qqbot/plugins/bangDream/theme/layout'; +} from '@/modules/qqbot/plugins/bangDream/event/event-time.renderer'; +import { drawTextWithImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { getEventGachaAndCardList } from '@/modules/qqbot/plugins/bangDream/event/event-detail.renderer'; +import { drawDottedLine } from '@/modules/qqbot/plugins/bangDream/theme/canvas-dotted-line'; +import { statConfig } from '@/modules/qqbot/plugins/bangDream/card/card-stat.renderer'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { createTsuguEntityMatcher } from '@/modules/qqbot/plugins/bangDream/search/entity-list-matcher'; +import { eventRepository } from '@/modules/qqbot/plugins/bangDream/event/event.repository'; +import { createVerticalSeparatorSpec } from '@/modules/qqbot/plugins/bangDream/theme/layout'; const maxHeight = 7000; const maxColumns = 7; diff --git a/src/qqbot/plugins/bangDream/event/event-stage-data.repository.ts b/src/modules/qqbot/plugins/bangDream/event/event-stage-data.repository.ts similarity index 83% rename from src/qqbot/plugins/bangDream/event/event-stage-data.repository.ts rename to src/modules/qqbot/plugins/bangDream/event/event-stage-data.repository.ts index 86120fc..2f2e097 100644 --- a/src/qqbot/plugins/bangDream/event/event-stage-data.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/event/event-stage-data.repository.ts @@ -1,5 +1,5 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; export type EventStageDataType = 'stages' | 'rotationMusics'; diff --git a/src/qqbot/plugins/bangDream/event/event-stage-list.renderer.ts b/src/modules/qqbot/plugins/bangDream/event/event-stage-list.renderer.ts similarity index 88% rename from src/qqbot/plugins/bangDream/event/event-stage-list.renderer.ts rename to src/modules/qqbot/plugins/bangDream/event/event-stage-list.renderer.ts index 1139daf..2e72648 100644 --- a/src/qqbot/plugins/bangDream/event/event-stage-list.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/event/event-stage-list.renderer.ts @@ -3,25 +3,25 @@ import { stageTypeTextStrokeColor, stageTypeName, Stage, -} from '@/qqbot/plugins/bangDream/event/event-stage.model'; -import { BangDreamEventStageType } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; +} from '@/modules/qqbot/plugins/bangDream/event/event-stage.model'; +import { BangDreamEventStageType } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; import { Song, difficultyColorList, -} from '@/qqbot/plugins/bangDream/song/song.model'; +} from '@/modules/qqbot/plugins/bangDream/song/song.model'; import { Canvas, Image, FontLibrary } from 'skia-canvas'; -import { assetsRootPath } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { formatTime } from '@/qqbot/plugins/bangDream/event/event-time.renderer'; -import { setFontStyle } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { stackImageHorizontal } from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { loadImageFromPath } from '@/qqbot/plugins/bangDream/theme/canvas-image'; +import { assetsRootPath } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { formatTime } from '@/modules/qqbot/plugins/bangDream/event/event-time.renderer'; +import { setFontStyle } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { stackImageHorizontal } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { loadImageFromPath } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; import { BANGDREAM_EVENT_STAGE_SPEC, getEventStageSongCellHeight, getEventStageSongCellWidth, getEventStageSongJacketHeight, getEventStageSongRowSize, -} from '@/qqbot/plugins/bangDream/event/event-stage.layout'; +} from '@/modules/qqbot/plugins/bangDream/event/event-stage.layout'; FontLibrary.use('old', [`${assetsRootPath}/Fonts/old.ttf`]); diff --git a/src/qqbot/plugins/bangDream/event/event-stage.layout.ts b/src/modules/qqbot/plugins/bangDream/event/event-stage.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/event/event-stage.layout.ts rename to src/modules/qqbot/plugins/bangDream/event/event-stage.layout.ts diff --git a/src/qqbot/plugins/bangDream/event/event-stage.model.ts b/src/modules/qqbot/plugins/bangDream/event/event-stage.model.ts similarity index 94% rename from src/qqbot/plugins/bangDream/event/event-stage.model.ts rename to src/modules/qqbot/plugins/bangDream/event/event-stage.model.ts index 70bb08a..e2f50bc 100644 --- a/src/qqbot/plugins/bangDream/event/event-stage.model.ts +++ b/src/modules/qqbot/plugins/bangDream/event/event-stage.model.ts @@ -1,17 +1,17 @@ -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; import { BANGDREAM_EVENT_STAGE_NAME, BANGDREAM_EVENT_STAGE_STROKE_COLOR, BANGDREAM_EVENT_STAGE_TYPES, BangDreamEventStageType, -} from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; +} from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; import { eventStageDataRepository, type EventStageDataRows, type EventStageRotationMusicRow, type EventStageTypeRow, type EventStageDataType, -} from '@/qqbot/plugins/bangDream/event/event-stage-data.repository'; +} from '@/modules/qqbot/plugins/bangDream/event/event-stage-data.repository'; export interface Stage { type: string; diff --git a/src/qqbot/plugins/bangDream/event/event-stage.renderer.ts b/src/modules/qqbot/plugins/bangDream/event/event-stage.renderer.ts similarity index 77% rename from src/qqbot/plugins/bangDream/event/event-stage.renderer.ts rename to src/modules/qqbot/plugins/bangDream/event/event-stage.renderer.ts index c7c33d4..8e558f3 100644 --- a/src/qqbot/plugins/bangDream/event/event-stage.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/event/event-stage.renderer.ts @@ -1,22 +1,22 @@ -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; import { EventStage, Stage, -} from '@/qqbot/plugins/bangDream/event/event-stage.model'; -import { serverNameFullList } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; +} from '@/modules/qqbot/plugins/bangDream/event/event-stage.model'; +import { serverNameFullList } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; import { drawEventStageTypeTop, drawEventStageSongHorizontal, -} from '@/qqbot/plugins/bangDream/event/event-stage-list.renderer'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; -import { stackImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; +} from '@/modules/qqbot/plugins/bangDream/event/event-stage-list.renderer'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { stackImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; import { getEventStageStageBatchSize, shouldStartNewEventStageColumn, -} from '@/qqbot/plugins/bangDream/event/event-stage.layout'; +} from '@/modules/qqbot/plugins/bangDream/event/event-stage.layout'; import { Canvas } from 'skia-canvas'; /** diff --git a/src/qqbot/plugins/bangDream/event/event-time.layout.ts b/src/modules/qqbot/plugins/bangDream/event/event-time.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/event/event-time.layout.ts rename to src/modules/qqbot/plugins/bangDream/event/event-time.layout.ts diff --git a/src/qqbot/plugins/bangDream/event/event-time.renderer.ts b/src/modules/qqbot/plugins/bangDream/event/event-time.renderer.ts similarity index 88% rename from src/qqbot/plugins/bangDream/event/event-time.renderer.ts rename to src/modules/qqbot/plugins/bangDream/event/event-time.renderer.ts index 09aa2e7..cf609b8 100644 --- a/src/qqbot/plugins/bangDream/event/event-time.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/event/event-time.renderer.ts @@ -1,27 +1,27 @@ -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { getPresentEvent } from '@/qqbot/plugins/bangDream/event/event.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { getPresentEvent } from '@/modules/qqbot/plugins/bangDream/event/event.model'; import { Server, getServerByName, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawListByServerList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawListByServerList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; import { Canvas } from 'skia-canvas'; import { estimateCnEventStartAt, type BangDreamEventTimeLike, -} from '@/qqbot/plugins/bangDream/policy/cn-event-estimate.policy'; +} from '@/modules/qqbot/plugins/bangDream/policy/cn-event-estimate.policy'; import { getBangDreamDateByServerTimezone, getBangDreamServerUtcOffset, normalizeBangDreamTimestamp, -} from '@/qqbot/plugins/bangDream/policy/server.policy'; +} from '@/modules/qqbot/plugins/bangDream/policy/server.policy'; import { BANGDREAM_TIME_FORMAT_SPEC, formatBangDreamMonthDay, formatBangDreamPeriod, formatBangDreamSeconds, formatBangDreamTime, -} from '@/qqbot/plugins/bangDream/event/event-time.layout'; +} from '@/modules/qqbot/plugins/bangDream/event/event-time.layout'; interface TimeInListOptions { key?: string; diff --git a/src/qqbot/plugins/bangDream/event/event.model.ts b/src/modules/qqbot/plugins/bangDream/event/event.model.ts similarity index 93% rename from src/qqbot/plugins/bangDream/event/event.model.ts rename to src/modules/qqbot/plugins/bangDream/event/event.model.ts index 77f55b7..a3255fb 100644 --- a/src/qqbot/plugins/bangDream/event/event.model.ts +++ b/src/modules/qqbot/plugins/bangDream/event/event.model.ts @@ -1,17 +1,17 @@ import { Canvas, Image } from 'skia-canvas'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { bangDreamMainDataRepository } from '@/qqbot/plugins/bangDream/shared/main-data.repository'; -import { Attribute } from '@/qqbot/plugins/bangDream/catalog/attribute.model'; -import { Character } from '@/qqbot/plugins/bangDream/character/character.model'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { stringToNumberArray } from '@/qqbot/plugins/bangDream/shared/model-utils'; -import { BANGDREAM_EVENT_TYPE_NAME } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; -import { eventDataRepository } from '@/qqbot/plugins/bangDream/event/event-data.repository'; -import { estimateCnEventStartAt } from '@/qqbot/plugins/bangDream/policy/cn-event-estimate.policy'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { bangDreamMainDataRepository } from '@/modules/qqbot/plugins/bangDream/shared/main-data.repository'; +import { Attribute } from '@/modules/qqbot/plugins/bangDream/catalog/attribute.model'; +import { Character } from '@/modules/qqbot/plugins/bangDream/character/character.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { stringToNumberArray } from '@/modules/qqbot/plugins/bangDream/shared/model-utils'; +import { BANGDREAM_EVENT_TYPE_NAME } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; +import { eventDataRepository } from '@/modules/qqbot/plugins/bangDream/event/event-data.repository'; +import { estimateCnEventStartAt } from '@/modules/qqbot/plugins/bangDream/policy/cn-event-estimate.policy'; import { selectRecentCutoffEventIds, type CutoffRecentEventCandidate, -} from '@/qqbot/plugins/bangDream/policy/cutoff.policy'; +} from '@/modules/qqbot/plugins/bangDream/policy/cutoff.policy'; const typeName: Record = BANGDREAM_EVENT_TYPE_NAME; diff --git a/src/qqbot/plugins/bangDream/event/event.repository.ts b/src/modules/qqbot/plugins/bangDream/event/event.repository.ts similarity index 80% rename from src/qqbot/plugins/bangDream/event/event.repository.ts rename to src/modules/qqbot/plugins/bangDream/event/event.repository.ts index 0625a5e..d5e3ee8 100644 --- a/src/qqbot/plugins/bangDream/event/event.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/event/event.repository.ts @@ -1,8 +1,8 @@ -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; import { bangDreamMainDataRepository, type BangDreamMainDataCollection, -} from '@/qqbot/plugins/bangDream/shared/main-data.repository'; +} from '@/modules/qqbot/plugins/bangDream/shared/main-data.repository'; export class EventRepository { /** diff --git a/src/qqbot/plugins/bangDream/gacha/gacha-detail.renderer.ts b/src/modules/qqbot/plugins/bangDream/gacha/gacha-detail.renderer.ts similarity index 73% rename from src/qqbot/plugins/bangDream/gacha/gacha-detail.renderer.ts rename to src/modules/qqbot/plugins/bangDream/gacha/gacha-detail.renderer.ts index 0c565b7..88163cf 100644 --- a/src/qqbot/plugins/bangDream/gacha/gacha-detail.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/gacha/gacha-detail.renderer.ts @@ -1,29 +1,29 @@ -import { getPresentEvent } from '@/qqbot/plugins/bangDream/event/event.model'; +import { getPresentEvent } from '@/modules/qqbot/plugins/bangDream/event/event.model'; import { drawList, line, drawListByServerList, drawListMerge, -} from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; import { Image, Canvas } from 'skia-canvas'; -import { drawBannerImageCanvas } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; -import { drawTimeInList } from '@/qqbot/plugins/bangDream/event/event-time.renderer'; +import { drawBannerImageCanvas } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { drawTimeInList } from '@/modules/qqbot/plugins/bangDream/event/event-time.renderer'; import { Server, getServerByPriority, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { createOutputFinalImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { drawEventDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; -import { drawGashaPaymentMethodInList } from '@/qqbot/plugins/bangDream/gacha/gacha-payment-method.renderer'; -import { drawGachaRateInList } from '@/qqbot/plugins/bangDream/gacha/gacha-rate.renderer'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { createOutputFinalImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { drawEventDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { drawGashaPaymentMethodInList } from '@/modules/qqbot/plugins/bangDream/gacha/gacha-payment-method.renderer'; +import { drawGachaRateInList } from '@/modules/qqbot/plugins/bangDream/gacha/gacha-rate.renderer'; import { globalDefaultServer, serverNameFullList, -} from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { drawGachaPickupInList } from '@/qqbot/plugins/bangDream/gacha/gacha-pick-up.renderer'; -import { gachaRepository } from '@/qqbot/plugins/bangDream/gacha/gacha.repository'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { drawGachaPickupInList } from '@/modules/qqbot/plugins/bangDream/gacha/gacha-pick-up.renderer'; +import { gachaRepository } from '@/modules/qqbot/plugins/bangDream/gacha/gacha.repository'; /** * 在QQBot 图片视图层中绘制卡池详情。 diff --git a/src/qqbot/plugins/bangDream/gacha/gacha-list.layout.ts b/src/modules/qqbot/plugins/bangDream/gacha/gacha-list.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/gacha/gacha-list.layout.ts rename to src/modules/qqbot/plugins/bangDream/gacha/gacha-list.layout.ts diff --git a/src/qqbot/plugins/bangDream/gacha/gacha-payment-method.renderer.ts b/src/modules/qqbot/plugins/bangDream/gacha/gacha-payment-method.renderer.ts similarity index 82% rename from src/qqbot/plugins/bangDream/gacha/gacha-payment-method.renderer.ts rename to src/modules/qqbot/plugins/bangDream/gacha/gacha-payment-method.renderer.ts index 8cb728e..ec6b676 100644 --- a/src/qqbot/plugins/bangDream/gacha/gacha-payment-method.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/gacha/gacha-payment-method.renderer.ts @@ -1,12 +1,12 @@ -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { Gacha } from '@/qqbot/plugins/bangDream/gacha/gacha.model'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { Item } from '@/qqbot/plugins/bangDream/catalog/item.model'; -import { stackImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { Gacha } from '@/modules/qqbot/plugins/bangDream/gacha/gacha.model'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { Item } from '@/modules/qqbot/plugins/bangDream/catalog/item.model'; +import { stackImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; import { BANGDREAM_GACHA_LIST_SPEC, getGachaPaymentBehaviorLabel, -} from '@/qqbot/plugins/bangDream/gacha/gacha-list.layout'; +} from '@/modules/qqbot/plugins/bangDream/gacha/gacha-list.layout'; /** * 在图片布局层中绘制Gasha支付方式MethodIn列表。 diff --git a/src/qqbot/plugins/bangDream/gacha/gacha-pick-up.renderer.ts b/src/modules/qqbot/plugins/bangDream/gacha/gacha-pick-up.renderer.ts similarity index 78% rename from src/qqbot/plugins/bangDream/gacha/gacha-pick-up.renderer.ts rename to src/modules/qqbot/plugins/bangDream/gacha/gacha-pick-up.renderer.ts index fabef93..15cf3e0 100644 --- a/src/qqbot/plugins/bangDream/gacha/gacha-pick-up.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/gacha/gacha-pick-up.renderer.ts @@ -1,11 +1,11 @@ -import { Gacha } from '@/qqbot/plugins/bangDream/gacha/gacha.model'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawCardListInList } from '@/qqbot/plugins/bangDream/card/card-icon.renderer'; -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; -import { stackImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; +import { Gacha } from '@/modules/qqbot/plugins/bangDream/gacha/gacha.model'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawCardListInList } from '@/modules/qqbot/plugins/bangDream/card/card-icon.renderer'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; +import { stackImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; import { Canvas } from 'skia-canvas'; -import { BANGDREAM_GACHA_LIST_SPEC } from '@/qqbot/plugins/bangDream/gacha/gacha-list.layout'; +import { BANGDREAM_GACHA_LIST_SPEC } from '@/modules/qqbot/plugins/bangDream/gacha/gacha-list.layout'; /** * 在图片布局层中绘制卡池PickUpIn列表。 diff --git a/src/qqbot/plugins/bangDream/gacha/gacha-rate.renderer.ts b/src/modules/qqbot/plugins/bangDream/gacha/gacha-rate.renderer.ts similarity index 68% rename from src/qqbot/plugins/bangDream/gacha/gacha-rate.renderer.ts rename to src/modules/qqbot/plugins/bangDream/gacha/gacha-rate.renderer.ts index d4badf9..a0d8d1e 100644 --- a/src/qqbot/plugins/bangDream/gacha/gacha-rate.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/gacha/gacha-rate.renderer.ts @@ -1,10 +1,10 @@ -import { drawRarityInList } from '@/qqbot/plugins/bangDream/card/card-rarity.renderer'; -import { Gacha } from '@/qqbot/plugins/bangDream/gacha/gacha.model'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { stackImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; +import { drawRarityInList } from '@/modules/qqbot/plugins/bangDream/card/card-rarity.renderer'; +import { Gacha } from '@/modules/qqbot/plugins/bangDream/gacha/gacha.model'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { stackImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; import { Canvas } from 'skia-canvas'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { BANGDREAM_GACHA_LIST_SPEC } from '@/qqbot/plugins/bangDream/gacha/gacha-list.layout'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { BANGDREAM_GACHA_LIST_SPEC } from '@/modules/qqbot/plugins/bangDream/gacha/gacha-list.layout'; /** * 在图片布局层中绘制卡池概率In列表。 diff --git a/src/qqbot/plugins/bangDream/gacha/gacha-resource.repository.ts b/src/modules/qqbot/plugins/bangDream/gacha/gacha-resource.repository.ts similarity index 91% rename from src/qqbot/plugins/bangDream/gacha/gacha-resource.repository.ts rename to src/modules/qqbot/plugins/bangDream/gacha/gacha-resource.repository.ts index ceec5d8..44125d4 100644 --- a/src/qqbot/plugins/bangDream/gacha/gacha-resource.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/gacha/gacha-resource.repository.ts @@ -1,10 +1,10 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; import { getServerByPriority, Server, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; export interface GachaResourceSource { bannerAssetBundleName?: string; diff --git a/src/qqbot/plugins/bangDream/gacha/gacha-simulate.layout.ts b/src/modules/qqbot/plugins/bangDream/gacha/gacha-simulate.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/gacha/gacha-simulate.layout.ts rename to src/modules/qqbot/plugins/bangDream/gacha/gacha-simulate.layout.ts diff --git a/src/qqbot/plugins/bangDream/gacha/gacha-simulate.renderer.ts b/src/modules/qqbot/plugins/bangDream/gacha/gacha-simulate.renderer.ts similarity index 87% rename from src/qqbot/plugins/bangDream/gacha/gacha-simulate.renderer.ts rename to src/modules/qqbot/plugins/bangDream/gacha/gacha-simulate.renderer.ts index 611581c..f133017 100644 --- a/src/qqbot/plugins/bangDream/gacha/gacha-simulate.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/gacha/gacha-simulate.renderer.ts @@ -1,17 +1,17 @@ -import { Gacha } from '@/qqbot/plugins/bangDream/gacha/gacha.model'; -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; -import { drawCardIcon } from '@/qqbot/plugins/bangDream/card/card-art.renderer'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; +import { Gacha } from '@/modules/qqbot/plugins/bangDream/gacha/gacha.model'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; +import { drawCardIcon } from '@/modules/qqbot/plugins/bangDream/card/card-art.renderer'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; import { Canvas } from 'skia-canvas'; import { drawTextWithImages, drawText, -} from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { getServerByPriority } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; -import { resizeImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { drawGachaDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; +} from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { getServerByPriority } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { resizeImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { drawGachaDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; import { applyGachaGuaranteedRarity, BANGDREAM_GACHA_DEFAULT_SPIN_COUNT, @@ -19,7 +19,7 @@ import { isGachaSpinCountTooLarge, pickGachaCardIdByWeight, pickGachaRarityByRate, -} from '@/qqbot/plugins/bangDream/policy/gacha.policy'; +} from '@/modules/qqbot/plugins/bangDream/policy/gacha.policy'; import { BANGDREAM_GACHA_SIMULATE_SPEC, createGachaBannerCanvasSize, @@ -28,7 +28,7 @@ import { getGachaCountTextPosition, getGachaDuplicateIconRect, getGachaDuplicateLayerCount, -} from '@/qqbot/plugins/bangDream/gacha/gacha-simulate.layout'; +} from '@/modules/qqbot/plugins/bangDream/gacha/gacha-simulate.layout'; /** * 在QQBot 图片视图层中绘制Random卡池。 diff --git a/src/qqbot/plugins/bangDream/gacha/gacha.model.ts b/src/modules/qqbot/plugins/bangDream/gacha/gacha.model.ts similarity index 92% rename from src/qqbot/plugins/bangDream/gacha/gacha.model.ts rename to src/modules/qqbot/plugins/bangDream/gacha/gacha.model.ts index 04d2e8f..3898228 100644 --- a/src/qqbot/plugins/bangDream/gacha/gacha.model.ts +++ b/src/modules/qqbot/plugins/bangDream/gacha/gacha.model.ts @@ -1,18 +1,18 @@ -import { bangDreamMainDataRepository } from '@/qqbot/plugins/bangDream/shared/main-data.repository'; +import { bangDreamMainDataRepository } from '@/modules/qqbot/plugins/bangDream/shared/main-data.repository'; import { Image, loadImage } from 'skia-canvas'; import { Server, getServerByPriority, serverList, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { getPresentEvent } from '@/qqbot/plugins/bangDream/event/event.model'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { BANGDREAM_GACHA_TYPE_NAME } from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { getPresentEvent } from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { BANGDREAM_GACHA_TYPE_NAME } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; import { isFreeGachaType, isPermanentJapaneseGachaPeriod, -} from '@/qqbot/plugins/bangDream/policy/gacha.policy'; -import { gachaResourceRepository } from '@/qqbot/plugins/bangDream/gacha/gacha-resource.repository'; +} from '@/modules/qqbot/plugins/bangDream/policy/gacha.policy'; +import { gachaResourceRepository } from '@/modules/qqbot/plugins/bangDream/gacha/gacha-resource.repository'; const gachaDataCache = {}; diff --git a/src/qqbot/plugins/bangDream/gacha/gacha.repository.ts b/src/modules/qqbot/plugins/bangDream/gacha/gacha.repository.ts similarity index 76% rename from src/qqbot/plugins/bangDream/gacha/gacha.repository.ts rename to src/modules/qqbot/plugins/bangDream/gacha/gacha.repository.ts index 316dd4e..35d6645 100644 --- a/src/qqbot/plugins/bangDream/gacha/gacha.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/gacha/gacha.repository.ts @@ -1,8 +1,8 @@ -import { Gacha } from '@/qqbot/plugins/bangDream/gacha/gacha.model'; +import { Gacha } from '@/modules/qqbot/plugins/bangDream/gacha/gacha.model'; import { bangDreamMainDataRepository, type BangDreamMainDataCollection, -} from '@/qqbot/plugins/bangDream/shared/main-data.repository'; +} from '@/modules/qqbot/plugins/bangDream/shared/main-data.repository'; export class GachaRepository { /** diff --git a/src/qqbot/plugins/bangDream/hook/hook-registry.ts b/src/modules/qqbot/plugins/bangDream/hook/hook-registry.ts similarity index 96% rename from src/qqbot/plugins/bangDream/hook/hook-registry.ts rename to src/modules/qqbot/plugins/bangDream/hook/hook-registry.ts index 364086a..fb5818f 100644 --- a/src/qqbot/plugins/bangDream/hook/hook-registry.ts +++ b/src/modules/qqbot/plugins/bangDream/hook/hook-registry.ts @@ -1,8 +1,8 @@ import type { QqbotBangDreamCommandInput, QqbotBangDreamOperationKey, -} from '@/qqbot/plugins/bangDream/qqbot-bangdream.types'; -import { logger } from '@/qqbot/plugins/bangDream/shared/bangdream-logger'; +} from '@/modules/qqbot/plugins/bangDream/qqbot-bangdream.types'; +import { logger } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-logger'; export type TsuguExecutionStage = | 'handler' diff --git a/src/qqbot/plugins/bangDream/player/deck-rank.repository.ts b/src/modules/qqbot/plugins/bangDream/player/deck-rank.repository.ts similarity index 81% rename from src/qqbot/plugins/bangDream/player/deck-rank.repository.ts rename to src/modules/qqbot/plugins/bangDream/player/deck-rank.repository.ts index 3458110..cdb53d8 100644 --- a/src/qqbot/plugins/bangDream/player/deck-rank.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/player/deck-rank.repository.ts @@ -1,9 +1,9 @@ import { existsSync, readFileSync } from 'node:fs'; import * as path from 'node:path'; -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { assetsRootPath } from '@/qqbot/plugins/bangDream/config/runtime-config'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { assetsRootPath } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; export class DeckRankResourceRepository { constructor( diff --git a/src/qqbot/plugins/bangDream/player/player-band-detail.layout.ts b/src/modules/qqbot/plugins/bangDream/player/player-band-detail.layout.ts similarity index 97% rename from src/qqbot/plugins/bangDream/player/player-band-detail.layout.ts rename to src/modules/qqbot/plugins/bangDream/player/player-band-detail.layout.ts index 71b7568..5617fa3 100644 --- a/src/qqbot/plugins/bangDream/player/player-band-detail.layout.ts +++ b/src/modules/qqbot/plugins/bangDream/player/player-band-detail.layout.ts @@ -126,6 +126,7 @@ export function createDeckRankLevelImageSpec() { * @param rankId - 原始 Rank ID。 */ export function normalizeDeckRankLevelSpriteRankId(rankId: number) { - const maxRankId = BANGDREAM_BAND_DETAIL_LIST_SPEC.deckRank.maxLevelSpriteRankId; + const maxRankId = + BANGDREAM_BAND_DETAIL_LIST_SPEC.deckRank.maxLevelSpriteRankId; return rankId > maxRankId ? maxRankId : rankId; } diff --git a/src/qqbot/plugins/bangDream/player/player-band-detail.renderer.ts b/src/modules/qqbot/plugins/bangDream/player/player-band-detail.renderer.ts similarity index 87% rename from src/qqbot/plugins/bangDream/player/player-band-detail.renderer.ts rename to src/modules/qqbot/plugins/bangDream/player/player-band-detail.renderer.ts index a28b6c0..2d1970c 100644 --- a/src/qqbot/plugins/bangDream/player/player-band-detail.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/player/player-band-detail.renderer.ts @@ -1,16 +1,16 @@ -import { Player } from '@/qqbot/plugins/bangDream/player/player.model'; +import { Player } from '@/modules/qqbot/plugins/bangDream/player/player.model'; import { Canvas, Image, loadImage } from 'skia-canvas'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { resizeImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { Band } from '@/qqbot/plugins/bangDream/catalog/band.model'; -import { drawTextWithImages } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { starList } from '@/qqbot/plugins/bangDream/card/card-rarity.renderer'; -import mainAPI from '@/qqbot/plugins/bangDream/shared/main-data-store'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { resizeImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { Band } from '@/modules/qqbot/plugins/bangDream/catalog/band.model'; +import { drawTextWithImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { starList } from '@/modules/qqbot/plugins/bangDream/card/card-rarity.renderer'; +import mainAPI from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; import { BANGDREAM_DECK_TOTAL_RATING_ID, BANGDREAM_STAGE_CHALLENGE_BAND_ID, -} from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; -import { deckRankResourceRepository } from '@/qqbot/plugins/bangDream/player/deck-rank.repository'; +} from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; +import { deckRankResourceRepository } from '@/modules/qqbot/plugins/bangDream/player/deck-rank.repository'; import { createBandDetailItemLayout, createBandDetailListFrameSpec, @@ -20,7 +20,7 @@ import { createDeckRankImageLayout, createDeckRankLevelImageSpec, normalizeDeckRankLevelSpriteRankId, -} from '@/qqbot/plugins/bangDream/player/player-band-detail.layout'; +} from '@/modules/qqbot/plugins/bangDream/player/player-band-detail.layout'; interface drawBandDetailsInListOptions { [bandId: number]: Array; diff --git a/src/qqbot/plugins/bangDream/player/player-card-icon.layout.ts b/src/modules/qqbot/plugins/bangDream/player/player-card-icon.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/player/player-card-icon.layout.ts rename to src/modules/qqbot/plugins/bangDream/player/player-card-icon.layout.ts diff --git a/src/qqbot/plugins/bangDream/player/player-card-icon.renderer.ts b/src/modules/qqbot/plugins/bangDream/player/player-card-icon.renderer.ts similarity index 82% rename from src/qqbot/plugins/bangDream/player/player-card-icon.renderer.ts rename to src/modules/qqbot/plugins/bangDream/player/player-card-icon.renderer.ts index 2216e31..685edbc 100644 --- a/src/qqbot/plugins/bangDream/player/player-card-icon.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/player/player-card-icon.renderer.ts @@ -1,14 +1,14 @@ -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; -import { Player } from '@/qqbot/plugins/bangDream/player/player.model'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; +import { Player } from '@/modules/qqbot/plugins/bangDream/player/player.model'; import { Canvas } from 'skia-canvas'; -import { drawCardIcon } from '@/qqbot/plugins/bangDream/card/card-art.renderer'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawCardIcon } from '@/modules/qqbot/plugins/bangDream/card/card-art.renderer'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; import { BANGDREAM_PLAYER_CARD_ICON_LIST_SPEC, getPlayerCardIconListSpacing, getPlayerCardIconListTextSize, sortPlayerMainDeckEntries, -} from '@/qqbot/plugins/bangDream/player/player-card-icon.layout'; +} from '@/modules/qqbot/plugins/bangDream/player/player-card-icon.layout'; /** * 在图片布局层中绘制玩家卡牌In列表。 diff --git a/src/qqbot/plugins/bangDream/player/player-character-detail.layout.ts b/src/modules/qqbot/plugins/bangDream/player/player-character-detail.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/player/player-character-detail.layout.ts rename to src/modules/qqbot/plugins/bangDream/player/player-character-detail.layout.ts diff --git a/src/qqbot/plugins/bangDream/player/player-character-detail.renderer.ts b/src/modules/qqbot/plugins/bangDream/player/player-character-detail.renderer.ts similarity index 81% rename from src/qqbot/plugins/bangDream/player/player-character-detail.renderer.ts rename to src/modules/qqbot/plugins/bangDream/player/player-character-detail.renderer.ts index 1069183..452c5c5 100644 --- a/src/qqbot/plugins/bangDream/player/player-character-detail.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/player/player-character-detail.renderer.ts @@ -1,16 +1,16 @@ -import { Player } from '@/qqbot/plugins/bangDream/player/player.model'; +import { Player } from '@/modules/qqbot/plugins/bangDream/player/player.model'; import { Canvas, Image } from 'skia-canvas'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { resizeImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { drawTextWithImages } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { Character } from '@/qqbot/plugins/bangDream/character/character.model'; -import mainAPI from '@/qqbot/plugins/bangDream/shared/main-data-store'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { resizeImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { drawTextWithImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { Character } from '@/modules/qqbot/plugins/bangDream/character/character.model'; +import mainAPI from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; import { createCharacterDetailIconSpec, createCharacterDetailItemLayout, createCharacterDetailListFrameSpec, createCharacterDetailTextSpec, -} from '@/qqbot/plugins/bangDream/player/player-character-detail.layout'; +} from '@/modules/qqbot/plugins/bangDream/player/player-character-detail.layout'; interface drawBandDetailsInListOptions { [characterId: number]: Array; diff --git a/src/qqbot/plugins/bangDream/player/player-data.repository.ts b/src/modules/qqbot/plugins/bangDream/player/player-data.repository.ts similarity index 84% rename from src/qqbot/plugins/bangDream/player/player-data.repository.ts rename to src/modules/qqbot/plugins/bangDream/player/player-data.repository.ts index ce58acd..161f3af 100644 --- a/src/qqbot/plugins/bangDream/player/player-data.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/player/player-data.repository.ts @@ -1,7 +1,7 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { logger } from '@/qqbot/plugins/bangDream/shared/bangdream-logger'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { logger } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-logger'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; export type PlayerDetailMode = 0 | 1 | 2 | 3; diff --git a/src/qqbot/plugins/bangDream/player/player-detail.renderer.ts b/src/modules/qqbot/plugins/bangDream/player/player-detail.renderer.ts similarity index 76% rename from src/qqbot/plugins/bangDream/player/player-detail.renderer.ts rename to src/modules/qqbot/plugins/bangDream/player/player-detail.renderer.ts index fc58cbe..49a386f 100644 --- a/src/qqbot/plugins/bangDream/player/player-detail.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/player/player-detail.renderer.ts @@ -1,25 +1,28 @@ import { Canvas, Image } from 'skia-canvas'; -import { createOutputFinalImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawPlayerDetailBlockWithIllustration } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { createOutputFinalImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawPlayerDetailBlockWithIllustration } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; import { assetsRootPath, serverNameFullList, -} from '@/qqbot/plugins/bangDream/config/runtime-config'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; import * as path from 'path'; -import { drawPlayerCardInList } from '@/qqbot/plugins/bangDream/player/player-card-icon.renderer'; -import { line, drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawStatInList } from '@/qqbot/plugins/bangDream/card/card-stat.renderer'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { drawPlayerCardInList } from '@/modules/qqbot/plugins/bangDream/player/player-card-icon.renderer'; +import { + line, + drawList, +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawStatInList } from '@/modules/qqbot/plugins/bangDream/card/card-stat.renderer'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; import { drawPlayerBandRankInList, drawPlayerStageChallengeRankInList, drawPlayerDeckTotalRatingInList, -} from '@/qqbot/plugins/bangDream/player/player-band-detail.renderer'; -import { drawPlayerDifficultyDetailInList } from '@/qqbot/plugins/bangDream/player/player-difficulty-detail.renderer'; -import { drawCharacterRankInList } from '@/qqbot/plugins/bangDream/player/player-character-detail.renderer'; -import { loadImageFromPath } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { playerRepository } from '@/qqbot/plugins/bangDream/player/player.repository'; +} from '@/modules/qqbot/plugins/bangDream/player/player-band-detail.renderer'; +import { drawPlayerDifficultyDetailInList } from '@/modules/qqbot/plugins/bangDream/player/player-difficulty-detail.renderer'; +import { drawCharacterRankInList } from '@/modules/qqbot/plugins/bangDream/player/player-character-detail.renderer'; +import { loadImageFromPath } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { playerRepository } from '@/modules/qqbot/plugins/bangDream/player/player.repository'; let BGDefaultImage: Image; /** diff --git a/src/qqbot/plugins/bangDream/player/player-difficulty-detail.layout.ts b/src/modules/qqbot/plugins/bangDream/player/player-difficulty-detail.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/player/player-difficulty-detail.layout.ts rename to src/modules/qqbot/plugins/bangDream/player/player-difficulty-detail.layout.ts diff --git a/src/qqbot/plugins/bangDream/player/player-difficulty-detail.renderer.ts b/src/modules/qqbot/plugins/bangDream/player/player-difficulty-detail.renderer.ts similarity index 85% rename from src/qqbot/plugins/bangDream/player/player-difficulty-detail.renderer.ts rename to src/modules/qqbot/plugins/bangDream/player/player-difficulty-detail.renderer.ts index 012094d..e3b5633 100644 --- a/src/qqbot/plugins/bangDream/player/player-difficulty-detail.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/player/player-difficulty-detail.renderer.ts @@ -1,18 +1,18 @@ import { difficultyColorList, difficultyNameList, -} from '@/qqbot/plugins/bangDream/song/song.model'; -import { drawRoundedRectWithText } from '@/qqbot/plugins/bangDream/theme/canvas-rect'; +} from '@/modules/qqbot/plugins/bangDream/song/song.model'; +import { drawRoundedRectWithText } from '@/modules/qqbot/plugins/bangDream/theme/canvas-rect'; import { Canvas, Image } from 'skia-canvas'; -import { drawTextWithImages } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { Player } from '@/qqbot/plugins/bangDream/player/player.model'; +import { drawTextWithImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { Player } from '@/modules/qqbot/plugins/bangDream/player/player.model'; import { createDifficultyDetailBadgeSpec, createDifficultyDetailItemLayout, createDifficultyDetailListFrameSpec, createDifficultyDetailTextSpec, -} from '@/qqbot/plugins/bangDream/player/player-difficulty-detail.layout'; +} from '@/modules/qqbot/plugins/bangDream/player/player-difficulty-detail.layout'; interface drawDifficultyDetailInListOptions { [difficultyId: number]: Array; diff --git a/src/qqbot/plugins/bangDream/player/player-ranking.layout.ts b/src/modules/qqbot/plugins/bangDream/player/player-ranking.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/player/player-ranking.layout.ts rename to src/modules/qqbot/plugins/bangDream/player/player-ranking.layout.ts diff --git a/src/qqbot/plugins/bangDream/player/player-ranking.renderer.ts b/src/modules/qqbot/plugins/bangDream/player/player-ranking.renderer.ts similarity index 87% rename from src/qqbot/plugins/bangDream/player/player-ranking.renderer.ts rename to src/modules/qqbot/plugins/bangDream/player/player-ranking.renderer.ts index 1cebdf0..47e95ad 100644 --- a/src/qqbot/plugins/bangDream/player/player-ranking.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/player/player-ranking.renderer.ts @@ -1,18 +1,18 @@ import { Canvas, loadImage } from 'skia-canvas'; -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; -import { drawCardIcon } from '@/qqbot/plugins/bangDream/card/card-art.renderer'; -import { drawDegree } from '@/qqbot/plugins/bangDream/catalog/degree-badge.renderer'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { Degree } from '@/qqbot/plugins/bangDream/catalog/degree.model'; -import { drawText } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { playerRankingResourceRepository } from '@/qqbot/plugins/bangDream/player/player-ranking.repository'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; +import { drawCardIcon } from '@/modules/qqbot/plugins/bangDream/card/card-art.renderer'; +import { drawDegree } from '@/modules/qqbot/plugins/bangDream/catalog/degree-badge.renderer'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { Degree } from '@/modules/qqbot/plugins/bangDream/catalog/degree.model'; +import { drawText } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { playerRankingResourceRepository } from '@/modules/qqbot/plugins/bangDream/player/player-ranking.repository'; import { BANGDREAM_PLAYER_RANKING_SPEC, createRankingDegreeLayout, isMedalRanking, stripPlayerRankingTextTags, -} from '@/qqbot/plugins/bangDream/player/player-ranking.layout'; +} from '@/modules/qqbot/plugins/bangDream/player/player-ranking.layout'; interface User { uid: number; diff --git a/src/qqbot/plugins/bangDream/player/player-ranking.repository.ts b/src/modules/qqbot/plugins/bangDream/player/player-ranking.repository.ts similarity index 72% rename from src/qqbot/plugins/bangDream/player/player-ranking.repository.ts rename to src/modules/qqbot/plugins/bangDream/player/player-ranking.repository.ts index ca69ae8..3061c20 100644 --- a/src/qqbot/plugins/bangDream/player/player-ranking.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/player/player-ranking.repository.ts @@ -1,6 +1,6 @@ -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; export class PlayerRankingResourceRepository { constructor( diff --git a/src/qqbot/plugins/bangDream/player/player.model.ts b/src/modules/qqbot/plugins/bangDream/player/player.model.ts similarity index 96% rename from src/qqbot/plugins/bangDream/player/player.model.ts rename to src/modules/qqbot/plugins/bangDream/player/player.model.ts index 70d8534..70986c3 100644 --- a/src/qqbot/plugins/bangDream/player/player.model.ts +++ b/src/modules/qqbot/plugins/bangDream/player/player.model.ts @@ -1,17 +1,17 @@ -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; import { Card, addStat, Stat, -} from '@/qqbot/plugins/bangDream/card/card.model'; -import { AreaItem } from '@/qqbot/plugins/bangDream/catalog/area-item.model'; -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; -import { difficultyNameList } from '@/qqbot/plugins/bangDream/song/song.model'; +} from '@/modules/qqbot/plugins/bangDream/card/card.model'; +import { AreaItem } from '@/modules/qqbot/plugins/bangDream/catalog/area-item.model'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { difficultyNameList } from '@/modules/qqbot/plugins/bangDream/song/song.model'; import { playerDataRepository, type PlayerDataRepository, type PlayerDetailMode, -} from '@/qqbot/plugins/bangDream/player/player-data.repository'; +} from '@/modules/qqbot/plugins/bangDream/player/player-data.repository'; /* - mode=0 只从缓存取,无需等待队列立即返回缓存数据 diff --git a/src/qqbot/plugins/bangDream/player/player.repository.ts b/src/modules/qqbot/plugins/bangDream/player/player.repository.ts similarity index 65% rename from src/qqbot/plugins/bangDream/player/player.repository.ts rename to src/modules/qqbot/plugins/bangDream/player/player.repository.ts index 69ade00..ffbeb2c 100644 --- a/src/qqbot/plugins/bangDream/player/player.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/player/player.repository.ts @@ -1,5 +1,5 @@ -import { Player } from '@/qqbot/plugins/bangDream/player/player.model'; -import type { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import { Player } from '@/modules/qqbot/plugins/bangDream/player/player.model'; +import type { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; export class PlayerRepository { /** diff --git a/src/modules/qqbot/plugins/bangDream/plugin.json b/src/modules/qqbot/plugins/bangDream/plugin.json new file mode 100644 index 0000000..55d5634 --- /dev/null +++ b/src/modules/qqbot/plugins/bangDream/plugin.json @@ -0,0 +1,267 @@ +{ + "pluginKey": "bangdream", + "name": "BangDream 查询", + "version": "2.0.0", + "minApiSdkVersion": "1.0.0", + "description": "BanG Dream! Girls Band Party 查询、出图和档线能力。", + "author": "KT", + "license": "MIT", + "entry": "qqbot-bangdream.plugin.ts", + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "runtime": { + "workerType": "node-worker", + "timeoutMs": 30000, + "memoryMb": 512, + "maxConcurrency": 2 + }, + "configSchema": { + "type": "object" + }, + "operations": [ + { + "key": "bangdream.song.search", + "name": "查曲", + "handlerName": "searchSong", + "description": "按歌曲名、昵称、标签或歌曲 ID 查询歌曲信息图片。", + "aliases": ["查曲", "bd", "bangdream", "bandori", "邦邦", "邦邦查歌"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.song.chart", + "name": "查谱面", + "handlerName": "getSongChart", + "description": "按歌曲 ID 和难度查询谱面图片。", + "aliases": ["查谱面", "谱面", "bd谱面"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.song.random", + "name": "随机曲", + "handlerName": "randomSong", + "description": "按关键词随机抽取一首歌曲并输出歌曲图片。", + "aliases": ["随机曲", "随机", "bd随机"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.song.meta", + "name": "查询分数表", + "handlerName": "getSongMeta", + "description": "查询指定服务器歌曲分数榜图片。", + "aliases": [ + "查询分数表", + "查分数表", + "查询分数榜", + "查分数榜", + "bd分数表" + ], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.card.search", + "name": "查卡", + "handlerName": "searchCard", + "description": "按卡牌关键词或卡牌 ID 查询卡牌信息图片。", + "aliases": ["查卡", "查卡牌", "bd查卡"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.card.illustration", + "name": "查卡面", + "handlerName": "getCardIllustration", + "description": "按卡牌 ID 查询卡面插画图片。", + "aliases": ["查卡面", "查卡插画", "查插画", "bd卡面"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.character.search", + "name": "查角色", + "handlerName": "searchCharacter", + "description": "按角色关键词或角色 ID 查询角色信息图片。", + "aliases": ["查角色", "bd角色"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.event.search", + "name": "查活动", + "handlerName": "searchEvent", + "description": "按活动关键词或活动 ID 查询活动信息图片。", + "aliases": ["查活动", "bd活动"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.event.stage", + "name": "查试炼", + "handlerName": "getEventStage", + "description": "查询当前或指定活动的试炼信息图片。", + "aliases": ["查试炼", "查stage", "查舞台", "查festival", "查5v5"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.player.search", + "name": "查玩家", + "handlerName": "searchPlayer", + "description": "按玩家 ID 和服务器查询玩家信息图片。", + "aliases": ["查玩家", "查询玩家", "bd玩家"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.gacha.search", + "name": "查卡池", + "handlerName": "searchGacha", + "description": "按卡池 ID 查询卡池信息图片。", + "aliases": ["查卡池", "bd卡池"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.gacha.simulate", + "name": "抽卡模拟", + "handlerName": "simulateGacha", + "description": "模拟指定次数抽卡并输出结果图片。", + "aliases": ["抽卡模拟", "bd抽卡"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.cutoff.detail", + "name": "ycx", + "handlerName": "getCutoffDetail", + "description": "查询指定档位的当前活动档线与预测线图片。", + "aliases": ["ycx", "预测线", "查档线", "bd档线"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.cutoff.all", + "name": "ycxall", + "handlerName": "getCutoffAll", + "description": "查询当前活动所有档位的档线与预测线图片。", + "aliases": ["ycxall", "myycx", "全部档线"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + }, + { + "key": "bangdream.cutoff.recent", + "name": "lsycx", + "handlerName": "getCutoffRecent", + "description": "查询指定档位与最近同类型活动档线图片。", + "aliases": ["lsycx", "历史档线", "近期档线"], + "permissions": [ + "qqbot.send", + "runtime.http", + "asset.read", + "plugin.config.read", + "plugin.storage.read" + ], + "timeoutMs": 30000 + } + ], + "events": [], + "assets": [ + { + "key": "bangdream-assets", + "path": "assets" + } + ], + "migrations": [] +} diff --git a/src/qqbot/plugins/bangDream/policy/cn-event-estimate.policy.ts b/src/modules/qqbot/plugins/bangDream/policy/cn-event-estimate.policy.ts similarity index 95% rename from src/qqbot/plugins/bangDream/policy/cn-event-estimate.policy.ts rename to src/modules/qqbot/plugins/bangDream/policy/cn-event-estimate.policy.ts index b5013b0..56b19f7 100644 --- a/src/qqbot/plugins/bangDream/policy/cn-event-estimate.policy.ts +++ b/src/modules/qqbot/plugins/bangDream/policy/cn-event-estimate.policy.ts @@ -1,11 +1,11 @@ -import { bangDreamMainDataRepository } from '@/qqbot/plugins/bangDream/shared/main-data.repository'; -import { stringToNumberArray } from '@/qqbot/plugins/bangDream/shared/model-utils'; -import { BangDreamServerId as Server } from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; +import { bangDreamMainDataRepository } from '@/modules/qqbot/plugins/bangDream/shared/main-data.repository'; +import { stringToNumberArray } from '@/modules/qqbot/plugins/bangDream/shared/model-utils'; +import { BangDreamServerId as Server } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; import { BANGDREAM_CN_BLOCKED_EVENT_IDS, BANGDREAM_CN_ESTIMATE_START_EVENT_ID, BANGDREAM_DEFAULT_NO_BANG_DAYS, -} from '@/qqbot/plugins/bangDream/config/runtime-options'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-options'; const DAY_MS = 24 * 60 * 60 * 1000; const ACTIVE_EVENT_LOOKBACK_MS = DAY_MS; diff --git a/src/qqbot/plugins/bangDream/policy/cutoff.policy.ts b/src/modules/qqbot/plugins/bangDream/policy/cutoff.policy.ts similarity index 94% rename from src/qqbot/plugins/bangDream/policy/cutoff.policy.ts rename to src/modules/qqbot/plugins/bangDream/policy/cutoff.policy.ts index fde5dac..5d734ca 100644 --- a/src/qqbot/plugins/bangDream/policy/cutoff.policy.ts +++ b/src/modules/qqbot/plugins/bangDream/policy/cutoff.policy.ts @@ -1,18 +1,18 @@ import { BangDreamEventStatus, BangDreamServerId as Server, -} from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; +} from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; import { estimateCnEventStartAt, type BangDreamEventTimeLike, -} from '@/qqbot/plugins/bangDream/policy/cn-event-estimate.policy'; +} from '@/modules/qqbot/plugins/bangDream/policy/cn-event-estimate.policy'; import { getBangDreamDateByServerTimezone, getBangDreamServerUtcOffset, isBangDreamDailyCheckpoint, normalizeBangDreamTimestamp, -} from '@/qqbot/plugins/bangDream/policy/server.policy'; -import { BANGDREAM_TIER_LIST_BY_SERVER } from '@/qqbot/plugins/bangDream/config/runtime-options'; +} from '@/modules/qqbot/plugins/bangDream/policy/server.policy'; +import { BANGDREAM_TIER_LIST_BY_SERVER } from '@/modules/qqbot/plugins/bangDream/config/runtime-options'; const FIRST_DAY_END_HOUR = 4; const DAY_MS = 24 * 60 * 60 * 1000; diff --git a/src/qqbot/plugins/bangDream/policy/gacha.policy.ts b/src/modules/qqbot/plugins/bangDream/policy/gacha.policy.ts similarity index 97% rename from src/qqbot/plugins/bangDream/policy/gacha.policy.ts rename to src/modules/qqbot/plugins/bangDream/policy/gacha.policy.ts index 2e763b9..fd6a99a 100644 --- a/src/qqbot/plugins/bangDream/policy/gacha.policy.ts +++ b/src/modules/qqbot/plugins/bangDream/policy/gacha.policy.ts @@ -1,4 +1,4 @@ -import { BangDreamGachaType } from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; +import { BangDreamGachaType } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; export const BANGDREAM_GACHA_DEFAULT_SPIN_COUNT = 10; export const BANGDREAM_GACHA_MAX_SPIN_COUNT = 10000; diff --git a/src/qqbot/plugins/bangDream/policy/server.policy.ts b/src/modules/qqbot/plugins/bangDream/policy/server.policy.ts similarity index 94% rename from src/qqbot/plugins/bangDream/policy/server.policy.ts rename to src/modules/qqbot/plugins/bangDream/policy/server.policy.ts index 0f49b86..a91eaf5 100644 --- a/src/qqbot/plugins/bangDream/policy/server.policy.ts +++ b/src/modules/qqbot/plugins/bangDream/policy/server.policy.ts @@ -1,4 +1,4 @@ -import { BangDreamServerId as Server } from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; +import { BangDreamServerId as Server } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; const SERVER_UTC_OFFSET_BY_SERVER: Record = { [Server.cn]: 8, diff --git a/src/qqbot/plugins/bangDream/provider/api-cache.client.ts b/src/modules/qqbot/plugins/bangDream/provider/api-cache.client.ts similarity index 82% rename from src/qqbot/plugins/bangDream/provider/api-cache.client.ts rename to src/modules/qqbot/plugins/bangDream/provider/api-cache.client.ts index 38b236a..0bdd33c 100644 --- a/src/qqbot/plugins/bangDream/provider/api-cache.client.ts +++ b/src/modules/qqbot/plugins/bangDream/provider/api-cache.client.ts @@ -1,14 +1,14 @@ -import { getJsonAndSave } from '@/qqbot/plugins/bangDream/provider/file-cache.client'; +import { getJsonAndSave } from '@/modules/qqbot/plugins/bangDream/provider/file-cache.client'; import { getCacheDirectory, getFileNameFromUrl, -} from '@/qqbot/plugins/bangDream/provider/cache-path'; -import { logger } from '@/qqbot/plugins/bangDream/shared/bangdream-logger'; +} from '@/modules/qqbot/plugins/bangDream/provider/cache-path'; +import { logger } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-logger'; import { getCacheClientErrorMessage, isCacheClientNotFound, runWithCacheClientRetry, -} from '@/qqbot/plugins/bangDream/provider/cache-policy'; +} from '@/modules/qqbot/plugins/bangDream/provider/cache-policy'; /** * 在数据下载与缓存层中调用APIAnd缓存Response。 diff --git a/src/qqbot/plugins/bangDream/provider/asset-cache.client.ts b/src/modules/qqbot/plugins/bangDream/provider/asset-cache.client.ts similarity index 88% rename from src/qqbot/plugins/bangDream/provider/asset-cache.client.ts rename to src/modules/qqbot/plugins/bangDream/provider/asset-cache.client.ts index e85c872..ba44204 100644 --- a/src/qqbot/plugins/bangDream/provider/asset-cache.client.ts +++ b/src/modules/qqbot/plugins/bangDream/provider/asset-cache.client.ts @@ -2,18 +2,18 @@ import * as path from 'path'; import { getCacheDirectory, getFileNameFromUrl, -} from '@/qqbot/plugins/bangDream/provider/cache-path'; -import { download } from '@/qqbot/plugins/bangDream/provider/file-cache.client'; +} from '@/modules/qqbot/plugins/bangDream/provider/cache-path'; +import { download } from '@/modules/qqbot/plugins/bangDream/provider/file-cache.client'; import { Buffer } from 'buffer'; -import { assetErrorImageBuffer } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { logger } from '@/qqbot/plugins/bangDream/shared/bangdream-logger'; +import { assetErrorImageBuffer } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { logger } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-logger'; import * as fs from 'fs'; import { BANGDREAM_MISSING_URL_CACHE_EXPIRY_MS, getCacheClientErrorMessage, getCacheClientResponseStatus, runWithCacheClientRetry, -} from '@/qqbot/plugins/bangDream/provider/cache-policy'; +} from '@/modules/qqbot/plugins/bangDream/provider/cache-policy'; const errUrl: { [key: string]: number } = {}; const memoryCache: { [url: string]: Buffer } = {}; diff --git a/src/qqbot/plugins/bangDream/provider/bangdream-data-provider.ts b/src/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider.ts similarity index 84% rename from src/qqbot/plugins/bangDream/provider/bangdream-data-provider.ts rename to src/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider.ts index c4de5e1..e84cde9 100644 --- a/src/qqbot/plugins/bangDream/provider/bangdream-data-provider.ts +++ b/src/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider.ts @@ -10,8 +10,7 @@ export interface BangDreamAssetRequestOptions { retryCount?: number; } -export interface BangDreamTrackerRequestOptions - extends BangDreamJsonRequestOptions { +export interface BangDreamTrackerRequestOptions extends BangDreamJsonRequestOptions { eventId: number; server: number; tier: number; @@ -28,9 +27,7 @@ export interface BangDreamDataProvider { pathOrUrl: string, options?: BangDreamAssetRequestOptions, ): Promise; - getTracker( - options: BangDreamTrackerRequestOptions, - ): Promise; + getTracker(options: BangDreamTrackerRequestOptions): Promise; } export function resolveBangDreamProviderUrl( diff --git a/src/qqbot/plugins/bangDream/provider/bestdori.provider.ts b/src/modules/qqbot/plugins/bangDream/provider/bestdori.provider.ts similarity index 83% rename from src/qqbot/plugins/bangDream/provider/bestdori.provider.ts rename to src/modules/qqbot/plugins/bangDream/provider/bestdori.provider.ts index 30bb1d0..af1b018 100644 --- a/src/qqbot/plugins/bangDream/provider/bestdori.provider.ts +++ b/src/modules/qqbot/plugins/bangDream/provider/bestdori.provider.ts @@ -1,14 +1,18 @@ -import { callAPIAndCacheResponse } from '@/qqbot/plugins/bangDream/provider/api-cache.client'; +import { callAPIAndCacheResponse } from '@/modules/qqbot/plugins/bangDream/provider/api-cache.client'; import { type BangDreamAssetRequestOptions, type BangDreamDataProvider, type BangDreamJsonRequestOptions, type BangDreamTrackerRequestOptions, resolveBangDreamProviderUrl, -} from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { withCache, withRetry, withTiming } from '@/qqbot/plugins/bangDream/provider/provider-decorators'; -import { bestdoriUrl } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { BANGDREAM_TSUGU_ENV_KEYS } from '@/qqbot/plugins/bangDream/config/runtime-options'; +} from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { + withCache, + withRetry, + withTiming, +} from '@/modules/qqbot/plugins/bangDream/provider/provider-decorators'; +import { bestdoriUrl } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { BANGDREAM_TSUGU_ENV_KEYS } from '@/modules/qqbot/plugins/bangDream/config/runtime-options'; export interface BangDreamBestdoriProviderOptions { assetClient?: ( @@ -33,9 +37,8 @@ async function defaultAssetClient( url: string, options: BangDreamAssetRequestOptions = {}, ): Promise { - const { downloadFile, downloadFileCache } = await import( - './asset-cache.client' - ); + const { downloadFile, downloadFileCache } = + await import('./asset-cache.client'); const ignoreError = options.ignoreError ?? true; if (options.memoryCache === false || options.overwrite) { return await downloadFile( diff --git a/src/qqbot/plugins/bangDream/provider/cache-path.ts b/src/modules/qqbot/plugins/bangDream/provider/cache-path.ts similarity index 91% rename from src/qqbot/plugins/bangDream/provider/cache-path.ts rename to src/modules/qqbot/plugins/bangDream/provider/cache-path.ts index ca378f5..8c537e5 100644 --- a/src/qqbot/plugins/bangDream/provider/cache-path.ts +++ b/src/modules/qqbot/plugins/bangDream/provider/cache-path.ts @@ -1,8 +1,8 @@ import { bestdoriUrl, cacheRootPath, -} from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { resolveBangDreamProviderUrl } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { resolveBangDreamProviderUrl } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; import * as path from 'path'; /** diff --git a/src/qqbot/plugins/bangDream/provider/cache-policy.ts b/src/modules/qqbot/plugins/bangDream/provider/cache-policy.ts similarity index 100% rename from src/qqbot/plugins/bangDream/provider/cache-policy.ts rename to src/modules/qqbot/plugins/bangDream/provider/cache-policy.ts diff --git a/src/qqbot/plugins/bangDream/provider/file-cache.client.ts b/src/modules/qqbot/plugins/bangDream/provider/file-cache.client.ts similarity index 97% rename from src/qqbot/plugins/bangDream/provider/file-cache.client.ts rename to src/modules/qqbot/plugins/bangDream/provider/file-cache.client.ts index 4afbe00..214b33d 100644 --- a/src/qqbot/plugins/bangDream/provider/file-cache.client.ts +++ b/src/modules/qqbot/plugins/bangDream/provider/file-cache.client.ts @@ -4,12 +4,12 @@ import * as fs from 'fs'; import { BANGDREAM_TSUGU_ENV_KEYS, normalizeBangDreamPositiveInteger, -} from '@/qqbot/plugins/bangDream/config/runtime-options'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-options'; import { BANGDREAM_MISSING_URL_CACHE_EXPIRY_MS, getCacheClientErrorMessage, getCacheClientResponseStatus, -} from '@/qqbot/plugins/bangDream/provider/cache-policy'; +} from '@/modules/qqbot/plugins/bangDream/provider/cache-policy'; const errorUrlCache: { [url: string]: number } = {}; const DEFAULT_REQUEST_TIMEOUT_MS = 8000; diff --git a/src/qqbot/plugins/bangDream/provider/hhwx-tracker.provider.ts b/src/modules/qqbot/plugins/bangDream/provider/hhwx-tracker.provider.ts similarity index 81% rename from src/qqbot/plugins/bangDream/provider/hhwx-tracker.provider.ts rename to src/modules/qqbot/plugins/bangDream/provider/hhwx-tracker.provider.ts index 2fdeb1b..21a57e7 100644 --- a/src/qqbot/plugins/bangDream/provider/hhwx-tracker.provider.ts +++ b/src/modules/qqbot/plugins/bangDream/provider/hhwx-tracker.provider.ts @@ -1,13 +1,17 @@ -import { callAPIAndCacheResponse } from '@/qqbot/plugins/bangDream/provider/api-cache.client'; +import { callAPIAndCacheResponse } from '@/modules/qqbot/plugins/bangDream/provider/api-cache.client'; import { type BangDreamDataProvider, type BangDreamJsonRequestOptions, type BangDreamTrackerRequestOptions, resolveBangDreamProviderUrl, -} from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { withCache, withRetry, withTiming } from '@/qqbot/plugins/bangDream/provider/provider-decorators'; -import { hhwxUrl } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { BANGDREAM_TSUGU_ENV_KEYS } from '@/qqbot/plugins/bangDream/config/runtime-options'; +} from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { + withCache, + withRetry, + withTiming, +} from '@/modules/qqbot/plugins/bangDream/provider/provider-decorators'; +import { hhwxUrl } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { BANGDREAM_TSUGU_ENV_KEYS } from '@/modules/qqbot/plugins/bangDream/config/runtime-options'; export interface BangDreamHhwxTrackerProviderOptions { baseUrl?: string; diff --git a/src/qqbot/plugins/bangDream/provider/provider-decorators.ts b/src/modules/qqbot/plugins/bangDream/provider/provider-decorators.ts similarity index 95% rename from src/qqbot/plugins/bangDream/provider/provider-decorators.ts rename to src/modules/qqbot/plugins/bangDream/provider/provider-decorators.ts index 04d4bdd..819f76c 100644 --- a/src/qqbot/plugins/bangDream/provider/provider-decorators.ts +++ b/src/modules/qqbot/plugins/bangDream/provider/provider-decorators.ts @@ -1,10 +1,10 @@ -import { logger } from '@/qqbot/plugins/bangDream/shared/bangdream-logger'; +import { logger } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-logger'; import type { BangDreamAssetRequestOptions, BangDreamDataProvider, BangDreamJsonRequestOptions, BangDreamTrackerRequestOptions, -} from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +} from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; type ProviderMethodName = 'getJson' | 'getAsset' | 'getTracker'; @@ -117,8 +117,7 @@ export function withRetry( 'getTracker', getRetryCount(defaultRetryCount, requestOptions.retryCount), delayMs, - () => - provider.getTracker(withRequestRetryCount(requestOptions)), + () => provider.getTracker(withRequestRetryCount(requestOptions)), ), }; } diff --git a/src/qqbot/plugins/bangDream/provider/static-patch.provider.ts b/src/modules/qqbot/plugins/bangDream/provider/static-patch.provider.ts similarity index 76% rename from src/qqbot/plugins/bangDream/provider/static-patch.provider.ts rename to src/modules/qqbot/plugins/bangDream/provider/static-patch.provider.ts index 6ce8d4a..af70f63 100644 --- a/src/qqbot/plugins/bangDream/provider/static-patch.provider.ts +++ b/src/modules/qqbot/plugins/bangDream/provider/static-patch.provider.ts @@ -1,9 +1,9 @@ import * as path from 'path'; -import { configPath } from '@/qqbot/plugins/bangDream/config/runtime-config'; +import { configPath } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; import { readExcelFile, readJSON, -} from '@/qqbot/plugins/bangDream/shared/model-utils'; +} from '@/modules/qqbot/plugins/bangDream/shared/model-utils'; export class BangDreamStaticPatchProvider { constructor(private readonly rootPath: string = configPath) {} @@ -29,5 +29,4 @@ export class BangDreamStaticPatchProvider { } } -export const bangDreamStaticPatchProvider = - new BangDreamStaticPatchProvider(); +export const bangDreamStaticPatchProvider = new BangDreamStaticPatchProvider(); diff --git a/src/qqbot/plugins/bangDream/qqbot-bangdream.plugin.ts b/src/modules/qqbot/plugins/bangDream/qqbot-bangdream.plugin.ts similarity index 78% rename from src/qqbot/plugins/bangDream/qqbot-bangdream.plugin.ts rename to src/modules/qqbot/plugins/bangDream/qqbot-bangdream.plugin.ts index 540a6e9..d3151c5 100644 --- a/src/qqbot/plugins/bangDream/qqbot-bangdream.plugin.ts +++ b/src/modules/qqbot/plugins/bangDream/qqbot-bangdream.plugin.ts @@ -1,12 +1,12 @@ import { Injectable } from '@nestjs/common'; import { formatKtDateTime, ToolsService } from '@/common'; -import type { QqbotIntegrationPlugin } from '../../qqbot.types'; +import type { QqbotIntegrationPlugin } from '@/qqbot/qqbot.types'; import { BANGDREAM_INPUT_SCHEMA, BANGDREAM_OUTPUT_SCHEMA, -} from '@/qqbot/plugins/bangDream/commands/qqbot-bangdream-command.definitions'; -import { QqbotBangDreamClientService } from '@/qqbot/plugins/bangDream/application/bangdream-client.service'; -import { BANGDREAM_OPERATION_REGISTRY } from '@/qqbot/plugins/bangDream/registry/operation-registry'; +} from '@/modules/qqbot/plugins/bangDream/commands/qqbot-bangdream-command.definitions'; +import { QqbotBangDreamClientService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-client.service'; +import { BANGDREAM_OPERATION_REGISTRY } from '@/modules/qqbot/plugins/bangDream/registry/operation-registry'; @Injectable() export class QqbotBangDreamPluginService { @@ -39,7 +39,8 @@ export class QqbotBangDreamPluginService { }; } }, - key: 'bangDream', + key: 'bangdream', + legacyKeys: ['bangDream'], name: 'BangDream 查询', operations: BANGDREAM_OPERATION_REGISTRY.map((operation) => ({ cacheTtlMs: 60_000, diff --git a/src/qqbot/plugins/bangDream/qqbot-bangdream.types.ts b/src/modules/qqbot/plugins/bangDream/qqbot-bangdream.types.ts similarity index 80% rename from src/qqbot/plugins/bangDream/qqbot-bangdream.types.ts rename to src/modules/qqbot/plugins/bangDream/qqbot-bangdream.types.ts index 932c90f..44aa603 100644 --- a/src/qqbot/plugins/bangDream/qqbot-bangdream.types.ts +++ b/src/modules/qqbot/plugins/bangDream/qqbot-bangdream.types.ts @@ -1,6 +1,6 @@ -import type { QqbotBangDreamOperationKey } from '@/qqbot/plugins/bangDream/registry/operation-registry'; +import type { QqbotBangDreamOperationKey } from '@/modules/qqbot/plugins/bangDream/registry/operation-registry'; -export type { QqbotBangDreamOperationKey } from '@/qqbot/plugins/bangDream/registry/operation-registry'; +export type { QqbotBangDreamOperationKey } from '@/modules/qqbot/plugins/bangDream/registry/operation-registry'; export type QqbotBangDreamCommandInput = { args?: string[]; diff --git a/src/qqbot/plugins/bangDream/registry/operation-registry.ts b/src/modules/qqbot/plugins/bangDream/registry/operation-registry.ts similarity index 100% rename from src/qqbot/plugins/bangDream/registry/operation-registry.ts rename to src/modules/qqbot/plugins/bangDream/registry/operation-registry.ts diff --git a/src/qqbot/plugins/bangDream/search/entity-list-matcher.ts b/src/modules/qqbot/plugins/bangDream/search/entity-list-matcher.ts similarity index 91% rename from src/qqbot/plugins/bangDream/search/entity-list-matcher.ts rename to src/modules/qqbot/plugins/bangDream/search/entity-list-matcher.ts index 7525fa8..526f5ae 100644 --- a/src/qqbot/plugins/bangDream/search/entity-list-matcher.ts +++ b/src/modules/qqbot/plugins/bangDream/search/entity-list-matcher.ts @@ -1,6 +1,6 @@ -import type { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { checkRelationList } from '@/qqbot/plugins/bangDream/search/relation-matcher'; -import type { FuzzySearchResult } from '@/qqbot/plugins/bangDream/search/fuzzy-search.types'; +import type { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { checkRelationList } from '@/modules/qqbot/plugins/bangDream/search/relation-matcher'; +import type { FuzzySearchResult } from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search.types'; interface TsuguEntityMatcherOptions { source: Record | (() => Record); diff --git a/src/qqbot/plugins/bangDream/search/fuzzy-search-rule.registry.ts b/src/modules/qqbot/plugins/bangDream/search/fuzzy-search-rule.registry.ts similarity index 91% rename from src/qqbot/plugins/bangDream/search/fuzzy-search-rule.registry.ts rename to src/modules/qqbot/plugins/bangDream/search/fuzzy-search-rule.registry.ts index df99f85..d358f8f 100644 --- a/src/qqbot/plugins/bangDream/search/fuzzy-search-rule.registry.ts +++ b/src/modules/qqbot/plugins/bangDream/search/fuzzy-search-rule.registry.ts @@ -1,13 +1,13 @@ import { isValidRelationStr, normalizeRelationKeyword, -} from '@/qqbot/plugins/bangDream/search/relation-matcher'; +} from '@/modules/qqbot/plugins/bangDream/search/relation-matcher'; import type { FuzzySearchConfig, FuzzySearchConfigValue, FuzzySearchMatchValue, FuzzySearchResultWriter, -} from '@/qqbot/plugins/bangDream/search/fuzzy-search.types'; +} from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search.types'; const INTEGER_PATTERN = /^(0|[1-9]\d*)$/; @@ -20,10 +20,7 @@ export interface FuzzySearchKeyword { export interface FuzzySearchRule { name: string; canHandle: (keyword: FuzzySearchKeyword) => boolean; - match: ( - keyword: FuzzySearchKeyword, - push: FuzzySearchResultWriter, - ) => void; + match: (keyword: FuzzySearchKeyword, push: FuzzySearchResultWriter) => void; } export class FuzzySearchRuleRegistry { @@ -35,10 +32,7 @@ export class FuzzySearchRuleRegistry { * @param keyword - 结构化关键词。 * @param push - 搜索结果写入器。 */ - match( - keyword: FuzzySearchKeyword, - push: FuzzySearchResultWriter, - ): boolean { + match(keyword: FuzzySearchKeyword, push: FuzzySearchResultWriter): boolean { const rule = this.rules.find((item) => item.canHandle(keyword)); if (!rule) return false; rule.match(keyword, push); @@ -51,7 +45,9 @@ export class FuzzySearchRuleRegistry { * * @param rawKeyword - 用户输入关键词。 */ -export function createFuzzySearchKeyword(rawKeyword: string): FuzzySearchKeyword { +export function createFuzzySearchKeyword( + rawKeyword: string, +): FuzzySearchKeyword { const lowerKeyword = rawKeyword.toLowerCase(); return { lowerKeyword, @@ -94,7 +90,8 @@ function createNumberRule(): FuzzySearchRule { */ function createLevelRule(): FuzzySearchRule { return { - canHandle: ({ normalizedKeyword }) => extractLvNumber(normalizedKeyword) !== null, + canHandle: ({ normalizedKeyword }) => + extractLvNumber(normalizedKeyword) !== null, match: ({ normalizedKeyword }, push) => push('songLevels')(extractLvNumber(normalizedKeyword) ?? 0), name: 'level', diff --git a/src/qqbot/plugins/bangDream/search/fuzzy-search.ts b/src/modules/qqbot/plugins/bangDream/search/fuzzy-search.ts similarity index 93% rename from src/qqbot/plugins/bangDream/search/fuzzy-search.ts rename to src/modules/qqbot/plugins/bangDream/search/fuzzy-search.ts index 6f0e471..f915f46 100644 --- a/src/qqbot/plugins/bangDream/search/fuzzy-search.ts +++ b/src/modules/qqbot/plugins/bangDream/search/fuzzy-search.ts @@ -1,22 +1,22 @@ import { createDefaultFuzzySearchRuleRegistry, createFuzzySearchKeyword, -} from '@/qqbot/plugins/bangDream/search/fuzzy-search-rule.registry'; -import { searchDictionaryRepository } from '@/qqbot/plugins/bangDream/search/search-dictionary.repository'; +} from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search-rule.registry'; +import { searchDictionaryRepository } from '@/modules/qqbot/plugins/bangDream/search/search-dictionary.repository'; import type { FuzzySearchConfig, FuzzySearchMatchValue, FuzzySearchResult, FuzzySearchResultWriter, -} from '@/qqbot/plugins/bangDream/search/fuzzy-search.types'; +} from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search.types'; export type { FuzzySearchConfig, FuzzySearchConfigValue, FuzzySearchMatchValue, FuzzySearchResult, -} from '@/qqbot/plugins/bangDream/search/fuzzy-search.types'; -export { checkRelationList } from '@/qqbot/plugins/bangDream/search/relation-matcher'; +} from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search.types'; +export { checkRelationList } from '@/modules/qqbot/plugins/bangDream/search/relation-matcher'; const KEYWORD_PATTERN = /["“”『』「」]([^"“”『』「」]+)["“”『』「」]|\S+/g; const QUOTE_EDGE_PATTERN = /^["“”『』「」]|["“”『』「」]$/g; @@ -51,7 +51,8 @@ function extractKeywords(keyword: string): string[] { * * @param matches - 模糊搜索命中结果。 */ -const appendTo = (matches: FuzzySearchResult): FuzzySearchResultWriter => +const appendTo = + (matches: FuzzySearchResult): FuzzySearchResultWriter => (key: string) => (value: FuzzySearchMatchValue): void => { (matches[key] ??= []).push(value); diff --git a/src/qqbot/plugins/bangDream/search/fuzzy-search.types.ts b/src/modules/qqbot/plugins/bangDream/search/fuzzy-search.types.ts similarity index 78% rename from src/qqbot/plugins/bangDream/search/fuzzy-search.types.ts rename to src/modules/qqbot/plugins/bangDream/search/fuzzy-search.types.ts index c4d3a15..5ef68aa 100644 --- a/src/qqbot/plugins/bangDream/search/fuzzy-search.types.ts +++ b/src/modules/qqbot/plugins/bangDream/search/fuzzy-search.types.ts @@ -13,5 +13,6 @@ export interface FuzzySearchResult { [key: string]: FuzzySearchMatchValue[]; } -export type FuzzySearchResultWriter = - (key: string) => (value: FuzzySearchMatchValue) => void; +export type FuzzySearchResultWriter = ( + key: string, +) => (value: FuzzySearchMatchValue) => void; diff --git a/src/qqbot/plugins/bangDream/search/relation-matcher.ts b/src/modules/qqbot/plugins/bangDream/search/relation-matcher.ts similarity index 96% rename from src/qqbot/plugins/bangDream/search/relation-matcher.ts rename to src/modules/qqbot/plugins/bangDream/search/relation-matcher.ts index ac2fa59..20cddf4 100644 --- a/src/qqbot/plugins/bangDream/search/relation-matcher.ts +++ b/src/modules/qqbot/plugins/bangDream/search/relation-matcher.ts @@ -1,4 +1,4 @@ -import { logger } from '@/qqbot/plugins/bangDream/shared/bangdream-logger'; +import { logger } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-logger'; const RELATION_PATTERNS = [/^<\d+$/, /^>\d+$/, /^\d+-\d+$/]; diff --git a/src/qqbot/plugins/bangDream/search/search-dictionary.repository.ts b/src/modules/qqbot/plugins/bangDream/search/search-dictionary.repository.ts similarity index 62% rename from src/qqbot/plugins/bangDream/search/search-dictionary.repository.ts rename to src/modules/qqbot/plugins/bangDream/search/search-dictionary.repository.ts index 73d4d42..082c23b 100644 --- a/src/qqbot/plugins/bangDream/search/search-dictionary.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/search/search-dictionary.repository.ts @@ -1,7 +1,7 @@ import * as fs from 'fs'; -import { fuzzySearchPath } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { logger } from '@/qqbot/plugins/bangDream/shared/bangdream-logger'; -import type { FuzzySearchConfig } from '@/qqbot/plugins/bangDream/search/fuzzy-search.types'; +import { fuzzySearchPath } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { logger } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-logger'; +import type { FuzzySearchConfig } from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search.types'; export class SearchDictionaryRepository { constructor(private readonly filePath = fuzzySearchPath) {} diff --git a/src/modules/qqbot/plugins/bangDream/shared/bangdream-constants.ts b/src/modules/qqbot/plugins/bangDream/shared/bangdream-constants.ts new file mode 100644 index 0000000..6b4ddd9 --- /dev/null +++ b/src/modules/qqbot/plugins/bangDream/shared/bangdream-constants.ts @@ -0,0 +1,3 @@ +export * from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; +export * from '@/modules/qqbot/plugins/bangDream/dictionary/default-dictionary'; +export * from '@/modules/qqbot/plugins/bangDream/config/runtime-options'; diff --git a/src/qqbot/plugins/bangDream/shared/bangdream-logger.ts b/src/modules/qqbot/plugins/bangDream/shared/bangdream-logger.ts similarity index 100% rename from src/qqbot/plugins/bangDream/shared/bangdream-logger.ts rename to src/modules/qqbot/plugins/bangDream/shared/bangdream-logger.ts diff --git a/src/qqbot/plugins/bangDream/shared/bangdream-protocol.ts b/src/modules/qqbot/plugins/bangDream/shared/bangdream-protocol.ts similarity index 100% rename from src/qqbot/plugins/bangDream/shared/bangdream-protocol.ts rename to src/modules/qqbot/plugins/bangDream/shared/bangdream-protocol.ts diff --git a/src/qqbot/plugins/bangDream/shared/data-block.layout.ts b/src/modules/qqbot/plugins/bangDream/shared/data-block.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/shared/data-block.layout.ts rename to src/modules/qqbot/plugins/bangDream/shared/data-block.layout.ts diff --git a/src/qqbot/plugins/bangDream/shared/data-block.renderer.ts b/src/modules/qqbot/plugins/bangDream/shared/data-block.renderer.ts similarity index 96% rename from src/qqbot/plugins/bangDream/shared/data-block.renderer.ts rename to src/modules/qqbot/plugins/bangDream/shared/data-block.renderer.ts index 70b9efe..1f32639 100644 --- a/src/qqbot/plugins/bangDream/shared/data-block.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/shared/data-block.renderer.ts @@ -1,13 +1,13 @@ import { Canvas, Image } from 'skia-canvas'; -import { drawRoundedRect } from '@/qqbot/plugins/bangDream/theme/canvas-rect'; -import { drawText } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { resizeImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; +import { drawRoundedRect } from '@/modules/qqbot/plugins/bangDream/theme/canvas-rect'; +import { drawText } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { resizeImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; import { BANGDREAM_DATA_BLOCK_SPEC, calculateHorizontalDataBlockSize, calculateVerticalDataBlockSize, getDataBlockTitleLineHeight, -} from '@/qqbot/plugins/bangDream/shared/data-block.layout'; +} from '@/modules/qqbot/plugins/bangDream/shared/data-block.layout'; interface DataBlockOptions { list: Array; diff --git a/src/qqbot/plugins/bangDream/shared/detail-block.builder.ts b/src/modules/qqbot/plugins/bangDream/shared/detail-block.builder.ts similarity index 76% rename from src/qqbot/plugins/bangDream/shared/detail-block.builder.ts rename to src/modules/qqbot/plugins/bangDream/shared/detail-block.builder.ts index 997a45e..48f27e1 100644 --- a/src/qqbot/plugins/bangDream/shared/detail-block.builder.ts +++ b/src/modules/qqbot/plugins/bangDream/shared/detail-block.builder.ts @@ -1,7 +1,7 @@ import { Canvas, Image } from 'skia-canvas'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; -import { line } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { line } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; export interface DetailBlockDataOptions { BG?: boolean; diff --git a/src/qqbot/plugins/bangDream/shared/detail-block.layout.ts b/src/modules/qqbot/plugins/bangDream/shared/detail-block.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/shared/detail-block.layout.ts rename to src/modules/qqbot/plugins/bangDream/shared/detail-block.layout.ts diff --git a/src/qqbot/plugins/bangDream/shared/detail-block.renderer.ts b/src/modules/qqbot/plugins/bangDream/shared/detail-block.renderer.ts similarity index 85% rename from src/qqbot/plugins/bangDream/shared/detail-block.renderer.ts rename to src/modules/qqbot/plugins/bangDream/shared/detail-block.renderer.ts index 4c0bca9..d332bd8 100644 --- a/src/qqbot/plugins/bangDream/shared/detail-block.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/shared/detail-block.renderer.ts @@ -1,58 +1,58 @@ -import { Card } from '@/qqbot/plugins/bangDream/card/card.model'; -import { Character } from '@/qqbot/plugins/bangDream/character/character.model'; -import { Degree } from '@/qqbot/plugins/bangDream/catalog/degree.model'; -import { Event } from '@/qqbot/plugins/bangDream/event/event.model'; -import { Gacha } from '@/qqbot/plugins/bangDream/gacha/gacha.model'; -import { Player } from '@/qqbot/plugins/bangDream/player/player.model'; +import { Card } from '@/modules/qqbot/plugins/bangDream/card/card.model'; +import { Character } from '@/modules/qqbot/plugins/bangDream/character/character.model'; +import { Degree } from '@/modules/qqbot/plugins/bangDream/catalog/degree.model'; +import { Event } from '@/modules/qqbot/plugins/bangDream/event/event.model'; +import { Gacha } from '@/modules/qqbot/plugins/bangDream/gacha/gacha.model'; +import { Player } from '@/modules/qqbot/plugins/bangDream/player/player.model'; import { Server, getIcon, getServerByPriority, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; import { Song, getMetaRanking, SongInRank, -} from '@/qqbot/plugins/bangDream/song/song.model'; -import { drawDottedLine } from '@/qqbot/plugins/bangDream/theme/canvas-dotted-line'; +} from '@/modules/qqbot/plugins/bangDream/song/song.model'; +import { drawDottedLine } from '@/modules/qqbot/plugins/bangDream/theme/canvas-dotted-line'; import { drawText, drawTextWithImages, -} from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { drawRoundedRect } from '@/qqbot/plugins/bangDream/theme/canvas-rect'; +} from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { drawRoundedRect } from '@/modules/qqbot/plugins/bangDream/theme/canvas-rect'; import { drawBannerImageCanvas, drawDataBlock, -} from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; -import { drawDegree } from '@/qqbot/plugins/bangDream/catalog/degree-badge.renderer'; +} from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { drawDegree } from '@/modules/qqbot/plugins/bangDream/catalog/degree-badge.renderer'; import { drawImageListCenter, drawList, drawListWithLine, -} from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawAttributeInList } from '@/qqbot/plugins/bangDream/catalog/attribute-list.renderer'; -import { drawCharacterInList } from '@/qqbot/plugins/bangDream/character/character-list.renderer'; -import { drawDifficultyList } from '@/qqbot/plugins/bangDream/song/song-difficulty.renderer'; -import { drawTimeInList } from '@/qqbot/plugins/bangDream/event/event-time.renderer'; -import { drawSongInList } from '@/qqbot/plugins/bangDream/song/song-list.renderer'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawAttributeInList } from '@/modules/qqbot/plugins/bangDream/catalog/attribute-list.renderer'; +import { drawCharacterInList } from '@/modules/qqbot/plugins/bangDream/character/character-list.renderer'; +import { drawDifficultyList } from '@/modules/qqbot/plugins/bangDream/song/song-difficulty.renderer'; +import { drawTimeInList } from '@/modules/qqbot/plugins/bangDream/event/event-time.renderer'; +import { drawSongInList } from '@/modules/qqbot/plugins/bangDream/song/song-list.renderer'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; import { resizeImage, stackImage, stackImageHorizontal, -} from '@/qqbot/plugins/bangDream/shared/image-stack'; +} from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; import { globalDefaultServer, serverNameFullList, -} from '@/qqbot/plugins/bangDream/config/runtime-config'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; import { Canvas, Image } from 'skia-canvas'; -import { Band } from '@/qqbot/plugins/bangDream/catalog/band.model'; -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; -import { createHorizontalSeparatorSpec } from '@/qqbot/plugins/bangDream/theme/layout'; +import { Band } from '@/modules/qqbot/plugins/bangDream/catalog/band.model'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; +import { createHorizontalSeparatorSpec } from '@/modules/qqbot/plugins/bangDream/theme/layout'; import { BANGDREAM_DETAIL_BLOCK_SPEC, getRelativeMetaPercent, -} from '@/qqbot/plugins/bangDream/shared/detail-block.layout'; +} from '@/modules/qqbot/plugins/bangDream/shared/detail-block.layout'; const songDetailSeparator = drawDottedLine( createHorizontalSeparatorSpec({ diff --git a/src/qqbot/plugins/bangDream/shared/image-stack.ts b/src/modules/qqbot/plugins/bangDream/shared/image-stack.ts similarity index 100% rename from src/qqbot/plugins/bangDream/shared/image-stack.ts rename to src/modules/qqbot/plugins/bangDream/shared/image-stack.ts diff --git a/src/qqbot/plugins/bangDream/shared/list-entity.layout.ts b/src/modules/qqbot/plugins/bangDream/shared/list-entity.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/shared/list-entity.layout.ts rename to src/modules/qqbot/plugins/bangDream/shared/list-entity.layout.ts diff --git a/src/qqbot/plugins/bangDream/shared/list-frame.layout.ts b/src/modules/qqbot/plugins/bangDream/shared/list-frame.layout.ts similarity index 98% rename from src/qqbot/plugins/bangDream/shared/list-frame.layout.ts rename to src/modules/qqbot/plugins/bangDream/shared/list-frame.layout.ts index 272f742..79ab1f0 100644 --- a/src/qqbot/plugins/bangDream/shared/list-frame.layout.ts +++ b/src/modules/qqbot/plugins/bangDream/shared/list-frame.layout.ts @@ -1,4 +1,4 @@ -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; interface ImageLike { height: number; diff --git a/src/qqbot/plugins/bangDream/shared/list-frame.renderer.ts b/src/modules/qqbot/plugins/bangDream/shared/list-frame.renderer.ts similarity index 92% rename from src/qqbot/plugins/bangDream/shared/list-frame.renderer.ts rename to src/modules/qqbot/plugins/bangDream/shared/list-frame.renderer.ts index 48ac9ac..751c656 100644 --- a/src/qqbot/plugins/bangDream/shared/list-frame.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/shared/list-frame.renderer.ts @@ -1,22 +1,22 @@ import { Canvas, Image } from 'skia-canvas'; -import { drawRoundedRectWithText } from '@/qqbot/plugins/bangDream/theme/canvas-rect'; +import { drawRoundedRectWithText } from '@/modules/qqbot/plugins/bangDream/theme/canvas-rect'; import { drawText, drawTextWithImages, -} from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { drawDottedLine } from '@/qqbot/plugins/bangDream/theme/canvas-dotted-line'; +} from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { drawDottedLine } from '@/modules/qqbot/plugins/bangDream/theme/canvas-dotted-line'; import { Server, getServerByPriority, getIcon, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { stackImageHorizontal } from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { stackImageHorizontal } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; import { createHorizontalSeparatorSpec, createVerticalSeparatorSpec, -} from '@/qqbot/plugins/bangDream/theme/layout'; +} from '@/modules/qqbot/plugins/bangDream/theme/layout'; import { BANGDREAM_LIST_FRAME_SPEC, createCenteredImageRows, @@ -28,7 +28,7 @@ import { getListFrameSpacing, getListFrameTextMaxWidth, getMergedListColumnWidth, -} from '@/qqbot/plugins/bangDream/shared/list-frame.layout'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.layout'; //表格用默认虚线 export const line: Canvas = drawDottedLine(createHorizontalSeparatorSpec()); diff --git a/src/qqbot/plugins/bangDream/shared/main-data-store.ts b/src/modules/qqbot/plugins/bangDream/shared/main-data-store.ts similarity index 73% rename from src/qqbot/plugins/bangDream/shared/main-data-store.ts rename to src/modules/qqbot/plugins/bangDream/shared/main-data-store.ts index 77f4ad8..f7adc56 100644 --- a/src/qqbot/plugins/bangDream/shared/main-data-store.ts +++ b/src/modules/qqbot/plugins/bangDream/shared/main-data-store.ts @@ -1,14 +1,20 @@ -import { bestdoriApiPath } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import { bangDreamStaticPatchProvider } from '@/qqbot/plugins/bangDream/provider/static-patch.provider'; -import { logger } from '@/qqbot/plugins/bangDream/shared/bangdream-logger'; +import { bestdoriApiPath } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import { bangDreamStaticPatchProvider } from '@/modules/qqbot/plugins/bangDream/provider/static-patch.provider'; +import { logger } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-logger'; import { BANGDREAM_TSUGU_ENV_KEYS, normalizeBangDreamPositiveInteger, -} from '@/qqbot/plugins/bangDream/config/runtime-options'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-options'; const mainAPI: Record = {}; //main对象,用于存放所有api数据,数据来源于Bestdori网站 -const REQUIRED_MAIN_DATA_KEYS = ['cards', 'characters', 'events', 'gacha', 'songs']; +const REQUIRED_MAIN_DATA_KEYS = [ + 'cards', + 'characters', + 'events', + 'gacha', + 'songs', +]; const DEFAULT_MAIN_DATA_READY_TIMEOUT_MS = 15000; function getMainDataReadyTimeoutMs(): number { @@ -57,21 +63,24 @@ async function loadMainAPI(useCache: boolean = false) { await Promise.all(promiseAll); - const cardsCnFix = await bangDreamStaticPatchProvider.readJson< - Record - >('cards-cn-fix.json'); + const cardsCnFix = + await bangDreamStaticPatchProvider.readJson>( + 'cards-cn-fix.json', + ); for (const key in cardsCnFix) { mainAPI['cards'][key] = cardsCnFix[key]; } - const skillsCnFix = await bangDreamStaticPatchProvider.readJson< - Record - >('skills-cn-fix.json'); + const skillsCnFix = + await bangDreamStaticPatchProvider.readJson>( + 'skills-cn-fix.json', + ); for (const key in skillsCnFix) { mainAPI['skills'][key] = skillsCnFix[key]; } - const areaItemFix = await bangDreamStaticPatchProvider.readJson< - Record - >('area-item-fix.json'); + const areaItemFix = + await bangDreamStaticPatchProvider.readJson>( + 'area-item-fix.json', + ); for (const key in areaItemFix) { if (mainAPI['areaItems'][key] == undefined) { mainAPI['areaItems'][key] = areaItemFix[key]; @@ -110,7 +119,10 @@ export async function waitForMainDataReady(): Promise { if (isMainDataReady()) { return; } - await Promise.race([initialLoadPromise, rejectAfter(getMainDataReadyTimeoutMs())]); + await Promise.race([ + initialLoadPromise, + rejectAfter(getMainDataReadyTimeoutMs()), + ]); if (!isMainDataReady()) { throw new Error('BangDream 主数据未完成关键集合加载'); } diff --git a/src/qqbot/plugins/bangDream/shared/main-data.repository.ts b/src/modules/qqbot/plugins/bangDream/shared/main-data.repository.ts similarity index 84% rename from src/qqbot/plugins/bangDream/shared/main-data.repository.ts rename to src/modules/qqbot/plugins/bangDream/shared/main-data.repository.ts index b5c647e..21d131f 100644 --- a/src/qqbot/plugins/bangDream/shared/main-data.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/shared/main-data.repository.ts @@ -1,5 +1,5 @@ -import mainAPI from '@/qqbot/plugins/bangDream/shared/main-data-store'; -import type { BANGDREAM_BESTDORI_API_PATHS } from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; +import mainAPI from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; +import type { BANGDREAM_BESTDORI_API_PATHS } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; export type BangDreamMainDataKey = keyof typeof BANGDREAM_BESTDORI_API_PATHS; export type BangDreamMainDataCollection = Record; @@ -57,5 +57,4 @@ export class BangDreamMainDataRepository { } } -export const bangDreamMainDataRepository = - new BangDreamMainDataRepository(); +export const bangDreamMainDataRepository = new BangDreamMainDataRepository(); diff --git a/src/qqbot/plugins/bangDream/shared/model-utils.ts b/src/modules/qqbot/plugins/bangDream/shared/model-utils.ts similarity index 100% rename from src/qqbot/plugins/bangDream/shared/model-utils.ts rename to src/modules/qqbot/plugins/bangDream/shared/model-utils.ts diff --git a/src/qqbot/plugins/bangDream/shared/title.layout.ts b/src/modules/qqbot/plugins/bangDream/shared/title.layout.ts similarity index 93% rename from src/qqbot/plugins/bangDream/shared/title.layout.ts rename to src/modules/qqbot/plugins/bangDream/shared/title.layout.ts index 0db2b6b..603572d 100644 --- a/src/qqbot/plugins/bangDream/shared/title.layout.ts +++ b/src/modules/qqbot/plugins/bangDream/shared/title.layout.ts @@ -1,4 +1,4 @@ -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; export const BANGDREAM_TITLE_SPEC = { background: { diff --git a/src/qqbot/plugins/bangDream/shared/title.renderer.ts b/src/modules/qqbot/plugins/bangDream/shared/title.renderer.ts similarity index 78% rename from src/qqbot/plugins/bangDream/shared/title.renderer.ts rename to src/modules/qqbot/plugins/bangDream/shared/title.renderer.ts index b789988..6052dd5 100644 --- a/src/qqbot/plugins/bangDream/shared/title.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/shared/title.renderer.ts @@ -1,12 +1,12 @@ import { Canvas, Image } from 'skia-canvas'; -import { drawText } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { loadImageFromPath } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { getBangDreamAssetPath } from '@/qqbot/plugins/bangDream/theme/asset-manifest'; +import { drawText } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { loadImageFromPath } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { getBangDreamAssetPath } from '@/modules/qqbot/plugins/bangDream/theme/asset-manifest'; import { BANGDREAM_TITLE_SPEC, createTitleTextDrawOptions, getTitleTextPosition, -} from '@/qqbot/plugins/bangDream/shared/title.layout'; +} from '@/modules/qqbot/plugins/bangDream/shared/title.layout'; let titleImage: Image; /** diff --git a/src/qqbot/plugins/bangDream/song/song-chart-preview.layout.ts b/src/modules/qqbot/plugins/bangDream/song/song-chart-preview.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/song/song-chart-preview.layout.ts rename to src/modules/qqbot/plugins/bangDream/song/song-chart-preview.layout.ts diff --git a/src/qqbot/plugins/bangDream/song/song-chart-preview.renderer.ts b/src/modules/qqbot/plugins/bangDream/song/song-chart-preview.renderer.ts similarity index 97% rename from src/qqbot/plugins/bangDream/song/song-chart-preview.renderer.ts rename to src/modules/qqbot/plugins/bangDream/song/song-chart-preview.renderer.ts index 2155fda..da4fcd4 100644 --- a/src/qqbot/plugins/bangDream/song/song-chart-preview.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song-chart-preview.renderer.ts @@ -1,11 +1,11 @@ import { Canvas, Image, loadImage } from 'skia-canvas'; import type { CanvasRenderingContext2D } from 'skia-canvas'; -import { loadImageFromPath } from '@/qqbot/plugins/bangDream/theme/canvas-image'; +import { loadImageFromPath } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; import { BangDreamLocalAssetKey, getBangDreamAssetPath, -} from '@/qqbot/plugins/bangDream/theme/asset-manifest'; -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +} from '@/modules/qqbot/plugins/bangDream/theme/asset-manifest'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; import { BANGDREAM_SONG_CHART_DIFFICULTY_COLORS, BANGDREAM_SONG_CHART_PREVIEW_SPEC, @@ -14,7 +14,7 @@ import { isSongChartCountLineNoteType, PreviewLayout, PreviewNote, -} from '@/qqbot/plugins/bangDream/song/song-chart-preview.layout'; +} from '@/modules/qqbot/plugins/bangDream/song/song-chart-preview.layout'; interface BestdoriPreviewPayload { id: number; @@ -219,7 +219,10 @@ function drawBaseInfo( * @param ctx - 画布绘图上下文。 * @param layout - 布局参数。 */ -function drawTracks(ctx: CanvasRenderingContext2D, layout: PreviewLayout): void { +function drawTracks( + ctx: CanvasRenderingContext2D, + layout: PreviewLayout, +): void { for (let i = 0; i < layout.colCount; i++) { ctx.save(); const x = diff --git a/src/qqbot/plugins/bangDream/song/song-chart.renderer.ts b/src/modules/qqbot/plugins/bangDream/song/song-chart.renderer.ts similarity index 75% rename from src/qqbot/plugins/bangDream/song/song-chart.renderer.ts rename to src/modules/qqbot/plugins/bangDream/song/song-chart.renderer.ts index ece8e91..646c137 100644 --- a/src/qqbot/plugins/bangDream/song/song-chart.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song-chart.renderer.ts @@ -1,12 +1,12 @@ import { Song, difficultyName, -} from '@/qqbot/plugins/bangDream/song/song.model'; -import { Band } from '@/qqbot/plugins/bangDream/catalog/band.model'; -import { drawBestdoriPreview } from '@/qqbot/plugins/bangDream/song/song-chart-preview.renderer'; -import { getServerByPriority } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; +} from '@/modules/qqbot/plugins/bangDream/song/song.model'; +import { Band } from '@/modules/qqbot/plugins/bangDream/catalog/band.model'; +import { drawBestdoriPreview } from '@/modules/qqbot/plugins/bangDream/song/song-chart-preview.renderer'; +import { getServerByPriority } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; /** * 在QQBot 图片视图层中绘制歌曲谱面。 diff --git a/src/qqbot/plugins/bangDream/song/song-detail.renderer.ts b/src/modules/qqbot/plugins/bangDream/song/song-detail.renderer.ts similarity index 79% rename from src/qqbot/plugins/bangDream/song/song-detail.renderer.ts rename to src/modules/qqbot/plugins/bangDream/song/song-detail.renderer.ts index cb63c51..cdc646c 100644 --- a/src/qqbot/plugins/bangDream/song/song-detail.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song-detail.renderer.ts @@ -1,26 +1,26 @@ -import { getPresentEvent } from '@/qqbot/plugins/bangDream/event/event.model'; +import { getPresentEvent } from '@/modules/qqbot/plugins/bangDream/event/event.model'; import { drawList, line, drawListByServerList, drawListMerge, -} from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; import { Image, Canvas } from 'skia-canvas'; -import { drawTimeInList } from '@/qqbot/plugins/bangDream/event/event-time.renderer'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { Song } from '@/qqbot/plugins/bangDream/song/song.model'; -import { drawSongDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; -import { Band } from '@/qqbot/plugins/bangDream/catalog/band.model'; -import { drawEventDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; -import { drawSongMetaListDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { drawTimeInList } from '@/modules/qqbot/plugins/bangDream/event/event-time.renderer'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { Song } from '@/modules/qqbot/plugins/bangDream/song/song.model'; +import { drawSongDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { Band } from '@/modules/qqbot/plugins/bangDream/catalog/band.model'; +import { drawEventDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { drawSongMetaListDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; import { globalDefaultServer, serverNameFullList, -} from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { formatSeconds } from '@/qqbot/plugins/bangDream/event/event-time.renderer'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { formatSeconds } from '@/modules/qqbot/plugins/bangDream/event/event-time.renderer'; /** * 在QQBot 图片视图层中绘制歌曲详情。 diff --git a/src/qqbot/plugins/bangDream/song/song-difficulty.layout.ts b/src/modules/qqbot/plugins/bangDream/song/song-difficulty.layout.ts similarity index 93% rename from src/qqbot/plugins/bangDream/song/song-difficulty.layout.ts rename to src/modules/qqbot/plugins/bangDream/song/song-difficulty.layout.ts index 176a0c8..53606a5 100644 --- a/src/qqbot/plugins/bangDream/song/song-difficulty.layout.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song-difficulty.layout.ts @@ -58,8 +58,7 @@ export function getDifficultyBadgeColor( colors: ReadonlyArray, ) { return ( - colors[difficultyType] ?? - BANGDREAM_DIFFICULTY_LIST_SPEC.badge.fallbackColor + colors[difficultyType] ?? BANGDREAM_DIFFICULTY_LIST_SPEC.badge.fallbackColor ); } @@ -94,8 +93,7 @@ export function createDifficultyLevelTextSpec( maxWidth: imageHeight * BANGDREAM_DIFFICULTY_LIST_SPEC.badge.textMaxWidthRatio, text: playLevel.toString(), - textSize: - imageHeight * BANGDREAM_DIFFICULTY_LIST_SPEC.badge.textSizeRatio, + textSize: imageHeight * BANGDREAM_DIFFICULTY_LIST_SPEC.badge.textSizeRatio, }; } diff --git a/src/qqbot/plugins/bangDream/song/song-difficulty.renderer.ts b/src/modules/qqbot/plugins/bangDream/song/song-difficulty.renderer.ts similarity index 84% rename from src/qqbot/plugins/bangDream/song/song-difficulty.renderer.ts rename to src/modules/qqbot/plugins/bangDream/song/song-difficulty.renderer.ts index 384f359..4a072f8 100644 --- a/src/qqbot/plugins/bangDream/song/song-difficulty.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song-difficulty.renderer.ts @@ -1,7 +1,7 @@ import { Canvas } from 'skia-canvas'; -import { Song } from '@/qqbot/plugins/bangDream/song/song.model'; -import { drawText } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { difficultyColorList } from '@/qqbot/plugins/bangDream/song/song.model'; +import { Song } from '@/modules/qqbot/plugins/bangDream/song/song.model'; +import { drawText } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { difficultyColorList } from '@/modules/qqbot/plugins/bangDream/song/song.model'; import { BANGDREAM_DIFFICULTY_LIST_SPEC, createDifficultyBadgeLayout, @@ -10,7 +10,7 @@ import { getDifficultyLevelTextPosition, getDifficultyListCanvasWidth, getDifficultyListItemX, -} from '@/qqbot/plugins/bangDream/song/song-difficulty.layout'; +} from '@/modules/qqbot/plugins/bangDream/song/song-difficulty.layout'; /** * 在图片布局层中绘制难度列表。 @@ -22,8 +22,7 @@ import { */ export function drawDifficultyList( song: Song, - imageHeight: number = BANGDREAM_DIFFICULTY_LIST_SPEC.list - .defaultImageHeight, + imageHeight: number = BANGDREAM_DIFFICULTY_LIST_SPEC.list.defaultImageHeight, spacing: number = BANGDREAM_DIFFICULTY_LIST_SPEC.list.defaultSpacing, ): Canvas { const difficultyCount = Object.keys(song.difficulty).length; diff --git a/src/qqbot/plugins/bangDream/song/song-list.layout.ts b/src/modules/qqbot/plugins/bangDream/song/song-list.layout.ts similarity index 91% rename from src/qqbot/plugins/bangDream/song/song-list.layout.ts rename to src/modules/qqbot/plugins/bangDream/song/song-list.layout.ts index 3cd8313..53e37a6 100644 --- a/src/qqbot/plugins/bangDream/song/song-list.layout.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song-list.layout.ts @@ -1,5 +1,5 @@ -import { getListFrameTextMaxWidth } from '@/qqbot/plugins/bangDream/shared/list-frame.layout'; -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +import { getListFrameTextMaxWidth } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.layout'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; interface ImageLike { height: number; diff --git a/src/qqbot/plugins/bangDream/song/song-list.renderer.ts b/src/modules/qqbot/plugins/bangDream/song/song-list.renderer.ts similarity index 81% rename from src/qqbot/plugins/bangDream/song/song-list.renderer.ts rename to src/modules/qqbot/plugins/bangDream/song/song-list.renderer.ts index 82631e0..a315ae7 100644 --- a/src/qqbot/plugins/bangDream/song/song-list.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song-list.renderer.ts @@ -1,24 +1,27 @@ import { Canvas } from 'skia-canvas'; -import { Band } from '@/qqbot/plugins/bangDream/catalog/band.model'; +import { Band } from '@/modules/qqbot/plugins/bangDream/catalog/band.model'; import { Server, getServerByPriority, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { Song } from '@/qqbot/plugins/bangDream/song/song.model'; -import { drawText } from '@/qqbot/plugins/bangDream/theme/canvas-text'; -import { resizeImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { drawDifficultyList, drawDifficulty } from '@/qqbot/plugins/bangDream/song/song-difficulty.renderer'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { drawList } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; -import { drawDottedLine } from '@/qqbot/plugins/bangDream/theme/canvas-dotted-line'; -import { createHorizontalSeparatorSpec } from '@/qqbot/plugins/bangDream/theme/layout'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { Song } from '@/modules/qqbot/plugins/bangDream/song/song.model'; +import { drawText } from '@/modules/qqbot/plugins/bangDream/theme/canvas-text'; +import { resizeImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { + drawDifficultyList, + drawDifficulty, +} from '@/modules/qqbot/plugins/bangDream/song/song-difficulty.renderer'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { drawList } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { drawDottedLine } from '@/modules/qqbot/plugins/bangDream/theme/canvas-dotted-line'; +import { createHorizontalSeparatorSpec } from '@/modules/qqbot/plugins/bangDream/theme/layout'; import { BANGDREAM_SONG_LIST_SPEC, createSongInListLayout, getSongListCanvasHeight, getSongListContentWidth, getSongListFrameLineHeight, -} from '@/qqbot/plugins/bangDream/song/song-list.layout'; +} from '@/modules/qqbot/plugins/bangDream/song/song-list.layout'; /** * 在图片布局层中绘制歌曲In列表。 diff --git a/src/qqbot/plugins/bangDream/song/song-meta.renderer.ts b/src/modules/qqbot/plugins/bangDream/song/song-meta.renderer.ts similarity index 71% rename from src/qqbot/plugins/bangDream/song/song-meta.renderer.ts rename to src/modules/qqbot/plugins/bangDream/song/song-meta.renderer.ts index 2e8a633..a51abb7 100644 --- a/src/qqbot/plugins/bangDream/song/song-meta.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song-meta.renderer.ts @@ -1,16 +1,16 @@ import { Song, getMetaRanking, -} from '@/qqbot/plugins/bangDream/song/song.model'; +} from '@/modules/qqbot/plugins/bangDream/song/song.model'; import { Canvas } from 'skia-canvas'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { drawSongInList } from '@/qqbot/plugins/bangDream/song/song-list.renderer'; -import { drawDottedLine } from '@/qqbot/plugins/bangDream/theme/canvas-dotted-line'; -import { stackImageHorizontal } from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { serverNameFullList } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { drawDataBlock } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { drawSongInList } from '@/modules/qqbot/plugins/bangDream/song/song-list.renderer'; +import { drawDottedLine } from '@/modules/qqbot/plugins/bangDream/theme/canvas-dotted-line'; +import { stackImageHorizontal } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { serverNameFullList } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { drawDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; // 紧凑化虚线分割 const line = drawDottedLine({ diff --git a/src/qqbot/plugins/bangDream/song/song-random.renderer.ts b/src/modules/qqbot/plugins/bangDream/song/song-random.renderer.ts similarity index 68% rename from src/qqbot/plugins/bangDream/song/song-random.renderer.ts rename to src/modules/qqbot/plugins/bangDream/song/song-random.renderer.ts index dbb37b1..2ef3779 100644 --- a/src/qqbot/plugins/bangDream/song/song-random.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song-random.renderer.ts @@ -1,11 +1,11 @@ -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { createOutputFinalImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { Song } from '@/qqbot/plugins/bangDream/song/song.model'; -import { drawSongDataBlock } from '@/qqbot/plugins/bangDream/shared/detail-block.renderer'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { matchSongList } from '@/qqbot/plugins/bangDream/song/song-search.renderer'; -import { FuzzySearchResult } from '@/qqbot/plugins/bangDream/search/fuzzy-search'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { createOutputFinalImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { Song } from '@/modules/qqbot/plugins/bangDream/song/song.model'; +import { drawSongDataBlock } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.renderer'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { matchSongList } from '@/modules/qqbot/plugins/bangDream/song/song-search.renderer'; +import { FuzzySearchResult } from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search'; /** * 在QQBot 图片视图层中绘制歌曲Random。 diff --git a/src/qqbot/plugins/bangDream/song/song-resource.repository.ts b/src/modules/qqbot/plugins/bangDream/song/song-resource.repository.ts similarity index 89% rename from src/qqbot/plugins/bangDream/song/song-resource.repository.ts rename to src/modules/qqbot/plugins/bangDream/song/song-resource.repository.ts index 237fd11..4fb3c9c 100644 --- a/src/qqbot/plugins/bangDream/song/song-resource.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song-resource.repository.ts @@ -1,15 +1,15 @@ -import { assetErrorImageBuffer } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { bangDreamBestdoriProvider } from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { assetErrorImageBuffer } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { bangDreamBestdoriProvider } from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; import { BANGDREAM_DIFFICULTY_NAME_BY_ID, BANGDREAM_SERVER_CODES, -} from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; +} from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; import { getServerByPriority, Server, -} from '@/qqbot/plugins/bangDream/catalog/server.model'; -import type { BestdoriNote } from '@/qqbot/plugins/bangDream/song/song-chart-preview.layout'; +} from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import type { BestdoriNote } from '@/modules/qqbot/plugins/bangDream/song/song-chart-preview.layout'; export interface SongJacketSource { jacketImage: Array; @@ -51,7 +51,10 @@ export class SongResourceRepository { * @param songId - 歌曲 ID。 * @param difficultyId - 难度 ID。 */ - async getChart(songId: number, difficultyId: number): Promise { + async getChart( + songId: number, + difficultyId: number, + ): Promise { return await this.provider.getJson( `/api/charts/${songId}/${difficultyNameById[difficultyId]}.json`, ); diff --git a/src/qqbot/plugins/bangDream/song/song-search.renderer.ts b/src/modules/qqbot/plugins/bangDream/song/song-search.renderer.ts similarity index 74% rename from src/qqbot/plugins/bangDream/song/song-search.renderer.ts rename to src/modules/qqbot/plugins/bangDream/song/song-search.renderer.ts index 7667d89..4d33329 100644 --- a/src/qqbot/plugins/bangDream/song/song-search.renderer.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song-search.renderer.ts @@ -1,24 +1,24 @@ -import { Song } from '@/qqbot/plugins/bangDream/song/song.model'; +import { Song } from '@/modules/qqbot/plugins/bangDream/song/song.model'; import { match, FuzzySearchResult, -} from '@/qqbot/plugins/bangDream/search/fuzzy-search'; +} from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search'; import { Canvas } from 'skia-canvas'; -import { drawTitle } from '@/qqbot/plugins/bangDream/shared/title.renderer'; -import { outputEasyImages } from '@/qqbot/plugins/bangDream/theme/canvas-output'; -import { drawDataBlockHorizontal } from '@/qqbot/plugins/bangDream/shared/data-block.renderer'; -import { drawSongInList } from '@/qqbot/plugins/bangDream/song/song-list.renderer'; -import { drawDottedLine } from '@/qqbot/plugins/bangDream/theme/canvas-dotted-line'; -import { stackImage } from '@/qqbot/plugins/bangDream/shared/image-stack'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { globalDefaultServer } from '@/qqbot/plugins/bangDream/config/runtime-config'; -import { drawSongDetail } from '@/qqbot/plugins/bangDream/song/song-detail.renderer'; -import { createTsuguEntityMatcher } from '@/qqbot/plugins/bangDream/search/entity-list-matcher'; -import { songRepository } from '@/qqbot/plugins/bangDream/song/song.repository'; +import { drawTitle } from '@/modules/qqbot/plugins/bangDream/shared/title.renderer'; +import { outputEasyImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-output'; +import { drawDataBlockHorizontal } from '@/modules/qqbot/plugins/bangDream/shared/data-block.renderer'; +import { drawSongInList } from '@/modules/qqbot/plugins/bangDream/song/song-list.renderer'; +import { drawDottedLine } from '@/modules/qqbot/plugins/bangDream/theme/canvas-dotted-line'; +import { stackImage } from '@/modules/qqbot/plugins/bangDream/shared/image-stack'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { globalDefaultServer } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; +import { drawSongDetail } from '@/modules/qqbot/plugins/bangDream/song/song-detail.renderer'; +import { createTsuguEntityMatcher } from '@/modules/qqbot/plugins/bangDream/search/entity-list-matcher'; +import { songRepository } from '@/modules/qqbot/plugins/bangDream/song/song.repository'; import { createHorizontalSeparatorSpec, createVerticalSeparatorSpec, -} from '@/qqbot/plugins/bangDream/theme/layout'; +} from '@/modules/qqbot/plugins/bangDream/theme/layout'; // 紧凑化虚线分割 const line = drawDottedLine(createHorizontalSeparatorSpec({ height: 10 })); diff --git a/src/qqbot/plugins/bangDream/song/song.model.ts b/src/modules/qqbot/plugins/bangDream/song/song.model.ts similarity index 95% rename from src/qqbot/plugins/bangDream/song/song.model.ts rename to src/modules/qqbot/plugins/bangDream/song/song.model.ts index 675aecb..8508e77 100644 --- a/src/qqbot/plugins/bangDream/song/song.model.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song.model.ts @@ -1,15 +1,15 @@ import { Image, loadImage } from 'skia-canvas'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { bangDreamMainDataRepository } from '@/qqbot/plugins/bangDream/shared/main-data.repository'; -import { stringToNumberArray } from '@/qqbot/plugins/bangDream/shared/model-utils'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { bangDreamMainDataRepository } from '@/modules/qqbot/plugins/bangDream/shared/main-data.repository'; +import { stringToNumberArray } from '@/modules/qqbot/plugins/bangDream/shared/model-utils'; import { BANGDREAM_DIFFICULTY_COLORS, BANGDREAM_DIFFICULTY_NAME_BY_ID, BANGDREAM_DIFFICULTY_NAMES, BANGDREAM_SONG_TAG_NAME, -} from '@/qqbot/plugins/bangDream/shared/bangdream-constants'; -import { songResourceRepository } from '@/qqbot/plugins/bangDream/song/song-resource.repository'; -import type { BestdoriNote } from '@/qqbot/plugins/bangDream/song/song-chart-preview.layout'; +} from '@/modules/qqbot/plugins/bangDream/shared/bangdream-constants'; +import { songResourceRepository } from '@/modules/qqbot/plugins/bangDream/song/song-resource.repository'; +import type { BestdoriNote } from '@/modules/qqbot/plugins/bangDream/song/song-chart-preview.layout'; export const difficultyName: Record = BANGDREAM_DIFFICULTY_NAME_BY_ID; diff --git a/src/qqbot/plugins/bangDream/song/song.repository.ts b/src/modules/qqbot/plugins/bangDream/song/song.repository.ts similarity index 76% rename from src/qqbot/plugins/bangDream/song/song.repository.ts rename to src/modules/qqbot/plugins/bangDream/song/song.repository.ts index 5065259..9eea6a4 100644 --- a/src/qqbot/plugins/bangDream/song/song.repository.ts +++ b/src/modules/qqbot/plugins/bangDream/song/song.repository.ts @@ -1,8 +1,8 @@ -import { Song } from '@/qqbot/plugins/bangDream/song/song.model'; +import { Song } from '@/modules/qqbot/plugins/bangDream/song/song.model'; import { bangDreamMainDataRepository, type BangDreamMainDataCollection, -} from '@/qqbot/plugins/bangDream/shared/main-data.repository'; +} from '@/modules/qqbot/plugins/bangDream/shared/main-data.repository'; export class SongRepository { /** diff --git a/src/qqbot/plugins/bangDream/static-config/area-item-fix.json b/src/modules/qqbot/plugins/bangDream/static-config/area-item-fix.json similarity index 100% rename from src/qqbot/plugins/bangDream/static-config/area-item-fix.json rename to src/modules/qqbot/plugins/bangDream/static-config/area-item-fix.json diff --git a/src/qqbot/plugins/bangDream/static-config/car-keyword.json b/src/modules/qqbot/plugins/bangDream/static-config/car-keyword.json similarity index 100% rename from src/qqbot/plugins/bangDream/static-config/car-keyword.json rename to src/modules/qqbot/plugins/bangDream/static-config/car-keyword.json diff --git a/src/qqbot/plugins/bangDream/static-config/cards-cn-fix.json b/src/modules/qqbot/plugins/bangDream/static-config/cards-cn-fix.json similarity index 100% rename from src/qqbot/plugins/bangDream/static-config/cards-cn-fix.json rename to src/modules/qqbot/plugins/bangDream/static-config/cards-cn-fix.json diff --git a/src/qqbot/plugins/bangDream/static-config/fuzzy-search-settings.json b/src/modules/qqbot/plugins/bangDream/static-config/fuzzy-search-settings.json similarity index 100% rename from src/qqbot/plugins/bangDream/static-config/fuzzy-search-settings.json rename to src/modules/qqbot/plugins/bangDream/static-config/fuzzy-search-settings.json diff --git a/src/qqbot/plugins/bangDream/static-config/nickname-card.xlsx b/src/modules/qqbot/plugins/bangDream/static-config/nickname-card.xlsx similarity index 100% rename from src/qqbot/plugins/bangDream/static-config/nickname-card.xlsx rename to src/modules/qqbot/plugins/bangDream/static-config/nickname-card.xlsx diff --git a/src/qqbot/plugins/bangDream/static-config/nickname-event.xlsx b/src/modules/qqbot/plugins/bangDream/static-config/nickname-event.xlsx similarity index 100% rename from src/qqbot/plugins/bangDream/static-config/nickname-event.xlsx rename to src/modules/qqbot/plugins/bangDream/static-config/nickname-event.xlsx diff --git a/src/qqbot/plugins/bangDream/static-config/nickname-song.xlsx b/src/modules/qqbot/plugins/bangDream/static-config/nickname-song.xlsx similarity index 100% rename from src/qqbot/plugins/bangDream/static-config/nickname-song.xlsx rename to src/modules/qqbot/plugins/bangDream/static-config/nickname-song.xlsx diff --git a/src/qqbot/plugins/bangDream/static-config/player-number.xlsx b/src/modules/qqbot/plugins/bangDream/static-config/player-number.xlsx similarity index 100% rename from src/qqbot/plugins/bangDream/static-config/player-number.xlsx rename to src/modules/qqbot/plugins/bangDream/static-config/player-number.xlsx diff --git a/src/qqbot/plugins/bangDream/static-config/skills-cn-fix.json b/src/modules/qqbot/plugins/bangDream/static-config/skills-cn-fix.json similarity index 100% rename from src/qqbot/plugins/bangDream/static-config/skills-cn-fix.json rename to src/modules/qqbot/plugins/bangDream/static-config/skills-cn-fix.json diff --git a/src/qqbot/plugins/bangDream/theme/asset-manifest.ts b/src/modules/qqbot/plugins/bangDream/theme/asset-manifest.ts similarity index 95% rename from src/qqbot/plugins/bangDream/theme/asset-manifest.ts rename to src/modules/qqbot/plugins/bangDream/theme/asset-manifest.ts index 997f0eb..4b5721e 100644 --- a/src/qqbot/plugins/bangDream/theme/asset-manifest.ts +++ b/src/modules/qqbot/plugins/bangDream/theme/asset-manifest.ts @@ -1,5 +1,5 @@ import * as path from 'path'; -import { assetsRootPath } from '@/qqbot/plugins/bangDream/config/runtime-config'; +import { assetsRootPath } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; export const BANGDREAM_LOCAL_ASSETS = { backgroundLive: 'BG/live.png', diff --git a/src/qqbot/plugins/bangDream/theme/canvas-background-scatter.ts b/src/modules/qqbot/plugins/bangDream/theme/canvas-background-scatter.ts similarity index 100% rename from src/qqbot/plugins/bangDream/theme/canvas-background-scatter.ts rename to src/modules/qqbot/plugins/bangDream/theme/canvas-background-scatter.ts diff --git a/src/qqbot/plugins/bangDream/theme/canvas-background-text.ts b/src/modules/qqbot/plugins/bangDream/theme/canvas-background-text.ts similarity index 97% rename from src/qqbot/plugins/bangDream/theme/canvas-background-text.ts rename to src/modules/qqbot/plugins/bangDream/theme/canvas-background-text.ts index 814528b..1a769cb 100644 --- a/src/qqbot/plugins/bangDream/theme/canvas-background-text.ts +++ b/src/modules/qqbot/plugins/bangDream/theme/canvas-background-text.ts @@ -1,5 +1,5 @@ import { Canvas, FontLibrary } from 'skia-canvas'; -import { assetsRootPath } from '@/qqbot/plugins/bangDream/config/runtime-config'; +import { assetsRootPath } from '@/modules/qqbot/plugins/bangDream/config/runtime-config'; FontLibrary.use('Orbitron', [`${assetsRootPath}/Fonts/Orbitron Black.ttf`]); diff --git a/src/qqbot/plugins/bangDream/theme/canvas-background-triangle.ts b/src/modules/qqbot/plugins/bangDream/theme/canvas-background-triangle.ts similarity index 98% rename from src/qqbot/plugins/bangDream/theme/canvas-background-triangle.ts rename to src/modules/qqbot/plugins/bangDream/theme/canvas-background-triangle.ts index 19e51ee..11cef39 100644 --- a/src/qqbot/plugins/bangDream/theme/canvas-background-triangle.ts +++ b/src/modules/qqbot/plugins/bangDream/theme/canvas-background-triangle.ts @@ -1,5 +1,5 @@ import { Canvas, Image } from 'skia-canvas'; -import { getBlurredImage } from '@/qqbot/plugins/bangDream/theme/canvas-blur-image'; +import { getBlurredImage } from '@/modules/qqbot/plugins/bangDream/theme/canvas-blur-image'; interface createBlurredTrianglePatternOptions { image: Image; diff --git a/src/qqbot/plugins/bangDream/theme/canvas-background.ts b/src/modules/qqbot/plugins/bangDream/theme/canvas-background.ts similarity index 91% rename from src/qqbot/plugins/bangDream/theme/canvas-background.ts rename to src/modules/qqbot/plugins/bangDream/theme/canvas-background.ts index e576665..b643061 100644 --- a/src/qqbot/plugins/bangDream/theme/canvas-background.ts +++ b/src/modules/qqbot/plugins/bangDream/theme/canvas-background.ts @@ -1,10 +1,10 @@ -import { createBlurredTrianglePattern } from '@/qqbot/plugins/bangDream/theme/canvas-background-triangle'; -import { scatterImages } from '@/qqbot/plugins/bangDream/theme/canvas-background-scatter'; -import { drawTextOnCanvas } from '@/qqbot/plugins/bangDream/theme/canvas-background-text'; +import { createBlurredTrianglePattern } from '@/modules/qqbot/plugins/bangDream/theme/canvas-background-triangle'; +import { scatterImages } from '@/modules/qqbot/plugins/bangDream/theme/canvas-background-scatter'; +import { drawTextOnCanvas } from '@/modules/qqbot/plugins/bangDream/theme/canvas-background-text'; import { loadImage, Image, Canvas } from 'skia-canvas'; -import { loadImageFromPath } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { getBangDreamAssetPath } from '@/qqbot/plugins/bangDream/theme/asset-manifest'; -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +import { loadImageFromPath } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { getBangDreamAssetPath } from '@/modules/qqbot/plugins/bangDream/theme/asset-manifest'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; interface BackgroundOptions { image?: Image | Canvas | any; diff --git a/src/qqbot/plugins/bangDream/theme/canvas-blur-image.ts b/src/modules/qqbot/plugins/bangDream/theme/canvas-blur-image.ts similarity index 100% rename from src/qqbot/plugins/bangDream/theme/canvas-blur-image.ts rename to src/modules/qqbot/plugins/bangDream/theme/canvas-blur-image.ts diff --git a/src/qqbot/plugins/bangDream/theme/canvas-dotted-line.ts b/src/modules/qqbot/plugins/bangDream/theme/canvas-dotted-line.ts similarity index 100% rename from src/qqbot/plugins/bangDream/theme/canvas-dotted-line.ts rename to src/modules/qqbot/plugins/bangDream/theme/canvas-dotted-line.ts diff --git a/src/qqbot/plugins/bangDream/theme/canvas-image.ts b/src/modules/qqbot/plugins/bangDream/theme/canvas-image.ts similarity index 100% rename from src/qqbot/plugins/bangDream/theme/canvas-image.ts rename to src/modules/qqbot/plugins/bangDream/theme/canvas-image.ts diff --git a/src/qqbot/plugins/bangDream/theme/canvas-output.ts b/src/modules/qqbot/plugins/bangDream/theme/canvas-output.ts similarity index 93% rename from src/qqbot/plugins/bangDream/theme/canvas-output.ts rename to src/modules/qqbot/plugins/bangDream/theme/canvas-output.ts index c4a849c..1229241 100644 --- a/src/qqbot/plugins/bangDream/theme/canvas-output.ts +++ b/src/modules/qqbot/plugins/bangDream/theme/canvas-output.ts @@ -3,9 +3,9 @@ import { createBackground, createEasyBackground, createImageBackground, -} from '@/qqbot/plugins/bangDream/theme/canvas-background'; -import { loadImageFromPath } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { getBangDreamAssetPath } from '@/qqbot/plugins/bangDream/theme/asset-manifest'; +} from '@/modules/qqbot/plugins/bangDream/theme/canvas-background'; +import { loadImageFromPath } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { getBangDreamAssetPath } from '@/modules/qqbot/plugins/bangDream/theme/asset-manifest'; let BGDefaultImage: Image; /** diff --git a/src/qqbot/plugins/bangDream/theme/canvas-rect.ts b/src/modules/qqbot/plugins/bangDream/theme/canvas-rect.ts similarity index 93% rename from src/qqbot/plugins/bangDream/theme/canvas-rect.ts rename to src/modules/qqbot/plugins/bangDream/theme/canvas-rect.ts index 6c295fe..a008f19 100644 --- a/src/qqbot/plugins/bangDream/theme/canvas-rect.ts +++ b/src/modules/qqbot/plugins/bangDream/theme/canvas-rect.ts @@ -1,7 +1,7 @@ import { Canvas, FontLibrary } from 'skia-canvas'; -import { getTextWidth } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import { getBangDreamAssetPath } from '@/qqbot/plugins/bangDream/theme/asset-manifest'; -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +import { getTextWidth } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import { getBangDreamAssetPath } from '@/modules/qqbot/plugins/bangDream/theme/asset-manifest'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; FontLibrary.use('old', [getBangDreamAssetPath('fontOld')]); diff --git a/src/qqbot/plugins/bangDream/theme/canvas-text.layout.ts b/src/modules/qqbot/plugins/bangDream/theme/canvas-text.layout.ts similarity index 100% rename from src/qqbot/plugins/bangDream/theme/canvas-text.layout.ts rename to src/modules/qqbot/plugins/bangDream/theme/canvas-text.layout.ts diff --git a/src/qqbot/plugins/bangDream/theme/canvas-text.ts b/src/modules/qqbot/plugins/bangDream/theme/canvas-text.ts similarity index 97% rename from src/qqbot/plugins/bangDream/theme/canvas-text.ts rename to src/modules/qqbot/plugins/bangDream/theme/canvas-text.ts index 0329bea..bb43157 100644 --- a/src/qqbot/plugins/bangDream/theme/canvas-text.ts +++ b/src/modules/qqbot/plugins/bangDream/theme/canvas-text.ts @@ -4,8 +4,8 @@ import { Canvas, CanvasRenderingContext2D, } from 'skia-canvas'; -import { getBangDreamAssetPath } from '@/qqbot/plugins/bangDream/theme/asset-manifest'; -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +import { getBangDreamAssetPath } from '@/modules/qqbot/plugins/bangDream/theme/asset-manifest'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; import { BANGDREAM_TEXT_SPEC, BangDreamTextFont, @@ -16,7 +16,7 @@ import { getTextBaselineY, getTextInlineSpacing, getTextLineHeight, -} from '@/qqbot/plugins/bangDream/theme/canvas-text.layout'; +} from '@/modules/qqbot/plugins/bangDream/theme/canvas-text.layout'; FontLibrary.use('old', [getBangDreamAssetPath('fontOld')]); FontLibrary.use('FangZhengHeiTi', [ diff --git a/src/qqbot/plugins/bangDream/theme/layout.ts b/src/modules/qqbot/plugins/bangDream/theme/layout.ts similarity index 91% rename from src/qqbot/plugins/bangDream/theme/layout.ts rename to src/modules/qqbot/plugins/bangDream/theme/layout.ts index 9844e51..1bdf793 100644 --- a/src/qqbot/plugins/bangDream/theme/layout.ts +++ b/src/modules/qqbot/plugins/bangDream/theme/layout.ts @@ -1,4 +1,4 @@ -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; interface SeparatorSpecOptions { width?: number; diff --git a/src/qqbot/plugins/bangDream/theme/render-theme.ts b/src/modules/qqbot/plugins/bangDream/theme/render-theme.ts similarity index 100% rename from src/qqbot/plugins/bangDream/theme/render-theme.ts rename to src/modules/qqbot/plugins/bangDream/theme/render-theme.ts diff --git a/src/modules/qqbot/plugins/ff14Market/plugin.json b/src/modules/qqbot/plugins/ff14Market/plugin.json new file mode 100644 index 0000000..b24fdaa --- /dev/null +++ b/src/modules/qqbot/plugins/ff14Market/plugin.json @@ -0,0 +1,47 @@ +{ + "pluginKey": "ff14-market", + "name": "FF14 市场价格", + "version": "1.0.0", + "minApiSdkVersion": "1.0.0", + "description": "对接 XIVAPI v2 与 Universalis,提供 FF14 物品解析和市场价格查询能力。", + "author": "KT", + "entry": "qqbot-ff14-market.plugin.ts", + "permissions": ["runtime.http", "plugin.config.read"], + "runtime": { + "workerType": "node-worker", + "timeoutMs": 15000, + "memoryMb": 256, + "maxConcurrency": 4 + }, + "configSchema": { + "type": "object", + "properties": { + "xivapiBaseUrl": { "type": "string" }, + "universalisBaseUrl": { "type": "string" }, + "defaultWorld": { "type": "string" } + } + }, + "operations": [ + { + "key": "ff14.item.resolve", + "name": "解析物品", + "handlerName": "resolveItem", + "description": "按物品名称或 ID 解析 XIVAPI 物品信息。", + "aliases": ["物品", "item", "ff14item"], + "permissions": ["runtime.http", "plugin.config.read"], + "timeoutMs": 15000 + }, + { + "key": "ff14.market.price", + "name": "市场查价", + "handlerName": "getPrice", + "description": "查询指定服务器的 FF14 市场最低价、均价与近期挂单。", + "aliases": ["查价", "price", "ff14price"], + "permissions": ["runtime.http", "plugin.config.read"], + "timeoutMs": 15000 + } + ], + "events": [], + "assets": [], + "migrations": [] +} diff --git a/src/qqbot/plugins/ff14Market/qqbot-ff14-client.service.ts b/src/modules/qqbot/plugins/ff14Market/qqbot-ff14-client.service.ts similarity index 90% rename from src/qqbot/plugins/ff14Market/qqbot-ff14-client.service.ts rename to src/modules/qqbot/plugins/ff14Market/qqbot-ff14-client.service.ts index 8c7ae0d..59cbf7e 100644 --- a/src/qqbot/plugins/ff14Market/qqbot-ff14-client.service.ts +++ b/src/modules/qqbot/plugins/ff14Market/qqbot-ff14-client.service.ts @@ -1,9 +1,8 @@ import { Injectable } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import * as http from 'node:http'; -import * as https from 'node:https'; import { formatKtDateTime } from '@/common'; -import { DictService } from '../../../admin/dict/dict.service'; +import { DictService } from '@/admin/dict/dict.service'; +import { QqbotPluginHttpClientService } from '@/modules/qqbot/plugin-platform/sdk'; import { buildQqbotFf14MarketCatalog, buildQqbotFf14MarketCatalogFromTree, @@ -28,6 +27,7 @@ export class QqbotFf14ClientService { constructor( private readonly configService: ConfigService, private readonly dictService: DictService, + private readonly httpClient: QqbotPluginHttpClientService, ) { this.xivapiBaseUrl = this.configService.get('FF14_XIVAPI_BASE_URL') || @@ -369,42 +369,14 @@ export class QqbotFf14ClientService { } private requestJson(url: URL, method: Ff14HttpMethod, context: string) { - return new Promise((resolve, reject) => { - const client = url.protocol === 'http:' ? http : https; - const request = client.request( - url, - { - headers: { - Accept: 'application/json', - 'User-Agent': 'kt-template-online-api/qqbot', - }, - method, - timeout: 8000, - }, - (response) => { - let body = ''; - response.setEncoding('utf8'); - response.on('data', (chunk) => { - body += chunk; - }); - response.on('end', () => { - if ((response.statusCode || 500) >= 400) { - reject(new Error(`${context}失败:${response.statusCode}`)); - return; - } - try { - resolve(JSON.parse(body) as T); - } catch { - reject(new Error('FF14 接口返回不是合法 JSON')); - } - }); - }, - ); - request.on('timeout', () => { - request.destroy(new Error('FF14 接口请求超时')); - }); - request.on('error', reject); - request.end(); + return this.httpClient.requestJson({ + context, + failureMessage: (statusCode) => `${context}失败:${statusCode}`, + invalidJsonMessage: 'FF14 接口返回不是合法 JSON', + method, + timeoutMessage: 'FF14 接口请求超时', + timeoutMs: 8000, + url, }); } } diff --git a/src/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin.ts b/src/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin.ts similarity index 96% rename from src/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin.ts rename to src/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin.ts index 066600a..7a6dc2b 100644 --- a/src/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin.ts +++ b/src/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; import { formatKtDateTime, ToolsService } from '@/common'; -import type { QqbotIntegrationPlugin } from '../../qqbot.types'; +import type { QqbotIntegrationPlugin } from '@/qqbot/qqbot.types'; import { QqbotFf14ClientService } from './qqbot-ff14-client.service'; @Injectable() @@ -34,7 +34,8 @@ export class QqbotFf14MarketPluginService { }; } }, - key: 'ff14Market', + key: 'ff14-market', + legacyKeys: ['ff14Market'], name: 'FF14 市场价格', operations: [ { diff --git a/src/qqbot/plugins/ff14Market/qqbot-ff14-market.types.ts b/src/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.types.ts similarity index 100% rename from src/qqbot/plugins/ff14Market/qqbot-ff14-market.types.ts rename to src/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.types.ts diff --git a/src/qqbot/plugins/ff14Market/qqbot-ff14-worlds.ts b/src/modules/qqbot/plugins/ff14Market/qqbot-ff14-worlds.ts similarity index 98% rename from src/qqbot/plugins/ff14Market/qqbot-ff14-worlds.ts rename to src/modules/qqbot/plugins/ff14Market/qqbot-ff14-worlds.ts index 766f7a4..c0dcfd8 100644 --- a/src/qqbot/plugins/ff14Market/qqbot-ff14-worlds.ts +++ b/src/modules/qqbot/plugins/ff14Market/qqbot-ff14-worlds.ts @@ -1,7 +1,4 @@ -import type { - AdminDictItem, - AdminDictTreeItem, -} from '../../../admin/admin.types'; +import type { AdminDictItem, AdminDictTreeItem } from '@/admin/admin.types'; import type { QqbotFf14DataCenter, QqbotFf14MarketCatalog, diff --git a/src/modules/qqbot/plugins/fflogs/plugin.json b/src/modules/qqbot/plugins/fflogs/plugin.json new file mode 100644 index 0000000..8be601a --- /dev/null +++ b/src/modules/qqbot/plugins/fflogs/plugin.json @@ -0,0 +1,40 @@ +{ + "pluginKey": "fflogs", + "name": "FFLogs 查询", + "version": "1.0.0", + "minApiSdkVersion": "1.0.0", + "description": "对接 FFLogs v2 GraphQL,提供 FF14 角色公开排名和指定高难最近记录查询能力。", + "author": "KT", + "entry": "qqbot-fflogs.plugin.ts", + "permissions": ["runtime.http", "plugin.config.read"], + "runtime": { + "workerType": "node-worker", + "timeoutMs": 20000, + "memoryMb": 256, + "maxConcurrency": 2 + }, + "configSchema": { + "type": "object", + "properties": { + "baseUrl": { "type": "string" }, + "graphqlUrl": { "type": "string" }, + "tokenUrl": { "type": "string" }, + "clientIdRef": { "type": "string" }, + "clientSecretRef": { "type": "string" } + } + }, + "operations": [ + { + "key": "fflogs.character.summary", + "name": "角色排名摘要", + "handlerName": "getCharacterSummary", + "description": "查询指定角色的 FFLogs 公开排名摘要;传入 encounter/任务 后查询指定高难最近10次记录。", + "aliases": ["fflogs", "logs", "查logs", "查log"], + "permissions": ["runtime.http", "plugin.config.read"], + "timeoutMs": 20000 + } + ], + "events": [], + "assets": [], + "migrations": [] +} diff --git a/src/qqbot/plugins/fflogs/qqbot-fflogs-client.service.ts b/src/modules/qqbot/plugins/fflogs/qqbot-fflogs-client.service.ts similarity index 97% rename from src/qqbot/plugins/fflogs/qqbot-fflogs-client.service.ts rename to src/modules/qqbot/plugins/fflogs/qqbot-fflogs-client.service.ts index 73e11b7..1e558b2 100644 --- a/src/qqbot/plugins/fflogs/qqbot-fflogs-client.service.ts +++ b/src/modules/qqbot/plugins/fflogs/qqbot-fflogs-client.service.ts @@ -1,8 +1,7 @@ import { Injectable } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import * as http from 'node:http'; -import * as https from 'node:https'; -import { DictService } from '../../../admin/dict/dict.service'; +import { DictService } from '@/admin/dict/dict.service'; +import { QqbotPluginHttpClientService } from '@/modules/qqbot/plugin-platform/sdk'; import type { FflogsCharacterEncounterRankingsResponse, FflogsCharacterSummaryResponse, @@ -55,6 +54,7 @@ export class QqbotFflogsClientService { constructor( private readonly configService: ConfigService, private readonly dictService: DictService, + private readonly httpClient: QqbotPluginHttpClientService, ) { this.webBaseUrl = this.normalizeBaseUrl( this.configService.get('FFLOGS_WEB_BASE_URL') || @@ -709,44 +709,16 @@ export class QqbotFflogsClientService { method: FflogsHttpMethod, options: { body?: string; headers?: Record } = {}, ) { - return new Promise((resolve, reject) => { - const client = url.protocol === 'http:' ? http : https; - const request = client.request( - url, - { - headers: { - Accept: 'application/json', - 'User-Agent': 'kt-template-online-api/qqbot', - ...(options.headers || {}), - }, - method, - timeout: this.getTimeoutMs(), - }, - (response) => { - let body = ''; - response.setEncoding('utf8'); - response.on('data', (chunk) => { - body += chunk; - }); - response.on('end', () => { - if ((response.statusCode || 500) >= 400) { - reject(new Error(`FFLogs 请求失败:${response.statusCode}`)); - return; - } - try { - resolve(JSON.parse(body) as T); - } catch { - reject(new Error('FFLogs 返回不是合法 JSON')); - } - }); - }, - ); - request.on('timeout', () => { - request.destroy(new Error('FFLogs 请求超时')); - }); - request.on('error', reject); - if (options.body) request.write(options.body); - request.end(); + return this.httpClient.requestJson({ + body: options.body, + context: 'FFLogs', + failureMessage: (statusCode) => `FFLogs 请求失败:${statusCode}`, + headers: options.headers, + invalidJsonMessage: 'FFLogs 返回不是合法 JSON', + method, + timeoutMessage: 'FFLogs 请求超时', + timeoutMs: this.getTimeoutMs(), + url, }); } diff --git a/src/qqbot/plugins/fflogs/qqbot-fflogs.plugin.ts b/src/modules/qqbot/plugins/fflogs/qqbot-fflogs.plugin.ts similarity index 97% rename from src/qqbot/plugins/fflogs/qqbot-fflogs.plugin.ts rename to src/modules/qqbot/plugins/fflogs/qqbot-fflogs.plugin.ts index 5192520..cc30007 100644 --- a/src/qqbot/plugins/fflogs/qqbot-fflogs.plugin.ts +++ b/src/modules/qqbot/plugins/fflogs/qqbot-fflogs.plugin.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; import { formatKtDateTime, ToolsService } from '@/common'; -import type { QqbotIntegrationPlugin } from '../../qqbot.types'; +import type { QqbotIntegrationPlugin } from '@/qqbot/qqbot.types'; import { QqbotFflogsClientService } from './qqbot-fflogs-client.service'; @Injectable() diff --git a/src/qqbot/plugins/fflogs/qqbot-fflogs.types.ts b/src/modules/qqbot/plugins/fflogs/qqbot-fflogs.types.ts similarity index 100% rename from src/qqbot/plugins/fflogs/qqbot-fflogs.types.ts rename to src/modules/qqbot/plugins/fflogs/qqbot-fflogs.types.ts diff --git a/src/modules/qqbot/plugins/repeater/plugin.json b/src/modules/qqbot/plugins/repeater/plugin.json new file mode 100644 index 0000000..4033636 --- /dev/null +++ b/src/modules/qqbot/plugins/repeater/plugin.json @@ -0,0 +1,42 @@ +{ + "pluginKey": "repeater", + "name": "复读机", + "version": "1.0.0", + "minApiSdkVersion": "1.0.0", + "description": "监听同一会话内连续重复的普通文本消息,达到阈值后通过宿主发送队列复读一次。", + "author": "KT", + "entry": "qqbot-repeater.plugin.ts", + "permissions": [ + "qqbot.event.receive", + "qqbot.send", + "plugin.config.read", + "plugin.storage.read", + "plugin.storage.write" + ], + "runtime": { + "workerType": "node-worker", + "timeoutMs": 5000, + "memoryMb": 128, + "maxConcurrency": 1 + }, + "configSchema": { + "type": "object", + "properties": { + "threshold": { "type": "number" }, + "maxTextLength": { "type": "number" }, + "minIntervalMs": { "type": "number" } + } + }, + "operations": [], + "events": [ + { + "key": "repeater.message", + "name": "消息事件", + "eventName": "message", + "handlerName": "handleMessage", + "description": "同一会话连续重复普通文本达到阈值后复读。" + } + ], + "assets": [], + "migrations": [] +} diff --git a/src/qqbot/plugins/repeater/qqbot-repeater.plugin.ts b/src/modules/qqbot/plugins/repeater/qqbot-repeater.plugin.ts similarity index 97% rename from src/qqbot/plugins/repeater/qqbot-repeater.plugin.ts rename to src/modules/qqbot/plugins/repeater/qqbot-repeater.plugin.ts index 01a4471..e2a5d4b 100644 --- a/src/qqbot/plugins/repeater/qqbot-repeater.plugin.ts +++ b/src/modules/qqbot/plugins/repeater/qqbot-repeater.plugin.ts @@ -1,14 +1,14 @@ import { Injectable, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { ToolsService } from '@/common'; -import { QqbotAccountService } from '../../account/qqbot-account.service'; +import { QqbotAccountService } from '@/qqbot/account/qqbot-account.service'; import type { QqbotEventPluginDefinition, QqbotEventPluginSummary, QqbotNormalizedMessage, QqbotRepeaterConversationState, -} from '../../qqbot.types'; -import { QqbotSendService } from '../../send/qqbot-send.service'; +} from '@/qqbot/qqbot.types'; +import { QqbotSendService } from '@/qqbot/send/qqbot-send.service'; const QQBOT_REPEATER_VERSION = '1.0.0'; const QQBOT_REPEATER_PLUGIN_KEY = 'repeater'; diff --git a/src/qqbot/command/qqbot-command-parser.service.ts b/src/qqbot/command/qqbot-command-parser.service.ts index 50fd221..bfd5388 100644 --- a/src/qqbot/command/qqbot-command-parser.service.ts +++ b/src/qqbot/command/qqbot-command-parser.service.ts @@ -11,8 +11,8 @@ import { isQqbotFf14RegionName, isQqbotFf14WorldName, splitQqbotFf14WorldPath, -} from '../plugins/ff14Market/qqbot-ff14-worlds'; -import type { QqbotFf14MarketCatalog } from '../plugins/ff14Market/qqbot-ff14-market.types'; +} from '@/modules/qqbot/plugins/ff14Market/qqbot-ff14-worlds'; +import type { QqbotFf14MarketCatalog } from '@/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.types'; import type { QqbotCommandMatchResult } from '../qqbot.types'; @Injectable() diff --git a/src/qqbot/plugin/qqbot-event-plugin-registry.service.ts b/src/qqbot/plugin/qqbot-event-plugin-registry.service.ts index faa99a1..5ed28a1 100644 --- a/src/qqbot/plugin/qqbot-event-plugin-registry.service.ts +++ b/src/qqbot/plugin/qqbot-event-plugin-registry.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { formatKtDateTime, throwVbenError } from '@/common'; import { QqbotAccountService } from '../account/qqbot-account.service'; -import { QqbotRepeaterPluginService } from '../plugins/repeater/qqbot-repeater.plugin'; +import { QqbotRepeaterPluginService } from '@/modules/qqbot/plugins/repeater/qqbot-repeater.plugin'; import type { QqbotEventPluginDefinition, QqbotPluginHealth, diff --git a/src/qqbot/plugin/qqbot-plugin-registry.service.ts b/src/qqbot/plugin/qqbot-plugin-registry.service.ts index 1e34d90..f0c0823 100644 --- a/src/qqbot/plugin/qqbot-plugin-registry.service.ts +++ b/src/qqbot/plugin/qqbot-plugin-registry.service.ts @@ -1,8 +1,8 @@ import { Injectable, OnModuleInit } from '@nestjs/common'; import { formatKtDateTime, throwVbenError } from '@/common'; -import { QqbotBangDreamPluginService } from '../plugins/bangDream/qqbot-bangdream.plugin'; -import { QqbotFf14MarketPluginService } from '../plugins/ff14Market/qqbot-ff14-market.plugin'; -import { QqbotFflogsPluginService } from '../plugins/fflogs/qqbot-fflogs.plugin'; +import { QqbotBangDreamPluginService } from '@/modules/qqbot/plugins/bangDream/qqbot-bangdream.plugin'; +import { QqbotFf14MarketPluginService } from '@/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin'; +import { QqbotFflogsPluginService } from '@/modules/qqbot/plugins/fflogs/qqbot-fflogs.plugin'; import type { QqbotIntegrationPlugin, QqbotPluginHealth, @@ -13,6 +13,7 @@ import type { @Injectable() export class QqbotPluginRegistryService implements OnModuleInit { + private readonly pluginAliases = new Map(); private readonly plugins = new Map(); constructor( @@ -32,6 +33,13 @@ export class QqbotPluginRegistryService implements OnModuleInit { throwVbenError('QQBot 插件必须包含 key 和 operation'); } this.plugins.set(plugin.key, plugin); + for (const legacyKey of plugin.legacyKeys || []) { + if (!legacyKey || legacyKey === plugin.key) continue; + if (this.plugins.has(legacyKey) || this.pluginAliases.has(legacyKey)) { + throwVbenError(`QQBot 插件别名重复:${legacyKey}`); + } + this.pluginAliases.set(legacyKey, plugin.key); + } } listPlugins(): QqbotPluginSummary[] { @@ -102,7 +110,7 @@ export class QqbotPluginRegistryService implements OnModuleInit { } private getOperation(pluginKey: string, operationKey: string) { - const plugin = this.plugins.get(pluginKey); + const plugin = this.getPluginByKey(pluginKey); if (!plugin) throwVbenError(`QQBot 插件不存在:${pluginKey}`); const operation = plugin.operations.find( @@ -116,7 +124,14 @@ export class QqbotPluginRegistryService implements OnModuleInit { private getPlugins(pluginKey?: string) { if (!pluginKey) return [...this.plugins.values()]; - const plugin = this.plugins.get(pluginKey); + const plugin = this.getPluginByKey(pluginKey); return plugin ? [plugin] : []; } + + private getPluginByKey(pluginKey: string) { + return ( + this.plugins.get(pluginKey) || + this.plugins.get(this.pluginAliases.get(pluginKey) || '') + ); + } } diff --git a/src/qqbot/plugins/bangDream/shared/bangdream-constants.ts b/src/qqbot/plugins/bangDream/shared/bangdream-constants.ts deleted file mode 100644 index d127bd6..0000000 --- a/src/qqbot/plugins/bangDream/shared/bangdream-constants.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; -export * from '@/qqbot/plugins/bangDream/dictionary/default-dictionary'; -export * from '@/qqbot/plugins/bangDream/config/runtime-options'; diff --git a/src/qqbot/qqbot.types.ts b/src/qqbot/qqbot.types.ts index e62114c..c92cf21 100644 --- a/src/qqbot/qqbot.types.ts +++ b/src/qqbot/qqbot.types.ts @@ -160,6 +160,7 @@ export type QqbotIntegrationPlugin = { description?: string; healthCheck?: () => Promise; key: string; + legacyKeys?: string[]; name: string; operations: QqbotPluginOperation[]; version: string; diff --git a/src/qqbot/rule/qqbot-rule-engine.service.ts b/src/qqbot/rule/qqbot-rule-engine.service.ts index 83fb4d2..00bad89 100644 --- a/src/qqbot/rule/qqbot-rule-engine.service.ts +++ b/src/qqbot/rule/qqbot-rule-engine.service.ts @@ -3,7 +3,7 @@ import { ToolsService } from '@/common'; import type { QqbotNormalizedMessage } from '../qqbot.types'; import { QqbotCommandEngineService } from '../command/qqbot-command-engine.service'; import { QqbotPermissionService } from '../permission/qqbot-permission.service'; -import { QqbotRepeaterPluginService } from '../plugins/repeater/qqbot-repeater.plugin'; +import { QqbotRepeaterPluginService } from '@/modules/qqbot/plugins/repeater/qqbot-repeater.plugin'; import { QqbotSendService } from '../send/qqbot-send.service'; import { QqbotRuleService } from './qqbot-rule.service'; diff --git a/test/modules/qqbot/core/qqbot-core-module-contract.spec.ts b/test/modules/qqbot/core/qqbot-core-module-contract.spec.ts index b0eb096..4a2ba1e 100644 --- a/test/modules/qqbot/core/qqbot-core-module-contract.spec.ts +++ b/test/modules/qqbot/core/qqbot-core-module-contract.spec.ts @@ -17,39 +17,45 @@ jest.mock('../../../../src/qqbot/plugin/qqbot-plugin-registry.service', () => ({ QqbotPluginRegistryService: mockQqbotPluginRegistryService, })); jest.mock( - '@/qqbot/plugins/bangDream/application/bangdream-client.service', + '@/modules/qqbot/plugins/bangDream/application/bangdream-client.service', () => ({ QqbotBangDreamClientService: class QqbotBangDreamClientService {}, }), ); jest.mock( - '@/qqbot/plugins/bangDream/application/bangdream-renderer.facade', + '@/modules/qqbot/plugins/bangDream/application/bangdream-renderer.facade', () => ({ QqbotBangDreamRendererService: class QqbotBangDreamRendererService {}, }), ); jest.mock( - '@/qqbot/plugins/bangDream/application/bangdream-application.service', + '@/modules/qqbot/plugins/bangDream/application/bangdream-application.service', () => ({ TsuguApplicationService: class TsuguApplicationService {}, }), ); -jest.mock('@/qqbot/plugins/bangDream/qqbot-bangdream.plugin', () => ({ +jest.mock('@/modules/qqbot/plugins/bangDream/qqbot-bangdream.plugin', () => ({ QqbotBangDreamPluginService: class QqbotBangDreamPluginService {}, })); -jest.mock('@/qqbot/plugins/ff14Market/qqbot-ff14-client.service', () => ({ - QqbotFf14ClientService: class QqbotFf14ClientService {}, -})); -jest.mock('@/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin', () => ({ - QqbotFf14MarketPluginService: class QqbotFf14MarketPluginService {}, -})); -jest.mock('@/qqbot/plugins/fflogs/qqbot-fflogs-client.service', () => ({ +jest.mock( + '@/modules/qqbot/plugins/ff14Market/qqbot-ff14-client.service', + () => ({ + QqbotFf14ClientService: class QqbotFf14ClientService {}, + }), +); +jest.mock( + '@/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin', + () => ({ + QqbotFf14MarketPluginService: class QqbotFf14MarketPluginService {}, + }), +); +jest.mock('@/modules/qqbot/plugins/fflogs/qqbot-fflogs-client.service', () => ({ QqbotFflogsClientService: class QqbotFflogsClientService {}, })); -jest.mock('@/qqbot/plugins/fflogs/qqbot-fflogs.plugin', () => ({ +jest.mock('@/modules/qqbot/plugins/fflogs/qqbot-fflogs.plugin', () => ({ QqbotFflogsPluginService: class QqbotFflogsPluginService {}, })); -jest.mock('@/qqbot/plugins/repeater/qqbot-repeater.plugin', () => ({ +jest.mock('@/modules/qqbot/plugins/repeater/qqbot-repeater.plugin', () => ({ QqbotRepeaterPluginService: class QqbotRepeaterPluginService {}, })); @@ -219,6 +225,7 @@ describe('QQBot core module contract', () => { 'QqbotNapcatLoginService', 'QqbotNapcatWatchdogService', 'QqbotPermissionService', + 'QqbotPluginHttpClientService', 'QqbotPluginRegistryService', 'QqbotRateLimitService', 'QqbotReplyTemplateService', diff --git a/test/modules/qqbot/plugins/plugin-controller-http-smoke.spec.ts b/test/modules/qqbot/plugins/plugin-controller-http-smoke.spec.ts new file mode 100644 index 0000000..1476731 --- /dev/null +++ b/test/modules/qqbot/plugins/plugin-controller-http-smoke.spec.ts @@ -0,0 +1,118 @@ +jest.mock('@/admin/auth/jwt-auth.guard', () => ({ + JwtAuthGuard: class { + canActivate() { + return true; + } + }, +})); +jest.mock('@/modules/qqbot/plugins/bangDream/qqbot-bangdream.plugin', () => ({ + QqbotBangDreamPluginService: class {}, +})); +jest.mock( + '@/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin', + () => ({ + QqbotFf14MarketPluginService: class {}, + }), +); +jest.mock('@/modules/qqbot/plugins/fflogs/qqbot-fflogs.plugin', () => ({ + QqbotFflogsPluginService: class {}, +})); + +import type { INestApplication } from '@nestjs/common'; +import { Test } from '@nestjs/testing'; +import * as request from 'supertest'; +import { QqbotBangDreamPluginService } from '../../../../src/modules/qqbot/plugins/bangDream/qqbot-bangdream.plugin'; +import { QqbotFf14MarketPluginService } from '../../../../src/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin'; +import { QqbotFflogsPluginService } from '../../../../src/modules/qqbot/plugins/fflogs/qqbot-fflogs.plugin'; +import { QqbotEventPluginRegistryService } from '../../../../src/qqbot/plugin/qqbot-event-plugin-registry.service'; +import { QqbotPluginController } from '../../../../src/qqbot/plugin/qqbot-plugin.controller'; +import { QqbotPluginRegistryService } from '../../../../src/qqbot/plugin/qqbot-plugin-registry.service'; +import type { QqbotIntegrationPlugin } from '../../../../src/qqbot/qqbot.types'; + +const createPlugin = ( + key: string, + legacyKeys: string[] = [], +): QqbotIntegrationPlugin => ({ + key, + legacyKeys, + name: key, + operations: [ + { + execute: jest.fn(async () => ({ ok: true })), + key: `${key}.operation`, + name: `${key} operation`, + }, + ], + version: '1.0.0', +}); + +describe('QQBot plugin controller local HTTP smoke', () => { + let app: INestApplication; + + beforeAll(async () => { + const moduleRef = await Test.createTestingModule({ + controllers: [QqbotPluginController], + providers: [ + QqbotPluginRegistryService, + { + provide: QqbotBangDreamPluginService, + useValue: { + getPlugin: () => createPlugin('bangdream', ['bangDream']), + }, + }, + { + provide: QqbotFf14MarketPluginService, + useValue: { + getPlugin: () => createPlugin('ff14-market', ['ff14Market']), + }, + }, + { + provide: QqbotFflogsPluginService, + useValue: { + getPlugin: () => createPlugin('fflogs'), + }, + }, + { + provide: QqbotEventPluginRegistryService, + useValue: { + health: jest.fn(async () => []), + listDefinitions: jest.fn(() => []), + listOperations: jest.fn(() => []), + listPlugins: jest.fn(async () => []), + }, + }, + ], + }).compile(); + + app = moduleRef.createNestApplication(); + await app.init(); + }); + + afterAll(async () => { + await app.close(); + }); + + it('returns platform keys and resolves legacy plugin key through HTTP routes', async () => { + const listResponse = await request(app.getHttpServer()) + .get('/qqbot/plugin/list') + .query({ triggerMode: 'command' }) + .expect(200); + + expect(listResponse.body.data.map((plugin) => plugin.key)).toEqual([ + 'bangdream', + 'ff14-market', + 'fflogs', + ]); + + const operationResponse = await request(app.getHttpServer()) + .get('/qqbot/plugin/operation/list') + .query({ pluginKey: 'bangDream', triggerMode: 'command' }) + .expect(200); + + expect(operationResponse.body.data[0]).toMatchObject({ + key: 'bangdream.operation', + pluginKey: 'bangdream', + triggerMode: 'command', + }); + }); +}); diff --git a/test/modules/qqbot/plugins/plugin-platform-migration.spec.ts b/test/modules/qqbot/plugins/plugin-platform-migration.spec.ts new file mode 100644 index 0000000..7323b6a --- /dev/null +++ b/test/modules/qqbot/plugins/plugin-platform-migration.spec.ts @@ -0,0 +1,120 @@ +import { existsSync, readdirSync, readFileSync, statSync } from 'fs'; +import { join, relative } from 'path'; +import { parseQqbotPluginManifest } from '../../../../src/modules/qqbot/plugin-platform/manifest'; + +const repoRoot = join(__dirname, '../../../..'); +const pluginRoot = join(repoRoot, 'src/modules/qqbot/plugins'); +const legacyPluginRoot = join(repoRoot, 'src/qqbot/plugins'); + +const readJson = (filePath: string) => + JSON.parse(readFileSync(filePath, 'utf8')) as Record; + +const collectFiles = (root: string): string[] => { + if (!existsSync(root)) return []; + + return readdirSync(root).flatMap((name) => { + const filePath = join(root, name); + const stat = statSync(filePath); + if (stat.isDirectory()) return collectFiles(filePath); + return [filePath]; + }); +}; + +const importSource = (filePath: string) => readFileSync(filePath, 'utf8'); + +describe('QQBot existing plugin platform migration', () => { + it('moves all existing plugin packages under the module plugin platform root', () => { + expect( + readdirSync(pluginRoot) + .filter((name) => statSync(join(pluginRoot, name)).isDirectory()) + .sort(), + ).toEqual(['bangDream', 'ff14Market', 'fflogs', 'repeater']); + + const legacySources = collectFiles(legacyPluginRoot).filter((filePath) => + filePath.endsWith('.ts'), + ); + expect(legacySources).toEqual([]); + }); + + it('declares parseable platform manifests for every existing plugin', () => { + const manifests = ['bangDream', 'ff14Market', 'fflogs', 'repeater'].map( + (pluginName) => { + const root = join(pluginRoot, pluginName); + const manifest = parseQqbotPluginManifest( + readJson(join(root, 'plugin.json')), + { + pluginRoot: root, + }, + ); + return manifest; + }, + ); + + expect(manifests.map((manifest) => manifest.pluginKey).sort()).toEqual([ + 'bangdream', + 'ff14-market', + 'fflogs', + 'repeater', + ]); + expect( + manifests.every( + (manifest) => + manifest.permissions.length > 0 && + manifest.runtime.timeoutMs > 0 && + manifest.runtime.maxConcurrency > 0, + ), + ).toBe(true); + }); + + it('keeps BangDream manifest operations aligned with the registry metadata', async () => { + const { BANGDREAM_OPERATION_REGISTRY } = + await import('../../../../src/modules/qqbot/plugins/bangDream/registry/operation-registry'); + const manifest = parseQqbotPluginManifest( + readJson(join(pluginRoot, 'bangDream/plugin.json')), + { + pluginRoot: join(pluginRoot, 'bangDream'), + }, + ); + + expect(manifest.operations).toHaveLength( + BANGDREAM_OPERATION_REGISTRY.length, + ); + expect( + manifest.operations.map((operation) => ({ + aliases: operation.aliases, + handlerName: operation.handlerName, + key: operation.key, + name: operation.name, + })), + ).toEqual( + BANGDREAM_OPERATION_REGISTRY.map((operation) => ({ + aliases: [...operation.onlineCommand.aliases], + handlerName: operation.handlerName, + key: operation.key, + name: operation.name, + })), + ); + }); + + it('routes FF14 Market and FFLogs HTTP through the plugin platform SDK', () => { + const externalHttpSources = ['ff14Market', 'fflogs'].flatMap((pluginName) => + collectFiles(join(pluginRoot, pluginName)).filter((filePath) => + filePath.endsWith('.ts'), + ), + ); + + const directHttpImports = externalHttpSources + .map((filePath) => ({ + file: relative(repoRoot, filePath).replace(/\\/g, '/'), + source: importSource(filePath), + })) + .filter(({ source }) => + /from ['"]node:(?:http|https)['"]|from ['"](?:http|https)['"]|axios/.test( + source, + ), + ) + .map(({ file }) => file); + + expect(directHttpImports).toEqual([]); + }); +}); diff --git a/test/modules/qqbot/plugins/plugin-registry-compat.spec.ts b/test/modules/qqbot/plugins/plugin-registry-compat.spec.ts new file mode 100644 index 0000000..2016e1d --- /dev/null +++ b/test/modules/qqbot/plugins/plugin-registry-compat.spec.ts @@ -0,0 +1,69 @@ +jest.mock('@/modules/qqbot/plugins/bangDream/qqbot-bangdream.plugin', () => ({ + QqbotBangDreamPluginService: class {}, +})); +jest.mock( + '@/modules/qqbot/plugins/ff14Market/qqbot-ff14-market.plugin', + () => ({ + QqbotFf14MarketPluginService: class {}, + }), +); +jest.mock('@/modules/qqbot/plugins/fflogs/qqbot-fflogs.plugin', () => ({ + QqbotFflogsPluginService: class {}, +})); + +import { QqbotPluginRegistryService } from '../../../../src/qqbot/plugin/qqbot-plugin-registry.service'; +import type { QqbotIntegrationPlugin } from '../../../../src/qqbot/qqbot.types'; + +const asPluginService = (plugin: QqbotIntegrationPlugin) => + ({ + getPlugin: () => plugin, + }) as any; + +const createPlugin = ( + key: string, + legacyKeys: string[], +): QqbotIntegrationPlugin => ({ + key, + legacyKeys, + name: key, + operations: [ + { + execute: jest.fn(async () => ({ ok: true })), + key: `${key}.operation`, + name: 'Operation', + }, + ], + version: '1.0.0', +}); + +describe('QQBot plugin registry platform key compatibility', () => { + it('uses platform plugin keys as primary keys while resolving legacy command keys', async () => { + const bangdream = createPlugin('bangdream', ['bangDream']); + const ff14Market = createPlugin('ff14-market', ['ff14Market']); + const fflogs = createPlugin('fflogs', []); + const registry = new QqbotPluginRegistryService( + asPluginService(bangdream), + asPluginService(ff14Market), + asPluginService(fflogs), + ); + + registry.onModuleInit(); + + expect(registry.listPlugins().map((plugin) => plugin.key)).toEqual([ + 'bangdream', + 'ff14-market', + 'fflogs', + ]); + expect(registry.listOperations('bangDream')[0].pluginKey).toBe('bangdream'); + expect(registry.listOperations('ff14Market')[0].pluginKey).toBe( + 'ff14-market', + ); + + await expect( + registry.execute('bangDream', 'bangdream.operation', {}), + ).resolves.toEqual({ ok: true }); + await expect( + registry.execute('ff14Market', 'ff14-market.operation', {}), + ).resolves.toEqual({ ok: true }); + }); +}); diff --git a/test/qqbot/plugins/bangDream/application/bangdream-application.service.spec.ts b/test/qqbot/plugins/bangDream/application/bangdream-application.service.spec.ts index 3db23ff..97d455b 100644 --- a/test/qqbot/plugins/bangDream/application/bangdream-application.service.spec.ts +++ b/test/qqbot/plugins/bangDream/application/bangdream-application.service.spec.ts @@ -1,20 +1,20 @@ jest.mock( - '@/qqbot/plugins/bangDream/application/bangdream-renderer.facade', + '@/modules/qqbot/plugins/bangDream/application/bangdream-renderer.facade', () => ({ QqbotBangDreamRendererService: class QqbotBangDreamRendererService {}, }), ); -jest.mock('@/qqbot/plugins/bangDream/shared/main-data-store', () => ({ +jest.mock('@/modules/qqbot/plugins/bangDream/shared/main-data-store', () => ({ __esModule: true, default: {}, waitForMainDataReady: jest.fn().mockResolvedValue(undefined), })); import { ToolsService } from '@/common'; -import { TsuguApplicationService } from '@/qqbot/plugins/bangDream/application/bangdream-application.service'; -import { waitForMainDataReady } from '@/qqbot/plugins/bangDream/shared/main-data-store'; -import type { QqbotBangDreamRendererService } from '@/qqbot/plugins/bangDream/application/bangdream-renderer.facade'; +import { TsuguApplicationService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-application.service'; +import { waitForMainDataReady } from '@/modules/qqbot/plugins/bangDream/shared/main-data-store'; +import type { QqbotBangDreamRendererService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-renderer.facade'; describe('TsuguApplicationService', () => { let rendererService: jest.Mocked; diff --git a/test/qqbot/plugins/bangDream/application/bangdream-client.service.spec.ts b/test/qqbot/plugins/bangDream/application/bangdream-client.service.spec.ts index 086d66c..27f7aea 100644 --- a/test/qqbot/plugins/bangDream/application/bangdream-client.service.spec.ts +++ b/test/qqbot/plugins/bangDream/application/bangdream-client.service.spec.ts @@ -1,12 +1,12 @@ jest.mock( - '@/qqbot/plugins/bangDream/application/bangdream-application.service', + '@/modules/qqbot/plugins/bangDream/application/bangdream-application.service', () => ({ TsuguApplicationService: class TsuguApplicationService {}, }), ); -import { QqbotBangDreamClientService } from '@/qqbot/plugins/bangDream/application/bangdream-client.service'; -import type { TsuguApplicationService } from '@/qqbot/plugins/bangDream/application/bangdream-application.service'; +import { QqbotBangDreamClientService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-client.service'; +import type { TsuguApplicationService } from '@/modules/qqbot/plugins/bangDream/application/bangdream-application.service'; describe('QqbotBangDreamClientService', () => { let service: QqbotBangDreamClientService; diff --git a/test/qqbot/plugins/bangDream/application/operation-pipeline.spec.ts b/test/qqbot/plugins/bangDream/application/operation-pipeline.spec.ts index ebbf33a..c6e9ef9 100644 --- a/test/qqbot/plugins/bangDream/application/operation-pipeline.spec.ts +++ b/test/qqbot/plugins/bangDream/application/operation-pipeline.spec.ts @@ -1,6 +1,6 @@ -import { TsuguHookRegistry } from '@/qqbot/plugins/bangDream/hook/hook-registry'; -import { TsuguOperationPipeline } from '@/qqbot/plugins/bangDream/application/operation-pipeline'; -import type { TsuguOperationDefinition } from '@/qqbot/plugins/bangDream/registry/operation-registry'; +import { TsuguHookRegistry } from '@/modules/qqbot/plugins/bangDream/hook/hook-registry'; +import { TsuguOperationPipeline } from '@/modules/qqbot/plugins/bangDream/application/operation-pipeline'; +import type { TsuguOperationDefinition } from '@/modules/qqbot/plugins/bangDream/registry/operation-registry'; const songSearchOperation: TsuguOperationDefinition = { description: '查询歌曲', diff --git a/test/qqbot/plugins/bangDream/card/card-art.layout.spec.ts b/test/qqbot/plugins/bangDream/card/card-art.layout.spec.ts index 20c1481..63ea6cc 100644 --- a/test/qqbot/plugins/bangDream/card/card-art.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/card/card-art.layout.spec.ts @@ -2,7 +2,7 @@ import { BANGDREAM_CARD_ART_SPEC, createCardIconFramePath, createCardIllustrationFramePath, -} from '@/qqbot/plugins/bangDream/card/card-art.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-art.layout'; describe('BangDream card art spec', () => { it('creates icon frame paths with Bestdori rarity rules', () => { diff --git a/test/qqbot/plugins/bangDream/card/card-art.repository.spec.ts b/test/qqbot/plugins/bangDream/card/card-art.repository.spec.ts index bfa2028..a704de0 100644 --- a/test/qqbot/plugins/bangDream/card/card-art.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/card/card-art.repository.spec.ts @@ -1,5 +1,5 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { CardArtResourceRepository } from '@/qqbot/plugins/bangDream/card/card-art.repository'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { CardArtResourceRepository } from '@/modules/qqbot/plugins/bangDream/card/card-art.repository'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/card/card-icon.layout.spec.ts b/test/qqbot/plugins/bangDream/card/card-icon.layout.spec.ts index 6a389a2..c7f5a07 100644 --- a/test/qqbot/plugins/bangDream/card/card-icon.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/card/card-icon.layout.spec.ts @@ -1,11 +1,11 @@ -import { BangDreamCardType } from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; +import { BangDreamCardType } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; import { BANGDREAM_CARD_ICON_LIST_SPEC, compareCardIconListCards, getCardIconListSpacing, getCardIconListTextSize, sortCardIconListCards, -} from '@/qqbot/plugins/bangDream/card/card-icon.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-icon.layout'; describe('BangDream card icon list spec', () => { it('keeps card icon list text and spacing ratios stable', () => { diff --git a/test/qqbot/plugins/bangDream/card/card-prefix.layout.spec.ts b/test/qqbot/plugins/bangDream/card/card-prefix.layout.spec.ts index 609aee4..6a67925 100644 --- a/test/qqbot/plugins/bangDream/card/card-prefix.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/card/card-prefix.layout.spec.ts @@ -1,8 +1,8 @@ import { BANGDREAM_CARD_PREFIX_SPEC, getCardPrefixBandLogoLayout, -} from '@/qqbot/plugins/bangDream/card/card-prefix.layout'; -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +} from '@/modules/qqbot/plugins/bangDream/card/card-prefix.layout'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; describe('BangDream card prefix spec', () => { it('keeps the card prefix canvas and background stable', () => { diff --git a/test/qqbot/plugins/bangDream/card/card-rarity.layout.spec.ts b/test/qqbot/plugins/bangDream/card/card-rarity.layout.spec.ts index bec4d73..774dd22 100644 --- a/test/qqbot/plugins/bangDream/card/card-rarity.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/card/card-rarity.layout.spec.ts @@ -1,7 +1,7 @@ import { BANGDREAM_RARITY_LIST_SPEC, shouldUseTrainedRarityStar, -} from '@/qqbot/plugins/bangDream/card/card-rarity.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-rarity.layout'; describe('BangDream rarity list spec', () => { it('keeps the historical rarity list text size and spacing stable', () => { diff --git a/test/qqbot/plugins/bangDream/card/card-resource.repository.spec.ts b/test/qqbot/plugins/bangDream/card/card-resource.repository.spec.ts index 74af56f..5fbfa0e 100644 --- a/test/qqbot/plugins/bangDream/card/card-resource.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/card/card-resource.repository.spec.ts @@ -1,9 +1,9 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; import { CardResourceRepository, type CardResourceSource, -} from '@/qqbot/plugins/bangDream/card/card-resource.repository'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +} from '@/modules/qqbot/plugins/bangDream/card/card-resource.repository'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/card/card-sd-character.layout.spec.ts b/test/qqbot/plugins/bangDream/card/card-sd-character.layout.spec.ts index 61d6c0e..a68c09c 100644 --- a/test/qqbot/plugins/bangDream/card/card-sd-character.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/card/card-sd-character.layout.spec.ts @@ -4,7 +4,7 @@ import { getCardSdCharacterCropRects, getCardSdCharacterListLineHeight, getCardSdCharacterListTextSize, -} from '@/qqbot/plugins/bangDream/card/card-sd-character.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-sd-character.layout'; describe('BangDream card SD character list spec', () => { it('keeps the historical four-frame SD character crop grid', () => { diff --git a/test/qqbot/plugins/bangDream/card/card-skill-text.layout.spec.ts b/test/qqbot/plugins/bangDream/card/card-skill-text.layout.spec.ts index e8a1206..5c5ad16 100644 --- a/test/qqbot/plugins/bangDream/card/card-skill-text.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/card/card-skill-text.layout.spec.ts @@ -2,7 +2,7 @@ import { BANGDREAM_SKILL_TEXT_SPEC, createSkillTextFragments, getSkillScoreSuffix, -} from '@/qqbot/plugins/bangDream/card/card-skill-text.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-skill-text.layout'; describe('BangDream skill text spec', () => { it('keeps the historical card skill text layout stable', () => { diff --git a/test/qqbot/plugins/bangDream/card/card-stat.layout.spec.ts b/test/qqbot/plugins/bangDream/card/card-stat.layout.spec.ts index 3fa64b0..64fa337 100644 --- a/test/qqbot/plugins/bangDream/card/card-stat.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/card/card-stat.layout.spec.ts @@ -3,7 +3,7 @@ import { createStatLineText, getStatLineBarLayout, getStatLineBarWidth, -} from '@/qqbot/plugins/bangDream/card/card-stat.layout'; +} from '@/modules/qqbot/plugins/bangDream/card/card-stat.layout'; describe('BangDream stat list spec', () => { it('keeps the historical stat list spacer stable', () => { diff --git a/test/qqbot/plugins/bangDream/catalog/attribute-resource.repository.spec.ts b/test/qqbot/plugins/bangDream/catalog/attribute-resource.repository.spec.ts index e6b0b55..c9f9390 100644 --- a/test/qqbot/plugins/bangDream/catalog/attribute-resource.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/catalog/attribute-resource.repository.spec.ts @@ -1,5 +1,5 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { AttributeResourceRepository } from '@/qqbot/plugins/bangDream/catalog/attribute-resource.repository'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { AttributeResourceRepository } from '@/modules/qqbot/plugins/bangDream/catalog/attribute-resource.repository'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/catalog/band-resource.repository.spec.ts b/test/qqbot/plugins/bangDream/catalog/band-resource.repository.spec.ts index b28680a..aa2f0d7 100644 --- a/test/qqbot/plugins/bangDream/catalog/band-resource.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/catalog/band-resource.repository.spec.ts @@ -1,5 +1,5 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { BandResourceRepository } from '@/qqbot/plugins/bangDream/catalog/band-resource.repository'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { BandResourceRepository } from '@/modules/qqbot/plugins/bangDream/catalog/band-resource.repository'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/catalog/costume-resource.repository.spec.ts b/test/qqbot/plugins/bangDream/catalog/costume-resource.repository.spec.ts index 81fe998..bc3ac26 100644 --- a/test/qqbot/plugins/bangDream/catalog/costume-resource.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/catalog/costume-resource.repository.spec.ts @@ -1,6 +1,6 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { CostumeResourceRepository } from '@/qqbot/plugins/bangDream/catalog/costume-resource.repository'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { CostumeResourceRepository } from '@/modules/qqbot/plugins/bangDream/catalog/costume-resource.repository'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/catalog/degree-list.layout.spec.ts b/test/qqbot/plugins/bangDream/catalog/degree-list.layout.spec.ts index 07b1bd7..1ece777 100644 --- a/test/qqbot/plugins/bangDream/catalog/degree-list.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/catalog/degree-list.layout.spec.ts @@ -5,7 +5,7 @@ import { shouldDrawDegreeDecorations, shouldDrawDegreeIcon, shouldStopAfterFirstMusicRewardGroup, -} from '@/qqbot/plugins/bangDream/catalog/degree-list.layout'; +} from '@/modules/qqbot/plugins/bangDream/catalog/degree-list.layout'; describe('BangDream degree list spec', () => { it('keeps badge and list sizes stable', () => { diff --git a/test/qqbot/plugins/bangDream/catalog/degree-resource.repository.spec.ts b/test/qqbot/plugins/bangDream/catalog/degree-resource.repository.spec.ts index 385d895..def0bac 100644 --- a/test/qqbot/plugins/bangDream/catalog/degree-resource.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/catalog/degree-resource.repository.spec.ts @@ -1,6 +1,6 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { DegreeResourceRepository } from '@/qqbot/plugins/bangDream/catalog/degree-resource.repository'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { DegreeResourceRepository } from '@/modules/qqbot/plugins/bangDream/catalog/degree-resource.repository'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; function createProviderMock(): jest.Mocked { return { @@ -40,7 +40,9 @@ describe('BangDream degree resource repository', () => { expect( repository.getAnimatedTexturePath('ani_degree_bilibili_day1', Server.cn), - ).toBe('/assets/cn/ani_degree_bilibili_day1_rip/ani_degree_bilibili_day1.png'); + ).toBe( + '/assets/cn/ani_degree_bilibili_day1_rip/ani_degree_bilibili_day1.png', + ); expect( repository.getAnimatedTexturePath('ani_degree_election_5th', Server.cn), ).toBe( @@ -85,9 +87,9 @@ describe('BangDream degree resource repository', () => { .mockResolvedValueOnce(textureBuffer); const repository = new DegreeResourceRepository(provider); - await expect(repository.getFrameBuffer('normal_1', Server.cn)).resolves.toBe( - frameBuffer, - ); + await expect( + repository.getFrameBuffer('normal_1', Server.cn), + ).resolves.toBe(frameBuffer); await expect(repository.getIconBuffer('event_1', Server.cn)).resolves.toBe( iconBuffer, ); diff --git a/test/qqbot/plugins/bangDream/catalog/item-resource.repository.spec.ts b/test/qqbot/plugins/bangDream/catalog/item-resource.repository.spec.ts index 5c964fc..018eee6 100644 --- a/test/qqbot/plugins/bangDream/catalog/item-resource.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/catalog/item-resource.repository.spec.ts @@ -1,9 +1,9 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; import { ItemResourceRepository, type ItemResourceSource, -} from '@/qqbot/plugins/bangDream/catalog/item-resource.repository'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +} from '@/modules/qqbot/plugins/bangDream/catalog/item-resource.repository'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; function createProviderMock(): jest.Mocked { return { @@ -36,7 +36,10 @@ describe('BangDream item resource repository', () => { ), ).toBe('/assets/cn/thumb/material_rip/material003.png'); expect( - repository.getImagePath(createItemSource({ typeName: 'star' }), Server.jp), + repository.getImagePath( + createItemSource({ typeName: 'star' }), + Server.jp, + ), ).toBe('/assets/jp/thumb/common_rip/star.png'); expect(repository.getImagePath(createItemSource(), Server.cn)).toBe( '/assets/cn/thumb/common_rip/gacha_ticket_7.png', diff --git a/test/qqbot/plugins/bangDream/catalog/server-resource.repository.spec.ts b/test/qqbot/plugins/bangDream/catalog/server-resource.repository.spec.ts index 0cab676..78e4f0f 100644 --- a/test/qqbot/plugins/bangDream/catalog/server-resource.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/catalog/server-resource.repository.spec.ts @@ -1,5 +1,5 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { ServerResourceRepository } from '@/qqbot/plugins/bangDream/catalog/server-resource.repository'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { ServerResourceRepository } from '@/modules/qqbot/plugins/bangDream/catalog/server-resource.repository'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/character/character-resource.repository.spec.ts b/test/qqbot/plugins/bangDream/character/character-resource.repository.spec.ts index 4d661b2..9dc9279 100644 --- a/test/qqbot/plugins/bangDream/character/character-resource.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/character/character-resource.repository.spec.ts @@ -1,5 +1,5 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { CharacterResourceRepository } from '@/qqbot/plugins/bangDream/character/character-resource.repository'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { CharacterResourceRepository } from '@/modules/qqbot/plugins/bangDream/character/character-resource.repository'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/cutoff/chart.layout.spec.ts b/test/qqbot/plugins/bangDream/cutoff/chart.layout.spec.ts index 23373e2..cd8bee3 100644 --- a/test/qqbot/plugins/bangDream/cutoff/chart.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/cutoff/chart.layout.spec.ts @@ -1,12 +1,12 @@ import { BANGDREAM_CUTOFF_CHART_SPEC, stripCutoffChartLabelTags, -} from '@/qqbot/plugins/bangDream/cutoff/cutoff-chart.layout'; +} from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-chart.layout'; import { BANGDREAM_TIMELINE_CHART_SPEC, getTimelineDisplayYMax, getTimelineRawYMax, -} from '@/qqbot/plugins/bangDream/cutoff/timeline-chart.layout'; +} from '@/modules/qqbot/plugins/bangDream/cutoff/timeline-chart.layout'; describe('BangDream chart specs', () => { it('keeps timeline chart dimensions and y-axis padding stable', () => { @@ -16,7 +16,12 @@ describe('BangDream chart specs', () => { }); expect( getTimelineRawYMax([ - { data: [{ x: 0, y: 100 }, { x: 1, y: 300 }] }, + { + data: [ + { x: 0, y: 100 }, + { x: 1, y: 300 }, + ], + }, { data: [{ x: 0, y: 200 }] }, ]), ).toBe(300); diff --git a/test/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository.spec.ts b/test/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository.spec.ts index 49a09a4..35b1b4f 100644 --- a/test/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository.spec.ts @@ -1,6 +1,6 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { CutoffEventTopRepository } from '@/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { CutoffEventTopRepository } from '@/modules/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/dictionary/dictionary-loader.spec.ts b/test/qqbot/plugins/bangDream/dictionary/dictionary-loader.spec.ts index e0a4375..ec1dbcb 100644 --- a/test/qqbot/plugins/bangDream/dictionary/dictionary-loader.spec.ts +++ b/test/qqbot/plugins/bangDream/dictionary/dictionary-loader.spec.ts @@ -1,13 +1,13 @@ import { BangDreamDictionaryLoader, normalizeDictionaryLookupKey, -} from '@/qqbot/plugins/bangDream/dictionary/dictionary-loader'; -import { BANGDREAM_DICTIONARY_CODES } from '@/qqbot/plugins/bangDream/dictionary/default-dictionary'; +} from '@/modules/qqbot/plugins/bangDream/dictionary/dictionary-loader'; +import { BANGDREAM_DICTIONARY_CODES } from '@/modules/qqbot/plugins/bangDream/dictionary/default-dictionary'; import { normalizeBangDreamBoolean, splitBangDreamOptionList, -} from '@/qqbot/plugins/bangDream/config/runtime-options'; -import { BangDreamDifficultyId } from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; +} from '@/modules/qqbot/plugins/bangDream/config/runtime-options'; +import { BangDreamDifficultyId } from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; describe('BangDreamDictionaryLoader', () => { it('resolves server and difficulty from default dictionary without DB', () => { @@ -58,9 +58,7 @@ describe('BangDreamDictionaryLoader', () => { }); expect(loader.resolveServer('台服')).toBe(2); - expect(loader.resolveDifficulty('普通')).toBe( - BangDreamDifficultyId.normal, - ); + expect(loader.resolveDifficulty('普通')).toBe(BangDreamDifficultyId.normal); }); }); diff --git a/test/qqbot/plugins/bangDream/event/event-data.repository.spec.ts b/test/qqbot/plugins/bangDream/event/event-data.repository.spec.ts index 28eef11..a280492 100644 --- a/test/qqbot/plugins/bangDream/event/event-data.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/event/event-data.repository.spec.ts @@ -1,9 +1,9 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; import { EventDataRepository, type EventAssetContext, -} from '@/qqbot/plugins/bangDream/event/event-data.repository'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +} from '@/modules/qqbot/plugins/bangDream/event/event-data.repository'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/event/event-stage-data.repository.spec.ts b/test/qqbot/plugins/bangDream/event/event-stage-data.repository.spec.ts index ee397a7..f9177a3 100644 --- a/test/qqbot/plugins/bangDream/event/event-stage-data.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/event/event-stage-data.repository.spec.ts @@ -1,5 +1,5 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { EventStageDataRepository } from '@/qqbot/plugins/bangDream/event/event-stage-data.repository'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { EventStageDataRepository } from '@/modules/qqbot/plugins/bangDream/event/event-stage-data.repository'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/event/event-stage.layout.spec.ts b/test/qqbot/plugins/bangDream/event/event-stage.layout.spec.ts index dfbf8ea..095637e 100644 --- a/test/qqbot/plugins/bangDream/event/event-stage.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/event/event-stage.layout.spec.ts @@ -7,7 +7,7 @@ import { getEventStageStageBatchSize, shouldStartNewEventStageColumn, splitEventStageImagesByColumnHeight, -} from '@/qqbot/plugins/bangDream/event/event-stage.layout'; +} from '@/modules/qqbot/plugins/bangDream/event/event-stage.layout'; describe('BangDream event stage spec', () => { it('keeps song row dimensions compatible with existing layout', () => { diff --git a/test/qqbot/plugins/bangDream/event/event-time.layout.spec.ts b/test/qqbot/plugins/bangDream/event/event-time.layout.spec.ts index 7a11bfc..2c2db31 100644 --- a/test/qqbot/plugins/bangDream/event/event-time.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/event/event-time.layout.spec.ts @@ -5,7 +5,7 @@ import { formatBangDreamPeriod, formatBangDreamSeconds, formatBangDreamTime, -} from '@/qqbot/plugins/bangDream/event/event-time.layout'; +} from '@/modules/qqbot/plugins/bangDream/event/event-time.layout'; describe('BangDream time format spec', () => { it('keeps common labels and offsets stable', () => { diff --git a/test/qqbot/plugins/bangDream/gacha/gacha-list.layout.spec.ts b/test/qqbot/plugins/bangDream/gacha/gacha-list.layout.spec.ts index aa3bef9..98a6920 100644 --- a/test/qqbot/plugins/bangDream/gacha/gacha-list.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/gacha/gacha-list.layout.spec.ts @@ -1,7 +1,7 @@ import { BANGDREAM_GACHA_LIST_SPEC, getGachaPaymentBehaviorLabel, -} from '@/qqbot/plugins/bangDream/gacha/gacha-list.layout'; +} from '@/modules/qqbot/plugins/bangDream/gacha/gacha-list.layout'; describe('BangDream gacha list spec', () => { it('keeps gacha list labels stable', () => { diff --git a/test/qqbot/plugins/bangDream/gacha/gacha-resource.repository.spec.ts b/test/qqbot/plugins/bangDream/gacha/gacha-resource.repository.spec.ts index 6f1ad00..392f2ef 100644 --- a/test/qqbot/plugins/bangDream/gacha/gacha-resource.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/gacha/gacha-resource.repository.spec.ts @@ -1,9 +1,9 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; import { GachaResourceRepository, type GachaResourceSource, -} from '@/qqbot/plugins/bangDream/gacha/gacha-resource.repository'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +} from '@/modules/qqbot/plugins/bangDream/gacha/gacha-resource.repository'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/gacha/gacha-simulate.layout.spec.ts b/test/qqbot/plugins/bangDream/gacha/gacha-simulate.layout.spec.ts index 45a96a4..1c756ca 100644 --- a/test/qqbot/plugins/bangDream/gacha/gacha-simulate.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/gacha/gacha-simulate.layout.spec.ts @@ -7,7 +7,7 @@ import { getGachaDuplicateIconRect, getGachaDuplicateLayerCount, getGachaSimulateGridMaxWidth, -} from '@/qqbot/plugins/bangDream/gacha/gacha-simulate.layout'; +} from '@/modules/qqbot/plugins/bangDream/gacha/gacha-simulate.layout'; describe('BangDream gacha simulate spec', () => { it('keeps grid widths and wrap modes stable', () => { diff --git a/test/qqbot/plugins/bangDream/hook/hook-registry.spec.ts b/test/qqbot/plugins/bangDream/hook/hook-registry.spec.ts index c5120b5..c6a79a4 100644 --- a/test/qqbot/plugins/bangDream/hook/hook-registry.spec.ts +++ b/test/qqbot/plugins/bangDream/hook/hook-registry.spec.ts @@ -1,7 +1,7 @@ import { createTsuguHookContext, TsuguHookRegistry, -} from '@/qqbot/plugins/bangDream/hook/hook-registry'; +} from '@/modules/qqbot/plugins/bangDream/hook/hook-registry'; describe('BangDream Tsugu hook registry', () => { it('emits simple lifecycle hooks by configured order', async () => { diff --git a/test/qqbot/plugins/bangDream/player/deck-rank.repository.spec.ts b/test/qqbot/plugins/bangDream/player/deck-rank.repository.spec.ts index d5b4303..7b887ce 100644 --- a/test/qqbot/plugins/bangDream/player/deck-rank.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/player/deck-rank.repository.spec.ts @@ -2,8 +2,8 @@ import { mkdtempSync, rmSync, writeFileSync } from 'node:fs'; import { tmpdir } from 'node:os'; import * as path from 'node:path'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { DeckRankResourceRepository } from '@/qqbot/plugins/bangDream/player/deck-rank.repository'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { DeckRankResourceRepository } from '@/modules/qqbot/plugins/bangDream/player/deck-rank.repository'; function createProviderMock(): jest.Mocked { return { @@ -36,10 +36,7 @@ describe('BangDream deck rank resource repository', () => { const localImagePath = path.join(localRootPath, 'rank_1.png'); const localBuffer = Buffer.from('local-rank'); writeFileSync(localImagePath, localBuffer); - const repository = new DeckRankResourceRepository( - provider, - localRootPath, - ); + const repository = new DeckRankResourceRepository(provider, localRootPath); try { await expect(repository.getRankImageBuffer('rank_1')).resolves.toEqual( diff --git a/test/qqbot/plugins/bangDream/player/player-band-detail.layout.spec.ts b/test/qqbot/plugins/bangDream/player/player-band-detail.layout.spec.ts index f0d6729..3ce52df 100644 --- a/test/qqbot/plugins/bangDream/player/player-band-detail.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/player/player-band-detail.layout.spec.ts @@ -8,7 +8,7 @@ import { createDeckRankImageLayout, createDeckRankLevelImageSpec, normalizeDeckRankLevelSpriteRankId, -} from '@/qqbot/plugins/bangDream/player/player-band-detail.layout'; +} from '@/modules/qqbot/plugins/bangDream/player/player-band-detail.layout'; describe('BangDream band detail list spec', () => { it('keeps band detail item constants stable', () => { diff --git a/test/qqbot/plugins/bangDream/player/player-card-icon.layout.spec.ts b/test/qqbot/plugins/bangDream/player/player-card-icon.layout.spec.ts index d65c463..736eada 100644 --- a/test/qqbot/plugins/bangDream/player/player-card-icon.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/player/player-card-icon.layout.spec.ts @@ -3,7 +3,7 @@ import { getPlayerCardIconListSpacing, getPlayerCardIconListTextSize, sortPlayerMainDeckEntries, -} from '@/qqbot/plugins/bangDream/player/player-card-icon.layout'; +} from '@/modules/qqbot/plugins/bangDream/player/player-card-icon.layout'; describe('BangDream player card icon list spec', () => { it('keeps player card list text and spacing ratios stable', () => { @@ -26,10 +26,6 @@ describe('BangDream player card icon list spec', () => { }); it('skips missing deck entries without changing the remaining order', () => { - expect(sortPlayerMainDeckEntries(['0', '1', '2'])).toEqual([ - '1', - '0', - '2', - ]); + expect(sortPlayerMainDeckEntries(['0', '1', '2'])).toEqual(['1', '0', '2']); }); }); diff --git a/test/qqbot/plugins/bangDream/player/player-character-detail.layout.spec.ts b/test/qqbot/plugins/bangDream/player/player-character-detail.layout.spec.ts index d3d2444..b21442f 100644 --- a/test/qqbot/plugins/bangDream/player/player-character-detail.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/player/player-character-detail.layout.spec.ts @@ -4,7 +4,7 @@ import { createCharacterDetailItemLayout, createCharacterDetailListFrameSpec, createCharacterDetailTextSpec, -} from '@/qqbot/plugins/bangDream/player/player-character-detail.layout'; +} from '@/modules/qqbot/plugins/bangDream/player/player-character-detail.layout'; describe('BangDream character detail list spec', () => { it('keeps character detail item constants stable', () => { diff --git a/test/qqbot/plugins/bangDream/player/player-data.repository.spec.ts b/test/qqbot/plugins/bangDream/player/player-data.repository.spec.ts index af218d4..df35927 100644 --- a/test/qqbot/plugins/bangDream/player/player-data.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/player/player-data.repository.spec.ts @@ -1,6 +1,6 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { PlayerDataRepository } from '@/qqbot/plugins/bangDream/player/player-data.repository'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { PlayerDataRepository } from '@/modules/qqbot/plugins/bangDream/player/player-data.repository'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/player/player-difficulty-detail.layout.spec.ts b/test/qqbot/plugins/bangDream/player/player-difficulty-detail.layout.spec.ts index 48fa0b3..b67c110 100644 --- a/test/qqbot/plugins/bangDream/player/player-difficulty-detail.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/player/player-difficulty-detail.layout.spec.ts @@ -4,7 +4,7 @@ import { createDifficultyDetailItemLayout, createDifficultyDetailListFrameSpec, createDifficultyDetailTextSpec, -} from '@/qqbot/plugins/bangDream/player/player-difficulty-detail.layout'; +} from '@/modules/qqbot/plugins/bangDream/player/player-difficulty-detail.layout'; describe('BangDream difficulty detail list spec', () => { it('keeps difficulty detail item constants stable', () => { @@ -37,23 +37,25 @@ describe('BangDream difficulty detail list spec', () => { }); it('keeps item layout offsets stable', () => { - expect(createDifficultyDetailItemLayout({ height: 72, width: 88 })).toEqual({ - badgeX: 6, - badgeY: 0, - canvasHeight: 122, - canvasWidth: 152, - textX: 32, - textY: 50, - }); - }); - - it('keeps list frame values derived from the first item', () => { - expect(createDifficultyDetailListFrameSpec({ height: 122, width: 152 })).toEqual( + expect(createDifficultyDetailItemLayout({ height: 72, width: 88 })).toEqual( { - lineHeight: 122, - spacing: 0, - textSize: 122, + badgeX: 6, + badgeY: 0, + canvasHeight: 122, + canvasWidth: 152, + textX: 32, + textY: 50, }, ); }); + + it('keeps list frame values derived from the first item', () => { + expect( + createDifficultyDetailListFrameSpec({ height: 122, width: 152 }), + ).toEqual({ + lineHeight: 122, + spacing: 0, + textSize: 122, + }); + }); }); diff --git a/test/qqbot/plugins/bangDream/player/player-ranking.layout.spec.ts b/test/qqbot/plugins/bangDream/player/player-ranking.layout.spec.ts index 4186f37..c169526 100644 --- a/test/qqbot/plugins/bangDream/player/player-ranking.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/player/player-ranking.layout.spec.ts @@ -3,7 +3,7 @@ import { createRankingDegreeLayout, isMedalRanking, stripPlayerRankingTextTags, -} from '@/qqbot/plugins/bangDream/player/player-ranking.layout'; +} from '@/modules/qqbot/plugins/bangDream/player/player-ranking.layout'; describe('BangDream player ranking spec', () => { it('keeps the historical ranking row dimensions stable', () => { diff --git a/test/qqbot/plugins/bangDream/player/player-ranking.repository.spec.ts b/test/qqbot/plugins/bangDream/player/player-ranking.repository.spec.ts index d9ccf8f..339e3b5 100644 --- a/test/qqbot/plugins/bangDream/player/player-ranking.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/player/player-ranking.repository.spec.ts @@ -1,6 +1,6 @@ -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; -import { PlayerRankingResourceRepository } from '@/qqbot/plugins/bangDream/player/player-ranking.repository'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; +import { PlayerRankingResourceRepository } from '@/modules/qqbot/plugins/bangDream/player/player-ranking.repository'; function createProviderMock(): jest.Mocked { return { @@ -14,7 +14,9 @@ function createProviderMock(): jest.Mocked { describe('BangDream player ranking resource repository', () => { it('builds player ranking image paths', () => { - const repository = new PlayerRankingResourceRepository(createProviderMock()); + const repository = new PlayerRankingResourceRepository( + createProviderMock(), + ); expect(repository.getRankImagePath(Server.cn, 1)).toBe( '/res/image/cn_1.png', diff --git a/test/qqbot/plugins/bangDream/policy/policy.spec.ts b/test/qqbot/plugins/bangDream/policy/policy.spec.ts index db06733..6f64de6 100644 --- a/test/qqbot/plugins/bangDream/policy/policy.spec.ts +++ b/test/qqbot/plugins/bangDream/policy/policy.spec.ts @@ -1,4 +1,4 @@ -jest.mock('@/qqbot/plugins/bangDream/shared/main-data-store', () => ({ +jest.mock('@/modules/qqbot/plugins/bangDream/shared/main-data-store', () => ({ __esModule: true, default: {}, })); @@ -7,7 +7,7 @@ import { calculateCnEventEstimateStartAt, getBangDreamOccupiedDays, type BangDreamEventSchedule, -} from '@/qqbot/plugins/bangDream/policy/cn-event-estimate.policy'; +} from '@/modules/qqbot/plugins/bangDream/policy/cn-event-estimate.policy'; import { getCutoffDateByServerTimezone, getCutoffDayIndex, @@ -17,11 +17,11 @@ import { isCutoffDailyCheckpoint, isCutoffTierSupported, selectRecentCutoffEventIds, -} from '@/qqbot/plugins/bangDream/policy/cutoff.policy'; +} from '@/modules/qqbot/plugins/bangDream/policy/cutoff.policy'; import { getBangDreamServerUtcOffset, normalizeBangDreamTimestamp, -} from '@/qqbot/plugins/bangDream/policy/server.policy'; +} from '@/modules/qqbot/plugins/bangDream/policy/server.policy'; import { applyGachaGuaranteedRarity, BANGDREAM_GACHA_MAX_SPIN_COUNT, @@ -31,12 +31,12 @@ import { isPermanentJapaneseGachaPeriod, pickGachaCardIdByWeight, pickGachaRarityByRate, -} from '@/qqbot/plugins/bangDream/policy/gacha.policy'; +} from '@/modules/qqbot/plugins/bangDream/policy/gacha.policy'; import { BangDreamEventStatus, BangDreamGachaType, BangDreamServerId as Server, -} from '@/qqbot/plugins/bangDream/shared/bangdream-protocol'; +} from '@/modules/qqbot/plugins/bangDream/shared/bangdream-protocol'; const DAY_MS = 24 * 60 * 60 * 1000; diff --git a/test/qqbot/plugins/bangDream/provider/cache-path.spec.ts b/test/qqbot/plugins/bangDream/provider/cache-path.spec.ts index 685cace..90fc30d 100644 --- a/test/qqbot/plugins/bangDream/provider/cache-path.spec.ts +++ b/test/qqbot/plugins/bangDream/provider/cache-path.spec.ts @@ -2,7 +2,7 @@ import * as path from 'path'; import { getCacheDirectory, getFileNameFromUrl, -} from '@/qqbot/plugins/bangDream/provider/cache-path'; +} from '@/modules/qqbot/plugins/bangDream/provider/cache-path'; describe('BangDream cache path', () => { it('resolves relative asset paths before creating cache directories', () => { @@ -15,9 +15,7 @@ describe('BangDream cache path', () => { path.join('.kt-workspace', 'cache', 'bangdream'), ); expect(directory).toContain('bestdori.com'); - expect(normalizedDirectory).toContain( - 'assets_cn_event_foo_topscreen_rip', - ); + expect(normalizedDirectory).toContain('assets_cn_event_foo_topscreen_rip'); }); it('resolves relative api paths before creating cache file names', () => { diff --git a/test/qqbot/plugins/bangDream/provider/cache-policy.spec.ts b/test/qqbot/plugins/bangDream/provider/cache-policy.spec.ts index cf92064..e096fb7 100644 --- a/test/qqbot/plugins/bangDream/provider/cache-policy.spec.ts +++ b/test/qqbot/plugins/bangDream/provider/cache-policy.spec.ts @@ -4,7 +4,7 @@ import { isCacheClientNotFound, normalizeCacheClientRetryCount, runWithCacheClientRetry, -} from '@/qqbot/plugins/bangDream/provider/cache-policy'; +} from '@/modules/qqbot/plugins/bangDream/provider/cache-policy'; describe('BangDream cache client policy', () => { it('normalizes retry count and reads http status safely', () => { diff --git a/test/qqbot/plugins/bangDream/provider/data-provider.spec.ts b/test/qqbot/plugins/bangDream/provider/data-provider.spec.ts index d8d3fc2..bf9ff62 100644 --- a/test/qqbot/plugins/bangDream/provider/data-provider.spec.ts +++ b/test/qqbot/plugins/bangDream/provider/data-provider.spec.ts @@ -1,16 +1,16 @@ import { createBestdoriProvider, type BangDreamBestdoriProviderOptions, -} from '@/qqbot/plugins/bangDream/provider/bestdori.provider'; -import { createHhwxTrackerProvider } from '@/qqbot/plugins/bangDream/provider/hhwx-tracker.provider'; +} from '@/modules/qqbot/plugins/bangDream/provider/bestdori.provider'; +import { createHhwxTrackerProvider } from '@/modules/qqbot/plugins/bangDream/provider/hhwx-tracker.provider'; import { resolveBangDreamProviderUrl, type BangDreamDataProvider, -} from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +} from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; import { withCache, withRetry, -} from '@/qqbot/plugins/bangDream/provider/provider-decorators'; +} from '@/modules/qqbot/plugins/bangDream/provider/provider-decorators'; describe('BangDream data provider', () => { it('resolves relative paths against provider base url', () => { diff --git a/test/qqbot/plugins/bangDream/provider/file-cache.client.spec.ts b/test/qqbot/plugins/bangDream/provider/file-cache.client.spec.ts index ef1b231..7c0e4e9 100644 --- a/test/qqbot/plugins/bangDream/provider/file-cache.client.spec.ts +++ b/test/qqbot/plugins/bangDream/provider/file-cache.client.spec.ts @@ -17,7 +17,7 @@ describe('BangDream file cache client', () => { })); const { download } = - await import('@/qqbot/plugins/bangDream/provider/file-cache.client'); + await import('@/modules/qqbot/plugins/bangDream/provider/file-cache.client'); await expect(download('https://example.com/card.png')).rejects.toThrow( 'timeout of 8000ms exceeded', @@ -40,7 +40,7 @@ describe('BangDream file cache client', () => { })); const { download } = - await import('@/qqbot/plugins/bangDream/provider/file-cache.client'); + await import('@/modules/qqbot/plugins/bangDream/provider/file-cache.client'); await expect(download('https://example.com/missing.png')).rejects.toThrow( 'not found', @@ -63,7 +63,7 @@ describe('BangDream file cache client', () => { })); const { download } = - await import('@/qqbot/plugins/bangDream/provider/file-cache.client'); + await import('@/modules/qqbot/plugins/bangDream/provider/file-cache.client'); await expect(download('https://example.com/missing.svg')).rejects.toThrow( 'not found', diff --git a/test/qqbot/plugins/bangDream/registry/command-sql.spec.ts b/test/qqbot/plugins/bangDream/registry/command-sql.spec.ts index 0bf1338..9e8da92 100644 --- a/test/qqbot/plugins/bangDream/registry/command-sql.spec.ts +++ b/test/qqbot/plugins/bangDream/registry/command-sql.spec.ts @@ -1,6 +1,6 @@ import { readFileSync } from 'node:fs'; import { join } from 'node:path'; -import { BANGDREAM_OPERATION_REGISTRY } from '@/qqbot/plugins/bangDream/registry/operation-registry'; +import { BANGDREAM_OPERATION_REGISTRY } from '@/modules/qqbot/plugins/bangDream/registry/operation-registry'; type BangDreamSqlCommandRow = { aliases: string[]; diff --git a/test/qqbot/plugins/bangDream/registry/operation-registry.spec.ts b/test/qqbot/plugins/bangDream/registry/operation-registry.spec.ts index d305665..e1c6375 100644 --- a/test/qqbot/plugins/bangDream/registry/operation-registry.spec.ts +++ b/test/qqbot/plugins/bangDream/registry/operation-registry.spec.ts @@ -1,7 +1,7 @@ import { BANGDREAM_OPERATION_REGISTRY, getBangDreamOperationDefinition, -} from '@/qqbot/plugins/bangDream/registry/operation-registry'; +} from '@/modules/qqbot/plugins/bangDream/registry/operation-registry'; describe('BangDream Tsugu operation registry', () => { it('keeps operation keys unique and complete', () => { @@ -31,6 +31,8 @@ describe('BangDream Tsugu operation registry', () => { handlerName: 'searchSong', name: '查曲', }); - expect(getBangDreamOperationDefinition('bangdream.unknown')).toBeUndefined(); + expect( + getBangDreamOperationDefinition('bangdream.unknown'), + ).toBeUndefined(); }); }); diff --git a/test/qqbot/plugins/bangDream/search/fuzzy-search.spec.ts b/test/qqbot/plugins/bangDream/search/fuzzy-search.spec.ts index 1a26490..44d792a 100644 --- a/test/qqbot/plugins/bangDream/search/fuzzy-search.spec.ts +++ b/test/qqbot/plugins/bangDream/search/fuzzy-search.spec.ts @@ -2,13 +2,13 @@ import { checkRelationList, fuzzySearch, match, -} from '@/qqbot/plugins/bangDream/search/fuzzy-search'; +} from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search'; import { createDefaultFuzzySearchRuleRegistry, createFuzzySearchKeyword, -} from '@/qqbot/plugins/bangDream/search/fuzzy-search-rule.registry'; -import type { FuzzySearchResult } from '@/qqbot/plugins/bangDream/search/fuzzy-search.types'; -import { createTsuguEntityMatcher } from '@/qqbot/plugins/bangDream/search/entity-list-matcher'; +} from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search-rule.registry'; +import type { FuzzySearchResult } from '@/modules/qqbot/plugins/bangDream/search/fuzzy-search.types'; +import { createTsuguEntityMatcher } from '@/modules/qqbot/plugins/bangDream/search/entity-list-matcher'; describe('Tsugu fuzzy search helpers', () => { it('parses number, level, relation and quoted fallback keywords', () => { @@ -53,9 +53,7 @@ describe('Tsugu fuzzy search helpers', () => { (result[key] ??= []).push(value); }; - expect(registry.match(createFuzzySearchKeyword('夏祭り'), push)).toBe( - true, - ); + expect(registry.match(createFuzzySearchKeyword('夏祭り'), push)).toBe(true); expect(result).toEqual({ songs: [136] }); }); }); @@ -115,9 +113,9 @@ describe('Tsugu entity list matcher', () => { relationValue: (entity) => entity.id, }); - expect(matchDynamicEntity({ _relationStr: ['1-3'] }, [CN_SERVER])).toHaveLength( - 1, - ); + expect( + matchDynamicEntity({ _relationStr: ['1-3'] }, [CN_SERVER]), + ).toHaveLength(1); dynamicSource = { '1': {}, diff --git a/test/qqbot/plugins/bangDream/shared/data-block.layout.spec.ts b/test/qqbot/plugins/bangDream/shared/data-block.layout.spec.ts index 851feb4..c2feb94 100644 --- a/test/qqbot/plugins/bangDream/shared/data-block.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/shared/data-block.layout.spec.ts @@ -3,7 +3,7 @@ import { calculateHorizontalDataBlockSize, calculateVerticalDataBlockSize, getDataBlockTitleLineHeight, -} from '@/qqbot/plugins/bangDream/shared/data-block.layout'; +} from '@/modules/qqbot/plugins/bangDream/shared/data-block.layout'; describe('BangDream data block spec', () => { it('keeps the historical title and banner specs stable', () => { diff --git a/test/qqbot/plugins/bangDream/shared/detail-block.builder.spec.ts b/test/qqbot/plugins/bangDream/shared/detail-block.builder.spec.ts index 8fcaef5..27d9391 100644 --- a/test/qqbot/plugins/bangDream/shared/detail-block.builder.spec.ts +++ b/test/qqbot/plugins/bangDream/shared/detail-block.builder.spec.ts @@ -1,6 +1,6 @@ import { Canvas } from 'skia-canvas'; -import { DetailBlockBuilder } from '@/qqbot/plugins/bangDream/shared/detail-block.builder'; -import { line } from '@/qqbot/plugins/bangDream/shared/list-frame.renderer'; +import { DetailBlockBuilder } from '@/modules/qqbot/plugins/bangDream/shared/detail-block.builder'; +import { line } from '@/modules/qqbot/plugins/bangDream/shared/list-frame.renderer'; describe('DetailBlockBuilder', () => { it('keeps section separators centralized', () => { diff --git a/test/qqbot/plugins/bangDream/shared/detail-block.layout.spec.ts b/test/qqbot/plugins/bangDream/shared/detail-block.layout.spec.ts index 77e70e1..a2a94bd 100644 --- a/test/qqbot/plugins/bangDream/shared/detail-block.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/shared/detail-block.layout.spec.ts @@ -1,7 +1,7 @@ import { BANGDREAM_DETAIL_BLOCK_SPEC, getRelativeMetaPercent, -} from '@/qqbot/plugins/bangDream/shared/detail-block.layout'; +} from '@/modules/qqbot/plugins/bangDream/shared/detail-block.layout'; describe('BangDream detail block spec', () => { it('keeps song detail dimensions stable', () => { diff --git a/test/qqbot/plugins/bangDream/shared/list-entity.layout.spec.ts b/test/qqbot/plugins/bangDream/shared/list-entity.layout.spec.ts index b57e367..a470bf9 100644 --- a/test/qqbot/plugins/bangDream/shared/list-entity.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/shared/list-entity.layout.spec.ts @@ -1,7 +1,7 @@ import { BANGDREAM_ENTITY_LIST_SPEC, shouldUseSingleEntityLabel, -} from '@/qqbot/plugins/bangDream/shared/list-entity.layout'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-entity.layout'; describe('BangDream entity list spec', () => { it('keeps the historical multi-value spacing stable', () => { diff --git a/test/qqbot/plugins/bangDream/shared/list-frame.layout.spec.ts b/test/qqbot/plugins/bangDream/shared/list-frame.layout.spec.ts index 4a90a4a..b307f2a 100644 --- a/test/qqbot/plugins/bangDream/shared/list-frame.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/shared/list-frame.layout.spec.ts @@ -9,7 +9,7 @@ import { getListFrameSpacing, getListFrameTextMaxWidth, getMergedListColumnWidth, -} from '@/qqbot/plugins/bangDream/shared/list-frame.layout'; +} from '@/modules/qqbot/plugins/bangDream/shared/list-frame.layout'; describe('BangDream list frame spec', () => { it('keeps text sizing and content width stable', () => { diff --git a/test/qqbot/plugins/bangDream/shared/title.layout.spec.ts b/test/qqbot/plugins/bangDream/shared/title.layout.spec.ts index 305273c..6234264 100644 --- a/test/qqbot/plugins/bangDream/shared/title.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/shared/title.layout.spec.ts @@ -2,8 +2,8 @@ import { BANGDREAM_TITLE_SPEC, createTitleTextDrawOptions, getTitleTextPosition, -} from '@/qqbot/plugins/bangDream/shared/title.layout'; -import { BANGDREAM_RENDER_THEME } from '@/qqbot/plugins/bangDream/theme/render-theme'; +} from '@/modules/qqbot/plugins/bangDream/shared/title.layout'; +import { BANGDREAM_RENDER_THEME } from '@/modules/qqbot/plugins/bangDream/theme/render-theme'; describe('BangDream title spec', () => { it('keeps the historical title background offset stable', () => { diff --git a/test/qqbot/plugins/bangDream/song/song-chart-preview.layout.spec.ts b/test/qqbot/plugins/bangDream/song/song-chart-preview.layout.spec.ts index c4c5138..eade3a5 100644 --- a/test/qqbot/plugins/bangDream/song/song-chart-preview.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/song/song-chart-preview.layout.spec.ts @@ -7,7 +7,7 @@ import { createSongChartPreviewNotes, isSongChartCountLineNoteType, isSongChartDisplayNoteType, -} from '@/qqbot/plugins/bangDream/song/song-chart-preview.layout'; +} from '@/modules/qqbot/plugins/bangDream/song/song-chart-preview.layout'; describe('BangDream song chart preview spec', () => { it('assigns note times from BPM changes', () => { diff --git a/test/qqbot/plugins/bangDream/song/song-difficulty.layout.spec.ts b/test/qqbot/plugins/bangDream/song/song-difficulty.layout.spec.ts index 4713b05..a32c382 100644 --- a/test/qqbot/plugins/bangDream/song/song-difficulty.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/song/song-difficulty.layout.spec.ts @@ -6,7 +6,7 @@ import { getDifficultyLevelTextPosition, getDifficultyListCanvasWidth, getDifficultyListItemX, -} from '@/qqbot/plugins/bangDream/song/song-difficulty.layout'; +} from '@/modules/qqbot/plugins/bangDream/song/song-difficulty.layout'; describe('BangDream difficulty list spec', () => { it('keeps default difficulty list dimensions stable', () => { @@ -18,9 +18,7 @@ describe('BangDream difficulty list spec', () => { it('keeps difficulty badge color fallback stable', () => { expect(getDifficultyBadgeColor(1, ['#111111', '#222222'])).toBe('#222222'); - expect(getDifficultyBadgeColor(6, ['#111111', '#222222'])).toBe( - '#f1f1f1', - ); + expect(getDifficultyBadgeColor(6, ['#111111', '#222222'])).toBe('#f1f1f1'); }); it('keeps difficulty badge circle layout stable', () => { @@ -41,11 +39,11 @@ describe('BangDream difficulty list spec', () => { text: '26', textSize: 30, }); - expect(getDifficultyLevelTextPosition(45, { height: 12, width: 20 })).toEqual( - { - x: 12.5, - y: 16.5, - }, - ); + expect( + getDifficultyLevelTextPosition(45, { height: 12, width: 20 }), + ).toEqual({ + x: 12.5, + y: 16.5, + }); }); }); diff --git a/test/qqbot/plugins/bangDream/song/song-list.layout.spec.ts b/test/qqbot/plugins/bangDream/song/song-list.layout.spec.ts index c0715ae..66584ac 100644 --- a/test/qqbot/plugins/bangDream/song/song-list.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/song/song-list.layout.spec.ts @@ -4,7 +4,7 @@ import { getSongListCanvasHeight, getSongListContentWidth, getSongListFrameLineHeight, -} from '@/qqbot/plugins/bangDream/song/song-list.layout'; +} from '@/modules/qqbot/plugins/bangDream/song/song-list.layout'; describe('BangDream song list spec', () => { it('keeps song list item dimensions stable', () => { diff --git a/test/qqbot/plugins/bangDream/song/song-resource.repository.spec.ts b/test/qqbot/plugins/bangDream/song/song-resource.repository.spec.ts index 74e743d..1df6a5a 100644 --- a/test/qqbot/plugins/bangDream/song/song-resource.repository.spec.ts +++ b/test/qqbot/plugins/bangDream/song/song-resource.repository.spec.ts @@ -1,10 +1,10 @@ -import { assetErrorImageBuffer } from '@/qqbot/plugins/bangDream/theme/canvas-image'; -import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider'; -import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model'; +import { assetErrorImageBuffer } from '@/modules/qqbot/plugins/bangDream/theme/canvas-image'; +import type { BangDreamDataProvider } from '@/modules/qqbot/plugins/bangDream/provider/bangdream-data-provider'; +import { Server } from '@/modules/qqbot/plugins/bangDream/catalog/server.model'; import { SongResourceRepository, type SongJacketSource, -} from '@/qqbot/plugins/bangDream/song/song-resource.repository'; +} from '@/modules/qqbot/plugins/bangDream/song/song-resource.repository'; function createProviderMock(): jest.Mocked { return { diff --git a/test/qqbot/plugins/bangDream/theme/canvas-text.layout.spec.ts b/test/qqbot/plugins/bangDream/theme/canvas-text.layout.spec.ts index e6896b0..ac9d337 100644 --- a/test/qqbot/plugins/bangDream/theme/canvas-text.layout.spec.ts +++ b/test/qqbot/plugins/bangDream/theme/canvas-text.layout.spec.ts @@ -6,7 +6,7 @@ import { getTextBaselineY, getTextInlineSpacing, getTextLineHeight, -} from '@/qqbot/plugins/bangDream/theme/canvas-text.layout'; +} from '@/modules/qqbot/plugins/bangDream/theme/canvas-text.layout'; describe('BangDream text spec', () => { it('keeps text line and spacing ratios stable', () => { diff --git a/test/qqbot/plugins/ff14Market/qqbot-ff14-worlds.spec.ts b/test/qqbot/plugins/ff14Market/qqbot-ff14-worlds.spec.ts index f7b974c..3f0162a 100644 --- a/test/qqbot/plugins/ff14Market/qqbot-ff14-worlds.spec.ts +++ b/test/qqbot/plugins/ff14Market/qqbot-ff14-worlds.spec.ts @@ -2,7 +2,7 @@ import { buildQqbotFf14MarketCatalog, buildQqbotFf14MarketCatalogFromTree, resolveQqbotFf14MarketTarget, -} from '@/qqbot/plugins/ff14Market/qqbot-ff14-worlds'; +} from '@/modules/qqbot/plugins/ff14Market/qqbot-ff14-worlds'; describe('qqbot ff14 market worlds', () => { const catalog = buildQqbotFf14MarketCatalog({ diff --git a/test/qqbot/plugins/fflogs/qqbot-fflogs-client.service.spec.ts b/test/qqbot/plugins/fflogs/qqbot-fflogs-client.service.spec.ts index ca6e984..f09d4a3 100644 --- a/test/qqbot/plugins/fflogs/qqbot-fflogs-client.service.spec.ts +++ b/test/qqbot/plugins/fflogs/qqbot-fflogs-client.service.spec.ts @@ -28,7 +28,8 @@ jest.mock( import { ConfigService } from '@nestjs/config'; import { DictService } from '@/admin/dict/dict.service'; -import { QqbotFflogsClientService } from '@/qqbot/plugins/fflogs/qqbot-fflogs-client.service'; +import { QqbotPluginHttpClientService } from '@/modules/qqbot/plugin-platform/sdk'; +import { QqbotFflogsClientService } from '@/modules/qqbot/plugins/fflogs/qqbot-fflogs-client.service'; describe('QqbotFflogsClientService', () => { const dicts = { @@ -53,6 +54,9 @@ describe('QqbotFflogsClientService', () => { async (dictKey: keyof typeof dicts) => dicts[dictKey] || [], ), } as unknown as DictService, + { + requestJson: jest.fn(), + } as unknown as QqbotPluginHttpClientService, ); it('uses cn FFLogs API endpoints by default', () => { diff --git a/test/qqbot/plugins/repeater/qqbot-repeater.plugin.spec.ts b/test/qqbot/plugins/repeater/qqbot-repeater.plugin.spec.ts index fb79620..eb59414 100644 --- a/test/qqbot/plugins/repeater/qqbot-repeater.plugin.spec.ts +++ b/test/qqbot/plugins/repeater/qqbot-repeater.plugin.spec.ts @@ -1,5 +1,5 @@ import { ToolsService } from '@/common'; -import { QqbotRepeaterPluginService } from '@/qqbot/plugins/repeater/qqbot-repeater.plugin'; +import { QqbotRepeaterPluginService } from '@/modules/qqbot/plugins/repeater/qqbot-repeater.plugin'; import type { QqbotNormalizedMessage } from '@/qqbot/qqbot.types'; function createMessage(text: string): QqbotNormalizedMessage {