koishi-plugin-chat-analyse 0.0.2 → 0.1.0

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.
@@ -1,7 +1,7 @@
1
1
  import { Context } from 'koishi';
2
2
  /**
3
3
  * @file collector.ts
4
- * @description 用于将收到的消息和命令分别持久化存储到数据库中。
4
+ * @description 通过独立的事件监听器,分别持久化存储收到的普通消息和已确认的命令。
5
5
  */
6
6
  declare module 'koishi' {
7
7
  interface Tables {
@@ -24,12 +24,9 @@ declare module 'koishi' {
24
24
  }
25
25
  /**
26
26
  * @class Collector
27
- * @description 监听所有消息和命令,将消息内容存入 'analyse_origin_msg' 表,将命令存入 'analyse_origin_cmd' 表。
27
+ * @description 使用双监听器,精确捕获并存储消息和命令。
28
28
  */
29
29
  export declare class Collector {
30
30
  private ctx;
31
- /**
32
- * @param ctx Koishi 的上下文对象,用于访问模型和事件系统
33
- */
34
31
  constructor(ctx: Context);
35
32
  }
package/lib/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Context, Schema } from 'koishi';
2
+ export declare const usage = "\n<div style=\"border-radius: 10px; border: 1px solid #ddd; padding: 16px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);\">\n <h2 style=\"margin-top: 0; color: #4a6ee0;\">\uD83D\uDCCC \u63D2\u4EF6\u8BF4\u660E</h2>\n <p>\uD83D\uDCD6 <strong>\u4F7F\u7528\u6587\u6863</strong>\uFF1A\u8BF7\u70B9\u51FB\u5DE6\u4E0A\u89D2\u7684 <strong>\u63D2\u4EF6\u4E3B\u9875</strong> \u67E5\u770B\u63D2\u4EF6\u4F7F\u7528\u6587\u6863</p>\n <p>\uD83D\uDD0D <strong>\u66F4\u591A\u63D2\u4EF6</strong>\uFF1A\u53EF\u8BBF\u95EE <a href=\"https://github.com/YisRime\" style=\"color:#4a6ee0;text-decoration:none;\">\u82E1\u6DDE\u7684 GitHub</a> \u67E5\u770B\u672C\u4EBA\u7684\u6240\u6709\u63D2\u4EF6</p>\n</div>\n<div style=\"border-radius: 10px; border: 1px solid #ddd; padding: 16px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);\">\n <h2 style=\"margin-top: 0; color: #e0574a;\">\u2764\uFE0F \u652F\u6301\u4E0E\u53CD\u9988</h2>\n <p>\uD83C\uDF1F \u559C\u6B22\u8FD9\u4E2A\u63D2\u4EF6\uFF1F\u8BF7\u5728 <a href=\"https://github.com/YisRime\" style=\"color:#e0574a;text-decoration:none;\">GitHub</a> \u4E0A\u7ED9\u6211\u4E00\u4E2A Star\uFF01</p>\n <p>\uD83D\uDC1B \u9047\u5230\u95EE\u9898\uFF1F\u8BF7\u901A\u8FC7 <strong>Issues</strong> \u63D0\u4EA4\u53CD\u9988\uFF0C\u6216\u52A0\u5165 QQ \u7FA4 <a href=\"https://qm.qq.com/q/PdLMx9Jowq\" style=\"color:#e0574a;text-decoration:none;\"><strong>855571375</strong></a> \u8FDB\u884C\u4EA4\u6D41</p>\n</div>\n";
2
3
  export declare const name = "chat-analyse";
3
4
  export interface Config {
4
5
  }
package/lib/index.js CHANGED
@@ -23,6 +23,7 @@ __export(src_exports, {
23
23
  Config: () => Config,
24
24
  apply: () => apply,
25
25
  name: () => name,
26
+ usage: () => usage,
26
27
  using: () => using
27
28
  });
28
29
  module.exports = __toCommonJS(src_exports);
@@ -30,9 +31,6 @@ var import_koishi = require("koishi");
30
31
 
31
32
  // src/collector.ts
32
33
  var Collector = class {
33
- /**
34
- * @param ctx Koishi 的上下文对象,用于访问模型和事件系统
35
- */
36
34
  constructor(ctx) {
37
35
  this.ctx = ctx;
38
36
  ctx.model.extend("analyse_origin_msg", {
@@ -41,9 +39,7 @@ var Collector = class {
41
39
  userId: "string",
42
40
  content: "text",
43
41
  timestamp: "timestamp"
44
- }, {
45
- autoInc: true
46
- });
42
+ }, { autoInc: true });
47
43
  ctx.model.extend("analyse_origin_cmd", {
48
44
  id: "unsigned",
49
45
  channelId: "string",
@@ -51,11 +47,8 @@ var Collector = class {
51
47
  command: "string",
52
48
  content: "text",
53
49
  timestamp: "timestamp"
54
- }, {
55
- autoInc: true
56
- });
50
+ }, { autoInc: true });
57
51
  ctx.on("command/before-execute", async (argv) => {
58
- if (!argv.command) return;
59
52
  await ctx.database.create("analyse_origin_cmd", {
60
53
  channelId: argv.session.channelId,
61
54
  userId: argv.session.userId,
@@ -64,28 +57,28 @@ var Collector = class {
64
57
  timestamp: new Date(argv.session.timestamp)
65
58
  });
66
59
  });
67
- ctx.on("message", (session) => {
68
- setTimeout(async () => {
69
- if (session.argv) return;
70
- const messageParts = session.elements.map((element) => {
71
- switch (element.type) {
72
- case "text":
73
- return element.attrs.content;
74
- case "at":
75
- return `[at=${element.attrs.id}]`;
76
- default:
77
- return "";
78
- }
79
- });
80
- const sanitizedContent = messageParts.join("").trim();
81
- if (!sanitizedContent) return;
82
- await ctx.database.create("analyse_origin_msg", {
83
- channelId: session.channelId,
84
- userId: session.userId,
85
- content: sanitizedContent,
86
- timestamp: new Date(session.timestamp)
87
- });
88
- }, 0);
60
+ ctx.on("message", async (session) => {
61
+ if (session.argv?.command) return;
62
+ const content = session.elements.map((element) => {
63
+ switch (element.type) {
64
+ case "text":
65
+ return element.attrs.content;
66
+ case "img":
67
+ return element.attrs.summary === "[动画表情]" ? "[gif]" : `[${element.type}]`;
68
+ case "at":
69
+ return `[at:${element.attrs.id}]`;
70
+ default:
71
+ return `[${element.type}]`;
72
+ }
73
+ }).join("");
74
+ const sanitizedContent = content.trim();
75
+ if (!sanitizedContent) return;
76
+ await ctx.database.create("analyse_origin_msg", {
77
+ channelId: session.channelId,
78
+ userId: session.userId,
79
+ content: sanitizedContent,
80
+ timestamp: new Date(session.timestamp)
81
+ });
89
82
  });
90
83
  }
91
84
  static {
@@ -94,6 +87,18 @@ var Collector = class {
94
87
  };
95
88
 
96
89
  // src/index.ts
90
+ var usage = `
91
+ <div style="border-radius: 10px; border: 1px solid #ddd; padding: 16px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);">
92
+ <h2 style="margin-top: 0; color: #4a6ee0;">📌 插件说明</h2>
93
+ <p>📖 <strong>使用文档</strong>:请点击左上角的 <strong>插件主页</strong> 查看插件使用文档</p>
94
+ <p>🔍 <strong>更多插件</strong>:可访问 <a href="https://github.com/YisRime" style="color:#4a6ee0;text-decoration:none;">苡淞的 GitHub</a> 查看本人的所有插件</p>
95
+ </div>
96
+ <div style="border-radius: 10px; border: 1px solid #ddd; padding: 16px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);">
97
+ <h2 style="margin-top: 0; color: #e0574a;">❤️ 支持与反馈</h2>
98
+ <p>🌟 喜欢这个插件?请在 <a href="https://github.com/YisRime" style="color:#e0574a;text-decoration:none;">GitHub</a> 上给我一个 Star!</p>
99
+ <p>🐛 遇到问题?请通过 <strong>Issues</strong> 提交反馈,或加入 QQ 群 <a href="https://qm.qq.com/q/PdLMx9Jowq" style="color:#e0574a;text-decoration:none;"><strong>855571375</strong></a> 进行交流</p>
100
+ </div>
101
+ `;
97
102
  var name = "chat-analyse";
98
103
  var Config = import_koishi.Schema.object({});
99
104
  var using = ["database"];
@@ -106,5 +111,6 @@ __name(apply, "apply");
106
111
  Config,
107
112
  apply,
108
113
  name,
114
+ usage,
109
115
  using
110
116
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-chat-analyse",
3
3
  "description": "聊天记录分析",
4
- "version": "0.0.2",
4
+ "version": "0.1.0",
5
5
  "contributors": [
6
6
  "Yis_Rime <yis_rime@outlook.com>"
7
7
  ],