@q78kg/koishi-plugin-text-censor 1.0.4-beta.4 → 1.0.4-beta.6

Sign up to get free protection for your applications and to get access to all the features.
package/lib/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Context, Schema } from 'koishi';
2
2
  export declare const name = "text-censor";
3
3
  export interface Config {
4
- filename: string;
4
+ textDatabase: [string, string][];
5
5
  removeWords: boolean;
6
6
  transformToUpper: boolean;
7
7
  }
package/lib/index.js CHANGED
@@ -38,24 +38,46 @@ module.exports = __toCommonJS(src_exports);
38
38
  var import_koishi = require("koishi");
39
39
  var import_node_fs = require("node:fs");
40
40
  var import_node_path = require("node:path");
41
- var import_censor = __toESM(require("@koishijs/censor"));
42
41
  var import_mint_filter = __toESM(require("mint-filter"));
42
+ var import_censor = __toESM(require("@koishijs/censor"));
43
43
  var name = "text-censor";
44
- var Config = import_koishi.Schema.object({
45
- filename: import_koishi.Schema.string().description("存储敏感词的文件路径。").default("data/censor.txt"),
46
- removeWords: import_koishi.Schema.boolean().description("是否直接删除敏感词。").default(false),
47
- // 默认不删除敏感词
48
- transformToUpper: import_koishi.Schema.boolean().description("是否将字符转换为大写。").default(false)
49
- // 默认不转换字符为大写
50
- });
44
+ var Config = import_koishi.Schema.intersect([
45
+ import_koishi.Schema.object({
46
+ textDatabase: import_koishi.Schema.array(
47
+ import_koishi.Schema.tuple([
48
+ import_koishi.Schema.string().role("text"),
49
+ import_koishi.Schema.string().default("data/text-censor/censor.txt")
50
+ ])
51
+ ).description("敏感词库的文件路径。").default([["", "data/text-censor/censor.txt"]])
52
+ }),
53
+ import_koishi.Schema.object({
54
+ removeWords: import_koishi.Schema.boolean().description("是否直接删除敏感词。").default(false),
55
+ // 默认不删除敏感词
56
+ transformToUpper: import_koishi.Schema.boolean().description("是否将字符转换为大写。").default(false)
57
+ // 默认不转换字符为大写
58
+ })
59
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+ ]);
51
61
  function apply(ctx, config) {
52
- const filename = (0, import_node_path.resolve)(ctx.baseDir, config.filename);
53
- if (!(0, import_node_fs.existsSync)(filename)) {
54
- ctx.logger.warn("dictionary file not found");
62
+ let words = [];
63
+ for (const [_, file] of config.textDatabase) {
64
+ const filePath = (0, import_node_path.resolve)(ctx.baseDir, file);
65
+ if (!(0, import_node_fs.existsSync)(filePath)) {
66
+ ctx.logger.warn(
67
+ `dictionary file not found: ${filePath}, creating a new one.`
68
+ );
69
+ (0, import_node_fs.writeFileSync)(filePath, "");
70
+ }
71
+ const source = (0, import_node_fs.readFileSync)(filePath, "utf8");
72
+ const fileWords = source.split("\n").map((word) => word.trim()).filter(
73
+ (word) => word && !word.startsWith("//") && !word.startsWith("#")
74
+ );
75
+ words = words.concat(fileWords);
76
+ }
77
+ if (words.length === 0) {
78
+ ctx.logger.warn("no sensitive words found");
55
79
  return;
56
80
  }
57
- const source = (0, import_node_fs.readFileSync)(filename, "utf8");
58
- const words = source.split("\n").map((word) => word.trim()).filter((word) => word && !word.startsWith("//") && !word.startsWith("#"));
59
81
  const mintOptions = {
60
82
  transform: config.transformToUpper ? "capital" : "none"
61
83
  // 这里我们将值设置为可能的类型
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@q78kg/koishi-plugin-text-censor",
3
3
  "description": "A text censor provider for Koishi",
4
- "version": "1.0.4-beta.4",
4
+ "version": "1.0.4-beta.6",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [