@zhin.js/plugin-group-suite 3.0.2 → 3.0.4
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/README.md +42 -58
- package/agent/tools/group_announce.ts +2 -2
- package/commands/checkin.ts +12 -0
- package/commands/forget.ts +12 -0
- package/commands/keyword-add/[keyword:string].ts +15 -0
- package/commands/keyword-list.ts +14 -0
- package/commands/keyword-remove/[keyword:string].ts +14 -0
- package/commands/mypoints.ts +12 -0
- package/commands/mystats.ts +12 -0
- package/commands/rank.ts +12 -0
- package/commands/stats-rank.ts +20 -0
- package/commands/stats-week.ts +20 -0
- package/commands/stats.ts +21 -0
- package/commands/teach-list/[page:number=1].ts +13 -0
- package/commands/teach-regex.ts +12 -0
- package/commands/teach.ts +12 -0
- package/lib/analysis-card.d.ts +4 -0
- package/lib/analysis-card.d.ts.map +1 -0
- package/lib/analysis-card.js.map +1 -0
- package/lib/analysis.d.ts +95 -0
- package/lib/analysis.d.ts.map +1 -0
- package/lib/analysis.js.map +1 -0
- package/lib/card-layout.d.ts +27 -0
- package/lib/card-layout.d.ts.map +1 -0
- package/lib/card-layout.js.map +1 -0
- package/lib/checkin-lib.d.ts +18 -0
- package/lib/checkin-lib.d.ts.map +1 -0
- package/lib/checkin-lib.js +118 -0
- package/lib/checkin-lib.js.map +1 -0
- package/lib/config.d.ts +15 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/config.js +19 -0
- package/lib/config.js.map +1 -0
- package/lib/db-store.d.ts +12 -0
- package/lib/db-store.d.ts.map +1 -0
- package/lib/db-store.js +38 -0
- package/lib/db-store.js.map +1 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +8 -0
- package/lib/index.js.map +1 -0
- package/lib/keyword-store.d.ts +6 -0
- package/lib/keyword-store.d.ts.map +1 -0
- package/lib/keyword-store.js +21 -0
- package/lib/keyword-store.js.map +1 -0
- package/lib/memory-store.d.ts +29 -0
- package/lib/memory-store.d.ts.map +1 -0
- package/lib/memory-store.js +59 -0
- package/lib/memory-store.js.map +1 -0
- package/lib/runtime-state.d.ts +24 -0
- package/lib/runtime-state.d.ts.map +1 -0
- package/lib/runtime-state.js +21 -0
- package/lib/runtime-state.js.map +1 -0
- package/lib/shared-runtime.d.ts +20 -0
- package/lib/shared-runtime.d.ts.map +1 -0
- package/lib/shared-runtime.js +34 -0
- package/lib/shared-runtime.js.map +1 -0
- package/lib/stats-card.d.ts +5 -0
- package/lib/stats-card.d.ts.map +1 -0
- package/lib/stats-card.js.map +1 -0
- package/lib/stats-data.d.ts +32 -0
- package/lib/stats-data.d.ts.map +1 -0
- package/lib/stats-data.js.map +1 -0
- package/lib/stats-lib.d.ts +29 -0
- package/lib/stats-lib.d.ts.map +1 -0
- package/lib/stats-lib.js +173 -0
- package/lib/stats-lib.js.map +1 -0
- package/lib/tables.d.ts +4 -0
- package/lib/tables.d.ts.map +1 -0
- package/lib/tables.js +40 -0
- package/lib/tables.js.map +1 -0
- package/lib/teach-lib.d.ts +22 -0
- package/lib/teach-lib.d.ts.map +1 -0
- package/lib/teach-lib.js +233 -0
- package/lib/teach-lib.js.map +1 -0
- package/middlewares/keyword-reply.ts +37 -0
- package/middlewares/stats-count.ts +22 -0
- package/middlewares/teach-reply.ts +22 -0
- package/package.json +37 -15
- package/plugin.ts +39 -0
- package/schema.json +17 -0
- package/src/checkin-lib.ts +148 -0
- package/src/config.ts +23 -57
- package/src/db-store.ts +51 -0
- package/src/index.ts +47 -33
- package/src/keyword-store.ts +24 -0
- package/src/memory-store.ts +88 -0
- package/src/runtime-state.ts +44 -0
- package/src/shared-runtime.ts +44 -0
- package/src/stats-lib.ts +202 -0
- package/src/tables.ts +46 -0
- package/src/teach-lib.ts +301 -0
- package/tools/checkin-query/handler.ts +2 -2
- package/tools/checkin-rank/handler.ts +1 -1
- package/tools/stats-query/handler.ts +2 -2
- package/tools/stats-user/handler.ts +3 -2
- package/lib/agent/tools/group_announce.js +0 -13
- package/lib/agent/tools/group_announce.js.map +0 -1
- package/lib/src/admin.js +0 -114
- package/lib/src/admin.js.map +0 -1
- package/lib/src/analysis-card.js.map +0 -1
- package/lib/src/analysis.js.map +0 -1
- package/lib/src/card-layout.js.map +0 -1
- package/lib/src/checkin.js +0 -168
- package/lib/src/checkin.js.map +0 -1
- package/lib/src/config.js +0 -41
- package/lib/src/config.js.map +0 -1
- package/lib/src/daily-analysis.js +0 -333
- package/lib/src/daily-analysis.js.map +0 -1
- package/lib/src/index.js +0 -30
- package/lib/src/index.js.map +0 -1
- package/lib/src/shared.js +0 -40
- package/lib/src/shared.js.map +0 -1
- package/lib/src/stats-card.js.map +0 -1
- package/lib/src/stats-data.js.map +0 -1
- package/lib/src/stats.js +0 -258
- package/lib/src/stats.js.map +0 -1
- package/lib/src/teach.js +0 -294
- package/lib/src/teach.js.map +0 -1
- package/plugin.yml +0 -3
- package/src/admin.ts +0 -136
- package/src/checkin.ts +0 -196
- package/src/daily-analysis.ts +0 -458
- package/src/shared.ts +0 -51
- package/src/stats.ts +0 -298
- package/src/teach.ts +0 -307
- /package/lib/{src/analysis-card.js → analysis-card.js} +0 -0
- /package/lib/{src/analysis.js → analysis.js} +0 -0
- /package/lib/{src/card-layout.js → card-layout.js} +0 -0
- /package/lib/{src/stats-card.js → stats-card.js} +0 -0
- /package/lib/{src/stats-data.js → stats-data.js} +0 -0
package/README.md
CHANGED
|
@@ -1,80 +1,64 @@
|
|
|
1
1
|
# @zhin.js/plugin-group-suite
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Plugin Runtime 群运营能力包,提供签到积分、消息统计、关键词回复与群问答。所有能力
|
|
4
|
+
由 `commands/`、`middlewares/` 和 `agent/` 约定目录发现,不注册 legacy Plugin 回调。
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
- `@zhin.js/plugin-checkin`
|
|
7
|
-
- `@zhin.js/plugin-stats`
|
|
8
|
-
- `@zhin.js/plugin-group-daily-analysis`
|
|
9
|
-
- `@zhin.js/plugin-teach`
|
|
10
|
-
|
|
11
|
-
## 安装
|
|
6
|
+
## 安装与拓扑
|
|
12
7
|
|
|
13
8
|
```bash
|
|
14
9
|
pnpm add @zhin.js/plugin-group-suite
|
|
15
10
|
```
|
|
16
11
|
|
|
17
|
-
|
|
12
|
+
父插件在 `package.json#zhin.plugins` 中声明子插件:
|
|
18
13
|
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
```json
|
|
15
|
+
{
|
|
16
|
+
"package": "@zhin.js/plugin-group-suite",
|
|
17
|
+
"instanceKey": "group-suite"
|
|
18
|
+
}
|
|
22
19
|
```
|
|
23
20
|
|
|
24
|
-
|
|
21
|
+
配置位于该实例的层级节点:
|
|
25
22
|
|
|
26
23
|
```yaml
|
|
27
24
|
plugins:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
# 可整段省略,使用默认值
|
|
40
|
-
groupSuite:
|
|
41
|
-
noticeAdapters: [icqq]
|
|
42
|
-
autoAnalysisEnabled: true
|
|
43
|
-
autoAnalysisCron: "0 9 * * *"
|
|
25
|
+
group-suite:
|
|
26
|
+
keywordReply: false
|
|
27
|
+
basePointsMin: 10
|
|
28
|
+
basePointsMax: 30
|
|
29
|
+
streakBonus: 5
|
|
30
|
+
streakCap: 50
|
|
31
|
+
rankSize: 10
|
|
32
|
+
teachMaxPerGroup: 200
|
|
33
|
+
teachCooldownMs: 3000
|
|
34
|
+
teachAllowRegex: true
|
|
35
|
+
teachPageSize: 10
|
|
44
36
|
```
|
|
45
37
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
| 字段 | 默认 | 说明 |
|
|
49
|
-
|------|------|------|
|
|
50
|
-
| `welcome` | 欢迎新成员… | 入群欢迎语 |
|
|
51
|
-
| `recallNotify` | `true` | 撤回提示 |
|
|
52
|
-
| `keywordReply` | `false` | 内置关键词(建议用 teach) |
|
|
53
|
-
| `noticeAdapters` | `[icqq]` | 处理 notice 的适配器 |
|
|
54
|
-
| `basePointsMin` / `basePointsMax` | 10 / 30 | 签到积分 |
|
|
55
|
-
| `rankSize` | 10 | 签到与统计排行人数 |
|
|
56
|
-
| `statsRetentionDays` | 90 | 统计保留天数 |
|
|
57
|
-
| `analysisDays` | 1 | 群分析天数 |
|
|
58
|
-
| `analysisGroups` | `[]` | 日报白名单(空=不限制) |
|
|
59
|
-
| `analysisGroupsBlock` | `[]` | 日报黑名单 |
|
|
60
|
-
| `teachMaxPerGroup` | 200 | 每群问答上限 |
|
|
61
|
-
| `teachCooldownMs` | 3000 | 问答冷却(毫秒) |
|
|
38
|
+
完整约束以 [`schema.json`](./schema.json) 为 SSOT。数据优先写入 Runtime
|
|
39
|
+
`DatabaseHost`;未配置数据库时使用插件实例私有的内存存储,适合测试。
|
|
62
40
|
|
|
63
|
-
|
|
41
|
+
数据库、关键词、教学冷却和消息统计缓冲统一封装为 owner-scoped
|
|
42
|
+
`GroupSuiteRuntime`。commands/middlewares 只通过 Capability Context 解析该资源;因此同一
|
|
43
|
+
进程中的多个实例、HMR 新旧 generation 不会共享可变状态。
|
|
64
44
|
|
|
65
|
-
|
|
45
|
+
## 能力
|
|
66
46
|
|
|
67
|
-
|
|
68
|
-
|
|
47
|
+
| 路径 | 说明 |
|
|
48
|
+
|---|---|
|
|
49
|
+
| `checkin` / `mypoints` / `rank` | 签到、积分与排行 |
|
|
50
|
+
| `stats` / `stats-week` / `stats-rank` / `mystats` | 消息统计 |
|
|
51
|
+
| `teach` / `teach-regex` / `teach-list` / `forget` | 群问答管理 |
|
|
52
|
+
| `keyword-add` / `keyword-list` / `keyword-remove` | 关键词回复管理 |
|
|
53
|
+
| `middlewares/*` | 入站统计、关键词和问答匹配 |
|
|
54
|
+
| `agent/tools/group_announce.ts` | 可选 Agent 群公告工具 |
|
|
69
55
|
|
|
70
|
-
|
|
56
|
+
本 major 不包含 Adapter side-event 欢迎/撤回、AI 群日报或 HTML 报表。这些旧能力
|
|
57
|
+
需要独立的事件与渲染 Feature,已从 schema 移除,避免出现“可配置但不生效”的字段。
|
|
71
58
|
|
|
72
|
-
##
|
|
59
|
+
## 验证
|
|
73
60
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
| `群分析` / `分析设置` | 日报 |
|
|
79
|
-
| `teach` / `teach-regex` / `forget` / `teach-list` | 问答(`teach 问题 回答` 或 `teach 问题\|答案`) |
|
|
80
|
-
| `添加关键词` … | 仅 `keywordReply: true` |
|
|
61
|
+
```bash
|
|
62
|
+
pnpm --filter @zhin.js/plugin-group-suite build
|
|
63
|
+
pnpm --filter @zhin.js/plugin-group-suite test
|
|
64
|
+
```
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineAgentTool } from '@zhin.js/agent/tools';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
|
-
export default
|
|
4
|
+
export default defineAgentTool<{ message: string }>({
|
|
5
5
|
description: '向群聊发送公告/通知消息',
|
|
6
6
|
inputSchema: z.object({ message: z.string().min(1) }),
|
|
7
7
|
keywords: ['群公告', '通知', 'announce'],
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import type { Message } from '@zhin.js/core/runtime';
|
|
3
|
+
import { resolveGroupSuiteConfig, type GroupSuiteConfig } from '../src/config.js';
|
|
4
|
+
import { doCheckin } from '../src/checkin-lib.js';
|
|
5
|
+
import { resolveGroupSuiteRuntime } from '../src/runtime-state.js';
|
|
6
|
+
|
|
7
|
+
export default defineCommand<GroupSuiteConfig, string, Message>({
|
|
8
|
+
description: '每日签到获得积分',
|
|
9
|
+
execute({ config, input, owner, use }) {
|
|
10
|
+
return doCheckin(input ?? {}, resolveGroupSuiteConfig(config), resolveGroupSuiteRuntime({ owner, use }));
|
|
11
|
+
},
|
|
12
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import type { Message } from '@zhin.js/core/runtime';
|
|
3
|
+
import type { GroupSuiteConfig } from '../src/config.js';
|
|
4
|
+
import { teachForget } from '../src/teach-lib.js';
|
|
5
|
+
import { resolveGroupSuiteRuntime } from '../src/runtime-state.js';
|
|
6
|
+
|
|
7
|
+
export default defineCommand<GroupSuiteConfig, string, Message>({
|
|
8
|
+
description: '忘记问答(删除问答对)',
|
|
9
|
+
execute({ input, args, owner, use }) {
|
|
10
|
+
return teachForget(input ?? {}, args.join(' '), resolveGroupSuiteRuntime({ owner, use }));
|
|
11
|
+
},
|
|
12
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import { addKeyword } from '../../src/keyword-store.js';
|
|
3
|
+
import type { GroupSuiteConfig } from '../../src/config.js';
|
|
4
|
+
import { resolveGroupSuiteRuntime } from '../../src/runtime-state.js';
|
|
5
|
+
|
|
6
|
+
export default defineCommand<GroupSuiteConfig>({
|
|
7
|
+
description: '添加关键词自动回复',
|
|
8
|
+
execute({ params, args, owner, use }) {
|
|
9
|
+
const keyword = String(params.keyword ?? '');
|
|
10
|
+
const reply = args.join(' ').trim();
|
|
11
|
+
if (!keyword || !reply) return '请提供关键词和回复内容';
|
|
12
|
+
addKeyword(keyword, reply, resolveGroupSuiteRuntime({ owner, use })?.keywords);
|
|
13
|
+
return `已添加关键词「${keyword}」→「${reply}」`;
|
|
14
|
+
},
|
|
15
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import { listKeywords } from '../src/keyword-store.js';
|
|
3
|
+
import type { GroupSuiteConfig } from '../src/config.js';
|
|
4
|
+
import { resolveGroupSuiteRuntime } from '../src/runtime-state.js';
|
|
5
|
+
|
|
6
|
+
export default defineCommand<GroupSuiteConfig>({
|
|
7
|
+
description: '查看所有关键词回复对',
|
|
8
|
+
execute({ owner, use }) {
|
|
9
|
+
const entries = listKeywords(resolveGroupSuiteRuntime({ owner, use })?.keywords);
|
|
10
|
+
if (entries.length === 0) return '当前没有设置任何关键词';
|
|
11
|
+
const lines = entries.map(([k, v], i) => `${i + 1}. 「${k}」→「${v}」`);
|
|
12
|
+
return `关键词列表(共 ${entries.length} 条):\n${lines.join('\n')}`;
|
|
13
|
+
},
|
|
14
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import { removeKeyword } from '../../src/keyword-store.js';
|
|
3
|
+
import type { GroupSuiteConfig } from '../../src/config.js';
|
|
4
|
+
import { resolveGroupSuiteRuntime } from '../../src/runtime-state.js';
|
|
5
|
+
|
|
6
|
+
export default defineCommand<GroupSuiteConfig>({
|
|
7
|
+
description: '删除关键词自动回复',
|
|
8
|
+
execute({ params, owner, use }) {
|
|
9
|
+
const keyword = String(params.keyword ?? '');
|
|
10
|
+
if (!keyword) return '请提供要删除的关键词';
|
|
11
|
+
if (!removeKeyword(keyword, resolveGroupSuiteRuntime({ owner, use })?.keywords)) return `关键词「${keyword}」不存在`;
|
|
12
|
+
return `已删除关键词「${keyword}」`;
|
|
13
|
+
},
|
|
14
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import type { Message } from '@zhin.js/core/runtime';
|
|
3
|
+
import type { GroupSuiteConfig } from '../src/config.js';
|
|
4
|
+
import { myPoints } from '../src/checkin-lib.js';
|
|
5
|
+
import { resolveGroupSuiteRuntime } from '../src/runtime-state.js';
|
|
6
|
+
|
|
7
|
+
export default defineCommand<GroupSuiteConfig, string, Message>({
|
|
8
|
+
description: '查看个人积分与签到信息',
|
|
9
|
+
execute({ input, owner, use }) {
|
|
10
|
+
return myPoints(input ?? {}, resolveGroupSuiteRuntime({ owner, use }));
|
|
11
|
+
},
|
|
12
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import type { Message } from '@zhin.js/core/runtime';
|
|
3
|
+
import type { GroupSuiteConfig } from '../src/config.js';
|
|
4
|
+
import { myStatsText } from '../src/stats-lib.js';
|
|
5
|
+
import { resolveGroupSuiteRuntime } from '../src/runtime-state.js';
|
|
6
|
+
|
|
7
|
+
export default defineCommand<GroupSuiteConfig, string, Message>({
|
|
8
|
+
description: '查看个人消息统计',
|
|
9
|
+
execute({ input, owner, use }) {
|
|
10
|
+
return myStatsText(input ?? {}, resolveGroupSuiteRuntime({ owner, use }));
|
|
11
|
+
},
|
|
12
|
+
});
|
package/commands/rank.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import type { Message } from '@zhin.js/core/runtime';
|
|
3
|
+
import { resolveGroupSuiteConfig, type GroupSuiteConfig } from '../src/config.js';
|
|
4
|
+
import { pointsRank } from '../src/checkin-lib.js';
|
|
5
|
+
import { resolveGroupSuiteRuntime } from '../src/runtime-state.js';
|
|
6
|
+
|
|
7
|
+
export default defineCommand<GroupSuiteConfig, string, Message>({
|
|
8
|
+
description: '查看积分排行榜',
|
|
9
|
+
execute({ config, input, owner, use }) {
|
|
10
|
+
return pointsRank(input ?? {}, resolveGroupSuiteConfig(config), resolveGroupSuiteRuntime({ owner, use }));
|
|
11
|
+
},
|
|
12
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import type { Message } from '@zhin.js/core/runtime';
|
|
3
|
+
import { resolveGroupSuiteConfig, type GroupSuiteConfig } from '../src/config.js';
|
|
4
|
+
import { monthStartStr, resolveGroupId, statsRankText } from '../src/stats-lib.js';
|
|
5
|
+
import { resolveGroupSuiteRuntime } from '../src/runtime-state.js';
|
|
6
|
+
|
|
7
|
+
export default defineCommand<GroupSuiteConfig, string, Message>({
|
|
8
|
+
description: '查看本月话唠排行',
|
|
9
|
+
execute({ config, input, owner, use }) {
|
|
10
|
+
const groupId = resolveGroupId(input ?? {});
|
|
11
|
+
const title = groupId ? '本月话唠排行' : '全局话唠排行';
|
|
12
|
+
return statsRankText(
|
|
13
|
+
input ?? {},
|
|
14
|
+
resolveGroupSuiteConfig(config),
|
|
15
|
+
monthStartStr(),
|
|
16
|
+
title,
|
|
17
|
+
resolveGroupSuiteRuntime({ owner, use }),
|
|
18
|
+
);
|
|
19
|
+
},
|
|
20
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import type { Message } from '@zhin.js/core/runtime';
|
|
3
|
+
import { resolveGroupSuiteConfig, type GroupSuiteConfig } from '../src/config.js';
|
|
4
|
+
import { resolveGroupId, statsRankText, weekStartStr } from '../src/stats-lib.js';
|
|
5
|
+
import { resolveGroupSuiteRuntime } from '../src/runtime-state.js';
|
|
6
|
+
|
|
7
|
+
export default defineCommand<GroupSuiteConfig, string, Message>({
|
|
8
|
+
description: '查看本周消息统计',
|
|
9
|
+
execute({ config, input, owner, use }) {
|
|
10
|
+
const groupId = resolveGroupId(input ?? {});
|
|
11
|
+
const title = groupId ? '本周本群消息统计' : '本周全局消息统计';
|
|
12
|
+
return statsRankText(
|
|
13
|
+
input ?? {},
|
|
14
|
+
resolveGroupSuiteConfig(config),
|
|
15
|
+
weekStartStr(),
|
|
16
|
+
title,
|
|
17
|
+
resolveGroupSuiteRuntime({ owner, use }),
|
|
18
|
+
);
|
|
19
|
+
},
|
|
20
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import type { Message } from '@zhin.js/core/runtime';
|
|
3
|
+
import { resolveGroupSuiteConfig, type GroupSuiteConfig } from '../src/config.js';
|
|
4
|
+
import { todayStr } from '../src/shared-runtime.js';
|
|
5
|
+
import { resolveGroupId, statsRankText } from '../src/stats-lib.js';
|
|
6
|
+
import { resolveGroupSuiteRuntime } from '../src/runtime-state.js';
|
|
7
|
+
|
|
8
|
+
export default defineCommand<GroupSuiteConfig, string, Message>({
|
|
9
|
+
description: '查看今日消息统计',
|
|
10
|
+
execute({ config, input, owner, use }) {
|
|
11
|
+
const groupId = resolveGroupId(input ?? {});
|
|
12
|
+
const title = groupId ? '今日本群消息统计' : '今日全局消息统计';
|
|
13
|
+
return statsRankText(
|
|
14
|
+
input ?? {},
|
|
15
|
+
resolveGroupSuiteConfig(config),
|
|
16
|
+
todayStr(),
|
|
17
|
+
title,
|
|
18
|
+
resolveGroupSuiteRuntime({ owner, use }),
|
|
19
|
+
);
|
|
20
|
+
},
|
|
21
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import type { Message } from '@zhin.js/core/runtime';
|
|
3
|
+
import { resolveGroupSuiteConfig, type GroupSuiteConfig } from '../../src/config.js';
|
|
4
|
+
import { teachList } from '../../src/teach-lib.js';
|
|
5
|
+
import { resolveGroupSuiteRuntime } from '../../src/runtime-state.js';
|
|
6
|
+
|
|
7
|
+
export default defineCommand<GroupSuiteConfig, string, Message>({
|
|
8
|
+
description: '查看问答列表',
|
|
9
|
+
execute({ config, input, params, owner, use }) {
|
|
10
|
+
const page = Number(params.page ?? 1);
|
|
11
|
+
return teachList(input ?? {}, resolveGroupSuiteConfig(config), page, resolveGroupSuiteRuntime({ owner, use }));
|
|
12
|
+
},
|
|
13
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import type { Message } from '@zhin.js/core/runtime';
|
|
3
|
+
import { resolveGroupSuiteConfig, type GroupSuiteConfig } from '../src/config.js';
|
|
4
|
+
import { teachAdd } from '../src/teach-lib.js';
|
|
5
|
+
import { resolveGroupSuiteRuntime } from '../src/runtime-state.js';
|
|
6
|
+
|
|
7
|
+
export default defineCommand<GroupSuiteConfig, string, Message>({
|
|
8
|
+
description: '教我正则问答',
|
|
9
|
+
execute({ config, input, args, owner, use }) {
|
|
10
|
+
return teachAdd(input ?? {}, resolveGroupSuiteConfig(config), args.join(' '), true, resolveGroupSuiteRuntime({ owner, use }));
|
|
11
|
+
},
|
|
12
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineCommand } from '@zhin.js/command';
|
|
2
|
+
import type { Message } from '@zhin.js/core/runtime';
|
|
3
|
+
import { resolveGroupSuiteConfig, type GroupSuiteConfig } from '../src/config.js';
|
|
4
|
+
import { teachAdd } from '../src/teach-lib.js';
|
|
5
|
+
import { resolveGroupSuiteRuntime } from '../src/runtime-state.js';
|
|
6
|
+
|
|
7
|
+
export default defineCommand<GroupSuiteConfig, string, Message>({
|
|
8
|
+
description: '教我问答(teach 问题 回答 或 问题|答案)',
|
|
9
|
+
execute({ config, input, args, owner, use }) {
|
|
10
|
+
return teachAdd(input ?? {}, resolveGroupSuiteConfig(config), args.join(' '), false, resolveGroupSuiteRuntime({ owner, use }));
|
|
11
|
+
},
|
|
12
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis-card.d.ts","sourceRoot":"","sources":["../src/analysis-card.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAQxD,eAAO,MAAM,sBAAsB,WAAoB,CAAC;AAUxD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAqExE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis-card.js","sourceRoot":"","sources":["../src/analysis-card.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 群日常分析:从收件箱查询、基础统计、文本报告。
|
|
3
|
+
* 数据源为 zhin 内置 unified_inbox_message 表(需 inbox.enabled)。
|
|
4
|
+
*
|
|
5
|
+
* 话题/金句/用户画像分析逻辑灵感来自:
|
|
6
|
+
* https://github.com/SXP-Simon/astrbot_plugin_qq_group_daily_analysis
|
|
7
|
+
*/
|
|
8
|
+
export interface InboxMessageRow {
|
|
9
|
+
id?: number;
|
|
10
|
+
adapter: string;
|
|
11
|
+
endpoint_id: string;
|
|
12
|
+
channel_id: string;
|
|
13
|
+
channel_type: string;
|
|
14
|
+
sender_id: string;
|
|
15
|
+
sender_name: string | null;
|
|
16
|
+
content: string;
|
|
17
|
+
/** 收件箱里可能是字符串,也可能被 ORM/驱动解析成对象 */
|
|
18
|
+
raw: unknown;
|
|
19
|
+
created_at: number;
|
|
20
|
+
}
|
|
21
|
+
export interface BasicStats {
|
|
22
|
+
messageCount: number;
|
|
23
|
+
participantCount: number;
|
|
24
|
+
totalChars: number;
|
|
25
|
+
hourlyDistribution: Record<number, number>;
|
|
26
|
+
mostActiveHour: number;
|
|
27
|
+
}
|
|
28
|
+
/** 话题摘要(灵感来自 astrbot_plugin_qq_group_daily_analysis) */
|
|
29
|
+
export interface SummaryTopic {
|
|
30
|
+
topic: string;
|
|
31
|
+
summary?: string;
|
|
32
|
+
}
|
|
33
|
+
/** 金句(灵感来自 astrbot_plugin_qq_group_daily_analysis) */
|
|
34
|
+
export interface GoldenQuote {
|
|
35
|
+
content: string;
|
|
36
|
+
sender: string;
|
|
37
|
+
reason: string;
|
|
38
|
+
}
|
|
39
|
+
/** 用户称号/画像(灵感来自 astrbot_plugin_qq_group_daily_analysis) */
|
|
40
|
+
export interface UserTitle {
|
|
41
|
+
name: string;
|
|
42
|
+
user_id: string;
|
|
43
|
+
title: string;
|
|
44
|
+
reason?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface LLMAnalysis {
|
|
47
|
+
topics: SummaryTopic[];
|
|
48
|
+
quotes: GoldenQuote[];
|
|
49
|
+
userTitles: UserTitle[];
|
|
50
|
+
}
|
|
51
|
+
export interface AnalysisReportMeta {
|
|
52
|
+
channelName?: string;
|
|
53
|
+
days: number;
|
|
54
|
+
startDate: string;
|
|
55
|
+
endDate: string;
|
|
56
|
+
}
|
|
57
|
+
export interface AnalysisReportData extends AnalysisReportMeta {
|
|
58
|
+
stats: BasicStats;
|
|
59
|
+
llm?: LLMAnalysis;
|
|
60
|
+
}
|
|
61
|
+
export interface AnalysisResult {
|
|
62
|
+
stats: BasicStats;
|
|
63
|
+
textReport: string;
|
|
64
|
+
llm?: LLMAnalysis;
|
|
65
|
+
meta: AnalysisReportMeta;
|
|
66
|
+
}
|
|
67
|
+
export declare function buildAnalysisReportData(stats: BasicStats, meta: AnalysisReportMeta, llm?: LLMAnalysis): AnalysisReportData;
|
|
68
|
+
/**
|
|
69
|
+
* 从 content (JSON) 或 raw 提取纯文本,用于统计与 LLM
|
|
70
|
+
*/
|
|
71
|
+
export declare function extractText(row: InboxMessageRow): string;
|
|
72
|
+
/**
|
|
73
|
+
* 计算基础统计:消息数、人数、总字数、按小时分布、最活跃时段
|
|
74
|
+
*/
|
|
75
|
+
export declare function computeBasicStats(rows: InboxMessageRow[]): BasicStats;
|
|
76
|
+
/**
|
|
77
|
+
* 生成纯文本报告(不含 LLM 内容)
|
|
78
|
+
*/
|
|
79
|
+
export declare function formatTextReport(stats: BasicStats, options: {
|
|
80
|
+
channelName?: string;
|
|
81
|
+
days: number;
|
|
82
|
+
startDate: string;
|
|
83
|
+
endDate: string;
|
|
84
|
+
}): string;
|
|
85
|
+
/**
|
|
86
|
+
* 将 LLM 分析结果追加到文本报告。
|
|
87
|
+
* 话题/金句/用户画像 设计灵感来自 astrbot_plugin_qq_group_daily_analysis
|
|
88
|
+
*/
|
|
89
|
+
export declare function appendLLMReport(textReport: string, llm: LLMAnalysis): string;
|
|
90
|
+
/**
|
|
91
|
+
* 从 LLM 返回的文本中解析出 topics / quotes / userTitles。
|
|
92
|
+
* 约定 LLM 返回 JSON 或类似结构,此处做宽松解析。
|
|
93
|
+
*/
|
|
94
|
+
export declare function parseLLMResponse(raw: string): LLMAnalysis;
|
|
95
|
+
//# sourceMappingURL=analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,GAAG,EAAE,OAAO,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,2DAA2D;AAC3D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,KAAK,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,kBAAkB,EACxB,GAAG,CAAC,EAAE,WAAW,GAChB,kBAAkB,CAEpB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA2BxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,UAAU,CA+BrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClF,MAAM,CAqBR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAuB5E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAiCzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { formatCount, StatChip } from "@zhin.js/satori";
|
|
2
|
+
export declare const CARD_CANVAS: "#d8dce3";
|
|
3
|
+
export declare const CARD_THEME: {
|
|
4
|
+
readonly canvas: "#d8dce3";
|
|
5
|
+
readonly card: "#ffffff";
|
|
6
|
+
readonly surface: "#f8f9fb";
|
|
7
|
+
readonly border: "rgba(0,0,0,0.05)";
|
|
8
|
+
readonly text: "#111111";
|
|
9
|
+
readonly textSecondary: "#3f3f46";
|
|
10
|
+
readonly textMuted: "#a1a1aa";
|
|
11
|
+
readonly barTrack: "rgba(0,0,0,0.06)";
|
|
12
|
+
readonly barWarn: "#f59e0b";
|
|
13
|
+
readonly barCrit: "#ef4444";
|
|
14
|
+
readonly accentCpu: "#10b981";
|
|
15
|
+
readonly accentMem: "#3b82f6";
|
|
16
|
+
readonly accentDisk: "#8b5cf6";
|
|
17
|
+
readonly accentSwap: "#ec4899";
|
|
18
|
+
readonly divider: "rgba(0,0,0,0.06)";
|
|
19
|
+
readonly shadowLg: "0 16px 40px rgba(15,23,42,0.14)";
|
|
20
|
+
readonly shadowMd: "0 8px 22px rgba(15,23,42,0.10)";
|
|
21
|
+
readonly shadowSm: "0 2px 8px rgba(15,23,42,0.07)";
|
|
22
|
+
readonly shadowFloor: "rgba(15,23,42,0.07)";
|
|
23
|
+
};
|
|
24
|
+
export { formatCount, StatChip };
|
|
25
|
+
export declare function elevatedCard(inner: string): string;
|
|
26
|
+
export declare function cardShell(inner: string, width?: number): string;
|
|
27
|
+
//# sourceMappingURL=card-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card-layout.d.ts","sourceRoot":"","sources":["../src/card-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,WAAW,EAEX,QAAQ,EACT,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,WAAW,WAA4B,CAAC;AACrD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;CAAqB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAEjC,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,MAAM,CAE5D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card-layout.js","sourceRoot":"","sources":["../src/card-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,CAAC,EACD,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;AACrD,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAEjC,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,KAAK,GAAG,GAAG;IAClD,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { GroupSuiteConfig } from './config.js';
|
|
2
|
+
import type { GroupSuiteRuntime } from './runtime-state.js';
|
|
3
|
+
export declare function doCheckin(input: {
|
|
4
|
+
sender?: string;
|
|
5
|
+
target?: string;
|
|
6
|
+
metadata?: Readonly<Record<string, unknown>>;
|
|
7
|
+
}, cfg: GroupSuiteConfig, runtime?: GroupSuiteRuntime): Promise<string>;
|
|
8
|
+
export declare function myPoints(input: {
|
|
9
|
+
sender?: string;
|
|
10
|
+
target?: string;
|
|
11
|
+
metadata?: Readonly<Record<string, unknown>>;
|
|
12
|
+
}, runtime?: GroupSuiteRuntime): Promise<string>;
|
|
13
|
+
export declare function pointsRank(input: {
|
|
14
|
+
sender?: string;
|
|
15
|
+
target?: string;
|
|
16
|
+
metadata?: Readonly<Record<string, unknown>>;
|
|
17
|
+
}, cfg: GroupSuiteConfig, runtime?: GroupSuiteRuntime): Promise<string>;
|
|
18
|
+
//# sourceMappingURL=checkin-lib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkin-lib.d.ts","sourceRoot":"","sources":["../src/checkin-lib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAUpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAsC5D,wBAAsB,SAAS,CAC7B,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAAE,EACzF,GAAG,EAAE,gBAAgB,EACrB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAyCjB;AAED,wBAAsB,QAAQ,CAC5B,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAAE,EACzF,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAAE,EACzF,GAAG,EAAE,gBAAgB,EACrB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
|