koishi-plugin-group-control 0.2.8 → 0.2.9
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.js +25 -25
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -214,7 +214,19 @@ var ADMIN_COMMANDS = /* @__PURE__ */ new Set([
|
|
|
214
214
|
// src/modules/basic.ts
|
|
215
215
|
var name2 = "group-control-basic";
|
|
216
216
|
function apply2(ctx, config) {
|
|
217
|
-
const quittingGuilds = /* @__PURE__ */ new
|
|
217
|
+
const quittingGuilds = /* @__PURE__ */ new Map();
|
|
218
|
+
const processedKicks = /* @__PURE__ */ new Map();
|
|
219
|
+
const QUITTING_EXPIRE_MS = 60 * 1e3;
|
|
220
|
+
const KICK_DEDUP_MS = 60 * 1e3;
|
|
221
|
+
setInterval(() => {
|
|
222
|
+
const now = Date.now();
|
|
223
|
+
for (const [key, time] of quittingGuilds) {
|
|
224
|
+
if (now - time > QUITTING_EXPIRE_MS) quittingGuilds.delete(key);
|
|
225
|
+
}
|
|
226
|
+
for (const [key, time] of processedKicks) {
|
|
227
|
+
if (now - time > KICK_DEDUP_MS) processedKicks.delete(key);
|
|
228
|
+
}
|
|
229
|
+
}, 30 * 1e3);
|
|
218
230
|
ctx.on("guild-added", async (session) => {
|
|
219
231
|
const { guildId, platform } = session;
|
|
220
232
|
if (config.basic.enableBlacklist) {
|
|
@@ -224,7 +236,7 @@ function apply2(ctx, config) {
|
|
|
224
236
|
await session.bot.sendMessage(guildId, config.basic.blacklistMessage, platform);
|
|
225
237
|
} catch (e) {
|
|
226
238
|
}
|
|
227
|
-
quittingGuilds.
|
|
239
|
+
quittingGuilds.set(`${platform}:${guildId}`, Date.now());
|
|
228
240
|
try {
|
|
229
241
|
await session.bot.internal.setGroupLeave(parseInt(guildId));
|
|
230
242
|
} catch (e) {
|
|
@@ -269,7 +281,7 @@ function apply2(ctx, config) {
|
|
|
269
281
|
机器人已自动退出该群。`;
|
|
270
282
|
await notifyAdmins(session.bot, config, adminMsg);
|
|
271
283
|
}
|
|
272
|
-
quittingGuilds.
|
|
284
|
+
quittingGuilds.set(`${platform}:${guildId}`, Date.now());
|
|
273
285
|
try {
|
|
274
286
|
await session.bot.internal.setGroupLeave(parseInt(guildId));
|
|
275
287
|
} catch (e) {
|
|
@@ -293,9 +305,12 @@ function apply2(ctx, config) {
|
|
|
293
305
|
const { guildId, platform } = session;
|
|
294
306
|
const quittingKey = `${platform}:${guildId}`;
|
|
295
307
|
if (quittingGuilds.has(quittingKey)) {
|
|
296
|
-
quittingGuilds.delete(quittingKey);
|
|
297
308
|
return;
|
|
298
309
|
}
|
|
310
|
+
if (processedKicks.has(quittingKey)) {
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
processedKicks.set(quittingKey, Date.now());
|
|
299
314
|
if (config.basic.enableBlacklist) {
|
|
300
315
|
await ctx.model.upsert("blacklisted_guild", [{
|
|
301
316
|
platform,
|
|
@@ -324,7 +339,7 @@ function apply2(ctx, config) {
|
|
|
324
339
|
const adminMsg = `收到来自 ${userId} 的退群指令
|
|
325
340
|
群号:${guildId}`;
|
|
326
341
|
await notifyAdmins(session.bot, config, adminMsg);
|
|
327
|
-
quittingGuilds.
|
|
342
|
+
quittingGuilds.set(`${platform}:${guildId}`, Date.now());
|
|
328
343
|
try {
|
|
329
344
|
await session.bot.sendMessage(session.guildId, config.basic.quitMessage.replace("{userId}", userId), platform);
|
|
330
345
|
} catch (e) {
|
|
@@ -390,7 +405,7 @@ function apply3(ctx, config) {
|
|
|
390
405
|
console.error("获取群信息失败:", error);
|
|
391
406
|
}
|
|
392
407
|
try {
|
|
393
|
-
const waitMessage = config.invite.inviteWaitMessage.
|
|
408
|
+
const waitMessage = config.invite.inviteWaitMessage.replaceAll("{groupName}", groupName).replaceAll("{groupId}", rawGroupId).replaceAll("{userName}", userName).replaceAll("{userId}", rawUserId);
|
|
394
409
|
await session.bot.sendPrivateMessage(rawUserId, waitMessage);
|
|
395
410
|
} catch (error) {
|
|
396
411
|
console.error(`发送等待审核提示给 ${rawUserId} 失败:`, error);
|
|
@@ -398,12 +413,7 @@ function apply3(ctx, config) {
|
|
|
398
413
|
if (!config.invite.adminQQs || config.invite.adminQQs.length === 0) {
|
|
399
414
|
if (config.invite.autoApprove) {
|
|
400
415
|
try {
|
|
401
|
-
await session.bot.internal.setGroupAddRequest(
|
|
402
|
-
flag,
|
|
403
|
-
sub_type: "invite",
|
|
404
|
-
approve: true,
|
|
405
|
-
reason: ""
|
|
406
|
-
});
|
|
416
|
+
await session.bot.internal.setGroupAddRequest(flag, "invite", true, "");
|
|
407
417
|
if (config.invite.showDetailedLog) {
|
|
408
418
|
console.log(`自动同意群聊邀请: 群号 ${rawGroupId}, 邀请者 ${rawUserId}`);
|
|
409
419
|
}
|
|
@@ -421,7 +431,7 @@ function apply3(ctx, config) {
|
|
|
421
431
|
time: Date.now(),
|
|
422
432
|
flag
|
|
423
433
|
});
|
|
424
|
-
const requestMessage = config.invite.inviteRequestMessage.
|
|
434
|
+
const requestMessage = config.invite.inviteRequestMessage.replaceAll("{groupName}", groupName).replaceAll("{groupId}", rawGroupId).replaceAll("{userName}", userName).replaceAll("{userId}", rawUserId);
|
|
425
435
|
let requestSent = false;
|
|
426
436
|
if (config.invite.notificationGroupId) {
|
|
427
437
|
try {
|
|
@@ -461,12 +471,7 @@ function apply3(ctx, config) {
|
|
|
461
471
|
return `未找到群号 ${groupId} 的待处理邀请。当前待处理邀请:${pendingInvites.size > 0 ? Array.from(pendingInvites.values()).map((i) => `${i.groupId}(${i.groupName})`).join(", ") : "无"}`;
|
|
462
472
|
}
|
|
463
473
|
try {
|
|
464
|
-
await session.bot.internal.setGroupAddRequest(
|
|
465
|
-
flag: inviteData.flag,
|
|
466
|
-
sub_type: "invite",
|
|
467
|
-
approve: true,
|
|
468
|
-
reason: ""
|
|
469
|
-
});
|
|
474
|
+
await session.bot.internal.setGroupAddRequest(inviteData.flag, "invite", true, "");
|
|
470
475
|
try {
|
|
471
476
|
await session.bot.sendPrivateMessage(inviteData.userId, `您的群聊邀请已通过管理员审核,机器人已加入群聊。`);
|
|
472
477
|
} catch (error) {
|
|
@@ -489,12 +494,7 @@ function apply3(ctx, config) {
|
|
|
489
494
|
return `未找到群号 ${groupId} 的待处理邀请。当前待处理邀请:${pendingInvites.size > 0 ? Array.from(pendingInvites.values()).map((i) => `${i.groupId}(${i.groupName})`).join(", ") : "无"}`;
|
|
490
495
|
}
|
|
491
496
|
try {
|
|
492
|
-
await session.bot.internal.setGroupAddRequest(
|
|
493
|
-
flag: inviteData.flag,
|
|
494
|
-
sub_type: "invite",
|
|
495
|
-
approve: false,
|
|
496
|
-
reason: "已拒绝"
|
|
497
|
-
});
|
|
497
|
+
await session.bot.internal.setGroupAddRequest(inviteData.flag, "invite", false, "已拒绝");
|
|
498
498
|
try {
|
|
499
499
|
await session.bot.sendPrivateMessage(inviteData.userId, `您的群聊邀请未通过管理员审核,机器人将不会加入该群聊。`);
|
|
500
500
|
} catch (error) {
|
package/package.json
CHANGED