@zhin.js/plugin-group-suite 3.0.2 → 3.0.3

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.
Files changed (131) hide show
  1. package/README.md +42 -58
  2. package/agent/tools/group_announce.ts +2 -2
  3. package/commands/checkin.ts +12 -0
  4. package/commands/forget.ts +12 -0
  5. package/commands/keyword-add/[keyword:string].ts +15 -0
  6. package/commands/keyword-list.ts +14 -0
  7. package/commands/keyword-remove/[keyword:string].ts +14 -0
  8. package/commands/mypoints.ts +12 -0
  9. package/commands/mystats.ts +12 -0
  10. package/commands/rank.ts +12 -0
  11. package/commands/stats-rank.ts +20 -0
  12. package/commands/stats-week.ts +20 -0
  13. package/commands/stats.ts +21 -0
  14. package/commands/teach-list/[page:number=1].ts +13 -0
  15. package/commands/teach-regex.ts +12 -0
  16. package/commands/teach.ts +12 -0
  17. package/lib/analysis-card.d.ts +4 -0
  18. package/lib/analysis-card.d.ts.map +1 -0
  19. package/lib/analysis-card.js.map +1 -0
  20. package/lib/analysis.d.ts +95 -0
  21. package/lib/analysis.d.ts.map +1 -0
  22. package/lib/analysis.js.map +1 -0
  23. package/lib/card-layout.d.ts +27 -0
  24. package/lib/card-layout.d.ts.map +1 -0
  25. package/lib/card-layout.js.map +1 -0
  26. package/lib/checkin-lib.d.ts +18 -0
  27. package/lib/checkin-lib.d.ts.map +1 -0
  28. package/lib/checkin-lib.js +118 -0
  29. package/lib/checkin-lib.js.map +1 -0
  30. package/lib/config.d.ts +15 -0
  31. package/lib/config.d.ts.map +1 -0
  32. package/lib/config.js +19 -0
  33. package/lib/config.js.map +1 -0
  34. package/lib/db-store.d.ts +12 -0
  35. package/lib/db-store.d.ts.map +1 -0
  36. package/lib/db-store.js +38 -0
  37. package/lib/db-store.js.map +1 -0
  38. package/lib/index.d.ts +10 -0
  39. package/lib/index.d.ts.map +1 -0
  40. package/lib/index.js +8 -0
  41. package/lib/index.js.map +1 -0
  42. package/lib/keyword-store.d.ts +6 -0
  43. package/lib/keyword-store.d.ts.map +1 -0
  44. package/lib/keyword-store.js +21 -0
  45. package/lib/keyword-store.js.map +1 -0
  46. package/lib/memory-store.d.ts +29 -0
  47. package/lib/memory-store.d.ts.map +1 -0
  48. package/lib/memory-store.js +59 -0
  49. package/lib/memory-store.js.map +1 -0
  50. package/lib/runtime-state.d.ts +24 -0
  51. package/lib/runtime-state.d.ts.map +1 -0
  52. package/lib/runtime-state.js +21 -0
  53. package/lib/runtime-state.js.map +1 -0
  54. package/lib/shared-runtime.d.ts +20 -0
  55. package/lib/shared-runtime.d.ts.map +1 -0
  56. package/lib/shared-runtime.js +34 -0
  57. package/lib/shared-runtime.js.map +1 -0
  58. package/lib/stats-card.d.ts +5 -0
  59. package/lib/stats-card.d.ts.map +1 -0
  60. package/lib/stats-card.js.map +1 -0
  61. package/lib/stats-data.d.ts +32 -0
  62. package/lib/stats-data.d.ts.map +1 -0
  63. package/lib/stats-data.js.map +1 -0
  64. package/lib/stats-lib.d.ts +29 -0
  65. package/lib/stats-lib.d.ts.map +1 -0
  66. package/lib/stats-lib.js +173 -0
  67. package/lib/stats-lib.js.map +1 -0
  68. package/lib/tables.d.ts +4 -0
  69. package/lib/tables.d.ts.map +1 -0
  70. package/lib/tables.js +40 -0
  71. package/lib/tables.js.map +1 -0
  72. package/lib/teach-lib.d.ts +22 -0
  73. package/lib/teach-lib.d.ts.map +1 -0
  74. package/lib/teach-lib.js +233 -0
  75. package/lib/teach-lib.js.map +1 -0
  76. package/middlewares/keyword-reply.ts +37 -0
  77. package/middlewares/stats-count.ts +22 -0
  78. package/middlewares/teach-reply.ts +22 -0
  79. package/package.json +37 -15
  80. package/plugin.ts +39 -0
  81. package/schema.json +17 -0
  82. package/src/checkin-lib.ts +148 -0
  83. package/src/config.ts +23 -57
  84. package/src/db-store.ts +51 -0
  85. package/src/index.ts +47 -33
  86. package/src/keyword-store.ts +24 -0
  87. package/src/memory-store.ts +88 -0
  88. package/src/runtime-state.ts +44 -0
  89. package/src/shared-runtime.ts +44 -0
  90. package/src/stats-lib.ts +202 -0
  91. package/src/tables.ts +46 -0
  92. package/src/teach-lib.ts +301 -0
  93. package/tools/checkin-query/handler.ts +2 -2
  94. package/tools/checkin-rank/handler.ts +1 -1
  95. package/tools/stats-query/handler.ts +2 -2
  96. package/tools/stats-user/handler.ts +3 -2
  97. package/lib/agent/tools/group_announce.js +0 -13
  98. package/lib/agent/tools/group_announce.js.map +0 -1
  99. package/lib/src/admin.js +0 -114
  100. package/lib/src/admin.js.map +0 -1
  101. package/lib/src/analysis-card.js.map +0 -1
  102. package/lib/src/analysis.js.map +0 -1
  103. package/lib/src/card-layout.js.map +0 -1
  104. package/lib/src/checkin.js +0 -168
  105. package/lib/src/checkin.js.map +0 -1
  106. package/lib/src/config.js +0 -41
  107. package/lib/src/config.js.map +0 -1
  108. package/lib/src/daily-analysis.js +0 -333
  109. package/lib/src/daily-analysis.js.map +0 -1
  110. package/lib/src/index.js +0 -30
  111. package/lib/src/index.js.map +0 -1
  112. package/lib/src/shared.js +0 -40
  113. package/lib/src/shared.js.map +0 -1
  114. package/lib/src/stats-card.js.map +0 -1
  115. package/lib/src/stats-data.js.map +0 -1
  116. package/lib/src/stats.js +0 -258
  117. package/lib/src/stats.js.map +0 -1
  118. package/lib/src/teach.js +0 -294
  119. package/lib/src/teach.js.map +0 -1
  120. package/plugin.yml +0 -3
  121. package/src/admin.ts +0 -136
  122. package/src/checkin.ts +0 -196
  123. package/src/daily-analysis.ts +0 -458
  124. package/src/shared.ts +0 -51
  125. package/src/stats.ts +0 -298
  126. package/src/teach.ts +0 -307
  127. /package/lib/{src/analysis-card.js → analysis-card.js} +0 -0
  128. /package/lib/{src/analysis.js → analysis.js} +0 -0
  129. /package/lib/{src/card-layout.js → card-layout.js} +0 -0
  130. /package/lib/{src/stats-card.js → stats-card.js} +0 -0
  131. /package/lib/{src/stats-data.js → stats-data.js} +0 -0
package/lib/src/admin.js DELETED
@@ -1,114 +0,0 @@
1
- import { formatCompact, MessageCommand, matchesSideEventName, sideEventSendChannel, } from "zhin.js";
2
- import { adapterAllowed } from "./shared.js";
3
- export function registerAdmin(plugin, cfg) {
4
- const { addCommand, logger } = plugin;
5
- const welcomeTemplate = cfg.welcome;
6
- const noticeAdapters = cfg.noticeAdapters;
7
- plugin.on("notice.receive", async (notice) => {
8
- if (!adapterAllowed(noticeAdapters, String(notice.$adapter)))
9
- return;
10
- if (matchesSideEventName(notice, "notice.group.member_increase")) {
11
- if (notice.$scene_type !== "group")
12
- return;
13
- const targetName = notice.$target?.name || notice.$target?.id || "新成员";
14
- const welcomeMsg = `🎉 ${targetName},${welcomeTemplate}`;
15
- const channel = sideEventSendChannel(notice);
16
- try {
17
- const adapter = plugin.inject(notice.$adapter);
18
- if (!adapter?.sendMessage)
19
- return;
20
- await adapter.sendMessage({
21
- context: notice.$adapter,
22
- endpoint: notice.$endpoint,
23
- content: welcomeMsg,
24
- id: channel.id,
25
- type: channel.type,
26
- });
27
- }
28
- catch (e) {
29
- logger.warn(formatCompact({
30
- op: "welcome",
31
- ok: false,
32
- error: e instanceof Error ? e.message : String(e),
33
- }));
34
- }
35
- return;
36
- }
37
- if (cfg.recallNotify && matchesSideEventName(notice, "notice.group.recall")) {
38
- if (notice.$scene_type !== "group")
39
- return;
40
- const operatorName = notice.$actor?.name || notice.$actor?.id || "某人";
41
- const msg = `⚠️ ${operatorName} 撤回了一条消息`;
42
- const channel = sideEventSendChannel(notice);
43
- try {
44
- const adapter = plugin.inject(notice.$adapter);
45
- if (!adapter?.sendMessage)
46
- return;
47
- await adapter.sendMessage({
48
- context: notice.$adapter,
49
- endpoint: notice.$endpoint,
50
- content: msg,
51
- id: channel.id,
52
- type: channel.type,
53
- });
54
- }
55
- catch (e) {
56
- logger.warn(formatCompact({
57
- op: "recall_notice",
58
- ok: false,
59
- error: e instanceof Error ? e.message : String(e),
60
- }));
61
- }
62
- }
63
- });
64
- if (!cfg.keywordReply)
65
- return;
66
- const keywords = new Map();
67
- plugin.root.addMiddleware(async (message, next) => {
68
- if (message.$channel.type !== "group") {
69
- await next();
70
- return;
71
- }
72
- const raw = message.$raw?.trim();
73
- if (!raw) {
74
- await next();
75
- return;
76
- }
77
- for (const [keyword, reply] of keywords) {
78
- if (raw.includes(keyword)) {
79
- await message.$reply?.(reply);
80
- return;
81
- }
82
- }
83
- await next();
84
- });
85
- addCommand(new MessageCommand("添加关键词 <keyword:text> <reply:text>")
86
- .desc("添加一个关键词自动回复对")
87
- .action(async (_message, result) => {
88
- const { keyword, reply } = result.params;
89
- if (!keyword || !reply)
90
- return "请提供关键词和回复内容";
91
- keywords.set(keyword, reply);
92
- return `已添加关键词「${keyword}」→「${reply}」`;
93
- }));
94
- addCommand(new MessageCommand("删除关键词 <keyword:text>")
95
- .desc("删除一个关键词")
96
- .action(async (_message, result) => {
97
- const { keyword } = result.params;
98
- if (!keyword)
99
- return "请提供要删除的关键词";
100
- if (!keywords.has(keyword))
101
- return `关键词「${keyword}」不存在`;
102
- keywords.delete(keyword);
103
- return `已删除关键词「${keyword}」`;
104
- }));
105
- addCommand(new MessageCommand("关键词列表")
106
- .desc("查看所有关键词回复对")
107
- .action(async () => {
108
- if (keywords.size === 0)
109
- return "当前没有设置任何关键词";
110
- const lines = Array.from(keywords.entries()).map(([k, v], i) => `${i + 1}. 「${k}」→「${v}」`);
111
- return `关键词列表(共 ${keywords.size} 条):\n${lines.join("\n")}`;
112
- }));
113
- }
114
- //# sourceMappingURL=admin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,GAAqB;IACjE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACtC,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC;IACpC,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;IAE1C,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAAE,OAAO;QAErE,IAAI,oBAAoB,CAAC,MAAM,EAAE,8BAA8B,CAAC,EAAE,CAAC;YACjE,IAAI,MAAM,CAAC,WAAW,KAAK,OAAO;gBAAE,OAAO;YAC3C,MAAM,UAAU,GACd,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,KAAK,CAAC;YACtD,MAAM,UAAU,GAAG,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAiB,CAAQ,CAAC;gBAC/D,IAAI,CAAC,OAAO,EAAE,WAAW;oBAAE,OAAO;gBAClC,MAAM,OAAO,CAAC,WAAW,CAAC;oBACxB,OAAO,EAAE,MAAM,CAAC,QAAQ;oBACxB,QAAQ,EAAE,MAAM,CAAC,SAAS;oBAC1B,OAAO,EAAE,UAAU;oBACnB,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CACT,aAAa,CAAC;oBACZ,EAAE,EAAE,SAAS;oBACb,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;iBAClD,CAAC,CACH,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,YAAY,IAAI,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAAE,CAAC;YAC5E,IAAI,MAAM,CAAC,WAAW,KAAK,OAAO;gBAAE,OAAO;YAC3C,MAAM,YAAY,GAChB,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC;YACnD,MAAM,GAAG,GAAG,MAAM,YAAY,UAAU,CAAC;YACzC,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAiB,CAAQ,CAAC;gBAC/D,IAAI,CAAC,OAAO,EAAE,WAAW;oBAAE,OAAO;gBAClC,MAAM,OAAO,CAAC,WAAW,CAAC;oBACxB,OAAO,EAAE,MAAM,CAAC,QAAQ;oBACxB,QAAQ,EAAE,MAAM,CAAC,SAAS;oBAC1B,OAAO,EAAE,GAAG;oBACZ,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CACT,aAAa,CAAC;oBACZ,EAAE,EAAE,eAAe;oBACnB,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;iBAClD,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,YAAY;QAAE,OAAO;IAE9B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE3C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAChD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACtC,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;YACxC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;QACH,CAAC;QACD,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,UAAU,CACR,IAAI,cAAc,CAAC,mCAAmC,CAAC;SACpD,IAAI,CAAC,cAAc,CAAC;SACpB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;QACjC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAGjC,CAAC;QACF,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;YAAE,OAAO,aAAa,CAAC;QAC7C,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,UAAU,OAAO,MAAM,KAAK,GAAG,CAAC;IACzC,CAAC,CAAC,CACL,CAAC;IAEF,UAAU,CACR,IAAI,cAAc,CAAC,sBAAsB,CAAC;SACvC,IAAI,CAAC,SAAS,CAAC;SACf,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;QACjC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAA6B,CAAC;QACzD,IAAI,CAAC,OAAO;YAAE,OAAO,YAAY,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,OAAO,MAAM,CAAC;QACxD,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,UAAU,OAAO,GAAG,CAAC;IAC9B,CAAC,CAAC,CACL,CAAC;IAEF,UAAU,CACR,IAAI,cAAc,CAAC,OAAO,CAAC;SACxB,IAAI,CAAC,YAAY,CAAC;SAClB,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,aAAa,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAC9C,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CACzC,CAAC;QACF,OAAO,WAAW,QAAQ,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7D,CAAC,CAAC,CACL,CAAC;AAEJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"analysis-card.js","sourceRoot":"","sources":["../../src/analysis-card.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,CAAC,EACD,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAO,EACP,QAAQ,EACR,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC,MAAM,CAAC;AAExD,MAAM,CAAC,GAAG;IACR,GAAG,UAAU;IACb,SAAS,EAAE,UAAU,CAAC,SAAS;IAC/B,YAAY,EAAE,UAAU,CAAC,SAAS;IAClC,WAAW,EAAE,UAAU,CAAC,UAAU;IAClC,UAAU,EAAE,UAAU,CAAC,OAAO;CACtB,CAAC;AAEX,MAAM,UAAU,uBAAuB,CAAC,IAAwB;IAC9D,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACnE,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;IAC/D,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;IACxE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAElG,MAAM,SAAS,GAAG;QAChB,GAAG,EAAE,MAAM,EAAE,MAAM;YACjB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gBACT,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE;oBAClD,KAAK,EAAE,CAAC,GAAG,CAAC;oBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,CAAC,CAAC;aACJ,CAAC;YACJ,CAAC,CAAC,EAAE;QACN,GAAG,EAAE,MAAM,EAAE,MAAM;YACjB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gBACT,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE;oBAClD,KAAK,EAAE,CAAC,GAAG,CAAC;oBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;iBACrB,CAAC,CAAC;aACJ,CAAC;YACJ,CAAC,CAAC,EAAE;QACN,GAAG,EAAE,UAAU,EAAE,MAAM;YACrB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gBACT,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE;oBACtD,KAAK,EAAE,CAAC,GAAG,CAAC;oBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,CAAC;aACJ,CAAC;YACJ,CAAC,CAAC,EAAE;KACP,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEX,MAAM,IAAI,GAAG,YAAY,CAAC;QACxB,CAAC,CAAC,UAAU,EAAE;YACZ,KAAK;YACL,IAAI,EAAE,GAAG,SAAS,MAAM,OAAO,SAAS,IAAI,IAAI;SACjD,CAAC;QACF,CAAC,CAAC,GAAG,EAAE;YACL,QAAQ,EAAE;gBACR,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;gBACzF,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC;gBAChG,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBACzF,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;aACrE;YACD,GAAG,EAAE,EAAE;YACP,KAAK,EAAE,mBAAmB;SAC3B,CAAC;QACF,CAAC,CAAC,OAAO,EAAE;YACT,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE;gBACpB,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,KAAK,CAAC,cAAc;gBAC/B,MAAM,EAAE,CAAC,CAAC,SAAS;gBACnB,UAAU,EAAE,CAAC,CAAC,UAAU;aACzB,CAAC;SACH,CAAC;QACF,SAAS;KACV,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAEZ,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/analysis.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsEH,MAAM,UAAU,uBAAuB,CACrC,KAAiB,EACjB,IAAwB,EACxB,GAAiB;IAEjB,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,GAAoB;IAC9C,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;IAClB,CAAC;IACD,kDAAkD;IAClD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;QACtB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC;QAC/C,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,OAAO;iBACX,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;gBACjB,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC5C,CAAC;gBACD,OAAO,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YAC1B,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAuB;IACvD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;YACzB,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACrB,cAAc,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,MAAM;QACzB,gBAAgB,EAAE,cAAc,CAAC,IAAI;QACrC,UAAU;QACV,kBAAkB,EAAE,MAAM;QAC1B,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAiB,EACjB,OAAmF;IAEnF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW;QAC/B,CAAC,CAAC,IAAI,OAAO,CAAC,WAAW,QAAQ;QACjC,CAAC,CAAC,OAAO,CAAC;IACZ,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,SAAS,MAAM,OAAO,CAAC,OAAO,OAAO,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;IACtF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,cAAc,SAAS,KAAK,CAAC,cAAc,GAAG,CAAC,KAAK,CAAC,CAAC;IAClF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,GAAgB;IAClE,MAAM,KAAK,GAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,MAAM,GAAgB,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAA4B,CAAC;YAChE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBAC1C,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBACpE,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;iBAC/D,CAAC,CAAC,CAAC;YACN,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBAC1C,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;oBAChC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;oBAC9B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;iBAC/B,CAAC,CAAC,CAAC;YACN,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBACnD,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC1B,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;oBAChC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC5B,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;iBAC5D,CAAC,CAAC,CAAC;YACN,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +0,0 @@
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"}
@@ -1,168 +0,0 @@
1
- import { formatCompact, MessageCommand } from "zhin.js";
2
- import { getDatabase, getMessageContextKey, todayStr, ts } from "./shared.js";
3
- function yesterdayStr() {
4
- const d = new Date();
5
- d.setDate(d.getDate() - 1);
6
- return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
7
- }
8
- function randomInt(min, max) {
9
- return Math.floor(Math.random() * (max - min + 1)) + min;
10
- }
11
- let _db = null;
12
- export function getCheckinModel() {
13
- return _db?.models?.get("checkin_records") ?? null;
14
- }
15
- export function registerCheckin(plugin, cfg) {
16
- const { logger, addCommand, useContext } = plugin;
17
- useContext("database", (db) => {
18
- _db = db;
19
- db.define("checkin_records", {
20
- user_id: { type: "text", nullable: false },
21
- user_name: { type: "text", default: "" },
22
- points: { type: "integer", default: 0 },
23
- total_checkins: { type: "integer", default: 0 },
24
- streak: { type: "integer", default: 0 },
25
- max_streak: { type: "integer", default: 0 },
26
- last_checkin: { type: "text", default: "" },
27
- context_type: { type: "text", default: "global" },
28
- context_id: { type: "text", default: "" },
29
- created_at: { type: "text", default: "" },
30
- updated_at: { type: "text", default: "" },
31
- });
32
- logger.debug(formatCompact({ 模块: "签到", 数据模型: "已就绪" }));
33
- });
34
- async function getOrCreateUser(model, userId, userName, ctxType, ctxId) {
35
- const rows = (await model.select().where({
36
- user_id: userId,
37
- context_type: ctxType,
38
- context_id: ctxId,
39
- }));
40
- if (rows.length > 0)
41
- return rows[0];
42
- await model.insert({
43
- user_id: userId,
44
- user_name: userName,
45
- points: 0,
46
- total_checkins: 0,
47
- streak: 0,
48
- max_streak: 0,
49
- last_checkin: "",
50
- context_type: ctxType,
51
- context_id: ctxId,
52
- created_at: ts(),
53
- updated_at: ts(),
54
- });
55
- const created = (await model.select().where({
56
- user_id: userId,
57
- context_type: ctxType,
58
- context_id: ctxId,
59
- }));
60
- return created[0] ?? null;
61
- }
62
- addCommand(new MessageCommand("checkin")
63
- .desc("签到", "每日签到获得积分")
64
- .action(async (message) => {
65
- const M = getCheckinModel();
66
- if (!M)
67
- return "签到数据库尚未就绪,请稍后重试";
68
- const userId = String(message.$sender?.id || "");
69
- const userName = String(message.$sender?.name || "用户");
70
- if (!userId)
71
- return "无法获取用户信息";
72
- const { type: ctxType, id: ctxId } = getMessageContextKey(message);
73
- const user = await getOrCreateUser(M, userId, userName, ctxType, ctxId);
74
- if (!user)
75
- return "签到失败,请重试";
76
- const today = todayStr();
77
- if (user.last_checkin === today) {
78
- return `你今天已经签到过了哦~\n当前积分: ${user.points}\n连续签到: ${user.streak} 天`;
79
- }
80
- const isConsecutive = user.last_checkin === yesterdayStr();
81
- const newStreak = isConsecutive ? Number(user.streak) + 1 : 1;
82
- const base = randomInt(cfg.basePointsMin, cfg.basePointsMax);
83
- const bonus = Math.min(newStreak * cfg.streakBonus, cfg.streakCap);
84
- const earned = base + bonus;
85
- const newPoints = Number(user.points || 0) + earned;
86
- await M.update({
87
- points: newPoints,
88
- total_checkins: Number(user.total_checkins || 0) + 1,
89
- streak: newStreak,
90
- max_streak: Math.max(Number(user.max_streak || 0), newStreak),
91
- last_checkin: today,
92
- user_name: userName,
93
- updated_at: ts(),
94
- }).where({
95
- user_id: userId,
96
- context_type: ctxType,
97
- context_id: ctxId,
98
- });
99
- const lines = [`签到成功!`, `基础积分: +${base}`];
100
- if (bonus > 0)
101
- lines.push(`连续奖励: +${bonus} (连续${newStreak}天)`);
102
- lines.push(`本次获得: +${earned}`, `当前积分: ${newPoints}`);
103
- return lines.join("\n");
104
- }));
105
- addCommand(new MessageCommand("mypoints")
106
- .desc("我的积分", "查看个人积分与签到信息")
107
- .action(async (message) => {
108
- const M = getCheckinModel();
109
- if (!M)
110
- return "签到数据库尚未就绪";
111
- const userId = String(message.$sender?.id || "");
112
- const { type: ctxType, id: ctxId } = getMessageContextKey(message);
113
- const rows = (await M.select().where({
114
- user_id: userId,
115
- context_type: ctxType,
116
- context_id: ctxId,
117
- }));
118
- if (rows.length === 0)
119
- return "你还没有签到记录哦,发送「签到」开始吧!";
120
- const u = rows[0];
121
- const checkedToday = u.last_checkin === todayStr();
122
- return [
123
- `${u.user_name || "用户"} 的积分信息`,
124
- `积分: ${u.points}`,
125
- `累计签到: ${u.total_checkins} 天`,
126
- `连续签到: ${u.streak} 天`,
127
- `最长连续: ${u.max_streak} 天`,
128
- checkedToday ? "今日已签到 ✓" : "今日未签到",
129
- ].join("\n");
130
- }));
131
- addCommand(new MessageCommand("rank")
132
- .desc("积分排行", "查看积分排行榜")
133
- .action(async (message) => {
134
- const M = getCheckinModel();
135
- if (!M)
136
- return "签到数据库尚未就绪";
137
- const { type: ctxType, id: ctxId } = getMessageContextKey(message);
138
- const all = (await M.select().where(ctxType === "global"
139
- ? { context_type: "global" }
140
- : { context_type: ctxType, context_id: ctxId }));
141
- if (all.length === 0)
142
- return "还没有人签到过哦~";
143
- const sorted = all.sort((a, b) => Number(b.points || 0) - Number(a.points || 0));
144
- const top = sorted.slice(0, cfg.rankSize);
145
- const medals = ["🥇", "🥈", "🥉"];
146
- const lines = top.map((u, i) => {
147
- const prefix = i < 3 ? medals[i] : `${i + 1}.`;
148
- return `${prefix} ${u.user_name || u.user_id} — ${u.points}分 (${u.total_checkins}天)`;
149
- });
150
- const title = ctxType === "group" ? "本群积分排行" : "全局积分排行";
151
- const userId = String(message.$sender?.id || "");
152
- const myRank = sorted.findIndex((u) => u.user_id === userId);
153
- const footer = myRank >= 0 ? `\n你的排名: 第${myRank + 1}名` : "";
154
- return `${title}\n${lines.join("\n")}${footer}`;
155
- }));
156
- if (!_db) {
157
- const db = getDatabase(plugin);
158
- if (db)
159
- _db = db;
160
- }
161
- logger.debug(formatCompact({
162
- 模块: "签到",
163
- 状态: "已加载",
164
- 基础积分最小值: cfg.basePointsMin,
165
- 基础积分最大值: cfg.basePointsMax,
166
- }));
167
- }
168
- //# sourceMappingURL=checkin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkin.js","sourceRoot":"","sources":["../../src/checkin.ts"],"names":[],"mappings":"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"}
package/lib/src/config.js DELETED
@@ -1,41 +0,0 @@
1
- import { Schema } from "zhin.js";
2
- /** 扁平 groupSuite 配置(单层字段,默认值覆盖多数场景) */
3
- export const groupSuiteSchema = Schema.object({
4
- welcome: Schema.string()
5
- .default("欢迎新成员加入本群!")
6
- .description("入群欢迎语"),
7
- recallNotify: Schema.boolean()
8
- .default(true)
9
- .description("群消息撤回时是否提示"),
10
- keywordReply: Schema.boolean()
11
- .default(false)
12
- .description("内置关键词回复(默认关闭,用 teach 问答)"),
13
- noticeAdapters: Schema.list(Schema.string())
14
- .default(["icqq"])
15
- .description("处理 notice 的适配器(欢迎/撤回)"),
16
- basePointsMin: Schema.number().default(10).min(1).max(100),
17
- basePointsMax: Schema.number().default(30).min(1).max(200),
18
- streakBonus: Schema.number().default(5).min(0).max(100),
19
- streakCap: Schema.number().default(50).min(0).max(500),
20
- rankSize: Schema.number()
21
- .default(10)
22
- .min(3)
23
- .max(50)
24
- .description("签到排行与消息统计排行显示人数"),
25
- statsRetentionDays: Schema.number().default(90).min(7).max(365),
26
- analysisDays: Schema.number().default(1).min(1).max(30),
27
- autoAnalysisEnabled: Schema.boolean().default(false),
28
- autoAnalysisCron: Schema.string().default("0 0 9 * * *"),
29
- analysisGroups: Schema.list(Schema.string())
30
- .default([])
31
- .description("启用群日报的群 ID 白名单(空=不限制)"),
32
- analysisGroupsBlock: Schema.list(Schema.string())
33
- .default([])
34
- .description("禁用群日报的群 ID"),
35
- analysisMaxMessages: Schema.number().default(500).min(100).max(5000),
36
- teachMaxPerGroup: Schema.number().default(200).min(1).max(1000),
37
- teachCooldownMs: Schema.number().default(3000).min(0).max(60000),
38
- teachAllowRegex: Schema.boolean().default(true),
39
- teachPageSize: Schema.number().default(10).min(5).max(50),
40
- });
41
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}