koishi-plugin-guofenbot 1.0.0 → 1.0.2
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/admin/commands.js +98 -51
- package/lib/admin/commands.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/package.json +5 -2
package/lib/admin/commands.js
CHANGED
|
@@ -1,68 +1,109 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerAdminCommands = registerAdminCommands;
|
|
4
|
+
function resolveGuildId(session, explicit) {
|
|
5
|
+
if (explicit)
|
|
6
|
+
return explicit;
|
|
7
|
+
if (session?.guildId)
|
|
8
|
+
return session.guildId;
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
function requireGuild(guildId, source) {
|
|
12
|
+
if (!guildId)
|
|
13
|
+
return `请在群聊中使用此命令,或通过 ${source} 指定目标群ID`;
|
|
14
|
+
return '';
|
|
15
|
+
}
|
|
4
16
|
function registerAdminCommands(ctx, ruleManager, profileManager, config) {
|
|
5
|
-
ctx.command('guofen.rule', '管理群规则')
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
17
|
+
ctx.command('guofen.rule', '管理群规则');
|
|
18
|
+
ctx.command('guofen.rule.set [guildId:string] <content:text>', '设置群规则')
|
|
19
|
+
.alias('群规则')
|
|
20
|
+
.usage('guofen.rule.set [群ID] <规则内容> - 如不指定群ID则作用于当前群')
|
|
21
|
+
.action(async ({ session }, guildId, content) => {
|
|
22
|
+
const targetId = resolveGuildId(session, guildId);
|
|
23
|
+
const err = requireGuild(targetId, 'guofen.rule.set <群ID>');
|
|
24
|
+
if (err)
|
|
25
|
+
return err;
|
|
26
|
+
await ruleManager.setRule(targetId, content);
|
|
27
|
+
return `${targetId === session?.guildId ? '当前群' : `群 ${targetId}`}规则已更新`;
|
|
13
28
|
});
|
|
14
|
-
ctx.command('guofen.rule.show', '
|
|
15
|
-
.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
29
|
+
ctx.command('guofen.rule.show [guildId:string]', '查看群规则')
|
|
30
|
+
.usage('guofen.rule.show [群ID] - 如不指定则查看当前群')
|
|
31
|
+
.action(async ({ session }, guildId) => {
|
|
32
|
+
const targetId = resolveGuildId(session, guildId);
|
|
33
|
+
const err = requireGuild(targetId, 'guofen.rule.show <群ID>');
|
|
34
|
+
if (err)
|
|
35
|
+
return err;
|
|
36
|
+
const rule = await ruleManager.getRule(targetId);
|
|
19
37
|
if (!rule)
|
|
20
|
-
return
|
|
21
|
-
return
|
|
38
|
+
return `群 ${targetId} 尚未设置规则`;
|
|
39
|
+
return [
|
|
40
|
+
`群 ${targetId} 规则:`,
|
|
41
|
+
rule.content,
|
|
42
|
+
`更新时间: ${rule.updatedAt.toLocaleString()}`,
|
|
43
|
+
].join('\n');
|
|
44
|
+
});
|
|
45
|
+
ctx.command('guofen.rule.delete [guildId:string]', '删除群规则')
|
|
46
|
+
.usage('guofen.rule.delete [群ID] - 如不指定则删除当前群规则')
|
|
47
|
+
.action(async ({ session }, guildId) => {
|
|
48
|
+
const targetId = resolveGuildId(session, guildId);
|
|
49
|
+
const err = requireGuild(targetId, 'guofen.rule.delete <群ID>');
|
|
50
|
+
if (err)
|
|
51
|
+
return err;
|
|
52
|
+
await ruleManager.deleteRule(targetId);
|
|
53
|
+
return `群 ${targetId} 规则已删除`;
|
|
22
54
|
});
|
|
23
|
-
ctx.command('guofen.rule.
|
|
24
|
-
.action(async (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return
|
|
55
|
+
ctx.command('guofen.rule.list', '列出所有已设定规则的群')
|
|
56
|
+
.action(async () => {
|
|
57
|
+
const rules = await ruleManager.getAllRules();
|
|
58
|
+
if (rules.length === 0)
|
|
59
|
+
return '暂无任何群设定了规则';
|
|
60
|
+
return rules
|
|
61
|
+
.map((r) => `群 ${r.guildId}: ${r.content.slice(0, 50)}${r.content.length > 50 ? '...' : ''}`)
|
|
62
|
+
.join('\n');
|
|
29
63
|
});
|
|
30
|
-
ctx.command('guofen.profile [userId:string]', '查看成员行为画像')
|
|
31
|
-
.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
64
|
+
ctx.command('guofen.profile [guildId:string] [userId:string]', '查看成员行为画像')
|
|
65
|
+
.usage('guofen.profile [群ID] [用户ID] - 在群内可不指定群ID,不指定用户ID则查看自己')
|
|
66
|
+
.action(async ({ session }, guildId, userId) => {
|
|
67
|
+
const targetId = resolveGuildId(session, guildId);
|
|
68
|
+
const err = requireGuild(targetId, 'guofen.profile <群ID>');
|
|
69
|
+
if (err)
|
|
70
|
+
return err;
|
|
71
|
+
const targetUserId = userId || session?.userId || '';
|
|
72
|
+
if (!targetUserId)
|
|
73
|
+
return '请指定要查看的用户ID';
|
|
74
|
+
const profile = await profileManager.getProfile(targetId, targetUserId);
|
|
36
75
|
if (!profile)
|
|
37
76
|
return '未找到该成员的画像数据';
|
|
38
77
|
const activeHours = JSON.parse(profile.activeHours || '[]');
|
|
39
78
|
return [
|
|
40
79
|
`成员: ${profile.username}(${profile.userId})`,
|
|
80
|
+
`群: ${targetId}`,
|
|
41
81
|
`发言次数: ${profile.messageCount}`,
|
|
42
82
|
`平均消息长度: ${profile.avgMessageLength.toFixed(1)}`,
|
|
43
83
|
`活跃时段: ${activeHours.sort((a, b) => a - b).join('时, ')}时`,
|
|
44
84
|
`最后发言: ${profile.lastMessageTime.toLocaleString()}`,
|
|
45
85
|
].join('\n');
|
|
46
86
|
});
|
|
47
|
-
ctx.command('guofen.alerts [page:number]', '
|
|
87
|
+
ctx.command('guofen.alerts [guildId:string] [page:number]', '查看告警记录')
|
|
88
|
+
.usage('guofen.alerts [群ID] [页码] - 在群内可不指定群ID')
|
|
48
89
|
.option('all', '-a 查看所有(包括已处理)')
|
|
49
|
-
.action(async ({ session, options }, page = 1) => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
90
|
+
.action(async ({ session, options }, guildId, page = 1) => {
|
|
91
|
+
const targetId = resolveGuildId(session, guildId);
|
|
92
|
+
const err = requireGuild(targetId, 'guofen.alerts <群ID>');
|
|
93
|
+
if (err)
|
|
94
|
+
return err;
|
|
95
|
+
const query = { guildId: targetId };
|
|
53
96
|
if (!options?.all)
|
|
54
97
|
query.handled = false;
|
|
55
|
-
const alerts = await ctx.database.get('guofenbot_alert',
|
|
56
|
-
...query,
|
|
57
|
-
});
|
|
98
|
+
const alerts = await ctx.database.get('guofenbot_alert', query);
|
|
58
99
|
const perPage = 5;
|
|
59
100
|
const start = (page - 1) * perPage;
|
|
60
101
|
const pageAlerts = alerts.slice(start, start + perPage);
|
|
61
102
|
if (pageAlerts.length === 0)
|
|
62
|
-
return page === 1 ?
|
|
103
|
+
return page === 1 ? `群 ${targetId} 暂无告警记录` : '没有更多记录了';
|
|
63
104
|
const lines = pageAlerts.map((a, i) => `#${start + i + 1} [${a.alertType}] ${a.username}: ${a.messageContent.slice(0, 50)}\n 原因: ${a.reason} | 置信度: ${(a.confidence * 100).toFixed(0)}% | ${a.handled ? `已处理(${a.action})` : '未处理'}`);
|
|
64
105
|
const totalPages = Math.ceil(alerts.length / perPage);
|
|
65
|
-
lines.push(`--- 第 ${page}/${totalPages} 页, 共 ${alerts.length} 条 ---`);
|
|
106
|
+
lines.push(`--- 群 ${targetId} | 第 ${page}/${totalPages} 页, 共 ${alerts.length} 条 ---`);
|
|
66
107
|
return lines.join('\n\n');
|
|
67
108
|
});
|
|
68
109
|
ctx.command('guofen.alert.handle <alertId:number>', '处理告警(标记为已处理)')
|
|
@@ -70,26 +111,32 @@ function registerAdminCommands(ctx, ruleManager, profileManager, config) {
|
|
|
70
111
|
await ctx.database.set('guofenbot_alert', { id: alertId }, { handled: true });
|
|
71
112
|
return `告警 #${alertId} 已标记为已处理`;
|
|
72
113
|
});
|
|
73
|
-
ctx.command('guofen.enable', '
|
|
74
|
-
.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
114
|
+
ctx.command('guofen.enable [guildId:string]', '启用群监测')
|
|
115
|
+
.usage('guofen.enable [群ID] - 在群内可不指定群ID')
|
|
116
|
+
.action(async ({ session }, guildId) => {
|
|
117
|
+
const targetId = resolveGuildId(session, guildId);
|
|
118
|
+
const err = requireGuild(targetId, 'guofen.enable <群ID>');
|
|
119
|
+
if (err)
|
|
120
|
+
return err;
|
|
121
|
+
if (!config.enabledGuilds.includes(targetId)) {
|
|
122
|
+
config.enabledGuilds.push(targetId);
|
|
79
123
|
}
|
|
80
|
-
return
|
|
124
|
+
return `已在群 ${targetId} 启用 AI 安全监测`;
|
|
81
125
|
});
|
|
82
|
-
ctx.command('guofen.disable', '
|
|
83
|
-
.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const
|
|
126
|
+
ctx.command('guofen.disable [guildId:string]', '停用群监测')
|
|
127
|
+
.usage('guofen.disable [群ID] - 在群内可不指定群ID')
|
|
128
|
+
.action(async ({ session }, guildId) => {
|
|
129
|
+
const targetId = resolveGuildId(session, guildId);
|
|
130
|
+
const err = requireGuild(targetId, 'guofen.disable <群ID>');
|
|
131
|
+
if (err)
|
|
132
|
+
return err;
|
|
133
|
+
const index = config.enabledGuilds.indexOf(targetId);
|
|
87
134
|
if (index !== -1)
|
|
88
135
|
config.enabledGuilds.splice(index, 1);
|
|
89
|
-
return
|
|
136
|
+
return `已在群 ${targetId} 停用 AI 安全监测`;
|
|
90
137
|
});
|
|
91
138
|
ctx.command('guofen.status', '查看插件运行状态')
|
|
92
|
-
.action(async (
|
|
139
|
+
.action(async () => {
|
|
93
140
|
const rules = await ruleManager.getAllRules();
|
|
94
141
|
const alerts = await ctx.database.get('guofenbot_alert', {});
|
|
95
142
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/admin/commands.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/admin/commands.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Context, Schema } from 'koishi';
|
|
|
2
2
|
import { AIProviderConfig } from './ai/provider';
|
|
3
3
|
import { MonitorConfig } from './services/monitor';
|
|
4
4
|
export declare const name = "guofenbot";
|
|
5
|
+
export declare const inject: string[];
|
|
5
6
|
export interface Config {
|
|
6
7
|
aiProvider: AIProviderConfig;
|
|
7
8
|
monitor: MonitorConfig;
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Config = exports.name = void 0;
|
|
3
|
+
exports.Config = exports.inject = exports.name = void 0;
|
|
4
4
|
exports.apply = apply;
|
|
5
5
|
const koishi_1 = require("koishi");
|
|
6
6
|
const database_1 = require("./database");
|
|
@@ -10,6 +10,7 @@ const monitor_1 = require("./services/monitor");
|
|
|
10
10
|
const commands_1 = require("./admin/commands");
|
|
11
11
|
const routes_1 = require("./admin/routes");
|
|
12
12
|
exports.name = 'guofenbot';
|
|
13
|
+
exports.inject = ['database'];
|
|
13
14
|
exports.Config = koishi_1.Schema.object({
|
|
14
15
|
aiProvider: koishi_1.Schema.object({
|
|
15
16
|
type: koishi_1.Schema.union(['openai', 'custom']).default('openai').description('AI 提供商类型'),
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "koishi-plugin-guofenbot",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "AI 群聊安全监测插件 - 支持多 AI 接入、群规则理解、成员行为分析、异常言论检测与自动处理",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -34,7 +34,10 @@
|
|
|
34
34
|
"zh": "AI 群聊安全监测插件 - 支持多 AI 接入、群规则理解、成员行为分析、异常言论检测与自动处理"
|
|
35
35
|
},
|
|
36
36
|
"service": {
|
|
37
|
-
"required": [
|
|
37
|
+
"required": [
|
|
38
|
+
"database",
|
|
39
|
+
"server"
|
|
40
|
+
]
|
|
38
41
|
}
|
|
39
42
|
}
|
|
40
43
|
}
|