koishi-plugin-cchess 1.0.4 → 1.0.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/index.d.ts CHANGED
@@ -1,10 +1,7 @@
1
1
  import { Context, Schema } from 'koishi';
2
2
  export declare const name = "cchess";
3
3
  export declare const usage = "## \u4F7F\u7528\n\n1. \u5B89\u88C5 `puppeteer` \u670D\u52A1\u3002\n2. \u8BBE\u7F6E\u6307\u4EE4\u522B\u540D\u3002\n\n## Q&A\n\n1. \u5982\u4F55\u79FB\u52A8\u68CB\u5B50\uFF1F\n\n- \u7EB5\u7EBF\uFF08\u70AE\u4E8C\u5E73\u4E94/\u70AE8\u5E735\uFF09\u6216\u5B57\u6BCD\u5750\u6807\uFF08a0a1\uFF09\u3002\n- \u8BE6\u89C1 [\u4E2D\u56FD\u8C61\u68CB\u7740\u6CD5\u8868\u793A](https://www.xqbase.com/protocol/cchess_move.htm)\u3002\n\n## QQ \u7FA4\n\n- 956758505";
4
- export declare const inject: {
5
- required: string[];
6
- optional: string[];
7
- };
4
+ export declare const inject: string[];
8
5
  export interface Config {
9
6
  boardSkin: string;
10
7
  pieceSkin: string;
@@ -15,7 +12,6 @@ export interface Config {
15
12
  isChessImageWithOutlineEnabled: boolean;
16
13
  imgScale: number;
17
14
  imageType: "png" | "jpeg" | "webp";
18
- isTextToImageConversionEnabled: boolean;
19
15
  }
20
16
  export declare const Config: Schema<Config>;
21
17
  declare module 'koishi' {
package/lib/index.js CHANGED
@@ -56,10 +56,7 @@ var usage = `## 使用
56
56
  ## QQ 群
57
57
 
58
58
  - 956758505`;
59
- var inject = {
60
- required: ["database", "puppeteer", "canvas"],
61
- optional: ["markdownToImage"]
62
- };
59
+ var inject = ["database", "puppeteer", "canvas"];
63
60
  var pieceSkins = ["棋弈无限图形棋子", "云库木制棋子", "刘炳森红黑牛角隶书棋子", "木制棋子", "本纹隶书棋子", "银灰将军体棋子", "棋弈无限红绿正棋子", "棋弈无限红绿棋子", "棋天大圣棋子", "棋者象棋棋子", "楷书玉石棋子", "水墨青瓷棋子", "牛皮纸华康金文棋子", "皮卡鱼棋子", "红蓝祥隶棋子", "红黑精典无阴影棋子", "红黑精典棋子", "行书玉石棋子", "象甲棋子", "金属棋子篆体棋子", "镌刻华彩棋子", "鹏飞红黑棋子", "鹏飞经典棋子", "鹏飞绿龙棋子", "龙腾四海棋子"];
64
61
  var boardSkins = ["棋弈无限红绿棋盘", "一鸣惊人棋盘", "三星堆棋盘", "云库木制棋盘", "云心鹤眼棋盘", "兰亭集序无字棋盘", "兰亭集序棋盘", "凤舞九天棋盘", "卯兔添福棋盘", "叱咤风云棋盘", "君临天下棋盘", "壁画古梦棋盘", "大闹天宫棋盘", "天山共色棋盘", "女神之约棋盘", "小吕飞刀棋盘", "山海绘卷棋盘", "护眼绿棋盘", "星河璀璨棋盘", "木制棋盘", "本纹隶书白棋盘", "本纹隶书黑棋盘", "桃花源记棋盘", "棋天大圣棋盘", "棋天无大圣棋盘", "武侠江湖棋盘", "水墨青瓷棋盘", "清悠茶道棋盘", "游园惊梦棋盘", "牛转乾坤棋盘", "玉石太极棋盘", "皓月无痕棋盘", "皮卡鱼棋盘", "盲棋神迹棋盘", "空城计棋盘", "竹波烟雨棋盘", "经典木棋盘棋盘", "绿色棋盘", "象甲2023棋盘", "象甲征程棋盘", "象甲重燃棋盘", "金牛降世棋盘", "金虎贺岁棋盘", "金虎贺岁(王天一签名版)棋盘", "鎏金岁月棋盘", "霸王别姬棋盘", "鸿门宴棋盘", "鹏飞红黑棋盘", "鹏飞经典棋盘", "鹏飞绿龙棋盘", "龙腾天坛棋盘"];
65
62
  var Config = import_koishi.Schema.object({
@@ -71,7 +68,6 @@ var Config = import_koishi.Schema.object({
71
68
  retractDelay: import_koishi.Schema.number().min(0).default(0).description(`自动撤回等待的时间,单位是秒。值为 0 时不启用自动撤回功能。`),
72
69
  imgScale: import_koishi.Schema.number().min(1).default(1).description(`图片分辨率倍率。`),
73
70
  imageType: import_koishi.Schema.union(["png", "jpeg", "webp"]).default("png").description(`发送的图片类型。`),
74
- isTextToImageConversionEnabled: import_koishi.Schema.boolean().default(false).description(`是否开启将文本转为图片的功能(可选),如需启用,需要启用 \`markdownToImage\` 服务。`),
75
71
  isChessImageWithOutlineEnabled: import_koishi.Schema.boolean().default(true).description(`是否为象棋图片添加辅助外框,关闭后可以显著提升图片速度,但无辅助外框,玩起来可能会比较累。`)
76
72
  });
77
73
  function apply(ctx, config) {
@@ -213,7 +209,7 @@ function apply(ctx, config) {
213
209
  if (gameRecord.isStarted) {
214
210
  const buffer = await drawChessBoard(channelId);
215
211
  const hImg = import_koishi.h.image(buffer, `image/${config.imageType}`);
216
- return await sendMessage(session, `**【@${username}】**
212
+ return await sendMessage(session, `【@${username}
217
213
  游戏已经开始啦!
218
214
  ${hImg}`);
219
215
  }
@@ -224,7 +220,7 @@ ${hImg}`);
224
220
  if (!choice) {
225
221
  choice = Math.random() < 0.5 ? "红方" : "黑方";
226
222
  } else if (choice.includes("红") && choice.includes("黑")) {
227
- return await sendMessage(session, `**【@${username}】**
223
+ return await sendMessage(session, `【@${username}
228
224
  一次只能选择一方哦!`);
229
225
  } else if (choice.includes("红")) {
230
226
  choice = "红方";
@@ -238,19 +234,19 @@ ${hImg}`);
238
234
  const playersNum = getPlayerRecords.length;
239
235
  if (getPlayerRecord.length === 0) {
240
236
  await ctx.database.create("cchess_gaming_player_records", { channelId, userId, username, side: choice });
241
- return await sendMessage(session, `**【@${username}】**
237
+ return await sendMessage(session, `【@${username}
242
238
  您加入游戏啦!
243
- 您的队伍为:**【${choice}】**
244
- 当前玩家人数为:**【${playersNum + 1}】**
239
+ 您的队伍为:【${choice}
240
+ 当前玩家人数为:【${playersNum + 1}
245
241
  带“黑”或“红”加入游戏可以更换队伍哦~
246
242
  例如:
247
243
  - 加入指令 红
248
244
  - 加入指令 黑`);
249
245
  } else {
250
246
  await ctx.database.set("cchess_gaming_player_records", { channelId, userId }, { side: choice });
251
- return await sendMessage(session, `**【@${username}】**
252
- 您已更换队伍为:**【${choice}】**
253
- 当前玩家人数为:**【${playersNum}】**`);
247
+ return await sendMessage(session, `【@${username}
248
+ 您已更换队伍为:【${choice}
249
+ 当前玩家人数为:【${playersNum}】`);
254
250
  }
255
251
  });
256
252
  ctx.command("cchess.退出", "退出游戏").action(async ({ session }) => {
@@ -258,7 +254,7 @@ ${hImg}`);
258
254
  await updateNameInPlayerRecord(userId, username);
259
255
  const gameRecord = await getGameRecord(channelId);
260
256
  if (gameRecord.isStarted) {
261
- return await sendMessage(session, `**【@${username}】**
257
+ return await sendMessage(session, `【@${username}
262
258
  游戏已经开始啦~
263
259
  不许逃跑哦!`);
264
260
  }
@@ -267,13 +263,13 @@ ${hImg}`);
267
263
  const getPlayerRecords = await ctx.database.get("cchess_gaming_player_records", { channelId });
268
264
  const playersNum = getPlayerRecords.length;
269
265
  if (getPlayerRecord.length === 0) {
270
- return await sendMessage(session, `**【@${username}】**
266
+ return await sendMessage(session, `【@${username}
271
267
  您还未加入游戏呢!`);
272
268
  } else {
273
269
  await ctx.database.remove("cchess_gaming_player_records", { channelId, userId });
274
- return await sendMessage(session, `**【@${username}】**
270
+ return await sendMessage(session, `【@${username}
275
271
  您已退出游戏!
276
- 剩余玩家人数为:**【${playersNum - 1}】**`);
272
+ 剩余玩家人数为:【${playersNum - 1}】`);
277
273
  }
278
274
  });
279
275
  ctx.command("cchess.开始", "开始游戏指令帮助").action(async ({ session }) => {
@@ -284,7 +280,7 @@ ${hImg}`);
284
280
  await updateNameInPlayerRecord(userId, username);
285
281
  const gameRecord = await getGameRecord(channelId);
286
282
  if (gameRecord.isStarted) {
287
- return await sendMessage(session, `**【@${username}】**
283
+ return await sendMessage(session, `【@${username}
288
284
  游戏已经开始啦!`);
289
285
  }
290
286
  await checkEngine(channelId);
@@ -294,18 +290,18 @@ ${hImg}`);
294
290
  let blackPlayers = getPlayerRecords.filter((player) => player.side === "黑方");
295
291
  let message = "";
296
292
  if (playersNum < 2) {
297
- return await sendMessage(session, `**【@${username}】**
293
+ return await sendMessage(session, `【@${username}
298
294
  当前玩家人数不足 2 人,无法开始游戏!`);
299
295
  } else {
300
296
  if (redPlayers.length !== 1 || blackPlayers.length !== 1) {
301
297
  const randomPlayer = getPlayerRecords[Math.floor(Math.random() * getPlayerRecords.length)];
302
298
  if (redPlayers.length < 1) {
303
299
  randomPlayer.side = "红方";
304
- message += `**【@${randomPlayer.username}】**被自动分配到红方。
300
+ message += `【@${randomPlayer.username}】被自动分配到红方。
305
301
  `;
306
302
  } else {
307
303
  randomPlayer.side = "黑方";
308
- message += `**【@${randomPlayer.username}】**被自动分配到黑方。
304
+ message += `【@${randomPlayer.username}】被自动分配到黑方。
309
305
  `;
310
306
  }
311
307
  await ctx.database.set("cchess_gaming_player_records", {
@@ -316,11 +312,11 @@ ${hImg}`);
316
312
  blackPlayers = getPlayerRecords.filter((player) => player.side === "黑方");
317
313
  }
318
314
  message += `红方玩家(${redPlayers.length}):
319
- ${redPlayers.map((player) => `**【@${player.username}】**`).join("\n")}
315
+ ${redPlayers.map((player) => `【@${player.username}】`).join("\n")}
320
316
 
321
317
  `;
322
318
  message += `黑方玩家(${blackPlayers.length}):
323
- ${blackPlayers.map((player) => `**【@${player.username}】**`).join("\n")}`;
319
+ ${blackPlayers.map((player) => `【@${player.username}】`).join("\n")}`;
324
320
  await ctx.database.set("cchess_game_records", { channelId }, { isStarted: true });
325
321
  const turn = gameRecord.turn;
326
322
  const sideString = convertTurnToString(turn);
@@ -328,7 +324,7 @@ ${blackPlayers.map((player) => `**【@${player.username}】**`).join("\n")}`;
328
324
  const hImg = import_koishi.h.image(buffer, `image/${config.imageType}`);
329
325
  return await sendMessage(session, `### 游戏开始!
330
326
  ${message}
331
- 先手方为:**【${sideString}】**
327
+ 先手方为:【${sideString}
332
328
  ${hImg}`);
333
329
  }
334
330
  });
@@ -337,7 +333,7 @@ ${hImg}`);
337
333
  await updateNameInPlayerRecord(userId, username);
338
334
  const gameRecord = await getGameRecord(channelId);
339
335
  if (gameRecord.isStarted) {
340
- return await sendMessage(session, `**【@${username}】**
336
+ return await sendMessage(session, `【@${username}
341
337
  游戏已经开始啦!`);
342
338
  }
343
339
  await checkEngine(channelId);
@@ -348,26 +344,26 @@ ${hImg}`);
348
344
  let message = "";
349
345
  let AISide = "";
350
346
  if (playersNum < 1 && !config.allowFreePieceMovementInHumanMachineMode) {
351
- return await sendMessage(session, `**【@${username}】**
347
+ return await sendMessage(session, `【@${username}
352
348
  当前玩家人数不足 1 人,无法开始游戏!`);
353
349
  } else {
354
350
  if (playersNum === 1) {
355
351
  if (getPlayerRecords[0].side === "红方") {
356
352
  await ctx.database.set("cchess_game_records", { channelId }, { isEnginePlayBlack: true });
357
353
  AISide = "黑方";
358
- message += `人类队伍为:**【红方】**
354
+ message += `人类队伍为:【红方】
359
355
  `;
360
356
  } else {
361
357
  await ctx.database.set("cchess_game_records", { channelId }, { isEnginePlayRed: true });
362
358
  AISide = "红方";
363
- message += `人类队伍为:**【黑方】**
359
+ message += `人类队伍为:【黑方】
364
360
  `;
365
361
  }
366
362
  } else {
367
363
  if (redPlayers.length > blackPlayers.length) {
368
364
  await ctx.database.set("cchess_game_records", { channelId }, { isEnginePlayBlack: true });
369
365
  AISide = "黑方";
370
- message += `人类队伍为:**【红方】**
366
+ message += `人类队伍为:【红方】
371
367
  `;
372
368
  for (const player of blackPlayers) {
373
369
  await ctx.database.set("cchess_gaming_player_records", { channelId, userId: player.userId }, { side: "红方" });
@@ -375,7 +371,7 @@ ${hImg}`);
375
371
  } else if (redPlayers.length < blackPlayers.length) {
376
372
  await ctx.database.set("cchess_game_records", { channelId }, { isEnginePlayRed: true });
377
373
  AISide = "红方";
378
- message += `人类队伍为:**【黑方】**
374
+ message += `人类队伍为:【黑方】
379
375
  `;
380
376
  for (const player of redPlayers) {
381
377
  await ctx.database.set("cchess_gaming_player_records", { channelId, userId: player.userId }, { side: "黑方" });
@@ -383,7 +379,7 @@ ${hImg}`);
383
379
  }
384
380
  if (redPlayers.length === blackPlayers.length) {
385
381
  const side = Math.random() < 0.5 ? "红方" : "黑方";
386
- message += `人类队伍为:**【${side}】**
382
+ message += `人类队伍为:【${side}
387
383
  `;
388
384
  const computerSide = side === "红方" ? "黑方" : "红方";
389
385
  AISide = computerSide;
@@ -412,7 +408,7 @@ ${hImg}`);
412
408
  const hImg = import_koishi.h.image(buffer, `image/${config.imageType}`);
413
409
  return await sendMessage(session, `### 游戏开始!
414
410
  ${message}
415
- 先手方为:**【${sideString}】**
411
+ 先手方为:【${sideString}
416
412
  ${hImg}`);
417
413
  }
418
414
  });
@@ -422,12 +418,12 @@ ${hImg}`);
422
418
  const gameRecord = await getGameRecord(channelId);
423
419
  await checkEngine(channelId);
424
420
  if (!gameRecord.isStarted) {
425
- return await sendMessage(session, `**【@${username}】**
421
+ return await sendMessage(session, `【@${username}
426
422
  游戏未开始哦!
427
423
  完全没必要强制结束嘛~`);
428
424
  } else {
429
425
  await endGame(channelId);
430
- return await sendMessage(session, `**【@${username}】**
426
+ return await sendMessage(session, `【@${username}
431
427
  游戏已被强制结束!`);
432
428
  }
433
429
  });
@@ -435,16 +431,16 @@ ${hImg}`);
435
431
  const { username, userId, channelId } = session;
436
432
  await updateNameInPlayerRecord(userId, username);
437
433
  if (!isMoveString(moveOperation) && !isValidFigureMoveName(moveOperation)) {
438
- return await sendMessage(session, `**【@${username}】**
434
+ return await sendMessage(session, `【@${username}
439
435
  无效的移动!`);
440
436
  }
441
437
  const gameRecord = await getGameRecord(channelId);
442
438
  if (!gameRecord.isStarted) {
443
- return await sendMessage(session, `**【@${username}】**
439
+ return await sendMessage(session, `【@${username}
444
440
  游戏还未开始哦!`);
445
441
  }
446
442
  if (gameRecord.isRegretRequest) {
447
- return await sendMessage(session, `**【@${username}】**
443
+ return await sendMessage(session, `【@${username}
448
444
  正在请求悔棋,等待回应中...`);
449
445
  }
450
446
  const turn = gameRecord.turn;
@@ -460,14 +456,14 @@ ${hImg}`);
460
456
  playerRecord = await ctx.database.get("cchess_gaming_player_records", { channelId, userId });
461
457
  }
462
458
  } else {
463
- return await sendMessage(session, `**【@${username}】**
459
+ return await sendMessage(session, `【@${username}
464
460
  您还未加入游戏呢!`);
465
461
  }
466
462
  }
467
463
  if (playerRecord.length === 0 || playerRecord[0].side !== sideString) {
468
- return await sendMessage(session, `**【@${username}】**
464
+ return await sendMessage(session, `【@${username}
469
465
  还没轮到${sideString}走棋哦!
470
- 当前走棋方为:**【${convertTurnToString(gameRecord.turn)}】**`);
466
+ 当前走棋方为:【${convertTurnToString(gameRecord.turn)}】`);
471
467
  }
472
468
  await checkEngine(channelId);
473
469
  const board = gameRecord.board;
@@ -498,7 +494,7 @@ ${hImg}`);
498
494
  }
499
495
  const duplicateMoveInfo = findMoveInfo(moveInfoList, moveOperation);
500
496
  if (!duplicateMoveInfo) {
501
- return await sendMessage(session, `**【@${username}】**
497
+ return await sendMessage(session, `【@${username}
502
498
  无效的移动!`);
503
499
  } else {
504
500
  [selectedPos, newPos] = duplicateMoveInfo.moveCord;
@@ -511,13 +507,13 @@ ${hImg}`);
511
507
  const side = getSide(piece);
512
508
  const type = getType(piece);
513
509
  if (side !== gameRecord.turn) {
514
- return await sendMessage(session, `**【@${username}】**
510
+ return await sendMessage(session, `【@${username}
515
511
  还没轮到${convertTurnToString(side)}走棋哦!
516
- 当前走棋方为:**【${convertTurnToString(gameRecord.turn)}】**`);
512
+ 当前走棋方为:【${convertTurnToString(gameRecord.turn)}】`);
517
513
  }
518
514
  const moveMap = getValidMoveMap(board, type, side, selectedPos);
519
515
  if (moveMap[newRow][newCol] !== "go" && moveMap[newRow][newCol] !== "eat") {
520
- return await sendMessage(session, `**【@${username}】**
516
+ return await sendMessage(session, `【@${username}
521
517
  无效的移动!`);
522
518
  }
523
519
  await makeMove(channelId, selectedPos, newPos);
@@ -534,10 +530,10 @@ ${hImg}`);
534
530
  const hImg2 = import_koishi.h.image(buffer2, `image/${config.imageType}`);
535
531
  await updatePlayerRecords(channelId, newGameRecord.winSide, newGameRecord.loseSide);
536
532
  await endGame(channelId);
537
- return await sendMessage(session, `**【@${username}】**
533
+ return await sendMessage(session, `【@${username}
538
534
  ### 绝杀!
539
535
  游戏结束!
540
- 获胜方为:**【${convertTurnToString(newGameRecord.winSide)}】**
536
+ 获胜方为:【${convertTurnToString(newGameRecord.winSide)}
541
537
  ${hImg2}`);
542
538
  }
543
539
  if (gameRecord.isEnginePlayRed || gameRecord.isEnginePlayBlack) {
@@ -557,10 +553,10 @@ ${hImg2}`);
557
553
  const hImg2 = import_koishi.h.image(buffer2, `image/${config.imageType}`);
558
554
  await updatePlayerRecords(channelId, engineResultRecord.winSide, engineResultRecord.loseSide);
559
555
  await endGame(channelId);
560
- return await sendMessage(session, `**【@${username}】**
556
+ return await sendMessage(session, `【@${username}
561
557
  ### 绝杀!
562
558
  游戏结束!
563
- 获胜方为:**【${convertTurnToString(engineResultRecord.winSide)}】**
559
+ 获胜方为:【${convertTurnToString(engineResultRecord.winSide)}
564
560
  ${hImg2}`);
565
561
  }
566
562
  }
@@ -576,27 +572,27 @@ ${hImg2}`);
576
572
  await updateNameInPlayerRecord(userId, username);
577
573
  const gameRecord = await getGameRecord(channelId);
578
574
  if (!gameRecord.isStarted) {
579
- return await sendMessage(session, `**【@${username}】**
575
+ return await sendMessage(session, `【@${username}
580
576
  游戏还未开始哦!`);
581
577
  }
582
578
  await checkEngine(channelId);
583
579
  if (gameRecord.isRegretRequest) {
584
- return await sendMessage(session, `**【@${username}】**
580
+ return await sendMessage(session, `【@${username}
585
581
  已经有悔棋请求了!`);
586
582
  }
587
583
  const playerRecord = await ctx.database.get("cchess_gaming_player_records", { channelId, userId });
588
584
  if (playerRecord.length === 0) {
589
- return await sendMessage(session, `**【@${username}】**
585
+ return await sendMessage(session, `【@${username}
590
586
  您还未加入游戏呢!`);
591
587
  }
592
588
  const turn = gameRecord.turn;
593
589
  const sideString = convertTurnToString(turn);
594
590
  if (gameRecord.isAnalyzing) {
595
- return await sendMessage(session, `**【@${username}】**
591
+ return await sendMessage(session, `【@${username}
596
592
  对局分析中,请稍后再试!`);
597
593
  }
598
594
  if (gameRecord.moveList.length < 1) {
599
- return await sendMessage(session, `**【@${username}】**
595
+ return await sendMessage(session, `【@${username}
600
596
  当前无法悔棋!`);
601
597
  }
602
598
  if (gameRecord.isEnginePlayBlack || gameRecord.isEnginePlayRed) {
@@ -604,16 +600,16 @@ ${hImg2}`);
604
600
  await undoMove(channelId);
605
601
  const buffer = await drawChessBoard(channelId);
606
602
  const hImg = import_koishi.h.image(buffer, `image/${config.imageType}`);
607
- return await sendMessage(session, `**【@${username}】**
603
+ return await sendMessage(session, `【@${username}
608
604
  悔棋成功!
609
605
  ${hImg}`);
610
606
  } else {
611
607
  if (playerRecord[0].side === sideString) {
612
- return await sendMessage(session, `**【@${username}】**
608
+ return await sendMessage(session, `【@${username}
613
609
  现在轮到你下棋,不可悔棋!`);
614
610
  } else {
615
611
  await ctx.database.set("cchess_game_records", { channelId }, { isRegretRequest: true });
616
- return await sendMessage(session, `**【@${username}】**
612
+ return await sendMessage(session, `【@${username}
617
613
  请求悔棋中...
618
614
  请对方输入相关指令选择同意或拒绝!`);
619
615
  }
@@ -624,34 +620,34 @@ ${hImg}`);
624
620
  await updateNameInPlayerRecord(userId, username);
625
621
  const gameRecord = await getGameRecord(channelId);
626
622
  if (!gameRecord.isStarted) {
627
- return await sendMessage(session, `**【@${username}】**
623
+ return await sendMessage(session, `【@${username}
628
624
  游戏还未开始哦!`);
629
625
  }
630
626
  await checkEngine(channelId);
631
627
  if (gameRecord.isAnalyzing) {
632
- return await sendMessage(session, `**【@${username}】**
628
+ return await sendMessage(session, `【@${username}
633
629
  对局分析中,请稍后再试!`);
634
630
  }
635
631
  if (!gameRecord.isRegretRequest) {
636
- return await sendMessage(session, `**【@${username}】**
632
+ return await sendMessage(session, `【@${username}
637
633
  当前无悔棋请求!`);
638
634
  }
639
635
  const playerRecord = await ctx.database.get("cchess_gaming_player_records", { channelId, userId });
640
636
  if (playerRecord.length === 0) {
641
- return await sendMessage(session, `**【@${username}】**
637
+ return await sendMessage(session, `【@${username}
642
638
  您还未加入游戏呢!`);
643
639
  }
644
640
  const turn = gameRecord.turn;
645
641
  const sideString = convertTurnToString(turn);
646
642
  if (playerRecord[0].side !== sideString) {
647
- return await sendMessage(session, `**【@${username}】**
643
+ return await sendMessage(session, `【@${username}
648
644
  您所在的队伍不能做出选择!`);
649
645
  } else {
650
646
  await undoMove(channelId);
651
647
  await ctx.database.set("cchess_game_records", { channelId }, { isRegretRequest: false });
652
648
  const buffer = await drawChessBoard(channelId);
653
649
  const hImg = import_koishi.h.image(buffer, `image/${config.imageType}`);
654
- return await sendMessage(session, `**【@${username}】**
650
+ return await sendMessage(session, `【@${username}
655
651
  由于您同意了对方的悔棋请求!
656
652
  悔棋成功!
657
653
  ${hImg}`);
@@ -662,33 +658,33 @@ ${hImg}`);
662
658
  await updateNameInPlayerRecord(userId, username);
663
659
  const gameRecord = await getGameRecord(channelId);
664
660
  if (!gameRecord.isStarted) {
665
- return await sendMessage(session, `**【@${username}】**
661
+ return await sendMessage(session, `【@${username}
666
662
  游戏还未开始哦!`);
667
663
  }
668
664
  await checkEngine(channelId);
669
665
  if (gameRecord.isAnalyzing) {
670
- return await sendMessage(session, `**【@${username}】**
666
+ return await sendMessage(session, `【@${username}
671
667
  对局分析中,请稍后再试!`);
672
668
  }
673
669
  if (!gameRecord.isRegretRequest) {
674
- return await sendMessage(session, `**【@${username}】**
670
+ return await sendMessage(session, `【@${username}
675
671
  当前无悔棋请求!`);
676
672
  }
677
673
  const playerRecord = await ctx.database.get("cchess_gaming_player_records", { channelId, userId });
678
674
  if (playerRecord.length === 0) {
679
- return await sendMessage(session, `**【@${username}】**
675
+ return await sendMessage(session, `【@${username}
680
676
  您还未加入游戏呢!`);
681
677
  }
682
678
  const turn = gameRecord.turn;
683
679
  const sideString = convertTurnToString(turn);
684
680
  if (playerRecord[0].side !== sideString) {
685
- return await sendMessage(session, `**【@${username}】**
681
+ return await sendMessage(session, `【@${username}
686
682
  您所在的队伍不能做出选择!`);
687
683
  } else {
688
684
  await ctx.database.set("cchess_game_records", { channelId }, { isRegretRequest: false });
689
685
  const buffer = await drawChessBoard(channelId);
690
686
  const hImg = import_koishi.h.image(buffer, `image/${config.imageType}`);
691
- return await sendMessage(session, `**【@${username}】**
687
+ return await sendMessage(session, `【@${username}
692
688
  由于您拒绝了对方的悔棋请求!
693
689
  悔棋失败,游戏继续进行!
694
690
  ${hImg}`);
@@ -699,33 +695,33 @@ ${hImg}`);
699
695
  await updateNameInPlayerRecord(userId, username);
700
696
  const gameRecord = await getGameRecord(channelId);
701
697
  if (!gameRecord.isStarted) {
702
- return await sendMessage(session, `**【@${username}】**
698
+ return await sendMessage(session, `【@${username}
703
699
  游戏还未开始哦!`);
704
700
  }
705
701
  await checkEngine(channelId);
706
702
  if (gameRecord.isAnalyzing) {
707
- return await sendMessage(session, `**【@${username}】**
703
+ return await sendMessage(session, `【@${username}
708
704
  对局分析中,请稍后再试!`);
709
705
  }
710
706
  const playerRecord = await ctx.database.get("cchess_gaming_player_records", { channelId, userId });
711
707
  if (playerRecord.length === 0) {
712
- return await sendMessage(session, `**【@${username}】**
708
+ return await sendMessage(session, `【@${username}
713
709
  您还未加入游戏呢!`);
714
710
  }
715
711
  const turn = gameRecord.turn;
716
712
  const sideString = convertTurnToString(turn);
717
713
  if (playerRecord[0].side !== sideString) {
718
- return await sendMessage(session, `**【@${username}】**
714
+ return await sendMessage(session, `【@${username}
719
715
  还没轮到${sideString}走棋哦!
720
- 当前走棋方为:**【${convertTurnToString(gameRecord.turn)}】**`);
716
+ 当前走棋方为:【${convertTurnToString(gameRecord.turn)}】`);
721
717
  }
722
718
  const anotherSideString = convertTurnToString(turn === "w" ? "b" : "w");
723
719
  await updatePlayerRecords(channelId, turn === "w" ? "b" : "w", turn);
724
720
  await endGame(channelId);
725
- return await sendMessage(session, `**【@${username}】**
721
+ return await sendMessage(session, `【@${username}
726
722
  认输成功!
727
723
  游戏结束!
728
- 获胜方为:**【${anotherSideString}】**`);
724
+ 获胜方为:【${anotherSideString}】`);
729
725
  });
730
726
  ctx.command("cchess.查看云库残局", "云库残局指令帮助").action(async ({ session }) => {
731
727
  await session.execute(`cchess.查看云库残局 -h`);
@@ -734,14 +730,14 @@ ${hImg}`);
734
730
  const { username, userId, channelId } = session;
735
731
  await updateNameInPlayerRecord(userId, username);
736
732
  await checkEngine(channelId);
737
- return await sendMessage(session, `**【@${username}】**
733
+ return await sendMessage(session, `【@${username}
738
734
  https://www.chessdb.cn/egtb_info_dtm.html`);
739
735
  });
740
736
  ctx.command("cchess.查看云库残局.DTC统计", "云库残局DTM统计").action(async ({ session }) => {
741
737
  const { username, userId, channelId } = session;
742
738
  await updateNameInPlayerRecord(userId, username);
743
739
  await checkEngine(channelId);
744
- return await sendMessage(session, `**【@${username}】**
740
+ return await sendMessage(session, `【@${username}
745
741
  https://www.chessdb.cn/egtb_info.html`);
746
742
  });
747
743
  ctx.command("cchess.编辑棋盘", "编辑棋盘指令帮助").action(async ({ session }) => {
@@ -752,13 +748,13 @@ https://www.chessdb.cn/egtb_info.html`);
752
748
  await updateNameInPlayerRecord(userId, username);
753
749
  const gameRecord = await getGameRecord(channelId);
754
750
  if (gameRecord.isStarted) {
755
- return await sendMessage(session, `**【@${username}】**
751
+ return await sendMessage(session, `【@${username}
756
752
  游戏已经开始啦~
757
753
  不可编辑棋盘!`);
758
754
  }
759
755
  await checkEngine(channelId);
760
756
  if (!fen || !isValidateFen(fen)) {
761
- return await sendMessage(session, `**【@${username}】**
757
+ return await sendMessage(session, `【@${username}
762
758
  无效的FEN串!`);
763
759
  }
764
760
  const t = fen;
@@ -778,7 +774,7 @@ https://www.chessdb.cn/egtb_info.html`);
778
774
  startFen: newStartFen
779
775
  });
780
776
  await parseFen(channelId, t);
781
- return await sendMessage(session, `**【@${username}】**
777
+ return await sendMessage(session, `【@${username}
782
778
  棋盘编辑成功!`);
783
779
  });
784
780
  ctx.command("cchess.编辑棋盘.导出", "导出FEN串").action(async ({ session }) => {
@@ -786,23 +782,23 @@ https://www.chessdb.cn/egtb_info.html`);
786
782
  await updateNameInPlayerRecord(userId, username);
787
783
  const gameRecord = await getGameRecord(channelId);
788
784
  if (!gameRecord.isStarted) {
789
- return await sendMessage(session, `**【@${username}】**
785
+ return await sendMessage(session, `【@${username}
790
786
  游戏还未开始哦!`);
791
787
  }
792
788
  if (gameRecord.isAnalyzing) {
793
- return await sendMessage(session, `**【@${username}】**
789
+ return await sendMessage(session, `【@${username}
794
790
  对局分析中,请稍后再试!`);
795
791
  }
796
792
  await checkEngine(channelId);
797
793
  const fenWithFullMove = await getFenWithFullMove(channelId);
798
- return await sendMessage(session, `**【@${username}】**
794
+ return await sendMessage(session, `【@${username}
799
795
  ${fenWithFullMove}`);
800
796
  });
801
797
  ctx.command("cchess.编辑棋盘.使用方法", "查看编辑棋盘的fen使用方法").action(async ({ session }) => {
802
798
  const { username, userId, channelId } = session;
803
799
  await updateNameInPlayerRecord(userId, username);
804
800
  await checkEngine(channelId);
805
- return await sendMessage(session, `**【@${username}】**
801
+ return await sendMessage(session, `【@${username}
806
802
  https://www.xqbase.com/protocol/cchess_fen.htm`);
807
803
  });
808
804
  ctx.command("cchess.排行榜.总胜场 [number:number]", "查看玩家总胜场排行榜").action(async ({ session }, number = config.defaultMaxLeaderboardEntries) => {
@@ -839,12 +835,12 @@ https://www.xqbase.com/protocol/cchess_fen.htm`);
839
835
  lose: 0,
840
836
  win: 0
841
837
  });
842
- return sendMessage(session, `**【@${session.username}】**
838
+ return sendMessage(session, `【@${session.username}
843
839
  查询对象:${username}
844
840
  无任何游戏记录。`);
845
841
  }
846
842
  const { win, lose } = targetUserRecord[0];
847
- return sendMessage(session, `**【@${session.username}】**
843
+ return sendMessage(session, `【@${session.username}
848
844
  查询对象:${username}
849
845
  总胜场次数为:${win} 次
850
846
  总输场次数为:${lose} 次
@@ -1955,13 +1951,7 @@ https://www.xqbase.com/protocol/cchess_fen.htm`);
1955
1951
  async function sendMessage(session, message) {
1956
1952
  const { bot, channelId } = session;
1957
1953
  let messageId;
1958
- if (config.isTextToImageConversionEnabled) {
1959
- const imageBuffer = await ctx.markdownToImage.convertToImage(message);
1960
- [messageId] = await session.send(import_koishi.h.image(imageBuffer, `image/${config.imageType}`));
1961
- } else {
1962
- let plainText = message.replace(/\*\*(.*?)\*\*/g, "$1").replace(/^#+\s*/gm, "").replace(/\[([^\]]+)\]\([^\)]+\)/g, "$1");
1963
- [messageId] = await session.send(plainText);
1964
- }
1954
+ [messageId] = await session.send(message);
1965
1955
  if (config.retractDelay === 0) return;
1966
1956
  sentMessages.push(messageId);
1967
1957
  if (sentMessages.length > 1) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-cchess",
3
3
  "description": "Koishi 的中国象棋插件。支持人人/人机对战。",
4
- "version": "1.0.4",
4
+ "version": "1.0.5",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [
@@ -14,9 +14,6 @@
14
14
  "database",
15
15
  "puppeteer",
16
16
  "canvas"
17
- ],
18
- "optional": [
19
- "markdownToImage"
20
17
  ]
21
18
  }
22
19
  },
@@ -48,7 +45,6 @@
48
45
  "koishi": "^4.18.9"
49
46
  },
50
47
  "devDependencies": {
51
- "koishi-plugin-markdown-to-image-service": "^1.2.1",
52
48
  "koishi-plugin-puppeteer": "^3.9.0"
53
49
  }
54
50
  }
package/readme.md CHANGED
@@ -1,9 +1,8 @@
1
- # koishi-plugin-cchess
1
+ koishi-plugin-cchess
2
+ ====================
2
3
 
3
- [![github](https://img.shields.io/badge/github-araea/cchess-8da0cb?style=for-the-badge&labelColor=555555&logo=github)](https://github.com/araea/koishi-plugin-cchess)
4
- [![npm](https://img.shields.io/npm/v/koishi-plugin-cchess.svg?style=for-the-badge&color=fc8d62&logo=npm)](https://www.npmjs.com/package/koishi-plugin-cchess)
5
-
6
- ## 简介
4
+ [<img alt="github" src="https://img.shields.io/badge/github-araea/cchess-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="20">](https://github.com/araea/koishi-plugin-cchess)
5
+ [<img alt="npm" src="https://img.shields.io/npm/v/koishi-plugin-cchess.svg?style=for-the-badge&color=fc8d62&logo=npm" height="20">](https://www.npmjs.com/package/koishi-plugin-cchess)
7
6
 
8
7
  Koishi 的中国象棋插件。支持人人/人机对战。
9
8
 
@@ -31,10 +30,19 @@ Koishi 的中国象棋插件。支持人人/人机对战。
31
30
 
32
31
  - 956758505
33
32
 
34
- ---
33
+ <br>
34
+
35
+ #### License
35
36
 
36
- ### License
37
+ <sup>
38
+ Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
39
+ 2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
40
+ </sup>
37
41
 
38
- _Licensed under either of [Apache License, Version 2.0](LICENSE-APACHE) or [MIT license](LICENSE-MIT) at your option._
42
+ <br>
39
43
 
40
- _Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions._
44
+ <sub>
45
+ Unless you explicitly state otherwise, any contribution intentionally submitted
46
+ for inclusion in this crate by you, as defined in the Apache-2.0 license, shall
47
+ be dual licensed as above, without any additional terms or conditions.
48
+ </sub>