koishi-plugin-noah 2.3.4 → 2.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/core/utils/server.d.ts +7 -0
- package/lib/index.cjs +47 -56
- package/package.json +1 -1
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { Context } from 'koishi';
|
|
2
|
+
import { CardService } from '../services/card-service';
|
|
2
3
|
import { ServerService } from '../services/server-service';
|
|
3
4
|
import { UserService } from '../services/user-service';
|
|
5
|
+
import { Card, Server } from '../types';
|
|
6
|
+
/**
|
|
7
|
+
* Resolve the server for a given card, with fallback to channel/user defaults.
|
|
8
|
+
* If the card references a deleted server, cleans up the stale reference automatically.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveServerForCard(card: Card, cardService: CardService, serverService: ServerService, uid: number, platform: string, channelId: string | null): Promise<Server | null>;
|
|
4
11
|
/**
|
|
5
12
|
* Ensure the user has an Official (KONAMI) server and return its id.
|
|
6
13
|
* Creates one with the configured support URL when missing.
|
package/lib/index.cjs
CHANGED
|
@@ -644,18 +644,20 @@ var ServerService = class {
|
|
|
644
644
|
if (channelServerRes.length > 0) {
|
|
645
645
|
await this.ctx.database.set(
|
|
646
646
|
"channel",
|
|
647
|
-
{ id: channel.id },
|
|
647
|
+
{ id: channel.id, platform: channel.platform },
|
|
648
648
|
{ defaultServerId: channelServerRes[0].sid }
|
|
649
649
|
);
|
|
650
650
|
} else {
|
|
651
|
-
await this.ctx.database.set(
|
|
651
|
+
await this.ctx.database.set(
|
|
652
|
+
"channel",
|
|
653
|
+
{ id: channel.id, platform: channel.platform },
|
|
654
|
+
{ defaultServerId: 0 }
|
|
655
|
+
);
|
|
652
656
|
}
|
|
653
657
|
}
|
|
654
658
|
const cardRes = await this.ctx.database.get("card", { defaultServerId: id });
|
|
655
659
|
for (const card2 of cardRes) {
|
|
656
|
-
|
|
657
|
-
await this.ctx.database.set("card", { id: card2.id }, { defaultServerId: 0 });
|
|
658
|
-
}
|
|
660
|
+
await this.ctx.database.set("card", { id: card2.id }, { defaultServerId: 0 });
|
|
659
661
|
}
|
|
660
662
|
}
|
|
661
663
|
/**
|
|
@@ -997,6 +999,19 @@ function formatCardInfo(data) {
|
|
|
997
999
|
__name(formatCardInfo, "formatCardInfo");
|
|
998
1000
|
|
|
999
1001
|
// src/core/utils/server.ts
|
|
1002
|
+
async function resolveServerForCard(card2, cardService, serverService, uid, platform, channelId) {
|
|
1003
|
+
if (card2.defaultServerId != void 0 && card2.defaultServerId != 0) {
|
|
1004
|
+
const cardServer = await serverService.getServerById(card2.defaultServerId);
|
|
1005
|
+
if (cardServer) return cardServer;
|
|
1006
|
+
await cardService.updateCard(card2.id, { defaultServerId: 0 });
|
|
1007
|
+
}
|
|
1008
|
+
if (channelId) {
|
|
1009
|
+
const channelDefault = await serverService.getDefaultServerByCid(platform, channelId);
|
|
1010
|
+
if (channelDefault) return channelDefault;
|
|
1011
|
+
}
|
|
1012
|
+
return await serverService.getDefaultServerByUid(uid);
|
|
1013
|
+
}
|
|
1014
|
+
__name(resolveServerForCard, "resolveServerForCard");
|
|
1000
1015
|
async function ensureOfficialServerForUser(ctx, serverService, userService, uid, officialSupportUrl) {
|
|
1001
1016
|
const userServers = await serverService.getServersByUid(uid);
|
|
1002
1017
|
const existingOfficial = userServers.find((server3) => server3.type === "official");
|
|
@@ -5843,23 +5858,15 @@ function radar(ctx, config, logger5) {
|
|
|
5843
5858
|
const defaultCard = await cardService.getDefaultCardByUid(session.user.id);
|
|
5844
5859
|
if (!defaultCard) return session.text(".card-not-found");
|
|
5845
5860
|
const card2 = await cardService.getCardByCode(defaultCard.code);
|
|
5846
|
-
|
|
5847
|
-
|
|
5848
|
-
|
|
5849
|
-
|
|
5850
|
-
|
|
5851
|
-
|
|
5852
|
-
|
|
5853
|
-
|
|
5854
|
-
|
|
5855
|
-
else {
|
|
5856
|
-
const userDefaultServer = await serverService.getDefaultServerByUid(
|
|
5857
|
-
session.user.id
|
|
5858
|
-
);
|
|
5859
|
-
if (userDefaultServer) server2 = userDefaultServer;
|
|
5860
|
-
else return session.text(".server-not-found");
|
|
5861
|
-
}
|
|
5862
|
-
}
|
|
5861
|
+
const server2 = await resolveServerForCard(
|
|
5862
|
+
card2,
|
|
5863
|
+
cardService,
|
|
5864
|
+
serverService,
|
|
5865
|
+
session.user.id,
|
|
5866
|
+
session.platform,
|
|
5867
|
+
atGuild ? session.channel.id : null
|
|
5868
|
+
);
|
|
5869
|
+
if (!server2) return session.text(".server-not-found");
|
|
5863
5870
|
const serverManager = ServerManager.getInstance();
|
|
5864
5871
|
const sdvxService = serverManager.getGameService(server2.type, "sdvx");
|
|
5865
5872
|
const scoreService = ScoreService.getInstance();
|
|
@@ -5934,23 +5941,15 @@ function recent(ctx, config, logger5) {
|
|
|
5934
5941
|
cardCode = userCards[selectNum - 1].code;
|
|
5935
5942
|
}
|
|
5936
5943
|
const card2 = await cardService.getCardByCode(cardCode);
|
|
5937
|
-
|
|
5938
|
-
|
|
5939
|
-
|
|
5940
|
-
|
|
5941
|
-
|
|
5942
|
-
|
|
5943
|
-
|
|
5944
|
-
|
|
5945
|
-
|
|
5946
|
-
else {
|
|
5947
|
-
const userDefaultServer = await serverService.getDefaultServerByUid(
|
|
5948
|
-
session.user.id
|
|
5949
|
-
);
|
|
5950
|
-
if (userDefaultServer) server2 = userDefaultServer;
|
|
5951
|
-
else return session.text(".server-not-found");
|
|
5952
|
-
}
|
|
5953
|
-
}
|
|
5944
|
+
const server2 = await resolveServerForCard(
|
|
5945
|
+
card2,
|
|
5946
|
+
cardService,
|
|
5947
|
+
serverService,
|
|
5948
|
+
session.user.id,
|
|
5949
|
+
session.platform,
|
|
5950
|
+
atGuild ? session.channel.id : null
|
|
5951
|
+
);
|
|
5952
|
+
if (!server2) return session.text(".server-not-found");
|
|
5954
5953
|
const serverManager = ServerManager.getInstance();
|
|
5955
5954
|
const sdvxService = serverManager.getGameService(server2.type, "sdvx");
|
|
5956
5955
|
try {
|
|
@@ -6279,23 +6278,15 @@ function vf(ctx, config, logger5) {
|
|
|
6279
6278
|
cardCode = userCards[selectNum - 1].code;
|
|
6280
6279
|
}
|
|
6281
6280
|
const card2 = await cardService.getCardByCode(cardCode);
|
|
6282
|
-
|
|
6283
|
-
|
|
6284
|
-
|
|
6285
|
-
|
|
6286
|
-
|
|
6287
|
-
|
|
6288
|
-
|
|
6289
|
-
|
|
6290
|
-
|
|
6291
|
-
else {
|
|
6292
|
-
const userDefaultServer = await serverService.getDefaultServerByUid(
|
|
6293
|
-
session.user.id
|
|
6294
|
-
);
|
|
6295
|
-
if (userDefaultServer) server2 = userDefaultServer;
|
|
6296
|
-
else return session.text(".server-not-found");
|
|
6297
|
-
}
|
|
6298
|
-
}
|
|
6281
|
+
const server2 = await resolveServerForCard(
|
|
6282
|
+
card2,
|
|
6283
|
+
cardService,
|
|
6284
|
+
serverService,
|
|
6285
|
+
session.user.id,
|
|
6286
|
+
session.platform,
|
|
6287
|
+
atGuild ? session.channel.id : null
|
|
6288
|
+
);
|
|
6289
|
+
if (!server2) return session.text(".server-not-found");
|
|
6299
6290
|
const serverManager = ServerManager.getInstance();
|
|
6300
6291
|
const sdvxService = serverManager.getGameService(server2.type, "sdvx");
|
|
6301
6292
|
const scoreService = ScoreService.getInstance();
|