koishi-plugin-echo-cave 1.12.0 → 1.12.1

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.
@@ -1,5 +1,5 @@
1
1
  import { Config } from './index';
2
2
  import { CQCode } from '@pynickle/koishi-plugin-adapter-onebot';
3
3
  import { Message } from '@pynickle/koishi-plugin-adapter-onebot/lib/types';
4
- import { Context } from 'koishi';
5
- export declare function reconstructForwardMsg(ctx: Context, message: Message[], cfg: Config): Promise<CQCode[]>;
4
+ import { Context, Session } from 'koishi';
5
+ export declare function reconstructForwardMsg(ctx: Context, session: Session, message: Message[], cfg: Config): Promise<CQCode[]>;
package/lib/index.cjs CHANGED
@@ -356,28 +356,39 @@ async function checkAndCleanMediaFiles(ctx, cfg, type) {
356
356
  }
357
357
 
358
358
  // src/forward-helper.ts
359
- async function reconstructForwardMsg(ctx, message, cfg) {
359
+ async function reconstructForwardMsg(ctx, session, message, cfg) {
360
360
  return Promise.all(
361
361
  message.map(async (msg) => {
362
- const content = await processForwardMessageContent(ctx, msg, cfg);
362
+ const content = await processForwardMessageContent(ctx, session, msg, cfg);
363
+ const senderNickname = msg.sender.nickname;
364
+ let senderUserId = msg.sender.user_id;
365
+ senderUserId = senderUserId === 1094950020 ? await getUserIdFromNickname(session, senderNickname, senderUserId) : senderUserId;
363
366
  return {
364
367
  type: "node",
365
368
  data: {
366
- user_id: msg.sender.user_id,
367
- nickname: msg.sender.nickname,
369
+ user_id: senderUserId,
370
+ nickname: senderNickname,
368
371
  content
369
372
  }
370
373
  };
371
374
  })
372
375
  );
373
376
  }
374
- async function processForwardMessageContent(ctx, msg, cfg) {
377
+ async function getUserIdFromNickname(session, nickname, userId) {
378
+ const memberInfos = await session.onebot.getGroupMemberList(session.channelId);
379
+ const matches = memberInfos.filter((m) => m.nickname === nickname);
380
+ if (matches.length === 1) {
381
+ return matches[0].user_id;
382
+ }
383
+ return userId;
384
+ }
385
+ async function processForwardMessageContent(ctx, session, msg, cfg) {
375
386
  if (typeof msg.message === "string") {
376
387
  return msg.message;
377
388
  }
378
389
  const firstElement = msg.message[0];
379
390
  if (firstElement?.type === "forward") {
380
- return reconstructForwardMsg(ctx, firstElement.data.content, cfg);
391
+ return reconstructForwardMsg(ctx, session, firstElement.data.content, cfg);
381
392
  }
382
393
  return Promise.all(
383
394
  msg.message.map(async (element) => {
@@ -566,6 +577,7 @@ async function addCave(ctx, session, cfg) {
566
577
  type = "forward";
567
578
  const message = await reconstructForwardMsg(
568
579
  ctx,
580
+ session,
569
581
  await session.onebot.getForwardMsg(messageId),
570
582
  cfg
571
583
  );
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-echo-cave",
3
3
  "description": "Group echo cave",
4
- "version": "1.12.0",
4
+ "version": "1.12.1",
5
5
  "main": "lib/index.cjs",
6
6
  "typings": "lib/index.d.ts",
7
7
  "type": "module",