koishi-plugin-echo-cave 1.16.6 → 1.16.8
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/cqcode-helper.d.ts +5 -0
- package/lib/index.cjs +61 -12
- package/package.json +1 -1
package/lib/cqcode-helper.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
export interface ParseResult {
|
|
2
|
+
parsedUserIds: string[];
|
|
3
|
+
error?: string;
|
|
4
|
+
}
|
|
1
5
|
export declare function createTextMsg(content: string): {
|
|
2
6
|
type: string;
|
|
3
7
|
data: {
|
|
4
8
|
text: string;
|
|
5
9
|
};
|
|
6
10
|
};
|
|
11
|
+
export declare function parseUserIds(userIds: string[]): ParseResult;
|
package/lib/index.cjs
CHANGED
|
@@ -97,7 +97,8 @@ var require_zh_CN = __commonJS({
|
|
|
97
97
|
existingMsg: "\u267B\uFE0F \u8BE5\u6D88\u606F\u5DF2\u5B58\u5728\u4E8E\u56DE\u58F0\u6D1E\u7A74\u4E2D\uFF01",
|
|
98
98
|
msgSaved: "\u2705 \u56DE\u58F0\u6D1E\u6D88\u606F\u5DF2\u6210\u529F\u5B58\u5165\uFF0C\u6D88\u606F ID\uFF1A{0}",
|
|
99
99
|
msgFailedToSave: "\u274C \u56DE\u58F0\u6D1E\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF01",
|
|
100
|
-
userNotInGroup: "\u274C \u63D0\u4F9B\u7684\u7528\u6237 ID \u4E0D\u5168\u5C5E\u4E8E\u8BE5\u7FA4\u7EC4\uFF01"
|
|
100
|
+
userNotInGroup: "\u274C \u63D0\u4F9B\u7684\u7528\u6237 ID \u4E0D\u5168\u5C5E\u4E8E\u8BE5\u7FA4\u7EC4\uFF01",
|
|
101
|
+
invalidAllMention: "\u274C \u4E0D\u652F\u6301 @\u5168\u4F53\u6210\u5458\uFF0C\u8BF7\u76F4\u63A5\u6307\u5B9A\u5177\u4F53\u7528\u6237\uFF01"
|
|
101
102
|
}
|
|
102
103
|
},
|
|
103
104
|
"cave.wipe": {
|
|
@@ -135,7 +136,8 @@ var require_zh_CN = __commonJS({
|
|
|
135
136
|
msgNotFound: "\u{1F50D} \u672A\u627E\u5230\u8BE5 ID \u7684\u56DE\u58F0\u6D1E\u6D88\u606F",
|
|
136
137
|
userBoundSuccess: "\u2705 \u5DF2\u6210\u529F\u5C06\u7528\u6237\u7ED1\u5B9A\u5230\u56DE\u58F0\u6D1E #{0}\uFF01",
|
|
137
138
|
userAlreadyBound: "\u2139\uFE0F \u8BE5\u7528\u6237\u5DF2\u7ED1\u5B9A\u5230\u56DE\u58F0\u6D1E #{0}\uFF01",
|
|
138
|
-
userNotInGroup: "\u274C \u63D0\u4F9B\u7684\u7528\u6237 ID \u4E0D\u5168\u5C5E\u4E8E\u8BE5\u7FA4\u7EC4\uFF01"
|
|
139
|
+
userNotInGroup: "\u274C \u63D0\u4F9B\u7684\u7528\u6237 ID \u4E0D\u5168\u5C5E\u4E8E\u8BE5\u7FA4\u7EC4\uFF01",
|
|
140
|
+
invalidAllMention: "\u274C \u4E0D\u652F\u6301 @\u5168\u4F53\u6210\u5458\uFF0C\u8BF7\u76F4\u63A5\u6307\u5B9A\u5177\u4F53\u7528\u6237\uFF01"
|
|
139
141
|
}
|
|
140
142
|
}
|
|
141
143
|
}
|
|
@@ -152,9 +154,10 @@ __export(index_exports, {
|
|
|
152
154
|
name: () => name
|
|
153
155
|
});
|
|
154
156
|
module.exports = __toCommonJS(index_exports);
|
|
155
|
-
var
|
|
157
|
+
var import_koishi_plugin_adapter_onebot2 = require("@pynickle/koishi-plugin-adapter-onebot");
|
|
156
158
|
|
|
157
159
|
// src/cqcode-helper.ts
|
|
160
|
+
var import_koishi_plugin_adapter_onebot = require("@pynickle/koishi-plugin-adapter-onebot");
|
|
158
161
|
function createTextMsg(content) {
|
|
159
162
|
return {
|
|
160
163
|
type: "text",
|
|
@@ -163,6 +166,39 @@ function createTextMsg(content) {
|
|
|
163
166
|
}
|
|
164
167
|
};
|
|
165
168
|
}
|
|
169
|
+
function parseUserIds(userIds) {
|
|
170
|
+
const parsedUserIds = [];
|
|
171
|
+
for (const userIdStr of userIds) {
|
|
172
|
+
try {
|
|
173
|
+
const cqCode = import_koishi_plugin_adapter_onebot.CQCode.from(userIdStr);
|
|
174
|
+
if (cqCode.type === "at") {
|
|
175
|
+
const qq = cqCode.data.qq;
|
|
176
|
+
if (qq === "all") {
|
|
177
|
+
return {
|
|
178
|
+
parsedUserIds: [],
|
|
179
|
+
error: "invalid_all_mention"
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
if (qq) {
|
|
183
|
+
parsedUserIds.push(qq);
|
|
184
|
+
}
|
|
185
|
+
} else {
|
|
186
|
+
const num = Number(userIdStr);
|
|
187
|
+
if (!Number.isNaN(num)) {
|
|
188
|
+
parsedUserIds.push(String(num));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
} catch (e) {
|
|
192
|
+
const num = Number(userIdStr);
|
|
193
|
+
if (!Number.isNaN(num)) {
|
|
194
|
+
parsedUserIds.push(String(num));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
parsedUserIds
|
|
200
|
+
};
|
|
201
|
+
}
|
|
166
202
|
|
|
167
203
|
// src/media-helper.ts
|
|
168
204
|
var import_axios = __toESM(require("axios"), 1);
|
|
@@ -510,7 +546,7 @@ async function processMessageContent(ctx, msg, cfg) {
|
|
|
510
546
|
}
|
|
511
547
|
|
|
512
548
|
// src/index.ts
|
|
513
|
-
var
|
|
549
|
+
var import_koishi_plugin_adapter_onebot3 = require("@pynickle/koishi-plugin-adapter-onebot");
|
|
514
550
|
var import_koishi = require("koishi");
|
|
515
551
|
var name = "echo-cave";
|
|
516
552
|
var inject = ["database"];
|
|
@@ -550,7 +586,7 @@ function apply(ctx, cfg) {
|
|
|
550
586
|
ctx.command("cave [id:number]").action(
|
|
551
587
|
async ({ session }, id) => await getCave(ctx, session, cfg, id)
|
|
552
588
|
);
|
|
553
|
-
ctx.command("cave.echo [...userIds:
|
|
589
|
+
ctx.command("cave.echo [...userIds:user]").action(
|
|
554
590
|
async ({ session }, ...userIds) => await addCave(ctx, session, cfg, userIds)
|
|
555
591
|
);
|
|
556
592
|
ctx.command("cave.wipe <id:number>").action(
|
|
@@ -560,7 +596,7 @@ function apply(ctx, cfg) {
|
|
|
560
596
|
ctx.command("cave.trace").action(
|
|
561
597
|
async ({ session }) => await getCaveListByOriginUser(ctx, session)
|
|
562
598
|
);
|
|
563
|
-
ctx.command("cave.bind <id:number> <...userIds:
|
|
599
|
+
ctx.command("cave.bind <id:number> <...userIds:user>", { authority: 4 }).action(
|
|
564
600
|
async ({ session }, id, ...userIds) => await bindUsersToCave(ctx, session, id, userIds)
|
|
565
601
|
);
|
|
566
602
|
}
|
|
@@ -677,9 +713,15 @@ async function addCave(ctx, session, cfg, userIds) {
|
|
|
677
713
|
}
|
|
678
714
|
const { userId, channelId, quote } = session;
|
|
679
715
|
const messageId = quote.id;
|
|
680
|
-
|
|
716
|
+
let parsedUserIds = [];
|
|
681
717
|
if (userIds && userIds.length > 0) {
|
|
682
|
-
const
|
|
718
|
+
const result = parseUserIds(userIds);
|
|
719
|
+
if (result.error === "invalid_all_mention") {
|
|
720
|
+
return session.text(".invalidAllMention");
|
|
721
|
+
}
|
|
722
|
+
parsedUserIds = result.parsedUserIds;
|
|
723
|
+
ctx.logger.info(`Parsed userIds in addCave: ${JSON.stringify(parsedUserIds)}`);
|
|
724
|
+
const isAllUsersInGroup = await checkUsersInGroup(ctx, session, parsedUserIds);
|
|
683
725
|
if (!isAllUsersInGroup) {
|
|
684
726
|
return session.text(".userNotInGroup");
|
|
685
727
|
}
|
|
@@ -700,7 +742,7 @@ async function addCave(ctx, session, cfg, userIds) {
|
|
|
700
742
|
const message = (await session.onebot.getMsg(messageId)).message;
|
|
701
743
|
let msgJson;
|
|
702
744
|
if (typeof message === "string") {
|
|
703
|
-
msgJson =
|
|
745
|
+
msgJson = import_koishi_plugin_adapter_onebot3.CQCode.parse(message);
|
|
704
746
|
} else {
|
|
705
747
|
if (message[0].type === "video" || message[0].type === "file") {
|
|
706
748
|
type = "forward";
|
|
@@ -722,7 +764,7 @@ async function addCave(ctx, session, cfg, userIds) {
|
|
|
722
764
|
originUserId: quote.user.id,
|
|
723
765
|
type,
|
|
724
766
|
content,
|
|
725
|
-
relatedUsers:
|
|
767
|
+
relatedUsers: parsedUserIds || []
|
|
726
768
|
});
|
|
727
769
|
return session.text(".msgSaved", [result.id]);
|
|
728
770
|
} catch (error) {
|
|
@@ -739,16 +781,23 @@ async function bindUsersToCave(ctx, session, id, userIds) {
|
|
|
739
781
|
if (!userIds || userIds.length === 0) {
|
|
740
782
|
return session.text(".noUserIdProvided");
|
|
741
783
|
}
|
|
784
|
+
let parsedUserIds = [];
|
|
785
|
+
const result = parseUserIds(userIds);
|
|
786
|
+
if (result.error === "invalid_all_mention") {
|
|
787
|
+
return session.text(".invalidAllMention");
|
|
788
|
+
}
|
|
789
|
+
parsedUserIds = result.parsedUserIds;
|
|
790
|
+
ctx.logger.info(`Parsed userIds: ${JSON.stringify(parsedUserIds)}`);
|
|
742
791
|
const caves = await ctx.database.get("echo_cave", id);
|
|
743
792
|
if (caves.length === 0) {
|
|
744
793
|
return session.text("echo-cave.general.noMsgWithId");
|
|
745
794
|
}
|
|
746
|
-
const isAllUsersInGroup = await checkUsersInGroup(ctx, session,
|
|
795
|
+
const isAllUsersInGroup = await checkUsersInGroup(ctx, session, parsedUserIds);
|
|
747
796
|
if (!isAllUsersInGroup) {
|
|
748
797
|
return session.text(".userNotInGroup");
|
|
749
798
|
}
|
|
750
799
|
await ctx.database.set("echo_cave", id, {
|
|
751
|
-
relatedUsers:
|
|
800
|
+
relatedUsers: parsedUserIds
|
|
752
801
|
});
|
|
753
802
|
return session.text(".userBoundSuccess", [id]);
|
|
754
803
|
}
|