koishi-plugin-wordle-game 3.0.0 → 4.0.0

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/README.md CHANGED
@@ -20,7 +20,7 @@ yarn add koishi-plugin-wordle-game
20
20
  | `wordle.查询进度` | 查询当前游戏进度 |
21
21
  | `wordle.结束` | 结束游戏 |
22
22
  | `wordle.排行榜 [人数]` | 查看排行榜 |
23
- | `wordle.查询玩家记录 [@某人]` | 查询玩家记录 |
23
+ | `wordle.战绩 [@某人]` | 查询玩家记录 |
24
24
  | `wordle.查单词 <词>` | 查单词引导 |
25
25
  | `wordle.查成语 <成语>` | 查询成语的拼音与解释(汉典) |
26
26
  | `wordle.拼音速查表` | 查看拼音速查表 |
package/lib/config.d.ts CHANGED
@@ -8,7 +8,7 @@ export interface Config {
8
8
  maxSimultaneousGuesses: number;
9
9
  compositeImagePageWidth: number;
10
10
  compositeImagePageHeight: number;
11
- enableWordGuessMiddleware: boolean;
11
+ enableDirectInput: boolean;
12
12
  shouldPromptWordLengthInput: boolean;
13
13
  isPreventUserDuplicateGuessInput: boolean;
14
14
  shouldPromptForWordLengthOnNonClassicStart: boolean;
package/lib/index.js CHANGED
@@ -79,7 +79,7 @@ var Config = import_koishi.Schema.intersect([
79
79
  }).description("游戏设置"),
80
80
  import_koishi.Schema.intersect([
81
81
  import_koishi.Schema.object({
82
- enableWordGuessMiddleware: import_koishi.Schema.boolean().default(true).description(`对局进行中时,直接发送猜测词即可,无需指令前缀。`),
82
+ enableDirectInput: import_koishi.Schema.boolean().default(true).description(`对局中直接发送猜测词即可续猜,无需指令前缀。`),
83
83
  isPreventUserDuplicateGuessInput: import_koishi.Schema.boolean().default(true).description(`拦截重复提交的猜测词。`),
84
84
  shouldPromptWordLengthInput: import_koishi.Schema.boolean().default(true).description(
85
85
  `引导式开局时,追问一次单词长度。关闭则直接用默认长度。`
@@ -14079,7 +14079,7 @@ function register2(g) {
14079
14079
  const equations = g.data.equations;
14080
14080
  ctx.middleware(async (session, next) => {
14081
14081
  let { channelId, content } = session;
14082
- if (!config.enableWordGuessMiddleware) {
14082
+ if (!config.enableDirectInput) {
14083
14083
  return await next();
14084
14084
  }
14085
14085
  if (content) {
@@ -14121,7 +14121,7 @@ function register2(g) {
14121
14121
  return await sendMessage(
14122
14122
  g,
14123
14123
  session,
14124
- `💡 本频道没有进行中的对局。
14124
+ `💡 本频道没有进行中的对局
14125
14125
  发送「wordle.开始」开一局。`
14126
14126
  );
14127
14127
  }
@@ -14225,7 +14225,7 @@ ${exams.map((exam, index) => `${index + 1}. ${exam}`).join("\n")}
14225
14225
  );
14226
14226
  }
14227
14227
  });
14228
- ctx.command("wordle.开始.经典", "开始经典猜单词游戏").option("hard", "--hard 困难模式", { fallback: false }).option("ultraHardMode", "--uhard 超困难模式", { fallback: false }).option("absurd", "--absurd 变态模式", { fallback: false }).option("challenge", "--challenge 变态挑战模式", { fallback: false }).option("wordles", "--wordles <value:number> 同时猜测多个单词", {
14228
+ ctx.command("wordle.开始.经典", "以经典模式开局").option("hard", "--hard 困难模式", { fallback: false }).option("ultraHardMode", "--uhard 超困难模式", { fallback: false }).option("absurd", "--absurd 变态模式", { fallback: false }).option("challenge", "--challenge 变态挑战模式", { fallback: false }).option("wordles", "--wordles <value:number> 同时猜测多个单词", {
14229
14229
  fallback: 1
14230
14230
  }).action(async ({ session, options }) => {
14231
14231
  let { channelId, userId, username, timestamp } = session;
@@ -14643,7 +14643,7 @@ ${image}${tail}`
14643
14643
  return await sendMessage(
14644
14644
  g,
14645
14645
  session,
14646
- `💡 本频道没有进行中的对局。
14646
+ `💡 本频道没有进行中的对局
14647
14647
  发送「wordle.开始」开一局。`
14648
14648
  );
14649
14649
  }
@@ -14678,7 +14678,7 @@ ${image}${tail}`
14678
14678
  await sendMessage(
14679
14679
  g,
14680
14680
  session,
14681
- `⏳ 作答超过 ${config.wordGuessTimeLimitInSeconds} 秒,本局结束。
14681
+ `⏳ 作答超过 ${config.wordGuessTimeLimitInSeconds} 秒,本局结束
14682
14682
  发送「wordle.开始」再来一局。`
14683
14683
  );
14684
14684
  await endGame(g, channelId);
@@ -14955,7 +14955,7 @@ ${rule}
14955
14955
  await sendMessage(
14956
14956
  g,
14957
14957
  session,
14958
- `💡 按现有线索,已经没有可用的单词了,本局到此为止。
14958
+ `💡 按现有线索,已经没有可用的单词了,本局到此为止
14959
14959
  发送「wordle.开始」再来一局。`
14960
14960
  );
14961
14961
  await endGame(g, channelId);
@@ -15005,7 +15005,7 @@ ${emptyGridHtml}`
15005
15005
  return await sendMessage(
15006
15006
  g,
15007
15007
  session,
15008
- `⏳ 没有等到有效输入,已按「撤销」处理。
15008
+ `⏳ 没有等到有效输入,已按「撤销」处理
15009
15009
  ${import_koishi3.h.image(
15010
15010
  imageBuffer22,
15011
15011
  `image/${config.imageType}`
@@ -15020,7 +15020,7 @@ ${import_koishi3.h.image(
15020
15020
  return await sendMessage(
15021
15021
  g,
15022
15022
  session,
15023
- `✅ 已撤销,挑战继续。
15023
+ `✅ 已撤销,挑战继续
15024
15024
  ${import_koishi3.h.image(
15025
15025
  imageBuffer22,
15026
15026
  `image/${config.imageType}`
@@ -15533,7 +15533,7 @@ ${serializedDefinitions ? serializedDefinitions : `• 这个单词的定义暂
15533
15533
  return sendMessage(
15534
15534
  g,
15535
15535
  session,
15536
- `📋 这个用户还没有游戏记录。
15536
+ `📋 这个用户还没有战绩
15537
15537
  发送「wordle.开始」开一局,记录就有了。`
15538
15538
  );
15539
15539
  }
@@ -15561,7 +15561,7 @@ function register4(g) {
15561
15561
  return await sendMessage(
15562
15562
  g,
15563
15563
  session,
15564
- `💡 本频道没有进行中的对局。
15564
+ `💡 本频道没有进行中的对局
15565
15565
  发送「wordle.开始」开一局。`
15566
15566
  );
15567
15567
  }
@@ -15845,14 +15845,11 @@ __name(getLeaderboardFastestGuessTime, "getLeaderboardFastestGuessTime");
15845
15845
  // src/commands/leaderboard.ts
15846
15846
  function register5(g) {
15847
15847
  const { ctx, config } = g;
15848
- ctx.command("wordle.排行榜 [number:number]", "查看排行榜").action(
15849
- async ({ session }, number = config.defaultMaxLeaderboardEntries) => {
15848
+ ctx.command("wordle.排行榜 [count:posint]", "查看排行榜").action(
15849
+ async ({ session }, count = config.defaultMaxLeaderboardEntries) => {
15850
15850
  let { username, userId } = session;
15851
15851
  username = await getSessionUserName(g, session);
15852
15852
  await updateNameInPlayerRecord(g, session, userId, username);
15853
- if (typeof number !== "number" || isNaN(number) || number < 0) {
15854
- return "⚠️ 排行榜人数须是不小于 0 的整数。";
15855
- }
15856
15853
  await sendMessage(
15857
15854
  g,
15858
15855
  session,
@@ -15868,9 +15865,9 @@ ${rankType.map((type, index) => `${index + 1}. ${type}`).join("\n")}
15868
15865
  const userInputNumber = parseInt(userInput);
15869
15866
  if (!isNaN(userInputNumber) && userInputNumber > 0 && userInputNumber <= rankType.length) {
15870
15867
  const rankName = rankType[userInputNumber - 1];
15871
- await session.execute(`wordle.排行榜.${rankName} ${number}`);
15868
+ await session.execute(`wordle.排行榜.${rankName} ${count}`);
15872
15869
  } else if (rankType.includes(userInput)) {
15873
- await session.execute(`wordle.排行榜.${userInput} ${number}`);
15870
+ await session.execute(`wordle.排行榜.${userInput} ${count}`);
15874
15871
  } else {
15875
15872
  return sendMessage(g, session, `⚠️ 认不出这一项
15876
15873
  发送上面列出的序号或名称。`);
@@ -15878,14 +15875,11 @@ ${rankType.map((type, index) => `${index + 1}. ${type}`).join("\n")}
15878
15875
  }
15879
15876
  );
15880
15877
  rankType2.forEach((type) => {
15881
- ctx.command(`wordle.排行榜.${type} [number:number]`, `查看${type}排行榜`).action(
15882
- async ({ session }, number = config.defaultMaxLeaderboardEntries) => {
15878
+ ctx.command(`wordle.排行榜.${type} [count:posint]`, `查看${type}排行榜`).action(
15879
+ async ({ session }, count = config.defaultMaxLeaderboardEntries) => {
15883
15880
  let { username, userId } = session;
15884
15881
  username = await getSessionUserName(g, session);
15885
15882
  await updateNameInPlayerRecord(g, session, userId, username);
15886
- if (typeof number !== "number" || isNaN(number) || number < 0) {
15887
- return "⚠️ 排行榜人数须是不小于 0 的整数。";
15888
- }
15889
15883
  let rankType3;
15890
15884
  if (type === "总") {
15891
15885
  rankType3 = ["胜场", "输场"];
@@ -15910,11 +15904,11 @@ ${rankType3.map((type2, index) => `${index + 1}. ${type2}`).join("\n")}
15910
15904
  if (!isNaN(userInputNumber) && userInputNumber > 0 && userInputNumber <= rankType3.length) {
15911
15905
  const rankName = rankType3[userInputNumber - 1];
15912
15906
  await session.execute(
15913
- `wordle.排行榜.${type}.${rankName} ${number}`
15907
+ `wordle.排行榜.${type}.${rankName} ${count}`
15914
15908
  );
15915
15909
  } else if (rankType3.includes(userInput)) {
15916
15910
  await session.execute(
15917
- `wordle.排行榜.${type}.${userInput} ${number}`
15911
+ `wordle.排行榜.${type}.${userInput} ${count}`
15918
15912
  );
15919
15913
  } else {
15920
15914
  return sendMessage(g, session, `⚠️ 认不出这一项
@@ -15924,79 +15918,67 @@ ${rankType3.map((type2, index) => `${index + 1}. ${type2}`).join("\n")}
15924
15918
  );
15925
15919
  });
15926
15920
  ctx.command(
15927
- "wordle.排行榜.猜出次数 [number:number]",
15921
+ "wordle.排行榜.猜出次数 [count:posint]",
15928
15922
  "查看玩家猜出次数排行榜"
15929
15923
  ).action(
15930
- async ({ session }, number = config.defaultMaxLeaderboardEntries) => {
15924
+ async ({ session }, count = config.defaultMaxLeaderboardEntries) => {
15931
15925
  let { username, userId } = session;
15932
15926
  username = await getSessionUserName(g, session);
15933
15927
  await updateNameInPlayerRecord(g, session, userId, username);
15934
- if (typeof number !== "number" || isNaN(number) || number < 0) {
15935
- return "⚠️ 排行榜人数须是不小于 0 的整数。";
15936
- }
15937
15928
  return await getLeaderboard(
15938
15929
  g,
15939
15930
  session,
15940
15931
  "wordGuessCount",
15941
15932
  "玩家猜出次数排行榜",
15942
- number
15933
+ count
15943
15934
  );
15944
15935
  }
15945
15936
  );
15946
15937
  ctx.command(
15947
- "wordle.排行榜.总.胜场 [number:number]",
15938
+ "wordle.排行榜.总.胜场 [count:posint]",
15948
15939
  "查看玩家总胜场排行榜"
15949
15940
  ).action(
15950
- async ({ session }, number = config.defaultMaxLeaderboardEntries) => {
15941
+ async ({ session }, count = config.defaultMaxLeaderboardEntries) => {
15951
15942
  let { username, userId } = session;
15952
15943
  username = await getSessionUserName(g, session);
15953
15944
  await updateNameInPlayerRecord(g, session, userId, username);
15954
- if (typeof number !== "number" || isNaN(number) || number < 0) {
15955
- return "⚠️ 排行榜人数须是不小于 0 的整数。";
15956
- }
15957
15945
  return await getLeaderboard(
15958
15946
  g,
15959
15947
  session,
15960
15948
  "win",
15961
15949
  "玩家总胜场排行榜",
15962
- number
15950
+ count
15963
15951
  );
15964
15952
  }
15965
15953
  );
15966
15954
  ctx.command(
15967
- "wordle.排行榜.总.输场 [number:number]",
15955
+ "wordle.排行榜.总.输场 [count:posint]",
15968
15956
  "查看玩家总输场排行榜"
15969
15957
  ).action(
15970
- async ({ session }, number = config.defaultMaxLeaderboardEntries) => {
15958
+ async ({ session }, count = config.defaultMaxLeaderboardEntries) => {
15971
15959
  let { username, userId } = session;
15972
15960
  username = await getSessionUserName(g, session);
15973
15961
  await updateNameInPlayerRecord(g, session, userId, username);
15974
- if (typeof number !== "number" || isNaN(number) || number < 0) {
15975
- return "⚠️ 排行榜人数须是不小于 0 的整数。";
15976
- }
15977
15962
  return await getLeaderboard(
15978
15963
  g,
15979
15964
  session,
15980
15965
  "lose",
15981
15966
  "玩家总输场排行榜",
15982
- number
15967
+ count
15983
15968
  );
15984
15969
  }
15985
15970
  );
15986
15971
  rankType4.forEach((type) => {
15987
15972
  ctx.command(
15988
- `wordle.排行榜.${type}.胜场 [number:number]`,
15973
+ `wordle.排行榜.${type}.胜场 [count:posint]`,
15989
15974
  `查看${type}胜场排行榜`
15990
15975
  ).option("hard", "--hard 查看困难模式", { fallback: false }).option("wordles", "--wordles <value:number> 查看多猜测模式", {
15991
15976
  fallback: 0
15992
15977
  }).action(
15993
- async ({ session, options }, number = config.defaultMaxLeaderboardEntries) => {
15978
+ async ({ session, options }, count = config.defaultMaxLeaderboardEntries) => {
15994
15979
  let { username, userId } = session;
15995
15980
  username = await getSessionUserName(g, session);
15996
15981
  await updateNameInPlayerRecord(g, session, userId, username);
15997
- if (typeof number !== "number" || isNaN(number) || number < 0) {
15998
- return "⚠️ 排行榜人数须是不小于 0 的整数。";
15999
- }
16000
15982
  if (type === "词影" && options.wordles !== 0 || type === "词影" && options.hard) {
16001
15983
  if (options.wordles === 0) {
16002
15984
  options.wordles = 1;
@@ -16013,30 +15995,27 @@ ${rankType3.map((type2, index) => `${index + 1}. ${type2}`).join("\n")}
16013
15995
  session,
16014
15996
  options.wordles,
16015
15997
  `玩家胜场排行榜(词影 x${options.wordles}${options.hard && options.wordles === 1 ? "(困难)" : ""})`,
16016
- number,
15998
+ count,
16017
15999
  options.hard
16018
16000
  );
16019
16001
  }
16020
16002
  return await sendMessage(
16021
16003
  g,
16022
16004
  session,
16023
- await getLeaderboardWinOrLose(g, type, number, "win", "胜场")
16005
+ await getLeaderboardWinOrLose(g, type, count, "win", "胜场")
16024
16006
  );
16025
16007
  }
16026
16008
  );
16027
16009
  ctx.command(
16028
- `wordle.排行榜.${type}.输场 [number:number]`,
16010
+ `wordle.排行榜.${type}.输场 [count:posint]`,
16029
16011
  `查看${type}输场排行榜`
16030
16012
  ).option("hard", "--hard 查看困难模式", { fallback: false }).option("wordles", "--wordles <value:number> 查看多猜测模式", {
16031
16013
  fallback: 0
16032
16014
  }).action(
16033
- async ({ session, options }, number = config.defaultMaxLeaderboardEntries) => {
16015
+ async ({ session, options }, count = config.defaultMaxLeaderboardEntries) => {
16034
16016
  let { username, userId } = session;
16035
16017
  username = await getSessionUserName(g, session);
16036
16018
  await updateNameInPlayerRecord(g, session, userId, username);
16037
- if (typeof number !== "number" || isNaN(number) || number < 0) {
16038
- return "⚠️ 排行榜人数须是不小于 0 的整数。";
16039
- }
16040
16019
  if (type === "词影" && options.wordles !== 0 || type === "词影" && options.hard) {
16041
16020
  if (options.wordles === 0) {
16042
16021
  options.wordles = 1;
@@ -16053,30 +16032,27 @@ ${rankType3.map((type2, index) => `${index + 1}. ${type2}`).join("\n")}
16053
16032
  session,
16054
16033
  options.wordles,
16055
16034
  `玩家输场排行榜(词影 x${options.wordles}${options.hard && options.wordles === 1 ? "(困难)" : ""})`,
16056
- number,
16035
+ count,
16057
16036
  options.hard
16058
16037
  );
16059
16038
  }
16060
16039
  return await sendMessage(
16061
16040
  g,
16062
16041
  session,
16063
- await getLeaderboardWinOrLose(g, type, number, "lose", "输场")
16042
+ await getLeaderboardWinOrLose(g, type, count, "lose", "输场")
16064
16043
  );
16065
16044
  }
16066
16045
  );
16067
16046
  ctx.command(
16068
- `wordle.排行榜.${type}.最快用时 [number:number]`,
16047
+ `wordle.排行榜.${type}.最快用时 [count:posint]`,
16069
16048
  `查看${type}最快用时排行榜`
16070
16049
  ).option("hard", "--hard 查看困难模式", { fallback: false }).option("wordles", "--wordles <value:number> 查看多猜测模式", {
16071
16050
  fallback: 0
16072
16051
  }).action(
16073
- async ({ session, options }, number = config.defaultMaxLeaderboardEntries) => {
16052
+ async ({ session, options }, count = config.defaultMaxLeaderboardEntries) => {
16074
16053
  let { username, userId } = session;
16075
16054
  username = await getSessionUserName(g, session);
16076
16055
  await updateNameInPlayerRecord(g, session, userId, username);
16077
- if (typeof number !== "number" || isNaN(number) || number < 0) {
16078
- return "⚠️ 排行榜人数须是不小于 0 的整数。";
16079
- }
16080
16056
  if (type === "词影" && options.wordles !== 0 || type === "词影" && options.hard) {
16081
16057
  if (options.wordles === 0) {
16082
16058
  options.wordles = 1;
@@ -16093,31 +16069,28 @@ ${rankType3.map((type2, index) => `${index + 1}. ${type2}`).join("\n")}
16093
16069
  session,
16094
16070
  options.wordles,
16095
16071
  `玩家最快用时排行榜(词影 x${options.wordles}${options.hard && options.wordles === 1 ? "(困难)" : ""})`,
16096
- number,
16072
+ count,
16097
16073
  options.hard
16098
16074
  );
16099
16075
  }
16100
16076
  return await sendMessage(
16101
16077
  g,
16102
16078
  session,
16103
- await getLeaderboardFastestGuessTime(g, type, number)
16079
+ await getLeaderboardFastestGuessTime(g, type, count)
16104
16080
  );
16105
16081
  }
16106
16082
  );
16107
16083
  });
16108
16084
  ctx.command(
16109
- "wordle.排行榜.词影.猜出次数 [number:number]",
16085
+ "wordle.排行榜.词影.猜出次数 [count:posint]",
16110
16086
  "查看玩家猜出次数排行榜(词影)"
16111
16087
  ).option("hard", "--hard 查看困难模式", { fallback: false }).option("wordles", "--wordles <value:number> 查看多猜测模式", {
16112
16088
  fallback: 1
16113
16089
  }).action(
16114
- async ({ session, options }, number = config.defaultMaxLeaderboardEntries) => {
16090
+ async ({ session, options }, count = config.defaultMaxLeaderboardEntries) => {
16115
16091
  let { username, userId } = session;
16116
16092
  username = await getSessionUserName(g, session);
16117
16093
  await updateNameInPlayerRecord(g, session, userId, username);
16118
- if (typeof number !== "number" || isNaN(number) || number < 0) {
16119
- return "⚠️ 排行榜人数须是不小于 0 的整数。";
16120
- }
16121
16094
  if (typeof options.wordles !== "number" || options.wordles < 1 || options.wordles > 4) {
16122
16095
  return await sendMessage(
16123
16096
  g,
@@ -16131,7 +16104,7 @@ ${rankType3.map((type2, index) => `${index + 1}. ${type2}`).join("\n")}
16131
16104
  options.wordles,
16132
16105
  "successCount",
16133
16106
  `玩家猜出次数排行榜(词影 x${options.wordles}${options.hard && options.wordles === 1 ? "(困难)" : ""})`,
16134
- number,
16107
+ count,
16135
16108
  options.hard
16136
16109
  );
16137
16110
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-wordle-game",
3
3
  "description": "Koishi 的多模式猜词游戏插件。",
4
- "version": "3.0.0",
4
+ "version": "4.0.0",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [