koishi-plugin-echo-cave 1.9.1 → 1.10.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 +87 -100
- package/package.json +1 -1
package/lib/index.cjs
CHANGED
|
@@ -33,14 +33,48 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
33
33
|
var require_zh_CN = __commonJS({
|
|
34
34
|
"src/locales/zh-CN.json"(exports2, module2) {
|
|
35
35
|
module2.exports = {
|
|
36
|
-
|
|
36
|
+
_config: {
|
|
37
37
|
adminMessageProtection: "\u5F00\u542F\u7BA1\u7406\u5458\u6D88\u606F\u4FDD\u62A4\uFF0C\u5F00\u542F\u540E\u7BA1\u7406\u5458\u53D1\u5E03\u7684\u6D88\u606F\u53EA\u80FD\u7531\u7BA1\u7406\u5458\u5220\u9664",
|
|
38
38
|
allowContributorDelete: "\u5141\u8BB8\u6295\u7A3F\u8005\u5220\u9664\u81EA\u5DF1\u6295\u7A3F\u7684\u56DE\u58F0\u6D1E",
|
|
39
39
|
allowSenderDelete: "\u5141\u8BB8\u539F\u59CB\u53D1\u9001\u8005\u5220\u9664\u88AB\u6295\u7A3F\u7684\u56DE\u58F0\u6D1E"
|
|
40
40
|
},
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
"echo-cave": {
|
|
42
|
+
general: {
|
|
43
|
+
privateChatReminder: "\u274C \u8BF7\u5728\u7FA4\u804A\u4E2D\u4F7F\u7528\u8BE5\u547D\u4EE4\uFF01",
|
|
44
|
+
noMsgWithId: "\u{1F50D} \u672A\u627E\u5230\u8BE5 ID \u7684\u56DE\u58F0\u6D1E\u6D88\u606F",
|
|
45
|
+
noTemplatesConfigured: "\u274C \u672A\u914D\u7F6E\u56DE\u58F0\u6D1E\u6A21\u677F\uFF0C\u8BF7\u5148\u914D\u7F6E\u6A21\u677F\uFF01"
|
|
46
|
+
},
|
|
47
|
+
templates: {
|
|
48
|
+
forward: [
|
|
49
|
+
"\u{1F300} \u56DE\u58F0\u6D1E #{id}\n\n\u4E00\u5219\u56DE\u58F0\u4ECE\u65F6\u5149\u4E2D\u98D8\u6765\u2014\u2014\n\u{1F4C5} {date} \xB7 \u6765\u81EA @{originName} \n\u{1F4EE} \u7531 @{userName} \u6295\u9012",
|
|
50
|
+
"\u{1F300} \u56DE\u58F0\u6D1E #{id}\n\n\u3010\u8BB0\u5F55\u7F16\u53F7\u3011{id} \n\u3010\u521B\u5EFA\u65F6\u95F4\u3011{date} \n\u3010\u539F\u59CB\u4F5C\u8005\u3011@{originName} \n\u3010\u6295\u9012\u8005\u3011@{userName}",
|
|
51
|
+
"\u{1F300} \u56DE\u58F0\u6D1E #{id}\n\n\u8FD9\u58F0\u56DE\u54CD\u6700\u521D\u6765\u81EA @{originName}\uFF0C \n\u7531 @{userName} \u5728 {date} \u7559\u4E0B\u3002",
|
|
52
|
+
"\u{1F300} \u56DE\u58F0\u6D1E #{id}\n\n\u65F6\u95F4\u7684\u56DE\u97F3\u5728\u6B64\u6C47\u805A\u3002 \n\u{1F4C5} {date} \n\u{1F4E4} \u51FA\u5904\uFF1A@{originName} \n\u{1F4EE} \u5C01\u5370\u8005\uFF1A@{userName}",
|
|
53
|
+
"\u{1F300} \u56DE\u58F0\u6D1E #{id}\n\n\u{1F4C5} {date} \n\u{1F464} \u6765\u81EA @{originName} \n\u{1F4EE} \u6295\u9012\u8005 @{userName}"
|
|
54
|
+
],
|
|
55
|
+
msg: [
|
|
56
|
+
{
|
|
57
|
+
prefix: "\u{1F300} \u56DE\u58F0\u6D1E #{id}\n\n\u2014\u2014 \u6709\u4EBA\u7559\u4E0B\u4E86\u58F0\u97F3 \u2014\u2014\n\n",
|
|
58
|
+
suffix: "\u{1F4C5} {date} \xB7 \u6765\u81EA @{originName}\n\u{1F4EE} \u7531 @{userName} \u6295\u9012"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
prefix: "\u{1F300} \u56DE\u58F0\u6D1E #{id}\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n",
|
|
62
|
+
suffix: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u{1F4C5} {date}\n\u{1F464} {originName} \xB7 \u7531 @{userName} \u6295\u9012"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
prefix: "\u{1F300} \u56DE\u58F0\u6D1E #{id}\n\n\u{1F4AD}\u300C\u6709\u4EBA\u5728\u6D1E\u58C1\u7559\u4E0B\u5370\u8BB0\u300D\n\n",
|
|
66
|
+
suffix: "\u{1F4C5} {date}\n\u{1F4EE} {userName} \u8BB0\u5F55"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
prefix: "\u{1F300} \u56DE\u58F0\u6D1E #{id}\n\n\u2014 \u56DE\u58F0\u5F00\u59CB \u2014\n\n",
|
|
70
|
+
suffix: "\u2014 \u56DE\u58F0\u7ED3\u675F \u2014\n\u{1F4C5} {date} \xB7 @{originName}\n\u{1F4EE} @{userName}"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
prefix: "\u{1F300} \u56DE\u58F0\u6D1E #{id}\n\n",
|
|
74
|
+
suffix: "\u{1F4C5} {date}\n\u6765\u81EA @{originName}\n\u7531 @{userName} \u6295\u9012"
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
44
78
|
},
|
|
45
79
|
commands: {
|
|
46
80
|
cave: {
|
|
@@ -72,7 +106,17 @@ var require_zh_CN = __commonJS({
|
|
|
72
106
|
"cave.listen": {
|
|
73
107
|
description: "\u83B7\u5F97\u7531\u81EA\u5DF1\u6295\u7A3F\u7684\u56DE\u58F0\u6D1E\u5217\u8868",
|
|
74
108
|
messages: {
|
|
75
|
-
noMsgContributed: '\u{1F680} \u60A8\u5728\u56DE\u58F0\u6D1E\u4E2D\u6682\u65E0\u6295\u7A3F\uFF0C\u5FEB\u4F7F\u7528 "cave.echo" \u547D\u4EE4\u6DFB\u52A0\u7B2C\u4E00\u6761\u6D88\u606F\u5427\uFF01'
|
|
109
|
+
noMsgContributed: '\u{1F680} \u60A8\u5728\u56DE\u58F0\u6D1E\u4E2D\u6682\u65E0\u6295\u7A3F\uFF0C\u5FEB\u4F7F\u7528 "cave.echo" \u547D\u4EE4\u6DFB\u52A0\u7B2C\u4E00\u6761\u6D88\u606F\u5427\uFF01',
|
|
110
|
+
msgListHeader: "\u{1F4DC} \u60A8\u5728\u672C\u9891\u9053\u6295\u7A3F\u7684\u56DE\u58F0\u6D1E\u6D88\u606F\u5217\u8868\uFF1A\n",
|
|
111
|
+
msgListItem: "ID: {0} | \u521B\u5EFA\u65F6\u95F4: {1}\n"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"cave.trace": {
|
|
115
|
+
description: "\u83B7\u5F97\u81EA\u5DF1\u53D1\u8A00\u7684\u56DE\u58F0\u6D1E\u5217\u8868",
|
|
116
|
+
messages: {
|
|
117
|
+
noMsgTraced: '\u{1F680} \u60A8\u5728\u56DE\u58F0\u6D1E\u4E2D\u6682\u65E0\u53D1\u8A00\u88AB\u6295\u7A3F\uFF0C\u5FEB\u4F7F\u7528 "cave.echo" \u547D\u4EE4\u6DFB\u52A0\u7B2C\u4E00\u6761\u6D88\u606F\u5427\uFF01',
|
|
118
|
+
msgListHeader: "\u{1F4DC} \u60A8\u5728\u672C\u9891\u9053\u53D1\u8A00\u7684\u56DE\u58F0\u6D1E\u6D88\u606F\u5217\u8868\uFF1A\n",
|
|
119
|
+
msgListItem: "ID: {0} | \u521B\u5EFA\u65F6\u95F4: {1}\n"
|
|
76
120
|
}
|
|
77
121
|
}
|
|
78
122
|
}
|
|
@@ -113,103 +157,50 @@ async function getUserName(ctx, session, userId) {
|
|
|
113
157
|
}
|
|
114
158
|
|
|
115
159
|
// src/cave-helper.ts
|
|
160
|
+
var random = (arr) => arr[Math.floor(Math.random() * arr.length)];
|
|
161
|
+
var replacePlaceholders = (template, data) => {
|
|
162
|
+
return template.replace(/{(\w+)}/g, (match, key) => data[key] || match);
|
|
163
|
+
};
|
|
116
164
|
async function sendCaveMsg(ctx, session, caveMsg) {
|
|
117
165
|
const { channelId } = session;
|
|
118
166
|
const content = JSON.parse(caveMsg.content);
|
|
119
167
|
const date = formatDate(caveMsg.createTime);
|
|
120
168
|
const originName = await getUserName(ctx, session, caveMsg.originUserId);
|
|
121
169
|
const userName = await getUserName(ctx, session, caveMsg.userId);
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
\u3010\u8BB0\u5F55\u7F16\u53F7\u3011${caveMsg.id}
|
|
131
|
-
\u3010\u521B\u5EFA\u65F6\u95F4\u3011${date}
|
|
132
|
-
\u3010\u539F\u59CB\u4F5C\u8005\u3011@${originName}
|
|
133
|
-
\u3010\u6295\u9012\u8005\u3011@${userName}`,
|
|
134
|
-
`\u{1F300} \u56DE\u58F0\u6D1E #${caveMsg.id}
|
|
135
|
-
|
|
136
|
-
\u8FD9\u58F0\u56DE\u54CD\u6700\u521D\u6765\u81EA @${originName}\uFF0C
|
|
137
|
-
\u7531 @${userName} \u5728 ${date} \u7559\u4E0B\u3002`,
|
|
138
|
-
`\u{1F300} \u56DE\u58F0\u6D1E #${caveMsg.id}
|
|
139
|
-
|
|
140
|
-
\u65F6\u95F4\u7684\u56DE\u97F3\u5728\u6B64\u6C47\u805A\u3002
|
|
141
|
-
\u{1F4C5} ${date}
|
|
142
|
-
\u{1F4E4} \u51FA\u5904\uFF1A@${originName}
|
|
143
|
-
\u{1F4EE} \u5C01\u5370\u8005\uFF1A@${userName}`,
|
|
144
|
-
`\u{1F300} \u56DE\u58F0\u6D1E #${caveMsg.id}
|
|
145
|
-
|
|
146
|
-
\u{1F4C5} ${date}
|
|
147
|
-
\u{1F464} \u6765\u81EA @${originName}
|
|
148
|
-
\u{1F4EE} \u6295\u9012\u8005 @${userName}`
|
|
149
|
-
];
|
|
150
|
-
const msgStyles = [
|
|
151
|
-
{
|
|
152
|
-
prefix: `\u{1F300} \u56DE\u58F0\u6D1E #${caveMsg.id}
|
|
153
|
-
|
|
154
|
-
\u2014\u2014 \u6709\u4EBA\u7559\u4E0B\u4E86\u58F0\u97F3 \u2014\u2014
|
|
155
|
-
|
|
156
|
-
`,
|
|
157
|
-
suffix: `\u{1F4C5} ${date} \xB7 \u6765\u81EA @${originName}
|
|
158
|
-
\u{1F4EE} \u7531 @${userName} \u6295\u9012`
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
prefix: `\u{1F300} \u56DE\u58F0\u6D1E #${caveMsg.id}
|
|
162
|
-
\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
163
|
-
`,
|
|
164
|
-
suffix: `\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
|
|
165
|
-
\u{1F4C5} ${date}
|
|
166
|
-
\u{1F464} ${originName} \xB7 \u7531 @${userName} \u6295\u9012`
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
prefix: `\u{1F300} \u56DE\u58F0\u6D1E #${caveMsg.id}
|
|
170
|
-
|
|
171
|
-
\u{1F4AD}\u300C\u6709\u4EBA\u5728\u6D1E\u58C1\u7559\u4E0B\u5370\u8BB0\u300D
|
|
172
|
-
|
|
173
|
-
`,
|
|
174
|
-
suffix: `\u{1F4C5} ${date}
|
|
175
|
-
\u{1F4EE} ${userName} \u8BB0\u5F55`
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
prefix: `\u{1F300} \u56DE\u58F0\u6D1E #${caveMsg.id}
|
|
179
|
-
|
|
180
|
-
\u2014 \u56DE\u58F0\u5F00\u59CB \u2014
|
|
181
|
-
|
|
182
|
-
`,
|
|
183
|
-
suffix: `\u2014 \u56DE\u58F0\u7ED3\u675F \u2014
|
|
184
|
-
\u{1F4C5} ${date} \xB7 @${originName}
|
|
185
|
-
\u{1F4EE} @${userName}`
|
|
186
|
-
},
|
|
187
|
-
{
|
|
188
|
-
prefix: `\u{1F300} \u56DE\u58F0\u6D1E #${caveMsg.id}
|
|
189
|
-
|
|
190
|
-
`,
|
|
191
|
-
suffix: `\u{1F4C5} ${date}
|
|
192
|
-
\u6765\u81EA @${originName}
|
|
193
|
-
\u7531 @${userName} \u6295\u9012`
|
|
194
|
-
}
|
|
195
|
-
];
|
|
196
|
-
const random = (arr) => arr[Math.floor(Math.random() * arr.length)];
|
|
170
|
+
const templateData = {
|
|
171
|
+
id: caveMsg.id.toString(),
|
|
172
|
+
date,
|
|
173
|
+
originName,
|
|
174
|
+
userName
|
|
175
|
+
};
|
|
176
|
+
const templates = require_zh_CN()["echo-cave"].templates;
|
|
197
177
|
if (caveMsg.type === "forward") {
|
|
198
|
-
const
|
|
199
|
-
|
|
178
|
+
const forwardTemplates = (templates.forward || []).filter(
|
|
179
|
+
(template) => template.trim() !== ""
|
|
180
|
+
);
|
|
181
|
+
if (forwardTemplates.length === 0) {
|
|
182
|
+
await session.send(session.text("echo-cave.general.noTemplatesConfigured"));
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
const chosenTemplate2 = replacePlaceholders(random(forwardTemplates), templateData);
|
|
186
|
+
await session.onebot.sendGroupMsg(channelId, [createTextMsg(chosenTemplate2)]);
|
|
200
187
|
await session.onebot.sendGroupForwardMsg(channelId, content);
|
|
201
188
|
return;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
189
|
+
}
|
|
190
|
+
const msgTemplates = (templates.msg || []).filter(
|
|
191
|
+
(template) => template && template.prefix?.trim() !== "" && template.suffix?.trim() !== ""
|
|
192
|
+
);
|
|
193
|
+
if (msgTemplates.length === 0) {
|
|
194
|
+
await session.send(session.text("echo-cave.general.noTemplatesConfigured"));
|
|
206
195
|
return;
|
|
207
196
|
}
|
|
208
|
-
const
|
|
197
|
+
const chosenTemplate = random(msgTemplates);
|
|
198
|
+
const prefix = replacePlaceholders(chosenTemplate.prefix, templateData);
|
|
199
|
+
const suffix = replacePlaceholders(chosenTemplate.suffix, templateData);
|
|
209
200
|
const last = content.at(-1);
|
|
210
201
|
const needsNewline = last?.type === "text";
|
|
211
|
-
content.unshift(createTextMsg(
|
|
212
|
-
content.push(createTextMsg(`${needsNewline ? "\n\n" : ""}${
|
|
202
|
+
content.unshift(createTextMsg(prefix));
|
|
203
|
+
content.push(createTextMsg(`${needsNewline ? "\n\n" : ""}${suffix}`));
|
|
213
204
|
await session.onebot.sendGroupMsg(channelId, content);
|
|
214
205
|
}
|
|
215
206
|
function formatDate(date) {
|
|
@@ -339,7 +330,7 @@ var Config = import_koishi.Schema.object({
|
|
|
339
330
|
allowContributorDelete: import_koishi.Schema.boolean().default(true),
|
|
340
331
|
allowSenderDelete: import_koishi.Schema.boolean().default(true)
|
|
341
332
|
}).i18n({
|
|
342
|
-
"zh-CN": require_zh_CN().
|
|
333
|
+
"zh-CN": require_zh_CN()._config
|
|
343
334
|
});
|
|
344
335
|
function apply(ctx, cfg) {
|
|
345
336
|
ctx.i18n.define("zh-CN", require_zh_CN());
|
|
@@ -372,7 +363,7 @@ function apply(ctx, cfg) {
|
|
|
372
363
|
async ({ session }, id) => await deleteCave(ctx, session, cfg, id)
|
|
373
364
|
);
|
|
374
365
|
ctx.command("cave.listen").action(async ({ session }) => await getCaveListByUser(ctx, session));
|
|
375
|
-
ctx.command("cave.trace"
|
|
366
|
+
ctx.command("cave.trace").action(
|
|
376
367
|
async ({ session }) => await getCaveListByOriginUser(ctx, session)
|
|
377
368
|
);
|
|
378
369
|
}
|
|
@@ -388,11 +379,9 @@ async function getCaveListByUser(ctx, session) {
|
|
|
388
379
|
if (caves.length === 0) {
|
|
389
380
|
return session.text(".noMsgContributed");
|
|
390
381
|
}
|
|
391
|
-
let response =
|
|
392
|
-
`;
|
|
382
|
+
let response = session.text(".msgListHeader");
|
|
393
383
|
for (const cave of caves) {
|
|
394
|
-
response +=
|
|
395
|
-
`;
|
|
384
|
+
response += session.text(".msgListItem", [cave.id, formatDate(cave.createTime)]);
|
|
396
385
|
}
|
|
397
386
|
return response;
|
|
398
387
|
}
|
|
@@ -406,13 +395,11 @@ async function getCaveListByOriginUser(ctx, session) {
|
|
|
406
395
|
channelId
|
|
407
396
|
});
|
|
408
397
|
if (caves.length === 0) {
|
|
409
|
-
return
|
|
398
|
+
return session.text(".noMsgTraced");
|
|
410
399
|
}
|
|
411
|
-
let response =
|
|
412
|
-
`;
|
|
400
|
+
let response = session.text(".msgListHeader");
|
|
413
401
|
for (const cave of caves) {
|
|
414
|
-
response +=
|
|
415
|
-
`;
|
|
402
|
+
response += session.text(".msgListItem", [cave.id, formatDate(cave.createTime)]);
|
|
416
403
|
}
|
|
417
404
|
return response;
|
|
418
405
|
}
|