@zhin.js/plugin-group-daily-analysis 0.0.9 → 0.0.11
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 +48 -36
- package/lib/index.js.map +1 -1
- package/package.json +6 -6
- package/src/index.ts +146 -75
package/lib/index.js
CHANGED
|
@@ -69,24 +69,15 @@ function getChannelFromMessage(message) {
|
|
|
69
69
|
}
|
|
70
70
|
useContext("database", (db) => {
|
|
71
71
|
_db = db;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
channel_id: { type: "text", nullable: false },
|
|
82
|
-
channel_type: { type: "text", nullable: false },
|
|
83
|
-
adapter: { type: "text", default: "" },
|
|
84
|
-
bot_id: { type: "text", default: "" },
|
|
85
|
-
enabled: { type: "integer", default: 1 },
|
|
86
|
-
updated_at: { type: "text", default: "" },
|
|
87
|
-
});
|
|
88
|
-
logger.info("[group-daily-analysis] 分析设置表已注册");
|
|
89
|
-
}
|
|
72
|
+
db.define(SETTINGS_TABLE, {
|
|
73
|
+
id: { type: "integer", primary: true, autoIncrement: true },
|
|
74
|
+
channel_id: { type: "text", nullable: false },
|
|
75
|
+
channel_type: { type: "text", nullable: false },
|
|
76
|
+
adapter: { type: "text", default: "" },
|
|
77
|
+
bot_id: { type: "text", default: "" },
|
|
78
|
+
enabled: { type: "integer", default: 1 },
|
|
79
|
+
updated_at: { type: "text", default: "" },
|
|
80
|
+
});
|
|
90
81
|
});
|
|
91
82
|
// ─── 群组是否参与分析(白名单/黑名单 + 分析设置)──────────────────────────────
|
|
92
83
|
function isGroupInList(groupId, list) {
|
|
@@ -95,9 +86,11 @@ function isGroupInList(groupId, list) {
|
|
|
95
86
|
async function isAnalysisEnabledForChannel(channelId, channelType, adapter) {
|
|
96
87
|
if (channelType !== "group")
|
|
97
88
|
return false;
|
|
98
|
-
if (config.disabledGroups.length > 0 &&
|
|
89
|
+
if (config.disabledGroups.length > 0 &&
|
|
90
|
+
isGroupInList(channelId, config.disabledGroups))
|
|
99
91
|
return false;
|
|
100
|
-
if (config.enabledGroups.length > 0 &&
|
|
92
|
+
if (config.enabledGroups.length > 0 &&
|
|
93
|
+
!isGroupInList(channelId, config.enabledGroups))
|
|
101
94
|
return false;
|
|
102
95
|
const Settings = getSettingsModel();
|
|
103
96
|
if (!Settings)
|
|
@@ -172,8 +165,12 @@ async function queryInboxMessages(channelId, adapter, botId, startTs, endTs, lim
|
|
|
172
165
|
.limit(limit);
|
|
173
166
|
}
|
|
174
167
|
catch {
|
|
175
|
-
rows = await Inbox.select()
|
|
176
|
-
|
|
168
|
+
rows = await Inbox.select().where({
|
|
169
|
+
channel_id: channelId,
|
|
170
|
+
channel_type: "group",
|
|
171
|
+
adapter: adapter || "",
|
|
172
|
+
bot_id: botId || "",
|
|
173
|
+
});
|
|
177
174
|
rows = (rows || [])
|
|
178
175
|
.filter((r) => r.created_at >= startTs && r.created_at <= endTs)
|
|
179
176
|
.sort((a, b) => a.created_at - b.created_at)
|
|
@@ -182,7 +179,7 @@ async function queryInboxMessages(channelId, adapter, botId, startTs, endTs, lim
|
|
|
182
179
|
return rows;
|
|
183
180
|
}
|
|
184
181
|
catch (e) {
|
|
185
|
-
logger.warn("
|
|
182
|
+
logger.warn("查询收件箱失败", e?.message);
|
|
186
183
|
return [];
|
|
187
184
|
}
|
|
188
185
|
}
|
|
@@ -220,13 +217,15 @@ async function runAnalysis(channelId, channelName, adapter, botId, days) {
|
|
|
220
217
|
const answer = await ai.ask(`请分析以下群聊片段并返回 JSON:\n\n${conversation.slice(0, 6000)}`, { systemPrompt });
|
|
221
218
|
if (answer && answer.trim()) {
|
|
222
219
|
const llm = parseLLMResponse(answer);
|
|
223
|
-
if (llm.topics?.length ||
|
|
220
|
+
if (llm.topics?.length ||
|
|
221
|
+
llm.quotes?.length ||
|
|
222
|
+
llm.userTitles?.length) {
|
|
224
223
|
textReport = appendLLMReport(textReport, llm);
|
|
225
224
|
}
|
|
226
225
|
}
|
|
227
226
|
}
|
|
228
227
|
catch (e) {
|
|
229
|
-
logger.debug("[
|
|
228
|
+
logger.debug("[LLM 分析跳过", e?.message);
|
|
230
229
|
}
|
|
231
230
|
}
|
|
232
231
|
return { stats, textReport };
|
|
@@ -257,10 +256,15 @@ addCommand(new MessageCommand("群分析 [天数:number]")
|
|
|
257
256
|
const resultImg = await renderer.render(html);
|
|
258
257
|
const base64 = resultImg.data.toString("base64");
|
|
259
258
|
const dataUrl = `base64://${base64}`;
|
|
260
|
-
return [
|
|
259
|
+
return [
|
|
260
|
+
segment("image", {
|
|
261
|
+
url: dataUrl,
|
|
262
|
+
name: "group-daily-analysis.png",
|
|
263
|
+
}),
|
|
264
|
+
];
|
|
261
265
|
}
|
|
262
266
|
catch (e) {
|
|
263
|
-
logger.debug("
|
|
267
|
+
logger.debug("图片渲染失败,回退文本", e?.message);
|
|
264
268
|
}
|
|
265
269
|
}
|
|
266
270
|
}
|
|
@@ -306,7 +310,10 @@ useContext("database", () => {
|
|
|
306
310
|
const targets = [];
|
|
307
311
|
const Settings = getSettingsModel();
|
|
308
312
|
if (Settings) {
|
|
309
|
-
const rows = await Settings.select().where({
|
|
313
|
+
const rows = await Settings.select().where({
|
|
314
|
+
channel_type: "group",
|
|
315
|
+
enabled: 1,
|
|
316
|
+
});
|
|
310
317
|
for (const r of rows) {
|
|
311
318
|
if (r.channel_id && r.adapter)
|
|
312
319
|
targets.push({
|
|
@@ -322,10 +329,15 @@ useContext("database", () => {
|
|
|
322
329
|
const adapters = root.adapters;
|
|
323
330
|
const adapterName = Array.isArray(adapters) && adapters[0] ? adapters[0] : "";
|
|
324
331
|
if (adapterName)
|
|
325
|
-
targets.push({
|
|
332
|
+
targets.push({
|
|
333
|
+
channelId: String(gid),
|
|
334
|
+
adapter: adapterName,
|
|
335
|
+
botId: "",
|
|
336
|
+
});
|
|
326
337
|
}
|
|
327
338
|
for (const t of targets) {
|
|
328
|
-
if (config.disabledGroups.length &&
|
|
339
|
+
if (config.disabledGroups.length &&
|
|
340
|
+
isGroupInList(t.channelId, config.disabledGroups))
|
|
329
341
|
continue;
|
|
330
342
|
try {
|
|
331
343
|
const report = await runAnalysis(t.channelId, "", t.adapter, t.botId, config.analysisDays);
|
|
@@ -338,24 +350,25 @@ useContext("database", () => {
|
|
|
338
350
|
const first = adapter.bots.values().next().value;
|
|
339
351
|
botId = first?.$id ?? first?.selfId ?? "";
|
|
340
352
|
}
|
|
341
|
-
await adapter
|
|
353
|
+
await adapter
|
|
354
|
+
.sendMessage({
|
|
342
355
|
context: t.adapter,
|
|
343
356
|
bot: botId,
|
|
344
357
|
type: "group",
|
|
345
358
|
id: t.channelId,
|
|
346
359
|
content: report.textReport,
|
|
347
|
-
})
|
|
360
|
+
})
|
|
361
|
+
.catch(() => { });
|
|
348
362
|
}
|
|
349
363
|
}
|
|
350
364
|
catch (e) {
|
|
351
|
-
logger.warn("
|
|
365
|
+
logger.warn("定时分析发送失败", t.channelId, e?.message);
|
|
352
366
|
}
|
|
353
367
|
}
|
|
354
368
|
}));
|
|
355
|
-
logger.info("[group-daily-analysis] 定时分析已注册: " + config.autoAnalysisCron);
|
|
356
369
|
}
|
|
357
370
|
catch (e) {
|
|
358
|
-
logger.warn("
|
|
371
|
+
logger.warn("注册定时任务失败", e?.message);
|
|
359
372
|
}
|
|
360
373
|
});
|
|
361
374
|
onDispose(() => {
|
|
@@ -364,5 +377,4 @@ onDispose(() => {
|
|
|
364
377
|
cronDispose = null;
|
|
365
378
|
}
|
|
366
379
|
});
|
|
367
|
-
logger.info(`[group-daily-analysis] 已加载 (分析天数=${config.analysisDays}, 定时=${config.autoAnalysisEnabled ? config.autoAnalysisCron : "关"})`);
|
|
368
380
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
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": "@zhin.js/plugin-group-daily-analysis",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"description": "Group daily analysis plugin for Zhin.js — stats, LLM topics/quotes/user titles, reuse unified inbox",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
"license": "MIT",
|
|
41
41
|
"dependencies": {},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"typescript": "^5.
|
|
44
|
-
"zhin.js": "1.0.
|
|
45
|
-
"@zhin.js/plugin-html-renderer": "0.0.
|
|
43
|
+
"typescript": "^5.9.3",
|
|
44
|
+
"zhin.js": "1.0.60",
|
|
45
|
+
"@zhin.js/plugin-html-renderer": "0.0.40"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"zhin.js": "1.0.
|
|
49
|
-
"@zhin.js/plugin-html-renderer": "0.0.
|
|
48
|
+
"zhin.js": "1.0.60",
|
|
49
|
+
"@zhin.js/plugin-html-renderer": "0.0.40"
|
|
50
50
|
},
|
|
51
51
|
"peerDependenciesMeta": {
|
|
52
52
|
"@zhin.js/plugin-html-renderer": {
|
package/src/index.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* 依赖:主配置中启用 inbox.enabled 与 database。
|
|
9
9
|
* 命令:/群分析 [天数]、/分析设置 enable|disable|status
|
|
10
10
|
*/
|
|
11
|
-
import { usePlugin, MessageCommand, Schema, Cron,segment } from "zhin.js";
|
|
11
|
+
import { usePlugin, MessageCommand, Schema, Cron, segment } from "zhin.js";
|
|
12
12
|
import type { InboxMessageRow } from "./analysis.js";
|
|
13
13
|
import type {} from "@zhin.js/plugin-html-renderer";
|
|
14
14
|
import {
|
|
@@ -64,7 +64,7 @@ const config = declareConfig(
|
|
|
64
64
|
.min(100)
|
|
65
65
|
.max(5000)
|
|
66
66
|
.description("单次分析使用的最大消息条数"),
|
|
67
|
-
})
|
|
67
|
+
}),
|
|
68
68
|
);
|
|
69
69
|
|
|
70
70
|
// ─── 数据库与收件箱 ───────────────────────────────────────────────────────────
|
|
@@ -84,7 +84,14 @@ function getSettingsModel(): any {
|
|
|
84
84
|
return _db?.models?.get(SETTINGS_TABLE) ?? null;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
function getChannelFromMessage(
|
|
87
|
+
function getChannelFromMessage(
|
|
88
|
+
message: any,
|
|
89
|
+
): {
|
|
90
|
+
channelId: string;
|
|
91
|
+
channelType: string;
|
|
92
|
+
adapter?: string;
|
|
93
|
+
botId?: string;
|
|
94
|
+
} | null {
|
|
88
95
|
const ch = message?.$channel;
|
|
89
96
|
if (!ch?.id) return null;
|
|
90
97
|
return {
|
|
@@ -95,26 +102,17 @@ function getChannelFromMessage(message: any): { channelId: string; channelType:
|
|
|
95
102
|
};
|
|
96
103
|
}
|
|
97
104
|
|
|
98
|
-
useContext("database", (db
|
|
105
|
+
useContext("database", (db) => {
|
|
99
106
|
_db = db;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
channel_id: { type: "text", nullable: false },
|
|
110
|
-
channel_type: { type: "text", nullable: false },
|
|
111
|
-
adapter: { type: "text", default: "" },
|
|
112
|
-
bot_id: { type: "text", default: "" },
|
|
113
|
-
enabled: { type: "integer", default: 1 },
|
|
114
|
-
updated_at: { type: "text", default: "" },
|
|
115
|
-
});
|
|
116
|
-
logger.info("[group-daily-analysis] 分析设置表已注册");
|
|
117
|
-
}
|
|
107
|
+
db.define(SETTINGS_TABLE, {
|
|
108
|
+
id: { type: "integer", primary: true, autoIncrement: true },
|
|
109
|
+
channel_id: { type: "text", nullable: false },
|
|
110
|
+
channel_type: { type: "text", nullable: false },
|
|
111
|
+
adapter: { type: "text", default: "" },
|
|
112
|
+
bot_id: { type: "text", default: "" },
|
|
113
|
+
enabled: { type: "integer", default: 1 },
|
|
114
|
+
updated_at: { type: "text", default: "" },
|
|
115
|
+
});
|
|
118
116
|
});
|
|
119
117
|
|
|
120
118
|
// ─── 群组是否参与分析(白名单/黑名单 + 分析设置)──────────────────────────────
|
|
@@ -126,11 +124,19 @@ function isGroupInList(groupId: string, list: string[]): boolean {
|
|
|
126
124
|
async function isAnalysisEnabledForChannel(
|
|
127
125
|
channelId: string,
|
|
128
126
|
channelType: string,
|
|
129
|
-
adapter: string
|
|
127
|
+
adapter: string,
|
|
130
128
|
): Promise<boolean> {
|
|
131
129
|
if (channelType !== "group") return false;
|
|
132
|
-
if (
|
|
133
|
-
|
|
130
|
+
if (
|
|
131
|
+
config.disabledGroups.length > 0 &&
|
|
132
|
+
isGroupInList(channelId, config.disabledGroups)
|
|
133
|
+
)
|
|
134
|
+
return false;
|
|
135
|
+
if (
|
|
136
|
+
config.enabledGroups.length > 0 &&
|
|
137
|
+
!isGroupInList(channelId, config.enabledGroups)
|
|
138
|
+
)
|
|
139
|
+
return false;
|
|
134
140
|
const Settings = getSettingsModel();
|
|
135
141
|
if (!Settings) return true;
|
|
136
142
|
try {
|
|
@@ -151,7 +157,7 @@ async function setAnalysisEnabledForChannel(
|
|
|
151
157
|
channelType: string,
|
|
152
158
|
adapter: string,
|
|
153
159
|
botId: string,
|
|
154
|
-
enabled: boolean
|
|
160
|
+
enabled: boolean,
|
|
155
161
|
): Promise<void> {
|
|
156
162
|
const Settings = getSettingsModel();
|
|
157
163
|
if (!Settings) return;
|
|
@@ -181,13 +187,20 @@ async function setAnalysisEnabledForChannel(
|
|
|
181
187
|
|
|
182
188
|
// ─── 从收件箱查询消息并执行分析 ─────────────────────────────────────────────────
|
|
183
189
|
|
|
184
|
-
function getTimeRangeDays(days: number): {
|
|
190
|
+
function getTimeRangeDays(days: number): {
|
|
191
|
+
start: number;
|
|
192
|
+
end: number;
|
|
193
|
+
startStr: string;
|
|
194
|
+
endStr: string;
|
|
195
|
+
} {
|
|
185
196
|
const end = Date.now();
|
|
186
197
|
const start = end - days * 24 * 60 * 60 * 1000;
|
|
187
198
|
const dStart = new Date(start);
|
|
188
199
|
const dEnd = new Date(end);
|
|
189
200
|
const fmt = (d: Date) =>
|
|
190
|
-
`${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(
|
|
201
|
+
`${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(
|
|
202
|
+
d.getDate(),
|
|
203
|
+
).padStart(2, "0")}`;
|
|
191
204
|
return { start, end, startStr: fmt(dStart), endStr: fmt(dEnd) };
|
|
192
205
|
}
|
|
193
206
|
|
|
@@ -197,7 +210,7 @@ async function queryInboxMessages(
|
|
|
197
210
|
botId: string,
|
|
198
211
|
startTs: number,
|
|
199
212
|
endTs: number,
|
|
200
|
-
limit: number
|
|
213
|
+
limit: number,
|
|
201
214
|
): Promise<InboxMessageRow[]> {
|
|
202
215
|
const Inbox = getInboxModel();
|
|
203
216
|
if (!Inbox) return [];
|
|
@@ -215,8 +228,12 @@ async function queryInboxMessages(
|
|
|
215
228
|
.orderBy("created_at", "ASC")
|
|
216
229
|
.limit(limit);
|
|
217
230
|
} catch {
|
|
218
|
-
rows = await Inbox.select()
|
|
219
|
-
|
|
231
|
+
rows = await Inbox.select().where({
|
|
232
|
+
channel_id: channelId,
|
|
233
|
+
channel_type: "group",
|
|
234
|
+
adapter: adapter || "",
|
|
235
|
+
bot_id: botId || "",
|
|
236
|
+
});
|
|
220
237
|
rows = (rows || [])
|
|
221
238
|
.filter((r: any) => r.created_at >= startTs && r.created_at <= endTs)
|
|
222
239
|
.sort((a: any, b: any) => a.created_at - b.created_at)
|
|
@@ -224,7 +241,7 @@ async function queryInboxMessages(
|
|
|
224
241
|
}
|
|
225
242
|
return rows as InboxMessageRow[];
|
|
226
243
|
} catch (e) {
|
|
227
|
-
logger.warn("
|
|
244
|
+
logger.warn("查询收件箱失败", (e as Error)?.message);
|
|
228
245
|
return [];
|
|
229
246
|
}
|
|
230
247
|
}
|
|
@@ -234,7 +251,7 @@ async function runAnalysis(
|
|
|
234
251
|
channelName: string,
|
|
235
252
|
adapter: string,
|
|
236
253
|
botId: string,
|
|
237
|
-
days: number
|
|
254
|
+
days: number,
|
|
238
255
|
): Promise<AnalysisResult | string> {
|
|
239
256
|
const Inbox = getInboxModel();
|
|
240
257
|
if (!Inbox) {
|
|
@@ -247,7 +264,7 @@ async function runAnalysis(
|
|
|
247
264
|
botId,
|
|
248
265
|
start,
|
|
249
266
|
end,
|
|
250
|
-
config.maxMessagesPerAnalysis
|
|
267
|
+
config.maxMessagesPerAnalysis,
|
|
251
268
|
);
|
|
252
269
|
if (rows.length === 0) {
|
|
253
270
|
return `在 ${startStr} 至 ${endStr} 区间内没有找到本群消息记录,请确认收件箱已启用并有过群消息。`;
|
|
@@ -261,13 +278,21 @@ async function runAnalysis(
|
|
|
261
278
|
});
|
|
262
279
|
|
|
263
280
|
// 可选:LLM 话题/金句/用户画像(灵感来自 astrbot_plugin_qq_group_daily_analysis)
|
|
264
|
-
const ai = root.inject("ai" as any) as
|
|
281
|
+
const ai = root.inject("ai" as any) as
|
|
282
|
+
| { ask?: (q: string, opts?: { systemPrompt?: string }) => Promise<string> }
|
|
283
|
+
| undefined;
|
|
265
284
|
if (ai?.ask) {
|
|
266
285
|
try {
|
|
267
286
|
const sampleSize = Math.min(rows.length, 150);
|
|
268
287
|
const sample = rows.slice(-sampleSize);
|
|
269
288
|
const conversation = sample
|
|
270
|
-
.map(
|
|
289
|
+
.map(
|
|
290
|
+
(r) =>
|
|
291
|
+
`[${r.sender_name || r.sender_id}]: ${extractText(r).slice(
|
|
292
|
+
0,
|
|
293
|
+
200,
|
|
294
|
+
)}`,
|
|
295
|
+
)
|
|
271
296
|
.join("\n");
|
|
272
297
|
const systemPrompt = `你是一个群聊分析助手。根据下面的群聊消息摘要,提取并仅返回一个 JSON 对象,包含以下三个数组(均为中文):
|
|
273
298
|
- topics: 数组,每项 { "topic": "话题关键词", "summary": "简短说明" }
|
|
@@ -276,16 +301,20 @@ async function runAnalysis(
|
|
|
276
301
|
不要输出除 JSON 以外的内容。`;
|
|
277
302
|
const answer = await ai.ask(
|
|
278
303
|
`请分析以下群聊片段并返回 JSON:\n\n${conversation.slice(0, 6000)}`,
|
|
279
|
-
{ systemPrompt }
|
|
304
|
+
{ systemPrompt },
|
|
280
305
|
);
|
|
281
306
|
if (answer && answer.trim()) {
|
|
282
307
|
const llm = parseLLMResponse(answer);
|
|
283
|
-
if (
|
|
308
|
+
if (
|
|
309
|
+
llm.topics?.length ||
|
|
310
|
+
llm.quotes?.length ||
|
|
311
|
+
llm.userTitles?.length
|
|
312
|
+
) {
|
|
284
313
|
textReport = appendLLMReport(textReport, llm);
|
|
285
314
|
}
|
|
286
315
|
}
|
|
287
316
|
} catch (e) {
|
|
288
|
-
logger.debug("[
|
|
317
|
+
logger.debug("[LLM 分析跳过", (e as Error)?.message);
|
|
289
318
|
}
|
|
290
319
|
}
|
|
291
320
|
|
|
@@ -302,18 +331,21 @@ addCommand(
|
|
|
302
331
|
if (!ch || ch.channelType !== "group") {
|
|
303
332
|
return "请在群聊中使用本命令。";
|
|
304
333
|
}
|
|
305
|
-
const days = Math.min(
|
|
334
|
+
const days = Math.min(
|
|
335
|
+
30,
|
|
336
|
+
Math.max(1, Number(result.params?.天数) || config.analysisDays),
|
|
337
|
+
);
|
|
306
338
|
const channelName = (message?.$channel as { name?: string })?.name || "";
|
|
307
339
|
const report = await runAnalysis(
|
|
308
340
|
ch.channelId,
|
|
309
341
|
channelName,
|
|
310
342
|
ch.adapter || "",
|
|
311
343
|
ch.botId || "",
|
|
312
|
-
days
|
|
344
|
+
days,
|
|
313
345
|
);
|
|
314
346
|
if (typeof report === "string") return report;
|
|
315
347
|
if (config.outputFormat === "image") {
|
|
316
|
-
const renderer = root.inject("html-renderer")
|
|
348
|
+
const renderer = root.inject("html-renderer");
|
|
317
349
|
if (renderer) {
|
|
318
350
|
try {
|
|
319
351
|
const escaped = report.textReport
|
|
@@ -325,14 +357,19 @@ addCommand(
|
|
|
325
357
|
const resultImg = await renderer.render(html);
|
|
326
358
|
const base64 = (resultImg.data as Buffer).toString("base64");
|
|
327
359
|
const dataUrl = `base64://${base64}`;
|
|
328
|
-
return [
|
|
360
|
+
return [
|
|
361
|
+
segment("image", {
|
|
362
|
+
url: dataUrl,
|
|
363
|
+
name: "group-daily-analysis.png",
|
|
364
|
+
}),
|
|
365
|
+
];
|
|
329
366
|
} catch (e) {
|
|
330
|
-
logger.debug("
|
|
367
|
+
logger.debug("图片渲染失败,回退文本", (e as Error)?.message);
|
|
331
368
|
}
|
|
332
369
|
}
|
|
333
370
|
}
|
|
334
371
|
return report.textReport;
|
|
335
|
-
})
|
|
372
|
+
}),
|
|
336
373
|
);
|
|
337
374
|
|
|
338
375
|
// ─── 命令:分析设置 ───────────────────────────────────────────────────────────
|
|
@@ -349,19 +386,35 @@ addCommand(
|
|
|
349
386
|
const adapter = ch.adapter || "";
|
|
350
387
|
const botId = ch.botId || "";
|
|
351
388
|
if (op === "enable") {
|
|
352
|
-
await setAnalysisEnabledForChannel(
|
|
389
|
+
await setAnalysisEnabledForChannel(
|
|
390
|
+
ch.channelId,
|
|
391
|
+
ch.channelType,
|
|
392
|
+
adapter,
|
|
393
|
+
botId,
|
|
394
|
+
true,
|
|
395
|
+
);
|
|
353
396
|
return "已为本群启用日常分析。";
|
|
354
397
|
}
|
|
355
398
|
if (op === "disable") {
|
|
356
|
-
await setAnalysisEnabledForChannel(
|
|
399
|
+
await setAnalysisEnabledForChannel(
|
|
400
|
+
ch.channelId,
|
|
401
|
+
ch.channelType,
|
|
402
|
+
adapter,
|
|
403
|
+
botId,
|
|
404
|
+
false,
|
|
405
|
+
);
|
|
357
406
|
return "已为本群关闭日常分析。";
|
|
358
407
|
}
|
|
359
408
|
if (op === "status") {
|
|
360
|
-
const enabled = await isAnalysisEnabledForChannel(
|
|
409
|
+
const enabled = await isAnalysisEnabledForChannel(
|
|
410
|
+
ch.channelId,
|
|
411
|
+
ch.channelType,
|
|
412
|
+
adapter,
|
|
413
|
+
);
|
|
361
414
|
return `本群日常分析:${enabled ? "已启用" : "已关闭"}`;
|
|
362
415
|
}
|
|
363
416
|
return "用法:分析设置 enable | disable | status";
|
|
364
|
-
})
|
|
417
|
+
}),
|
|
365
418
|
);
|
|
366
419
|
|
|
367
420
|
// ─── 定时任务(可选)───────────────────────────────────────────────────────────
|
|
@@ -376,28 +429,49 @@ useContext("database", () => {
|
|
|
376
429
|
new Cron(config.autoAnalysisCron, async () => {
|
|
377
430
|
const inject = root.inject?.bind(root) as (key: string) => any;
|
|
378
431
|
if (typeof inject !== "function") return;
|
|
379
|
-
const targets: { channelId: string; adapter: string; botId: string }[] =
|
|
432
|
+
const targets: { channelId: string; adapter: string; botId: string }[] =
|
|
433
|
+
[];
|
|
380
434
|
const Settings = getSettingsModel();
|
|
381
435
|
if (Settings) {
|
|
382
|
-
const rows: any[] = await Settings.select().where({
|
|
436
|
+
const rows: any[] = await Settings.select().where({
|
|
437
|
+
channel_type: "group",
|
|
438
|
+
enabled: 1,
|
|
439
|
+
});
|
|
383
440
|
for (const r of rows) {
|
|
384
|
-
if (r.channel_id && r.adapter)
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
441
|
+
if (r.channel_id && r.adapter)
|
|
442
|
+
targets.push({
|
|
443
|
+
channelId: String(r.channel_id),
|
|
444
|
+
adapter: String(r.adapter),
|
|
445
|
+
botId: String(r.bot_id || ""),
|
|
446
|
+
});
|
|
389
447
|
}
|
|
390
448
|
}
|
|
391
449
|
for (const gid of config.enabledGroups) {
|
|
392
450
|
if (targets.some((t) => t.channelId === gid)) continue;
|
|
393
451
|
const adapters = (root as any).adapters as string[] | undefined;
|
|
394
|
-
const adapterName =
|
|
395
|
-
|
|
452
|
+
const adapterName =
|
|
453
|
+
Array.isArray(adapters) && adapters[0] ? adapters[0] : "";
|
|
454
|
+
if (adapterName)
|
|
455
|
+
targets.push({
|
|
456
|
+
channelId: String(gid),
|
|
457
|
+
adapter: adapterName,
|
|
458
|
+
botId: "",
|
|
459
|
+
});
|
|
396
460
|
}
|
|
397
461
|
for (const t of targets) {
|
|
398
|
-
if (
|
|
462
|
+
if (
|
|
463
|
+
config.disabledGroups.length &&
|
|
464
|
+
isGroupInList(t.channelId, config.disabledGroups)
|
|
465
|
+
)
|
|
466
|
+
continue;
|
|
399
467
|
try {
|
|
400
|
-
const report = await runAnalysis(
|
|
468
|
+
const report = await runAnalysis(
|
|
469
|
+
t.channelId,
|
|
470
|
+
"",
|
|
471
|
+
t.adapter,
|
|
472
|
+
t.botId,
|
|
473
|
+
config.analysisDays,
|
|
474
|
+
);
|
|
401
475
|
if (typeof report === "string") continue;
|
|
402
476
|
const adapter = inject(t.adapter);
|
|
403
477
|
if (adapter?.sendMessage) {
|
|
@@ -406,23 +480,24 @@ useContext("database", () => {
|
|
|
406
480
|
const first = adapter.bots.values().next().value;
|
|
407
481
|
botId = first?.$id ?? first?.selfId ?? "";
|
|
408
482
|
}
|
|
409
|
-
await adapter
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
483
|
+
await adapter
|
|
484
|
+
.sendMessage({
|
|
485
|
+
context: t.adapter,
|
|
486
|
+
bot: botId,
|
|
487
|
+
type: "group",
|
|
488
|
+
id: t.channelId,
|
|
489
|
+
content: report.textReport,
|
|
490
|
+
})
|
|
491
|
+
.catch(() => {});
|
|
416
492
|
}
|
|
417
493
|
} catch (e) {
|
|
418
|
-
logger.warn("
|
|
494
|
+
logger.warn("定时分析发送失败", t.channelId, (e as Error)?.message);
|
|
419
495
|
}
|
|
420
496
|
}
|
|
421
|
-
})
|
|
497
|
+
}),
|
|
422
498
|
);
|
|
423
|
-
logger.info("[group-daily-analysis] 定时分析已注册: " + config.autoAnalysisCron);
|
|
424
499
|
} catch (e) {
|
|
425
|
-
logger.warn("
|
|
500
|
+
logger.warn("注册定时任务失败", (e as Error)?.message);
|
|
426
501
|
}
|
|
427
502
|
});
|
|
428
503
|
|
|
@@ -432,7 +507,3 @@ onDispose(() => {
|
|
|
432
507
|
cronDispose = null;
|
|
433
508
|
}
|
|
434
509
|
});
|
|
435
|
-
|
|
436
|
-
logger.info(
|
|
437
|
-
`[group-daily-analysis] 已加载 (分析天数=${config.analysisDays}, 定时=${config.autoAnalysisEnabled ? config.autoAnalysisCron : "关"})`
|
|
438
|
-
);
|