koishi-plugin-ggcevo-game 2.0.9 → 2.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/index.js +40 -21
  2. package/package.json +1 -1
package/lib/index.js CHANGED
@@ -13397,32 +13397,51 @@ ID: ${group.id}
13397
13397
  if (rouletteIds.length === 0) {
13398
13398
  return "该轮盘组没有可抽奖的轮盘";
13399
13399
  }
13400
- const randomRouletteId = rouletteIds[Math.floor(Math.random() * rouletteIds.length)];
13401
- const roulette = await ctx.model.get("roulettes", { id: randomRouletteId });
13402
- if (!roulette || roulette.length === 0) {
13403
- return "轮盘组中的某个轮盘已不存在";
13404
- }
13405
- const items = roulette[0].items;
13406
- if (items.length === 0) {
13407
- return "选中的轮盘没有可抽奖的选项";
13400
+ const roulettes = await Promise.all(
13401
+ rouletteIds.map(async (id) => {
13402
+ const roulette = await ctx.model.get("roulettes", { id });
13403
+ return roulette && roulette.length > 0 ? roulette[0] : null;
13404
+ })
13405
+ );
13406
+ const validRoulettes = roulettes.filter((roulette) => roulette !== null);
13407
+ if (validRoulettes.length === 0) {
13408
+ return "轮盘组中的轮盘已不存在";
13408
13409
  }
13409
- const results = [];
13410
- for (let i = 0; i < count; i++) {
13411
- const randomIndex = Math.floor(Math.random() * items.length);
13412
- results.push(items[randomIndex]);
13410
+ const results = validRoulettes.map((roulette) => {
13411
+ if (roulette.items.length === 0) {
13412
+ return { id: roulette.id, result: "(无选项)" };
13413
+ }
13414
+ const randomIndex = Math.floor(Math.random() * roulette.items.length);
13415
+ return { id: roulette.id, result: roulette.items[randomIndex] };
13416
+ });
13417
+ let finalResults;
13418
+ if (count <= validRoulettes.length) {
13419
+ finalResults = results.slice(0, count);
13420
+ } else {
13421
+ finalResults = [...results];
13422
+ for (let i = validRoulettes.length; i < count; i++) {
13423
+ const randomRouletteIndex = Math.floor(Math.random() * validRoulettes.length);
13424
+ const roulette = validRoulettes[randomRouletteIndex];
13425
+ if (roulette.items.length > 0) {
13426
+ const randomIndex = Math.floor(Math.random() * roulette.items.length);
13427
+ finalResults.push({
13428
+ id: roulette.id,
13429
+ result: roulette.items[randomIndex],
13430
+ isAdditional: true
13431
+ });
13432
+ }
13433
+ }
13413
13434
  }
13414
13435
  let message = `轮盘组: ${target}
13415
- (从轮盘 ID: ${randomRouletteId} 中抽取)
13416
- 抽奖结果:
13417
13436
  `;
13418
- if (count === 1) {
13419
- message += `🎉 ${results[0]} 🎉`;
13420
- } else {
13421
- results.forEach((result, index) => {
13422
- message += `${index + 1}. ${result}
13437
+ message += `抽奖结果(从${finalResults.length}个轮盘中各抽取1个):
13438
+
13423
13439
  `;
13424
- });
13425
- }
13440
+ finalResults.forEach((item, index) => {
13441
+ const prefix = item.isAdditional ? `附加${index - validRoulettes.length + 1}.` : `${index + 1}.`;
13442
+ message += `${prefix} [轮盘ID: ${item.id}] ${item.result}
13443
+ `;
13444
+ });
13426
13445
  return message;
13427
13446
  }
13428
13447
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-ggcevo-game",
3
3
  "description": "星际争霸2咕咕虫-evolved地图的专属游戏助手插件,集成天梯排行、抽奖系统、签到福利、兑换商城等丰富功能。",
4
- "version": "2.0.9",
4
+ "version": "2.0.10",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [