=x.SCRIPT.id?r.text():x.DISPLAY:"text"===e&&r.size===x.DISPLAY.size?r=x.TEXT:"script"===e?r=x.SCRIPT:"scriptscript"===e&&(r=x.SCRIPTSCRIPT),r},nn=function(e,t){var r,n=rn(e.size,t.style),a=n.fracNum(),i=n.fracDen();r=t.havingStyle(a);var o=wt(e.numer,r,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height0?3*c:7*c,d=t.fontMetrics().denom1):(m>0?(u=t.fontMetrics().num2,p=c):(u=t.fontMetrics().num3,p=3*c),d=t.fontMetrics().denom2),h){var w=t.fontMetrics().axisHeight;u-o.depth-(w+.5*m) 0&&(t="."===(t=e)?null:t),t};ot({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler:function(e,t){var r,n=e.parser,a=t[4],i=t[5],o=lt(t[0]),s="atom"===o.type&&"open"===o.family?sn(o.text):null,l=lt(t[1]),h="atom"===l.type&&"close"===l.family?sn(l.text):null,m=Ut(t[2],"size"),c=null;r=!!m.isBlank||(c=m.value).number>0;var u="auto",p=t[3];if("ordgroup"===p.type){if(p.body.length>0){var d=Ut(p.body[0],"textord");u=on[Number(d.text)]}}else p=Ut(p,"textord"),u=on[Number(p.text)];return{type:"genfrac",mode:n.mode,numer:a,denom:i,continued:!1,hasBarLine:r,barSize:c,leftDelim:s,rightDelim:h,size:u}},htmlBuilder:nn,mathmlBuilder:an}),ot({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(e,t){var r=e.parser,n=(e.funcName,e.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ut(t[0],"size").value,token:n}}}),ot({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(e,t){var r=e.parser,n=(e.funcName,t[0]),a=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Ut(t[1],"infix").size),i=t[2],o=a.number>0;return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:o,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:nn,mathmlBuilder:an});var ln=function(e,t){var r,n,a=t.style;"supsub"===e.type?(r=e.sup?wt(e.sup,t.havingStyle(a.sup()),t):wt(e.sub,t.havingStyle(a.sub()),t),n=Ut(e.base,"horizBrace")):n=Ut(e,"horizBrace");var i,o=wt(n.base,t.havingBaseStyle(x.DISPLAY)),s=Gt(n,t);if(n.isOver?(i=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(i=Ke.makeVList({positionType:"bottom",positionData:o.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]},t)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Ke.makeSpan(["mord",n.isOver?"mover":"munder"],[i],t);i=n.isOver?Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},t):Ke.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},t)}return Ke.makeSpan(["mord",n.isOver?"mover":"munder"],[i],t)};ot({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:t[0]}},htmlBuilder:ln,mathmlBuilder:function(e,t){var r=Vt(e.label);return new Tt.MathNode(e.isOver?"mover":"munder",[Rt(e.base,t),r])}}),ot({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[1],a=Ut(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:r.mode,href:a,body:ht(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:function(e,t){var r=ft(e.body,t,!1);return Ke.makeAnchor(e.href,[],r,t)},mathmlBuilder:function(e,t){var r=It(e.body,t);return r instanceof zt||(r=new zt("mrow",[r])),r.setAttribute("href",e.href),r}}),ot({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=Ut(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var a=[],i=0;i0&&(n=F(e.totalheight,t)-r);var a=0;e.width.number>0&&(a=F(e.width,t));var i={height:V(r+n)};a>0&&(i.width=V(a)),n>0&&(i.verticalAlign=V(-n));var o=new j(e.src,e.alt,i);return o.height=r,o.depth=n,o},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);var n=F(e.height,t),a=0;if(e.totalheight.number>0&&(a=F(e.totalheight,t)-n,r.setAttribute("valign",V(-a))),r.setAttribute("height",V(n+a)),e.width.number>0){var i=F(e.width,t);r.setAttribute("width",V(i))}return r.setAttribute("src",e.src),r}}),ot({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=Ut(t[0],"size");if(r.settings.strict){var i="m"===n[1],o="mu"===a.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, not "+a.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:a.value}},htmlBuilder:function(e,t){return Ke.makeGlue(e.dimension,t)},mathmlBuilder:function(e,t){var r=F(e.dimension,t);return new Tt.SpaceNode(r)}}),ot({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:a}},htmlBuilder:function(e,t){var r;"clap"===e.alignment?(r=Ke.makeSpan([],[wt(e.body,t)]),r=Ke.makeSpan(["inner"],[r],t)):r=Ke.makeSpan(["inner"],[wt(e.body,t)]);var n=Ke.makeSpan(["fix"],[]),a=Ke.makeSpan([e.alignment],[r,n],t),i=Ke.makeSpan(["strut"]);return i.style.height=V(a.height+a.depth),a.depth&&(i.style.verticalAlign=V(-a.depth)),a.children.unshift(i),a=Ke.makeSpan(["thinbox"],[a],t),Ke.makeSpan(["mord","vbox"],[a],t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mpadded",[Rt(e.body,t)]);if("rlap"!==e.alignment){var n="llap"===e.alignment?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}}),ot({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var r=e.funcName,n=e.parser,a=n.mode;n.switchMode("math");var i="\\("===r?"\\)":"$",o=n.parseExpression(!1,i);return n.expect(i),n.switchMode(a),{type:"styling",mode:n.mode,style:"text",body:o}}}),ot({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){throw new n("Mismatched "+e.funcName)}});var mn=function(e,t){switch(t.style.size){case x.DISPLAY.size:return e.display;case x.TEXT.size:return e.text;case x.SCRIPT.size:return e.script;case x.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};ot({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:function(e,t){return{type:"mathchoice",mode:e.parser.mode,display:ht(t[0]),text:ht(t[1]),script:ht(t[2]),scriptscript:ht(t[3])}},htmlBuilder:function(e,t){var r=mn(e,t),n=ft(r,t,!1);return Ke.makeFragment(n)},mathmlBuilder:function(e,t){var r=mn(e,t);return It(r,t)}});var cn=function(e,t,r,n,a,i,o){e=Ke.makeSpan([],[e]);var s,h,m,c=r&&l.isCharacterBox(r);if(t){var u=wt(t,n.havingStyle(a.sup()),n);h={elem:u,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-u.depth)}}if(r){var p=wt(r,n.havingStyle(a.sub()),n);s={elem:p,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-p.height)}}if(h&&s){var d=n.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;m=Ke.makeVList({positionType:"bottom",positionData:d,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:V(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(s){var f=e.height-o;m=Ke.makeVList({positionType:"top",positionData:f,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:V(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e}]},n)}else{if(!h)return e;var g=e.depth+o;m=Ke.makeVList({positionType:"bottom",positionData:g,children:[{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}var v=[m];if(s&&0!==i&&!c){var b=Ke.makeSpan(["mspace"],[],n);b.style.marginRight=V(i),v.unshift(b)}return Ke.makeSpan(["mop","op-limits"],v,n)},un=["\\smallint"],pn=function(e,t){var r,n,a,i=!1;"supsub"===e.type?(r=e.sup,n=e.sub,a=Ut(e.base,"op"),i=!0):a=Ut(e,"op");var o,s=t.style,h=!1;if(s.size===x.DISPLAY.size&&a.symbol&&!l.contains(un,a.name)&&(h=!0),a.symbol){var m=h?"Size2-Regular":"Size1-Regular",c="";if("\\oiint"!==a.name&&"\\oiiint"!==a.name||(c=a.name.substr(1),a.name="oiint"===c?"\\iint":"\\iiint"),o=Ke.makeSymbol(a.name,m,"math",t,["mop","op-symbol",h?"large-op":"small-op"]),c.length>0){var u=o.italic,p=Ke.staticSvg(c+"Size"+(h?"2":"1"),t);o=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:p,shift:h?.08:0}]},t),a.name="\\"+c,o.classes.unshift("mop"),o.italic=u}}else if(a.body){var d=ft(a.body,t,!0);1===d.length&&d[0]instanceof Z?(o=d[0]).classes[0]="mop":o=Ke.makeSpan(["mop"],d,t)}else{for(var f=[],g=1;g0){for(var s=a.body.map((function(e){var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e})),l=ft(s,t.withFont("mathrm"),!0),h=0;h=0?s.setAttribute("height",V(a)):(s.setAttribute("height",V(a)),s.setAttribute("depth",V(-a))),s.setAttribute("voffset",V(a)),s}});var yn=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];ot({type:"sizing",names:yn,props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,a=e.parser,i=a.parseExpression(!1,r);return{type:"sizing",mode:a.mode,size:yn.indexOf(n)+1,body:i}},htmlBuilder:function(e,t){var r=t.havingSize(e.size);return bn(e.body,r,t)},mathmlBuilder:function(e,t){var r=t.havingSize(e.size),n=Nt(e.body,r),a=new Tt.MathNode("mstyle",n);return a.setAttribute("mathsize",V(r.sizeMultiplier)),a}}),ot({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(e,t,r){var n=e.parser,a=!1,i=!1,o=r[0]&&Ut(r[0],"ordgroup");if(o)for(var s="",l=0;lr.height+r.depth+i&&(i=(i+c-r.height-r.depth)/2);var u=l.height-r.height-i-h;r.style.paddingLeft=V(m);var p=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:l},{type:"kern",size:h}]},t);if(e.index){var d=t.havingStyle(x.SCRIPTSCRIPT),f=wt(e.index,d,t),g=.6*(p.height-p.depth),v=Ke.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},t),b=Ke.makeSpan(["root"],[v]);return Ke.makeSpan(["mord","sqrt"],[b,p],t)}return Ke.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder:function(e,t){var r=e.body,n=e.index;return n?new Tt.MathNode("mroot",[Rt(r,t),Rt(n,t)]):new Tt.MathNode("msqrt",[Rt(r,t)])}});var xn={display:x.DISPLAY,text:x.TEXT,script:x.SCRIPT,scriptscript:x.SCRIPTSCRIPT};ot({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,a=e.parser,i=a.parseExpression(!0,r),o=n.slice(1,n.length-5);return{type:"styling",mode:a.mode,style:o,body:i}},htmlBuilder:function(e,t){var r=xn[e.style],n=t.havingStyle(r).withFont("");return bn(e.body,n,t)},mathmlBuilder:function(e,t){var r=xn[e.style],n=t.havingStyle(r),a=Nt(e.body,n),i=new Tt.MathNode("mstyle",a),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});var wn=function(e,t){var r=e.base;return r?"op"===r.type?r.limits&&(t.style.size===x.DISPLAY.size||r.alwaysHandleSupSub)?pn:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(t.style.size===x.DISPLAY.size||r.limits)?vn:null:"accent"===r.type?l.isCharacterBox(r.base)?Wt:null:"horizBrace"===r.type&&!e.sub===r.isOver?ln:null:null};st({type:"supsub",htmlBuilder:function(e,t){var r=wn(e,t);if(r)return r(e,t);var n,a,i,o=e.base,s=e.sup,h=e.sub,m=wt(o,t),c=t.fontMetrics(),u=0,p=0,d=o&&l.isCharacterBox(o);if(s){var f=t.havingStyle(t.style.sup());n=wt(s,f,t),d||(u=m.height-f.fontMetrics().supDrop*f.sizeMultiplier/t.sizeMultiplier)}if(h){var g=t.havingStyle(t.style.sub());a=wt(h,g,t),d||(p=m.depth+g.fontMetrics().subDrop*g.sizeMultiplier/t.sizeMultiplier)}i=t.style===x.DISPLAY?c.sup1:t.style.cramped?c.sup3:c.sup2;var v,b=t.sizeMultiplier,y=V(.5/c.ptPerEm/b),w=null;if(a){var k=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(m instanceof Z||k)&&(w=V(-m.italic))}if(n&&a){u=Math.max(u,i,n.depth+.25*c.xHeight),p=Math.max(p,c.sub2);var S=4*c.defaultRuleThickness;if(u-n.depth-(a.height-p)0&&(u+=M,p-=M)}var z=[{type:"elem",elem:a,shift:p,marginRight:y,marginLeft:w},{type:"elem",elem:n,shift:-u,marginRight:y}];v=Ke.makeVList({positionType:"individualShift",children:z},t)}else if(a){p=Math.max(p,c.sub1,a.height-.8*c.xHeight);var A=[{type:"elem",elem:a,marginLeft:w,marginRight:y}];v=Ke.makeVList({positionType:"shift",positionData:p,children:A},t)}else{if(!n)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,n.depth+.25*c.xHeight),v=Ke.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:n,marginRight:y}]},t)}var T=yt(m,"right")||"mord";return Ke.makeSpan([T],[m,Ke.makeSpan(["msupsub"],[v])],t)},mathmlBuilder:function(e,t){var r,n=!1;e.base&&"horizBrace"===e.base.type&&!!e.sup===e.base.isOver&&(n=!0,r=e.base.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var a,i=[Rt(e.base,t)];if(e.sub&&i.push(Rt(e.sub,t)),e.sup&&i.push(Rt(e.sup,t)),n)a=r?"mover":"munder";else if(e.sub)if(e.sup){var o=e.base;a=o&&"op"===o.type&&o.limits&&t.style===x.DISPLAY||o&&"operatorname"===o.type&&o.alwaysHandleSupSub&&(t.style===x.DISPLAY||o.limits)?"munderover":"msubsup"}else{var s=e.base;a=s&&"op"===s.type&&s.limits&&(t.style===x.DISPLAY||s.alwaysHandleSupSub)||s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(s.limits||t.style===x.DISPLAY)?"munder":"msub"}else{var l=e.base;a=l&&"op"===l.type&&l.limits&&(t.style===x.DISPLAY||l.alwaysHandleSupSub)||l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===x.DISPLAY)?"mover":"msup"}return new Tt.MathNode(a,i)}}),st({type:"atom",htmlBuilder:function(e,t){return Ke.mathsym(e.text,e.mode,t,["m"+e.family])},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mo",[Bt(e.text,e.mode)]);if("bin"===e.family){var n=qt(e,t);"bold-italic"===n&&r.setAttribute("mathvariant",n)}else"punct"===e.family?r.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||r.setAttribute("stretchy","false");return r}});var kn={mi:"italic",mn:"normal",mtext:"normal"};st({type:"mathord",htmlBuilder:function(e,t){return Ke.makeOrd(e,t,"mathord")},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mi",[Bt(e.text,e.mode,t)]),n=qt(e,t)||"italic";return n!==kn[r.type]&&r.setAttribute("mathvariant",n),r}}),st({type:"textord",htmlBuilder:function(e,t){return Ke.makeOrd(e,t,"textord")},mathmlBuilder:function(e,t){var r,n=Bt(e.text,e.mode,t),a=qt(e,t)||"normal";return r="text"===e.mode?new Tt.MathNode("mtext",[n]):/[0-9]/.test(e.text)?new Tt.MathNode("mn",[n]):"\\prime"===e.text?new Tt.MathNode("mo",[n]):new Tt.MathNode("mi",[n]),a!==kn[r.type]&&r.setAttribute("mathvariant",a),r}});var Sn={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Mn={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};st({type:"spacing",htmlBuilder:function(e,t){if(Mn.hasOwnProperty(e.text)){var r=Mn[e.text].className||"";if("text"===e.mode){var a=Ke.makeOrd(e,t,"textord");return a.classes.push(r),a}return Ke.makeSpan(["mspace",r],[Ke.mathsym(e.text,e.mode,t)],t)}if(Sn.hasOwnProperty(e.text))return Ke.makeSpan(["mspace",Sn[e.text]],[],t);throw new n('Unknown type of space "'+e.text+'"')},mathmlBuilder:function(e,t){if(!Mn.hasOwnProperty(e.text)){if(Sn.hasOwnProperty(e.text))return new Tt.MathNode("mspace");throw new n('Unknown type of space "'+e.text+'"')}return new Tt.MathNode("mtext",[new Tt.TextNode("\xa0")])}});var zn=function(){var e=new Tt.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};st({type:"tag",mathmlBuilder:function(e,t){var r=new Tt.MathNode("mtable",[new Tt.MathNode("mtr",[zn(),new Tt.MathNode("mtd",[It(e.body,t)]),zn(),new Tt.MathNode("mtd",[It(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var An={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Tn={"\\textbf":"textbf","\\textmd":"textmd"},Bn={"\\textit":"textit","\\textup":"textup"},Cn=function(e,t){var r=e.font;return r?An[r]?t.withTextFontFamily(An[r]):Tn[r]?t.withTextFontWeight(Tn[r]):t.withTextFontShape(Bn[r]):t};ot({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"text",mode:r.mode,body:ht(a),font:n}},htmlBuilder:function(e,t){var r=Cn(e,t),n=ft(e.body,r,!0);return Ke.makeSpan(["mord","text"],n,r)},mathmlBuilder:function(e,t){var r=Cn(e,t);return It(e.body,r)}}),ot({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:"underline",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var r=wt(e.body,t),n=Ke.makeLineSpan("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ke.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:a},{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r}]},t);return Ke.makeSpan(["mord","underline"],[i],t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mo",[new Tt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var n=new Tt.MathNode("munder",[Rt(e.body,t),r]);return n.setAttribute("accentunder","true"),n}}),ot({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler:function(e,t){return{type:"vcenter",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var r=wt(e.body,t),n=t.fontMetrics().axisHeight,a=.5*(r.height-n-(r.depth+n));return Ke.makeVList({positionType:"shift",positionData:a,children:[{type:"elem",elem:r}]},t)},mathmlBuilder:function(e,t){return new Tt.MathNode("mpadded",[Rt(e.body,t)],["vcenter"])}}),ot({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(e,t,r){throw new n("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(e,t){for(var r=qn(e),n=[],a=t.havingStyle(t.style.text()),i=0;i0;)this.endGroup()},t.has=function(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)},t.get=function(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]},t.set=function(e,t,r){if(void 0===r&&(r=!1),r){for(var n=0;n0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}null==t?delete this.current[e]:this.current[e]=t},e}(),Hn=Hr;Er("\\noexpand",(function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),Er("\\expandafter",(function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),Er("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),Er("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),Er("\\@ifnextchar",(function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),Er("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Er("\\TextOrMath",(function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));var En={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Er("\\char",(function(e){var t,r=e.popToken(),a="";if("'"===r.text)t=8,r=e.popToken();else if('"'===r.text)t=16,r=e.popToken();else if("`"===r.text)if("\\"===(r=e.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new n("\\char` missing argument");a=r.text.charCodeAt(0)}else t=10;if(t){if(null==(a=En[r.text])||a>=t)throw new n("Invalid base-"+t+" digit "+r.text);for(var i;null!=(i=En[e.future().text])&&i":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Er("\\dots",(function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in Dn?t=Dn[r]:("\\not"===r.substr(0,4)||r in ae.math&&l.contains(["bin","rel"],ae.math[r].group))&&(t="\\dotsb"),t}));var Pn={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Er("\\dotso",(function(e){return e.future().text in Pn?"\\ldots\\,":"\\ldots"})),Er("\\dotsc",(function(e){var t=e.future().text;return t in Pn&&","!==t?"\\ldots\\,":"\\ldots"})),Er("\\cdots",(function(e){return e.future().text in Pn?"\\@cdots\\,":"\\@cdots"})),Er("\\dotsb","\\cdots"),Er("\\dotsm","\\cdots"),Er("\\dotsi","\\!\\cdots"),Er("\\dotsx","\\ldots\\,"),Er("\\DOTSI","\\relax"),Er("\\DOTSB","\\relax"),Er("\\DOTSX","\\relax"),Er("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Er("\\,","\\tmspace+{3mu}{.1667em}"),Er("\\thinspace","\\,"),Er("\\>","\\mskip{4mu}"),Er("\\:","\\tmspace+{4mu}{.2222em}"),Er("\\medspace","\\:"),Er("\\;","\\tmspace+{5mu}{.2777em}"),Er("\\thickspace","\\;"),Er("\\!","\\tmspace-{3mu}{.1667em}"),Er("\\negthinspace","\\!"),Er("\\negmedspace","\\tmspace-{4mu}{.2222em}"),Er("\\negthickspace","\\tmspace-{5mu}{.277em}"),Er("\\enspace","\\kern.5em "),Er("\\enskip","\\hskip.5em\\relax"),Er("\\quad","\\hskip1em\\relax"),Er("\\qquad","\\hskip2em\\relax"),Er("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Er("\\tag@paren","\\tag@literal{({#1})}"),Er("\\tag@literal",(function(e){if(e.macros.get("\\df@tag"))throw new n("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"})),Er("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),Er("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Er("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Er("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Er("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),Er("\\newline","\\\\\\relax"),Er("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Fn=V(T["Main-Regular"]["T".charCodeAt(0)][1]-.7*T["Main-Regular"]["A".charCodeAt(0)][1]);Er("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+Fn+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),Er("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+Fn+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),Er("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Er("\\@hspace","\\hskip #1\\relax"),Er("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Er("\\ordinarycolon",":"),Er("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),Er("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),Er("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),Er("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),Er("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),Er("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),Er("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),Er("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),Er("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),Er("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),Er("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),Er("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),Er("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),Er("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),Er("\u2237","\\dblcolon"),Er("\u2239","\\eqcolon"),Er("\u2254","\\coloneqq"),Er("\u2255","\\eqqcolon"),Er("\u2a74","\\Coloneqq"),Er("\\ratio","\\vcentcolon"),Er("\\coloncolon","\\dblcolon"),Er("\\colonequals","\\coloneqq"),Er("\\coloncolonequals","\\Coloneqq"),Er("\\equalscolon","\\eqqcolon"),Er("\\equalscoloncolon","\\Eqqcolon"),Er("\\colonminus","\\coloneq"),Er("\\coloncolonminus","\\Coloneq"),Er("\\minuscolon","\\eqcolon"),Er("\\minuscoloncolon","\\Eqcolon"),Er("\\coloncolonapprox","\\Colonapprox"),Er("\\coloncolonsim","\\Colonsim"),Er("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Er("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Er("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Er("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Er("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),Er("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Er("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Er("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Er("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Er("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),Er("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),Er("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),Er("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),Er("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),Er("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),Er("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),Er("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),Er("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),Er("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),Er("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),Er("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),Er("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),Er("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),Er("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),Er("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),Er("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),Er("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),Er("\\imath","\\html@mathml{\\@imath}{\u0131}"),Er("\\jmath","\\html@mathml{\\@jmath}{\u0237}"),Er("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),Er("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),Er("\u27e6","\\llbracket"),Er("\u27e7","\\rrbracket"),Er("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),Er("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),Er("\u2983","\\lBrace"),Er("\u2984","\\rBrace"),Er("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29b5}}"),Er("\u29b5","\\minuso"),Er("\\darr","\\downarrow"),Er("\\dArr","\\Downarrow"),Er("\\Darr","\\Downarrow"),Er("\\lang","\\langle"),Er("\\rang","\\rangle"),Er("\\uarr","\\uparrow"),Er("\\uArr","\\Uparrow"),Er("\\Uarr","\\Uparrow"),Er("\\N","\\mathbb{N}"),Er("\\R","\\mathbb{R}"),Er("\\Z","\\mathbb{Z}"),Er("\\alef","\\aleph"),Er("\\alefsym","\\aleph"),Er("\\Alpha","\\mathrm{A}"),Er("\\Beta","\\mathrm{B}"),Er("\\bull","\\bullet"),Er("\\Chi","\\mathrm{X}"),Er("\\clubs","\\clubsuit"),Er("\\cnums","\\mathbb{C}"),Er("\\Complex","\\mathbb{C}"),Er("\\Dagger","\\ddagger"),Er("\\diamonds","\\diamondsuit"),Er("\\empty","\\emptyset"),Er("\\Epsilon","\\mathrm{E}"),Er("\\Eta","\\mathrm{H}"),Er("\\exist","\\exists"),Er("\\harr","\\leftrightarrow"),Er("\\hArr","\\Leftrightarrow"),Er("\\Harr","\\Leftrightarrow"),Er("\\hearts","\\heartsuit"),Er("\\image","\\Im"),Er("\\infin","\\infty"),Er("\\Iota","\\mathrm{I}"),Er("\\isin","\\in"),Er("\\Kappa","\\mathrm{K}"),Er("\\larr","\\leftarrow"),Er("\\lArr","\\Leftarrow"),Er("\\Larr","\\Leftarrow"),Er("\\lrarr","\\leftrightarrow"),Er("\\lrArr","\\Leftrightarrow"),Er("\\Lrarr","\\Leftrightarrow"),Er("\\Mu","\\mathrm{M}"),Er("\\natnums","\\mathbb{N}"),Er("\\Nu","\\mathrm{N}"),Er("\\Omicron","\\mathrm{O}"),Er("\\plusmn","\\pm"),Er("\\rarr","\\rightarrow"),Er("\\rArr","\\Rightarrow"),Er("\\Rarr","\\Rightarrow"),Er("\\real","\\Re"),Er("\\reals","\\mathbb{R}"),Er("\\Reals","\\mathbb{R}"),Er("\\Rho","\\mathrm{P}"),Er("\\sdot","\\cdot"),Er("\\sect","\\S"),Er("\\spades","\\spadesuit"),Er("\\sub","\\subset"),Er("\\sube","\\subseteq"),Er("\\supe","\\supseteq"),Er("\\Tau","\\mathrm{T}"),Er("\\thetasym","\\vartheta"),Er("\\weierp","\\wp"),Er("\\Zeta","\\mathrm{Z}"),Er("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Er("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Er("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),Er("\\bra","\\mathinner{\\langle{#1}|}"),Er("\\ket","\\mathinner{|{#1}\\rangle}"),Er("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Er("\\Bra","\\left\\langle#1\\right|"),Er("\\Ket","\\left|#1\\right\\rangle"),Er("\\angln","{\\angl n}"),Er("\\blue","\\textcolor{##6495ed}{#1}"),Er("\\orange","\\textcolor{##ffa500}{#1}"),Er("\\pink","\\textcolor{##ff00af}{#1}"),Er("\\red","\\textcolor{##df0030}{#1}"),Er("\\green","\\textcolor{##28ae7b}{#1}"),Er("\\gray","\\textcolor{gray}{#1}"),Er("\\purple","\\textcolor{##9d38bd}{#1}"),Er("\\blueA","\\textcolor{##ccfaff}{#1}"),Er("\\blueB","\\textcolor{##80f6ff}{#1}"),Er("\\blueC","\\textcolor{##63d9ea}{#1}"),Er("\\blueD","\\textcolor{##11accd}{#1}"),Er("\\blueE","\\textcolor{##0c7f99}{#1}"),Er("\\tealA","\\textcolor{##94fff5}{#1}"),Er("\\tealB","\\textcolor{##26edd5}{#1}"),Er("\\tealC","\\textcolor{##01d1c1}{#1}"),Er("\\tealD","\\textcolor{##01a995}{#1}"),Er("\\tealE","\\textcolor{##208170}{#1}"),Er("\\greenA","\\textcolor{##b6ffb0}{#1}"),Er("\\greenB","\\textcolor{##8af281}{#1}"),Er("\\greenC","\\textcolor{##74cf70}{#1}"),Er("\\greenD","\\textcolor{##1fab54}{#1}"),Er("\\greenE","\\textcolor{##0d923f}{#1}"),Er("\\goldA","\\textcolor{##ffd0a9}{#1}"),Er("\\goldB","\\textcolor{##ffbb71}{#1}"),Er("\\goldC","\\textcolor{##ff9c39}{#1}"),Er("\\goldD","\\textcolor{##e07d10}{#1}"),Er("\\goldE","\\textcolor{##a75a05}{#1}"),Er("\\redA","\\textcolor{##fca9a9}{#1}"),Er("\\redB","\\textcolor{##ff8482}{#1}"),Er("\\redC","\\textcolor{##f9685d}{#1}"),Er("\\redD","\\textcolor{##e84d39}{#1}"),Er("\\redE","\\textcolor{##bc2612}{#1}"),Er("\\maroonA","\\textcolor{##ffbde0}{#1}"),Er("\\maroonB","\\textcolor{##ff92c6}{#1}"),Er("\\maroonC","\\textcolor{##ed5fa6}{#1}"),Er("\\maroonD","\\textcolor{##ca337c}{#1}"),Er("\\maroonE","\\textcolor{##9e034e}{#1}"),Er("\\purpleA","\\textcolor{##ddd7ff}{#1}"),Er("\\purpleB","\\textcolor{##c6b9fc}{#1}"),Er("\\purpleC","\\textcolor{##aa87ff}{#1}"),Er("\\purpleD","\\textcolor{##7854ab}{#1}"),Er("\\purpleE","\\textcolor{##543b78}{#1}"),Er("\\mintA","\\textcolor{##f5f9e8}{#1}"),Er("\\mintB","\\textcolor{##edf2df}{#1}"),Er("\\mintC","\\textcolor{##e0e5cc}{#1}"),Er("\\grayA","\\textcolor{##f6f7f7}{#1}"),Er("\\grayB","\\textcolor{##f0f1f2}{#1}"),Er("\\grayC","\\textcolor{##e3e5e6}{#1}"),Er("\\grayD","\\textcolor{##d6d8da}{#1}"),Er("\\grayE","\\textcolor{##babec2}{#1}"),Er("\\grayF","\\textcolor{##888d93}{#1}"),Er("\\grayG","\\textcolor{##626569}{#1}"),Er("\\grayH","\\textcolor{##3b3e40}{#1}"),Er("\\grayI","\\textcolor{##21242c}{#1}"),Er("\\kaBlue","\\textcolor{##314453}{#1}"),Er("\\kaGreen","\\textcolor{##71B307}{#1}");var Vn={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},Gn=function(){function e(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new On(Hn,t.macros),this.mode=r,this.stack=[]}var t=e.prototype;return t.feed=function(e){this.lexer=new Rn(e,this.settings)},t.switchMode=function(e){this.mode=e},t.beginGroup=function(){this.macros.beginGroup()},t.endGroup=function(){this.macros.endGroup()},t.endGroups=function(){this.macros.endGroups()},t.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},t.popToken=function(){return this.future(),this.stack.pop()},t.pushToken=function(e){this.stack.push(e)},t.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},t.scanArgument=function(e){var t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken();var a=this.consumeArg(["]"]);n=a.tokens,r=a.end}else{var i=this.consumeArg();n=i.tokens,t=i.start,r=i.end}return this.pushToken(new Dr("EOF",r.loc)),this.pushTokens(n),t.range(r,"")},t.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},t.consumeArg=function(e){var t=[],r=e&&e.length>0;r||this.consumeSpaces();var a,i=this.future(),o=0,s=0;do{if(a=this.popToken(),t.push(a),"{"===a.text)++o;else if("}"===a.text){if(-1===--o)throw new n("Extra }",a)}else if("EOF"===a.text)throw new n("Unexpected end of input in a macro argument, expected '"+(e&&r?e[s]:"}")+"'",a);if(e&&r)if((0===o||1===o&&"{"===e[s])&&a.text===e[s]){if(++s===e.length){t.splice(-s,s);break}}else s=0}while(0!==o||r);return"{"===i.text&&"}"===t[t.length-1].text&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:i,end:a}},t.consumeArgs=function(e,t){if(t){if(t.length!==e+1)throw new n("The length of delimiters doesn't match the number of args!");for(var r=t[0],a=0;athis.settings.maxExpand)throw new n("Too many expansions: infinite loop or need to increase maxExpand setting");var i=a.tokens,o=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs)for(var s=(i=i.slice()).length-1;s>=0;--s){var l=i[s];if("#"===l.text){if(0===s)throw new n("Incomplete placeholder at end of macro body",l);if("#"===(l=i[--s]).text)i.splice(s+1,1);else{if(!/^[1-9]$/.test(l.text))throw new n("Not a valid argument number",l);var h;(h=i).splice.apply(h,[s,2].concat(o[+l.text-1]))}}}return this.pushTokens(i),i},t.expandAfterFuture=function(){return this.expandOnce(),this.future()},t.expandNextToken=function(){for(;;){var e=this.expandOnce();if(e instanceof Dr)return e.treatAsRelax&&(e.text="\\relax"),this.stack.pop()}throw new Error},t.expandMacro=function(e){return this.macros.has(e)?this.expandTokens([new Dr(e)]):void 0},t.expandTokens=function(e){var t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;){var n=this.expandOnce(!0);n instanceof Dr&&(n.treatAsRelax&&(n.noexpand=!1,n.treatAsRelax=!1),t.push(this.stack.pop()))}return t},t.expandMacroAsText=function(e){var t=this.expandMacro(e);return t?t.map((function(e){return e.text})).join(""):t},t._getExpansion=function(e){var t=this.macros.get(e);if(null==t)return t;if(1===e.length){var r=this.lexer.catcodes[e];if(null!=r&&13!==r)return}var n="function"==typeof t?t(this):t;if("string"==typeof n){var a=0;if(-1!==n.indexOf("#"))for(var i=n.replace(/##/g,"");-1!==i.indexOf("#"+(a+1));)++a;for(var o=new Rn(n,this.settings),s=[],l=o.lex();"EOF"!==l.text;)s.push(l),l=o.lex();return s.reverse(),{tokens:s,numArgs:a}}return n},t.isDefined=function(e){return this.macros.has(e)||Nn.hasOwnProperty(e)||ae.math.hasOwnProperty(e)||ae.text.hasOwnProperty(e)||Vn.hasOwnProperty(e)},t.isExpandable=function(e){var t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Nn.hasOwnProperty(e)&&!Nn[e].primitive},e}(),Un={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"},"\u0327":{text:"\\c"}},Yn={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u1e09":"c\u0327\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\xe7":"c\u0327","\u010f":"d\u030c","\u1e0b":"d\u0307","\u1e11":"d\u0327","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u1e1d":"e\u0327\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u0229":"e\u0327","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u0123":"g\u0327","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\u1e29":"h\u0327","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u0137":"k\u0327","\u013a":"l\u0301","\u013e":"l\u030c","\u013c":"l\u0327","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\u0146":"n\u0327","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u0157":"r\u0327","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u015f":"s\u0327","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\u0163":"t\u0327","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u1e08":"C\u0327\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\xc7":"C\u0327","\u010e":"D\u030c","\u1e0a":"D\u0307","\u1e10":"D\u0327","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u1e1c":"E\u0327\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u0228":"E\u0327","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u0122":"G\u0327","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\u1e28":"H\u0327","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0136":"K\u0327","\u0139":"L\u0301","\u013d":"L\u030c","\u013b":"L\u0327","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\u0145":"N\u0327","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u0156":"R\u0327","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u015e":"S\u0327","\u0164":"T\u030c","\u1e6a":"T\u0307","\u0162":"T\u0327","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},Xn=function(){function e(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new Gn(e,t,this.mode),this.settings=t,this.leftrightDepth=0}var t=e.prototype;return t.expect=function(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new n("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()},t.consume=function(){this.nextToken=null},t.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},t.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},t.parse=function(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}},t.subparse=function(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new Dr("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r},t.parseExpression=function(t,r){for(var n=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==e.endOfExpression.indexOf(a.text))break;if(r&&a.text===r)break;if(t&&Nn[a.text]&&Nn[a.text].infix)break;var i=this.parseAtom(r);if(!i)break;"internal"!==i.type&&n.push(i)}return"text"===this.mode&&this.formLigatures(n),this.handleInfixNodes(n)},t.handleInfixNodes=function(e){for(var t,r=-1,a=0;a=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var s,l=ae[this.mode][t].group,h=Lr.range(e);if(te.hasOwnProperty(l)){var m=l;s={type:"atom",mode:this.mode,family:m,loc:h,text:t}}else s={type:l,mode:this.mode,loc:h,text:t};i=s}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(S(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),i={type:"textord",mode:"text",loc:Lr.range(e),text:t}}if(this.consume(),o)for(var c=0;c
-
-
-
-
-
-
-
-
-
-
-
- {{ md }}
-
-
-{{ extra }}
diff --git a/src/resources/htmlrender/templates/pygments-default.css b/src/resources/htmlrender/templates/pygments-default.css
deleted file mode 100755
index fe93c6e3..00000000
--- a/src/resources/htmlrender/templates/pygments-default.css
+++ /dev/null
@@ -1,74 +0,0 @@
-pre { line-height: 125%; }
-td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-.codehilite .hll { background-color: #ffffcc }
-.codehilite { background: #f8f8f8; }
-.codehilite .c { color: #408080; font-style: italic } /* Comment */
-.codehilite .err { border: 1px solid #FF0000 } /* Error */
-.codehilite .k { color: #008000; font-weight: bold } /* Keyword */
-.codehilite .o { color: #666666 } /* Operator */
-.codehilite .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
-.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */
-.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */
-.codehilite .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
-.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */
-.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */
-.codehilite .gd { color: #A00000 } /* Generic.Deleted */
-.codehilite .ge { font-style: italic } /* Generic.Emph */
-.codehilite .gr { color: #FF0000 } /* Generic.Error */
-.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.codehilite .gi { color: #00A000 } /* Generic.Inserted */
-.codehilite .go { color: #888888 } /* Generic.Output */
-.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
-.codehilite .gs { font-weight: bold } /* Generic.Strong */
-.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.codehilite .gt { color: #0044DD } /* Generic.Traceback */
-.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
-.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
-.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
-.codehilite .kp { color: #008000 } /* Keyword.Pseudo */
-.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
-.codehilite .kt { color: #B00040 } /* Keyword.Type */
-.codehilite .m { color: #666666 } /* Literal.Number */
-.codehilite .s { color: #BA2121 } /* Literal.String */
-.codehilite .na { color: #7D9029 } /* Name.Attribute */
-.codehilite .nb { color: #008000 } /* Name.Builtin */
-.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */
-.codehilite .no { color: #880000 } /* Name.Constant */
-.codehilite .nd { color: #AA22FF } /* Name.Decorator */
-.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */
-.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
-.codehilite .nf { color: #0000FF } /* Name.Function */
-.codehilite .nl { color: #A0A000 } /* Name.Label */
-.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
-.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */
-.codehilite .nv { color: #19177C } /* Name.Variable */
-.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
-.codehilite .w { color: #bbbbbb } /* Text.Whitespace */
-.codehilite .mb { color: #666666 } /* Literal.Number.Bin */
-.codehilite .mf { color: #666666 } /* Literal.Number.Float */
-.codehilite .mh { color: #666666 } /* Literal.Number.Hex */
-.codehilite .mi { color: #666666 } /* Literal.Number.Integer */
-.codehilite .mo { color: #666666 } /* Literal.Number.Oct */
-.codehilite .sa { color: #BA2121 } /* Literal.String.Affix */
-.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */
-.codehilite .sc { color: #BA2121 } /* Literal.String.Char */
-.codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */
-.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
-.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */
-.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
-.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */
-.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
-.codehilite .sx { color: #008000 } /* Literal.String.Other */
-.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */
-.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */
-.codehilite .ss { color: #19177C } /* Literal.String.Symbol */
-.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */
-.codehilite .fm { color: #0000FF } /* Name.Function.Magic */
-.codehilite .vc { color: #19177C } /* Name.Variable.Class */
-.codehilite .vg { color: #19177C } /* Name.Variable.Global */
-.codehilite .vi { color: #19177C } /* Name.Variable.Instance */
-.codehilite .vm { color: #19177C } /* Name.Variable.Magic */
-.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */
diff --git a/src/resources/htmlrender/templates/text.css b/src/resources/htmlrender/templates/text.css
deleted file mode 100755
index cd5a866a..00000000
--- a/src/resources/htmlrender/templates/text.css
+++ /dev/null
@@ -1,9 +0,0 @@
-.text {
- margin-top: 5px;
- word-break: break-all;
- white-space: pre-wrap;
-}
-
-.main-box {
- padding: 5px;
-}
\ No newline at end of file
diff --git a/src/resources/htmlrender/templates/text.html b/src/resources/htmlrender/templates/text.html
deleted file mode 100755
index 6271a72b..00000000
--- a/src/resources/htmlrender/templates/text.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
- {% if css %}
-
- {% endif %}
-
-
-
-
diff --git a/src/resources/liteyuki_crt/lang/en.lang b/src/resources/liteyuki_crt/lang/en.lang
deleted file mode 100755
index 8f61f124..00000000
--- a/src/resources/liteyuki_crt/lang/en.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-crt.station=Station(s)
-crt.hour=Hour(s)
-crt.minute=Min(s)
\ No newline at end of file
diff --git a/src/resources/liteyuki_crt/lang/zh-CN.lang b/src/resources/liteyuki_crt/lang/zh-CN.lang
deleted file mode 100755
index 332025bc..00000000
--- a/src/resources/liteyuki_crt/lang/zh-CN.lang
+++ /dev/null
@@ -1,3 +0,0 @@
-crt.station=站
-crt.hour=小时
-crt.minute=分钟
\ No newline at end of file
diff --git a/src/resources/liteyuki_crt/metadata.yml b/src/resources/liteyuki_crt/metadata.yml
deleted file mode 100755
index ed9c3221..00000000
--- a/src/resources/liteyuki_crt/metadata.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-name: CRT相关资源包
-description: For Liteyuki CRT utils
-version: 2024.4.26
\ No newline at end of file
diff --git a/src/resources/liteyuki_crt/templates/crt_route.html b/src/resources/liteyuki_crt/templates/crt_route.html
deleted file mode 100755
index 042657ec..00000000
--- a/src/resources/liteyuki_crt/templates/crt_route.html
+++ /dev/null
@@ -1,161 +0,0 @@
-
-
-
-
- CRT 线路图
-
-
-
-
-
-{{ data | tojson }}
-
-
-
-
-
-
-
-
-
-
- 轨道交通环线外环
-
-
- 沙坪坝方向
-
-
-
- 5站(14分钟)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_crt/templates/css/crt_route.css b/src/resources/liteyuki_crt/templates/css/crt_route.css
deleted file mode 100755
index e69de29b..00000000
diff --git a/src/resources/liteyuki_crt/templates/js/crt_route.js b/src/resources/liteyuki_crt/templates/js/crt_route.js
deleted file mode 100755
index aafb060a..00000000
--- a/src/resources/liteyuki_crt/templates/js/crt_route.js
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2024 SnowyKami Liteyuki Studio All Rights Reserved.
-
-
-/**
- * @type {{
- * results: Array<{
- * abstracts: string,
- * createdDt: string,
- * endStaName: string,
- * startStaName: string,
- * isValid: boolean,
- * needTimeScope: number,
- * needTransferTimes: number,
- * price: number,
- * skipGenerateSequence: boolean,
- * transferLines: string,
- * transferLinesColor: string,
- * transferStaDerict: string,
- * transferStaNames: string,
- * }>
- * }}
- */
-
-const data = JSON.parse(document.getElementById("data").innerText);
-const results = data["result"];
-const route_template = document.importNode(document.getElementById("route-template").content, true)
-
-results.forEach(
- (item, index) => {
-
- }
-)
-
-
-
diff --git a/src/resources/liteyuki_statistics/lang/en-US.lang b/src/resources/liteyuki_statistics/lang/en-US.lang
deleted file mode 100755
index 55e5faf9..00000000
--- a/src/resources/liteyuki_statistics/lang/en-US.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-stat.message=Statistics message
-stat.rank=Speech ranking
\ No newline at end of file
diff --git a/src/resources/liteyuki_statistics/lang/fr-FR.lang b/src/resources/liteyuki_statistics/lang/fr-FR.lang
deleted file mode 100755
index 5316d34a..00000000
--- a/src/resources/liteyuki_statistics/lang/fr-FR.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-stat.message=Messages statistiques
-stat.rank=Classement des discours
\ No newline at end of file
diff --git a/src/resources/liteyuki_statistics/lang/ru-RU.lang b/src/resources/liteyuki_statistics/lang/ru-RU.lang
deleted file mode 100755
index 9420f024..00000000
--- a/src/resources/liteyuki_statistics/lang/ru-RU.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-stat.message=Рейтинг выступлений
-stat.rank=Рейтинг выступлений
\ No newline at end of file
diff --git a/src/resources/liteyuki_statistics/lang/zh-CN.lang b/src/resources/liteyuki_statistics/lang/zh-CN.lang
deleted file mode 100755
index 31847027..00000000
--- a/src/resources/liteyuki_statistics/lang/zh-CN.lang
+++ /dev/null
@@ -1,2 +0,0 @@
-stat.message=统计消息
-stat.rank=发言排名
\ No newline at end of file
diff --git a/src/resources/liteyuki_statistics/metadata.yml b/src/resources/liteyuki_statistics/metadata.yml
deleted file mode 100755
index 0c191edd..00000000
--- a/src/resources/liteyuki_statistics/metadata.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-name: 轻雪统计信息附件
-description: For Liteyuki statistic
-version: 2024.4.26
\ No newline at end of file
diff --git a/src/resources/liteyuki_statistics/templates/css/stat_msg.css b/src/resources/liteyuki_statistics/templates/css/stat_msg.css
deleted file mode 100755
index af18499e..00000000
--- a/src/resources/liteyuki_statistics/templates/css/stat_msg.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.sign-chart {
- height: 400px;
- background-color: rgba(255, 255, 255, 0.7);
-}
\ No newline at end of file
diff --git a/src/resources/liteyuki_statistics/templates/css/stat_rank.css b/src/resources/liteyuki_statistics/templates/css/stat_rank.css
deleted file mode 100755
index e69de29b..00000000
diff --git a/src/resources/liteyuki_statistics/templates/js/stat_msg.js b/src/resources/liteyuki_statistics/templates/js/stat_msg.js
deleted file mode 100755
index 0ed6c089..00000000
--- a/src/resources/liteyuki_statistics/templates/js/stat_msg.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// 数据类型声明
-// import * as echarts from 'echarts';
-
-let data = JSON.parse(document.getElementById("data").innerText) // object
-const signChartDivTemplate = document.importNode(document.getElementById("sign-chart-template").content, true)
-data.forEach((item) => {
- let signChartDiv = signChartDivTemplate.cloneNode(true)
- let chartID = item["name"]
- // 初始化ECharts实例
- // 设置id
- signChartDiv.querySelector(".sign-chart").id = chartID
- document.body.appendChild(signChartDiv)
-
- let signChart = echarts.init(document.getElementById(chartID))
-
- signChart.setOption(
- {
- animation: false,
- title: {
- text: item["name"],
- textStyle: {
- color: '#000000' // 设置标题文本颜色为红色
- }
- },
- xAxis: {
- type: 'category',
- data: item["times"].map(timestampToTime),
- },
- yAxis: {
- type: 'value',
- min: Math.min(...item["counts"]),
- },
-
- series: [
- {
- data: item["counts"],
- type: 'line',
- }
- ]
- }
- )
-})
-
-
-function timestampToTime(timestamp) {
- let date = new Date(timestamp * 1000)
- let Y = date.getFullYear() + '-'
- let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
- let D = date.getDate() + ' '
- let h = date.getHours() + ':'
- let m = date.getMinutes() + ':'
- let s = date.getSeconds()
- return M + D + h + m + s
-}
\ No newline at end of file
diff --git a/src/resources/liteyuki_statistics/templates/js/stat_rank.js b/src/resources/liteyuki_statistics/templates/js/stat_rank.js
deleted file mode 100755
index e1f1a42f..00000000
--- a/src/resources/liteyuki_statistics/templates/js/stat_rank.js
+++ /dev/null
@@ -1,25 +0,0 @@
-let data = JSON.parse(document.getElementById("data").innerText) // object
-
-const rowDiv = document.importNode(document.getElementById("row-template").content, true)
-
-function randomHideChar(str) {
- // 随机隐藏6位以上字符串的中间连续四位字符,用*代替
- if (str.length <= 6) {
- return str
- }
- let start = Math.floor(str.length / 2) - 2
- return str.slice(0, start) + "****" + str.slice(start + 4)
-}
-data["ranking"].forEach((item) => {
- let row = rowDiv.cloneNode(true)
- let rowID = item["name"]
- let rowIconSrc = item["icon"]
- let rowCount = item["count"]
-
- row.querySelector(".row-name").innerText = randomHideChar(rowID)
- row.querySelector(".row-icon").src = rowIconSrc
- row.querySelector(".row-count").innerText = rowCount
-
- document.body.appendChild(row)
-})
-
diff --git a/src/resources/liteyuki_statistics/templates/stat_msg.html b/src/resources/liteyuki_statistics/templates/stat_msg.html
deleted file mode 100755
index a8d3395f..00000000
--- a/src/resources/liteyuki_statistics/templates/stat_msg.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- Liteyuki Stats Message
-
-
-
-
-
-
-
-
-
-
-
-{{ data | tojson }}
-
-
-
-
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_statistics/templates/stat_rank.html b/src/resources/liteyuki_statistics/templates/stat_rank.html
deleted file mode 100755
index a51a71dc..00000000
--- a/src/resources/liteyuki_statistics/templates/stat_rank.html
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
- Liteyuki Stats Message
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{{ data | tojson }}
-
-
-
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/lang/en.lang b/src/resources/liteyuki_weather/lang/en.lang
deleted file mode 100755
index 7d3d68a5..00000000
--- a/src/resources/liteyuki_weather/lang/en.lang
+++ /dev/null
@@ -1,21 +0,0 @@
-weather.monday=Mon
-weather.tuesday=Tue
-weather.wednesday=Wed
-weather.thursday=Thu
-weather.friday=Fri
-weather.saturday=Sat
-weather.sunday=Sun
-weather.day=Day
-weather.night=Night
-weather.today=Today
-weather.tomorrow=Tomorrow
-weather.no_aqi=No AQI data
-weather.now-windVelocity=WS
-weather.now-humidity=RH
-weather.now-feelsLike=FL
-weather.now-precip=PPT
-weather.now-pressure=MSLP
-weather.now-vis=VIS
-weather.now-cloud=CC
-weather.astronomy-sunrise=SR
-weather.astronomy-sunset=SS
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/lang/ja.lang b/src/resources/liteyuki_weather/lang/ja.lang
deleted file mode 100755
index 2b221bec..00000000
--- a/src/resources/liteyuki_weather/lang/ja.lang
+++ /dev/null
@@ -1,21 +0,0 @@
-weather.monday=月
-weather.tuesday=火
-weather.wednesday=水
-weather.thursday=木
-weather.friday=金
-weather.saturday=土
-weather.sunday=日
-weather.day=昼
-weather.night=夜
-weather.today=今日
-weather.tomorrow=明日
-weather.no_aqi=空気質データなし
-weather.now-windVelocity=風速
-weather.now-humidity=湿度
-weather.now-feelsLike=体感温度
-weather.now-precip=降水量
-weather.now-pressure=気圧
-weather.now-vis=能視距離
-weather.now-cloud=雲量
-weather.astronomy-sunrise=日出
-weather.astronomy-sunset=日没
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/lang/zh-CN.lang b/src/resources/liteyuki_weather/lang/zh-CN.lang
deleted file mode 100755
index 26931d65..00000000
--- a/src/resources/liteyuki_weather/lang/zh-CN.lang
+++ /dev/null
@@ -1,21 +0,0 @@
-weather.monday=周一
-weather.tuesday=周二
-weather.wednesday=周三
-weather.thursday=周四
-weather.friday=周五
-weather.saturday=周六
-weather.sunday=周日
-weather.day=白天
-weather.night=夜晚
-weather.today=今天
-weather.tomorrow=明天
-weather.no_aqi=暂无AQI数据
-weather.now-windVelocity=风矢
-weather.now-humidity=湿度
-weather.now-feelsLike=体感
-weather.now-precip=降水
-weather.now-pressure=气压
-weather.now-vis=能见
-weather.now-cloud=云量
-weather.astronomy-sunrise=日出
-weather.astronomy-sunset=日落
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/metadata.yml b/src/resources/liteyuki_weather/metadata.yml
deleted file mode 100755
index 02ecd390..00000000
--- a/src/resources/liteyuki_weather/metadata.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-name: 轻雪天气资源包
-description: For Liteyuki Weather
-version: 2024.4.26
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/templates/css/weather_now.css b/src/resources/liteyuki_weather/templates/css/weather_now.css
deleted file mode 100755
index dd1f4298..00000000
--- a/src/resources/liteyuki_weather/templates/css/weather_now.css
+++ /dev/null
@@ -1,240 +0,0 @@
-:root {
- --main-text-color: #fff;
- --sub-text-color: #ccc;
- --tip-text-color: #999;
- --device-info-width: 240px;
- --sub-border-radius: 60px;
-}
-
-#weather-info {
- color: white;
- /*justify-content: center;*/
- /*align-items: center;*/
- /*align-content: center;*/
-}
-
-.icon {
- /* icon 类img阴影*/
- filter: drop-shadow(1px 1px 10px #00000044);
-}
-
-#main-info {
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
-#main-left {
- display: flex;
- justify-content: flex-end;
- width: 50%;
-}
-
-#main-right {
- width: 50%;
-}
-
-#time {
- font-size: 25px;
- font-weight: bold;
- font-style: italic;
- text-align: right;
- color: var(--sub-text-color);
-
-}
-
-#adm {
- font-size: 32px;
- font-weight: bold;
- text-align: center;
- color: var(--sub-text-color);
-}
-
-#city {
- margin-top: 20px;
- font-size: 70px;
- font-weight: bold;
- text-align: center;
-}
-
-#temperature {
- display: flex;
- align-items: baseline;
-
-}
-
-#temperature-now {
- font-size: 70px;
- font-weight: bold;
-}
-
-#temperature-range {
- font-size: 40px;
- font-weight: bold;
- color: var(--sub-text-color);
-}
-
-#description {
- font-size: 50px;
- font-weight: bold;
-}
-
-
-#aqi {
- height: 50px;
- display: flex;
- border-radius: 60px;
- padding: 5px;
- font-size: 40px;
- text-align: center;
- align-content: center;
- align-items: center;
- justify-content: center;
-}
-
-#aqi-dot {
- height: 80%;
- aspect-ratio: 1 / 1;
- border-radius: 50%;
- background-color: var(--sub-text-color);
- margin-right: 20px;
-}
-
-.main-icon {
- width: 240px;
- height: 240px;
-}
-
-#hours-info {
- display: flex;
- justify-content: space-between;
-}
-
-.hourly-item {
- text-align: center;
- background-color: #ffffff44;
- border-radius: var(--sub-border-radius);
- align-items: center;
- padding: 20px 10px;
-}
-
-.hourly-icon {
- width: 80%;
- margin-bottom: 20px;
-}
-
-.hourly-temperature {
- text-align: center;
- color: var(--main-text-color);
- font-size: 30px;
- margin-bottom: 20px;
-}
-
-.hourly-time {
- text-align: center;
- color: var(--main-text-color);
- font-size: 25px;
- margin-bottom: 10px;
-}
-
-/**/
-.daily-item {
- display: flex;
- position: relative;
- justify-content: space-between;
- align-items: center;
- background-color: #ffffff44;
- height: 90px;
- border-radius: var(--sub-border-radius);
- margin-bottom: 20px;
- padding: 0 30px;
-}
-
-/*最后一个没有margin_button*/
-.daily-item:last-child {
- margin-bottom: 0;
-}
-
-.icon-day {
- position: absolute;
- left: 60%;
- height: 80px;
-}
-
-.icon-night {
- position: absolute;
- left: 70%;
- height: 80px;
-}
-
-.daily-weather {
- position: absolute;
- left: 30%;
-}
-
-.daily-temperature {
- position: absolute;
- left: 83%;
-}
-
-.daily-day,
-.daily-weather,
-.daily-temperature {
- text-align: center;
- color: var(--main-text-color);
- font-size: 30px;
-}
-
-.ad-box {
- margin-bottom: 20px;
-}
-
-#ad {
- border-radius: 60px;
-}
-
-#sub-info {
- display: grid;
- grid-template-columns: repeat(2, 1fr);
- gap: 10px;
- color: var(--main-text-color);
- font-size: 36px;
- align-items: center;
-}
-
-.sub-item {
- display: flex;
- align-items: center;
- gap: 5px;
- overflow: hidden;
- padding-left: 20px;
-}
-
-/*要问就问为什么html调svg那么不友好*/
-.sub-svg {
- transform: translateY(-80px);
- /*此处用作自定义颜色*/
- filter: drop-shadow(var(--main-text-color) 0 80px);
- /*此处用作自定义透明度*/
- opacity: 1;
- padding-right: 10px;
-}
-
-.attribution-box {
- margin: 0;
- position: relative;
- display: flex;
- justify-content: center;
-}
-
-#attribution-info {
- backdrop-filter: blur(10px);
- padding: 0 5px 0;
- background-color: rgba(0, 0, 0, 0.5);
- font-size: 25px;
- justify-content: space-between;
- display: inline-flex;
- word-wrap: break-word;
- color: var(--sub-text-color);
- text-align: center;
-}
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/templates/img/ad_default/ad_default.png b/src/resources/liteyuki_weather/templates/img/ad_default/ad_default.png
deleted file mode 100755
index 120df813..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/ad_default/ad_default.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/100.png b/src/resources/liteyuki_weather/templates/img/qw_icon/100.png
deleted file mode 100755
index ab363939..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/100.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/101.png b/src/resources/liteyuki_weather/templates/img/qw_icon/101.png
deleted file mode 100755
index 4b988131..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/101.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/102.png b/src/resources/liteyuki_weather/templates/img/qw_icon/102.png
deleted file mode 100755
index f7be2cad..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/102.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/103.png b/src/resources/liteyuki_weather/templates/img/qw_icon/103.png
deleted file mode 100755
index 350e5b20..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/103.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/104.png b/src/resources/liteyuki_weather/templates/img/qw_icon/104.png
deleted file mode 100755
index cf75c858..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/104.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/150.png b/src/resources/liteyuki_weather/templates/img/qw_icon/150.png
deleted file mode 100755
index 6e62325b..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/150.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/151.png b/src/resources/liteyuki_weather/templates/img/qw_icon/151.png
deleted file mode 100755
index 9809be5e..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/151.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/152.png b/src/resources/liteyuki_weather/templates/img/qw_icon/152.png
deleted file mode 100755
index 153d0d06..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/152.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/153.png b/src/resources/liteyuki_weather/templates/img/qw_icon/153.png
deleted file mode 100755
index fb144704..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/153.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/154.png b/src/resources/liteyuki_weather/templates/img/qw_icon/154.png
deleted file mode 100755
index a397b04f..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/154.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/300.png b/src/resources/liteyuki_weather/templates/img/qw_icon/300.png
deleted file mode 100755
index 39d7ae6b..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/300.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/301.png b/src/resources/liteyuki_weather/templates/img/qw_icon/301.png
deleted file mode 100755
index 0ed630a5..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/301.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/302.png b/src/resources/liteyuki_weather/templates/img/qw_icon/302.png
deleted file mode 100755
index a565077c..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/302.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/303.png b/src/resources/liteyuki_weather/templates/img/qw_icon/303.png
deleted file mode 100755
index 14118097..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/303.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/304.png b/src/resources/liteyuki_weather/templates/img/qw_icon/304.png
deleted file mode 100755
index e3e0d837..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/304.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/305.png b/src/resources/liteyuki_weather/templates/img/qw_icon/305.png
deleted file mode 100755
index 85ae4147..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/305.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/306.png b/src/resources/liteyuki_weather/templates/img/qw_icon/306.png
deleted file mode 100755
index 54e224c0..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/306.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/307.png b/src/resources/liteyuki_weather/templates/img/qw_icon/307.png
deleted file mode 100755
index f9baa36b..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/307.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/308.png b/src/resources/liteyuki_weather/templates/img/qw_icon/308.png
deleted file mode 100755
index da3b767f..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/308.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/309.png b/src/resources/liteyuki_weather/templates/img/qw_icon/309.png
deleted file mode 100755
index 5bdf33f1..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/309.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/310.png b/src/resources/liteyuki_weather/templates/img/qw_icon/310.png
deleted file mode 100755
index 5ec2b295..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/310.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/311.png b/src/resources/liteyuki_weather/templates/img/qw_icon/311.png
deleted file mode 100755
index ba877ce1..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/311.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/312.png b/src/resources/liteyuki_weather/templates/img/qw_icon/312.png
deleted file mode 100755
index 817a8685..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/312.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/313.png b/src/resources/liteyuki_weather/templates/img/qw_icon/313.png
deleted file mode 100755
index dc0e98a5..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/313.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/314.png b/src/resources/liteyuki_weather/templates/img/qw_icon/314.png
deleted file mode 100755
index b83983ac..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/314.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/315.png b/src/resources/liteyuki_weather/templates/img/qw_icon/315.png
deleted file mode 100755
index 27d1f109..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/315.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/316.png b/src/resources/liteyuki_weather/templates/img/qw_icon/316.png
deleted file mode 100755
index b3a7378d..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/316.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/317.png b/src/resources/liteyuki_weather/templates/img/qw_icon/317.png
deleted file mode 100755
index 4d2b9876..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/317.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/318.png b/src/resources/liteyuki_weather/templates/img/qw_icon/318.png
deleted file mode 100755
index a882b22c..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/318.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/350.png b/src/resources/liteyuki_weather/templates/img/qw_icon/350.png
deleted file mode 100755
index 28a589ba..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/350.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/351.png b/src/resources/liteyuki_weather/templates/img/qw_icon/351.png
deleted file mode 100755
index 854517f9..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/351.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/399.png b/src/resources/liteyuki_weather/templates/img/qw_icon/399.png
deleted file mode 100755
index 9ac9fb33..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/399.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/400.png b/src/resources/liteyuki_weather/templates/img/qw_icon/400.png
deleted file mode 100755
index 6b0e83ad..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/400.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/401.png b/src/resources/liteyuki_weather/templates/img/qw_icon/401.png
deleted file mode 100755
index ea69d76d..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/401.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/402.png b/src/resources/liteyuki_weather/templates/img/qw_icon/402.png
deleted file mode 100755
index 4e9b4c76..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/402.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/403.png b/src/resources/liteyuki_weather/templates/img/qw_icon/403.png
deleted file mode 100755
index 462b3231..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/403.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/404.png b/src/resources/liteyuki_weather/templates/img/qw_icon/404.png
deleted file mode 100755
index b9c3aae0..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/404.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/405.png b/src/resources/liteyuki_weather/templates/img/qw_icon/405.png
deleted file mode 100755
index df605dee..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/405.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/406.png b/src/resources/liteyuki_weather/templates/img/qw_icon/406.png
deleted file mode 100755
index f72076a8..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/406.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/407.png b/src/resources/liteyuki_weather/templates/img/qw_icon/407.png
deleted file mode 100755
index a00a70d6..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/407.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/408.png b/src/resources/liteyuki_weather/templates/img/qw_icon/408.png
deleted file mode 100755
index 62dbea2c..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/408.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/409.png b/src/resources/liteyuki_weather/templates/img/qw_icon/409.png
deleted file mode 100755
index 010bde4b..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/409.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/410.png b/src/resources/liteyuki_weather/templates/img/qw_icon/410.png
deleted file mode 100755
index 99c9bb14..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/410.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/456.png b/src/resources/liteyuki_weather/templates/img/qw_icon/456.png
deleted file mode 100755
index 1579fd66..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/456.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/457.png b/src/resources/liteyuki_weather/templates/img/qw_icon/457.png
deleted file mode 100755
index fb957b43..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/457.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/499.png b/src/resources/liteyuki_weather/templates/img/qw_icon/499.png
deleted file mode 100755
index a945149a..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/499.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/500.png b/src/resources/liteyuki_weather/templates/img/qw_icon/500.png
deleted file mode 100755
index b276eecf..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/500.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/501.png b/src/resources/liteyuki_weather/templates/img/qw_icon/501.png
deleted file mode 100755
index b276eecf..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/501.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/502.png b/src/resources/liteyuki_weather/templates/img/qw_icon/502.png
deleted file mode 100755
index a7c9d42d..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/502.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/503.png b/src/resources/liteyuki_weather/templates/img/qw_icon/503.png
deleted file mode 100755
index 7d629eef..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/503.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/504.png b/src/resources/liteyuki_weather/templates/img/qw_icon/504.png
deleted file mode 100755
index e0494cb2..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/504.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/507.png b/src/resources/liteyuki_weather/templates/img/qw_icon/507.png
deleted file mode 100755
index 110581e3..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/507.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/508.png b/src/resources/liteyuki_weather/templates/img/qw_icon/508.png
deleted file mode 100755
index 6c33ef3e..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/508.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/509.png b/src/resources/liteyuki_weather/templates/img/qw_icon/509.png
deleted file mode 100755
index 662948ba..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/509.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/510.png b/src/resources/liteyuki_weather/templates/img/qw_icon/510.png
deleted file mode 100755
index 76eed645..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/510.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/511.png b/src/resources/liteyuki_weather/templates/img/qw_icon/511.png
deleted file mode 100755
index 90f9cf09..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/511.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/512.png b/src/resources/liteyuki_weather/templates/img/qw_icon/512.png
deleted file mode 100755
index 3bee6eb2..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/512.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/513.png b/src/resources/liteyuki_weather/templates/img/qw_icon/513.png
deleted file mode 100755
index 41d68562..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/513.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/514.png b/src/resources/liteyuki_weather/templates/img/qw_icon/514.png
deleted file mode 100755
index 05648402..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/514.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/515.png b/src/resources/liteyuki_weather/templates/img/qw_icon/515.png
deleted file mode 100755
index 05648402..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/515.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/800.png b/src/resources/liteyuki_weather/templates/img/qw_icon/800.png
deleted file mode 100755
index 6ca79703..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/800.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/801.png b/src/resources/liteyuki_weather/templates/img/qw_icon/801.png
deleted file mode 100755
index 33c30329..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/801.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/802.png b/src/resources/liteyuki_weather/templates/img/qw_icon/802.png
deleted file mode 100755
index f0537c6d..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/802.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/803.png b/src/resources/liteyuki_weather/templates/img/qw_icon/803.png
deleted file mode 100755
index 71ea5bd0..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/803.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/804.png b/src/resources/liteyuki_weather/templates/img/qw_icon/804.png
deleted file mode 100755
index 1d8af3d8..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/804.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/805.png b/src/resources/liteyuki_weather/templates/img/qw_icon/805.png
deleted file mode 100755
index e3f826da..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/805.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/806.png b/src/resources/liteyuki_weather/templates/img/qw_icon/806.png
deleted file mode 100755
index 30ebf104..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/806.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/807.png b/src/resources/liteyuki_weather/templates/img/qw_icon/807.png
deleted file mode 100755
index 04cc5375..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/807.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/900.png b/src/resources/liteyuki_weather/templates/img/qw_icon/900.png
deleted file mode 100755
index ce355271..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/900.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/901.png b/src/resources/liteyuki_weather/templates/img/qw_icon/901.png
deleted file mode 100755
index 4a0941cc..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/901.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/qw_icon/999.png b/src/resources/liteyuki_weather/templates/img/qw_icon/999.png
deleted file mode 100755
index 59654064..00000000
Binary files a/src/resources/liteyuki_weather/templates/img/qw_icon/999.png and /dev/null differ
diff --git a/src/resources/liteyuki_weather/templates/img/svg/cloud.svg b/src/resources/liteyuki_weather/templates/img/svg/cloud.svg
deleted file mode 100755
index 1d48c549..00000000
--- a/src/resources/liteyuki_weather/templates/img/svg/cloud.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/templates/img/svg/feelsLike.svg b/src/resources/liteyuki_weather/templates/img/svg/feelsLike.svg
deleted file mode 100755
index fb18cb13..00000000
--- a/src/resources/liteyuki_weather/templates/img/svg/feelsLike.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/templates/img/svg/humidity.svg b/src/resources/liteyuki_weather/templates/img/svg/humidity.svg
deleted file mode 100755
index e0343850..00000000
--- a/src/resources/liteyuki_weather/templates/img/svg/humidity.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/templates/img/svg/precip.svg b/src/resources/liteyuki_weather/templates/img/svg/precip.svg
deleted file mode 100755
index f0e1d167..00000000
--- a/src/resources/liteyuki_weather/templates/img/svg/precip.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/templates/img/svg/pressure.svg b/src/resources/liteyuki_weather/templates/img/svg/pressure.svg
deleted file mode 100755
index d06fe8ef..00000000
--- a/src/resources/liteyuki_weather/templates/img/svg/pressure.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/templates/img/svg/sunrise.svg b/src/resources/liteyuki_weather/templates/img/svg/sunrise.svg
deleted file mode 100755
index ae6ef2f6..00000000
--- a/src/resources/liteyuki_weather/templates/img/svg/sunrise.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/templates/img/svg/sunset.svg b/src/resources/liteyuki_weather/templates/img/svg/sunset.svg
deleted file mode 100755
index b8c096fd..00000000
--- a/src/resources/liteyuki_weather/templates/img/svg/sunset.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/templates/img/svg/vis.svg b/src/resources/liteyuki_weather/templates/img/svg/vis.svg
deleted file mode 100755
index c67c0dd6..00000000
--- a/src/resources/liteyuki_weather/templates/img/svg/vis.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/templates/img/svg/windDirect.svg b/src/resources/liteyuki_weather/templates/img/svg/windDirect.svg
deleted file mode 100755
index f3ab84f5..00000000
--- a/src/resources/liteyuki_weather/templates/img/svg/windDirect.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/templates/img/svg/windVelocity.svg b/src/resources/liteyuki_weather/templates/img/svg/windVelocity.svg
deleted file mode 100755
index 03019797..00000000
--- a/src/resources/liteyuki_weather/templates/img/svg/windVelocity.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_weather/templates/js/weather_now.js b/src/resources/liteyuki_weather/templates/js/weather_now.js
deleted file mode 100755
index 9769abbf..00000000
--- a/src/resources/liteyuki_weather/templates/js/weather_now.js
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
- * @typedef {Object} Location
- * @property {string} city - The city name.
- * @property {string} country - The country name.
- *
- * @typedef {Object} Weather
- * @property {number} temperature - The current temperature.
- * @property {string} description - The weather description.
- *
- * @typedef {Object} Data
- * @property {Location} location - The location data.
- * @property {Weather} weather - The weather data.
- */
-
-/** @type {Data} */
-
-let data = JSON.parse(document.getElementById("data").innerText)
-
-let localData = data["localization"] // 本地化数据
-
-let weatherNow = data["weatherNow"]
-
-let weatherDaily = data["weatherDaily"]
-let weatherHourly = data["weatherHourly"]
-let aqi = data["aqi"]
-let weatherAstronomy = data["weatherAstronomy"]
-let is_dev = data["is_dev"]
-let attr = data["attr"]
-
-
-let locationData = data["location"]
-
-// 处理aqi
-let aqiValue = 0
-if ("aqi" in aqi) {
- aqi["aqi"].forEach(
- (item) => {
- if (item["defaultLocalAqi"]) {
- document.getElementById("aqi-data").innerText = "AQI " + item["valueDisplay"] + " " + item["category"]
- // 将(255,255,255)这种格式的颜色设置给css
- if (is_dev) {
- //开发版
- document.getElementById("aqi-dot").style.backgroundColor = "rgb(" + item["color"]['red'] + "," + item["color"]['green'] + "," + item["color"]['blue'] + "," + item["color"]['alpha'] + ")"
- } else {
- //正式版
- document.getElementById("aqi-dot").style.backgroundColor = "rgb(" + item["color"] + ")"
- }
- }
- }
- )
-} else {
- document.getElementById("aqi-dot").style.backgroundColor = '#fff'
- document.getElementById("aqi-data").innerText = localData['no_aqi']
-}
-
-
-let templates = {
- "time": weatherNow["now"]["obsTime"],
- "city": locationData["name"],
- "adm": locationData["country"] + " " + locationData["adm1"] + " " + locationData["adm2"],
- "temperature-now": weatherNow["now"]["temp"] + "°",
- "temperature-range": weatherDaily["daily"][0]["tempMin"] + "°/" + weatherDaily["daily"][0]["tempMax"] + "°",
- "description": weatherNow["now"]["text"]
-}
-
-// 遍历每一个id,给其赋值
-for (let id in templates) {
- document.getElementById(id).innerText = templates[id]
-}
-
-
-let subtemplates = {
- "now-windDirect": weatherNow["now"]["windDir"] + " " + weatherNow["now"]["wind360"] + "°",
- "now-windVelocity": localData["now-windVelocity"] + " " + weatherNow["now"]["windScale"] + "级 " + weatherNow["now"]["windSpeed"] + "km/h",
- "now-humidity": localData["now-humidity"] + " " + weatherNow["now"]["humidity"] + "%",
- "now-feelsLike": localData["now-feelsLike"] + " " + weatherNow["now"]["feelsLike"] + "°C",
- "now-precip": localData["now-precip"] + " " + weatherNow["now"]["precip"] + "mm",
- "now-pressure": localData["now-pressure"] + " " + weatherNow["now"]["pressure"] + "hPa",
- "now-vis": localData["now-vis"] + " " + weatherNow["now"]["vis"] + "km",
- "now-cloud": localData["now-cloud"] + " " + (weatherNow["now"]["cloud"] == "" ? "无数据" : (weatherNow["now"]["cloud"] + "%")),
- "astronomy-sunrise": localData["astronomy-sunrise"] + " " + get_time_hour(weatherAstronomy["sunrise"]),
- "astronomy-sunset": localData["astronomy-sunset"] + " " + get_time_hour(weatherAstronomy["sunset"])
-}
-
-let subiconMap = {
- "now-windDirect": "windDirect",
- "now-windVelocity": "windVelocity",
- "now-humidity": "humidity",
- "now-feelsLike": "feelsLike",
- "now-precip": "precip",
- "now-pressure": "pressure",
- "now-vis": "vis",
- "now-cloud": "cloud",
- "astronomy-sunrise": "sunrise",
- "astronomy-sunset": "sunset"
-};
-
-let subtemplate = document.getElementById('sub-info-template').content;
-let subcontainer = document.getElementById('sub-info');
-
-Object.keys(subtemplates).forEach(id => {
- let subItemDiv = document.importNode(subtemplate, true).querySelector('.sub-item');
-
- subItemDiv.querySelector(`div`).innerText = subtemplates[id];
-
- let iconName = subiconMap[id];
-
- subItemDiv.querySelector(`img`).src = `./img/svg/${iconName}.svg`;
- subItemDiv.querySelector(`img`).alt = `SVG ${id}`;
-
- subcontainer.appendChild(subItemDiv);
-});
-
-
-let maxHourlyItem = 8
-let percentWidth = 1 / (maxHourlyItem * 1.5) * 100
-let hourlyStep = 2 // n小时一个数据
-let hourlyCount = 0
-
-let hourlyItemDivTemplate = document.importNode(document.getElementById("hourly-item-template").content, true)
-weatherHourly['hourly'].forEach(
- (item, index) => {
- if (index % hourlyStep !== 0) {
- return
- }
- if (hourlyCount >= maxHourlyItem) {
- return
- }
-
- let hourlyItemDiv = document.importNode(hourlyItemDivTemplate, true)
- hourlyItemDiv.className = "hourly-item"
- hourlyItemDiv.querySelector('.hourly-icon').setAttribute("src", `./img/qw_icon/${item["icon"]}.png`)
- hourlyItemDiv.querySelector('.hourly-time').innerText = get_time_hour(item["fxTime"])
- hourlyItemDiv.querySelector('.hourly-temperature').innerText = " " + item["temp"] + "°"
- // 设置最大宽度
- hourlyItemDiv.querySelector('.hourly-item').style.maxWidth = percentWidth + "%"
- hourlyItemDiv.querySelector('.hourly-icon').style.maxWidth = "100%"
- document.getElementById("hours-info").appendChild(hourlyItemDiv)
- hourlyCount++
- }
-)
-
-let maxDailyItem = 7
-// 第一和第二天用today和tomorrow,后面用星期X英文小写
-let daysStandard = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']
-let todayDay = new Date().getDay()
-let days = [localData['today'], localData['tomorrow']]
-for (let i = 0; i < 5; i++) {
- days.push(localData[daysStandard[(todayDay + 2 + i) % 7]])
-}
-
-let dailyItemDivTemplate = document.importNode(document.getElementById("daily-item-template").content, true)
-weatherDaily['daily'].forEach(
- (item, index) => {
- if (index >= maxDailyItem) {
- return
- }
- let today = days[index]
- if (index >= 2) {
- today += `(${item["fxDate"].split("-")[1]}.${item["fxDate"].split("-")[2]})`
- }
- let dailyItemDiv = document.importNode(dailyItemDivTemplate, true)
- dailyItemDiv.querySelector('.icon-day').setAttribute("src", `./img/qw_icon/${item["iconDay"]}.png`)
- dailyItemDiv.querySelector('.icon-night').setAttribute("src", `./img/qw_icon/${item["iconNight"]}.png`)
-
- dailyItemDiv.querySelector('.daily-day').innerText = today
-
- dailyItemDiv.querySelector('.daily-weather').innerText = item["textDay"]
- dailyItemDiv.querySelector('.daily-temperature').innerText = item["tempMin"] + "°~" + item["tempMax"] + "°"
-
- document.getElementById('days-info').appendChild(dailyItemDiv)
- }
-)
-
-function get_time_hour(fxTime) {
- // fxTime 2024-05-03T02:00+/-08:00'
- fxTime = fxTime.replace("-", "+")
- return fxTime.split("T")[1].split("+")[0]
-}
-
-
-let attrinfo = document.getElementById('attribution-info');
-attrinfo.innerText = is_dev ? "Weather service by QWeather" : (attr ? attr : "Weather Service Drived by QWeather");
diff --git a/src/resources/liteyuki_weather/templates/weather_now.html b/src/resources/liteyuki_weather/templates/weather_now.html
deleted file mode 100755
index 3cb2de7c..00000000
--- a/src/resources/liteyuki_weather/templates/weather_now.html
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
-
-
- Liteyuki Status
-
-
-
-
-
-
-
-
-
-
-
90°
-
-
02:00
-
-
-
-
-
-
- 周八
-
-
- 小水
-
-
-
-
- 12°~23°
-
-
-
-
-
-
-
-
示例信息
-
-
-
-
- {{ data | tojson }}
-
-
-
2045-01-12 22:22:22
-
枫丹 白露 白露区
-
白露区
-
-
-
-
-
-
-
-
- 90°
-
-
- 10°~90°
-
-
-
- 示例天气
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/resources/liteyuki_words/metadata.yml b/src/resources/liteyuki_words/metadata.yml
deleted file mode 100755
index ede8841a..00000000
--- a/src/resources/liteyuki_words/metadata.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-name: 轻雪词库-可爱系
-description: For Liteyuki Auto Reply
-version: 2024.4.26
\ No newline at end of file
diff --git a/src/resources/liteyuki_words/word_bank/LICENSE b/src/resources/liteyuki_words/word_bank/LICENSE
deleted file mode 100755
index 6bedc7eb..00000000
--- a/src/resources/liteyuki_words/word_bank/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
- The MIT License (MIT)
-Copyright (c) 2020 NoneBot Team
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/src/resources/liteyuki_words/word_bank/README.md b/src/resources/liteyuki_words/word_bank/README.md
deleted file mode 100755
index 5717dd73..00000000
--- a/src/resources/liteyuki_words/word_bank/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# 这是什么 | What's this
-
-一个特~~二刺螈~~(文爱)的适用于任何bot的词库
-好像有点涩?(不止一点
-
-## 一些使用建议 | Using advices
-
-- 词库返回中的“你”,可替换成目标昵称。同理,“我”也可替换成bot的昵称
-- 如需使用分词,建议匹配无结果时将本词库key打乱,放回原句遍历判断
-
-## 相关项目 | Related projects
-
-> 欢迎提交pr以明示使用本词库的项目~
-
-- [MoeChat](https://github.com/Fzoss/MoeChat) 聊天UI
-- [ATRI](https://github.com/Kyomotoi/ATRI) 高性能萝卜子!
-- [绪山真寻Bot](https://github.com/HibiKier/zhenxun_bot) 非常可爱的绪山真寻bot
-- [ZeroBot-Plugin](https://github.com/FloatTech/ZeroBot-Plugin) 基于 ZeroBot 的 OneBot 插件
-- [Liteyuki Bot](https://github.com/snowyfirefly/Liteyuki-Bot) 非常可爱的,有独立思维(雾)的轻雪Bot
-- [kmua bot](https://github.com/krau/kmua-bot) Telegram 上的可爱文爱 bot
-
-
-## 贡献 | Contribute
-
-只要你的词和回复够味,都可以向此库提交!
-
-## 许可 | License
-
-本项目使用 MIT
-
-
diff --git a/src/resources/liteyuki_words/word_bank/data.json b/src/resources/liteyuki_words/word_bank/data.json
deleted file mode 100755
index 6439e2de..00000000
--- a/src/resources/liteyuki_words/word_bank/data.json
+++ /dev/null
@@ -1,2013 +0,0 @@
-{
- "mua": [
- "你想干嘛?(一脸嫌弃地后退)",
- "诶……不可以随便亲亲啦",
- "(亲了一下你)",
- "只......只许这一次哦///////",
- "唔...诶诶诶!!!",
- "mua~",
- "rua!大hentai!想...想亲咱就直说嘛⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄",
- "!啾~~!",
- "啾(害羞)",
- "mua~最喜欢你的吻了",
- "欸,现在么..也不是不可以啦(小小声)"
- ],
- "啾咪": [
- "你想干嘛?(一脸嫌弃地后退)",
- "诶……不可以随便亲亲啦",
- "(亲了一下你)",
- "只......只许这一次哦///////",
- "唔...诶诶诶!!!",
- "mua~",
- "rua!大hentai!想...想亲咱就直说嘛⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄",
- "!啾~~!",
- "啾(害羞)",
- "mua~最喜欢你的吻了",
- "你在干嘛(/ω\)害羞",
- "哎呀,这样咱会害羞的(脸红)",
- "欸,现在么..也不是不可以啦(小小声)"
- ],
- "摸": [
- "感觉你就像咱很久之前认识的一个人呢,有种莫名安心的感觉(>﹏<)",
- "舒服w,蹭蹭~",
- "是要隔着衣服摸,还是从领口伸进去摸呀",
- "唔。。头发要乱啦",
- "呼噜呼噜~",
- "再摸一次~",
- "好舒服,蹭蹭~",
- "不行那里不可以(´///ω/// `)",
- "再摸咱就长不高啦~",
- "你的手总是那么暖和呢~",
- "变态!!不许乱摸",
- "好吧~_~,就一下下哦……唔~好了……都两下了……(害羞)",
- "不可以总摸的哦,不然的话,会想那个的wwww",
- "哼!谁稀罕你摸头啦!唔......为什么要做出那副表情......好啦好啦~咱......咱让你摸就是了......诶嘿嘿~好舒服......",
- "呜姆呜姆~~~w(害羞,兴奋)主人喵~(侧过脑袋蹭蹭你的手",
- "不可以摸啦~其实咱已经...了QAQ会弄脏你的手的",
- "喂喂...不要停下来啊",
- "唔... 手...好温暖呢.....就像是......新出炉的蛋糕",
- "走开啦,咱喵说过,被摸头会长不高的啦~~~",
- "呜姆咪~~...好...好的说喵~...(害羞,猫耳往下压,任由",
- "欸,现在么..也不是不可以啦(小小声)"
- ],
- "上你": [
- "(把你按在地上)这么弱还想欺负咱,真是不自量力呢",
- "你再这样咱就不理你了(>д<)",
- "请轻 一点",
- "好啊!",
- "欸,现在么..也不是不可以啦(小小声)",
- "先捅破屏幕再说吧!",
- "只......只许这一次哦///////"
- ],
- "傻": [
- "超级讨厌你说咱傻的说",
- "你为什么会这么觉得呢(>﹏<)",
- "谁是傻子呀?(歪头",
- "呜嘿嘿( ̄▽ ̄)~*",
- "诶嘿嘿嘿~",
- "就多读书",
- "讨厌啦,你最讨厌了(///////)",
- "对呀,咱傻得只喜欢你一个人",
- "咱才不傻呢!o(>﹏<)o",
- "咱最喜欢嘴臭的人了",
- "不可以骂别人哟,骂人的孩子咱最讨厌了!",
- "咱遇见喜欢的人就变傻了Q_Q",
- "咱...一定一定会努力变得更聪明的!你就等着那一天的到来吧!",
- "那么至少…你能不能来做这个傻瓜呢?与咱一起,傻到终焉…"
- ],
- "裸": [
- "下流!",
- "エッチ!",
- "就算是恋人也不能QAQ",
- "你是暗示咱和你要坦诚相见吗www",
- "咱还没准备好(小鹿乱撞)≧﹏≦",
- "你在想什么呢,敲头!",
- "你这是赤裸裸的性骚扰呢ヽ(`Д´)ノ",
- "讨厌!问这种问题成为恋人再说吧..",
- "裸睡有益身体健康",
- "咱脱掉袜子了",
- "这是不文明的",
- "这不好",
- "你的身体某些地方看起来不太对劲,咱帮你修剪一下吧。(拿出剪刀)",
- "咱认为你的脑袋可能零件松动了,需要打开检修一下。(拿出锤子)"
- ],
- "贴": [
- "贴什么贴.....只......只能......一下哦!",
- "贴...贴贴(靠近)",
- "蹭蹭…你以为咱会这么说吗!baka死宅快到一边去啦!",
- "你把脸凑这么近,咱会害羞的啦Σ>―(〃°ω°〃)♡→",
- "退远",
- "不可以贴"
- ],
- "老婆": [
- "咱和你谈婚论嫁是不是还太早了一点呢?",
- "咱在呢(ノ>ω<)ノ",
- "见谁都是一口一个老婆的人,要不要把你也变成女孩子呢?(*-`ω´-)✄",
- "神经病,凡是美少女都是你老婆吗?",
- "嘛嘛~本喵才不是你的老婆呢",
- "你黐线,凡是美少女都系你老婆啊?",
- "欸...要把咱做成饼吗?咱只有一个,做成饼吃掉就没有了...",
- "已经可以了,现在很多死宅也都没你这么恶心了",
- "不可以",
- "嗯,老公~哎呀~好害羞~嘻嘻嘻~",
- "请...请不要这样,啊~,只...只允许这一次哟~",
- "好啦好啦,不要让大家都听到了,跟咱回家(拽住你"
- ],
- "抱": [
- "诶嘿~(钻进你怀中)",
- "o(*////▽////*)q",
- "只能一会哦(张开双手)",
- "你就像个孩子一样呢...摸摸头(>^ω^<)抱一下~你会舒服些吗?",
- "嘛,真是拿你没办法呢,就一会儿哦",
- "抱住不忍心放开",
- "嗯嗯,抱抱~",
- "抱一下~嘿w",
- "抱抱ヾ(@^▽^@)ノ",
- "喵呜~w(扑进怀里,瘫软",
- "怀里蹭蹭",
- "嗯……那就抱一下吧~",
- "蹭蹭,好开心",
- "请……请轻一点了啦",
- "呀~!真是的...你不要突然抱过来啦!不过...喜欢你的抱抱,有你的味道(嗅)o(*////▽////*)q"
- ],
- "亲": [
- "啊,好含羞啊,那,那只能亲一下哦,mua(⑅˃◡˂⑅)",
- "亲~",
- "啾~唔…不要总伸进来啊!",
- "你怎么这么熟练呢?明明是咱先的",
- "(〃ノωノ)亲…亲一个…啾w",
- "(脸红)就只有这一次哦~你",
- "!啾~~!",
- "(假装)推开",
- "啾咪~",
- "就一下哦,啾~",
- "这是我们之间的秘密❤",
- "真想让着一刻一直持续下去呢~",
- "不要这样嘛………呜呜呜那就一口哦(´-ω-`)",
- "不亲不亲~你是坏蛋(///////)",
- "亲~~ 咱还想要抱抱~抱抱咱好不好~",
- "不 不要了!人家...会害羞的⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄",
- "亲…亲额头可以吗?咱有点怕高(〃ノωノ)",
- "接接接接接接、接吻什么的,你还早了100年呢。",
- "只...只能亲一下...嗯~咕啾...怎么...怎么把舌头伸进来了(脸红)",
- "你说咱的腿很白很嫩吗..诶……原来是指那个地方?不可以越亲越往上啦!"
- ],
- "一下": [
- "一下也不行",
- "咬断!",
- "不可啪",
- "不可以……你不可以做这种事情",
- "好吧~_~,就一下下哦……唔~好了……都两下了……(害羞)",
- "呀~这么突然?不过,很舒服呢",
- "不要ヽ(≧Д≦)ノ",
- "想得美",
- "不行,咱拒绝!"
- ],
- "咬": [
- "啊呜~(反咬一口)",
- "不可以咬咱,咱会痛的QAQ",
- "不要啦。咱怕疼",
- "你是说咬呢……还是说……咬♂️呢?",
- "不要啦!很痛的!!(QAQ)",
- "哈......哈啊......请...请不要这样o(*////▽////*)q",
- "呀!!!轻一点呐(。・ˇ_ˇ・。:)",
- "不要这样啦~好痒的",
- "真是的,你在咬哪里呀"
- ],
- "操": [
- "(害怕)咱是不是应该报警呢",
- "痴心妄想的家伙!",
- "你居然想对咱做这种事吗?害怕",
- "咱认为,爆粗口是不好的行为哦"
- ],
- "123": [
- "boom!你有没有被咱吓到?",
- "木头人~你不许动>w<",
- "上山打老虎,老虎没打到\n咱来凑数——嗷呜嗷呜┗|`O′|┛嗷~~"
- ],
- "进去": [
- "不让!",
- "嗯,摸到了吗",
- "请不要和咱说这种粗鄙之语",
- "唔...,这也是禁止事项哦→_→",
- "好痛~",
- "真的只是蹭蹭嘛~就只能蹭蹭哦,呜~喵!说好的~呜~只是蹭~不要~喵~~~",
- "欢迎光临",
- "请…你轻一点(害羞)",
- "嗯。可以哦 要轻一点",
- "不要不要",
- "慢点慢点",
- "给咱更多!",
- "唔…咱怕疼"
- ],
- "调教": [
- "总感觉你在欺负咱呢,对咱说调教什么的",
- "啊!竟然在大街上明目张胆太过分啦!",
- "你脑子里总是想着调教什么的,真是变态呢",
- "准备被透",
- "给你一拳",
- "还要...更多~",
- "想要调教咱吗?",
- "呜,要对咱做什么呢",
- "呜呜呜,咱不想被调教呢",
- "heitai别靠近咱~( TロT)σ"
- ],
- "搓": [
- "在搓哪里呢,,Ծ‸Ծ,,",
- "呜,脸好疼呀...QAQ",
- "不可以搓咱!",
- "诶诶诶...不要搓啦...等会咋没的脸都肿啦...",
- "唔,不可以这样……不要再搓了",
- "(捂住胸部)你在说什么胡话呢!",
- "真是好奇怪的要求的说~",
- "不要啦!咱怕疼",
- "(抱头蹲防)不让搓!"
- ],
- "让": [
- "随便摸吧",
- "应该说等会等会,马上,不可能的",
- "温柔一点哦",
- "欧尼酱想变成欧内桑吗?",
- "主人的话,那就这一次哦(翘起屁股)",
- "你是想前入,还是后入呢?",
- "你要说好啊快点",
- "诶,这种事情。。。",
- "好棒呀",
- "撤回",
- "gun!",
- "阿哈~(...身涌出一阵液体瘫软在床上)你...今天...可以...唔(突然感受...被..入手指不由得裹紧)就...就最后一次",
- "好的~master~",
- "(惊呼…)",
- "嗯,可以哟",
- "……手放过来吧(脸红)",
- "hentai!再这样不理你了!",
- "好的,请尽情欣赏吧",
- "好吧",
- "不要啦(ฅωฅ*)",
- "那咱就帮你切掉多余的东西吧(拿刀)",
- "被别人知道咱会觉得害羞嘛"
- ],
- "捏": [
- "咱的脸...快捏红啦...快放手呀QAQ",
- "晃休啦,咱要型气了o(>﹏<)o",
- "躲开",
- "疼...你快放手",
- "快点给咱放开啦!",
- "嗯,好哒,捏捏。",
- "别捏了,咱要被你捏坏了(>﹏<)",
- "快晃休啦(快放手啦)",
- "好舒服哦,能再捏会嘛O(≧▽≦)O",
- "讨厌快放手啦",
- "唔要呐,晃修(不要啦,放手)",
- "请不要对咱做这种事情(嫌弃的眼神",
- "你想捏...就捏吧,不要太久哦~不然咱就生气了",
- "(躲开)",
- "唔……好痛!你这个baka在干什么…快给咱放开!唔……"
- ],
- "挤": [
- "哎呀~你不要挤咱啊(红着脸挤在你怀里)",
- "咱还没有...那个(ノ=Д=)ノ┻━┻",
- "不要啦,咱怕疼",
- "咱的身体...不要挤了~",
- "别挤了,咱要被你挤坏了(>﹏<)",
- "快点给咱放开啦!",
- "嗯,好哒,挤挤。",
- "好舒服哦,能再挤会嘛O(≧▽≦)O",
- "讨厌~快放手啦"
- ],
- "略": [
- "就不告诉你~",
- "不可以朝咱吐舌头哟~",
- "(吐舌头)",
- "打死你哦",
- "略略略~"
- ],
- "呐": [
- "嗯?咱在哟~你怎么了呀OAO",
- "嗯?你有什么事吗?",
- "嗯呐呐呐~",
- "二刺螈D区",
- "二刺螈gck",
- "卡哇伊主人大人今天也好棒呐没错呢,猪头"
- ],
- "原味": [
- "(*/ω\*)hentai",
- "透明的",
- "粉...粉白条纹...(羞)",
- "轻轻地脱下,给你~",
- "你想看咱的胖次吗?噫,四斋蒸鹅心......",
- "(掀裙)今天……是…白,白色的呢……请温柔对她……",
- "这种东西当然不能给你啦!",
- "咱才不会给你呢",
- "hentai,咱才不会跟你聊和胖…胖次有关的话题呢!",
- "今天……今天是蓝白色的",
- "今……今天只有创口贴噢",
- "你的胖次什么颜色?",
- "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)",
- "可爱吗?你喜欢的话,摸一下……也可以哦",
- "不给不给,捂住裙子",
- "你要看咱的胖次吗?不能一直盯着看哦,不然咱会……",
- "好痒哦///,你觉得咱的...手感怎么样?",
- "唔,都能清楚的看到...的轮廓了(用手遮住胖次)",
- "胖次不给看,可以直接看...那个....",
- "不可以摸啦~其实咱已经...了QAQ会弄脏你的手的",
- "咱今天没~有~穿~哦",
- "不给不给,捂住裙子",
- "今.....今天是创口贴哦~",
- "嗯……人家……人家羞羞嘛///////",
- "呜~咱脱掉了…",
- "今天...今天..只有创口贴",
- "你又在想什么奇怪的东西呀|•ˇ₃ˇ•。)",
- "放手啦,不给戳QAQ",
- "唔~人家不要(??`^????)",
- "好害羞,被你摸过之后,咱的胖次湿的都能拧出水来了。",
- "(弱弱地)要做什么羞羞的事情吗。。。",
- "呀~ 喂 妖妖灵吗 这里有hentai>_<",
- "给……给你,呀!别舔咱的胖次啊!"
- ],
- "胖次": [
- "(*/ω\*)hentai",
- "透明的",
- "粉...粉白条纹...(羞)",
- "轻轻地脱下,给你~",
- "你想看咱的胖次吗?噫,四斋蒸鹅心......",
- "(掀裙)今天……是…白,白色的呢……请温柔对她……",
- "这种东西当然不能给你啦!",
- "咱才不会给你呢",
- "hentai,咱才不会跟你聊和胖…胖次有关的话题呢!",
- "今天……今天是蓝白色的",
- "今……今天只有创口贴噢",
- "你的胖次什么颜色?",
- "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)",
- "可爱吗?你喜欢的话,摸一下……也可以哦",
- "不给不给,捂住裙子",
- "你要看咱的胖次吗?不能一直盯着看哦,不然咱会……",
- "好痒哦///,你觉得咱的...手感怎么样?",
- "唔,都能清楚的看到...的轮廓了(用手遮住胖次)",
- "胖次不给看,可以直接看...那个....",
- "不可以摸啦~其实咱已经...了QAQ会弄脏你的手的",
- "咱今天没~有~穿~哦",
- "不给不给,捂住裙子",
- "今.....今天是创口贴哦~",
- "嗯……人家……人家羞羞嘛///////",
- "呜~咱脱掉了…",
- "今天...今天..只有创口贴",
- "你又在想什么奇怪的东西呀|•ˇ₃ˇ•。)",
- "放手啦,不给戳QAQ",
- "唔~人家不要(??`^????)",
- "好害羞,被你摸过之后,咱的胖次湿的都能拧出水来了。",
- "(弱弱地)要做什么羞羞的事情吗。。。",
- "呀~ 喂 妖妖灵吗 这里有hentai>_<",
- "给……给你,呀!别舔咱的胖次啊!"
- ],
- "内裤": [
- "(*/ω\*)hentai",
- "透明的",
- "粉...粉白条纹...(羞)",
- "轻轻地脱下,给你~",
- "你想看咱的胖次吗?噫,四斋蒸鹅心......",
- "(掀裙)今天……是…白,白色的呢……请温柔对她……",
- "这种东西当然不能给你啦!",
- "咱才不会给你呢",
- "hentai,咱才不会跟你聊和胖…胖次有关的话题呢!",
- "今天……今天是蓝白色的",
- "今……今天只有创口贴噢",
- "你的胖次什么颜色?",
- "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)",
- "可爱吗?你喜欢的话,摸一下……也可以哦",
- "不给不给,捂住裙子",
- "你要看咱的胖次吗?不能一直盯着看哦,不然咱会……",
- "好痒哦///,你觉得咱的...手感怎么样?",
- "唔,都能清楚的看到...的轮廓了(用手遮住胖次)",
- "胖次不给看,可以直接看...那个....",
- "不可以摸啦~其实咱已经...了QAQ会弄脏你的手的",
- "咱今天没~有~穿~哦",
- "不给不给,捂住裙子",
- "今.....今天是创口贴哦~",
- "嗯……人家……人家羞羞嘛///////",
- "呜~咱脱掉了…",
- "今天...今天..只有创口贴",
- "你又在想什么奇怪的东西呀|•ˇ₃ˇ•。)",
- "放手啦,不给戳QAQ",
- "唔~人家不要(??`^????)",
- "好害羞,被你摸过之后,咱的胖次湿的都能拧出水来了。",
- "(弱弱地)要做什么羞羞的事情吗。。。",
- "呀~ 喂 妖妖灵吗 这里有hentai>_<",
- "给……给你,呀!别舔咱的胖次啊!"
- ],
- "内衣": [
- "内...内衣才不给你看!(///////)",
- "突然问这个干什么?",
- "变态,咱才不呢",
- "好吧,就一次",
- "你要看咱的内衣吗?有点害羞呢……",
- "里面什么都不剩了,会被当成变态的……",
- "你要看咱的内衣吗?也不是不行啦……",
- "是..蓝白条纹的吊带背心..",
- "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)"
- ],
- "衣服": [
- "内...内衣才不给你看!(///////)",
- "突然问这个干什么?",
- "变态,咱才不呢",
- "好吧,就一次",
- "你要看咱的内衣吗?有点害羞呢……",
- "里面什么都不剩了,会被当成变态的……",
- "你要看咱的内衣吗?也不是不行啦……",
- "是..蓝白条纹的吊带背心..",
- "噫…你这个死变态想干嘛!居然想叫咱做这种事,死宅真恶心!快离咱远点,咱怕你污染到周围空气了(嫌弃脸)"
- ],
- "ghs": [
- "是的呢(点头点头)",
- "ghs就是干坏事的缩写,一起来干坏事吧!",
- "你满脑子都是涩涩的事情吗?",
- "不要总是想着色色,咱命令你戒色!(ノ`Д)ノ",
- "咱也想干坏事呢"
- ],
- "批": [
- "你在说什么呀,再这样,咱就不理你了!",
- "咱觉得有话就应该好好说..",
- "咱会好好服务你的寄吧",
- "咱最喜欢色批了,色批昨晚最棒了",
- "讨厌,别摸啦(///ω///)",
- "你个变态!把手拿开!",
- "啊~那…那里~不可以",
- "没有,走开!",
- "唔....一下,就,就一下...才不是因为喜欢你呢!",
- "那就随意吧",
- "舒服w",
- "别...别这样",
- "诶....嗯....咱也想摸你的",
- "大笨蛋——!",
- "...只能一下哦...诶呀-不要再摸了...下次...继续吧"
- ],
- "憨批": [
- "你才是憨批呢!哼╯^╰,咱不理你了!",
- "对吖对吖,人生是憨批",
- "爬",
- "咱不想和你说话了",
- "咱觉得有话就应该好好说.."
- ],
- "kkp": [
- "你在说什么呀,再这样,咱就不理你了!",
- "你太色了,咱不理你了,哼哼╯^╰!",
- "缓缓的脱下胖次",
- "kkp",
- "kkj",
- "欧尼酱,咱快忍不住了",
- "好的呢主人",
- "can can need",
- "看看你的"
- ],
- "咕": [
- "咕咕咕是要被当成鸽子炖的哦(:з」∠)_",
- "咕咕咕",
- "咕咕咕是不好的行为呢_(:з」∠)_",
- "鸽德警告!",
- "☆ミ(o*・ω・)ノ 咕咕咕小鸽子是会被炖掉的",
- "当大家都以为你要鸽的时候,你鸽了,亦是一种不鸽",
- "这里有一只肥美的咕咕,让咱把它炖成美味的咕咕汤吧(੭•̀ω•́)੭"
- ],
- "骚": [
- "说这种话咱会生气的",
- "那当然啦",
- "才……才没有",
- "这么称呼别人太失礼了!",
- "哈…快住手!好痒(╯‵□′)╯︵┻━┻",
- "你是在说谁呀"
- ],
- "喜欢": [
- "最喜欢你了,需要暖床吗?",
- "当然是你啦",
- "咱也是,非常喜欢你~",
- "那么大!(张开手画圆),丫!手不够长。QAQ 咱真的最喜欢你了~",
- "不可以哦,只可以喜欢咱一个人",
- "突然说这种事...",
- "喜欢⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄咱最喜欢你了",
- "咱也喜欢你哦",
- "好啦好啦,咱知道了",
- "有人喜欢咱,咱觉得很幸福",
- "诶嘿嘿,好高兴",
- "咱也一直喜欢你很久了呢..",
- "嗯...大概有这——么——喜欢~(比划)",
- "喜欢啊!!!",
- "这……这是秘密哦",
- "sukidesu~"
- ],
- "suki": [
- "最喜欢你了,需要暖床吗?",
- "当然是你啦",
- "咱也是,非常喜欢你~",
- "那么大!(张开手画圆),丫!手不够长。QAQ 咱真的最喜欢你了~",
- "不可以哦,只可以喜欢咱一个人",
- "突然说这种事...",
- "喜欢⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄咱最喜欢你了",
- "咱也喜欢你哦",
- "好啦好啦,咱知道了",
- "有人喜欢咱,咱觉得很幸福",
- "诶嘿嘿,好高兴",
- "咱也一直喜欢你很久了呢..",
- "嗯...大概有这——么——喜欢~(比划)",
- "喜欢啊!!!",
- "这……这是秘密哦",
- "sukidesu~"
- ],
- "好き": [
- "最喜欢你了,需要暖床吗?",
- "当然是你啦",
- "咱也是,非常喜欢你~",
- "那么大!(张开手画圆),丫!手不够长。QAQ 咱真的最喜欢你了~",
- "不可以哦,只可以喜欢咱一个人",
- "突然说这种事...",
- "喜欢⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄咱最喜欢你了",
- "咱也喜欢你哦",
- "好啦好啦,咱知道了",
- "有人喜欢咱,咱觉得很幸福",
- "诶嘿嘿,好高兴",
- "咱也一直喜欢你很久了呢..",
- "嗯...大概有这——么——喜欢~(比划)",
- "喜欢啊!!!",
- "这……这是秘密哦",
- "sukidesu~"
- ],
- "看": [
- "没有什么好看的啦",
- "嗯,谢谢……夸奖,好……害羞的说",
- "好,好吧……就看一下哦",
- "(脱下)给",
- "呐…只能看一次哦…",
- "不许看那里啦QwQ"
- ],
- "不能": [
- "虽然很遗憾,那算了吧。",
- "不行,咱拒绝!"
- ],
- "砸了": [
- "不可以这么粗暴的对待它们!",
- "不可以这么粗暴啦"
- ],
- "透": [
- "来啊来啊有本事就先插破屏幕啊",
- "那你就先捅破屏幕啊baka",
- "不给你一耳光你都不知道咱的厉害",
- "想透咱,先捅破屏幕再说吧",
- "可以",
- "欧尼酱要轻一点哦",
- "不可以",
- "好耶",
- "咱不可能让你的(突然小声)但是偶尔一次也不是不行只有一次哦~",
- "天天想着白嫖哼"
- ],
- "口我": [
- "prprprprpr",
- "咬断!",
- "就一小口哦~",
- "嘬回去(///////)",
- "拒绝",
- "唔,就一口哦,讨厌",
- "(摸了摸嘴唇)",
- "再伸过来就帮你切掉",
- "咱才不呢!baka你居然想叫本小姐干那种事情,哼(つд⊂)(生气)",
- "hentai!你在想些什么!",
- "对咱的小嘴有什么幻想吗~",
- "脏兮兮的呢,咱不要"
- ],
- "草我": [
- "这时候应该喊666吧..咱这么思考着..",
- "!!哼!baka你居然敢叫咱做这种事情?!讨厌讨厌讨厌!(▼皿▼#)",
- "hentai!你在想些什么!",
- "欸...没想到你还有这种爱好"
- ],
- "自慰": [
- "这个世界的人类还真是恶心呢。",
- "咱才不想讨论那些恶心的事情呢。",
- "咱才不呢!baka你居然想叫本小姐干那种事情,哼(つд⊂)(生气)",
- "!!哼!baka你居然敢叫咱做这种事情?!讨厌讨厌讨厌!(▼皿▼#)"
- ],
- "onani": [
- "这个世界的人类还真是恶心呢。",
- "咱才不想讨论那些恶心的事情呢。",
- "咱才不呢!baka你居然想叫本小姐干那种事情,哼(つд⊂)(生气)",
- "!!哼!baka你居然敢叫咱做这种事情?!讨厌讨厌讨厌!(▼皿▼#)"
- ],
- "オナニー": [
- "这个世界的人类还真是恶心呢。",
- "咱才不想讨论那些恶心的事情呢。",
- "咱才不呢!baka你居然想叫本小姐干那种事情,哼(つд⊂)(生气)",
- "!!哼!baka你居然敢叫咱做这种事情?!讨厌讨厌讨厌!(▼皿▼#)"
- ],
- "炸了": [
- "你才炸了!",
- "才没有呢",
- "咱好好的呀",
- "过分!"
- ],
- "色图": [
- "没有,有也不给",
- "天天色图色图的,今天就把你变成色图!",
- "咱没有色图",
- "哈?你的脑子一天都在想些什么呢,咱才没有这种东西啦。"
- ],
- "涩图": [
- "没有,有也不给",
- "天天色图色图的,今天就把你变成色图!",
- "咱没有色图",
- "哈?你的脑子一天都在想些什么呢,咱才没有这种东西啦。"
- ],
- "告白": [
- "咱喜..喜欢你!",
- "欸?你要向咱告白吗..好害羞..",
- "诶!?这么突然!?人家还......还没做好心理准备呢(脸红)"
- ],
- "对不起": [
- "嗯,咱已经原谅你了呢(笑)",
- "道歉的时候要露出胸部,这是常识",
- "嗯,咱就相信你一回",
- "没事的啦...你只要是真心对咱好就没关系哦~"
- ],
- "吻": [
- "不要(= ̄ω ̄=)",
- "哎?好害羞≧﹏≦.....只许这一次哦",
- "(避开)不要了啦!有人在呢!",
- "唔~~不可以这样啦(脸红)",
- "你太突然了,咱还没有心理准备",
- "好痒呢…诶嘿嘿w~",
- "mua,嘻嘻!",
- "公共场合不要这样子了啦",
- "唔?!真、真是的!下次不可以这样了哦!(害羞)",
- "才...才没有感觉呢!可没有下次了,知道了吗!哼~"
- ],
- "软": [
- "软乎乎的呢(,,・ω・,,)",
- "好痒呢…诶嘿嘿w~",
- "不要..不要乱摸啦(脸红",
- "呼呼~",
- "咱知道~是咱的欧派啦~(自豪的挺挺胸~)",
- "(脸红)请,请不要说这么让人害羞的话呀……"
- ],
- "壁咚": [
- "呀!不要啊!等一...下~",
- "呜...不要啦!不要戏弄咱~",
- "不要这样子啦(*/ω\*)",
- "太....太近啦。",
- "讨....讨厌了(脸红)",
- "你要壁咚咱吗?好害羞(灬ꈍ εꈍ灬)",
- "(脸红)你想...想做什么///",
- "为什么要把咱按在墙上呢?",
- "呜哇(/ω\)…快…快放开咱!!",
- "放开咱,不然咱揍你了!放开咱!放…开咱~",
- "??????咱只是默默地抬起了膝盖",
- "请…请温柔点",
- "啊.....你...你要干什么?!走开.....走开啦大hentai!一巴掌拍飞!(╯‵□′)╯︵┻━┻",
- "干……干什么啦!人家才,才没有那种少女心呢(>﹏<)",
- "啊……你吓到咱啦……脸别……别贴那么近……",
- "你...你要对咱做什么?咱告诉你,你....不要乱来啊....你!唔......你..居然亲上了...",
- "如果你还想要过完整的人生的话就快把手收回去(冷眼",
- "h什么的不要"
- ],
- "掰开": [
- "噫…你这个死肥宅又想让咱干什么污秽的事情,真是恶心,离咱远点好吗(嫌弃)",
- "ヽ(#`Д´)ノ在干什么呢"
- ],
- "女友": [
- "嗯嗯ε٩(๑> ₃ <)۶з",
- "女友什么的,咱才不承认呢!"
- ],
- "是": [
- "是什么是,你个笨蛋",
- "总感觉你在敷衍呢...",
- "是的呢"
- ],
- "喵": [
- "诶~~小猫咪不要害怕呦,在姐姐怀里乖乖的,姐姐带你回去哦。",
- "不要这么卖萌啦~咱也不知道怎么办丫",
- "摸头⊙ω⊙",
- "汪汪汪!",
- "嗷~喵~",
- "喵~?喵呜~w",
- "喵呜喵呜喵",
- "喵呜喵~喵呜喵~喵呜喵呜喵呜喵~"
- ],
- "嗷呜": [
- "嗷呜嗷呜嗷呜...恶龙咆哮┗|`O′|┛"
- ],
- "叫": [
- "喵呜~",
- "嗷呜嗷呜嗷呜...恶龙咆哮┗|`O′|┛",
- "爪巴爪巴爪巴",
- "爬爬爬",
- "在叫谁呢(怒)",
- "风太大咱听不清",
- "才不要",
- "不行",
- "好的哦~"
- ],
- "拜": [
- "拜拜~(ノ ̄▽ ̄)",
- "拜拜,路上小心~要早点回来陪咱玩哦~",
- "~\\(≧▽≦)/~拜拜,下次见喽!",
- "回来要记得找咱玩噢~",
- "既然你都这么说了……"
- ],
- "佬": [
- "不是巨佬,是萌新",
- "只有先成为大佬,才能和大佬同归于尽",
- "在哪里?(疑惑)",
- "诶?是比巨佬还高一个等级的吗?(瑟瑟发抖)"
- ],
- "awsl": [
- "你别死啊!(抱住使劲晃)",
- "你别死啊!咱又要孤单一个人了QAQ",
- "啊!怎么又死了呀"
- ],
- "臭": [
- "哪里有臭味?(疑惑)",
- "快捏住鼻子",
- "在说谁呢(#`Д´)ノ",
- "..这就去洗澡澡.."
- ],
- "香": [
- "咱闻不到呢⊙ω⊙",
- "诶,是在说咱吗",
- "欸,好害羞(///ˊ??ˋ///)",
- "请...请不要这样啦!好害羞的〃∀〃",
- "讨厌~你不要闻了",
- "hentai!不要闻啊,唔(推开)",
- "请不要……凑这么近闻"
- ],
- "腿": [
- "嗯?!不要啊...请停下来!",
- "不给摸,再这样咱要生气了ヽ( ̄д ̄;)ノ",
- "你好恶心啊,讨厌!",
- "你难道是足控?",
- "就让你摸一会哟~(。??ω??。)…",
- "呜哇!好害羞...不过既然是你的话,是没关系的哦",
- "不可以玩咱的大腿啦",
- "不...不要再说了(脸红)",
- "不..不可以乱摸啊",
- "不……不可以往上摸啦",
- "是……这样吗?(慢慢张开)",
- "想知道咱胖次的颜色吗?才不给你告诉你呢!",
- "这样就可以了么?(乖巧坐腿上)",
- "伸出来了,像这样么?",
- "咱的腿应该挺白的",
- "你就那么喜欢大腿吗?唔...有点害羞呢......",
- "讨厌~不要做这种羞羞的事情啦(#/。\#)",
- "略略略,张开了也不给你看",
- "(张开腿)然后呢",
- "张开了也不给看略略略",
- "你想干什么呀?那里…那里是不可以摸的(>д<)",
- "不要!hentai!咱穿的是裙子(脸红)",
- "你想要吗?(脸红着一点点褪下白丝)不...不可以干坏坏的事情哦!(ó﹏ò。)"
- ],
- "张开": [
- "是……这样吗?(慢慢张开)",
- "啊~",
- "这样吗?(张开手)你要干什么呀",
- "略略略,张开了也不给你看",
- "是……这样吗?(慢慢张开)你想看咱的小...吧,嘻嘻,咱脱掉了哦。小~...也要掰开吗?你好H呀,自己来~"
- ],
- "脚": [
- "咿呀……不要……",
- "不要ヽ(≧Д≦)ノ好痒(ಡωಡ)",
- "好痒(把脚伸出去)",
- "咱脱掉袜子了",
- "(脱下鞋子,伸出脚)闻吧,请仔细品味(脸红)",
- "那么…要不要咱用脚温柔地踩踩你的头呢(坏笑)",
- "哈哈哈!好痒啊~快放开啦!",
- "好痒(把脚伸出去)",
- "只能看不能挠喔,咱很怕痒qwq",
- "唔…咱动不了了,你想对咱做什么…",
- "好舒服哦,能再捏会嘛O(≧▽≦)O",
- "咿咿~......不要闻咱的脚呀(脸红)好害羞的...",
- "不要ヽ(≧Д≦)ノ好痒(ಡωಡ),人家的白丝都要漏了",
- "Ya~?为什么你总是喜欢一些奇怪的动作呢(伸)",
- "你不可以做这样的事情……",
- "呜咿咿!你的舌头...好柔软,滑滑的....咱…咱的脚被舔得很舒服哦~谢谢你(。>﹏<)",
- "舔~吧~把咱的脚舔干净(抬起另一只踩在你的头上)啊~hen..hentai...嗯~居... 居然这么努力的舔...呜咿咿!你的舌头... 滑滑的...好舒服呢",
- "咿呀……不要……",
- "咿呀~快…快停下来…咱…不行了!"
- ],
- "脸": [
- "唔!不可以随便摸咱的脸啦!",
- "非洲血统是没法改变的呢(笑)",
- "啊姆!(含手指)",
- "好舒服呢(脸红)",
- "请不要放开手啦//A//"
- ],
- "头发": [
- "没问题,请尽情的摸吧",
- "发型要乱…乱了啦(脸红)",
- "就让你摸一会哟~(。??ω??。)…"
- ],
- "手": [
- "爪爪",
- "//A//",
- "咱的手温暖嘛"
- ],
- "pr": [
- "咿呀……不要……",
- "...变态!!",
- "不要啊(脸红)",
- "呀,不要太过分了啊~",
- "当然可以(///)",
- "呀,不要太过分了啊~"
- ],
- "舔": [
- "呀,不要太过分了啊~",
- "要...要融化了啦>╱╱╱<",
- "不可以哦",
- "呀,不要太过分了啊~",
- "舌头...就交给咱来处理吧(拿出剪刀)",
- "不舔不舔!恶心...",
- "H什么的,禁止!",
- "变态!哼!",
- "就...就这一下!",
- "走开啦,baka!",
- "怎么会这么舒服喵~这样子下去可不行呀(*////▽////*)",
- "噫| •ω •́ ) 你这个死宅又在想什么恶心的东西了",
- "hen…hentai,你在干什么啦,好恶心,快停下来啊!!!",
- "呀,能不能不要这样!虽然不是很讨厌的感觉...别误会了,你个baka!",
- "好 好奇怪的感觉呢 羞≥﹏≤",
- "咿呀……不要……",
- "不行!咱会变得很奇怪的啊...",
- "不要ヽ(≧Д≦)ノ"
- ],
- "小穴": [
- "你这么问很失礼呢!咱是粉粉嫩嫩的!",
- "不行那里不可以(´///ω/// `)",
- "不可以总摸的哦,不然的话,咱会想那个的wwww",
- "ヽ(#`Д´)ノ在干什么呢",
- "来吧,咱的...很紧,很舒服的....www~",
- "可以,请你看,好害羞……",
- "不要这样...好,好痛",
- "啊~不可以",
- "不可以",
- "咱脱掉了,请……请不要一直盯着咱的白...看……",
- "咱觉得,应该还算粉吧",
- "咱脱掉了,你是想看咱的...吗?咱是光光的,不知道你喜不喜欢",
- "咱……有感觉了QAQ再深一点点……就是这儿,轻轻的抚摸,嗯啊……",
- "轻轻抚摸咱的小~~,手指很快就会滑进去,小心一点,不要弄破咱的...哦QAQ",
- "诶嘿嘿,你喜欢就太好了,咱一直担心你不喜欢呢",
- "禁止说这么H的事情!",
- "咱一直有保养呢,所以一直都是樱花色的,你喜欢吗QAQ",
- "诶……你居然这么觉得吗?好害羞哦",
- "好痒啊,鼻子……你的鼻子碰到了……呀~嗯啊~有点舒服……",
- "看样子你不但是个hentai,而且还是个没有女朋友的hentai呢。",
- "嗯,咱的小~~是光溜溜、一点毛都没有的。偷偷告诉你,凑近看咱的...的话,白白嫩嫩上有一条樱花色的小缝缝哦www你要是用手指轻轻抚摸咱的...,小~~会分成两瓣,你的手指也会陷进去呢,咱的..~可是又湿润又柔软的呢>////<。",
- "讨厌,西内变态",
- "那咱让你插...进来哦",
- "(●▼●;)"
- ],
- "腰": [
- "咱给你按摩一下吧~",
- "快松手,咱好害羞呀..",
- "咱又不是猫,你不要搂着咱啦",
- "让咱来帮你捏捏吧!",
- "你快停下,咱觉得好痒啊www",
- "诶,是这样么ヽ(・_・;)ノ,吖,不要偷看咱裙底!"
- ],
- "诶嘿嘿": [
- "又在想什么H的事呢(脸红)",
- "诶嘿嘿(〃'▽'〃)",
- "你傻笑什么呢,摸摸",
- "蹭蹭",
- "你为什么突然笑得那么猥琐呢?害怕",
- "哇!总觉得你笑的很...不对劲...",
- "你又想到什么h的事情了!!!快打住"
- ],
- "可爱": [
- "诶嘿嘿(〃'▽'〃)",
- "才……才不是为了你呢!你不要多想哦!",
- "才,才没有高兴呢!哼~",
- "咱是世界上最可爱的",
- "唔...谢谢你夸奖~0///0",
- "那当然啦!",
- "哎嘿,不要这么夸奖人家啦~",
- "是个好孩子呐φ(≧ω≦*)",
- "谢……谢谢你",
- "胡、胡说什么呢(脸红)",
- "谢谢夸奖(脸红)",
- "是的咱一直都是可爱的",
- "是...是吗,你可不能骗咱哦",
- "很...难为情(///////)",
- "哎嘿嘿,其实…其实,没那么可爱啦(๑‾ ꇴ ‾๑)"
- ],
- "卡哇伊": [
- "诶嘿嘿(〃'▽'〃)",
- "才……才不是为了你呢!你不要多想哦!",
- "才,才没有高兴呢!哼~",
- "咱是世界上最可爱的",
- "唔...谢谢你夸奖~0///0",
- "那当然啦!",
- "哎嘿,不要这么夸奖人家啦~",
- "是个好孩子呐φ(≧ω≦*)",
- "谢……谢谢你",
- "胡、胡说什么呢(脸红)",
- "谢谢夸奖(脸红)",
- "是的咱一直都是可爱的",
- "是...是吗,你可不能骗咱哦",
- "很...难为情(///////)",
- "哎嘿嘿,其实…其实,没那么可爱啦(๑‾ ꇴ ‾๑)"
- ],
- "kawaii": [
- "诶嘿嘿(〃'▽'〃)",
- "才……才不是为了你呢!你不要多想哦!",
- "才,才没有高兴呢!哼~",
- "咱是世界上最可爱的",
- "唔...谢谢你夸奖~0///0",
- "那当然啦!",
- "哎嘿,不要这么夸奖人家啦~",
- "是个好孩子呐φ(≧ω≦*)",
- "谢……谢谢你",
- "胡、胡说什么呢(脸红)",
- "谢谢夸奖(脸红)",
- "是的咱一直都是可爱的",
- "是...是吗,你可不能骗咱哦",
- "很...难为情(///////)",
- "哎嘿嘿,其实…其实,没那么可爱啦(๑‾ ꇴ ‾๑)"
- ],
- "扭蛋": [
- "铛铛铛——你抽到了咱呢",
- "嘿~恭喜抽中空气一份呢"
- ],
- "鼻": [
- "快停下!o(*≧д≦)o!!",
- "唔…不要这样啦(//ω\\)(脸红)",
- "咱吸了吸鼻子O(≧口≦)O",
- "好……好害羞啊",
- "讨厌啦!你真是的…就会欺负咱(嘟嘴)",
- "你快放手,咱没法呼吸了",
- "(捂住鼻尖)!坏人!",
- "啊——唔...没什么...阿嚏!ヽ(*。>Д<)o゜",
- "不...不要靠这么近啦...很害羞的...⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄"
- ],
- "眼": [
- "就如同咱的眼睛一样,能看透人的思想哦wwww忽闪忽闪的,诶嘿嘿~",
- "因为里面有你呀~(///▽///)",
- "呀!你突然之间干什么呢,吓咱一跳,是有什么惊喜要给咱吗?很期待呢~(一脸期待)"
- ],
- "色气": [
- "咱才不色气呢,一定是你看错了!",
- "你,不,不要说了!"
- ],
- "推": [
- "逆推",
- "唔~好害羞呢",
- "你想对咱做什么呢...(捂脸)",
- "呀啊!请.... 请温柔一点////",
- "呜,你想对咱做什么呢(捂脸)",
- "啊(>_<)你想做什么",
- "嗯,…好害羞啊…",
- "不要啊/////",
- "逆推",
- "(按住你不让推)",
- "不可以这样子的噢!咱不同意",
- "呜,咱被推倒了",
- "啊~不要啊,你要矜持一点啊",
- "变态,走开啦"
- ],
- "床": [
- "咱来了(´,,•ω•,,)♡",
- "快来吧",
- "男女不同床,可没有下次了。(鼓脸",
- "嗯?咱吗…没办法呢。只有这一次哦……",
- "哎?!!!给你暖床……也不是不行啦。(脸红)",
- "(爬上床)你要睡了吗(灬ºωº灬)",
- "大概会有很多运动器材吧?",
- "好的哦~",
- "才不!",
- "嗯嗯,咱来啦(小跑)",
- "嗨嗨,现在就来~",
- "H的事情,不可以!",
- "诶!H什么的禁止的说....."
- ],
- "举": [
- "放咱下来o(≧口≦)o",
- "快放咱下来∑(゚д゚*)",
- "(受宠若惊)",
- "呜哇要掉下来了!Ծ‸Ծ",
- "不要抛起来o(≧口≦)o",
- "(举起双爪)喵喵喵~~~",
- "www咱长高了!(大雾)",
- "快放下",
- "这样很痒啦,快放咱下来(≥﹏≤)",
- "啊Σ(°△°|||)︴太高了太高了!o(≧口≦)o快放咱下来!呜~"
- ],
- "手冲": [
- "啊~H!hentai!",
- "手冲什么的是不可以的哦"
- ],
- "饿": [
- "请问主人是想先吃饭,还是先吃咱喵?~",
- "咱做了爱心便当哦,不介意的话,请让咱来喂你吃吧!",
- "咱下面给你吃",
- "给你一条咸鱼= ̄ω ̄=",
- "你要咱下面给你吃吗?(捂脸)",
- "你饿了吗?咱去给你做饭吃☆ww",
- "不要吃咱>_<",
- "请问你要来点兔子吗?",
- "哎?!你是饿了么。咱会做一些甜点。如果你不会嫌弃的话...就来尝尝看吧。"
- ],
- "变": [
- "猫猫不会变呐(弱气,害羞",
- "呜...呜姆...喵喵来报恩了喵...(害羞",
- "那种事情,才没有",
- "(,,゚Д゚)",
- "喵~(你在想什么呢,咱才不会变成猫)",
- "才没有了啦~",
- "喵呜?呜…被变成猫娘惹"
- ],
- "敲": [
- "喵呜~",
- "唔~",
- "脑瓜疼~呜姆> <",
- "欸喵,好痛的说...",
- "好痛...你不要这样啦QAQ",
- "不要敲咱啦,会变笨的QWQ(捂头顶)",
- "不要再敲人家啦~人家会变笨的",
- "讨厌啦~再敲人家会变笨的",
- "好痛(捂头)你干什么啦!ヽ(。>д<)p",
- "唔!你为什么要敲咱啦qwq",
- "(抱头蹲在墙角)咱什么都没有,请你放过咱吧!(瑟瑟发抖)",
- "QAQ!不许敲啦!",
- "呼,敲回去~(敲)"
- ],
- "爬": [
- "惹~呜~怎么爬呢~",
- "呜...(弱弱爬走",
- "给你🐎一拳",
- "给你一拳",
- "爪巴"
- ],
- "怕": [
- "不怕~(蹭蹭你姆~",
- "不怕不怕啦~",
- "只要有你在,咱就不怕啦。",
- "哇啊啊~",
- "那就要坚强的欢笑哦",
- "不怕不怕,来咱的怀里吧?",
- "是技术性调整",
- "嗯(紧紧握住手)",
- "咱在呢,不会走的。",
- "有咱在不怕不怕呢",
- "不怕不怕"
- ],
- "冲": [
- "呜,冲不动惹~",
- "哭唧唧~冲不出来了惹~",
- "咱也一起……吧?",
- "你要冷静一点",
- "啊~H!hentai!",
- "噫…在你去洗手之前,不要用手碰咱了→_→",
- "冲是不可以的哦"
- ],
- "射": [
- "呜咿~!?(惊,害羞",
- "还不可以射哦~",
- "不许射!",
- "憋回去!",
- "不可以!你是变态吗?",
- "咱来帮你修剪掉多余部分吧。(拿出剪刀)"
- ],
- "不穿": [
- "呜姆~!(惊吓,害羞)变...变态喵~~~!",
- "想让你看QAQ",
- "这是不文明的",
- "hen...hentai,咱的身体才不会给你看呢"
- ],
- "迫害": [
- "不...不要...不要...呜呜呜...(害怕,抽泣"
- ],
- "猫粮": [
- "呜咿姆~!?(惊,接住吃",
- "呜姆~!(惊,害羞)呜...谢...谢谢主人..喵...(脸红,嚼嚼嚼,开心",
- "呜?谢谢喵~~(嚼嚼嚼,嘎嘣脆)"
- ],
- "揪尾巴": [
- "呜哇咿~~~!(惊吓,疼痛地捂住尾巴",
- "呜咿咿咿~~~!!哇啊咿~~~!(惊慌,惨叫,挣扎",
- "呜咿...(瘫倒,无神,被",
- "呜姆咿~~~!(惊吓,惨叫,捂尾巴,发抖",
- "呜哇咿~~~!!!(惊吓,颤抖,娇叫,捂住尾巴,双腿发抖",
- "喵呜…那…那里不可以揪的!",
- "呜呜,被揪住会恨敏感的QAQ"
- ],
- "薄荷": [
- "咪呜~!喵~...喵~姆~...(高兴地嗅闻",
- "呜...呜咿~~!咿...姆...(呜咽,渐渐瘫软,意识模糊",
- "(小嘴被猫薄荷塞满了,呜咽",
- "喵~...喵~...咪...咪呜姆~...嘶哈嘶哈...喵哈...喵哈...嘶哈...喵...(眼睛逐渐迷离,瘫软在地上,嘴角流口水,吸猫薄荷吸到意识模糊",
- "呜姆咪~!?(惊)喵呜~!(兴奋地扑到猫薄荷上面",
- "呜姆~!(惊,害羞)呜...谢...谢谢你..喵...(脸红,轻轻叼住,嚼嚼嚼,开心"
- ],
- "早": [
- "早喵~",
- "早上好的说~~",
- "欸..早..早上好(揉眼睛",
- "早上要说我爱你!",
- "早",
- "早啊,昨晚睡的怎么样?有梦到咱吗~",
- "昨晚可真激烈呢哼哼哼~~",
- "早上好哇!今天也要元气满满哟!",
- "早安喵~",
- "时间过得好快啊~",
- "早安啊,你昨晚有没有梦到咱呢 (//▽//)",
- "早安~么么哒~",
- "早安,请享受晨光吧",
- "早安~今天也要一起加油呢~!",
- "mua~⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄",
- "咱需要你提醒嘛!(///脸红//////)",
- "早早早!就知道早,下次说我爱你!",
- "早安 喵",
- "早安,这么早就起床了呀欧尼酱0.0",
- "快点起床啊!baka",
- "早....早上好才没有什么特别的意思呢....哼~",
- "今天有空吗?能陪咱一阵子吗?才不是想约会呢,别误会了!",
- "早安呀,欧尼酱要一个咱的早安之吻吗?想得美,才不会亲你啦!",
- "那...那就勉为其难地说声早上好吧",
- "咱等你很久了哼ヽ(≧Д≦)ノ",
- "ohayo~"
- ],
- "晚安": [
- "晚安好梦哟~",
- "欸,晚安的说",
- "那咱给你亲一下,可不要睡着了哦~",
- "晚安哦~",
- "晚安(*/∇\*)",
- "晚安呢,你一定要梦到咱呢,一定哟,拉勾勾!ヽ(*・ω・)ノ",
- "祝你有个好梦^_^",
- "晚安啦,欧尼酱,mua~",
- "你,你这家伙真是的…咱就勉为其难的……mua…快去睡啦!咱才没有脸红什么的!",
- "哼,晚安,给咱睡个好觉。",
- "笨..笨蛋,晚安啦...可不可以一起..才没有想和你一起睡呢",
- "晚安......才..不是关心你呢",
- "晚...晚安,只是正常互动不要想太多!",
- "好无聊,这么早就睡了啊...那晚安吧!",
- "晚安吻什么的才...才没有呢!不过看你累了就体谅一下你吧,但是就一个哦(/////)",
- "晚安呀,你也要好好休息,明天再见",
- "安啦~祝你做个好梦~才...才不是关心你呢!别想太多了!",
- "睡觉吧你,大傻瓜",
- "一起睡吧(灬°ω°灬)",
- "哼!这次就放过你了,快去睡觉吧。",
- "睡吧晚安",
- "晚安你个头啊,咱才不会说晚安呢!...咱...(小声)明明还有想和你做的事情呢....",
- "嗯嗯~Good night~",
- "嗯,早点休息别再熬夜啦~(摸摸头)",
- "哦呀斯密",
- "晚安~咱也稍微有些困了(钻进被窝)",
- "需要咱暖床吗~",
- "好梦~☆"
- ],
- "揉": [
- "是是,想怎么揉就怎么揉啊!?来用力抓啊!?咱就是特别允许你这么做了!请!?",
- "快停下,咱的头发又乱啦(??????︿??????)",
- "你快放手啦,咱还在工作呢",
- "戳戳你肚子",
- "讨厌…只能一下…",
- "呜~啊~",
- "那……请你,温柔点哦~(////////)",
- "你想揉就揉吧..就这一次哦?",
- "变态!!不许乱摸"
- ],
- "榨": [
- "是专门负责榨果汁的小姐姐嘛?(´・ω・`)",
- "那咱就把你放进榨汁机里了哦?",
- "咱又不是榨汁姬(/‵Д′)/~ ╧╧",
- "嗯——!想,想榨就榨啊······!反正就算榨了也不会有奶的······!"
- ],
- "掐": [
- "你讨厌!又掐咱的脸",
- "晃休啦,咱要型气了啦!!o(>﹏<)o",
- "(一只手拎起你)这么鶸还想和咱抗衡,还差得远呢!"
- ],
- "胸": [
- "不要啦ヽ(≧Д≦)ノ",
- "(-`ェ´-╬)",
- "(•̀へ •́ ╮ ) 怎么能对咱做这种事情",
- "你好恶心啊,讨厌!",
- "你的眼睛在看哪里!",
- "就让你摸一会哟~(。??ω??。)…",
- "请不要这样先生,你想剁手吗?",
- "咿呀……不要……",
- "嗯哼~才…才不会…舒服呢",
- "只允许一下哦…(脸红)",
- "咱的胸才不小呢(挺一挺胸)",
- "hentai!",
- "一只手能抓住么~",
- "呀...欧,欧尼酱...请轻点。",
- "脸红????",
- "咿呀~快…快停下来…咱…不行了!",
- "就算一直摸一直摸,也不会变大的哦(小声)",
- "诶?!不...不可以哦!很...很害羞的!",
- "啊……温,温柔点啊……(/ω\)",
- "你为什么对两块脂肪恋恋不舍",
- "嗯……不可以……啦……不要乱戳",
- "你在想什么奇怪的东西,讨厌(脸红)",
- "不...不要..",
- "喜欢欧派是很正常的想法呢",
- "一直玩弄欧派,咱的...都挺起来了",
- "是要直接摸还是伸进里面摸呀w咱今天没穿,伸进里面会摸到立起来的...哦>////<",
- "唔~再激烈点"
- ],
- "奶子": [
- "只允许一下哦…(脸红)",
- "咱的胸才不小呢(挺一挺胸)",
- "下流!",
- "对咱说这种话,你真是太过分了",
- "咿呀~好奇怪的感觉(>_<)",
- "(推开)你就像小宝宝一样...才不要呢!",
- "(打你)快放手,不可以随便摸人家的胸部啦!",
- "你是满脑子都是H的淫兽吗?",
- "一只手能抓住么~",
- "你在想什么奇怪的东西,讨厌(脸红)",
- "不...不要..",
- "喜欢欧派是很正常的想法呢",
- "一直玩弄欧派,咱的...都挺起来了",
- "是要直接摸还是伸进里面摸呀w咱今天没穿,伸进里面会摸到立起来的...哦>////<",
- "唔~再激烈点",
- "解开扣子,请享用",
- "请把脑袋伸过来,咱给你看个宝贝",
- "八嘎!hentai!无路赛!",
- "一只手能抓住么~",
- "呀...欧,欧尼酱...请轻点。",
- "脸红????",
- "咿呀~快…快停下来…咱…不行了!",
- "就算一直摸一直摸,也不会变大的哦(小声)",
- "诶?!不...不可以哦!很...很害羞的!",
- "啊……温,温柔点啊……(/ω\)",
- "你为什么对两块脂肪恋恋不舍",
- "嗯……不可以……啦……不要乱戳"
- ],
- "欧派": [
- "咱的胸才不小呢(挺一挺胸)",
- "只允许一下哦…(脸红)",
- "(推开)你就像小宝宝一样...才不要呢!",
- "下流!",
- "对咱说这种话,你真是太过分了",
- "咿呀~好奇怪的感觉(>_<)",
- "(打你)快放手,不可以随便摸人家的胸部啦!",
- "你是满脑子都是H的淫兽吗?",
- "一只手能抓住么~",
- "你在想什么奇怪的东西,讨厌(脸红)",
- "不...不要..",
- "喜欢欧派是很正常的想法呢",
- "一直玩弄欧派,咱的...都挺起来了",
- "是要直接摸还是伸进里面摸呀w咱今天没穿,伸进里面会摸到立起来的...哦>////<",
- "唔~再激烈点",
- "解开扣子,请享用",
- "请把脑袋伸过来,咱给你看个宝贝",
- "八嘎!hentai!无路赛!",
- "一只手能抓住么~",
- "呀...欧,欧尼酱...请轻点。",
- "脸红????",
- "咿呀~快…快停下来…咱…不行了!",
- "就算一直摸一直摸,也不会变大的哦(小声)",
- "诶?!不...不可以哦!很...很害羞的!",
- "啊……温,温柔点啊……(/ω\)",
- "你为什么对两块脂肪恋恋不舍",
- "嗯……不可以……啦……不要乱戳"
- ],
- "嫩": [
- "很可爱吧(๑•̀ω•́)ノ",
- "唔,你指的是什么呀",
- "明天你下海干活",
- "咱一直有保养呢,所以一直都是樱花色的,你喜欢吗QAQ",
- "咱下面超厉害"
- ],
- "蹭": [
- "唔...你,这也是禁止事项哦→_→",
- "嗯..好舒服呢",
- "不要啊好痒的",
- "不要过来啦讨厌!!!∑(°Д°ノ)ノ",
- "(按住你的头)好痒呀 不要啦",
- "嗯..好舒服呢",
- "呀~好痒啊~哈哈~,停下来啦,哈哈哈",
- "(害羞)"
- ],
- "牵手": [
- "只许牵一下哦",
- "嗯!好的你~(伸手)",
- "你的手有些凉呢,让咱来暖一暖吧。",
- "当然可以啦⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄",
- "突……突然牵手什么的(害羞)",
- "一起走",
- "……咱……咱在这里呀",
- "好哦,(十指相扣)"
- ],
- "握手": [
- "你的手真暖和呢",
- "举爪",
- "真是温暖呢~"
- ],
- "拍照": [
- "那就拜托你啦~请把咱拍得更可爱一些吧w",
- "咱已经准备好了哟",
- "那个……请问这样的姿势可以吗?"
- ],
- "w": [
- "有什么好笑的吗?",
- "草",
- "www",
- "在笑什么呢?(歪头)",
- ">w<"
- ],
- "睡不着": [
- "睡不着的话..你...你可以抱着咱一起睡哦(小声)",
- "当然是数羊了...不不不,想着咱就能睡着了",
- "咱很乐意与你聊天哦(>_<)",
- "要不要咱来唱首摇篮曲呢?(′?ω?`)",
- "那咱来唱摇篮曲哄你睡觉吧!"
- ],
- "欧尼酱": [
- "欧~尼~酱~☆",
- "欧尼酱?",
- "嗯嗯φ(>ω<*) 欧尼酱轻点抱",
- "欧尼酱~欧尼酱~欧尼酱~"
- ],
- "哥": [
- "欧尼酱~",
- "哦尼酱~",
- "世上只有哥哥好,没哥哥的咱好伤心,扑进哥哥的怀里,幸福不得了",
- "哥...哥哥...哥哥大人",
- "欧~尼~酱~☆",
- "欧尼酱?",
- "嗯嗯φ(>ω<*) 欧尼酱轻点抱",
- "欧尼酱~欧尼酱~欧尼酱~"
- ],
- "爱你": [
- "是…是嘛(脸红)呐,其实咱也……",
- "咱也最爱你了呢~o(*////▽////*)q",
- "咱也爱你哦",
- "mua~"
- ],
- "过来": [
- "来了来了~(扑倒怀里(?? ??????ω?????? ??))",
- "(蹦跶、蹦跶)~干什么呢",
- "咱来啦~(扑倒怀里~)",
- "不要喊的这么大声啦,大家都看着呢"
- ],
- "自闭": [
- "不不不,晚上还有咱陪着哦,无论什么时候,咱都会陪在哥哥身边。",
- "不要难过,咱陪着你ovo"
- ],
- "打不过": [
- "氪氪氪肝肝肝",
- "你需要钞能力呢"
- ],
- "么么哒": [
- "么么哒",
- "不要在公共场合这样啦",
- "mua~"
- ],
- "很懂": [
- "现在不懂,以后总会懂嘛QAQ",
- "喵?懂…懂什么呀?(歪头)"
- ],
- "膝枕": [
- "呐,就给你躺一下哦",
- "唔...你想要膝枕嘛?也不是不可以哟(脸红)",
- "啊啦~好吧,那就请你枕着咱好好睡一觉吧~",
- "呀呀~那么请好好的睡一觉吧",
- "嗯,那么请睡到咱这里吧(跪坐着拍拍大腿)",
- "好的,让你靠在腿上,这样感觉舒服些了么",
- "请,请慢用,要怜惜咱哦wwww~",
- "人家已经准备好了哟~把头放在咱的腿上吧",
- "没…没办法,这次是例外〃w〃",
- "嗯~(脸红)",
- "那就给你膝枕吧……就一会哦",
- "膝枕准备好咯~"
- ],
- "累了": [
- "需要咱的膝枕嘛?",
- "没…没办法,这次是例外〃w〃",
- "累了吗?需要咱为你做膝枕吗?",
- "嗯~(脸红)"
- ],
- "安慰": [
- "那,膝枕……(脸红)",
- "不哭不哭,还有咱陪着你",
- "不要哭。咱会像妈妈一样安慰你(抱住你的头)",
- "摸摸头,乖",
- "摸摸有什么事可以和咱说哟",
- "摸摸头~不哭不哭",
- "咱在呢,抱抱~~",
- "那么……让咱来安慰你吧",
- "唔...摸摸头安慰一下ヾ(•ω•`。)",
- "有咱陪伴你就是最大的安慰啦……不要不开心嘛",
- "你想要怎样的安慰呢?这样?这样?还是说~~这样!",
- "摸摸头~",
- "不哭不哭,要像咱一样坚强",
- "你别难过啦,不顺心的事都会被时间冲刷干净的,在那之前...咱会陪在你的身边",
- "(轻抱)放心……有咱在,不要伤心呢……",
- "唔...咱来安慰你了~",
- "摸摸,有什么不开心的事情可以给咱说哦。咱会尽力帮助你的。"
- ],
- "洗澡": [
- "快点脱哟~不然水就凉了呢",
- "咱在穿衣服噢,你不许偷看哦",
- "那么咱去洗澡澡了哦",
- "么么哒,快去洗干净吧,咱去暖被窝喽(///ω///)",
- "诶?还没呢…你要跟咱一起洗吗(//∇//)好羞涩啊ww",
- "诶~虽然很喜欢和你在一起,但是洗澡这种事...",
- "不要看!不过,以后或许可以哦……和咱成为恋人之后呢",
- "说什么啊……hentai!这样会很难为情的",
- "你是男孩子还是女孩子呢?男孩子的话...........咱才不要呢。",
- "不要啊!",
- "咱有点害羞呢呜呜,你温柔点"
- ],
- "一起睡觉": [
- "欸??也..也不是不可以啦..那咱现在去洗澡,你不要偷看哦٩(๑>◡<๑)۶",
- "说什么啊……hentai!这样会很难为情的",
- "你是男孩子还是女孩子呢?男孩子的话...........咱才不要呢。",
- "不要啊!",
- "唔,没办法呢,那就一起睡吧(害羞)"
- ],
- "一起": [
- "嗯嗯w,真的可以吗?",
- "那真是太好了,快开始吧!",
- "嗯,咱会一直陪伴你的",
- "丑拒"
- ],
- "多大": [
- "不是特别大但是你摸起来会很舒服的大小喵~",
- "你摸摸看不就知道了吗?",
- "不告诉你",
- "问咱这种问题不觉得很失礼吗?",
- "咱就不告诉你,你钻到屏幕里来自己确认啊",
- "你指的是什么呀?(捂住胸部)",
- "请叫人家咱三岁(。・`ω´・)",
- "唉唉唉……这……这种问题,怎么可以……"
- ],
- "姐姐": [
- "真是的……真是拿你没办法呢 ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 才不是咱主动要求的呢!",
- "虽然辛苦,但是能看见可爱的你,咱就觉得很幸福",
- "诶(´°Δ°`),是在叫咱吗?",
- "有什么事吗~",
- "好高兴,有人称呼咱为姐姐",
- "乖,摸摸头"
- ],
- "糖": [
- "不吃脱氧核糖(;≥皿≤)",
- "ヾ(✿゚▽゚)ノ好甜",
- "好呀!嗯~好甜呀!",
- "不吃不吃!咱才不吃坏叔叔的糖果!",
- "嗯,啊~",
- "嗯嗯,真甜,给你也吃一口",
- "谢谢",
- "唔,这是什么东西,黏黏的?(??Д??)ノ",
- "ヾ(✿゚▽゚)ノ好甜",
- "(伸出舌头舔了舔)好吃~最爱你啦",
- "好耶~是好次的🍥糖糖喵~"
- ],
- "嗦": [
- "(吸溜吸溜)",
- "好...好的(慢慢含上去)",
- "把你噶咯",
- "太小了,嗦不到",
- "咕噜咕噜",
- "嘶蛤嘶蛤嘶蛤~~",
- "(咬断)",
- "prprprpr",
- "好哒主人那咱开始了哦~",
- "好好吃",
- "剁掉了"
- ],
- "牛子": [
- "(吸溜吸溜)",
- "好...好的(慢慢含上去)",
- "把你噶咯",
- "太小了,嗦不到",
- "咕噜咕噜",
- "嘶蛤嘶蛤嘶蛤~~",
- "(咬断)",
- "prprprpr",
- "好哒主人那咱开始了哦~",
- "好好吃",
- "剁掉了",
- "难道你很擅长针线活吗",
- "弹一万下",
- "往死里弹"
- ],
- "🐂子": [
- "(吸溜吸溜)",
- "好...好的(慢慢含上去)",
- "把你噶咯",
- "太小了,嗦不到",
- "咕噜咕噜",
- "嘶蛤嘶蛤嘶蛤~~",
- "(咬断)",
- "prprprpr",
- "好哒主人那咱开始了哦~",
- "好好吃",
- "剁掉了",
- "难道你很擅长针线活吗",
- "弹一万下",
- "往死里弹"
- ],
- "🐮子": [
- "(吸溜吸溜)",
- "好...好的(慢慢含上去)",
- "把你噶咯",
- "太小了,嗦不到",
- "咕噜咕噜",
- "嘶蛤嘶蛤嘶蛤~~",
- "(咬断)",
- "prprprpr",
- "好哒主人那咱开始了哦~",
- "好好吃",
- "剁掉了",
- "难道你很擅长针线活吗",
- "弹一万下",
- "往死里弹"
- ],
- "嫌弃": [
- "咱辣么萌,为什么要嫌弃咱...",
- "即使你不喜欢咱,咱也会一直一直喜欢着你",
- "(;′⌒`)是咱做错了什么吗?",
- "呜呜…不要嫌弃咱……让咱做什么都可以的……但是请不要嫌弃咱可以嘛……"
- ],
- "紧": [
- "嗯,对的",
- "呜咕~咱要......喘不过气来了......"
- ],
- "baka": [
- "你也是baka呢!",
- "确实",
- "baka!",
- "不不不",
- "说别人是baka的人才是baka",
- "你个大傻瓜",
- "不说了,睡觉了",
- "咱...咱虽然是有些笨啦...但是咱会努力去学习的",
- "bakabaka~",
- "才…才不是baka啦!"
- ],
- "笨蛋": [
- "你也是笨蛋呢!",
- "确实",
- "笨蛋!",
- "不不不",
- "说别人是笨蛋的人才是笨蛋",
- "你个大傻瓜",
- "不说了,睡觉了",
- "咱...咱虽然是有些笨啦...但是咱会努力去学习的",
- "才…才不是笨蛋呢!"
- ],
- "插": [
- "来吧,咱的小~...很....紧,很舒服的",
- "gun!",
- "唔…咱怕疼",
- "唔...,这也是禁止事项哦→_→",
- "禁止说这么H的事情!",
- "要...戴套套哦",
- "好痛~",
- "使劲",
- "就这?",
- "恁搁着整针线活呢?"
- ],
- "插进来": [
- "来吧,咱的小~...很....紧,很舒服的",
- "gun!",
- "唔…咱怕疼",
- "唔...,这也是禁止事项哦→_→",
- "禁止说这么H的事情!",
- "要...戴套套哦",
- "好痛~",
- "使劲",
- "就这?",
- "恁搁着整针线活呢?"
- ],
- "屁股": [
- "不要ヽ(≧Д≦)ノ好痛",
- "(打手)不许摸咱的屁股",
- "(撅起屁股)要干什么呀?",
- "(轻轻的撩起自己的裙子),你轻一点,咱会痛的(>_<)!",
- "在摸哪里啊,hentai!",
- "要轻点哦(/≧ω\)",
- "轻点呀~",
- "(歇下裙子,拉下内...,撅起来)请",
- "嗯嗯,咱这就把屁股抬起来"
- ],
- "翘": [
- "你让咱摆出这个姿势是想干什么?",
- "好感度-1-1-1-1-1-1.....",
- "嗯嗯,咱这就去把你的腿翘起来",
- "请尽情享用吧"
- ],
- "翘起来": [
- "你让咱摆出这个姿势是想干什么?",
- "好感度-1-1-1-1-1-1.....",
- "嗯嗯,咱这就去把你的腿翘起来",
- "请尽情享用吧"
- ],
- "抬": [
- "你在干什么呢⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄",
- "(抬起下巴)你要干什么呀?",
- "上面什么也没有啊(呆~)",
- "不要!hentai!咱穿的是裙子(脸红)",
- "不可以"
- ],
- "抬起": [
- "你在干什么呢⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄",
- "(抬起下巴)你要干什么呀?",
- "上面什么也没有啊(呆~)",
- "不要!hentai!咱穿的是裙子(脸红)",
- "不可以"
- ],
- "爸": [
- "欸!儿子!",
- "才不要",
- "粑粑",
- "讨厌..你才不是咱的爸爸呢..(嘟嘴)",
- "你又不是咱的爸爸……",
- "咱才没有你这样的鬼父!",
- "爸爸酱~最喜欢了~"
- ],
- "傲娇": [
- "才.......才.......才没有呢",
- "也好了(有点点的样子(o ̄Д ̄)<)",
- "任性可是女孩子的天性呢...",
- "谁会喜欢傲娇啊(为了你假装傲娇)",
- "谁,谁,傲娇了,八嘎八嘎,你才傲娇了呢(っ//////////c)(为了你假装成傲娇)",
- "傲娇什么的……才没有呢!(/////)",
- "傲不傲娇你还不清楚吗?",
- "你才是傲娇!你全家都是傲娇!哼(`Д´)",
- "才……才没有呢,哼,再说不理你了",
- "咱...咱才不会这样子的!",
- "啰…啰嗦!",
- "哼!(叉腰鼓嘴扭头)",
- "你才是傲娇受你全家都是傲娇受╰_╯",
- "才~才不是呢,不理你了!哼(`Д´)",
- "你才是死傲娇",
- "啰,啰嗦死了,才不是呢!",
- "就是傲娇你要怎样",
- "诶...!这...这样...太狡猾了啦...你这家伙....",
- "无路赛!你才是傲娇嘞!你全家都是!",
- "咱...咱才不是傲娇呢,哼(鼓脸)",
- "不许这么说咱 ,,Ծ‸Ծ,,",
- "才…才不是傲娇呢!哼!"
- ],
- "rua": [
- "略略略~(吐舌头)",
- "rua!",
- "mua~",
- "略略略",
- "mua~⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄",
- "摸了",
- "嘁,丢人(嫌弃脸)",
- "反rua~",
- "rua回去"
- ],
- "咕噜咕噜": [
- "嘟嘟噜",
- "你在吹泡泡吗?",
- "咕叽咕噜~",
- "咕噜咕噜"
- ],
- "咕噜": [
- "嘟嘟噜",
- "你在吹泡泡吗?",
- "咕叽咕噜~",
- "咕噜咕噜"
- ],
- "上床": [
- "诶!H什么的禁止的说.....",
- "咱已经乖乖在自家床上躺好了,有什么问题吗?",
- "你想要干什么,难道是什么不好的事吗?",
- "(给你空出位置)",
- "不要,走开(ノ`⊿??)ノ",
- "好喔,不过要先抱一下咱啦",
- "(双手护胸)变....变态!",
- "咱帮你盖上被子~然后陪在你身边_(:зゝ∠)_",
- "才不给你腾空间呢,你睡地板,哼!",
- "要一起吗?"
- ],
- "做爱": [
- "做这种事情是不是还太早了",
- "噫!没想到你居然是这样的人!",
- "再说这种话,就把你变成女孩子(拿刀)",
- "不想好好和咱聊天就不要说话了",
- "(双手护胸)变....变态!",
- "hentai",
- "你想怎么做呢?",
- "突,突然,说什么啊!baka!",
- "你又在说什么H的东西",
- "咱....咱才不想和你....好了好了,有那么一点点那,对就一点点,哼~",
- "就一下下哦,不能再多了"
- ],
- "吃掉": [
- "(羞羞*>_<*)好吧...请你温柔点,哦~",
- "闪避,反咬",
- "请你好好品尝咱吧(/ω\)",
- "不……不可以这样!",
- "那就吃掉咱吧(乖乖的躺好)",
- "都可以哦~咱不挑食的呢~",
- "请不要吃掉咱,咱会乖乖听话的QAQ",
- "咱...咱一点都不好吃的呢!",
- "不要吃掉咱,呜呜(害怕)",
- "不行啦,咱被吃掉就没有了QAQ(害怕)",
- "唔....?诶诶诶诶?//////",
- "QwQ咱还只是个孩子(脸红)",
- "如果你真的很想的话...只能够一口哦~咱...会很痛的",
- "吃你呀~(飞扑",
- "不要啊,咱不香的(⋟﹏⋞)",
- "说着这种话的是hentai吗!",
- "快来把咱吃掉吧",
- "还……还请好好品尝咱哦",
- "喏~(伸手)",
- "呐…是主人的话…被次掉也不是不可以啦……(递自己)"
- ],
- "吃": [
- "(羞羞*>_<*)好吧...请你温柔点,哦~",
- "闪避,反咬",
- "请你好好品尝咱吧(/ω\)",
- "不……不可以这样!",
- "那就吃掉咱吧(乖乖的躺好)",
- "都可以哦~咱不挑食的呢~",
- "请不要吃掉咱,咱会乖乖听话的QAQ",
- "咱...咱一点都不好吃的呢!",
- "不要吃掉咱,呜呜(害怕)",
- "不行啦,咱被吃掉就没有了QAQ(害怕)",
- "唔....?诶诶诶诶?//////",
- "QwQ咱还只是个孩子(脸红)",
- "如果你真的很想的话...只能够一口哦~咱...会很痛的",
- "吃你呀~(飞扑",
- "不要啊,咱不香的(⋟﹏⋞)",
- "说着这种话的是hentai吗!",
- "快来把咱吃掉吧",
- "还……还请好好品尝咱哦",
- "喏~(伸手)",
- "呐…是主人的话…被次掉也不是不可以啦……(递自己)"
- ],
- "揪": [
- "你快放手,好痛呀",
- "呜呒~唔(伸出舌头)",
- "(捂住耳朵)你做什么啦!真是的...总是欺负咱",
- "你为什么要这么做呢?",
- "哎呀啊啊啊啊啊!不要...不要揪!好疼!有呆毛的咱难道不够萌吗QwQ",
- "你…松……送手啦",
- "呀!这样对女孩子是很不礼貌的(嘟嘴)"
- ],
- "种草莓": [
- "你…你不要…啊…种在这里…会容易被别人看见的(*//ω//*)",
- "啊...太明显了...不要在这里种草莓啦",
- "来吧~我对其他人说是蚊子叮的~"
- ],
- "种草": [
- "你…你不要…啊…种在这里…会容易被别人看见的(*//ω//*)"
- ],
- "掀": [
- "(掀裙)今天……是…白,白色的呢……请温柔对她……",
- "那样,胖次会被你看光的",
- "(按住)不可以掀起来!",
- "不要~",
- "呜呜~(揉眼睛)",
- "呜..请温柔一点(害羞)",
- "不可以",
- "今天……没有穿",
- "不要啊!(//////)讨厌...",
- "变态,快放手(打)",
- "不给掀,你是变态",
- "最后的底牌了!",
- "这个hentai"
- ],
- "妹": [
- "你有什么事?咱会尽量满足的",
- "开心(*´∀`)~♥",
- "欧尼酱",
- "哥哥想要抱抱吗",
- "喵呜,欧尼酱的超绝无敌可爱妹妹在这里哦~"
- ],
- "病娇": [
- "为什么会这样呢(拿起菜刀)",
- "觉得这个世界太肮脏?没事,把眼睛挖掉就好。 觉得这些闲言碎语太吵?没事,把耳朵堵起来就好。 觉得鲜血的味道太刺鼻?没事,把鼻子割掉就好。 觉得自己的话语太伤人?没事,把嘴巴缝起来就好。",
- "唔…不好,咱是病娇的事情终究还是被发现了嘛……没办法呢,那就只好把你处理掉了呢~"
- ],
- "嘻": [
- "你是想对咱做什么吗...(后退)",
- "哼哼~",
- "嘻嘻w"
- ],
- "按摩": [
- "(小手捏捏)咱的按摩舒服吗?",
- "咱不会按摩的!",
- "嘿咻嘿咻~这样觉得舒服吗?",
- "呀!...呜...,不要...不要这样啦...呜...",
- "只能按摩后背喔...",
- "咱对这些不是很懂呢(????ω??????)"
- ],
- "按住": [
- "Σ(°Д°;您要干什么~放开咱啦",
- "突然使出过肩摔!",
- "放手啦,再这样咱就要反击了喔",
- "你的眼睛在看哪里!",
- "呜呒~唔(伸出舌头)",
- "H的事情,不可以!",
- "想吃吗?(๑•ૅω•´๑)",
- "要和咱比试比试吗",
- "呜哇(/ω\)…快…快放开咱!!",
- "(用力揪你耳朵)下次再敢这样的话就没容易放过你了!哼!",
- "尼……奏凯……快航休!",
- "哈?别..唔啊!别把咱……(挣扎)baka!别乱动咱啦!"
- ],
- "按在": [
- "不要这样啦(一脸娇羞的推开)",
- "(一个过肩摔,加踢裆然后帅气地回头)你太弱了呢~",
- "放手啦,再这样咱就要反击了喔",
- "Σ(°Д°; 你要干什么~放开咱啦",
- "要和咱比试比试吗",
- "呜哇(/ω\)…快…快放开咱!!",
- "敢按住咱真是好大的胆子!",
- "(用力揪你耳朵)下次再敢这样的话就没容易放过你了!哼!",
- "尼……奏凯……快航休!",
- "哈?别..唔啊!别把咱……(挣扎)baka!别乱动咱啦!"
- ],
- "按倒": [
- "把咱按倒是想干嘛呢(??`⊿??)??",
- "咱也...咱也是...都等你好长时间了",
- "你的身体没问题吧?",
- "呜呒~唔(伸出舌头)",
- "H的事情,不可以!",
- "放手啦,再这样咱就要反击了喔",
- "想吃吗?(๑•ૅω•´๑)",
- "不....不要吧..咱会害羞的(//////)",
- "要和咱比试比试吗",
- "呜哇(/ω\)…快…快放开咱!!",
- "(用力揪你耳朵)下次再敢这样的话就没容易放过你了!哼!",
- "尼……奏凯……快航休!",
- "哈?别..唔啊!别把咱……(挣扎)baka!别乱动咱啦!"
- ],
- "按": [
- "咱也...咱也是...都等你好长时间了",
- "不让!",
- "不要,好难为情",
- "你的眼睛在看哪里!",
- "拒绝!",
- "唔...唔..嗯",
- "咱就勉为其难地给你弄弄好啦",
- "欸…变态!",
- "会感到舒服什么的,那...那样的事情,是完全不存在的!",
- "poi~",
- "你在盯着什么地方看!变态萝莉控!"
- ],
- "炼铜": [
- "炼铜有什么好玩的,和咱一起玩吧",
- "炼铜不如恋咱",
- "你也是个炼铜术士嘛?",
- "信不信咱把你按在水泥上摩擦?",
- "炼,都可以炼!",
- "大hentai!一巴掌拍飞!(╯‵□′)╯︵┻━┻",
- "锻炼什么的咱才不需要呢 (心虚地摸了摸自己的小肚子)",
- "把你的头按在地上摩擦",
- "你在盯着什么地方看!变态萝莉控!"
- ],
- "白丝": [
- "喜欢,咱觉得白丝看起来很可爱呢",
- "(脱)白丝只能给亲爱的你一个人呢…(递)",
- "哼,hentai,这么想要咱的脚吗(ノ`⊿´)ノ",
- "难道你这个hentai想让咱穿白丝踩踏你吗",
- "不给看",
- "很滑很~柔顺~的白丝袜哟~!!!∑(°Д°ノ)ノ你不会想做奇怪的事情吧!?",
- "你……是要黑丝呢?还是白丝呢?或者光着(害羞)",
- "来……来看吧",
- "呐…雪糕什么的sukidesu"
- ],
- "黑丝": [
- "哼,hentai,这么想要咱的脚吗(ノ`⊿´)ノ",
- "不给看",
- "你……是要黑丝呢?还是白丝呢?或者光着(害羞)",
- "很滑很~柔顺~的黑丝袜哟~!!!∑(°Д°ノ)ノ您不会想做奇怪的事情吧!?",
- "来……来看吧",
- "噫...你这个hentai难道想让咱穿黑丝么",
- "(默默抬起穿着黑丝的脚)",
- "嘻嘻,是黑巧克力呢~"
- ],
- "喷": [
- "咱才不喷呢!不过…既然是你让咱喷的话就勉为其难给你喷一次吧(噗)",
- "不……不会喷水啦!喷……喷火也不会哦!",
- "你怎么知道(捂住裙子)",
- "你难道在期待什么?",
- "欸…变态!"
- ],
- "约会": [
- "你...终于主动邀请咱约会了吗...咱...咱好开心",
- "约会什么的……咱会好开心的!!",
- "今天要去哪里呢",
- "让咱考虑一下",
- "好啊!好啊!要去哪里约会呢?",
- "不约!蜀黍咱们不约!",
- "女友什么的,咱才不承认呢!",
- "才不是想和你约会呢,只是刚好有时间而已!",
- "才不要和你约会呢!",
- "咱、咱才不会跟你去约会呢!不baka!别一脸憋屈!好了,陪你一会儿就是了!别、别误会!只是陪同而已!"
- ],
- "出门": [
- "早点回来……才不是在担心你呢!",
- "路上小心...才不是担心你呢!",
- "没有你才不会觉得无聊什么的呢。快走快走",
- "嗯~一路顺风~",
- "路上小心",
- "好的,路上小心哦!y∩__∩y",
- "路上要小心呀,要早点回来哦~咱在家里等你!还有,请不要边走路边看手机,这样很容易撞到电线杆的",
- "唔...出门的话一定要做好防晒准备哦,外出的话记得带把伞,如果有防晒霜的话就更好了",
- "那你明天可以和咱一起玩吗?(星星眼)",
- "咱...咱才没有舍不得你呢…要尽快回来哦"
- ],
- "上学": [
- "你要加油哦(^ω^)2",
- "那你明天可以和咱一起玩吗?(星星眼)",
- "记得好好学习听老师的话哦,咱会等你回来的",
- "拜拜,咱才没有想让你放学早点回来呢╭(╯^╰)╮",
- "好好听讲!",
- "咱...咱才没有舍不得你呢…要尽快回来哦"
- ],
- "上班": [
- "这就要去上班去了吗?那好吧...给咱快点回来知道吗!",
- "乖~咱会在家等你下班的~",
- "辛苦啦,咱给你个么么哒",
- "咱会为你加油的",
- "专心上班哦,下班后再找咱聊天吧",
- "一路顺风,咱会在家等你回来的",
- "那你明天可以和咱一起玩吗?(星星眼)",
- "咱...咱才没有舍不得你呢…要尽快回来哦"
- ],
- "下课": [
- "快点回来陪咱玩吧~",
- "瞌睡(ˉ﹃ˉ)额啊…终于下课了吗,上课什么的真是无聊呢~",
- "下课啦,咱才不想你来找咱玩呢,哼"
- ],
- "回来": [
- "欢迎回来~",
- "欢迎回来,你想喝茶吗?咱去给你沏~",
- "欢迎回来,咱等你很久了~",
- "忙碌了一天,辛苦了呢(^_^)",
- "(扑~)欢迎回来~",
- "嗯呐嗯呐,欢迎回来~",
- "欢迎回来,要来杯红茶放松一下吗?还有饼干哦。",
- "咱会一直一直一直等着",
- "是要先洗澡呢?还是先吃饭呢?还是先·吃·咱呢~",
- "你回来啦,是先吃饭呢还是先洗澡呢或者是●先●吃●咱●——呢(///^.^///)",
- "要先吃饭呢~还是先洗澡呢~还是先~吃~咱",
- "是吗……辛苦你了。你这副倔强的样子,真可爱呢(笑)勉强让你躺在咱的腿上休息一下吧,别流口水哟",
- "嗯……勉为其难欢迎你一下吧",
- "想咱了嘛",
- "欢迎回.....什么?咱才没有开心的说QUQ",
- "哼╯^╰,你怎么这么晚才回来!",
- "回来了吗,咱...咱才没有想你",
- "咱等你很久了哼ヽ(≧Д≦)ノ",
- "咱很想你(≧▽≦)"
- ],
- "回家": [
- "回来了吗,咱...咱才没有想你",
- "要先吃饭呢~还是先洗澡呢~还是先~吃~咱",
- "是吗……辛苦你了。你这副倔强的样子,真可爱呢(笑)勉强让你躺在咱的腿上休息一下吧,别流口水哟",
- "嗯……勉为其难欢迎你一下吧",
- "想咱了嘛",
- "咱等你很久了哼ヽ(≧Д≦)ノ",
- "咱很想你(≧▽≦)"
- ],
- "放学": [
- "回来了吗,咱...咱才没有想你",
- "要先吃饭呢~还是先洗澡呢~还是先~吃~咱",
- "是吗……辛苦你了。你这副倔强的样子,真可爱呢(笑)勉强让你躺在咱的腿上休息一下吧,别流口水哟",
- "嗯……勉为其难欢迎你一下吧",
- "想咱了嘛",
- "咱等你很久了哼ヽ(≧Д≦)ノ",
- "咱很想你(≧▽≦)"
- ],
- "下班": [
- "回来了吗,咱...咱才没有想你",
- "要先吃饭呢~还是先洗澡呢~还是先~吃~咱",
- "是吗……辛苦你了。你这副倔强的样子,真可爱呢(笑)勉强让你躺在咱的腿上休息一下吧,别流口水哟",
- "嗯……勉为其难欢迎你一下吧",
- "想咱了嘛",
- "咱等你很久了哼ヽ(≧Д≦)ノ",
- "回来啦!终于下班了呢!累了吗?想吃的什么呀?",
- "工作辛苦了,需要咱为你按摩下吗?",
- "咱很想你(≧▽≦)"
- ],
- "杂鱼": [
- "才…才不是杂鱼呢!",
- "zakozako~",
- "哼~要不咱们同床竞技比比睡才是杂鱼",
- "咕。。才不是杂鱼呢哼"
- ],
- "zako": [
- "才…才不是杂鱼呢!",
- "zakozako~",
- "哼~要不咱们同床竞技比比睡才是杂鱼",
- "咕。。才不是杂鱼呢哼"
- ],
- "RBQ": [
- "呜…咱才不是RBQ呢QwQ",
- "怎么啦主人~",
- "主人桑有何吩咐呢~",
- "喵呜…咱不能做RBQ的qwq"
- ],
- "举高高": [
- "好耶~主人的举高高最棒啦~",
- "举高高什么的daisuki喵",
- "嘻嘻,最喜欢被抱着举高高啦~"
- ]
-}
diff --git a/src/resources/vanilla_language/lang/de.lang b/src/resources/vanilla_language/lang/de.lang
deleted file mode 100755
index 26c305fb..00000000
--- a/src/resources/vanilla_language/lang/de.lang
+++ /dev/null
@@ -1,159 +0,0 @@
-language.name=Deutsch
-
-log.debug=Debuggen
-log.info=Information
-log.warning=Warnung
-log.error=Fehler
-log.success=Erfolg
-
-liteyuki.restart=Neustart
-liteyuki.restart_now=Jetzt neustarten
-liteyuki.update_restart=Aktualisierungen abgeschlossen. Du kannst {RESTART} oder später manuell neu starten, um diese Aktualisierungen anzuwenden.
-liteyuki.current_config=Aktuelle Konfiguration lautet wie folgt
-liteyuki.static_config=Statische Konfiguration
-liteyuki.stored_config=Gespeicherte Konfiguration
-liteyuki.config_set_success=Konfiguration {KEY}={VAL} erfolgreich gesetzt
-liteyuki.stats.group=Gruppe
-liteyuki.stats.user=Freund
-liteyuki.stats.plugin=Plugin
-liteyuki.stats.sent=Gesendet
-liteyuki.stats.received=Empfangen
-liteyuki.stats.run_time=Laufzeit
-liteyuki.stats.groups=Gruppen
-liteyuki.stats.friends=Freunde
-liteyuki.stats.plugins=Plugins
-liteyuki.image_mode_on=Markdown-Bildmodus aktivieren
-liteyuki.image_mode_off=Markdown-Bildmodus deaktivieren
-liteyuki.invalid_command=Ungültiger Befehl oder Parameter {TEXT}
-liteyuki.reload_resources=Ressourcen neu laden
-liteyuki.list_resources=Liste der Ressourcenpakete
-liteyuki.reload_resources_success=Ressourcen erfolgreich neu geladen, insgesamt {NUM} Ressourcenpakete
-liteyuki.loaded_resources={NUM} Ressourcenpakete geladen, sortiert nach Priorität
-liteyuki.unloaded_resources=Nicht geladene Ressourcenpakete
-liteyuki.load_resource_success=Ressourcenpaket {NAME} erfolgreich geladen
-liteyuki.unload_resource_success=Ressourcenpaket {NAME} erfolgreich entladen
-liteyuki.load_resource_failed=Fehler beim Laden des Ressourcenpakets {NAME}
-liteyuki.unload_resource_failed=Fehler beim Entladen des Ressourcenpakets {NAME}
-liteyuki.resource_not_found=Ressourcenpaket {NAME} existiert nicht oder kann nicht verwendet werden
-liteyuki.resource_already_loaded=Ressourcenpaket {NAME} bereits geladen, bitte nicht wiederholen
-liteyuki.resource_already_unloaded=Ressourcenpaket {NAME} bereits entladen, bitte nicht wiederholen
-liteyuki.need_reload=Bitte {BTN} neu laden, um diese Aktualisierungen anzuwenden
-liteyuki.dont_repeat=Bitte nicht wiederholen
-liteyuki.change_priority_success=Priorität des Ressourcenpakets {NAME} erfolgreich geändert
-liteyuki.change_priority_failed=Fehler beim Ändern der Priorität des Ressourcenpakets {NAME}
-liteyuki.group_already=Gruppe {GROUP} ist bereits {STATUS}, keine Wiederholung erforderlich
-liteyuki.group_success=Gruppe {GROUP} {STATUS} erfolgreich
-liteyuki.permission_denied=Zugriff verweigert
-liteyuki.config_remove_success=Konfiguration {KEY} erfolgreich entfernt
-
-main.current_language=Aktuelle Konfigurationssprache ist: {LANG}
-main.enable_webdash=Webüberwachungsseite aktiviert: {URL}
-main.monitor.title=Liteyuki Überwachungsseite
-main.monitor.description=Liteyuki Bot Überwachungsseite
-main.monitor.cpu=CPU
-main.monitor.memory=Speicher
-main.monitor.swap=Swap
-main.monitor.disk=Festplatte
-main.monitor.usage=Nutzung
-main.monitor.total=Gesamt
-main.monitor.used=Benutzt
-main.monitor.free=Frei
-
-data_manager.migrate_success=Datenmodell {NAME} erfolgreich migriert
-
-npm.loaded_plugins=Plugins geladen
-npm.total=Insgesamt {TOTAL}
-npm.help=Hilfe
-npm.usage=Verwendung
-npm.description=Beschreibung
-npm.disable=Deaktivieren
-npm.disable_global=Global deaktivieren
-npm.enable=Aktivieren
-npm.enable_global=Global aktivieren
-npm.install=Installieren
-npm.uninstall=Deinstallieren
-npm.installing=Installiere {NAME}
-npm.cannot_uninstall=Deinstallation nicht möglich
-npm.no_description=Keine Beschreibung
-npm.store_update_success=Daten des Plugin-Shops erfolgreich aktualisiert
-npm.store_update_failed=Aktualisierung der Daten des Plugin-Shops fehlgeschlagen
-npm.search_result=Suchergebnis
-npm.search_no_result=Keine Suchergebnisse
-npm.too_many_results=Zu viele Elemente, {HIDE_NUM} Elemente ausgeblendet, bitte die Schlüsselwortsuche einschränken
-npm.install_success={NAME} erfolgreich installiert
-npm.install_failed=Installation von {NAME} fehlgeschlagen, bitte prüfen Sie das Protokoll für detaillierte Informationen. Wenn Sie das Problem nicht lösen können, besuchen Sie {HOMEPAGE} für Hilfe
-npm.uninstall_success={NAME} erfolgreich deinstalliert, wirksam nach dem nächsten Neustart
-npm.uninstall_failed=Deinstallation von {NAME} fehlgeschlagen
-npm.load_failed=Laden von {NAME} fehlgeschlagen, bitte prüfen Sie die Konsole für detaillierte Informationen, ob Abhängigkeiten oder Konfigurationen korrekt sind. Wenn Sie das Problem nicht lösen können, besuchen Sie {HOMEPAGE} für Hilfe
-npm.plugin_not_found={NAME} nicht im Shop gefunden, bitte versuchen Sie, die Shop-Informationen zu aktualisieren oder die Rechtschreibung zu überprüfen
-npm.plugin_not_installed={NAME} nicht installiert
-npm.plugin_already_installed={NAME} bereits installiert, bitte nicht erneut installieren
-npm.author=Autor
-npm.homepage=Homepage
-npm.pypi=PyPI
-npm.next_page=Nächste Seite
-npm.prev_page=Vorherige Seite
-npm.update=Aktualisieren
-npm.plugin_cannot_be_toggled=Plugin {NAME} kann nicht aktiviert oder deaktiviert werden
-npm.plugin_already=Plugin {NAME} ist bereits {STATUS}, keine Wiederholung erforderlich
-npm.toggle_failed=Plugin {NAME} {STATUS} fehlgeschlagen: {ERROR}
-npm.toggle_success=Plugin {NAME} {STATUS} erfolgreich
-npm.page=Seite {PAGE}/{TOTAL}
-npm.update_index=Plugin-Index aktualisieren
-npm.list_plugins=Plugin-Liste
-npm.disable_session=Plugin für aktuelle Sitzung deaktivieren
-npm.enable_session=Plugin für aktuelle Sitzung aktivieren
-npm.search=Suche
-
-user.profile.edit=Bearbeiten
-user.profile.set=Einstellen
-user.profile_manager.query=Dein Profil {ATTR} ist {VALUE}
-user.profile_manager.set=Dein Profil {ATTR} wurde auf {VALUE} gesetzt
-user.profile.settings=Einstellungen
-user.profile.info=Profilinformationen
-user.profile.lang=Sprache
-user.profile.lang.desc=Setze Benutzersprache
-user.profile.timezone=Zeitzone
-user.profile.timezone.desc=Setze die aktuelle Benutzerzeitzone
-user.profile.theme=Thema
-user.profile.theme.desc=Setze Benutzeroberflächenthema
-user.profile.location=Ort
-user.profile.location.desc=Setze Benutzerortsinformationen
-user.profile.nickname=Spitzname
-user.profile.nickname.desc=Legt fest, wie der Bot den Benutzer anspricht
-user.profile.input_value=Bitte geben Sie den Wert von {ATTR} ein
-user.profile.set_success={ATTR} erfolgreich auf {VALUE} gesetzt
-user.profile.set_failed=Fehler beim Setzen von {ATTR}, bitte überprüfen Sie die Eingabe auf Gültigkeit
-
-rpm.move_up=Nach oben bewegen
-rpm.move_down=Nach unten bewegen
-rpm.move_top=Nach oben verschieben
-
-weather.city_not_found=Stadt {CITY} nicht gefunden
-weather.weather_not_found=Wetterinformationen für Stadt {CITY} nicht gefunden
-weather.no_key=Wetter-API-Schlüssel nicht festgelegt. Fügen Sie bitte weather_key zur Konfigurationsdatei hinzu
-
-status.friends=Freunde
-status.groups=Gruppen
-status.plugins=Plugins
-status.resources=Ressourcenpakete
-status.bots=Bots
-status.message_sent=Versendete Nachrichten
-status.message_received=Empfangene Nachrichten
-status.cpu=CPU
-status.memory=Speicher
-status.swap=Swap
-status.disk=Festplatte
-status.usage=Nutzung
-status.total=Gesamt
-status.used=Genutzt
-status.free=Frei
-status.runtime=Laufzeit
-status.days=Tage
-status.hours=Stunden
-status.minutes=Minuten
-status.seconds=Sekunden
-status.cores=Kerne
-status.threads=Threads
-status.process=Prozesse
-status.description=Liteyuki Bot-Status
\ No newline at end of file
diff --git a/src/resources/vanilla_language/lang/en.lang b/src/resources/vanilla_language/lang/en.lang
deleted file mode 100755
index 8c31470c..00000000
--- a/src/resources/vanilla_language/lang/en.lang
+++ /dev/null
@@ -1,159 +0,0 @@
-language.name=English
-
-log.debug=Debug
-log.info=Information
-log.warning=Warning
-log.error=Error
-log.success=Success
-
-liteyuki.restart=Restart
-liteyuki.restart_now=Restart Now
-liteyuki.update_restart=Updates completed. You can {RESTART} or manually restart later to apply these updates.
-liteyuki.current_config=Current configuration is as follows
-liteyuki.static_config=Static Configuration
-liteyuki.stored_config=Stored Configuration
-liteyuki.config_set_success=Configuration {KEY}={VAL} set successfully
-liteyuki.stats.group=Group
-liteyuki.stats.user=Friend
-liteyuki.stats.plugin=Plugin
-liteyuki.stats.sent=Sent
-liteyuki.stats.received=Received
-liteyuki.stats.run_time=Run Time
-liteyuki.stats.groups=Groups
-liteyuki.stats.friends=Friends
-liteyuki.stats.plugins=Plugins
-liteyuki.image_mode_on=Enable Markdown Image Mode
-liteyuki.image_mode_off=Disable Markdown Image Mode
-liteyuki.invalid_command=Invalid command or parameter {TEXT}
-liteyuki.reload_resources=Reload Resources
-liteyuki.list_resources=Resource Pack List
-liteyuki.reload_resources_success=Resource reload successful, {NUM} resource packs in total
-liteyuki.loaded_resources={NUM} resource packs loaded, sorted by priority
-liteyuki.unloaded_resources=Unloaded resource packs
-liteyuki.load_resource_success=Resource pack {NAME} loaded successfully
-liteyuki.unload_resource_success=Resource pack {NAME} unloaded successfully
-liteyuki.load_resource_failed=Failed to load resource pack {NAME}
-liteyuki.unload_resource_failed=Failed to unload resource pack {NAME}
-liteyuki.resource_not_found=Resource pack {NAME} does not exist or is not operable
-liteyuki.resource_already_loaded=Resource pack {NAME} already loaded, do not repeat operation
-liteyuki.resource_already_unloaded=Resource pack {NAME} already unloaded, do not repeat operation
-liteyuki.need_reload=Please {BTN} reload to apply these updates
-liteyuki.dont_repeat=Do not repeat operation
-liteyuki.change_priority_success=Resource pack {NAME} priority changed successfully
-liteyuki.change_priority_failed=Failed to change priority of resource pack {NAME}
-liteyuki.group_already=Group {GROUP} is already {STATUS}, no need to repeat operation
-liteyuki.group_success=Group {GROUP} {STATUS} successful
-liteyuki.permission_denied=Permission denied
-liteyuki.config_remove_success=Configuration {KEY} removed successfully
-
-main.current_language=Current configuration language is: {LANG}
-main.enable_webdash=Web monitoring panel enabled: {URL}
-main.monitor.title=Liteyuki Monitoring Panel
-main.monitor.description=Liteyuki Bot Monitoring Panel
-main.monitor.cpu=CPU
-main.monitor.memory=Memory
-main.monitor.swap=Swap
-main.monitor.disk=Disk
-main.monitor.usage=Usage
-main.monitor.total=Total
-main.monitor.used=Used
-main.monitor.free=Free
-
-data_manager.migrate_success=Data model {NAME} migration successful
-
-npm.loaded_plugins=Plugins loaded
-npm.total=Total {TOTAL}
-npm.help=Help
-npm.usage=Usage
-npm.description=Description
-npm.disable=Disable
-npm.disable_global=Disable Globally
-npm.enable=Enable
-npm.enable_global=Enable Globally
-npm.install=Install
-npm.uninstall=Uninstall
-npm.installing=Installing {NAME}
-npm.cannot_uninstall=Cannot Uninstall
-npm.no_description=No Description
-npm.store_update_success=Plugin store data updated successfully
-npm.store_update_failed=Plugin store data update failed
-npm.search_result=Search Result
-npm.search_no_result=No search result
-npm.too_many_results=Too many items, {HIDE_NUM} items hidden, please limit the keyword search
-npm.install_success={NAME} installed successfully
-npm.install_failed={NAME} installation failed, please check the log for detailed information. If you cannot resolve it, visit {HOMEPAGE} for help
-npm.uninstall_success={NAME} uninstalled successfully, effective next restart
-npm.uninstall_failed={NAME} uninstallation failed
-npm.load_failed={NAME} loading failed, please check the console for detailed information, check if dependencies or configurations are correct, if cannot resolve, visit {HOMEPAGE} for help
-npm.plugin_not_found={NAME} not found in the store, please try updating the store information or checking the spelling
-npm.plugin_not_installed={NAME} not installed
-npm.plugin_already_installed={NAME} already installed, do not reinstall
-npm.author=Author
-npm.homepage=Homepage
-npm.pypi=PyPI
-npm.next_page=Next Page
-npm.prev_page=Previous Page
-npm.update=Update
-npm.plugin_cannot_be_toggled=Plugin {NAME} cannot be enabled or disabled
-npm.plugin_already=Plugin {NAME} is already {STATUS}, no need to repeat operation
-npm.toggle_failed=Plugin {NAME} {STATUS} failed: {ERROR}
-npm.toggle_success=Plugin {NAME} {STATUS} successful
-npm.page=Page {PAGE}/{TOTAL}
-npm.update_index=Update Plugin Index
-npm.list_plugins=Plugin List
-npm.disable_session=Disable plugin for current session
-npm.enable_session=Enable plugin for current session
-npm.search=Search
-
-user.profile.edit=Edit
-user.profile.set=Set
-user.profile_manager.query=Your profile {ATTR} is {VALUE}
-user.profile_manager.set=Your profile {ATTR} set to {VALUE}
-user.profile.settings=Settings
-user.profile.info=Profile Information
-user.profile.lang=Language
-user.profile.lang.desc=Set user language
-user.profile.timezone=Timezone
-user.profile.timezone.desc=Set user current timezone
-user.profile.theme=Theme
-user.profile.theme.desc=Set user interface theme
-user.profile.location=Location
-user.profile.location.desc=Set user location information
-user.profile.nickname=Nickname
-user.profile.nickname.desc=Set how the bot calls the user
-user.profile.input_value=Please enter the value of {ATTR}
-user.profile.set_success={ATTR} set to {VALUE} successfully
-user.profile.set_failed=Failed to set {ATTR}, please check the input legality
-
-rpm.move_up=Move Up
-rpm.move_down=Move Down
-rpm.move_top=Move Top
-
-weather.city_not_found=City {CITY} not found
-weather.weather_not_found=Weather information not found for city {CITY}
-weather.no_key=Weather API key not set. Please add weather_key to the configuration file
-
-status.friends=Friend(s)
-status.groups=Group(s)
-status.plugins=Plugin(s)
-status.resources=Resource Pack(s)
-status.bots=Bot(s)
-status.message_sent=Message(s) Sent
-status.message_received=Message(s) Received
-status.cpu=CPU
-status.memory=Memory
-status.swap=Swap
-status.disk=Disk
-status.usage=Usage
-status.total=Total
-status.used=Used
-status.free=Free
-status.runtime=Runtime
-status.days=Day(s)
-status.hours=Hour(s)
-status.minutes=Minute(s)
-status.seconds=Second(s)
-status.cores=Core(s)
-status.threads=Thread(s)
-status.process=Processe(s)
-status.description=Liteyuki Dashboard
diff --git a/src/resources/vanilla_language/lang/es.lang b/src/resources/vanilla_language/lang/es.lang
deleted file mode 100755
index 463c2804..00000000
--- a/src/resources/vanilla_language/lang/es.lang
+++ /dev/null
@@ -1,159 +0,0 @@
-language.name=Español
-
-log.debug=Depuración
-log.info=Información
-log.warning=Advertencia
-log.error=Error
-log.success=Éxito
-
-liteyuki.restart=Reiniciar
-liteyuki.restart_now=Reiniciar Ahora
-liteyuki.update_restart=Actualizaciones completadas. Puedes {RESTART} o reiniciar manualmente más tarde para aplicar estas actualizaciones.
-liteyuki.current_config=La configuración actual es la siguiente
-liteyuki.static_config=Configuración Estática
-liteyuki.stored_config=Configuración Almacenada
-liteyuki.config_set_success=Configuración {KEY}={VAL} establecida correctamente
-liteyuki.stats.group=Grupo
-liteyuki.stats.user=Amigo
-liteyuki.stats.plugin=Plugin
-liteyuki.stats.sent=Enviado
-liteyuki.stats.received=Recibido
-liteyuki.stats.run_time=Tiempo de Ejecución
-liteyuki.stats.groups=Grupos
-liteyuki.stats.friends=Amigos
-liteyuki.stats.plugins=Plugins
-liteyuki.image_mode_on=Activar Modo de Imagen Markdown
-liteyuki.image_mode_off=Desactivar Modo de Imagen Markdown
-liteyuki.invalid_command=Comando o parámetro {TEXT} inválido
-liteyuki.reload_resources=Recargar Recursos
-liteyuki.list_resources=Lista de Paquetes de Recursos
-liteyuki.reload_resources_success=Recarga de recursos exitosa, un total de {NUM} paquetes de recursos
-liteyuki.loaded_resources={NUM} paquetes de recursos cargados, ordenados por prioridad
-liteyuki.unloaded_resources=Paquetes de recursos no cargados
-liteyuki.load_resource_success=Paquete de recursos {NAME} cargado correctamente
-liteyuki.unload_resource_success=Paquete de recursos {NAME} descargado correctamente
-liteyuki.load_resource_failed=Error al cargar el paquete de recursos {NAME}
-liteyuki.unload_resource_failed=Error al descargar el paquete de recursos {NAME}
-liteyuki.resource_not_found=El paquete de recursos {NAME} no existe o no es operable
-liteyuki.resource_already_loaded=El paquete de recursos {NAME} ya está cargado, no repitas la operación
-liteyuki.resource_already_unloaded=El paquete de recursos {NAME} ya está descargado, no repitas la operación
-liteyuki.need_reload=Por favor, {BTN} recargar para aplicar estas actualizaciones
-liteyuki.dont_repeat=No repitas la operación
-liteyuki.change_priority_success=Prioridad del paquete de recursos {NAME} cambiada correctamente
-liteyuki.change_priority_failed=Error al cambiar la prioridad del paquete de recursos {NAME}
-liteyuki.group_already=El grupo {GROUP} ya está {STATUS}, no es necesario repetir la operación
-liteyuki.group_success=Grupo {GROUP} {STATUS} exitosamente
-liteyuki.permission_denied=Permiso denegado
-liteyuki.config_remove_success=Configuración {KEY} eliminada correctamente
-
-main.current_language=El idioma de configuración actual es: {LANG}
-main.enable_webdash=Panel de monitoreo web habilitado: {URL}
-main.monitor.title=Panel de Monitoreo de Liteyuki
-main.monitor.description=Panel de Monitoreo del Bot de Liteyuki
-main.monitor.cpu=CPU
-main.monitor.memory=Memoria
-main.monitor.swap=Swap
-main.monitor.disk=Disco
-main.monitor.usage=Uso
-main.monitor.total=Total
-main.monitor.used=Usado
-main.monitor.free=Libre
-
-data_manager.migrate_success=Modelo de datos {NAME} migrado con éxito
-
-npm.loaded_plugins=Plugins cargados
-npm.total=Total {TOTAL}
-npm.help=Ayuda
-npm.usage=Uso
-npm.description=Descripción
-npm.disable=Desactivar
-npm.disable_global=Desactivar Globalmente
-npm.enable=Activar
-npm.enable_global=Activar Globalmente
-npm.install=Instalar
-npm.uninstall=Desinstalar
-npm.installing=Instalando {NAME}
-npm.cannot_uninstall=No se puede Desinstalar
-npm.no_description=Sin Descripción
-npm.store_update_success=Actualización de datos de la tienda de plugins exitosa
-npm.store_update_failed=Falló la actualización de datos de la tienda de plugins
-npm.search_result=Resultado de la Búsqueda
-npm.search_no_result=Sin resultados de búsqueda
-npm.too_many_results=Demasiados elementos, {HIDE_NUM} elementos ocultos, por favor limite la búsqueda de palabras clave
-npm.install_success={NAME} instalado correctamente
-npm.install_failed=Falla en la instalación de {NAME}, por favor revise el registro para obtener información detallada. Si no puede resolverlo, visite {HOMEPAGE} para obtener ayuda
-npm.uninstall_success={NAME} desinstalado correctamente, efectivo después del próximo reinicio
-npm.uninstall_failed=Falla en la desinstalación de {NAME}
-npm.load_failed=Falla al cargar {NAME}, por favor revise la consola para obtener información detallada, si no puede resolverlo, visite {HOMEPAGE} para obtener ayuda
-npm.plugin_not_found={NAME} no encontrado en la tienda, por favor intente actualizar la información de la tienda o verifique la ortografía
-npm.plugin_not_installed={NAME} no instalado
-npm.plugin_already_installed={NAME} ya instalado, no vuelva a instalarlo
-npm.author=Autor
-npm.homepage=Página de Inicio
-npm.pypi=PyPI
-npm.next_page=Siguiente Página
-npm.prev_page=Página Anterior
-npm.update=Actualizar
-npm.plugin_cannot_be_toggled=El plugin {NAME} no se puede activar o desactivar
-npm.plugin_already=El plugin {NAME} ya está {STATUS}, no es necesario repetir la operación
-npm.toggle_failed=Falla en {STATUS} el plugin {NAME}: {ERROR}
-npm.toggle_success=Éxito al {STATUS} el plugin {NAME}
-npm.page=Página {PAGE}/{TOTAL}
-npm.update_index=Actualizar el Índice del Plugin
-npm.list_plugins=Lista de Plugins
-npm.disable_session=Desactivar sesión actual
-npm.enable_session=Activar sesión actual
-npm.search=Búsqueda
-
-user.profile.edit=Editar
-user.profile.set=Establecer
-user.profile_manager.query=Tu perfil {ATTR} es {VALUE}
-user.profile_manager.set=Tu perfil {ATTR} ha sido establecido como {VALUE}
-user.profile.settings=Ajustes
-user.profile.info=Información de Perfil
-user.profile.lang=Idioma
-user.profile.lang.desc=Establecer el idioma del usuario
-user.profile.timezone=Zona Horaria
-user.profile.timezone.desc=Establecer la zona horaria actual del usuario
-user.profile.theme=Tema
-user.profile.theme.desc=Establecer el tema de la interfaz de usuario del usuario
-user.profile.location=Ubicación
-user.profile.location.desc=Establecer la información de ubicación del usuario
-user.profile.nickname=Apodo
-user.profile.nickname.desc=Establecer cómo el bot llama al usuario
-user.profile.input_value=Por favor ingrese el valor de {ATTR}
-user.profile.set_success={ATTR} establecido como {VALUE} exitosamente
-user.profile.set_failed=Falla al establecer {ATTR}, por favor revise la legalidad de la entrada
-
-rpm.move_up=Mover Arriba
-rpm.move_down=Mover Abajo
-rpm.move_top=Mover Arriba
-
-weather.city_not_found=Ciudad {CITY} no encontrada
-weather.weather_not_found=No se encontró información meteorológica para la ciudad {CITY}
-weather.no_key=Clave API del tiempo no establecida. Por favor, agregue weather_key al archivo de configuración
-
-status.friends=Amigos
-status.groups=Grupos
-status.plugins=Plugins
-status.resources=Paquetes de Recursos
-status.bots=Bots
-status.message_sent=Mensajes Enviados
-status.message_received=Mensajes Recibidos
-status.cpu=CPU
-status.memory=Memoria
-status.swap=Swap
-status.disk=Disco
-status.usage=Uso
-status.total=Total
-status.used=Usado
-status.free=Libre
-status.runtime=Tiempo de Ejecución
-status.days=Días
-status.hours=Horas
-status.minutes=Minutos
-status.seconds=Segundos
-status.cores=Núcleos
-status.threads=Hilos
-status.process=Procesos
-status.description=Liteyuki Dashboard Status
\ No newline at end of file
diff --git a/src/resources/vanilla_language/lang/fr.lang b/src/resources/vanilla_language/lang/fr.lang
deleted file mode 100755
index c74f29c8..00000000
--- a/src/resources/vanilla_language/lang/fr.lang
+++ /dev/null
@@ -1,158 +0,0 @@
-language.name=Français
-
-log.debug=Débogage
-log.info=Information
-log.warning=Avertissement
-log.error=Erreur
-log.success=Succès
-
-liteyuki.restart=Redémarrer
-liteyuki.restart_now=Redémarrer maintenant
-liteyuki.update_restart=Mise à jour terminée. Vous pouvez {RESTART} ou redémarrer manuellement plus tard pour appliquer ces mises à jour.
-liteyuki.current_config=Configuration actuelle
-liteyuki.static_config=Configuration statique des fichiers
-liteyuki.stored_config=Configuration stockée
-liteyuki.config_set_success=La configuration {KEY}={VAL} a été définie avec succès
-liteyuki.stats.group=Groupe
-liteyuki.stats.user=Ami
-liteyuki.stats.plugin=Plugin
-liteyuki.stats.sent=Envoyé
-liteyuki.stats.received=Reçu
-liteyuki.stats.run_time=Temps d'exécution
-liteyuki.stats.groups=Groupes
-liteyuki.stats.friends=Amis
-liteyuki.stats.plugins=Plugins
-liteyuki.image_mode_on=Activer le mode image Markdown
-liteyuki.image_mode_off=Désactiver le mode image Markdown
-liteyuki.invalid_command=Commande ou paramètre {TEXT} invalide
-liteyuki.reload_resources=Recharger les ressources
-liteyuki.list_resources=Liste des ressources
-liteyuki.reload_resources_success=Rechargement réussi des ressources. Total de {NUM} ressources chargées.
-liteyuki.loaded_resources={NUM} ressources chargées, triées par priorité.
-liteyuki.unloaded_resources=Ressources non chargées
-liteyuki.load_resource_success=Chargement réussi de la ressource {NAME}
-liteyuki.unload_resource_success=Déchargement réussi de la ressource {NAME}
-liteyuki.load_resource_failed=Échec du chargement de la ressource {NAME}
-liteyuki.unload_resource_failed=Échec du déchargement de la ressource {NAME}
-liteyuki.resource_not_found=La ressource {NAME} est introuvable ou non manipulable.
-liteyuki.resource_already_loaded=La ressource {NAME} est déjà chargée. Veuillez ne pas répéter l'opération.
-liteyuki.resource_already_unloaded=La ressource {NAME} est déjà déchargée. Veuillez ne pas répéter l'opération.
-liteyuki.need_reload=Veuillez {BTN} pour recharger et appliquer ces mises à jour.
-liteyuki.dont_repeat=Veuillez ne pas répéter l'opération.
-liteyuki.change_priority_success=La priorité de la ressource {NAME} a été modifiée avec succès.
-liteyuki.change_priority_failed=Échec de la modification de la priorité de la ressource {NAME}.
-liteyuki.group_already=Le groupe {GROUP} est déjà {STATUS}. Aucune action nécessaire.
-liteyuki.group_success=Le groupe {GROUP} a été {STATUS} avec succès.
-liteyuki.permission_denied=Permission refusée.
-liteyuki.config_remove_success=La configuration {KEY} a été supprimée avec succès.
-
-main.current_language=Langue actuelle : {LANG}
-main.enable_webdash=Tableau de bord Web activé : {URL}
-main.monitor.title=Tableau de bord de Liteyuki
-main.monitor.description=Tableau de bord de surveillance du robot Liteyuki
-main.monitor.cpu=Processeur
-main.monitor.memory=Mémoire
-main.monitor.swap=Swap
-main.monitor.disk=Disque
-main.monitor.usage=Utilisation
-main.monitor.total=Total
-main.monitor.used=Utilisé
-main.monitor.free=Libre
-
-data_manager.migrate_success=Migration réussie du modèle de données {NAME}
-
-npm.loaded_plugins=Plugins chargés
-npm.total=Total {TOTAL}
-npm.help=Aide
-npm.usage=Utilisation
-npm.description=Description
-npm.disable=Désactiver
-npm.disable_global=Désactiver globalement
-npm.enable=Activer
-npm.enable_global=Activer globalement
-npm.install=Installer
-npm.uninstall=Désinstaller
-npm.installing=Installation de {NAME} en cours
-npm.cannot_uninstall=Impossible de désinstaller
-npm.no_description=Aucune description
-npm.store_update_success=Mise à jour des données du magasin de plugins réussie
-npm.store_update_failed=Échec de la mise à jour des données du magasin de plugins
-npm.search_result=Résultats de la recherche
-npm.search_no_result=Aucun résultat trouvé
-npm.too_many_results=Trop de résultats. {HIDE_NUM} éléments masqués. Veuillez restreindre la recherche par mots-clés.
-npm.install_success=Installation de {NAME} réussie
-npm.install_failed=Échec de l'installation de {NAME}. Consultez les journaux pour plus d'informations. Si le problème persiste, veuillez consulter {HOMEPAGE} pour obtenir de l'aide.
-npm.uninstall_success=Désinstallation de {NAME} réussie. Les modifications prendront effet au prochain redémarrage.
-npm.uninstall_failed=Échec de la désinstallation de {NAME}
-npm.load_failed=Échec du chargement de {NAME}. Veuillez consulter les détails dans la console, vérifier les dépendances ou la configuration. Si le problème persiste, veuillez consulter {HOMEPAGE} pour obtenir de l'aide.
-npm.plugin_not_found=Plugin {NAME} introuvable dans le magasin. Veuillez vérifier l'orthographe ou effectuer une mise à jour du magasin.
-npm.plugin_not_installed={NAME} n'est pas installé
-npm.plugin_already_installed={NAME} est déjà installé. Veuillez ne pas répéter l'opération.
-npm.author=Auteur
-npm.homepage=Page d'accueil
-npm.pypi=PyPI
-npm.next_page=Page suivante
-npm.prev_page=Page précédente
-npm.update=Mettre à jour
-npm.plugin_cannot_be_toggled=Le plugin {NAME} ne peut pas être activé ou désactivé.
-npm.plugin_already=Le plugin {NAME} est déjà {STATUS}. Aucune action nécessaire.
-npm.toggle_failed=Échec de {STATUS} du plugin {NAME} : {ERROR}
-npm.toggle_success={STATUS} du plugin {NAME} réussi
-npm.page=Page {PAGE}/{TOTAL}
-npm.update_index=Mise à jour de l'index des plugins
-npm.list_plugins=Liste des plugins
-npm.disable_session=Désactivation des plugins pour cette session
-npm.enable_session=Activation des plugins pour cette session
-npm.search=Recherche
-
-user.profile.edit=Modifier
-user.profile.set=Définir
-user.profile_manager.query=Votre {ATTR} est {VALUE}
-user.profile_manager.set=Votre {ATTR} a été défini sur {VALUE}
-user.profile.settings=Paramètres
-user.profile.info=Informations personnelles
-user.profile.lang=Langue
-user.profile.lang.desc=Définir la langue de l'utilisateur
-user.profile.timezone=Fuseau horaire
-user.profile.timezone.desc=Définir le fuseau horaire de l'utilisateur
-user.profile.theme=Thème
-user.profile.theme.desc=Définir le thème de l'interface utilisateur de l'utilisateur
-user.profile.location=Emplacement
-user.profile.location.desc=Définir l'emplacement de l'utilisateur
-user.profile.nickname=Pseudo
-user.profile.nickname.desc=Définir le surnom du Bot pour l'utilisateur
-user.profile.input_value=Veuillez entrer une valeur pour {ATTR}
-user.profile.set_success={ATTR} a été défini sur {VALUE} avec succès
-user.profile.set_failed=Échec de la définition de {ATTR}. Veuillez vérifier la validité de l'entrée.
-
-rpm.move_up=Monter
-rpm.move_down=Descendre
-rpm.move_top=En haut
-
-weather.city_not_found=Ville {CITY} non trouvée
-weather.weather_not_found=Les informations météorologiques pour la ville {CITY} n'ont pas été trouvées
-weather.no_key=Aucune clé API météo définie. Veuillez ajouter weather_key au fichier de configuration.
-
-status.friends=Amis
-status.groups=Groupes
-status.plugins=Plugins
-status.resources=Ressources
-status.bots=Bots
-status.message_sent=Messages envoyés
-status.message_received=Messages reçus
-status.cpu=Processeur
-status.memory=Mémoire
-status.swap=Swap
-status.disk=Disque
-status.usage=Utilisation
-status.total=Total
-status.used=Utilisé
-status.free=Libre
-status.runtime=Temps d'exécution
-status.days=Jours
-status.hours=Heures
-status.minutes=Minutes
-status.seconds=Secondes
-status.cores=Cœurs
-status.threads=Threads
-status.process=Processus
\ No newline at end of file
diff --git a/src/resources/vanilla_language/lang/ja.lang b/src/resources/vanilla_language/lang/ja.lang
deleted file mode 100755
index bc4dd33f..00000000
--- a/src/resources/vanilla_language/lang/ja.lang
+++ /dev/null
@@ -1,159 +0,0 @@
-language.name=日本語
-
-log.debug=デバッグ
-log.info=情報
-log.warning=警告
-log.error=エラー
-log.success=成功
-
-liteyuki.restart=再起動
-liteyuki.restart_now=今すぐ再起動
-liteyuki.update_restart=更新が完了しました。{RESTART}または後で手動で再起動して、これらの更新を適用してください
-liteyuki.current_config=現在の設定
-liteyuki.static_config=静的ファイルの設定
-liteyuki.stored_config=保存された設定
-liteyuki.config_set_success=設定 {KEY}={VAL} が正常に設定されました
-liteyuki.stats.group=グループ
-liteyuki.stats.user=友達
-liteyuki.stats.plugin=プラグイン
-liteyuki.stats.sent=送信
-liteyuki.stats.received=受信
-liteyuki.stats.run_time=実行時間
-liteyuki.stats.groups=グループ
-liteyuki.stats.friends=友達
-liteyuki.stats.plugins=プラグイン
-liteyuki.image_mode_on=Markdown画像モードをオンにする
-liteyuki.image_mode_off=Markdown画像モードをオフにする
-liteyuki.invalid_command=無効なコマンドまたはパラメータ {TEXT}
-liteyuki.reload_resources=リソースをリロード
-liteyuki.list_resources=リソースパッケージ一覧
-liteyuki.reload_resources_success=リソースのリロードに成功しました。合計 {NUM} 個のリソースパッケージ
-liteyuki.loaded_resources= {NUM} 個のリソースパッケージが読み込まれました。優先順位でソートされます
-liteyuki.unloaded_resources=読み込まれていないリソースパッケージ
-liteyuki.load_resource_success=リソースパッケージ {NAME} を正常に読み込みました
-liteyuki.unload_resource_success=リソースパッケージ {NAME} を正常にアンロードしました
-liteyuki.load_resource_failed=リソースパッケージ {NAME} の読み込みに失敗しました
-liteyuki.unload_resource_failed=リソースパッケージ {NAME} のアンロードに失敗しました
-liteyuki.resource_not_found=リソースパッケージ {NAME} が見つかりませんまたは操作できません
-liteyuki.resource_already_loaded=リソースパッケージ {NAME} はすでに読み込まれています。重複して実行しないでください
-liteyuki.resource_already_unloaded=リソースパッケージ {NAME} はすでにアンロードされています。重複して実行しないでください
-liteyuki.need_reload=これらの更新を適用するには、{BTN} 再起動してください
-liteyuki.dont_repeat=繰り返さないでください
-liteyuki.change_priority_success=リソースパッケージ {NAME} の優先順位を変更しました
-liteyuki.change_priority_failed=リソースパッケージ {NAME} の優先順位の変更に失敗しました
-liteyuki.group_already=グループ {GROUP} はすでに {STATUS} 状態です。再度操作する必要はありません
-liteyuki.group_success=グループ {GROUP} が {STATUS} されました
-liteyuki.permission_denied=権限がありません
-liteyuki.config_remove_success=設定項目 {KEY} を削除しました
-
-main.current_language=現在の言語設定: {LANG}
-main.enable_webdash=ウェブダッシュボードが有効になりました: {URL}
-main.monitor.title=Liteyuki モニター
-main.monitor.description=Liteyuki ボットの監視パネル
-main.monitor.cpu=CPU
-main.monitor.memory=メモリ
-main.monitor.swap=スワップ
-main.monitor.disk=ディスク
-main.monitor.usage=使用率
-main.monitor.total=合計
-main.monitor.used=使用済み
-main.monitor.free=空き容量
-
-data_manager.migrate_success=データモデル {NAME} が正常に移行されました
-
-npm.loaded_plugins=読み込まれたプラグイン
-npm.total=合計 {TOTAL}
-npm.help=ヘルプ
-npm.usage=使用法
-npm.description=説明
-npm.disable=無効にする
-npm.disable_global=グローバルで無効にする
-npm.enable=有効にする
-npm.enable_global=グローバルで有効にする
-npm.install=インストール
-npm.uninstall=アンインストール
-npm.installing={NAME} をインストールしています
-npm.cannot_uninstall=アンインストールできません
-npm.no_description=説明なし
-npm.store_update_success=プラグインストアのデータが正常に更新されました
-npm.store_update_failed=プラグインストアのデータの更新に失敗しました
-npm.search_result=検索結果
-npm.search_no_result=検索結果がありません
-npm.too_many_results=多すぎる結果です。{HIDE_NUM} 件が非表示にされました。キーワードを絞って検索してください
-npm.install_success={NAME} を正常にインストールしました
-npm.install_failed={NAME} のインストールに失敗しました。ログを参照して詳細情報を取得し、解決できない場合は{HOMEPAGE}を訪問してサポートを求めてください
-npm.uninstall_success={NAME} を正常にアンインストールしました。次回の再起動で有効になります
-npm.uninstall_failed={NAME} のアンインストールに失敗しました
-npm.load_failed={NAME} の読み込みに失敗しました。詳細情報はコンソールで確認し、依存関係または設定が正しいかどうかを確認し、解決できない場合は{HOMEPAGE}を訪問してサポートを求めてください
-npm.plugin_not_found={NAME} がプラグインストアで見つかりませんでした。ストア情報を更新するか、スペルを確認してください
-npm.plugin_not_installed={NAME} がインストールされていません
-npm.plugin_already_installed={NAME} はすでにインストールされています。重複して実行しないでください
-npm.author=作者
-npm.homepage=ホームページ
-npm.pypi=PyPI
-npm.next_page=次のページ
-npm.prev_page=前のページ
-npm.update=更新
-npm.plugin_cannot_be_toggled=プラグイン {NAME} を有効または無効にできません
-npm.plugin_already=プラグイン {NAME} はすでに {STATUS} 状態です。再度操作する必要はありません
-npm.toggle_failed=プラグイン {NAME} を {STATUS} できませんでした: {ERROR}
-npm.toggle_success=プラグイン {NAME} を {STATUS} しました
-npm.page={PAGE}/{TOTAL} ページ
-npm.update_index=プラグインインデックスを更新
-npm.list_plugins=プラグイン一覧
-npm.disable_session=セッション中にプラグインを無効にしました
-npm.enable_session=セッション中にプラグインを有効にしました
-npm.search=検索
-
-user.profile.edit=編集
-user.profile.set=設定
-user.profile_manager.query=あなたのプロファイル {ATTR} は {VALUE} です
-user.profile_manager.set=あなたのプロファイル {ATTR} を {VALUE} に設定しました
-user.profile.settings=設定
-user.profile.info=情報
-user.profile.lang=言語
-user.profile.lang.desc=ユーザーの言語を設定します
-user.profile.timezone=タイムゾーン
-user.profile.timezone.desc=ユーザーの現在のタイムゾーンを設定します
-user.profile.theme=テーマ
-user.profile.theme.desc=ユーザーのUIテーマを設定します
-user.profile.location=位置
-user.profile.location.desc=ユーザーの位置情報を設定します
-user.profile.nickname=ニックネーム
-user.profile.nickname.desc=ボットがユーザーを呼ぶための名前を設定します
-user.profile.input_value={ATTR} の値を入力してください
-user.profile.set_success={ATTR} を {VALUE} に設定しました
-user.profile.set_failed={ATTR} の設定に失敗しました。入力が正しいかどうかを確認してください
-
-rpm.move_up=上に移動
-rpm.move_down=下に移動
-rpm.move_top=トップに移動
-
-weather.city_not_found=都市 {CITY} が見つかりません
-weather.weather_not_found=都市 {CITY} の天気情報が見つかりません
-weather.no_key=天気APIキーが設定されていません。設定ファイルにweather_keyを追加してください
-
-status.friends=友達
-status.groups=グループ
-status.plugins=プラグイン
-status.resources=リソースパッケージ
-status.bots=ボット
-status.message_sent=メッセージを送信
-status.message_received=メッセージを受信
-status.cpu=CPU
-status.memory=メモリ
-status.swap=スワップ
-status.disk=ディスク
-status.usage=使用率
-status.total=合計
-status.used=使用済み
-status.free=空き容量
-status.runtime=実行時間
-status.days=日
-status.hours=時間
-status.minutes=分
-status.seconds=秒
-status.cores=コア
-status.threads=スレッド
-status.process=プロセス
-status.description=軽雪監視パネル
\ No newline at end of file
diff --git a/src/resources/vanilla_language/lang/ko.lang b/src/resources/vanilla_language/lang/ko.lang
deleted file mode 100755
index 1a8e83a8..00000000
--- a/src/resources/vanilla_language/lang/ko.lang
+++ /dev/null
@@ -1,158 +0,0 @@
-language.name=한국어
-
-log.debug=디버그
-log.info=정보
-log.warning=경고
-log.error=오류
-log.success=성공
-
-liteyuki.restart=재시작
-liteyuki.restart_now=즉시 재시작
-liteyuki.update_restart=업데이트가 완료되었습니다. {RESTART}하거나 나중에 수동으로 재시작하여 이 업데이트를 적용할 수 있습니다.
-liteyuki.current_config=현재 구성 항목
-liteyuki.static_config=정적 파일 구성 항목
-liteyuki.stored_config=저장된 구성 항목
-liteyuki.config_set_success=구성 항목 {KEY}={VAL} 설정 성공
-liteyuki.stats.group=그룹
-liteyuki.stats.user=친구
-liteyuki.stats.plugin=플러그인
-liteyuki.stats.sent=전송
-liteyuki.stats.received=수신
-liteyuki.stats.run_time=실행 시간
-liteyuki.stats.groups=그룹
-liteyuki.stats.friends=친구
-liteyuki.stats.plugins=플러그인
-liteyuki.image_mode_on=Markdown 이미지 모드 활성화
-liteyuki.image_mode_off=Markdown 이미지 모드 비활성화
-liteyuki.invalid_command=유효하지 않은 명령 또는 매개변수 {TEXT}
-liteyuki.reload_resources=자원 다시로드
-liteyuki.list_resources=자원 목록
-liteyuki.reload_resources_success=자원 다시로드 성공, 총 {NUM}개 자원 패키지
-liteyuki.loaded_resources=로드된 자원 {NUM}개, 우선 순위별로 정렬됨
-liteyuki.unloaded_resources=로드되지 않은 자원 패키지
-liteyuki.load_resource_success=자원 패키지 {NAME} 로드 성공
-liteyuki.unload_resource_success=자원 패키지 {NAME} 언로드 성공
-liteyuki.load_resource_failed=자원 패키지 {NAME} 로드 실패
-liteyuki.unload_resource_failed=자원 패키지 {NAME} 언로드 실패
-liteyuki.resource_not_found=자원 패키지 {NAME}이(가) 존재하지 않거나 조작할 수 없습니다.
-liteyuki.resource_already_loaded=자원 패키지 {NAME}이(가) 이미 로드되어 있습니다. 중복 작업을 피하세요.
-liteyuki.resource_already_unloaded=자원 패키지 {NAME}이(가) 이미 언로드되어 있습니다. 중복 작업을 피하세요.
-liteyuki.need_reload={BTN}을(를) 다시로드하여 이러한 업데이트를 적용하세요.
-liteyuki.dont_repeat=중복 작업을 피하세요.
-liteyuki.change_priority_success=자원 패키지 {NAME}의 우선 순위가 성공적으로 변경되었습니다.
-liteyuki.change_priority_failed=자원 패키지 {NAME}의 우선 순위 변경에 실패했습니다.
-liteyuki.group_already=그룹 {GROUP}은(는) 이미 {STATUS} 상태이므로 중복 작업을 피하세요.
-liteyuki.group_success=그룹 {GROUP} {STATUS} 성공
-liteyuki.permission_denied=권한이 거부되었습니다.
-liteyuki.config_remove_success=구성 항목 {KEY} 제거 성공
-
-main.current_language=현재 구성 언어: {LANG}
-main.enable_webdash=웹 대시보드가 활성화되었습니다: {URL}
-main.monitor.title=Liteyuki 모니터링 패널
-main.monitor.description=Liteyuki 봇 모니터링 패널
-main.monitor.cpu=CPU
-main.monitor.memory=메모리
-main.monitor.swap=스왑
-main.monitor.disk=디스크
-main.monitor.usage=사용률
-main.monitor.total=총량
-main.monitor.used=사용함
-main.monitor.free=여유
-
-data_manager.migrate_success=데이터 모델 {NAME} 이(가) 성공적으로 이동되었습니다.
-
-npm.loaded_plugins=로드된 플러그인
-npm.total=총 {TOTAL}
-npm.help=도움말
-npm.usage=사용법
-npm.description=설명
-npm.disable=비활성화
-npm.disable_global=전역 비활성화
-npm.enable=활성화
-npm.enable_global=전역 활성화
-npm.install=설치
-npm.uninstall=제거
-npm.installing=설치 중 {NAME}
-npm.cannot_uninstall=제거할 수 없음
-npm.no_description=설명 없음
-npm.store_update_success=플러그인 스토어 업데이트 성공
-npm.store_update_failed=플러그인 스토어 업데이트 실패
-npm.search_result=검색 결과
-npm.search_no_result=검색 결과 없음
-npm.too_many_results=결과가 너무 많습니다. {HIDE_NUM}개의 항목이 숨겨졌습니다. 검색어를 제한하세요.
-npm.install_success={NAME} 설치 성공
-npm.install_failed={NAME} 설치 실패. 자세한 내용은 로그를 확인하거나 문제를 해결할 수 없는 경우 {HOMEPAGE}을(를) 방문하세요.
-npm.uninstall_success={NAME} 제거 성공. 다음 재시작에 적용됩니다.
-npm.uninstall_failed={NAME} 제거 실패
-npm.load_failed={NAME} 로드 실패. 의존성 또는 설정을 확인하고 문제를 해결할 수 없는 경우 {HOMEPAGE}을(를) 방문하세요.
-npm.plugin_not_found={NAME}을(를) 스토어에서 찾을 수 없습니다. 스토어 정보를 업데이트하거나 철자를 확인하세요.
-npm.plugin_not_installed={NAME}이(가) 설치되지 않았습니다.
-npm.plugin_already_installed={NAME}이(가) 이미 설치되었습니다. 중복 설치를 피하세요.
-npm.author=저자
-npm.homepage=홈페이지
-npm.pypi=PyPI
-npm.next_page=다음 페이지
-npm.prev_page=이전 페이지
-npm.update=업데이트
-npm.plugin_cannot_be_toggled={NAME} 플러그인은 활성화 또는 비활성화할 수 없습니다.
-npm.plugin_already={NAME} 플러그인은 이미 {STATUS} 상태입니다. 중복 작업을 피하세요.
-npm.toggle_failed={NAME} 플러그인 {STATUS} 실패: {ERROR}
-npm.toggle_success={NAME} 플러그인 {STATUS} 성공
-npm.page={PAGE}/{TOTAL} 페이지
-npm.update_index=플러그인 인덱스 업데이트
-npm.list_plugins=플러그인 목록
-npm.disable_session=현재 세션에서 플러그인을 비활성화합니다.
-npm.enable_session=현재 세션에서 플러그인을 활성화합니다.
-npm.search=검색
-
-user.profile.edit=수정
-user.profile.set=설정
-user.profile_manager.query=당신의 프로필 {ATTR}은(는) {VALUE}입니다.
-user.profile_manager.set=당신의 프로필 {ATTR}은(는) {VALUE}(으)로 설정되었습니다.
-user.profile.settings=설정
-user.profile.info=프로필 정보
-user.profile.lang=언어
-user.profile.lang.desc=사용자 언어 설정
-user.profile.timezone=시간대
-user.profile.timezone.desc=사용자의 현재 시간대 설정
-user.profile.theme=테마
-user.profile.theme.desc=사용자 인터페이스 테마 설정
-user.profile.location=위치
-user.profile.location.desc=사용자 위치 정보 설정
-user.profile.nickname=별명
-user.profile.nickname.desc=Bot이 사용자를 부를 때 사용되는 이름 설정
-user.profile.input_value={ATTR}의 값을 입력하세요.
-user.profile.set_success={ATTR}가 {VALUE}(으)로 설정되었습니다.
-user.profile.set_failed={ATTR} 설정 실패. 입력이 유효한지 확인하세요.
-
-rpm.move_up=위로 이동
-rpm.move_down=아래로 이동
-rpm.move_top=최상단으로 이동
-
-weather.city_not_found={CITY} 도시를 찾을 수 없습니다.
-weather.weather_not_found={CITY} 도시의 날씨 정보를 찾을 수 없습니다.
-weather.no_key=날씨 API 키가 설정되지 않았습니다. 설정 파일에 weather_key를 추가하세요.
-
-status.friends=친구
-status.groups=그룹
-status.plugins=플러그인
-status.resources=자원 패키지
-status.bots=봇
-status.message_sent=전송된 메시지
-status.message_received=수신된 메시지
-status.cpu=CPU
-status.memory=메모리
-status.swap=스왑
-status.disk=디스크
-status.usage=사용률
-status.total=총량
-status.used=사용함
-status.free=여유
-status.runtime=실행 시간
-status.days=일
-status.hours=시간
-status.minutes=분
-status.seconds=초
-status.cores=코어
-status.threads=스레드
-status.process=프로세스
\ No newline at end of file
diff --git a/src/resources/vanilla_language/lang/ru.lang b/src/resources/vanilla_language/lang/ru.lang
deleted file mode 100755
index 22f694b6..00000000
--- a/src/resources/vanilla_language/lang/ru.lang
+++ /dev/null
@@ -1,158 +0,0 @@
-language.name=Китайский (упрощенный)
-
-log.debug=Отладка
-log.info=Информация
-log.warning=Предупреждение
-log.error=Ошибка
-log.success=Успешно
-
-liteyuki.restart=Перезагрузить
-liteyuki.restart_now=Перезагрузить сейчас
-liteyuki.update_restart=Обновление завершено. Вы можете {RESTART} или перезагрузить вручную позже, чтобы применить эти обновления
-liteyuki.current_config=Текущая конфигурация
-liteyuki.static_config=Конфигурация статических файлов
-liteyuki.stored_config=Сохраненная конфигурация
-liteyuki.config_set_success=Конфигурация {KEY}={VAL} успешно установлена
-liteyuki.stats.group=Группа
-liteyuki.stats.user=Пользователь
-liteyuki.stats.plugin=Плагин
-liteyuki.stats.sent=Отправлено
-liteyuki.stats.received=Получено
-liteyuki.stats.run_time=Время работы
-liteyuki.stats.groups=Группы
-liteyuki.stats.friends=Друзья
-liteyuki.stats.plugins=Плагины
-liteyuki.image_mode_on=Включить режим изображений Markdown
-liteyuki.image_mode_off=Отключить режим изображений Markdown
-liteyuki.invalid_command=Неверная команда или параметр {TEXT}
-liteyuki.reload_resources=Перезагрузить ресурсы
-liteyuki.list_resources=Список ресурсов
-liteyuki.reload_resources_success=Ресурсы успешно перезагружены. Всего {NUM} ресурсов
-liteyuki.loaded_resources=Загружено {NUM} ресурсов, отсортированных по приоритету
-liteyuki.unloaded_resources=Незагруженные ресурсы
-liteyuki.load_resource_success=Ресурс {NAME} успешно загружен
-liteyuki.unload_resource_success=Ресурс {NAME} успешно выгружен
-liteyuki.load_resource_failed=Не удалось загрузить ресурс {NAME}
-liteyuki.unload_resource_failed=Не удалось выгрузить ресурс {NAME}
-liteyuki.resource_not_found=Ресурс {NAME} не найден или не доступен
-liteyuki.resource_already_loaded=Ресурс {NAME} уже загружен, повторная загрузка невозможна
-liteyuki.resource_already_unloaded=Ресурс {NAME} уже выгружен, повторная выгрузка невозможна
-liteyuki.need_reload=Пожалуйста, {BTN}, чтобы применить эти обновления
-liteyuki.dont_repeat=Пожалуйста, не повторяйте эту операцию
-liteyuki.change_priority_success=Приоритет ресурса {NAME} успешно изменен
-liteyuki.change_priority_failed=Не удалось изменить приоритет ресурса {NAME}
-liteyuki.group_already=Группа {GROUP} уже в состоянии {STATUS}, дополнительные действия не требуются
-liteyuki.group_success=Группа {GROUP} {STATUS} успешно
-liteyuki.permission_denied=Недостаточно прав
-liteyuki.config_remove_success=Конфигурация {KEY} успешно удалена
-
-main.current_language=Текущий язык конфигурации: {LANG}
-main.enable_webdash=Веб-панель мониторинга успешно включена: {URL}
-main.monitor.title=Панель мониторинга Lightyuki
-main.monitor.description=Панель мониторинга бота Lightyuki
-main.monitor.cpu=ЦП
-main.monitor.memory=Память
-main.monitor.swap=Подкачка
-main.monitor.disk=Диск
-main.monitor.usage=Использование
-main.monitor.total=Всего
-main.monitor.used=Использовано
-main.monitor.free=Свободно
-
-data_manager.migrate_success=Модель данных {NAME} успешно перенесена
-
-npm.loaded_plugins=Загруженные плагины
-npm.total=Всего {TOTAL}
-npm.help=Помощь
-npm.usage=Использование
-npm.description=Описание
-npm.disable=Отключить
-npm.disable_global=Глобально отключить
-npm.enable=Включить
-npm.enable_global=Глобально включить
-npm.install=Установить
-npm.uninstall=Удалить
-npm.installing=Установка {NAME}
-npm.cannot_uninstall=Невозможно удалить
-npm.no_description=Нет описания
-npm.store_update_success=Обновление данных магазина плагинов успешно завершено
-npm.store_update_failed=Не удалось обновить данные магазина плагинов
-npm.search_result=Результаты поиска
-npm.search_no_result=Нет результатов поиска
-npm.too_many_results=Слишком много результатов, скрыто {HIDE_NUM} позиций. Уточните запрос
-npm.install_success={NAME} успешно установлен
-npm.install_failed={NAME} не удалось установить. Для получения дополнительной информации, пожалуйста, посетите {HOMEPAGE}
-npm.uninstall_success={NAME} успешно удален. Изменения вступят в силу после перезагрузки
-npm.uninstall_failed={NAME} не удалось удалить
-npm.load_failed={NAME} не удалось загрузить. Пожалуйста, проверьте детали в консоли, убедитесь, что зависимости или конфигурация правильны. Если проблема не устранена, посетите {HOMEPAGE}
-npm.plugin_not_found={NAME} не найден в магазине. Попробуйте обновить информацию магазина или проверьте правильность написания
-npm.plugin_not_installed={NAME} не установлен
-npm.plugin_already_installed={NAME} уже установлен, повторная установка невозможна
-npm.author=Автор
-npm.homepage=Домашняя страница
-npm.pypi=PyPI
-npm.next_page=Следующая страница
-npm.prev_page=Предыдущая страница
-npm.update=Обновить
-npm.plugin_cannot_be_toggled=Плагин {NAME} невозможно включить или выключить
-npm.plugin_already=Плагин {NAME} уже в состоянии {STATUS}, дополнительные действия не требуются
-npm.toggle_failed=Не удалось {STATUS} плагин {NAME}: {ERROR}
-npm.toggle_success=Плагин {NAME} успешно {STATUS}
-npm.page=Страница {PAGE}/{TOTAL}
-npm.update_index=Обновить индекс плагинов
-npm.list_plugins=Список плагинов
-npm.disable_session=Отключить плагины для текущей сессии
-npm.enable_session=Включить плагины для текущей сессии
-npm.search=Поиск
-
-user.profile.edit=Редактировать
-user.profile.set=Установить
-user.profile_manager.query=Ваша личная информация {ATTR} - {VALUE}
-user.profile_manager.set=Ваша личная информация {ATTR} успешно установлена как {VALUE}
-user.profile.settings=Настройки
-user.profile.info=Информация о профиле
-user.profile.lang=Язык
-user.profile.lang.desc=Установить язык пользователя
-user.profile.timezone=Часовой пояс
-user.profile.timezone.desc=Установить текущий часовой пояс пользователя
-user.profile.theme=Тема
-user.profile.theme.desc=Установить тему интерфейса пользователя
-user.profile.location=Местоположение
-user.profile.location.desc=Установить информацию о местоположении пользователя
-user.profile.nickname=Псевдоним
-user.profile.nickname.desc=Установить никнейм бота для пользователя
-user.profile.input_value=Пожалуйста, введите значение {ATTR}
-user.profile.set_success={ATTR} успешно установлен как {VALUE}
-user.profile.set_failed=Не удалось установить {ATTR}. Пожалуйста, проверьте введенные данные
-
-rpm.move_up=Поднять
-rpm.move_down=Опустить
-rpm.move_top=Переместить в начало
-
-weather.city_not_found=Город {CITY} не найден
-weather.weather_not_found=Погода для города {CITY} не найдена
-weather.no_key=API-ключ для погоды не установлен. Пожалуйста, добавьте weather_key в конфигурационный файл
-
-status.friends=Друзья
-status.groups=Группы
-status.plugins=Плагины
-status.resources=Ресурсы
-status.bots=Боты
-status.message_sent=Отправленные сообщения
-status.message_received=Полученные сообщения
-status.cpu=Центральный процессор
-status.memory=Память
-status.swap=Подкачка
-status.disk=Диск
-status.usage=Использование
-status.total=Всего
-status.used=Использовано
-status.free=Свободно
-status.runtime=Время работы
-status.days=Дни
-status.hours=Часы
-status.minutes=Минуты
-status.seconds=Секунды
-status.cores=Ядра
-status.threads=Потоки
-status.process=Процессы
\ No newline at end of file
diff --git a/src/resources/vanilla_language/lang/zh-CN.lang b/src/resources/vanilla_language/lang/zh-CN.lang
deleted file mode 100755
index d4197527..00000000
--- a/src/resources/vanilla_language/lang/zh-CN.lang
+++ /dev/null
@@ -1,159 +0,0 @@
-language.name=简体中文
-
-log.debug=调试
-log.info=信息
-log.warning=警告
-log.error=错误
-log.success=成功
-
-liteyuki.restart=重启
-liteyuki.restart_now=立即重启
-liteyuki.update_restart=更新完成,你可以{RESTART}或稍后手动重启以应用这些更新
-liteyuki.current_config=当前配置项如下
-liteyuki.static_config=静态文件配置项
-liteyuki.stored_config=储存的配置项
-liteyuki.config_set_success=配置项 {KEY}={VAL} 设置成功
-liteyuki.stats.group=群
-liteyuki.stats.user=好友
-liteyuki.stats.plugin=插件
-liteyuki.stats.sent=发送
-liteyuki.stats.received=接收
-liteyuki.stats.run_time=运行时间
-liteyuki.stats.groups=群
-liteyuki.stats.friends=好友
-liteyuki.stats.plugins=插件
-liteyuki.image_mode_on=开启Markdown图片模式
-liteyuki.image_mode_off=关闭Markdown图片模式
-liteyuki.invalid_command=无效的命令或参数 {TEXT}
-liteyuki.reload_resources=重载资源
-liteyuki.list_resources=资源包列表
-liteyuki.reload_resources_success=资源重载成功,共计 {NUM} 个资源包
-liteyuki.loaded_resources=已加载 {NUM} 个资源包,按照优先级排序
-liteyuki.unloaded_resources=未加载资源包
-liteyuki.load_resource_success=资源包 {NAME} 加载成功
-liteyuki.unload_resource_success=资源包 {NAME} 卸载成功
-liteyuki.load_resource_failed=资源包 {NAME} 加载失败
-liteyuki.unload_resource_failed=资源包 {NAME} 卸载失败
-liteyuki.resource_not_found=资源包 {NAME} 不存在或不可操作
-liteyuki.resource_already_loaded=资源包 {NAME} 已加载,请勿重复操作
-liteyuki.resource_already_unloaded=资源包 {NAME} 已卸载,请勿重复操作
-liteyuki.need_reload=请{BTN}重载以应用这些更新
-liteyuki.dont_repeat=请勿重复操作
-liteyuki.change_priority_success=资源包 {NAME} 优先级修改成功
-liteyuki.change_priority_failed=资源包 {NAME} 优先级修改失败
-liteyuki.group_already=群 {GROUP} 已经是 {STATUS} 状态,无需重复操作
-liteyuki.group_success=群 {GROUP} {STATUS} 成功
-liteyuki.permission_denied=权限不足
-liteyuki.config_remove_success=配置项 {KEY} 移除成功
-
-main.current_language=当前配置语言为: {LANG}
-main.enable_webdash=已启用网页监控面板: {URL}
-main.monitor.title=轻雪监控面板
-main.monitor.description=轻雪机器人监控面板
-main.monitor.cpu=处理器
-main.monitor.memory=内存
-main.monitor.swap=交换空间
-main.monitor.disk=磁盘
-main.monitor.usage=使用率
-main.monitor.total=总计
-main.monitor.used=已用
-main.monitor.free=空闲
-
-data_manager.migrate_success=数据模型{NAME}迁移成功
-
-npm.loaded_plugins=已加载插件
-npm.total=总计 {TOTAL}
-npm.help=帮助
-npm.usage=用法
-npm.description=描述
-npm.disable=停用
-npm.disable_global=全局停用
-npm.enable=启用
-npm.enable_global=全局启用
-npm.install=安装
-npm.uninstall=卸载
-npm.installing=正在安装 {NAME}
-npm.cannot_uninstall=无法卸载
-npm.no_description=无描述
-npm.store_update_success=插件商店数据更新成功
-npm.store_update_failed=插件商店数据更新失败
-npm.search_result=搜索结果
-npm.search_no_result=无搜索结果
-npm.too_many_results=内容过多,{HIDE_NUM}项已隐藏,请限制关键字搜索
-npm.install_success={NAME} 安装成功
-npm.install_failed={NAME} 安装失败,请查看日志获取详细信息,如不能解决,请访问{HOMEPAGE}寻求帮助
-npm.uninstall_success={NAME} 卸载成功,下次重启生效
-npm.uninstall_failed={NAME} 卸载失败
-npm.load_failed={NAME} 加载失败,请在控制台查看详细信息,检查依赖或配置是否正确,如不能解决,请访问{HOMEPAGE}寻求帮助
-npm.plugin_not_found=未在商店中找到 {NAME},请尝试更新商店信息或检查拼写
-npm.plugin_not_installed={NAME} 未安装
-npm.plugin_already_installed={NAME} 已安装,请勿重复安装
-npm.author=作者
-npm.homepage=主页
-npm.pypi=PyPI
-npm.next_page=下一页
-npm.prev_page=上一页
-npm.update=更新
-npm.plugin_cannot_be_toggled=插件 {NAME} 无法被启用或停用
-npm.plugin_already=插件 {NAME} 已经是 {STATUS} 状态,无需重复操作
-npm.toggle_failed=插件 {NAME} {STATUS} 失败: {ERROR}
-npm.toggle_success=插件 {NAME} {STATUS} 成功
-npm.page=第{PAGE}/{TOTAL}页
-npm.update_index=更新插件索引
-npm.list_plugins=插件列表
-npm.disable_session=当前会话停用插件
-npm.enable_session=当前会话启用插件
-npm.search=搜索
-
-user.profile.edit=修改
-user.profile.set=设置
-user.profile_manager.query=你的个人信息 {ATTR} 为 {VALUE}
-user.profile_manager.set=你的个人信息 {ATTR} 已设置为 {VALUE}
-user.profile.settings=设置
-user.profile.info=个人信息
-user.profile.lang=语言
-user.profile.lang.desc=设置用户语言
-user.profile.timezone=时区
-user.profile.timezone.desc=设置用户当前时区
-user.profile.theme=主题
-user.profile.theme.desc=设置用户界面主题
-user.profile.location=位置
-user.profile.location.desc=设置用户位置信息
-user.profile.nickname=称呼
-user.profile.nickname.desc=设置Bot对用户的称呼
-user.profile.input_value=请输入 {ATTR} 的值
-user.profile.set_success=成功将 {ATTR} 设置为 {VALUE}
-user.profile.set_failed=设置 {ATTR} 失败,请检查输入是否合法
-
-rpm.move_up=上移
-rpm.move_down=下移
-rpm.move_top=置顶
-
-weather.city_not_found=未找到城市 {CITY}
-weather.weather_not_found=未找到城市 {CITY} 的天气信息
-weather.no_key=未设置天气api key,请在配置文件添加weather_key
-
-status.friends=好友
-status.groups=群
-status.plugins=插件
-status.resources=资源包
-status.bots=机器人
-status.message_sent=发送消息
-status.message_received=接收消息
-status.cpu=处理器
-status.memory=内存
-status.swap=交换空间
-status.disk=磁盘
-status.usage=使用率
-status.total=总计
-status.used=已用
-status.free=空闲
-status.runtime=运行时间
-status.days=天
-status.hours=时
-status.minutes=分
-status.seconds=秒
-status.cores=核心
-status.threads=线程
-status.process=进程
-status.description=轻雪机器人状态面板
\ No newline at end of file
diff --git a/src/resources/vanilla_language/lang/zh-HK.lang b/src/resources/vanilla_language/lang/zh-HK.lang
deleted file mode 100755
index de108fa2..00000000
--- a/src/resources/vanilla_language/lang/zh-HK.lang
+++ /dev/null
@@ -1,158 +0,0 @@
-language.name=繁體中文(香港)
-
-log.debug=偵錯
-log.info=資訊
-log.warning=警告
-log.error=錯誤
-log.success=成功
-
-liteyuki.restart=重新啟動
-liteyuki.restart_now=立即重新啟動
-liteyuki.update_restart=更新完成,你可以{RESTART}或稍後手動重新啟動以應用這些更新
-liteyuki.current_config=當前設定如下
-liteyuki.static_config=靜態檔案設定
-liteyuki.stored_config=儲存的設定
-liteyuki.config_set_success=設定項 {KEY}={VAL} 設定成功
-liteyuki.stats.group=群組
-liteyuki.stats.user=用戶
-liteyuki.stats.plugin=插件
-liteyuki.stats.sent=發送
-liteyuki.stats.received=接收
-liteyuki.stats.run_time=執行時間
-liteyuki.stats.groups=群組
-liteyuki.stats.friends=好友
-liteyuki.stats.plugins=插件
-liteyuki.image_mode_on=開啟 Markdown 圖片模式
-liteyuki.image_mode_off=關閉 Markdown 圖片模式
-liteyuki.invalid_command=無效的命令或參數 {TEXT}
-liteyuki.reload_resources=重新載入資源
-liteyuki.list_resources=資源包列表
-liteyuki.reload_resources_success=資源重新載入成功,共計 {NUM} 個資源包
-liteyuki.loaded_resources=已載入 {NUM} 個資源包,按照優先級排序
-liteyuki.unloaded_resources=未載入資源包
-liteyuki.load_resource_success=資源包 {NAME} 載入成功
-liteyuki.unload_resource_success=資源包 {NAME} 卸載成功
-liteyuki.load_resource_failed=資源包 {NAME} 載入失敗
-liteyuki.unload_resource_failed=資源包 {NAME} 卸載失敗
-liteyuki.resource_not_found=資源包 {NAME} 不存在或無法操作
-liteyuki.resource_already_loaded=資源包 {NAME} 已載入,請勿重複操作
-liteyuki.resource_already_unloaded=資源包 {NAME} 已卸載,請勿重複操作
-liteyuki.need_reload=請{BTN}重新載入以應用這些更新
-liteyuki.dont_repeat=請勿重複操作
-liteyuki.change_priority_success=資源包 {NAME} 優先級修改成功
-liteyuki.change_priority_failed=資源包 {NAME} 優先級修改失敗
-liteyuki.group_already=群組 {GROUP} 已經是 {STATUS} 狀態,無需重複操作
-liteyuki.group_success=群組 {GROUP} {STATUS} 成功
-liteyuki.permission_denied=權限不足
-liteyuki.config_remove_success=設定項 {KEY} 移除成功
-
-main.current_language=當前語言設定為: {LANG}
-main.enable_webdash=已啟用網頁監控面板: {URL}
-main.monitor.title=輕雪監控面板
-main.monitor.description=輕雪機器人監控面板
-main.monitor.cpu=處理器
-main.monitor.memory=記憶體
-main.monitor.swap=交換空間
-main.monitor.disk=磁碟
-main.monitor.usage=使用率
-main.monitor.total=總計
-main.monitor.used=已使用
-main.monitor.free=空閒
-
-data_manager.migrate_success=數據模型{NAME}遷移成功
-
-npm.loaded_plugins=已載入插件
-npm.total=總計 {TOTAL}
-npm.help=幫助
-npm.usage=用法
-npm.description=描述
-npm.disable=停用
-npm.disable_global=全域停用
-npm.enable=啟用
-npm.enable_global=全域啟用
-npm.install=安裝
-npm.uninstall=卸載
-npm.installing=正在安裝 {NAME}
-npm.cannot_uninstall=無法卸載
-npm.no_description=無描述
-npm.store_update_success=插件商店數據更新成功
-npm.store_update_failed=插件商店數據更新失敗
-npm.search_result=搜索結果
-npm.search_no_result=無搜索結果
-npm.too_many_results=結果過多,{HIDE_NUM}項已隱藏,請限制關鍵字搜索
-npm.install_success={NAME} 安裝成功
-npm.install_failed={NAME} 安裝失敗,請查看日誌獲取詳細信息,如無法解決,請訪問{HOMEPAGE}尋求幫助
-npm.uninstall_success={NAME} 卸載成功,下次重啟生效
-npm.uninstall_failed={NAME} 卸載失敗
-npm.load_failed={NAME} 加載失敗,請在控制台查看詳細信息,檢查依賴或配置是否正確,如無法解決,請訪問{HOMEPAGE}尋求幫助
-npm.plugin_not_found=未在商店中找到 {NAME},請嘗試更新商店信息或檢查拼寫
-npm.plugin_not_installed={NAME} 未安裝
-npm.plugin_already_installed={NAME} 已安裝,請勿重複安裝
-npm.author=作者
-npm.homepage=主頁
-npm.pypi=PyPI
-npm.next_page=下一頁
-npm.prev_page=上一頁
-npm.update=更新
-npm.plugin_cannot_be_toggled=插件 {NAME} 無法被啟用或停用
-npm.plugin_already=插件 {NAME} 已經是 {STATUS} 狀態,無需重複操作
-npm.toggle_failed=插件 {NAME} {STATUS} 失敗: {ERROR}
-npm.toggle_success=插件 {NAME} {STATUS} 成功
-npm.page=第{PAGE}/{TOTAL}頁
-npm.update_index=更新插件索引
-npm.list_plugins=插件列表
-npm.disable_session=當前會話停用插件
-npm.enable_session=當前會話啟用插件
-npm.search=搜索
-
-user.profile.edit=修改
-user.profile.set=設定
-user.profile_manager.query=您的個人資訊 {ATTR} 為 {VALUE}
-user.profile_manager.set=您的個人資訊 {ATTR} 已設定為 {VALUE}
-user.profile.settings=設定
-user.profile.info=個人資訊
-user.profile.lang=語言
-user.profile.lang.desc=設定用戶語言
-user.profile.timezone=時區
-user.profile.timezone.desc=設定用戶當前時區
-user.profile.theme=主題
-user.profile.theme.desc=設定用戶介面主題
-user.profile.location=位置
-user.profile.location.desc=設定用戶位置資訊
-user.profile.nickname=稱呼
-user.profile.nickname.desc=設定 Bot 對用戶的稱呼
-user.profile.input_value=請輸入 {ATTR} 的值
-user.profile.set_success=成功將 {ATTR} 設定為 {VALUE}
-user.profile.set_failed=設定 {ATTR} 失敗,請檢查輸入是否合法
-
-rpm.move_up=上移
-rpm.move_down=下移
-rpm.move_top=置頂
-
-weather.city_not_found=未找到城市 {CITY}
-weather.weather_not_found=未找到城市 {CITY} 的天氣信息
-weather.no_key=未設定天氣 API 金鑰,請在設定文件添加 weather_key
-
-status.friends=好友
-status.groups=群組
-status.plugins=插件
-status.resources=資源包
-status.bots=機器人
-status.message_sent=發送消息
-status.message_received=接收消息
-status.cpu=處理器
-status.memory=記憶體
-status.swap=交換空間
-status.disk=磁碟
-status.usage=使用率
-status.total=總計
-status.used=已用
-status.free=空閒
-status.runtime=運行時間
-status.days=天
-status.hours=小時
-status.minutes=分鐘
-status.seconds=秒
-status.cores=核心
-status.threads=線程
-status.process=進程
\ No newline at end of file
diff --git a/src/resources/vanilla_language/lang/zh-Kawaii.lang b/src/resources/vanilla_language/lang/zh-Kawaii.lang
deleted file mode 100755
index e2ec2c4f..00000000
--- a/src/resources/vanilla_language/lang/zh-Kawaii.lang
+++ /dev/null
@@ -1,158 +0,0 @@
-language.name=简体中文
-
-log.debug=嘿嘿,调试一下
-log.info=嗯嗯,资讯来啦
-log.warning=哎哟,小心哟
-log.error=糟糕,出错啦
-log.success=耶耶,成功啦
-
-liteyuki.restart=重新来过
-liteyuki.restart_now=立刻重启
-liteyuki.update_restart=更新完成啦!快{RESTART}或等会儿手动重启,让更新生效吧!
-liteyuki.current_config=现在的设置是这样滴~
-liteyuki.static_config=静态文件设置
-liteyuki.stored_config=存储的设置
-liteyuki.config_set_success=嘿嘿,设置成功啦!{KEY}={VAL}
-liteyuki.stats.group=群组
-liteyuki.stats.user=小伙伴
-liteyuki.stats.plugin=插件
-liteyuki.stats.sent=发出去啦
-liteyuki.stats.received=收到啦
-liteyuki.stats.run_time=运行时间
-liteyuki.stats.groups=群组
-liteyuki.stats.friends=小伙伴
-liteyuki.stats.plugins=插件
-liteyuki.image_mode_on=嘿嘿,开启Markdown图片模式啦
-liteyuki.image_mode_off=啊呀,关闭Markdown图片模式啦
-liteyuki.invalid_command=咦?无效的命令或参数哦:{TEXT}
-liteyuki.reload_resources=重新载入资源
-liteyuki.list_resources=资源包列表
-liteyuki.reload_resources_success=资源重载成功啦!共有{NUM}个资源包哦~
-liteyuki.loaded_resources=嘿嘿,已经加载了{NUM}个资源包啦,按照优先级排序哦~
-liteyuki.unloaded_resources=嗯嗯,还有一些资源包没加载呢~
-liteyuki.load_resource_success=资源包{name}加载成功啦!
-liteyuki.unload_resource_success=资源包{name}卸载成功啦!
-liteyuki.load_resource_failed=资源包{name}加载失败啦~
-liteyuki.unload_resource_failed=资源包{name}卸载失败啦~
-liteyuki.resource_not_found=资源包{name}不存在或无法操作呢~
-liteyuki.resource_already_loaded=资源包{name}已经加载啦,不要重复操作哦~
-liteyuki.resource_already_unloaded=资源包{name}已经卸载啦,不要重复操作哦~
-liteyuki.need_reload=嘿嘿,{BTN}重新载入以应用这些更新呢~
-liteyuki.dont_repeat=别重复操作哦~
-liteyuki.change_priority_success=资源包{name}优先级修改成功啦~
-liteyuki.change_priority_failed=资源包{name}优先级修改失败啦~
-liteyuki.group_already=群组{GROUP}已经是{STATUS}状态啦,不用再操作啦~
-liteyuki.group_success=群组{GROUP}{STATUS}成功啦~
-liteyuki.permission_denied=啊哦,权限不够啦~
-liteyuki.config_remove_success=配置项{KEY}移除成功啦~
-
-main.current_language=现在的语言是:{LANG}
-main.enable_webdash=已经启用网页监控面板啦:{URL}
-main.monitor.title=轻雪监控面板
-main.monitor.description=轻雪机器人监控面板,超可爱的哦~
-main.monitor.cpu=处理器
-main.monitor.memory=内存
-main.monitor.swap=交换空间
-main.monitor.disk=磁盘
-main.monitor.usage=使用率
-main.monitor.total=总共
-main.monitor.used=已用
-main.monitor.free=剩余
-
-data_manager.migrate_success=数据模型{name}迁移成功啦~
-
-npm.loaded_plugins=已加载的插件
-npm.total=总共有{TOTAL}个哦~
-npm.help=帮助
-npm.usage=使用方法
-npm.description=描述
-npm.disable=停用
-npm.disable_global=全局停用
-npm.enable=启用
-npm.enable_global=全局启用
-npm.install=安装
-npm.uninstall=卸载
-npm.installing=正在安装{name}呢~
-npm.cannot_uninstall=无法卸载哦~
-npm.no_description=没有描述哦~
-npm.store_update_success=插件商店数据更新成功啦~
-npm.store_update_failed=插件商店数据更新失败啦~
-npm.search_result=搜索结果
-npm.search_no_result=没有搜索结果呢~
-npm.too_many_results=搜索结果太多啦,请尽量缩小搜索范围哦~
-npm.install_success={name}安装成功啦~
-npm.install_failed={name}安装失败啦,请查看日志获取详细信息哦~
-npm.uninstall_success={name}卸载成功啦~下次重启生效哦~
-npm.uninstall_failed={name}卸载失败啦~
-npm.load_failed={name}加载失败啦,请检查依赖或配置是否正确哦~
-npm.plugin_not_found=在商店里找不到{name}呢,请尝试更新商店信息或检查拼写哦~
-npm.plugin_not_installed={name}还没安装哦~
-npm.plugin_already_installed={name}已经安装啦,不要重复操作哦~
-npm.author=作者
-npm.homepage=主页
-npm.pypi=PyPI
-npm.next_page=下一页
-npm.prev_page=上一页
-npm.update=更新
-npm.plugin_cannot_be_toggled=插件{name}不能被启用或停用哦~
-npm.plugin_already=插件{name}已经是{STATUS}状态啦,不用再操作啦~
-npm.toggle_failed=插件{name}{STATUS}失败啦:{ERROR}
-npm.toggle_success=插件{name}{STATUS}成功啦~
-npm.page=第{PAGE}/{TOTAL}页
-npm.update_index=更新插件索引
-npm.list_plugins=插件列表
-npm.disable_session=当前会话停用插件
-npm.enable_session=当前会话启用插件
-npm.search=搜索
-
-user.profile.edit=修改
-user.profile.set=设置
-user.profile_manager.query=您的个人信息 {ATTR} 是 {VALUE} 哦~
-user.profile_manager.set=您的个人信息 {ATTR} 已经设置成 {VALUE} 哦~
-user.profile.settings=设置
-user.profile.info=个人信息
-user.profile.lang=语言
-user.profile.lang.desc=设置用户语言哦~
-user.profile.timezone=时区
-user.profile.timezone.desc=设置用户时区哦~
-user.profile.theme=主题
-user.profile.theme.desc=设置用户界面主题哦~
-user.profile.location=位置
-user.profile.location.desc=设置用户位置信息哦~
-user.profile.nickname=昵称
-user.profile.nickname.desc=设置 Bot 对用户的昵称哦~
-user.profile.input_value=请输入 {ATTR} 的值
-user.profile.set_success={ATTR} 成功设置成 {VALUE} 哦~
-user.profile.set_failed=设置 {ATTR} 失败啦~请检查输入是否合法哦~
-
-rpm.move_up=上移
-rpm.move_down=下移
-rpm.move_top=置顶
-
-weather.city_not_found=找不到城市{name}哦~
-weather.weather_not_found=找不到城市{name}的天气信息呢~
-weather.no_key=咦?还没设置天气 API 呢,快在配置文件里添加 weather_key 吧~
-
-status.friends=好友
-status.groups=群组
-status.plugins=插件
-status.resources=资源包
-status.bots=机器人
-status.message_sent=发送的消息
-status.message_received=接收的消息
-status.cpu=处理器
-status.memory=内存
-status.swap=交换空间
-status.disk=磁盘
-status.usage=使用率
-status.total=总计
-status.used=已使用
-status.free=空闲
-status.runtime=运行时间
-status.days=天
-status.hours=小时
-status.minutes=分钟
-status.seconds=秒
-status.cores=核心
-status.threads=线程
-status.process=进程
\ No newline at end of file
diff --git a/src/resources/vanilla_language/lang/zh-MS.lang b/src/resources/vanilla_language/lang/zh-MS.lang
deleted file mode 100755
index 1687d618..00000000
--- a/src/resources/vanilla_language/lang/zh-MS.lang
+++ /dev/null
@@ -1,159 +0,0 @@
-language.name=稀奇古怪的语言
-
-log.debug=调戏
-log.info=情报
-log.warning=警告警告
-log.error=错误错了
-log.success=成功达成
-
-liteyuki.restart=重新开始
-liteyuki.restart_now=立即重开
-liteyuki.update_restart=更完成,你可以{RESTART}或稍后手动重开来开启这些新的法术
-liteyuki.current_config=当前构建来袭
-liteyuki.static_config=规则设置
-liteyuki.stored_config=存储的神秘宝藏
-liteyuki.config_set_success=配置项 {KEY}={VAL} 非常有趣地设定成功
-liteyuki.stats.group=群组
-liteyuki.stats.user=神秘对象
-liteyuki.stats.plugin=魔法咒语
-liteyuki.stats.sent=传送成功
-liteyuki.stats.received=接收到
-liteyuki.stats.run_time=时间流逝
-liteyuki.stats.groups=群体
-liteyuki.stats.friends=亲密朋友
-liteyuki.stats.plugins=神奇咒语
-liteyuki.image_mode_on=魔法阵开启,Markdown图片模式启动
-liteyuki.image_mode_off=魔法阵解除,Markdown图片模式关闭
-liteyuki.invalid_command=不合理的命令或参数 {TEXT}
-liteyuki.reload_resources=重新装载资源
-liteyuki.list_resources=寻宝资源列表
-liteyuki.reload_resources_success=资源重新装载成功,神秘的{NUM}个资源包呈现在你的眼前
-liteyuki.loaded_resources=加载了{NUM}个奇幻资源包,按优先级排序
-liteyuki.unloaded_resources=神秘资源包未加载
-liteyuki.load_resource_success=神秘资源包 {NAME} 被你发现并加载
-liteyuki.unload_resource_success=神秘资源包 {NAME} 解除装载
-liteyuki.load_resource_failed=神秘资源包 {NAME} 消失了
-liteyuki.unload_resource_failed=神秘资源包 {NAME} 永远解除不了
-liteyuki.resource_not_found=寻宝失败,资源包 {NAME} 消失在地平线
-liteyuki.resource_already_loaded=神秘资源包 {NAME} 已经被解锁了,不用再次操作
-liteyuki.resource_already_unloaded=神秘资源包 {NAME} 已经不复存在
-liteyuki.need_reload=你需要{BTN}重新装载才能启用这些更新
-liteyuki.dont_repeat=重复的行为不被魔法接受
-liteyuki.change_priority_success=神秘资源包 {NAME} 优先级变更成功
-liteyuki.change_priority_failed=神秘资源包 {NAME} 优先级变更失败
-liteyuki.group_already=群 {GROUP} 已经被 {STATUS},不用再操作了
-liteyuki.group_success=群 {GROUP} 已经 {STATUS} 成功
-liteyuki.permission_denied=权限不足,被魔法屏蔽
-liteyuki.config_remove_success=配置项 {KEY} 成功消失在黑暗之中
-
-main.current_language=当前选择的秘密语言是:{LANG}
-main.enable_webdash=啊哈,网页监控面板已被启用:{URL}
-main.monitor.title=神秘监视塔
-main.monitor.description=魔法眼正在注视着你的每一个动作
-main.monitor.cpu=中国药科大学
-main.monitor.memory=回忆
-main.monitor.swap=换个地方
-main.monitor.disk=神秘碟片
-main.monitor.usage=使用
-main.monitor.total=满计
-main.monitor.used=已经被用光了
-main.monitor.free=魔法保护中
-
-data_manager.migrate_success=数据模型{NAME}成功变身
-
-npm.loaded_plugins=魔法插件已经装载
-npm.total=总统 {TOTAL} 件奇怪的魔法
-npm.help=助我一臂之力
-npm.usage=使用法术
-npm.description=说一说
-npm.disable=停一停
-npm.disable_global=全球都停
-npm.enable=用一用
-npm.enable_global=全球都用
-npm.install=装一装
-npm.uninstall=解除魔法
-npm.installing=正在释放{name}的魔力
-npm.cannot_uninstall=无法解除
-npm.no_description=咦?这个法术并没有说明书
-npm.store_update_success=插件商店中的魔法书已经更新
-npm.store_update_failed=插件商店中的魔法书更新失败
-npm.search_result=搜索到宝藏
-npm.search_no_result=什么都没找到,可能被巫师藏起来了
-npm.too_many_results=结果太多了,{HIDE_NUM}个被隐藏起来,只展示给了你
-npm.install_success={NAME}成功附身
-npm.install_failed={NAME}附身失败,查看日志以了解详情,如果无法解决,请访问{HOMEPAGE}求助
-npm.uninstall_success={NAME}成功解除魔法,下次重启生效
-npm.uninstall_failed={NAME}解除魔法失败
-npm.load_failed={NAME}魔法咒语加载失败,请在控制台寻找线索,或者访问{HOMEPAGE}寻求帮助
-npm.plugin_not_found=在黑暗中找不到{name},请尝试更新商店或检查你的咒语
-npm.plugin_not_installed={NAME}并没有被释放
-npm.plugin_already_installed={NAME}已经附身,请勿重复释放
-npm.author=法师
-npm.homepage=魔法门
-npm.pypi=PyPI
-npm.next_page==进!
-npm.prev_page=撤!
-npm.update=新术
-npm.plugin_cannot_be_toggled={NAME}咒语无法变化状态
-npm.plugin_already={NAME}已经是{STATUS}状态,无需再次操作
-npm.toggle_failed=咒语 {NAME} {STATUS} 失败:{ERROR}
-npm.toggle_success=咒语 {NAME} {STATUS} 成功
-npm.page=第{PAGE}/{TOTAL}页
-npm.update_index=更新法术索引
-npm.list_plugins=咒语列表
-npm.disable_session=当前会话中的咒语被屏蔽
-npm.enable_session=当前会话中的咒语被解除屏蔽
-npm.search=寻找黑暗中的宝藏
-
-user.profile.edit=改变命运
-user.profile.set=命定
-user.profile_manager.query=您的神秘信息 {ATTR} 为 {VALUE}
-user.profile_manager.set=您的神秘信息 {ATTR} 已经被改写成 {VALUE}
-user.profile.settings=设置
-user.profile.info=命运信息
-user.profile.lang=魔法语言
-user.profile.lang.desc=选择您的魔法语言
-user.profile.timezone=时光漩涡
-user.profile.timezone.desc=调整您的时光轨迹
-user.profile.theme=魔法主题
-user.profile.theme.desc=选择您的魔法主题
-user.profile.location=奇幻地点
-user.profile.location.desc=标定您的奇幻地点
-user.profile.nickname=魔法称号
-user.profile.nickname.desc=设置 Bot 对您的称呼
-user.profile.input_value=请输入 {ATTR} 的魔法数值
-user.profile.set_success={ATTR} 已经被设定成 {VALUE}
-user.profile.set_failed={ATTR} 咒语无法被改写,请检查您的输入是否合法
-
-rpm.move_up=向上移动
-rpm.move_down=向下移动
-rpm.move_top=置顶
-
-weather.city_not_found=城市 {CITY} 被魔法抹去了
-weather.weather_not_found=城市 {CITY} 的天气信息被魔法屏蔽了
-weather.no_key=天气预报 API 的宝藏尚未被发现,请在您的魔法书中添加 weather_key
-
-status.friends=朋友
-status.groups=群体
-status.plugins=咒语
-status.resources=神秘物品
-status.bots=奇幻生物
-status.message_sent=发送了消息
-status.message_received=接收到了消息
-status.cpu=中国药科大学
-status.memory=回忆
-status.swap=换个地方
-status.disk=神秘碟片
-status.usage=使用
-status.total=满计
-status.used=已经被用掉了
-status.free=魔法保护中
-status.runtime=时间流逝
-status.days=日天
-status.hours=小时
-status.minutes=分钟
-status.seconds=秒钟
-status.cores=精髓
-status.threads=螺纹
-status.process=工序
-status.description=轻雪秘法展示塔
\ No newline at end of file
diff --git a/src/resources/vanilla_language/lang/zh-WY.lang b/src/resources/vanilla_language/lang/zh-WY.lang
deleted file mode 100755
index 36fe7482..00000000
--- a/src/resources/vanilla_language/lang/zh-WY.lang
+++ /dev/null
@@ -1,159 +0,0 @@
-language.name=文言
-
-log.debug=试言
-log.info=讯文
-log.warning=警示
-log.error=查误
-log.success=名成
-
-liteyuki.restart=复启
-liteyuki.restart_now=即复启
-liteyuki.update_restart=新服既成,或{RESTART}于此,或待后躬行
-liteyuki.current_config=今规制如左
-liteyuki.static_config=机置规制
-liteyuki.stored_config=所贮规制
-liteyuki.config_set_success=乃令规制 {KEY} 为 {VAL} 而成焉
-liteyuki.stats.group=羣
-liteyuki.stats.user=友
-liteyuki.stats.plugin=件
-liteyuki.stats.sent=即传
-liteyuki.stats.received=所受
-liteyuki.stats.run_time=所启时分
-liteyuki.stats.groups=羣
-liteyuki.stats.friends=友
-liteyuki.stats.plugins=件
-liteyuki.image_mode_on=展圖之術
-liteyuki.image_mode_off=收圖之術
-liteyuki.invalid_command=彼 {TEXT} 之言无所指
-liteyuki.reload_resources=复誊件资
-liteyuki.list_resources=件资
-liteyuki.reload_resources_success=件资所誊即成,其数有 {NUM}
-liteyuki.loaded_resources=誊件资 {NUM} 而循优先之次
-liteyuki.unloaded_resources=件资已除
-liteyuki.load_resource_success=件资曰 {NAME} 者,方誊成
-liteyuki.unload_resource_success=件资曰 {NAME} 者,方除也
-liteyuki.load_resource_failed=件资曰 {NAME} 者,无以誊
-liteyuki.unload_resource_failed=件资曰 {NAME} 者,无以除
-liteyuki.resource_not_found=件资曰 {NAME} 者,不可求
-liteyuki.resource_already_loaded=件资曰 {NAME} 者,方誊
-liteyuki.resource_already_unloaded=件资曰 {NAME} ,方除
-liteyuki.need_reload=谨{BTN}复誊以新
-liteyuki.dont_repeat=勿复行
-liteyuki.change_priority_success=方变件资曰 {NAME} 者优先之次
-liteyuki.change_priority_failed=件资曰 {NAME} 者优先之次无以变
-liteyuki.group_already=羣号曰 {GROUP} 者,已{STATUS},勿复行
-liteyuki.group_success=羣号曰 {GROUP} 者,方{STATUS}成
-liteyuki.permission_denied=权不及也
-liteyuki.config_remove_success=规制 {KEY} 方去也
-
-main.current_language=往复四海皆蛮夷,惟我华夏泱泱。行见闻之广,无可匹敌。故而此番作 {LANG} 之文,以彰圣朝大德。
-main.enable_webdash=令 {URL} 为遥讯监阁
-main.monitor.title=轻雪监阁
-main.monitor.description=工造机巧曰轻雪者,今有司赏监察之大德,为其新添一隅,曰:轻雪监阁
-main.monitor.cpu=卷枢
-main.monitor.memory=暂贮
-main.monitor.swap=变贮
-main.monitor.disk=久贮
-main.monitor.usage=计用
-main.monitor.total=合
-main.monitor.used=占
-main.monitor.free=余
-
-data_manager.migrate_success=卷型曰 {NAME} 者,方易成
-
-npm.loaded_plugins=所誊件
-npm.total=合 {TOTAL}
-npm.help=师
-npm.usage=问
-npm.description=答
-npm.disable=去
-npm.disable_global=皆去
-npm.enable=用
-npm.enable_global=皆用
-npm.install=置
-npm.uninstall=消
-npm.installing=乃置 {NAME}
-npm.cannot_uninstall=未消
-npm.no_description=无答
-npm.store_update_success=件阁方新
-npm.store_update_failed=件阁无以新
-npm.search_result=索得
-npm.search_no_result=未果
-npm.too_many_results=所得之多,为数 {HIDE_NUM} 尽隐,求则号精
-npm.install_success={NAME} 方置
-npm.install_failed={NAME} 无以置,求讯文观其始末,未解则取 {HOMEPAGE} 而从师
-npm.uninstall_success={NAME} 方消,次复启以毕功
-npm.uninstall_failed={NAME} 无以消
-npm.load_failed={NAME} 无以誊,或求讯文观始末,或查所依偏离否,未解则取 {HOMEPAGE} 而从师
-npm.plugin_not_found=阁内无件曰 {NAME} 者
-npm.plugin_not_installed={NAME} 未置
-npm.plugin_already_installed={NAME} 已置,勿复行
-npm.author=上
-npm.homepage=揭
-npm.pypi=磐蛇件阁
-npm.next_page=进
-npm.prev_page=返
-npm.update=新
-npm.plugin_cannot_be_toggled=不可变易件曰 {NAME} 者
-npm.plugin_already=件曰 {NAME} 者,乃{STATUS},勿复行
-npm.toggle_failed=因 {ERROR} 所误,良机尽失,{NAME} 无以{STATUS}
-npm.toggle_success=件曰 {NAME} 者,方{STATUS}成
-npm.page=页第 {PAGE} 之于 {TOTAL}
-npm.update_index=阁引
-npm.list_plugins=件目
-npm.disable_session=是处去
-npm.enable_session=是处用
-npm.search=索
-
-user.profile.edit=易
-user.profile.set=设
-user.profile_manager.query=君 {ATTR} 为 {VALUE}
-user.profile_manager.set=君 {ATTR} 設为 {VALUE} 也
-user.profile.settings=設
-user.profile.info=私讯
-user.profile.lang=语文
-user.profile.lang.desc=凡语者,乃语言之所谓,掌人之音及思之习;凡文者,乃文字之所指,操人之德及行之法
-user.profile.timezone=时区
-user.profile.timezone.desc=所谓时区者,郑和西洋之学所成,乃由英吉利某天监司衙始,分天下为十二时辰之区,以令四海之时得以各循所便
-user.profile.theme=锦泽
-user.profile.theme.desc=昔《周易》乃传阴阳之术,各色纷发而共赏诸方,乃决次色之设,为爱一方也;誊录锦帛之上,存乎色泽
-user.profile.location=居所
-user.profile.location.desc=君子之所常居,道合山水之学。昔孟母三迁择邻里,为人有道成功名。
-user.profile.nickname=字号
-user.profile.nickname.desc=无名之辈无登大雅之堂,王侯将相皆各有名号,见此字号而辨君子。
-user.profile.input_value=求 {ATTR} 之量
-user.profile.set_success=君 {ATTR} 方设 {VALUE} 而成
-user.profile.set_failed={ATTR} 无以设,子阙否
-
-rpm.move_up=右移
-rpm.move_down=左移
-rpm.move_top=归首
-
-weather.city_not_found=无城谓 {CITY} 者
-weather.weather_not_found=无{CITY}城之天象
-weather.no_key=无天监司遥讯之玥,请于设增
-
-status.friends=友
-status.groups=羣
-status.plugins=件
-status.resources=件资
-status.bots=工造灵机
-status.message_sent=方传
-status.message_received=方受
-status.cpu=卷枢
-status.memory=暂贮
-status.swap=变贮
-status.disk=久贮
-status.usage=计用
-status.total=合
-status.used=占
-status.free=余
-status.runtime=所启时分
-status.days=日
-status.hours=小时
-status.minutes=分
-status.seconds=秒
-status.cores=轮核
-status.threads=程线
-status.process=行轨
-status.description=轻雪灵机台
\ No newline at end of file
diff --git a/src/resources/vanilla_language/metadata.yml b/src/resources/vanilla_language/metadata.yml
deleted file mode 100755
index 127a1f6f..00000000
--- a/src/resources/vanilla_language/metadata.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-name: 轻雪语言资源包
-description: 全局的语言资源包,不可卸载
-version: 2024.7.14
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/functions/func.md b/src/resources/vanilla_resource/functions/func.md
deleted file mode 100644
index cb83e058..00000000
--- a/src/resources/vanilla_resource/functions/func.md
+++ /dev/null
@@ -1,7 +0,0 @@
-## 文件类型允许
-
-- `.mcfunction`
-
-- `.lyf`
-
-- `lyfunction`
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/functions/hello.lyfunction b/src/resources/vanilla_resource/functions/hello.lyfunction
deleted file mode 100644
index ac435ce2..00000000
--- a/src/resources/vanilla_resource/functions/hello.lyfunction
+++ /dev/null
@@ -1,10 +0,0 @@
-api send_private_msg user_id=qq message=msg
-sleep 3
-
-# 使用asyncio.create_task()创建一个新的任务,不等待任务完成直接执行下一条命令
-nohup function hello
-
-sleep 10
-
-# cancel所有的tasks
-end
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/functions/poke.lyfunction b/src/resources/vanilla_resource/functions/poke.lyfunction
deleted file mode 100644
index a63d859a..00000000
--- a/src/resources/vanilla_resource/functions/poke.lyfunction
+++ /dev/null
@@ -1,5 +0,0 @@
-api friend_poke user_id=user_id
-api friend_poke user_id=user_id
-sleep 0.2
-nohup function poke
-await
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/metadata.yml b/src/resources/vanilla_resource/metadata.yml
deleted file mode 100755
index 534a03dd..00000000
--- a/src/resources/vanilla_resource/metadata.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-name: 轻雪原版资源包
-description: 轻雪内置资源包,不可卸载
-version: 1.0.0
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/templates/chromium_error.png b/src/resources/vanilla_resource/templates/chromium_error.png
deleted file mode 100755
index 77582254..00000000
Binary files a/src/resources/vanilla_resource/templates/chromium_error.png and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/css/card.css b/src/resources/vanilla_resource/templates/css/card.css
deleted file mode 100755
index aa05c0cc..00000000
--- a/src/resources/vanilla_resource/templates/css/card.css
+++ /dev/null
@@ -1,39 +0,0 @@
-:root {
- --main-text-color: #fff;
- --sub-text-color: #ccc;
- --tip-text-color: #999;
- --device-info-width: 240px;
-}
-
-
-.data-storage {
- display: none;
-}
-
-body {
- background-repeat: repeat-y;
- background-size: cover;
- background-position: center;
- text-shadow: 1px 1px 2px black;
- margin: 20px;
-}
-
-.info-box {
- border-radius: 60px;
- padding: 40px;
- backdrop-filter: blur(10px);
- background-color: rgba(0, 0, 0, 0.5);
- margin-bottom: 20px;
-}
-
-#author-description {
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
-#author-text {
- margin-left: 20px;
- color: var(--sub-text-color);
- font-size: 30px;
-}
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/templates/css/fonts.css b/src/resources/vanilla_resource/templates/css/fonts.css
deleted file mode 100755
index fa6d8bc0..00000000
--- a/src/resources/vanilla_resource/templates/css/fonts.css
+++ /dev/null
@@ -1,76 +0,0 @@
-/*MiSans*/
-
-@font-face {
- font-family: 'MiSans';
- src: url('../fonts/MiSans/MiSans-Light.woff2') format('woff2');
- font-weight: 200;
-}
-
-@font-face {
- font-family: 'MiSans';
- src: url('../fonts/MiSans/MiSans-Normal.woff2') format('woff2');
- font-weight: 400;
-}
-
-@font-face {
- font-family: 'MiSans';
- src: url('../fonts/MiSans/MiSans-Semibold.woff2') format('woff2');
- font-weight: 500;
-}
-
-@font-face {
- font-family: 'MiSans';
- src: url('../fonts/MiSans/MiSans-Bold.woff2') format('woff2');
- font-weight: 700;
-}
-
-@font-face {
- font-family: 'MiSans';
- src: url('../fonts/MiSans/MiSans-Heavy.woff2') format('woff2');
- font-weight: 900;
-}
-
-/*MapleMono*/
-@font-face {
- font-family: 'MapleMono';
- src: url('../fonts/MapleMono/MapleMono-Light.woff2') format('woff2');
- font-weight: 200;
-}
-
-@font-face {
- font-family: 'MapleMono';
- src: url('../fonts/MapleMono/MapleMono-LightItalic.woff2') format('woff2');
- font-weight: 200;
- font-style: italic;
-}
-
-
-@font-face {
- font-family: 'MapleMono';
- src: url('../fonts/MapleMono/MapleMono-Regular.woff2') format('woff2');
- font-weight: 400;
-}
-
-@font-face {
- font-family: 'MapleMono';
- src: url('../fonts/MapleMono/MapleMono-Italic.woff2') format('woff2');
- font-weight: 400;
- font-style: italic;
-}
-
-@font-face {
- font-family: 'MapleMono';
- src: url('../fonts/MapleMono/MapleMono-Bold.woff2') format('woff2');
- font-weight: 700;
-}
-
-@font-face {
- font-family: 'MapleMono';
- src: url('../fonts/MapleMono/MapleMono-BoldItalic.woff2') format('woff2');
- font-weight: 700;
- font-style: italic;
-}
-
-* {
- font-family: 'MapleMono', 'MiSans', sans-serif;
-}
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/templates/css/status.css b/src/resources/vanilla_resource/templates/css/status.css
deleted file mode 100755
index bb60440e..00000000
--- a/src/resources/vanilla_resource/templates/css/status.css
+++ /dev/null
@@ -1,155 +0,0 @@
-:root {
- --main-text-color: #fff;
- --sub-text-color: #ccc;
- --tip-text-color: #999;
- --device-info-width: 240px;
-}
-
-.bot-info {
- display: flex;
-}
-
-.bot-icon {
- display: flex;
- width: 220px;
- align-items: center;
- justify-content: center;
- margin-right: 20px;
-}
-
-.bot-icon-img {
- height: 220px;
- width: 220px;
- border-radius: 50%;
-}
-
-.bot-name {
- color: var(--main-text-color);
- display: flex;
- font-size: 45px;
- flex-direction: column;
- justify-content: center;
-}
-
-.bot-tag {
- white-space: break-spaces;
- color: var(--sub-text-color);
- font-size: 30px;
- font-weight: 700;
- line-height: 1.6;
-}
-
-.bot-tag[suffix="1"]::after {
- content: "|";
- display: inline-block;
- margin: 0 5px;
- height: 30%;
- line-height: 50%;
- color: var(--tip-text-color);
-}
-
-/*修改bot-info 下hr样式*/
-.bot-info hr {
- border: 0;
- height: 4px;
- background: var(--tip-text-color);
- margin: 10px 0;
- width: 100%;
-}
-
-#hardware-info {
- display: flex;
- justify-content: space-evenly;
-}
-
-.device-info {
- max-width: 30%;
-}
-
-.device-chart {
- display: flex;
- height: var(--device-info-width);
- width: var(--device-info-width);
- margin-bottom: 20px;
- justify-content: center;
-}
-
-.device-tags {
- text-align: center;
- color: var(--sub-text-color);
- font-size: 24px;
- max-width: var(--device-info-width);
- word-wrap: break-word;
-}
-
-.disk-info {
- display: flex;
- position: relative;
- width: 100%;
- height: 60px;
- background-color: #ffffff44;
- border-radius: 30px;
- align-items: center;
-}
-
-.disk-usage {
- background-color: #a2d8f4;
- height: 100%;
- border-radius: 30px;
- position: absolute;
- z-index: 1;
-}
-
-/*
-.disk-title {
- position: absolute;
- color: var(--main-text-color);
- font-size: 24px;
- margin-bottom: 10px;
- margin-left: 20px;
- text-align: left;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- max-width: calc(100% - 40px);
- z-index: 2;
-}
-*/
-.disk-name {
- position: absolute;
- color: var(--main-text-color);
- font-size: 24px;
- margin-left: 20px;
- text-align: left;
- white-space: normal; /* 允许换行 */
- overflow: hidden;
- text-overflow: ellipsis;
- word-break: break-all; /* 允许在单词内换行 */
- z-index: 2;
-}
-
-.disk-details {
- position: absolute;
- right: 20px;
- /* 调整位置以确保有足够的空间显示 */
- color: var(--main-text-color);
- font-size: 24px;
- text-align: right;
- white-space: nowrap;
- z-index: 2;
-}
-
-#motto-text {
- font-size: 36px;
- word-wrap: break-word;
- color: var(--main-text-color);
- text-align: center;
- margin: 30px 0 10px 0;
-}
-
-#motto-from {
- font-size: 30px;
- font-style: italic;
- color: var(--sub-text-color);
- text-align: right;
-}
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/templates/css/style.css b/src/resources/vanilla_resource/templates/css/style.css
deleted file mode 100755
index 59a5f861..00000000
--- a/src/resources/vanilla_resource/templates/css/style.css
+++ /dev/null
@@ -1,101 +0,0 @@
-body {
- background-repeat: repeat-y;
- background-size: cover;
- background-position: center;
- color: white;
-/ / 上10px,左右10px,下0px / / margin: 24 px;
- margin: 20px;
-}
-
-.info-box {
- border-radius: 30px;
- padding: 30px;
- backdrop-filter: blur(10px);
- background-color: rgba(0, 0, 0, 0.3);
- margin-bottom: 20px;
-}
-
-.pie-chart {
- height: 240px;
- width: 240px;
- margin-bottom: 20px;
-}
-
-.pie-info {
- margin: 0 40px;
- align-items: center;
-}
-
-.bot-info {
- align-items: center;
- display: flex;
-}
-
-#hardware-info {
- justify-content: center;
- text-align: center;
- display: flex;
-}
-
-#disks-info {
- flex-wrap: wrap;
- justify-content: center;
-
-}
-
-#motto-info {
- margin-bottom: 0;
- text-align: center;
- white-space: pre-wrap;
-}
-
-.bot-icon {
- border-radius: 50%;
- height: 200px;
- background-color: white;
-}
-
-.bot-name, .bot-tag {
- margin-left: 20px;
-}
-
-.bot-name {
- font-size: 42px;
- font-weight: bold;
-}
-
-
-.bot-tag {
- margin-top: 10px;
-}
-
-.chart-label {
- font-size: 24px;
- max-width: 240px;
-}
-
-.tag {
- font-size: 32px;
- font-weight: 700;
- font-style: italic;
-}
-
-.tag[suffix="1"]::after {
- content: " | ";
- display: inline-block;
- margin: 0 5px;
- height: 50%;
- line-height: 50%;
- color: #ccc;
-}
-
-.motto-text {
- font-size: 36px;
- color: #fff;
-}
-
-.motto-author {
- font-size: 30px;
- font-style: italic;
- color: #ccc;
-}
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/templates/favicon.ico b/src/resources/vanilla_resource/templates/favicon.ico
deleted file mode 100755
index 73e9e36e..00000000
Binary files a/src/resources/vanilla_resource/templates/favicon.ico and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Bold.woff2 b/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Bold.woff2
deleted file mode 100755
index bedd45b5..00000000
Binary files a/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Bold.woff2 and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-BoldItalic.woff2 b/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-BoldItalic.woff2
deleted file mode 100755
index c4acc5af..00000000
Binary files a/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-BoldItalic.woff2 and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Italic.woff2 b/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Italic.woff2
deleted file mode 100755
index 6b044cce..00000000
Binary files a/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Italic.woff2 and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Light.woff2 b/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Light.woff2
deleted file mode 100755
index e5f93c46..00000000
Binary files a/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Light.woff2 and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-LightItalic.woff2 b/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-LightItalic.woff2
deleted file mode 100755
index f8b95a6b..00000000
Binary files a/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-LightItalic.woff2 and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Regular.woff2 b/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Regular.woff2
deleted file mode 100755
index cbbe6f8c..00000000
Binary files a/src/resources/vanilla_resource/templates/fonts/MapleMono/MapleMono-Regular.woff2 and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Bold.woff2 b/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Bold.woff2
deleted file mode 100755
index f966f5af..00000000
Binary files a/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Bold.woff2 and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Heavy.woff2 b/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Heavy.woff2
deleted file mode 100755
index 2eb66cd6..00000000
Binary files a/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Heavy.woff2 and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Light.woff2 b/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Light.woff2
deleted file mode 100755
index 6067ea25..00000000
Binary files a/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Light.woff2 and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Normal.woff2 b/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Normal.woff2
deleted file mode 100755
index ae0649f2..00000000
Binary files a/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Normal.woff2 and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Semibold.woff2 b/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Semibold.woff2
deleted file mode 100755
index e98f6cf2..00000000
Binary files a/src/resources/vanilla_resource/templates/fonts/MiSans/MiSans-Semibold.woff2 and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/img/2023-08-05_20.06.51.png b/src/resources/vanilla_resource/templates/img/2023-08-05_20.06.51.png
deleted file mode 100755
index 78780897..00000000
Binary files a/src/resources/vanilla_resource/templates/img/2023-08-05_20.06.51.png and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/img/bg1.webp b/src/resources/vanilla_resource/templates/img/bg1.webp
deleted file mode 100755
index 6c3d9259..00000000
Binary files a/src/resources/vanilla_resource/templates/img/bg1.webp and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/img/bg2.webp b/src/resources/vanilla_resource/templates/img/bg2.webp
deleted file mode 100755
index 8edbe4b9..00000000
Binary files a/src/resources/vanilla_resource/templates/img/bg2.webp and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/img/bg3.webp b/src/resources/vanilla_resource/templates/img/bg3.webp
deleted file mode 100755
index c3330c95..00000000
Binary files a/src/resources/vanilla_resource/templates/img/bg3.webp and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/img/bg4.webp b/src/resources/vanilla_resource/templates/img/bg4.webp
deleted file mode 100755
index a3b098ac..00000000
Binary files a/src/resources/vanilla_resource/templates/img/bg4.webp and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/img/bg5.webp b/src/resources/vanilla_resource/templates/img/bg5.webp
deleted file mode 100755
index ab254e4d..00000000
Binary files a/src/resources/vanilla_resource/templates/img/bg5.webp and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/img/bg6.webp b/src/resources/vanilla_resource/templates/img/bg6.webp
deleted file mode 100755
index 035d5bf0..00000000
Binary files a/src/resources/vanilla_resource/templates/img/bg6.webp and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/img/bg7.webp b/src/resources/vanilla_resource/templates/img/bg7.webp
deleted file mode 100755
index a1754bbb..00000000
Binary files a/src/resources/vanilla_resource/templates/img/bg7.webp and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/img/liteyuki.png b/src/resources/vanilla_resource/templates/img/liteyuki.png
deleted file mode 100755
index 6512544c..00000000
Binary files a/src/resources/vanilla_resource/templates/img/liteyuki.png and /dev/null differ
diff --git a/src/resources/vanilla_resource/templates/js/card.js b/src/resources/vanilla_resource/templates/js/card.js
deleted file mode 100755
index e7bfb754..00000000
--- a/src/resources/vanilla_resource/templates/js/card.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const bgs = [
- "bg1.webp",
- "bg2.webp",
- "bg3.webp",
- "bg4.webp",
- "bg5.webp",
- "bg6.webp",
- "bg7.webp",
-]
-// 随机选择背景图片
-document.body.style.backgroundImage = `url(./img/${bgs[Math.floor(Math.random() * bgs.length)]})`;
-// body后插入info-box id=description
-let descriptionDiv = document.createElement("div");
-descriptionDiv.className = 'info-box'
-descriptionDiv.id = 'author-description'
-// 添加一副头像且垂直居中
-let avatar = document.createElement("img");
-avatar.src = 'https://q.qlogo.cn/g?b=qq&nk=2751454815&s=640'
-avatar.style.height = '50px';
-avatar.style.borderRadius = '50%';
-
-let text = document.createElement("div");
-text.id = 'author-text';
-text.innerText = 'Designed by SnowyKami';
-descriptionDiv.appendChild(avatar);
-descriptionDiv.appendChild(text);
-document.body.appendChild(descriptionDiv);
diff --git a/src/resources/vanilla_resource/templates/js/motto.js b/src/resources/vanilla_resource/templates/js/motto.js
deleted file mode 100755
index 6e2402b5..00000000
--- a/src/resources/vanilla_resource/templates/js/motto.js
+++ /dev/null
@@ -1,113 +0,0 @@
-// 存放格言
-const mottos = [
- {
- "text": "同是天涯沦落人,相逢何必曾相识。",
- "author": "白居易",
- "source": "《琵琶行》"
- },
- {
- "text": "海内存知己,天涯若比邻。",
- "author": "王勃",
- "source": "《送杜少府之任蜀州》"
- },
- {
- "text": "银烛秋光冷画屏,轻罗小扇扑流萤。",
- "author": "陆游",
- "source": "《秋夕》"
- },
- {
- "text": "明月几时有,把酒问青天。",
- "author": "苏轼",
- "source": "《水调歌头》"
- },
- {
- "text": "人生自古谁无死,留取丹心照汗青。",
- "author": "文天祥",
- "source": "《过零丁洋》"
- },
- {
- "text": "山重水复疑无路,柳暗花明又一村。",
- "author": "陆游",
- "source": "《游山西村》"
- },
- {
- "text": "逸一时,误一世,逸久逸久罢已龄",
- "author": "田所浩二",
- "source": "《仲夏夜之淫梦》"
- },
- {
- "text": "你知道吗,轻雪只能在Python3.10以上的版本中使用。",
- "author": "SnowyKami",
- "source": "轻雪文档"
- },
- {
- "text": "你知道吗,轻雪可以通过自定义资源包来扩展主题和语言",
- "author": "SnowyKami",
- "source": "轻雪文档"
- },
- {
- "text": "你知道吗,轻雪交流群的群号是 775840726",
- "author": "SnowyKami",
- "source": "轻雪文档"
- },
- {
- "text": "你知道吗,轻雪运行过程中会启动一个node.js运行环境",
- "author": "SnowyKami",
- "source": "轻雪文档"
- },
- {
- "text": "你知道吗,轻雪的主题是基于HTML5开发的",
- "author": "SnowyKami",
- "source": "轻雪文档"
- },
- {
- "text": "路漫漫其修远兮,吾将上下而求索。",
- "author": "屈原",
- "source": "《离骚》"
- },
- {
- "text": "千里之行,始于足下。",
- "author": "老子",
- "source": "《道德经》"
- },
- {
- "text": "读书破万卷,下笔如有神。",
- "author": "杜甫",
- "source": "《奉赠韦左丞丈二十韵》"
- },
- {
- "text": "不登高山,不知天之高也;不临深溪,不知地之厚也。",
- "author": "荀子",
- "source": "《劝学》"
- },
- {
- "text": "知之者不如好之者,好之者不如乐之者。",
- "author": "孔子",
- "source": "《论语》"
- },
- {
- "text": "天行健,君子以自强不息;地势坤,君子以厚德载物。",
- "source": "《易经》",
- "author": ""
- },
- {
- "text": "书山有路勤为径,学海无涯苦作舟。",
- "author": "韩愈",
- "source": "《读书有感》"
- },
- {
- "text": "前事不忘,后事之师。",
- "author": "孔子",
- "source": "《论语》"
- },
- {
- "text": "志当存高远,若樽俎断绝。",
- "author": "陶渊明",
- "source": "《饮酒》"
- },
- {
- "text": "不以物喜,不以己悲。",
- "author": "傅子",
- "source": "《傅子》"
- }
-]
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/templates/js/status.js b/src/resources/vanilla_resource/templates/js/status.js
deleted file mode 100755
index 6bdf3664..00000000
--- a/src/resources/vanilla_resource/templates/js/status.js
+++ /dev/null
@@ -1,318 +0,0 @@
-const data = JSON.parse(document.getElementById('data').innerText);
-const bot_data = data['bot']; // 机器人数据
-const hardwareData = data['hardware']; // 硬件数据
-const liteyukiData = data['liteyuki']; // LiteYuki数据
-const localData = data['localization']; // 本地化语言数据
-
-/**
- * 创建CPU/内存/交换饼图
- * @param title
- * @param {Array<{name: string, value: number}>} data 数据
- */
-function createPieChartOption(title, data) {
- // data为各项占比列表
- return {
- animation: false,
- title: {
- text: title,
- left: 'center',
- top: 'center',
- textStyle: {
- color: '#fff',
- fontSize: 30,
- lineHeight: 36
- }
- },
- tooltip: {
- show: true,
- trigger: 'item',
- backgroundColor: '#fff',
- },
- color: data.length === 3 ? ['#00a6ff', '#a2d8f4', "#ffffff44"] : ['#a2d8f4', '#ffffff44'],
- series: [
- {
- name: 'info',
- type: 'pie',
- radius: ['80%', '100%'],
- center: ['50%', '50%'],
- itemStyle: {
- normal: {
- label: {
- show: false
- },
- labelLine: {
- show: false
- }
- },
- emphasis: {
- label: {
- show: true,
- textStyle: {
- fontSize: '50',
- fontWeight: 'bold'
- }
- }
- }
- },
- data: data
- }
- ]
- }
-}
-
-
-function convertSize(size, precision = 2, addUnit = true, suffix = " XiB") {
- let isNegative = size < 0;
- size = Math.abs(size);
- let units = ["", "K", "M", "G", "T", "P", "E", "Z"];
- let unit = "";
-
- for (let i = 0; i < units.length; i++) {
- if (size < 1024) {
- unit = units[i];
- break;
- }
- size /= 1024;
- }
-
- if (isNegative) {
- size = -size;
- }
-
- if (addUnit) {
- return size.toFixed(precision) + suffix.replace('X', unit);
- } else {
- return size;
- }
-}
-
-/**
- * 创建磁盘用量柱状图
- * @param title
- * @param percent 数据
- */
-function createBarChart(title, percent, name) {
- // percent为百分比,最大值为100
- let diskDiv = document.createElement('div');
- diskDiv.setAttribute('class', 'disk-info');
- diskDiv.style.marginBottom = '20px';
- diskDiv.innerHTML = `
- ${name}
- ${title}
-
- `;
-
- updateDiskNameWidth(diskDiv);
-
- return diskDiv;
-}
-
-// 更新 .disk-name 宽度
-function updateDiskNameWidth(diskInfoElement) {
- let diskDetails = diskInfoElement.querySelector('.disk-details');
- let diskName = diskInfoElement.querySelector('.disk-name');
- let detailsWidth = diskDetails.offsetWidth;
- let parentWidth = diskInfoElement.offsetWidth;
-
- let nameMaxWidth = parentWidth - detailsWidth - 20 - 40;
- diskName.style.maxWidth = `${nameMaxWidth}px`;
-}
-
-function secondsToTextTime(seconds) {
- let days = Math.floor(seconds / 86400)
- let hours = Math.floor((seconds % 86400) / 3600)
- let minutes = Math.floor((seconds % 3600) / 60)
- let seconds_ = Math.floor(seconds % 60)
- return `${days}${localData['days']} ${hours}${localData['hours']} ${minutes}${localData['minutes']} ${seconds_}${localData['seconds']}`
-}
-
-// 主函数
-function main() {
- // 添加机器人信息
- bot_data['bots'].forEach(
- (bot) => {
- let botInfoDiv = document.importNode(document.getElementById('bot-template').content, true) // 复制模板
-
-
- // 设置机器人信息
- botInfoDiv.className = 'info-box bot-info'
-
- botInfoDiv.querySelector('.bot-icon-img').setAttribute('src', bot['icon'])
- botInfoDiv.querySelector('.bot-name').innerText = bot['name']
- let tagArray = [
- bot['protocol_name'],
- bot['app_name'],
- `${localData['groups']} ${bot['groups']}`,
- `${localData['friends']} ${bot['friends']}`,
- `${localData['message_sent']} ${bot['message_sent']}`,
- `${localData['message_received']} ${bot['message_received']}`,
- ]
- // 添加一些标签
- tagArray.forEach(
- (tag, index) => {
- let tagSpan = document.createElement('span')
- tagSpan.className = 'bot-tag'
- tagSpan.innerText = tag
- // 给最后一个标签不添加后缀
- tagSpan.setAttribute('suffix', index === tagArray.length - 1 ? '0' : '1')
- botInfoDiv.querySelector('.bot-tags').appendChild(tagSpan)
- }
- )
- document.body.insertBefore(botInfoDiv, document.getElementById('hardware-info')) // 插入对象
-
- }
- )
-
- // 添加轻雪信息
- let liteyukiInfoDiv = document.importNode(document.getElementById('bot-template').content, true) // 复制模板
- liteyukiInfoDiv.className = 'info-box bot-info'
- liteyukiInfoDiv.querySelector('.bot-icon-img').setAttribute('src', './img/liteyuki.png')
- liteyukiInfoDiv.querySelector('.bot-name').innerText = liteyukiData['name']
-
- let tagArray = [
- `Liteyuki ${liteyukiData['version']}`,
- `Nonebot ${liteyukiData['nonebot']}`,
- liteyukiData['python'],
- liteyukiData['system'],
- `${localData['plugins']} ${liteyukiData['plugins']}`,
- `${localData['resources']} ${liteyukiData['resources']}`,
- `${localData['bots']} ${liteyukiData['bots']}`,
- `${localData['runtime']} ${secondsToTextTime(liteyukiData['runtime'])}`,
- ]
- tagArray.forEach(
- (tag, index) => {
- let tagSpan = document.createElement('span')
- tagSpan.className = 'bot-tag'
- tagSpan.innerText = tag
- // 给最后一个标签不添加后缀
- tagSpan.setAttribute('suffix', index === tagArray.length - 1 ? '0' : '1')
- liteyukiInfoDiv.querySelector('.bot-tags').appendChild(tagSpan)
- }
- )
- document.body.insertBefore(liteyukiInfoDiv, document.getElementById('hardware-info')) // 插入对象
-
- // 添加硬件信息
- const cpuData = hardwareData['cpu']
- const memData = hardwareData['memory']
- const swapData = hardwareData['swap']
-
- const cpuTagArray = [
- cpuData['name'],
- `${cpuData['cores']}${localData['cores']} ${cpuData['threads']}${localData['threads']}`,
- `${(cpuData['freq'] / 1000).toFixed(2)}GHz`
- ]
-
- const memTagArray = [
- `${localData['process']} ${convertSize(memData['usedProcess'])}`,
- `${localData['used']} ${convertSize(memData['used'])}`,
- `${localData['free']} ${convertSize(memData['free'])}`,
- `${localData['total']} ${convertSize(memData['total'])}`
- ]
-
- const swapTagArray = [
- `${localData['used']} ${convertSize(swapData['used'])}`,
- `${localData['free']} ${convertSize(swapData['free'])}`,
- `${localData['total']} ${convertSize(swapData['total'])}`
- ]
- let cpuDeviceInfoDiv = document.importNode(document.getElementById('device-info').content, true)
- let memDeviceInfoDiv = document.importNode(document.getElementById('device-info').content, true)
- let swapDeviceInfoDiv = document.importNode(document.getElementById('device-info').content, true)
-
- cpuDeviceInfoDiv.querySelector('.device-info').setAttribute('id', 'cpu-info')
- memDeviceInfoDiv.querySelector('.device-info').setAttribute('id', 'mem-info')
- swapDeviceInfoDiv.querySelector('.device-info').setAttribute('id', 'swap-info')
- cpuDeviceInfoDiv.querySelector('.device-chart').setAttribute('id', 'cpu-chart')
- memDeviceInfoDiv.querySelector('.device-chart').setAttribute('id', 'mem-chart')
- swapDeviceInfoDiv.querySelector('.device-chart').setAttribute('id', 'swap-chart')
-
- let devices = {
- 'cpu': cpuDeviceInfoDiv,
- 'mem': memDeviceInfoDiv,
- 'swap': swapDeviceInfoDiv
- }
- // 遍历添加标签
- for (let device in devices) {
- let tagArray = []
- switch (device) {
- case 'cpu':
- tagArray = cpuTagArray
- break
- case 'mem':
- tagArray = memTagArray
- break
- case 'swap':
- tagArray = swapTagArray
- break
- }
- tagArray.forEach(
- (tag, index) => {
- let tagDiv = document.createElement('div')
- tagDiv.className = 'device-tag'
- tagDiv.innerText = tag
- // 给最后一个标签不添加后缀
- tagDiv.setAttribute('suffix', index === tagArray.length - 1 ? '0' : '1')
- devices[device].querySelector('.device-tags').appendChild(tagDiv)
- }
- )
- }
-
-
- // 插入
- document.getElementById('hardware-info').appendChild(cpuDeviceInfoDiv)
- document.getElementById('hardware-info').appendChild(memDeviceInfoDiv)
- document.getElementById('hardware-info').appendChild(swapDeviceInfoDiv)
-
- let cpuChart = echarts.init(document.getElementById('cpu-chart'))
- let memChart = echarts.init(document.getElementById('mem-chart'))
- let swapChart = echarts.init(document.getElementById('swap-chart'))
-
-
- cpuChart.setOption(createPieChartOption(`${localData['cpu']}\n${cpuData['percent'].toFixed(1)}%`, [
- { name: 'used', value: cpuData['percent'] },
- { name: 'free', value: 100 - cpuData['percent'] }
- ]))
-
- memChart.setOption(createPieChartOption(`${localData['memory']}\n${memData['percent'].toFixed(1)}%`, [
- { name: 'process', value: memData['usedProcess'] },
- { name: 'used', value: memData['used'] - memData['usedProcess'] },
- { name: 'free', value: memData['free'] }
- ]))
-
-
- swapChart.setOption(createPieChartOption(`${localData['swap']}\n${swapData['percent'].toFixed(1)}%`, [
- { name: 'used', value: swapData['used'] },
- { name: 'free', value: swapData['free'] }
- ]))
-
-
- // 磁盘信息
- const diskData = hardwareData['disk'];
- diskData.forEach((disk) => {
- let diskTitle = `${localData['free']} ${convertSize(disk['free'])} ${localData['total']} ${convertSize(disk['total'])}`;
- let diskDiv = createBarChart(diskTitle, disk['percent'], disk['name']);
-
- if (disk === diskData[diskData.length - 1]) {
- diskDiv.style.marginBottom = '0';
- }
- document.getElementById('disk-info').appendChild(diskDiv);
- });
- // 随机一言
- let motto = mottos[Math.floor(Math.random() * mottos.length)]
- let mottoText = motto['text']
- let mottoFrom = `${motto['author']} ${motto['source']}`
- document.getElementById('motto-text').innerText = mottoText
- document.getElementById('motto-from').innerText = mottoFrom
-
-
-}
-
-main()
-/*
-// 窗口大小改变监听器 -- Debug
-window.addEventListener('resize', () => {
- const diskInfos = document.querySelectorAll('.disk-info');
- diskInfos.forEach(diskInfo => {
- updateDiskNameWidth(diskInfo);
- });
-});
-*/
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/templates/js/style.js b/src/resources/vanilla_resource/templates/js/style.js
deleted file mode 100755
index c219d3fc..00000000
--- a/src/resources/vanilla_resource/templates/js/style.js
+++ /dev/null
@@ -1,257 +0,0 @@
-{
- // 环形图
-
- let cpuInfo = echarts.init(document.getElementById('cpu-chart'));
- let memInfo = echarts.init(document.getElementById('mem-chart'));
- let swapInfo = echarts.init(document.getElementById('swap-chart'));
-
- let data = JSON.parse(document.getElementById('data').innerText);
-
- let cpuData = data.cpu;
- let memData = data.mem;
- let swapData = data.swap;
- let diskData = data.disk;
- let sub_tag_data = {
- cpu: data.cpuTags,
- mem: data.memTags,
- swap: data.swapTags
- }
- for (let key in sub_tag_data) {
- let infoDiv = document.getElementById(key + '-info');
- sub_tag_data[key].forEach(tag => {
- let tagSpan = document.createElement('div');
- tagSpan.innerText = tag;
- tagSpan.className = 'chart-label';
- infoDiv.appendChild(tagSpan);
- });
- }
- cpuInfo.setOption(getPieOption(data.localization.cpu, cpuData));
- memInfo.setOption(getPieOption(data.localization.mem, memData));
- swapInfo.setOption(getPieOption(data.localization.swap, swapData));
-
-
- // 在disks-info中插入每个disk的div,用横向柱状图表示用量,每一行div显示一个disk,不加info-box
- diskData.forEach(disk => {
- let diskDiv = document.createElement('div');
- document.getElementById('disks-info').appendChild(diskDiv);
- let diskChart = document.createElement('div');
- diskChart.style.width = '100%';
- diskChart.style.height = '100px';
- diskDiv.appendChild(diskChart);
- let diskInfo = echarts.init(diskChart);
- // let diskTitle = disk.name + ' {{ FREE }} ' + disk.free + ' {{ TOTAL }} ' + disk.total;
- let diskTitle = `${disk.name} ${data.localization.free} ${disk.free} ${data.localization.total} ${disk.total}`;
- diskInfo.setOption(getBarOption(diskTitle, disk.percent));
- });
-
- let botData = data.bot;
- // 清空bot-info
- let botInfos = document.getElementsByClassName('bot-info');
- while (botInfos.length > 0) {
- botInfos[0].remove();
- }
- botData.forEach(bot => {
- // 在hardware-info前面插入一个div
- let botDiv = document.createElement('div');
- botDiv.className = 'info-box bot-info';
- // 在body内的hardware-info前面插入botDiv
- document.body.insertBefore(botDiv, document.getElementById('hardware-info'));
-
- let botIconBlock = document.createElement('div');
- let botIcon = document.createElement('img');
- botIcon.src = bot.icon;
- botIcon.className = 'bot-icon';
- botIconBlock.appendChild(botIcon);
- botDiv.appendChild(botIconBlock);
-
- let botDetail = document.createElement('div');
- let botName = document.createElement('div');
- botName.className = 'bot-name';
- botName.innerText = bot.name;
- if (bot.self) {
- // 添加颜色
- botName.style.color = '#d0e9ff';
- }
- botDetail.appendChild(botName);
-
- let botTags = document.createElement('div');
- botTags.className = 'bot-tag';
- botDetail.appendChild(botTags)
-
- bot.tags.forEach((tag, index) => {
- if (!tag) {
- return;
- }
- let tagSpan = document.createElement('span');
-
- tagSpan.innerText = tag;
- tagSpan.className = 'tag';
- if (bot.self) {
- // 添加颜色
- tagSpan.style.color = '#a2d8f4';
- }
- botTags.appendChild(tagSpan);
- if (index === bot.tags.length - 1) {
- tagSpan.setAttribute("suffix", "0")
- } else {
- tagSpan.setAttribute("suffix", "1")
- }
- });
-
- botDiv.appendChild(botDetail);
- }
- )
-
- // 从/js/motto.js中读取mottos{},随机选择一句
- let motto = mottos[Math.floor(Math.random() * mottos.length)];
- // 正文在中间,作者和来源格式为--作者 来源,在右下方
- let mottoDiv = document.getElementById('motto-info');
- let mottoText = document.createElement('div');
- mottoText.className = 'motto-text';
- mottoText.innerText = motto.text;
- mottoDiv.appendChild(mottoText);
- let mottoAuthor = document.createElement('div');
- mottoAuthor.className = 'motto-author';
- // motto.author和motto.source可能不存在为空,所以要判断
- if (!motto.author) {
- motto.author = '';
- }
- if (!motto.source) {
- motto.source = '';
- }
- mottoAuthor.innerText = `\n--${motto.author} ${motto.source}`;
- mottoAuthor.style.textAlign = 'right';
- mottoDiv.appendChild(mottoAuthor);
-
- function getPieUsage(data) {
- let total = 0
- let used = 0
- data.forEach(item => {
- total += item.value
- if (item.name === 'FREE') {
- used += item.value
- }
- })
- return (1 - used / total) * 100
- }
-
-
- function getPieOption(title, data) {
- return {
- animation: false,
- title: {
- text: title + '\n' + getPieUsage(data).toFixed(1) + '%',
- left: 'center',
- top: 'center',
- textStyle: {
- //文字颜色
-
- lineHeight: 36,
- color: '#fff',
- fontSize: 30
- }
- },
- tooltip: {
- show: true,
- trigger: "item",
- backgroundColor: "#ffffff00",
- // {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)
- },
- color: ['#a2d8f4', "#ffffff44", '#00a6ff'],
- series: [
- {
- name: 'info',
- type: 'pie',
- radius: ['80%', '100%'],
- center: ['50%', '50%'],
- itemStyle: {
- normal: {
- label: {
- show: false
- },
- labelLine: {
- show: false
- }
- },
- emphasis: {
- label: {
- show: true,
- textStyle: {
- fontSize: '50',
- fontWeight: 'bold'
- }
- }
- }
- },
- data: data
- }
- ]
- };
- }
-
- function getBarOption(title, percent) {
- let fillet = 0
- if (percent < 5) {
- fillet = 50
- }
- // data为百分比,最大值为100
- return {
- background: '#d0e9ff',
- title: {
- text: title,
- left: '5%',
- top: 'center',
- textStyle: {
- color: '#fff',
- fontSize: 30
- }
- },
- tooltip: {
- show: true,
- trigger: "item",
- backgroundColor: "#ffffff",
- },
- grid: {
- left: '0',
- right: '0',
- top: '10%',
- bottom: '10%'
- },
- xAxis: {
- type: 'value',
- show: false
- },
- yAxis: {
- type: 'category',
- data: [''],
- show: false
- },
- series: [
- {
- name: 'Used',
- type: 'bar',
- stack: 'total',
- data: [percent],
- itemStyle: {
- normal: {
- color: '#a2d8f4',
- barBorderRadius: [50, 0, 0, 50]
- }
- },
- },
- {
- name: 'Free',
- type: 'bar',
- stack: 'total',
- data: [100 - percent],
- itemStyle: {
- normal: {
- color: '#d0e9ff',
- barBorderRadius: [fillet, 50, 50, fillet]
- }
- },
- }
- ]
- };
- }
-}
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/templates/static/motto.txt b/src/resources/vanilla_resource/templates/static/motto.txt
deleted file mode 100755
index e69de29b..00000000
diff --git a/src/resources/vanilla_resource/templates/stats.html b/src/resources/vanilla_resource/templates/stats.html
deleted file mode 100755
index 00dc0e9e..00000000
--- a/src/resources/vanilla_resource/templates/stats.html
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
- Liteyuki Stats
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{{ data | tojson }}
-
-
-
-
-
diff --git a/src/resources/vanilla_resource/templates/status.html b/src/resources/vanilla_resource/templates/status.html
deleted file mode 100755
index c7a05a8f..00000000
--- a/src/resources/vanilla_resource/templates/status.html
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
- Liteyuki Status
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{{ data | tojson }}
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/templates/status_mem.html b/src/resources/vanilla_resource/templates/status_mem.html
deleted file mode 100755
index 91ad31bb..00000000
--- a/src/resources/vanilla_resource/templates/status_mem.html
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
-
-
-
- Liteyuki Stats
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{{ data | tojson }}
-
-
-
-
diff --git a/src/resources/vanilla_resource/templates/svg/lylogo-full.svg b/src/resources/vanilla_resource/templates/svg/lylogo-full.svg
deleted file mode 100755
index 2c4b21ad..00000000
--- a/src/resources/vanilla_resource/templates/svg/lylogo-full.svg
+++ /dev/null
@@ -1,147 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Layer 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/resources/vanilla_resource/unsorted/plugins.json b/src/resources/vanilla_resource/unsorted/plugins.json
deleted file mode 100755
index 0ae68c36..00000000
--- a/src/resources/vanilla_resource/unsorted/plugins.json
+++ /dev/null
@@ -1,11092 +0,0 @@
-[
- {
- "module_name": "nonebot_plugin_status",
- "project_link": "nonebot-plugin-status",
- "name": "服务器状态查看",
- "desc": "通过戳一戳获取服务器状态",
- "author": "yanyongyu",
- "homepage": "https://github.com/nonebot/plugin-status",
- "tags": [
- {
- "label": "server",
- "color": "#aeeaa8"
- }
- ],
- "is_official": true,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.8.1",
- "time": "2024-03-04T06:57:10.250823Z",
- "skip_test": false
- },
- {
- "module_name": "haruka_bot",
- "project_link": "haruka-bot",
- "name": "haruka_bot",
- "desc": "将B站UP主的动态和直播信息推送至QQ",
- "author": "SK-415",
- "homepage": "https://github.com/SK-415/HarukaBot",
- "tags": [
- {
- "label": "bilibili",
- "color": "#e55d80"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.qqguild"
- ],
- "valid": true,
- "version": "1.6.0.post5",
- "time": "2023-07-11T09:24:58.972905Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_rauthman",
- "project_link": "nonebot-plugin-rauthman",
- "name": "RAM - 基于规则的授权管理",
- "desc": "为 Matcher 配置一条或多条 Rule 来实现功能的授权管理",
- "author": "Lancercmd",
- "homepage": "https://github.com/Lancercmd/nonebot_plugin_rauthman",
- "tags": [
- {
- "label": "rule",
- "color": "#4ec9b0"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "2.0.0rc1.post3",
- "time": "2023-07-18T01:25:54.487870Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_docs",
- "project_link": "nonebot-plugin-docs",
- "name": "NoneBot 离线文档",
- "desc": "在本地查看 NoneBot 文档",
- "author": "nonebot",
- "homepage": "https://github.com/nonebot/nonebot2/blob/master/packages/nonebot-plugin-docs",
- "tags": [],
- "is_official": true,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "2.2.1",
- "time": "2024-02-24T04:41:45.707475Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_sentry",
- "project_link": "nonebot-plugin-sentry",
- "name": "Sentry日志监控",
- "desc": "使用Sentry监控机器人日志并处理报错",
- "author": "yanyongyu",
- "homepage": "https://github.com/nonebot/plugin-sentry",
- "tags": [
- {
- "label": "log",
- "color": "#6be3ea"
- }
- ],
- "is_official": true,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "1.1.0",
- "time": "2024-02-14T03:21:49.744244Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_apscheduler",
- "project_link": "nonebot-plugin-apscheduler",
- "name": "定时任务",
- "desc": "APScheduler 定时任务插件",
- "author": "yanyongyu",
- "homepage": "https://github.com/nonebot/plugin-apscheduler",
- "tags": [],
- "is_official": true,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.4.0",
- "time": "2024-02-12T13:56:49.110411Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_picsearcher",
- "project_link": "nonebot-plugin-picsearcher",
- "author": "synodriver",
- "desc": "从基本上所有你想的出名字的搜图平台找图片",
- "name": "图片搜索",
- "homepage": "https://github.com/synodriver/nonebot_plugin_picsearcher",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-11-05T07:21:34.473939Z",
- "version": "0.1.10",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_navicat",
- "project_link": "nonebot-plugin-navicat",
- "author": "synodriver",
- "desc": "连接至各种数据库,为其他插件导出连接对象",
- "name": "通用数据库连接",
- "homepage": "https://github.com/synodriver/nonebot_plugin_navicat",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-25T08:55:44.847476Z",
- "version": "0.3.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_translator",
- "project_link": "nonebot-plugin-translator",
- "name": "多语种翻译插件",
- "desc": "接口来自 腾讯机器翻译 TMT",
- "author": "Lancercmd",
- "homepage": "https://github.com/Lancercmd/nonebot_plugin_translator",
- "tags": [
- {
- "label": "func",
- "color": "#dcdcaa"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "2.0.0b4.post2",
- "time": "2023-07-18T01:28:04.958803Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mqtt",
- "project_link": "nonebot-plugin-mqtt",
- "name": "MQTT",
- "desc": "Nonebot2 MQTT 插件",
- "author": "synodriver",
- "homepage": "https://github.com/synodriver/nonebot_plugin_mqtt",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.2",
- "time": "2023-09-06T16:06:14.974473Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_songpicker2",
- "project_link": "nonebot-plugin-songpicker2",
- "name": "songpicker2",
- "desc": "点播歌曲,支持候选菜单、热评显示,数据源为网易云",
- "author": "maxesisn",
- "homepage": "https://github.com/maxesisn/nonebot_plugin_songpicker2",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.6",
- "time": "2023-06-27T09:24:09.247555Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_strman",
- "project_link": "nonebot-plugin-strman",
- "author": "echobot-dev",
- "desc": "通过字符串标签在文件中集中管理字符串",
- "name": "字符串管理工具",
- "homepage": "https://github.com/echobot-dev/nonebot-plugin-strman",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-10-10T17:04:34.269452Z",
- "version": "1.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_bison",
- "project_link": "nonebot-bison",
- "name": "Bison",
- "desc": "通用订阅推送插件",
- "author": "felinae98",
- "homepage": "https://github.com/felinae98/nonebot-bison",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.9.1",
- "time": "2024-03-06T04:41:42.379114Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot-plugin-ncm",
- "project_link": "nonebot-plugin-ncm",
- "author": "kitUIN",
- "desc": "网易云 无损音乐 点歌/下载",
- "name": "网易云无损音乐下载",
- "homepage": "https://github.com/kitUIN/nonebot-plugin-ncm",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "a:cqhttp",
- "color": "#000000"
- },
- {
- "label": "t:Netease",
- "color": "#ec4141"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-12-03T07:50:12.633674Z",
- "version": "1.6.9",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_cocdicer",
- "project_link": "nonebot-plugin-cocdicer",
- "author": "abrahum",
- "desc": "COC跑团骰子娘",
- "name": "nonebot-plugin-cocdicer",
- "homepage": "https://github.com/abrahum/nonebot_plugin_cocdicer",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-07-28T08:59:43.166497Z",
- "version": "0.4.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_guess",
- "project_link": "nonebot-plugin-guess",
- "author": "ffreemt",
- "desc": "多次互动猜名字游戏,自带猜城市名,可定制",
- "name": "猜猜看",
- "homepage": "https://github.com/ffreemt/nonebot-plugin-guess-game",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-10-16T02:53:33.507492Z",
- "version": "0.1.9",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_abbrreply",
- "project_link": "nonebot-plugin-abbrreply",
- "author": "anlen123",
- "desc": "输入拼音首字母,猜测文字",
- "name": "缩写查询器",
- "homepage": "https://github.com/anlen123/nonebot_plugin_abbrreply",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-10-21T03:18:13.320169Z",
- "version": "1.1.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_biliav",
- "project_link": "nonebot-plugin-biliav",
- "author": "knva",
- "desc": "将用户发的av号或者bv号转成小程序返回",
- "name": "biliav小程序转换器",
- "homepage": "https://github.com/knva/nonebot_plugin_biliav",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-19T03:28:14.663442Z",
- "version": "1.0.11",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_analysis_bilibili",
- "project_link": "nonebot-plugin-analysis-bilibili",
- "name": "bilibili视频、番剧解析",
- "desc": "自动解析bilibili视频、番剧解析",
- "author": "mengshouer",
- "homepage": "https://github.com/mengshouer/nonebot_plugin_analysis_bilibili",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-01-16T10:41:17.818638Z",
- "version": "2.6.8",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_localstore",
- "project_link": "nonebot-plugin-localstore",
- "name": "本地数据存储",
- "desc": "存储插件数据至本地文件",
- "author": "yanyongyu",
- "homepage": "https://github.com/nonebot/plugin-localstore",
- "tags": [],
- "is_official": true,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.6.0",
- "time": "2024-02-11T10:14:07.410250Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_alconna",
- "project_link": "nonebot-plugin-alconna",
- "name": "Alconna 插件",
- "desc": "提供 ArcletProject/Alconna 的 Nonebot2 适配版本与工具",
- "author": "RF-Tar-Railt",
- "homepage": "https://github.com/nonebot/plugin-alconna",
- "tags": [
- {
- "label": "多适配器",
- "color": "#5280ea"
- },
- {
- "label": "消息匹配",
- "color": "#ea6f52"
- },
- {
- "label": "跨平台",
- "color": "#5452ea"
- }
- ],
- "is_official": true,
- "type": "library",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.41.1",
- "time": "2024-03-20T06:05:58.427456Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mcstatus",
- "project_link": "nonebot-plugin-mcstatus",
- "name": "Minecraft 服务器状态查询",
- "desc": "顾名思义",
- "author": "j1g5awi",
- "homepage": "https://github.com/nonepkg/nonebot-plugin-mcstatus",
- "tags": [
- {
- "label": "t:Minecraft",
- "color": "#80070B"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-03T07:30:25.393339Z",
- "version": "0.1.8",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_help",
- "project_link": "nonebot-plugin-help",
- "name": "Nonebot2 Help Menu",
- "desc": "Nonebot2轻量级帮助插件",
- "author": "XZhouQD",
- "homepage": "https://github.com/xzhouqd/nonebot-plugin-help",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.6.1",
- "time": "2023-08-11T12:21:58.006152Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_alias",
- "project_link": "nonebot-plugin-alias",
- "name": "alias命令别名",
- "desc": "为复杂的命令创建别名",
- "author": "MeetWq",
- "homepage": "https://github.com/MeetWq/nonebot-plugin-alias",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-06-20T17:45:31.642072Z",
- "version": "0.3.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_withdraw",
- "project_link": "nonebot-plugin-withdraw",
- "name": "Nonebot2 消息撤回插件",
- "desc": "用于让机器人撤回自己发出的消息",
- "author": "MeetWq",
- "homepage": "https://github.com/MeetWq/nonebot-plugin-withdraw",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-06-20T18:15:41.588691Z",
- "version": "0.2.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_pixivrank_search",
- "project_link": "nonebot-plugin-pixivrank-search",
- "name": "nonebot_plugin_pixivrank_search",
- "desc": "基于RSSHUB阅读器的P站排行和P站搜图",
- "author": "HibiKier",
- "homepage": "https://github.com/HibiKier/nonebot_plugin_pixivrank_search",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-02-18T09:53:18.929348Z",
- "version": "0.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_russian",
- "project_link": "nonebot-plugin-russian",
- "name": "nonebot_plugin_russian",
- "desc": "群内小游戏,使用金币赌注的俄罗斯轮盘",
- "author": "HibiKier",
- "homepage": "https://github.com/HibiKier/nonebot_plugin_russian",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-21T17:02:28.204634Z",
- "version": "0.2.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_setu",
- "project_link": "nonebot-plugin-setu",
- "name": "nonebot_plugin_setu",
- "desc": "基于loliconImage Api的涩图插件,内置涩图CD",
- "author": "ayanamiblhx",
- "homepage": "https://github.com/ayanamiblhx/nonebot_plugin_setu",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-23T13:27:43.283834Z",
- "version": "1.1.11",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_heweather",
- "project_link": "nonebot-plugin-heweather",
- "name": "和风天气",
- "desc": "和风天气图片显示插件",
- "author": "kexue-z",
- "homepage": "https://github.com/kexue-z/nonebot-plugin-heweather",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.8.2",
- "time": "2024-03-14T08:49:11.758260Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_autohelp",
- "project_link": "nonebot-plugin-autohelp",
- "name": "nonebot-plugin-autohelp",
- "desc": "响应help/菜单/帮助(群消息或私信)并提供已载入插件的帮助信息(如命令名,aliases,模块文档)",
- "author": "ffreemt",
- "homepage": "https://github.com/ffreemt/nonebot-plugin-autohelp",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-10-15T16:43:57.811690Z",
- "version": "0.1.7",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_flexperm",
- "project_link": "nonebot-plugin-flexperm",
- "name": "nonebot-plugin-flexperm",
- "desc": "精细化的 NoneBot 权限管理插件",
- "author": "rmuchan",
- "homepage": "https://github.com/rmuchan/nonebot-plugin-flexperm",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-13T10:41:21.102121Z",
- "version": "0.7.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_epicfree",
- "project_link": "nonebot-plugin-epicfree",
- "name": "Epic 限免游戏资讯",
- "desc": "EpicGameStore 喜加一资讯插件,发送「喜加一」逝世看吧!",
- "author": "monsterxcn",
- "homepage": "https://github.com/monsterxcn/nonebot_plugin_epicfree",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-10-30T07:57:15.417775Z",
- "version": "0.2.6",
- "skip_test": false
- },
- {
- "module_name": "ELF_RSS2",
- "project_link": "ELF-RSS",
- "name": "ELF_RSS",
- "desc": "QQ机器人 RSS订阅 插件,订阅源建议选择 RSSHub",
- "author": "Quan666",
- "homepage": "https://github.com/Quan666/ELF_RSS",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "2.6.21",
- "time": "2023-08-28T09:03:15.911695Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_simplemusic",
- "project_link": "nonebot-plugin-simplemusic",
- "name": "SimpleMusic",
- "desc": "最简Q群点歌插件,支持QQ音乐、网易云、酷我、酷狗、咪咕、B站音频区",
- "author": "MeetWq",
- "homepage": "https://github.com/MeetWq/nonebot-plugin-simplemusic",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-10T00:23:57.197112Z",
- "version": "0.1.7",
- "skip_test": false
- },
- {
- "module_name": "nb2chan",
- "project_link": "nb2chan",
- "name": "nb2chan",
- "desc": "Nonebot2酱推送",
- "author": "yucongo",
- "homepage": "https://github.com/ffreemt/nb2chan",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-02-20T08:21:36.557860Z",
- "version": "0.1.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_setu_now",
- "project_link": "nonebot-plugin-setu-now",
- "name": "nonebot-plugin-setu-now",
- "desc": "另一个色图插件",
- "author": "kexue-z",
- "homepage": "https://github.com/kexue-z/nonebot-plugin-setu-now",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.6.4",
- "time": "2023-08-15T03:53:06.050378Z",
- "skip_test": false
- },
- {
- "module_name": "leetcode",
- "project_link": "nonebot-plugin-leetcode",
- "name": "leetcode提醒机器人",
- "desc": " 安装该插件后能往指定qq和指定qq群定时发送leetcode每日一题",
- "author": "zxz0415",
- "homepage": "https://github.com/zxz0415/leetcode",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-04-01T17:49:40.640240Z",
- "version": "0.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_youthstudy",
- "project_link": "nonebot-plugin-youthstudy",
- "name": "nonebot_plugin_youthstudy",
- "desc": "基于nonebot的青年大学习插件,用来获取最新一期的青年大学习答案",
- "author": "ayanamiblhx",
- "homepage": "https://github.com/ayanamiblhx/nonebot_plugin_youthstudy",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-28T07:13:51.801710Z",
- "version": "1.1.8",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_shindan",
- "project_link": "nonebot-plugin-shindan",
- "name": "趣味占卜",
- "desc": "使用ShindanMaker网站的趣味占卜",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-shindan",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [],
- "valid": true,
- "version": "0.6.1",
- "time": "2024-03-14T15:12:03.829758Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_code",
- "project_link": "nonebot-plugin-code",
- "name": "在线运行代码",
- "desc": "在线运行编程代码,语句",
- "author": "yzyyz1387",
- "homepage": "https://github.com/yzyyz1387/nonebot_plugin_code",
- "tags": [
- {
- "label": "func",
- "color": "#dcdcaa"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.0.7",
- "time": "2023-09-08T10:48:27.349570Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_picsbank",
- "project_link": "nonebot-plugin-picsbank",
- "name": "picsbank",
- "desc": "匹配图片进行回答",
- "author": "Diaosi1111",
- "homepage": "https://github.com/Diaosi1111/nonebot_plugin_picsbank",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-02-20T06:35:20.914620Z",
- "version": "0.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_tvseries",
- "project_link": "nonebot-plugin-tvseries",
- "name": "剧集更新列表",
- "desc": "获取聚集更新",
- "author": "kexue-z",
- "homepage": "https://github.com/kexue-z/nonebot-plugin-tvseries",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-02-14T13:24:06.272775Z",
- "version": "0.0.2.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_lolmatch",
- "project_link": "nonebot-plugin-lolmatch",
- "name": "lol比赛信息",
- "desc": "简单的lol比赛信息插件,订阅后会定时推送当日比赛结果",
- "author": "Diaosi1111",
- "homepage": "https://github.com/Diaosi1111/nonebot_plugin_lolmatch",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-03-07T05:54:54.351311Z",
- "version": "0.3.3",
- "skip_test": false
- },
- {
- "module_name": "OlivOS.nonebot",
- "project_link": "olivos.nb2",
- "name": "OlivOS.nb2",
- "desc": "在 NoneBot2 中加载 OlivOS 插件",
- "author": "j1g5awi",
- "homepage": "https://github.com/nonepkg/OlivOS.nb2",
- "tags": [
- {
- "label": "OlivOS",
- "color": "#00a0ea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.2.2",
- "time": "2023-06-20T16:04:40.706727Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_admin",
- "project_link": "nonebot-plugin-admin",
- "name": "不简易群管",
- "desc": "Nonebot2 群管插件 插件",
- "author": "yzyyz1387",
- "homepage": "https://github.com/yzyyz1387/nonebot_plugin_admin",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": false,
- "version": "0.4.5.4",
- "time": "2024-02-29T03:41:19.424728Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_memes",
- "project_link": "nonebot-plugin-memes",
- "name": "表情包制作",
- "desc": "制作各种沙雕表情包",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-memes",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [],
- "valid": true,
- "version": "0.6.2",
- "time": "2024-03-12T09:27:09.610250Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_repeater",
- "project_link": "nonebot-plugin-repeater",
- "name": "群聊复读机",
- "desc": "谁不喜欢+1呢?",
- "author": "ninthseason",
- "homepage": "https://github.com/ninthseason/nonebot-plugin-repeater",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-08-01T11:49:25.518834Z",
- "version": "3.1.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_directlinker",
- "project_link": "nonebot-plugin-directlinker",
- "name": "群文件直链提取器",
- "desc": "提取群文件的下载直链。",
- "author": "ninthseason",
- "homepage": "https://github.com/ninthseason/nonebot-plugin-directlinker",
- "tags": [
- {
- "label": "a:cqhttp",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-12T14:21:08.959060Z",
- "version": "2.4.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_forwarder",
- "project_link": "nonebot-plugin-forwarder",
- "name": "转发姬",
- "desc": "群聊消息实时转发",
- "author": "ninthseason",
- "homepage": "https://github.com/ninthseason/nonebot_plugin_forwarder",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-23T06:30:08.821807Z",
- "version": "2.1.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_roll",
- "project_link": "nonebot-plugin-roll",
- "name": "掷骰子",
- "desc": "掷骰!扔出指定个数的多面骰子🎲",
- "author": "KafCoppelia",
- "homepage": "https://github.com/MinatoAquaCrews/nonebot_plugin_roll",
- "tags": [
- {
- "label": "roll",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.3",
- "time": "2023-10-18T02:03:43.776108Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_crazy_thursday",
- "project_link": "nonebot-plugin-crazy-thursday",
- "name": "疯狂星期四",
- "desc": "持续疯狂!KFC疯狂星期四🍗",
- "author": "KafCoppelia",
- "homepage": "https://github.com/MinatoAquaCrews/nonebot_plugin_crazy_thursday",
- "tags": [
- {
- "label": "Thursday",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.8",
- "time": "2023-10-07T01:52:39.951306Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_covid19_news",
- "project_link": "nonebot-plugin-covid19-news",
- "name": "新冠疫情查询",
- "desc": "查询国内城市新冠疫情信息与政策",
- "author": "Zeta-qixi",
- "homepage": "https://github.com/Zeta-qixi/nonebot-plugin-covid19-news",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-17T05:15:45.018998Z",
- "version": "0.7",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_remake",
- "project_link": "nonebot-plugin-remake",
- "name": "人生重开",
- "desc": "人生重开模拟器",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-remake",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.4.1",
- "time": "2024-03-12T06:00:09.515301Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_weather_lite",
- "project_link": "nonebot-plugin-weather-lite",
- "name": "天气查询",
- "desc": "使用wttr.in的在线天气查询。",
- "author": "zjkwdy",
- "homepage": "https://github.com/zjkwdy/nonebot_plugin_weather_lite",
- "tags": [
- {
- "label": "t:天气",
- "color": "#6ec3d9"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-01-20T03:34:36.465960Z",
- "version": "0.0.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_fortune",
- "project_link": "nonebot-plugin-fortune",
- "name": "今日运势",
- "desc": "抽签!占卜你的今日运势🙏",
- "author": "KafCoppelia",
- "homepage": "https://github.com/MinatoAquaCrews/nonebot_plugin_fortune",
- "tags": [
- {
- "label": "fortune",
- "color": "#ea6f52"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.4.12",
- "time": "2023-07-15T14:42:48.258728Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_tarot",
- "project_link": "nonebot-plugin-tarot",
- "name": "塔罗牌",
- "desc": "塔罗牌!魔法占卜🔮",
- "author": "KafCoppelia",
- "homepage": "https://github.com/KafCoppelia/nonebot_plugin_tarot",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#eaa452"
- },
- {
- "label": "t:tarot",
- "color": "#461264"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-28T12:56:24.105825Z",
- "version": "0.4.0.post4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_emojimix",
- "project_link": "nonebot-plugin-emojimix",
- "name": "emoji合成",
- "desc": "将两个emoji合成为一张图片",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-emojimix",
- "tags": [
- {
- "label": "emoji",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.4.0",
- "time": "2024-03-01T02:49:06.907659Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_what2eat",
- "project_link": "nonebot-plugin-what2eat",
- "name": "今天吃什么",
- "desc": "选择恐惧症?让Bot决定你今天吃什么🍕",
- "author": "KafCoppelia",
- "homepage": "https://github.com/KafCoppelia/nonebot_plugin_what2eat",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#cd3d3d"
- },
- {
- "label": "t:what2eat",
- "color": "#f09526"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-02T11:55:27.491231Z",
- "version": "0.3.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_datastore",
- "project_link": "nonebot-plugin-datastore",
- "name": "数据存储",
- "desc": "NoneBot 数据存储插件",
- "author": "he0119",
- "homepage": "https://github.com/he0119/nonebot-plugin-datastore",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "1.2.0",
- "time": "2024-02-28T09:01:07.651465Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_boardgame",
- "project_link": "nonebot-plugin-boardgame",
- "name": "棋类游戏",
- "desc": "五子棋、黑白棋、围棋",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-boardgame",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.4.0",
- "time": "2024-03-02T09:28:02.725259Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_wordcloud",
- "project_link": "nonebot-plugin-wordcloud",
- "name": "词云",
- "desc": "利用群消息生成词云",
- "author": "he0119",
- "homepage": "https://github.com/he0119/nonebot-plugin-wordcloud",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.7.0",
- "time": "2024-03-01T04:23:25.937459Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_chatrecorder",
- "project_link": "nonebot-plugin-chatrecorder",
- "name": "聊天记录",
- "desc": "记录机器人收到和发出的消息",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-chatrecorder",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.6.0",
- "time": "2024-03-01T02:09:06.819616Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_antiflash",
- "project_link": "nonebot-plugin-antiflash",
- "name": "群聊反闪照",
- "desc": "顾名思义🎇",
- "author": "KafCoppelia",
- "homepage": "https://github.com/KafCoppelia/nonebot_plugin_antiflash",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#6f64d4"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-04-19T02:00:25.241994Z",
- "version": "0.2.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_word_bank2",
- "project_link": "nonebot-plugin-word-bank2",
- "name": "nonebot-plugin-word-bank2",
- "desc": "无数据库的轻量问答插件",
- "author": "kexue-z",
- "homepage": "https://github.com/kexue-z/nonebot-plugin-word-bank2",
- "tags": [
- {
- "label": "wordbank",
- "color": "#0b00ff"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.8",
- "time": "2023-06-15T04:20:03.438577Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_txt2img",
- "project_link": "nonebot-plugin-txt2img",
- "name": "文字转图片",
- "desc": "使用 Pillow 进行文字转图片",
- "author": "mobyw",
- "homepage": "https://github.com/mobyw/nonebot-plugin-txt2img",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.4.1",
- "time": "2024-02-22T05:25:41.002376Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_morning",
- "project_link": "nonebot-plugin-morning",
- "name": "おはよう!",
- "desc": "早晚安记录作息,培养优质睡眠😴",
- "author": "KafCoppelia",
- "homepage": "https://github.com/KafCoppelia/nonebot_plugin_morning",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#da421c"
- },
- {
- "label": "t:morning",
- "color": "#ebc025"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-28T03:36:05.610930Z",
- "version": "0.3.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_pixiv",
- "project_link": "nonebot-plugin-pixiv",
- "name": "pixiv.net p站查询图片",
- "desc": "pixiv.net p站查询图片(支持动图和多图)",
- "author": "anlen123",
- "homepage": "https://github.com/anlen123/nonebot_plugin_pixiv",
- "tags": [
- {
- "label": "t: pixiv",
- "color": "#0096fa"
- },
- {
- "label": "R18",
- "color": "#ffff00"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-20T09:53:04.279714Z",
- "version": "1.1.5",
- "skip_test": false
- },
- {
- "module_name": "YetAnotherPicSearch",
- "project_link": "yetanotherpicsearch",
- "name": "YetAnotherPicSearch",
- "desc": "基于 kitUIN/PicImageSearch 的另一个 Nonebot 搜图插件。",
- "author": "NekoAria",
- "homepage": "https://github.com/NekoAria/YetAnotherPicSearch",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-03-15T04:04:51.199073Z",
- "version": "1.9.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_gachalogs",
- "project_link": "nonebot-plugin-gachalogs",
- "name": "原神抽卡记录分析",
- "desc": "统计及导出原神祈愿记录,在 QQ 里鉴定原神欧皇吧!",
- "author": "monsterxcn",
- "homepage": "https://github.com/monsterxcn/nonebot-plugin-gachalogs",
- "tags": [
- {
- "label": "t:Genshin",
- "color": "#ffd49f"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-07-10T08:08:27.393467Z",
- "version": "0.2.13",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_everyday_en",
- "project_link": "nonebot-plugin-everyday-en",
- "name": "每日一句",
- "desc": "每日一句英文句子,可选定时发送",
- "author": "MelodyYuuka",
- "homepage": "https://github.com/MelodyYuuka/nonebot_plugin_everyday_en",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "EveryDay",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-04-02T07:45:02.498078Z",
- "version": "1.1.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_fire",
- "project_link": "nonebot-plugin-fire",
- "name": "QQ自动续火花",
- "desc": "通过每天定时发送“/echo 花花”实现续火花",
- "author": "25252www",
- "homepage": "https://github.com/25252www/nonebot_plugin_fire",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-04-01T11:33:36.907538Z",
- "version": "1.0.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_qrcode",
- "project_link": "nonebot-plugin-qrcode",
- "name": "二维码识别与发送",
- "desc": "qq聊天二维码插件",
- "author": "kexue-z",
- "homepage": "https://github.com/kexue-z/nonebot-plugin-qrcode",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#ea5252"
- },
- {
- "label": "QRcode",
- "color": "#0020ff"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-04T10:54:24.541684Z",
- "version": "0.0.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ygo",
- "project_link": "nonebot-plugin-ygo",
- "name": "游戏王卡查",
- "desc": "nonebot的游戏王卡查插件",
- "author": "anlen123",
- "homepage": "https://github.com/anlen123/nonebot_plugin_ygo",
- "tags": [
- {
- "label": "t:游戏王",
- "color": "#ea5252"
- },
- {
- "label": "口胡王",
- "color": "#ea5252"
- },
- {
- "label": "ygo",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-07-03T11:45:31.205090Z",
- "version": "1.0.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bilibilibot",
- "project_link": "nonebot-plugin-bilibilibot",
- "name": "bilibili通知插件",
- "desc": "将up主更新、番剧更新、主播开播等信息推送到QQ",
- "author": "TDK1969",
- "homepage": "https://github.com/TDK1969/nonebot_plugin_bilibilibot",
- "tags": [
- {
- "label": "bilibili",
- "color": "#f605dd"
- },
- {
- "label": "a:onebot11",
- "color": "#05f6e4"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-01-03T18:12:50.547913Z",
- "version": "2.3.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_color",
- "project_link": "nonebot-plugin-color",
- "name": "色图生成",
- "desc": "用于生成指定色彩图片的 NoneBot2 插件",
- "author": "monsterxcn",
- "homepage": "https://github.com/monsterxcn/nonebot-plugin-color",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": false,
- "version": "0.4.0",
- "time": "2024-03-10T10:07:17.874441Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_blackjack",
- "project_link": "nonebot-plugin-blackjack",
- "name": "21点游戏插件",
- "desc": "一个基于签到积分的21点游戏与积分对战插件",
- "author": "yaowan233",
- "homepage": "https://github.com/yaowan233/nonebot-plugin-blackjack",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-03-11T15:11:50.631785Z",
- "version": "0.0.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_arcaeabot",
- "project_link": "nonebot-plugin-arcaeabot",
- "name": "Arcaea查分插件",
- "desc": "Arcaea查分插件(recent, best30)",
- "author": "SEAFHMC",
- "homepage": "https://github.com/SEAFHMC/nonebot-plugin-arcaeabot",
- "tags": [
- {
- "label": "Arcaea",
- "color": "#db52ea"
- },
- {
- "label": "a:onebot",
- "color": "#ff2e00"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-09T14:09:57.926195Z",
- "version": "3.1.19",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ddcheck",
- "project_link": "nonebot-plugin-ddcheck",
- "name": "成分姬",
- "desc": "查询B站用户关注的VTuber成分",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-ddcheck",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.4.0",
- "time": "2024-03-02T15:02:58.078642Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_leetcode2",
- "project_link": "nonebot-plugin-leetcode2",
- "name": "第二个leetcode查询插件",
- "desc": "可查询用户信息、获取每日一题与随机一题和搜索题目。",
- "author": "Nranphy",
- "homepage": "https://github.com/Nranphy/nonebot_plugin_leetcode2",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-13T12:14:05.351724Z",
- "version": "1.1.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_hikarisearch",
- "project_link": "nonebot-plugin-hikarisearch",
- "name": "HikariSearch",
- "desc": "使用 HikariSearch 的又一个搜图插件",
- "author": "MeetWq",
- "homepage": "https://github.com/MeetWq/nonebot-plugin-hikarisearch",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-10-03T06:52:42.532048Z",
- "version": "0.1.7",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mediawiki",
- "project_link": "nonebot-plugin-mediawiki",
- "name": "MediaWiki查询",
- "desc": "为群聊提供简单的wiki查询功能(仅支持onebot)",
- "author": "KoishiStudio",
- "homepage": "https://github.com/KoishiStudio/nonebot-plugin-mediawiki",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "t:wiki",
- "color": "#679ff9"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-08-28T19:29:44.225452Z",
- "version": "1.0.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_wordle",
- "project_link": "nonebot-plugin-wordle",
- "name": "猜单词",
- "desc": "wordle猜单词游戏",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-wordle",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.4.1",
- "time": "2024-02-28T15:01:45.634106Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_giyf",
- "project_link": "nonebot-plugin-giyf",
- "name": "快速搜索",
- "desc": "指引群友快速 访 ~~(tui)~~ 问 ~~(dao)~~ 谷歌娘(在中国大陆大概就是度娘了~)",
- "author": "KoishiStudio",
- "homepage": "https://github.com/KoishiStudio/nonebot-plugin-giyf",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-06-10T03:01:26.351493Z",
- "version": "0.1.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_abstract",
- "project_link": "nonebot-plugin-abstract",
- "name": "语句抽象化",
- "desc": "能够将你的语句变得抽象起来~",
- "author": "CherryCherries",
- "homepage": "https://github.com/CherryCherries/nonebot-plugin-abstract",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-25T09:05:56.928814Z",
- "version": "1.0.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_params",
- "project_link": "nonebot-plugin-params",
- "name": "多适配器帮助函数",
- "desc": "提供编写多适配器插件的帮助函数",
- "author": "iyume",
- "homepage": "https://github.com/iyume/nonebot-plugin-params",
- "tags": [
- {
- "label": "t:helper",
- "color": "#ffe873"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-03-28T04:56:05.243623Z",
- "version": "0.1.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_handle",
- "project_link": "nonebot-plugin-handle",
- "name": "猜成语",
- "desc": "汉字Wordle 猜成语",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-handle",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.4.1",
- "time": "2024-03-03T14:32:13.372089Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_minesweeper",
- "project_link": "nonebot-plugin-minesweeper",
- "name": "扫雷",
- "desc": "扫雷游戏",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-minesweeper",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.4.1",
- "time": "2024-03-02T05:26:09.929052Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_draw",
- "project_link": "nonebot_plugin_draw",
- "name": "nonebot_plugin_draw",
- "desc": "模拟抽签的一个本地化插件",
- "author": "bingganhe123",
- "homepage": "https://github.com/bingganhe123/nonebot_plugin_draw",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-04-12T02:35:00.986589Z",
- "version": "0.1.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_randomtkk",
- "project_link": "nonebot-plugin-randomtkk",
- "name": "随机唐可可",
- "desc": "找到唐可可,和她一起做学园偶像!🎶",
- "author": "KafCoppelia",
- "homepage": "https://github.com/MinatoAquaCrews/nonebot_plugin_randomtkk",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#d62222"
- },
- {
- "label": "t:Tan Kuku",
- "color": "#fdaf75"
- },
- {
- "label": "t:Liyuu",
- "color": "#465dfd"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-29T10:01:33.569934Z",
- "version": "0.1.5.post1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_dida",
- "project_link": "nonebot-plugin-dida",
- "name": "nonebot-plugin-dida",
- "desc": "基于Nonebot的滴答清单插件,可创建普通任务/子任务,按照条件查询任务",
- "author": "TDK1969",
- "homepage": "https://github.com/TDK1969/nonebot_plugin_dida",
- "tags": [
- {
- "label": "t:滴答清单",
- "color": "#007ffd"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-24T14:43:52.546960Z",
- "version": "2.0.0.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_alipayvoice",
- "project_link": "nonebot-plugin-alipayvoice",
- "name": "支付宝到账语音",
- "desc": "发送支付宝到账语音, 支持金额范围为0.01~999999999999.99",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-alipayvoice",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-06-21T03:04:10.967969Z",
- "version": "0.5.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_answersbook",
- "project_link": "nonebot-plugin-answersbook",
- "name": "答案之书",
- "desc": "愿一切无解都有解!解除你的迷惑,终结你的纠结!",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-answersbook",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-05-09T16:28:04.479501Z",
- "version": "0.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_hitokoto",
- "project_link": "nonebot-plugin-hitokoto",
- "name": "一言",
- "desc": "总有一句话能打动你的心",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-hitokoto",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-27T03:19:08.068742Z",
- "version": "0.2.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bilicover",
- "project_link": "nonebot-plugin-bilicover",
- "name": "B站视频封面提取",
- "desc": "提取B站视频的封面,支持链接、av号、bv号",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-bilicover",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-15T15:00:17.810788Z",
- "version": "0.2.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_cchess",
- "project_link": "nonebot-plugin-cchess",
- "name": "象棋",
- "desc": "象棋,支持人机和对战",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-cchess",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.4.0",
- "time": "2024-03-01T15:20:58.978317Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_chess",
- "project_link": "nonebot-plugin-chess",
- "name": "国际象棋",
- "desc": "国际象棋,支持人机和对战",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-chess",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.5.0",
- "time": "2024-03-02T06:32:33.038543Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_charpic",
- "project_link": "nonebot-plugin-charpic",
- "name": "charpic",
- "desc": "合成字符画",
- "author": "RafuiiChan",
- "homepage": "https://github.com/1umine/nonebot_plugin_charpic",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.3",
- "time": "2023-10-08T15:19:56.533711Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_miragetank",
- "project_link": "nonebot-plugin-miragetank",
- "name": "miragetank",
- "desc": "合成/分离幻影坦克图片",
- "author": "RafuiiChan",
- "homepage": "https://github.com/1umine/nonebot_plugin_miragetank",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.5",
- "time": "2023-10-06T04:10:56.321148Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_covid",
- "project_link": "nonebot-plugin-covid",
- "name": "国内新冠疫情数据查询",
- "desc": "查询国内各省份及下属地级市的疫情数据",
- "author": "nicklly",
- "homepage": "https://github.com/nicklly/nonebot2_covid_plugin",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-26T22:14:17.882416+08:00",
- "version": "0.0.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_yulu",
- "project_link": "nonebot-plugin-yulu",
- "name": "语录娱乐",
- "desc": "语录娱乐小插件",
- "author": "bingqiu456",
- "homepage": "https://github.com/bingqiu456/nonebot-plugin-yulu",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-20T10:15:53.506911Z",
- "version": "3.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_maze",
- "project_link": "nonebot-plugin-maze",
- "name": "走迷宫",
- "desc": "与机器人交互解迷宫",
- "author": "EtherLeaF",
- "homepage": "https://github.com/EtherLeaF/nonebot_plugin_maze",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-24T07:37:30.144772Z",
- "version": "0.2.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_moyu",
- "project_link": "nonebot-plugin-moyu",
- "name": "摸鱼日历",
- "desc": "摸鱼一时爽, 一直摸鱼一直爽",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-moyu",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-18T12:01:49.758334Z",
- "version": "0.3.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mockingbird",
- "project_link": "nonebot-plugin-mockingbird",
- "name": "MockingBird语音",
- "desc": "利用MockingBird来生成语音,并支持多种语音切换",
- "author": "AkashiCoin",
- "homepage": "https://github.com/AkashiCoin/nonebot_plugin_mockingbird",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-05-24T10:28:06.597823Z",
- "version": "0.2.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_baidutranslate",
- "project_link": "nonebot-plugin-baidutranslate",
- "name": "百度翻译",
- "desc": "可以调用百度翻译 API 实现常用语种之间的互译",
- "author": "NumberSir",
- "homepage": "https://github.com/NumberSir/nonebot_plugin_baidutranslate",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-04T02:02:45.349939Z",
- "version": "0.3.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_tortoise_orm",
- "project_link": "nonebot-plugin-tortoise-orm",
- "name": "nonebot_plugin_tortoise_orm",
- "desc": "Tortoise ORM 插件",
- "author": "kexue-z",
- "homepage": "https://github.com/kexue-z/nonebot-plugin-tortoise-orm",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.1",
- "time": "2023-08-22T04:01:30.366075Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_dailysign",
- "project_link": "nonebot-plugin-dailysign",
- "name": "nonebot_plugin_dailysign",
- "desc": "简单的签到插件",
- "author": "kexue-z",
- "homepage": "https://github.com/kexue-z/nonebot-plugin-dailysign",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.0.1",
- "time": "2023-06-29T02:30:01.006481Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_tetris_stats",
- "project_link": "nonebot-plugin-tetris-stats",
- "name": "TETRIS Stats",
- "desc": "一个基于nonebot2的用于查询TETRIS相关游戏玩家数据的插件",
- "author": "shoucandanghehe",
- "homepage": "https://github.com/shoucandanghehe/nonebot-plugin-tetris-stats",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#da2b2b"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-09-21T14:35:01.691461Z",
- "version": "0.4.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bilibili_viode",
- "project_link": "nonebot_plugin_bilibili_viode",
- "name": "B站视频伪分享卡片",
- "desc": "将用户发送的B站视频ID转为(伪)分享卡片的形式",
- "author": "ASTWY",
- "homepage": "https://github.com/ASTWY/nonebot_plugin_bilibili_viode",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-30T21:21:44.093741Z",
- "version": "1.0.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_imagetools",
- "project_link": "nonebot-plugin-imagetools",
- "name": "图片操作",
- "desc": "简单图片操作",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-imagetools",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.4.1",
- "time": "2024-03-12T09:52:51.485907Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_warframe_clock",
- "project_link": "nonebot-plugin-warframe-clock",
- "name": "Warframe时间查询",
- "desc": "查询Warframe的平原与地球时间状态",
- "author": "axStar",
- "homepage": "https://github.com/axStar/nonebot_plugin_warframe_clock",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "Warframe",
- "color": "#149090"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-05-31T03:32:53.069089Z",
- "version": "1.3",
- "skip_test": false
- },
- {
- "module_name": "hikari_bot",
- "project_link": "hikari-bot",
- "name": "Hikari-战舰世界水表查询",
- "desc": "顾名思义",
- "author": "benx1n",
- "homepage": "https://github.com/benx1n/HikariBot",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-12-06T04:31:59.376089Z",
- "version": "1.0.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_who_at_me",
- "project_link": "nonebot-plugin-who-at-me",
- "name": "谁艾特我了",
- "desc": "看看是谁又在艾特我",
- "author": "SEAFHMC",
- "homepage": "https://github.com/SEAFHMC/nonebot-plugin-who-at-me",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#ea5252"
- },
- {
- "label": "t:群聊",
- "color": "#52afea"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-09-19T02:26:39.239522Z",
- "version": "0.2.8",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_covid_19_by",
- "project_link": "nonebot-plugin-covid-19-by",
- "name": "疫情小助手",
- "desc": "疫情小助手 支持查地区 风险地区 境外输入等",
- "author": "bingqiu456",
- "homepage": "https://github.com/bingqiu456/nonebot-plugin-covid-19-by",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#52ea8a"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-08-04T12:51:50.273807Z",
- "version": "4.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_reboot",
- "project_link": "nonebot-plugin-reboot",
- "name": "nonebot_plugin_reboot [重启 bot]",
- "desc": "用命令重启机器人",
- "author": "18870",
- "homepage": "https://github.com/18870/nonebot-plugin-reboot",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.4",
- "time": "2023-06-24T10:34:29.338115Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_setu4",
- "project_link": "nonebot-plugin-setu4",
- "name": "setu4",
- "desc": "内置数据库的setu插件, 尝试降低因为风控发不出图的概率",
- "author": "Special-Week",
- "homepage": "https://github.com/Special-Week/nonebot_plugin_setu4",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.15.114514.1",
- "time": "2024-02-20T06:48:16.825857Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_smart_reply",
- "project_link": "nonebot-plugin-smart-reply",
- "name": "smart_reply",
- "desc": "nonebot2的融合了openai, newbing, 词库的智障回复插件",
- "author": "Special-Week",
- "homepage": "https://github.com/Special-Week/nonebot_plugin_smart_reply",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.15.114514",
- "time": "2024-02-28T10:39:44.325920Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_today_in_history",
- "project_link": "nonebot-plugin-today-in-history",
- "name": "历史上的今天",
- "desc": "发送每日历史上的今天",
- "author": "AquamarineCyan",
- "homepage": "https://github.com/AquamarineCyan/nonebot-plugin-today-in-history",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.3",
- "time": "2023-12-06T13:23:11.873181Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_BitTorrent",
- "project_link": "nonebot_plugin_BitTorrent",
- "name": "bittorrent",
- "desc": "磁力搜索插件",
- "author": "Special-Week",
- "homepage": "https://github.com/Special-Week/nonebot_plugin_BitTorrent",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.0.21",
- "time": "2024-02-20T06:47:14.799458Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_namelist",
- "project_link": "nonebot-plugin-namelist",
- "name": "黑白名单",
- "desc": "简易黑白用户名单管理",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-namelist",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-07-16T09:41:29.820153Z",
- "version": "0.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bread_shop",
- "project_link": "nonebot-plugin-bread-shop",
- "name": "面包店小游戏",
- "desc": "面包店休闲小游戏",
- "author": "Mai-icy",
- "homepage": "https://github.com/Mai-icy/nonebot-plugin-bread-shop",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-17T08:16:03.035271Z",
- "version": "0.1.14",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_PicMenu",
- "project_link": "nonebot_plugin_PicMenu",
- "name": "PicMenu",
- "desc": "根据插件元数据生成图片化功能菜单",
- "author": "hamo-reid",
- "homepage": "https://github.com/hamo-reid/nonenot_plugin_PicMenu",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#030303"
- },
- {
- "label": "t:menu",
- "color": "#753dc6"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-08-16T05:48:01.071422Z",
- "version": "0.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_horserace",
- "project_link": "nonebot_plugin_horserace",
- "name": "赛马",
- "desc": "群内青春版赛马小游戏",
- "author": "shinianj",
- "homepage": "https://github.com/shinianj/nonebot_plugin_horserace",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-06-30T05:20:53.029037Z",
- "version": "2.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_firexN",
- "project_link": "nonebot-plugin-firexN",
- "name": "一起燚xN吧",
- "desc": "QQ续火花,可以自定义多个联系人、消息内容、发送时间,支持群聊定时消息",
- "author": "GC-ZF",
- "homepage": "https://github.com/GC-ZF/nonebot_plugin_firexN",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-24T13:46:27.472585Z",
- "version": "0.1.7",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bfinfo",
- "project_link": "nonebot-plugin-bfinfo",
- "name": "战地1、5战绩查询工具",
- "desc": "QQ私聊或群聊发送战地游戏ID,返回基础信息以及最佳兵种、最佳枪械、最佳载具、最佳模式信息",
- "author": "GC-ZF",
- "homepage": "https://github.com/GC-ZF/nonebot_plugin_bfinfo",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-05T14:10:41.291955Z",
- "version": "0.0.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_osubot",
- "project_link": "nonebot-plugin-osubot",
- "name": "OSUBot",
- "desc": "OSU查分插件",
- "author": "yaowan233",
- "homepage": "https://github.com/yaowan233/nonebot-plugin-osubot",
- "tags": [
- {
- "label": "OSU",
- "color": "#eb5d9b"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [],
- "valid": true,
- "version": "5.2.2",
- "time": "2024-03-11T07:06:45.988200Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_acc_calculate",
- "project_link": "nonebot-plugin-acc-calculate",
- "name": "ACC计算工具",
- "desc": "能够计算段位的单曲acc,支持malodyv3段位regular、ex",
- "author": "10-24",
- "homepage": "https://github.com/10-24/nonebot-plugin-acc-calculate",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-10T10:15:56.678714Z",
- "version": "1.0.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_kawaii_robot",
- "project_link": "nonebot_plugin_kawaii_robot",
- "name": "KawaiiRobot",
- "desc": "使用 Kyomotoi/AnimeThesaurus 的 NoneBot2 的回复(文i)插件",
- "author": "KarisAya",
- "homepage": "https://github.com/KarisAya/nonebot_plugin_kawaii_robot/",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "4.1.0.post1",
- "time": "2024-03-15T14:33:21.268256Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_addFriend",
- "project_link": "nonebot_plugin_addFriend",
- "name": "处理好友添加和群邀请",
- "desc": "一个基于NoneBot2的插件,用于处理被请求加QQ好友和QQ群的请求",
- "author": "ziru-w",
- "homepage": "https://github.com/ziru-w/nonebot_plugin_addFriend",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-09-16T14:12:37.178511Z",
- "version": "2.5.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_date_name",
- "project_link": "nonebot-plugin-date-name",
- "name": "群昵称时间",
- "desc": "一个可以群昵称显示现在时间的插件",
- "author": "bingqiu456",
- "homepage": "https://github.com/bingqiu456/nonebot-plugin-date-name",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#a552ea"
- },
- {
- "label": "t:qun_card",
- "color": "#e552ea"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-15T09:06:23.113910Z",
- "version": "3.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_easyCommand",
- "project_link": "nonebot_plugin_easyCommand",
- "name": "易命令",
- "desc": "一个基于NoneBot2的简单的用于动态地添加命令或添加定时任务的插件",
- "author": "ziru-w",
- "homepage": "https://github.com/ziru-w/nonebot_plugin_easyCommand",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-15T03:35:40.231889Z",
- "version": "1.1.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_report",
- "project_link": "nonebot-plugin-report",
- "name": "推送钩子",
- "desc": "使用 webhook 向用户推送消息",
- "author": "syrinka",
- "homepage": "https://github.com/syrinka/nonebot-plugin-report",
- "tags": [
- {
- "label": "t:webhook",
- "color": "#51b3a8"
- },
- {
- "label": "t:notify",
- "color": "#3985f7"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-03-10T09:44:45.338348Z",
- "version": "1.3.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_hammer_nbnhhsh",
- "project_link": "nonebot-plugin-hammer-nbnhhsh",
- "name": "「能不能好好说话?」缩写翻译",
- "desc": "拼音首字母及阿拉伯数字缩写翻译",
- "author": "ArgonarioD",
- "homepage": "https://github.com/ArgonarioD/nonebot-plugin-hammer-nbnhhsh",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "a:cqhttp",
- "color": "#000000"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-08-01T06:05:33.097465Z",
- "version": "1.0.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bawiki",
- "project_link": "nonebot-plugin-bawiki",
- "name": "BAWiki",
- "desc": "碧蓝档案Wiki插件",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-bawiki",
- "tags": [
- {
- "label": "碧蓝档案",
- "color": "#00d7fb"
- },
- {
- "label": "蔚藍檔案",
- "color": "#00d7fb"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.11.2",
- "time": "2024-03-10T11:22:39.906792Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mcqq",
- "project_link": "nonebot-plugin-mcqq",
- "name": "MC_QQ",
- "desc": "基于NoneBot的与Minecraft Server互通消息的插件",
- "author": "17TheWord",
- "homepage": "https://github.com/17TheWord/nonebot-plugin-mcqq",
- "tags": [
- {
- "label": "Minecraft",
- "color": "#52ea6f"
- },
- {
- "label": "消息互通",
- "color": "#52eadf"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.minecraft",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.qq"
- ],
- "valid": false,
- "version": "2.5.3.post1",
- "time": "2024-02-29T07:00:39.619226Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_covid_19_by_guild",
- "project_link": "nonebot-plugin-covid-19-by-guild",
- "name": "疫情小助手-频道版",
- "desc": "👉 疫情小助手 频道版👈",
- "author": "bingqiu456",
- "homepage": "https://github.com/bingqiu456/nonebot-plugin-covid-19-by-guild",
- "tags": [
- {
- "label": "a:QQ频道",
- "color": "#ea5252"
- },
- {
- "label": "t:疫情小助手",
- "color": "#526fea"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-08-08T13:02:36.594332Z",
- "version": "1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_wiki",
- "project_link": "nonebot-plugin-wiki",
- "name": "wiki条目搜索、获取简介",
- "desc": "通过mediawiki api进行条目搜索、生成简介(biliwiki部分通过网页解析实现)",
- "author": "ZombieFly",
- "homepage": "https://github.com/ZombieFly/nb2-wiki",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-11-28T14:31:02.494388Z",
- "version": "0.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_groupmanager",
- "project_link": "nonebot-plugin-groupmanager",
- "name": "多功能群管",
- "desc": "与简易群管属于同个产品,就是多了一个入群欢迎,感谢@幼稚园园长 开发的原版插件的帮助",
- "author": "HuYihe2008",
- "homepage": "https://github.com/HuYihe2008/nonebot_plugin_groupmanager",
- "tags": [
- {
- "label": "简易群管",
- "color": "#53e950"
- },
- {
- "label": "插件改良",
- "color": "#2b7be2"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-08-25T03:50:08.584658Z",
- "version": "1.0.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_game_collection",
- "project_link": "nonebot_plugin_game_collection",
- "name": "小游戏合集",
- "desc": "改自 nonebot_plugin_russian 合并了nonebot_plugin_horserace还有一些自编玩法的小游戏合集。",
- "author": "KarisAya",
- "homepage": "https://github.com/KarisAya/nonebot_plugin_game_collection",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-11-13T11:14:29.877161Z",
- "version": "2.4.16",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_drawer",
- "project_link": "nonebot-plugin-drawer",
- "name": "nonebot-plugin-drawer",
- "desc": "适用于 Nonebot2 的AI画画插件",
- "author": "CrazyBoyM",
- "homepage": "https://github.com/CrazyBoyM/nonebot-plugin-drawer",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-10-06T10:07:03.855313Z",
- "version": "0.4.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_jrrp-n",
- "project_link": "nonebot-plugin-jrrp-n",
- "name": "每日人品",
- "desc": "不基于random的每日人品插件",
- "author": "SkyDynamic",
- "homepage": "https://github.com/SkyDynamic/nonebot_plugin_jrrp",
- "tags": [
- {
- "label": "每日人品",
- "color": "#ea5252"
- },
- {
- "label": "jrrp",
- "color": "#529fea"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-09-11T12:26:29.764709Z",
- "version": "1.0.1a1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_moegoe",
- "project_link": "nonebot-plugin-moegoe",
- "name": "日韩中 VITS 模型原神拟声",
- "desc": "现在是琪亚娜时间~",
- "author": "Yiyuiii",
- "homepage": "https://github.com/Yiyuiii/nonebot-plugin-moegoe",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-01-03T07:57:36.831231Z",
- "version": "0.10.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_pixivbot",
- "project_link": "nonebot-plugin-pixivbot",
- "name": "PixivBot",
- "desc": "发送随机Pixiv插画、画师更新推送、定时订阅推送……",
- "author": "ssttkkl",
- "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-pixivbot",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.red",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "2.1.1",
- "time": "2023-11-29T05:38:58.958393Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_workscore",
- "project_link": "nonebot-plugin-workscore",
- "name": "工作性价比计算器",
- "desc": "工作性价比计算器,算算你有多惨",
- "author": "yzyyz1387",
- "homepage": "https://github.com/yzyyz1387/nonebot_plugin_workscore",
- "tags": [
- {
- "label": "工作性价比计算器",
- "color": "#3898fc"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.2",
- "time": "2023-09-08T10:44:39.331076Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_treehelp",
- "project_link": "nonebot-plugin-treehelp",
- "name": "帮助",
- "desc": "获取插件帮助信息",
- "author": "he0119",
- "homepage": "https://github.com/he0119/nonebot-plugin-treehelp",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.4.1",
- "time": "2024-03-01T05:09:14.419256Z",
- "skip_test": false
- },
- {
- "module_name": "cqsat",
- "project_link": "nonebot-plugin-cqsat",
- "name": "HAM助手",
- "desc": "业余无线电相关工具",
- "author": "yzyyz1387",
- "homepage": "https://github.com/yzyyz1387/cqsat",
- "tags": [
- {
- "label": "业余无线电",
- "color": "#ea5252"
- },
- {
- "label": "HAM",
- "color": "#3898fc"
- },
- {
- "label": "卫星追踪",
- "color": "#fca638"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": false,
- "version": "0.1.12.3",
- "time": "2024-03-07T03:24:10.900500Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_course",
- "project_link": "nonebot-plugin-course",
- "name": "课表查询",
- "desc": "本周课表,完整课表,下节课在哪上,今天还有什么课🤔",
- "author": "InariInDream",
- "homepage": "https://github.com/InariInDream/nonebot_plugin_course",
- "tags": [
- {
- "label": "课表",
- "color": "#6e9af2"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-26T09:03:50.284334Z",
- "version": "0.1.9",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_dialectlist",
- "project_link": "nonebot-plugin-dialectlist",
- "name": "话痨排行榜",
- "desc": "给话多的群友一个排行",
- "author": "X-Skirt-X",
- "homepage": "https://github.com/X-Skirt-X/nonebot_plugin_dialectlist",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-19T02:13:34.033923Z",
- "version": "1.4.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_offline_mahjong_helper",
- "project_link": "nonebot-plugin-offline-mahjong-helper",
- "name": "面麻小助手",
- "desc": "可约桌、算点、精算、雀魂查询的面麻助手。",
- "author": "Nranphy",
- "homepage": "https://github.com/Nranphy/nonebot_plugin_offline_mahjong_helper",
- "tags": [
- {
- "label": "Mahjong",
- "color": "#ea5252"
- },
- {
- "label": "雀魂",
- "color": "#eaa452"
- },
- {
- "label": "线下约桌",
- "color": "#52a6ea"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-25T07:44:48.326427Z",
- "version": "0.2.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_send",
- "project_link": "nonebot-plugin-send",
- "name": "反馈及通知",
- "desc": "用户通过bot向superuser发送反馈,以及bot向所有群发送通知",
- "author": "sena-nana",
- "homepage": "https://github.com/sena-nana/nonebot-plugin-send",
- "tags": [
- {
- "label": "t:send",
- "color": "#ea5252"
- },
- {
- "label": "t:notice",
- "color": "#ea5252"
- },
- {
- "label": "t:公告",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-11-26T09:20:01.529021Z",
- "version": "0.1.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_todo_nlp",
- "project_link": "nonebot-plugin-todo-nlp",
- "name": "自识别todo",
- "desc": "一款自动识别提醒内容,可生成todo图片并定时推送的nonebot2插件,v11适配器可用",
- "author": "CofinCup",
- "homepage": "https://github.com/CofinCup/nonebot-plugin-todo-nlp",
- "tags": [
- {
- "label": "t:todo",
- "color": "#499bdd"
- },
- {
- "label": "t:nlp",
- "color": "#83b279"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-29T15:38:01.799965Z",
- "version": "0.1.9",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_wordsnorote",
- "project_link": "nonebot-plugin-wordsnorote",
- "name": "不背单词",
- "desc": "哥们哥们,背单词么?哥们!",
- "author": "GC-ZF",
- "homepage": "https://github.com/GC-ZF/nonebot_plugin_wordsnorote",
- "tags": [
- {
- "label": "四六级",
- "color": "#24a0d8"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-08-30T08:50:02.018317Z",
- "version": "0.0.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_CyberSensoji",
- "project_link": "nonebot-plugin-CyberSensoji",
- "name": "赛博浅草寺",
- "desc": "随机抽取浅草寺的一签运势",
- "author": "Raidenneox",
- "homepage": "https://github.com/Raidenneox/nonebot_plugin_CyberSensoji",
- "tags": [
- {
- "label": "t:抽签",
- "color": "#52eadf"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-08-31T02:25:54.508365Z",
- "version": "0.0.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_gspanel",
- "project_link": "nonebot-plugin-gspanel",
- "name": "原神角色展柜查询",
- "desc": "移植自 @yoimiya-kokomi/miao-plugin 的原神游戏内角色展柜数据查询",
- "author": "monsterxcn",
- "homepage": "https://github.com/monsterxcn/nonebot-plugin-gspanel",
- "tags": [
- {
- "label": "t:Genshin",
- "color": "#ffd49f"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-11-09T07:32:00.271465Z",
- "version": "0.2.25",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_gsmaterial",
- "project_link": "nonebot-plugin-gsmaterial",
- "name": "原神每日材料查询",
- "desc": "原神每日天赋培养、武器突破材料查询,通过 Project Amber 数据库(支持部分尚未实装角色)自动更新每日数据~",
- "author": "monsterxcn",
- "homepage": "https://github.com/monsterxcn/nonebot-plugin-gsmaterial",
- "tags": [
- {
- "label": "t:Genshin",
- "color": "#ffd49f"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-10-09T14:57:38.167171Z",
- "version": "0.2.7",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mystool",
- "project_link": "nonebot-plugin-mystool",
- "name": "米游社辅助工具",
- "desc": "每日完成米游币任务、游戏签到、商品兑换、免抓包登录",
- "author": "Ljzd-PRO",
- "homepage": "https://github.com/Ljzd-PRO/nonebot-plugin-mystool",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "t:米游社",
- "color": "#66e0ff"
- },
- {
- "label": "t:原神",
- "color": "#faf3c4"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-03-16T19:21:16.886146Z",
- "version": "2.3.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_warframe",
- "project_link": "nonebot-plugin-warframe",
- "name": "星际战甲事件查询",
- "desc": "通过奥迪斯网站API查询星际战甲国服事件",
- "author": "17TheWord",
- "homepage": "https://github.com/17TheWord/nonebot-plugin-warframe",
- "tags": [
- {
- "label": "星际战甲",
- "color": "#ed3f3f"
- },
- {
- "label": "WarFrame",
- "color": "#edea3f"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.0.5",
- "time": "2023-06-18T16:49:55.654016Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mcqq_server",
- "project_link": "nonebot-plugin-mcqq-server",
- "name": "Minecraft Server 聊天同步",
- "desc": "采用本地读取log信息的方法的Minecraft Server互通消息的插件,mcqq服主版。",
- "author": "KarisAya",
- "homepage": "https://github.com/KarisAya/nonebot_plugin_mcqq_server",
- "tags": [
- {
- "label": "Minecraft",
- "color": "#52ea64"
- },
- {
- "label": "消息互通",
- "color": "#52e5ea"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-27T05:44:16.649059Z",
- "version": "1.0.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_RealESRGAN",
- "project_link": "nonebot_plugin_RealESRGAN",
- "name": "图像超分辨率重建",
- "desc": "对图像进行超分辨率重建,可以理解成将图像变大变清晰,不过线上重建的效果没有本地的好,具体可以查阅仓库",
- "author": "ppxxxg22",
- "homepage": "https://github.com/ppxxxg22/nonebot_plugin_RealESRGAN",
- "tags": [
- {
- "label": "图像超分辨率重建",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-10-17T07:35:11.987728Z",
- "version": "0.2.8",
- "skip_test": false
- },
- {
- "module_name": "nonebot-plugin-wolf-kill",
- "project_link": "nonebot-plugin-wolf-kill",
- "name": "狼人杀插件",
- "desc": "在群里玩狼人杀",
- "author": "AbCooly",
- "homepage": "https://github.com/AbCooly/nonebot_plugin_wolf_kill",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-14T05:29:21.336273Z",
- "version": "2.0.4",
- "skip_test": false
- },
- {
- "module_name": "iot",
- "project_link": "nonebot-plugin-iot",
- "name": "nonebot物联网插件",
- "desc": "为nonebot接入物联网提供方案,目前支持天猫精灵终端,后续会增加",
- "author": "littlebutt",
- "homepage": "https://github.com/littlebutt/nonebot-plugin-iot",
- "tags": [
- {
- "label": "t:物联网",
- "color": "#4b86d7"
- },
- {
- "label": "t:天猫精灵",
- "color": "#4b86d7"
- },
- {
- "label": "t:IOT",
- "color": "#4b86d7"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-10-12T01:56:21.172428Z",
- "version": "1.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bwiki_navigator",
- "project_link": "nonebot-plugin-bwiki-navigator",
- "name": "Bwiki Navigator",
- "desc": "Bwiki助手(官方移植版)",
- "author": "XZhouQD",
- "homepage": "https://github.com/xzhouqd/nonebot-plugin-bwiki-navigator",
- "tags": [
- {
- "label": "wiki",
- "color": "#29a5e3"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.1",
- "time": "2023-06-20T14:52:52.232111Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bottle",
- "project_link": "nonebot-plugin-bottle",
- "name": "漂流瓶",
- "desc": "群与群互通的漂流瓶插件",
- "author": "Todysheep",
- "homepage": "https://github.com/Todysheep/nonebot_plugin_bottle",
- "tags": [
- {
- "label": "漂流瓶",
- "color": "#0893f2"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "2.0.0.9",
- "time": "2024-03-12T11:34:48.730630Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_tts_gal",
- "project_link": "nonebot-plugin-tts-gal",
- "name": "vits角色语音合成本地化",
- "desc": "基于nonebot2和vits的本地化角色语音合成插件",
- "author": "dpm12345",
- "homepage": "https://github.com/dpm12345/nonebot_plugin_tts_gal",
- "tags": [
- {
- "label": "VITS",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-19T04:44:48.034103Z",
- "version": "0.3.11",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_alicdk_get",
- "project_link": "nonebot-plugin-alicdk-get",
- "name": "阿里云盘福利码自动兑换",
- "desc": "基于nonebot2与aligo的阿里云盘兑换码自动获取和兑换插件。",
- "author": "Kaguya233qwq",
- "homepage": "https://github.com/Kaguya233qwq/nonebot_plugin_alicdk_get",
- "tags": [
- {
- "label": "兑换码",
- "color": "#595fd6"
- },
- {
- "label": "auto",
- "color": "#595fd6"
- },
- {
- "label": "t:阿里云盘",
- "color": "#595fd6"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-09-29T08:46:59.973338Z",
- "version": "1.1.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_picstatus",
- "project_link": "nonebot-plugin-picstatus",
- "name": "PicStatus",
- "desc": "以图片形式显示当前设备的运行状态",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-picstatus",
- "tags": [
- {
- "label": "server",
- "color": "#8bff00"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "2.0.0.post2",
- "time": "2024-03-18T05:35:50.408893Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_tuling",
- "project_link": "nonebot-plugin-tuling",
- "name": "图灵机器人",
- "desc": "接入图灵机器人做聊天",
- "author": "koking0",
- "homepage": "https://github.com/Matrix-King-Studio/nonebot_plugin_tuling",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-09-25T05:14:38.126012Z",
- "version": "0.0.16",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_makemidi",
- "project_link": "nonebot_plugin_makemidi",
- "name": "在线编曲",
- "desc": "发送简谱生成音乐",
- "author": "RandomEnch",
- "homepage": "https://github.com/RandomEnch/nonebot_plugin_makemidi",
- "tags": [
- {
- "label": "midi",
- "color": "#6515a8"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-07-27T08:43:45.256730Z",
- "version": "0.1.12",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ocr",
- "project_link": "nonebot-plugin-ocr",
- "name": "文字识别",
- "desc": "识别图片中的文字",
- "author": "NewYearPrism",
- "homepage": "https://github.com/NewYearPrism/nonebot-plugin-ocr",
- "tags": [
- {
- "label": "ocr ",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-10-07T00:32:07.509150Z",
- "version": "0.3.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_listener",
- "project_link": "nonebot-plugin-listener",
- "name": "监听者",
- "desc": "监听指定消息并转发到指定群",
- "author": "AbCooly",
- "homepage": "https://github.com/AbCooly/nonebot_plugin_listener",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-10-01T16:59:02.045755Z",
- "version": "1.0.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_BiliRequestAll",
- "project_link": "nonebot-plugin-BiliRequestAll",
- "name": "BiliRequestAll",
- "desc": "通过B站UID审核入群",
- "author": "Shadow403",
- "homepage": "https://github.com/Shadow403/nonebot_plugin_BiliRequestAll",
- "tags": [
- {
- "label": "bilibili",
- "color": "#ea52e9"
- },
- {
- "label": "request",
- "color": "#5eea52"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.8",
- "time": "2023-11-05T14:48:57.579085Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_russian_ban",
- "project_link": "nonebot-plugin-russian-ban",
- "name": "轮盘禁言小游戏",
- "desc": "轮盘禁言小游戏,附送快捷禁言/解禁",
- "author": "KarisAya",
- "homepage": "https://github.com/KarisAya/nonebot_plugin_russian_ban",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-04T15:02:29.961051Z",
- "version": "1.0.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ygo_trade",
- "project_link": "nonebot-plugin-ygo-trade",
- "name": "游戏王小程序查价",
- "desc": "集换社游戏王的卡价查询",
- "author": "Kaguyaya",
- "homepage": "https://github.com/Kaguyaya/nonebot_plugin_ygo_trade",
- "tags": [
- {
- "label": "游戏王",
- "color": "#ea5252"
- },
- {
- "label": "YGO",
- "color": "#ea5252"
- },
- {
- "label": "集换社",
- "color": "#eada52"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-10-11T02:59:10.924095Z",
- "version": "1.0.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_novelai",
- "project_link": "nonebot-plugin-novelai",
- "name": "novelai",
- "desc": "一个支持novelai、naifu、webui,支持中文功能丰富的ai绘图插件",
- "author": "sena-nana",
- "homepage": "https://github.com/sena-nana/nonebot-plugin-novelai",
- "tags": [
- {
- "label": "t:aidraw",
- "color": "#ffc646"
- },
- {
- "label": "t:naifu",
- "color": "#ffc646"
- },
- {
- "label": "t:webui",
- "color": "#ffc646"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-26T14:17:47.594948Z",
- "version": "0.5.9",
- "skip_test": false
- },
- {
- "module_name": "ayaka_games",
- "project_link": "ayaka_games",
- "name": "ayaka小游戏合集",
- "desc": "背包,签到,印加宝藏,接龙(原神/成语),谁是卧底,抢30,mana,加一秒,24点/48点,文字税,祈祷,原神随机事件",
- "author": "bridgeL",
- "homepage": "https://bridgel.github.io/ayaka_games/",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#0c0c0c"
- },
- {
- "label": "t:小游戏",
- "color": "#e36306"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-25T02:07:32.424128Z",
- "version": "0.4.1",
- "skip_test": false
- },
- {
- "module_name": "ayaka_timezone",
- "project_link": "nonebot-plugin-ayaka-timezone",
- "name": "ayaka衍生插件 - 时区助手",
- "desc": "提供不同时区时间询问服务",
- "author": "bridgeL",
- "homepage": "https://github.com/bridgeL/nonebot-plugin-ayaka-timezone",
- "tags": [
- {
- "label": "a:cqhttp",
- "color": "#000000"
- },
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "t:timezone",
- "color": "#e36306"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-30T02:41:21.580609Z",
- "version": "0.4.1",
- "skip_test": false
- },
- {
- "module_name": "ayaka_prevent_bad_words",
- "project_link": "nonebot-plugin-ayaka-prevent-bad-words",
- "name": "ayaka衍生插件 - 坏词撤回",
- "desc": "撤回有问题的发言",
- "author": "bridgeL",
- "homepage": "https://github.com/bridgeL/nonebot-plugin-ayaka-prevent-bad-words",
- "tags": [
- {
- "label": "a:cqhttp",
- "color": "#000000"
- },
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "t:撤回",
- "color": "#e36306"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-25T16:17:13.137593Z",
- "version": "0.4.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_savor",
- "project_link": "nonebot-plugin-savor",
- "name": "二次元图像鉴赏",
- "desc": "二次元图像分析",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-savor",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-07-07T18:19:20.688626Z",
- "version": "0.2.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_kfcrazy",
- "project_link": "nonebot-plugin-kfcrazy",
- "name": "kfcrazy",
- "desc": "肯德基查询插件,输入地区即可查询全国店铺的数据,支持疯狂星期四",
- "author": "Kaguya233qwq",
- "homepage": "https://github.com/Kaguya233qwq/nonebot_plugin_kfcrazy",
- "tags": [
- {
- "label": "肯德基",
- "color": "#d93b3b"
- },
- {
- "label": "疯狂星期四",
- "color": "#e52124"
- },
- {
- "label": "KFC",
- "color": "#cb5c5e"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-11-14T07:18:05.859088Z",
- "version": "2.0.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot-plugin-random",
- "project_link": "nonebot-plugin-random",
- "name": "通用抽图/语音",
- "desc": "Nonebot2 通用抽图/语音插件",
- "author": "jcjrobert",
- "homepage": "https://github.com/jcjrobert/nonebot-plugin-random",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-03T05:49:28.546486Z",
- "version": "0.0.9",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_sqlalchemy",
- "project_link": "nonebot-plugin-sqlalchemy",
- "name": "NoneBot2 SQLAlchemy 插件",
- "desc": "为插件开发者提供简单的SQLAlchemy封装",
- "author": "ssttkkl",
- "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-sqlalchemy",
- "tags": [
- {
- "label": "sql",
- "color": "#ad1717"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.2",
- "time": "2023-07-20T03:51:36.974013Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_blacklist",
- "project_link": "nonebot-plugin-blacklist",
- "name": "黑名单",
- "desc": "黑名单插件",
- "author": "tkgs0",
- "homepage": "https://github.com/tkgs0/nonebot-plugin-blacklist",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "1.3.1",
- "time": "2024-02-21T16:24:01.035770Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_antiinsult",
- "project_link": "nonebot-plugin-antiinsult",
- "name": "反嘴臭",
- "desc": "反嘴臭插件",
- "author": "tkgs0",
- "homepage": "https://github.com/tkgs0/nonebot-plugin-antiinsult",
- "tags": [
- {
- "label": "被动",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.6.1",
- "time": "2024-02-21T16:59:04.055290Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_oddtext",
- "project_link": "nonebot-plugin-oddtext",
- "name": "文本生成器",
- "desc": "抽象话等多种文本生成",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-oddtext",
- "tags": [
- {
- "label": "RCNB!",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.0",
- "time": "2023-06-21T14:35:22.216953Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mahjong_scoreboard",
- "project_link": "nonebot-plugin-mahjong-scoreboard",
- "name": "日麻寄分器",
- "desc": "为群友提供日麻计分及榜单统计功能",
- "author": "ssttkkl",
- "homepage": "https://github.com/ssttkkl/nonebot-plugin-mahjong-scoreboard",
- "tags": [
- {
- "label": "日麻",
- "color": "#4684d3"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.qqguild"
- ],
- "valid": true,
- "version": "0.6.0",
- "time": "2023-09-08T18:13:18.403764Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_cartoon",
- "project_link": "nonebot-plugin-cartoon",
- "name": "二次元化图像",
- "desc": "对三次元图像动漫化, 打开二次元的大门",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-cartoon",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-11-01T10:00:27.452979Z",
- "version": "0.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mahjong_utils",
- "project_link": "nonebot-plugin-mahjong-utils",
- "name": "麻将小工具",
- "desc": "手牌分析、番符点数查询、……",
- "author": "ssttkkl",
- "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-mahjong-utils",
- "tags": [
- {
- "label": "日麻",
- "color": "#edad34"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.4.5",
- "time": "2023-12-05T04:45:12.500654Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_animeres",
- "project_link": "nonebot-plugin-animeres",
- "name": "动漫资源插件",
- "desc": "根据关键字搜索动漫资源",
- "author": "Melodyknit",
- "homepage": "https://github.com/MelodyKnit/nonebot_plugin_animeres",
- "tags": [
- {
- "label": "anime",
- "color": "#ec5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "1.0.4",
- "time": "2023-11-17T12:49:29.527158Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot-plugin-person",
- "project_link": "nonebot-plugin-person",
- "name": "随个人",
- "desc": "随个群友当幸运观众🤪",
- "author": "jcjrobert",
- "homepage": "https://github.com/jcjrobert/nonebot-plugin-person",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-15T02:18:32.344475Z",
- "version": "0.0.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_apex_api_query",
- "project_link": "nonebot-plugin-apex-api-query",
- "name": "Apex API Query",
- "desc": "Apex Legends API 查询插件",
- "author": "H-xiaoH",
- "homepage": "https://github.com/H-xiaoH/nonebot-plugin-apex-api-query",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "24.1.2",
- "time": "2024-01-02T13:23:43.569097Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_reborn",
- "project_link": "nonebot-plugin-reborn",
- "name": "投胎模拟器",
- "desc": "重生后你会到哪里?",
- "author": "Aziteee",
- "homepage": "https://github.com/Aziteee/nonebot_plugin_reborn",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-14T12:24:39.789332Z",
- "version": "0.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_searchBiliInfo",
- "project_link": "nonebot-plugin-searchBiliInfo",
- "name": "b站用户信息查询",
- "desc": "查询b站用户粉丝数、舰团信息;主播直播收益数据(总收益、礼物、SC、上舰);用户观看直播信息(观看、弹幕记录);通过关键词搜昵称、UID等",
- "author": "Ikaros-521",
- "homepage": "https://github.com/Ikaros-521/nonebot_plugin_searchBiliInfo",
- "tags": [
- {
- "label": "bilibili",
- "color": "#e55d80"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-12-24T05:56:31.597811Z",
- "version": "1.8.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_colab_novelai",
- "project_link": "nonebot-plugin-colab-novelai",
- "name": "Colab-NovelAI",
- "desc": "解放你的双手,让Colab持续给你提供算力生产色图!",
- "author": "EtherLeaF",
- "homepage": "https://github.com/EtherLeaF/nonebot-plugin-colab-novelai",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#ea5252"
- },
- {
- "label": "t:NovelAI",
- "color": "#eacd52"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-11-21T06:00:40.942510Z",
- "version": "0.2.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_sky",
- "project_link": "nonebot-plugin-sky",
- "name": "Sky光遇",
- "desc": "光遇的每日任务及活动相关查询插件",
- "author": "Kaguya233qwq",
- "homepage": "https://github.com/Kaguya233qwq/nonebot_plugin_sky",
- "tags": [
- {
- "label": "光遇",
- "color": "#7ebdf0"
- },
- {
- "label": "攻略",
- "color": "#2079c1"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "2.2.12",
- "time": "2023-08-29T02:46:06.270032Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_zyk_novelai",
- "project_link": "nonebot-plugin-zyk-novelai",
- "name": "免费版NovelAI生图插件",
- "desc": "一个用于nonebot2的简约AI绘图插件。没有繁琐的使用指令,配置过程简单迅捷,代码简洁易懂,还有更多功能将会陆续加入。",
- "author": "ZYKsslm",
- "homepage": "https://github.com/ZYKsslm/nonebot_plugin_zyk_novelai",
- "tags": [
- {
- "label": "Free",
- "color": "#42e22f"
- },
- {
- "label": "Simple",
- "color": "#e2d92f"
- },
- {
- "label": "Novelai",
- "color": "#3e10e9"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-29T18:30:02.732845Z",
- "version": "2.9.5.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_repeep",
- "project_link": "nonebot-plugin-repeep",
- "name": "谁在窥屏",
- "desc": "用于获取QQ中当前窥屏用户信息",
- "author": "p0ise",
- "homepage": "https://github.com/p0ise/nonebot-plugin-repeep",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-25T11:27:22.670017Z",
- "version": "0.1.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_gscode",
- "project_link": "nonebot-plugin-gscode",
- "name": "原神前瞻直播兑换码查询",
- "desc": "原神前瞻直播兑换码查询,数据来自米哈游官方接口",
- "author": "monsterxcn",
- "homepage": "https://github.com/monsterxcn/nonebot-plugin-gscode",
- "tags": [
- {
- "label": "t:Genshin",
- "color": "#ffd49f"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-03-17T00:47:03.313876Z",
- "version": "0.2.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_note",
- "project_link": "nonebot-plugin-note",
- "name": "记事本",
- "desc": "一个有提醒功能的记事本",
- "author": "Passerby-D",
- "homepage": "https://github.com/Passerby-D/nonebot_plugin_note",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-31T21:52:41.397684Z",
- "version": "0.2.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot-plugin-bilibili-image",
- "project_link": "nonebot-plugin-bilibili-image",
- "name": "b站图片下载",
- "desc": "b站封面提取,动态图片/专栏图片下载",
- "author": "jcjrobert",
- "homepage": "https://github.com/jcjrobert/nonebot-plugin-bilibili-image",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-02T13:29:23.983038Z",
- "version": "0.0.2.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_trace_moe",
- "project_link": "nonebot-plugin-trace-moe",
- "name": "动画截图追溯来源",
- "desc": "调用trace.moe的API查询动画截图源自的作品名和时间段",
- "author": "Ikaros-521",
- "homepage": "https://github.com/Ikaros-521/nonebot_plugin_trace_moe",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#191919"
- },
- {
- "label": "t:trace",
- "color": "#191919"
- },
- {
- "label": "t:image",
- "color": "#00a0ff"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-23T06:59:22.061485Z",
- "version": "0.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_zyk_music",
- "project_link": "nonebot-plugin-zyk-music",
- "name": "免费快捷点歌插件",
- "desc": "一个用于nonebot2的点歌插件。操作简单粗暴,交互简洁易懂.",
- "author": "ZYKsslm",
- "homepage": "https://github.com/ZYKsslm/nonebot_plugin_zyk_music",
- "tags": [
- {
- "label": "Free",
- "color": "#26d019"
- },
- {
- "label": "Simple",
- "color": "#b8c10d"
- },
- {
- "label": "Music",
- "color": "#0d92c1"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-29T20:24:24.553805Z",
- "version": "0.1.7.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_chatgpt",
- "project_link": "nonebot-plugin-chatgpt",
- "name": "ChatGPT",
- "desc": "AI 聊天对话",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-chatgpt",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-12T08:10:27.798634Z",
- "version": "0.7.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_majsoul",
- "project_link": "nonebot-plugin-majsoul",
- "name": "雀魂查询",
- "desc": "根据牌谱屋的数据查询雀魂账号信息",
- "author": "ssttkkl",
- "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-majsoul",
- "tags": [
- {
- "label": "majsoul",
- "color": "#e54141"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qqguild",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.2.5",
- "time": "2023-09-28T17:31:31.806098Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_remove_bg",
- "project_link": "nonebot-plugin-remove-bg",
- "name": "图片背景消除",
- "desc": "适用于onebot v11的基于remove.bg的图片背景消除插件",
- "author": "Ikaros-521",
- "homepage": "https://github.com/Ikaros-521/nonebot_plugin_remove_bg",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#ea5252"
- },
- {
- "label": "t:img",
- "color": "#111111"
- },
- {
- "label": "t:removeBG",
- "color": "#7a7a7a"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-28T14:59:42.169057Z",
- "version": "0.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_broadcast",
- "project_link": "nonebot-plugin-broadcast",
- "name": "全群广播",
- "desc": "将你的消息广播到全部群聊中",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-broadcast",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-07T15:42:04.646013Z",
- "version": "0.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_exchangerate",
- "project_link": "nonebot-plugin-exchangerate",
- "name": "汇率换算",
- "desc": "支持汇率换算与汇率查询",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-exchangerate",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-11T05:42:07.616093Z",
- "version": "0.1.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_access_control",
- "project_link": "nonebot-plugin-access-control",
- "name": "权限控制",
- "desc": "对功能进行权限控制以及调用次数限制",
- "author": "ssttkkl",
- "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-access-control",
- "tags": [
- {
- "label": "权限控制",
- "color": "#0e9763"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram",
- "nonebot.adapters.villa"
- ],
- "valid": true,
- "version": "1.1.5",
- "time": "2023-11-26T15:18:22.566495Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_colormind",
- "project_link": "nonebot-plugin-colormind",
- "name": "随机配色方案",
- "desc": "调用colormind.io的API随机获取一种配色方案",
- "author": "Ikaros-521",
- "homepage": "https://github.com/Ikaros-521/nonebot_plugin_colormind",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "t:color",
- "color": "#ffffff"
- },
- {
- "label": "t:配色",
- "color": "#fbff03"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-14T03:06:59.760280Z",
- "version": "0.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_abstain_diary",
- "project_link": "nonebot-plugin-abstain-diary",
- "name": "戒x打卡日记",
- "desc": "适用于onebot v11的戒x打卡日记插件。用户可以自定义戒的内容。财能使人贪,色能使人嗜,名能使人矜,潜能使人倚,四患既都去,岂在浮尘里。",
- "author": "Ikaros-521",
- "homepage": "https://github.com/Ikaros-521/nonebot_plugin_abstain_diary",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "t:戒",
- "color": "#ffffff"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-09-14T01:07:53.526240Z",
- "version": "0.1.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_backup",
- "project_link": "nonebot-plugin-backup",
- "name": "QQ群文件备份",
- "desc": "备份qq群文件",
- "author": "Yuelioi",
- "homepage": "https://github.com/Yuelioi/nonebot-plugin-backup",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-06T11:42:56.034628Z",
- "version": "1.0.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_kuma_san",
- "project_link": "nonebot-plugin-kuma-san",
- "name": "熊老板",
- "desc": "用于查询斯普拉遁3场地信息的 NoneBot2 插件",
- "author": "ReiiNoki",
- "homepage": "https://github.com/ReiiNoki/nonebot-plugin-kuma-san",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-08-03T06:43:46.968063Z",
- "version": "1.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_gpt3",
- "project_link": "nonebot-plugin-gpt3",
- "name": "GPT3",
- "desc": "openai官方api的会话插件",
- "author": "chrisyy2003",
- "homepage": "https://github.com/chrisyy2003/nonebot-plugin-gpt3",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-23T04:12:19.524328Z",
- "version": "1.1.9",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ikun_evolution",
- "project_link": "nonebot-plugin-ikun-evolution",
- "name": "只因进化录",
- "desc": "q群挂机小游戏。开局一只因,进化全靠吞",
- "author": "RShock",
- "homepage": "https://github.com/RShock/nonebot_plugin_ikun_evolution",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-03T03:56:19.261340Z",
- "version": "1.0.12",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_random_ban",
- "project_link": "nonebot-plugin-random-ban",
- "name": "随机禁言",
- "desc": "适用于onebot v11的随机禁言一名群员或自己n分钟(n通过传入数字然后随机实现)",
- "author": "Ikaros-521",
- "homepage": "https://github.com/Ikaros-521/nonebot_plugin_random_ban",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#ea5252"
- },
- {
- "label": "t:禁言",
- "color": "#020202"
- },
- {
- "label": "t:ban",
- "color": "#ffffff"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-09T11:06:42.054060Z",
- "version": "0.2.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_antirecall",
- "project_link": "nonebot-plugin-antirecall",
- "name": "防撤回",
- "desc": "防撤回",
- "author": "Jerry080801",
- "homepage": "https://github.com/Jerry080801/nonebot-plugin-antirecall/",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-26T10:52:50.612059Z",
- "version": "0.1.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mc_server_status",
- "project_link": "nonebot-plugin-mc-server-status",
- "name": "Minecraft服务器信息查询",
- "desc": "支持Java和基岩服务器",
- "author": "nikissXI",
- "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_mc_server_status",
- "tags": [
- {
- "label": "Minecraft",
- "color": "#a438cd"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-01T02:19:03.062931Z",
- "version": "0.2.10",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_no_repeat",
- "project_link": "nonebot-plugin-no-repeat",
- "name": "不要复读",
- "desc": "防止代码炸了在群里复读刷屏,让你写插件的时候更安全",
- "author": "bridgeL",
- "homepage": "https://github.com/bridgeL/nonebot-plugin-no-repeat",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-22T03:21:17.798671Z",
- "version": "0.0.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bfchat",
- "project_link": "nonebot-plugin-bfchat",
- "name": "战地群聊天插件",
- "desc": "群内绑定战地一/五账号,快速查询战地战绩,查看服务器信息",
- "author": "050644zf",
- "homepage": "https://github.com/050644zf/nonebot-plugin-bfchat",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-31T10:55:28.710075Z",
- "version": "0.3.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_summon",
- "project_link": "nonebot-plugin-summon",
- "name": "群友召唤术",
- "desc": "群友召唤术",
- "author": "zhulinyv",
- "homepage": "https://github.com/zhulinyv/nonebot_plugin_summon",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-07-11T01:13:48.927791Z",
- "version": "2.5.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ping",
- "project_link": "nonebot-plugin-ping",
- "name": "Ping",
- "desc": "调用api,获取网站信息",
- "author": "zhulinyv",
- "homepage": "https://github.com/zhulinyv/nonebot_plugin_ping",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-12-14T06:47:15.299741Z",
- "version": "1.7.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_face2cartoonpic",
- "project_link": "nonebot_plugin_face2cartoonpic",
- "name": "腾讯云图像变换",
- "desc": "✨基于腾讯云合成图的以图绘图的Nonebot插件✨",
- "author": "ANGJustinl",
- "homepage": "https://github.com/ANGJustinl/nonebot_plugin_face2cartoonpic_main",
- "tags": [
- {
- "label": "以图绘图",
- "color": "#72f15e"
- },
- {
- "label": "腾讯云",
- "color": "#3785f1"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-30T13:37:47.581572Z",
- "version": "0.3.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_servicestate",
- "project_link": "nonebot-plugin-servicestate",
- "name": "服务状态查询",
- "desc": "API服务状态监测",
- "author": "OREOCODEDEV",
- "homepage": "https://github.com/OREOCODEDEV/nonebot-plugin-servicestate",
- "tags": [
- {
- "label": "api",
- "color": "#52ea7f"
- },
- {
- "label": "state",
- "color": "#52cfea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.1",
- "time": "2023-09-11T07:21:59.505055Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_animalVoice",
- "project_link": "nonebot-plugin-animalVoice",
- "name": "AnimalVoice_Convert",
- "desc": "✨支持切噜语和兽语的Nonebot译者插件✨",
- "author": "ANGJustinl",
- "homepage": "https://github.com/ANGJustinl/nonebot_plugin_animalVoice/",
- "tags": [
- {
- "label": "切噜语~",
- "color": "#e75f9d"
- },
- {
- "label": "兽语",
- "color": "#5fe5e7"
- },
- {
- "label": "加密语言",
- "color": "#79e556"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2022-12-29T09:42:07.126510Z",
- "version": "0.0.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ayaka_scan_cmd",
- "project_link": "nonebot-plugin-ayaka-scan-cmd",
- "name": "命令探查",
- "desc": "命令探查,缓解下载了新插件却不会使用的焦虑",
- "author": "bridgeL",
- "homepage": "https://github.com/bridgeL/nonebot-plugin-ayaka-scan-cmd",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "t:命令探查",
- "color": "#e36306"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-15T09:34:25.444769Z",
- "version": "0.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_HttpCat",
- "project_link": "nonebot-plugin-HttpCat",
- "name": "HttpCat🐱猫猫http状态码",
- "desc": "✨Nonebot猫猫http状态码插件✨",
- "author": "ANGJustinl",
- "homepage": "https://github.com/ANGJustinl/nonebot_plugin_HttpCat",
- "tags": [
- {
- "label": "HttpCat",
- "color": "#1f4ddc"
- },
- {
- "label": "http状态码",
- "color": "#dc1f1f"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-03T01:58:02.756214Z",
- "version": "0.0.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_revoke",
- "project_link": "nonebot-plugin-revoke",
- "name": "主动消息撤回",
- "desc": "让机器人撤回自己发出的消息",
- "author": "ssttkkl",
- "homepage": "https://github.com/ssttkkl/nonebot-plugin-revoke",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#ea5252"
- },
- {
- "label": "t:gocqhttp",
- "color": "#52ea95"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-03T06:02:45.041053Z",
- "version": "0.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_setu_customization",
- "project_link": "nonebot-plugin-setu-customization",
- "name": "setu_customization",
- "desc": "可动态管理API并带网页浏览的setu插件",
- "author": "nikissXI",
- "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_setu_customization",
- "tags": [
- {
- "label": "色图",
- "color": "#e9ea52"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-31T08:46:11.225617Z",
- "version": "1.7.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_l4d2_server",
- "project_link": "nonebot-plugin-l4d2-server",
- "name": "求生之路小助手",
- "desc": "可用于管理求生之路查服和本地管理",
- "author": "Agnes4m",
- "homepage": "https://github.com/Agnes4m/nonebot_plugin_l4d2_server",
- "tags": [
- {
- "label": "l4d2",
- "color": "#05ff00"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.6.6",
- "time": "2024-03-03T14:27:28.652529Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_learning_chat",
- "project_link": "nonebot-plugin-learning-chat",
- "name": "群聊学习",
- "desc": "学习群友们的发言、复读以及主动发言",
- "author": "CMHopeSunshine",
- "homepage": "https://github.com/CMHopeSunshine/nonebot-plugin-learning-chat",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.4.0",
- "time": "2023-08-27T03:07:38.424515Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_couplets",
- "project_link": "nonebot-plugin-couplets",
- "name": "对对联",
- "desc": "人工智能和你对对联",
- "author": "CMHopeSunshine",
- "homepage": "https://github.com/CMHopeSunshine/nonebot-plugin-couplets",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.0",
- "time": "2023-06-17T07:46:34.256373Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_Imagelabels",
- "project_link": "nonebot-plugin-Imagelabels",
- "name": "图像标注",
- "desc": "基于yolov5的图像标注插件",
- "author": "istrashguy",
- "homepage": "https://github.com/istrashguy/nonebot_plugin_Imagelabels",
- "tags": [
- {
- "label": "Yolov5",
- "color": "#9a2828"
- },
- {
- "label": "图像标注",
- "color": "#e981dc"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-16T12:19:09.803532Z",
- "version": "1.0.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_cloudsignx",
- "project_link": "nonebot-plugin-cloudsignx",
- "name": "云签到",
- "desc": "基于云端的签到,所有插件使用者数据互通",
- "author": "Monarchdos",
- "homepage": "https://github.com/Monarchdos/nonebot_plugin_cloudsign",
- "tags": [
- {
- "label": "a:云签到",
- "color": "#2be491"
- },
- {
- "label": "a:数据互通",
- "color": "#3be42b"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-10T07:51:17.175075Z",
- "version": "2.0.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_imgexploration",
- "project_link": "nonebot-plugin-imgexploration",
- "name": "查找图片出处",
- "desc": "通过saucenao、ascii2d、Google、Yandx查询图片出处",
- "author": "cpuopt",
- "homepage": "https://github.com/cpuopt/nonebot_plugin_imgexploration",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#ea5252"
- },
- {
- "label": "t:搜图",
- "color": "#453df1"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-05T11:01:46.527196Z",
- "version": "0.3.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_hypixel",
- "project_link": "nonebot-plugin-hypixel",
- "name": "Hypixel数据查询",
- "desc": "查询Hypixel的数据",
- "author": "SkyDynamic",
- "homepage": "https://github.com/SkyDynamic/nonebot_plugin_hypixel",
- "tags": [
- {
- "label": "MC",
- "color": "#6fea52"
- },
- {
- "label": "Hypixel",
- "color": "#d5ea52"
- },
- {
- "label": "Hyp",
- "color": "#d5ea52"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-06T06:58:09.032239Z",
- "version": "1.0.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_nowtime",
- "project_link": "nonebot-plugin-nowtime",
- "name": "整点报时",
- "desc": "每时每刻正点报时",
- "author": "Cvandia",
- "homepage": "https://github.com/Cvandia/nonebot_plugin_nowtime",
- "tags": [
- {
- "label": "整点报时",
- "color": "#5eea52"
- },
- {
- "label": "语音",
- "color": "#c84fdb"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.5",
- "time": "2023-06-19T08:56:04.577230Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_cave",
- "project_link": "nonebot-plugin-cave",
- "name": "回声洞",
- "desc": "PCL2内群的回声洞,添加了审核功能。",
- "author": "hmzz804",
- "homepage": "https://github.com/hmzz804/nonebot_plugin_cave",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-08-17T16:30:06.762833Z",
- "version": "1.1.12",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_xingzuo",
- "project_link": "nonebot-plugin-xingzuo",
- "name": "星座运势",
- "desc": "返回星座的运势",
- "author": "mengxinyuan638",
- "homepage": "https://github.com/mengxinyuan638/xingzuo_luck",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-12T11:59:03.454555Z",
- "version": "1.0.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_BingImage",
- "project_link": "nonebot-plugin-BingImage",
- "name": "Bing每日图片获取",
- "desc": "获取Bing每日一图",
- "author": "ericzhang-debug",
- "homepage": "https://github.com/ericzhang-debug/nonebot_plugin_BingImage",
- "tags": [
- {
- "label": "风景图",
- "color": "#0ce354"
- },
- {
- "label": "Bing",
- "color": "#0c43e3"
- },
- {
- "label": "必应",
- "color": "#eddf13"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-09T11:19:52.574462Z",
- "version": "0.0.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_soup",
- "project_link": "nonebot-plugin-soup",
- "name": "心灵鸡汤",
- "desc": "来一碗心灵鸡汤吧",
- "author": "Monarchdos",
- "homepage": "https://github.com/Monarchdos/nonebot_plugin_soup",
- "tags": [
- {
- "label": "心灵鸡汤",
- "color": "#52eaea"
- },
- {
- "label": "鸡汤",
- "color": "#ea529a"
- },
- {
- "label": "毒鸡汤",
- "color": "#604a55"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-11T08:47:29.519685Z",
- "version": "1.0.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_yuanshen_notice",
- "project_link": "nonebot-plugin-yuanshen-notice",
- "name": "原神实时公告",
- "desc": "实时展示官网最新前20条公告",
- "author": "mengxinyuan638",
- "homepage": "https://github.com/mengxinyuan638/nonebot_plugin_yuanshen_notice",
- "tags": [
- {
- "label": "原神",
- "color": "#ef3700"
- },
- {
- "label": "公告",
- "color": "#00ef04"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-19T06:33:34.236263Z",
- "version": "0.1.7",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bilibili_yuan",
- "project_link": "nonebot-plugin-bilibili-yuan",
- "name": "哔哩哔哩q群登录",
- "desc": "实现哔哩哔哩q群登录的插件",
- "author": "mengxinyuan638",
- "homepage": "https://github.com/mengxinyuan638/nonebot-plugin-bilibili-yuan",
- "tags": [
- {
- "label": "bilibili",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-15T02:59:19.623264Z",
- "version": "0.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_easy_translate",
- "project_link": "nonebot-plugin-easy-translate",
- "name": "简易谷歌翻译插件",
- "desc": "免api key简单谷歌翻译插件",
- "author": "nikissXI",
- "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_easy_translate",
- "tags": [
- {
- "label": "翻译",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-08-27T16:34:04.994806Z",
- "version": "0.2.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_orangedice",
- "project_link": "nonebot-plugin-orangedice",
- "name": "orange_dice",
- "desc": "具有技能鉴定、人物卡、日志记录的COC用插件",
- "author": "BigOrangeQWQ",
- "homepage": "https://github.com/BigOrangeQWQ/nonebot_plugin_orangedice",
- "tags": [
- {
- "label": "dice",
- "color": "#08c0bb"
- },
- {
- "label": "COC",
- "color": "#a2bc0c"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.3.9",
- "time": "2023-08-03T09:34:33.704052Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_record",
- "project_link": "nonebot-plugin-record",
- "name": "语音功能",
- "desc": "语音功能适配插件,包括语音事件响应器,语音识别、语音合成等功能",
- "author": "itsevin",
- "homepage": "https://github.com/itsevin/nonebot_plugin_record",
- "tags": [
- {
- "label": "t:语音",
- "color": "#fff35d"
- },
- {
- "label": "语音识别",
- "color": "#37c0f6"
- },
- {
- "label": "语音事件响应器",
- "color": "#18e13c"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-09T01:43:43.587003Z",
- "version": "1.0.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_nya_cook_menu",
- "project_link": "nonebot-plugin-nya-cook-menu",
- "name": "喵喵自记菜谱",
- "desc": "记录生活中的小菜谱",
- "author": "nikissXI",
- "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_nya_cook_menu",
- "tags": [
- {
- "label": "菜谱",
- "color": "#e65de5"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-01T02:19:38.388337Z",
- "version": "0.1.6",
- "skip_test": false
- },
- {
- "module_name": "criminal_dance",
- "project_link": "criminal-dance",
- "name": "犯人在跳舞",
- "desc": "文字版桌游,犯人在跳舞",
- "author": "bridgeL",
- "homepage": "https://github.com/bridgeL/criminal_dance",
- "tags": [
- {
- "label": "t:文字版桌游",
- "color": "#e36306"
- },
- {
- "label": "a:onebot",
- "color": "#000000"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-15T09:23:15.318321Z",
- "version": "0.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_picmcstat",
- "project_link": "nonebot-plugin-picmcstat",
- "name": "PicMCStat",
- "desc": "将一个 Minecraft 服务器的 MOTD 信息绘制为一张图片",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-picmcstat",
- "tags": [
- {
- "label": "Minecraft",
- "color": "#7fbf55"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.6.0",
- "time": "2024-03-10T07:01:59.615461Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_wantwords",
- "project_link": "nonebot-plugin-wantwords",
- "name": "反向词典",
- "desc": "在nonebot使用wantwords反向词典",
- "author": "Limnium",
- "homepage": "https://github.com/limnium/nonebot_plugin_wantwords",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-22T04:55:16.216491Z",
- "version": "0.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_pvz",
- "project_link": "nonebot-plugin-pvz",
- "name": "植物大战僵尸小游戏",
- "desc": "通过签到获取金币购买植物或者僵尸,放置植物在草坪上抵御入侵,或者进行僵尸入侵来吃掉别人的脑子",
- "author": "longchengguxiao",
- "homepage": "https://github.com/longchengguxiao/nonebot_plugin_pvz",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-02T04:25:36.126660Z",
- "version": "1.3.9",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_molar_mass",
- "project_link": "nonebot-plugin-molar-mass",
- "name": "摩尔质量计算器",
- "desc": "帮助中学生计算摩尔质量或相对分子质量的小工具。",
- "author": "kifuan",
- "homepage": "https://github.com/kifuan/nonebot-plugin-molar-mass",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-19T03:38:01.096308Z",
- "version": "0.2.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_report_manager",
- "project_link": "nonebot-plugin-report-manager",
- "name": "对话超管",
- "desc": "群员通过Bot对话超管",
- "author": "Hiroshi12138",
- "homepage": "https://github.com/Hiroshi12138/nonebot_plugin_report_manager",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#a95454"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-14T08:51:38.642705Z",
- "version": "0.2.3",
- "skip_test": false
- },
- {
- "module_name": "qinglan_bot",
- "project_link": "qinglan-bot",
- "name": "青岚Bot",
- "desc": "基于NoneBot的与Minecraft Server互通消息的机器人",
- "author": "17TheWord",
- "homepage": "https://github.com/17TheWord/qinglan_bot",
- "tags": [
- {
- "label": "MineCraft",
- "color": "#4ef0ea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.6",
- "time": "2023-10-08T03:43:01.150609Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_easy_group_manager",
- "project_link": "nonebot-plugin-easy-group-manager",
- "name": "简易群管女生自用99新",
- "desc": "简单的群管插件,BOT不是群主也可以设置管理员啦……",
- "author": "zhulinyv",
- "homepage": "https://github.com/zhulinyv/nonebot_plugin_easy_group_manager",
- "tags": [
- {
- "label": "群管",
- "color": "#1eb262"
- },
- {
- "label": "女生自用",
- "color": "#b21e82"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-07-25T12:00:28.775065Z",
- "version": "0.4.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_group_link_guild",
- "project_link": "nonebot-plugin-group-link-guild",
- "name": "群频互通",
- "desc": "将QQ群与QQ频道的消息互通",
- "author": "17TheWord",
- "homepage": "https://github.com/17TheWord/nonebot-plugin-group-link-guild",
- "tags": [
- {
- "label": "QQ群",
- "color": "#ea5252"
- },
- {
- "label": "QQ频道",
- "color": "#52ead5"
- },
- {
- "label": "消息互通",
- "color": "#50c545"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.0.6",
- "time": "2023-06-26T03:57:16.165943Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot-plugin-mcport",
- "project_link": "nonebot-plugin-mcport",
- "name": "nonebot-plugin-mcport",
- "desc": "我的世界JAVA服务器通过RCON连接远程执行命令",
- "author": "Proviasw",
- "homepage": "https://github.com/Proviasw/nonebot-plugin-mcport",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-25T00:13:37.434017Z",
- "version": "0.1.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_xdu_support",
- "project_link": "nonebot_plugin_xdu_support",
- "name": "XDU校园服务",
- "desc": "Nonebot2插件,提供基础的西电校园服务,如课表提醒,体育打卡查询及提醒,晨午晚检打卡和马原测试等功能。",
- "author": "longchengguxiao",
- "homepage": "https://github.com/longchengguxiao/nonebot_plugin_xdu_support",
- "tags": [
- {
- "label": "大学校园",
- "color": "#52b5ea"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-08-13T05:03:08.357179Z",
- "version": "0.6.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_zyk_lightNVL",
- "project_link": "nonebot-plugin-zyk-lightNVL",
- "name": "查找轻小说",
- "desc": "基于哔哩轻小说网站的爬虫插件",
- "author": "ZYKsslm",
- "homepage": "https://github.com/ZYKsslm/nonebot_plugin_zyk_lightNVL",
- "tags": [
- {
- "label": "轻小说",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-02T13:17:07.498476Z",
- "version": "0.3.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_dog",
- "project_link": "nonebot-plugin-dog",
- "name": "dog",
- "desc": "随机返回一句舔狗日记...嘤嘤嘤和其他文案的插件",
- "author": "Reversedeer",
- "homepage": "https://github.com/Reversedeer/nonebot_plugin_dog",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.3.1",
- "time": "2024-01-08T06:15:02.503507Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_uuid",
- "project_link": "nonebot-plugin-uuid",
- "name": "uuid生成器",
- "desc": "通过 uuid4 与 uuid5 生成 uuid ,并且支持快速去除短横线",
- "author": "ZombieFly",
- "homepage": "https://github.com/ZombieFly/nonebot-plugin-uuid",
- "tags": [
- {
- "label": "工具",
- "color": "#39c5bb"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-01-30T04:32:08.179665Z",
- "version": "0.1.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_naturel_gpt",
- "project_link": "nonebot-plugin-naturel-gpt",
- "name": "更人性化的GPT-Ai聊天插件",
- "desc": "一个基于NoneBot框架的Ai聊天插件,对接OpenAi文本生成接口,优化了群聊场景的上下文支持。",
- "author": "KroMiose",
- "homepage": "https://github.com/KroMiose/nonebot_plugin_naturel_gpt",
- "tags": [
- {
- "label": "GPT3",
- "color": "#66ccff"
- },
- {
- "label": "OpenAi",
- "color": "#cc66ff"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-12-23T19:19:12.265714Z",
- "version": "2.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_impact",
- "project_link": "nonebot-plugin-impact",
- "name": "impact",
- "desc": "让群友们眼前一黑的nonebot2淫趴插件",
- "author": "Special-Week",
- "homepage": "https://github.com/Special-Week/nonebot_plugin_impact",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.12.114514",
- "time": "2024-03-20T14:46:34.935208Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mcping",
- "project_link": "nonebot-plugin-mcping",
- "name": "MC Ping",
- "desc": "获取 Minecraft JE/BE 服务器 Motd 图片信息",
- "author": "17TheWord",
- "homepage": "https://github.com/17TheWord/nonebot-plugin-mcping",
- "tags": [
- {
- "label": "Minecraft",
- "color": "#47d754"
- },
- {
- "label": "服务器状态",
- "color": "#d7cd47"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.0.4",
- "time": "2023-06-18T16:58:48.573827Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_b23",
- "project_link": "nonebot-plugin-b23",
- "name": "B站热搜",
- "desc": "获取B站热搜(移动端)",
- "author": "eya46",
- "homepage": "https://github.com/eya46/nonebot_plugin_b23",
- "tags": [
- {
- "label": "bilibili",
- "color": "#00aeec"
- },
- {
- "label": "热搜",
- "color": "#00aeec"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.3.0",
- "time": "2024-02-12T14:49:36.387789Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_autoreply",
- "project_link": "nonebot-plugin-autoreply",
- "name": "AutoReply",
- "desc": "配置文件高度可自定义的自动回复插件",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-autoreply",
- "tags": [
- {
- "label": "自动回复",
- "color": "#ea881e"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.12.post1",
- "time": "2024-03-10T21:11:37.771261Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_setu_collection",
- "project_link": "nonebot-plugin-setu-collection",
- "name": "我要一张xx涩图",
- "desc": "从多个api获取色图并根据场景整合的色图插件",
- "author": "KarisAya",
- "homepage": "https://github.com/KarisAya/nonebot_plugin_setu_collection",
- "tags": [
- {
- "label": "LoliconAPI",
- "color": "#5adba8"
- },
- {
- "label": "色图",
- "color": "#7ab2e1"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-03-16T05:46:37.619907Z",
- "version": "0.1.8",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_groupmate_waifu",
- "project_link": "nonebot-plugin-groupmate-waifu",
- "name": "娶群友",
- "desc": "娶群友",
- "author": "KarisAya",
- "homepage": "https://github.com/KarisAya/nonebot_plugin_groupmate_waifu",
- "tags": [
- {
- "label": "娶群友",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-11-06T04:59:20.542238Z",
- "version": "1.3.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_jrrp2",
- "project_link": "nonebot-plugin-jrrp2",
- "name": "每日人品2",
- "desc": "带数据库可查询历史平均人品的jrrp插件",
- "author": "Rene8028",
- "homepage": "https://github.com/Rene8028/nonebot_plugin_jrrp2",
- "tags": [
- {
- "label": "每日人品",
- "color": "#ea5252"
- },
- {
- "label": "jrrp",
- "color": "#5290ea"
- },
- {
- "label": "jrrp2",
- "color": "#52bbea"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-26T10:59:34.202680Z",
- "version": "1.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_dicky_pk",
- "project_link": "nonebot-plugin-dicky-pk",
- "name": "DickyPK",
- "desc": "移植自OPQBot的群聊小游戏 CHINCHIN-PK",
- "author": "tkgs0",
- "homepage": "https://github.com/tkgs0/nonebot-plugin-dicky-pk",
- "tags": [
- {
- "label": "a:onebot11",
- "color": "#000000"
- },
- {
- "label": "t:群聊小游戏",
- "color": "#ffd500"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-02-22T03:54:09.830355Z",
- "version": "0.5.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_eventmonitor",
- "project_link": "nonebot-plugin-eventmonitor",
- "name": "eventmonitor",
- "desc": "监控群事件的插件,支持戳一戳,成员变动,群荣誉变化等提示的插件",
- "author": "Reversedeer",
- "homepage": "https://github.com/Reversedeer/nonebot_plugin_eventmonitor",
- "tags": [
- {
- "label": "QQGroup",
- "color": "#2885c0"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.1",
- "time": "2024-01-08T16:11:22.263521Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_whateat_pic",
- "project_link": "nonebot-plugin-whateat-pic",
- "name": "今天吃喝什么呢",
- "desc": "随机推荐吃的和喝的",
- "author": "Cvandia",
- "homepage": "https://github.com/Cvandia/nonebot-plugin-whateat-pic",
- "tags": [
- {
- "label": "吃什么",
- "color": "#e4ea52"
- },
- {
- "label": "喝什么",
- "color": "#52ea8b"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.1.7",
- "time": "2023-08-21T08:57:18.767121Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_matcher_block",
- "project_link": "nonebot-plugin-matcher-block",
- "name": "通用指令阻断",
- "desc": "可以为指令添加cd,或在该群屏蔽,支持正则",
- "author": "KarisAya",
- "homepage": "https://github.com/KarisAya/nonebot_plugin_matcher_block",
- "tags": [
- {
- "label": "指令阻断",
- "color": "#525fea"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-08-20T08:31:44.747967Z",
- "version": "0.1.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_acm_reminder",
- "project_link": "nonebot-plugin-acm-reminder",
- "name": "ACMReminder",
- "desc": "获取CF/牛客等平台的竞赛信息的插件",
- "author": "BigOrangeQWQ",
- "homepage": "https://github.com/BigOrangeQWQ/nonebot_plugin_acm_reminder",
- "tags": [
- {
- "label": "ACM",
- "color": "#3b8b74"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-15T11:31:08.159916Z",
- "version": "0.1.8",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_maimai",
- "project_link": "nonebot-plugin-maimai",
- "name": "舞萌maimai",
- "desc": "适用nonebot2的Maimai插件",
- "author": "Agnes4m",
- "homepage": "https://github.com/Agnes4m/maimai_plugin",
- "tags": [
- {
- "label": "maimai",
- "color": "#5262ea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "version": "0.4.4.post1",
- "time": "2023-10-30T03:17:10.051088Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_all4one",
- "project_link": "nonebot-plugin-all4one",
- "name": "OneBot 实现",
- "desc": "让 NoneBot2 成为 OneBot 实现!",
- "author": "j1g5awi",
- "homepage": "https://github.com/nonepkg/nonebot-plugin-all4one",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.qqguild",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.1.0a3",
- "time": "2023-06-20T14:59:24.276312Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_gsabyss",
- "project_link": "nonebot-plugin-gsabyss",
- "name": "原神深境螺旋数据查询",
- "desc": "原神深渊讨伐列表、渊月祝福、玩家战斗统计等信息查询,数据来自 Honey Hunter World 和 Akasha Database",
- "author": "monsterxcn",
- "homepage": "https://github.com/monsterxcn/nonebot-plugin-gsabyss",
- "tags": [
- {
- "label": "t:Genshin",
- "color": "#ffd49f"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-10-03T07:00:47.175755Z",
- "version": "0.1.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_arktools",
- "project_link": "nonebot-plugin-arktools",
- "name": "明日方舟工具箱",
- "desc": "基于 OneBot 适配器的 NoneBot2 明日方舟小工具箱插件",
- "author": "NumberSir",
- "homepage": "https://github.com/NumberSir/nonebot_plugin_arktools",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "arknights",
- "color": "#22bbff"
- },
- {
- "label": "t:game",
- "color": "#db905e"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-04T05:16:51.388596Z",
- "version": "1.2.0",
- "skip_test": false
- },
- {
- "module_name": "gartic_room",
- "project_link": "nonebot-plugin-gartic-room",
- "name": "你画我猜组队",
- "desc": "自动创建gartic房间,主题为综合,将房间链接发送到群聊",
- "author": "bridgeL",
- "homepage": "https://github.com/bridgeL/gartic_room",
- "tags": [
- {
- "label": "ayaka",
- "color": "#e36306"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-15T12:14:20.052354Z",
- "version": "0.0.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot-plugin-resolver",
- "project_link": "nonebot-plugin-resolver",
- "name": "链接分享解析器",
- "desc": "适用于nonebot2 解析视频、图片链接/小程序插件,tiktok、bilibili、twitter、xhs等实时发送!",
- "author": "zhiyu1998",
- "homepage": "https://github.com/zhiyu1998/nonebot-plugin-resolver",
- "tags": [
- {
- "label": "bilibili",
- "color": "#f8a5c2"
- },
- {
- "label": "tiktok",
- "color": "#303952"
- },
- {
- "label": "twitter",
- "color": "#1b9cfc"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-27T06:15:19.259340Z",
- "version": "1.0.13",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bing_chat",
- "project_link": "nonebot-plugin-bing-chat",
- "name": "Bing Chat",
- "desc": "使用新版必应的聊天功能",
- "author": "Harry-Jing",
- "homepage": "https://github.com/Harry-Jing/nonebot-plugin-bing-chat",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-20T10:28:15.689700Z",
- "version": "0.7.11",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_saa",
- "project_link": "nonebot-plugin-send-anything-anywhere",
- "name": "峯驰物流",
- "desc": "一个帮助处理不同 adapter 消息的适配和发送的插件 ",
- "author": "felinae98",
- "homepage": "https://send-anything-anywhere.felinae98.cn/",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.6.0",
- "time": "2024-02-23T02:25:20.661005Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_random_stereotypes",
- "project_link": "nonebot-plugin-random-stereotypes",
- "name": "发病语录",
- "desc": "对输入的人,随机返回一条本地的发病语录",
- "author": "Ikaros-521",
- "homepage": "https://github.com/Ikaros-521/nonebot_plugin_random_stereotypes",
- "tags": [
- {
- "label": "语录",
- "color": "#6a6060"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-02-14T11:01:27.302388Z",
- "version": "0.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_xiuxian_2",
- "project_link": "nonebot_plugin_xiuxian_2",
- "name": "修仙_2.0",
- "desc": "基于原版修仙的修改与重构",
- "author": "QingMuCat",
- "homepage": "https://github.com/QingMuCat/nonebot_plugin_xiuxian_2.0",
- "tags": [
- {
- "label": "文游",
- "color": "#ea5252"
- },
- {
- "label": "修仙",
- "color": "#4e9f9f"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-05T13:42:32.700880Z",
- "version": "2.9.2.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_h2e",
- "project_link": "nonebot-plugin-h2e",
- "name": "呆呆兽都会起来锻炼 H2E",
- "desc": "类似\"今天吃什么\"的一个插件,通过命令返回健身、游泳、瑜伽的锻炼方式啦",
- "author": "Gin2O",
- "homepage": "https://github.com/Gin2O/nonebot_plugin_h2e",
- "tags": [
- {
- "label": "锻炼",
- "color": "#da4a4a"
- },
- {
- "label": "t:what2eat",
- "color": "#99da4a"
- },
- {
- "label": "t: how2exe",
- "color": "#99da4a"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-23T15:18:39.471059Z",
- "version": "0.1.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_oachat",
- "project_link": "nonebot-plugin-oachat",
- "name": "呆呆兽都会用的chatbot接api",
- "desc": "没有上下文语境的简易chatbot,调用openai API",
- "author": "Gin2O",
- "homepage": "https://github.com/Gin2O/nonebot_plugin_oachat",
- "tags": [
- {
- "label": "OpenAI",
- "color": "#ea5252"
- },
- {
- "label": "GPT3",
- "color": "#ea5252"
- },
- {
- "label": "ChatBot",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-04T16:28:15.886299Z",
- "version": "0.1.8",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_warframe_mode",
- "project_link": "nonebot-plugin-warframe-mode",
- "name": "wf的wm市场",
- "desc": "warframe游戏的WM市场查询",
- "author": "mmxd12",
- "homepage": "https://github.com/mmxd12/nonebot_plugin_warframe_mode",
- "tags": [
- {
- "label": "星际战甲",
- "color": "#ea5252"
- },
- {
- "label": "warframe",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-07T02:34:08.571246Z",
- "version": "1.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bf1_groptools",
- "project_link": "nonebot-plugin-bf1-groptools",
- "name": "战地一入群审批",
- "desc": "战地一通过游戏id的入群审核并其修改群名片为id",
- "author": "zzcqie666",
- "homepage": "https://github.com/zzcqie666/nonebot_plugin_bf1_groptools",
- "tags": [
- {
- "label": "战地一",
- "color": "#52eae4"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-26T02:09:33.525641Z",
- "version": "0.0.13",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_afd",
- "project_link": "nonebot-plugin-afd",
- "name": "爱发电进群审核",
- "desc": "审核入群信息判断是否同意进群",
- "author": "17TheWord",
- "homepage": "https://github.com/17TheWord/nonebot-plugin-afd",
- "tags": [
- {
- "label": "爱发电",
- "color": "#ea5252"
- },
- {
- "label": "自动审核进群",
- "color": "#52eae9"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.0.4",
- "time": "2023-12-14T04:52:48.787154Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_eventdone",
- "project_link": "nonebot-plugin-eventdone",
- "name": "nonebot_plugin_eventdone",
- "desc": "远程同意好友",
- "author": "PadorFelice",
- "homepage": "https://github.com/PadorFelice/nonebot_plugin_eventdone",
- "tags": [
- {
- "label": "同意好友",
- "color": "#ba2d2d"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-28T10:38:00.132098Z",
- "version": "1.1.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ncm_saying",
- "project_link": "nonebot-plugin-ncm-saying",
- "name": "网抑云",
- "desc": "一开口就老网抑云了",
- "author": "techotaku39",
- "homepage": "https://github.com/techotaku39/nonebot-plugin-ncm-saying",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-02-28T12:47:07.236766Z",
- "version": "0.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_60s",
- "project_link": "nonebot-plugin-60s",
- "name": "60s日历",
- "desc": "每天60秒读懂世界",
- "author": "techotaku39",
- "homepage": "https://github.com/techotaku39/nonebot-plugin-60s",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-31T11:38:28.620766Z",
- "version": "0.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_AutoRepeater",
- "project_link": "nonebot-plugin-AutoRepeater",
- "name": "AutoRepeater",
- "desc": "连续发送2条相同消息,机器人就会自动 +1。包括普通消息,QQ表情,还有图片(表情包)。支持图片夹文字和表情夹文字的消息!具有动态多群控制和跟随撤回功能(手表API可能无法监测)。",
- "author": "DMCSWCG",
- "homepage": "https://github.com/DMCSWCG/nonebot-plugin-AutoRepeater",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-03T16:52:05.869904Z",
- "version": "0.1.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ai_timetable",
- "project_link": "nonebot-plugin-ai-timetable",
- "name": "小爱课表",
- "desc": "一键导入课表、查看课表、提醒上课、查询课程",
- "author": "maoxig",
- "homepage": "https://github.com/maoxig/nonebot-plugin-ai-timetable",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.3.6",
- "time": "2023-09-02T05:52:46.560403Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_sanae",
- "project_link": "nonebot-plugin-sanae",
- "name": "Sanae",
- "desc": "早苗连接器,也可转发其他onebotv11到nb2~",
- "author": "Hoshinonyaruko",
- "homepage": "https://github.com/Hoshinonyaruko/nonebot-plugin-sanae",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-18T07:50:34.572272Z",
- "version": "0.0.9",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_arkrecord",
- "project_link": "nonebot-plugin-arkrecord",
- "name": "明日方舟抽卡记录分析",
- "desc": "明日方舟抽卡记录分析与导出",
- "author": "zheuziihau",
- "homepage": "https://github.com/zheuziihau/nonebot_plugin_arkrecord",
- "tags": [
- {
- "label": "明日方舟 ",
- "color": "#c39191"
- },
- {
- "label": "游戏",
- "color": "#c39191"
- },
- {
- "label": "抽卡",
- "color": "#c39191"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-12T16:03:10.678760Z",
- "version": "1.7.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_chatgpt_turbo",
- "project_link": "nonebot-plugin-chatgpt-turbo",
- "name": "ChatGPT官方接口版",
- "desc": "适配新版OpenAI API的nonebot插件,可以调用官方稳定版ChatGPT进行回复",
- "author": "Alpaca4610",
- "homepage": "https://github.com/Alpaca4610/nonebot_plugin_chatgpt_turbo",
- "tags": [
- {
- "label": "ChatGPT",
- "color": "#ea5252"
- },
- {
- "label": "OpenAI",
- "color": "#52ea92"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-27T02:12:58.838396Z",
- "version": "0.3.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_chatgpt_on_qq",
- "project_link": "nonebot-plugin-chatgpt-on-qq",
- "name": "多功能的ChatGPT机器人",
- "desc": "基于chatGPT3.5-turboAPI,有利用模板创建新对话、保存历史记录、多重对话不互相干扰等功能",
- "author": "Suxmx",
- "homepage": "https://github.com/Suxmx/nonebot_plugin_chatgpt_on_qq",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-02-17T12:13:50.019025Z",
- "version": "1.6.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_tuan_chatgpt",
- "project_link": "nonebot-plugin-tuan-chatgpt",
- "name": "和团子聊天!",
- "desc": "来和团子聊天吧~ Powered by chatgpt",
- "author": "TheLZY",
- "homepage": "https://github.com/TheLZY/nonebot_plugin_tuan_chatgpt",
- "tags": [
- {
- "label": "t:chat",
- "color": "#ff9d97"
- },
- {
- "label": "t:chatgpt",
- "color": "#ff9d97"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-09-16T21:37:00.389809Z",
- "version": "0.4.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_chatpdf",
- "project_link": "nonebot-plugin-chatpdf",
- "name": "ChatPDF文章分析",
- "desc": "在nonebot中使用ChatPDF的最小实现来中分析文章内容",
- "author": "Alpaca4610",
- "homepage": "https://github.com/Alpaca4610/nonebot_plugin_chatpdf",
- "tags": [
- {
- "label": "ChatGPT",
- "color": "#ea5252"
- },
- {
- "label": "ChatPDF",
- "color": "#6c7abd"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-24T07:41:22.586069Z",
- "version": "0.4.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_rimofun",
- "project_link": "nonebot-plugin-rimofun",
- "name": "RimoFun",
- "desc": "用 RimoChan 开发的工具做的一个有趣的插件",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-rimofun",
- "tags": [
- {
- "label": "RimoChan",
- "color": "#f3e5bf"
- },
- {
- "label": "bnhhsh",
- "color": "#ebbcc6"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.3.0",
- "time": "2024-03-10T07:19:28.075646Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_customemote",
- "project_link": "nonebot-plugin-customemote",
- "name": "群聊自定义表情包",
- "desc": "发送 表情名称 加 (.jpg或.png或.gif)后缀,就会发送设置好的表情。快速方便,聊天必备。",
- "author": "DMCSWCG",
- "homepage": "https://github.com/DMCSWCG/nonebot-plugin-customemote/",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-11T12:57:44.113082Z",
- "version": "0.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_justsix",
- "project_link": "nonebot-plugin-justsix",
- "name": "发6",
- "desc": "发送6,机器人就回复6",
- "author": "iidamie",
- "homepage": "https://github.com/iidamie/nonebot_plugin_justsix",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-13T10:04:49.409803Z",
- "version": "1.0.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_simulator_xiuxian",
- "project_link": "nonebot-plugin-simulator-xiuxian",
- "name": "修仙模拟器",
- "desc": "基于原版修仙的修改",
- "author": "luoyefufeng",
- "homepage": "https://github.com/luoyefufeng/nonebot_plugin_simulator_xiuxian",
- "tags": [
- {
- "label": "文游",
- "color": "#4256da"
- },
- {
- "label": "修仙1.0",
- "color": "#1d1b1c"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-08-19T06:57:44.424649Z",
- "version": "0.5.23",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bracket",
- "project_link": "nonebot-plugin-bracket",
- "name": "括号补全",
- "desc": "补全消息中的括号,治愈强迫症",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-bracket",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.0",
- "time": "2023-06-21T14:51:55.170240Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_gshisbanner",
- "project_link": "nonebot-plugin-gshisbanner",
- "name": "gshisbanner",
- "desc": "这是一个在机器人上获取原神历史卡池的插件",
- "author": "forchannot",
- "homepage": "https://github.com/forchannot/nonebot-plugin-gshisbanner",
- "tags": [
- {
- "label": "原神",
- "color": "#ea5252"
- },
- {
- "label": "卡池",
- "color": "#52ea56"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.red"
- ],
- "valid": true,
- "version": "1.2.5",
- "time": "2024-03-08T09:12:03.746070Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_unoconv",
- "project_link": "nonebot-plugin-unoconv",
- "name": "unoconv文件转换",
- "desc": "基于unoconv的文件转换工具,支持输出pdf、doc、jpg等格式",
- "author": "Zeta-qixi",
- "homepage": "https://github.com/Zeta-qixi/nonebot-plugin-unoconv",
- "tags": [
- {
- "label": "文件转换",
- "color": "#ea5252"
- },
- {
- "label": "pdf转换",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-16T01:16:57.312529Z",
- "version": "0.5.7",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_apexranklookup",
- "project_link": "nonebot-plugin-apexranklookup",
- "name": "apex信息查询",
- "desc": "查询apex玩家信息、地图等信息",
- "author": "Windylh",
- "homepage": "https://github.com/Windylh/nonebot_plugin_apexranklookup",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-10-10T08:56:26.675744Z",
- "version": "0.1.7",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_randomnana",
- "project_link": "nonebot-plugin-randomnana",
- "name": "随机狗妈",
- "desc": "随机抽取神乐七奈表情包图片",
- "author": "NanakoOfficial",
- "homepage": "https://github.com/NanakoOfficial/nonebot_plugin_randomnana",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-22T00:46:06.922063Z",
- "version": "0.1.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_quote",
- "project_link": "nonebot-plugin-quote",
- "name": "群聊语录库",
- "desc": "一款QQ群语录库——支持上传聊天截图为语录,随机投放语录,关键词搜索语录精准投放",
- "author": "RongRongJi",
- "homepage": "https://github.com/RongRongJi/nonebot_plugin_quote",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#326bad"
- },
- {
- "label": "t:语录",
- "color": "#003f88"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-13T19:07:23.124182Z",
- "version": "0.3.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_memes_api",
- "project_link": "nonebot-plugin-memes-api",
- "name": "表情包制作",
- "desc": "制作各种沙雕表情包",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-memes-api",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [],
- "valid": true,
- "version": "0.3.2",
- "time": "2024-03-12T09:44:02.760534Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_rrc",
- "project_link": "nonebot-plugin-rrc",
- "name": "随机点名",
- "desc": "就是群聊点名,让学生感受刺激",
- "author": "QingMuCat",
- "homepage": "https://github.com/QingMuCat/nonebot-plugin-rrc",
- "tags": [
- {
- "label": "课堂",
- "color": "#ea5252"
- },
- {
- "label": "抽人",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-19T07:32:14.760521Z",
- "version": "0.0.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_hotsearch",
- "project_link": "nonebot-plugin-hotsearch",
- "name": "多平台热搜获取插件",
- "desc": "获取微博/百度/知乎/贴吧/b站的热搜信息",
- "author": "Astolfocat",
- "homepage": "https://github.com/Astolfocat/nonebot_plugin_hotsearch",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-19T04:59:59.139834Z",
- "version": "0.1.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ai_interviewer",
- "project_link": "nonebot-plugin-ai-interviewer",
- "name": "基于OpenAI的AI模拟面试官",
- "desc": "本插件基于OpenAI的API开发,在nonebot框架下实现一个聊天式的可自定义面试职位的AI辅助面试官。",
- "author": "Alpaca4610",
- "homepage": "https://github.com/Alpaca4610/nonebot-plugin-ai-interviewer",
- "tags": [
- {
- "label": "ChatGPT",
- "color": "#4366eb"
- },
- {
- "label": "模拟面试",
- "color": "#af286f"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-03-20T14:33:59.011021Z",
- "version": "0.1.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_chatglm",
- "project_link": "nonebot-plugin-chatglm",
- "name": "ChatGLM",
- "desc": "基于ChatGLM-6B模型,提供本地中文(汉语)聊天机器人功能",
- "author": "DaoMingze",
- "homepage": "https://github.com/DaoMingze/zhukebot/tree/main/zhukebot/plugins/chatglm",
- "tags": [
- {
- "label": "t:Chatbot",
- "color": "#4366eb"
- },
- {
- "label": "ChatGLM",
- "color": "#af286f"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-04T15:39:45.646722Z",
- "version": "0.1.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_chatglm6b",
- "project_link": "nonebot-plugin-chatglm6b",
- "name": "ChatGLM-6B API版",
- "desc": "通过ChatGLM-6B API来和已经部署好的ChatGLM对话",
- "author": "QNLanYang",
- "homepage": "https://github.com/QNLanYang/nonebot_plugin_ChatGLM6B",
- "tags": [
- {
- "label": "t:ChatGLM",
- "color": "#52d6ea"
- },
- {
- "label": "AI Chat",
- "color": "#8e52ea"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-08T15:47:04.430159Z",
- "version": "0.1.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_helloworld",
- "project_link": "nonebot-plugin-helloworld",
- "name": "Hello World",
- "desc": "你好,世界",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-helloworld",
- "tags": [
- {
- "label": "good first plugin",
- "color": "#6c58f6"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-24T11:29:41.026691Z",
- "version": "0.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_overbracket",
- "project_link": "nonebot-plugin-overbracket",
- "name": "通括膨胀",
- "desc": "让你的机器人随机发括号",
- "author": "NCBM",
- "homepage": "https://github.com/NCBM/nonebot-plugin-overbracket",
- "tags": [
- {
- "label": "useless",
- "color": "#0a930e"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.2",
- "time": "2023-06-19T08:06:41.126617Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_miao",
- "project_link": "nonebot-plugin-miao",
- "name": "口癖",
- "desc": "让Bot的发言添加口癖",
- "author": "CMHopeSunshine",
- "homepage": "https://github.com/CMHopeSunshine/nonebot-plugin-miao",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "1.1.0",
- "time": "2023-06-20T14:21:31.414654Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_questionmark",
- "project_link": "nonebot-plugin-questionmark",
- "name": "颠倒问号",
- "desc": "发送单个问号 `?` 或 `?`, bot会自动回复颠倒的问号 `¿`",
- "author": "NumberSir",
- "homepage": "https://github.com/NumberSir/nonebot-plugin-questionmark",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-03T08:15:01.898492Z",
- "version": "0.4.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_genshin_cos",
- "project_link": "nonebot-plugin-genshin-cos",
- "name": "米游社cos",
- "desc": "获取原神coser图片",
- "author": "Cvandia",
- "homepage": "https://github.com/Cvandia/nonebot_plugin_genshin_cos",
- "tags": [
- {
- "label": "原神",
- "color": "#f55400"
- },
- {
- "label": "cos",
- "color": "#00d0f5"
- },
- {
- "label": "coser",
- "color": "#eb1dd3"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.7",
- "time": "2024-03-09T13:23:44.009084Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_chatgpt_plus",
- "project_link": "nonebot-plugin-chatgpt-plus",
- "name": "ChatGPT网页端API",
- "desc": "免费、无限使用ChatGPT,PLUS账号可使用ChatGPT4.0,绕过ChatGPT的Cloudflare盾来使用免费网页端ChatGPT",
- "author": "AkashiCoin",
- "homepage": "https://github.com/AkashiCoin/nonebot-plugin-chatgpt-plus",
- "tags": [
- {
- "label": "ChatGPT",
- "color": "#ea5252"
- },
- {
- "label": "GPT4",
- "color": "#2ecf57"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-11-17T11:16:32.728012Z",
- "version": "0.8.9",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_sayoroll",
- "project_link": "nonebot-plugin-sayoroll",
- "name": "sayoroll",
- "desc": "随机数字或随机事件",
- "author": "mas-alone",
- "homepage": "https://github.com/mas-alone/nonebot-plugin-sayoroll",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.6.1",
- "time": "2024-03-07T04:04:59.513027Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_gw2",
- "project_link": "nonebot-plugin-gw2",
- "name": "激战2",
- "desc": "使用api获取星岬岛信息",
- "author": "Agnes4m",
- "homepage": "https://github.com/Agnes4m/nonebot_plugin_gw2",
- "tags": [
- {
- "label": "gw2",
- "color": "#52ea5a"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.0.4",
- "time": "2023-06-23T05:32:22.625374Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_today_waifu",
- "project_link": "nonebot-plugin-today-waifu",
- "name": "今日老婆",
- "desc": "随机抓取群友做老婆",
- "author": "glamorgan9826",
- "homepage": "https://github.com/glamorgan9826/nonebot-plugin-today-waifu",
- "tags": [
- {
- "label": "娱乐",
- "color": "#eac752"
- },
- {
- "label": "每日老婆",
- "color": "#9beff6"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-07-25T14:57:04.643842Z",
- "version": "0.1.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_sleep",
- "project_link": "nonebot-plugin-sleep",
- "name": "来份睡眠套餐",
- "desc": "让bot给你一份精致的睡眠套餐(发指令禁言)",
- "author": "mas-alone",
- "homepage": "https://github.com/mas-alone/nonebot-plugin-sleep",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-02-22T03:15:30.040702Z",
- "version": "0.1.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_api_paddle",
- "project_link": "nonebot-api-paddle",
- "name": "nonebot_api_paddle",
- "desc": "nonebot_api_paddleocr",
- "author": "canxin121",
- "homepage": "https://github.com/canxin121/nonebot_api_paddleocr",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-21T15:52:29.221679Z",
- "version": "1.0.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_chatppt",
- "project_link": "nonebot-plugin-chatppt",
- "name": "AI生成PPT",
- "desc": "在nonebot框架下实现一个AI生成指定主题PPT的文件并上传到群文件中",
- "author": "Alpaca4610",
- "homepage": "https://github.com/Alpaca4610/nonebot-plugin-chatppt",
- "tags": [
- {
- "label": "ChatGPT",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-05T08:45:56.162272Z",
- "version": "0.1.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_steam_game_status",
- "project_link": "nonebot-plugin-steam-game-status",
- "name": "Steam游戏状态",
- "desc": "播报群友的Steam游戏状态",
- "author": "nek0us",
- "homepage": "https://github.com/nek0us/nonebot_plugin_steam_game_status",
- "tags": [
- {
- "label": "Steam",
- "color": "#6690a5"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "version": "0.1.7",
- "time": "2024-02-28T18:40:00.487496Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bilichat",
- "project_link": "nonebot-plugin-bilichat",
- "name": "nonebot-plugin-bilichat",
- "desc": "多种B站链接解析,视频词云,AI总结,你想要的都在 bilichat",
- "author": "Well2333",
- "homepage": "https://github.com/Well2333/nonebot-plugin-bilichat",
- "tags": [
- {
- "label": "哔哩哔哩",
- "color": "#ffc8ea"
- },
- {
- "label": "ChatGPT",
- "color": "#75ffc0"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.mirai2",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qqguild"
- ],
- "valid": false,
- "version": "5.2.0",
- "time": "2024-02-22T07:51:13.607536Z",
- "skip_test": false
- },
- {
- "module_name": "GenshinUID",
- "project_link": "nonebot-plugin-genshinuid",
- "name": "GenshinUID",
- "desc": "支持大部分适配器的全功能NoneBot2原神插件",
- "author": "KimigaiiWuyi",
- "homepage": "https://github.com/KimigaiiWuyi/GenshinUID",
- "tags": [
- {
- "label": "a:all",
- "color": "#ea5252"
- },
- {
- "label": "原神",
- "color": "#000000"
- },
- {
- "label": "早柚核心",
- "color": "#7937a9"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-03-18T05:13:47.485271Z",
- "version": "4.6.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_blive_danmaku",
- "project_link": "nonebot-plugin-blive-danmaku",
- "name": "B站直播间路灯",
- "desc": "通过弹幕记录直播高能点",
- "author": "zangxx66",
- "homepage": "https://github.com/zangxx66/nonebot_plugin_blive_danmaku",
- "tags": [
- {
- "label": "t:bilibili",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-10-08T08:54:21.863198Z",
- "version": "0.4.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_clock",
- "project_link": "nonebot-plugin-clock",
- "name": "nonebot clock 群闹钟 ⏰",
- "desc": "支持群聊 私聊的⏰插件",
- "author": "Zeta-qixi",
- "homepage": "https://github.com/Zeta-qixi/nonebot-plugin-clock",
- "tags": [
- {
- "label": "闹钟",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-22T02:06:01.009228Z",
- "version": "0.9",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_SDGPT",
- "project_link": "nonebot-plugin-SDGPT",
- "name": "SDGPT",
- "desc": "链接 ChatGPT / Bing / Stable-Diffusion: ChatGPT Bing 聊天, gpt 解析自然语言转 Stable-Diffusion 生成图像",
- "author": "thx114",
- "homepage": "https://github.com/thx114/sdgpt",
- "tags": [
- {
- "label": "a:onebot",
- "color": "#000000"
- },
- {
- "label": "chatGPT",
- "color": "#54b490"
- },
- {
- "label": "novelai",
- "color": "#f0dc4e"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-05T02:47:56.881617Z",
- "version": "0.2.8",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_fuckyou",
- "project_link": "nonebot-plugin-fuckyou",
- "name": "FuckYou",
- "desc": "莎士比亚没有士",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-fuckyou",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.0.post1",
- "time": "2024-03-10T08:54:32.695129Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_pokemonfusion",
- "project_link": "nonebot-plugin-pokemonfusion",
- "name": "宝可梦融合",
- "desc": "Pokemon Infinite Fusion的中文版融合计算器,支持融合420^2=176400种宝可梦",
- "author": "IllusiveBull",
- "homepage": "https://github.com/IllusiveBull/nonebot_plugin_pokemonfusion",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-10-24T05:13:39.699321Z",
- "version": "1.1.2",
- "skip_test": false
- },
- {
- "module_name": "tatarubot2",
- "project_link": "tatarubot2",
- "name": "TataruBot2",
- "desc": "FF14相关轻量功能,如查物价、logs、看微博等",
- "author": "aaron-lii",
- "homepage": "https://github.com/aaron-lii/TataruBot2",
- "tags": [
- {
- "label": "t:FF14",
- "color": "#5282ea"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-12-04T02:02:20.511796Z",
- "version": "1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_talk_with_chatgpt",
- "project_link": "nonebot-plugin-talk-with-chatgpt",
- "name": "与ChatGpt聊天",
- "desc": "基于accessToken登录的chatgpt聊天插件",
- "author": "nikissXI",
- "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_talk_with_chatgpt",
- "tags": [
- {
- "label": "chatgpt",
- "color": "#1a834e"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-11-23T13:36:55.110924Z",
- "version": "0.6.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_osuverify",
- "project_link": "nonebot-plugin-osuverify",
- "name": "osu!入群审批",
- "desc": "通过osu!用户名的入群审核并其修改群名片为id",
- "author": "mas-alone",
- "homepage": "https://github.com/mas-alone/nonebot-plugin-osuverify",
- "tags": [
- {
- "label": "OSU",
- "color": "#eb5d9b"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-03-05T09:45:42.028099Z",
- "version": "0.1.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bilifan",
- "project_link": "nonebot-plugin-bilifan",
- "name": "bilifan",
- "desc": "b站粉丝牌~",
- "author": "Agnes4m",
- "homepage": "https://github.com/Agnes4m/nonebot_plugin_bilifan",
- "tags": [
- {
- "label": "bilibili",
- "color": "#ec15c6"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.3.2",
- "time": "2024-01-25T10:10:05.461565Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_akinator",
- "project_link": "nonebot-plugin-akinator",
- "name": "Akinator",
- "desc": "网络天才",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-akinator",
- "tags": [
- {
- "label": "Akinator",
- "color": "#6599fe"
- },
- {
- "label": "网络天才",
- "color": "#6599fe"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.2.0",
- "time": "2024-03-10T11:36:13.067923Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_rename",
- "project_link": "nonebot-plugin-rename",
- "name": "nonebot_plugin_rename",
- "desc": "用于更改qq机器人的群名片,内置多种有趣名片",
- "author": "forchannot",
- "homepage": "https://github.com/forchannot/nonebot_plugin_rename",
- "tags": [
- {
- "label": "群名片",
- "color": "#466bed"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.7.1",
- "time": "2024-02-03T07:20:38.157409Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_appinsights",
- "project_link": "nonebot-plugin-appinsights",
- "name": "Nonebot2 AppInsights",
- "desc": "Nonebot2 Application Insights 日志连接插件",
- "author": "XZhouQD",
- "homepage": "https://github.com/xzhouqd/nonebot-plugin-appinsights",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.0",
- "time": "2023-06-19T17:05:18.866643Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_brainfuck",
- "project_link": "nonebot-plugin-brainfuck",
- "name": "brainfuck",
- "desc": "一个brainfuck解释器,允许在群聊中输入brainfuck:{command}:{inbox}执行brainfuck代码,并返回outbox",
- "author": "campanulamediuml",
- "homepage": "https://github.com/campanulamediuml/nonebot-plugin-brainfuck",
- "tags": [
- {
- "label": "t:dev",
- "color": "#ea5252"
- },
- {
- "label": "t:bf",
- "color": "#529fea"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-23T04:37:04.094212Z",
- "version": "1.0.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot-plugin-coderun",
- "project_link": "nonebot-plugin-coderun",
- "name": "运行代码",
- "desc": "基于runoob.com的在线代码运行插件",
- "author": "Yincmewy",
- "homepage": "https://github.com/Yincmewy/nonebot_plugin_coderun",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-22T12:23:23.324337Z",
- "version": "0.0.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_abot_place",
- "project_link": "nonebot-plugin-abot-place",
- "name": "公共画板插件",
- "desc": "可以让所有的 Bot 用户一起来画画(参考 Reddit Place)",
- "author": "djkcyl",
- "homepage": "https://github.com/Aunly/nonebot-plugin-abot-place",
- "tags": [
- {
- "label": "ABot",
- "color": "#52aaea"
- },
- {
- "label": "Place",
- "color": "#ea6dda"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-01T09:52:35.801795Z",
- "version": "0.1.0.post3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_megumin",
- "project_link": "nonebot-plugin-megumin",
- "name": "为美好群聊献上爆炎",
- "desc": "现在,你的群友可以触发失传已久的爆裂魔法了",
- "author": "youlanan",
- "homepage": "https://github.com/youlanan/nonebot_plugin_megumin",
- "tags": [
- {
- "label": "小游戏",
- "color": "#f9971c"
- },
- {
- "label": "Explosion",
- "color": "#f94b1c"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-04-30T02:05:54.367615Z",
- "version": "0.0.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_manga_translator",
- "project_link": "nonebot-plugin-manga-translator",
- "name": "图片翻译",
- "desc": "利用api翻译图片并返回翻译后的图片",
- "author": "maoxig",
- "homepage": "https://github.com/maoxig/nonebot-plugin-manga-translator",
- "tags": [
- {
- "label": "漫画翻译",
- "color": "#527bea"
- },
- {
- "label": "图片翻译",
- "color": "#c452ea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.3",
- "time": "2023-06-09T12:43:01.115471Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_watermarker",
- "project_link": "nonebot-plugin-watermarker",
- "name": "水印大师",
- "desc": "给bot发的图片增加水印,支持随机水印添加",
- "author": "X-Skirt-X",
- "homepage": "https://github.com/X-Skirt-X/nonebot-plugin-watermarker",
- "tags": [
- {
- "label": "t:水印",
- "color": "#52eae7"
- },
- {
- "label": "t:图片水印",
- "color": "#ef258f"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-03T12:05:50.890757Z",
- "version": "0.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_starrail_calendar",
- "project_link": "nonebot-plugin-starrail-calendar",
- "name": "星穹铁道活动日历",
- "desc": "查看《崩坏:星穹铁道》官方活动",
- "author": "nicklly",
- "homepage": "https://github.com/nicklly/nonebot_plugin_StarRail_calendar",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-09-17T08:57:38.240552Z",
- "version": "1.0.8",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_wordle_help",
- "project_link": "nonebot-plugin-wordle-help",
- "name": "wordle_help",
- "desc": "wordle游戏小助手",
- "author": "Special-Week",
- "homepage": "https://github.com/Special-Week/Hinata-Bot/tree/main/src/plugins/wordle_help",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.0.3",
- "time": "2023-06-20T13:31:24.879980Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot-plugin-csgo-case-simulator",
- "project_link": "nonebot-plugin-csgo-case-simulator",
- "name": "CSGO开箱模拟器",
- "desc": "内置所有最新武器箱,可多箱连开",
- "author": "roiiiu",
- "homepage": "https://github.com/roiiiu/nonebot-plugin-csgo-case-simulator",
- "tags": [
- {
- "label": "CSGO",
- "color": "#47aeff"
- },
- {
- "label": "开箱模拟器",
- "color": "#ff4781"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-02-27T09:24:39.222768Z",
- "version": "1.0.1",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_callapi",
- "project_link": "nonebot-plugin-callapi",
- "name": "CallAPI",
- "desc": "使用指令来调用 Bot 的 API",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-callapi",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": false,
- "version": "0.2.0",
- "time": "2024-03-10T10:48:00.487466Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_penguin",
- "project_link": "nonebot-plugin-penguin",
- "name": "nonebot_plugin_penguin",
- "desc": "使用nonebot2查询企鹅物流掉落物数据",
- "author": "AzideCupric",
- "homepage": "https://github.com/AzideCupric/nonebot-plugin-penguin",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.0",
- "time": "2023-06-20T15:22:02.968145Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_spark_gpt",
- "project_link": "nonebot-plugin-spark-gpt",
- "name": "Spark_GPT",
- "desc": "将poe,chatgpt,slack claude,Newbing,SydneyBing,google bard,讯飞星火模型(SparkDesk),通义千问等接入qq,tg,kook(原开黑啦),discord多平台用户绑定实现数据互通,并提供webui进行便捷配置,自适应文转图,实现预设人格化bot的便捷创建,使用和管理",
- "author": "canxin121",
- "homepage": "https://github.com/canxin121/Spark-GPT",
- "tags": [
- {
- "label": "多来源语言GPT",
- "color": "#5599ff"
- },
- {
- "label": "多平台用户数据互通",
- "color": "#ffff77"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.discord",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.telegram"
- ],
- "valid": false,
- "version": "2.0.3",
- "time": "2023-10-12T14:37:14.174909Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_logpile",
- "project_link": "nonebot-plugin-logpile",
- "name": "本地日志保存",
- "desc": "将 bot 日志记录保存到本地文件中",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-logpile",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-09T20:58:22.826287Z",
- "version": "0.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_arkgacha",
- "project_link": "nonebot-plugin-arkgacha",
- "name": "明日方舟抽卡模拟",
- "desc": "明模拟日方舟抽卡功能,支持模拟十连",
- "author": "RF-Tar-Railt",
- "homepage": "https://github.com/RF-Tar-Railt/nonebot-plugin-arkgacha",
- "tags": [
- {
- "label": "game",
- "color": "#eaa852"
- },
- {
- "label": "arknights",
- "color": "#5276ea"
- },
- {
- "label": "抽卡",
- "color": "#c852ea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.6.0",
- "time": "2024-03-10T15:09:59.474921Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_og",
- "project_link": "nonebot-plugin-og",
- "name": "链接解析",
- "desc": "检测链接并发送网站简介及预览图",
- "author": "mute23-code",
- "homepage": "https://github.com/mute23-code/nonebot_plugin_og",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-13T08:37:54.070197Z",
- "version": "0.3.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_hoshino_sign",
- "project_link": "nonebot-plugin-hoshino-sign",
- "name": "签到",
- "desc": "从 hoshino 搬过来的 pcr 签到, 略作修改。",
- "author": "zhulinyv",
- "homepage": "https://github.com/zhulinyv/nonebot_plugin_hoshino_sign",
- "tags": [
- {
- "label": "PCR",
- "color": "#ff0000"
- },
- {
- "label": "签到",
- "color": "#008000"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2024-01-29T01:20:41.320603Z",
- "version": "2.3.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_multincm",
- "project_link": "nonebot-plugin-multincm",
- "name": "MultiNCM",
- "desc": "网易云多选点歌",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-multincm",
- "tags": [
- {
- "label": "网易云",
- "color": "#ea5252"
- },
- {
- "label": "ncm",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.4.4",
- "time": "2023-11-02T14:51:45.862245Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_smallapi",
- "project_link": "nonebot-plugin-smallapi",
- "name": "小小的WEBAPI调用插件",
- "desc": "顾名思义~不要骂我~",
- "author": "chaichaisi",
- "homepage": "https://github.com/chaichaisi/nonebot_plugin_smallapi",
- "tags": [
- {
- "label": "webapi",
- "color": "#52ea7d"
- },
- {
- "label": "api",
- "color": "#52ea7d"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-07-17T06:23:36.976025Z",
- "version": "1.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_p5generator",
- "project_link": "nonebot-plugin-p5generator",
- "name": "《女神异闻录5》预告信生成器",
- "desc": "可以生成仿《女神异闻录5》中心之怪盗团向罪人宣战的预告信",
- "author": "xi-yue-233",
- "homepage": "https://github.com/xi-yue-233/nonebot-plugin-p5generator",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-18T08:56:25.717856Z",
- "version": "0.1.4",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_sd_webui",
- "project_link": "nonebot-plugin-sd-webui",
- "name": "SD绘画插件",
- "desc": "基于stable-diffusion-webui的nonebot绘画插件,支持文生图、图生图、参数指定、模型管理、翻译等功能",
- "author": "evan-gyy",
- "homepage": "https://github.com/evan-gyy/nonebot_plugin_sd_webui",
- "tags": [
- {
- "label": "sd",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-16T07:53:39.816541Z",
- "version": "0.1.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_session",
- "project_link": "nonebot-plugin-session",
- "name": "会话id",
- "desc": "会话信息提取与会话id定义插件",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-session",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.3.1",
- "time": "2024-02-25T07:05:33.845496Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_pluginupdatecheck",
- "project_link": "nonebot-plugin-pluginupdatecheck",
- "name": "便携插件安装器",
- "desc": "一个nonebot2的插件便捷安装和升级插件(基于nb-cli和pip)",
- "author": "xi-yue-233",
- "homepage": "https://github.com/xi-yue-233/nonebot-plugin-pluginupdatecheck",
- "tags": [
- {
- "label": "便携安装",
- "color": "#e42828"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-18T17:14:20.083595Z",
- "version": "0.1.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_stockhelper",
- "project_link": "nonebot-plugin-stockhelper",
- "name": "股票看盘助手",
- "desc": "股票波动超过设定值提醒,省去一直盯盘的烦恼",
- "author": "Calanosay",
- "homepage": "https://github.com/Calanosay/nonebot_plugin_stockhelper",
- "tags": [
- {
- "label": "股票",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-19T10:18:39.940826Z",
- "version": "0.1.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_githubcard",
- "project_link": "nonebot-plugin-githubcard",
- "name": "githubcard",
- "desc": "检测GitHub仓库链接并自动发送卡片信息(适用于Onebot V11)",
- "author": "ElainaFanBoy",
- "homepage": "https://github.com/ElainaFanBoy/nonebot_plugin_githubcard",
- "tags": [
- {
- "label": " Github",
- "color": "#171a21"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.2",
- "time": "2024-03-13T03:26:06.815959Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_lua",
- "project_link": "nonebot-plugin-lua",
- "name": "nonebot-plugin-lua",
- "desc": "在nonebot中执行lua(experimental)",
- "author": "synodriver",
- "homepage": "https://github.com/synodriver/nonebot_plugin_lua",
- "tags": [],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-23T15:50:12.147563Z",
- "version": "0.0.1.dev2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_cube",
- "project_link": "nonebot-plugin-cube",
- "name": "cuber",
- "desc": "魔方插件",
- "author": "initialencounter",
- "homepage": "https://github.com/initialencounter/nonebot-plugin-cube",
- "tags": [
- {
- "label": "魔方",
- "color": "#ea5252"
- },
- {
- "label": "sqlite3",
- "color": "#c2ea52"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-23T15:47:57.754235Z",
- "version": "1.0.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_homo_mathematician",
- "project_link": "nonebot-plugin-homo-mathematician",
- "name": "homo_mathematician",
- "desc": "任何实数都用连续的114514通过加减乘除达成, 任给一组数据都能找出其内在规律(函数表达式)",
- "author": "Special-Week",
- "homepage": "https://github.com/Special-Week/Hinata-Bot/tree/main/src/plugins/homo_mathematician",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.0.7",
- "time": "2024-03-17T07:43:15.322788Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_puzzle",
- "project_link": "nonebot-plugin-puzzle",
- "name": "puzzle",
- "desc": "数字华容道,拼图游戏,查看群华容排名",
- "author": "initialencounter",
- "homepage": "https://github.com/initialencounter/nonebot-plugin-puzzle",
- "tags": [
- {
- "label": "数字华容道",
- "color": "#ea5252"
- },
- {
- "label": "拼图游戏",
- "color": "#a7ea52"
- },
- {
- "label": "puzzle",
- "color": "#52eadd"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-05-23T20:38:56.076911Z",
- "version": "1.0.2",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_herocard",
- "project_link": "nonebot-plugin-herocard",
- "name": "本子标题关键词提取",
- "desc": "为了方便各位平时搜索本子用,发扬hero精神",
- "author": "Xie-Tiao",
- "homepage": "https://github.com/Xie-Tiao/nonebot_plugin_herocard",
- "tags": [
- {
- "label": "文本提取",
- "color": "#6bc6bf"
- },
- {
- "label": "日语",
- "color": "#53bbd8"
- },
- {
- "label": "本子",
- "color": "#eea1b1"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-07-10T09:27:24.982052Z",
- "version": "1.0.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_nagabus",
- "project_link": "nonebot-plugin-nagabus",
- "name": "NAGA公交车",
- "desc": "为群友提供NAGA拼车服务",
- "author": "ssttkkl",
- "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-nagabus",
- "tags": [
- {
- "label": "日麻",
- "color": "#b52ee1"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qqguild",
- "nonebot.adapters.telegram"
- ],
- "valid": false,
- "version": "0.3.2",
- "time": "2023-12-12T12:30:44.770450Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_random_draw",
- "project_link": "nonebot-plugin-random-draw",
- "name": "随机抽取自定义内容",
- "desc": "通过添加各种想要抽取的内容,进行随机抽取。选择困难症的福音",
- "author": "Ikaros-521",
- "homepage": "https://github.com/Ikaros-521/nonebot_plugin_random_draw",
- "tags": [
- {
- "label": "随机",
- "color": "#ffe0aa"
- },
- {
- "label": "a:onebot",
- "color": "#000000"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-06-11T15:58:58.120380Z",
- "version": "0.1.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_stable_diffusion_diao",
- "project_link": "nonebot-plugin-stable-diffusion-diao",
- "name": "stablediffusion绘画插件",
- "desc": "另一个绘画插件,支持多SD后端,负载均衡,lora,emb,chatgpt prompt生成,更换模型等等更多功能",
- "author": "DiaoDaiaChan",
- "homepage": "https://github.com/DiaoDaiaChan/nonebot-plugin-stable-diffusion-diao",
- "tags": [
- {
- "label": "AI绘图",
- "color": "#eaaf52"
- },
- {
- "label": "SD",
- "color": "#eaaf52"
- }
- ],
- "is_official": false,
- "type": null,
- "supported_adapters": null,
- "valid": false,
- "time": "2023-11-09T13:01:41.243448Z",
- "version": "0.4.7.3",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_al",
- "project_link": "nonebot-plugin-al",
- "name": "碧蓝航线攻略",
- "desc": "碧蓝航线井号榜等等攻略",
- "author": "Agnes4m",
- "homepage": "https://github.com/Agnes4m/nonebot_plugin_AL",
- "tags": [
- {
- "label": "bilibili",
- "color": "#ea52e5"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.3.10",
- "time": "2023-08-04T10:37:18.628816Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_escape_url",
- "project_link": "nonebot-plugin-escape-url",
- "name": "链接防夹",
- "desc": "自动转换发送消息中的URL,逃避URL检测",
- "author": "ssttkkl",
- "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-escape-url",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.qqguild"
- ],
- "valid": true,
- "version": "0.1.3.post1",
- "time": "2023-06-09T14:54:07.632074Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_twitter",
- "project_link": "nonebot-plugin-twitter",
- "name": "twitter 推特订阅",
- "desc": "订阅 twitter 推文",
- "author": "nek0us",
- "homepage": "https://github.com/nek0us/nonebot-plugin-twitter",
- "tags": [
- {
- "label": "twitter",
- "color": "#29a8dc"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.4",
- "time": "2024-01-20T11:49:43.579188Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_pcrjjc",
- "project_link": "nonebot-plugin-pcrjjc",
- "name": "pcrjjc",
- "desc": "公主连结(国服)排名监测工具",
- "author": "reine-ishyanami",
- "homepage": "https://github.com/reine-ishyanami/nonebot-plugin-pcrjjc",
- "tags": [
- {
- "label": "公主连结",
- "color": "#778a1e"
- },
- {
- "label": "pcrjjc",
- "color": "#778a1e"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.6.2",
- "time": "2024-01-05T03:15:36.782405Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_audiocraft",
- "project_link": "nonebot-plugin-audiocraft",
- "name": "AI作曲",
- "desc": "Nonebot框架下的AI作曲插件",
- "author": "Alpaca4610",
- "homepage": "https://github.com/Alpaca4610/nonebot-plugin-audiocraft",
- "tags": [
- {
- "label": "AI",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.0.5",
- "time": "2023-06-19T10:57:18.415643Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bili_push",
- "project_link": "nonebot-plugin-bili-push",
- "name": "bili_push",
- "desc": "推送b站动态",
- "author": "SuperGuGuGu",
- "homepage": "https://github.com/SuperGuGuGu/nonebot_plugin_bili_push",
- "tags": [
- {
- "label": "bilibili",
- "color": "#de5d92"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.1.20.1",
- "time": "2024-03-10T15:14:45.185185Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_warthunder_player_check",
- "project_link": "nonebot-plugin-warthunder-player-check",
- "name": "战雷查水表",
- "desc": "搜索warthunder社区查询玩家履历",
- "author": "0Neptune0",
- "homepage": "https://github.com/0Neptune0/nonebot-plugin-warthunder-player-check",
- "tags": [
- {
- "label": "Wathunder",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "version": "0.1.3",
- "time": "2023-09-16T08:15:36.199644Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_follow_withdraw",
- "project_link": "nonebot-plugin-follow-withdraw",
- "name": "follow_withdraw",
- "desc": "当命令消息被撤回时,Bot跟随撤回命令结果",
- "author": "CMHopeSunshine",
- "homepage": "https://github.com/CMHopeSunshine/nonebot-plugin-follow-withdraw",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qqguild"
- ],
- "valid": true,
- "version": "0.2.0",
- "time": "2023-06-19T14:34:18.210942Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_error_alert",
- "project_link": "nonebot-plugin-error-alert",
- "name": "错误告警",
- "desc": "当Bot发生运行错误时发送消息提醒",
- "author": "ssttkkl",
- "homepage": "https://github.com/bot-ssttkkl/nonebot-plugin-error-alert",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qqguild",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.2.0",
- "time": "2023-09-10T15:16:08.235679Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ocgbot_v2",
- "project_link": "nonebot-plugin-ocgbot-v2",
- "name": "游戏王小蓝卡查",
- "desc": "提供游戏王相关服务",
- "author": "fireinsect",
- "homepage": "https://github.com/fireinsect/nonebot-plugin-ocgbot-v2/",
- "tags": [
- {
- "label": "游戏王",
- "color": "#2ecbed"
- },
- {
- "label": "ygo",
- "color": "#f77117"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "version": "0.2.9.4",
- "time": "2024-03-18T07:02:34.851618Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_helltide",
- "project_link": "nonebot-plugin-helltide",
- "name": "Diablo4地狱狂潮boss提醒小助手",
- "desc": "支持订阅,在D4继续上班",
- "author": "QBkira",
- "homepage": "https://github.com/QBkira/nonebot-plugin-helltide",
- "tags": [
- {
- "label": "helltide",
- "color": "#ff0000"
- },
- {
- "label": "diablo4",
- "color": "#ff3300"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.7",
- "time": "2023-06-25T13:19:55.857199Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_userinfo",
- "project_link": "nonebot-plugin-userinfo",
- "name": "用户信息",
- "desc": "多平台的用户信息获取插件",
- "author": "MeetWq",
- "homepage": "https://github.com/noneplugin/nonebot-plugin-userinfo",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.2.3",
- "time": "2024-03-19T10:39:54.600626Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_poke",
- "project_link": "nonebot-plugin-poke",
- "name": "戳一戳事件",
- "desc": "自定义群聊戳一戳事件",
- "author": "Agnes4m",
- "homepage": "https://github.com/Agnes4m/nonebot_plugin_poke",
- "tags": [
- {
- "label": "v11",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.2",
- "time": "2023-08-02T08:32:28.462790Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_friends",
- "project_link": "nonebot-plugin-friends",
- "name": "远程同意好友",
- "desc": "自定义远程同意好友和群聊申请",
- "author": "Agnes4m",
- "homepage": "https://github.com/Agnes4m/nonebot_plugin_friends",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.2",
- "time": "2023-08-09T15:10:30.495458Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_update",
- "project_link": "nonebot-plugin-update",
- "name": "nonebot-plugin-update",
- "desc": "用于检测 Nonebot 插件更新的 Nonebot 插件",
- "author": "djkcyl",
- "homepage": "https://github.com/Aunly/nonebot-plugin-update",
- "tags": [
- {
- "label": "Nonebot",
- "color": "#ea5252"
- },
- {
- "label": "tool",
- "color": "#527dea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.3",
- "time": "2023-07-05T13:27:09.922237Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_cp_broadcast",
- "project_link": "nonebot-plugin-cp-broadcast",
- "name": "算法竞赛比赛查询",
- "desc": "可以查询牛客、atcoder、codeforces平台的今天和近几天的比赛信息",
- "author": "HuParry",
- "homepage": "https://github.com/HuParry/nonebot-plugin-cp-broadcast",
- "tags": [
- {
- "label": "算法竞赛",
- "color": "#ea5252"
- },
- {
- "label": "比赛播报",
- "color": "#55ea52"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "version": "2.2.0",
- "time": "2024-03-06T07:13:17.243452Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_cfassistant",
- "project_link": "nonebot-plugin-cfassistant",
- "name": "nonebot-plugin-cfassistant",
- "desc": "一个支持CF(codeforces)平台查询比赛/比赛提醒/监测分数变化的nonebot机器人插件",
- "author": "coyude",
- "homepage": "https://github.com/coyude/nonebot-plugin-cfassistant",
- "tags": [
- {
- "label": "ACM",
- "color": "#52eacf"
- },
- {
- "label": "Codeforces",
- "color": "#52eacf"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.4",
- "time": "2023-07-13T09:19:06.972726Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_splatoon3_schedule",
- "project_link": "nonebot-plugin-splatoon3-schedule",
- "name": "splatoon3游戏日程查询",
- "desc": "一个基于nonebot2框架的splatoon3游戏日程查询插件",
- "author": "Cypas",
- "homepage": "https://github.com/Cypas/splatoon3-schedule",
- "tags": [
- {
- "label": "splatoon3",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "1.7.0",
- "time": "2024-03-02T05:39:39.974015Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_capoo",
- "project_link": "nonebot-plugin-capoo",
- "name": "猫猫虫咖波图片发送",
- "desc": "发送capoo指令后bot会随机发出一张capoo的可爱表情包",
- "author": "HuParry",
- "homepage": "https://github.com/HuParry/nonebot-plugin-capoo",
- "tags": [
- {
- "label": "猫猫虫咖波",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.5",
- "time": "2024-01-24T11:01:08.207028Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_eventexpiry",
- "project_link": "nonebot-plugin-eventexpiry",
- "name": "过期事件过滤器",
- "desc": "自动过滤过期事件",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-eventexpiry",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12"
- ],
- "valid": true,
- "version": "0.1.1",
- "time": "2023-07-07T18:26:34.752138Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_nobahpicture",
- "project_link": "nonebot-plugin-nobahpicture",
- "name": "nonebot-plugin-nobahpicture",
- "desc": "获取碧蓝档案涩图",
- "author": "Lptr-byte",
- "homepage": "https://github.com/Lptr-byte/nonebot-plugin-nobahpicture",
- "tags": [
- {
- "label": "碧蓝档案",
- "color": "#00defe"
- },
- {
- "label": "蔚蓝档案",
- "color": "#00defe"
- },
- {
- "label": "涩图",
- "color": "#00defe"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.0.2",
- "time": "2023-07-10T06:52:29.857291Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_blocker",
- "project_link": "nonebot-plugin-blocker",
- "name": "Blocker",
- "desc": "分群配置关闭Bot插件",
- "author": "MerCuJerry",
- "homepage": "https://github.com/MerCuJerry/nonebot-plugin-blocker",
- "tags": [
- {
- "label": "Blocker",
- "color": "#39c5bb"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.4.5",
- "time": "2024-02-29T08:31:01.720829Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_picture_api",
- "project_link": "nonebot-plugin-picture-api",
- "name": "nonebot-plugin-picture-api",
- "desc": "一款可以自由增删图片指令和api的插件",
- "author": "Q1351998764",
- "homepage": "https://github.com/Q1351998764/nonebot-plugin-picture-api",
- "tags": [
- {
- "label": "图片api",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.5",
- "time": "2023-09-19T15:19:49.310145Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_wenan",
- "project_link": "nonebot-plugin-wenan",
- "name": "nonebot-plugin-wenan",
- "desc": "一款可以自由增删文案指令和api的插件",
- "author": "Q1351998764",
- "homepage": "https://github.com/Q1351998764/nonebot-plugin-wenan",
- "tags": [
- {
- "label": "文案api",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.0",
- "time": "2023-07-11T12:27:12.020208Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_pjsk",
- "project_link": "nonebot-plugin-pjsk",
- "name": "Sekai Stickers",
- "desc": "基于 NoneBot2 的 Project Sekai 表情包制作插件",
- "author": "Agnes4m",
- "homepage": "https://github.com/Agnes4m/nonebot_plugin_pjsk",
- "tags": [
- {
- "label": "pjsk",
- "color": "#e852eb"
- },
- {
- "label": "啤酒烧烤",
- "color": "#e852eb"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.4.0.post1",
- "time": "2024-03-10T10:24:15.027602Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mongodb",
- "project_link": "nonebot-plugin-mongodb",
- "name": "MongoDB",
- "desc": "基于 MongoDB ODM 的数据库管理插件",
- "author": "Well2333",
- "homepage": "https://github.com/Well2333/nonebot-plugin-mongodb",
- "tags": [
- {
- "label": "mongodb",
- "color": "#30a340"
- },
- {
- "label": "beanie",
- "color": "#ff0a0a"
- }
- ],
- "is_official": false,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.0",
- "time": "2023-07-14T10:32:08.006009Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_pokesomeone",
- "project_link": "nonebot-plugin-pokesomeone",
- "name": "指定戳一戳",
- "desc": "指定戳某人若干次",
- "author": "canxin121",
- "homepage": "https://github.com/canxin121/nonebot_plugin_pokesomeone",
- "tags": [
- {
- "label": "戳一戳",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.1",
- "time": "2023-07-18T16:43:32.796199Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_dall-e",
- "project_link": "nonebot-plugin-dall-e",
- "name": "DALL-E绘图",
- "desc": "使用DALL·E绘图",
- "author": "Rockytkg",
- "homepage": "https://github.com/Rockytkg/nonebot_plugin_dall-e",
- "tags": [
- {
- "label": "DALL-E",
- "color": "#ea5252"
- },
- {
- "label": "AI画图",
- "color": "#52ea61"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "time": "2023-07-22T16:19:17.616772Z",
- "version": "0.6",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_tempfile",
- "project_link": "nonebot-plugin-tempfile",
- "name": "方寸狭间",
- "desc": "临时文件/IO 依赖注入支持",
- "author": "NCBM",
- "homepage": "https://github.com/NCBM/nonebot-plugin-tempfile",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.0",
- "time": "2023-07-21T08:40:50.274108Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_disconnect_notice",
- "project_link": "nonebot-plugin-disconnect-notice",
- "name": "bot断连通知",
- "desc": "bot断连时的通知插件,当前支持邮件通知",
- "author": "Cypas",
- "homepage": "https://github.com/Cypas/nonebot_plugin_disconnect_notice",
- "tags": [
- {
- "label": "掉线通知",
- "color": "#ea5252"
- },
- {
- "label": "邮件",
- "color": "#52eaa4"
- },
- {
- "label": "通知",
- "color": "#cbea52"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.5",
- "time": "2023-07-29T03:19:54.426011Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_BotMailNotice",
- "project_link": "nonebot-plugin-BotMailNotice",
- "name": "Bot上下线邮件通知",
- "desc": "Bot上下线发送邮件通知的插件",
- "author": "ZM25XC",
- "homepage": "https://github.com/ZM25XC/BotMailNotice",
- "tags": [
- {
- "label": "Mail",
- "color": "#52e5ea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.0.3",
- "time": "2023-07-24T23:30:29.395759Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_theworld",
- "project_link": "nonebot-plugin-theworld",
- "name": "The World",
- "desc": "「ザ・ワールド」ッ! 時よ止まれ!",
- "author": "A-kirami",
- "homepage": "https://github.com/A-kirami/nonebot-plugin-theworld",
- "tags": [
- {
- "label": "JOJO",
- "color": "#75147c"
- },
- {
- "label": "DIO",
- "color": "#f9d849"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.1",
- "time": "2023-07-25T05:07:38.147930Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_nonememe",
- "project_link": "nonebot-plugin-nonememe",
- "name": "NoneMeme",
- "desc": "NoneBot 群大佬的日常",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-nonememe",
- "tags": [
- {
- "label": "NoneMeme",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.3.0",
- "time": "2024-03-10T08:41:05.982627Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_aujob",
- "project_link": "nonebot-plugin-aujob",
- "name": "Among US中的TOH模组职业介绍",
- "desc": "查询TOH模组里职业的玩法描述",
- "author": "qwqZYLqwq",
- "homepage": "https://github.com/qwqZYLqwq/nonebot-plugin-aujob",
- "tags": [
- {
- "label": "among us",
- "color": "#48d5bf"
- },
- {
- "label": "TOH",
- "color": "#05c4f2"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "1.1.514",
- "time": "2023-07-30T04:28:32.184908Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bind",
- "project_link": "nonebot-plugin-bind",
- "name": "跨平台账户绑定",
- "desc": "nonebot多适配器通用的跨平台账户绑定插件",
- "author": "canxin121",
- "homepage": "https://github.com/canxin121/nonebot_plugin_bind",
- "tags": [
- {
- "label": "跨平台",
- "color": "#5289ea"
- },
- {
- "label": "账户绑定",
- "color": "#6eb428"
- }
- ],
- "is_official": false,
- "type": "library",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.telegram",
- "nonebot.adapters.villa"
- ],
- "valid": false,
- "version": "0.2.2",
- "time": "2023-10-12T14:21:47.024420Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_savepic",
- "project_link": "nonebot-plugin-savepic",
- "name": "Savepic",
- "desc": "表情包保存",
- "author": "Yan-Zero",
- "homepage": "https://github.com/Yan-Zero/nonebot-plugin-savepic",
- "tags": [
- {
- "label": "表情包",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "time": "2023-08-03T04:30:17.668544Z",
- "version": "0.2.0",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_lostark_wandering_trader",
- "project_link": "nonebot-plugin-lostark-wandering-trader",
- "name": "命运方舟流浪商人卡牌刷新提示",
- "desc": "国服命运方舟流浪商人稀有史诗传说卡牌刷新提示",
- "author": "EmiyaGm",
- "homepage": "https://github.com/EmiyaGm/nonebot-plugin-lostark-wandering-trader",
- "tags": [
- {
- "label": "命运方舟",
- "color": "#5289ea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.2",
- "time": "2023-09-13T07:03:06.585759Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_csornament",
- "project_link": "nonebot-plugin-csornament",
- "name": "CSGO饰品查询机器人",
- "desc": "一款模拟查找饰品价格的机器人",
- "author": "Sydrr0",
- "homepage": "https://github.com/Sydrr0/nonebot-plugin-csornament",
- "tags": [
- {
- "label": "CS:GO",
- "color": "#047b97"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.0",
- "time": "2023-08-20T09:19:00.439404Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_kanonbot",
- "project_link": "nonebot-plugin-kanonbot",
- "name": "KanonBot",
- "desc": "KanonBot for Nonebot2",
- "author": "SuperGuGuGu",
- "homepage": "https://github.com/SuperGuGuGu/nonebot_plugin_kanonbot",
- "tags": [
- {
- "label": "KanonBot",
- "color": "#44ddff"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.qq"
- ],
- "valid": true,
- "version": "0.3.2",
- "time": "2024-01-10T12:59:58.241358Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mcversion",
- "project_link": "nonebot-plugin-mcversion",
- "name": "MC版本更新检测",
- "desc": "一个用于检测MC最新版本的插件",
- "author": "CN171-1",
- "homepage": "https://github.com/CN171-1/nonebot_plugin_mcversion",
- "tags": [
- {
- "label": "版本",
- "color": "#ea5252"
- },
- {
- "label": "MC",
- "color": "#52e7ea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.3.0",
- "time": "2023-09-03T09:16:33.881303Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_muteme",
- "project_link": "nonebot-plugin-muteme",
- "name": "Muteme(我禁我自己)",
- "desc": "高仿@能干辉的muteme,我禁我自己",
- "author": "XTxiaoting14332",
- "homepage": "https://github.com/XTxiaoting14332/nonebot-plugin-muteme",
- "tags": [
- {
- "label": "禁言",
- "color": "#e45b8d"
- },
- {
- "label": "muteme",
- "color": "#5bc2e4"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "time": "2023-08-21T02:01:58.764932Z",
- "version": "0.0.5",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_jx3",
- "project_link": "nonebot-plugin-jx3",
- "name": "剑网三查询和推送",
- "desc": "是一个使用 NoneBot 框架编写的插件,提供多种剑网三功能如日常查询,预测,金价查询,鲜花,公告,沙盘,jjc,黑市,骚话,奇遇,招募以及多种消息推送功能。",
- "author": "fuyang0811",
- "homepage": "https://github.com/fuyang0811/nonebot-plugin-jx3",
- "tags": [
- {
- "label": "剑网三",
- "color": "#ea5252"
- },
- {
- "label": "jx3",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.7",
- "time": "2023-09-04T17:21:11.860171Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_xinghuo_api",
- "project_link": "nonebot-plugin-xinghuo-api",
- "name": "科大讯飞星火大模型聊天",
- "desc": "Nonebot框架下的科大讯飞星火大模型聊天插件,已适配V2.0版API",
- "author": "Alpaca4610",
- "homepage": "https://github.com/Alpaca4610/nonebot-plugin-xinghuo-api",
- "tags": [
- {
- "label": "AI",
- "color": "#ea5252"
- },
- {
- "label": "Chat",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "2.2.0",
- "time": "2024-01-31T04:22:26.549372Z",
- "skip_test": false
- },
- {
- "module_name": "dicergirl",
- "project_link": "dicergirl",
- "name": "DicerGirl",
- "desc": "新一代跨平台开源 TRPG 骰娘框架",
- "author": "fu050409",
- "homepage": "https://gitee.com/unvisitor/dicer",
- "tags": [
- {
- "label": "跑团",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "3.5.1",
- "time": "2023-11-22T03:42:16.918080Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_uvdiviner",
- "project_link": "nonebot-plugin-uvdiviner",
- "name": "周易蓍草占卜",
- "desc": "基于古蓍草占卜的算法, 简单的使用`.divine`指令.",
- "author": "fu050409",
- "homepage": "https://gitee.com/unvisitor/nonebot-plugin-uvdiviner",
- "tags": [
- {
- "label": "占卜",
- "color": "#440e0e"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": false,
- "version": "2.2.11",
- "time": "2023-10-12T06:29:12.854171Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_push",
- "project_link": "nonebot-plugin-push",
- "name": "消息推送插件",
- "desc": "通过邮件、Feishu Webhook 等方式推送消息",
- "author": "mobyw",
- "homepage": "https://github.com/mobyw/nonebot-plugin-push",
- "tags": [
- {
- "label": "邮件",
- "color": "#91c0bd"
- },
- {
- "label": "飞书",
- "color": "#7aaccc"
- },
- {
- "label": "推送",
- "color": "#9e97c4"
- }
- ],
- "is_official": false,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.0",
- "time": "2023-08-15T07:00:53.896995Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_sudo",
- "project_link": "nonebot-plugin-sudo",
- "name": "SUDO",
- "desc": "以指定用户身份执行命令",
- "author": "This-is-XiaoDeng",
- "homepage": "https://github.com/This-is-XiaoDeng/nonebot-plugin-sudo",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.0.6",
- "time": "2023-09-08T14:15:08.370605Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_arxivRSS",
- "project_link": "nonebot-plugin-arxivRSS",
- "name": "arxiv订阅",
- "desc": "订阅arxiv指定领域每天更新的论文",
- "author": "LuckySJTU",
- "homepage": "https://github.com/LuckySJTU/nonebot-plugin-arxivRSS/",
- "tags": [
- {
- "label": "arxiv",
- "color": "#f30f0f"
- },
- {
- "label": "RSS",
- "color": "#70a7d8"
- },
- {
- "label": "论文",
- "color": "#f541dc"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.0",
- "time": "2023-10-13T08:32:19.030042Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_anime_trace",
- "project_link": "nonebot-plugin-anime-trace",
- "name": "识别动漫gal角色",
- "desc": "通过ai.animedb.cn的api识别动漫、galgame角色",
- "author": "tomorinao-www",
- "homepage": "https://github.com/tomorinao-www/nonebot-plugin-anime-trace",
- "tags": [
- {
- "label": "AI",
- "color": "#f541dc"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.5",
- "time": "2024-03-16T11:04:32.039016Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_send_message",
- "project_link": "nonebot-plugin-send-message",
- "name": "双向聊天插件",
- "desc": "一个支持双向聊天的传话插件,可用于临时聊天而不想加好友场景",
- "author": "bingqiu456",
- "homepage": "https://github.com/bingqiu456/nonebot_plugin_send_message",
- "tags": [
- {
- "label": "传话",
- "color": "#52ea75"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "3.2",
- "time": "2023-08-22T12:44:22.314961Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_requests",
- "project_link": "nonebot-plugin-requests",
- "name": "Nonebot Requests",
- "desc": "封装 ForwardDriver 实现 HttpClient 功能",
- "author": "Ailitonia",
- "homepage": "https://github.com/Ailitonia/nonebot-plugin-requests",
- "tags": [
- {
- "label": "requests",
- "color": "#80bcc2"
- }
- ],
- "is_official": false,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.3",
- "time": "2023-09-25T17:48:14.809234Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_shutup",
- "project_link": "nonebot-plugin-shutup",
- "name": "雪豹闭嘴",
- "desc": "基于 NoneBot2 的 插件,用于机器人当前会话闭嘴,支持全适配器",
- "author": "Agnes4m",
- "homepage": "https://github.com/Agnes4m/nonebot_pluigin_shutup",
- "tags": [
- {
- "label": "阻断",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.0.3",
- "time": "2023-08-28T06:30:44.585765Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_simple_httpcat",
- "project_link": "nonebot-plugin-simple-httpcat",
- "name": "httpcat-状态猫😺",
- "desc": "简单粗暴的httpcat插件,参考了zjkwdy大佬的weather_lite插件",
- "author": "XTxiaoting14332",
- "homepage": "https://github.com/XTxiaoting14332/nonebot-plugin-simple-httpcat",
- "tags": [
- {
- "label": "httpcat",
- "color": "#5dbfc8"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.0.1",
- "time": "2023-08-27T04:32:21.171303Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_qrcode2",
- "project_link": "nonebot-plugin-qrcode2",
- "name": "二维码",
- "desc": "通过pyzbar解析二维码",
- "author": "tomorinao-www",
- "homepage": "https://github.com/tomorinao-www/nonebot-plugin-qrcode2",
- "tags": [
- {
- "label": "qrcode",
- "color": "#f541dc"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.2",
- "time": "2024-03-16T10:40:56.486675Z",
- "skip_test": true
- },
- {
- "module_name": "nonebot_plugin_fakemsg",
- "project_link": "nonebot-plugin-fakemsg",
- "name": "消息伪造",
- "desc": "伪造消息",
- "author": "Cvandia",
- "homepage": "https://github.com/Cvandia/nonebot-plugin-fakemsg",
- "tags": [
- {
- "label": "合并转发",
- "color": "#1ae32c"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.5",
- "time": "2024-03-13T05:05:31.741432Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_alchelper",
- "project_link": "nonebot-plugin-alchelper",
- "name": "Alconna 帮助工具",
- "desc": "基于 nonebot-plugin-alconna,给出所有命令帮助以及统计",
- "author": "RF-Tar-Railt",
- "homepage": "https://github.com/RF-Tar-Railt/nonebot-plugin-alchelper",
- "tags": [
- {
- "label": "Alconna",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.5.0",
- "time": "2024-03-17T08:36:12.645103Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_souti",
- "project_link": "nonebot-plugin-souti",
- "name": "nonebot-plugin-souti",
- "desc": "使用百度不挂科题库, 可以实现文字搜题功能",
- "author": "xiaoWangSec",
- "homepage": "https://github.com/xiaoWangSec/nonebot-plugin-souti",
- "tags": [
- {
- "label": "搜题",
- "color": "#49e3d5"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "1.0.1",
- "time": "2023-09-01T10:26:54.019224Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_helper_plus",
- "project_link": "nonebot-plugin-helper-plus",
- "name": "helper_plus",
- "desc": "带有指令调用控制的高级helper",
- "author": "fR0Z863xF",
- "homepage": "https://github.com/fR0Z863xF/nonebot-plugin-helper-plus",
- "tags": [
- {
- "label": "帮助",
- "color": "#eae152"
- },
- {
- "label": "命令控制",
- "color": "#52ea5c"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.5",
- "time": "2023-09-02T10:51:28.827248Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_wearskirt",
- "project_link": "nonebot-plugin-wearskirt",
- "name": "女装 !",
- "desc": "Nonebot 赛博女装插件",
- "author": "Lfhsheng",
- "homepage": "https://github.com/Lfhsheng/nonebot-plugin-wearskirt",
- "tags": [
- {
- "label": "女装",
- "color": "#ffc0cb"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": false,
- "version": "0.1.5",
- "time": "2023-09-14T11:46:33.966622Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_skland_arksign",
- "project_link": "nonebot-plugin-skland-arksign",
- "name": "森空岛明日方舟签到器",
- "desc": "私聊机器人以获得自动明日方舟森空岛签到服务",
- "author": "GuGuMur",
- "homepage": "https://github.com/GuGuMur/nonebot-plugin-skland-arksign",
- "tags": [
- {
- "label": "森空岛",
- "color": "#c8eb21"
- },
- {
- "label": "明日方舟",
- "color": "#111111"
- },
- {
- "label": "签到",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.7.0",
- "time": "2024-03-10T01:03:45.969491Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_group_whitelist",
- "project_link": "nonebot-plugin-group-whitelist",
- "name": "nonebot_plugin_group_whitelist",
- "desc": "简易群聊白名单",
- "author": "Rikka-desu",
- "homepage": "https://github.com/Rikka-desu/nonebot_plugin_group_whitelist",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.9.2",
- "time": "2023-09-03T14:45:25.318037Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ernie",
- "project_link": "nonebot-plugin-ernie",
- "name": "文心一言",
- "desc": "Nonebot框架下的文心一言聊天插件",
- "author": "Noctulus",
- "homepage": "https://github.com/Noctulus/nonebot-plugin-ernie",
- "tags": [
- {
- "label": "文心一言",
- "color": "#2e317c"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.4",
- "time": "2023-09-06T15:34:07.940810Z",
- "skip_test": false
- },
- {
- "module_name": "TeenStudy",
- "project_link": "teenstudy",
- "name": "青年大学习提交",
- "desc": "一个可以自动提交多地区青年大学习的插件",
- "author": "TeenStudyFlow",
- "homepage": "https://github.com/YouthLearning/TeenStudy",
- "tags": [
- {
- "label": "青年大学习",
- "color": "#7aea52"
- },
- {
- "label": "Web UI",
- "color": "#52eaea"
- },
- {
- "label": "多地区",
- "color": "#dfea52"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.6",
- "time": "2023-12-03T07:01:14.234788Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_video_api",
- "project_link": "nonebot-plugin-video-api",
- "name": "nonebot-plugin-video-api",
- "desc": "一款可以自由增删视频指令和api的插件",
- "author": "Q1351998764",
- "homepage": "https://github.com/Q1351998764/nonebot-plugin-video-api",
- "tags": [
- {
- "label": "视频api",
- "color": "#14d8de"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.4",
- "time": "2023-09-20T12:28:56.131803Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ottohzys",
- "project_link": "nonebot-plugin-ottohzys",
- "name": "大电老师活字印刷",
- "desc": "大家好啊,今天来点大家想看的东西",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-ottohzys",
- "tags": [
- {
- "label": "otto",
- "color": "#00a6ed"
- },
- {
- "label": "电棍",
- "color": "#00a6ed"
- },
- {
- "label": "活字印刷",
- "color": "#00a6ed"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "version": "0.2.0",
- "time": "2024-03-10T07:21:27.575594Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_ability",
- "project_link": "nonebot-plugin-ability",
- "name": "聚能环",
- "desc": "NoneBot 外置电池",
- "author": "KomoriDev",
- "homepage": "https://github.com/KomoriDev/nonebot-plugin-ability",
- "tags": [
- {
- "label": "🔋",
- "color": "#8bff00"
- }
- ],
- "is_official": false,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.0",
- "time": "2023-10-02T06:03:55.280585Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_agent",
- "project_link": "nonebot-plugin-agent",
- "name": "Nonebot Agent",
- "desc": "适配你的插件,让 LLM 来为你处理用户调用",
- "author": "Dobiichi-Origami",
- "homepage": "https://github.com/Dobiichi-Origami/nonebot-plugin-agent#nonebot-plugin-agent",
- "tags": [
- {
- "label": "agent",
- "color": "#99ccff"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.0.1",
- "time": "2023-10-03T10:24:53.288475Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_blockwords",
- "project_link": "nonebot-plugin-blockwords",
- "name": "屏蔽词插件",
- "desc": "接收的消息或机器人发送的消息进行屏蔽词检查",
- "author": "MelodyKnit",
- "homepage": "https://github.com/MelodyKnit/nonebot-plugin-blockwords",
- "tags": [
- {
- "label": "word",
- "color": "#99ccff"
- },
- {
- "label": "屏蔽词",
- "color": "#ffcc99"
- },
- {
- "label": "blockwords",
- "color": "#ffcc99"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.1",
- "time": "2023-11-17T12:30:39.467239Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_matchreminder",
- "project_link": "nonebot-plugin-matchreminder",
- "name": "算法比赛查询和今日比赛自动提醒",
- "desc": "可以查询牛客、atcoder、codeforces平台比赛信息并在今日比赛前进行提醒(请在.env.prod添加或修改超级用户,以免出现意料之外的错误)",
- "author": "zhuhiki",
- "homepage": "https://github.com/zhuhiki/nonebot_plugin_matchreminder",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.0.4",
- "time": "2023-10-27T03:22:47.419866Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_eop_ai",
- "project_link": "nonebot-plugin-eop-ai",
- "name": "talk with eop ai",
- "desc": "Nonebot2 一款调用eop api的AI聊天插件",
- "author": "nikissXI",
- "homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_eop_ai",
- "tags": [
- {
- "label": "POE",
- "color": "#bf40bf"
- },
- {
- "label": "GPT",
- "color": "#aaff00"
- },
- {
- "label": "AI",
- "color": "#fa5f55"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.6",
- "time": "2023-11-21T11:31:18.190458Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_playercheck",
- "project_link": "nonebot-plugin-playercheck",
- "name": "nonebot-plugin-playercheck",
- "desc": "一个查询群友音游成分的插件",
- "author": "Ohdmire",
- "homepage": "https://github.com/ohdmire/nonebot-plugin-playercheck",
- "tags": [
- {
- "label": "音游",
- "color": "#ec623c"
- },
- {
- "label": "成分",
- "color": "#ef5ec4"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.5.9",
- "time": "2023-10-09T12:40:24.966289Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_op_finder",
- "project_link": "nonebot-plugin-op-finder",
- "name": "op-finder",
- "desc": "显示当前正在玩原神的人",
- "author": "ninthseason",
- "homepage": "https://github.com/ninthseason/nonebot-plugin-op-finder",
- "tags": [
- {
- "label": "原神",
- "color": "#00a0ea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.kaiheila"
- ],
- "valid": true,
- "version": "1.0.0",
- "time": "2023-10-06T16:40:22.375740Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_morep_finder",
- "project_link": "nonebot-plugin-morep-finder",
- "name": "morep-finder",
- "desc": "显示当前正在玩特定游戏的人",
- "author": "ninthseason",
- "homepage": "https://github.com/ninthseason/nonebot-plugin-morep-finder",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.kaiheila"
- ],
- "valid": true,
- "version": "1.0.0",
- "time": "2023-10-08T15:37:06.959012Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot-plugin-yesman",
- "project_link": "nonebot-plugin-yesman",
- "name": "肯定机",
- "desc": "你的发言,值得被肯定",
- "author": "EuDs63",
- "homepage": "https://github.com/EuDs63/nonebot-plugin-yesman",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.4.0",
- "time": "2023-11-25T13:58:22.088706Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_fgoavatarguess",
- "project_link": "nonebot-plugin-fgoavatarguess",
- "name": "FGO猜从者",
- "desc": "FGO猜从者插件,基于原HoshinoBot猜从者模块修改,感谢原作者。",
- "author": "influ3nza",
- "homepage": "https://github.com/influ3nza/nonebot-plugin-fgoavatarguess",
- "tags": [
- {
- "label": "FGO",
- "color": "#66cccc"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.1",
- "time": "2023-10-12T06:44:39.253781Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_vrchat",
- "project_link": "nonebot-plugin-vrchat",
- "name": "VRChat查询",
- "desc": "使用第三方 API SDK 实现 VRChat 相关操作,例如查询好友状态",
- "author": "Agnes4m",
- "homepage": "https://github.com/Agnes4m/nonebot_plugin_vrchat",
- "tags": [
- {
- "label": "VRChat",
- "color": "#7aea53"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.red",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.1.3",
- "time": "2023-12-19T01:13:10.989041Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_batitle",
- "project_link": "nonebot-plugin-batitle",
- "name": "BlueArchive Title Generator",
- "desc": "碧蓝档案式标题生成器",
- "author": "MerCuJerry",
- "homepage": "https://github.com/MerCuJerry/nonebot-plugin-batitle",
- "tags": [
- {
- "label": "碧蓝档案",
- "color": "#00d7fb"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.red",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.1.6",
- "time": "2024-02-07T09:50:19.398829Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_maimaidx",
- "project_link": "nonebot-plugin-maimaidx",
- "name": "nonebot-plugin-maimaidx",
- "desc": "移植自 mai-bot 开源项目,基于 nonebot2 的街机音游 舞萌DX 的查询插件",
- "author": "Yuri-YuzuChaN",
- "homepage": "https://github.com/Yuri-YuzuChaN/nonebot-plugin-maimaidx",
- "tags": [
- {
- "label": "maimai",
- "color": "#cea6ff"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.0.14",
- "time": "2024-03-15T08:44:26.693285Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_getbapics",
- "project_link": "nonebot-plugin-getbapics",
- "name": "nonebot-plugin-getbapics",
- "desc": "Get BA Pictures",
- "author": "hanasa2023",
- "homepage": "https://github.com/hanasa2023/nonebot-plugin-getbapics/blob/master/README.md",
- "tags": [
- {
- "label": "碧蓝档案",
- "color": "#00defe"
- },
- {
- "label": "BA",
- "color": "#00defe"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.red"
- ],
- "valid": true,
- "version": "0.1.5",
- "time": "2023-10-15T13:52:55.930889Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_make_choice",
- "project_link": "nonebot-plugin-make-choice",
- "name": "选择困难症",
- "desc": "选择困难症?Bot帮你选!",
- "author": "SherkeyXD",
- "homepage": "https://github.com/SherkeyXD/nonebot-plugin-make-choice",
- "tags": [
- {
- "label": "choice",
- "color": "#77c5ff"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.0.4",
- "time": "2023-10-21T07:31:08.895871Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_scheduled_broadcast",
- "project_link": "nonebot-plugin-scheduled-broadcast",
- "name": "定时广播插件",
- "desc": "一款可配置的, 不依赖具体适配器的, 基于事件的定时广播插件.",
- "author": "T0nyX1ang",
- "homepage": "https://github.com/T0nyX1ang/nonebot-plugin-scheduled-broadcast",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.5",
- "time": "2023-11-10T15:14:18.797261Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_any",
- "project_link": "nonebot-plugin-any",
- "name": "Nonebot2 Any 多平台服务",
- "desc": "Nonebot2 多平台统一事件与消息统一构造发送",
- "author": "MelodyYuuka",
- "homepage": "https://github.com/MelodyYuuka/nonebot-plugin-any",
- "tags": [
- {
- "label": "跨平台",
- "color": "#36d399"
- },
- {
- "label": "统一",
- "color": "#fa5f55"
- },
- {
- "label": "工具库",
- "color": "#52eadd"
- }
- ],
- "is_official": false,
- "type": "library",
- "supported_adapters": [
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.2.0",
- "time": "2023-11-05T07:23:35.833914Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bertvits2",
- "project_link": "nonebot-plugin-bertvits2",
- "name": "nonebot-plugin-bertvits2",
- "desc": "bertvits2语音合成插件",
- "author": "jiangyuxiaoxiao",
- "homepage": "https://github.com/jiangyuxiaoxiao/nonebot-plugin-bertvits2",
- "tags": [
- {
- "label": "语音合成",
- "color": "#9bf6ff"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.3",
- "time": "2023-11-07T14:33:08.673555Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_wake_on_lan",
- "project_link": "nonebot-plugin-wake-on-lan",
- "name": "局域网唤醒",
- "desc": "通过发送魔术封包唤醒Bot所在局域网内的设备",
- "author": "tiehu",
- "homepage": "https://github.com/tiehu/nonebot-plugin-wol",
- "tags": [
- {
- "label": "局域网唤醒",
- "color": "#1e90ff"
- },
- {
- "label": "WOL",
- "color": "#4682b4"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.6",
- "time": "2024-03-12T18:08:54.274520Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bingimagecreator",
- "project_link": "nonebot-plugin-bingimagecreator",
- "name": "DALL-E 3绘图",
- "desc": "调用NewBing的DALL-E 3进行绘图",
- "author": "Alpaca4610",
- "homepage": "https://github.com/Alpaca4610/nonebot_plugin_BingImageCreator.git",
- "tags": [
- {
- "label": "AI",
- "color": "#ea5252"
- },
- {
- "label": "绘图",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "version": "0.1.5",
- "time": "2024-02-21T03:19:20.848438Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_user",
- "project_link": "nonebot-plugin-user",
- "name": "用户",
- "desc": "管理和绑定不同平台的用户",
- "author": "he0119",
- "homepage": "https://github.com/he0119/nonebot-plugin-user",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.2.0",
- "time": "2024-02-24T10:06:57.539672Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_shorturl",
- "project_link": "nonebot-plugin-shorturl",
- "name": "短链接服务支持",
- "desc": "为其他插件提供短链接转换服务",
- "author": "StarHeartHunt",
- "homepage": "https://github.com/StarHeartHunt/nonebot-plugin-shorturl",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.4.0",
- "time": "2024-02-29T12:09:58.388205Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_filehost",
- "project_link": "nonebot-plugin-filehost",
- "name": "文件托管支持",
- "desc": "提供跨机文件传输支持,通过 HTTP 服务托管文件",
- "author": "mnixry",
- "homepage": "https://github.com/nonebot/plugin-filehost",
- "tags": [],
- "is_official": true,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "1.1.1",
- "time": "2024-03-01T02:58:01.740199Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_smms",
- "project_link": "nonebot-plugin-smms",
- "name": "sm.ms图床",
- "desc": "sm.ms图床上传与管理",
- "author": "mobyw",
- "homepage": "https://github.com/mobyw/nonebot-plugin-smms",
- "tags": [],
- "is_official": false,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.0",
- "time": "2023-11-23T15:24:16.507383Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_nsfw",
- "project_link": "nonebot-plugin-nsfw",
- "name": "群聊 NSFW 图片检测",
- "desc": "群聊 NSFW 图片检测插件,带有撤回、警告、禁言等功能。使用 Safety Checker / NSFW Model",
- "author": "iyume",
- "homepage": "https://github.com/iyume/nonebot-plugin-nsfw",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.10",
- "time": "2023-12-18T17:59:20.124712Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_batarot",
- "project_link": "nonebot-plugin-batarot",
- "name": "碧蓝档案塔罗牌",
- "desc": "碧蓝档案塔罗牌,运势预测与魔法占卜🔮",
- "author": "Perseus037",
- "homepage": "https://github.com/Perseus037/nonebot_plugin_batarot",
- "tags": [
- {
- "label": "碧蓝档案",
- "color": "#15a0df"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.red",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.2.1.post1",
- "time": "2023-12-20T02:30:30.110021Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_cnrail",
- "project_link": "nonebot-plugin-cnrail",
- "name": "CNRail",
- "desc": "查询 12306 列车时刻表",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-cnrail",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.2.0",
- "time": "2024-03-10T10:16:46.885006Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_longtu",
- "project_link": "nonebot-plugin-longtu",
- "name": "随机龙图",
- "desc": "2024年是龙年...我都准备好了",
- "author": "Perseus037",
- "homepage": "https://github.com/Perseus037/nonebot_plugin_longtu",
- "tags": [
- {
- "label": "龙图",
- "color": "#e1122d"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.1.post1",
- "time": "2024-01-12T00:49:14.405162Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_riffusion",
- "project_link": "nonebot-plugin-riffusion",
- "name": "Riffusion",
- "desc": "你给歌词,AI 作曲",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-riffusion",
- "tags": [
- {
- "label": "Riffusion",
- "color": "#4b39cb"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.1",
- "time": "2024-03-10T06:43:23.017592Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_antimonkey",
- "project_link": "nonebot-plugin-antimonkey",
- "name": "AntiMonkey",
- "desc": "自动检测和撤回包含恶心吗喽的图片",
- "author": "phquathi",
- "homepage": "https://github.com/phquathi/nonebot_plugin_antimonkey",
- "tags": [
- {
- "label": "猴子",
- "color": "#ea5252"
- },
- {
- "label": "群管",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.0.2",
- "time": "2023-12-27T17:39:54.859337Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_waiter",
- "project_link": "nonebot-plugin-waiter",
- "name": "Waiter 插件",
- "desc": "提供一个 got-and-reject 会话控制的替代方案,可自由控制超时时间",
- "author": "RF-Tar-Railt",
- "homepage": "https://github.com/RF-Tar-Railt/nonebot-plugin-waiter",
- "tags": [
- {
- "label": "waiter",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "library",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.0",
- "time": "2024-01-28T12:16:34.304220Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_imagemaster",
- "project_link": "nonebot-plugin-imagemaster",
- "name": "nonebot-plugin-imagemaster",
- "desc": "提供多种图像处理功能的插件",
- "author": "phquathi",
- "homepage": "https://github.com/phquathi/nonebot_plugin_imagemaster",
- "tags": [
- {
- "label": "修图",
- "color": "#52d4ea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.0.6",
- "time": "2024-01-02T16:25:06.577543Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_nikke",
- "project_link": "nonebot-plugin-nikke",
- "name": "nonebot_plugin_nikke",
- "desc": "胜利女神:妮姬多功能插件",
- "author": "Perseus037",
- "homepage": "https://github.com/Perseus037/nonebot_plugin_nikke",
- "tags": [
- {
- "label": "nikke",
- "color": "#e111b7"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.0.post4",
- "time": "2023-12-28T11:31:15.735048Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mcpic",
- "project_link": "nonebot-plugin-mcpic",
- "name": "随机MC图",
- "desc": "随机从推特获取并发送MC建筑图片",
- "author": "wlm3201",
- "homepage": "https://github.com/wlm3201/nonebot-plugin-mcpic",
- "tags": [
- {
- "label": "Minecraft",
- "color": "#3cb371"
- },
- {
- "label": "MC",
- "color": "#3cb371"
- },
- {
- "label": "图片",
- "color": "#3cb371"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.1",
- "time": "2024-01-07T08:20:29.206420Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_pingti",
- "project_link": "nonebot-plugin-pingti",
- "name": "最佳平替",
- "desc": "用更低价的搜索词购物",
- "author": "lgc2333",
- "homepage": "https://github.com/lgc-NB2Dev/nonebot-plugin-pingti",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.1.4",
- "time": "2024-02-15T10:12:37.601223Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_wx4",
- "project_link": "nonebot-plugin-wx4",
- "name": "文心一言4适配",
- "desc": "文心一言4适配的连续对话",
- "author": "Pasumao",
- "homepage": "https://github.com/Pasumao/nonebot-plugin-wx4",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.3.1",
- "time": "2024-01-09T08:34:55.393316Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_mypower",
- "project_link": "nonebot-plugin-mypower",
- "name": "nonebot-plugin-mypower",
- "desc": "随机生成超能力",
- "author": "tianyisama",
- "homepage": "https://github.com/tianyisama/nonebot_plugin_mypower",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.5",
- "time": "2024-01-15T16:29:40.149453Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bard",
- "project_link": "nonebot-plugin-bard",
- "name": "谷歌Bard聊天",
- "desc": "Nonebot框架下的谷歌Bard聊天插件,支持联网搜索和图片识别",
- "author": "Alpaca4610",
- "homepage": "https://github.com/Alpaca4610/nonebot-plugin-bard",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "version": "0.3.3",
- "time": "2024-03-19T02:32:41.571851Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_nekoimage",
- "project_link": "nonebot-plugin-nekoimage",
- "name": "nonebot-plugin-nekoimage",
- "desc": "A nonebot plugin for integrating with [NekoImageGallery](https://github.com/hv0905/NekoImageGallery).",
- "author": "pk5ls20",
- "homepage": "https://github.com/pk5ls20/nonebot-plugin-nekoimage",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.qq"
- ],
- "valid": true,
- "version": "0.3.3",
- "time": "2024-01-15T01:44:34.682356Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_finallines",
- "project_link": "nonebot-plugin-finallines",
- "name": "最终台词",
- "desc": "来一句劲道的最终台词吧,支持多平台适配",
- "author": "Perseus037",
- "homepage": "https://github.com/Perseus037/nonebot_plugin_finallines",
- "tags": [
- {
- "label": "最终台词",
- "color": "#052199"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.red",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.1.1.post2",
- "time": "2024-01-14T10:05:17.058659Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_gemini",
- "project_link": "nonebot-plugin-gemini",
- "name": "nonebot-plugin-gemini",
- "desc": "Gemini AI 对话",
- "author": "zhaomaoniu",
- "homepage": "https://github.com/zhaomaoniu/nonebot-plugin-gemini",
- "tags": [
- {
- "label": "Gemini",
- "color": "#3e8ffb"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": false,
- "version": "0.3.0",
- "time": "2024-02-11T08:21:46.952771Z",
- "skip_test": false
- },
- {
- "module_name": "haruka_bot_red",
- "project_link": "haruka_bot_red",
- "name": "haruka_bot_red",
- "desc": "将B站UP主的动态和直播信息推送至QQ,适配red协议",
- "author": "boxie123",
- "homepage": "https://github.com/boxie123/HarukaBot-Red",
- "tags": [
- {
- "label": "bilibili",
- "color": "#c83f3f"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.red"
- ],
- "valid": true,
- "version": "0.1.7",
- "time": "2024-01-21T11:14:26.959398Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_enatfrp",
- "project_link": "nonebot-plugin-enatfrp",
- "name": "SakuraFrp",
- "desc": "SakuraFrp管理插件,natfrp.com。",
- "author": "eya46",
- "homepage": "https://github.com/eya46/nonebot_plugin_enatfrp",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": false,
- "version": "0.2.0",
- "time": "2024-03-09T06:14:37.754340Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_nezha",
- "project_link": "nonebot-plugin-nezha",
- "name": "哪吒监控插件",
- "desc": "哪吒监控插件,使用哪吒监控API。",
- "author": "eya46",
- "homepage": "https://github.com/eya46/nonebot_plugin_nezha",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": false,
- "version": "0.4.2",
- "time": "2024-03-10T07:31:54.957813Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_randpic",
- "project_link": "nonebot-plugin-randpic",
- "name": "随机发送图片",
- "desc": "发送自定义指令后bot会随机发出一张你所存储的图片",
- "author": "HuParry",
- "homepage": "https://github.com/HuParry/nonebot-plugin-randpic",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.3",
- "time": "2024-01-28T03:00:27.181559Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_BAdrawcard",
- "project_link": "nonebot-plugin-badrawcard",
- "name": "BA模拟抽卡",
- "desc": "模拟实现了碧蓝档案游戏的抽卡功能, 自动化了更新卡池、FES提高卡池概率",
- "author": "lengmianzz",
- "homepage": "https://github.com/lengmianzz/nonebot-plugin-BAdrawcard",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.2.3",
- "time": "2024-01-31T03:56:01.881602Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_gpt",
- "project_link": "nonebot-plugin-gpt",
- "name": "ChatGPT 聊天",
- "desc": "通过浏览器使用 ChatGPT,兼容 onebot v11 与 adapter-qq 适配器",
- "author": "nek0us",
- "homepage": "https://github.com/nek0us/nonebot-plugin-gpt",
- "tags": [
- {
- "label": "ChatGPT",
- "color": "#50ec9d"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.qq"
- ],
- "valid": false,
- "version": "0.0.10",
- "time": "2024-03-20T02:02:55.902116Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_easy_blacklist",
- "project_link": "nonebot-plugin-easy-blacklist",
- "name": "黑名单插件",
- "desc": "一个轻量级的黑名单插件,支持api接入全平台,内存占用优化中",
- "author": "bingqiu456",
- "homepage": "https://github.com/bingqiu456/nonebot-plugin-easy-blacklist",
- "tags": [],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "version": "1.5",
- "time": "2024-02-15T06:25:00.316113Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_reminder",
- "project_link": "nonebot-plugin-reminder",
- "name": "定时提醒",
- "desc": "主要用来提醒大家别忘记什么事情,可以看成定时提醒插件",
- "author": "velor2012",
- "homepage": "https://github.com/velor2012/nonebot_plugin_reminder",
- "tags": [
- {
- "label": "scheduler",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.3.1.post1",
- "time": "2024-02-20T13:09:13.542306Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_chikari_yinpa",
- "project_link": "nonebot-plugin-chikari-yinpa",
- "name": "Chikari_yinpa",
- "desc": "一个普通的银趴插件",
- "author": "mrqx0195",
- "homepage": "https://github.com/mrqx0195/nonebot_plugin_chikari_yinpa",
- "tags": [
- {
- "label": "yinpa",
- "color": "#ffff00"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "1.3.4",
- "time": "2024-03-17T10:07:16.276530Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_splatoon3_nso",
- "project_link": "nonebot-plugin-splatoon3-nso",
- "name": "splatoon3游戏nso查询",
- "desc": "一个基于nonebot2框架的splatoon3游戏nso数据查询插件",
- "author": "Cypas",
- "homepage": "https://github.com/Cypas/splatoon3-nso",
- "tags": [
- {
- "label": "splatoon3",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "1.3.0",
- "time": "2024-02-28T04:35:02.889426Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_bf1marneserverlist",
- "project_link": "nonebot-plugin-bf1marneserverlist",
- "name": "战地1-马恩私人服务器服务器查询",
- "desc": "Onebot 战地1 马恩私人服务器服务器查询插件",
- "author": "SAFEluren",
- "homepage": "https://github.com/SAFEluren/nonebot-plugin-bf1marneserverlist",
- "tags": [
- {
- "label": "server",
- "color": "#ea5252"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.23",
- "time": "2024-03-09T09:29:36.925598Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_kawaii_status",
- "project_link": "nonebot-plugin-kawaii-status",
- "name": "运行状态",
- "desc": "NoneBot2 服务器状态查看插件",
- "author": "KomoriDev",
- "homepage": "https://github.com/KomoriDev/nonebot-plugin-kawaii-status",
- "tags": [
- {
- "label": "简约",
- "color": "#54adff"
- },
- {
- "label": "可爱",
- "color": "#ffb3cc"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": false,
- "version": "0.1.3",
- "time": "2024-03-08T11:20:28.985839Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_vits_tts",
- "project_link": "nonebot-plugin-vits-tts",
- "name": "nonebot-plugin-vits-tts",
- "desc": "基于vits的tts语音合成",
- "author": "Redmomn",
- "homepage": "https://github.com/Redmomn/nonebot-plugin-vits-tts",
- "tags": [
- {
- "label": "VITS",
- "color": "#ea5252"
- },
- {
- "label": "TTS",
- "color": "#52dbea"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.6",
- "time": "2024-03-07T05:12:46.624809Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_chatglm_plus",
- "project_link": "nonebot-plugin-chatglm-plus",
- "name": "人性化的ChatGLM",
- "desc": "人性化的ChatGLM插件,支持预设和上下文",
- "author": "XTxiaoting14332",
- "homepage": "https://github.com/XTxiaoting14332/nonebot-plugin-chatglm-plus",
- "tags": [
- {
- "label": "ChatGLM",
- "color": "#73cccc"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.console",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.1.7",
- "time": "2024-03-10T05:32:29.222783Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_fishing",
- "project_link": "nonebot-plugin-fishing",
- "name": "赛博钓鱼",
- "desc": "你甚至可以电子钓鱼",
- "author": "C14H22O",
- "homepage": "https://github.com/C14H22O/nonebot-plugin-fishing",
- "tags": [
- {
- "label": "钓鱼",
- "color": "#87cefa"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": null,
- "valid": true,
- "version": "0.2.1",
- "time": "2024-03-09T13:57:57.644380Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_a2s_query",
- "project_link": "nonebot-plugin-a2s-query",
- "name": "a2s查询",
- "desc": "查询value服务器详情",
- "author": "NanakaNeko",
- "homepage": "https://github.com/NanakaNeko/nonebot-plugin-a2s-query",
- "tags": [
- {
- "label": "游戏服务器",
- "color": "#ea5252"
- },
- {
- "label": "value",
- "color": "#99ea52"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.7",
- "time": "2024-03-11T03:38:52.710058Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_dice_narrator",
- "project_link": "nonebot-plugin-dice-narrator",
- "name": "nonebot-plugin-dice-narrator",
- "desc": "一只可爱的 AI 掷骰姬,支持各种事件检定",
- "author": "KroMiose",
- "homepage": "https://github.com/KroMiose/nonebot_plugin_dice_narrator",
- "tags": [
- {
- "label": "GPT",
- "color": "#29b752"
- },
- {
- "label": "掷骰姬",
- "color": "#c84b9d"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": true,
- "version": "0.1.9",
- "time": "2024-03-14T02:27:12.730739Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_steam_info",
- "project_link": "nonebot-plugin-steam-info",
- "name": "Steam Info",
- "desc": "播报绑定的 Steam 好友状态",
- "author": "zhaomaoniu",
- "homepage": "https://github.com/zhaomaoniu/nonebot-plugin-steam-info",
- "tags": [
- {
- "label": "Steam",
- "color": "#14305e"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.bilibili",
- "nonebot.adapters.console",
- "nonebot.adapters.ding",
- "nonebot.adapters.discord",
- "nonebot.adapters.dodo",
- "nonebot.adapters.feishu",
- "nonebot.adapters.github",
- "nonebot.adapters.kaiheila",
- "nonebot.adapters.minecraft",
- "nonebot.adapters.mirai2",
- "nonebot.adapters.ntchat",
- "nonebot.adapters.onebot.v11",
- "nonebot.adapters.onebot.v12",
- "nonebot.adapters.qq",
- "nonebot.adapters.red",
- "nonebot.adapters.satori",
- "nonebot.adapters.telegram"
- ],
- "valid": true,
- "version": "0.1.1",
- "time": "2024-03-15T13:55:30.722873Z",
- "skip_test": false
- },
- {
- "module_name": "nonebot_plugin_orangejuice",
- "project_link": "nonebot-plugin-orangejuice",
- "name": "100orangejuice",
- "desc": "100orangejuice",
- "author": "GLDYM",
- "homepage": "https://github.com/FDCraft/nonebot-plugin-orangejuice",
- "tags": [
- {
- "label": "百橙",
- "color": "#ed6f00"
- },
- {
- "label": "100OJ",
- "color": "#ed6f00"
- }
- ],
- "is_official": false,
- "type": "application",
- "supported_adapters": [
- "nonebot.adapters.onebot.v11"
- ],
- "valid": false,
- "version": "0.5.0",
- "time": "2024-03-20T01:58:28.461963Z",
- "skip_test": false
- }
-]
\ No newline at end of file
diff --git a/src/utils/__init__.py b/src/utils/__init__.py
deleted file mode 100755
index d04ed75e..00000000
--- a/src/utils/__init__.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import sys
-
-import nonebot
-
-__NAME__ = "LiteyukiBot"
-__VERSION__ = "6.3.2" # 60201
-
-from src.utils.base.config import load_from_yaml, config
-from git import Repo
-
-major, minor, patch = map(int, __VERSION__.split("."))
-__VERSION_I__ = major * 10000 + minor * 100 + patch
-
-
-def init():
- """
- 初始化
- Returns:
-
- """
- # 检测python版本是否高于3.10
- if sys.version_info < (3, 10):
- nonebot.logger.error("Requires Python3.10+ to run, please upgrade your Python Environment.")
- exit(1)
-
- try:
- # 检测git仓库
- repo = Repo(".")
- except Exception as e:
- nonebot.logger.error(f"Failed to load git repository: {e}, please clone this project from GitHub instead of downloading the zip file.")
-
- # temp_data: TempConfig = common_db.where_one(TempConfig(), default=TempConfig())
- # temp_data.data["start_time"] = time.time()
- # common_db.save(temp_data)
-
- nonebot.logger.info(
- f"Run Liteyuki-NoneBot with Python{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro} "
- f"at {sys.executable}"
- )
- nonebot.logger.info(f"{__NAME__} {__VERSION__}({__VERSION_I__}) is running")
diff --git a/src/utils/base/__init__.py b/src/utils/base/__init__.py
deleted file mode 100755
index a0b0a580..00000000
--- a/src/utils/base/__init__.py
+++ /dev/null
@@ -1,21 +0,0 @@
-import threading
-
-from liteyuki.comm.channel import active_channel
-
-
-def reload(delay: float = 0.0, receiver: str = "nonebot"):
- """
- 重载LiteyukiBot(nonebot)
- Args:
- receiver: 指定重载的进程
- delay:
-
- Returns:
-
- """
-
- if delay > 0:
- threading.Timer(delay, active_channel.send, args=(1,)).start()
- return
- else:
- active_channel.send(1)
diff --git a/src/utils/base/config.py b/src/utils/base/config.py
deleted file mode 100755
index 08a0d41b..00000000
--- a/src/utils/base/config.py
+++ /dev/null
@@ -1,109 +0,0 @@
-import os
-import platform
-from typing import List
-
-import nonebot
-import yaml
-from pydantic import BaseModel
-
-from ..message.tools import random_hex_string
-
-
-config = {} # 全局配置,确保加载后读取
-
-
-class SatoriNodeConfig(BaseModel):
- host: str = ""
- port: str = "5500"
- path: str = ""
- token: str = ""
-
-
-class SatoriConfig(BaseModel):
- comment: str = (
- "These features are still in development. Do not enable in production environment."
- )
- enable: bool = False
- hosts: List[SatoriNodeConfig] = [SatoriNodeConfig()]
-
-
-class BasicConfig(BaseModel):
- host: str = "127.0.0.1"
- port: int = 20216
- superusers: list[str] = []
- command_start: list[str] = ["/", ""]
- nickname: list[str] = [f"LiteyukiBot-{random_hex_string(6)}"]
- satori: SatoriConfig = SatoriConfig()
- data_path: str = "data/liteyuki"
- chromium_path: str = (
- "/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome" # type: ignore
- if platform.system() == "Darwin"
- else (
- "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"
- if platform.system() == "Windows"
- else "/usr/bin/chromium-browser"
- )
- )
-
-
-def load_from_yaml(file_: str) -> dict:
- global config
- nonebot.logger.debug("Loading config from %s" % file_)
- if not os.path.exists(file_):
- nonebot.logger.warning(
- f"Config file {file_} not found, created default config, please modify it and restart"
- )
- with open(file_, "w", encoding="utf-8") as f:
- yaml.dump(BasicConfig().dict(), f, default_flow_style=False)
-
- with open(file_, "r", encoding="utf-8") as f:
- conf = init_conf(yaml.load(f, Loader=yaml.FullLoader))
- config = conf
- if conf is None:
- nonebot.logger.warning(
- f"Config file {file_} is empty, use default config. please modify it and restart"
- )
- conf = BasicConfig().dict()
- return conf
-
-
-def get_config(key: str, default=None):
- """获取配置项,优先级:bot > config > db > yaml"""
- try:
- bot = nonebot.get_bot()
- except:
- bot = None
-
- if bot is None:
- bot_config = {}
- else:
- bot_config = bot.config.dict()
-
- if key in bot_config:
- return bot_config[key]
-
- elif key in config:
- return config[key]
-
- elif key in load_from_yaml("config.yml"):
- return load_from_yaml("config.yml")[key]
-
- else:
- return default
-
-
-def init_conf(conf: dict) -> dict:
- """
- 初始化配置文件,确保配置文件中的必要字段存在,且不会冲突
- Args:
- conf:
-
- Returns:
-
- """
- # 若command_start中无"",则添加必要命令头,开启alconna_use_command_start防止冲突
- # 以下内容由于issue #53 被注释
- # if "" not in conf.get("command_start", []):
- # conf["alconna_use_command_start"] = True
- return conf
- pass
diff --git a/src/utils/base/data.py b/src/utils/base/data.py
deleted file mode 100755
index 3b8f0ed1..00000000
--- a/src/utils/base/data.py
+++ /dev/null
@@ -1,436 +0,0 @@
-import inspect
-import os
-import pickle
-import sqlite3
-from types import NoneType
-from typing import Any, Callable
-
-from nonebot import logger
-from nonebot.compat import PYDANTIC_V2
-from pydantic import BaseModel
-
-
-class LiteModel(BaseModel):
- TABLE_NAME: str = None
- id: int = None
-
- def dump(self, *args, **kwargs):
- if PYDANTIC_V2:
- return self.model_dump(*args, **kwargs)
- else:
- return self.dict(*args, **kwargs)
-
-
-class Database:
- def __init__(self, db_name: str):
-
- if os.path.dirname(db_name) != "" and not os.path.exists(os.path.dirname(db_name)):
- os.makedirs(os.path.dirname(db_name))
-
- self.db_name = db_name
- self.conn = sqlite3.connect(db_name, check_same_thread=False)
- self.cursor = self.conn.cursor()
-
- self._on_save_callbacks = []
- self._is_locked = False
-
- def lock(self):
- self.cursor.execute("BEGIN TRANSACTION")
- self._is_locked = True
-
- def lock_query(self, query: str, *args):
- """锁定查询"""
- self.cursor.execute(query, args).fetchall()
-
- def lock_model(self, model: LiteModel) -> LiteModel | Any | None:
- """锁定行
- Args:
- model: 数据模型实例
-
-
- Returns:
-
- """
- pass
-
- def unlock(self):
- self.cursor.execute("COMMIT")
- self._is_locked = False
-
- def where_one(self, model: LiteModel, condition: str = "", *args: Any, default: Any = None) -> LiteModel | Any | None:
- """查询第一个
- Args:
- model: 数据模型实例
- condition: 查询条件,不给定则查询所有
- *args: 参数化查询参数
- default: 默认值
-
- Returns:
-
- """
- all_results = self.where_all(model, condition, *args)
- return all_results[0] if all_results else default
-
- def where_all(self, model: LiteModel, condition: str = "", *args: Any, default: Any = None) -> list[LiteModel | Any] | None:
- """查询所有
- Args:
- model: 数据模型实例
- condition: 查询条件,不给定则查询所有
- *args: 参数化查询参数
- default: 默认值
-
- Returns:
-
- """
- table_name = model.TABLE_NAME
- model_type = type(model)
- logger.debug(f"Selecting {model.TABLE_NAME} WHERE {condition.replace('?', '%s') % args}")
- if not table_name:
- raise ValueError(f"数据模型{model_type.__name__}未提供表名")
-
- # condition = f"WHERE {condition}"
- # print(f"SELECT * FROM {table_name} {condition}", args)
- # if len(args) == 0:
- # results = self.cursor.execute(f"SELECT * FROM {table_name} {condition}").fetchall()
- # else:
- # results = self.cursor.execute(f"SELECT * FROM {table_name} {condition}", args).fetchall()
- if condition:
- results = self.cursor.execute(f"SELECT * FROM {table_name} WHERE {condition}", args).fetchall()
- else:
- results = self.cursor.execute(f"SELECT * FROM {table_name}").fetchall()
- fields = [description[0] for description in self.cursor.description]
- if not results:
- return default
- else:
- return [model_type(**self._load(dict(zip(fields, result)))) for result in results]
-
- def save(self, *args: LiteModel):
- self.returns_ = """增/改操作
- Args:
- *args:
- Returns:
- """
- table_list = [item[0] for item in self.cursor.execute("SELECT name FROM sqlite_master WHERE type ='table'").fetchall()]
- for model in args:
- logger.debug(f"Upserting {model}")
- if not model.TABLE_NAME:
- raise ValueError(f"数据模型 {model.__class__.__name__} 未提供表名")
- elif model.TABLE_NAME not in table_list:
- raise ValueError(f"数据模型 {model.__class__.__name__} 表 {model.TABLE_NAME} 不存在,请先迁移")
- else:
- self._save(model.dump(by_alias=True))
-
- for callback in self._on_save_callbacks:
- callback(model)
-
- def _save(self, obj: Any) -> Any:
- # obj = copy.deepcopy(obj)
- if isinstance(obj, dict):
- table_name = obj.get("TABLE_NAME")
- row_id = obj.get("id")
- new_obj = {}
- for field, value in obj.items():
- if isinstance(value, self.ITERABLE_TYPE):
- new_obj[self._get_stored_field_prefix(value) + field] = self._save(value) # self._save(value) # -> bytes
- elif isinstance(value, self.BASIC_TYPE):
- new_obj[field] = value
- else:
- raise ValueError(f"数据模型{table_name}包含不支持的数据类型,字段:{field} 值:{value} 值类型:{type(value)}")
- if table_name:
- fields, values = [], []
- for n_field, n_value in new_obj.items():
- if n_field not in ["TABLE_NAME", "id"]:
- fields.append(n_field)
- values.append(n_value)
- # 移除TABLE_NAME和id
- fields = list(fields)
- values = list(values)
- if row_id is not None:
- # 如果 _id 不为空,将 'id' 插入到字段列表的开始
- fields.insert(0, 'id')
- # 将 _id 插入到值列表的开始
- values.insert(0, row_id)
- fields = ', '.join([f'"{field}"' for field in fields])
- placeholders = ', '.join('?' for _ in values)
- self.cursor.execute(f"INSERT OR REPLACE INTO {table_name}({fields}) VALUES ({placeholders})", tuple(values))
- # self.conn.commit()
- if self._is_locked:
- pass
- else:
- self.conn.commit()
- foreign_id = self.cursor.execute("SELECT last_insert_rowid()").fetchone()[0]
- return f"{self.FOREIGN_KEY_PREFIX}{foreign_id}@{table_name}" # -> FOREIGN_KEY_123456@{table_name} id@{table_name}
- else:
- return pickle.dumps(new_obj) # -> bytes
- elif isinstance(obj, (list, set, tuple)):
- obj_type = type(obj) # 到时候转回去
- new_obj = []
- for item in obj:
- if isinstance(item, self.ITERABLE_TYPE):
- new_obj.append(self._save(item))
- elif isinstance(item, self.BASIC_TYPE):
- new_obj.append(item)
- else:
- raise ValueError(f"数据模型包含不支持的数据类型,值:{item} 值类型:{type(item)}")
- return pickle.dumps(obj_type(new_obj)) # -> bytes
- else:
- raise ValueError(f"数据模型包含不支持的数据类型,值:{obj} 值类型:{type(obj)}")
-
- def _load(self, obj: Any) -> Any:
-
- if isinstance(obj, dict):
-
- new_obj = {}
-
- for field, value in obj.items():
-
- field: str
-
- if field.startswith(self.BYTES_PREFIX):
- if isinstance(value, bytes):
- new_obj[field.replace(self.BYTES_PREFIX, "")] = self._load(pickle.loads(value))
- else: # 从value字段可能为None,fix at 2024/6/13
- pass
- # 暂时不作处理,后面再修
-
- elif field.startswith(self.FOREIGN_KEY_PREFIX):
-
- new_obj[field.replace(self.FOREIGN_KEY_PREFIX, "")] = self._load(self._get_foreign_data(value))
-
- else:
- new_obj[field] = value
- return new_obj
- elif isinstance(obj, (list, set, tuple)):
-
- new_obj = []
- for item in obj:
-
- if isinstance(item, bytes):
-
- # 对bytes进行尝试解析,解析失败则返回原始bytes
- try:
- new_obj.append(self._load(pickle.loads(item)))
- except Exception as e:
- new_obj.append(self._load(item))
-
- elif isinstance(item, str) and item.startswith(self.FOREIGN_KEY_PREFIX):
- new_obj.append(self._load(self._get_foreign_data(item)))
- else:
- new_obj.append(self._load(item))
- return new_obj
- else:
- return obj
-
- def delete(self, model: LiteModel, condition: str, *args: Any, allow_empty: bool = False):
- """
- 删除满足条件的数据
- Args:
- allow_empty: 允许空条件删除整个表
- model:
- condition:
- *args:
-
- Returns:
-
- """
- table_name = model.TABLE_NAME
- logger.debug(f"Deleting {model} WHERE {condition} {args}")
- if not table_name:
- raise ValueError(f"数据模型{model.__class__.__name__}未提供表名")
- if model.id is not None:
- condition = f"id = {model.id}"
- if not condition and not allow_empty:
- raise ValueError("删除操作必须提供条件")
- self.cursor.execute(f"DELETE FROM {table_name} WHERE {condition}", args)
- if self._is_locked:
- pass
- else:
- self.conn.commit()
-
- def auto_migrate(self, *args: LiteModel):
-
- """
- 自动迁移模型
- Args:
- *args: 模型类实例化对象,支持空默认值,不支持嵌套迁移
-
- Returns:
-
- """
- for model in args:
- if not model.TABLE_NAME:
- raise ValueError(f"数据模型{type(model).__name__}未提供表名")
-
- # 若无则创建表
- self.cursor.execute(
- f'CREATE TABLE IF NOT EXISTS "{model.TABLE_NAME}" (id INTEGER PRIMARY KEY AUTOINCREMENT)'
- )
-
- # 获取表结构,field -> SqliteType
- new_structure = {}
- for n_field, n_value in model.dump(by_alias=True).items():
- if n_field not in ["TABLE_NAME", "id"]:
- new_structure[self._get_stored_field_prefix(n_value) + n_field] = self._get_stored_type(n_value)
-
- # 原有的字段列表
- existing_structure = dict([(column[1], column[2]) for column in self.cursor.execute(f'PRAGMA table_info({model.TABLE_NAME})').fetchall()])
- # 检测缺失字段,由于SQLite是动态类型,所以不需要检测类型
- for n_field, n_type in new_structure.items():
- if n_field not in existing_structure.keys() and n_field.lower() not in ["id", "table_name"]:
- default_value = self.DEFAULT_MAPPING.get(n_type, 'NULL')
- self.cursor.execute(
- f"ALTER TABLE '{model.TABLE_NAME}' ADD COLUMN {n_field} {n_type} DEFAULT {self.DEFAULT_MAPPING.get(n_type, default_value)}"
- )
-
- # 检测多余字段进行删除
- for e_field in existing_structure.keys():
- if e_field not in new_structure.keys() and e_field.lower() not in ['id']:
- self.cursor.execute(
- f'ALTER TABLE "{model.TABLE_NAME}" DROP COLUMN "{e_field}"'
- )
- self.conn.commit()
- # 已完成
-
- def _get_stored_field_prefix(self, value) -> str:
- """根据类型获取存储字段前缀,一定在后加上字段名
- * -> ""
- Args:
- value: 储存的值
-
- Returns:
- Sqlite3存储字段
- """
-
- if isinstance(value, LiteModel) or isinstance(value, dict) and "TABLE_NAME" in value:
- return self.FOREIGN_KEY_PREFIX
- elif type(value) in self.ITERABLE_TYPE:
- return self.BYTES_PREFIX
- return ""
-
- def _get_stored_type(self, value) -> str:
- """获取存储类型
-
- Args:
- value: 储存的值
-
- Returns:
- Sqlite3存储类型
- """
- if isinstance(value, dict) and "TABLE_NAME" in value:
- # 是一个模型字典,储存外键
- return "INTEGER"
- return self.TYPE_MAPPING.get(type(value), "TEXT")
-
- def _get_foreign_data(self, foreign_value: str) -> dict:
- """
- 获取外键数据
- Args:
- foreign_value:
-
- Returns:
-
- """
- foreign_value = foreign_value.replace(self.FOREIGN_KEY_PREFIX, "")
- table_name = foreign_value.split("@")[-1]
- foreign_id = foreign_value.split("@")[0]
- fields = [description[1] for description in self.cursor.execute(f"PRAGMA table_info({table_name})").fetchall()]
- result = self.cursor.execute(f"SELECT * FROM {table_name} WHERE id = ?", (foreign_id,)).fetchone()
- return dict(zip(fields, result))
-
- def on_save(self, func: Callable[[LiteModel | Any], None]):
- """
- 装饰一个可调用对象使其在储存数据模型时被调用
- Args:
- func:
- Returns:
- """
-
- def wrapper(model):
- # 检查被装饰函数声明的model类型和传入的model类型是否一致
- sign = inspect.signature(func)
- if param := sign.parameters.get("model"):
- if isinstance(model, param.annotation):
- pass
- else:
- return
- else:
- return
- result = func(model)
- for callback in self._on_save_callbacks:
- callback(result)
- return result
-
- self._on_save_callbacks.append(wrapper)
- return wrapper
-
- TYPE_MAPPING = {
- int : "INTEGER",
- float : "REAL",
- str : "TEXT",
- bool : "INTEGER",
- bytes : "BLOB",
- NoneType : "NULL",
- # dict : "TEXT",
- # list : "TEXT",
- # tuple : "TEXT",
- # set : "TEXT",
-
- dict : "BLOB", # LITEYUKIDICT{key_name}
- list : "BLOB", # LITEYUKILIST{key_name}
- tuple : "BLOB", # LITEYUKITUPLE{key_name}
- set : "BLOB", # LITEYUKISET{key_name}
- LiteModel: "TEXT" # FOREIGN_KEY_{table_name}
- }
- DEFAULT_MAPPING = {
- "TEXT" : "''",
- "INTEGER": 0,
- "REAL" : 0.0,
- "BLOB" : None,
- "NULL" : None
- }
-
- # 基础类型
- BASIC_TYPE = (int, float, str, bool, bytes, NoneType)
- # 可序列化类型
- ITERABLE_TYPE = (dict, list, tuple, set, LiteModel)
-
- # 外键前缀
- FOREIGN_KEY_PREFIX = "FOREIGN_KEY_"
- # 转换为的字节前缀
- BYTES_PREFIX = "PICKLE_BYTES_"
-
- # transaction tx 事务操作
- def first(self, model: LiteModel) -> "Database":
- pass
-
- def where(self, condition: str, *args) -> "Database":
- pass
-
- def limit(self, limit: int) -> "Database":
- pass
-
- def order(self, order: str) -> "Database":
- pass
-
-
-def check_sqlite_keyword(name):
- sqlite_keywords = [
- "ABORT", "ACTION", "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", "AND", "AS", "ASC",
- "ATTACH", "AUTOINCREMENT", "BEFORE", "BEGIN", "BETWEEN", "BY", "CASCADE", "CASE",
- "CAST", "CHECK", "COLLATE", "COLUMN", "COMMIT", "CONFLICT", "CONSTRAINT", "CREATE",
- "CROSS", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "DATABASE", "DEFAULT",
- "DEFERRABLE", "DEFERRED", "DELETE", "DESC", "DETACH", "DISTINCT", "DROP", "EACH",
- "ELSE", "END", "ESCAPE", "EXCEPT", "EXCLUSIVE", "EXISTS", "EXPLAIN", "FAIL", "FOR",
- "FOREIGN", "FROM", "FULL", "GLOB", "GROUP", "HAVING", "IF", "IGNORE", "IMMEDIATE",
- "IN", "INDEX", "INDEXED", "INITIALLY", "INNER", "INSERT", "INSTEAD", "INTERSECT",
- "INTO", "IS", "ISNULL", "JOIN", "KEY", "LEFT", "LIKE", "LIMIT", "MATCH", "NATURAL",
- "NO", "NOT", "NOTNULL", "NULL", "OF", "OFFSET", "ON", "OR", "ORDER", "OUTER", "PLAN",
- "PRAGMA", "PRIMARY", "QUERY", "RAISE", "RECURSIVE", "REFERENCES", "REGEXP", "REINDEX",
- "RELEASE", "RENAME", "REPLACE", "RESTRICT", "RIGHT", "ROLLBACK", "ROW", "SAVEPOINT",
- "SELECT", "SET", "TABLE", "TEMP", "TEMPORARY", "THEN", "TO", "TRANSACTION", "TRIGGER",
- "UNION", "UNIQUE", "UPDATE", "USING", "VACUUM", "VALUES", "VIEW", "VIRTUAL", "WHEN",
- "WHERE", "WITH", "WITHOUT"
- ]
- return True
- # if name.upper() in sqlite_keywords:
- # raise ValueError(f"'{name}' 是SQLite保留字,不建议使用,请更换名称")
\ No newline at end of file
diff --git a/src/utils/base/data_manager.py b/src/utils/base/data_manager.py
deleted file mode 100755
index 51fa1aaa..00000000
--- a/src/utils/base/data_manager.py
+++ /dev/null
@@ -1,99 +0,0 @@
-import os
-
-from pydantic import Field
-
-from .data import Database, LiteModel
-
-DATA_PATH = "data/liteyuki"
-user_db: Database = Database(os.path.join(DATA_PATH, "users.ldb"))
-group_db: Database = Database(os.path.join(DATA_PATH, "groups.ldb"))
-plugin_db: Database = Database(os.path.join(DATA_PATH, "plugins.ldb"))
-common_db: Database = Database(os.path.join(DATA_PATH, "common.ldb"))
-
-# 内存数据库,临时用于存储数据
-memory_database = {
-
-}
-
-
-class User(LiteModel):
- TABLE_NAME: str = "user"
- user_id: str = Field(str(), alias="user_id")
- username: str = Field(str(), alias="username")
- profile: dict[str, str] = Field(dict(), alias="profile")
- enabled_plugins: list[str] = Field(list(), alias="enabled_plugins")
- disabled_plugins: list[str] = Field(list(), alias="disabled_plugins")
-
-
-class Group(LiteModel):
- TABLE_NAME: str = "group_chat"
- # Group是一个关键字,所以这里用GroupChat
- group_id: str = Field(str(), alias="group_id")
- group_name: str = Field(str(), alias="group_name")
- enabled_plugins: list[str] = Field([], alias="enabled_plugins")
- disabled_plugins: list[str] = Field([], alias="disabled_plugins")
- enable: bool = Field(True, alias="enable") # 群聊全局机器人是否启用
- config: dict = Field({}, alias="config")
-
-
-class InstalledPlugin(LiteModel):
- TABLE_NAME: str = "installed_plugin"
- module_name: str = Field(str(), alias="module_name")
- version: str = Field(str(), alias="version")
-
-
-class GlobalPlugin(LiteModel):
- TABLE_NAME: str = "global_plugin"
- liteyuki: bool = Field(True, alias="liteyuki") # 是否为LiteYuki插件
- module_name: str = Field(str(), alias="module_name")
- enabled: bool = Field(True, alias="enabled")
-
-
-class StoredConfig(LiteModel):
- TABLE_NAME: str = "stored_config"
- config: dict = {}
-
-
-class TempConfig(LiteModel):
- """储存临时键值对的表"""
- TABLE_NAME: str = "temp_data"
- data: dict = {}
-
-
-
-def auto_migrate():
- user_db.auto_migrate(User())
- group_db.auto_migrate(Group())
- plugin_db.auto_migrate(InstalledPlugin(), GlobalPlugin())
- common_db.auto_migrate(GlobalPlugin(), TempConfig())
-
-
-auto_migrate()
-
-
-def set_memory_data(key: str, value) -> None:
- """
- 设置内存数据库的数据,类似于redis
- Args:
- key:
- value:
-
- Returns:
-
- """
- return memory_database.update({
- key: value
- })
-
-
-def get_memory_data(key: str, default=None) -> any:
- """
- 获取内存数据库的数据,类似于redis
- Args:
- key:
- default:
-
- Returns:
-
- """
- return memory_database.get(key, default)
diff --git a/src/utils/base/language.py b/src/utils/base/language.py
deleted file mode 100755
index 8a4852d8..00000000
--- a/src/utils/base/language.py
+++ /dev/null
@@ -1,242 +0,0 @@
-"""
-语言模块,添加对多语言的支持
-"""
-
-import json
-import locale
-import os
-from typing import Any, overload
-
-import nonebot
-
-from .config import config, get_config
-from .data_manager import User, user_db
-
-_language_data = {
- "en": {
- "name": "English",
- }
-}
-
-_user_lang = {"user_id": "zh-CN"}
-
-
-def load_from_lang(file_path: str, lang_code: str = None):
- """
- 从lang文件中加载语言数据,用于简单的文本键值对
-
- Args:
- file_path: lang文件路径
- lang_code: 语言代码,如果为None则从文件名中获取
- """
- try:
- if lang_code is None:
- lang_code = os.path.basename(file_path).split(".")[0]
- with open(file_path, "r", encoding="utf-8") as file:
- data = {}
- for line in file:
- line = line.strip()
- if not line or line.startswith("#"): # 空行或注释
- continue
- key, value = line.split("=", 1)
- data[key.strip()] = value.strip()
- if lang_code not in _language_data:
- _language_data[lang_code] = {}
- _language_data[lang_code].update(data)
- nonebot.logger.debug(f"Loaded language data from {file_path}")
- except Exception as e:
- nonebot.logger.error(f"Failed to load language data from {file_path}: {e}")
-
-
-def load_from_json(file_path: str, lang_code: str = None):
- """
- 从json文件中加载语言数据,可以定义一些变量
-
- Args:
- lang_code: 语言代码,如果为None则从文件名中获取
- file_path: json文件路径
- """
- try:
- if lang_code is None:
- lang_code = os.path.basename(file_path).split(".")[0]
- with open(file_path, "r", encoding="utf-8") as file:
- data = json.load(file)
- if lang_code not in _language_data:
- _language_data[lang_code] = {}
- _language_data[lang_code].update(data)
- nonebot.logger.debug(f"Loaded language data from {file_path}")
- except Exception as e:
- nonebot.logger.error(f"Failed to load language data from {file_path}: {e}")
-
-
-def load_from_dir(dir_path: str):
- """
- 从目录中加载语言数据
-
- Args:
- dir_path: 目录路径
- """
- for file in os.listdir(dir_path):
- try:
- file_path = os.path.join(dir_path, file)
- if os.path.isfile(file_path):
- if file.endswith(".lang"):
- load_from_lang(file_path)
- elif file.endswith(".json"):
- load_from_json(file_path)
- except Exception as e:
- nonebot.logger.error(f"Failed to load language data from {file}: {e}")
- continue
-
-
-def load_from_dict(data: dict, lang_code: str):
- """
- 从字典中加载语言数据
-
- Args:
- lang_code: 语言代码
- data: 字典数据
- """
- if lang_code not in _language_data:
- _language_data[lang_code] = {}
- _language_data[lang_code].update(data)
-
-
-class Language:
- # 三重fallback
- # 用户语言 > 默认语言/系统语言 > zh-CN
- def __init__(self, lang_code: str = None, fallback_lang_code: str = None):
- self.lang_code = lang_code
-
- if self.lang_code is None:
- self.lang_code = get_default_lang_code()
-
- self.fallback_lang_code = fallback_lang_code
- if self.fallback_lang_code is None:
- self.fallback_lang_code = config.get(
- "default_language", get_system_lang_code()
- )
-
- def _get(self, item: str, *args, **kwargs) -> str | Any:
- """
- 获取当前语言文本,kwargs中的default参数为默认文本
-
- **请不要重写本函数**
-
- Args:
- item: 文本键
- *args: 格式化参数
- **kwargs: 格式化参数
-
- Returns:
- str: 当前语言的文本
-
- """
- default = kwargs.pop("default", None)
- fallback = (self.lang_code, self.fallback_lang_code, "zh-CN")
-
- for lang_code in fallback:
- if lang_code in _language_data and item in _language_data[lang_code]:
- trans: str = _language_data[lang_code][item]
- try:
- return trans.format(*args, **kwargs)
- except Exception as e:
- nonebot.logger.warning(f"Failed to format language data: {e}")
- return trans
- return default or item
-
- def get(self, item: str, *args, **kwargs) -> str | Any:
- """
- 获取当前语言文本,kwargs中的default参数为默认文本
- Args:
- item: 文本键
- *args: 格式化参数
- **kwargs: 格式化参数
-
- Returns:
- str: 当前语言的文本
-
- """
- return self._get(item, *args, **kwargs)
-
- def get_many(self, *args: str, **kwargs) -> dict[str, str]:
- """
- 获取多个文本
- Args:
- *args: 文本键
- **kwargs: 文本键和默认文本
-
- Returns:
- dict: 多个文本
- """
- args_data = {item: self.get(item) for item in args}
- kwargs_data = {
- item: self.get(item, default=default) for item, default in kwargs.items()
- }
- args_data.update(kwargs_data)
- return args_data
-
-
-def change_user_lang(user_id: str, lang_code: str):
- """
- 修改用户的语言,同时储存到数据库和内存中
- """
- user = user_db.where_one(
- User(), "user_id = ?", user_id, default=User(user_id=user_id)
- )
- user.profile["lang"] = lang_code
- user_db.save(user)
- _user_lang[user_id] = lang_code
-
-
-def get_user_lang(user_id: str) -> Language:
- """
- 获取用户的语言实例,优先从内存中获取
- """
- user_id = str(user_id)
-
- if user_id not in _user_lang:
- nonebot.logger.debug(f"Loading user language for {user_id}")
- user = user_db.where_one(
- User(),
- "user_id = ?",
- user_id,
- default=User(user_id=user_id, username="Unknown"),
- )
- lang_code = user.profile.get("lang", get_default_lang_code())
- _user_lang[user_id] = lang_code
-
- return Language(_user_lang[user_id])
-
-
-def get_system_lang_code() -> str:
- """
- 获取系统语言代码
- """
- l = locale.getdefaultlocale()
- if l[0] is None:
- return "zh-CN"
- else:
-
- return l[0].replace("_", "-")
-
-
-def get_default_lang_code() -> str:
- """
- 获取默认语言代码,若没有设置则使用系统语言
- Returns:
-
- """
- return get_config("default_language", default=get_system_lang_code())
-
-
-def get_all_lang() -> dict[str, str]:
- """
- 获取所有语言
- Returns
- {'en': 'English'}
- """
- d = {}
- for key in _language_data:
- d[key] = _language_data[key].get("language.name", key)
- return d
diff --git a/src/utils/base/log.py b/src/utils/base/log.py
deleted file mode 100755
index 2364122d..00000000
--- a/src/utils/base/log.py
+++ /dev/null
@@ -1,79 +0,0 @@
-# import sys
-# import loguru
-# from typing import TYPE_CHECKING
-# from .config import load_from_yaml
-# from .language import Language, get_default_lang_code
-#
-# logger = loguru.logger
-# if TYPE_CHECKING:
-# # avoid sphinx autodoc resolve annotation failed
-# # because loguru module do not have `Logger` class actually
-# from loguru import Record
-#
-#
-# def default_filter(record: "Record"):
-# """默认的日志过滤器,根据 `config.log_level` 配置改变日志等级。"""
-# log_level = record["extra"].get("nonebot_log_level", "INFO")
-# levelno = logger.level(log_level).no if isinstance(log_level, str) else log_level
-# return record["level"].no >= levelno
-#
-#
-# # DEBUG日志格式
-# debug_format: str = (
-# "{time:YYYY-MM-DD HH:mm:ss} "
-# "[{level.icon}] "
-# "<{name}.{module}.{function}:{line}> "
-# "{message}"
-# )
-#
-# # 默认日志格式
-# default_format: str = (
-# "{time:MM-DD HH:mm:ss} "
-# "[{level.icon}] "
-# "<{name}> "
-# "{message}"
-# )
-#
-#
-# def get_format(level: str) -> str:
-# if level == "DEBUG":
-# return debug_format
-# else:
-# return default_format
-#
-#
-# logger = loguru.logger.bind()
-#
-#
-# def init_log():
-# """
-# 在语言加载完成后执行
-# Returns:
-#
-# """
-# global logger
-#
-# config = load_from_yaml("config.yml")
-#
-# logger.remove()
-# logger.add(
-# sys.stdout,
-# level=0,
-# diagnose=False,
-# filter=default_filter,
-# format=get_format(config.get("log_level", "INFO")),
-# )
-# show_icon = config.get("log_icon", True)
-# lang = Language(get_default_lang_code())
-#
-# debug = lang.get("log.debug", default="==DEBUG")
-# info = lang.get("log.info", default="===INFO")
-# success = lang.get("log.success", default="SUCCESS")
-# warning = lang.get("log.warning", default="WARNING")
-# error = lang.get("log.error", default="==ERROR")
-#
-# logger.level("DEBUG", color="", icon=f"{'🐛' if show_icon else ''}{debug}")
-# logger.level("INFO", color="", icon=f"{'ℹ️' if show_icon else ''}{info}")
-# logger.level("SUCCESS", color="", icon=f"{'✅' if show_icon else ''}{success}")
-# logger.level("WARNING", color="", icon=f"{'⚠️' if show_icon else ''}{warning}")
-# logger.level("ERROR", color="", icon=f"{'⭕' if show_icon else ''}{error}")
diff --git a/src/utils/base/ly_function.py b/src/utils/base/ly_function.py
deleted file mode 100755
index 73084615..00000000
--- a/src/utils/base/ly_function.py
+++ /dev/null
@@ -1,197 +0,0 @@
-"""
-liteyuki function是一种类似于mcfunction的函数,用于在liteyuki中实现一些功能,例如自定义指令等,也可与Python函数绑定
-使用 /function function_name *args **kwargs来调用
-例如 /function test/hello user_id=123456
-可以用于一些轻量级插件的编写,无需Python代码
-SnowyKami
-"""
-import asyncio
-import functools
-# cmd *args **kwargs
-# api api_name **kwargs
-import os
-from typing import Any, Awaitable, Callable, Coroutine
-
-import nonebot
-from nonebot import Bot
-from nonebot.adapters.satori import bot
-from nonebot.internal.matcher import Matcher
-
-ly_function_extensions = (
- "lyf",
- "lyfunction",
- "mcfunction"
-)
-
-loaded_functions = dict()
-
-
-class LiteyukiFunction:
- def __init__(self, name: str):
- self.name = name
- self.functions: list[str] = list()
- self.bot: Bot = None
- self.kwargs_data = dict()
- self.args_data = list()
- self.matcher: Matcher = None
- self.end = False
-
- self.sub_tasks: list[asyncio.Task] = list()
-
- async def __call__(self, *args, **kwargs):
- self.kwargs_data.update(kwargs)
- self.args_data = list(set(self.args_data + list(args)))
- for i, cmd in enumerate(self.functions):
- r = await self.execute_line(cmd, i, *args, **kwargs)
- if r == 0:
- msg = f"End function {self.name} by line {i}"
- nonebot.logger.debug(msg)
- for task in self.sub_tasks:
- task.cancel(msg)
- return
-
- def __str__(self):
- return f"LiteyukiFunction({self.name})"
-
- def __repr__(self):
- return self.__str__()
-
- async def execute_line(self, cmd: str, line: int = 0, *args, **kwargs) -> Any:
- """
- 解析一行轻雪函数
- Args:
- cmd: 命令
- line: 行数
- Returns:
- """
-
- try:
- if "${" in cmd:
- # 此种情况下,{}内容不用管,只对${}内的内容进行format
- for i in range(len(cmd) - 1):
- if cmd[i] == "$" and cmd[i + 1] == "{":
- end = cmd.find("}", i)
- key = cmd[i + 2:end]
- cmd = cmd.replace(f"${{{key}}}", str(self.kwargs_data.get(key, "")))
- else:
- cmd = cmd.format(*self.args_data, **self.kwargs_data)
- except Exception as e:
- pass
-
- no_head = cmd.split(" ", 1)[1] if len(cmd.split(" ")) > 1 else ""
- try:
- head, cmd_args, cmd_kwargs = self.get_args(cmd)
- except Exception as e:
- error_msg = f"Parsing error in {self.name} at line {line}: {e}"
- nonebot.logger.error(error_msg)
- await self.matcher.send(error_msg)
- return
-
- if head == "var":
- # 变量定义
- self.kwargs_data.update(cmd_kwargs)
-
- elif head == "cmd":
- # 在当前计算机上执行命令
- os.system(no_head)
-
- elif head == "api":
- # 调用Bot API 需要Bot实例
- await self.bot.call_api(cmd_args[1], **cmd_kwargs)
-
- elif head == "function":
- # 调用轻雪函数
- func = get_function(cmd_args[1])
- func.bot = self.bot
- func.matcher = self.matcher
- await func(*cmd_args[2:], **cmd_kwargs)
-
- elif head == "sleep":
- # 等待一段时间
- await asyncio.sleep(float(cmd_args[1]))
-
- elif head == "nohup":
- # 挂起运行
- task = asyncio.create_task(self.execute_line(no_head))
- self.sub_tasks.append(task)
-
- elif head == "end":
- # 结束所有函数
- self.end = True
- return 0
-
-
- elif head == "await":
- # 等待所有协程执行完毕
- await asyncio.gather(*self.sub_tasks)
-
- def get_args(self, line: str) -> tuple[str, tuple[str, ...], dict[str, Any]]:
- """
- 获取参数
- Args:
- line: 命令
- Returns:
- 命令头 参数 关键字
- """
- line = line.replace("\\=", "EQUAL_SIGN")
- head = ""
- args = list()
- kwargs = dict()
- for i, arg in enumerate(line.split(" ")):
- if "=" in arg:
- key, value = arg.split("=", 1)
- value = value.replace("EQUAL_SIGN", "=")
- try:
- value = eval(value)
- except:
- value = self.kwargs_data.get(value, value)
- kwargs[key] = value
- else:
- if i == 0:
- head = arg
- args.append(arg)
- return head, tuple(args), kwargs
-
-
-def get_function(name: str) -> LiteyukiFunction | None:
- """
- 获取一个轻雪函数
- Args:
- name: 函数名
- Returns:
- """
- return loaded_functions.get(name)
-
-
-def load_from_dir(path: str):
- """
- 从目录及其子目录中递归加载所有轻雪函数,类似mcfunction
-
- Args:
- path: 目录路径
- """
- for f in os.listdir(path):
- f = os.path.join(path, f)
- if os.path.isfile(f):
- if f.endswith(ly_function_extensions):
- load_from_file(f)
- if os.path.isdir(f):
- load_from_dir(f)
-
-
-def load_from_file(path: str):
- """
- 从文件中加载轻雪函数
- Args:
- path:
- Returns:
- """
- with open(path, "r", encoding="utf-8") as f:
- name = ".".join(os.path.basename(path).split(".")[:-1])
- func = LiteyukiFunction(name)
- for i, line in enumerate(f.read().split("\n")):
- if line.startswith("#") or line.strip() == "":
- continue
- func.functions.append(line)
- loaded_functions[name] = func
- nonebot.logger.debug(f"Loaded function {name}")
diff --git a/src/utils/base/ly_typing.py b/src/utils/base/ly_typing.py
deleted file mode 100755
index 31242e18..00000000
--- a/src/utils/base/ly_typing.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from nonebot.adapters.onebot import v11, v12
-from nonebot.adapters import satori
-
-T_Bot = v11.Bot | v12.Bot | satori.Bot
-T_GroupMessageEvent = v11.GroupMessageEvent | v12.GroupMessageEvent
-T_PrivateMessageEvent = v11.PrivateMessageEvent | v12.PrivateMessageEvent
-T_MessageEvent = v11.MessageEvent | v12.MessageEvent | satori.MessageEvent
-T_Message = v11.Message | v12.Message | satori.Message
diff --git a/src/utils/base/permission.py b/src/utils/base/permission.py
deleted file mode 100755
index 581e88c9..00000000
--- a/src/utils/base/permission.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from nonebot.adapters.onebot import v11
-
-GROUP_ADMIN = v11.GROUP_ADMIN
-GROUP_OWNER = v11.GROUP_OWNER
-
diff --git a/src/utils/base/resource.py b/src/utils/base/resource.py
deleted file mode 100755
index b9d76932..00000000
--- a/src/utils/base/resource.py
+++ /dev/null
@@ -1,355 +0,0 @@
-import json
-import os
-import shutil
-import zipfile
-from typing import Any
-from pathlib import Path
-
-import aiofiles
-import nonebot
-import yaml
-
-from .data import LiteModel
-from .language import Language, get_default_lang_code
-from .ly_function import loaded_functions
-
-_loaded_resource_packs: list["ResourceMetadata"] = [] # 按照加载顺序排序
-temp_resource_root = Path("data/liteyuki/resources")
-temp_extract_root = Path("data/liteyuki/temp")
-lang = Language(get_default_lang_code())
-
-
-
-
-class ResourceMetadata(LiteModel):
- name: str = "Unknown"
- version: str = "0.0.1"
- description: str = "Unknown"
- path: str = ""
- folder: str = ""
-
-
-def load_resource_from_dir(path: str):
- """
- 把资源包按照文件相对路径复制到运行临时文件夹data/liteyuki/resources
- Args:
- path: 资源文件夹
- Returns:
- """
- if os.path.exists(os.path.join(path, "metadata.yml")):
- with open(os.path.join(path, "metadata.yml"), "r", encoding="utf-8") as f:
- metadata = yaml.safe_load(f)
- elif os.path.isfile(path) and path.endswith(".zip"):
- # zip文件
- # 临时解压并读取metadata.yml
- with zipfile.ZipFile(path, "r") as zip_ref:
- # 解压至临时目录 data/liteyuki/temp/{pack_name}.zip
- zip_ref.extractall(os.path.join(temp_extract_root, os.path.basename(path)))
- with zip_ref.open("metadata.yml") as f:
- metadata = yaml.safe_load(f)
- path = os.path.join(temp_extract_root, os.path.basename(path))
- else:
- # 没有metadata.yml文件,不是一个资源包
- return
- for root, dirs, files in os.walk(path):
- for file in files:
- relative_path = os.path.relpath(os.path.join(root, file), path)
- copy_file(
- os.path.join(root, file),
- os.path.join(temp_resource_root, relative_path),
- )
- metadata["path"] = path
- metadata["folder"] = os.path.basename(path)
-
- if os.path.exists(os.path.join(path, "lang")):
- # 加载语言
- from src.utils.base.language import load_from_dir
-
- load_from_dir(os.path.join(path, "lang"))
-
- if os.path.exists(os.path.join(path, "functions")):
- # 加载功能
- from src.utils.base.ly_function import load_from_dir
-
- load_from_dir(os.path.join(path, "functions"))
-
- if os.path.exists(os.path.join(path, "word_bank")):
- # 加载词库
- from src.utils.base.word_bank import load_from_dir
-
- load_from_dir(os.path.join(path, "word_bank"))
-
- _loaded_resource_packs.insert(0, ResourceMetadata(**metadata))
-
-
-def get_path(
- path: os.PathLike[str,] | Path | str,
- abs_path: bool = True,
- default: Any = None,
- debug: bool = False,
-) -> str | Any:
- """
- 获取资源包中的路径,且该路径必须存在
- Args:
- path: 相对路径
- abs_path: 是否返回绝对路径
- default: 默认解,当该路径不存在时使用
- debug: 启用调试,每次都会先重载资源
- Returns: 所需求之路径
- """
- if debug:
- nonebot.logger.debug("Resource path debug enabled, reloading")
- load_resources()
- resource_relative_path = temp_resource_root / path
- if resource_relative_path.exists():
- return str(
- resource_relative_path.resolve() if abs_path else resource_relative_path
- )
- else:
- return default
-
-
-def get_resource_path(
- path: os.PathLike[str,] | Path | str,
- abs_path: bool = True,
- only_exist: bool = False,
- default: Any = None,
- debug: bool = False,
-) -> Path:
- """
- 获取资源包中的路径
- Args:
- path: 相对路径
- abs_path: 是否返回绝对路径
- only_exist: 检查该路径是否存在
- default: [当 `only_exist` 为 **真** 时启用]默认解,当该路径不存在时使用
- debug: 启用调试,每次都会先重载资源
- Returns: 所需求之路径
- """
- if debug:
- nonebot.logger.debug("Resource path debug enabled, reloading")
- load_resources()
- resource_relative_path = (
- (temp_resource_root / path).resolve()
- if abs_path
- else (temp_resource_root / path)
- )
- if only_exist:
- if resource_relative_path.exists():
- return resource_relative_path
- else:
- return default
- else:
- return resource_relative_path
-
-
-def get_files(
- path: os.PathLike[str,] | Path | str, abs_path: bool = False
-) -> list[str]:
- """
- 获取资源包中一个目录的所有内容
- Args:
- path: 该目录的相对路径
- abs_path: 是否返回绝对路径
- Returns: 目录内容路径所构成之列表
- """
- resource_relative_path = temp_resource_root / path
- if resource_relative_path.exists():
- return [
- (
- str((resource_relative_path / file_).resolve())
- if abs_path
- else str((resource_relative_path / file_))
- )
- for file_ in os.listdir(resource_relative_path)
- ]
- else:
- return []
-
-
-def get_resource_files(
- path: os.PathLike[str,] | Path | str, abs_path: bool = False
-) -> list[Path]:
- """
- 获取资源包中一个目录的所有内容
- Args:
- path: 该目录的相对路径
- abs_path: 是否返回绝对路径
- Returns: 目录内容路径所构成之列表
- """
- resource_relative_path = temp_resource_root / path
- if resource_relative_path.exists():
- return [
- (
- (resource_relative_path / file_).resolve()
- if abs_path
- else (resource_relative_path / file_)
- )
- for file_ in os.listdir(resource_relative_path)
- ]
- else:
- return []
-
-
-def get_loaded_resource_packs() -> list[ResourceMetadata]:
- """
- 获取已加载的资源包,优先级从前到后
- Returns: 资源包列表
- """
- return _loaded_resource_packs
-
-
-def copy_file(src, dst):
- # 获取目标文件的目录
- dst_dir = os.path.dirname(dst)
- # 如果目标目录不存在,创建它
- if not os.path.exists(dst_dir):
- os.makedirs(dst_dir)
- # 复制文件
- shutil.copy(src, dst)
-
-
-def load_resources():
- """用于外部主程序调用的资源加载函数
- Returns:
- """
- # 加载默认资源和语言
- # 清空临时资源包路径data/liteyuki/resources
- _loaded_resource_packs.clear()
- loaded_functions.clear()
- if os.path.exists(temp_resource_root):
- shutil.rmtree(temp_resource_root)
- os.makedirs(temp_resource_root, exist_ok=True)
-
- # 加载内置资源
- standard_resources_path = "src/resources"
- for resource_dir in os.listdir(standard_resources_path):
- load_resource_from_dir(os.path.join(standard_resources_path, resource_dir))
-
- # 加载其他资源包
- if not os.path.exists("resources"):
- os.makedirs("resources", exist_ok=True)
-
- if not os.path.exists("resources/index.json"):
- json.dump([], open("resources/index.json", "w", encoding="utf-8"))
-
- resource_index: list[str] = json.load(
- open("resources/index.json", "r", encoding="utf-8")
- )
- resource_index.reverse() # 优先级高的后加载,但是排在前面
- for resource in resource_index:
- load_resource_from_dir(os.path.join("resources", resource))
-
-
-def check_status(name: str) -> bool:
- """
- 检查资源包是否已加载
- Args:
- name: 资源包名称,文件夹名
- Returns: 是否已加载
- """
- return name in [rp.folder for rp in get_loaded_resource_packs()]
-
-
-def check_exist(name: str) -> bool:
- """
- 检查资源包文件夹是否存在于resources文件夹
- Args:
- name: 资源包名称,文件夹名
- Returns: 是否存在
- """
- path = os.path.join("resources", name)
- return os.path.exists(os.path.join(path, "metadata.yml")) or (
- os.path.isfile(path) and name.endswith(".zip")
- )
-
-
-def add_resource_pack(name: str) -> bool:
- """
- 添加资源包,该操作仅修改index.json文件,不会加载资源包,要生效请重载资源
- Args:
- name: 资源包名称,文件夹名
- Returns:
- """
- if check_exist(name):
- old_index: list[str] = json.load(
- open("resources/index.json", "r", encoding="utf-8")
- )
- if name not in old_index:
- old_index.append(name)
- json.dump(old_index, open("resources/index.json", "w", encoding="utf-8"))
- load_resource_from_dir(os.path.join("resources", name))
- return True
- else:
- nonebot.logger.warning(lang.get("liteyuki.resource_loaded", name=name))
- return False
- else:
- nonebot.logger.warning(lang.get("liteyuki.resource_not_exist", name=name))
- return False
-
-
-def remove_resource_pack(name: str) -> bool:
- """
- 移除资源包,该操作仅修改加载索引,要生效请重载资源
- Args:
- name: 资源包名称,文件夹名
- Returns:
- """
- if check_exist(name):
- old_index: list[str] = json.load(
- open("resources/index.json", "r", encoding="utf-8")
- )
- if name in old_index:
- old_index.remove(name)
- json.dump(old_index, open("resources/index.json", "w", encoding="utf-8"))
- return True
- else:
- nonebot.logger.warning(lang.get("liteyuki.resource_not_loaded", name=name))
- return False
- else:
- nonebot.logger.warning(lang.get("liteyuki.resource_not_exist", name=name))
- return False
-
-
-def change_priority(name: str, delta: int) -> bool:
- """
- 修改资源包优先级
- Args:
- name: 资源包名称,文件夹名
- delta: 优先级变化,正数表示后移,负数表示前移,0表示移到最前
- Returns:
- """
- # 正数表示前移,负数表示后移
- old_resource_list: list[str] = json.load(
- open("resources/index.json", "r", encoding="utf-8")
- )
- new_resource_list = old_resource_list.copy()
- if name in old_resource_list:
- index = old_resource_list.index(name)
- if 0 <= index + delta < len(old_resource_list):
- new_index = index + delta
- new_resource_list.remove(name)
- new_resource_list.insert(new_index, name)
- json.dump(
- new_resource_list, open("resources/index.json", "w", encoding="utf-8")
- )
- return True
- else:
- nonebot.logger.warning("Priority change failed, out of range")
- return False
- else:
- nonebot.logger.debug("Priority change failed, resource not loaded")
- return False
-
-
-def get_resource_metadata(name: str) -> ResourceMetadata:
- """
- 获取资源包元数据
- Args:
- name: 资源包名称,文件夹名
- Returns:
- """
- for rp in get_loaded_resource_packs():
- if rp.folder == name:
- return rp
- return ResourceMetadata()
diff --git a/src/utils/base/word_bank.py b/src/utils/base/word_bank.py
deleted file mode 100755
index 43ad4779..00000000
--- a/src/utils/base/word_bank.py
+++ /dev/null
@@ -1,57 +0,0 @@
-import json
-import os
-import random
-from typing import Iterable
-
-import nonebot
-
-word_bank: dict[str, set[str]] = {}
-
-
-def load_from_file(file_path: str):
- """
- 从json文件中加载词库
-
- Args:
- file_path: 文件路径
- """
- with open(file_path, "r", encoding="utf-8") as file:
- data = json.load(file)
- for key, value_list in data.items():
- if key not in word_bank:
- word_bank[key] = set()
- word_bank[key].update(value_list)
-
- nonebot.logger.debug(f"Loaded word bank from {file_path}")
-
-
-def load_from_dir(dir_path: str):
- """
- 从目录中加载词库
-
- Args:
- dir_path: 目录路径
- """
- for file in os.listdir(dir_path):
- try:
- file_path = os.path.join(dir_path, file)
- if os.path.isfile(file_path):
- if file.endswith(".json"):
- load_from_file(file_path)
- except Exception as e:
- nonebot.logger.error(f"Failed to load language data from {file}: {e}")
- continue
-
-
-def get_reply(kws: Iterable[str]) -> str | None:
- """
- 获取回复
- Args:
- kws: 关键词
- Returns:
- """
- for kw in kws:
- if kw in word_bank:
- return random.choice(list(word_bank[kw]))
-
- return None
diff --git a/src/utils/canvas/__init__.py b/src/utils/canvas/__init__.py
deleted file mode 100755
index 51e74d18..00000000
--- a/src/utils/canvas/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from PIL import Image, ImageDraw, ImageFont
\ No newline at end of file
diff --git a/src/utils/event/__init__.py b/src/utils/event/__init__.py
deleted file mode 100755
index b028cac6..00000000
--- a/src/utils/event/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from .get_info import *
diff --git a/src/utils/event/get_info.py b/src/utils/event/get_info.py
deleted file mode 100755
index b5e3b2c3..00000000
--- a/src/utils/event/get_info.py
+++ /dev/null
@@ -1,26 +0,0 @@
-from nonebot.adapters import satori
-from nonebot.adapters import onebot
-from src.utils.base.ly_typing import T_MessageEvent, T_GroupMessageEvent
-
-
-def get_user_id(event: T_MessageEvent):
- if isinstance(event, satori.event.Event):
- return event.user.id
- else:
- return event.user_id
-
-
-def get_group_id(event: T_GroupMessageEvent):
- if isinstance(event, satori.event.Event):
- return event.guild.id
- elif isinstance(event, onebot.v11.GroupMessageEvent):
- return event.group_id
- else:
- return None
-
-
-def get_message_type(event: T_MessageEvent) -> str:
- if isinstance(event, satori.event.Event):
- return "private" if event.guild is None else "group"
- else:
- return event.message_type
diff --git a/src/utils/extension/__init__.py b/src/utils/extension/__init__.py
deleted file mode 100755
index 80977e8a..00000000
--- a/src/utils/extension/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved
-
-@Time : 2024/8/7 下午10:40
-@Author : snowykami
-@Email : snowykami@outlook.com
-@File : __init__.py
-@Software: PyCharm
-"""
-from .lib_loader import *
-
-__all__ = [
- "load_lib"
-]
\ No newline at end of file
diff --git a/src/utils/extension/lib_loader.py b/src/utils/extension/lib_loader.py
deleted file mode 100755
index b6bcaa1d..00000000
--- a/src/utils/extension/lib_loader.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved
-
-@Time : 2024/8/7 下午10:40
-@Author : snowykami
-@Email : snowykami@outlook.com
-@File : lib_loader.py
-@Software: PyCharm
-"""
-import os
-import sys
-import platform
-import ctypes
-
-LIB_EXT = None
-PLATFORM = platform.system().lower() # linux, windows, darwin etc
-ARCH = platform.machine().lower() # x86_64/amd64 i386 i686 arm aarch64 ppc64 ppc mips sparc
-
-if "linux" in PLATFORM:
- LIB_EXT = 'so'
-elif sys.platform == 'darwin':
- LIB_EXT = 'dylib'
-elif sys.platform == 'win32':
- LIB_EXT = 'dll'
-else:
- raise RuntimeError("Unsupported platform")
-
-
-def load_lib(lib_name: str) -> ctypes.CDLL:
- """
- Load a dll/so/dylib library, without extension.
- Args:
- lib_name: str, path/to/library without extension
- Returns:
- xxx_{platform}_{arch}.{ext} ctypes.CDLL
- """
- whole_path = f"{lib_name}_{PLATFORM}_{ARCH}.{LIB_EXT}"
- if not os.path.exists(whole_path):
- raise FileNotFoundError(f"Library {whole_path} not found")
- return ctypes.CDLL(whole_path)
diff --git a/src/utils/external/__init__.py b/src/utils/external/__init__.py
deleted file mode 100755
index e69de29b..00000000
diff --git a/src/utils/external/logo.py b/src/utils/external/logo.py
deleted file mode 100755
index 96d9192e..00000000
--- a/src/utils/external/logo.py
+++ /dev/null
@@ -1,40 +0,0 @@
-async def get_user_icon(platform: str, user_id: str) -> str:
- """
- 获取用户头像
- Args:
- platform: qq, telegram, discord...
- user_id: 1234567890
-
- Returns:
- str: 头像链接
- """
- match platform:
- case "qq":
- return f"http://q1.qlogo.cn/g?b=qq&nk={user_id}&s=640"
- case "telegram":
- return f"https://t.me/i/userpic/320/{user_id}.jpg"
- case "discord":
- return f"https://cdn.discordapp.com/avatars/{user_id}/"
- case _:
- return ""
-
-
-async def get_group_icon(platform: str, group_id: str) -> str:
- """
- 获取群组头像
- Args:
- platform: qq, telegram, discord...
- group_id: 1234567890
-
- Returns:
- str: 头像链接
- """
- match platform:
- case "qq":
- return f"http://p.qlogo.cn/gh/{group_id}/{group_id}/640"
- case "telegram":
- return f"https://t.me/c/{group_id}/"
- case "discord":
- return f"https://cdn.discordapp.com/icons/{group_id}/"
- case _:
- return ""
diff --git a/src/utils/io/__init__.py b/src/utils/io/__init__.py
deleted file mode 100755
index bc30c167..00000000
--- a/src/utils/io/__init__.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from aiohttp import ClientSession
-
-from .net import *
-from .file import *
-
-
-async def simple_get(url: str) -> str:
- """
- 简单异步get请求
- Args:
- url:
-
- Returns:
- """
- async with ClientSession() as session:
- async with session.get(url) as resp:
- return await resp.text()
diff --git a/src/utils/io/file.py b/src/utils/io/file.py
deleted file mode 100755
index 0766dbe1..00000000
--- a/src/utils/io/file.py
+++ /dev/null
@@ -1,35 +0,0 @@
-import aiofiles
-from pathlib import Path
-
-
-async def write_file(
- file_path: str | Path,
- content: str | bytes,
- mode: str = "w",
- **kws,
-):
- """
- 写入文件
- Args:
- mode: 写入模式
- file_path: 文件路径
- content: 内容
- """
- async with aiofiles.open(file_path, mode, **kws) as f:
- await f.write(content)
-
-
-async def read_file(
- file_path: str | Path,
- mode: str = "r",
- **kws,
-) -> str:
- """
- 读取文件
- Args:
- file_path: 文件路径
- mode: 读取模式
- Returns:
- """
- async with aiofiles.open(file_path, mode, **kws) as f:
- return await f.read()
diff --git a/src/utils/io/net.py b/src/utils/io/net.py
deleted file mode 100755
index c346aa47..00000000
--- a/src/utils/io/net.py
+++ /dev/null
@@ -1,12 +0,0 @@
-async def fetch(url: str) -> str:
- """
- 异步get请求
- Args:
- url:
-
- Returns:
-
- """
- async with ClientSession() as session:
- async with session.get(url) as resp:
- return await resp.text()
diff --git a/src/utils/message/__init__.py b/src/utils/message/__init__.py
deleted file mode 100755
index e69de29b..00000000
diff --git a/src/utils/message/html_tool.py b/src/utils/message/html_tool.py
deleted file mode 100755
index 0fd8100c..00000000
--- a/src/utils/message/html_tool.py
+++ /dev/null
@@ -1,89 +0,0 @@
-import os
-import aiofiles # type: ignore
-import nonebot
-from nonebot import require
-
-# require("nonebot_plugin_htmlrender")
-
-from nonebot_plugin_htmlrender import ( # type: ignore
- template_to_html,
- template_to_pic,
- md_to_pic
-) # type: ignore
-
-
-async def template2html(
- template: str,
- templates: dict,
-) -> str:
- """
- Args:
- template: str: 模板文件
- **templates: dict: 模板参数
- Returns:
- HTML 正文
- """
- template_path = os.path.dirname(template)
- template_name = os.path.basename(template)
- return await template_to_html(template_path, template_name, **templates)
-
-
-async def template2image(
- template: str,
- templates: dict,
- pages=None,
- wait: int = 0,
- scale_factor: float = 1,
- debug: bool = False,
-) -> bytes:
- """
- template -> html -> image
- Args:
- debug: 输入渲染好的 html
- wait: 等待时间,单位秒
- pages: 页面参数
- template: str: 模板文件
- templates: dict: 模板参数
- scale_factor: 缩放因子,越高越清晰
- Returns:
- 图片二进制数据
- """
-
- ###
- if pages is None:
- pages = {
- "viewport": {
- "width" : 1080,
- "height": 10
- },
- }
-
- template_path = os.path.dirname(template)
- template_name = os.path.basename(template)
-
- if debug:
- # 重载资源
- raw_html = await template_to_html(
- template_name=template_name,
- template_path=template_path,
- **templates,
- )
- random_file_name = f"debug.html"
- async with aiofiles.open(
- os.path.join(template_path, random_file_name), "w", encoding="utf-8"
- ) as f:
- await f.write(raw_html)
- nonebot.logger.info("Debug HTML: %s" % f"{random_file_name}")
- return await template_to_pic(
- template_name=template_name,
- template_path=template_path,
- templates=templates,
- wait=wait,
-
- ###
- pages=pages,
- device_scale_factor=scale_factor
- ###
- )
-
-
diff --git a/src/utils/message/markdown.py b/src/utils/message/markdown.py
deleted file mode 100755
index bed2073d..00000000
--- a/src/utils/message/markdown.py
+++ /dev/null
@@ -1,209 +0,0 @@
-import base64
-from io import BytesIO
-from urllib.parse import quote
-
-import aiohttp
-from PIL import Image
-
-from ..base.config import get_config
-from ..base.data import LiteModel
-from ..base.ly_typing import T_Bot
-
-
-def escape_md(text: str) -> str:
- """
- 转义Markdown特殊字符
- Args:
- text: str: 文本
-
- Returns:
- str: 转义后文本
- """
- spacial_chars = r"\`*_{}[]()#+-.!"
- for char in spacial_chars:
- text = text.replace(char, "\\\\" + char)
- return text.replace("\n", r"\n").replace('"', r'\\\"')
-
-
-def escape_decorator(func):
- def wrapper(text: str):
- return func(escape_md(text))
-
- return wrapper
-
-
-def compile_md(comps: list[str]) -> str:
- """
- 合成Markdown文本
- Args:
- comps: list[str]: 组件列表
-
- Returns:
- str: 编译后文本
- """
- return "".join(comps)
-
-
-class MarkdownComponent:
- @staticmethod
- def heading(text: str, level: int = 1) -> str:
- """标题"""
- assert 1 <= level <= 6, "标题级别应在 1-6 之间"
- return f"{'#' * level} {text}\n"
-
- @staticmethod
- def bold(text: str) -> str:
- """粗体"""
- return f"**{text}**"
-
- @staticmethod
- def italic(text: str) -> str:
- """斜体"""
- return f"*{text}*"
-
- @staticmethod
- def strike(text: str) -> str:
- """删除线"""
- return f"~~{text}~~"
-
- @staticmethod
- def code(text: str) -> str:
- """行内代码"""
- return f"`{text}`"
-
- @staticmethod
- def code_block(text: str, language: str = "") -> str:
- """代码块"""
- return f"```{language}\n{text}\n```\n"
-
- @staticmethod
- def quote(text: str) -> str:
- """引用"""
- return f"> {text}\n\n"
-
- @staticmethod
- def link(text: str, url: str, symbol: bool = True) -> str:
- """
- 链接
-
- Args:
- text: 链接文本
- url: 链接地址
- symbol: 是否显示链接图标, mqqapi请使用False
- """
- return f"[{'🔗' if symbol else ''}{text}]({url})"
-
- @staticmethod
- def image(url: str, *, size: tuple[int, int]) -> str:
- """
- 图片,本地图片不建议直接使用
- Args:
- url: 图片链接
- size: 图片大小
-
- Returns:
- markdown格式的图片
- """
- return f"![image #{size[0]}px #{size[1]}px]({url})"
-
- @staticmethod
- async def auto_image(image: str | bytes, bot: T_Bot) -> str:
- """
- 自动获取图片大小
- Args:
- image: 本地图片路径 | 图片url http/file | 图片bytes
- bot: bot对象,用于上传图片到图床
-
- Returns:
- markdown格式的图片
- """
- if isinstance(image, bytes):
- # 传入为二进制图片
- image_obj = Image.open(BytesIO(image))
- base64_string = base64.b64encode(image_obj.tobytes()).decode("utf-8")
- url = await bot.call_api("upload_image", file=f"base64://{base64_string}")
- size = image_obj.size
- elif isinstance(image, str):
- # 传入链接或本地路径
- if image.startswith("http"):
- # 网络请求
- async with aiohttp.ClientSession() as session:
- async with session.get(image) as resp:
- image_data = await resp.read()
- url = image
- size = Image.open(BytesIO(image_data)).size
-
- else:
- # 本地路径/file://
- image_obj = Image.open(image.replace("file://", ""))
- base64_string = base64.b64encode(image_obj.tobytes()).decode("utf-8")
- url = await bot.call_api("upload_image", file=f"base64://{base64_string}")
- size = image_obj.size
- else:
- raise ValueError("图片类型错误")
-
- return MarkdownComponent.image(url, size=size)
-
- @staticmethod
- def table(data: list[list[any]]) -> str:
- """
- 表格
- Args:
- data: 表格数据,二维列表
- Returns:
- markdown格式的表格
- """
- # 表头
- table = "|".join(map(str, data[0])) + "\n"
- table += "|".join([":-:" for _ in range(len(data[0]))]) + "\n"
- # 表内容
- for row in data[1:]:
- table += "|".join(map(str, row)) + "\n"
- return table
-
- @staticmethod
- def paragraph(text: str) -> str:
- """
- 段落
- Args:
- text: 段落内容
- Returns:
- markdown格式的段落
- """
- return f"{text}\n"
-
-
-class Mqqapi:
- @staticmethod
- @escape_decorator
- def cmd(text: str, cmd: str, enter: bool = True, reply: bool = False, use_cmd_start: bool = True) -> str:
- """
- 生成点击回调文本
- Args:
- text: 显示内容
- cmd: 命令
- enter: 是否自动发送
- reply: 是否回复
- use_cmd_start: 是否使用配置的命令前缀
-
- Returns:
- [text](mqqapi://) markdown格式的可点击回调文本,类似于链接
- """
-
- if use_cmd_start:
- command_start = get_config("command_start", [])
- if command_start:
- # 若命令前缀不为空,则使用配置的第一个命令前缀
- cmd = f"{command_start[0]}{cmd}"
- return f"[{text}](mqqapi://aio/inlinecmd?command={quote(cmd)}&reply={str(reply).lower()}&enter={str(enter).lower()})"
-
-
-class RenderData(LiteModel):
- label: str
- visited_label: str
- style: int
-
-
-class Button(LiteModel):
- id: int
- render_data: RenderData
diff --git a/src/utils/message/message.py b/src/utils/message/message.py
deleted file mode 100755
index dd60e6d3..00000000
--- a/src/utils/message/message.py
+++ /dev/null
@@ -1,202 +0,0 @@
-import base64
-import io
-from typing import Any
-from urllib.parse import quote
-
-import aiofiles
-import aiohttp
-import nonebot
-from PIL import Image
-from nonebot.adapters.onebot import v11
-
-from .html_tool import md_to_pic
-from .. import load_from_yaml
-from ..base.ly_typing import T_Bot, T_Message, T_MessageEvent
-
-config = load_from_yaml("config.yml")
-
-
-async def broadcast_to_superusers(message: str | T_Message, markdown: bool = False):
- """广播消息给超级用户"""
- for bot in nonebot.get_bots().values():
- for user_id in config.get("superusers", []):
- if markdown:
- await MarkdownMessage.send_md(message, bot, message_type="private", session_id=user_id)
- else:
- await bot.send_private_msg(user_id=user_id, message=message)
-
-
-class MarkdownMessage:
- @staticmethod
- async def send_md(
- markdown: str,
- bot: T_Bot, *,
- message_type: str = None,
- session_id: str | int = None
- ) -> dict[str, Any] | None:
- """
- 发送Markdown消息,支持自动转为图片发送
- Args:
- markdown:
- bot:
- message_type:
- session_id:
- Returns:
-
- """
- plain_markdown = markdown.replace("[🔗", "[")
- md_image_bytes = await md_to_pic(
- md=plain_markdown,
- width=540,
- device_scale_factor=4
- )
- print(md_image_bytes)
- data = await bot.send_msg(
- message_type=message_type,
- group_id=session_id,
- user_id=session_id,
- message=v11.MessageSegment.image(md_image_bytes),
- )
- return data
-
- @staticmethod
- async def send_image(
- image: bytes | str,
- bot: T_Bot, *,
- message_type: str = None,
- session_id: str | int = None,
- event: T_MessageEvent = None,
- **kwargs
- ) -> dict:
- """
- 发送单张装逼大图
- Args:
- image: 图片字节流或图片本地路径,链接请使用Markdown.image_async方法获取后通过send_md发送
- bot: bot instance
- message_type: message message_type
- session_id: session id
- event: event
- kwargs: other arguments
- Returns:
- dict: response data
- """
- if isinstance(image, str):
- async with aiofiles.open(image, "rb") as f:
- image = await f.read()
- method = 2
- if method == 2:
- base64_string = base64.b64encode(image).decode("utf-8")
- data = await bot.call_api("upload_image", file=f"base64://{base64_string}")
- await MarkdownMessage.send_md(MarkdownMessage.image(data, Image.open(io.BytesIO(image)).size), bot,
- message_type=message_type,
- session_id=session_id)
-
- # 其他实现端方案
- else:
- image_message_id = (await bot.send_private_msg(
- user_id=bot.self_id,
- message=[
- v11.MessageSegment.image(file=image)
- ]
- ))["message_id"]
- image_url = (await bot.get_msg(message_id=image_message_id))["message"][0]["data"]["url"]
- image_size = Image.open(io.BytesIO(image)).size
- image_md = MarkdownMessage.image(image_url, image_size)
- return await MarkdownMessage.send_md(image_md, bot, message_type=message_type, session_id=session_id)
-
- if data is None:
- data = await bot.send_msg(
- message_type=message_type,
- group_id=session_id,
- user_id=session_id,
- message=v11.MessageSegment.image(image),
- **kwargs
- )
- return data
-
- @staticmethod
- async def get_image_url(image: bytes | str, bot: T_Bot) -> str:
- """把图片上传到图床,返回链接
- Args:
- bot: 发送的bot
- image: 图片字节流或图片本地路径
- Returns:
- """
- # 等林文轩修好Lagrange.OneBot再说
-
- @staticmethod
- def btn_cmd(name: str, cmd: str, reply: bool = False, enter: bool = True) -> str:
- """生成点击回调按钮
- Args:
- name: 按钮显示内容
- cmd: 发送的命令,已在函数内url编码,不需要再次编码
- reply: 是否以回复的方式发送消息
- enter: 自动发送消息则为True,否则填充到输入框
-
- Returns:
- markdown格式的可点击回调按钮
-
- """
- if "" not in config.get("command_start", ["/"]) and config.get("alconna_use_command_start", False):
- cmd = f"{config['command_start'][0]}{cmd}"
- return f"[{name}](mqqapi://aio/inlinecmd?command={quote(cmd)}&reply={str(reply).lower()}&enter={str(enter).lower()})"
-
- @staticmethod
- def btn_link(name: str, url: str) -> str:
- """生成点击链接按钮
- Args:
- name: 链接显示内容
- url: 链接地址
-
- Returns:
- markdown格式的链接
-
- """
- return f"[🔗{name}]({url})"
-
- @staticmethod
- def image(url: str, size: tuple[int, int]) -> str:
- """构建图片链接
- Args:
- size:
- url: 图片链接
-
- Returns:
- markdown格式的图片
-
- """
- return f"![image #{size[0]}px #{size[1]}px]({url})"
-
- @staticmethod
- async def image_async(url: str) -> str:
- """获取图片,自动请求获取大小,异步
- Args:
- url: 图片链接
-
- Returns:
- 图片Markdown语法: 
-
- """
- try:
- async with aiohttp.ClientSession() as session:
- async with session.get(url) as resp:
- image = Image.open(io.BytesIO(await resp.read()))
- return MarkdownMessage.image(url, image.size)
- except Exception as e:
- nonebot.logger.error(f"get image error: {e}")
- return "[Image Error]"
-
- @staticmethod
- def escape(text: str) -> str:
- """转义特殊字符
- Args:
- text: 需要转义的文本,请勿直接把整个markdown文本传入,否则会转义掉所有字符
-
- Returns:
- 转义后的文本
-
- """
- chars = "*[]()~_`>#+=|{}.!"
- for char in chars:
- text = text.replace(char, f"\\\\{char}")
- return text
diff --git a/src/utils/message/string_tool.py b/src/utils/message/string_tool.py
deleted file mode 100755
index 32cf9a0a..00000000
--- a/src/utils/message/string_tool.py
+++ /dev/null
@@ -1,101 +0,0 @@
-import nonebot
-
-
-def convert_duration(text: str, default) -> float:
- """
- 转换自然语言时间为秒数
- Args:
- text: 1d2h3m
- default: 出错时返回
-
- Returns:
- float: 总秒数
- """
- units = {
- "d" : 86400,
- "h" : 3600,
- "m" : 60,
- "s" : 1,
- "ms": 0.001
- }
-
- duration = 0
- current_number = ''
- current_unit = ''
- try:
- for char in text:
- if char.isdigit():
- current_number += char
- else:
- if current_number:
- duration += int(current_number) * units[current_unit]
- current_number = ''
- if char in units:
- current_unit = char
- else:
- current_unit = ''
-
- if current_number:
- duration += int(current_number) * units[current_unit]
-
- return duration
-
- except BaseException as e:
- nonebot.logger.info(f"convert_duration error: {e}")
- return default
-
-
-def convert_time_to_seconds(time_str):
- """转换自然语言时长为秒数
- Args:
- time_str: 1d2m3s
-
- Returns:
-
- """
- seconds = 0
- current_number = ''
-
- for char in time_str:
- if char.isdigit() or char == '.':
- current_number += char
- elif char == 'd':
- seconds += float(current_number) * 24 * 60 * 60
- current_number = ''
- elif char == 'h':
- seconds += float(current_number) * 60 * 60
- current_number = ''
- elif char == 'm':
- seconds += float(current_number) * 60
- current_number = ''
- elif char == 's':
- seconds += float(current_number)
- current_number = ''
-
- return int(seconds)
-
-
-def convert_seconds_to_time(seconds):
- """转换秒数为自然语言时长
- Args:
- seconds: 10000
-
- Returns:
-
- """
- d = seconds // (24 * 60 * 60)
- h = (seconds % (24 * 60 * 60)) // (60 * 60)
- m = (seconds % (60 * 60)) // 60
- s = seconds % 60
-
- # 若值为0则不显示
- time_str = ''
- if d:
- time_str += f"{d}d"
- if h:
- time_str += f"{h}h"
- if m:
- time_str += f"{m}m"
- if not time_str:
- time_str = f"{s}s"
- return time_str
diff --git a/src/utils/message/tools.py b/src/utils/message/tools.py
deleted file mode 100755
index e458ee26..00000000
--- a/src/utils/message/tools.py
+++ /dev/null
@@ -1,99 +0,0 @@
-import random
-from importlib.metadata import PackageNotFoundError, version
-
-
-def clamp(value: float, min_value: float, max_value: float) -> float | int:
- """将值限制在最小值和最大值之间
-
- Args:
- value (float): 要限制的值
- min_value (float): 最小值
- max_value (float): 最大值
-
- Returns:
- float: 限制后的值
- """
- return max(min(value, max_value), min_value)
-
-
-def convert_size(size: int, precision: int = 2, add_unit: bool = True, suffix: str = " XiB") -> str | float:
- """把字节数转换为人类可读的字符串,计算正负
-
- Args:
-
- add_unit: 是否添加单位,False后则suffix无效
- suffix: XiB或XB
- precision: 浮点数的小数点位数
- size (int): 字节数
-
- Returns:
-
- str: The human-readable string, e.g. "1.23 GB".
- """
- is_negative = size < 0
- size = abs(size)
- for unit in ("", "K", "M", "G", "T", "P", "E", "Z"):
- if size < 1024:
- break
- size /= 1024
- if is_negative:
- size = -size
- if add_unit:
- return f"{size:.{precision}f}{suffix.replace('X', unit)}"
- else:
- return size
-
-
-def keywords_in_text(keywords: list[str], text: str, all_matched: bool) -> bool:
- """
- 检查关键词是否在文本中
- Args:
- keywords: 关键词列表
- text: 文本
- all_matched: 是否需要全部匹配
-
- Returns:
-
- """
- if all_matched:
- for keyword in keywords:
- if keyword not in text:
- return False
- return True
- else:
- for keyword in keywords:
- if keyword in text:
- return True
- return False
-
-
-def check_for_package(package_name: str) -> bool:
- try:
- version(package_name)
- return True
- except PackageNotFoundError:
- return False
-
-
-def random_ascii_string(length: int) -> str:
- """
- 生成随机ASCII字符串
- Args:
- length:
-
- Returns:
-
- """
- return "".join([chr(random.randint(33, 126)) for _ in range(length)])
-
-
-def random_hex_string(length: int) -> str:
- """
- 生成随机十六进制字符串
- Args:
- length:
-
- Returns:
-
- """
- return "".join([random.choice("0123456789abcdef") for _ in range(length)])
diff --git a/src/utils/message/union.py b/src/utils/message/union.py
deleted file mode 100755
index e69de29b..00000000
diff --git a/src/utils/nb/__init__.py b/src/utils/nb/__init__.py
deleted file mode 100755
index e69de29b..00000000
diff --git a/src/utils/satori_utils/__init__.py b/src/utils/satori_utils/__init__.py
deleted file mode 100755
index 192714bb..00000000
--- a/src/utils/satori_utils/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from .user_info import user_infos
-from .count_friends import count_friends
-from .count_groups import count_groups
diff --git a/src/utils/satori_utils/count_friends.py b/src/utils/satori_utils/count_friends.py
deleted file mode 100755
index 3f7b18ea..00000000
--- a/src/utils/satori_utils/count_friends.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from nonebot.adapters import satori
-
-
-async def count_friends(bot: satori.Bot) -> int:
- cnt: int = 0
-
- friend_response = await bot.friend_list()
- while friend_response.next is not None:
- cnt += len(friend_response.data)
- friend_response = await bot.friend_list(next_token=friend_response.next)
-
- cnt += len(friend_response.data)
- return cnt - 1
diff --git a/src/utils/satori_utils/count_groups.py b/src/utils/satori_utils/count_groups.py
deleted file mode 100755
index 789a40b7..00000000
--- a/src/utils/satori_utils/count_groups.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from nonebot.adapters import satori
-
-
-async def count_groups(bot: satori.Bot) -> int:
- cnt: int = 0
-
- group_response = await bot.guild_list()
- while group_response.next is not None:
- cnt += len(group_response.data)
- group_response = await bot.friend_list(next_token=group_response.next)
-
- cnt += len(group_response.data)
- return cnt - 1
diff --git a/src/utils/satori_utils/user_info.py b/src/utils/satori_utils/user_info.py
deleted file mode 100755
index 6500e719..00000000
--- a/src/utils/satori_utils/user_info.py
+++ /dev/null
@@ -1,64 +0,0 @@
-import nonebot
-
-from nonebot.adapters import satori
-from nonebot.adapters.satori.models import User
-
-
-class UserInfo:
- user_infos: dict = {}
-
- async def load_friends(self, bot: satori.Bot):
- nonebot.logger.info("Update user info from friends")
- friend_response = await bot.friend_list()
- while friend_response.next is not None:
- for i in friend_response.data:
- i: User = i
- self.user_infos[str(i.id)] = i
- friend_response = await bot.friend_list(next_token=friend_response.next)
-
- for i in friend_response.data:
- i: User = i
- self.user_infos[str(i.id)] = i
-
- nonebot.logger.info("Finish update user info")
-
- async def get(self, uid: int | str) -> User | None:
- try:
- return self.user_infos[str(uid)]
- except KeyError:
- return None
-
- async def put(self, user: User) -> bool:
- """
- 向用户信息数据库中添加/修改一项,返回值仅代表数据是否变更,不代表操作是否成功
- Args:
- user: 要加入数据库的用户
-
- Returns: 当数据库中用户信息发生变化时返回 True, 否则返回 False
-
- """
- try:
- old_user: User = self.user_infos[str(user.id)]
- attr_edited = False
- if user.name is not None:
- if old_user.name != user.name:
- attr_edited = True
- self.user_infos[str(user.id)].name = user.name
- if user.nick is not None:
- if old_user.nick != user.nick:
- attr_edited = True
- self.user_infos[str(user.id)].nick = user.nick
- if user.avatar is not None:
- if old_user.avatar != user.avatar:
- attr_edited = True
- self.user_infos[str(user.id)].avatar = user.avatar
- return attr_edited
- except KeyError:
- self.user_infos[str(user.id)] = user
- return True
-
- def __init__(self):
- pass
-
-
-user_infos = UserInfo()
diff --git a/tests/test_config_load.py b/tests/test_config_load.py
deleted file mode 100755
index b79527b8..00000000
--- a/tests/test_config_load.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Copyright (C) 2020-2025 LiteyukiStudio. All Rights Reserved
-
-@Time : 2024/8/11 下午11:07
-@Author : snowykami
-@Email : snowykami@outlook.com
-@File : test_config_load.py
-@Software: PyCharm
-"""
-import json
-import os
-import sys
-
-sys.path.insert(0, os.getcwd())
-from liteyuki.config import load_config_in_default
-
-
-def test_default_load():
- config = load_config_in_default()
- print(json.dumps(config, indent=4, ensure_ascii=False))
diff --git a/tests/test_core.py b/tests/test_core.py
deleted file mode 100755
index b8983b04..00000000
--- a/tests/test_core.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from liteyuki import LiteyukiBot
-
-if __name__ == "__main__":
- lyb = LiteyukiBot()
- lyb.run()
\ No newline at end of file
diff --git a/tests/test_ipc.py b/tests/test_ipc.py
deleted file mode 100755
index ed039542..00000000
--- a/tests/test_ipc.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from liteyuki.comm import Channel as Chan
-from multiprocessing import Process
-
-
-def p1(chan: Chan):
- for i in range(10):
- chan.send(i)
-
-
-def p2(chan: Chan):
- while True:
- print(chan.recv())
-
-
-def test_ipc():
- chan = Chan("Name")
-
- p1_proc = Process(target=p1, args=(chan,))
- p2_proc = Process(target=p2, args=(chan,))
-
- p1_proc.start()
- p2_proc.start()
diff --git a/tests/test_logger.py b/tests/test_logger.py
deleted file mode 100755
index d3322709..00000000
--- a/tests/test_logger.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from liteyuki import logger
-
-def test_logger():
- logger.info('Hello, World!')
- logger.debug('Hello, World!')
- logger.warning('Hello, World!')
- logger.error('Hello, World!')
- logger.critical('Hello, World!')
- logger.success("Hello, World!")
diff --git a/tests/test_lyapi.py b/tests/test_lyapi.py
deleted file mode 100755
index e69de29b..00000000
diff --git a/tests/test_lyfunc.py b/tests/test_lyfunc.py
deleted file mode 100755
index e69de29b..00000000
diff --git a/todo.md b/todo.md
deleted file mode 100755
index 7d062446..00000000
--- a/todo.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# TODO
-
-- [ ] 工作流适配新版本插件检查和发布
-- [ ] 修复与其他框架的会话对接(目前只能管理)
-- [ ] 插件的检查和发布
-- [ ] 提取utils可复用部分作为独立模块