@zhin.js/sensitive-filter 0.0.3 → 0.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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @zhin.js/sensitive-filter
2
2
 
3
+ ## 0.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - d16a69c: fix: test trust publish
8
+ - Updated dependencies [d16a69c]
9
+ - zhin.js@1.0.18
10
+
3
11
  ## 0.0.3
4
12
 
5
13
  ### Patch Changes
package/lib/index.d.ts CHANGED
@@ -1,2 +1,12 @@
1
- export {};
1
+ export interface SensitiveFilterConfig {
2
+ political?: boolean;
3
+ violence?: boolean;
4
+ porn?: boolean;
5
+ prohibited?: boolean;
6
+ fraud?: boolean;
7
+ illegal?: boolean;
8
+ custom?: string[];
9
+ replacement?: string;
10
+ block?: boolean;
11
+ }
2
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
package/lib/index.js CHANGED
@@ -1,32 +1,11 @@
1
- import { usePlugin, useLogger, segment, defineSchema, Schema, } from "zhin.js";
1
+ import { usePlugin, segment, } from "zhin.js";
2
2
  import { getEnabledWords, createSensitiveWordRegex, } from "./sensitive-words.js";
3
- const logger = useLogger();
4
3
  const plugin = usePlugin();
5
- const schema = defineSchema(Schema.object({
6
- political: Schema.boolean("political")
7
- .default(true)
8
- .description("启用政治类敏感词过滤"),
9
- violence: Schema.boolean("violence")
10
- .default(true)
11
- .description("启用暴力类敏感词过滤"),
12
- porn: Schema.boolean("porn")
13
- .default(true)
14
- .description("启用色情类敏感词过滤"),
15
- prohibited: Schema.boolean("prohibited")
16
- .default(true)
17
- .description("启用禁用类敏感词过滤"),
18
- fraud: Schema.boolean("fraud")
19
- .default(true)
20
- .description("启用诈骗类敏感词过滤"),
21
- illegal: Schema.boolean("illegal")
22
- .default(true)
23
- .description("启用违法类敏感词过滤"),
24
- custom: Schema.list(Schema.string()).default([]).description("自定义敏感词"),
25
- replacement: Schema.string("replacement")
26
- .default("*")
27
- .description("替换字符"),
28
- block: Schema.boolean("block").default(false).description("是否拦截消息"),
29
- }).default({
4
+ const { root, logger } = plugin;
5
+ // 获取配置
6
+ const configService = root.inject("config");
7
+ const appConfig = configService?.get("zhin.config.yml") ?? {};
8
+ const config = {
30
9
  political: true,
31
10
  violence: true,
32
11
  porn: true,
@@ -36,9 +15,8 @@ const schema = defineSchema(Schema.object({
36
15
  custom: [],
37
16
  replacement: "*",
38
17
  block: false,
39
- }));
40
- // 插件配置
41
- const config = schema(plugin.config, "sensitive-filter");
18
+ ...appConfig["sensitive-filter"],
19
+ };
42
20
  /**
43
21
  * 检测文本中的敏感词
44
22
  */
@@ -101,7 +79,8 @@ function filterContent(content, regex, replacement) {
101
79
  // 初始化敏感词过滤
102
80
  const sensitiveWords = getEnabledWords(config);
103
81
  const sensitiveRegex = createSensitiveWordRegex(sensitiveWords);
104
- plugin.beforeSend(async (options) => {
82
+ // 注册发送前过滤器
83
+ plugin.on('before.sendMessage', async (options) => {
105
84
  const { content } = options;
106
85
  // 如果内容为空,直接返回
107
86
  if (!content)
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/sensitive-filter",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "敏感词过滤插件,过滤不符合中国国情的敏感内容",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -14,11 +14,17 @@
14
14
  "author": "Zhin Team",
15
15
  "license": "MIT",
16
16
  "dependencies": {
17
- "zhin.js": "1.0.17"
17
+ "zhin.js": "1.0.18"
18
18
  },
19
19
  "devDependencies": {
20
20
  "typescript": "^5.3.3"
21
21
  },
22
+ "type": "module",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/zhinjs/zhin.git",
26
+ "directory": "plugins/utils/sensitive-filter"
27
+ },
22
28
  "scripts": {
23
29
  "build": "tsc --build",
24
30
  "dev": "tsc --watch"
package/src/index.ts CHANGED
@@ -1,11 +1,6 @@
1
1
  import {
2
2
  usePlugin,
3
- useLogger,
4
- defineModel,
5
- onDatabaseReady,
6
3
  segment,
7
- defineSchema,
8
- Schema,
9
4
  } from "zhin.js";
10
5
  import type { SendOptions } from "zhin.js";
11
6
  import {
@@ -13,47 +8,37 @@ import {
13
8
  createSensitiveWordRegex,
14
9
  } from "./sensitive-words.js";
15
10
 
16
- const logger = useLogger();
17
11
  const plugin = usePlugin();
18
- const schema = defineSchema(
19
- Schema.object({
20
- political: Schema.boolean("political")
21
- .default(true)
22
- .description("启用政治类敏感词过滤"),
23
- violence: Schema.boolean("violence")
24
- .default(true)
25
- .description("启用暴力类敏感词过滤"),
26
- porn: Schema.boolean("porn")
27
- .default(true)
28
- .description("启用色情类敏感词过滤"),
29
- prohibited: Schema.boolean("prohibited")
30
- .default(true)
31
- .description("启用禁用类敏感词过滤"),
32
- fraud: Schema.boolean("fraud")
33
- .default(true)
34
- .description("启用诈骗类敏感词过滤"),
35
- illegal: Schema.boolean("illegal")
36
- .default(true)
37
- .description("启用违法类敏感词过滤"),
38
- custom: Schema.list(Schema.string()).default([]).description("自定义敏感词"),
39
- replacement: Schema.string("replacement")
40
- .default("*")
41
- .description("替换字符"),
42
- block: Schema.boolean("block").default(false).description("是否拦截消息"),
43
- }).default({
44
- political: true,
45
- violence: true,
46
- porn: true,
47
- prohibited: true,
48
- fraud: true,
49
- illegal: true,
50
- custom: [],
51
- replacement: "*",
52
- block: false,
53
- })
54
- );
55
- // 插件配置
56
- const config = schema(plugin.config, "sensitive-filter");
12
+ const { root, logger } = plugin;
13
+
14
+ // 敏感词过滤配置接口
15
+ export interface SensitiveFilterConfig {
16
+ political?: boolean;
17
+ violence?: boolean;
18
+ porn?: boolean;
19
+ prohibited?: boolean;
20
+ fraud?: boolean;
21
+ illegal?: boolean;
22
+ custom?: string[];
23
+ replacement?: string;
24
+ block?: boolean;
25
+ }
26
+
27
+ // 获取配置
28
+ const configService = root.inject("config");
29
+ const appConfig = configService?.get<{ "sensitive-filter"?: SensitiveFilterConfig }>("zhin.config.yml") ?? {};
30
+ const config: SensitiveFilterConfig = {
31
+ political: true,
32
+ violence: true,
33
+ porn: true,
34
+ prohibited: true,
35
+ fraud: true,
36
+ illegal: true,
37
+ custom: [],
38
+ replacement: "*",
39
+ block: false,
40
+ ...appConfig["sensitive-filter"],
41
+ };
57
42
 
58
43
  /**
59
44
  * 检测文本中的敏感词
@@ -136,8 +121,9 @@ function filterContent(
136
121
  // 初始化敏感词过滤
137
122
  const sensitiveWords = getEnabledWords(config);
138
123
  const sensitiveRegex = createSensitiveWordRegex(sensitiveWords);
139
- plugin.beforeSend(async (options: SendOptions) => {
140
-
124
+
125
+ // 注册发送前过滤器
126
+ plugin.on('before.sendMessage', async (options: SendOptions) => {
141
127
  const { content } = options;
142
128
 
143
129
  // 如果内容为空,直接返回
@@ -182,5 +168,5 @@ plugin.beforeSend(async (options: SendOptions) => {
182
168
  };
183
169
  });
184
170
 
185
- logger.info("敏感词过滤功能已启用");
171
+ logger.info("敏感词过滤功能已启用");
186
172
  logger.info(`敏感词过滤插件已加载,共 ${sensitiveWords.length} 个敏感词`);