@q78kg/koishi-plugin-text-censor 1.0.13 → 1.0.14
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/index.js +2 -2
- package/package.json +1 -1
package/lib/index.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
var
|
2
|
-
`).map(
|
1
|
+
var v=Object.create;var d=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var W=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var j=(e,t)=>{for(var n in t)d(e,n,{get:t[n],enumerable:!0})},u=(e,t,n,g)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of P(t))!D.call(e,c)&&c!==n&&d(e,c,{get:()=>t[c],enumerable:!(g=C(t,c))||g.enumerable});return e};var y=(e,t,n)=>(n=e!=null?v(W(e)):{},u(t||!e||!e.__esModule?d(n,"default",{value:e,enumerable:!0}):n,e)),k=e=>u(d({},"__esModule",{value:!0}),e);var $={};j($,{Config:()=>I,apply:()=>T,name:()=>F});module.exports=k($);var s=require("koishi"),i=require("node:fs"),x=require("node:path"),h=y(require("mint-filter")),w=y(require("@koishijs/censor")),F="text-censor",I=s.Schema.intersect([s.Schema.object({textDatabase:s.Schema.array(s.Schema.tuple([s.Schema.string().default("data/text-censor/censor.txt")])).description("\u654F\u611F\u8BCD\u5E93\u7684\u6587\u4EF6\u8DEF\u5F84").default([["data/text-censor/censor.txt"]]),regexPatterns:s.Schema.array(s.Schema.string()).description("\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\u6A21\u5F0F\u5217\u8868").default([])}),s.Schema.object({removeWords:s.Schema.boolean().description("\u662F\u5426\u76F4\u63A5\u5220\u9664\u654F\u611F\u8BCD").default(!1),caseStrategy:s.Schema.union(["none","lower","capital"]).description("\u654F\u611F\u8BCD\u5904\u7406\u65F6\u7684\u5927\u5C0F\u5199\u7B56\u7565").default("none")})]);function T(e,t){let n=[];for(let[m]of t.textDatabase){let o=(0,x.resolve)(e.baseDir,m);if(!(0,i.existsSync)(o)){e.logger.warn(`dictionary file not found: ${o}, creating a new one.`);let r=(0,x.dirname)(o);(0,i.existsSync)(r)||(0,i.mkdirSync)(r,{recursive:!0}),(0,i.writeFileSync)(o,"")}let a=(0,i.readFileSync)(o,"utf8").split(`
|
2
|
+
`).map(r=>r.trim()).filter(r=>r&&!r.startsWith("//")&&!r.startsWith("#"));n=n.concat(a)}if(n.length===0){e.logger.warn("no sensitive words found");return}let g={transform:t.caseStrategy},c=new h.default(n,g);e.plugin(w.default),e.get("censor").intercept({async text(m){let o=m.content;for(let a of t.regexPatterns)try{let r=new RegExp(a,"gs");t.removeWords?o=o.replace(r,""):o=o.replace(r,l=>"*".repeat(l.length))}catch{e.logger.warn(`Invalid regex pattern: ${a}`)}let f=await c.filter(o);if(typeof f.text!="string")return[];if(t.removeWords){let a=o,r=0;for(let l=0;l<f.text.length;l++)if(f.text[l]==="*"){let p=0;for(;l+p<f.text.length&&f.text[l+p]==="*";)p++;let b=a.slice(0,r),S=a.slice(r+p);a=b+S,l+=p-1}else r++;return[a.trim()]}else return[f.text]}})}0&&(module.exports={Config,apply,name});
|