koishi-plugin-echo-cave 1.16.6 → 1.16.7
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 +65 -10
- 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,45 @@ function createTextMsg(content) {
|
|
|
163
166
|
}
|
|
164
167
|
};
|
|
165
168
|
}
|
|
169
|
+
function parseUserIds(userIds) {
|
|
170
|
+
const parsedUserIds = [];
|
|
171
|
+
for (const userIdStr of userIds) {
|
|
172
|
+
if (userIdStr === "all") {
|
|
173
|
+
return {
|
|
174
|
+
parsedUserIds: [],
|
|
175
|
+
error: "invalid_all_mention"
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
const cqCode = import_koishi_plugin_adapter_onebot.CQCode.from(userIdStr);
|
|
180
|
+
if (cqCode.type === "at") {
|
|
181
|
+
const qq = cqCode.data.qq;
|
|
182
|
+
if (qq === "all") {
|
|
183
|
+
return {
|
|
184
|
+
parsedUserIds: [],
|
|
185
|
+
error: "invalid_all_mention"
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
if (qq) {
|
|
189
|
+
parsedUserIds.push(qq);
|
|
190
|
+
}
|
|
191
|
+
} else {
|
|
192
|
+
const num = Number(userIdStr);
|
|
193
|
+
if (!Number.isNaN(num)) {
|
|
194
|
+
parsedUserIds.push(String(num));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
} catch (e) {
|
|
198
|
+
const num = Number(userIdStr);
|
|
199
|
+
if (!Number.isNaN(num)) {
|
|
200
|
+
parsedUserIds.push(String(num));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
parsedUserIds
|
|
206
|
+
};
|
|
207
|
+
}
|
|
166
208
|
|
|
167
209
|
// src/media-helper.ts
|
|
168
210
|
var import_axios = __toESM(require("axios"), 1);
|
|
@@ -510,7 +552,7 @@ async function processMessageContent(ctx, msg, cfg) {
|
|
|
510
552
|
}
|
|
511
553
|
|
|
512
554
|
// src/index.ts
|
|
513
|
-
var
|
|
555
|
+
var import_koishi_plugin_adapter_onebot3 = require("@pynickle/koishi-plugin-adapter-onebot");
|
|
514
556
|
var import_koishi = require("koishi");
|
|
515
557
|
var name = "echo-cave";
|
|
516
558
|
var inject = ["database"];
|
|
@@ -677,9 +719,15 @@ async function addCave(ctx, session, cfg, userIds) {
|
|
|
677
719
|
}
|
|
678
720
|
const { userId, channelId, quote } = session;
|
|
679
721
|
const messageId = quote.id;
|
|
680
|
-
|
|
722
|
+
let parsedUserIds = [];
|
|
681
723
|
if (userIds && userIds.length > 0) {
|
|
682
|
-
const
|
|
724
|
+
const result = parseUserIds(userIds);
|
|
725
|
+
if (result.error === "invalid_all_mention") {
|
|
726
|
+
return session.text(".invalidAllMention");
|
|
727
|
+
}
|
|
728
|
+
parsedUserIds = result.parsedUserIds;
|
|
729
|
+
ctx.logger.info(`Parsed userIds in addCave: ${JSON.stringify(parsedUserIds)}`);
|
|
730
|
+
const isAllUsersInGroup = await checkUsersInGroup(ctx, session, parsedUserIds);
|
|
683
731
|
if (!isAllUsersInGroup) {
|
|
684
732
|
return session.text(".userNotInGroup");
|
|
685
733
|
}
|
|
@@ -700,7 +748,7 @@ async function addCave(ctx, session, cfg, userIds) {
|
|
|
700
748
|
const message = (await session.onebot.getMsg(messageId)).message;
|
|
701
749
|
let msgJson;
|
|
702
750
|
if (typeof message === "string") {
|
|
703
|
-
msgJson =
|
|
751
|
+
msgJson = import_koishi_plugin_adapter_onebot3.CQCode.parse(message);
|
|
704
752
|
} else {
|
|
705
753
|
if (message[0].type === "video" || message[0].type === "file") {
|
|
706
754
|
type = "forward";
|
|
@@ -722,7 +770,7 @@ async function addCave(ctx, session, cfg, userIds) {
|
|
|
722
770
|
originUserId: quote.user.id,
|
|
723
771
|
type,
|
|
724
772
|
content,
|
|
725
|
-
relatedUsers:
|
|
773
|
+
relatedUsers: parsedUserIds || []
|
|
726
774
|
});
|
|
727
775
|
return session.text(".msgSaved", [result.id]);
|
|
728
776
|
} catch (error) {
|
|
@@ -739,16 +787,23 @@ async function bindUsersToCave(ctx, session, id, userIds) {
|
|
|
739
787
|
if (!userIds || userIds.length === 0) {
|
|
740
788
|
return session.text(".noUserIdProvided");
|
|
741
789
|
}
|
|
790
|
+
let parsedUserIds = [];
|
|
791
|
+
const result = parseUserIds(userIds);
|
|
792
|
+
if (result.error === "invalid_all_mention") {
|
|
793
|
+
return session.text(".invalidAllMention");
|
|
794
|
+
}
|
|
795
|
+
parsedUserIds = result.parsedUserIds;
|
|
796
|
+
ctx.logger.info(`Parsed userIds: ${JSON.stringify(parsedUserIds)}`);
|
|
742
797
|
const caves = await ctx.database.get("echo_cave", id);
|
|
743
798
|
if (caves.length === 0) {
|
|
744
799
|
return session.text("echo-cave.general.noMsgWithId");
|
|
745
800
|
}
|
|
746
|
-
const isAllUsersInGroup = await checkUsersInGroup(ctx, session,
|
|
801
|
+
const isAllUsersInGroup = await checkUsersInGroup(ctx, session, parsedUserIds);
|
|
747
802
|
if (!isAllUsersInGroup) {
|
|
748
803
|
return session.text(".userNotInGroup");
|
|
749
804
|
}
|
|
750
805
|
await ctx.database.set("echo_cave", id, {
|
|
751
|
-
relatedUsers:
|
|
806
|
+
relatedUsers: parsedUserIds
|
|
752
807
|
});
|
|
753
808
|
return session.text(".userBoundSuccess", [id]);
|
|
754
809
|
}
|