koishi-plugin-echo-cave 1.25.1 → 1.26.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/lib/index.cjs +49 -47
- package/package.json +1 -1
package/lib/index.cjs
CHANGED
|
@@ -94,16 +94,13 @@ function parseUserIds(userIds) {
|
|
|
94
94
|
|
|
95
95
|
// src/utils/msg/message-listener.ts
|
|
96
96
|
async function listenForUserMessage(ctx, session, prompt, timeout, onMessage, onTimeout) {
|
|
97
|
-
const userId = session
|
|
98
|
-
const channelId = session.channelId;
|
|
97
|
+
const { userId, channelId } = session;
|
|
99
98
|
const promptMessageId = await session.onebot.sendGroupMsg(channelId, prompt);
|
|
100
|
-
let timeoutId;
|
|
101
99
|
const listener = async (msgSession) => {
|
|
102
100
|
if (msgSession.userId === userId && msgSession.channelId === channelId) {
|
|
103
|
-
clearTimeout(timeoutId);
|
|
104
101
|
const shouldContinue = await onMessage(msgSession.content);
|
|
105
102
|
if (!shouldContinue) {
|
|
106
|
-
|
|
103
|
+
cancelListener();
|
|
107
104
|
try {
|
|
108
105
|
await session.onebot.deleteMsg(promptMessageId);
|
|
109
106
|
} catch (error) {
|
|
@@ -112,9 +109,9 @@ async function listenForUserMessage(ctx, session, prompt, timeout, onMessage, on
|
|
|
112
109
|
}
|
|
113
110
|
}
|
|
114
111
|
};
|
|
115
|
-
ctx.on("message", listener);
|
|
112
|
+
const cancelListener = ctx.on("message", listener);
|
|
116
113
|
const cancelTimeout = ctx.setTimeout(async () => {
|
|
117
|
-
|
|
114
|
+
cancelListener();
|
|
118
115
|
if (onTimeout) {
|
|
119
116
|
await onTimeout();
|
|
120
117
|
}
|
|
@@ -408,6 +405,7 @@ async function addCave(ctx, session, cfg, userIds) {
|
|
|
408
405
|
}
|
|
409
406
|
}
|
|
410
407
|
}
|
|
408
|
+
let selectedUsersWithNames = [];
|
|
411
409
|
let content;
|
|
412
410
|
let type;
|
|
413
411
|
let forwardUsers = [];
|
|
@@ -450,49 +448,53 @@ async function addCave(ctx, session, cfg, userIds) {
|
|
|
450
448
|
content = JSON.stringify(await processMessageContent(ctx, msgJson, cfg));
|
|
451
449
|
}
|
|
452
450
|
if (type === "forward" && forwardUsers.length > 0 && parsedUserIds.length === 0 && cfg.enableForwardUserSelection) {
|
|
453
|
-
const userSelectionPromise = new Promise(
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
451
|
+
const userSelectionPromise = new Promise(
|
|
452
|
+
(resolve) => {
|
|
453
|
+
let prompt = session.text(".selectRelatedUsers");
|
|
454
|
+
forwardUsers.forEach((user, index) => {
|
|
455
|
+
prompt += `
|
|
457
456
|
${index + 1}: ${user.nickname}`;
|
|
458
|
-
|
|
459
|
-
|
|
457
|
+
});
|
|
458
|
+
prompt += `
|
|
460
459
|
${session.text(".selectInstruction")}`;
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
} else {
|
|
475
|
-
const indices = trimmedMessage.split(/\s+/).map((index) => parseInt(index.trim()) - 1);
|
|
476
|
-
const validIndices = indices.filter(
|
|
477
|
-
(index) => index >= 0 && index < forwardUsers.length
|
|
478
|
-
);
|
|
479
|
-
if (validIndices.length > 0) {
|
|
480
|
-
selectedUsers = validIndices.map((index) => forwardUsers[index].userId);
|
|
460
|
+
listenForUserMessage(
|
|
461
|
+
ctx,
|
|
462
|
+
session,
|
|
463
|
+
prompt,
|
|
464
|
+
cfg.forwardSelectTimeout * 1e3,
|
|
465
|
+
// Convert seconds to milliseconds
|
|
466
|
+
async (message) => {
|
|
467
|
+
const trimmedMessage = message.trim();
|
|
468
|
+
let selectedUsers = [];
|
|
469
|
+
if (trimmedMessage.toLowerCase() === "all") {
|
|
470
|
+
selectedUsers = [...forwardUsers];
|
|
471
|
+
} else if (trimmedMessage.toLowerCase() === "skip") {
|
|
472
|
+
selectedUsers = [];
|
|
481
473
|
} else {
|
|
482
|
-
|
|
483
|
-
|
|
474
|
+
const indices = trimmedMessage.split(/\s+/).map((index) => parseInt(index.trim()) - 1);
|
|
475
|
+
const validIndices = indices.filter(
|
|
476
|
+
(index) => index >= 0 && index < forwardUsers.length
|
|
477
|
+
);
|
|
478
|
+
if (validIndices.length > 0) {
|
|
479
|
+
selectedUsers = validIndices.map((index) => forwardUsers[index]);
|
|
480
|
+
} else {
|
|
481
|
+
await session.send(session.text(".invalidSelection"));
|
|
482
|
+
return true;
|
|
483
|
+
}
|
|
484
484
|
}
|
|
485
|
+
resolve(selectedUsers);
|
|
486
|
+
return false;
|
|
487
|
+
},
|
|
488
|
+
async () => {
|
|
489
|
+
resolve([]);
|
|
485
490
|
}
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
resolve([]);
|
|
491
|
-
}
|
|
492
|
-
);
|
|
493
|
-
});
|
|
494
|
-
parsedUserIds = await userSelectionPromise;
|
|
491
|
+
);
|
|
492
|
+
}
|
|
493
|
+
);
|
|
494
|
+
selectedUsersWithNames = await userSelectionPromise;
|
|
495
495
|
}
|
|
496
|
+
const finalParsedUserIds = selectedUsersWithNames.map((user) => user.userId);
|
|
497
|
+
const relatedUsersFormatted = selectedUsersWithNames.map((user) => user.nickname).join(", ");
|
|
496
498
|
try {
|
|
497
499
|
const result = await ctx.database.create("echo_cave_v2", {
|
|
498
500
|
channelId,
|
|
@@ -501,9 +503,9 @@ ${session.text(".selectInstruction")}`;
|
|
|
501
503
|
originUserId: quote.user.id,
|
|
502
504
|
type,
|
|
503
505
|
content,
|
|
504
|
-
relatedUsers:
|
|
506
|
+
relatedUsers: finalParsedUserIds
|
|
505
507
|
});
|
|
506
|
-
return session.text(".msgSaved",
|
|
508
|
+
return session.text(".msgSaved", { id: result.id, relatedUsers: relatedUsersFormatted });
|
|
507
509
|
} catch (error) {
|
|
508
510
|
return session.text(".msgFailedToSave");
|
|
509
511
|
}
|
|
@@ -1057,7 +1059,7 @@ var zh_CN_default = {
|
|
|
1057
1059
|
description: "\u5C06\u6D88\u606F\u5B58\u5165\u56DE\u58F0\u6D1E",
|
|
1058
1060
|
messages: {
|
|
1059
1061
|
noMsgQuoted: "\u{1F4A1} \u8BF7\u5F15\u7528\u4E00\u6761\u6D88\u606F\u540E\u518D\u4F7F\u7528\u6B64\u547D\u4EE4\uFF01",
|
|
1060
|
-
msgSaved: "\u2705 \u56DE\u58F0\u6D1E\u6D88\u606F\u5DF2\u6210\u529F\u5B58\u5165\uFF0C\u6D88\u606F ID\uFF1A{
|
|
1062
|
+
msgSaved: "\u2705 \u56DE\u58F0\u6D1E\u6D88\u606F\u5DF2\u6210\u529F\u5B58\u5165\uFF0C\u6D88\u606F ID\uFF1A{id}",
|
|
1061
1063
|
msgFailedToSave: "\u274C \u56DE\u58F0\u6D1E\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF01",
|
|
1062
1064
|
selectRelatedUsers: "\u8BF7\u9009\u62E9\u8981\u5173\u8054\u7684\u7528\u6237\uFF08\u4EE5\u7A7A\u683C\u5206\u9694\u5E8F\u53F7\uFF0C\u8F93\u5165'all'\u9009\u62E9\u5168\u90E8\uFF09\uFF1A",
|
|
1063
1065
|
selectInstruction: "\u8F93\u5165\u793A\u4F8B\uFF1A1 3 \u6216 all \u6216 skip",
|