koishi-plugin-cat-raising 0.0.4 → 0.0.6
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.d.ts +1 -1
- package/lib/index.js +38 -18
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export declare const name = "cat-raising";
|
|
|
3
3
|
export interface Config {
|
|
4
4
|
targetQQ: string;
|
|
5
5
|
isGroup: boolean;
|
|
6
|
-
|
|
6
|
+
monitorGroup: string;
|
|
7
7
|
}
|
|
8
8
|
export declare const Config: Schema<Config>;
|
|
9
9
|
export declare function apply(ctx: Context, config: Config): void;
|
package/lib/index.js
CHANGED
|
@@ -30,33 +30,53 @@ var name = "cat-raising";
|
|
|
30
30
|
var Config = import_koishi.Schema.object({
|
|
31
31
|
targetQQ: import_koishi.Schema.string().description("目标QQ号或QQ群号").required(),
|
|
32
32
|
isGroup: import_koishi.Schema.boolean().description("是否为QQ群").default(false),
|
|
33
|
-
|
|
33
|
+
monitorGroup: import_koishi.Schema.string().description("监听的群号(只检测此群的消息)").required()
|
|
34
34
|
});
|
|
35
35
|
function apply(ctx, config) {
|
|
36
|
-
|
|
36
|
+
let lastForwardedMessage = "";
|
|
37
|
+
const messageMap = /* @__PURE__ */ new Map();
|
|
38
|
+
ctx.on("message", async (session) => {
|
|
37
39
|
const message = session.content;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
} else {
|
|
41
|
-
if (session.userId === config.targetQQ) return;
|
|
42
|
-
}
|
|
40
|
+
const messageId = session.messageId;
|
|
41
|
+
if (session.channelId !== config.monitorGroup) return;
|
|
43
42
|
if (!message.includes("神金")) return;
|
|
44
43
|
const numberRegex = /\d{6,15}/;
|
|
45
44
|
if (!numberRegex.test(message)) return;
|
|
46
|
-
if (
|
|
47
|
-
|
|
48
|
-
📤 转发目标: ${config.targetQQ}${config.isGroup ? " (群聊)" : ""}
|
|
49
|
-
💬 检测内容: ${message}
|
|
50
|
-
🔍 匹配数字: ${message.match(/\d{6,15}/)?.[0] || "未找到"}
|
|
51
|
-
✅ 条件满足,但调试模式下不执行转发`;
|
|
52
|
-
session.send(debugMessage);
|
|
45
|
+
if (message === lastForwardedMessage) {
|
|
46
|
+
session.send("🐱 - 检测到复读机行为,停止转发");
|
|
53
47
|
return;
|
|
54
48
|
}
|
|
55
49
|
const forwardMessage = message;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
50
|
+
try {
|
|
51
|
+
let forwardedMessageId;
|
|
52
|
+
if (config.isGroup) {
|
|
53
|
+
const result = await session.bot.sendMessage(config.targetQQ, forwardMessage);
|
|
54
|
+
forwardedMessageId = result[0];
|
|
55
|
+
} else {
|
|
56
|
+
const result = await session.bot.sendPrivateMessage(config.targetQQ, forwardMessage);
|
|
57
|
+
forwardedMessageId = result[0];
|
|
58
|
+
}
|
|
59
|
+
messageMap.set(messageId, forwardedMessageId);
|
|
60
|
+
lastForwardedMessage = message;
|
|
61
|
+
} catch (error) {
|
|
62
|
+
session.send("🐱 - 转发失败,请检查配置");
|
|
63
|
+
console.error("转发失败:", error);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
ctx.on("message-deleted", async (session) => {
|
|
67
|
+
const originalMessageId = session.messageId;
|
|
68
|
+
if (messageMap.has(originalMessageId)) {
|
|
69
|
+
const forwardedMessageId = messageMap.get(originalMessageId);
|
|
70
|
+
try {
|
|
71
|
+
if (config.isGroup) {
|
|
72
|
+
await session.bot.deleteMessage(config.targetQQ, forwardedMessageId);
|
|
73
|
+
} else {
|
|
74
|
+
await session.bot.deleteMessage(config.targetQQ, forwardedMessageId);
|
|
75
|
+
}
|
|
76
|
+
messageMap.delete(originalMessageId);
|
|
77
|
+
} catch (error) {
|
|
78
|
+
console.error("撤回转发消息失败:", error);
|
|
79
|
+
}
|
|
60
80
|
}
|
|
61
81
|
});
|
|
62
82
|
}
|