diff --git a/404.html b/404.html index d54c3268..150da189 100644 --- a/404.html +++ b/404.html @@ -8,7 +8,7 @@ - + @@ -17,7 +17,7 @@
- + \ No newline at end of file diff --git a/assets/app.B6hFbXUP.js b/assets/app.C0Sman5N.js similarity index 95% rename from assets/app.B6hFbXUP.js rename to assets/app.C0Sman5N.js index 95f2eb7a..59269fe2 100644 --- a/assets/app.B6hFbXUP.js +++ b/assets/app.C0Sman5N.js @@ -1 +1 @@ -import{t as p}from"./chunks/theme.rDkprPqD.js";import{U as o,a5 as u,a6 as c,a7 as l,a8 as f,a9 as d,aa as m,ab as h,ac as g,ad as A,ae as y,d as P,u as v,y as C,x as b,af as w,ag as E,ah as R,ai as S}from"./chunks/framework.C3o_UkTa.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return C(()=>{b(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&w(),E(),R(),s.setup&&s.setup(),()=>S(s.Layout)}});async function x(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function D(){return g(T)}function _(){let e=o,a;return A(t=>{let n=y(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&x().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{x as createApp}; +import{t as p}from"./chunks/theme.Cfwe0ZOB.js";import{U as o,a5 as u,a6 as c,a7 as l,a8 as f,a9 as d,aa as m,ab as h,ac as g,ad as A,ae as y,d as P,u as v,y as C,x as b,af as w,ag as E,ah as R,ai as S}from"./chunks/framework.C3o_UkTa.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return C(()=>{b(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&w(),E(),R(),s.setup&&s.setup(),()=>S(s.Layout)}});async function x(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function D(){return g(T)}function _(){let e=o,a;return A(t=>{let n=y(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&x().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{x as createApp}; diff --git a/assets/chunks/@localSearchIndexen.CgaiBpBo.js b/assets/chunks/@localSearchIndexen.CgaiBpBo.js deleted file mode 100644 index 0c955f00..00000000 --- a/assets/chunks/@localSearchIndexen.CgaiBpBo.js +++ /dev/null @@ -1 +0,0 @@ -const e=`{"documentCount":321,"nextId":321,"documentIds":{"0":"/en/deploy/config.html#configurations","1":"/en/deploy/config.html#basic-configuration","2":"/en/deploy/config.html#other-configurations","3":"/en/deploy/config.html#example-configuration-of-onebot-implementation-side-connected-to-nonebot","4":"/en/deploy/config.html#other","5":"/en/deploy/fandq.html#faq","6":"/en/deploy/fandq.html#frequently-asked-questions","7":"/en/deploy/fandq.html#other-questions","8":"/en/deploy/fandq.html#recommended-solution-qq","9":"/en/deploy/fandq.html#recommended-solution-minecraft","10":"/en/deploy/fandq.html#acknowledgements","11":"/en/deploy/install.html#install","12":"/en/deploy/install.html#normal-installation","13":"/en/deploy/install.html#run-with-docker","14":"/en/deploy/install.html#use-trss-script","15":"/en/deploy/install.html#device-requirements","16":"/en/deploy/install.html#for-other-questions-please-refer-to-faq","17":"/en/dev/api/api.html#liteyuki","18":"/en/dev/api/api.html#var-version","19":"/en/dev/api/bot/bot.html#liteyuki-bot","20":"/en/dev/api/bot/bot.html#class-liteyukibot","21":"/en/dev/api/bot/bot.html#def-init-self-args-kwargs-none","22":"/en/dev/api/bot/bot.html#async-def-run-self","23":"/en/dev/api/bot/bot.html#def-run-self","24":"/en/dev/api/bot/bot.html#async-def-keep-alive-self","25":"/en/dev/api/bot/bot.html#def-handle-exit-self-signum-frame","26":"/en/dev/api/bot/bot.html#def-restart-self-delay-int-0","27":"/en/dev/api/bot/bot.html#def-restart-process-self-name-optional-str-none","28":"/en/dev/api/bot/bot.html#def-init-self-args-kwargs","29":"/en/dev/api/bot/bot.html#def-init-logger-self","30":"/en/dev/api/bot/bot.html#def-stop-self","31":"/en/dev/api/bot/bot.html#def-on-before-start-self-func-lifespan-func","32":"/en/dev/api/bot/bot.html#def-on-after-start-self-func-lifespan-func","33":"/en/dev/api/bot/bot.html#def-on-after-shutdown-self-func-lifespan-func","34":"/en/dev/api/bot/bot.html#def-on-before-process-shutdown-self-func-lifespan-func","35":"/en/dev/api/bot/bot.html#def-on-before-process-restart-self-func-lifespan-func","36":"/en/dev/api/bot/bot.html#def-on-after-restart-self-func-lifespan-func","37":"/en/dev/api/bot/bot.html#def-get-bot-liteyukibot","38":"/en/dev/api/bot/bot.html#def-get-config-key-str-default-any-none-any","39":"/en/dev/api/bot/bot.html#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","40":"/en/dev/api/bot/bot.html#def-print-logo","41":"/en/dev/api/bot/#liteyuki-bot","42":"/en/dev/api/bot/#class-liteyukibot","43":"/en/dev/api/bot/#def-init-self-args-kwargs-none","44":"/en/dev/api/bot/#async-def-run-self","45":"/en/dev/api/bot/#def-run-self","46":"/en/dev/api/bot/#async-def-keep-alive-self","47":"/en/dev/api/bot/#def-handle-exit-self-signum-frame","48":"/en/dev/api/bot/#def-restart-self-delay-int-0","49":"/en/dev/api/bot/#def-restart-process-self-name-optional-str-none","50":"/en/dev/api/bot/#def-init-self-args-kwargs","51":"/en/dev/api/bot/#def-init-logger-self","52":"/en/dev/api/bot/#def-stop-self","53":"/en/dev/api/bot/#def-on-before-start-self-func-lifespan-func","54":"/en/dev/api/bot/#def-on-after-start-self-func-lifespan-func","55":"/en/dev/api/bot/#def-on-after-shutdown-self-func-lifespan-func","56":"/en/dev/api/bot/#def-on-before-process-shutdown-self-func-lifespan-func","57":"/en/dev/api/bot/#def-on-before-process-restart-self-func-lifespan-func","58":"/en/dev/api/bot/#def-on-after-restart-self-func-lifespan-func","59":"/en/dev/api/bot/#def-get-bot-liteyukibot","60":"/en/dev/api/bot/#def-get-config-key-str-default-any-none-any","61":"/en/dev/api/bot/#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","62":"/en/dev/api/bot/#def-print-logo","63":"/en/dev/api/bot/lifespan.html#liteyuki-bot-lifespan","64":"/en/dev/api/bot/lifespan.html#class-lifespan","65":"/en/dev/api/bot/lifespan.html#def-init-self-none","66":"/en/dev/api/bot/lifespan.html#async-def-run-funcs-funcs-list-async-lifespan-func-process-lifespan-func-args-kwargs-none","67":"/en/dev/api/bot/lifespan.html#def-on-before-start-self-func-lifespan-func-lifespan-func","68":"/en/dev/api/bot/lifespan.html#def-on-after-start-self-func-lifespan-func-lifespan-func","69":"/en/dev/api/bot/lifespan.html#def-on-before-process-shutdown-self-func-lifespan-func-lifespan-func","70":"/en/dev/api/bot/lifespan.html#def-on-after-shutdown-self-func-lifespan-func-lifespan-func","71":"/en/dev/api/bot/lifespan.html#def-on-before-process-restart-self-func-lifespan-func-lifespan-func","72":"/en/dev/api/bot/lifespan.html#def-on-after-restart-self-func-lifespan-func-lifespan-func","73":"/en/dev/api/bot/lifespan.html#async-def-before-start-self-none","74":"/en/dev/api/bot/lifespan.html#async-def-after-start-self-none","75":"/en/dev/api/bot/lifespan.html#async-def-before-process-shutdown-self-none","76":"/en/dev/api/bot/lifespan.html#async-def-after-shutdown-self-none","77":"/en/dev/api/bot/lifespan.html#async-def-before-process-restart-self-none","78":"/en/dev/api/bot/lifespan.html#async-def-after-restart-self-none","79":"/en/dev/api/comm/channel.html#liteyuki-comm-channel","80":"/en/dev/api/comm/channel.html#class-channel-generic-t","81":"/en/dev/api/comm/channel.html#def-init-self-name-str-type-check-optional-bool-none","82":"/en/dev/api/comm/channel.html#def-get-generic-type-self-optional-type","83":"/en/dev/api/comm/channel.html#def-validate-structure-self-data-any-structure-type-bool","84":"/en/dev/api/comm/channel.html#def-send-self-data-t","85":"/en/dev/api/comm/channel.html#def-receive-self-t","86":"/en/dev/api/comm/channel.html#async-def-async-receive-self-t","87":"/en/dev/api/comm/channel.html#def-on-receive-self-filter-func-optional-filter-func-none-callable-callable-t-any-callable-t-any","88":"/en/dev/api/comm/channel.html#async-def-run-on-receive-funcs-self-data-any","89":"/en/dev/api/comm/channel.html#async-def-start-receive-loop-self","90":"/en/dev/api/comm/channel.html#var-active-channel","91":"/en/dev/api/comm/channel.html#var-publish-channel","92":"/en/dev/api/comm/channel.html#var-channel-deliver-active-channel","93":"/en/dev/api/comm/channel.html#def-set-channel-name-str-channel-channel","94":"/en/dev/api/comm/channel.html#def-set-channels-channels-dict-str-channel","95":"/en/dev/api/comm/channel.html#def-get-channel-name-str-channel","96":"/en/dev/api/comm/channel.html#def-get-channels-dict-str-channel","97":"/en/dev/api/comm/channel.html#def-on-set-channel-data-tuple-str-dict-str-any","98":"/en/dev/api/comm/channel.html#def-on-get-channel-data-tuple-str-dict-str-any","99":"/en/dev/api/comm/channel.html#def-on-get-channels-data-tuple-str-dict-str-any","100":"/en/dev/api/comm/comm.html#liteyuki-comm","101":"/en/dev/api/comm/#liteyuki-comm","102":"/en/dev/api/comm/event.html#liteyuki-comm-event","103":"/en/dev/api/comm/event.html#class-event","104":"/en/dev/api/comm/event.html#def-init-self-name-str-data-dict-str-any","105":"/en/dev/api/comm/rpc.html#liteyuki-comm-rpc","106":"/en/dev/api/comm/rpc.html#class-rpc","107":"/en/dev/api/comm/rpc.html#def-init-self-on-calling-on-calling-func-none","108":"/en/dev/api/comm/rpc.html#def-call-self-args-tuple-kwargs-dict-any","109":"/en/dev/api/comm/socks_channel.html#liteyuki-comm-socks-channel","110":"/en/dev/api/comm/socks_channel.html#class-sockschannel","111":"/en/dev/api/comm/socks_channel.html#def-init-self-name-str","112":"/en/dev/api/comm/socks_channel.html#def-send-self-data","113":"/en/dev/api/comm/socks_channel.html#def-receive-self","114":"/en/dev/api/comm/socks_channel.html#def-close-self","115":"/en/dev/api/comm/storage.html#liteyuki-comm-storage","116":"/en/dev/api/comm/storage.html#var-on-main-subscriber-receive-funcs","117":"/en/dev/api/comm/storage.html#var-on-sub-subscriber-receive-funcs","118":"/en/dev/api/comm/storage.html#class-keyvaluestore","119":"/en/dev/api/comm/storage.html#def-init-self","120":"/en/dev/api/comm/storage.html#def-set-self-key-str-value-any-none","121":"/en/dev/api/comm/storage.html#def-get-self-key-str-default-optional-any-none-optional-any","122":"/en/dev/api/comm/storage.html#def-delete-self-key-str-ignore-key-error-bool-true-none","123":"/en/dev/api/comm/storage.html#def-get-all-self-dict-str-any","124":"/en/dev/api/comm/storage.html#def-publish-self-channel-str-data-any-none","125":"/en/dev/api/comm/storage.html#def-on-subscriber-receive-self-channel-str-callable-on-receive-func-on-receive-func","126":"/en/dev/api/comm/storage.html#async-def-run-subscriber-receive-funcs-channel-str-data-any","127":"/en/dev/api/comm/storage.html#async-def-start-receive-loop-self","128":"/en/dev/api/comm/storage.html#class-globalkeyvaluestore","129":"/en/dev/api/comm/storage.html#def-get-instance-cls","130":"/en/dev/api/comm/storage.html#attr-instance-none","131":"/en/dev/api/comm/storage.html#attr-lock-threading-lock","132":"/en/dev/api/comm/storage.html#var-ref-count","133":"/en/dev/api/comm/storage.html#def-on-get-data-tuple-str-dict-str-any","134":"/en/dev/api/comm/storage.html#def-on-set-data-tuple-str-dict-str-any","135":"/en/dev/api/comm/storage.html#def-on-delete-data-tuple-str-dict-str-any","136":"/en/dev/api/comm/storage.html#def-on-get-all-data-tuple-str-dict-str-any","137":"/en/dev/api/config.html#liteyuki-config","138":"/en/dev/api/config.html#def-flat-config-config-dict-str-any-dict-str-any","139":"/en/dev/api/config.html#def-load-from-yaml-file-str-dict-str-any","140":"/en/dev/api/config.html#def-load-from-json-file-str-dict-str-any","141":"/en/dev/api/config.html#def-load-from-toml-file-str-dict-str-any","142":"/en/dev/api/config.html#def-load-from-files-files-str-no-warning-bool-false-dict-str-any","143":"/en/dev/api/config.html#def-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any","144":"/en/dev/api/config.html#def-load-config-in-default-no-waring-bool-false-dict-str-any","145":"/en/dev/api/core/core.html#liteyuki-core","146":"/en/dev/api/core/#liteyuki-core","147":"/en/dev/api/core/manager.html#liteyuki-core-manager","148":"/en/dev/api/core/manager.html#class-channeldeliver","149":"/en/dev/api/core/manager.html#def-init-self-active-channel-any-passive-channel-any-channel-deliver-active-channel-channel-any-channel-deliver-passive-channel-tuple-str-dict-publish-channel-tuple-str-any","150":"/en/dev/api/core/manager.html#class-processmanager","151":"/en/dev/api/core/manager.html#def-init-self-lifespan-lifespan","152":"/en/dev/api/core/manager.html#async-def-run-process-self-name-str","153":"/en/dev/api/core/manager.html#async-def-start-all-self","154":"/en/dev/api/core/manager.html#def-add-target-self-name-str-target-target-func-args-tuple-kwargs-none","155":"/en/dev/api/core/manager.html#def-join-all-self","156":"/en/dev/api/core/manager.html#def-terminate-self-name-str","157":"/en/dev/api/core/manager.html#def-terminate-all-self","158":"/en/dev/api/core/manager.html#def-is-process-alive-self-name-str-bool","159":"/en/dev/api/dev/dev.html#liteyuki-dev","160":"/en/dev/api/dev/#liteyuki-dev","161":"/en/dev/api/dev/observer.html#liteyuki-dev-observer","162":"/en/dev/api/dev/observer.html#var-callback-func","163":"/en/dev/api/dev/observer.html#var-filter-func","164":"/en/dev/api/dev/observer.html#def-debounce-wait","165":"/en/dev/api/dev/observer.html#class-codemodifiedhandler-filesystemeventhandler","166":"/en/dev/api/dev/observer.html#def-on-modified-self-event","167":"/en/dev/api/dev/observer.html#def-on-created-self-event","168":"/en/dev/api/dev/observer.html#def-on-deleted-self-event","169":"/en/dev/api/dev/observer.html#def-on-moved-self-event","170":"/en/dev/api/dev/observer.html#def-on-any-event-self-event","171":"/en/dev/api/dev/observer.html#def-on-file-system-event-directories-tuple-str-recursive-bool-true-event-filter-filter-func-none-callable-callback-func-callback-func","172":"/en/dev/api/dev/plugin.html#liteyuki-dev-plugin","173":"/en/dev/api/dev/plugin.html#def-run-plugins-module-path-str-path","174":"/en/dev/api/exception.html#liteyuki-exception","175":"/en/dev/api/exception.html#class-liteyukiexception-baseexception","176":"/en/dev/api/#liteyuki","177":"/en/dev/api/#var-version","178":"/en/dev/api/log.html#liteyuki-log","179":"/en/dev/api/log.html#def-get-format-level-str-str","180":"/en/dev/api/log.html#def-init-log-config-dict","181":"/en/dev/api/message/event.html#liteyuki-message-event","182":"/en/dev/api/message/event.html#class-messageevent","183":"/en/dev/api/message/event.html#def-init-self-bot-id-str-message-list-dict-str-any-str-message-type-str-raw-message-str-session-id-str-user-id-str-session-type-str-receive-channel-optional-channel-messageevent-none-data-optional-dict-str-any-none","184":"/en/dev/api/message/event.html#def-reply-self-message-str-dict-str-any","185":"/en/dev/api/message/#liteyuki-message","186":"/en/dev/api/message/matcher.html#liteyuki-message-matcher","187":"/en/dev/api/message/matcher.html#class-matcher","188":"/en/dev/api/message/matcher.html#def-init-self-rule-rule-priority-int-block-bool","189":"/en/dev/api/message/matcher.html#def-handle-self-callable-eventhandler-eventhandler","190":"/en/dev/api/message/matcher.html#async-def-run-self-event-messageevent-none","191":"/en/dev/api/message/message.html#liteyuki-message","192":"/en/dev/api/message/on.html#liteyuki-message-on","193":"/en/dev/api/message/on.html#def-add-matcher-matcher-matcher","194":"/en/dev/api/message/on.html#def-on-message-rule-rule-empty-rule-priority-int-0-block-bool-false-matcher","195":"/en/dev/api/message/on.html#def-on-keywords-keywords-list-str-rule-empty-rule-priority-int-0-block-bool-false-matcher","196":"/en/dev/api/message/rule.html#liteyuki-message-rule","197":"/en/dev/api/message/rule.html#var-rulehandlerfunc","198":"/en/dev/api/message/rule.html#class-rule","199":"/en/dev/api/message/rule.html#def-init-self-handler-rulehandlerfunc","200":"/en/dev/api/message/rule.html#def-or-self-other-rule-rule","201":"/en/dev/api/message/rule.html#def-and-self-other-rule-rule","202":"/en/dev/api/message/rule.html#async-def-call-self-event-messageevent-bool","203":"/en/dev/api/message/rule.html#async-def-empty-rule-event-messageevent-bool","204":"/en/dev/api/message/rule.html#async-def-is-su-rule-event-messageevent-bool","205":"/en/dev/api/message/session.html#liteyuki-message-session","206":"/en/dev/api/mkdoc.html#liteyuki-mkdoc","207":"/en/dev/api/mkdoc.html#class-deftype-enum","208":"/en/dev/api/mkdoc.html#attr-function-function","209":"/en/dev/api/mkdoc.html#attr-method-method","210":"/en/dev/api/mkdoc.html#attr-static-method-staticmethod","211":"/en/dev/api/mkdoc.html#attr-class-method-classmethod","212":"/en/dev/api/mkdoc.html#attr-property-property","213":"/en/dev/api/mkdoc.html#class-functioninfo-basemodel","214":"/en/dev/api/mkdoc.html#attr-name-str-no-default","215":"/en/dev/api/mkdoc.html#attr-args-list-tuple-str-str-no-default","216":"/en/dev/api/mkdoc.html#attr-return-type-str-no-default","217":"/en/dev/api/mkdoc.html#attr-docstring-str-no-default","218":"/en/dev/api/mkdoc.html#attr-source-code-str","219":"/en/dev/api/mkdoc.html#attr-type-deftype-no-default","220":"/en/dev/api/mkdoc.html#attr-is-async-bool-no-default","221":"/en/dev/api/mkdoc.html#class-attributeinfo-basemodel","222":"/en/dev/api/mkdoc.html#attr-name-str-no-default-1","223":"/en/dev/api/mkdoc.html#attr-type-str-no-default","224":"/en/dev/api/mkdoc.html#attr-value-any-none","225":"/en/dev/api/mkdoc.html#attr-docstring-str","226":"/en/dev/api/mkdoc.html#class-classinfo-basemodel","227":"/en/dev/api/mkdoc.html#attr-name-str-no-default-2","228":"/en/dev/api/mkdoc.html#attr-docstring-str-no-default-1","229":"/en/dev/api/mkdoc.html#attr-methods-list-functioninfo-no-default","230":"/en/dev/api/mkdoc.html#attr-attributes-list-attributeinfo-no-default","231":"/en/dev/api/mkdoc.html#attr-inherit-list-str-no-default","232":"/en/dev/api/mkdoc.html#class-moduleinfo-basemodel","233":"/en/dev/api/mkdoc.html#attr-module-path-str-no-default","234":"/en/dev/api/mkdoc.html#attr-functions-list-functioninfo-no-default","235":"/en/dev/api/mkdoc.html#attr-classes-list-classinfo-no-default","236":"/en/dev/api/mkdoc.html#attr-attributes-list-attributeinfo-no-default-1","237":"/en/dev/api/mkdoc.html#attr-docstring-str-no-default-2","238":"/en/dev/api/mkdoc.html#def-get-relative-path-base-path-str-target-path-str-str","239":"/en/dev/api/mkdoc.html#def-write-to-files-file-data-dict-str-str","240":"/en/dev/api/mkdoc.html#def-get-file-list-module-folder-str","241":"/en/dev/api/mkdoc.html#def-get-module-info-normal-file-path-str-ignore-private-bool-true-moduleinfo","242":"/en/dev/api/mkdoc.html#def-generate-markdown-module-info-moduleinfo-front-matter-none-lang-str-zh-cn-str","243":"/en/dev/api/mkdoc.html#def-generate-docs-module-folder-str-output-dir-str-with-top-bool-false-lang-str-zh-cn-ignored-paths-none","244":"/en/dev/api/mkdoc.html#var-no-module-name-pyfile-path","245":"/en/dev/api/plugin/#liteyuki-plugin","246":"/en/dev/api/plugin/#def-get-loaded-plugins-dict-str-plugin","247":"/en/dev/api/plugin/load.html#liteyuki-plugin-load","248":"/en/dev/api/plugin/load.html#def-load-plugin-module-path-str-path-optional-plugin","249":"/en/dev/api/plugin/load.html#def-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin","250":"/en/dev/api/plugin/load.html#def-format-display-name-display-name-str-plugin-type-plugintype-str","251":"/en/dev/api/plugin/manager.html#liteyuki-plugin-manager","252":"/en/dev/api/plugin/model.html#liteyuki-plugin-model","253":"/en/dev/api/plugin/model.html#class-plugintype-enum","254":"/en/dev/api/plugin/model.html#attr-application-application","255":"/en/dev/api/plugin/model.html#attr-service-service","256":"/en/dev/api/plugin/model.html#attr-module-module","257":"/en/dev/api/plugin/model.html#attr-unclassified-unclassified","258":"/en/dev/api/plugin/model.html#attr-test-test","259":"/en/dev/api/plugin/model.html#class-pluginmetadata-basemodel","260":"/en/dev/api/plugin/model.html#attr-name-str-no-default","261":"/en/dev/api/plugin/model.html#attr-description-str","262":"/en/dev/api/plugin/model.html#attr-usage-str","263":"/en/dev/api/plugin/model.html#attr-type-plugintype-plugintype-unclassified","264":"/en/dev/api/plugin/model.html#attr-author-str","265":"/en/dev/api/plugin/model.html#attr-homepage-str","266":"/en/dev/api/plugin/model.html#attr-extra-dict-str-any","267":"/en/dev/api/plugin/model.html#class-plugin-basemodel","268":"/en/dev/api/plugin/model.html#def-hash-self","269":"/en/dev/api/plugin/model.html#attr-model-config-arbitrary-types-allowed-true","270":"/en/dev/api/plugin/model.html#attr-name-str-no-default-1","271":"/en/dev/api/plugin/model.html#attr-module-moduletype-no-default","272":"/en/dev/api/plugin/model.html#attr-module-name-str-no-default","273":"/en/dev/api/plugin/model.html#attr-metadata-optional-pluginmetadata-none","274":"/en/dev/api/plugin/plugin.html#liteyuki-plugin","275":"/en/dev/api/plugin/plugin.html#def-get-loaded-plugins-dict-str-plugin","276":"/en/dev/api/plugins/liteecho.html#liteyuki-plugins-liteecho","277":"/en/dev/api/plugins/liteecho.html#async-def-liteecho-event-messageevent","278":"/en/dev/api/plugins/plugin_loader/#liteyuki-plugins-plugin-loader","279":"/en/dev/api/plugins/plugin_loader/#def-default-plugins-loader","280":"/en/dev/api/plugins/plugin_loader/plugin_loader.html#liteyuki-plugins-plugin-loader","281":"/en/dev/api/plugins/plugin_loader/plugin_loader.html#def-default-plugins-loader","282":"/en/dev/api/utils.html#liteyuki-utils","283":"/en/dev/api/utils.html#def-is-coroutine-callable-call-callable-any-bool","284":"/en/dev/api/utils.html#def-run-coroutine-coro-coroutine","285":"/en/dev/api/utils.html#def-run-coroutine-in-thread-coro-coroutine","286":"/en/dev/api/utils.html#def-path-to-module-name-path-path-str","287":"/en/dev/api/utils.html#def-async-wrapper-func-callable-any-callable-coroutine","288":"/en/dev/comm.html#channel-communication","289":"/en/dev/comm.html#introduction","290":"/en/dev/comm.html#example","291":"/en/dev/comm.html#共享内存通信","292":"/en/dev/comm.html#简介","293":"/en/dev/comm.html#示例","294":"/en/dev/lyfunc.html#轻雪函数","295":"/en/dev/lyfunc.html#函数文件","296":"/en/dev/lyfunc.html#命令文档","297":"/en/dev/lyfunc.html#示例","298":"/en/dev/lyfunc.html#api","299":"/en/dev/lyfunc.html#结束关键字","300":"/en/dev/plugin.html#简介","301":"/en/dev/plugin.html#开始","302":"/en/dev/plugin.html#创建插件","303":"/en/dev/plugin.html#编写逻辑部分","304":"/en/dev/plugin.html#加载插件","305":"/en/dev/plugin.html#方法1","306":"/en/dev/plugin.html#方法2","307":"/en/dev/resource.html#简介","308":"/en/dev/resource.html#加载资源包","309":"/en/usage/agreement.html#用户协议","310":"/en/usage/basic.html#基础插件","311":"/en/usage/basic.html#轻雪命令liteyuki-command","312":"/en/usage/basic.html#命令别名","313":"/en/usage/basic.html#插件-包管理器-liteyuki-pacman","314":"/en/usage/basic.html#命令别名-1","315":"/en/usage/basic.html#用户管理liteyuki-user","316":"/en/usage/extra.html#功能插件命令","317":"/en/usage/extra.html#轻雪天气liteyuki-weather","318":"/en/usage/extra.html#命令别名","319":"/en/usage/extra.html#统计信息liteyuki-statistics","320":"/en/usage/extra.html#命令别名-1"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,50],"1":[2,1,82],"2":[2,1,67],"3":[9,1,71],"4":[1,1,21],"5":[1,1,1],"6":[3,1,172],"7":[2,1,18],"8":[4,1,31],"9":[4,1,25],"10":[1,1,14],"11":[1,1,1],"12":[2,1,59],"13":[3,1,57],"14":[3,1,18],"15":[2,1,83],"16":[6,3,1],"17":[1,1,1],"18":[3,1,7],"19":[2,1,1],"20":[2,2,1],"21":[7,4,72],"22":[5,4,23],"23":[4,4,21],"24":[6,4,32],"25":[7,4,28],"26":[8,4,56],"27":[10,4,40],"28":[6,4,17],"29":[5,4,14],"30":[4,4,16],"31":[9,4,21],"32":[9,4,21],"33":[9,4,22],"34":[10,4,23],"35":[10,4,23],"36":[9,4,22],"37":[5,2,38],"38":[10,2,27],"39":[14,2,45],"40":[4,2,24],"41":[2,1,1],"42":[2,2,1],"43":[7,4,72],"44":[5,4,23],"45":[4,4,21],"46":[6,4,32],"47":[7,4,28],"48":[8,4,56],"49":[10,4,40],"50":[6,4,17],"51":[5,4,14],"52":[4,4,16],"53":[9,4,21],"54":[9,4,21],"55":[9,4,22],"56":[10,4,23],"57":[10,4,23],"58":[9,4,22],"59":[5,2,38],"60":[10,2,27],"61":[14,2,45],"62":[4,2,24],"63":[3,1,25],"64":[2,3,1],"65":[5,5,33],"66":[14,5,45],"67":[9,5,24],"68":[9,5,24],"69":[10,5,25],"70":[9,5,24],"71":[10,5,25],"72":[9,5,24],"73":[7,5,24],"74":[7,5,24],"75":[8,5,25],"76":[7,5,24],"77":[8,5,25],"78":[7,5,24],"79":[3,1,27],"80":[5,3,1],"81":[12,8,75],"82":[8,8,27],"83":[9,8,45],"84":[6,8,48],"85":[5,8,31],"86":[6,8,32],"87":[16,8,67],"88":[10,8,36],"89":[7,8,47],"90":[3,3,9],"91":[3,3,15],"92":[4,3,11],"93":[7,3,44],"94":[7,3,23],"95":[7,3,34],"96":[8,3,38],"97":[10,3,27],"98":[10,3,30],"99":[10,3,29],"100":[2,1,9],"101":[2,1,9],"102":[3,1,25],"103":[2,3,1],"104":[9,5,16],"105":[3,1,5],"106":[2,3,1],"107":[10,5,17],"108":[9,5,20],"109":[4,1,25],"110":[2,4,1],"111":[6,6,24],"112":[5,6,17],"113":[4,6,17],"114":[4,6,13],"115":[3,1,5],"116":[6,3,12],"117":[6,3,12],"118":[2,3,1],"119":[4,5,33],"120":[9,5,35],"121":[12,5,42],"122":[12,5,47],"123":[9,5,34],"124":[9,5,26],"125":[13,5,56],"126":[11,5,32],"127":[7,5,45],"128":[2,3,2],"129":[5,5,21],"130":[4,5,1],"131":[6,5,1],"132":[3,3,17],"133":[9,3,31],"134":[9,3,29],"135":[9,3,29],"136":[10,3,29],"137":[2,1,20],"138":[8,2,43],"139":[10,2,38],"140":[10,2,37],"141":[10,2,37],"142":[14,2,46],"143":[16,2,52],"144":[15,2,37],"145":[2,1,1],"146":[2,1,1],"147":[3,1,25],"148":[2,3,1],"149":[14,5,21],"150":[2,3,1],"151":[6,5,20],"152":[8,5,69],"153":[6,5,34],"154":[14,5,52],"155":[5,5,16],"156":[6,5,36],"157":[5,5,15],"158":[9,5,32],"159":[2,1,3],"160":[2,1,3],"161":[3,1,6],"162":[3,3,9],"163":[3,3,9],"164":[4,3,28],"165":[4,3,3],"166":[6,7,19],"167":[6,7,12],"168":[6,7,12],"169":[6,7,12],"170":[6,7,12],"171":[20,3,56],"172":[3,1,25],"173":[9,3,36],"174":[2,1,3],"175":[4,2,1],"176":[1,1,1],"177":[3,1,7],"178":[2,1,25],"179":[6,2,20],"180":[6,2,50],"181":[3,1,25],"182":[2,3,1],"183":[24,5,52],"184":[9,5,39],"185":[2,1,25],"186":[3,1,25],"187":[2,3,1],"188":[10,5,30],"189":[7,5,24],"190":[8,5,35],"191":[2,1,25],"192":[3,1,25],"193":[5,3,24],"194":[15,3,21],"195":[16,3,32],"196":[3,1,25],"197":[2,3,11],"198":[2,3,1],"199":[6,5,13],"200":[6,5,21],"201":[6,5,22],"202":[8,5,23],"203":[8,3,19],"204":[9,3,24],"205":[3,1,25],"206":[2,1,25],"207":[4,2,1],"208":[5,6,1],"209":[5,6,1],"210":[6,6,1],"211":[6,6,1],"212":[5,6,1],"213":[4,2,1],"214":[6,6,1],"215":[8,6,1],"216":[7,6,1],"217":[6,6,1],"218":[6,6,1],"219":[6,6,1],"220":[7,6,1],"221":[4,2,1],"222":[6,6,1],"223":[6,6,1],"224":[5,6,1],"225":[5,6,1],"226":[4,2,1],"227":[6,6,1],"228":[6,6,1],"229":[7,6,1],"230":[7,6,1],"231":[7,6,1],"232":[4,2,1],"233":[7,6,1],"234":[7,6,1],"235":[7,6,1],"236":[7,6,1],"237":[6,6,1],"238":[8,2,24],"239":[9,2,40],"240":[8,2,30],"241":[15,2,147],"242":[15,2,99],"243":[20,2,98],"244":[6,2,10],"245":[2,1,1],"246":[9,2,21],"247":[3,1,25],"248":[12,3,84],"249":[15,3,62],"250":[9,3,44],"251":[3,1,25],"252":[3,1,25],"253":[4,3,1],"254":[5,7,1],"255":[5,7,1],"256":[5,7,1],"257":[5,7,1],"258":[5,7,1],"259":[4,3,1],"260":[6,7,1],"261":[5,7,1],"262":[5,7,1],"263":[5,7,1],"264":[5,7,1],"265":[5,7,1],"266":[7,7,1],"267":[4,3,1],"268":[4,7,13],"269":[9,7,1],"270":[6,7,1],"271":[6,7,1],"272":[7,7,1],"273":[6,7,1],"274":[2,1,1],"275":[9,2,21],"276":[3,1,31],"277":[6,3,23],"278":[4,1,25],"279":[5,4,24],"280":[4,1,25],"281":[5,4,24],"282":[2,1,6],"283":[9,2,35],"284":[6,2,47],"285":[8,2,25],"286":[8,2,43],"287":[9,2,30],"288":[2,1,1],"289":[1,2,46],"290":[1,2,105],"291":[1,2,1],"292":[1,3,9],"293":[1,3,18],"294":[1,1,9],"295":[1,1,25],"296":[1,1,33],"297":[1,2,26],"298":[1,1,7],"299":[1,1,18],"300":[1,1,4],"301":[1,1,1],"302":[1,2,42],"303":[1,2,58],"304":[1,2,1],"305":[1,3,6],"306":[1,3,25],"307":[1,1,31],"308":[1,1,56],"309":[1,1,28],"310":[1,1,16],"311":[2,1,86],"312":[1,3,30],"313":[4,1,53],"314":[1,5,38],"315":[2,1,20],"316":[1,1,1],"317":[2,1,30],"318":[1,3,8],"319":[2,1,35],"320":[1,3,17]},"averageFieldLength":[5.803738317757008,3.5046728971962615,23.074766355140184],"storedFields":{"0":{"title":"Configurations","titles":[]},"1":{"title":"Basic Configuration","titles":["Configurations"]},"2":{"title":"Other configurations","titles":["Configurations"]},"3":{"title":"Example: Configuration of OneBot implementation side connected to NoneBot","titles":["Configurations"]},"4":{"title":"Other","titles":["Configurations"]},"5":{"title":"FAQ","titles":[]},"6":{"title":"Frequently Asked Questions","titles":["FAQ"]},"7":{"title":"Other questions","titles":["FAQ"]},"8":{"title":"Recommended Solution(QQ)","titles":["FAQ"]},"9":{"title":"Recommended Solution(Minecraft)","titles":["FAQ"]},"10":{"title":"Acknowledgements","titles":["FAQ"]},"11":{"title":"Install","titles":[]},"12":{"title":"Normal Installation","titles":["Install"]},"13":{"title":"Run with Docker","titles":["Install"]},"14":{"title":"Use TRSS Script","titles":["Install"]},"15":{"title":"Device Requirements","titles":["Install"]},"16":{"title":"For other questions, please refer to","titles":["Install","Device Requirements"]},"17":{"title":"liteyuki","titles":[]},"18":{"title":"var __version__","titles":["liteyuki"]},"19":{"title":"liteyuki.bot","titles":[]},"20":{"title":"class LiteyukiBot","titles":["liteyuki.bot"]},"21":{"title":"def __init__(self, *args, **kwargs) -> None","titles":["liteyuki.bot","class LiteyukiBot"]},"22":{"title":"async def _run(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"23":{"title":"def run(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"24":{"title":"async def keep_alive(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"25":{"title":"def _handle_exit(self, signum, frame)","titles":["liteyuki.bot","class LiteyukiBot"]},"26":{"title":"def restart(self, delay: int = 0)","titles":["liteyuki.bot","class LiteyukiBot"]},"27":{"title":"def restart_process(self, name: Optional[str] = None)","titles":["liteyuki.bot","class LiteyukiBot"]},"28":{"title":"def init(self, *args, **kwargs)","titles":["liteyuki.bot","class LiteyukiBot"]},"29":{"title":"def init_logger(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"30":{"title":"def stop(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"31":{"title":"def on_before_start(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"32":{"title":"def on_after_start(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"33":{"title":"def on_after_shutdown(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"34":{"title":"def on_before_process_shutdown(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"35":{"title":"def on_before_process_restart(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"36":{"title":"def on_after_restart(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"37":{"title":"def get_bot() -> LiteyukiBot","titles":["liteyuki.bot"]},"38":{"title":"def get_config(key: str, default: Any = None) -> Any","titles":["liteyuki.bot"]},"39":{"title":"def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","titles":["liteyuki.bot"]},"40":{"title":"def print_logo()","titles":["liteyuki.bot"]},"41":{"title":"liteyuki.bot","titles":[]},"42":{"title":"class LiteyukiBot","titles":["liteyuki.bot"]},"43":{"title":"def __init__(self, *args, **kwargs) -> None","titles":["liteyuki.bot","class LiteyukiBot"]},"44":{"title":"async def _run(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"45":{"title":"def run(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"46":{"title":"async def keep_alive(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"47":{"title":"def _handle_exit(self, signum, frame)","titles":["liteyuki.bot","class LiteyukiBot"]},"48":{"title":"def restart(self, delay: int = 0)","titles":["liteyuki.bot","class LiteyukiBot"]},"49":{"title":"def restart_process(self, name: Optional[str] = None)","titles":["liteyuki.bot","class LiteyukiBot"]},"50":{"title":"def init(self, *args, **kwargs)","titles":["liteyuki.bot","class LiteyukiBot"]},"51":{"title":"def init_logger(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"52":{"title":"def stop(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"53":{"title":"def on_before_start(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"54":{"title":"def on_after_start(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"55":{"title":"def on_after_shutdown(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"56":{"title":"def on_before_process_shutdown(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"57":{"title":"def on_before_process_restart(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"58":{"title":"def on_after_restart(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"59":{"title":"def get_bot() -> LiteyukiBot","titles":["liteyuki.bot"]},"60":{"title":"def get_config(key: str, default: Any = None) -> Any","titles":["liteyuki.bot"]},"61":{"title":"def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","titles":["liteyuki.bot"]},"62":{"title":"def print_logo()","titles":["liteyuki.bot"]},"63":{"title":"liteyuki.bot.lifespan","titles":[]},"64":{"title":"class Lifespan","titles":["liteyuki.bot.lifespan"]},"65":{"title":"def __init__(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"66":{"title":"async def run_funcs(funcs: list[ASYNC_LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"67":{"title":"def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"68":{"title":"def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"69":{"title":"def on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"70":{"title":"def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"71":{"title":"def on_before_process_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"72":{"title":"def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"73":{"title":"async def before_start(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"74":{"title":"async def after_start(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"75":{"title":"async def before_process_shutdown(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"76":{"title":"async def after_shutdown(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"77":{"title":"async def before_process_restart(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"78":{"title":"async def after_restart(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"79":{"title":"liteyuki.comm.channel","titles":[]},"80":{"title":"class Channel(Generic[T])","titles":["liteyuki.comm.channel"]},"81":{"title":"def __init__(self, name: str, type_check: Optional[bool] = None)","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"82":{"title":"def _get_generic_type(self) -> Optional[type]","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"83":{"title":"def _validate_structure(self, data: Any, structure: type) -> bool","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"84":{"title":"def send(self, data: T)","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"85":{"title":"def receive(self) -> T","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"86":{"title":"async def async_receive(self) -> T","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"87":{"title":"def on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"88":{"title":"async def _run_on_receive_funcs(self, data: Any)","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"89":{"title":"async def start_receive_loop(self)","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"90":{"title":"var active_channel","titles":["liteyuki.comm.channel"]},"91":{"title":"var publish_channel","titles":["liteyuki.comm.channel"]},"92":{"title":"var channel_deliver_active_channel","titles":["liteyuki.comm.channel"]},"93":{"title":"def set_channel(name: str, channel: Channel)","titles":["liteyuki.comm.channel"]},"94":{"title":"def set_channels(channels: dict[str, Channel])","titles":["liteyuki.comm.channel"]},"95":{"title":"def get_channel(name: str) -> Channel","titles":["liteyuki.comm.channel"]},"96":{"title":"def get_channels() -> dict[str, Channel]","titles":["liteyuki.comm.channel"]},"97":{"title":"def on_set_channel(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.channel"]},"98":{"title":"def on_get_channel(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.channel"]},"99":{"title":"def on_get_channels(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.channel"]},"100":{"title":"liteyuki.comm","titles":[]},"101":{"title":"liteyuki.comm","titles":[]},"102":{"title":"liteyuki.comm.event","titles":[]},"103":{"title":"class Event","titles":["liteyuki.comm.event"]},"104":{"title":"def __init__(self, name: str, data: dict[str, Any])","titles":["liteyuki.comm.event","class Event"]},"105":{"title":"liteyuki.comm.rpc","titles":[]},"106":{"title":"class RPC","titles":["liteyuki.comm.rpc"]},"107":{"title":"def __init__(self, on_calling: ON_CALLING_FUNC) -> None","titles":["liteyuki.comm.rpc","class RPC"]},"108":{"title":"def call(self, args: tuple, kwargs: dict) -> Any","titles":["liteyuki.comm.rpc","class RPC"]},"109":{"title":"liteyuki.comm.socks_channel","titles":[]},"110":{"title":"class SocksChannel","titles":["liteyuki.comm.socks_channel"]},"111":{"title":"def __init__(self, name: str)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"112":{"title":"def send(self, data)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"113":{"title":"def receive(self)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"114":{"title":"def close(self)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"115":{"title":"liteyuki.comm.storage","titles":[]},"116":{"title":"var _on_main_subscriber_receive_funcs","titles":["liteyuki.comm.storage"]},"117":{"title":"var _on_sub_subscriber_receive_funcs","titles":["liteyuki.comm.storage"]},"118":{"title":"class KeyValueStore","titles":["liteyuki.comm.storage"]},"119":{"title":"def __init__(self)","titles":["liteyuki.comm.storage","class KeyValueStore"]},"120":{"title":"def set(self, key: str, value: Any) -> None","titles":["liteyuki.comm.storage","class KeyValueStore"]},"121":{"title":"def get(self, key: str, default: Optional[Any] = None) -> Optional[Any]","titles":["liteyuki.comm.storage","class KeyValueStore"]},"122":{"title":"def delete(self, key: str, ignore_key_error: bool = True) -> None","titles":["liteyuki.comm.storage","class KeyValueStore"]},"123":{"title":"def get_all(self) -> dict[str, Any]","titles":["liteyuki.comm.storage","class KeyValueStore"]},"124":{"title":"def publish(self, channel_: str, data: Any) -> None","titles":["liteyuki.comm.storage","class KeyValueStore"]},"125":{"title":"def on_subscriber_receive(self, channel_: str) -> Callable[[ON_RECEIVE_FUNC], ON_RECEIVE_FUNC]","titles":["liteyuki.comm.storage","class KeyValueStore"]},"126":{"title":"async def run_subscriber_receive_funcs(channel_: str, data: Any)","titles":["liteyuki.comm.storage","class KeyValueStore"]},"127":{"title":"async def start_receive_loop(self)","titles":["liteyuki.comm.storage","class KeyValueStore"]},"128":{"title":"class GlobalKeyValueStore","titles":["liteyuki.comm.storage"]},"129":{"title":"def get_instance(cls)","titles":["liteyuki.comm.storage","class GlobalKeyValueStore"]},"130":{"title":"attr _instance = None","titles":["liteyuki.comm.storage","class GlobalKeyValueStore"]},"131":{"title":"attr _lock = threading.Lock()","titles":["liteyuki.comm.storage","class GlobalKeyValueStore"]},"132":{"title":"var _ref_count","titles":["liteyuki.comm.storage"]},"133":{"title":"def on_get(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"134":{"title":"def on_set(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"135":{"title":"def on_delete(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"136":{"title":"def on_get_all(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"137":{"title":"liteyuki.config","titles":[]},"138":{"title":"def flat_config(config: dict[str, Any]) -> dict[str, Any]","titles":["liteyuki.config"]},"139":{"title":"def load_from_yaml(file_: str) -> dict[str, Any]","titles":["liteyuki.config"]},"140":{"title":"def load_from_json(file_: str) -> dict[str, Any]","titles":["liteyuki.config"]},"141":{"title":"def load_from_toml(file_: str) -> dict[str, Any]","titles":["liteyuki.config"]},"142":{"title":"def load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]","titles":["liteyuki.config"]},"143":{"title":"def load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]","titles":["liteyuki.config"]},"144":{"title":"def load_config_in_default(no_waring: bool = False) -> dict[str, Any]","titles":["liteyuki.config"]},"145":{"title":"liteyuki.core","titles":[]},"146":{"title":"liteyuki.core","titles":[]},"147":{"title":"liteyuki.core.manager","titles":[]},"148":{"title":"class ChannelDeliver","titles":["liteyuki.core.manager"]},"149":{"title":"def __init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]])","titles":["liteyuki.core.manager","class ChannelDeliver"]},"150":{"title":"class ProcessManager","titles":["liteyuki.core.manager"]},"151":{"title":"def __init__(self, lifespan: Lifespan)","titles":["liteyuki.core.manager","class ProcessManager"]},"152":{"title":"async def _run_process(self, name: str)","titles":["liteyuki.core.manager","class ProcessManager"]},"153":{"title":"async def start_all(self)","titles":["liteyuki.core.manager","class ProcessManager"]},"154":{"title":"def add_target(self, name: str, target: TARGET_FUNC, args: tuple = (), kwargs = None)","titles":["liteyuki.core.manager","class ProcessManager"]},"155":{"title":"def join_all(self)","titles":["liteyuki.core.manager","class ProcessManager"]},"156":{"title":"def terminate(self, name: str)","titles":["liteyuki.core.manager","class ProcessManager"]},"157":{"title":"def terminate_all(self)","titles":["liteyuki.core.manager","class ProcessManager"]},"158":{"title":"def is_process_alive(self, name: str) -> bool","titles":["liteyuki.core.manager","class ProcessManager"]},"159":{"title":"liteyuki.dev","titles":[]},"160":{"title":"liteyuki.dev","titles":[]},"161":{"title":"liteyuki.dev.observer","titles":[]},"162":{"title":"var CALLBACK_FUNC","titles":["liteyuki.dev.observer"]},"163":{"title":"var FILTER_FUNC","titles":["liteyuki.dev.observer"]},"164":{"title":"def debounce(wait)","titles":["liteyuki.dev.observer"]},"165":{"title":"class CodeModifiedHandler(FileSystemEventHandler)","titles":["liteyuki.dev.observer"]},"166":{"title":"def on_modified(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"167":{"title":"def on_created(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"168":{"title":"def on_deleted(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"169":{"title":"def on_moved(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"170":{"title":"def on_any_event(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"171":{"title":"def on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]","titles":["liteyuki.dev.observer"]},"172":{"title":"liteyuki.dev.plugin","titles":[]},"173":{"title":"def run_plugins(*module_path: str | Path)","titles":["liteyuki.dev.plugin"]},"174":{"title":"liteyuki.exception","titles":[]},"175":{"title":"class LiteyukiException(BaseException)","titles":["liteyuki.exception"]},"176":{"title":"liteyuki","titles":[]},"177":{"title":"var __version__","titles":["liteyuki"]},"178":{"title":"liteyuki.log","titles":[]},"179":{"title":"def get_format(level: str) -> str","titles":["liteyuki.log"]},"180":{"title":"def init_log(config: dict)","titles":["liteyuki.log"]},"181":{"title":"liteyuki.message.event","titles":[]},"182":{"title":"class MessageEvent","titles":["liteyuki.message.event"]},"183":{"title":"def __init__(self, bot_id: str, message: list[dict[str, Any]] | str, message_type: str, raw_message: str, session_id: str, user_id: str, session_type: str, receive_channel: Optional[Channel[MessageEvent]] = None, data: Optional[dict[str, Any]] = None)","titles":["liteyuki.message.event","class MessageEvent"]},"184":{"title":"def reply(self, message: str | dict[str, Any])","titles":["liteyuki.message.event","class MessageEvent"]},"185":{"title":"liteyuki.message","titles":[]},"186":{"title":"liteyuki.message.matcher","titles":[]},"187":{"title":"class Matcher","titles":["liteyuki.message.matcher"]},"188":{"title":"def __init__(self, rule: Rule, priority: int, block: bool)","titles":["liteyuki.message.matcher","class Matcher"]},"189":{"title":"def handle(self) -> Callable[[EventHandler], EventHandler]","titles":["liteyuki.message.matcher","class Matcher"]},"190":{"title":"async def run(self, event: MessageEvent) -> None","titles":["liteyuki.message.matcher","class Matcher"]},"191":{"title":"liteyuki.message","titles":[]},"192":{"title":"liteyuki.message.on","titles":[]},"193":{"title":"def add_matcher(matcher: Matcher)","titles":["liteyuki.message.on"]},"194":{"title":"def on_message(rule: Rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["liteyuki.message.on"]},"195":{"title":"def on_keywords(keywords: list[str], rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["liteyuki.message.on"]},"196":{"title":"liteyuki.message.rule","titles":[]},"197":{"title":"var RuleHandlerFunc","titles":["liteyuki.message.rule"]},"198":{"title":"class Rule","titles":["liteyuki.message.rule"]},"199":{"title":"def __init__(self, handler: RuleHandlerFunc)","titles":["liteyuki.message.rule","class Rule"]},"200":{"title":"def __or__(self, other: Rule) -> Rule","titles":["liteyuki.message.rule","class Rule"]},"201":{"title":"def __and__(self, other: Rule) -> Rule","titles":["liteyuki.message.rule","class Rule"]},"202":{"title":"async def __call__(self, event: MessageEvent) -> bool","titles":["liteyuki.message.rule","class Rule"]},"203":{"title":"async def empty_rule(event: MessageEvent) -> bool","titles":["liteyuki.message.rule"]},"204":{"title":"async def is_su_rule(event: MessageEvent) -> bool","titles":["liteyuki.message.rule"]},"205":{"title":"liteyuki.message.session","titles":[]},"206":{"title":"liteyuki.mkdoc","titles":[]},"207":{"title":"class DefType(Enum)","titles":["liteyuki.mkdoc"]},"208":{"title":"attr FUNCTION = 'function'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"209":{"title":"attr METHOD = 'method'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"210":{"title":"attr STATIC_METHOD = 'staticmethod'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"211":{"title":"attr CLASS_METHOD = 'classmethod'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"212":{"title":"attr PROPERTY = 'property'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"213":{"title":"class FunctionInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"214":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"215":{"title":"attr args: list[tuple[str, str]] = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"216":{"title":"attr return_type: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"217":{"title":"attr docstring: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"218":{"title":"attr source_code: str = ''","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"219":{"title":"attr type: DefType = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"220":{"title":"attr is_async: bool = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"221":{"title":"class AttributeInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"222":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"223":{"title":"attr type: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"224":{"title":"attr value: Any = None","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"225":{"title":"attr docstring: str = ''","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"226":{"title":"class ClassInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"227":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"228":{"title":"attr docstring: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"229":{"title":"attr methods: list[FunctionInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"230":{"title":"attr attributes: list[AttributeInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"231":{"title":"attr inherit: list[str] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"232":{"title":"class ModuleInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"233":{"title":"attr module_path: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"234":{"title":"attr functions: list[FunctionInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"235":{"title":"attr classes: list[ClassInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"236":{"title":"attr attributes: list[AttributeInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"237":{"title":"attr docstring: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"238":{"title":"def get_relative_path(base_path: str, target_path: str) -> str","titles":["liteyuki.mkdoc"]},"239":{"title":"def write_to_files(file_data: dict[str, str])","titles":["liteyuki.mkdoc"]},"240":{"title":"def get_file_list(module_folder: str)","titles":["liteyuki.mkdoc"]},"241":{"title":"def get_module_info_normal(file_path: str, ignore_private: bool = True) -> ModuleInfo","titles":["liteyuki.mkdoc"]},"242":{"title":"def generate_markdown(module_info: ModuleInfo, front_matter = None, lang: str = 'zh-CN') -> str","titles":["liteyuki.mkdoc"]},"243":{"title":"def generate_docs(module_folder: str, output_dir: str, with_top: bool = False, lang: str = 'zh-CN', ignored_paths = None)","titles":["liteyuki.mkdoc"]},"244":{"title":"var no_module_name_pyfile_path","titles":["liteyuki.mkdoc"]},"245":{"title":"liteyuki.plugin","titles":[]},"246":{"title":"def get_loaded_plugins() -> dict[str, Plugin]","titles":["liteyuki.plugin"]},"247":{"title":"liteyuki.plugin.load","titles":[]},"248":{"title":"def load_plugin(module_path: str | Path) -> Optional[Plugin]","titles":["liteyuki.plugin.load"]},"249":{"title":"def load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]","titles":["liteyuki.plugin.load"]},"250":{"title":"def format_display_name(display_name: str, plugin_type: PluginType) -> str","titles":["liteyuki.plugin.load"]},"251":{"title":"liteyuki.plugin.manager","titles":[]},"252":{"title":"liteyuki.plugin.model","titles":[]},"253":{"title":"class PluginType(Enum)","titles":["liteyuki.plugin.model"]},"254":{"title":"attr APPLICATION = 'application'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"255":{"title":"attr SERVICE = 'service'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"256":{"title":"attr MODULE = 'module'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"257":{"title":"attr UNCLASSIFIED = 'unclassified'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"258":{"title":"attr TEST = 'test'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"259":{"title":"class PluginMetadata(BaseModel)","titles":["liteyuki.plugin.model"]},"260":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"261":{"title":"attr description: str = ''","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"262":{"title":"attr usage: str = ''","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"263":{"title":"attr type: PluginType = PluginType.UNCLASSIFIED","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"264":{"title":"attr author: str = ''","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"265":{"title":"attr homepage: str = ''","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"266":{"title":"attr extra: dict[str, Any] = {}","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"267":{"title":"class Plugin(BaseModel)","titles":["liteyuki.plugin.model"]},"268":{"title":"def __hash__(self)","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"269":{"title":"attr model_config = {'arbitrary_types_allowed': True}","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"270":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"271":{"title":"attr module: ModuleType = NO_DEFAULT","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"272":{"title":"attr module_name: str = NO_DEFAULT","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"273":{"title":"attr metadata: Optional[PluginMetadata] = None","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"274":{"title":"liteyuki.plugin","titles":[]},"275":{"title":"def get_loaded_plugins() -> dict[str, Plugin]","titles":["liteyuki.plugin"]},"276":{"title":"liteyuki.plugins.liteecho","titles":[]},"277":{"title":"async def liteecho(event: MessageEvent)","titles":["liteyuki.plugins.liteecho"]},"278":{"title":"liteyuki.plugins.plugin_loader","titles":[]},"279":{"title":"def default_plugins_loader()","titles":["liteyuki.plugins.plugin_loader"]},"280":{"title":"liteyuki.plugins.plugin_loader","titles":[]},"281":{"title":"def default_plugins_loader()","titles":["liteyuki.plugins.plugin_loader"]},"282":{"title":"liteyuki.utils","titles":[]},"283":{"title":"def is_coroutine_callable(call: Callable[..., Any]) -> bool","titles":["liteyuki.utils"]},"284":{"title":"def run_coroutine(*coro: Coroutine)","titles":["liteyuki.utils"]},"285":{"title":"def run_coroutine_in_thread(*coro: Coroutine)","titles":["liteyuki.utils"]},"286":{"title":"def path_to_module_name(path: Path) -> str","titles":["liteyuki.utils"]},"287":{"title":"def async_wrapper(func: Callable[..., Any]) -> Callable[..., Coroutine]","titles":["liteyuki.utils"]},"288":{"title":"Channel Communication","titles":[]},"289":{"title":"Introduction","titles":["Channel Communication"]},"290":{"title":"Example","titles":["Channel Communication"]},"291":{"title":"共享内存通信","titles":["Channel Communication"]},"292":{"title":"简介","titles":["Channel Communication","共享内存通信"]},"293":{"title":"示例","titles":["Channel Communication","共享内存通信"]},"294":{"title":"轻雪函数","titles":[]},"295":{"title":"函数文件","titles":["轻雪函数"]},"296":{"title":"命令文档","titles":["轻雪函数"]},"297":{"title":"示例","titles":["轻雪函数","命令文档"]},"298":{"title":"API","titles":["轻雪函数"]},"299":{"title":"结束关键字","titles":["轻雪函数"]},"300":{"title":"简介","titles":[]},"301":{"title":"开始","titles":["简介"]},"302":{"title":"创建插件","titles":["简介","开始"]},"303":{"title":"编写逻辑部分","titles":["简介","开始"]},"304":{"title":"加载插件","titles":["简介","开始"]},"305":{"title":"方法1","titles":["简介","开始","加载插件"]},"306":{"title":"方法2","titles":["简介","开始","加载插件"]},"307":{"title":"简介","titles":[]},"308":{"title":"加载资源包","titles":["简介"]},"309":{"title":"用户协议","titles":[]},"310":{"title":"基础插件","titles":[]},"311":{"title":"轻雪命令liteyuki_command","titles":["基础插件"]},"312":{"title":"命令别名","titles":["基础插件","轻雪命令liteyuki_command"]},"313":{"title":"插件/包管理器 liteyuki_pacman","titles":["基础插件"]},"314":{"title":"命令别名","titles":["基础插件","插件/包管理器 liteyuki_pacman"]},"315":{"title":"用户管理liteyuki_user","titles":["基础插件"]},"316":{"title":"功能插件命令","titles":[]},"317":{"title":"轻雪天气liteyuki_weather","titles":["功能插件命令"]},"318":{"title":"命令别名","titles":["功能插件命令","轻雪天气liteyuki_weather"]},"319":{"title":"统计信息liteyuki_statistics","titles":["功能插件命令"]},"320":{"title":"命令别名","titles":["功能插件命令","统计信息liteyuki_statistics"]}},"dirtCount":0,"index":[["或",{"2":{"319":2}}],["或插件路径",{"2":{"248":2}}],["秒",{"2":{"319":2}}],["小时",{"2":{"319":2}}],["天",{"2":{"319":2}}],["天气",{"2":{"317":1,"318":1}}],["格式",{"2":{"319":1}}],["格式为onebot",{"2":{"311":1}}],["统计时间范围为duration",{"2":{"319":1}}],["统计周期为period",{"2":{"319":1}}],["统计信息",{"2":{"319":1}}],["统计信息liteyuki",{"0":{"319":1},"1":{"320":1}}],["功能",{"2":{"319":1}}],["功能插件命令",{"0":{"316":1},"1":{"317":1,"318":1,"319":1,"320":1}}],["绑定城市",{"2":{"318":1}}],["绑定查询城市",{"2":{"317":1}}],["个人全局生效",{"2":{"317":1}}],["个人信息",{"2":{"315":1}}],["海淀",{"2":{"317":1}}],["北京",{"2":{"317":1}}],["支持中英文",{"2":{"317":2}}],["支持中英文城市名",{"2":{"317":1}}],["支持多个关键词查询",{"2":{"317":1}}],["支持绑定城市",{"2":{"317":1}}],["支持单行注释",{"2":{"295":1}}],["受限于nonebot2钩子函数的依赖注入参数",{"2":{"314":1}}],["帮助",{"2":{"314":1}}],["列表",{"2":{"314":1}}],["列出所有资源包",{"2":{"313":1}}],["列出所有插件",{"2":{"313":1}}],["更改",{"2":{"314":1}}],["更新",{"2":{"314":1}}],["更新插件商店索引",{"2":{"313":1}}],["更新轻雪",{"2":{"311":1,"312":1}}],["全局停用",{"2":{"314":1}}],["全局启用",{"2":{"313":1,"314":1}}],["搜索",{"2":{"314":1}}],["卸载",{"2":{"314":2}}],["卸载资源包",{"2":{"313":1}}],["卸载插件",{"2":{"313":1}}],["私聊所有人可用",{"2":{"313":2}}],["私聊通常为用户id",{"2":{"183":1}}],["当前bot",{"2":{"319":1}}],["当前群聊",{"2":{"319":1}}],["当前会话启用",{"2":{"313":1}}],["当前的轻雪实例",{"2":{"37":2,"59":2}}],["包管理器",{"0":{"313":1},"1":{"314":1}}],["包括子task",{"2":{"296":1}}],["切换图片模式",{"2":{"312":1}}],["状态",{"2":{"312":1}}],["别名",{"2":{"312":1,"314":1,"315":1,"318":1,"320":1}}],["群号",{"2":{"311":1}}],["群聊",{"2":{"312":1}}],["群聊仅群主",{"2":{"311":1,"313":2}}],["群聊通常为群id",{"2":{"183":1}}],["管理员",{"2":{"311":1,"313":2}}],["停用插件",{"2":{"313":2}}],["停用",{"2":{"312":1,"314":1}}],["停用机器人",{"2":{"311":1}}],["停止后",{"2":{"76":2}}],["停止前",{"2":{"75":2}}],["停止",{"2":{"65":2}}],["停止轻雪",{"2":{"27":2,"30":2,"49":2,"52":2}}],["该功能需要commit",{"2":{"311":1}}],["该模块封装通道实现",{"2":{"292":1}}],["该模块用于存放一些开发工具",{"2":{"159":1,"160":1}}],["该模块用于常用配置文件的加载",{"2":{"137":1}}],["该模块用于轻雪主进程和nonebot子进程之间的通信",{"2":{"100":1,"101":1}}],["推荐私聊使用",{"2":{"311":1}}],["推荐在编写html时同时更改对应js代码",{"2":{"307":1}}],["查询目标地实时天气",{"2":{"317":1}}],["查询实时天气",{"2":{"317":1}}],["查询",{"2":{"312":1,"315":1}}],["查询配置项",{"2":{"311":1}}],["查看用户信息菜单",{"2":{"315":1}}],["查看插件帮助",{"2":{"313":1}}],["查看轻雪文档",{"2":{"311":1}}],["查看统计信息和状态",{"2":{"311":1}}],["查看当前bot",{"2":{"311":1}}],["和风天气的天气key",{"2":{"317":1}}],["和",{"2":{"311":1}}],["和10是不一样的",{"2":{"311":1}}],["和config目录下的所有配置文件",{"2":{"144":2}}],["输入值会被执行以转换为正确的类型",{"2":{"311":1}}],["输出",{"2":{"295":1}}],["输出文件夹",{"2":{"243":2}}],["输出文件",{"2":{"239":2}}],["版本",{"2":{"311":1}}],["❌",{"2":{"311":11}}],["超级用户可用",{"2":{"311":1,"313":2}}],["超级用户",{"2":{"311":10,"313":10}}],["重载",{"2":{"314":1}}],["重载所有资源包",{"2":{"313":1}}],["重载资源",{"2":{"312":1}}],["重载轻雪",{"2":{"311":1}}],["重启轻雪",{"2":{"312":1}}],["重启轻雪即可加载插件",{"2":{"305":1}}],["重启轻雪本体",{"2":{"26":2,"48":2}}],["重启后",{"2":{"78":2}}],["重启前",{"2":{"77":2}}],["重启",{"2":{"65":2}}],["举例",{"2":{"311":1}}],["权限",{"2":{"311":1,"313":2,"315":1}}],["说明",{"2":{"311":1,"313":2,"315":1}}],["~代替",{"2":{"310":1}}],["~可以使用插件",{"2":{"310":1}}],["安装插件",{"2":{"313":1}}],["安装",{"2":{"310":1,"314":1}}],["安装的插件",{"2":{"248":2}}],["命令",{"2":{"311":1,"312":1,"313":2,"314":1,"315":2,"317":1,"318":1,"319":1,"320":1}}],["命令别名",{"0":{"312":1,"314":1,"318":1,"320":1},"2":{"310":1,"315":1}}],["命令文档",{"0":{"296":1},"1":{"297":1}}],["且通过安全的方式传输到轻雪的服务器",{"2":{"309":1}}],["且通道标识为",{"2":{"290":1}}],["系统信息及python信息",{"2":{"309":1}}],["内存",{"2":{"309":1}}],["内存共享是线程安全的",{"2":{"292":1}}],["内存共享使得代码编写更加简洁",{"2":{"292":1}}],["分钟",{"2":{"319":2}}],["分发",{"2":{"309":1}}],["分工明确",{"2":{"137":1}}],["修改优先级",{"2":{"313":1}}],["修改",{"2":{"309":1}}],["本项目不会收集用户的任何隐私信息",{"2":{"309":1}}],["本项目遵循mit协议",{"2":{"309":1}}],["本模块用于实现rpc",{"2":{"105":1}}],["本模块定义了一个通用的通道类",{"2":{"79":1}}],["同时用户也应该自行选择可用的资源包",{"2":{"308":1}}],["同步接收数据",{"2":{"85":2}}],["第三方资源包开发者需要注意版本兼容性",{"2":{"308":1}}],["对于主动推送的插件不生效",{"2":{"314":1}}],["对于不同资源包的不同文件",{"2":{"308":1}}],["对外启动方法",{"2":{"153":2}}],["└─",{"2":{"308":1}}],["└───",{"2":{"308":1}}],["└─resource",{"2":{"308":2}}],["├─templates",{"2":{"308":1}}],["├─metadata",{"2":{"308":2}}],["正常的路径应该是这样的",{"2":{"308":1}}],["只需要将其解压到根目录resources目录下即可",{"2":{"308":1}}],["以上内容仅用于项目的优化",{"2":{"309":1}}],["以避免出现无法预料的问题",{"2":{"307":1}}],["以下我们会编写一个简单的插件",{"2":{"303":1}}],["错位等无法预料的事情发生",{"2":{"307":1}}],["异常",{"2":{"307":1}}],["异步任务结束关键字",{"2":{"299":1}}],["异步等待",{"2":{"296":1}}],["异步包装器",{"2":{"287":2}}],["异步接收数据",{"2":{"86":2}}],["欢迎各位投稿资源包到轻雪资源商店",{"2":{"307":1}}],["部分异常信息",{"2":{"309":1}}],["部分内容制作需要一点点前端基础",{"2":{"307":1}}],["部分来源于",{"2":{"282":1}}],["讲起打包成一个新的资源包",{"2":{"307":1}}],["仅需按照原有路径进行文件替换即可",{"2":{"307":1}}],["那么加载b包后",{"2":{"308":1}}],["那么你能够很快就上手",{"2":{"307":1}}],["那么当前所有函数包的task都会被截停销毁",{"2":{"299":1}}],["如果你接触过minecraft的资源包",{"2":{"307":1}}],["如果你想同时输出多行内容可以尝试换行符",{"2":{"295":1}}],["主题包中的html渲染使用js来规定数据的渲染位置",{"2":{"307":1}}],["主题商店提供了一些资源包供你选择",{"2":{"307":1}}],["主进程中",{"2":{"290":1}}],["主进程中通过get",{"2":{"290":1}}],["主进程订阅者接收函数",{"2":{"116":1}}],["主进程创建单例",{"2":{"91":1,"92":1}}],["资源",{"2":{"307":1}}],["资源包管理",{"2":{"313":1}}],["资源包的结构会随着轻雪的更新而有变动",{"2":{"308":1}}],["资源包的制作很简单",{"2":{"307":1}}],["资源包加载遵循一个优先级",{"2":{"308":1}}],["资源包描述",{"2":{"308":1}}],["资源包名称",{"2":{"308":1}}],["资源包通常是以",{"2":{"308":1}}],["资源包",{"2":{"307":1,"314":1}}],["它允许你一定程度上自定义轻雪的外观",{"2":{"307":1}}],["它允许你在轻雪中运行一些自定义的由数据驱动的命令",{"2":{"294":1}}],["字体包",{"2":{"307":1}}],["字符串",{"2":{"242":2}}],["亦可根据用途称为主题包",{"2":{"307":1}}],["保存后轻雪会自动重载nonebot进程",{"2":{"306":1}}],["保持轻雪运行",{"2":{"24":2,"46":2}}],["我们在src",{"2":{"306":1}}],["然后运行python",{"2":{"306":1}}],["方法2",{"0":{"306":1}}],["方法1",{"0":{"305":1}}],["用户管理liteyuki",{"0":{"315":1}}],["用户协议",{"0":{"309":1}}],["用observer的on",{"2":{"303":1}}],["用于统计bot接收到的消息",{"2":{"319":1}}],["用于开发nonebot时进行文件系统变更重载",{"2":{"303":1}}],["用于结束当前已完成function的执行",{"2":{"299":1}}],["用于回复消息",{"2":{"183":1}}],["用于获取和唯一标识",{"2":{"154":2}}],["用于进程间通信",{"2":{"79":1}}],["排除的文件扩展名",{"2":{"303":1}}],["因此插件主要是一些后台任务或者与聊天机器人的通信",{"2":{"303":1}}],["定义插件元数据",{"2":{"302":1}}],["定义变量",{"2":{"296":1}}],["导入轻雪bot和日志",{"2":{"303":1}}],["导入文件系统事件",{"2":{"303":1}}],["导入文件系统观察器",{"2":{"303":1}}],["导入文件夹下多个插件",{"2":{"249":2}}],["导入逻辑部分",{"2":{"302":1}}],["即后加载的资源包会覆盖前面的资源包",{"2":{"308":1}}],["即可创建一个插件",{"2":{"302":1}}],["即不等待",{"2":{"296":1}}],["首先创建一个文件夹",{"2":{"302":1}}],["编写逻辑部分",{"0":{"303":1}}],["编写轻雪函数推荐你使用vs",{"2":{"299":1}}],["编辑时的语法高亮可采取shell格式",{"2":{"295":1}}],["有一个task任务没有完成而await被执行了",{"2":{"299":1}}],["的情况是效率提升的关键",{"2":{"299":1}}],["单线程走到底",{"2":{"299":1}}],["单位s",{"2":{"296":1}}],["避免出现",{"2":{"299":1}}],["所有人",{"2":{"311":1,"313":1,"315":3}}],["所有进程",{"2":{"27":2,"49":2}}],["所以在编写lyfunction时也要注意异步的调用",{"2":{"299":1}}],["由于liteyukibot基于异步运行",{"2":{"299":1}}],["理论上所有基于onebotv11的api都可调用",{"2":{"298":1}}],["则该文件夹不会被识别为资源包",{"2":{"308":1}}],["则需要删除await",{"2":{"297":1}}],["则传入泛型默认开启",{"2":{"81":2}}],["无需手动创建实例",{"2":{"306":1}}],["无需手动初始化bot",{"2":{"173":2}}],["无限戳",{"2":{"297":1}}],["执行",{"2":{"297":1}}],["疯狂戳好友",{"2":{"297":1}}],["否则会导致渲染失败或渲染结果不理想",{"2":{"307":1}}],["否则task对象会被销毁",{"2":{"296":1}}],["否则默认关闭",{"2":{"81":2}}],["需要在最后调用",{"2":{"296":1}}],["需要在对应进程都调度一次",{"2":{"89":2}}],["等待所有异步任务结束",{"2":{"296":1}}],["等待接收数据",{"2":{"86":1}}],["结束关键字",{"0":{"299":1}}],["结束函数关键字",{"2":{"296":1}}],["结构",{"2":{"83":2}}],["使用通用日期简写",{"2":{"319":2}}],["使用此项目代表你已经同意以上协议",{"2":{"309":1}}],["使用开发工具快速运行插件",{"2":{"306":1}}],["使用",{"2":{"297":1}}],["使用新的task执行命令",{"2":{"296":1}}],["使用watchdog监控文件变化并重启bot",{"2":{"161":1}}],["也支持句末注释",{"2":{"295":1}}],["例如npm",{"2":{"310":1}}],["例如nonebot插件中",{"2":{"290":1}}],["例如你在a中定义了templates",{"2":{"308":1}}],["例如html",{"2":{"307":1}}],["例如main",{"2":{"306":1}}],["例如watchdog",{"2":{"302":1,"305":1}}],["例如",{"2":{"295":2,"308":1,"317":1}}],["例如test",{"2":{"295":1,"306":1}}],["函数文件放在资源包的functions目录下",{"2":{"295":1}}],["函数文件",{"0":{"295":1}}],["属于资源包的一部分",{"2":{"294":1}}],["类似于minecraft的mcfunction",{"2":{"294":1}}],["类似于redis",{"2":{"115":1}}],["是可以相对引用的",{"2":{"308":1}}],["是轻雪的一个功能",{"2":{"294":1}}],["是否为协程可调用对象",{"2":{"283":2}}],["是否忽略警告",{"2":{"249":2}}],["是否忽略键不存在的错误",{"2":{"122":2}}],["是否包含顶层文件夹",{"2":{"243":2}}],["是否阻断后续优先级更低的匹配器",{"2":{"188":2}}],["是否递归监听子目录",{"2":{"171":2}}],["是否通过验证",{"2":{"83":2}}],["是否开启类型检查",{"2":{"81":2}}],["示例",{"0":{"293":1,"297":1}}],["线程锁会自动保护共享内存的读写操作",{"2":{"292":1}}],["相比于普通进程通信",{"2":{"292":1}}],["相对路径",{"2":{"239":2}}],["简介",{"0":{"292":1,"300":1,"307":1},"1":{"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"308":1}}],["共享内存通信",{"0":{"291":1},"1":{"292":1,"293":1}}],["共享内存模块",{"2":{"115":1}}],["被动模式",{"2":{"290":1}}],["每隔0",{"2":{"297":1}}],["每行一个命令",{"2":{"295":1}}],["每次接收到字符串数据时都会运行",{"2":{"290":1}}],["每3秒发送一次消息",{"2":{"290":1}}],["每个配置文件给一个或一类服务提供配置",{"2":{"137":1}}],["创建入口文件",{"2":{"306":1}}],["创建插件",{"0":{"302":1}}],["创建子进程的同时会初始化一个被动通道和一个主动通道",{"2":{"290":1}}],["创建asyncio",{"2":{"153":2}}],["路径a",{"2":{"286":2}}],["转换路径为模块名",{"2":{"286":2}}],["可用",{"2":{"311":1}}],["可用参数",{"2":{"311":1}}],["可以在配置文件中把auto",{"2":{"309":1}}],["可以在a的index",{"2":{"308":1}}],["可以在此基础上进行修改",{"2":{"307":1}}],["可以很高程度地扩展轻雪的功能",{"2":{"300":1}}],["可以是本地插件或是通过",{"2":{"248":2}}],["可递归",{"2":{"296":1}}],["可调用对象",{"2":{"283":2}}],["判断是否为协程可调用对象",{"2":{"283":2}}],["一个",{"2":{"302":1}}],["一个键不要多次出现",{"2":{"137":1}}],["一些常用的工具类",{"2":{"282":1}}],["应在初始化时调用",{"2":{"279":2,"281":2}}],["根据不同类型插件设置颜色",{"2":{"250":2}}],["参数列表",{"2":{"311":2}}],["参数为调用set",{"2":{"290":1}}],["参数",{"2":{"248":1,"249":1,"310":1,"319":1}}],["参考\`liteyuki",{"2":{"173":1}}],["参考liteyuki",{"2":{"173":1}}],["加载",{"2":{"314":1}}],["加载资源包",{"0":{"308":1},"2":{"313":1}}],["加载插件",{"0":{"304":1},"1":{"305":1,"306":1}}],["加载插件加载器",{"2":{"21":1,"43":1}}],["加载单个插件",{"2":{"248":2}}],["插件停用只能阻断传入响应",{"2":{"314":1}}],["插件管理",{"2":{"313":1,"314":1}}],["插件",{"0":{"313":1},"1":{"314":1}}],["插件信息",{"2":{"309":1}}],["插件描述",{"2":{"302":1}}],["插件版本",{"2":{"302":1}}],["插件类型",{"2":{"250":2,"302":1}}],["插件名称",{"2":{"248":2,"250":2,"302":1}}],["插件字典",{"2":{"246":2,"275":2}}],["插件路径",{"2":{"173":2}}],["去头路径",{"2":{"244":1}}],["忽略的路径",{"2":{"243":2}}],["忽略私有函数和类",{"2":{"241":2}}],["模块名",{"2":{"286":2}}],["模块文件夹",{"2":{"243":2}}],["模块信息",{"2":{"241":2,"242":2}}],["源代码",{"2":{"242":1,"293":1}}],["语言包等",{"2":{"307":1}}],["语言",{"2":{"242":2,"243":2}}],["自定义选项title",{"2":{"242":2}}],["自动调用",{"2":{"28":2,"50":2}}],["你在a包中定义了一个index",{"2":{"308":1}}],["你自己制作的资源包也应该遵循这个规则",{"2":{"308":1}}],["你也可以自己制作资源包",{"2":{"307":1}}],["你的插件代码",{"2":{"302":1}}],["你可以选择开启auto",{"2":{"309":1}}],["你可以自由使用",{"2":{"309":1}}],["你可以自定义一些信息",{"2":{"308":1}}],["你可以在多个线程中读写共享内存",{"2":{"292":1}}],["你可以通过storage模块实现内存共享通信",{"2":{"292":1}}],["你可在此自定义生成的markdown格式",{"2":{"242":2}}],["你应该使用其他储存方式",{"2":{"137":1}}],["生成文档",{"2":{"243":2}}],["生成模块的markdown",{"2":{"242":2}}],["生命周期管理",{"2":{"21":1,"43":1}}],["文件内容为一系列的命令",{"2":{"295":1}}],["文件名以",{"2":{"295":1}}],["文件夹路径",{"2":{"249":2}}],["文件路径",{"2":{"241":2}}],["文件数据",{"2":{"239":2}}],["目标路径",{"2":{"238":2}}],["基础插件",{"0":{"310":1},"1":{"311":1,"312":1,"313":1,"314":1,"315":1}}],["基础路径",{"2":{"238":2}}],["基于ipc",{"2":{"105":1}}],["添加配置项",{"2":{"311":1}}],["添加sleep",{"2":{"297":1}}],["添加处理函数",{"2":{"189":2}}],["添加进程",{"2":{"154":2}}],["优先级",{"2":{"188":2}}],["规则函数签名",{"2":{"197":1}}],["规则",{"2":{"188":2}}],["匹配器",{"2":{"188":2}}],["回复消息",{"2":{"184":2}}],["附加数据",{"2":{"183":1}}],["原始消息",{"2":{"183":1}}],["消息类型",{"2":{"183":1}}],["消息段数组",{"2":{"183":1}}],["消息",{"2":{"183":1}}],["机器人id",{"2":{"183":1}}],["轻雪天气liteyuki",{"0":{"317":1},"1":{"318":1}}],["轻雪文档",{"2":{"312":1}}],["轻雪命令liteyuki",{"0":{"311":1},"1":{"312":1}}],["轻雪会收集以下内容",{"2":{"309":1}}],["轻雪原版资源包请查看liteyukibot",{"2":{"307":1}}],["轻雪主进程不涉及聊天部分",{"2":{"303":1}}],["轻雪插件是轻雪内置的一部分功能",{"2":{"300":1}}],["轻雪函数",{"0":{"294":1},"1":{"295":1,"296":1,"297":1,"298":1,"299":1},"2":{"294":1}}],["轻雪框架提供了一个内存共享通信的接口",{"2":{"292":1}}],["轻雪抽象消息事件",{"2":{"183":2}}],["轻雪生命周期管理",{"2":{"65":2}}],["⭕",{"2":{"180":1}}],["⚠️",{"2":{"180":1}}],["✅",{"2":{"180":1}}],["ℹ️信息",{"2":{"290":4}}],["ℹ️",{"2":{"180":1}}],["🐛",{"2":{"180":1}}],["在群聊启用",{"2":{"311":1}}],["在普通图片和markdown大图之间切换",{"2":{"311":1}}],["在b中定义了templates",{"2":{"308":1}}],["在配置文件中的liteyuki",{"2":{"305":1}}],["在设备上执行命令",{"2":{"296":1}}],["在发信器输出",{"2":{"295":1}}],["在任意进程中均可使用",{"2":{"293":1}}],["在子进程中",{"2":{"290":1}}],["在轻雪插件中",{"2":{"290":1}}],["在新线程中运行协程",{"2":{"285":2}}],["在语言加载完成后执行",{"2":{"180":2}}],["在主进程中运行",{"2":{"127":2}}],["上午12",{"2":{"252":1}}],["上午11",{"2":{"147":1}}],["上午6",{"2":{"206":1}}],["上午9",{"2":{"178":1}}],["上午5",{"2":{"172":1}}],["返回true则执行回调函数",{"2":{"171":2}}],["事件过滤器",{"2":{"171":2}}],["事件循环",{"2":{"21":1,"43":1}}],["监听目录们",{"2":{"171":2}}],["防抖函数",{"2":{"164":2}}],["防止获取空指针",{"2":{"132":1}}],["位置1为filesystemevent",{"2":{"162":1,"163":1}}],["启用",{"2":{"312":1,"314":1}}],["启用插件后",{"2":{"306":1}}],["启用该模块需要在配置文件中设置dev",{"2":{"161":1}}],["启动所有进程",{"2":{"153":2}}],["启动发布订阅接收器循环",{"2":{"127":2}}],["启动后控制台输出",{"2":{"290":1}}],["启动后",{"2":{"74":2}}],["启动前",{"2":{"73":2}}],["启动",{"2":{"65":2}}],["启动逻辑",{"2":{"22":2,"44":2}}],["此模块用于注册观察者函数",{"2":{"161":1}}],["检查进程是否存活",{"2":{"158":2}}],["终止进程并从进程字典中删除",{"2":{"156":2}}],["进程函数关键字参数",{"2":{"154":2}}],["进程函数参数",{"2":{"154":2}}],["进程函数",{"2":{"154":2}}],["进程名",{"2":{"154":2}}],["进程名称",{"2":{"27":2,"49":2}}],["请阅读插件主页的说明",{"2":{"314":1}}],["请确保您所编写的html代码能被bot解析",{"2":{"307":1}}],["请注意",{"2":{"307":1}}],["请创建task",{"2":{"152":2}}],["请不要将需要动态加载的内容写入配置文件",{"2":{"137":1}}],["并且应该在metadata",{"2":{"308":1}}],["并且不用修改源代码",{"2":{"307":1}}],["并在其中写入一些代码",{"2":{"306":1}}],["并在其中写入以下代码",{"2":{"306":1}}],["并在其中创建一个",{"2":{"302":1}}],["并遵循其许可进行修改",{"2":{"282":1}}],["并添加到进程字典中",{"2":{"152":2}}],["并发运行异步函数",{"2":{"66":2}}],["开始",{"0":{"301":1},"1":{"302":1,"303":1,"304":1,"305":1,"306":1}}],["开始接收数据",{"2":{"89":2}}],["开启后自动监控进程",{"2":{"152":2}}],["项目目录下的配置文件优先",{"2":{"144":2}}],["项目目录下的配置文件优先级高于config目录下的配置文件",{"2":{"137":1}}],["项目目录下的config",{"2":{"144":2}}],["按照读取文件的优先级反向覆盖",{"2":{"143":2}}],["不带key返回配置项列表",{"2":{"311":1}}],["不包含任何隐私信息",{"2":{"309":1}}],["不含隐私部分",{"2":{"309":1}}],["不含插件数据",{"2":{"309":1}}],["不同adapter",{"2":{"298":1}}],["不递归",{"2":{"143":2}}],["不要出现过多的嵌套",{"2":{"137":1}}],["从一个标准的轻雪项目加载配置文件",{"2":{"144":2}}],["从目录下加载配置文件",{"2":{"143":2}}],["从指定文件加载配置项",{"2":{"142":2}}],["但请注意甄别第三方插件的安全性",{"2":{"309":1}}],["但请保证以上三个字段",{"2":{"308":1}}],["但是请保留原作者信息",{"2":{"309":1}}],["但是更加轻量级并且线程安全",{"2":{"115":1}}],["但若出现非单function的情况",{"2":{"299":1}}],["但需单独起篇幅",{"2":{"294":1}}],["但也包含原有的键值对",{"2":{"138":2}}],["扁平化后的配置文件",{"2":{"138":2}}],["扁平化配置文件",{"2":{"138":2}}],["扁平化编写",{"2":{"137":1}}],["注意不要嵌套文件夹",{"2":{"308":1}}],["注意冲突时的优先级",{"2":{"137":1}}],["注册一个函数在nonebot启动后运行",{"2":{"290":1}}],["注册一个函数在轻雪启动后运行",{"2":{"290":1}}],["注册文件系统变化监听器",{"2":{"171":2}}],["注册重启时的函数",{"2":{"71":2}}],["注册重启后的函数",{"2":{"36":2,"58":2,"72":2}}],["注册停止前的函数",{"2":{"69":2}}],["注册停止后的函数",{"2":{"33":2,"55":2,"70":2}}],["注册进程重启前的函数",{"2":{"35":2,"57":2}}],["注册进程停止前的函数",{"2":{"34":2,"56":2}}],["注册启动时的函数",{"2":{"67":2,"68":2}}],["注册启动后的函数",{"2":{"32":2,"54":2}}],["注册启动前的函数",{"2":{"31":2,"53":2}}],["尽量不要冲突",{"2":{"137":1}}],["多配置文件编写原则",{"2":{"137":1}}],["引用计数",{"2":{"132":1}}],["若不存在则返回空",{"2":{"311":1}}],["若不存在则创建于config",{"2":{"311":1}}],["若存在则返回",{"2":{"311":1}}],["若存在则覆盖",{"2":{"311":1}}],["若存在则会覆盖",{"2":{"311":1}}],["若你不希望提供这些信息",{"2":{"309":1}}],["若没有metadata",{"2":{"308":1}}],["若要戳20s后停止",{"2":{"297":1}}],["若函数中启动了其他task",{"2":{"296":1}}],["若有子进程订阅则推送给子进程",{"2":{"127":2}}],["若为空",{"2":{"81":2}}],["运行环境的设备信息",{"2":{"309":1}}],["运行在主进程中",{"2":{"300":1}}],["运行协程",{"2":{"284":2}}],["运行处理函数",{"2":{"190":2}}],["运行插件",{"2":{"173":2}}],["运行订阅者接收函数",{"2":{"126":2}}],["运行接收函数",{"2":{"88":2}}],["订阅者接收消息时的回调",{"2":{"125":2}}],["频道",{"2":{"124":2,"125":2,"126":2}}],["发布消息",{"2":{"124":2}}],["发送函数为同步函数",{"2":{"84":2}}],["发送数据",{"2":{"84":2,"112":2}}],["删除键值对",{"2":{"122":2}}],["值",{"2":{"120":2,"121":2}}],["键值对",{"2":{"123":2}}],["键",{"2":{"120":2,"121":2,"122":2}}],["设置用户信息或打开属性设置菜单",{"2":{"315":1}}],["设置",{"2":{"312":1,"315":1}}],["设置共享内存",{"2":{"293":1}}],["设置后的插件名称",{"2":{"250":2}}],["设置插件名称颜色",{"2":{"250":2}}],["设置键值对",{"2":{"120":2}}],["设置通道实例",{"2":{"93":2,"94":2}}],["关闭通道",{"2":{"114":2}}],["8",{"2":{"109":1,"139":1,"140":1,"141":1,"172":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"239":1,"241":1,"276":1,"277":1,"278":1,"280":1}}],["调用机器人函数",{"2":{"311":1}}],["调用机器人api",{"2":{"311":1}}],["调用重启进程方法",{"2":{"303":1}}],["调用函数",{"2":{"296":1}}],["调用bot",{"2":{"296":1}}],["调用",{"2":{"108":2}}],["通过关键词搜索插件",{"2":{"313":1}}],["通过装饰器注册一个函数在接收到消息时运行",{"2":{"290":1}}],["通常是目录不存在或目录为空",{"2":{"249":2}}],["通常为纯文本的格式",{"2":{"183":1}}],["通常会默认传入chan",{"2":{"154":2}}],["通信",{"2":{"105":1}}],["通道实例",{"2":{"93":2}}],["通道名称",{"2":{"93":2,"94":2,"95":2}}],["通道传递通道",{"2":{"91":1,"92":1}}],["通道id",{"2":{"81":2,"111":2}}],["依赖关系",{"2":{"100":1,"101":1}}],["子进程中获取通道直接导入进程全局单例即可",{"2":{"290":1}}],["子进程中导入单例active",{"2":{"290":1}}],["子进程订阅者接收函数",{"2":{"117":1}}],["子进程初始化时实例化",{"2":{"91":1,"92":1}}],["子进程可用的主动和被动通道",{"2":{"90":1}}],["装饰一个函数在接收到数据后执行",{"2":{"87":2,"171":2}}],["装饰器",{"2":{"87":2,"125":2,"171":2,"189":4}}],["为可选参数",{"2":{"310":1}}],["为必填参数",{"2":{"310":1}}],["为none则不过滤",{"2":{"87":2}}],["为子进程重启时调用",{"2":{"35":2,"57":2}}],["为子进程停止时调用",{"2":{"34":2,"56":2}}],["过滤函数",{"2":{"87":2}}],["接收频道",{"2":{"183":1}}],["接收数据",{"2":{"113":2}}],["接收数据并执行函数",{"2":{"87":2}}],["接收到数据",{"2":{"86":1}}],["会触发最大递归深度限制",{"2":{"297":1}}],["会话负载信息",{"2":{"309":1}}],["会话类型",{"2":{"183":1}}],["会话id",{"2":{"183":1}}],["会阻塞",{"2":{"152":2}}],["会阻塞线程",{"2":{"85":2}}],["会自动判断key版本",{"2":{"317":1}}],["会自动判断主进程和子进程",{"2":{"89":2}}],["会自动识别文件格式",{"2":{"142":2}}],["会挂起等待",{"2":{"86":2}}],["没有异步的必要",{"2":{"84":2}}],["zip格式压缩的",{"2":{"308":1}}],["zip",{"2":{"83":1}}],["zh",{"0":{"242":1,"243":1},"2":{"2":1,"242":2,"243":1}}],["数据",{"2":{"83":2,"84":2,"88":2,"112":2,"113":2,"124":2,"126":2}}],["验证数据结构",{"2":{"83":2}}],["泛型类型",{"2":{"82":2}}],["下午3",{"2":{"109":1}}],["下午12",{"2":{"276":1}}],["下午10",{"2":{"102":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"278":1,"280":1}}],["下午11",{"2":{"79":1,"247":1,"251":1}}],["下午8",{"2":{"63":1}}],["7",{"2":{"63":1,"79":1,"102":1,"147":1,"178":1,"247":1,"251":1,"252":1}}],["|$$$$$",{"2":{"40":1,"62":1}}],["|$$",{"2":{"40":5,"62":5}}],["|",{"0":{"66":1,"173":1,"183":1,"184":1,"248":1},"2":{"40":45,"62":45,"66":1,"173":1,"183":1,"184":1,"248":1}}],["+",{"2":{"40":2,"62":2,"242":2,"286":1}}],["+=",{"2":{"26":1,"48":1,"87":1,"242":15}}],["x26",{"2":{"195":1,"242":4}}],["x1b",{"2":{"40":2,"62":2}}],["x3c",{"2":{"26":1,"40":1,"48":1,"62":1,"180":5,"193":1,"242":8,"248":2,"250":4,"296":6,"317":2,"319":2}}],["兼容键",{"2":{"39":2,"61":2}}],["兼容旧版本",{"2":{"39":2,"61":2}}],["默认普通图片",{"2":{"311":1}}],["默认开启",{"2":{"309":1}}],["默认插件加载器",{"2":{"279":2,"281":2}}],["默认执行扁平化选项",{"2":{"142":2,"143":2}}],["默认值",{"2":{"38":2,"39":2,"60":2,"61":2,"121":2}}],["默认为none",{"2":{"27":2,"49":2}}],["获取用户信息",{"2":{"315":1}}],["获取唯一的轻雪bot实例",{"2":{"303":1}}],["获取共享内存",{"2":{"293":1}}],["获取主动通道",{"2":{"290":1}}],["获取被动通道",{"2":{"290":1}}],["获取已加载的插件",{"2":{"246":2,"275":2}}],["获取函数和类",{"2":{"241":2}}],["获取相对路径",{"2":{"238":2}}],["获取所有键值对",{"2":{"123":2}}],["获取键值对",{"2":{"121":2}}],["获取通道实例",{"2":{"95":2,"96":2}}],["获取通道传递泛型类型",{"2":{"82":2}}],["获取配置",{"2":{"38":2,"39":2,"60":2,"61":2}}],["获取轻雪实例",{"2":{"37":2,"59":2}}],["未实现",{"2":{"33":2,"36":2,"55":2,"58":2}}],["505468b及以后的lagrange",{"2":{"311":1}}],["59",{"2":{"247":1,"251":1}}],["55",{"2":{"196":1}}],["52",{"2":{"192":1}}],["51",{"2":{"186":1}}],["54",{"2":{"109":1}}],["5",{"2":{"24":1,"46":1,"137":1}}],["外部启动接口",{"2":{"23":2,"45":2}}],["信号处理",{"2":{"21":1,"25":2,"43":1,"47":2}}],["初始化通道",{"2":{"81":2,"111":2}}],["初始化轻雪",{"2":{"28":2,"50":2}}],["初始化轻雪实例",{"2":{"21":2,"43":2}}],["初始化",{"2":{"21":1,"43":1}}],["=none",{"2":{"27":1,"49":1,"81":1,"87":1,"121":1,"183":2}}],["==",{"2":{"26":3,"48":3,"89":1,"96":1,"97":2,"98":2,"99":1,"127":1,"132":1,"133":2,"134":2,"135":2,"136":1,"152":2,"179":1,"241":4,"242":2,"286":1}}],["=",{"0":{"26":1,"27":1,"38":1,"39":1,"48":1,"49":1,"60":1,"61":1,"81":1,"87":1,"121":1,"122":1,"130":1,"131":1,"142":1,"143":1,"144":1,"154":2,"171":2,"183":2,"194":3,"195":3,"208":1,"209":1,"210":1,"211":1,"212":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"227":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"241":1,"242":2,"243":3,"249":1,"254":1,"255":1,"256":1,"257":1,"258":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"269":1,"270":1,"271":1,"272":1,"273":1},"2":{"21":7,"26":6,"27":2,"43":7,"48":6,"49":2,"65":7,"66":2,"81":10,"83":1,"84":1,"85":1,"86":2,"87":1,"89":2,"93":1,"95":1,"96":1,"97":1,"98":1,"99":1,"104":2,"107":1,"111":4,"119":6,"120":2,"121":2,"122":1,"123":1,"125":2,"127":1,"129":1,"133":3,"134":2,"135":1,"136":1,"138":2,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":5,"151":3,"152":4,"154":5,"156":1,"164":3,"171":2,"173":4,"180":1,"183":10,"184":1,"188":5,"194":1,"199":1,"240":1,"241":17,"242":16,"243":13,"248":12,"249":6,"250":5,"283":1,"284":2,"286":1,"287":1,"290":5,"293":1,"302":1,"303":2}}],["常规操作",{"2":{"21":1,"43":1}}],[">=",{"2":{"188":1}}],[">",{"2":{"21":1,"37":1,"38":1,"39":1,"43":1,"59":1,"60":1,"61":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"82":1,"83":1,"85":1,"86":1,"87":3,"95":1,"96":1,"107":1,"108":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"138":2,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"158":1,"164":1,"171":2,"179":1,"189":2,"190":1,"194":1,"195":1,"200":2,"201":2,"202":1,"203":1,"204":1,"238":1,"241":1,"242":3,"243":1,"246":1,"248":1,"249":1,"250":3,"275":1,"283":1,"286":2,"287":1,"317":2}}],["配置项",{"2":{"317":1}}],["配置项目",{"2":{"138":2}}],["配置了命令别名的命令可以使用别名代替原命令",{"2":{"310":1}}],["配置文件尽量扁平化",{"2":{"137":1}}],["配置值",{"2":{"38":2,"39":2,"60":2,"61":2}}],["配置键",{"2":{"38":2,"39":2,"60":2,"61":2}}],["配置",{"2":{"21":3,"43":3,"312":1}}],["31",{"2":{"276":1}}],["34m",{"2":{"40":1,"62":1}}],["3",{"2":{"18":1,"137":1,"177":1,"249":1,"290":1}}],["300~500mb",{"2":{"15":1}}],["6",{"2":{"18":1,"177":1}}],["测试版本号",{"2":{"18":1,"177":1}}],["$$$$",{"2":{"40":1,"62":1}}],["$$$$$",{"2":{"40":1,"62":1}}],["$$$$$$$$",{"2":{"40":4,"62":4}}],["$$$$$$",{"2":{"40":5,"62":5}}],["$$",{"2":{"40":54,"62":54}}],["$",{"2":{"13":3}}],["kill",{"2":{"156":1}}],["k",{"2":{"83":4,"138":2,"242":2}}],["keyword",{"2":{"195":2}}],["keywords为城市名",{"2":{"317":2}}],["keywords",{"0":{"195":2},"2":{"195":5,"313":1,"317":2}}],["keyerror",{"2":{"122":1,"152":1}}],["keyvaluestore",{"0":{"118":1},"1":{"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1},"2":{"129":1}}],["keys",{"0":{"39":1,"61":1},"2":{"39":4,"61":4}}],["key",{"0":{"38":1,"39":1,"60":1,"61":1,"120":1,"121":1,"122":2},"2":{"38":4,"39":11,"60":4,"61":11,"120":7,"121":7,"122":13,"133":3,"134":3,"135":3,"138":2,"293":2,"311":4,"315":2,"317":1}}],["keyboardinterrupt",{"2":{"23":1,"24":1,"45":1,"46":1}}],["keep",{"0":{"24":1,"46":1},"2":{"22":1,"24":1,"44":1,"46":1}}],["kwargs=none",{"2":{"154":1}}],["kwargs=self",{"2":{"152":1}}],["kwargs",{"0":{"21":1,"28":1,"43":1,"50":1,"66":1,"108":1,"154":1},"2":{"21":4,"28":1,"43":4,"50":1,"66":3,"108":2,"154":5,"164":2,"287":2,"311":2}}],["kritor",{"2":{"8":1}}],["know",{"2":{"6":2}}],["qq群号",{"2":{"319":1}}],["qq",{"0":{"8":1},"2":{"7":1,"8":3}}],["question",{"2":{"6":1}}],["questions",{"0":{"6":1,"7":1,"16":1}}],["quot",{"2":{"3":2,"299":2,"311":2,"317":4}}],["js",{"2":{"8":1}}],["json",{"0":{"140":1},"2":{"0":2,"140":5,"142":2,"144":1}}],["join",{"0":{"155":1},"2":{"7":1,"26":1,"48":1,"143":1,"155":2,"156":1,"240":1,"242":4,"243":1,"249":2,"286":2}}],["g",{"2":{"250":1,"320":1}}],["group",{"2":{"183":2,"311":9,"312":1,"313":2,"319":3,"320":1}}],["group775840726",{"2":{"7":1}}],["green>",{"2":{"180":1}}],["gather",{"2":{"66":1,"284":1}}],["getattr",{"2":{"283":1}}],["get",{"0":{"37":1,"38":1,"39":1,"59":1,"60":1,"61":1,"82":1,"95":1,"96":1,"98":1,"99":1,"121":1,"123":1,"129":1,"133":1,"136":1,"179":1,"238":1,"240":1,"241":1,"246":1,"275":1},"2":{"27":2,"37":2,"38":3,"39":5,"49":2,"59":2,"60":3,"61":5,"66":1,"81":2,"82":2,"84":1,"86":1,"95":2,"96":2,"97":1,"98":4,"99":3,"120":1,"121":4,"122":1,"123":2,"129":1,"132":1,"133":3,"135":1,"136":3,"152":1,"153":1,"173":1,"179":1,"180":2,"238":1,"240":1,"241":5,"243":3,"244":1,"246":1,"248":3,"249":1,"275":1,"279":2,"281":2,"284":1,"290":8,"293":1,"303":2,"311":3,"312":1,"315":2}}],["generic",{"0":{"80":1,"82":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1},"2":{"81":2,"82":1,"84":1}}],["generate",{"0":{"242":1,"243":1},"2":{"0":1,"242":1,"243":3}}],["gensokyo",{"2":{"8":1}}],["globalkeyvaluestore",{"0":{"128":1},"1":{"129":1,"130":1,"131":1}}],["global",{"2":{"21":1,"43":1,"87":1,"313":2,"314":2}}],["gt",{"0":{"21":1,"37":1,"38":1,"39":1,"43":1,"59":1,"60":1,"61":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"82":1,"83":1,"85":1,"86":1,"87":1,"95":1,"96":1,"107":1,"108":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"158":1,"171":1,"179":1,"189":1,"190":1,"194":1,"195":1,"200":1,"201":1,"202":1,"203":1,"204":1,"238":1,"241":1,"242":1,"246":1,"248":1,"249":1,"250":1,"275":1,"283":1,"286":1,"287":1},"2":{"100":3,"101":3,"138":1,"188":1,"286":1,"310":1,"311":7,"313":10,"315":2}}],["go",{"2":{"8":2,"289":1}}],["github",{"2":{"7":1,"12":1,"13":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"104":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"129":1,"133":1,"134":1,"135":1,"136":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"277":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1}}],["git",{"2":{"6":1,"12":2,"13":1,"15":2}}],["\`pathlib",{"2":{"248":1}}],["\`path",{"2":{"248":1}}],["\`pip\`",{"2":{"248":1}}],["\`",{"2":{"3":1,"242":14,"248":1}}],["validate",{"0":{"83":1},"2":{"83":4,"84":1}}],["value=ast",{"2":{"241":1}}],["values",{"2":{"153":1}}],["valueerror",{"2":{"81":2,"93":1}}],["value2",{"2":{"2":1}}],["value1",{"2":{"2":1}}],["value",{"0":{"120":1,"224":1},"2":{"2":1,"3":3,"120":6,"134":3,"138":3,"241":6,"242":3,"293":2,"311":2,"315":1}}],["var=value",{"2":{"296":1}}],["var2=value2",{"2":{"296":1}}],["var1=value1>",{"2":{"296":1}}],["var",{"0":{"18":1,"90":1,"91":1,"92":1,"116":1,"117":1,"132":1,"162":1,"163":1,"177":1,"197":1,"244":1},"2":{"242":2}}],["version=",{"2":{"302":1}}],["version",{"0":{"18":1,"177":1},"2":{"15":1,"308":1}}],["venv",{"2":{"12":4}}],["v",{"2":{"13":2,"138":2,"242":2}}],["view",{"2":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"104":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"129":1,"133":1,"134":1,"135":1,"136":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"277":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1}}],["virtual",{"2":{"6":1,"12":3}}],["visit",{"2":{"3":1}}],["v11协议api",{"2":{"311":2}}],["v11",{"2":{"3":1,"298":1}}],["2s戳两次",{"2":{"297":1}}],["22",{"2":{"276":1}}],["27",{"2":{"147":1,"178":1}}],["25",{"2":{"109":1}}],["21",{"2":{"79":1}}],["26",{"2":{"79":1,"102":1}}],["24",{"2":{"63":1,"252":1}}],["23",{"2":{"63":1,"206":1,"247":1,"251":1}}],["20代替空格",{"2":{"311":1}}],["20和end",{"2":{"297":1}}],["2024",{"2":{"63":2,"79":2,"102":2,"109":2,"147":2,"172":2,"178":2,"181":2,"185":2,"186":2,"191":2,"192":2,"196":2,"205":2,"206":2,"247":2,"251":2,"252":2,"276":2,"278":2,"280":2}}],["2020",{"2":{"63":1,"79":1,"102":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["20216",{"2":{"1":1,"3":1,"13":4}}],["20",{"2":{"15":1}}],["2019+",{"2":{"15":1}}],["2",{"2":{"2":1,"137":1,"152":1,"297":1,"308":1}}],["object",{"2":{"289":1}}],["observer",{"0":{"161":1},"1":{"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1},"2":{"171":1,"303":2}}],["occurred",{"2":{"284":1}}],["occupy",{"2":{"15":1}}],["os",{"2":{"142":1,"143":3,"238":1,"239":4,"240":2,"241":1,"243":2,"249":9,"303":2}}],["outlook",{"2":{"63":1,"79":1,"102":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["output",{"0":{"243":1},"2":{"2":1,"243":6}}],["option",{"2":{"310":1}}],["optional",{"0":{"27":1,"49":1,"81":1,"82":1,"87":1,"121":2,"183":2,"248":1,"273":1},"2":{"27":1,"49":1,"81":1,"82":3,"87":1,"119":2,"121":3,"183":2,"248":1}}],["opt",{"2":{"248":3}}],["open",{"2":{"26":1,"48":1,"139":1,"140":1,"141":1,"239":1,"241":1}}],["openshamrock",{"2":{"8":1}}],["order",{"2":{"243":1}}],["orig",{"2":{"82":2}}],["or",{"0":{"200":1},"2":{"4":1,"6":2,"15":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":2,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"104":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"129":1,"133":1,"134":1,"135":1,"136":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"199":1,"200":3,"201":1,"202":1,"203":1,"204":1,"238":1,"239":1,"240":1,"241":5,"242":1,"243":1,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"277":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1}}],["of",{"0":{"3":1},"2":{"6":3,"9":1,"13":1,"15":1,"84":1,"93":1,"248":1}}],["other",{"0":{"2":1,"4":1,"7":1,"16":1,"200":1,"201":1},"2":{"2":1,"3":1,"9":1,"15":2,"183":1,"200":2,"201":2,"289":3}}],["one",{"2":{"6":1,"290":1}}],["onebotv11",{"2":{"8":4}}],["onebot",{"0":{"3":1},"2":{"2":2,"3":2,"4":1,"6":2,"8":1,"298":1,"311":1}}],["only",{"2":{"0":1,"6":1,"87":1,"290":1}}],["on",{"0":{"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"87":1,"88":1,"97":1,"98":1,"99":1,"107":2,"116":1,"117":1,"125":3,"133":1,"134":1,"135":1,"136":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"192":1,"194":1,"195":1},"1":{"193":1,"194":1,"195":1},"2":{"0":1,"3":1,"6":1,"7":1,"8":4,"12":1,"15":3,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":3,"32":3,"33":3,"34":3,"35":3,"36":3,"37":1,"38":1,"39":1,"40":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":3,"54":3,"55":3,"56":3,"57":3,"58":3,"59":1,"60":1,"61":1,"62":1,"65":1,"66":1,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":3,"82":1,"83":1,"84":1,"85":1,"86":1,"87":5,"88":4,"89":4,"93":1,"94":1,"95":1,"96":2,"97":4,"98":4,"99":3,"104":1,"107":5,"108":2,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":12,"126":2,"127":1,"129":1,"132":1,"133":4,"134":4,"135":4,"136":3,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"166":3,"167":3,"168":3,"169":3,"170":3,"171":3,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"190":1,"192":1,"193":1,"194":2,"195":5,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"276":1,"277":2,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1,"290":6,"303":1}}],["45m",{"2":{"319":2}}],["44",{"2":{"185":1,"191":1}}],["47",{"2":{"102":1,"181":1,"205":1}}],["41",{"2":{"13":1}}],["40",{"2":{"13":1}}],["4",{"2":{"1":1,"137":1}}],["utils",{"0":{"282":1},"1":{"283":1,"284":1,"285":1,"286":1,"287":1}}],["utf",{"2":{"139":1,"140":1,"141":1,"239":1,"241":1}}],["ubuntu",{"2":{"15":1}}],["unload",{"2":{"313":1,"314":1}}],["until",{"2":{"284":2}}],["unclassified",{"0":{"257":2,"263":1}}],["unparse",{"2":{"241":10}}],["unknown",{"2":{"152":1}}],["unsupported",{"2":{"142":1}}],["underlying",{"2":{"10":1}}],["uninstall",{"2":{"6":2,"313":1,"314":1}}],["usage",{"0":{"262":1}}],["using",{"2":{"6":2,"13":1}}],["user",{"0":{"183":1,"315":1},"2":{"183":3,"184":2,"204":1,"297":3}}],["used",{"2":{"87":1,"290":1}}],["use",{"0":{"14":1},"2":{"1":1,"3":2,"4":2,"6":6,"8":1,"12":4,"13":1,"14":1,"15":2,"39":1,"61":1,"248":1}}],["updates",{"2":{"1":1}}],["update",{"2":{"1":2,"2":2,"6":1,"15":2,"142":3,"143":1,"144":1,"311":1,"312":1,"313":1,"314":1}}],["flat",{"0":{"138":1},"2":{"138":2,"139":1,"140":1,"141":1}}],["flag",{"2":{"65":1}}],["f",{"2":{"26":1,"27":2,"39":1,"48":1,"49":2,"61":1,"81":4,"84":1,"89":2,"93":2,"138":1,"139":1,"140":1,"141":1,"142":2,"143":1,"152":4,"156":2,"158":1,"239":2,"242":19,"243":1,"248":5,"249":9,"250":1,"284":1,"290":2,"303":1}}],["friend",{"2":{"297":2}}],["front",{"0":{"242":1},"2":{"242":6,"243":3}}],["from",{"0":{"139":1,"140":1,"141":1,"142":1,"143":1},"2":{"85":1,"139":4,"140":4,"141":4,"142":4,"143":2,"144":2,"289":1,"290":4,"302":1,"303":3}}],["frame",{"0":{"25":1,"47":1},"2":{"25":3,"47":3}}],["framework",{"2":{"10":1,"289":1}}],["frequently",{"0":{"6":1}}],["future",{"2":{"284":1}}],["func=none",{"2":{"171":1}}],["func=lambda",{"2":{"96":1,"97":2,"98":2,"99":1,"290":1}}],["funcs",{"0":{"66":2,"88":1,"116":1,"117":1,"126":1},"2":{"65":6,"66":5,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":2,"74":2,"75":2,"76":2,"77":2,"78":2,"87":1,"88":3,"89":1,"125":6,"126":2,"127":1}}],["func",{"0":{"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"66":2,"67":3,"68":3,"69":3,"70":3,"71":3,"72":3,"87":2,"107":1,"125":2,"154":1,"162":1,"163":1,"171":3,"287":1},"2":{"31":5,"32":5,"33":5,"34":5,"35":5,"36":5,"53":5,"54":5,"55":5,"56":5,"57":5,"58":5,"65":6,"66":6,"67":9,"68":9,"69":9,"70":9,"71":9,"72":9,"81":2,"87":20,"88":6,"89":1,"107":1,"116":1,"117":1,"125":8,"126":2,"154":1,"164":2,"171":7,"241":2,"242":9,"283":2,"287":5,"296":1}}],["function实现语法高亮",{"2":{"299":1}}],["functiondef",{"2":{"241":3}}],["functioninfo",{"0":{"213":1,"229":1,"234":1},"1":{"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1},"2":{"241":2}}],["functions=",{"2":{"241":1}}],["functions",{"0":{"234":1},"2":{"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"241":1,"242":1}}],["function",{"0":{"208":2},"2":{"6":2,"15":2,"89":1,"241":3,"290":1,"294":1,"296":1,"297":2,"311":3}}],["full",{"2":{"6":1,"290":1}}],["failed",{"2":{"6":2,"248":1}}],["faq",{"0":{"5":1},"1":{"6":1,"7":1,"8":1,"9":1,"10":1}}],["false时例如docs",{"2":{"243":2}}],["false",{"0":{"142":1,"143":1,"144":1,"194":1,"195":1,"243":1},"2":{"2":4,"81":2,"83":4,"111":1,"119":2,"283":1}}],["folder",{"0":{"240":1,"243":1},"2":{"240":2,"243":5,"244":1}}],["following",{"2":{"2":1}}],["found",{"2":{"84":1,"93":1,"142":1,"143":1,"152":1,"156":1,"158":1}}],["font",{"2":{"10":1}}],["fonts",{"2":{"1":1}}],["format=get",{"2":{"180":1}}],["formats",{"2":{"143":1}}],["format",{"0":{"179":1,"250":1},"2":{"142":1,"179":3,"180":1,"248":2,"250":1}}],["for",{"0":{"16":1},"2":{"1":1,"3":2,"6":2,"8":1,"27":1,"39":1,"49":1,"61":1,"66":1,"81":1,"83":3,"88":2,"89":2,"94":1,"126":1,"138":2,"142":1,"143":2,"153":3,"155":1,"157":1,"171":1,"190":1,"193":1,"195":1,"239":1,"240":2,"241":12,"242":9,"243":3,"249":2,"279":2,"281":2,"284":2,"289":1,"290":1,"302":1}}],["filter=lambda",{"2":{"303":1}}],["filter",{"0":{"87":2,"163":1,"171":2},"2":{"87":8,"96":1,"97":2,"98":2,"99":1,"171":6,"290":1}}],["file",{"0":{"139":1,"140":1,"141":1,"171":1,"239":1,"240":1,"241":1},"2":{"3":1,"6":1,"63":1,"79":1,"102":1,"109":1,"139":5,"140":5,"141":5,"142":12,"143":3,"147":1,"171":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"239":4,"240":7,"241":9,"243":6,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1,"303":3}}],["filesystemeventhandler",{"0":{"165":1},"1":{"166":1,"167":1,"168":1,"169":1,"170":1}}],["filesystemevent",{"2":{"162":1,"163":1,"171":1,"303":2}}],["files",{"0":{"142":2,"239":1},"2":{"0":4,"142":3,"143":1,"144":1,"239":1,"240":2,"243":1}}],["fill",{"2":{"1":1,"3":1}}],["fields",{"2":{"0":1,"3":2}}],["first",{"2":{"0":1,"6":1,"241":2}}],["b包也定义了一个index",{"2":{"308":1}}],["block",{"0":{"188":1,"194":1,"195":1},"2":{"188":5,"194":2,"195":2}}],["blue>",{"2":{"180":1}}],["break",{"2":{"152":1,"193":1}}],["browser",{"2":{"6":1}}],["b",{"2":{"138":3,"243":4,"286":4,"320":1}}],["body",{"2":{"241":1}}],["bool=false",{"2":{"142":1,"143":1,"144":1,"194":1,"195":1,"243":1}}],["bool=true",{"2":{"122":1,"171":1,"241":1,"249":1}}],["bool",{"0":{"81":1,"83":1,"122":1,"142":1,"143":1,"144":1,"158":1,"171":1,"188":1,"194":1,"195":1,"202":1,"203":1,"204":1,"220":1,"241":1,"243":1,"249":1,"283":1},"2":{"81":1,"83":3,"158":1,"163":1,"188":1,"197":1,"200":1,"201":1,"202":1,"203":1,"204":1,"283":3}}],["bot",{"0":{"19":1,"37":1,"41":1,"59":1,"63":1,"183":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"1":1,"2":1,"6":2,"9":1,"12":1,"15":1,"21":2,"37":4,"38":1,"39":4,"43":2,"59":4,"60":1,"61":4,"173":2,"183":4,"184":2,"290":4,"295":1,"303":2,"311":1,"319":3,"320":1}}],["build",{"2":{"13":2}}],["but",{"2":{"3":1,"6":1,"290":1}}],["bind",{"2":{"318":1}}],["binding",{"2":{"1":1}}],["bin",{"2":{"12":1}}],["bases",{"2":{"241":1}}],["base",{"0":{"238":1},"2":{"238":4,"241":2}}],["basemodel",{"0":{"213":1,"221":1,"226":1,"232":1,"259":1,"267":1},"1":{"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"227":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1}}],["baseexception",{"0":{"175":1}}],["based",{"2":{"8":4}}],["bash",{"2":{"12":1}}],["basically",{"2":{"3":1}}],["basic",{"0":{"1":1}}],["before",{"0":{"31":1,"34":1,"35":1,"53":1,"56":1,"57":1,"67":1,"69":1,"71":1,"73":1,"75":1,"77":1},"2":{"22":1,"31":2,"34":2,"35":2,"44":1,"53":2,"56":2,"57":2,"65":3,"67":2,"69":2,"71":2,"73":3,"75":3,"77":3,"152":3}}],["below",{"2":{"6":1}}],["been",{"2":{"6":1}}],["between",{"2":{"6":1}}],["be",{"2":{"3":1,"6":2,"15":1,"39":1,"61":1,"84":1,"87":1,"93":1,"166":1,"290":1}}],["by",{"2":{"3":1,"4":1,"6":2,"290":1}}],["14s",{"2":{"319":2}}],["1h",{"2":{"319":2}}],["1d",{"2":{"319":2}}],["1145141919810",{"2":{"311":1}}],["11",{"2":{"278":1,"280":1}}],["19",{"2":{"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1}}],["1919810",{"2":{"1":1}}],["18",{"2":{"172":1}}],["12",{"2":{"147":1,"178":1}}],["127",{"2":{"1":1,"3":1}}],["10",{"2":{"18":1,"177":1,"311":1}}],["10+",{"2":{"12":1,"15":1}}],["1gb",{"2":{"15":2}}],["1vcpu",{"2":{"15":1}}],["1",{"2":{"1":1,"2":1,"3":1,"26":2,"27":2,"48":2,"49":2,"87":1,"97":2,"98":2,"99":1,"127":2,"133":3,"134":2,"135":1,"136":1,"137":1,"138":3,"152":2,"165":1,"166":1,"242":6,"243":1,"248":4,"286":2,"302":1,"308":2}}],["03",{"2":{"290":2}}],["0000",{"2":{"290":3}}],["00",{"2":{"290":18}}],["02",{"2":{"252":1,"278":1,"280":1}}],["04",{"2":{"172":1}}],["04+",{"2":{"15":1}}],["0m",{"2":{"40":1,"62":1}}],["0",{"0":{"26":1,"48":1,"194":1,"195":1},"2":{"1":2,"3":2,"21":1,"24":1,"25":1,"26":1,"43":1,"46":1,"47":1,"48":1,"65":1,"82":1,"83":1,"89":1,"96":1,"97":2,"98":2,"99":1,"127":1,"132":2,"133":2,"134":2,"135":2,"136":1,"152":2,"188":2,"241":1,"242":7,"297":1,"302":2,"308":2}}],["html中用",{"2":{"308":1}}],["html",{"2":{"308":1}}],["html文件会被覆盖",{"2":{"308":1}}],["html文件",{"2":{"308":2}}],["https",{"2":{"12":1,"13":1}}],["hint",{"2":{"81":1,"241":1,"242":1}}],["handlers",{"2":{"188":1,"189":1,"190":1}}],["handler",{"0":{"199":1},"2":{"171":3,"189":5,"190":2,"199":3,"200":4,"201":4,"202":2}}],["handle",{"0":{"25":1,"47":1,"189":1},"2":{"6":1,"21":2,"25":1,"43":2,"47":1,"189":1,"276":1,"277":1}}],["hash",{"0":{"268":1},"2":{"268":2}}],["hasattr",{"2":{"82":1}}],["has",{"2":{"6":1}}],["have",{"2":{"3":1,"6":3,"7":1,"13":1,"15":1}}],["homepage",{"0":{"265":1}}],["how",{"2":{"6":2}}],["host",{"2":{"1":1}}],["hello",{"2":{"295":5,"311":1}}],["help",{"2":{"6":2,"313":1,"314":1}}],["here",{"2":{"3":2}}],["header",{"2":{"1":1,"6":1}}],["echo",{"2":{"295":3}}],["e",{"2":{"122":2,"248":1,"250":1,"284":2}}],["emsp",{"2":{"242":4}}],["email",{"2":{"63":1,"79":1,"102":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["empty",{"0":{"194":1,"195":1,"203":1},"2":{"1":1,"203":1,"248":1,"249":1}}],["else",{"2":{"26":1,"27":1,"37":1,"48":1,"49":1,"59":1,"66":1,"81":1,"87":2,"88":1,"93":1,"95":1,"96":1,"120":1,"121":1,"122":1,"123":1,"125":2,"139":1,"140":1,"141":1,"152":1,"179":1,"180":5,"193":1,"241":9,"242":10,"243":2,"248":2,"284":1,"286":1}}],["elif",{"2":{"26":2,"48":2,"81":1,"83":3,"87":1,"142":4,"152":1,"241":5,"248":2,"249":1}}],["event装饰器监听文件系统事件",{"2":{"303":1}}],["events",{"2":{"303":1}}],["eventhandler",{"0":{"189":2},"2":{"188":1,"189":4}}],["event",{"0":{"102":1,"103":1,"166":1,"167":1,"168":1,"169":1,"170":2,"171":2,"181":1,"190":1,"202":1,"203":1,"204":1,"277":1},"1":{"103":1,"104":2,"182":1,"183":1,"184":1},"2":{"21":4,"24":1,"30":1,"43":4,"46":1,"52":1,"100":1,"101":1,"102":1,"166":1,"167":2,"168":2,"169":2,"170":3,"171":9,"181":1,"184":2,"190":5,"195":2,"200":3,"201":3,"202":2,"203":1,"204":2,"277":3,"284":2,"303":8}}],["every",{"2":{"1":1}}],["errors=true",{"2":{"243":1}}],["errors",{"2":{"6":1}}],["error",{"0":{"122":1},"2":{"6":1,"122":4,"180":2,"284":1}}],["extra",{"0":{"266":1}}],["extensions",{"2":{"303":2}}],["extend",{"2":{"173":1}}],["external",{"2":{"1":1}}],["exclude",{"2":{"303":2}}],["exc",{"2":{"190":1,"248":1}}],["exception模块包含了liteyuki运行中的所有错误",{"2":{"174":1}}],["exception",{"0":{"174":1},"1":{"175":1},"2":{"190":1,"248":1,"284":2}}],["except",{"2":{"23":1,"24":1,"45":1,"46":1,"122":1,"190":1,"248":1,"284":2}}],["executor",{"2":{"86":1}}],["executable",{"2":{"6":1,"15":1,"26":3,"48":3}}],["exist",{"2":{"249":1}}],["exists",{"2":{"81":2,"93":1,"142":1,"143":1,"239":1,"249":2}}],["exit",{"0":{"25":1,"47":1},"2":{"21":2,"25":2,"26":1,"43":2,"47":2,"48":1}}],["example",{"0":{"3":1,"290":1},"2":{"6":2}}],["end",{"2":{"296":1}}],["endswith",{"2":{"142":3,"143":1,"240":1,"249":1,"303":1}}],["enum",{"0":{"207":1,"253":1},"1":{"208":1,"209":1,"210":1,"211":1,"212":1,"254":1,"255":1,"256":1,"257":1,"258":1}}],["enumerate",{"2":{"193":1}}],["encoding=",{"2":{"139":1,"140":1,"141":1,"239":1,"241":1}}],["encountered",{"2":{"9":1}}],["enforcing",{"2":{"81":1}}],["environment",{"2":{"12":4}}],["environments",{"2":{"3":1,"6":1,"15":1}}],["enter",{"2":{"6":1}}],["ensure",{"2":{"1":1,"284":1}}],["enable",{"2":{"1":1,"311":2,"312":1,"313":2,"314":2}}],["msg",{"2":{"311":1}}],["mcfunction",{"2":{"295":2}}],["mkdir",{"2":{"243":1}}],["mkdoc",{"0":{"206":1},"1":{"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1},"2":{"206":1}}],["md",{"2":{"243":15}}],["m",{"2":{"12":1,"15":1,"193":2,"250":1,"320":1}}],["minimum",{"2":{"15":1}}],["minecraftonebot",{"2":{"9":1}}],["minecraft",{"0":{"9":1},"2":{"9":1}}],["misans",{"2":{"10":1}}],["must",{"2":{"84":1,"93":1,"166":1}}],["much",{"2":{"6":1}}],["multiple",{"2":{"0":1,"15":1}}],["my",{"2":{"6":1}}],["member",{"2":{"311":1}}],["memory",{"2":{"15":1,"119":3,"132":1,"133":3,"134":3,"135":3,"136":2,"153":1,"154":1,"289":1,"293":3}}],["meta",{"2":{"248":4,"302":1}}],["metadata",{"0":{"273":1},"2":{"248":13}}],["method",{"0":{"209":2,"210":1,"211":1},"2":{"241":5,"242":13}}],["methods=",{"2":{"241":1}}],["methods",{"0":{"229":1},"2":{"3":1,"241":1,"242":1}}],["means",{"2":{"6":1}}],["message=",{"2":{"184":1,"311":1}}],["message=message",{"2":{"184":1}}],["messageevent",{"0":{"182":1,"183":1,"190":1,"202":1,"203":1,"204":1,"277":1},"1":{"183":1,"184":1},"2":{"183":1,"184":1,"190":1,"195":1,"197":1,"200":1,"201":1,"202":1,"203":1,"204":1,"277":1}}],["messages",{"2":{"6":2,"289":2}}],["message",{"0":{"181":1,"183":3,"184":1,"185":1,"186":1,"191":1,"192":1,"194":1,"196":1,"205":1},"1":{"182":1,"183":1,"184":1,"187":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1},"2":{"4":1,"6":1,"183":12,"184":6,"194":1,"195":2,"277":1,"319":1,"320":1}}],["merge",{"2":{"0":1}}],["match",{"2":{"250":1}}],["matcher",{"0":{"186":1,"187":1,"193":3,"194":1,"195":1},"1":{"187":1,"188":2,"189":2,"190":2},"2":{"186":1,"193":9,"194":6,"195":1}}],["matter=none",{"2":{"242":1}}],["matter",{"0":{"242":1},"2":{"242":5,"243":3}}],["markdown",{"0":{"242":1},"2":{"242":3,"243":1}}],["maplemono",{"2":{"10":1}}],["makedirs",{"2":{"239":1}}],["make",{"2":{"6":2}}],["mainprocess",{"2":{"289":1}}],["main",{"0":{"116":1},"2":{"6":1,"12":1,"37":1,"59":1,"81":4,"87":4,"88":2,"89":1,"93":1,"95":1,"96":1,"119":1,"120":1,"121":1,"122":1,"123":1,"125":5,"126":1,"127":1,"289":1,"290":6,"306":1}}],["manager",{"0":{"147":1,"251":1},"1":{"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1},"2":{"21":2,"22":1,"26":1,"27":1,"43":2,"44":1,"48":1,"49":1,"147":1,"251":1}}],["manage",{"2":{"14":1}}],["management",{"2":{"14":1}}],["many",{"2":{"6":1}}],["manually",{"2":{"2":1,"81":1}}],["may",{"2":{"3":1}}],["moved",{"0":{"169":1},"2":{"169":1}}],["more",{"2":{"2":1,"14":1,"15":1}}],["moduletype",{"0":{"271":1}}],["module=module",{"2":{"248":1}}],["moduleinfo",{"0":{"232":1,"241":1,"242":1},"1":{"233":1,"234":1,"235":1,"236":1,"237":1},"2":{"241":2,"242":1}}],["module",{"0":{"173":1,"233":1,"240":1,"241":1,"242":1,"243":1,"244":1,"248":1,"256":2,"271":1,"272":1,"286":1},"2":{"173":4,"240":2,"241":11,"242":6,"243":26,"244":1,"248":27,"249":9,"250":1,"268":1,"286":1}}],["modified",{"0":{"166":1},"2":{"13":1,"166":2,"167":1,"168":1,"169":1,"170":1,"171":4}}],["modify",{"2":{"0":2}}],["modes",{"2":{"290":1}}],["model",{"0":{"252":1,"269":1},"1":{"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1},"2":{"252":1}}],["mode为true",{"2":{"161":1}}],["mode",{"2":{"2":5,"6":3,"290":5,"311":2,"312":1}}],["most",{"2":{"0":1}}],["lt",{"2":{"310":1,"311":7,"313":10,"315":2}}],["lyf结尾",{"2":{"295":1}}],["lyfunction语法",{"2":{"311":1}}],["lyfunction",{"2":{"295":1}}],["len",{"2":{"83":2,"89":1}}],["least",{"2":{"15":2}}],["level=0",{"2":{"180":1}}],["level",{"0":{"179":1},"2":{"1":3,"179":2,"180":6}}],["lsposed",{"2":{"8":1}}],["llonebot",{"2":{"8":1}}],["laptop",{"2":{"243":2}}],["lang",{"0":{"242":1,"243":1},"2":{"242":4,"243":3}}],["language",{"2":{"2":2}}],["last",{"2":{"164":4}}],["lambda",{"2":{"132":1,"133":2,"134":2,"135":2,"136":1}}],["lagrange",{"2":{"8":2}}],["locks",{"2":{"122":1}}],["lock",{"0":{"131":2},"2":{"120":3,"121":3,"122":3,"129":1}}],["local",{"2":{"1":1}}],["loop",{"0":{"89":1,"127":1},"2":{"21":4,"30":1,"43":4,"52":1,"66":2,"81":1,"86":3,"89":3,"119":2,"127":2,"153":2,"284":10}}],["log0000",{"2":{"290":1}}],["logger",{"0":{"29":1,"51":1},"2":{"21":1,"23":1,"24":1,"25":1,"26":1,"28":1,"29":1,"39":1,"43":1,"45":1,"46":1,"47":1,"48":1,"50":1,"51":1,"61":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":2,"89":2,"139":1,"140":1,"141":1,"142":2,"143":1,"152":3,"156":2,"158":1,"180":7,"248":3,"249":3,"284":1,"290":3,"303":2}}],["logo",{"0":{"40":1,"62":1},"2":{"21":1,"40":1,"43":1,"62":1}}],["logic",{"2":{"6":1}}],["login",{"2":{"6":2}}],["logs",{"2":{"2":1}}],["log",{"0":{"178":1,"180":1},"1":{"179":1,"180":1},"2":{"1":4,"6":1,"29":1,"51":1,"178":1,"180":3,"290":1}}],["loaded",{"0":{"246":1,"275":1},"2":{"246":1,"275":1}}],["loader",{"0":{"278":1,"279":1,"280":1,"281":1},"1":{"279":1,"281":1},"2":{"21":1,"43":1,"279":1,"281":1}}],["loading",{"2":{"139":1,"140":1,"141":1}}],["load",{"0":{"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"247":1,"248":1,"249":1},"1":{"248":1,"249":1,"250":1},"2":{"0":1,"2":2,"21":1,"43":1,"139":4,"140":4,"141":4,"142":4,"143":2,"144":3,"173":3,"247":1,"248":3,"249":2,"279":2,"281":2,"313":1,"314":1}}],["like",{"2":{"289":1}}],["life",{"2":{"65":1}}],["lifespan=self",{"2":{"21":1,"43":1}}],["lifespan",{"0":{"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"63":1,"64":1,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"151":2},"1":{"64":1,"65":2,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":2,"74":2,"75":2,"76":2,"77":2,"78":2},"2":{"21":3,"22":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"43":3,"44":2,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"63":1,"65":6,"66":2,"67":4,"68":4,"69":4,"70":4,"71":4,"72":4,"151":4,"152":3}}],["liteecho",{"0":{"276":1,"277":1},"1":{"277":1},"2":{"276":2,"277":2,"311":1}}],["liteloader",{"2":{"8":1}}],["liteyukiexception",{"0":{"175":1}}],["liteyukistudio",{"2":{"12":1,"13":1,"63":1,"79":1,"102":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["liteyuki",{"0":{"17":1,"19":1,"41":1,"63":1,"79":1,"100":1,"101":1,"102":1,"105":1,"109":1,"115":1,"137":1,"145":1,"146":1,"147":1,"159":1,"160":1,"161":1,"172":1,"174":1,"176":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"245":1,"247":1,"251":1,"252":1,"274":1,"276":1,"278":1,"280":1,"282":1,"313":1},"1":{"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"103":1,"104":1,"106":1,"107":1,"108":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"175":1,"177":1,"179":1,"180":1,"182":1,"183":1,"184":1,"187":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"246":1,"248":1,"249":1,"250":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"275":1,"277":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1,"314":1},"2":{"1":6,"2":4,"3":2,"4":2,"6":6,"12":1,"14":1,"15":1,"21":2,"23":1,"24":1,"37":1,"43":2,"45":1,"46":1,"59":1,"173":2,"248":5,"279":3,"281":3,"289":1,"290":12,"293":2,"294":1,"302":1,"303":4,"306":1,"307":1,"311":4,"312":3}}],["liteyukibot",{"0":{"20":1,"37":1,"42":1,"59":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1},"2":{"0":5,"9":1,"12":2,"13":6,"14":1,"26":1,"37":3,"48":1,"59":3,"173":1,"289":1}}],["linux",{"2":{"8":1,"12":1,"14":1,"15":1,"26":1,"48":1}}],["limited",{"2":{"4":1}}],["listdir",{"2":{"143":1,"249":2}}],["listen",{"2":{"289":1}}],["listening",{"2":{"1":1}}],["listed",{"2":{"6":1}}],["list",{"0":{"66":1,"183":1,"195":1,"215":1,"229":1,"230":1,"231":1,"234":1,"235":1,"236":1,"240":1},"2":{"1":4,"65":6,"66":1,"81":2,"83":2,"116":1,"117":1,"183":1,"188":1,"193":3,"195":1,"240":4,"241":4,"243":3,"311":1,"313":2,"314":1}}],["switch",{"2":{"311":2,"312":1}}],["sync",{"2":{"287":2}}],["sys",{"2":{"25":1,"26":3,"47":1,"48":3,"180":1}}],["system",{"0":{"171":1},"2":{"15":2,"26":4,"48":4,"171":1,"303":2}}],["src",{"2":{"279":1,"281":1,"303":5}}],["schedule",{"2":{"171":1}}],["script",{"0":{"14":1},"2":{"14":1}}],["scripts",{"2":{"12":1}}],["sm",{"2":{"153":2}}],["shinjuku",{"2":{"317":1}}],["shellstatistic",{"2":{"319":1}}],["shellbind",{"2":{"317":1}}],["shellweather",{"2":{"317":1}}],["shellmain",{"2":{"308":1}}],["shellvar",{"2":{"296":1}}],["shellcmd",{"2":{"295":1}}],["shell",{"2":{"295":1,"297":1}}],["shutil",{"2":{"243":1}}],["shutdown",{"0":{"33":1,"34":1,"55":1,"56":1,"69":1,"70":1,"75":1,"76":1},"2":{"33":2,"34":2,"55":2,"56":2,"65":2,"69":2,"70":2,"75":3,"76":3,"152":2}}],["show",{"2":{"180":6}}],["should",{"2":{"81":1}}],["shared",{"2":{"119":3,"132":1,"133":3,"134":3,"135":3,"136":2,"153":1,"154":1,"289":1,"293":3}}],["snowykami",{"2":{"63":2,"79":2,"102":2,"109":2,"147":2,"172":2,"178":2,"181":2,"185":2,"186":2,"191":2,"192":2,"196":2,"205":2,"206":2,"247":2,"251":2,"252":2,"276":2,"278":2,"280":2}}],["sleep",{"2":{"24":1,"26":1,"46":1,"48":1,"290":1,"296":1,"297":1}}],["simple",{"2":{"302":1}}],["signature",{"2":{"287":2}}],["signal",{"2":{"21":6,"25":1,"43":6,"47":1}}],["signum",{"0":{"25":1,"47":1},"2":{"25":3,"47":3}}],["sigterm",{"2":{"21":1,"43":1}}],["sigint",{"2":{"21":1,"43":1}}],["sides",{"2":{"3":1,"6":1}}],["side",{"0":{"3":1},"2":{"6":4}}],["style",{"2":{"308":2}}],["stem",{"2":{"286":2}}],["stdout",{"2":{"180":1}}],["store",{"2":{"119":1,"120":1,"121":1,"122":2,"123":1}}],["storage",{"0":{"115":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1},"2":{"100":2,"101":2,"293":2}}],["stopping",{"2":{"23":1,"24":1,"25":1,"45":1,"46":1,"47":1,"152":1}}],["stop",{"0":{"30":1,"52":1},"2":{"21":1,"24":2,"25":1,"30":3,"43":1,"46":2,"47":1,"52":3}}],["strip",{"2":{"277":2}}],["str=",{"2":{"242":1,"243":1}}],["structure",{"0":{"83":2},"2":{"83":17,"84":1}}],["str",{"0":{"27":1,"38":1,"39":2,"49":1,"60":1,"61":2,"81":1,"93":1,"94":1,"95":1,"96":1,"97":2,"98":2,"99":2,"104":2,"111":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"133":2,"134":2,"135":2,"136":2,"138":2,"139":2,"140":2,"141":2,"142":2,"143":2,"144":1,"149":2,"152":1,"154":1,"156":1,"158":1,"171":1,"173":1,"179":2,"183":9,"184":2,"195":1,"214":1,"215":2,"216":1,"217":1,"218":1,"222":1,"223":1,"225":1,"227":1,"228":1,"231":1,"233":1,"237":1,"238":3,"239":2,"240":1,"241":1,"242":2,"243":3,"246":1,"248":1,"249":1,"250":2,"260":1,"261":1,"262":1,"264":1,"265":1,"266":1,"270":1,"272":1,"275":1,"286":1},"2":{"21":1,"27":1,"38":1,"39":2,"43":1,"49":1,"60":1,"61":2,"81":2,"91":2,"93":1,"94":1,"95":1,"96":2,"97":2,"98":2,"99":2,"104":2,"111":1,"116":1,"117":1,"119":5,"120":1,"121":1,"122":1,"123":4,"124":1,"125":1,"126":1,"133":2,"134":2,"135":2,"136":2,"138":2,"139":2,"140":2,"141":2,"142":2,"143":2,"144":1,"149":2,"151":2,"152":1,"154":1,"156":1,"158":1,"171":1,"173":1,"179":2,"183":11,"184":2,"195":1,"204":1,"238":3,"239":2,"240":1,"241":1,"242":1,"243":4,"246":3,"248":1,"249":1,"250":4,"275":3,"286":3,"290":1}}],["stat",{"2":{"320":1}}],["statistic",{"2":{"320":1}}],["statistics",{"0":{"319":1},"1":{"320":1}}],["static",{"0":{"210":1},"2":{"241":1}}],["staticmethod",{"0":{"210":1},"2":{"65":1,"66":1,"125":1,"126":1,"241":1}}],["status",{"2":{"311":1,"312":1}}],["standard",{"2":{"6":2}}],["startup",{"2":{"290":2}}],["startswith",{"2":{"241":3,"276":1,"277":1}}],["started",{"2":{"6":1}}],["start",{"0":{"31":1,"32":1,"53":1,"54":1,"67":1,"68":1,"73":1,"74":1,"89":1,"127":1,"153":1},"2":{"1":2,"6":3,"12":1,"22":3,"26":2,"31":2,"32":2,"44":3,"48":2,"53":2,"54":2,"65":2,"67":2,"68":2,"73":3,"74":3,"89":1,"127":2,"152":4,"153":3,"285":1,"290":1}}],["starting",{"2":{"0":1,"89":1}}],["s",{"2":{"15":1,"83":2}}],["split",{"2":{"248":4}}],["space",{"2":{"15":1}}],["specified",{"2":{"248":1}}],["specific",{"2":{"15":1}}],["specify",{"2":{"6":1}}],["sockschannel",{"0":{"110":1},"1":{"111":1,"112":1,"113":1,"114":1}}],["socks",{"0":{"109":1},"1":{"110":1,"111":1,"112":1,"113":1,"114":1}}],["software",{"2":{"63":1,"79":1,"102":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["source",{"0":{"218":1},"2":{"12":1,"15":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"104":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"129":1,"133":1,"134":1,"135":1,"136":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"238":1,"239":1,"240":1,"241":3,"242":7,"243":1,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"277":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1}}],["solution",{"0":{"8":1,"9":1}}],["some",{"2":{"1":1,"6":2}}],["search",{"2":{"313":1,"314":1}}],["service",{"0":{"255":2},"2":{"250":1,"302":1}}],["server",{"2":{"1":1,"3":1,"9":1,"15":1}}],["sep",{"2":{"241":3}}],["session",{"0":{"183":2,"205":1},"2":{"183":8,"184":5,"205":1}}],["set",{"0":{"93":1,"94":1,"97":1,"120":1,"134":1,"249":1},"2":{"21":1,"24":1,"30":1,"43":1,"46":1,"52":1,"81":1,"93":2,"94":2,"96":1,"97":3,"120":2,"133":1,"134":3,"249":2,"284":1,"293":1,"311":2,"312":1,"315":2}}],["self",{"0":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"104":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"127":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"166":1,"167":1,"168":1,"169":1,"170":1,"183":1,"184":1,"188":1,"189":1,"190":1,"199":1,"200":1,"201":1,"202":1,"268":1},"2":{"21":14,"22":5,"23":2,"24":3,"25":2,"26":4,"27":2,"28":2,"29":1,"30":3,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"43":14,"44":5,"45":2,"46":3,"47":2,"48":4,"49":2,"50":2,"51":1,"52":3,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"65":8,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":3,"74":3,"75":3,"76":3,"77":3,"78":3,"81":14,"82":3,"83":4,"84":6,"85":3,"86":2,"87":3,"88":3,"89":8,"104":3,"107":2,"108":2,"111":5,"112":1,"113":1,"114":1,"119":7,"120":3,"121":3,"122":4,"123":3,"124":2,"125":1,"127":4,"149":6,"151":4,"152":8,"153":3,"154":2,"155":2,"156":3,"157":3,"158":3,"166":1,"167":2,"168":2,"169":2,"170":2,"183":10,"184":3,"188":5,"189":2,"190":3,"199":2,"200":2,"201":2,"202":3,"241":1,"242":1,"268":2}}],["send",{"0":{"84":1,"112":1},"2":{"6":1,"27":2,"49":2,"81":2,"84":4,"93":1,"95":1,"96":1,"98":1,"99":1,"111":1,"112":1,"120":1,"121":1,"122":1,"123":1,"124":1,"127":1,"133":1,"136":1,"184":1,"289":1,"290":3,"311":1}}],["summary>",{"2":{"242":3}}],["summary>源代码",{"2":{"242":1}}],["su",{"0":{"204":1},"2":{"204":1,"276":1,"277":1}}],["succeeded",{"2":{"248":1}}],["success",{"2":{"156":1,"180":2,"248":2}}],["such",{"2":{"6":1}}],["subscribe",{"2":{"125":1}}],["subscriber",{"0":{"116":1,"117":1,"125":1,"126":1},"2":{"125":7,"126":2,"127":1}}],["sub",{"0":{"117":1},"2":{"37":1,"59":1,"81":2,"87":1,"88":1,"119":1,"125":4,"127":1}}],["submit",{"2":{"7":1}}],["sure",{"2":{"6":2}}],["supported",{"2":{"4":1,"143":1}}],["supports",{"2":{"0":1,"8":5}}],["superuser",{"2":{"1":1}}],["superusers",{"2":{"0":1,"1":1,"6":1,"204":1}}],["same",{"2":{"3":2}}],["safe",{"2":{"2":2,"6":3,"139":1}}],["num为每页显示数量",{"2":{"313":2}}],["num",{"2":{"313":2}}],["number",{"2":{"13":2}}],["nliteyuki",{"2":{"295":1}}],["n\`\`\`",{"2":{"242":2}}],["n\`\`\`python",{"2":{"242":2}}],["n",{"2":{"40":10,"62":10,"242":52,"243":2}}],["name>",{"2":{"296":2}}],["name=module",{"2":{"248":3}}],["name=target",{"2":{"241":2}}],["name=class",{"2":{"241":1}}],["name=node",{"2":{"241":2}}],["name=f",{"2":{"154":2}}],["name=",{"2":{"90":1,"91":1,"119":3,"302":1}}],["name",{"0":{"27":1,"49":1,"81":1,"93":1,"95":1,"104":1,"111":1,"152":1,"154":1,"156":1,"158":1,"214":1,"222":1,"227":1,"244":1,"250":2,"260":1,"270":1,"272":1,"286":1},"2":{"27":7,"49":7,"81":12,"89":2,"93":8,"94":2,"95":6,"97":3,"98":3,"104":3,"111":5,"152":14,"153":2,"154":6,"155":1,"156":7,"157":2,"158":6,"241":11,"242":7,"243":2,"248":20,"249":9,"250":7,"268":1,"286":1,"290":2,"311":4,"313":8}}],["ntqq",{"2":{"8":1}}],["npm",{"2":{"6":1,"313":7,"314":1}}],["new",{"2":{"21":1,"43":1,"138":3,"284":1}}],["necessary",{"2":{"6":1}}],["needs",{"2":{"290":1}}],["need",{"2":{"0":1,"2":1,"6":1}}],["nonlocal",{"2":{"164":1}}],["nonedog",{"2":{"302":1}}],["none",{"0":{"21":1,"27":1,"38":1,"39":1,"43":1,"49":1,"60":1,"61":1,"65":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"87":1,"107":1,"120":1,"121":1,"122":1,"124":1,"130":1,"154":1,"171":1,"183":2,"190":1,"224":1,"242":1,"243":1,"273":1},"2":{"21":1,"27":1,"37":1,"43":1,"49":1,"59":1,"65":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":3,"82":1,"84":1,"86":1,"87":1,"107":1,"111":2,"120":1,"122":1,"124":1,"129":2,"139":1,"140":1,"141":1,"154":1,"162":1,"164":1,"171":1,"183":1,"190":1,"197":2,"202":1,"241":3,"243":1,"248":4,"249":1,"283":1}}],["nonebot2",{"2":{"4":2,"10":1}}],["nonebot",{"0":{"3":1},"2":{"1":2,"2":2,"3":1,"10":1,"282":1,"290":3,"302":1,"303":4,"306":1}}],["nohup",{"2":{"26":2,"48":2,"296":1,"297":1}}],["nodes",{"2":{"241":2}}],["node",{"2":{"8":1,"15":1,"241":42}}],["notimplementederror",{"2":{"166":1}}],["not",{"2":{"1":1,"2":1,"4":1,"6":4,"15":2,"24":1,"27":1,"37":1,"46":1,"49":1,"59":1,"81":1,"83":3,"84":2,"87":4,"89":1,"93":1,"122":1,"125":3,"127":1,"139":1,"140":1,"141":1,"142":3,"143":3,"152":2,"156":2,"158":2,"171":2,"190":1,"239":1,"241":8,"248":1,"249":8,"303":2}}],["normal>",{"2":{"180":1}}],["normal",{"0":{"12":1,"241":1},"2":{"1":1,"241":1,"243":1}}],["no",{"0":{"142":1,"143":1,"144":1,"214":1,"215":1,"216":1,"217":1,"219":1,"220":1,"222":1,"223":1,"227":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"244":1,"260":1,"270":1,"271":1,"272":1},"2":{"1":1,"89":1,"92":1,"142":3,"143":3,"144":3,"241":3,"242":1,"243":2}}],["nickname",{"2":{"0":1,"1":2,"6":3}}],["ignored",{"0":{"243":1},"2":{"152":1,"243":8}}],["ignore",{"0":{"122":1,"241":1,"249":1},"2":{"122":4,"241":6,"243":1,"249":6}}],["id仅超级用户可用",{"2":{"311":1}}],["id=user",{"2":{"297":2}}],["id=1234567",{"2":{"311":2}}],["id=123456",{"2":{"297":1}}],["id=self",{"2":{"184":3}}],["id",{"0":{"183":3},"2":{"87":5,"88":4,"183":11,"184":3,"204":1,"241":6,"297":2,"311":2,"313":1,"319":4}}],["ids",{"2":{"81":2,"87":2,"88":2,"89":1}}],["impossible",{"2":{"289":1}}],["import",{"2":{"132":1,"248":1,"290":5,"293":1,"302":2,"303":3,"306":1}}],["implemented",{"2":{"166":1,"290":1}}],["implement",{"2":{"6":1,"290":1}}],["implementation",{"0":{"3":1},"2":{"3":1,"6":4,"8":1}}],["image",{"2":{"13":1,"311":2,"312":1}}],["i",{"2":{"6":2,"193":2,"290":6}}],["icon=f",{"2":{"180":5}}],["icon",{"2":{"1":2,"180":7,"242":2,"243":2}}],["isclass",{"2":{"283":1}}],["iscoroutinefunction",{"2":{"283":2}}],["isroutine",{"2":{"283":1}}],["isfile",{"2":{"249":1,"303":1}}],["isdir",{"2":{"249":2}}],["isinstance",{"2":{"83":8,"93":1,"138":1,"241":13,"248":1,"290":1}}],["issues",{"2":{"9":2}}],["issue",{"2":{"7":1}}],["is",{"0":{"158":1,"204":1,"220":1,"283":1},"2":{"1":3,"2":1,"3":3,"4":1,"6":2,"12":1,"15":1,"21":1,"23":1,"24":2,"27":1,"37":2,"43":1,"45":1,"46":2,"49":1,"59":2,"66":1,"81":6,"84":1,"87":5,"88":1,"89":1,"93":1,"95":1,"96":1,"119":2,"120":1,"121":1,"122":1,"123":1,"125":3,"127":1,"129":2,"139":1,"140":1,"141":1,"154":1,"156":1,"158":2,"171":1,"183":1,"202":1,"204":1,"241":2,"242":2,"243":1,"248":1,"249":2,"283":1,"284":1,"289":2,"290":3}}],["if",{"2":{"1":2,"2":4,"3":1,"6":2,"7":1,"13":2,"15":2,"26":2,"27":1,"37":2,"39":2,"48":2,"49":1,"59":2,"61":2,"66":1,"81":5,"82":1,"83":4,"84":3,"85":1,"87":6,"88":1,"89":1,"93":3,"95":1,"96":1,"120":1,"121":1,"122":3,"123":1,"125":5,"127":2,"129":2,"138":1,"139":1,"140":1,"141":1,"142":2,"143":3,"152":2,"154":1,"156":2,"158":1,"164":1,"171":1,"179":1,"180":5,"183":1,"184":1,"190":1,"193":1,"202":1,"239":1,"240":1,"241":20,"242":10,"243":4,"248":2,"249":9,"283":2,"284":1,"286":1}}],["index",{"2":{"242":2,"243":1,"308":1}}],["inherit=",{"2":{"241":1}}],["inherit",{"0":{"231":1},"2":{"242":5}}],["inspect",{"2":{"283":4,"287":1}}],["insert",{"2":{"193":1}}],["instance",{"0":{"129":1,"130":1},"2":{"21":2,"37":4,"43":2,"59":4,"84":1,"93":1,"129":5}}],["installed",{"2":{"15":1}}],["installation",{"0":{"12":1},"2":{"6":2}}],["install",{"0":{"11":1},"1":{"12":1,"13":1,"14":1,"15":1,"16":1},"2":{"6":3,"12":3,"13":1,"15":2,"310":1,"313":1,"314":1}}],["instead",{"2":{"6":2,"13":1,"39":1,"61":1}}],["inner",{"2":{"81":2}}],["initialized",{"2":{"37":1,"59":1,"81":2}}],["initializing",{"2":{"21":1,"43":1}}],["init",{"0":{"21":1,"28":1,"29":1,"43":1,"50":1,"51":1,"65":1,"81":1,"104":1,"107":1,"111":1,"119":1,"149":1,"151":1,"180":1,"183":1,"188":1,"199":1},"2":{"21":2,"28":2,"29":2,"43":2,"50":2,"51":2,"65":1,"81":1,"104":1,"107":1,"111":1,"119":1,"149":1,"151":1,"180":1,"183":1,"185":1,"188":1,"191":1,"199":1,"241":1,"243":2,"249":2,"278":1,"280":1,"286":1,"302":3}}],["including",{"2":{"15":1}}],["inter",{"2":{"289":1}}],["interpreter",{"2":{"6":1}}],["interpreters",{"2":{"6":2}}],["introduction",{"0":{"289":1}}],["int=0",{"2":{"26":1,"48":1,"194":1,"195":1}}],["int",{"0":{"26":1,"48":1,"188":1,"194":1,"195":1},"2":{"65":1,"81":2,"188":1}}],["intact",{"2":{"6":1}}],["invalidgitrepositoryerror",{"2":{"6":1}}],["information",{"2":{"3":1}}],["info",{"0":{"241":1,"242":1},"2":{"1":1,"21":1,"23":1,"24":1,"25":1,"26":1,"43":1,"45":1,"46":1,"47":1,"48":1,"152":2,"180":3,"241":12,"242":6,"243":5,"290":2}}],["in",{"0":{"144":1,"285":1},"2":{"0":3,"1":1,"2":1,"3":2,"6":3,"27":1,"37":1,"39":3,"49":1,"59":1,"61":3,"66":1,"81":5,"83":4,"86":1,"87":1,"88":2,"93":1,"94":1,"122":1,"125":3,"126":1,"127":1,"138":2,"142":1,"143":2,"144":1,"152":1,"153":3,"155":1,"156":1,"157":1,"158":1,"171":1,"173":1,"190":1,"193":1,"195":2,"204":1,"239":1,"240":2,"241":13,"242":9,"243":5,"249":2,"279":2,"281":2,"284":2,"285":1,"289":1,"303":1}}],["iter",{"2":{"241":2}}],["items",{"2":{"0":1,"6":1,"94":1,"138":2,"239":1,"242":1,"243":1}}],["itself",{"2":{"6":1,"9":1}}],["it",{"2":{"0":1,"2":2,"3":1,"6":5,"12":1,"289":2}}],["r>",{"2":{"248":2}}],["rv",{"2":{"243":2}}],["rk",{"2":{"243":2}}],["rmtree",{"2":{"243":1}}],["rpm",{"2":{"313":5,"314":1}}],["rp",{"2":{"239":4}}],["rpc",{"0":{"105":1,"106":1},"1":{"106":1,"107":2,"108":2},"2":{"100":1,"101":1}}],["rule=is",{"2":{"276":1,"277":1}}],["rule=empty",{"2":{"194":1,"195":1}}],["rulehandlerfunc",{"0":{"197":1,"199":1},"2":{"199":1}}],["rule",{"0":{"188":2,"194":3,"195":2,"196":1,"198":1,"200":2,"201":2,"203":1,"204":1},"1":{"197":1,"198":1,"199":2,"200":2,"201":2,"202":2,"203":1,"204":1},"2":{"188":6,"190":1,"194":3,"195":5,"196":1,"200":3,"201":3,"202":1,"203":3,"204":2,"276":1,"277":1}}],["running",{"2":{"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"86":1,"89":1,"119":2,"284":2,"289":1}}],["runtimeerror",{"2":{"37":2,"59":2,"84":1,"85":1,"87":1,"125":1,"127":1,"284":1}}],["run",{"0":{"13":1,"22":1,"23":1,"44":1,"45":1,"66":1,"88":1,"126":1,"152":1,"173":1,"190":1,"284":1,"285":1},"2":{"0":1,"12":1,"13":2,"15":1,"22":1,"23":3,"44":1,"45":3,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"86":1,"88":1,"89":1,"126":1,"127":1,"152":1,"153":1,"173":2,"190":1,"284":3,"285":1,"306":2}}],["raw",{"0":{"183":1},"2":{"183":4,"184":1,"195":1,"277":1}}],["raise",{"2":{"37":2,"59":2,"81":3,"84":2,"85":1,"87":1,"93":2,"122":1,"125":1,"127":1,"152":1,"166":1}}],["rights",{"2":{"63":1,"79":1,"102":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["root",{"2":{"13":1,"240":2}}],["r",{"2":{"12":1,"15":1,"139":1,"140":1,"141":1,"241":1}}],["readme",{"2":{"243":2}}],["read",{"2":{"241":1}}],["reload",{"2":{"311":1,"312":2,"313":1,"314":1}}],["reloading",{"2":{"303":1}}],["rel",{"2":{"243":4,"286":5}}],["relpath",{"2":{"238":1}}],["relative",{"0":{"238":1},"2":{"238":1,"243":1,"244":1,"286":1}}],["red>",{"2":{"180":1}}],["remove",{"2":{"180":1}}],["ref",{"0":{"132":1}}],["refer",{"0":{"16":1},"2":{"6":1}}],["reference",{"2":{"3":1}}],["return",{"0":{"216":1},"2":{"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":2,"38":2,"39":4,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":2,"60":2,"61":4,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"82":3,"83":9,"85":1,"86":1,"87":7,"89":1,"95":2,"96":2,"108":1,"113":1,"121":3,"123":3,"125":3,"129":1,"138":2,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"156":1,"158":1,"164":3,"171":4,"179":2,"189":3,"190":1,"194":1,"195":2,"200":2,"201":2,"202":2,"203":1,"204":1,"238":1,"240":1,"241":4,"242":4,"246":2,"248":2,"249":1,"250":2,"268":1,"275":2,"283":4,"286":3,"287":3}}],["returns",{"2":{"24":1,"25":1,"26":1,"27":1,"28":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"46":1,"47":1,"48":1,"49":1,"50":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"82":1,"83":1,"87":1,"95":1,"96":1,"113":1,"121":1,"122":1,"123":1,"124":1,"125":1,"138":1,"152":1,"156":1,"158":1,"171":1,"180":1,"184":1,"189":1,"190":1,"241":5,"242":1,"246":1,"250":1,"275":1,"283":1,"284":1,"285":1,"286":1,"287":1}}],["registered",{"2":{"89":1}}],["register",{"2":{"21":1,"43":1}}],["reply",{"0":{"184":1},"2":{"184":3,"277":1}}],["replace",{"2":{"13":1,"241":3,"242":4,"243":8}}],["repo",{"2":{"13":1}}],["report设定为false",{"2":{"309":1}}],["reports",{"2":{"6":1}}],["report",{"2":{"1":2,"6":2,"309":1}}],["required",{"2":{"81":1}}],["requires",{"2":{"15":1}}],["requirements",{"0":{"15":1},"1":{"16":1},"2":{"12":1,"15":1}}],["requests",{"2":{"1":1}}],["resources",{"2":{"307":1,"308":1,"312":1}}],["resolve",{"2":{"286":2}}],["reserved",{"2":{"63":1,"79":1,"102":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["response",{"2":{"6":2}}],["respond",{"2":{"6":1}}],["restarting",{"2":{"26":1,"48":1,"152":1}}],["restart",{"0":{"26":1,"27":1,"35":1,"36":1,"48":1,"49":1,"57":1,"58":1,"71":1,"72":1,"77":1,"78":1},"2":{"0":1,"21":1,"26":3,"27":1,"35":2,"36":2,"43":1,"48":3,"49":1,"57":2,"58":2,"65":2,"71":2,"72":2,"77":3,"78":3,"152":1,"303":2}}],["reverse",{"2":{"3":2}}],["receiving",{"2":{"290":1}}],["received",{"2":{"25":1,"47":1,"152":1}}],["receive",{"0":{"85":1,"86":1,"87":1,"88":1,"89":1,"113":1,"116":1,"117":1,"125":3,"126":1,"127":1,"183":1},"2":{"1":1,"81":3,"85":2,"86":2,"87":4,"88":3,"89":7,"95":1,"96":2,"97":2,"98":2,"99":1,"113":1,"116":1,"117":1,"119":2,"121":1,"123":1,"125":11,"126":2,"127":4,"132":1,"133":2,"134":2,"135":2,"136":1,"152":1,"153":2,"183":4,"184":3,"290":11}}],["recursive=recursive",{"2":{"171":1}}],["recursive",{"0":{"171":1},"2":{"171":3}}],["recv",{"2":{"81":2,"85":2,"95":5,"96":5,"98":3,"99":3,"111":1,"121":5,"123":5,"133":3,"136":3}}],["recommended",{"0":{"8":1,"9":1},"2":{"3":1,"6":1,"12":1,"14":1,"15":2}}],["city",{"2":{"317":1,"318":1}}],["css相对路径引用b中的css",{"2":{"308":1}}],["css",{"2":{"307":1,"308":1}}],["cwd",{"2":{"286":1}}],["cfg",{"2":{"173":4}}],["current|bot",{"2":{"319":1}}],["current|group",{"2":{"319":1}}],["current",{"2":{"164":3,"319":2,"320":1}}],["custom",{"2":{"2":4}}],["customize",{"2":{"2":1}}],["c",{"2":{"63":1,"79":1,"102":1,"109":1,"138":3,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"250":1,"251":1,"252":1,"276":1,"278":1,"280":1,"284":4,"286":4,"320":1}}],["cmd",{"2":{"26":5,"48":5,"295":2,"296":1}}],["cpu",{"2":{"15":1,"309":1}}],["cd",{"2":{"12":1,"13":1}}],["cls",{"0":{"129":1},"2":{"129":6,"241":1,"242":11}}],["close",{"0":{"114":1},"2":{"114":1,"284":1}}],["closed",{"2":{"81":1,"84":2,"85":2,"89":1,"111":1}}],["clone",{"2":{"12":2,"13":2}}],["cloning",{"2":{"6":1}}],["classdef",{"2":{"241":3}}],["classes=",{"2":{"241":1}}],["classes",{"0":{"235":1},"2":{"241":1,"242":1}}],["classinfo",{"0":{"226":1,"235":1},"1":{"227":1,"228":1,"229":1,"230":1,"231":1},"2":{"241":1}}],["classmethod",{"0":{"211":1},"2":{"128":1,"129":1,"241":1}}],["class",{"0":{"20":1,"42":1,"64":1,"80":1,"103":1,"106":1,"110":1,"118":1,"128":1,"148":1,"150":1,"165":1,"175":1,"182":1,"187":1,"198":1,"207":1,"211":1,"213":1,"221":1,"226":1,"232":1,"253":1,"259":1,"267":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"104":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"129":1,"130":1,"131":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"166":1,"167":1,"168":1,"169":1,"170":1,"183":1,"184":1,"188":1,"189":1,"190":1,"199":1,"200":1,"201":1,"202":1,"208":1,"209":1,"210":1,"211":1,"212":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"227":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"254":1,"255":1,"256":1,"257":1,"258":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1},"2":{"82":2,"241":24,"242":2}}],["client",{"2":{"8":1}}],["cqhttp",{"2":{"8":1}}],["child",{"2":{"241":2,"289":1}}],["chromium",{"2":{"15":1}}],["channel时的通道标识",{"2":{"290":1}}],["channel即可",{"2":{"290":1}}],["channel及passive",{"2":{"290":1}}],["channel函数获取通道对象",{"2":{"290":2}}],["channel=none",{"2":{"184":1}}],["channeldeliver",{"0":{"148":1},"1":{"149":1},"2":{"154":1}}],["channelv2",{"2":{"109":1}}],["channels",{"0":{"94":2,"96":1,"99":1},"2":{"94":5,"96":2,"98":1,"99":3,"153":1}}],["channel",{"0":{"79":1,"80":1,"90":1,"91":1,"92":2,"93":3,"94":1,"95":2,"96":1,"97":1,"98":1,"109":1,"124":1,"125":1,"126":1,"149":8,"183":2,"288":1},"1":{"80":1,"81":2,"82":2,"83":2,"84":2,"85":2,"86":2,"87":2,"88":2,"89":2,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"110":1,"111":1,"112":1,"113":1,"114":1,"289":1,"290":1,"291":1,"292":1,"293":1},"2":{"27":2,"49":2,"79":1,"81":7,"84":1,"85":1,"90":3,"91":3,"92":2,"93":19,"94":4,"95":8,"96":9,"97":11,"98":7,"99":2,"100":2,"101":2,"119":4,"121":1,"123":1,"124":5,"125":9,"126":4,"127":2,"149":12,"152":1,"154":12,"183":5,"184":2,"289":3,"290":14}}],["chan",{"2":{"27":4,"49":4,"95":5,"96":5,"98":3,"99":3,"119":2,"120":1,"121":6,"122":1,"123":6,"124":1,"127":1,"132":1,"133":5,"134":2,"135":2,"136":4,"152":2,"153":2,"154":2,"290":2}}],["changed",{"2":{"303":1}}],["change",{"2":{"12":1,"13":1,"313":1,"314":1}}],["chat",{"2":{"6":1,"7":1,"9":1}}],["check",{"0":{"81":1},"2":{"1":1,"6":1,"81":9,"84":1}}],["cn",{"0":{"242":1,"243":1},"2":{"2":1,"242":2,"243":1}}],["color",{"2":{"250":7}}],["colors=true",{"2":{"248":3}}],["color=",{"2":{"180":5}}],["copy",{"2":{"138":1}}],["copyright",{"2":{"63":1,"79":1,"102":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["count",{"0":{"132":1},"2":{"21":1,"26":2,"43":1,"48":2}}],["code插件liteyuki",{"2":{"299":1}}],["code=ast",{"2":{"241":2}}],["codemodifiedhandler",{"0":{"165":1},"1":{"166":1,"167":1,"168":1,"169":1,"170":1},"2":{"171":1}}],["code",{"0":{"218":1},"2":{"15":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"104":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"129":1,"133":1,"134":1,"135":1,"136":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":4,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"238":1,"239":1,"240":1,"241":1,"242":7,"243":3,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"277":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1}}],["coro",{"0":{"284":1,"285":1},"2":{"284":6,"285":3}}],["coroutine",{"0":{"283":1,"284":2,"285":2,"287":1},"2":{"66":1,"87":2,"125":1,"197":1,"283":1,"284":2,"285":3,"287":3}}],["core",{"0":{"145":1,"146":1,"147":1},"1":{"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1},"2":{"8":1}}],["correctly",{"2":{"6":2}}],["come",{"2":{"289":1}}],["combined",{"2":{"200":2,"201":2}}],["com",{"2":{"12":1,"13":1,"63":1,"79":1,"102":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["compat",{"0":{"39":2,"61":2},"2":{"39":9,"61":9}}],["complete",{"2":{"284":2}}],["completion",{"2":{"2":2}}],["complies",{"2":{"6":1}}],["computer",{"2":{"6":1}}],["communicate",{"2":{"289":1}}],["communication",{"0":{"288":1},"1":{"289":1,"290":1,"291":1,"292":1,"293":1},"2":{"3":1,"289":1}}],["comm",{"0":{"79":1,"100":1,"101":1,"102":1,"105":1,"109":1,"115":1},"1":{"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"103":1,"104":1,"106":1,"107":1,"108":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1},"2":{"290":2,"293":2}}],["command>",{"2":{"296":2}}],["command",{"0":{"311":1},"1":{"312":1},"2":{"1":4,"6":5,"10":1}}],["content",{"2":{"241":2,"242":17,"243":2}}],["continue",{"2":{"143":1,"152":1,"241":1,"243":1,"249":3}}],["container",{"2":{"13":1}}],["contact",{"2":{"6":1}}],["conn",{"2":{"81":4,"84":1,"85":1,"111":2}}],["connect",{"2":{"6":1}}],["connected",{"0":{"3":1}}],["convenient",{"2":{"14":1}}],["confirm",{"2":{"6":1}}],["configs",{"0":{"143":1},"2":{"143":1,"144":1}}],["config=self",{"2":{"29":1,"51":1}}],["configured",{"2":{"3":1}}],["configuration",{"0":{"1":1,"3":1},"2":{"0":5,"1":1,"2":2,"3":1,"6":2}}],["configurations",{"0":{"0":1,"2":1},"1":{"1":1,"2":1,"3":1,"4":1},"2":{"2":1}}],["config",{"0":{"38":1,"39":1,"60":1,"61":1,"137":1,"138":2,"144":1,"180":1,"269":1},"1":{"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"0":5,"2":2,"21":2,"29":1,"38":2,"39":6,"43":2,"51":1,"60":2,"61":6,"138":10,"139":7,"140":7,"141":7,"142":7,"143":4,"144":9,"173":1,"180":3,"279":2,"281":2,"311":4,"312":1}}],["conflict",{"2":{"6":1}}],["conflicts",{"2":{"6":1,"12":1}}],["console",{"2":{"1":1}}],["created",{"0":{"167":1},"2":{"167":1}}],["create",{"2":{"0":1,"12":1,"88":2,"126":1,"153":3}}],["case",{"2":{"250":4}}],["cases",{"2":{"0":1}}],["category",{"2":{"242":2,"243":2}}],["calling",{"0":{"107":2},"2":{"107":4,"108":1}}],["callback",{"0":{"162":1,"171":2},"2":{"87":1,"88":2,"171":4,"290":1}}],["callable",{"0":{"87":3,"125":1,"171":1,"189":1,"283":2,"287":2},"2":{"66":1,"87":7,"125":2,"151":1,"162":1,"163":1,"171":1,"189":1,"197":1,"283":2,"287":6}}],["call",{"0":{"108":1,"202":1,"283":1},"2":{"21":1,"26":2,"43":1,"48":2,"108":1,"164":4,"202":1,"283":8,"290":1}}],["cache",{"2":{"13":2}}],["cannot",{"2":{"6":1,"84":1,"85":1,"125":1,"127":1}}],["can",{"2":{"0":2,"4":1,"6":2,"7":1,"12":1,"37":1,"59":1,"87":1,"289":1,"290":1}}],["duration>",{"2":{"319":1}}],["duration",{"2":{"319":2,"320":1}}],["duplex",{"2":{"290":1}}],["driver",{"2":{"290":4}}],["d",{"2":{"83":4,"132":2,"133":4,"134":4,"135":4,"136":2,"286":4,"320":1}}],["daemon=true",{"2":{"152":1,"285":1}}],["data=",{"2":{"184":1}}],["data",{"0":{"83":1,"84":1,"88":1,"97":1,"98":1,"99":1,"104":1,"112":1,"124":1,"126":1,"133":1,"134":1,"135":1,"136":1,"183":1,"239":1},"2":{"83":12,"84":7,"85":2,"86":2,"87":5,"88":5,"89":2,"96":2,"97":7,"98":7,"99":4,"104":3,"112":3,"113":2,"124":5,"125":3,"126":4,"127":6,"133":4,"134":3,"135":2,"136":2,"152":4,"183":7,"239":6,"243":5,"290":7}}],["darwin",{"2":{"26":1,"48":1}}],["day",{"2":{"1":1}}],["dog",{"2":{"302":1,"303":1}}],["dot",{"2":{"241":1}}],["docs",{"0":{"243":1},"2":{"243":5,"311":1,"312":1}}],["docstring=method",{"2":{"241":1}}],["docstring=module",{"2":{"241":1}}],["docstring=class",{"2":{"241":1}}],["docstring=function",{"2":{"241":1}}],["docstring",{"0":{"217":1,"225":1,"228":1,"237":1},"2":{"241":16,"242":12}}],["docker",{"0":{"13":1},"2":{"13":4}}],["documentation",{"2":{"6":1,"9":1}}],["don",{"2":{"6":1,"7":1,"9":1}}],["download",{"2":{"6":1}}],["does",{"2":{"6":4,"249":1}}],["do",{"2":{"6":1,"15":1}}],["diagnose=false",{"2":{"180":1}}],["dict",{"0":{"94":1,"96":1,"97":1,"98":1,"99":1,"104":1,"108":1,"123":1,"133":1,"134":1,"135":1,"136":1,"138":2,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"180":1,"183":2,"184":1,"239":1,"246":1,"266":1,"275":1},"2":{"21":1,"43":1,"83":2,"91":1,"94":1,"96":2,"97":1,"98":1,"99":1,"104":1,"108":1,"116":1,"117":1,"119":2,"123":4,"133":1,"134":1,"135":1,"136":1,"138":3,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":3,"180":1,"183":3,"184":1,"239":1,"243":1,"246":3,"248":6,"275":3}}],["disable",{"2":{"311":1,"312":1,"313":2,"314":2}}],["disk",{"2":{"15":1}}],["display",{"0":{"250":2},"2":{"1":1,"248":7,"250":5}}],["different",{"2":{"3":2,"6":1}}],["dir",{"0":{"243":1,"249":1},"2":{"243":6,"249":17,"279":2,"281":2}}],["dirname",{"2":{"239":2}}],["directories=",{"2":{"303":1}}],["directories",{"0":{"143":1,"171":1},"2":{"143":2,"171":4}}],["directory",{"2":{"0":4,"1":1,"2":1,"12":1,"13":2,"143":6,"171":2,"249":1}}],["directly",{"2":{"15":1}}],["direct",{"2":{"6":1,"289":1}}],["dirs",{"0":{"143":1},"2":{"1":1,"143":1,"144":1,"240":1,"279":1,"281":1}}],["details>",{"2":{"242":4}}],["detailed",{"2":{"2":1,"3":1}}],["debounce",{"0":{"164":1},"2":{"164":1,"165":1,"166":1}}],["debug",{"2":{"2":2,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":2,"89":1,"139":1,"140":1,"141":1,"179":2,"180":2,"303":1}}],["deepcopy",{"2":{"138":1}}],["decorator",{"2":{"87":2,"125":2,"164":2,"171":2,"189":2,"241":13,"290":1}}],["del",{"2":{"122":2}}],["deleted",{"0":{"168":1},"2":{"168":1}}],["delete",{"0":{"122":1,"135":1},"2":{"122":2,"134":1,"135":3}}],["deliver",{"0":{"92":1,"149":2},"2":{"93":1,"95":1,"96":2,"97":2,"98":2,"99":1,"149":6,"154":6}}],["delivery",{"2":{"4":1,"154":1}}],["delay",{"0":{"26":1,"48":1},"2":{"26":2,"48":2}}],["deftype",{"0":{"207":1,"219":1},"1":{"208":1,"209":1,"210":1,"211":1,"212":1},"2":{"241":4,"242":1}}],["def",{"0":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"104":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"129":1,"133":1,"134":1,"135":1,"136":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"277":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1},"2":{"22":1,"24":1,"44":1,"46":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"86":1,"87":2,"88":1,"89":1,"97":1,"98":1,"99":1,"125":2,"126":1,"127":1,"129":1,"133":1,"134":1,"135":1,"136":1,"152":2,"153":1,"164":2,"166":1,"171":2,"189":1,"190":1,"195":1,"200":1,"201":1,"202":1,"203":1,"204":1,"241":4,"242":2,"277":1,"287":1,"290":3,"303":1}}],["default",{"0":{"38":1,"39":1,"60":1,"61":1,"121":1,"144":1,"214":1,"215":1,"216":1,"217":1,"219":1,"220":1,"222":1,"223":1,"227":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"260":1,"270":1,"271":1,"272":1,"279":1,"281":1},"2":{"1":1,"2":3,"3":1,"18":1,"38":4,"39":4,"60":4,"61":4,"90":1,"91":1,"92":2,"116":1,"117":1,"121":6,"132":1,"133":3,"144":1,"162":1,"163":1,"173":1,"177":1,"179":1,"197":1,"244":1,"279":1,"281":1}}],["deprecated",{"2":{"39":1,"61":1}}],["depth=1",{"2":{"12":1,"13":1}}],["deploy",{"2":{"6":1}}],["depend",{"2":{"15":1}}],["dependency",{"2":{"12":1}}],["dependencies",{"2":{"12":1,"15":1}}],["depends",{"2":{"3":1,"15":1}}],["depending",{"2":{"0":1}}],["description=",{"2":{"302":1}}],["description",{"0":{"261":1},"2":{"3":1,"18":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"63":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"100":1,"101":1,"102":1,"105":1,"108":1,"109":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"132":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"147":1,"152":1,"153":1,"154":1,"156":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"171":1,"172":1,"173":1,"174":1,"177":1,"178":1,"180":1,"181":1,"183":1,"184":1,"185":1,"186":1,"188":1,"189":1,"190":1,"191":1,"192":1,"196":1,"197":1,"205":1,"206":1,"238":1,"239":1,"241":1,"242":1,"243":1,"244":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"275":1,"276":1,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"308":1}}],["device",{"0":{"15":1},"1":{"16":1},"2":{"15":1}}],["developer",{"2":{"302":1}}],["developers",{"2":{"9":1}}],["develop",{"2":{"9":1}}],["development",{"2":{"2":3}}],["dev",{"0":{"159":1,"160":1,"161":1,"172":1},"1":{"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1},"2":{"2":1,"303":1,"306":1}}],["two",{"2":{"290":1}}],["types",{"0":{"269":1}}],["type=plugintype",{"2":{"302":1}}],["type=attr",{"2":{"241":1}}],["type=ast",{"2":{"241":3}}],["type=def",{"2":{"241":1}}],["type=deftype",{"2":{"241":1}}],["type=self",{"2":{"184":2}}],["typealias",{"2":{"162":1,"163":1,"197":1}}],["typeerror",{"2":{"81":1,"84":1,"93":1}}],["type",{"0":{"81":1,"82":2,"83":1,"183":2,"216":1,"219":1,"223":1,"250":1,"263":1},"2":{"81":12,"82":4,"83":2,"84":7,"90":1,"91":1,"92":1,"93":1,"116":1,"117":1,"162":1,"163":1,"183":9,"184":2,"197":1,"241":11,"242":13,"248":2,"250":5}}],["target",{"0":{"154":3,"238":1},"2":{"154":6,"238":4,"241":5}}],["target=run",{"2":{"285":1}}],["target=self",{"2":{"152":1}}],["target=os",{"2":{"26":1,"48":1}}],["targets",{"2":{"151":1,"152":4,"153":1,"154":1,"155":1,"157":1,"158":1,"241":2}}],["task",{"2":{"88":2,"126":1,"153":5}}],["tasks",{"2":{"66":2}}],["tuple=",{"2":{"154":1}}],["tuple",{"0":{"39":1,"61":1,"97":1,"98":1,"99":1,"108":1,"133":1,"134":1,"135":1,"136":1,"149":2,"154":1,"171":1,"215":1},"2":{"39":1,"61":1,"83":2,"91":1,"97":1,"98":1,"99":1,"108":1,"119":3,"133":1,"134":1,"135":1,"136":1,"149":2,"151":2,"171":1}}],["title",{"2":{"243":2}}],["time>",{"2":{"296":1}}],["timeout",{"2":{"156":1}}],["time",{"2":{"24":1,"26":1,"46":1,"48":1,"63":1,"79":1,"102":1,"109":1,"147":1,"164":9,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["tip",{"2":{"12":1,"13":1,"299":1,"308":1,"310":1}}],["test",{"0":{"258":2},"2":{"250":1}}],["text",{"2":{"242":3}}],["terminated",{"2":{"156":1}}],["terminate",{"0":{"156":1,"157":1},"2":{"21":1,"26":1,"43":1,"48":1,"152":2,"156":2,"157":2}}],["telegram",{"2":{"6":1}}],["txt",{"2":{"12":1,"15":1}}],["transfer",{"2":{"289":1}}],["traceback",{"2":{"190":1,"248":1}}],["tree",{"2":{"241":3}}],["try",{"2":{"23":1,"24":1,"45":1,"46":1,"122":1,"190":1,"248":1,"284":1}}],["trss",{"0":{"14":1},"2":{"8":1,"14":1}}],["true时例如docs",{"2":{"243":2}}],["true",{"0":{"122":1,"171":1,"241":1,"249":1,"269":1},"2":{"1":3,"2":4,"6":1,"85":1,"89":1,"127":1,"152":1,"180":1,"202":1,"203":1,"243":1,"290":2}}],["t",{"0":{"80":1,"84":1,"85":1,"86":1,"87":2},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1},"2":{"6":1,"7":1,"9":1,"13":1,"37":1,"59":1,"84":1,"85":1,"86":1,"87":5}}],["through",{"2":{"289":2}}],["thread",{"0":{"285":1},"2":{"26":1,"48":1,"285":2}}],["threading",{"0":{"131":1},"2":{"21":1,"26":1,"43":1,"48":1,"285":1}}],["that",{"2":{"6":2,"289":1,"290":1}}],["this",{"2":{"6":3}}],["then",{"2":{"6":1,"12":1}}],["therefore",{"2":{"289":1}}],["there",{"2":{"1":1,"6":1,"15":1}}],["these",{"2":{"0":1}}],["the",{"2":{"0":6,"1":1,"2":4,"3":6,"4":2,"6":20,"9":2,"10":3,"12":3,"13":2,"15":4,"248":1,"289":1,"290":2}}],["tokyo",{"2":{"317":1}}],["token",{"2":{"2":2}}],["top",{"0":{"243":1},"2":{"243":4}}],["too",{"2":{"6":1}}],["to",{"0":{"3":1,"16":1,"239":1,"286":1},"2":{"0":1,"1":6,"2":3,"3":2,"4":1,"6":17,"12":6,"13":1,"14":2,"15":5,"84":1,"239":1,"243":1,"248":7,"249":2,"286":2,"289":3,"290":2}}],["toml",{"0":{"141":1},"2":{"0":2,"141":5,"142":2,"144":1}}],["world",{"2":{"295":5}}],["w",{"2":{"239":1}}],["write",{"0":{"239":1},"2":{"239":2,"243":1}}],["wrapper",{"0":{"287":1},"2":{"66":1,"87":2,"125":4,"154":1,"164":2,"171":2,"287":4}}],["watchdog",{"2":{"303":1,"306":1}}],["watch",{"2":{"302":1,"303":1}}],["walk",{"2":{"240":1,"241":1}}],["wait",{"0":{"164":1},"2":{"164":2}}],["waring=no",{"2":{"144":1}}],["waring",{"0":{"143":1,"144":1},"2":{"143":3,"144":3}}],["warning=no",{"2":{"143":1,"144":1}}],["warning",{"0":{"142":1,"249":1},"2":{"15":2,"39":1,"61":1,"89":1,"142":5,"143":1,"152":1,"156":1,"158":1,"180":2,"248":1,"249":9,"299":1,"314":1}}],["way",{"2":{"14":1}}],["want",{"2":{"1":1}}],["weather",{"0":{"317":1},"1":{"318":1},"2":{"317":1,"318":1}}],["we",{"2":{"9":1}}],["websocket",{"2":{"3":2}}],["windows10+",{"2":{"15":1}}],["windows",{"2":{"13":1,"15":2,"26":1,"48":1}}],["without",{"2":{"15":1}}],["with",{"0":{"13":1,"39":1,"61":1,"243":1},"2":{"6":2,"13":1,"39":1,"61":1,"120":1,"121":1,"122":1,"129":1,"239":1,"241":1,"242":5,"243":4,"289":1,"290":1}}],["will",{"2":{"0":3,"2":3,"6":1,"15":2,"39":1,"61":1}}],["while",{"2":{"24":1,"46":1,"85":1,"89":1,"127":1,"152":1,"290":2}}],["which",{"2":{"6":2,"14":1}}],["why",{"2":{"6":1}}],["whether",{"2":{"1":3,"2":1}}],["when",{"2":{"0":2}}],["ws",{"2":{"3":2}}],["poke",{"2":{"297":4}}],["port",{"2":{"1":2,"13":2}}],["publish=publish",{"2":{"154":1}}],["publish",{"0":{"91":1,"124":1,"149":1},"2":{"91":1,"119":2,"124":2,"127":2,"149":3}}],["pwd",{"2":{"13":3}}],["p",{"2":{"13":1,"320":1}}],["pipe",{"2":{"81":2}}],["pip",{"2":{"12":1,"15":1,"248":1}}],["period\`",{"2":{"320":1}}],["period>",{"2":{"319":1}}],["period",{"2":{"319":2}}],["persists",{"2":{"6":1}}],["personal",{"2":{"0":1}}],["permission",{"2":{"6":1}}],["py即可启动插件",{"2":{"306":1}}],["pyo",{"2":{"303":1}}],["pycache",{"2":{"303":1}}],["pyc",{"2":{"303":1}}],["pycharm",{"2":{"63":1,"79":1,"102":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["py文件",{"2":{"302":1}}],["py文件或一个包含",{"2":{"302":1}}],["py的文件夹即可被识别为插件",{"2":{"302":1}}],["pyfile",{"0":{"244":1},"2":{"243":8,"244":1}}],["pyi",{"2":{"240":1,"241":1}}],["py",{"2":{"6":1,"12":1,"63":1,"79":1,"102":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":2,"186":1,"191":2,"192":1,"196":1,"205":1,"206":1,"240":1,"241":1,"243":1,"247":1,"249":3,"251":1,"252":1,"276":1,"278":2,"280":2,"293":1,"302":1,"303":1,"306":2,"308":1}}],["python格式",{"2":{"295":1}}],["pythonfrom",{"2":{"290":1,"293":1,"302":1,"306":1}}],["pythonimport",{"2":{"290":1,"303":1}}],["pythonasync",{"2":{"22":1,"24":1,"44":1,"46":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"86":1,"88":1,"89":1,"127":1,"152":1,"153":1,"190":1,"202":1}}],["pythondef",{"2":{"21":1,"23":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"45":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"81":1,"82":1,"83":1,"84":1,"85":1,"87":1,"93":1,"94":1,"95":1,"96":1,"104":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"193":1,"194":1,"195":1,"199":1,"200":1,"201":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1}}],["python3",{"2":{"12":1,"15":1}}],["python",{"2":{"6":5,"12":2,"15":3,"66":1,"97":1,"98":1,"99":1,"126":1,"129":1,"133":1,"134":1,"135":1,"136":1,"166":1,"203":1,"204":1,"241":2,"277":1}}],["page为页数",{"2":{"313":2}}],["page",{"2":{"313":2}}],["pacman",{"0":{"313":1},"1":{"314":1}}],["pack",{"2":{"308":2,"313":3}}],["param",{"2":{"310":1}}],["parts",{"2":{"286":2}}],["parent",{"2":{"241":4}}],["parse",{"2":{"241":1}}],["parser",{"2":{"10":1}}],["parsed",{"2":{"6":1}}],["parsing",{"2":{"1":1}}],["pass",{"2":{"112":1,"113":1,"114":1}}],["passive=channel",{"2":{"154":1}}],["passive=chan",{"2":{"154":1}}],["passive",{"0":{"149":2},"2":{"93":1,"95":1,"96":2,"97":2,"98":2,"99":1,"119":2,"120":1,"121":1,"122":1,"123":1,"132":1,"133":2,"134":2,"135":2,"136":1,"149":6,"154":6,"290":15}}],["pathlib",{"2":{"248":1}}],["paths=none",{"2":{"243":1}}],["paths",{"0":{"243":1},"2":{"243":5}}],["path=dot",{"2":{"241":1}}],["path",{"0":{"173":2,"233":1,"238":3,"241":1,"244":1,"248":2,"286":3},"2":{"6":2,"13":1,"15":3,"142":1,"143":2,"173":5,"238":10,"239":3,"240":1,"241":7,"243":22,"244":2,"248":19,"249":26,"286":12,"303":5}}],["platform",{"2":{"26":3,"48":3}}],["platforms",{"2":{"6":1}}],["playwright",{"2":{"6":2}}],["plugintype",{"0":{"250":1,"253":1,"263":2},"1":{"254":1,"255":1,"256":1,"257":1,"258":1},"2":{"250":5,"302":1}}],["pluginmetadata",{"0":{"259":1,"273":1},"1":{"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1},"2":{"248":4,"302":2}}],["plugin\`",{"2":{"248":1}}],["plugin\`的函数签名",{"2":{"173":1}}],["plugin的函数签名",{"2":{"173":1}}],["plugin",{"0":{"172":1,"245":1,"246":1,"247":1,"248":2,"249":2,"250":1,"251":1,"252":1,"267":1,"274":1,"275":1,"278":1,"280":1},"1":{"173":1,"246":1,"248":1,"249":1,"250":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":2,"269":2,"270":2,"271":2,"272":2,"273":2,"275":1,"279":1,"281":1},"2":{"1":3,"4":1,"6":3,"8":1,"10":1,"21":2,"43":2,"172":1,"246":3,"248":15,"249":6,"250":5,"275":3,"279":6,"281":6,"289":1,"302":4,"305":1,"306":2,"313":5}}],["plugins下创建一个文件",{"2":{"306":1}}],["plugins中添加你的插件路径",{"2":{"305":1}}],["plugins",{"0":{"173":1,"246":1,"249":1,"275":1,"276":1,"278":1,"279":1,"280":1,"281":1},"1":{"277":1,"279":1,"281":1},"2":{"1":1,"2":2,"6":2,"15":3,"21":1,"43":1,"173":6,"246":2,"248":3,"249":9,"275":2,"279":4,"281":4,"303":1,"306":2}}],["please",{"0":{"16":1},"2":{"1":2,"2":1,"3":2,"6":4,"9":1,"13":2,"15":1}}],["priority",{"0":{"188":1,"194":1,"195":1},"2":{"188":5,"193":2,"194":2,"195":2}}],["prioritize",{"2":{"9":1}}],["private",{"0":{"241":1},"2":{"183":2,"241":6}}],["print",{"0":{"40":1,"62":1},"2":{"21":1,"40":2,"43":1,"62":2,"86":2,"190":1,"243":1,"248":1}}],["profile",{"2":{"315":4}}],["property",{"0":{"212":2},"2":{"241":2}}],["provides",{"2":{"10":3,"14":1,"289":1}}],["provided",{"2":{"3":1,"6":1}}],["problematic",{"2":{"6":1}}],["problem",{"2":{"6":1}}],["problems",{"2":{"1":1}}],["processmanager",{"0":{"150":1},"1":{"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1},"2":{"21":2,"43":2}}],["process",{"0":{"27":1,"34":1,"35":1,"49":1,"56":1,"57":1,"66":1,"69":1,"71":1,"75":1,"77":1,"152":1,"158":1},"2":{"21":2,"22":1,"26":1,"27":4,"34":2,"35":2,"37":2,"43":2,"44":1,"48":1,"49":4,"56":2,"57":2,"59":2,"65":2,"66":1,"69":2,"71":2,"75":2,"77":2,"81":4,"87":3,"88":1,"93":1,"95":1,"96":1,"120":1,"121":1,"122":1,"123":1,"125":3,"127":2,"151":1,"152":14,"153":1,"155":2,"156":7,"158":2,"289":2,"290":8,"303":2}}],["processes",{"2":{"6":1,"15":1,"25":1,"27":1,"47":1,"49":1,"151":1,"152":1,"156":2,"158":1,"289":4}}],["processing",{"2":{"6":1}}],["protocol",{"2":{"3":1,"6":1,"8":6}}],["production",{"2":{"3":1}}],["project",{"2":{"0":1,"6":2,"9":2,"12":1,"13":1}}],["prefix",{"2":{"1":1}}],["preference",{"2":{"0":1}}],["y",{"2":{"250":1}}],["y>",{"2":{"250":1}}],["y>name",{"2":{"250":1}}],["yellow>",{"2":{"180":1}}],["yunzai",{"2":{"8":1}}],["yml格式的所有合法内容",{"2":{"311":1}}],["yml文件",{"2":{"308":1}}],["yml中填写一些信息",{"2":{"308":1}}],["yml",{"2":{"0":2,"142":1,"144":1,"308":2,"311":1}}],["you",{"2":{"0":4,"1":1,"2":1,"3":1,"4":1,"6":6,"7":2,"12":1,"13":2,"15":2,"289":1}}],["your",{"2":{"0":1,"13":1,"15":1,"248":4}}],["yamlweather",{"2":{"317":1}}],["yamlname",{"2":{"308":1}}],["yaml",{"0":{"139":1},"2":{"0":2,"1":1,"2":2,"139":5,"142":2,"144":1}}],["a包中的index",{"2":{"308":1}}],["application",{"0":{"254":2},"2":{"250":1}}],["append",{"2":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"87":2,"125":2,"189":1,"193":1,"240":1,"241":5}}],["api格式为onebot",{"2":{"311":1}}],["api文档",{"2":{"298":1}}],["api也有差别",{"2":{"298":1}}],["api",{"0":{"298":1},"2":{"243":10,"296":3,"297":2,"311":3}}],["await",{"2":{"22":4,"44":4,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"86":1,"87":2,"89":2,"125":1,"127":2,"152":4,"190":2,"200":2,"201":2,"202":1,"290":1,"296":1,"297":1,"299":1}}],["arbitrary",{"0":{"269":1}}],["arg",{"2":{"241":13,"242":16}}],["argv",{"2":{"26":1,"48":1}}],["arguments",{"2":{"21":1,"25":1,"27":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"38":1,"39":1,"43":1,"47":1,"49":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"81":1,"83":1,"84":1,"87":1,"88":1,"93":1,"94":1,"95":1,"111":1,"112":1,"120":1,"121":1,"122":1,"124":1,"125":1,"126":1,"138":1,"152":1,"154":1,"156":1,"158":1,"171":1,"173":1,"184":1,"188":1,"190":1,"238":1,"239":1,"241":1,"242":1,"243":1,"248":1,"249":1,"250":1,"283":1,"284":1,"285":1,"286":1,"287":1}}],["args=coro",{"2":{"285":1}}],["args=self",{"2":{"152":1}}],["args=",{"2":{"26":1,"48":1,"241":2}}],["args",{"0":{"21":1,"28":1,"43":1,"50":1,"66":1,"108":1,"154":1,"215":1},"2":{"21":4,"25":1,"26":2,"27":1,"28":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"38":1,"39":1,"43":4,"47":1,"48":2,"49":1,"50":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"66":4,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"81":1,"82":1,"83":1,"84":1,"85":1,"87":1,"88":1,"93":1,"94":1,"95":1,"108":2,"111":1,"112":1,"120":1,"121":1,"122":1,"124":1,"125":1,"126":1,"138":1,"152":1,"154":5,"156":1,"158":1,"164":2,"171":1,"173":1,"183":1,"184":1,"188":1,"190":1,"238":1,"239":1,"241":9,"242":9,"243":1,"250":1,"283":1,"284":1,"285":1,"286":1,"287":3,"311":4}}],["arch",{"2":{"14":1}}],["are",{"2":{"1":1,"6":2,"13":1,"15":1,"289":1}}],["abs",{"2":{"243":4}}],["absolute",{"2":{"13":1}}],["able",{"2":{"15":1}}],["about",{"2":{"6":1}}],["active和",{"2":{"290":1}}],["active和chan",{"2":{"154":2}}],["active=channel",{"2":{"154":1}}],["active=chan",{"2":{"154":1}}],["active",{"0":{"90":1,"92":1,"149":2},"2":{"27":6,"49":6,"90":1,"119":2,"124":1,"127":1,"149":6,"152":3,"154":4,"290":13}}],["activate",{"2":{"12":4}}],["acknowledgements",{"0":{"10":1}}],["account",{"2":{"7":1}}],["according",{"2":{"6":1}}],["accesstoken",{"2":{"3":2}}],["access",{"2":{"2":2}}],["author",{"0":{"264":1},"2":{"6":1,"63":1,"79":1,"102":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["auto",{"2":{"1":2,"2":2}}],["automatically",{"2":{"0":1,"1":2}}],["after",{"0":{"32":1,"33":1,"36":1,"54":1,"55":1,"58":1,"68":1,"70":1,"72":1,"74":1,"76":1,"78":1},"2":{"6":2,"22":1,"32":2,"33":2,"36":2,"44":1,"54":2,"55":2,"58":2,"65":3,"68":2,"70":2,"72":2,"74":3,"76":3,"78":3,"290":1}}],["avoid",{"2":{"6":1,"12":1}}],["available",{"2":{"1":1}}],["a",{"2":{"3":1,"6":4,"7":1,"8":3,"9":1,"12":2,"14":1,"84":1,"85":1,"138":3,"243":4,"249":1,"286":2,"289":1,"290":1,"302":1}}],["annassign",{"2":{"241":1}}],["annotation",{"2":{"241":6}}],["an",{"2":{"6":1,"7":1,"84":1,"93":1}}],["any=none",{"2":{"38":1,"39":1,"60":1,"61":1}}],["any",{"0":{"38":2,"39":2,"60":2,"61":2,"83":1,"87":2,"88":1,"97":1,"98":1,"99":1,"104":1,"108":1,"120":1,"121":2,"123":1,"124":1,"126":1,"133":1,"134":1,"135":1,"136":1,"138":2,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":4,"170":1,"183":2,"184":1,"224":1,"266":1,"283":1,"287":1},"2":{"2":1,"4":1,"21":1,"38":3,"39":3,"43":1,"60":3,"61":3,"83":1,"87":5,"88":1,"91":1,"92":1,"95":1,"96":1,"97":1,"98":1,"99":1,"104":1,"108":1,"119":3,"120":1,"121":5,"123":4,"124":1,"125":1,"126":1,"133":1,"134":1,"135":1,"136":1,"138":2,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":4,"170":1,"183":3,"184":1,"195":1,"241":7,"243":1,"283":1,"287":1}}],["and",{"0":{"201":1},"2":{"0":6,"4":1,"6":7,"9":1,"12":2,"15":2,"83":1,"84":1,"171":1,"201":2,"241":7,"242":1,"249":3,"289":3,"290":2,"303":2}}],["adapter",{"2":{"3":1,"4":2}}],["advanced",{"2":{"2":1}}],["add",{"0":{"154":1,"193":1},"2":{"2":1,"154":1,"180":1,"193":1,"194":1,"249":1}}],["address",{"2":{"1":1,"3":2}}],["amp",{"2":{"13":2}}],["am",{"2":{"1":1,"290":6}}],["attributes=",{"2":{"241":2}}],["attributes",{"0":{"230":1,"236":1},"2":{"241":2,"242":2}}],["attributeinfo",{"0":{"221":1,"230":1,"236":1},"1":{"222":1,"223":1,"224":1,"225":1},"2":{"241":2}}],["attr",{"0":{"130":1,"131":1,"208":1,"209":1,"210":1,"211":1,"212":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"227":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"254":1,"255":1,"256":1,"257":1,"258":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"269":1,"270":1,"271":1,"272":1,"273":1},"2":{"241":2,"242":14}}],["atexit",{"2":{"21":1,"43":1}}],["at",{"2":{"1":1,"15":2}}],["already",{"2":{"81":2,"93":1}}],["alive",{"0":{"24":1,"46":1,"158":1},"2":{"22":1,"24":1,"44":1,"46":1,"156":1,"158":2}}],["alconna",{"2":{"1":2,"2":2,"10":1}}],["allowed",{"0":{"269":1}}],["allow",{"2":{"2":2}}],["all",{"0":{"123":1,"136":1,"153":1,"155":1,"157":1},"2":{"0":1,"2":1,"21":1,"22":1,"25":1,"26":1,"43":1,"44":1,"47":1,"48":1,"63":1,"79":1,"83":3,"102":1,"109":1,"123":2,"135":1,"136":3,"147":1,"153":1,"155":1,"157":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["assign",{"2":{"241":2}}],["ast",{"2":{"241":29}}],["asynchronous",{"2":{"287":2}}],["async=isinstance",{"2":{"241":2}}],["asyncfunctiondef",{"2":{"241":3}}],["async",{"0":{"22":1,"24":1,"44":1,"46":1,"66":2,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"86":2,"88":1,"89":1,"126":1,"127":1,"152":1,"153":1,"190":1,"202":1,"203":1,"204":1,"220":1,"277":1,"287":1},"2":{"66":3,"86":1,"87":1,"89":1,"116":1,"117":1,"125":1,"126":1,"127":1,"152":1,"195":1,"200":1,"201":1,"203":1,"204":1,"242":4,"277":1,"287":2,"290":2}}],["asyncio",{"2":{"21":2,"23":1,"43":2,"45":1,"66":2,"86":1,"88":2,"126":1,"153":3,"284":5,"290":2}}],["ask",{"2":{"9":1}}],["asked",{"0":{"6":1}}],["as",{"2":{"0":1,"3":1,"6":2,"122":1,"239":1,"241":1,"248":1,"284":1}}]],"serializationVersion":2}`;export{e as default}; diff --git a/assets/chunks/@localSearchIndexen.CmG7uZBz.js b/assets/chunks/@localSearchIndexen.CmG7uZBz.js new file mode 100644 index 00000000..0acd244f --- /dev/null +++ b/assets/chunks/@localSearchIndexen.CmG7uZBz.js @@ -0,0 +1 @@ +const e='{"documentCount":327,"nextId":327,"documentIds":{"0":"/en/deploy/config.html#configurations","1":"/en/deploy/config.html#basic-configuration","2":"/en/deploy/config.html#other-configurations","3":"/en/deploy/config.html#example-configuration-of-onebot-implementation-side-connected-to-nonebot","4":"/en/deploy/config.html#other","5":"/en/deploy/fandq.html#faq","6":"/en/deploy/fandq.html#frequently-asked-questions","7":"/en/deploy/fandq.html#other-questions","8":"/en/deploy/fandq.html#recommended-solution-qq","9":"/en/deploy/fandq.html#recommended-solution-minecraft","10":"/en/deploy/fandq.html#acknowledgements","11":"/en/deploy/install.html#install","12":"/en/deploy/install.html#normal-installation","13":"/en/deploy/install.html#run-with-docker","14":"/en/deploy/install.html#use-trss-script","15":"/en/deploy/install.html#device-requirements","16":"/en/deploy/install.html#for-other-questions-please-refer-to-faq","17":"/en/dev/api/api.html#liteyuki","18":"/en/dev/api/api.html#var-version","19":"/en/dev/api/bot/bot.html#liteyuki-bot","20":"/en/dev/api/bot/bot.html#class-liteyukibot","21":"/en/dev/api/bot/bot.html#def-init-self-kwargs-none","22":"/en/dev/api/bot/bot.html#def-run-self","23":"/en/dev/api/bot/bot.html#async-def-keep-alive-self","24":"/en/dev/api/bot/bot.html#def-restart-self-delay-int-0","25":"/en/dev/api/bot/bot.html#def-restart-process-self-name-optional-str-none","26":"/en/dev/api/bot/bot.html#def-init-self-args-kwargs","27":"/en/dev/api/bot/bot.html#def-init-logger-self","28":"/en/dev/api/bot/bot.html#def-stop-self","29":"/en/dev/api/bot/bot.html#def-on-before-start-self-func-lifespan-func-lifespan-func","30":"/en/dev/api/bot/bot.html#def-on-after-start-self-func-lifespan-func","31":"/en/dev/api/bot/bot.html#def-on-after-shutdown-self-func-lifespan-func","32":"/en/dev/api/bot/bot.html#def-on-before-process-shutdown-self-func-process-lifespan-func","33":"/en/dev/api/bot/bot.html#def-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","34":"/en/dev/api/bot/bot.html#def-on-after-restart-self-func-lifespan-func","35":"/en/dev/api/bot/bot.html#def-get-bot-liteyukibot","36":"/en/dev/api/bot/bot.html#def-get-config-key-str-default-any-none-any","37":"/en/dev/api/bot/bot.html#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","38":"/en/dev/api/bot/#liteyuki-bot","39":"/en/dev/api/bot/#class-liteyukibot","40":"/en/dev/api/bot/#def-init-self-kwargs-none","41":"/en/dev/api/bot/#def-run-self","42":"/en/dev/api/bot/#async-def-keep-alive-self","43":"/en/dev/api/bot/#def-restart-self-delay-int-0","44":"/en/dev/api/bot/#def-restart-process-self-name-optional-str-none","45":"/en/dev/api/bot/#def-init-self-args-kwargs","46":"/en/dev/api/bot/#def-init-logger-self","47":"/en/dev/api/bot/#def-stop-self","48":"/en/dev/api/bot/#def-on-before-start-self-func-lifespan-func-lifespan-func","49":"/en/dev/api/bot/#def-on-after-start-self-func-lifespan-func","50":"/en/dev/api/bot/#def-on-after-shutdown-self-func-lifespan-func","51":"/en/dev/api/bot/#def-on-before-process-shutdown-self-func-process-lifespan-func","52":"/en/dev/api/bot/#def-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","53":"/en/dev/api/bot/#def-on-after-restart-self-func-lifespan-func","54":"/en/dev/api/bot/#def-get-bot-liteyukibot","55":"/en/dev/api/bot/#def-get-config-key-str-default-any-none-any","56":"/en/dev/api/bot/#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","57":"/en/dev/api/bot/lifespan.html#liteyuki-bot-lifespan","58":"/en/dev/api/bot/lifespan.html#var-sync-lifespan-func","59":"/en/dev/api/bot/lifespan.html#var-async-lifespan-func","60":"/en/dev/api/bot/lifespan.html#var-lifespan-func","61":"/en/dev/api/bot/lifespan.html#var-sync-process-lifespan-func","62":"/en/dev/api/bot/lifespan.html#var-async-process-lifespan-func","63":"/en/dev/api/bot/lifespan.html#var-process-lifespan-func","64":"/en/dev/api/bot/lifespan.html#class-lifespan","65":"/en/dev/api/bot/lifespan.html#def-init-self-none","66":"/en/dev/api/bot/lifespan.html#async-def-run-funcs-funcs-sequence-lifespan-func-process-lifespan-func-args-kwargs-none","67":"/en/dev/api/bot/lifespan.html#def-on-before-start-self-func-lifespan-func-lifespan-func","68":"/en/dev/api/bot/lifespan.html#def-on-after-start-self-func-lifespan-func-lifespan-func","69":"/en/dev/api/bot/lifespan.html#def-on-before-process-shutdown-self-func-process-lifespan-func-process-lifespan-func","70":"/en/dev/api/bot/lifespan.html#def-on-after-shutdown-self-func-lifespan-func-lifespan-func","71":"/en/dev/api/bot/lifespan.html#def-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","72":"/en/dev/api/bot/lifespan.html#def-on-after-restart-self-func-lifespan-func-lifespan-func","73":"/en/dev/api/bot/lifespan.html#async-def-before-start-self-none","74":"/en/dev/api/bot/lifespan.html#async-def-after-start-self-none","75":"/en/dev/api/bot/lifespan.html#async-def-before-process-shutdown-self-none","76":"/en/dev/api/bot/lifespan.html#async-def-after-shutdown-self-none","77":"/en/dev/api/bot/lifespan.html#async-def-before-process-restart-self-none","78":"/en/dev/api/bot/lifespan.html#async-def-after-restart-self-none","79":"/en/dev/api/comm/comm.html#liteyuki-comm","80":"/en/dev/api/comm/channel.html#liteyuki-comm-channel","81":"/en/dev/api/comm/channel.html#var-sync-on-receive-func","82":"/en/dev/api/comm/channel.html#var-async-on-receive-func","83":"/en/dev/api/comm/channel.html#var-on-receive-func","84":"/en/dev/api/comm/channel.html#var-sync-filter-func","85":"/en/dev/api/comm/channel.html#var-async-filter-func","86":"/en/dev/api/comm/channel.html#var-filter-func","87":"/en/dev/api/comm/channel.html#class-channel-generic-t","88":"/en/dev/api/comm/channel.html#def-init-self-name-str-type-check-optional-bool-none","89":"/en/dev/api/comm/channel.html#def-send-self-data-t","90":"/en/dev/api/comm/channel.html#def-receive-self-t","91":"/en/dev/api/comm/channel.html#async-def-async-receive-self-t","92":"/en/dev/api/comm/channel.html#def-on-receive-self-filter-func-optional-filter-func-none-callable-callable-t-any-callable-t-any","93":"/en/dev/api/comm/channel.html#var-active-channel","94":"/en/dev/api/comm/channel.html#var-passive-channel","95":"/en/dev/api/comm/channel.html#var-publish-channel","96":"/en/dev/api/comm/channel.html#var-channel-deliver-active-channel","97":"/en/dev/api/comm/channel.html#var-channel-deliver-passive-channel","98":"/en/dev/api/comm/channel.html#def-set-channel-name-str-channel-channel","99":"/en/dev/api/comm/channel.html#def-set-channels-channels-dict-str-channel","100":"/en/dev/api/comm/channel.html#def-get-channel-name-str-channel","101":"/en/dev/api/comm/channel.html#def-get-channels-dict-str-channel","102":"/en/dev/api/comm/channel.html#var-channel-deliver-active-channel-1","103":"/en/dev/api/comm/channel.html#var-channel-deliver-passive-channel-1","104":"/en/dev/api/comm/channel.html#def-on-set-channel-data-tuple-str-dict-str-any","105":"/en/dev/api/comm/channel.html#def-on-get-channel-data-tuple-str-dict-str-any","106":"/en/dev/api/comm/channel.html#def-on-get-channels-data-tuple-str-dict-str-any","107":"/en/dev/api/comm/event.html#liteyuki-comm-event","108":"/en/dev/api/comm/event.html#class-event","109":"/en/dev/api/comm/event.html#def-init-self-name-str-data-dict-str-any","110":"/en/dev/api/comm/rpc.html#liteyuki-comm-rpc","111":"/en/dev/api/comm/rpc.html#class-rpc","112":"/en/dev/api/comm/rpc.html#def-init-self-on-calling-on-calling-func-none","113":"/en/dev/api/comm/rpc.html#def-call-self-args-tuple-kwargs-dict-any","114":"/en/dev/api/comm/#liteyuki-comm","115":"/en/dev/api/comm/socks_channel.html#liteyuki-comm-socks-channel","116":"/en/dev/api/comm/socks_channel.html#class-sockschannel","117":"/en/dev/api/comm/socks_channel.html#def-init-self-name-str","118":"/en/dev/api/comm/socks_channel.html#def-send-self-data","119":"/en/dev/api/comm/socks_channel.html#def-receive-self","120":"/en/dev/api/comm/socks_channel.html#def-close-self","121":"/en/dev/api/comm/storage.html#liteyuki-comm-storage","122":"/en/dev/api/comm/storage.html#var-on-main-subscriber-receive-funcs","123":"/en/dev/api/comm/storage.html#var-on-sub-subscriber-receive-funcs","124":"/en/dev/api/comm/storage.html#class-keyvaluestore","125":"/en/dev/api/comm/storage.html#def-init-self","126":"/en/dev/api/comm/storage.html#def-set-self-key-str-value-any-none","127":"/en/dev/api/comm/storage.html#def-get-self-key-str-default-optional-any-none-optional-any","128":"/en/dev/api/comm/storage.html#def-delete-self-key-str-ignore-key-error-bool-true-none","129":"/en/dev/api/comm/storage.html#def-get-all-self-dict-str-any","130":"/en/dev/api/comm/storage.html#def-publish-self-channel-str-data-any-none","131":"/en/dev/api/comm/storage.html#def-on-subscriber-receive-self-channel-str-callable-on-receive-func-on-receive-func","132":"/en/dev/api/comm/storage.html#async-def-run-subscriber-receive-funcs-channel-str-data-any","133":"/en/dev/api/comm/storage.html#async-def-start-receive-loop-self","134":"/en/dev/api/comm/storage.html#class-globalkeyvaluestore","135":"/en/dev/api/comm/storage.html#def-get-instance-cls","136":"/en/dev/api/comm/storage.html#attr-instance-none","137":"/en/dev/api/comm/storage.html#attr-lock-threading-lock","138":"/en/dev/api/comm/storage.html#var-shared-memory","139":"/en/dev/api/comm/storage.html#var-ref-count","140":"/en/dev/api/comm/storage.html#def-on-get-data-tuple-str-dict-str-any","141":"/en/dev/api/comm/storage.html#def-on-set-data-tuple-str-dict-str-any","142":"/en/dev/api/comm/storage.html#def-on-delete-data-tuple-str-dict-str-any","143":"/en/dev/api/comm/storage.html#def-on-get-all-data-tuple-str-dict-str-any","144":"/en/dev/api/config.html#liteyuki-config","145":"/en/dev/api/config.html#def-flat-config-config-dict-str-any-dict-str-any","146":"/en/dev/api/config.html#def-load-from-yaml-file-str-dict-str-any","147":"/en/dev/api/config.html#def-load-from-json-file-str-dict-str-any","148":"/en/dev/api/config.html#def-load-from-toml-file-str-dict-str-any","149":"/en/dev/api/config.html#def-load-from-files-files-str-no-warning-bool-false-dict-str-any","150":"/en/dev/api/config.html#def-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any","151":"/en/dev/api/config.html#def-load-config-in-default-no-waring-bool-false-dict-str-any","152":"/en/dev/api/core/core.html#liteyuki-core","153":"/en/dev/api/core/#liteyuki-core","154":"/en/dev/api/dev/dev.html#liteyuki-dev","155":"/en/dev/api/core/manager.html#liteyuki-core-manager","156":"/en/dev/api/core/manager.html#class-channeldeliver","157":"/en/dev/api/core/manager.html#def-init-self-active-channel-any-passive-channel-any-channel-deliver-active-channel-channel-any-channel-deliver-passive-channel-tuple-str-dict-publish-channel-tuple-str-any","158":"/en/dev/api/core/manager.html#class-processmanager","159":"/en/dev/api/core/manager.html#def-init-self-lifespan-lifespan","160":"/en/dev/api/core/manager.html#async-def-start-all-self","161":"/en/dev/api/core/manager.html#def-add-target-self-name-str-target-target-func-args-tuple-kwargs-none","162":"/en/dev/api/core/manager.html#def-join-all-self","163":"/en/dev/api/core/manager.html#def-terminate-self-name-str","164":"/en/dev/api/core/manager.html#def-terminate-all-self","165":"/en/dev/api/core/manager.html#def-is-process-alive-self-name-str-bool","166":"/en/dev/api/dev/#liteyuki-dev","167":"/en/dev/api/dev/observer.html#liteyuki-dev-observer","168":"/en/dev/api/dev/observer.html#var-callback-func","169":"/en/dev/api/dev/observer.html#var-filter-func","170":"/en/dev/api/dev/observer.html#def-debounce-wait","171":"/en/dev/api/dev/observer.html#class-codemodifiedhandler-filesystemeventhandler","172":"/en/dev/api/dev/observer.html#def-on-modified-self-event","173":"/en/dev/api/dev/observer.html#def-on-created-self-event","174":"/en/dev/api/dev/observer.html#def-on-deleted-self-event","175":"/en/dev/api/dev/observer.html#def-on-moved-self-event","176":"/en/dev/api/dev/observer.html#def-on-any-event-self-event","177":"/en/dev/api/dev/observer.html#def-on-file-system-event-directories-tuple-str-recursive-bool-true-event-filter-filter-func-none-callable-callback-func-callback-func","178":"/en/dev/api/dev/plugin.html#liteyuki-dev-plugin","179":"/en/dev/api/dev/plugin.html#def-run-plugins-module-path-str-path","180":"/en/dev/api/exception.html#liteyuki-exception","181":"/en/dev/api/exception.html#class-liteyukiexception-baseexception","182":"/en/dev/api/#liteyuki","183":"/en/dev/api/#var-version","184":"/en/dev/api/log.html#liteyuki-log","185":"/en/dev/api/log.html#def-get-format-level-str-str","186":"/en/dev/api/log.html#def-init-log-config-dict","187":"/en/dev/api/message/event.html#liteyuki-message-event","188":"/en/dev/api/message/event.html#class-messageevent","189":"/en/dev/api/message/event.html#def-init-self-bot-id-str-message-list-dict-str-any-str-message-type-str-raw-message-str-session-id-str-user-id-str-session-type-str-receive-channel-optional-channel-messageevent-none-data-optional-dict-str-any-none","190":"/en/dev/api/message/event.html#def-reply-self-message-str-dict-str-any","191":"/en/dev/api/message/#liteyuki-message","192":"/en/dev/api/message/matcher.html#liteyuki-message-matcher","193":"/en/dev/api/message/matcher.html#class-matcher","194":"/en/dev/api/message/matcher.html#def-init-self-rule-rule-priority-int-block-bool","195":"/en/dev/api/message/matcher.html#def-handle-self-callable-eventhandler-eventhandler","196":"/en/dev/api/message/matcher.html#async-def-run-self-event-messageevent-none","197":"/en/dev/api/message/message.html#liteyuki-message","198":"/en/dev/api/message/on.html#liteyuki-message-on","199":"/en/dev/api/message/on.html#def-add-matcher-matcher-matcher","200":"/en/dev/api/message/on.html#def-on-message-rule-rule-empty-rule-priority-int-0-block-bool-false-matcher","201":"/en/dev/api/message/on.html#def-on-keywords-keywords-list-str-rule-empty-rule-priority-int-0-block-bool-false-matcher","202":"/en/dev/api/message/rule.html#liteyuki-message-rule","203":"/en/dev/api/message/rule.html#var-rulehandlerfunc","204":"/en/dev/api/message/rule.html#class-rule","205":"/en/dev/api/message/rule.html#def-init-self-handler-rulehandlerfunc","206":"/en/dev/api/message/rule.html#def-or-self-other-rule-rule","207":"/en/dev/api/message/rule.html#def-and-self-other-rule-rule","208":"/en/dev/api/message/rule.html#async-def-call-self-event-messageevent-bool","209":"/en/dev/api/message/rule.html#async-def-empty-rule-event-messageevent-bool","210":"/en/dev/api/message/rule.html#async-def-is-su-rule-event-messageevent-bool","211":"/en/dev/api/message/session.html#liteyuki-message-session","212":"/en/dev/api/mkdoc.html#liteyuki-mkdoc","213":"/en/dev/api/mkdoc.html#class-deftype-enum","214":"/en/dev/api/mkdoc.html#attr-function-function","215":"/en/dev/api/mkdoc.html#attr-method-method","216":"/en/dev/api/mkdoc.html#attr-static-method-staticmethod","217":"/en/dev/api/mkdoc.html#attr-class-method-classmethod","218":"/en/dev/api/mkdoc.html#attr-property-property","219":"/en/dev/api/mkdoc.html#class-functioninfo-basemodel","220":"/en/dev/api/mkdoc.html#attr-name-str-no-default","221":"/en/dev/api/mkdoc.html#attr-args-list-tuple-str-str-no-default","222":"/en/dev/api/mkdoc.html#attr-return-type-str-no-default","223":"/en/dev/api/mkdoc.html#attr-docstring-str-no-default","224":"/en/dev/api/mkdoc.html#attr-source-code-str","225":"/en/dev/api/mkdoc.html#attr-type-deftype-no-default","226":"/en/dev/api/mkdoc.html#attr-is-async-bool-no-default","227":"/en/dev/api/mkdoc.html#class-attributeinfo-basemodel","228":"/en/dev/api/mkdoc.html#attr-name-str-no-default-1","229":"/en/dev/api/mkdoc.html#attr-type-str-no-default","230":"/en/dev/api/mkdoc.html#attr-value-any-none","231":"/en/dev/api/mkdoc.html#attr-docstring-str","232":"/en/dev/api/mkdoc.html#class-classinfo-basemodel","233":"/en/dev/api/mkdoc.html#attr-name-str-no-default-2","234":"/en/dev/api/mkdoc.html#attr-docstring-str-no-default-1","235":"/en/dev/api/mkdoc.html#attr-methods-list-functioninfo-no-default","236":"/en/dev/api/mkdoc.html#attr-attributes-list-attributeinfo-no-default","237":"/en/dev/api/mkdoc.html#attr-inherit-list-str-no-default","238":"/en/dev/api/mkdoc.html#class-moduleinfo-basemodel","239":"/en/dev/api/mkdoc.html#attr-module-path-str-no-default","240":"/en/dev/api/mkdoc.html#attr-functions-list-functioninfo-no-default","241":"/en/dev/api/mkdoc.html#attr-classes-list-classinfo-no-default","242":"/en/dev/api/mkdoc.html#attr-attributes-list-attributeinfo-no-default-1","243":"/en/dev/api/mkdoc.html#attr-docstring-str-no-default-2","244":"/en/dev/api/mkdoc.html#def-get-relative-path-base-path-str-target-path-str-str","245":"/en/dev/api/mkdoc.html#def-write-to-files-file-data-dict-str-str","246":"/en/dev/api/mkdoc.html#def-get-file-list-module-folder-str","247":"/en/dev/api/mkdoc.html#def-get-module-info-normal-file-path-str-ignore-private-bool-true-moduleinfo","248":"/en/dev/api/mkdoc.html#def-generate-markdown-module-info-moduleinfo-front-matter-none-lang-str-zh-cn-str","249":"/en/dev/api/mkdoc.html#def-generate-docs-module-folder-str-output-dir-str-with-top-bool-false-lang-str-zh-cn-ignored-paths-none","250":"/en/dev/api/mkdoc.html#var-no-module-name-pyfile-path","251":"/en/dev/api/plugin/#liteyuki-plugin","252":"/en/dev/api/plugin/#def-get-loaded-plugins-dict-str-plugin","253":"/en/dev/api/plugin/load.html#liteyuki-plugin-load","254":"/en/dev/api/plugin/load.html#def-load-plugin-module-path-str-path-optional-plugin","255":"/en/dev/api/plugin/load.html#def-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin","256":"/en/dev/api/plugin/load.html#def-format-display-name-display-name-str-plugin-type-plugintype-str","257":"/en/dev/api/plugin/manager.html#liteyuki-plugin-manager","258":"/en/dev/api/plugin/model.html#liteyuki-plugin-model","259":"/en/dev/api/plugin/model.html#class-plugintype-enum","260":"/en/dev/api/plugin/model.html#attr-application-application","261":"/en/dev/api/plugin/model.html#attr-service-service","262":"/en/dev/api/plugin/model.html#attr-module-module","263":"/en/dev/api/plugin/model.html#attr-unclassified-unclassified","264":"/en/dev/api/plugin/model.html#attr-test-test","265":"/en/dev/api/plugin/model.html#class-pluginmetadata-basemodel","266":"/en/dev/api/plugin/model.html#attr-name-str-no-default","267":"/en/dev/api/plugin/model.html#attr-description-str","268":"/en/dev/api/plugin/model.html#attr-usage-str","269":"/en/dev/api/plugin/model.html#attr-type-plugintype-plugintype-unclassified","270":"/en/dev/api/plugin/model.html#attr-author-str","271":"/en/dev/api/plugin/model.html#attr-homepage-str","272":"/en/dev/api/plugin/model.html#attr-extra-dict-str-any","273":"/en/dev/api/plugin/model.html#class-plugin-basemodel","274":"/en/dev/api/plugin/model.html#def-hash-self","275":"/en/dev/api/plugin/model.html#attr-model-config-arbitrary-types-allowed-true","276":"/en/dev/api/plugin/model.html#attr-name-str-no-default-1","277":"/en/dev/api/plugin/model.html#attr-module-moduletype-no-default","278":"/en/dev/api/plugin/model.html#attr-module-name-str-no-default","279":"/en/dev/api/plugin/model.html#attr-metadata-optional-pluginmetadata-none","280":"/en/dev/api/plugin/plugin.html#liteyuki-plugin","281":"/en/dev/api/plugin/plugin.html#def-get-loaded-plugins-dict-str-plugin","282":"/en/dev/api/plugins/plugin_loader/#liteyuki-plugins-plugin-loader","283":"/en/dev/api/plugins/plugin_loader/#def-default-plugins-loader","284":"/en/dev/api/plugins/liteecho.html#liteyuki-plugins-liteecho","285":"/en/dev/api/plugins/liteecho.html#async-def-liteecho-event-messageevent","286":"/en/dev/api/plugins/plugin_loader/plugin_loader.html#liteyuki-plugins-plugin-loader","287":"/en/dev/api/plugins/plugin_loader/plugin_loader.html#def-default-plugins-loader","288":"/en/dev/api/utils.html#liteyuki-utils","289":"/en/dev/api/utils.html#def-is-coroutine-callable-call-callable-any-bool","290":"/en/dev/api/utils.html#def-run-coroutine-coro-coroutine","291":"/en/dev/api/utils.html#def-run-coroutine-in-thread-coro-coroutine","292":"/en/dev/api/utils.html#def-path-to-module-name-path-path-str","293":"/en/dev/api/utils.html#def-async-wrapper-func-callable-any-callable-coroutine","294":"/en/dev/lyfunc.html#轻雪函数","295":"/en/dev/lyfunc.html#函数文件","296":"/en/dev/lyfunc.html#命令文档","297":"/en/dev/lyfunc.html#示例","298":"/en/dev/lyfunc.html#api","299":"/en/dev/lyfunc.html#结束关键字","300":"/en/dev/plugin.html#简介","301":"/en/dev/plugin.html#开始","302":"/en/dev/plugin.html#创建插件","303":"/en/dev/plugin.html#编写逻辑部分","304":"/en/dev/plugin.html#加载插件","305":"/en/dev/plugin.html#方法1","306":"/en/dev/plugin.html#方法2","307":"/en/dev/comm.html#channel-communication","308":"/en/dev/comm.html#introduction","309":"/en/dev/comm.html#example","310":"/en/dev/comm.html#共享内存通信","311":"/en/dev/comm.html#简介","312":"/en/dev/comm.html#示例","313":"/en/dev/resource.html#简介","314":"/en/dev/resource.html#加载资源包","315":"/en/usage/agreement.html#用户协议","316":"/en/usage/basic.html#基础插件","317":"/en/usage/basic.html#轻雪命令liteyuki-command","318":"/en/usage/basic.html#命令别名","319":"/en/usage/basic.html#插件-包管理器-liteyuki-pacman","320":"/en/usage/basic.html#命令别名-1","321":"/en/usage/basic.html#用户管理liteyuki-user","322":"/en/usage/extra.html#功能插件命令","323":"/en/usage/extra.html#轻雪天气liteyuki-weather","324":"/en/usage/extra.html#命令别名","325":"/en/usage/extra.html#统计信息liteyuki-statistics","326":"/en/usage/extra.html#命令别名-1"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,50],"1":[2,1,82],"2":[2,1,67],"3":[9,1,71],"4":[1,1,21],"5":[1,1,1],"6":[3,1,172],"7":[2,1,18],"8":[4,1,31],"9":[4,1,25],"10":[1,1,14],"11":[1,1,1],"12":[2,1,59],"13":[3,1,57],"14":[3,1,18],"15":[2,1,83],"16":[6,3,1],"17":[1,1,1],"18":[3,1,7],"19":[2,1,1],"20":[2,2,1],"21":[6,4,71],"22":[4,4,21],"23":[6,4,31],"24":[8,4,72],"25":[10,4,52],"26":[6,4,20],"27":[5,4,16],"28":[4,4,15],"29":[9,4,27],"30":[9,4,26],"31":[9,4,27],"32":[11,4,29],"33":[11,4,30],"34":[9,4,27],"35":[5,2,41],"36":[10,2,44],"37":[14,2,64],"38":[2,1,1],"39":[2,2,1],"40":[6,4,71],"41":[4,4,21],"42":[6,4,31],"43":[8,4,72],"44":[10,4,52],"45":[6,4,20],"46":[5,4,16],"47":[4,4,15],"48":[9,4,27],"49":[9,4,26],"50":[9,4,27],"51":[11,4,29],"52":[11,4,30],"53":[9,4,27],"54":[5,2,41],"55":[10,2,44],"56":[14,2,64],"57":[3,1,25],"58":[4,3,8],"59":[4,3,9],"60":[3,3,11],"61":[5,3,9],"62":[5,3,10],"63":[4,3,12],"64":[2,3,1],"65":[5,5,34],"66":[13,5,58],"67":[9,5,29],"68":[9,5,29],"69":[11,5,31],"70":[9,5,29],"71":[11,5,31],"72":[9,5,29],"73":[7,5,23],"74":[7,5,23],"75":[8,5,24],"76":[7,5,24],"77":[8,5,24],"78":[7,5,24],"79":[2,1,9],"80":[3,1,4],"81":[5,3,9],"82":[5,3,10],"83":[4,3,12],"84":[4,3,9],"85":[4,3,11],"86":[3,3,11],"87":[5,3,1],"88":[12,8,75],"89":[6,8,48],"90":[5,8,33],"91":[6,8,35],"92":[16,8,81],"93":[3,3,9],"94":[3,3,9],"95":[3,3,15],"96":[4,3,11],"97":[4,3,12],"98":[7,3,58],"99":[7,3,38],"100":[7,3,50],"101":[8,3,49],"102":[4,3,9],"103":[4,3,17],"104":[10,3,27],"105":[10,3,30],"106":[10,3,29],"107":[3,1,3],"108":[2,3,1],"109":[9,5,16],"110":[3,1,5],"111":[2,3,1],"112":[10,5,17],"113":[9,5,20],"114":[2,1,9],"115":[4,1,3],"116":[2,4,1],"117":[6,6,24],"118":[5,6,17],"119":[4,6,17],"120":[4,6,13],"121":[3,1,5],"122":[6,3,12],"123":[6,3,12],"124":[2,3,1],"125":[4,5,33],"126":[9,5,35],"127":[12,5,42],"128":[12,5,47],"129":[9,5,34],"130":[9,5,26],"131":[13,5,56],"132":[11,5,32],"133":[7,5,45],"134":[2,3,2],"135":[5,5,21],"136":[4,5,1],"137":[6,5,1],"138":[3,3,9],"139":[3,3,17],"140":[9,3,31],"141":[9,3,29],"142":[9,3,29],"143":[10,3,29],"144":[2,1,20],"145":[8,2,43],"146":[10,2,38],"147":[10,2,37],"148":[10,2,37],"149":[14,2,46],"150":[16,2,52],"151":[15,2,37],"152":[2,1,1],"153":[2,1,1],"154":[2,1,3],"155":[3,1,25],"156":[2,3,1],"157":[14,5,21],"158":[2,3,1],"159":[6,5,20],"160":[6,5,34],"161":[14,5,52],"162":[5,5,16],"163":[6,5,36],"164":[5,5,15],"165":[9,5,32],"166":[2,1,3],"167":[3,1,6],"168":[3,3,9],"169":[3,3,9],"170":[4,3,28],"171":[4,3,3],"172":[6,7,19],"173":[6,7,12],"174":[6,7,12],"175":[6,7,12],"176":[6,7,12],"177":[20,3,56],"178":[3,1,25],"179":[9,3,36],"180":[2,1,3],"181":[4,2,1],"182":[1,1,1],"183":[3,1,7],"184":[2,1,25],"185":[6,2,20],"186":[6,2,50],"187":[3,1,25],"188":[2,3,1],"189":[24,5,52],"190":[9,5,39],"191":[2,1,25],"192":[3,1,25],"193":[2,3,1],"194":[10,5,30],"195":[7,5,24],"196":[8,5,35],"197":[2,1,25],"198":[3,1,25],"199":[5,3,24],"200":[15,3,21],"201":[16,3,32],"202":[3,1,25],"203":[2,3,11],"204":[2,3,1],"205":[6,5,13],"206":[6,5,21],"207":[6,5,22],"208":[8,5,23],"209":[8,3,19],"210":[9,3,24],"211":[3,1,25],"212":[2,1,25],"213":[4,2,1],"214":[5,6,1],"215":[5,6,1],"216":[6,6,1],"217":[6,6,1],"218":[5,6,1],"219":[4,2,1],"220":[6,6,1],"221":[8,6,1],"222":[7,6,1],"223":[6,6,1],"224":[6,6,1],"225":[6,6,1],"226":[7,6,1],"227":[4,2,1],"228":[6,6,1],"229":[6,6,1],"230":[5,6,1],"231":[5,6,1],"232":[4,2,1],"233":[6,6,1],"234":[6,6,1],"235":[7,6,1],"236":[7,6,1],"237":[7,6,1],"238":[4,2,1],"239":[7,6,1],"240":[7,6,1],"241":[7,6,1],"242":[7,6,1],"243":[6,6,1],"244":[8,2,24],"245":[9,2,40],"246":[8,2,30],"247":[15,2,147],"248":[15,2,99],"249":[20,2,98],"250":[6,2,10],"251":[2,1,1],"252":[9,2,21],"253":[3,1,25],"254":[12,3,84],"255":[15,3,62],"256":[9,3,44],"257":[3,1,25],"258":[3,1,25],"259":[4,3,1],"260":[5,7,1],"261":[5,7,1],"262":[5,7,1],"263":[5,7,1],"264":[5,7,1],"265":[4,3,1],"266":[6,7,1],"267":[5,7,1],"268":[5,7,1],"269":[5,7,1],"270":[5,7,1],"271":[5,7,1],"272":[7,7,1],"273":[4,3,1],"274":[4,7,13],"275":[9,7,1],"276":[6,7,1],"277":[6,7,1],"278":[7,7,1],"279":[6,7,1],"280":[2,1,1],"281":[9,2,21],"282":[4,1,25],"283":[5,4,24],"284":[3,1,31],"285":[6,3,23],"286":[4,1,25],"287":[5,4,24],"288":[2,1,6],"289":[9,2,35],"290":[6,2,47],"291":[8,2,25],"292":[8,2,43],"293":[9,2,30],"294":[1,1,9],"295":[1,1,25],"296":[1,1,33],"297":[1,2,26],"298":[1,1,7],"299":[1,1,18],"300":[1,1,4],"301":[1,1,1],"302":[1,2,42],"303":[1,2,58],"304":[1,2,1],"305":[1,3,6],"306":[1,3,25],"307":[2,1,1],"308":[1,2,46],"309":[1,2,105],"310":[1,2,1],"311":[1,3,9],"312":[1,3,18],"313":[1,1,31],"314":[1,1,56],"315":[1,1,28],"316":[1,1,16],"317":[2,1,86],"318":[1,3,30],"319":[4,1,53],"320":[1,5,38],"321":[2,1,20],"322":[1,1,1],"323":[2,1,30],"324":[1,3,8],"325":[2,1,35],"326":[1,3,17]},"averageFieldLength":[5.68807339449541,3.4220183486238533,22.83180428134556],"storedFields":{"0":{"title":"Configurations","titles":[]},"1":{"title":"Basic Configuration","titles":["Configurations"]},"2":{"title":"Other configurations","titles":["Configurations"]},"3":{"title":"Example: Configuration of OneBot implementation side connected to NoneBot","titles":["Configurations"]},"4":{"title":"Other","titles":["Configurations"]},"5":{"title":"FAQ","titles":[]},"6":{"title":"Frequently Asked Questions","titles":["FAQ"]},"7":{"title":"Other questions","titles":["FAQ"]},"8":{"title":"Recommended Solution(QQ)","titles":["FAQ"]},"9":{"title":"Recommended Solution(Minecraft)","titles":["FAQ"]},"10":{"title":"Acknowledgements","titles":["FAQ"]},"11":{"title":"Install","titles":[]},"12":{"title":"Normal Installation","titles":["Install"]},"13":{"title":"Run with Docker","titles":["Install"]},"14":{"title":"Use TRSS Script","titles":["Install"]},"15":{"title":"Device Requirements","titles":["Install"]},"16":{"title":"For other questions, please refer to","titles":["Install","Device Requirements"]},"17":{"title":"liteyuki","titles":[]},"18":{"title":"var __version__","titles":["liteyuki"]},"19":{"title":"liteyuki.bot","titles":[]},"20":{"title":"class LiteyukiBot","titles":["liteyuki.bot"]},"21":{"title":"def __init__(self, **kwargs) -> None","titles":["liteyuki.bot","class LiteyukiBot"]},"22":{"title":"def run(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"23":{"title":"async def keep_alive(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"24":{"title":"def restart(self, delay: int = 0)","titles":["liteyuki.bot","class LiteyukiBot"]},"25":{"title":"def restart_process(self, name: Optional[str] = None)","titles":["liteyuki.bot","class LiteyukiBot"]},"26":{"title":"def init(self, *args, **kwargs)","titles":["liteyuki.bot","class LiteyukiBot"]},"27":{"title":"def init_logger(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"28":{"title":"def stop(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"29":{"title":"def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot","class LiteyukiBot"]},"30":{"title":"def on_after_start(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"31":{"title":"def on_after_shutdown(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"32":{"title":"def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"33":{"title":"def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot","class LiteyukiBot"]},"34":{"title":"def on_after_restart(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"35":{"title":"def get_bot() -> LiteyukiBot","titles":["liteyuki.bot"]},"36":{"title":"def get_config(key: str, default: Any = None) -> Any","titles":["liteyuki.bot"]},"37":{"title":"def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","titles":["liteyuki.bot"]},"38":{"title":"liteyuki.bot","titles":[]},"39":{"title":"class LiteyukiBot","titles":["liteyuki.bot"]},"40":{"title":"def __init__(self, **kwargs) -> None","titles":["liteyuki.bot","class LiteyukiBot"]},"41":{"title":"def run(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"42":{"title":"async def keep_alive(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"43":{"title":"def restart(self, delay: int = 0)","titles":["liteyuki.bot","class LiteyukiBot"]},"44":{"title":"def restart_process(self, name: Optional[str] = None)","titles":["liteyuki.bot","class LiteyukiBot"]},"45":{"title":"def init(self, *args, **kwargs)","titles":["liteyuki.bot","class LiteyukiBot"]},"46":{"title":"def init_logger(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"47":{"title":"def stop(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"48":{"title":"def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot","class LiteyukiBot"]},"49":{"title":"def on_after_start(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"50":{"title":"def on_after_shutdown(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"51":{"title":"def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"52":{"title":"def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot","class LiteyukiBot"]},"53":{"title":"def on_after_restart(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"54":{"title":"def get_bot() -> LiteyukiBot","titles":["liteyuki.bot"]},"55":{"title":"def get_config(key: str, default: Any = None) -> Any","titles":["liteyuki.bot"]},"56":{"title":"def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","titles":["liteyuki.bot"]},"57":{"title":"liteyuki.bot.lifespan","titles":[]},"58":{"title":"var SYNC_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan"]},"59":{"title":"var ASYNC_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan"]},"60":{"title":"var LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan"]},"61":{"title":"var SYNC_PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan"]},"62":{"title":"var ASYNC_PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan"]},"63":{"title":"var PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan"]},"64":{"title":"class Lifespan","titles":["liteyuki.bot.lifespan"]},"65":{"title":"def __init__(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"66":{"title":"async def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"67":{"title":"def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"68":{"title":"def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"69":{"title":"def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"70":{"title":"def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"71":{"title":"def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"72":{"title":"def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"73":{"title":"async def before_start(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"74":{"title":"async def after_start(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"75":{"title":"async def before_process_shutdown(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"76":{"title":"async def after_shutdown(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"77":{"title":"async def before_process_restart(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"78":{"title":"async def after_restart(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"79":{"title":"liteyuki.comm","titles":[]},"80":{"title":"liteyuki.comm.channel","titles":[]},"81":{"title":"var SYNC_ON_RECEIVE_FUNC","titles":["liteyuki.comm.channel"]},"82":{"title":"var ASYNC_ON_RECEIVE_FUNC","titles":["liteyuki.comm.channel"]},"83":{"title":"var ON_RECEIVE_FUNC","titles":["liteyuki.comm.channel"]},"84":{"title":"var SYNC_FILTER_FUNC","titles":["liteyuki.comm.channel"]},"85":{"title":"var ASYNC_FILTER_FUNC","titles":["liteyuki.comm.channel"]},"86":{"title":"var FILTER_FUNC","titles":["liteyuki.comm.channel"]},"87":{"title":"class Channel(Generic[T])","titles":["liteyuki.comm.channel"]},"88":{"title":"def __init__(self, name: str, type_check: Optional[bool] = None)","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"89":{"title":"def send(self, data: T)","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"90":{"title":"def receive(self) -> T","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"91":{"title":"async def async_receive(self) -> T","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"92":{"title":"def on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"93":{"title":"var active_channel","titles":["liteyuki.comm.channel"]},"94":{"title":"var passive_channel","titles":["liteyuki.comm.channel"]},"95":{"title":"var publish_channel","titles":["liteyuki.comm.channel"]},"96":{"title":"var channel_deliver_active_channel","titles":["liteyuki.comm.channel"]},"97":{"title":"var channel_deliver_passive_channel","titles":["liteyuki.comm.channel"]},"98":{"title":"def set_channel(name: str, channel: Channel)","titles":["liteyuki.comm.channel"]},"99":{"title":"def set_channels(channels: dict[str, Channel])","titles":["liteyuki.comm.channel"]},"100":{"title":"def get_channel(name: str) -> Channel","titles":["liteyuki.comm.channel"]},"101":{"title":"def get_channels() -> dict[str, Channel]","titles":["liteyuki.comm.channel"]},"102":{"title":"var channel_deliver_active_channel","titles":["liteyuki.comm.channel"]},"103":{"title":"var channel_deliver_passive_channel","titles":["liteyuki.comm.channel"]},"104":{"title":"def on_set_channel(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.channel"]},"105":{"title":"def on_get_channel(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.channel"]},"106":{"title":"def on_get_channels(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.channel"]},"107":{"title":"liteyuki.comm.event","titles":[]},"108":{"title":"class Event","titles":["liteyuki.comm.event"]},"109":{"title":"def __init__(self, name: str, data: dict[str, Any])","titles":["liteyuki.comm.event","class Event"]},"110":{"title":"liteyuki.comm.rpc","titles":[]},"111":{"title":"class RPC","titles":["liteyuki.comm.rpc"]},"112":{"title":"def __init__(self, on_calling: ON_CALLING_FUNC) -> None","titles":["liteyuki.comm.rpc","class RPC"]},"113":{"title":"def call(self, args: tuple, kwargs: dict) -> Any","titles":["liteyuki.comm.rpc","class RPC"]},"114":{"title":"liteyuki.comm","titles":[]},"115":{"title":"liteyuki.comm.socks_channel","titles":[]},"116":{"title":"class SocksChannel","titles":["liteyuki.comm.socks_channel"]},"117":{"title":"def __init__(self, name: str)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"118":{"title":"def send(self, data)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"119":{"title":"def receive(self)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"120":{"title":"def close(self)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"121":{"title":"liteyuki.comm.storage","titles":[]},"122":{"title":"var _on_main_subscriber_receive_funcs","titles":["liteyuki.comm.storage"]},"123":{"title":"var _on_sub_subscriber_receive_funcs","titles":["liteyuki.comm.storage"]},"124":{"title":"class KeyValueStore","titles":["liteyuki.comm.storage"]},"125":{"title":"def __init__(self)","titles":["liteyuki.comm.storage","class KeyValueStore"]},"126":{"title":"def set(self, key: str, value: Any) -> None","titles":["liteyuki.comm.storage","class KeyValueStore"]},"127":{"title":"def get(self, key: str, default: Optional[Any] = None) -> Optional[Any]","titles":["liteyuki.comm.storage","class KeyValueStore"]},"128":{"title":"def delete(self, key: str, ignore_key_error: bool = True) -> None","titles":["liteyuki.comm.storage","class KeyValueStore"]},"129":{"title":"def get_all(self) -> dict[str, Any]","titles":["liteyuki.comm.storage","class KeyValueStore"]},"130":{"title":"def publish(self, channel_: str, data: Any) -> None","titles":["liteyuki.comm.storage","class KeyValueStore"]},"131":{"title":"def on_subscriber_receive(self, channel_: str) -> Callable[[ON_RECEIVE_FUNC], ON_RECEIVE_FUNC]","titles":["liteyuki.comm.storage","class KeyValueStore"]},"132":{"title":"async def run_subscriber_receive_funcs(channel_: str, data: Any)","titles":["liteyuki.comm.storage","class KeyValueStore"]},"133":{"title":"async def start_receive_loop(self)","titles":["liteyuki.comm.storage","class KeyValueStore"]},"134":{"title":"class GlobalKeyValueStore","titles":["liteyuki.comm.storage"]},"135":{"title":"def get_instance(cls)","titles":["liteyuki.comm.storage","class GlobalKeyValueStore"]},"136":{"title":"attr _instance = None","titles":["liteyuki.comm.storage","class GlobalKeyValueStore"]},"137":{"title":"attr _lock = threading.Lock()","titles":["liteyuki.comm.storage","class GlobalKeyValueStore"]},"138":{"title":"var shared_memory","titles":["liteyuki.comm.storage"]},"139":{"title":"var _ref_count","titles":["liteyuki.comm.storage"]},"140":{"title":"def on_get(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"141":{"title":"def on_set(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"142":{"title":"def on_delete(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"143":{"title":"def on_get_all(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"144":{"title":"liteyuki.config","titles":[]},"145":{"title":"def flat_config(config: dict[str, Any]) -> dict[str, Any]","titles":["liteyuki.config"]},"146":{"title":"def load_from_yaml(file_: str) -> dict[str, Any]","titles":["liteyuki.config"]},"147":{"title":"def load_from_json(file_: str) -> dict[str, Any]","titles":["liteyuki.config"]},"148":{"title":"def load_from_toml(file_: str) -> dict[str, Any]","titles":["liteyuki.config"]},"149":{"title":"def load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]","titles":["liteyuki.config"]},"150":{"title":"def load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]","titles":["liteyuki.config"]},"151":{"title":"def load_config_in_default(no_waring: bool = False) -> dict[str, Any]","titles":["liteyuki.config"]},"152":{"title":"liteyuki.core","titles":[]},"153":{"title":"liteyuki.core","titles":[]},"154":{"title":"liteyuki.dev","titles":[]},"155":{"title":"liteyuki.core.manager","titles":[]},"156":{"title":"class ChannelDeliver","titles":["liteyuki.core.manager"]},"157":{"title":"def __init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]])","titles":["liteyuki.core.manager","class ChannelDeliver"]},"158":{"title":"class ProcessManager","titles":["liteyuki.core.manager"]},"159":{"title":"def __init__(self, lifespan: Lifespan)","titles":["liteyuki.core.manager","class ProcessManager"]},"160":{"title":"async def start_all(self)","titles":["liteyuki.core.manager","class ProcessManager"]},"161":{"title":"def add_target(self, name: str, target: TARGET_FUNC, args: tuple = (), kwargs = None)","titles":["liteyuki.core.manager","class ProcessManager"]},"162":{"title":"def join_all(self)","titles":["liteyuki.core.manager","class ProcessManager"]},"163":{"title":"def terminate(self, name: str)","titles":["liteyuki.core.manager","class ProcessManager"]},"164":{"title":"def terminate_all(self)","titles":["liteyuki.core.manager","class ProcessManager"]},"165":{"title":"def is_process_alive(self, name: str) -> bool","titles":["liteyuki.core.manager","class ProcessManager"]},"166":{"title":"liteyuki.dev","titles":[]},"167":{"title":"liteyuki.dev.observer","titles":[]},"168":{"title":"var CALLBACK_FUNC","titles":["liteyuki.dev.observer"]},"169":{"title":"var FILTER_FUNC","titles":["liteyuki.dev.observer"]},"170":{"title":"def debounce(wait)","titles":["liteyuki.dev.observer"]},"171":{"title":"class CodeModifiedHandler(FileSystemEventHandler)","titles":["liteyuki.dev.observer"]},"172":{"title":"def on_modified(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"173":{"title":"def on_created(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"174":{"title":"def on_deleted(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"175":{"title":"def on_moved(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"176":{"title":"def on_any_event(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"177":{"title":"def on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]","titles":["liteyuki.dev.observer"]},"178":{"title":"liteyuki.dev.plugin","titles":[]},"179":{"title":"def run_plugins(*module_path: str | Path)","titles":["liteyuki.dev.plugin"]},"180":{"title":"liteyuki.exception","titles":[]},"181":{"title":"class LiteyukiException(BaseException)","titles":["liteyuki.exception"]},"182":{"title":"liteyuki","titles":[]},"183":{"title":"var __version__","titles":["liteyuki"]},"184":{"title":"liteyuki.log","titles":[]},"185":{"title":"def get_format(level: str) -> str","titles":["liteyuki.log"]},"186":{"title":"def init_log(config: dict)","titles":["liteyuki.log"]},"187":{"title":"liteyuki.message.event","titles":[]},"188":{"title":"class MessageEvent","titles":["liteyuki.message.event"]},"189":{"title":"def __init__(self, bot_id: str, message: list[dict[str, Any]] | str, message_type: str, raw_message: str, session_id: str, user_id: str, session_type: str, receive_channel: Optional[Channel[MessageEvent]] = None, data: Optional[dict[str, Any]] = None)","titles":["liteyuki.message.event","class MessageEvent"]},"190":{"title":"def reply(self, message: str | dict[str, Any])","titles":["liteyuki.message.event","class MessageEvent"]},"191":{"title":"liteyuki.message","titles":[]},"192":{"title":"liteyuki.message.matcher","titles":[]},"193":{"title":"class Matcher","titles":["liteyuki.message.matcher"]},"194":{"title":"def __init__(self, rule: Rule, priority: int, block: bool)","titles":["liteyuki.message.matcher","class Matcher"]},"195":{"title":"def handle(self) -> Callable[[EventHandler], EventHandler]","titles":["liteyuki.message.matcher","class Matcher"]},"196":{"title":"async def run(self, event: MessageEvent) -> None","titles":["liteyuki.message.matcher","class Matcher"]},"197":{"title":"liteyuki.message","titles":[]},"198":{"title":"liteyuki.message.on","titles":[]},"199":{"title":"def add_matcher(matcher: Matcher)","titles":["liteyuki.message.on"]},"200":{"title":"def on_message(rule: Rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["liteyuki.message.on"]},"201":{"title":"def on_keywords(keywords: list[str], rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["liteyuki.message.on"]},"202":{"title":"liteyuki.message.rule","titles":[]},"203":{"title":"var RuleHandlerFunc","titles":["liteyuki.message.rule"]},"204":{"title":"class Rule","titles":["liteyuki.message.rule"]},"205":{"title":"def __init__(self, handler: RuleHandlerFunc)","titles":["liteyuki.message.rule","class Rule"]},"206":{"title":"def __or__(self, other: Rule) -> Rule","titles":["liteyuki.message.rule","class Rule"]},"207":{"title":"def __and__(self, other: Rule) -> Rule","titles":["liteyuki.message.rule","class Rule"]},"208":{"title":"async def __call__(self, event: MessageEvent) -> bool","titles":["liteyuki.message.rule","class Rule"]},"209":{"title":"async def empty_rule(event: MessageEvent) -> bool","titles":["liteyuki.message.rule"]},"210":{"title":"async def is_su_rule(event: MessageEvent) -> bool","titles":["liteyuki.message.rule"]},"211":{"title":"liteyuki.message.session","titles":[]},"212":{"title":"liteyuki.mkdoc","titles":[]},"213":{"title":"class DefType(Enum)","titles":["liteyuki.mkdoc"]},"214":{"title":"attr FUNCTION = \'function\'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"215":{"title":"attr METHOD = \'method\'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"216":{"title":"attr STATIC_METHOD = \'staticmethod\'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"217":{"title":"attr CLASS_METHOD = \'classmethod\'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"218":{"title":"attr PROPERTY = \'property\'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"219":{"title":"class FunctionInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"220":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"221":{"title":"attr args: list[tuple[str, str]] = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"222":{"title":"attr return_type: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"223":{"title":"attr docstring: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"224":{"title":"attr source_code: str = \'\'","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"225":{"title":"attr type: DefType = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"226":{"title":"attr is_async: bool = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"227":{"title":"class AttributeInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"228":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"229":{"title":"attr type: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"230":{"title":"attr value: Any = None","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"231":{"title":"attr docstring: str = \'\'","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"232":{"title":"class ClassInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"233":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"234":{"title":"attr docstring: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"235":{"title":"attr methods: list[FunctionInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"236":{"title":"attr attributes: list[AttributeInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"237":{"title":"attr inherit: list[str] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"238":{"title":"class ModuleInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"239":{"title":"attr module_path: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"240":{"title":"attr functions: list[FunctionInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"241":{"title":"attr classes: list[ClassInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"242":{"title":"attr attributes: list[AttributeInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"243":{"title":"attr docstring: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"244":{"title":"def get_relative_path(base_path: str, target_path: str) -> str","titles":["liteyuki.mkdoc"]},"245":{"title":"def write_to_files(file_data: dict[str, str])","titles":["liteyuki.mkdoc"]},"246":{"title":"def get_file_list(module_folder: str)","titles":["liteyuki.mkdoc"]},"247":{"title":"def get_module_info_normal(file_path: str, ignore_private: bool = True) -> ModuleInfo","titles":["liteyuki.mkdoc"]},"248":{"title":"def generate_markdown(module_info: ModuleInfo, front_matter = None, lang: str = \'zh-CN\') -> str","titles":["liteyuki.mkdoc"]},"249":{"title":"def generate_docs(module_folder: str, output_dir: str, with_top: bool = False, lang: str = \'zh-CN\', ignored_paths = None)","titles":["liteyuki.mkdoc"]},"250":{"title":"var no_module_name_pyfile_path","titles":["liteyuki.mkdoc"]},"251":{"title":"liteyuki.plugin","titles":[]},"252":{"title":"def get_loaded_plugins() -> dict[str, Plugin]","titles":["liteyuki.plugin"]},"253":{"title":"liteyuki.plugin.load","titles":[]},"254":{"title":"def load_plugin(module_path: str | Path) -> Optional[Plugin]","titles":["liteyuki.plugin.load"]},"255":{"title":"def load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]","titles":["liteyuki.plugin.load"]},"256":{"title":"def format_display_name(display_name: str, plugin_type: PluginType) -> str","titles":["liteyuki.plugin.load"]},"257":{"title":"liteyuki.plugin.manager","titles":[]},"258":{"title":"liteyuki.plugin.model","titles":[]},"259":{"title":"class PluginType(Enum)","titles":["liteyuki.plugin.model"]},"260":{"title":"attr APPLICATION = \'application\'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"261":{"title":"attr SERVICE = \'service\'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"262":{"title":"attr MODULE = \'module\'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"263":{"title":"attr UNCLASSIFIED = \'unclassified\'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"264":{"title":"attr TEST = \'test\'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"265":{"title":"class PluginMetadata(BaseModel)","titles":["liteyuki.plugin.model"]},"266":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"267":{"title":"attr description: str = \'\'","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"268":{"title":"attr usage: str = \'\'","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"269":{"title":"attr type: PluginType = PluginType.UNCLASSIFIED","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"270":{"title":"attr author: str = \'\'","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"271":{"title":"attr homepage: str = \'\'","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"272":{"title":"attr extra: dict[str, Any] = {}","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"273":{"title":"class Plugin(BaseModel)","titles":["liteyuki.plugin.model"]},"274":{"title":"def __hash__(self)","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"275":{"title":"attr model_config = {\'arbitrary_types_allowed\': True}","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"276":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"277":{"title":"attr module: ModuleType = NO_DEFAULT","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"278":{"title":"attr module_name: str = NO_DEFAULT","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"279":{"title":"attr metadata: Optional[PluginMetadata] = None","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"280":{"title":"liteyuki.plugin","titles":[]},"281":{"title":"def get_loaded_plugins() -> dict[str, Plugin]","titles":["liteyuki.plugin"]},"282":{"title":"liteyuki.plugins.plugin_loader","titles":[]},"283":{"title":"def default_plugins_loader()","titles":["liteyuki.plugins.plugin_loader"]},"284":{"title":"liteyuki.plugins.liteecho","titles":[]},"285":{"title":"async def liteecho(event: MessageEvent)","titles":["liteyuki.plugins.liteecho"]},"286":{"title":"liteyuki.plugins.plugin_loader","titles":[]},"287":{"title":"def default_plugins_loader()","titles":["liteyuki.plugins.plugin_loader"]},"288":{"title":"liteyuki.utils","titles":[]},"289":{"title":"def is_coroutine_callable(call: Callable[..., Any]) -> bool","titles":["liteyuki.utils"]},"290":{"title":"def run_coroutine(*coro: Coroutine)","titles":["liteyuki.utils"]},"291":{"title":"def run_coroutine_in_thread(*coro: Coroutine)","titles":["liteyuki.utils"]},"292":{"title":"def path_to_module_name(path: Path) -> str","titles":["liteyuki.utils"]},"293":{"title":"def async_wrapper(func: Callable[..., Any]) -> Callable[..., Coroutine]","titles":["liteyuki.utils"]},"294":{"title":"轻雪函数","titles":[]},"295":{"title":"函数文件","titles":["轻雪函数"]},"296":{"title":"命令文档","titles":["轻雪函数"]},"297":{"title":"示例","titles":["轻雪函数","命令文档"]},"298":{"title":"API","titles":["轻雪函数"]},"299":{"title":"结束关键字","titles":["轻雪函数"]},"300":{"title":"简介","titles":[]},"301":{"title":"开始","titles":["简介"]},"302":{"title":"创建插件","titles":["简介","开始"]},"303":{"title":"编写逻辑部分","titles":["简介","开始"]},"304":{"title":"加载插件","titles":["简介","开始"]},"305":{"title":"方法1","titles":["简介","开始","加载插件"]},"306":{"title":"方法2","titles":["简介","开始","加载插件"]},"307":{"title":"Channel Communication","titles":[]},"308":{"title":"Introduction","titles":["Channel Communication"]},"309":{"title":"Example","titles":["Channel Communication"]},"310":{"title":"共享内存通信","titles":["Channel Communication"]},"311":{"title":"简介","titles":["Channel Communication","共享内存通信"]},"312":{"title":"示例","titles":["Channel Communication","共享内存通信"]},"313":{"title":"简介","titles":[]},"314":{"title":"加载资源包","titles":["简介"]},"315":{"title":"用户协议","titles":[]},"316":{"title":"基础插件","titles":[]},"317":{"title":"轻雪命令liteyuki_command","titles":["基础插件"]},"318":{"title":"命令别名","titles":["基础插件","轻雪命令liteyuki_command"]},"319":{"title":"插件/包管理器 liteyuki_pacman","titles":["基础插件"]},"320":{"title":"命令别名","titles":["基础插件","插件/包管理器 liteyuki_pacman"]},"321":{"title":"用户管理liteyuki_user","titles":["基础插件"]},"322":{"title":"功能插件命令","titles":[]},"323":{"title":"轻雪天气liteyuki_weather","titles":["功能插件命令"]},"324":{"title":"命令别名","titles":["功能插件命令","轻雪天气liteyuki_weather"]},"325":{"title":"统计信息liteyuki_statistics","titles":["功能插件命令"]},"326":{"title":"命令别名","titles":["功能插件命令","统计信息liteyuki_statistics"]}},"dirtCount":0,"index":[["或",{"2":{"325":2}}],["或插件路径",{"2":{"254":2}}],["当前bot",{"2":{"325":1}}],["当前群聊",{"2":{"325":1}}],["当前会话启用",{"2":{"319":1}}],["秒",{"2":{"325":2}}],["小时",{"2":{"325":2}}],["天",{"2":{"325":2}}],["天气",{"2":{"323":1,"324":1}}],["格式",{"2":{"325":1}}],["格式为onebot",{"2":{"317":1}}],["统计时间范围为duration",{"2":{"325":1}}],["统计周期为period",{"2":{"325":1}}],["统计信息",{"2":{"325":1}}],["统计信息liteyuki",{"0":{"325":1},"1":{"326":1}}],["功能",{"2":{"325":1}}],["功能插件命令",{"0":{"322":1},"1":{"323":1,"324":1,"325":1,"326":1}}],["绑定城市",{"2":{"324":1}}],["绑定查询城市",{"2":{"323":1}}],["个人全局生效",{"2":{"323":1}}],["个人信息",{"2":{"321":1}}],["海淀",{"2":{"323":1}}],["北京",{"2":{"323":1}}],["支持中英文",{"2":{"323":2}}],["支持中英文城市名",{"2":{"323":1}}],["支持多个关键词查询",{"2":{"323":1}}],["支持绑定城市",{"2":{"323":1}}],["支持单行注释",{"2":{"295":1}}],["受限于nonebot2钩子函数的依赖注入参数",{"2":{"320":1}}],["帮助",{"2":{"320":1}}],["列表",{"2":{"320":1}}],["列出所有资源包",{"2":{"319":1}}],["列出所有插件",{"2":{"319":1}}],["更改",{"2":{"320":1}}],["更新",{"2":{"320":1}}],["更新插件商店索引",{"2":{"319":1}}],["更新轻雪",{"2":{"317":1,"318":1}}],["全局停用",{"2":{"320":1}}],["全局启用",{"2":{"319":1,"320":1}}],["搜索",{"2":{"320":1}}],["卸载",{"2":{"320":2}}],["卸载资源包",{"2":{"319":1}}],["卸载插件",{"2":{"319":1}}],["私聊所有人可用",{"2":{"319":2}}],["私聊通常为用户id",{"2":{"189":1}}],["包管理器",{"0":{"319":1},"1":{"320":1}}],["包括子task",{"2":{"296":1}}],["切换图片模式",{"2":{"318":1}}],["状态",{"2":{"318":1}}],["别名",{"2":{"318":1,"320":1,"321":1,"324":1,"326":1}}],["所有人",{"2":{"317":1,"319":1,"321":3}}],["所以在编写lyfunction时也要注意异步的调用",{"2":{"299":1}}],["群号",{"2":{"317":1}}],["群聊",{"2":{"318":1}}],["群聊仅群主",{"2":{"317":1,"319":2}}],["群聊通常为群id",{"2":{"189":1}}],["管理员",{"2":{"317":1,"319":2}}],["停用插件",{"2":{"319":2}}],["停用",{"2":{"318":1,"320":1}}],["停用机器人",{"2":{"317":1}}],["停止后钩子",{"2":{"76":2}}],["停止前钩子",{"2":{"75":2}}],["停止",{"2":{"65":2}}],["停止轻雪",{"2":{"25":2,"28":2,"44":2,"47":2}}],["该功能需要commit",{"2":{"317":1}}],["该模块封装通道实现",{"2":{"311":1}}],["该模块用于存放一些开发工具",{"2":{"154":1,"166":1}}],["该模块用于常用配置文件的加载",{"2":{"144":1}}],["该模块用于轻雪主进程和nonebot子进程之间的通信",{"2":{"79":1,"114":1}}],["推荐私聊使用",{"2":{"317":1}}],["推荐在编写html时同时更改对应js代码",{"2":{"313":1}}],["查询目标地实时天气",{"2":{"323":1}}],["查询实时天气",{"2":{"323":1}}],["查询",{"2":{"318":1,"321":1}}],["查询配置项",{"2":{"317":1}}],["查看用户信息菜单",{"2":{"321":1}}],["查看插件帮助",{"2":{"319":1}}],["查看轻雪文档",{"2":{"317":1}}],["查看统计信息和状态",{"2":{"317":1}}],["查看当前bot",{"2":{"317":1}}],["和风天气的天气key",{"2":{"323":1}}],["和",{"2":{"317":1}}],["和10是不一样的",{"2":{"317":1}}],["和config目录下的所有配置文件",{"2":{"151":2}}],["输入值会被执行以转换为正确的类型",{"2":{"317":1}}],["输出",{"2":{"295":1}}],["输出文件夹",{"2":{"249":2}}],["输出文件",{"2":{"245":2}}],["版本",{"2":{"317":1}}],["❌",{"2":{"317":11}}],["超级用户可用",{"2":{"317":1,"319":2}}],["超级用户",{"2":{"317":10,"319":10}}],["重载",{"2":{"320":1}}],["重载所有资源包",{"2":{"319":1}}],["重载资源",{"2":{"318":1}}],["重载轻雪",{"2":{"317":1}}],["重启轻雪",{"2":{"318":1}}],["重启轻雪即可加载插件",{"2":{"305":1}}],["重启轻雪本体",{"2":{"24":2,"43":2}}],["重启后钩子",{"2":{"78":2}}],["重启前钩子",{"2":{"77":2}}],["重启",{"2":{"65":2}}],["举例",{"2":{"317":1}}],["权限",{"2":{"317":1,"319":2,"321":1}}],["说明",{"2":{"317":1,"319":2,"321":1}}],["~代替",{"2":{"316":1}}],["~可以使用插件",{"2":{"316":1}}],["安装插件",{"2":{"319":1}}],["安装",{"2":{"316":1,"320":1}}],["安装的插件",{"2":{"254":2}}],["命令",{"2":{"317":1,"318":1,"319":2,"320":1,"321":2,"323":1,"324":1,"325":1,"326":1}}],["命令别名",{"0":{"318":1,"320":1,"324":1,"326":1},"2":{"316":1,"321":1}}],["命令文档",{"0":{"296":1},"1":{"297":1}}],["为可选参数",{"2":{"316":1}}],["为必填参数",{"2":{"316":1}}],["为子进程重启时调用",{"2":{"33":2,"52":2}}],["为子进程停止时调用",{"2":{"32":2,"51":2}}],["且通过安全的方式传输到轻雪的服务器",{"2":{"315":1}}],["且通道标识为",{"2":{"309":1}}],["系统信息及python信息",{"2":{"315":1}}],["内存",{"2":{"315":1}}],["内存共享是线程安全的",{"2":{"311":1}}],["内存共享使得代码编写更加简洁",{"2":{"311":1}}],["分钟",{"2":{"325":2}}],["分发",{"2":{"315":1}}],["分工明确",{"2":{"144":1}}],["修改优先级",{"2":{"319":1}}],["修改",{"2":{"315":1}}],["本项目不会收集用户的任何隐私信息",{"2":{"315":1}}],["本项目遵循mit协议",{"2":{"315":1}}],["本模块用于实现rpc",{"2":{"110":1}}],["本模块用于轻雪主进程和子进程之间的通信的事件类",{"2":{"107":1}}],["本模块定义了一个通用的通道类",{"2":{"80":1}}],["同时用户也应该自行选择可用的资源包",{"2":{"314":1}}],["同步接收数据",{"2":{"90":2}}],["同步接收函数",{"2":{"81":1}}],["同步过滤函数",{"2":{"84":1}}],["同步进程生命周期函数",{"2":{"61":1}}],["同步生命周期函数",{"2":{"58":1}}],["第三方资源包开发者需要注意版本兼容性",{"2":{"314":1}}],["对于主动推送的插件不生效",{"2":{"320":1}}],["对于不同资源包的不同文件",{"2":{"314":1}}],["对外启动方法",{"2":{"160":2}}],["└─",{"2":{"314":1}}],["└───",{"2":{"314":1}}],["└─resource",{"2":{"314":2}}],["├─templates",{"2":{"314":1}}],["├─metadata",{"2":{"314":2}}],["正常的路径应该是这样的",{"2":{"314":1}}],["只需要将其解压到根目录resources目录下即可",{"2":{"314":1}}],["zip格式压缩的",{"2":{"314":1}}],["zh",{"0":{"248":1,"249":1},"2":{"2":1,"248":2,"249":1}}],["以上内容仅用于项目的优化",{"2":{"315":1}}],["以避免出现无法预料的问题",{"2":{"313":1}}],["以下我们会编写一个简单的插件",{"2":{"303":1}}],["错位等无法预料的事情发生",{"2":{"313":1}}],["异常",{"2":{"313":1}}],["异步任务结束关键字",{"2":{"299":1}}],["异步等待",{"2":{"296":1}}],["异步包装器",{"2":{"293":2}}],["异步接收数据",{"2":{"91":2}}],["异步接收函数",{"2":{"82":1}}],["异步过滤函数",{"2":{"85":1}}],["异步进程生命周期函数",{"2":{"62":1}}],["异步生命周期函数",{"2":{"59":1}}],["请阅读插件主页的说明",{"2":{"320":1}}],["请确保您所编写的html代码能被bot解析",{"2":{"313":1}}],["请注意",{"2":{"313":1}}],["请不要将需要动态加载的内容写入配置文件",{"2":{"144":1}}],["欢迎各位投稿资源包到轻雪资源商店",{"2":{"313":1}}],["部分异常信息",{"2":{"315":1}}],["部分内容制作需要一点点前端基础",{"2":{"313":1}}],["部分来源于",{"2":{"288":1}}],["讲起打包成一个新的资源包",{"2":{"313":1}}],["仅需按照原有路径进行文件替换即可",{"2":{"313":1}}],["那么加载b包后",{"2":{"314":1}}],["那么你能够很快就上手",{"2":{"313":1}}],["那么当前所有函数包的task都会被截停销毁",{"2":{"299":1}}],["如果你接触过minecraft的资源包",{"2":{"313":1}}],["如果你想同时输出多行内容可以尝试换行符",{"2":{"295":1}}],["资源",{"2":{"313":1}}],["资源包管理",{"2":{"319":1}}],["资源包的结构会随着轻雪的更新而有变动",{"2":{"314":1}}],["资源包的制作很简单",{"2":{"313":1}}],["资源包加载遵循一个优先级",{"2":{"314":1}}],["资源包描述",{"2":{"314":1}}],["资源包名称",{"2":{"314":1}}],["资源包通常是以",{"2":{"314":1}}],["资源包",{"2":{"313":1,"320":1}}],["它允许你一定程度上自定义轻雪的外观",{"2":{"313":1}}],["它允许你在轻雪中运行一些自定义的由数据驱动的命令",{"2":{"294":1}}],["字体包",{"2":{"313":1}}],["字符串",{"2":{"248":2}}],["亦可根据用途称为主题包",{"2":{"313":1}}],["线程锁会自动保护共享内存的读写操作",{"2":{"311":1}}],["相比于普通进程通信",{"2":{"311":1}}],["相对路径",{"2":{"245":2}}],["被动模式",{"2":{"309":1}}],["被动通道传递通道",{"2":{"97":1,"103":1}}],["被动通道",{"2":{"94":1}}],["保存后轻雪会自动重载nonebot进程",{"2":{"306":1}}],["保持轻雪运行",{"2":{"23":2,"42":2}}],["我们在src",{"2":{"306":1}}],["然后运行python",{"2":{"306":1}}],["方法2",{"0":{"306":1}}],["方法1",{"0":{"305":1}}],["用户管理liteyuki",{"0":{"321":1}}],["用户协议",{"0":{"315":1}}],["用observer的on",{"2":{"303":1}}],["用于统计bot接收到的消息",{"2":{"325":1}}],["用于开发nonebot时进行文件系统变更重载",{"2":{"303":1}}],["用于结束当前已完成function的执行",{"2":{"299":1}}],["用于回复消息",{"2":{"189":1}}],["用于获取和唯一标识",{"2":{"161":2}}],["用于进程间通信",{"2":{"80":1}}],["排除的文件扩展名",{"2":{"303":1}}],["因此插件主要是一些后台任务或者与聊天机器人的通信",{"2":{"303":1}}],["定义插件元数据",{"2":{"302":1}}],["定义变量",{"2":{"296":1}}],["导入轻雪bot和日志",{"2":{"303":1}}],["导入文件系统事件",{"2":{"303":1}}],["导入文件系统观察器",{"2":{"303":1}}],["导入文件夹下多个插件",{"2":{"255":2}}],["导入逻辑部分",{"2":{"302":1}}],["即后加载的资源包会覆盖前面的资源包",{"2":{"314":1}}],["即可创建一个插件",{"2":{"302":1}}],["即不等待",{"2":{"296":1}}],["首先创建一个文件夹",{"2":{"302":1}}],["创建子进程的同时会初始化一个被动通道和一个主动通道",{"2":{"309":1}}],["创建入口文件",{"2":{"306":1}}],["创建插件",{"0":{"302":1}}],["创建asyncio",{"2":{"160":2}}],["开始",{"0":{"301":1},"1":{"302":1,"303":1,"304":1,"305":1,"306":1}}],["简介",{"0":{"300":1,"311":1,"313":1},"1":{"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"314":1}}],["编写逻辑部分",{"0":{"303":1}}],["编写轻雪函数推荐你使用vs",{"2":{"299":1}}],["编辑时的语法高亮可采取shell格式",{"2":{"295":1}}],["有一个task任务没有完成而await被执行了",{"2":{"299":1}}],["的情况是效率提升的关键",{"2":{"299":1}}],["单线程走到底",{"2":{"299":1}}],["单位s",{"2":{"296":1}}],["避免出现",{"2":{"299":1}}],["由于liteyukibot基于异步运行",{"2":{"299":1}}],["结束关键字",{"0":{"299":1}}],["结束函数关键字",{"2":{"296":1}}],["理论上所有基于onebotv11的api都可调用",{"2":{"298":1}}],["则该文件夹不会被识别为资源包",{"2":{"314":1}}],["则需要删除await",{"2":{"297":1}}],["则传入泛型默认开启",{"2":{"88":2}}],["无需手动创建实例",{"2":{"306":1}}],["无需手动初始化bot",{"2":{"179":2}}],["无限戳",{"2":{"297":1}}],["执行",{"2":{"297":1}}],["疯狂戳好友",{"2":{"297":1}}],["示例",{"0":{"297":1,"312":1}}],["否则会导致渲染失败或渲染结果不理想",{"2":{"313":1}}],["否则task对象会被销毁",{"2":{"296":1}}],["否则默认关闭",{"2":{"88":2}}],["需要在最后调用",{"2":{"296":1}}],["等待所有异步任务结束",{"2":{"296":1}}],["等待接收数据",{"2":{"91":1}}],["使用通用日期简写",{"2":{"325":2}}],["使用此项目代表你已经同意以上协议",{"2":{"315":1}}],["使用开发工具快速运行插件",{"2":{"306":1}}],["使用",{"2":{"297":1}}],["使用新的task执行命令",{"2":{"296":1}}],["使用watchdog监控文件变化并重启bot",{"2":{"167":1}}],["也支持句末注释",{"2":{"295":1}}],["例如npm",{"2":{"316":1}}],["例如nonebot插件中",{"2":{"309":1}}],["例如你在a中定义了templates",{"2":{"314":1}}],["例如html",{"2":{"313":1}}],["例如main",{"2":{"306":1}}],["例如watchdog",{"2":{"302":1,"305":1}}],["例如",{"2":{"295":2,"314":1,"323":1}}],["例如test",{"2":{"295":1,"306":1}}],["每次接收到字符串数据时都会运行",{"2":{"309":1}}],["每3秒发送一次消息",{"2":{"309":1}}],["每隔0",{"2":{"297":1}}],["每行一个命令",{"2":{"295":1}}],["每个配置文件给一个或一类服务提供配置",{"2":{"144":1}}],["函数文件放在资源包的functions目录下",{"2":{"295":1}}],["函数文件",{"0":{"295":1}}],["函数列表",{"2":{"66":2}}],["属于资源包的一部分",{"2":{"294":1}}],["类似于minecraft的mcfunction",{"2":{"294":1}}],["类似于redis",{"2":{"121":1}}],["是可以相对引用的",{"2":{"314":1}}],["是轻雪的一个功能",{"2":{"294":1}}],["是否为协程可调用对象",{"2":{"289":2}}],["是否忽略警告",{"2":{"255":2}}],["是否忽略键不存在的错误",{"2":{"128":2}}],["是否包含顶层文件夹",{"2":{"249":2}}],["是否阻断后续优先级更低的匹配器",{"2":{"194":2}}],["是否递归监听子目录",{"2":{"177":2}}],["是否开启类型检查",{"2":{"88":2}}],["路径a",{"2":{"292":2}}],["转换路径为模块名",{"2":{"292":2}}],["可用",{"2":{"317":1}}],["可用参数",{"2":{"317":1}}],["可以在配置文件中把auto",{"2":{"315":1}}],["可以在a的index",{"2":{"314":1}}],["可以在此基础上进行修改",{"2":{"313":1}}],["可以很高程度地扩展轻雪的功能",{"2":{"300":1}}],["可以是本地插件或是通过",{"2":{"254":2}}],["可递归",{"2":{"296":1}}],["可调用对象",{"2":{"289":2}}],["判断是否为协程可调用对象",{"2":{"289":2}}],["并且应该在metadata",{"2":{"314":1}}],["并且不用修改源代码",{"2":{"313":1}}],["并在其中写入一些代码",{"2":{"306":1}}],["并在其中写入以下代码",{"2":{"306":1}}],["并在其中创建一个",{"2":{"302":1}}],["并遵循其许可进行修改",{"2":{"288":1}}],["并发运行异步函数",{"2":{"66":2}}],["一个",{"2":{"302":1}}],["一个键不要多次出现",{"2":{"144":1}}],["一些常用的工具类",{"2":{"288":1}}],["应在初始化时调用",{"2":{"283":2,"287":2}}],["根据不同类型插件设置颜色",{"2":{"256":2}}],["加载",{"2":{"320":1}}],["加载资源包",{"0":{"314":1},"2":{"319":1}}],["加载插件",{"0":{"304":1},"1":{"305":1,"306":1}}],["加载插件加载器",{"2":{"21":1,"40":1}}],["加载单个插件",{"2":{"254":2}}],["插件停用只能阻断传入响应",{"2":{"320":1}}],["插件管理",{"2":{"319":1,"320":1}}],["插件",{"0":{"319":1},"1":{"320":1}}],["插件信息",{"2":{"315":1}}],["插件描述",{"2":{"302":1}}],["插件版本",{"2":{"302":1}}],["插件类型",{"2":{"256":2,"302":1}}],["插件名称",{"2":{"254":2,"256":2,"302":1}}],["插件字典",{"2":{"252":2,"281":2}}],["插件路径",{"2":{"179":2}}],["去头路径",{"2":{"250":1}}],["忽略的路径",{"2":{"249":2}}],["忽略私有函数和类",{"2":{"247":2}}],["模块名",{"2":{"292":2}}],["模块文件夹",{"2":{"249":2}}],["模块信息",{"2":{"247":2,"248":2}}],["源代码",{"2":{"248":1,"312":1}}],["+",{"2":{"248":2,"292":1}}],["+=",{"2":{"24":1,"43":1,"92":1,"248":15}}],["语言包等",{"2":{"313":1}}],["语言",{"2":{"248":2,"249":2}}],["自定义选项title",{"2":{"248":2}}],["自动调用",{"2":{"26":2,"45":2}}],["你在a包中定义了一个index",{"2":{"314":1}}],["你自己制作的资源包也应该遵循这个规则",{"2":{"314":1}}],["你也可以自己制作资源包",{"2":{"313":1}}],["你可以选择开启auto",{"2":{"315":1}}],["你可以自由使用",{"2":{"315":1}}],["你可以自定义一些信息",{"2":{"314":1}}],["你可以在多个线程中读写共享内存",{"2":{"311":1}}],["你可以通过storage模块实现内存共享通信",{"2":{"311":1}}],["你可在此自定义生成的markdown格式",{"2":{"248":2}}],["你的插件代码",{"2":{"302":1}}],["你应该使用其他储存方式",{"2":{"144":1}}],["生成文档",{"2":{"249":2}}],["生成模块的markdown",{"2":{"248":2}}],["生命周期函数",{"2":{"29":4,"30":4,"31":4,"32":4,"33":4,"34":4,"48":4,"49":4,"50":4,"51":4,"52":4,"53":4,"60":1,"67":4,"68":4,"70":4,"72":4}}],["生命周期管理",{"2":{"21":1,"40":1}}],["文件内容为一系列的命令",{"2":{"295":1}}],["文件名以",{"2":{"295":1}}],["文件夹路径",{"2":{"255":2}}],["文件路径",{"2":{"247":2}}],["文件数据",{"2":{"245":2}}],["目标路径",{"2":{"244":2}}],["基础插件",{"0":{"316":1},"1":{"317":1,"318":1,"319":1,"320":1,"321":1}}],["基础路径",{"2":{"244":2}}],["基于socket的通道",{"2":{"115":1}}],["基于ipc",{"2":{"110":1}}],["x26",{"2":{"201":1,"248":4}}],["x3c",{"2":{"24":1,"43":1,"186":5,"199":1,"248":8,"254":2,"256":4,"296":6,"323":2,"325":2}}],["添加配置项",{"2":{"317":1}}],["添加sleep",{"2":{"297":1}}],["添加处理函数",{"2":{"195":2}}],["添加进程",{"2":{"161":2}}],["优先级",{"2":{"194":2}}],["规则函数签名",{"2":{"203":1}}],["规则",{"2":{"194":2}}],["匹配器",{"2":{"194":2}}],["回复消息",{"2":{"190":2}}],["附加数据",{"2":{"189":1}}],["原始消息",{"2":{"189":1}}],["消息类型",{"2":{"189":1}}],["消息段数组",{"2":{"189":1}}],["消息",{"2":{"189":1}}],["机器人id",{"2":{"189":1}}],["下午12",{"2":{"284":1}}],["下午11",{"2":{"253":1,"257":1}}],["下午10",{"2":{"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"282":1,"286":1}}],["下午8",{"2":{"57":1}}],["⭕",{"2":{"186":1}}],["⚠️",{"2":{"186":1}}],["✅",{"2":{"186":1}}],["ℹ️信息",{"2":{"309":4}}],["ℹ️",{"2":{"186":1}}],["🐛",{"2":{"186":1}}],["在群聊启用",{"2":{"317":1}}],["在普通图片和markdown大图之间切换",{"2":{"317":1}}],["在b中定义了templates",{"2":{"314":1}}],["在任意进程中均可使用",{"2":{"312":1}}],["在子进程中",{"2":{"309":1}}],["在轻雪插件中",{"2":{"309":1}}],["在配置文件中的liteyuki",{"2":{"305":1}}],["在设备上执行命令",{"2":{"296":1}}],["在发信器输出",{"2":{"295":1}}],["在新线程中运行协程",{"2":{"291":2}}],["在语言加载完成后执行",{"2":{"186":2}}],["在主进程中运行",{"2":{"133":2}}],["参考`liteyuki",{"2":{"179":1}}],["参考liteyuki",{"2":{"179":1}}],["参数列表",{"2":{"317":2}}],["参数为调用set",{"2":{"309":1}}],["参数",{"2":{"26":2,"45":2,"254":1,"255":1,"316":1,"325":1}}],["运行环境的设备信息",{"2":{"315":1}}],["运行在主进程中",{"2":{"300":1}}],["运行协程",{"2":{"290":2}}],["运行处理函数",{"2":{"196":2}}],["运行插件",{"2":{"179":2}}],["运行订阅者接收函数",{"2":{"132":2}}],["上午12",{"2":{"258":1}}],["上午11",{"2":{"155":1}}],["上午6",{"2":{"212":1}}],["上午9",{"2":{"184":1}}],["上午5",{"2":{"178":1}}],["装饰一个函数在接收到数据后执行",{"2":{"177":2}}],["装饰器",{"2":{"92":2,"131":2,"177":2,"195":4}}],["返回true则执行回调函数",{"2":{"177":2}}],["事件过滤器",{"2":{"177":2}}],["事件循环",{"2":{"21":1,"40":1}}],["监听目录们",{"2":{"177":2}}],["防抖函数",{"2":{"170":2}}],["防止获取空指针",{"2":{"139":1}}],["位置1为filesystemevent",{"2":{"168":1,"169":1}}],["启用",{"2":{"318":1,"320":1}}],["启用插件后",{"2":{"306":1}}],["启用该模块需要在配置文件中设置dev",{"2":{"167":1}}],["启动后控制台输出",{"2":{"309":1}}],["启动后钩子",{"2":{"74":2}}],["启动所有进程",{"2":{"160":2}}],["启动发布订阅接收器循环",{"2":{"133":2}}],["启动前钩子",{"2":{"73":2}}],["启动",{"2":{"65":2}}],["此模块用于注册观察者函数",{"2":{"167":1}}],["检查进程是否存活",{"2":{"165":2}}],["终止进程并从进程字典中删除",{"2":{"163":2}}],["项目目录下的配置文件优先",{"2":{"151":2}}],["项目目录下的配置文件优先级高于config目录下的配置文件",{"2":{"144":1}}],["项目目录下的config",{"2":{"151":2}}],["按照读取文件的优先级反向覆盖",{"2":{"150":2}}],["不带key返回配置项列表",{"2":{"317":1}}],["不包含任何隐私信息",{"2":{"315":1}}],["不含隐私部分",{"2":{"315":1}}],["不含插件数据",{"2":{"315":1}}],["不同adapter",{"2":{"298":1}}],["不递归",{"2":{"150":2}}],["不要出现过多的嵌套",{"2":{"144":1}}],["从一个标准的轻雪项目加载配置文件",{"2":{"151":2}}],["从目录下加载配置文件",{"2":{"150":2}}],["从指定文件加载配置项",{"2":{"149":2}}],["默认普通图片",{"2":{"317":1}}],["默认开启",{"2":{"315":1}}],["默认插件加载器",{"2":{"283":2,"287":2}}],["默认执行扁平化选项",{"2":{"149":2,"150":2}}],["默认值",{"2":{"36":2,"37":2,"55":2,"56":2,"127":2}}],["8",{"2":{"146":1,"147":1,"148":1,"178":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"245":1,"247":1,"282":1,"284":1,"285":1,"286":1}}],["但请注意甄别第三方插件的安全性",{"2":{"315":1}}],["但请保证以上三个字段",{"2":{"314":1}}],["但是请保留原作者信息",{"2":{"315":1}}],["但是更加轻量级并且线程安全",{"2":{"121":1}}],["但若出现非单function的情况",{"2":{"299":1}}],["但需单独起篇幅",{"2":{"294":1}}],["但也包含原有的键值对",{"2":{"145":2}}],["扁平化后的配置文件",{"2":{"145":2}}],["扁平化配置文件",{"2":{"145":2}}],["扁平化编写",{"2":{"144":1}}],["注意不要嵌套文件夹",{"2":{"314":1}}],["注意冲突时的优先级",{"2":{"144":1}}],["注册一个函数在nonebot启动后运行",{"2":{"309":1}}],["注册一个函数在轻雪启动后运行",{"2":{"309":1}}],["注册文件系统变化监听器",{"2":{"177":2}}],["注册重启后的函数",{"2":{"34":2,"53":2,"72":2}}],["注册进程重启前的函数",{"2":{"33":2,"52":2,"71":2}}],["注册进程停止前的函数",{"2":{"32":2,"51":2,"69":2}}],["注册停止后的函数",{"2":{"31":2,"50":2,"70":2}}],["注册启动时的函数",{"2":{"67":2,"68":2}}],["注册启动后的函数",{"2":{"30":2,"49":2}}],["注册启动前的函数",{"2":{"29":2,"48":2}}],["尽量不要冲突",{"2":{"144":1}}],["多配置文件编写原则",{"2":{"144":1}}],["引用计数",{"2":{"139":1}}],["共享内存通信",{"0":{"310":1},"1":{"311":1,"312":1}}],["共享内存对象",{"2":{"138":1}}],["共享内存模块",{"2":{"121":1}}],["若不存在则返回空",{"2":{"317":1}}],["若不存在则创建于config",{"2":{"317":1}}],["若存在则返回",{"2":{"317":1}}],["若存在则覆盖",{"2":{"317":1}}],["若存在则会覆盖",{"2":{"317":1}}],["若你不希望提供这些信息",{"2":{"315":1}}],["若没有metadata",{"2":{"314":1}}],["若要戳20s后停止",{"2":{"297":1}}],["若函数中启动了其他task",{"2":{"296":1}}],["若有子进程订阅则推送给子进程",{"2":{"133":2}}],["若为空",{"2":{"88":2}}],["订阅者接收消息时的回调",{"2":{"131":2}}],["频道",{"2":{"130":2,"131":2,"132":2}}],["发布消息",{"2":{"130":2}}],["发送函数为同步函数",{"2":{"89":2}}],["发送数据",{"2":{"89":2,"118":2}}],["删除键值对",{"2":{"128":2}}],["值",{"2":{"126":2,"127":2}}],["键值对",{"2":{"129":2}}],["键",{"2":{"126":2,"127":2,"128":2}}],["设置用户信息或打开属性设置菜单",{"2":{"321":1}}],["设置",{"2":{"318":1,"321":1}}],["设置共享内存",{"2":{"312":1}}],["设置后的插件名称",{"2":{"256":2}}],["设置插件名称颜色",{"2":{"256":2}}],["设置键值对",{"2":{"126":2}}],["设置通道实例",{"2":{"98":2,"99":2}}],["关闭通道",{"2":{"120":2}}],["关键字参数",{"2":{"26":2,"45":2}}],["调用机器人函数",{"2":{"317":1}}],["调用机器人api",{"2":{"317":1}}],["调用重启进程方法",{"2":{"303":1}}],["调用函数",{"2":{"296":1}}],["调用bot",{"2":{"296":1}}],["调用",{"2":{"113":2}}],["通过关键词搜索插件",{"2":{"319":1}}],["通过装饰器注册一个函数在接收到消息时运行",{"2":{"309":1}}],["通常是目录不存在或目录为空",{"2":{"255":2}}],["通常为纯文本的格式",{"2":{"189":1}}],["通常会默认传入chan",{"2":{"161":2}}],["通信",{"2":{"110":1}}],["通道实例",{"2":{"98":2,"99":2,"100":2,"101":2}}],["通道名称",{"2":{"98":2,"100":2}}],["通道传递通道",{"2":{"95":1,"96":1}}],["通道id",{"2":{"88":2,"117":2}}],["主题包中的html渲染使用js来规定数据的渲染位置",{"2":{"313":1}}],["主题商店提供了一些资源包供你选择",{"2":{"313":1}}],["主进程中",{"2":{"309":1}}],["主进程中通过get",{"2":{"309":1}}],["主进程订阅者接收函数",{"2":{"122":1}}],["主进程创建单例",{"2":{"95":1,"96":1}}],["主动通道传递通道",{"2":{"102":1}}],["子进程中获取通道直接导入进程全局单例即可",{"2":{"309":1}}],["子进程中导入单例active",{"2":{"309":1}}],["子进程订阅者接收函数",{"2":{"123":1}}],["子进程初始化时实例化",{"2":{"95":1,"96":1}}],["子进程可用的主动和被动通道",{"2":{"93":1}}],["接收频道",{"2":{"189":1}}],["接收数据",{"2":{"119":2}}],["接收数据并执行函数",{"2":{"92":2}}],["接收到数据",{"2":{"91":1}}],["接收函数",{"2":{"83":1}}],["会自动判断key版本",{"2":{"323":1}}],["会自动识别文件格式",{"2":{"149":2}}],["会触发最大递归深度限制",{"2":{"297":1}}],["会话负载信息",{"2":{"315":1}}],["会话类型",{"2":{"189":1}}],["会话id",{"2":{"189":1}}],["会挂起等待",{"2":{"91":2}}],["会阻塞线程",{"2":{"90":2}}],["数据",{"2":{"89":2,"90":2,"91":2,"118":2,"119":2,"130":2,"132":2}}],["没有异步的必要",{"2":{"89":2}}],["过滤函数",{"2":{"86":1,"92":2}}],["依赖关系",{"2":{"79":1,"114":1}}],["轻雪天气liteyuki",{"0":{"323":1},"1":{"324":1}}],["轻雪文档",{"2":{"318":1}}],["轻雪命令liteyuki",{"0":{"317":1},"1":{"318":1}}],["轻雪会收集以下内容",{"2":{"315":1}}],["轻雪原版资源包请查看liteyukibot",{"2":{"313":1}}],["轻雪框架提供了一个内存共享通信的接口",{"2":{"311":1}}],["轻雪主进程不涉及聊天部分",{"2":{"303":1}}],["轻雪插件是轻雪内置的一部分功能",{"2":{"300":1}}],["轻雪函数",{"0":{"294":1},"1":{"295":1,"296":1,"297":1,"298":1,"299":1},"2":{"294":1}}],["轻雪抽象消息事件",{"2":{"189":2}}],["轻雪生命周期管理",{"2":{"65":2}}],["轻雪实例",{"2":{"35":2,"54":2}}],["进程生命周期函数",{"2":{"69":4,"71":4}}],["进程函数关键字参数",{"2":{"161":2}}],["进程函数参数",{"2":{"161":2}}],["进程函数",{"2":{"63":1,"161":2}}],["进程名",{"2":{"25":2,"44":2,"161":2}}],["|",{"0":{"66":1,"179":1,"189":1,"190":1,"254":1},"2":{"60":1,"63":1,"66":3,"83":1,"86":1,"179":1,"189":1,"190":1,"254":1}}],["7",{"2":{"57":1,"155":1,"184":1,"253":1,"257":1,"258":1}}],["兼容键",{"2":{"37":2,"56":2}}],["兼容旧版本",{"2":{"37":2,"56":2}}],["获取用户信息",{"2":{"321":1}}],["获取共享内存",{"2":{"312":1}}],["获取主动通道",{"2":{"309":1}}],["获取被动通道",{"2":{"309":1}}],["获取唯一的轻雪bot实例",{"2":{"303":1}}],["获取已加载的插件",{"2":{"252":2,"281":2}}],["获取函数和类",{"2":{"247":2}}],["获取相对路径",{"2":{"244":2}}],["获取所有键值对",{"2":{"129":2}}],["获取键值对",{"2":{"127":2}}],["获取通道实例们",{"2":{"101":2}}],["获取通道实例",{"2":{"100":2}}],["获取配置",{"2":{"36":2,"37":2,"55":2,"56":2}}],["获取轻雪实例",{"2":{"35":2,"54":2}}],["未实现",{"2":{"31":2,"34":2,"50":2,"53":2,"76":2,"78":2}}],["延迟重启时间",{"2":{"24":2,"43":2}}],["505468b及以后的lagrange",{"2":{"317":1}}],["59",{"2":{"253":1,"257":1}}],["55",{"2":{"202":1}}],["52",{"2":{"198":1}}],["51",{"2":{"192":1}}],["5",{"2":{"23":1,"42":1,"144":1}}],["外部启动接口",{"2":{"22":2,"41":2}}],["信号处理",{"2":{"21":1,"40":1}}],["初始化通道",{"2":{"88":2,"117":2}}],["初始化日志",{"2":{"27":2,"46":2}}],["初始化轻雪",{"2":{"26":2,"45":2}}],["初始化轻雪实例",{"2":{"21":2,"40":2}}],["初始化",{"2":{"21":1,"40":1}}],["=none",{"2":{"25":1,"44":1,"88":1,"92":1,"127":1,"189":2}}],["==",{"2":{"24":3,"43":3,"103":1,"104":2,"105":2,"106":1,"133":1,"139":1,"140":2,"141":2,"142":2,"143":1,"185":1,"247":4,"248":2,"292":1}}],["=",{"0":{"24":1,"25":1,"36":1,"37":1,"43":1,"44":1,"55":1,"56":1,"88":1,"92":1,"127":1,"128":1,"136":1,"137":1,"149":1,"150":1,"151":1,"161":2,"177":2,"189":2,"200":3,"201":3,"214":1,"215":1,"216":1,"217":1,"218":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"243":1,"247":1,"248":2,"249":3,"255":1,"260":1,"261":1,"262":1,"263":1,"264":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"275":1,"276":1,"277":1,"278":1,"279":1},"2":{"21":7,"24":6,"25":2,"40":7,"43":6,"44":2,"65":7,"66":1,"88":10,"89":1,"90":1,"91":2,"92":1,"98":1,"100":1,"101":1,"104":1,"105":1,"106":1,"109":2,"112":1,"117":4,"125":6,"126":2,"127":2,"128":1,"129":1,"131":2,"133":1,"135":1,"140":3,"141":2,"142":1,"143":1,"145":2,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":5,"159":3,"161":5,"163":1,"170":3,"177":2,"179":4,"186":1,"189":10,"190":1,"194":5,"200":1,"205":1,"246":1,"247":17,"248":16,"249":13,"254":12,"255":6,"256":5,"289":1,"290":2,"292":1,"293":1,"302":1,"303":2,"309":5,"312":1}}],["常规操作",{"2":{"21":1,"40":1}}],[">=",{"2":{"194":1}}],[">",{"2":{"21":1,"29":1,"33":1,"35":1,"36":1,"37":1,"40":1,"48":1,"52":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"90":1,"91":1,"92":3,"100":1,"101":1,"112":1,"113":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":2,"145":2,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"165":1,"170":1,"177":2,"185":1,"195":2,"196":1,"200":1,"201":1,"206":2,"207":2,"208":1,"209":1,"210":1,"244":1,"247":1,"248":3,"249":1,"252":1,"254":1,"255":1,"256":3,"281":1,"289":1,"292":2,"293":1,"323":2}}],["配置项",{"2":{"323":1}}],["配置项目",{"2":{"145":2}}],["配置了命令别名的命令可以使用别名代替原命令",{"2":{"316":1}}],["配置文件尽量扁平化",{"2":{"144":1}}],["配置值",{"2":{"36":2,"37":2,"55":2,"56":2}}],["配置键",{"2":{"36":2,"37":2,"55":2,"56":2}}],["配置",{"2":{"21":3,"40":3,"318":1}}],["31",{"2":{"284":1}}],["3a",{"2":{"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"92":1,"98":1,"99":2,"100":1,"101":2}}],["3",{"2":{"18":1,"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"92":1,"98":1,"99":2,"100":1,"101":2,"144":1,"183":1,"255":1,"309":1}}],["300~500mb",{"2":{"15":1}}],["6",{"2":{"18":1,"183":1}}],["测试版本号",{"2":{"18":1,"183":1}}],["$",{"2":{"13":3}}],["kill",{"2":{"163":1}}],["k",{"2":{"145":2,"248":2}}],["keyword",{"2":{"201":2}}],["keywords为城市名",{"2":{"323":2}}],["keywords",{"0":{"201":2},"2":{"201":5,"319":1,"323":2}}],["keyerror",{"2":{"128":1}}],["keyvaluestore",{"0":{"124":1},"1":{"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1},"2":{"135":1,"138":1}}],["keys",{"0":{"37":1,"56":1},"2":{"37":4,"56":4}}],["key",{"0":{"36":1,"37":1,"55":1,"56":1,"126":1,"127":1,"128":2},"2":{"36":4,"37":11,"55":4,"56":11,"126":7,"127":7,"128":13,"140":3,"141":3,"142":3,"145":2,"312":2,"317":4,"321":2,"323":1}}],["keyboardinterrupt",{"2":{"22":1,"23":1,"41":1,"42":1}}],["keep",{"0":{"23":1,"42":1},"2":{"23":1,"42":1}}],["kwargs=none",{"2":{"161":1}}],["kwargs",{"0":{"21":1,"26":1,"40":1,"45":1,"66":1,"113":1,"161":1},"2":{"21":4,"26":3,"40":4,"45":3,"66":3,"113":2,"161":5,"170":2,"293":2,"317":2}}],["kritor",{"2":{"8":1}}],["know",{"2":{"6":2}}],["qq群号",{"2":{"325":1}}],["qq",{"0":{"8":1},"2":{"7":1,"8":3}}],["question",{"2":{"6":1}}],["questions",{"0":{"6":1,"7":1,"16":1}}],["quot",{"2":{"3":2,"299":2,"317":2,"323":4}}],["js",{"2":{"8":1}}],["json",{"0":{"147":1},"2":{"0":2,"147":5,"149":2,"151":1}}],["join",{"0":{"162":1},"2":{"7":1,"24":1,"43":1,"150":1,"162":2,"163":1,"246":1,"248":4,"249":1,"255":2,"292":2}}],["g",{"2":{"256":1,"326":1}}],["group",{"2":{"189":2,"317":9,"318":1,"319":2,"325":3,"326":1}}],["group775840726",{"2":{"7":1}}],["green>",{"2":{"186":1}}],["gather",{"2":{"66":1,"290":1}}],["getattr",{"2":{"289":1}}],["get",{"0":{"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"100":1,"101":1,"105":1,"106":1,"127":1,"129":1,"135":1,"140":1,"143":1,"185":1,"244":1,"246":1,"247":1,"252":1,"281":1},"2":{"25":2,"35":2,"36":3,"37":5,"44":2,"54":2,"55":3,"56":5,"88":2,"89":1,"91":1,"100":2,"101":2,"104":1,"105":4,"106":3,"126":1,"127":4,"128":1,"129":2,"135":1,"138":1,"139":1,"140":3,"142":1,"143":3,"160":1,"179":1,"185":1,"186":2,"244":1,"246":1,"247":5,"249":3,"250":1,"252":1,"254":3,"255":1,"281":1,"283":2,"287":2,"290":1,"303":2,"309":8,"312":1,"317":3,"318":1,"321":2}}],["generic",{"0":{"87":1},"1":{"88":1,"89":1,"90":1,"91":1,"92":1},"2":{"88":2,"89":1,"98":1,"99":1,"100":1,"101":1}}],["generate",{"0":{"248":1,"249":1},"2":{"0":1,"248":1,"249":3}}],["gensokyo",{"2":{"8":1}}],["globalkeyvaluestore",{"0":{"134":1},"1":{"135":1,"136":1,"137":1},"2":{"138":1}}],["global",{"2":{"21":1,"40":1,"92":1,"319":2,"320":2}}],["gt",{"0":{"21":1,"29":1,"33":1,"35":1,"36":1,"37":1,"40":1,"48":1,"52":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"90":1,"91":1,"92":1,"100":1,"101":1,"112":1,"113":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"165":1,"177":1,"185":1,"195":1,"196":1,"200":1,"201":1,"206":1,"207":1,"208":1,"209":1,"210":1,"244":1,"247":1,"248":1,"252":1,"254":1,"255":1,"256":1,"281":1,"289":1,"292":1,"293":1},"2":{"79":3,"114":3,"145":1,"194":1,"292":1,"316":1,"317":7,"319":10,"321":2}}],["go",{"2":{"8":2,"308":1}}],["github",{"2":{"7":1,"12":1,"13":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":1,"89":1,"90":1,"91":1,"92":1,"98":1,"99":1,"100":1,"101":1,"104":1,"105":1,"106":1,"109":1,"112":1,"113":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"135":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"179":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"252":1,"254":1,"255":1,"256":1,"274":1,"281":1,"283":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1}}],["git",{"2":{"6":1,"12":2,"13":1,"15":2}}],["`pathlib",{"2":{"254":1}}],["`path",{"2":{"254":1}}],["`pip`",{"2":{"254":1}}],["`process",{"2":{"32":2,"33":2,"51":2,"52":2,"66":1,"69":2,"71":2}}],["`dict`",{"2":{"99":1,"101":1}}],["`channel`",{"2":{"98":1,"99":1,"100":1,"101":1}}],["`filter",{"2":{"92":1}}],["`async",{"2":{"66":1}}],["`any`",{"2":{"36":2,"37":2,"55":2,"56":2}}],["`sequence`",{"2":{"66":1}}],["`str`",{"2":{"25":1,"36":1,"37":2,"44":1,"55":1,"56":2,"98":1,"99":1,"100":1,"101":1}}],["`tuple`",{"2":{"37":1,"56":1}}],["`liteyukibot`",{"2":{"35":1,"54":1}}],["`lifespan",{"2":{"29":2,"30":2,"31":2,"34":2,"48":2,"49":2,"50":2,"53":2,"67":2,"68":2,"70":2,"72":2}}],["`optional`",{"2":{"25":1,"44":1,"92":1}}],["`int`",{"2":{"24":1,"43":1}}],["`",{"2":{"3":1,"248":14,"254":1}}],["validate",{"2":{"89":1}}],["value=ast",{"2":{"247":1}}],["values",{"2":{"160":1}}],["valueerror",{"2":{"88":2,"98":1}}],["value2",{"2":{"2":1}}],["value1",{"2":{"2":1}}],["value",{"0":{"126":1,"230":1},"2":{"2":1,"3":3,"126":6,"141":3,"145":3,"247":6,"248":3,"312":2,"317":2,"321":1}}],["var=value",{"2":{"296":1}}],["var2=value2",{"2":{"296":1}}],["var1=value1>",{"2":{"296":1}}],["var",{"0":{"18":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"93":1,"94":1,"95":1,"96":1,"97":1,"102":1,"103":1,"122":1,"123":1,"138":1,"139":1,"168":1,"169":1,"183":1,"203":1,"250":1},"2":{"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"92":1,"248":2}}],["version=",{"2":{"302":1}}],["version",{"0":{"18":1,"183":1},"2":{"15":1,"314":1}}],["venv",{"2":{"12":4}}],["v",{"2":{"13":2,"145":2,"248":2}}],["view",{"2":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":1,"89":1,"90":1,"91":1,"92":1,"98":1,"99":1,"100":1,"101":1,"104":1,"105":1,"106":1,"109":1,"112":1,"113":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"135":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"179":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"252":1,"254":1,"255":1,"256":1,"274":1,"281":1,"283":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1}}],["virtual",{"2":{"6":1,"12":3}}],["visit",{"2":{"3":1}}],["v11协议api",{"2":{"317":2}}],["v11",{"2":{"3":1,"298":1}}],["2s戳两次",{"2":{"297":1}}],["22",{"2":{"284":1}}],["27",{"2":{"155":1,"184":1}}],["24",{"2":{"57":1,"258":1}}],["23",{"2":{"57":1,"212":1,"253":1,"257":1}}],["20代替空格",{"2":{"317":1}}],["20和end",{"2":{"297":1}}],["2024",{"2":{"57":2,"155":2,"178":2,"184":2,"187":2,"191":2,"192":2,"197":2,"198":2,"202":2,"211":2,"212":2,"253":2,"257":2,"258":2,"282":2,"284":2,"286":2}}],["2020",{"2":{"57":1,"155":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["20216",{"2":{"1":1,"3":1,"13":4}}],["20",{"2":{"15":1}}],["2019+",{"2":{"15":1}}],["2",{"2":{"2":1,"144":1,"297":1,"314":1}}],["object",{"2":{"308":1}}],["observer",{"0":{"167":1},"1":{"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1},"2":{"177":1,"303":2}}],["occurred",{"2":{"290":1}}],["occupy",{"2":{"15":1}}],["os",{"2":{"149":1,"150":3,"244":1,"245":4,"246":2,"247":1,"249":2,"255":9,"303":2}}],["outlook",{"2":{"57":1,"155":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["output",{"0":{"249":1},"2":{"2":1,"249":6}}],["option",{"2":{"316":1}}],["optional",{"0":{"25":1,"44":1,"88":1,"92":1,"127":2,"189":2,"254":1,"279":1},"2":{"24":2,"25":3,"36":2,"37":2,"43":2,"44":3,"55":2,"56":2,"88":1,"92":5,"125":2,"127":3,"189":2,"254":1}}],["opt",{"2":{"254":3}}],["open",{"2":{"24":1,"43":1,"146":1,"147":1,"148":1,"245":1,"247":1}}],["openshamrock",{"2":{"8":1}}],["order",{"2":{"249":1}}],["org",{"2":{"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"92":1,"98":1,"99":2,"100":1,"101":2}}],["or",{"0":{"206":1},"2":{"4":1,"6":2,"15":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":1,"89":1,"90":1,"91":1,"92":1,"98":1,"99":1,"100":1,"101":1,"104":1,"105":1,"106":1,"109":1,"112":1,"113":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"135":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"179":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"205":1,"206":3,"207":1,"208":1,"209":1,"210":1,"244":1,"245":1,"246":1,"247":5,"248":1,"249":1,"252":1,"254":1,"255":1,"256":1,"274":1,"281":1,"283":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1}}],["of",{"0":{"3":1},"2":{"6":3,"9":1,"13":1,"15":1,"89":1,"98":1,"254":1}}],["other",{"0":{"2":1,"4":1,"7":1,"16":1,"206":1,"207":1},"2":{"2":1,"3":1,"9":1,"15":2,"189":1,"206":2,"207":2,"308":3}}],["one",{"2":{"6":1,"309":1}}],["onebotv11",{"2":{"8":4}}],["onebot",{"0":{"3":1},"2":{"2":2,"3":2,"4":1,"6":2,"8":1,"298":1,"317":1}}],["only",{"2":{"0":1,"6":1,"92":1,"309":1}}],["on",{"0":{"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"81":1,"82":1,"83":1,"92":1,"104":1,"105":1,"106":1,"112":2,"122":1,"123":1,"131":3,"140":1,"141":1,"142":1,"143":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"198":1,"200":1,"201":1},"1":{"199":1,"200":1,"201":1},"2":{"0":1,"3":1,"6":1,"7":1,"8":4,"12":1,"15":3,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":3,"30":3,"31":3,"32":3,"33":3,"34":3,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":3,"49":3,"50":3,"51":3,"52":3,"53":3,"54":1,"55":1,"56":1,"65":1,"66":1,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"83":2,"88":3,"89":1,"90":1,"91":1,"92":5,"98":1,"99":1,"100":1,"101":1,"103":1,"104":4,"105":4,"106":3,"109":1,"112":5,"113":2,"117":1,"118":1,"119":1,"120":1,"122":1,"123":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":12,"132":2,"133":1,"135":1,"139":1,"140":4,"141":4,"142":4,"143":3,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"170":1,"172":3,"173":3,"174":3,"175":3,"176":3,"177":3,"179":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"196":1,"198":1,"199":1,"200":2,"201":5,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"252":1,"254":1,"255":1,"256":1,"274":1,"281":1,"283":1,"284":1,"285":2,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1,"303":1,"309":6}}],["45m",{"2":{"325":2}}],["44",{"2":{"191":1,"197":1}}],["47",{"2":{"187":1,"211":1}}],["41",{"2":{"13":1}}],["40",{"2":{"13":1}}],["4",{"2":{"1":1,"144":1}}],["utils",{"0":{"288":1},"1":{"289":1,"290":1,"291":1,"292":1,"293":1}}],["utf",{"2":{"146":1,"147":1,"148":1,"245":1,"247":1}}],["ubuntu",{"2":{"15":1}}],["unload",{"2":{"319":1,"320":1}}],["until",{"2":{"290":2}}],["unclassified",{"0":{"263":2,"269":1}}],["unparse",{"2":{"247":10}}],["unsupported",{"2":{"149":1}}],["underlying",{"2":{"10":1}}],["uninstall",{"2":{"6":2,"319":1,"320":1}}],["usage",{"0":{"268":1}}],["using",{"2":{"6":2,"13":1}}],["user",{"0":{"189":1,"321":1},"2":{"189":3,"190":2,"210":1,"297":3}}],["used",{"2":{"92":1,"309":1}}],["use",{"0":{"14":1},"2":{"1":1,"3":2,"4":2,"6":6,"8":1,"12":4,"13":1,"14":1,"15":2,"37":1,"56":1,"254":1}}],["updates",{"2":{"1":1}}],["update",{"2":{"1":2,"2":2,"6":1,"15":2,"149":3,"150":1,"151":1,"317":1,"318":1,"319":1,"320":1}}],["flat",{"0":{"145":1},"2":{"145":2,"146":1,"147":1,"148":1}}],["flag",{"2":{"65":1}}],["f",{"2":{"24":1,"25":2,"37":1,"43":1,"44":2,"56":1,"88":4,"89":1,"98":2,"145":1,"146":1,"147":1,"148":1,"149":2,"150":1,"163":2,"165":1,"245":2,"248":19,"249":1,"254":5,"255":9,"256":1,"290":1,"303":1,"309":2}}],["friend",{"2":{"297":2}}],["front",{"0":{"248":1},"2":{"248":6,"249":3}}],["from",{"0":{"146":1,"147":1,"148":1,"149":1,"150":1},"2":{"90":1,"146":4,"147":4,"148":4,"149":4,"150":2,"151":2,"302":1,"303":3,"308":1,"309":4}}],["framework",{"2":{"10":1,"308":1}}],["frequently",{"0":{"6":1}}],["future",{"2":{"290":1}}],["func=none",{"2":{"177":1}}],["func=lambda",{"2":{"103":1,"104":2,"105":2,"106":1,"309":1}}],["funcs",{"0":{"66":2,"122":1,"123":1,"132":1},"2":{"65":6,"66":5,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":2,"74":2,"75":2,"76":2,"77":2,"78":2,"92":1,"131":6,"132":2,"133":1}}],["func`",{"2":{"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"92":1}}],["func",{"0":{"29":3,"30":2,"31":2,"32":2,"33":3,"34":2,"48":3,"49":2,"50":2,"51":2,"52":3,"53":2,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"66":2,"67":3,"68":3,"69":3,"70":3,"71":3,"72":3,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"92":2,"112":1,"131":2,"161":1,"168":1,"169":1,"177":3,"293":1},"2":{"29":10,"30":9,"31":9,"32":9,"33":10,"34":9,"48":10,"49":9,"50":9,"51":9,"52":10,"53":9,"60":2,"63":2,"65":6,"66":10,"67":11,"68":11,"69":11,"70":11,"71":11,"72":11,"83":2,"86":2,"88":2,"92":22,"112":1,"122":1,"123":1,"131":8,"132":2,"161":1,"170":2,"177":7,"247":2,"248":9,"289":2,"293":5,"296":1}}],["function实现语法高亮",{"2":{"299":1}}],["functiondef",{"2":{"247":3}}],["functioninfo",{"0":{"219":1,"235":1,"240":1},"1":{"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1},"2":{"247":2}}],["functions=",{"2":{"247":1}}],["functions",{"0":{"240":1},"2":{"24":1,"36":2,"37":2,"43":1,"55":2,"56":2,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"247":1,"248":1}}],["function",{"0":{"214":2},"2":{"6":2,"15":2,"247":3,"294":1,"296":1,"297":2,"309":1,"317":3}}],["full",{"2":{"6":1,"309":1}}],["failed",{"2":{"6":2,"254":1}}],["faq",{"0":{"5":1},"1":{"6":1,"7":1,"8":1,"9":1,"10":1}}],["false时例如docs",{"2":{"249":2}}],["false",{"0":{"149":1,"150":1,"151":1,"200":1,"201":1,"249":1},"2":{"2":4,"88":2,"117":1,"125":2,"289":1}}],["folder",{"0":{"246":1,"249":1},"2":{"246":2,"249":5,"250":1}}],["following",{"2":{"2":1}}],["found",{"2":{"89":1,"98":1,"149":1,"150":1,"163":1,"165":1}}],["font",{"2":{"10":1}}],["fonts",{"2":{"1":1}}],["format=get",{"2":{"186":1}}],["formats",{"2":{"150":1}}],["format",{"0":{"185":1,"256":1},"2":{"149":1,"185":3,"186":1,"254":2,"256":1}}],["for",{"0":{"16":1},"2":{"1":1,"3":2,"6":2,"8":1,"25":1,"37":1,"44":1,"56":1,"66":1,"88":1,"99":1,"132":1,"145":2,"149":1,"150":2,"160":3,"162":1,"164":1,"177":1,"196":1,"199":1,"201":1,"245":1,"246":2,"247":12,"248":9,"249":3,"255":2,"283":2,"287":2,"290":2,"302":1,"308":1,"309":1}}],["filter=lambda",{"2":{"303":1}}],["filter",{"0":{"84":1,"85":1,"86":1,"92":2,"169":1,"177":2},"2":{"86":2,"92":10,"103":1,"104":2,"105":2,"106":1,"177":6,"309":1}}],["file",{"0":{"146":1,"147":1,"148":1,"177":1,"245":1,"246":1,"247":1},"2":{"3":1,"6":1,"57":1,"146":5,"147":5,"148":5,"149":12,"150":3,"155":1,"177":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"245":4,"246":7,"247":9,"249":6,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1,"303":3}}],["filesystemeventhandler",{"0":{"171":1},"1":{"172":1,"173":1,"174":1,"175":1,"176":1}}],["filesystemevent",{"2":{"168":1,"169":1,"177":1,"303":2}}],["files",{"0":{"149":2,"245":1},"2":{"0":4,"149":3,"150":1,"151":1,"245":1,"246":2,"249":1}}],["fill",{"2":{"1":1,"3":1}}],["fields",{"2":{"0":1,"3":2}}],["first",{"2":{"0":1,"6":1,"247":2}}],["b包也定义了一个index",{"2":{"314":1}}],["break",{"2":{"199":1}}],["browser",{"2":{"6":1}}],["block",{"0":{"194":1,"200":1,"201":1},"2":{"194":5,"200":2,"201":2}}],["blue>",{"2":{"186":1}}],["b",{"2":{"145":3,"249":4,"292":4,"326":1}}],["body",{"2":{"247":1}}],["bool=false",{"2":{"149":1,"150":1,"151":1,"200":1,"201":1,"249":1}}],["bool=true",{"2":{"128":1,"177":1,"247":1,"255":1}}],["bool",{"0":{"88":1,"128":1,"149":1,"150":1,"151":1,"165":1,"177":1,"194":1,"200":1,"201":1,"208":1,"209":1,"210":1,"226":1,"247":1,"249":1,"255":1,"289":1},"2":{"84":1,"85":1,"88":1,"165":1,"169":1,"194":1,"203":1,"206":1,"207":1,"208":1,"209":1,"210":1,"289":3}}],["bot",{"0":{"19":1,"35":1,"38":1,"54":1,"57":1,"189":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"1":1,"2":1,"6":2,"9":1,"12":1,"15":1,"21":2,"35":4,"36":1,"37":4,"40":2,"54":4,"55":1,"56":4,"179":2,"189":4,"190":2,"295":1,"303":2,"309":4,"317":1,"325":3,"326":1}}],["build",{"2":{"13":2}}],["but",{"2":{"3":1,"6":1,"309":1}}],["bind",{"2":{"324":1}}],["binding",{"2":{"1":1}}],["bin",{"2":{"12":1}}],["bases",{"2":{"247":1}}],["base",{"0":{"244":1},"2":{"244":4,"247":2}}],["basemodel",{"0":{"219":1,"227":1,"232":1,"238":1,"265":1,"273":1},"1":{"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"243":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1}}],["baseexception",{"0":{"181":1}}],["based",{"2":{"8":4}}],["bash",{"2":{"12":1}}],["basically",{"2":{"3":1}}],["basic",{"0":{"1":1}}],["before",{"0":{"29":1,"32":1,"33":1,"48":1,"51":1,"52":1,"67":1,"69":1,"71":1,"73":1,"75":1,"77":1},"2":{"29":2,"32":2,"33":2,"48":2,"51":2,"52":2,"65":3,"67":2,"69":2,"71":2,"73":3,"75":3,"77":3}}],["below",{"2":{"6":1}}],["been",{"2":{"6":1}}],["between",{"2":{"6":1}}],["be",{"2":{"3":1,"6":2,"15":1,"37":1,"56":1,"89":1,"92":1,"98":1,"172":1,"309":1}}],["by",{"2":{"3":1,"4":1,"6":2,"309":1}}],["14s",{"2":{"325":2}}],["1h",{"2":{"325":2}}],["1d",{"2":{"325":2}}],["1145141919810",{"2":{"317":1}}],["11",{"2":{"282":1,"286":1}}],["19",{"2":{"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1}}],["1919810",{"2":{"1":1}}],["18",{"2":{"178":1}}],["12",{"2":{"155":1,"184":1}}],["127",{"2":{"1":1,"3":1}}],["10",{"2":{"18":1,"183":1,"317":1}}],["10+",{"2":{"12":1,"15":1}}],["1gb",{"2":{"15":2}}],["1vcpu",{"2":{"15":1}}],["1",{"2":{"1":1,"2":1,"3":1,"24":2,"25":2,"43":2,"44":2,"92":1,"104":2,"105":2,"106":1,"133":2,"140":3,"141":2,"142":1,"143":1,"144":1,"145":3,"171":1,"172":1,"248":6,"249":1,"254":4,"292":2,"302":1,"314":2}}],["03",{"2":{"309":2}}],["0000",{"2":{"309":3}}],["00",{"2":{"309":18}}],["02",{"2":{"258":1,"282":1,"286":1}}],["04",{"2":{"178":1}}],["04+",{"2":{"15":1}}],["0",{"0":{"24":1,"43":1,"200":1,"201":1},"2":{"1":2,"3":2,"21":1,"23":1,"24":3,"40":1,"42":1,"43":3,"65":1,"103":1,"104":2,"105":2,"106":1,"133":1,"139":2,"140":2,"141":2,"142":2,"143":1,"194":2,"247":1,"248":7,"297":1,"302":2,"314":2}}],["hint",{"2":{"88":1,"247":1,"248":1}}],["html中用",{"2":{"314":1}}],["html文件会被覆盖",{"2":{"314":1}}],["html文件",{"2":{"314":2}}],["html",{"2":{"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"92":1,"98":1,"99":2,"100":1,"101":2,"314":1}}],["https",{"2":{"12":1,"13":1,"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"92":1,"98":1,"99":2,"100":1,"101":2}}],["handlers",{"2":{"194":1,"195":1,"196":1}}],["handler",{"0":{"205":1},"2":{"177":3,"195":5,"196":2,"205":3,"206":4,"207":4,"208":2}}],["handle",{"0":{"195":1},"2":{"6":1,"21":2,"40":2,"195":1,"284":1,"285":1}}],["hash",{"0":{"274":1},"2":{"274":2}}],["has",{"2":{"6":1}}],["have",{"2":{"3":1,"6":3,"7":1,"13":1,"15":1}}],["homepage",{"0":{"271":1}}],["how",{"2":{"6":2}}],["host",{"2":{"1":1}}],["hello",{"2":{"295":5,"317":1}}],["help",{"2":{"6":2,"319":1,"320":1}}],["here",{"2":{"3":2}}],["header",{"2":{"1":1,"6":1}}],["echo",{"2":{"295":3}}],["e",{"2":{"128":2,"254":1,"256":1,"290":2}}],["emsp",{"2":{"248":4}}],["email",{"2":{"57":1,"155":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["empty",{"0":{"200":1,"201":1,"209":1},"2":{"1":1,"209":1,"254":1,"255":1}}],["else",{"2":{"24":1,"25":1,"35":1,"43":1,"44":1,"54":1,"66":1,"88":1,"92":2,"98":1,"100":1,"101":1,"126":1,"127":1,"128":1,"129":1,"131":2,"146":1,"147":1,"148":1,"185":1,"186":5,"199":1,"247":9,"248":10,"249":2,"254":2,"290":1,"292":1}}],["elif",{"2":{"24":2,"43":2,"88":1,"92":1,"149":4,"247":5,"254":2,"255":1}}],["event装饰器监听文件系统事件",{"2":{"303":1}}],["events",{"2":{"303":1}}],["eventhandler",{"0":{"195":2},"2":{"194":1,"195":4}}],["event",{"0":{"107":1,"108":1,"172":1,"173":1,"174":1,"175":1,"176":2,"177":2,"187":1,"196":1,"208":1,"209":1,"210":1,"285":1},"1":{"108":1,"109":2,"188":1,"189":1,"190":1},"2":{"21":4,"23":1,"28":1,"40":4,"42":1,"47":1,"79":1,"114":1,"172":1,"173":2,"174":2,"175":2,"176":3,"177":9,"187":1,"190":2,"196":5,"201":2,"206":3,"207":3,"208":2,"209":1,"210":2,"285":3,"290":2,"303":8}}],["every",{"2":{"1":1}}],["errors=true",{"2":{"249":1}}],["errors",{"2":{"6":1}}],["error",{"0":{"128":1},"2":{"6":1,"128":4,"186":2,"290":1}}],["extra",{"0":{"272":1}}],["extensions",{"2":{"303":2}}],["extend",{"2":{"179":1}}],["external",{"2":{"1":1}}],["exclude",{"2":{"303":2}}],["exc",{"2":{"196":1,"254":1}}],["exception模块包含了liteyuki运行中的所有错误",{"2":{"180":1}}],["exception",{"0":{"180":1},"1":{"181":1},"2":{"196":1,"254":1,"290":2}}],["except",{"2":{"22":1,"23":1,"41":1,"42":1,"128":1,"196":1,"254":1,"290":2}}],["executor",{"2":{"91":1}}],["executable",{"2":{"6":1,"15":1,"24":3,"43":3}}],["exist",{"2":{"255":1}}],["exists",{"2":{"88":2,"98":1,"149":1,"150":1,"245":1,"255":2}}],["exit",{"2":{"21":2,"24":1,"40":2,"43":1}}],["example",{"0":{"3":1,"309":1},"2":{"6":2}}],["end",{"2":{"296":1}}],["endswith",{"2":{"149":3,"150":1,"246":1,"255":1,"303":1}}],["enum",{"0":{"213":1,"259":1},"1":{"214":1,"215":1,"216":1,"217":1,"218":1,"260":1,"261":1,"262":1,"263":1,"264":1}}],["enumerate",{"2":{"199":1}}],["encoding=",{"2":{"146":1,"147":1,"148":1,"245":1,"247":1}}],["encountered",{"2":{"9":1}}],["enforcing",{"2":{"88":1}}],["environment",{"2":{"12":4}}],["environments",{"2":{"3":1,"6":1,"15":1}}],["enter",{"2":{"6":1}}],["ensure",{"2":{"1":1,"290":1}}],["enable",{"2":{"1":1,"317":2,"318":1,"319":2,"320":2}}],["msg",{"2":{"317":1}}],["mcfunction",{"2":{"295":2}}],["mkdir",{"2":{"249":1}}],["mkdoc",{"0":{"212":1},"1":{"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1},"2":{"212":1}}],["md",{"2":{"249":15}}],["m",{"2":{"12":1,"15":1,"199":2,"256":1,"326":1}}],["minimum",{"2":{"15":1}}],["minecraftonebot",{"2":{"9":1}}],["minecraft",{"0":{"9":1},"2":{"9":1}}],["misans",{"2":{"10":1}}],["must",{"2":{"89":1,"98":1,"172":1}}],["much",{"2":{"6":1}}],["multiple",{"2":{"0":1,"15":1}}],["my",{"2":{"6":1}}],["member",{"2":{"317":1}}],["memory",{"0":{"138":1},"2":{"15":1,"125":3,"139":1,"140":3,"141":3,"142":3,"143":2,"160":1,"161":1,"308":1,"312":3}}],["meta",{"2":{"254":4,"302":1}}],["metadata",{"0":{"279":1},"2":{"254":13}}],["method",{"0":{"215":2,"216":1,"217":1},"2":{"247":5,"248":13}}],["methods=",{"2":{"247":1}}],["methods",{"0":{"235":1},"2":{"3":1,"247":1,"248":1}}],["means",{"2":{"6":1}}],["message=",{"2":{"190":1,"317":1}}],["message=message",{"2":{"190":1}}],["messageevent",{"0":{"188":1,"189":1,"196":1,"208":1,"209":1,"210":1,"285":1},"1":{"189":1,"190":1},"2":{"189":1,"190":1,"196":1,"201":1,"203":1,"206":1,"207":1,"208":1,"209":1,"210":1,"285":1}}],["messages",{"2":{"6":2,"308":2}}],["message",{"0":{"187":1,"189":3,"190":1,"191":1,"192":1,"197":1,"198":1,"200":1,"202":1,"211":1},"1":{"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1},"2":{"4":1,"6":1,"189":12,"190":6,"200":1,"201":2,"285":1,"325":1,"326":1}}],["merge",{"2":{"0":1}}],["match",{"2":{"256":1}}],["matcher",{"0":{"192":1,"193":1,"199":3,"200":1,"201":1},"1":{"193":1,"194":2,"195":2,"196":2},"2":{"192":1,"199":9,"200":6,"201":1}}],["matter=none",{"2":{"248":1}}],["matter",{"0":{"248":1},"2":{"248":5,"249":3}}],["markdown",{"0":{"248":1},"2":{"248":3,"249":1}}],["maplemono",{"2":{"10":1}}],["makedirs",{"2":{"245":1}}],["make",{"2":{"6":2}}],["mainprocess",{"2":{"308":1}}],["main",{"0":{"122":1},"2":{"6":1,"12":1,"35":1,"54":1,"88":4,"92":4,"98":1,"100":1,"101":1,"125":1,"126":1,"127":1,"128":1,"129":1,"131":5,"132":1,"133":1,"306":1,"308":1,"309":6}}],["manager",{"0":{"155":1,"257":1},"1":{"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1},"2":{"21":2,"24":1,"25":1,"40":2,"43":1,"44":1,"155":1,"257":1}}],["manage",{"2":{"14":1}}],["management",{"2":{"14":1}}],["many",{"2":{"6":1}}],["manually",{"2":{"2":1,"88":1}}],["may",{"2":{"3":1}}],["moved",{"0":{"175":1},"2":{"175":1}}],["more",{"2":{"2":1,"14":1,"15":1}}],["moduletype",{"0":{"277":1}}],["module=module",{"2":{"254":1}}],["moduleinfo",{"0":{"238":1,"247":1,"248":1},"1":{"239":1,"240":1,"241":1,"242":1,"243":1},"2":{"247":2,"248":1}}],["module",{"0":{"179":1,"239":1,"246":1,"247":1,"248":1,"249":1,"250":1,"254":1,"262":2,"277":1,"278":1,"292":1},"2":{"179":4,"246":2,"247":11,"248":6,"249":26,"250":1,"254":27,"255":9,"256":1,"274":1,"292":1}}],["modified",{"0":{"172":1},"2":{"13":1,"172":2,"173":1,"174":1,"175":1,"176":1,"177":4}}],["modify",{"2":{"0":2}}],["modes",{"2":{"309":1}}],["model",{"0":{"258":1,"275":1},"1":{"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1},"2":{"258":1}}],["mode为true",{"2":{"167":1}}],["mode",{"2":{"2":5,"6":3,"309":5,"317":2,"318":1}}],["most",{"2":{"0":1}}],["lt",{"2":{"316":1,"317":7,"319":10,"321":2}}],["lyf结尾",{"2":{"295":1}}],["lyfunction语法",{"2":{"317":1}}],["lyfunction",{"2":{"295":1}}],["least",{"2":{"15":2}}],["level=0",{"2":{"186":1}}],["level",{"0":{"185":1},"2":{"1":3,"185":2,"186":6}}],["lsposed",{"2":{"8":1}}],["llonebot",{"2":{"8":1}}],["laptop",{"2":{"249":2}}],["lang",{"0":{"248":1,"249":1},"2":{"248":4,"249":3}}],["language",{"2":{"2":2}}],["last",{"2":{"170":4}}],["lambda",{"2":{"139":1,"140":2,"141":2,"142":2,"143":1}}],["lagrange",{"2":{"8":2}}],["locks",{"2":{"128":1}}],["lock",{"0":{"137":2},"2":{"126":3,"127":3,"128":3,"135":1}}],["local",{"2":{"1":1}}],["loop",{"0":{"133":1},"2":{"21":4,"28":1,"40":4,"47":1,"88":1,"91":3,"125":2,"133":2,"160":2,"290":10}}],["log0000",{"2":{"309":1}}],["logger",{"0":{"27":1,"46":1},"2":{"21":1,"22":1,"23":1,"24":1,"26":1,"27":1,"37":1,"40":1,"41":1,"42":1,"43":1,"45":1,"46":1,"56":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":2,"146":1,"147":1,"148":1,"149":2,"150":1,"163":2,"165":1,"186":7,"254":3,"255":3,"290":1,"303":2,"309":3}}],["logo",{"2":{"21":1,"40":1}}],["logic",{"2":{"6":1}}],["login",{"2":{"6":2}}],["logs",{"2":{"2":1}}],["log",{"0":{"184":1,"186":1},"1":{"185":1,"186":1},"2":{"1":4,"6":1,"27":1,"46":1,"184":1,"186":3,"309":1}}],["loaded",{"0":{"252":1,"281":1},"2":{"252":1,"281":1}}],["loader",{"0":{"282":1,"283":1,"286":1,"287":1},"1":{"283":1,"287":1},"2":{"21":1,"40":1,"283":1,"287":1}}],["loading",{"2":{"146":1,"147":1,"148":1}}],["load",{"0":{"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"253":1,"254":1,"255":1},"1":{"254":1,"255":1,"256":1},"2":{"0":1,"2":2,"21":1,"40":1,"146":4,"147":4,"148":4,"149":4,"150":2,"151":3,"179":3,"253":1,"254":3,"255":2,"283":2,"287":2,"319":1,"320":1}}],["like",{"2":{"308":1}}],["life",{"2":{"65":1}}],["lifespan=self",{"2":{"21":1,"40":1}}],["lifespan",{"0":{"29":2,"30":1,"31":1,"32":1,"33":2,"34":1,"48":2,"49":1,"50":1,"51":1,"52":2,"53":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"159":2},"1":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":2,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":2,"74":2,"75":2,"76":2,"77":2,"78":2},"2":{"21":3,"29":9,"30":8,"31":8,"32":10,"33":11,"34":8,"40":3,"48":9,"49":8,"50":8,"51":10,"52":11,"53":8,"57":1,"60":2,"63":2,"65":6,"66":8,"67":6,"68":6,"69":8,"70":6,"71":8,"72":6,"159":4}}],["library",{"2":{"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"92":1,"98":1,"99":2,"100":1,"101":2}}],["liteecho",{"0":{"284":1,"285":1},"1":{"285":1},"2":{"284":2,"285":2,"317":1}}],["liteloader",{"2":{"8":1}}],["liteyukiexception",{"0":{"181":1}}],["liteyukistudio",{"2":{"12":1,"13":1,"57":1,"155":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["liteyuki",{"0":{"17":1,"19":1,"38":1,"57":1,"79":1,"80":1,"107":1,"110":1,"114":1,"115":1,"121":1,"144":1,"152":1,"153":1,"154":1,"155":1,"166":1,"167":1,"178":1,"180":1,"182":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"251":1,"253":1,"257":1,"258":1,"280":1,"282":1,"284":1,"286":1,"288":1,"319":1},"1":{"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"108":1,"109":1,"111":1,"112":1,"113":1,"116":1,"117":1,"118":1,"119":1,"120":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"179":1,"181":1,"183":1,"185":1,"186":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"252":1,"254":1,"255":1,"256":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"281":1,"283":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1,"320":1},"2":{"1":6,"2":4,"3":2,"4":2,"6":6,"12":1,"14":1,"15":1,"21":2,"22":1,"23":1,"35":1,"40":2,"41":1,"42":1,"54":1,"179":2,"254":5,"283":3,"287":3,"294":1,"302":1,"303":4,"306":1,"308":1,"309":12,"312":2,"313":1,"317":4,"318":3}}],["liteyukibot",{"0":{"20":1,"35":1,"39":1,"54":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1},"2":{"0":5,"9":1,"12":2,"13":6,"14":1,"24":1,"35":3,"43":1,"54":3,"179":1,"308":1}}],["linux",{"2":{"8":1,"12":1,"14":1,"15":1,"24":1,"43":1}}],["limited",{"2":{"4":1}}],["listdir",{"2":{"150":1,"255":2}}],["listen",{"2":{"308":1}}],["listening",{"2":{"1":1}}],["listed",{"2":{"6":1}}],["list",{"0":{"189":1,"201":1,"221":1,"235":1,"236":1,"237":1,"240":1,"241":1,"242":1,"246":1},"2":{"1":4,"65":6,"88":2,"122":1,"123":1,"189":1,"194":1,"199":3,"201":1,"246":4,"247":4,"249":3,"317":1,"319":2,"320":1}}],["switch",{"2":{"317":2,"318":1}}],["src",{"2":{"283":1,"287":1,"303":5}}],["schedule",{"2":{"177":1}}],["script",{"0":{"14":1},"2":{"14":1}}],["scripts",{"2":{"12":1}}],["sm",{"2":{"160":2}}],["shinjuku",{"2":{"323":1}}],["shellstatistic",{"2":{"325":1}}],["shellbind",{"2":{"323":1}}],["shellweather",{"2":{"323":1}}],["shellmain",{"2":{"314":1}}],["shellvar",{"2":{"296":1}}],["shellcmd",{"2":{"295":1}}],["shell",{"2":{"295":1,"297":1}}],["shutil",{"2":{"249":1}}],["shutdown",{"0":{"31":1,"32":1,"50":1,"51":1,"69":1,"70":1,"75":1,"76":1},"2":{"31":2,"32":2,"50":2,"51":2,"65":2,"69":2,"70":2,"75":3,"76":3}}],["show",{"2":{"186":6}}],["should",{"2":{"88":1}}],["shared",{"0":{"138":1},"2":{"125":3,"139":1,"140":3,"141":3,"142":3,"143":2,"160":1,"161":1,"308":1,"312":3}}],["sync",{"0":{"58":1,"61":1,"81":1,"84":1},"2":{"60":1,"63":1,"83":1,"86":1,"293":2}}],["sys",{"2":{"24":3,"43":3,"186":1}}],["system",{"0":{"177":1},"2":{"15":2,"24":4,"43":4,"177":1,"303":2}}],["snowykami",{"2":{"57":2,"155":2,"178":2,"184":2,"187":2,"191":2,"192":2,"197":2,"198":2,"202":2,"211":2,"212":2,"253":2,"257":2,"258":2,"282":2,"284":2,"286":2}}],["sleep",{"2":{"23":1,"24":1,"42":1,"43":1,"296":1,"297":1,"309":1}}],["simple",{"2":{"302":1}}],["signature",{"2":{"293":2}}],["signal",{"2":{"21":6,"40":6}}],["sigterm",{"2":{"21":1,"40":1}}],["sigint",{"2":{"21":1,"40":1}}],["sides",{"2":{"3":1,"6":1}}],["side",{"0":{"3":1},"2":{"6":4}}],["style",{"2":{"314":2}}],["stem",{"2":{"292":2}}],["stdout",{"2":{"186":1}}],["stdtypes",{"2":{"25":1,"36":1,"37":3,"44":1,"55":1,"56":3,"98":1,"99":2,"100":1,"101":2}}],["store",{"2":{"125":1,"126":1,"127":1,"128":2,"129":1}}],["storage",{"0":{"121":1},"1":{"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1},"2":{"79":2,"114":2,"312":2}}],["stopping",{"2":{"22":1,"23":1,"41":1,"42":1}}],["stop",{"0":{"28":1,"47":1},"2":{"21":1,"23":2,"28":3,"40":1,"42":2,"47":3}}],["strip",{"2":{"285":2}}],["str=",{"2":{"248":1,"249":1}}],["structure",{"2":{"89":1}}],["str",{"0":{"25":1,"36":1,"37":2,"44":1,"55":1,"56":2,"88":1,"98":1,"99":1,"100":1,"101":1,"104":2,"105":2,"106":2,"109":2,"117":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"140":2,"141":2,"142":2,"143":2,"145":2,"146":2,"147":2,"148":2,"149":2,"150":2,"151":1,"157":2,"161":1,"163":1,"165":1,"177":1,"179":1,"185":2,"189":9,"190":2,"201":1,"220":1,"221":2,"222":1,"223":1,"224":1,"228":1,"229":1,"231":1,"233":1,"234":1,"237":1,"239":1,"243":1,"244":3,"245":2,"246":1,"247":1,"248":2,"249":3,"252":1,"254":1,"255":1,"256":2,"266":1,"267":1,"268":1,"270":1,"271":1,"272":1,"276":1,"278":1,"281":1,"292":1},"2":{"21":1,"25":3,"36":3,"37":5,"40":1,"44":3,"55":3,"56":5,"61":1,"62":1,"88":2,"95":2,"97":2,"98":3,"99":3,"100":3,"101":4,"104":2,"105":2,"106":2,"109":2,"117":1,"122":1,"123":1,"125":5,"126":1,"127":1,"128":1,"129":4,"130":1,"131":1,"132":1,"140":2,"141":2,"142":2,"143":2,"145":2,"146":2,"147":2,"148":2,"149":2,"150":2,"151":1,"157":2,"159":2,"161":1,"163":1,"165":1,"177":1,"179":1,"185":2,"189":11,"190":2,"201":1,"210":1,"244":3,"245":2,"246":1,"247":1,"248":1,"249":4,"252":3,"254":1,"255":1,"256":4,"281":3,"292":3,"309":1}}],["stat",{"2":{"326":1}}],["statistic",{"2":{"326":1}}],["statistics",{"0":{"325":1},"1":{"326":1}}],["static",{"0":{"216":1},"2":{"247":1}}],["staticmethod",{"0":{"216":1},"2":{"65":1,"66":1,"131":1,"132":1,"247":1}}],["status",{"2":{"317":1,"318":1}}],["standard",{"2":{"6":2}}],["startup",{"2":{"309":2}}],["startswith",{"2":{"247":3,"284":1,"285":1}}],["started",{"2":{"6":1}}],["start",{"0":{"29":1,"30":1,"48":1,"49":1,"67":1,"68":1,"73":1,"74":1,"133":1,"160":1},"2":{"1":2,"6":3,"12":1,"24":2,"29":2,"30":2,"43":2,"48":2,"49":2,"65":2,"67":2,"68":2,"73":3,"74":3,"133":2,"160":3,"291":1,"309":1}}],["starting",{"2":{"0":1}}],["s",{"2":{"15":1}}],["split",{"2":{"254":4}}],["space",{"2":{"15":1}}],["specified",{"2":{"254":1}}],["specific",{"2":{"15":1}}],["specify",{"2":{"6":1}}],["sockschannel",{"0":{"116":1},"1":{"117":1,"118":1,"119":1,"120":1}}],["socks",{"0":{"115":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1}}],["software",{"2":{"57":1,"155":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["source",{"0":{"224":1},"2":{"12":1,"15":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":1,"89":1,"90":1,"91":1,"92":1,"98":1,"99":1,"100":1,"101":1,"104":1,"105":1,"106":1,"109":1,"112":1,"113":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"135":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"179":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"244":1,"245":1,"246":1,"247":3,"248":7,"249":1,"252":1,"254":1,"255":1,"256":1,"274":1,"281":1,"283":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1}}],["solution",{"0":{"8":1,"9":1}}],["some",{"2":{"1":1,"6":2}}],["search",{"2":{"319":1,"320":1}}],["service",{"0":{"261":2},"2":{"256":1,"302":1}}],["server",{"2":{"1":1,"3":1,"9":1,"15":1}}],["sep",{"2":{"247":3}}],["session",{"0":{"189":2,"211":1},"2":{"189":8,"190":5,"211":1}}],["sequence",{"0":{"66":1},"2":{"66":3}}],["set",{"0":{"98":1,"99":1,"104":1,"126":1,"141":1,"255":1},"2":{"21":1,"23":1,"28":1,"40":1,"42":1,"47":1,"88":1,"98":2,"99":2,"103":1,"104":3,"126":2,"140":1,"141":3,"255":2,"290":1,"312":1,"317":2,"318":1,"321":2}}],["self",{"0":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":1,"89":1,"90":1,"91":1,"92":1,"109":1,"112":1,"113":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"133":1,"157":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"172":1,"173":1,"174":1,"175":1,"176":1,"189":1,"190":1,"194":1,"195":1,"196":1,"205":1,"206":1,"207":1,"208":1,"274":1},"2":{"21":14,"22":2,"23":3,"24":4,"25":2,"26":2,"27":1,"28":3,"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"40":14,"41":2,"42":3,"43":4,"44":2,"45":2,"46":1,"47":3,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"65":8,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":3,"74":3,"75":3,"76":3,"77":3,"78":3,"88":14,"89":6,"90":3,"91":2,"92":3,"109":3,"112":2,"113":2,"117":5,"118":1,"119":1,"120":1,"125":7,"126":3,"127":3,"128":4,"129":3,"130":2,"131":1,"133":4,"157":6,"159":4,"160":3,"161":2,"162":2,"163":3,"164":3,"165":3,"172":1,"173":2,"174":2,"175":2,"176":2,"189":10,"190":3,"194":5,"195":2,"196":3,"205":2,"206":2,"207":2,"208":3,"247":1,"248":1,"274":2}}],["send",{"0":{"89":1,"118":1},"2":{"6":1,"25":2,"44":2,"88":2,"89":4,"98":1,"100":1,"101":1,"105":1,"106":1,"117":1,"118":1,"126":1,"127":1,"128":1,"129":1,"130":1,"133":1,"140":1,"143":1,"190":1,"308":1,"309":3,"317":1}}],["summary>",{"2":{"248":3}}],["summary>源代码",{"2":{"248":1}}],["su",{"0":{"210":1},"2":{"210":1,"284":1,"285":1}}],["succeeded",{"2":{"254":1}}],["success",{"2":{"163":1,"186":2,"254":2}}],["such",{"2":{"6":1}}],["subscribe",{"2":{"131":1}}],["subscriber",{"0":{"122":1,"123":1,"131":1,"132":1},"2":{"131":7,"132":2,"133":1}}],["sub",{"0":{"123":1},"2":{"35":1,"54":1,"88":2,"92":1,"125":1,"131":4,"133":1}}],["submit",{"2":{"7":1}}],["sure",{"2":{"6":2}}],["supported",{"2":{"4":1,"150":1}}],["supports",{"2":{"0":1,"8":5}}],["superuser",{"2":{"1":1}}],["superusers",{"2":{"0":1,"1":1,"6":1,"210":1}}],["same",{"2":{"3":2}}],["safe",{"2":{"2":2,"6":3,"146":1}}],["num为每页显示数量",{"2":{"319":2}}],["num",{"2":{"319":2}}],["number",{"2":{"13":2}}],["nliteyuki",{"2":{"295":1}}],["n```",{"2":{"248":2}}],["n```python",{"2":{"248":2}}],["n",{"2":{"248":52,"249":2}}],["name>",{"2":{"296":2}}],["name=module",{"2":{"254":3}}],["name=target",{"2":{"247":2}}],["name=class",{"2":{"247":1}}],["name=node",{"2":{"247":2}}],["name=f",{"2":{"161":2}}],["name=",{"2":{"93":1,"94":1,"95":1,"102":1,"103":1,"125":3,"302":1}}],["name",{"0":{"25":1,"44":1,"88":1,"98":1,"100":1,"109":1,"117":1,"161":1,"163":1,"165":1,"220":1,"228":1,"233":1,"250":1,"256":2,"266":1,"276":1,"278":1,"292":1},"2":{"25":7,"44":7,"88":12,"98":8,"99":2,"100":6,"104":3,"105":3,"109":3,"117":5,"160":2,"161":6,"162":1,"163":7,"164":2,"165":6,"247":11,"248":7,"249":2,"254":20,"255":9,"256":7,"274":1,"292":1,"309":2,"317":4,"319":8}}],["ntqq",{"2":{"8":1}}],["npm",{"2":{"6":1,"319":7,"320":1}}],["new",{"2":{"21":1,"40":1,"145":3,"290":1}}],["necessary",{"2":{"6":1}}],["needs",{"2":{"309":1}}],["need",{"2":{"0":1,"2":1,"6":1}}],["nonlocal",{"2":{"170":1}}],["nonedog",{"2":{"302":1}}],["none",{"0":{"21":1,"25":1,"36":1,"37":1,"40":1,"44":1,"55":1,"56":1,"65":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":1,"92":1,"112":1,"126":1,"127":1,"128":1,"130":1,"136":1,"161":1,"177":1,"189":2,"196":1,"230":1,"248":1,"249":1,"279":1},"2":{"21":1,"25":3,"35":1,"36":2,"37":2,"40":1,"44":3,"54":1,"55":2,"56":2,"65":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":3,"89":1,"91":1,"92":3,"112":1,"117":2,"126":1,"128":1,"130":1,"135":2,"146":1,"147":1,"148":1,"161":1,"168":1,"170":1,"177":1,"189":1,"196":1,"203":2,"208":1,"247":3,"249":1,"254":4,"255":1,"289":1}}],["nonebot2",{"2":{"4":2,"10":1}}],["nonebot",{"0":{"3":1},"2":{"1":2,"2":2,"3":1,"10":1,"288":1,"302":1,"303":4,"306":1,"309":3}}],["nohup",{"2":{"24":2,"43":2,"296":1,"297":1}}],["nodes",{"2":{"247":2}}],["node",{"2":{"8":1,"15":1,"247":42}}],["notimplementederror",{"2":{"172":1}}],["not",{"2":{"1":1,"2":1,"4":1,"6":4,"15":2,"23":1,"25":1,"35":1,"42":1,"44":1,"54":1,"88":1,"89":2,"92":4,"98":1,"128":1,"131":3,"133":1,"146":1,"147":1,"148":1,"149":3,"150":3,"163":2,"165":2,"177":2,"196":1,"245":1,"247":8,"254":1,"255":8,"303":2}}],["normal>",{"2":{"186":1}}],["normal",{"0":{"12":1,"247":1},"2":{"1":1,"247":1,"249":1}}],["no",{"0":{"149":1,"150":1,"151":1,"220":1,"221":1,"222":1,"223":1,"225":1,"226":1,"228":1,"229":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"243":1,"250":1,"266":1,"276":1,"277":1,"278":1},"2":{"1":1,"96":1,"97":1,"149":3,"150":3,"151":3,"247":3,"248":1,"249":2}}],["nickname",{"2":{"0":1,"1":2,"6":3}}],["ignored",{"0":{"249":1},"2":{"249":8}}],["ignore",{"0":{"128":1,"247":1,"255":1},"2":{"128":4,"247":6,"249":1,"255":6}}],["id仅超级用户可用",{"2":{"317":1}}],["id=user",{"2":{"297":2}}],["id=1234567",{"2":{"317":2}}],["id=123456",{"2":{"297":1}}],["id=self",{"2":{"190":3}}],["id",{"0":{"189":3},"2":{"92":5,"189":11,"190":3,"210":1,"247":6,"297":2,"317":2,"319":1,"325":4}}],["ids",{"2":{"88":2,"92":2}}],["impossible",{"2":{"308":1}}],["import",{"2":{"139":1,"254":1,"302":2,"303":3,"306":1,"309":5,"312":1}}],["implemented",{"2":{"172":1,"309":1}}],["implement",{"2":{"6":1,"309":1}}],["implementation",{"0":{"3":1},"2":{"3":1,"6":4,"8":1}}],["image",{"2":{"13":1,"317":2,"318":1}}],["i",{"2":{"6":2,"199":2,"309":6}}],["icon=f",{"2":{"186":5}}],["icon",{"2":{"1":2,"186":7,"248":2,"249":2}}],["isclass",{"2":{"289":1}}],["iscoroutinefunction",{"2":{"289":2}}],["isroutine",{"2":{"289":1}}],["isfile",{"2":{"255":1,"303":1}}],["isdir",{"2":{"255":2}}],["isinstance",{"2":{"98":1,"145":1,"247":13,"254":1,"309":1}}],["issues",{"2":{"9":2}}],["issue",{"2":{"7":1}}],["is",{"0":{"165":1,"210":1,"226":1,"289":1},"2":{"1":3,"2":1,"3":3,"4":1,"6":2,"12":1,"15":1,"21":1,"22":1,"23":2,"25":1,"35":2,"40":1,"41":1,"42":2,"44":1,"54":2,"66":1,"88":6,"89":1,"92":5,"98":1,"100":1,"101":1,"125":2,"126":1,"127":1,"128":1,"129":1,"131":3,"133":1,"135":2,"146":1,"147":1,"148":1,"161":1,"163":1,"165":2,"177":1,"189":1,"208":1,"210":1,"247":2,"248":2,"249":1,"254":1,"255":2,"289":1,"290":1,"308":2,"309":3}}],["if",{"2":{"1":2,"2":4,"3":1,"6":2,"7":1,"13":2,"15":2,"24":2,"25":1,"35":2,"37":2,"43":2,"44":1,"54":2,"56":2,"66":1,"88":5,"89":3,"90":1,"92":6,"98":3,"100":1,"101":1,"126":1,"127":1,"128":3,"129":1,"131":5,"133":2,"135":2,"145":1,"146":1,"147":1,"148":1,"149":2,"150":3,"161":1,"163":2,"165":1,"170":1,"177":1,"185":1,"186":5,"189":1,"190":1,"196":1,"199":1,"208":1,"245":1,"246":1,"247":20,"248":10,"249":4,"254":2,"255":9,"289":2,"290":1,"292":1}}],["index",{"2":{"248":2,"249":1,"314":1}}],["inherit=",{"2":{"247":1}}],["inherit",{"0":{"237":1},"2":{"248":5}}],["inspect",{"2":{"289":4,"293":1}}],["insert",{"2":{"199":1}}],["instance",{"0":{"135":1,"136":1},"2":{"21":2,"35":4,"40":2,"54":4,"89":1,"98":1,"135":5,"138":1}}],["installed",{"2":{"15":1}}],["installation",{"0":{"12":1},"2":{"6":2}}],["install",{"0":{"11":1},"1":{"12":1,"13":1,"14":1,"15":1,"16":1},"2":{"6":3,"12":3,"13":1,"15":2,"316":1,"319":1,"320":1}}],["instead",{"2":{"6":2,"13":1,"37":1,"56":1}}],["inner",{"2":{"88":2}}],["initialized",{"2":{"35":1,"54":1,"88":2}}],["initializing",{"2":{"21":1,"40":1}}],["init",{"0":{"21":1,"26":1,"27":1,"40":1,"45":1,"46":1,"65":1,"88":1,"109":1,"112":1,"117":1,"125":1,"157":1,"159":1,"186":1,"189":1,"194":1,"205":1},"2":{"21":2,"26":2,"27":2,"40":2,"45":2,"46":2,"65":1,"88":1,"109":1,"112":1,"117":1,"125":1,"157":1,"159":1,"186":1,"189":1,"191":1,"194":1,"197":1,"205":1,"247":1,"249":2,"255":2,"282":1,"286":1,"292":1,"302":3}}],["including",{"2":{"15":1}}],["inter",{"2":{"308":1}}],["interpreter",{"2":{"6":1}}],["interpreters",{"2":{"6":2}}],["introduction",{"0":{"308":1}}],["int=0",{"2":{"24":1,"43":1,"200":1,"201":1}}],["int",{"0":{"24":1,"43":1,"194":1,"200":1,"201":1},"2":{"24":2,"43":2,"65":1,"88":2,"194":1}}],["intact",{"2":{"6":1}}],["invalidgitrepositoryerror",{"2":{"6":1}}],["information",{"2":{"3":1}}],["info",{"0":{"247":1,"248":1},"2":{"1":1,"21":1,"22":1,"23":1,"24":1,"40":1,"41":1,"42":1,"43":1,"186":3,"247":12,"248":6,"249":5,"309":2}}],["in",{"0":{"151":1,"291":1},"2":{"0":3,"1":1,"2":1,"3":2,"6":3,"25":1,"35":1,"37":3,"44":1,"54":1,"56":3,"66":1,"88":5,"91":1,"92":1,"98":1,"99":1,"128":1,"131":3,"132":1,"133":1,"145":2,"149":1,"150":2,"151":1,"160":3,"162":1,"163":1,"164":1,"165":1,"177":1,"179":1,"196":1,"199":1,"201":2,"210":1,"245":1,"246":2,"247":13,"248":9,"249":5,"255":2,"283":2,"287":2,"290":2,"291":1,"303":1,"308":1}}],["iter",{"2":{"247":2}}],["items",{"2":{"0":1,"6":1,"99":1,"145":2,"245":1,"248":1,"249":1}}],["itself",{"2":{"6":1,"9":1}}],["it",{"2":{"0":1,"2":2,"3":1,"6":5,"12":1,"308":2}}],["r>",{"2":{"254":2}}],["rv",{"2":{"249":2}}],["rk",{"2":{"249":2}}],["rmtree",{"2":{"249":1}}],["rpm",{"2":{"319":5,"320":1}}],["rp",{"2":{"245":4}}],["rpc",{"0":{"110":1,"111":1},"1":{"111":1,"112":2,"113":2},"2":{"79":1,"114":1}}],["rule=is",{"2":{"284":1,"285":1}}],["rule=empty",{"2":{"200":1,"201":1}}],["rulehandlerfunc",{"0":{"203":1,"205":1},"2":{"205":1}}],["rule",{"0":{"194":2,"200":3,"201":2,"202":1,"204":1,"206":2,"207":2,"209":1,"210":1},"1":{"203":1,"204":1,"205":2,"206":2,"207":2,"208":2,"209":1,"210":1},"2":{"194":6,"196":1,"200":3,"201":5,"202":1,"206":3,"207":3,"208":1,"209":3,"210":2,"284":1,"285":1}}],["running",{"2":{"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":1,"91":1,"125":2,"290":2,"308":1}}],["runtimeerror",{"2":{"35":2,"54":2,"89":1,"90":1,"92":1,"131":1,"133":1,"290":1}}],["run",{"0":{"13":1,"22":1,"41":1,"66":1,"132":1,"179":1,"196":1,"290":1,"291":1},"2":{"0":1,"12":1,"13":2,"15":1,"22":3,"41":3,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"91":1,"132":1,"133":1,"160":1,"179":2,"196":1,"290":3,"291":1,"306":2}}],["raw",{"0":{"189":1},"2":{"189":4,"190":1,"201":1,"285":1}}],["raise",{"2":{"35":2,"54":2,"88":3,"89":2,"90":1,"92":1,"98":2,"128":1,"131":1,"133":1,"172":1}}],["rights",{"2":{"57":1,"155":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["root",{"2":{"13":1,"246":2}}],["r",{"2":{"12":1,"15":1,"146":1,"147":1,"148":1,"247":1}}],["readme",{"2":{"249":2}}],["read",{"2":{"247":1}}],["reload",{"2":{"317":1,"318":2,"319":1,"320":1}}],["reloading",{"2":{"303":1}}],["rel",{"2":{"249":4,"292":5}}],["relpath",{"2":{"244":1}}],["relative",{"0":{"244":1},"2":{"244":1,"249":1,"250":1,"292":1}}],["red>",{"2":{"186":1}}],["remove",{"2":{"186":1}}],["ref",{"0":{"139":1}}],["refer",{"0":{"16":1},"2":{"6":1}}],["reference",{"2":{"3":1}}],["return",{"0":{"222":1},"2":{"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"37":4,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":2,"56":4,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"90":2,"91":2,"92":7,"100":3,"101":3,"113":1,"119":1,"127":3,"129":3,"131":3,"135":1,"145":2,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"163":1,"165":1,"170":3,"177":4,"185":2,"195":3,"196":1,"200":1,"201":2,"206":2,"207":2,"208":2,"209":1,"210":1,"244":1,"246":1,"247":4,"248":4,"252":2,"254":2,"255":1,"256":2,"274":1,"281":2,"289":4,"292":3,"293":3}}],["returns",{"2":{"25":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"44":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"90":1,"91":1,"92":1,"100":1,"101":1,"119":1,"127":1,"128":1,"129":1,"130":1,"131":1,"145":1,"163":1,"165":1,"177":1,"186":1,"190":1,"195":1,"196":1,"247":5,"248":1,"252":1,"256":1,"281":1,"289":1,"290":1,"291":1,"292":1,"293":1}}],["register",{"2":{"21":1,"40":1}}],["reply",{"0":{"190":1},"2":{"190":3,"285":1}}],["replace",{"2":{"13":1,"247":3,"248":4,"249":8}}],["repo",{"2":{"13":1}}],["report设定为false",{"2":{"315":1}}],["reports",{"2":{"6":1}}],["report",{"2":{"1":2,"6":2,"315":1}}],["required",{"2":{"88":1}}],["requires",{"2":{"15":1}}],["requirements",{"0":{"15":1},"1":{"16":1},"2":{"12":1,"15":1}}],["requests",{"2":{"1":1}}],["resources",{"2":{"313":1,"314":1,"318":1}}],["resolve",{"2":{"292":2}}],["reserved",{"2":{"57":1,"155":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["response",{"2":{"6":2}}],["respond",{"2":{"6":1}}],["restarting",{"2":{"24":1,"43":1}}],["restart",{"0":{"24":1,"25":1,"33":1,"34":1,"43":1,"44":1,"52":1,"53":1,"71":1,"72":1,"77":1,"78":1},"2":{"0":1,"21":1,"24":3,"25":1,"33":2,"34":2,"40":1,"43":3,"44":1,"52":2,"53":2,"65":2,"71":2,"72":2,"77":3,"78":3,"303":2}}],["reverse",{"2":{"3":2}}],["receiving",{"2":{"309":1}}],["receive",{"0":{"81":1,"82":1,"83":1,"90":1,"91":1,"92":1,"119":1,"122":1,"123":1,"131":3,"132":1,"133":1,"189":1},"2":{"1":1,"83":2,"88":3,"90":2,"91":2,"92":4,"100":1,"101":1,"103":1,"104":2,"105":2,"106":1,"119":1,"122":1,"123":1,"125":2,"127":1,"129":1,"131":11,"132":2,"133":4,"139":1,"140":2,"141":2,"142":2,"143":1,"160":2,"189":4,"190":3,"309":11}}],["recursive=recursive",{"2":{"177":1}}],["recursive",{"0":{"177":1},"2":{"177":3}}],["recv",{"2":{"88":2,"90":2,"100":5,"101":5,"105":3,"106":3,"117":1,"127":5,"129":5,"140":3,"143":3}}],["recommended",{"0":{"8":1,"9":1},"2":{"3":1,"6":1,"12":1,"14":1,"15":2}}],["city",{"2":{"323":1,"324":1}}],["css相对路径引用b中的css",{"2":{"314":1}}],["css",{"2":{"313":1,"314":1}}],["cwd",{"2":{"292":1}}],["cfg",{"2":{"179":4}}],["current|bot",{"2":{"325":1}}],["current|group",{"2":{"325":1}}],["current",{"2":{"170":3,"325":2,"326":1}}],["custom",{"2":{"2":4}}],["customize",{"2":{"2":1}}],["c",{"2":{"57":1,"145":3,"155":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"256":1,"257":1,"258":1,"282":1,"284":1,"286":1,"290":4,"292":4,"326":1}}],["cmd",{"2":{"24":5,"43":5,"295":2,"296":1}}],["cpu",{"2":{"15":1,"315":1}}],["cd",{"2":{"12":1,"13":1}}],["cls",{"0":{"135":1},"2":{"135":6,"247":1,"248":11}}],["close",{"0":{"120":1},"2":{"120":1,"290":1}}],["closed",{"2":{"88":1,"89":2,"90":2,"117":1}}],["clone",{"2":{"12":2,"13":2}}],["cloning",{"2":{"6":1}}],["classdef",{"2":{"247":3}}],["classes=",{"2":{"247":1}}],["classes",{"0":{"241":1},"2":{"247":1,"248":1}}],["classinfo",{"0":{"232":1,"241":1},"1":{"233":1,"234":1,"235":1,"236":1,"237":1},"2":{"247":1}}],["classmethod",{"0":{"217":1},"2":{"134":1,"135":1,"247":1}}],["class",{"0":{"20":1,"39":1,"64":1,"87":1,"108":1,"111":1,"116":1,"124":1,"134":1,"156":1,"158":1,"171":1,"181":1,"188":1,"193":1,"204":1,"213":1,"217":1,"219":1,"227":1,"232":1,"238":1,"259":1,"265":1,"273":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":1,"89":1,"90":1,"91":1,"92":1,"109":1,"112":1,"113":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"135":1,"136":1,"137":1,"157":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"172":1,"173":1,"174":1,"175":1,"176":1,"189":1,"190":1,"194":1,"195":1,"196":1,"205":1,"206":1,"207":1,"208":1,"214":1,"215":1,"216":1,"217":1,"218":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"243":1,"260":1,"261":1,"262":1,"263":1,"264":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1},"2":{"35":1,"54":1,"98":1,"99":1,"100":1,"101":1,"247":24,"248":2}}],["client",{"2":{"8":1}}],["cqhttp",{"2":{"8":1}}],["child",{"2":{"247":2,"308":1}}],["chromium",{"2":{"15":1}}],["channel时的通道标识",{"2":{"309":1}}],["channel即可",{"2":{"309":1}}],["channel及passive",{"2":{"309":1}}],["channel函数获取通道对象",{"2":{"309":2}}],["channel=none",{"2":{"190":1}}],["channeldeliver",{"0":{"156":1},"1":{"157":1},"2":{"161":1}}],["channels",{"0":{"99":2,"101":1,"106":1},"2":{"99":5,"101":2,"105":1,"106":3,"160":1}}],["channel",{"0":{"80":1,"87":1,"93":1,"94":1,"95":1,"96":2,"97":2,"98":3,"99":1,"100":2,"101":1,"102":2,"103":2,"104":1,"105":1,"115":1,"130":1,"131":1,"132":1,"157":8,"189":2,"307":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":2,"89":2,"90":2,"91":2,"92":2,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"116":1,"117":1,"118":1,"119":1,"120":1,"308":1,"309":1,"310":1,"311":1,"312":1},"2":{"25":2,"44":2,"79":2,"88":7,"89":1,"90":1,"93":3,"94":3,"95":3,"96":2,"97":1,"98":21,"99":6,"100":10,"101":8,"102":3,"103":6,"104":11,"105":7,"106":2,"114":2,"125":4,"127":1,"129":1,"130":5,"131":9,"132":4,"133":2,"157":12,"161":12,"189":5,"190":2,"308":3,"309":14}}],["chan",{"2":{"25":4,"44":4,"100":5,"101":5,"105":3,"106":3,"125":2,"126":1,"127":6,"128":1,"129":6,"130":1,"133":1,"139":1,"140":5,"141":2,"142":2,"143":4,"160":2,"161":2,"309":2}}],["changed",{"2":{"303":1}}],["change",{"2":{"12":1,"13":1,"319":1,"320":1}}],["chat",{"2":{"6":1,"7":1,"9":1}}],["check",{"0":{"88":1},"2":{"1":1,"6":1,"88":9,"89":1}}],["cn",{"0":{"248":1,"249":1},"2":{"2":1,"248":2,"249":1}}],["color",{"2":{"256":7}}],["colors=true",{"2":{"254":3}}],["color=",{"2":{"186":5}}],["copy",{"2":{"145":1}}],["copyright",{"2":{"57":1,"155":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["count",{"0":{"139":1},"2":{"21":1,"24":2,"40":1,"43":2}}],["code插件liteyuki",{"2":{"299":1}}],["code=ast",{"2":{"247":2}}],["codemodifiedhandler",{"0":{"171":1},"1":{"172":1,"173":1,"174":1,"175":1,"176":1},"2":{"177":1}}],["code",{"0":{"224":1},"2":{"15":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":1,"89":1,"90":1,"91":1,"92":1,"98":1,"99":1,"100":1,"101":1,"104":1,"105":1,"106":1,"109":1,"112":1,"113":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"135":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":4,"179":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"244":1,"245":1,"246":1,"247":1,"248":7,"249":3,"252":1,"254":1,"255":1,"256":1,"274":1,"281":1,"283":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1}}],["coro",{"0":{"290":1,"291":1},"2":{"290":6,"291":3}}],["coroutine",{"0":{"289":1,"290":2,"291":2,"293":1},"2":{"66":1,"82":1,"85":1,"92":2,"131":1,"203":1,"289":1,"290":2,"291":3,"293":3}}],["core",{"0":{"152":1,"153":1,"155":1},"1":{"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1},"2":{"8":1}}],["correctly",{"2":{"6":2}}],["come",{"2":{"308":1}}],["combined",{"2":{"206":2,"207":2}}],["com",{"2":{"12":1,"13":1,"57":1,"155":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["compat",{"0":{"37":2,"56":2},"2":{"37":9,"56":9}}],["complete",{"2":{"290":2}}],["completion",{"2":{"2":2}}],["complies",{"2":{"6":1}}],["computer",{"2":{"6":1}}],["communicate",{"2":{"308":1}}],["communication",{"0":{"307":1},"1":{"308":1,"309":1,"310":1,"311":1,"312":1},"2":{"3":1,"308":1}}],["comm",{"0":{"79":1,"80":1,"107":1,"110":1,"114":1,"115":1,"121":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"108":1,"109":1,"111":1,"112":1,"113":1,"116":1,"117":1,"118":1,"119":1,"120":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1},"2":{"309":2,"312":2}}],["command>",{"2":{"296":2}}],["command",{"0":{"317":1},"1":{"318":1},"2":{"1":4,"6":5,"10":1}}],["content",{"2":{"247":2,"248":17,"249":2}}],["continue",{"2":{"150":1,"247":1,"249":1,"255":3}}],["container",{"2":{"13":1}}],["contact",{"2":{"6":1}}],["conn",{"2":{"88":4,"89":1,"90":1,"117":2}}],["connect",{"2":{"6":1}}],["connected",{"0":{"3":1}}],["convenient",{"2":{"14":1}}],["confirm",{"2":{"6":1}}],["configs",{"0":{"150":1},"2":{"150":1,"151":1}}],["config=self",{"2":{"27":1,"46":1}}],["configured",{"2":{"3":1}}],["configuration",{"0":{"1":1,"3":1},"2":{"0":5,"1":1,"2":2,"3":1,"6":2}}],["configurations",{"0":{"0":1,"2":1},"1":{"1":1,"2":1,"3":1,"4":1},"2":{"2":1}}],["config",{"0":{"36":1,"37":1,"55":1,"56":1,"144":1,"145":2,"151":1,"186":1,"275":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1},"2":{"0":5,"2":2,"21":2,"27":1,"36":2,"37":6,"40":2,"46":1,"55":2,"56":6,"145":10,"146":7,"147":7,"148":7,"149":7,"150":4,"151":9,"179":1,"186":3,"283":2,"287":2,"317":4,"318":1}}],["conflict",{"2":{"6":1}}],["conflicts",{"2":{"6":1,"12":1}}],["console",{"2":{"1":1}}],["created",{"0":{"173":1},"2":{"173":1}}],["create",{"2":{"0":1,"12":1,"132":1,"160":3}}],["case",{"2":{"256":4}}],["cases",{"2":{"0":1}}],["category",{"2":{"248":2,"249":2}}],["calling",{"0":{"112":2},"2":{"112":4,"113":1}}],["callback",{"0":{"168":1,"177":2},"2":{"92":1,"177":4,"309":1}}],["callable",{"0":{"92":3,"131":1,"177":1,"195":1,"289":2,"293":2},"2":{"58":1,"59":1,"61":1,"62":1,"66":1,"81":1,"82":1,"84":1,"85":1,"92":13,"131":2,"159":1,"168":1,"169":1,"177":1,"195":1,"203":1,"289":2,"293":6}}],["call",{"0":{"113":1,"208":1,"289":1},"2":{"21":1,"24":2,"40":1,"43":2,"113":1,"170":4,"208":1,"289":8,"309":1}}],["cache",{"2":{"13":2}}],["cannot",{"2":{"6":1,"89":1,"90":1,"131":1,"133":1}}],["can",{"2":{"0":2,"4":1,"6":2,"7":1,"12":1,"35":1,"54":1,"92":1,"308":1,"309":1}}],["duration>",{"2":{"325":1}}],["duration",{"2":{"325":2,"326":1}}],["duplex",{"2":{"309":1}}],["driver",{"2":{"309":4}}],["d",{"2":{"139":2,"140":4,"141":4,"142":4,"143":2,"292":4,"326":1}}],["daemon=true",{"2":{"291":1}}],["data=",{"2":{"190":1}}],["data",{"0":{"89":1,"104":1,"105":1,"106":1,"109":1,"118":1,"130":1,"132":1,"140":1,"141":1,"142":1,"143":1,"189":1,"245":1},"2":{"89":7,"90":2,"91":2,"92":5,"103":2,"104":7,"105":7,"106":4,"109":3,"118":3,"119":2,"130":5,"131":3,"132":4,"133":6,"140":4,"141":3,"142":2,"143":2,"189":7,"245":6,"249":5,"309":7}}],["darwin",{"2":{"24":1,"43":1}}],["day",{"2":{"1":1}}],["dog",{"2":{"302":1,"303":1}}],["dot",{"2":{"247":1}}],["docstring=method",{"2":{"247":1}}],["docstring=module",{"2":{"247":1}}],["docstring=class",{"2":{"247":1}}],["docstring=function",{"2":{"247":1}}],["docstring",{"0":{"223":1,"231":1,"234":1,"243":1},"2":{"247":16,"248":12}}],["docs",{"0":{"249":1},"2":{"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"92":1,"98":1,"99":2,"100":1,"101":2,"249":5,"317":1,"318":1}}],["docker",{"0":{"13":1},"2":{"13":4}}],["documentation",{"2":{"6":1,"9":1}}],["don",{"2":{"6":1,"7":1,"9":1}}],["download",{"2":{"6":1}}],["does",{"2":{"6":4,"255":1}}],["do",{"2":{"6":1,"15":1}}],["diagnose=false",{"2":{"186":1}}],["dict",{"0":{"99":1,"101":1,"104":1,"105":1,"106":1,"109":1,"113":1,"129":1,"140":1,"141":1,"142":1,"143":1,"145":2,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":1,"186":1,"189":2,"190":1,"245":1,"252":1,"272":1,"281":1},"2":{"21":1,"40":1,"95":1,"97":1,"99":3,"101":4,"104":1,"105":1,"106":1,"109":1,"113":1,"122":1,"123":1,"125":2,"129":4,"140":1,"141":1,"142":1,"143":1,"145":3,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":1,"159":3,"186":1,"189":3,"190":1,"245":1,"249":1,"252":3,"254":6,"281":3}}],["disable",{"2":{"317":1,"318":1,"319":2,"320":2}}],["disk",{"2":{"15":1}}],["display",{"0":{"256":2},"2":{"1":1,"254":7,"256":5}}],["different",{"2":{"3":2,"6":1}}],["dir",{"0":{"249":1,"255":1},"2":{"249":6,"255":17,"283":2,"287":2}}],["dirname",{"2":{"245":2}}],["directories=",{"2":{"303":1}}],["directories",{"0":{"150":1,"177":1},"2":{"150":2,"177":4}}],["directory",{"2":{"0":4,"1":1,"2":1,"12":1,"13":2,"150":6,"177":2,"255":1}}],["directly",{"2":{"15":1}}],["direct",{"2":{"6":1,"308":1}}],["dirs",{"0":{"150":1},"2":{"1":1,"150":1,"151":1,"246":1,"283":1,"287":1}}],["details>",{"2":{"248":4}}],["detailed",{"2":{"2":1,"3":1}}],["debounce",{"0":{"170":1},"2":{"170":1,"171":1,"172":1}}],["debug",{"2":{"2":2,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":2,"146":1,"147":1,"148":1,"185":2,"186":2,"303":1}}],["deepcopy",{"2":{"145":1}}],["decorator",{"2":{"92":2,"131":2,"170":2,"177":2,"195":2,"247":13,"309":1}}],["del",{"2":{"128":2}}],["deleted",{"0":{"174":1},"2":{"174":1}}],["delete",{"0":{"128":1,"142":1},"2":{"128":2,"141":1,"142":3}}],["deliver",{"0":{"96":1,"97":1,"102":1,"103":1,"157":2},"2":{"98":1,"100":1,"101":1,"102":1,"103":2,"104":2,"105":2,"106":1,"157":6,"161":6}}],["delivery",{"2":{"4":1,"161":1}}],["delay",{"0":{"24":1,"43":1},"2":{"24":4,"43":4}}],["deftype",{"0":{"213":1,"225":1},"1":{"214":1,"215":1,"216":1,"217":1,"218":1},"2":{"247":4,"248":1}}],["def",{"0":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"88":1,"89":1,"90":1,"91":1,"92":1,"98":1,"99":1,"100":1,"101":1,"104":1,"105":1,"106":1,"109":1,"112":1,"113":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"135":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"179":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"252":1,"254":1,"255":1,"256":1,"274":1,"281":1,"283":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1},"2":{"23":1,"42":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"91":1,"92":2,"104":1,"105":1,"106":1,"131":2,"132":1,"133":1,"135":1,"140":1,"141":1,"142":1,"143":1,"160":1,"170":2,"172":1,"177":2,"195":1,"196":1,"201":1,"206":1,"207":1,"208":1,"209":1,"210":1,"247":4,"248":2,"285":1,"293":1,"303":1,"309":3}}],["defaults",{"2":{"24":2,"25":2,"36":2,"37":2,"43":2,"44":2,"55":2,"56":2,"92":2}}],["default",{"0":{"36":1,"37":1,"55":1,"56":1,"127":1,"151":1,"220":1,"221":1,"222":1,"223":1,"225":1,"226":1,"228":1,"229":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"243":1,"266":1,"276":1,"277":1,"278":1,"283":1,"287":1},"2":{"1":1,"2":3,"3":1,"18":1,"36":4,"37":4,"55":4,"56":4,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"93":1,"94":1,"95":1,"96":2,"97":2,"102":1,"103":1,"122":1,"123":1,"127":6,"138":1,"139":1,"140":3,"151":1,"168":1,"169":1,"179":1,"183":1,"185":1,"203":1,"250":1,"283":1,"287":1}}],["deprecated",{"2":{"37":1,"56":1}}],["depth=1",{"2":{"12":1,"13":1}}],["deploy",{"2":{"6":1}}],["depend",{"2":{"15":1}}],["dependency",{"2":{"12":1}}],["dependencies",{"2":{"12":1,"15":1}}],["depends",{"2":{"3":1,"15":1}}],["depending",{"2":{"0":1}}],["description=",{"2":{"302":1}}],["description",{"0":{"267":1},"2":{"3":1,"18":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"107":1,"110":1,"113":1,"114":1,"115":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"138":1,"139":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"154":1,"155":1,"160":1,"161":1,"163":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"177":1,"178":1,"179":1,"180":1,"183":1,"184":1,"186":1,"187":1,"189":1,"190":1,"191":1,"192":1,"194":1,"195":1,"196":1,"197":1,"198":1,"202":1,"203":1,"211":1,"212":1,"244":1,"245":1,"247":1,"248":1,"249":1,"250":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"281":1,"282":1,"283":1,"284":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"314":1}}],["device",{"0":{"15":1},"1":{"16":1},"2":{"15":1}}],["developer",{"2":{"302":1}}],["developers",{"2":{"9":1}}],["develop",{"2":{"9":1}}],["development",{"2":{"2":3}}],["dev",{"0":{"154":1,"166":1,"167":1,"178":1},"1":{"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"179":1},"2":{"2":1,"303":1,"306":1}}],["two",{"2":{"309":1}}],["target=run",{"2":{"291":1}}],["target=os",{"2":{"24":1,"43":1}}],["target",{"0":{"161":3,"244":1},"2":{"161":6,"244":4,"247":5}}],["targets",{"2":{"159":1,"160":1,"161":1,"162":1,"164":1,"165":1,"247":2}}],["task",{"2":{"132":1,"160":5}}],["tasks",{"2":{"66":2}}],["types",{"0":{"275":1}}],["type=plugintype",{"2":{"302":1}}],["type=attr",{"2":{"247":1}}],["type=ast",{"2":{"247":3}}],["type=def",{"2":{"247":1}}],["type=deftype",{"2":{"247":1}}],["type=self",{"2":{"190":2}}],["typeerror",{"2":{"88":1,"89":1,"98":1}}],["typealias",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"168":1,"169":1,"203":1}}],["type",{"0":{"88":1,"189":2,"222":1,"225":1,"229":1,"256":1,"269":1},"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"88":12,"89":7,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"122":1,"123":1,"138":1,"168":1,"169":1,"189":9,"190":2,"203":1,"247":11,"248":13,"254":2,"256":5}}],["typing",{"2":{"25":2,"44":2,"66":2,"92":2}}],["tuple=",{"2":{"161":1}}],["tuplestr",{"2":{"37":1,"56":1}}],["tuple",{"0":{"37":1,"56":1,"104":1,"105":1,"106":1,"113":1,"140":1,"141":1,"142":1,"143":1,"157":2,"161":1,"177":1,"221":1},"2":{"37":2,"56":2,"95":1,"97":1,"104":1,"105":1,"106":1,"113":1,"125":3,"140":1,"141":1,"142":1,"143":1,"157":2,"159":2,"177":1}}],["title",{"2":{"249":2}}],["time>",{"2":{"296":1}}],["timeout",{"2":{"163":1}}],["time",{"2":{"23":1,"24":1,"42":1,"43":1,"57":1,"155":1,"170":9,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["tip",{"2":{"12":1,"13":1,"299":1,"314":1,"316":1}}],["test",{"0":{"264":2},"2":{"256":1}}],["text",{"2":{"248":3}}],["terminated",{"2":{"163":1}}],["terminate",{"0":{"163":1,"164":1},"2":{"21":1,"24":1,"40":1,"43":1,"163":2,"164":2}}],["telegram",{"2":{"6":1}}],["txt",{"2":{"12":1,"15":1}}],["transfer",{"2":{"308":1}}],["traceback",{"2":{"196":1,"254":1}}],["tree",{"2":{"247":3}}],["try",{"2":{"22":1,"23":1,"41":1,"42":1,"128":1,"196":1,"254":1,"290":1}}],["trss",{"0":{"14":1},"2":{"8":1,"14":1}}],["true时例如docs",{"2":{"249":2}}],["true",{"0":{"128":1,"177":1,"247":1,"255":1,"275":1},"2":{"1":3,"2":4,"6":1,"90":1,"133":1,"186":1,"208":1,"209":1,"249":1,"309":2}}],["t",{"0":{"87":1,"89":1,"90":1,"91":1,"92":2},"1":{"88":1,"89":1,"90":1,"91":1,"92":1},"2":{"6":1,"7":1,"9":1,"13":1,"35":1,"54":1,"81":1,"82":1,"84":1,"85":1,"89":3,"90":3,"91":3,"92":9,"98":1,"99":1,"100":1,"101":1}}],["through",{"2":{"308":2}}],["thread",{"0":{"291":1},"2":{"24":1,"43":1,"291":2}}],["threading",{"0":{"137":1},"2":{"21":1,"24":1,"40":1,"43":1,"291":1}}],["that",{"2":{"6":2,"308":1,"309":1}}],["this",{"2":{"6":3}}],["then",{"2":{"6":1,"12":1}}],["therefore",{"2":{"308":1}}],["there",{"2":{"1":1,"6":1,"15":1}}],["these",{"2":{"0":1}}],["the",{"2":{"0":6,"1":1,"2":4,"3":6,"4":2,"6":20,"9":2,"10":3,"12":3,"13":2,"15":4,"254":1,"308":1,"309":2}}],["tokyo",{"2":{"323":1}}],["token",{"2":{"2":2}}],["top",{"0":{"249":1},"2":{"249":4}}],["too",{"2":{"6":1}}],["to",{"0":{"3":1,"16":1,"245":1,"292":1},"2":{"0":1,"1":6,"2":3,"3":2,"4":1,"6":17,"12":6,"13":1,"14":2,"15":5,"24":2,"25":2,"36":2,"37":2,"43":2,"44":2,"55":2,"56":2,"89":1,"92":2,"245":1,"249":1,"254":7,"255":2,"292":2,"308":3,"309":2}}],["toml",{"0":{"148":1},"2":{"0":2,"148":5,"149":2,"151":1}}],["world",{"2":{"295":5}}],["w",{"2":{"245":1}}],["write",{"0":{"245":1},"2":{"245":2,"249":1}}],["wrapper",{"0":{"293":1},"2":{"66":1,"92":2,"131":4,"161":1,"170":2,"177":2,"293":4}}],["watchdog",{"2":{"303":1,"306":1}}],["watch",{"2":{"302":1,"303":1}}],["walk",{"2":{"246":1,"247":1}}],["wait",{"0":{"170":1},"2":{"170":2}}],["waring=no",{"2":{"151":1}}],["waring",{"0":{"150":1,"151":1},"2":{"150":3,"151":3}}],["warning=no",{"2":{"150":1,"151":1}}],["warning",{"0":{"149":1,"255":1},"2":{"15":2,"37":1,"56":1,"149":5,"150":1,"163":1,"165":1,"186":2,"254":1,"255":9,"299":1,"320":1}}],["way",{"2":{"14":1}}],["want",{"2":{"1":1}}],["weather",{"0":{"323":1},"1":{"324":1},"2":{"323":1,"324":1}}],["we",{"2":{"9":1}}],["websocket",{"2":{"3":2}}],["windows10+",{"2":{"15":1}}],["windows",{"2":{"13":1,"15":2,"24":1,"43":1}}],["without",{"2":{"15":1}}],["with",{"0":{"13":1,"37":1,"56":1,"249":1},"2":{"6":2,"13":1,"37":1,"56":1,"126":1,"127":1,"128":1,"135":1,"245":1,"247":1,"248":5,"249":4,"308":1,"309":1}}],["will",{"2":{"0":3,"2":3,"6":1,"15":2,"37":1,"56":1}}],["while",{"2":{"23":1,"42":1,"90":1,"133":1,"309":2}}],["which",{"2":{"6":2,"14":1}}],["why",{"2":{"6":1}}],["whether",{"2":{"1":3,"2":1}}],["when",{"2":{"0":2}}],["ws",{"2":{"3":2}}],["poke",{"2":{"297":4}}],["port",{"2":{"1":2,"13":2}}],["publish=publish",{"2":{"161":1}}],["publish",{"0":{"95":1,"130":1,"157":1},"2":{"95":1,"125":2,"130":2,"133":2,"157":3}}],["pwd",{"2":{"13":3}}],["p",{"2":{"13":1,"326":1}}],["pipe",{"2":{"88":2}}],["pip",{"2":{"12":1,"15":1,"254":1}}],["period`",{"2":{"326":1}}],["period>",{"2":{"325":1}}],["period",{"2":{"325":2}}],["persists",{"2":{"6":1}}],["personal",{"2":{"0":1}}],["permission",{"2":{"6":1}}],["py即可启动插件",{"2":{"306":1}}],["pyo",{"2":{"303":1}}],["pycache",{"2":{"303":1}}],["pyc",{"2":{"303":1}}],["pycharm",{"2":{"57":1,"155":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["py文件",{"2":{"302":1}}],["py文件或一个包含",{"2":{"302":1}}],["py的文件夹即可被识别为插件",{"2":{"302":1}}],["pyfile",{"0":{"250":1},"2":{"249":8,"250":1}}],["pyi",{"2":{"246":1,"247":1}}],["py",{"2":{"6":1,"12":1,"57":1,"155":1,"178":1,"184":1,"187":1,"191":2,"192":1,"197":2,"198":1,"202":1,"211":1,"212":1,"246":1,"247":1,"249":1,"253":1,"255":3,"257":1,"258":1,"282":2,"284":1,"286":2,"302":1,"303":1,"306":2,"312":1,"314":1}}],["pythonimport",{"2":{"303":1,"309":1}}],["pythonfrom",{"2":{"302":1,"306":1,"309":1,"312":1}}],["python格式",{"2":{"295":1}}],["pythonasync",{"2":{"23":1,"42":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"91":1,"133":1,"160":1,"196":1,"208":1}}],["pythondef",{"2":{"21":1,"22":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"88":1,"89":1,"90":1,"92":1,"98":1,"99":1,"100":1,"101":1,"109":1,"112":1,"113":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":1,"159":1,"161":1,"162":1,"163":1,"164":1,"165":1,"170":1,"173":1,"174":1,"175":1,"176":1,"177":1,"179":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"199":1,"200":1,"201":1,"205":1,"206":1,"207":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"252":1,"254":1,"255":1,"256":1,"274":1,"281":1,"283":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1}}],["python3",{"2":{"12":1,"15":1}}],["python",{"2":{"6":5,"12":2,"15":3,"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":2,"92":1,"98":1,"99":2,"100":1,"101":2,"104":1,"105":1,"106":1,"132":1,"135":1,"140":1,"141":1,"142":1,"143":1,"172":1,"209":1,"210":1,"247":2,"285":1}}],["page为页数",{"2":{"319":2}}],["page",{"2":{"319":2}}],["pacman",{"0":{"319":1},"1":{"320":1}}],["pack",{"2":{"314":2,"319":3}}],["param",{"2":{"316":1}}],["parts",{"2":{"292":2}}],["parent",{"2":{"247":4}}],["parse",{"2":{"247":1}}],["parser",{"2":{"10":1}}],["parsed",{"2":{"6":1}}],["parsing",{"2":{"1":1}}],["pass",{"2":{"118":1,"119":1,"120":1}}],["passive=channel",{"2":{"161":1}}],["passive=chan",{"2":{"161":1}}],["passive",{"0":{"94":1,"97":1,"103":1,"157":2},"2":{"94":1,"98":1,"100":1,"101":1,"103":2,"104":2,"105":2,"106":1,"125":2,"126":1,"127":1,"128":1,"129":1,"139":1,"140":2,"141":2,"142":2,"143":1,"157":6,"161":6,"309":15}}],["pathlib",{"2":{"254":1}}],["paths=none",{"2":{"249":1}}],["paths",{"0":{"249":1},"2":{"249":5}}],["path=dot",{"2":{"247":1}}],["path",{"0":{"179":2,"239":1,"244":3,"247":1,"250":1,"254":2,"292":3},"2":{"6":2,"13":1,"15":3,"149":1,"150":2,"179":5,"244":10,"245":3,"246":1,"247":7,"249":22,"250":2,"254":19,"255":26,"292":12,"303":5}}],["platform",{"2":{"24":3,"43":3}}],["platforms",{"2":{"6":1}}],["playwright",{"2":{"6":2}}],["plugintype",{"0":{"256":1,"259":1,"269":2},"1":{"260":1,"261":1,"262":1,"263":1,"264":1},"2":{"256":5,"302":1}}],["pluginmetadata",{"0":{"265":1,"279":1},"1":{"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1},"2":{"254":4,"302":2}}],["plugin`",{"2":{"254":1}}],["plugin`的函数签名",{"2":{"179":1}}],["plugin的函数签名",{"2":{"179":1}}],["plugin",{"0":{"178":1,"251":1,"252":1,"253":1,"254":2,"255":2,"256":1,"257":1,"258":1,"273":1,"280":1,"281":1,"282":1,"286":1},"1":{"179":1,"252":1,"254":1,"255":1,"256":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":2,"275":2,"276":2,"277":2,"278":2,"279":2,"281":1,"283":1,"287":1},"2":{"1":3,"4":1,"6":3,"8":1,"10":1,"21":2,"40":2,"178":1,"252":3,"254":15,"255":6,"256":5,"281":3,"283":6,"287":6,"302":4,"305":1,"306":2,"308":1,"319":5}}],["plugins下创建一个文件",{"2":{"306":1}}],["plugins中添加你的插件路径",{"2":{"305":1}}],["plugins",{"0":{"179":1,"252":1,"255":1,"281":1,"282":1,"283":1,"284":1,"286":1,"287":1},"1":{"283":1,"285":1,"287":1},"2":{"1":1,"2":2,"6":2,"15":3,"21":1,"40":1,"179":6,"252":2,"254":3,"255":9,"281":2,"283":4,"287":4,"303":1,"306":2}}],["please",{"0":{"16":1},"2":{"1":2,"2":1,"3":2,"6":4,"9":1,"13":2,"15":1}}],["priority",{"0":{"194":1,"200":1,"201":1},"2":{"194":5,"199":2,"200":2,"201":2}}],["prioritize",{"2":{"9":1}}],["private",{"0":{"247":1},"2":{"189":2,"247":6}}],["print",{"2":{"21":1,"40":1,"91":2,"196":1,"249":1,"254":1}}],["profile",{"2":{"321":4}}],["property",{"0":{"218":2},"2":{"247":2}}],["provides",{"2":{"10":3,"14":1,"308":1}}],["provided",{"2":{"3":1,"6":1}}],["problematic",{"2":{"6":1}}],["problem",{"2":{"6":1}}],["problems",{"2":{"1":1}}],["processmanager",{"0":{"158":1},"1":{"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1},"2":{"21":2,"40":2}}],["process",{"0":{"25":1,"32":2,"33":3,"44":1,"51":2,"52":3,"61":1,"62":1,"63":1,"66":1,"69":3,"71":3,"75":1,"77":1,"165":1},"2":{"21":2,"24":1,"25":4,"32":7,"33":8,"35":2,"40":2,"43":1,"44":4,"51":7,"52":8,"54":2,"63":2,"65":4,"66":3,"69":8,"71":8,"75":2,"77":2,"88":4,"92":3,"98":1,"100":1,"101":1,"126":1,"127":1,"128":1,"129":1,"131":3,"133":2,"159":1,"160":1,"162":2,"163":7,"165":2,"303":2,"308":2,"309":8}}],["processes",{"2":{"6":1,"15":1,"25":1,"44":1,"159":1,"163":2,"165":1,"308":4}}],["processing",{"2":{"6":1}}],["protocol",{"2":{"3":1,"6":1,"8":6}}],["production",{"2":{"3":1}}],["project",{"2":{"0":1,"6":2,"9":2,"12":1,"13":1}}],["prefix",{"2":{"1":1}}],["preference",{"2":{"0":1}}],["y",{"2":{"256":1}}],["y>",{"2":{"256":1}}],["y>name",{"2":{"256":1}}],["yellow>",{"2":{"186":1}}],["yunzai",{"2":{"8":1}}],["yml格式的所有合法内容",{"2":{"317":1}}],["yml文件",{"2":{"314":1}}],["yml中填写一些信息",{"2":{"314":1}}],["yml",{"2":{"0":2,"149":1,"151":1,"314":2,"317":1}}],["you",{"2":{"0":4,"1":1,"2":1,"3":1,"4":1,"6":6,"7":2,"12":1,"13":2,"15":2,"308":1}}],["your",{"2":{"0":1,"13":1,"15":1,"254":4}}],["yamlweather",{"2":{"323":1}}],["yamlname",{"2":{"314":1}}],["yaml",{"0":{"146":1},"2":{"0":2,"1":1,"2":2,"146":5,"149":2,"151":1}}],["a包中的index",{"2":{"314":1}}],["application",{"0":{"260":2},"2":{"256":1}}],["append",{"2":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"92":2,"131":2,"195":1,"199":1,"246":1,"247":5}}],["api格式为onebot",{"2":{"317":1}}],["api文档",{"2":{"298":1}}],["api也有差别",{"2":{"298":1}}],["api",{"0":{"298":1},"2":{"249":10,"296":3,"297":2,"317":3}}],["await",{"2":{"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"91":1,"92":2,"131":1,"133":2,"196":2,"206":2,"207":2,"208":1,"296":1,"297":1,"299":1,"309":1}}],["awaitable",{"2":{"59":1,"62":1}}],["arbitrary",{"0":{"275":1}}],["arg",{"2":{"247":13,"248":16}}],["argv",{"2":{"24":1,"43":1}}],["args=coro",{"2":{"291":1}}],["args=",{"2":{"24":1,"43":1,"247":2}}],["args",{"0":{"26":1,"45":1,"66":1,"113":1,"161":1,"221":1},"2":{"21":1,"24":3,"25":1,"26":4,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"36":1,"37":1,"40":1,"43":3,"44":1,"45":4,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"55":1,"56":1,"66":4,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"88":1,"89":1,"92":1,"98":1,"99":1,"100":1,"113":2,"117":1,"118":1,"126":1,"127":1,"128":1,"130":1,"131":1,"132":1,"145":1,"161":5,"163":1,"165":1,"170":2,"177":1,"179":1,"189":1,"190":1,"194":1,"196":1,"244":1,"245":1,"247":9,"248":9,"249":1,"256":1,"289":1,"290":1,"291":1,"292":1,"293":3,"317":4}}],["arguments",{"2":{"21":1,"24":1,"25":1,"26":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"36":1,"37":1,"40":1,"43":1,"44":1,"45":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"55":1,"56":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"88":1,"89":1,"92":1,"98":1,"99":1,"100":1,"117":1,"118":1,"126":1,"127":1,"128":1,"130":1,"131":1,"132":1,"145":1,"161":1,"163":1,"165":1,"177":1,"179":1,"190":1,"194":1,"196":1,"244":1,"245":1,"247":1,"248":1,"249":1,"254":1,"255":1,"256":1,"289":1,"290":1,"291":1,"292":1,"293":1}}],["arch",{"2":{"14":1}}],["are",{"2":{"1":1,"6":2,"13":1,"15":1,"308":1}}],["abs",{"2":{"249":4}}],["absolute",{"2":{"13":1}}],["able",{"2":{"15":1}}],["about",{"2":{"6":1}}],["active和",{"2":{"309":1}}],["active和chan",{"2":{"161":2}}],["active=channel",{"2":{"161":1}}],["active=chan",{"2":{"161":1}}],["active",{"0":{"93":1,"96":1,"102":1,"157":2},"2":{"25":6,"44":6,"93":1,"102":1,"125":2,"130":1,"133":1,"157":6,"161":4,"309":13}}],["activate",{"2":{"12":4}}],["acknowledgements",{"0":{"10":1}}],["account",{"2":{"7":1}}],["according",{"2":{"6":1}}],["accesstoken",{"2":{"3":2}}],["access",{"2":{"2":2}}],["author",{"0":{"270":1},"2":{"6":1,"57":1,"155":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["auto",{"2":{"1":2,"2":2}}],["automatically",{"2":{"0":1,"1":2}}],["after",{"0":{"30":1,"31":1,"34":1,"49":1,"50":1,"53":1,"68":1,"70":1,"72":1,"74":1,"76":1,"78":1},"2":{"6":2,"30":2,"31":2,"34":2,"49":2,"50":2,"53":2,"65":3,"68":2,"70":2,"72":2,"74":3,"76":3,"78":3,"309":1}}],["avoid",{"2":{"6":1,"12":1}}],["available",{"2":{"1":1}}],["a",{"2":{"3":1,"6":4,"7":1,"8":3,"9":1,"12":2,"14":1,"89":1,"90":1,"145":3,"249":4,"255":1,"292":2,"302":1,"308":1,"309":1}}],["annassign",{"2":{"247":1}}],["annotation",{"2":{"247":6}}],["an",{"2":{"6":1,"7":1,"89":1,"98":1}}],["any=none",{"2":{"36":1,"37":1,"55":1,"56":1}}],["any",{"0":{"36":2,"37":2,"55":2,"56":2,"92":2,"104":1,"105":1,"106":1,"109":1,"113":1,"126":1,"127":2,"129":1,"130":1,"132":1,"140":1,"141":1,"142":1,"143":1,"145":2,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":4,"176":1,"189":2,"190":1,"230":1,"272":1,"289":1,"293":1},"2":{"2":1,"4":1,"21":1,"36":5,"37":5,"40":1,"55":5,"56":5,"58":1,"59":1,"61":1,"62":1,"81":1,"82":3,"85":2,"92":9,"95":1,"96":1,"97":1,"100":1,"101":1,"104":1,"105":1,"106":1,"109":1,"113":1,"125":3,"126":1,"127":5,"129":4,"130":1,"131":1,"132":1,"140":1,"141":1,"142":1,"143":1,"145":2,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"157":4,"176":1,"189":3,"190":1,"201":1,"247":7,"249":1,"289":1,"293":1}}],["and",{"0":{"207":1},"2":{"0":6,"4":1,"6":7,"9":1,"12":2,"15":2,"89":1,"177":1,"207":2,"247":7,"248":1,"255":3,"303":2,"308":3,"309":2}}],["adapter",{"2":{"3":1,"4":2}}],["advanced",{"2":{"2":1}}],["add",{"0":{"161":1,"199":1},"2":{"2":1,"161":1,"186":1,"199":1,"200":1,"255":1}}],["address",{"2":{"1":1,"3":2}}],["amp",{"2":{"13":2}}],["am",{"2":{"1":1,"309":6}}],["attributes=",{"2":{"247":2}}],["attributes",{"0":{"236":1,"242":1},"2":{"247":2,"248":2}}],["attributeinfo",{"0":{"227":1,"236":1,"242":1},"1":{"228":1,"229":1,"230":1,"231":1},"2":{"247":2}}],["attr",{"0":{"136":1,"137":1,"214":1,"215":1,"216":1,"217":1,"218":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"243":1,"260":1,"261":1,"262":1,"263":1,"264":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"275":1,"276":1,"277":1,"278":1,"279":1},"2":{"247":2,"248":14}}],["atexit",{"2":{"21":1,"40":1}}],["at",{"2":{"1":1,"15":2}}],["already",{"2":{"88":2,"98":1}}],["alive",{"0":{"23":1,"42":1,"165":1},"2":{"23":1,"42":1,"163":1,"165":2}}],["alconna",{"2":{"1":2,"2":2,"10":1}}],["allowed",{"0":{"275":1}}],["allow",{"2":{"2":2}}],["all",{"0":{"129":1,"143":1,"160":1,"162":1,"164":1},"2":{"0":1,"2":1,"21":1,"24":1,"40":1,"43":1,"57":1,"129":2,"142":1,"143":3,"155":1,"160":1,"162":1,"164":1,"178":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"258":1,"282":1,"284":1,"286":1}}],["assign",{"2":{"247":2}}],["ast",{"2":{"247":29}}],["asynchronous",{"2":{"293":2}}],["async=isinstance",{"2":{"247":2}}],["asyncfunctiondef",{"2":{"247":3}}],["async",{"0":{"23":1,"42":1,"59":1,"62":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"82":1,"85":1,"91":2,"132":1,"133":1,"160":1,"196":1,"208":1,"209":1,"210":1,"226":1,"285":1,"293":1},"2":{"60":1,"63":1,"66":3,"83":1,"86":1,"91":1,"92":1,"122":1,"123":1,"131":1,"132":1,"133":1,"201":1,"206":1,"207":1,"209":1,"210":1,"248":4,"285":1,"293":2,"309":2}}],["asyncio",{"2":{"21":2,"22":1,"40":2,"41":1,"66":1,"91":1,"132":1,"160":3,"290":5,"309":2}}],["ask",{"2":{"9":1}}],["asked",{"0":{"6":1}}],["as",{"2":{"0":1,"3":1,"6":2,"128":1,"245":1,"247":1,"254":1,"290":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/@localSearchIndexroot.ButuspH0.js b/assets/chunks/@localSearchIndexroot.ButuspH0.js deleted file mode 100644 index 7436961f..00000000 --- a/assets/chunks/@localSearchIndexroot.ButuspH0.js +++ /dev/null @@ -1 +0,0 @@ -const e=`{"documentCount":321,"nextId":321,"documentIds":{"0":"/deploy/config.html#配置","1":"/deploy/config.html#基础配置项","2":"/deploy/config.html#其他配置","3":"/deploy/config.html#示例-与nonebot对接的onebot实现端配置","4":"/deploy/config.html#其他","5":"/deploy/fandq.html#答疑","6":"/deploy/fandq.html#常见问题","7":"/deploy/fandq.html#其他问题","8":"/deploy/fandq.html#推荐方案-qq","9":"/deploy/fandq.html#推荐方案-minecraft","10":"/deploy/fandq.html#鸣谢","11":"/deploy/install.html#安装","12":"/deploy/install.html#常规部署","13":"/deploy/install.html#使用docker构建","14":"/deploy/install.html#使用trss-scripts部署","15":"/deploy/install.html#装置要求","16":"/deploy/install.html#其他问题请移步至答疑","17":"/dev/api/api.html#liteyuki","18":"/dev/api/api.html#var-version","19":"/dev/api/bot/bot.html#liteyuki-bot","20":"/dev/api/bot/bot.html#class-liteyukibot","21":"/dev/api/bot/bot.html#def-init-self-args-kwargs-none","22":"/dev/api/bot/bot.html#async-def-run-self","23":"/dev/api/bot/bot.html#def-run-self","24":"/dev/api/bot/bot.html#async-def-keep-alive-self","25":"/dev/api/bot/bot.html#def-handle-exit-self-signum-frame","26":"/dev/api/bot/bot.html#def-restart-self-delay-int-0","27":"/dev/api/bot/bot.html#def-restart-process-self-name-optional-str-none","28":"/dev/api/bot/bot.html#def-init-self-args-kwargs","29":"/dev/api/bot/bot.html#def-init-logger-self","30":"/dev/api/bot/bot.html#def-stop-self","31":"/dev/api/bot/bot.html#def-on-before-start-self-func-lifespan-func","32":"/dev/api/bot/bot.html#def-on-after-start-self-func-lifespan-func","33":"/dev/api/bot/bot.html#def-on-after-shutdown-self-func-lifespan-func","34":"/dev/api/bot/bot.html#def-on-before-process-shutdown-self-func-lifespan-func","35":"/dev/api/bot/bot.html#def-on-before-process-restart-self-func-lifespan-func","36":"/dev/api/bot/bot.html#def-on-after-restart-self-func-lifespan-func","37":"/dev/api/bot/bot.html#def-get-bot-liteyukibot","38":"/dev/api/bot/bot.html#def-get-config-key-str-default-any-none-any","39":"/dev/api/bot/bot.html#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","40":"/dev/api/bot/bot.html#def-print-logo","41":"/dev/api/bot/#liteyuki-bot","42":"/dev/api/bot/#class-liteyukibot","43":"/dev/api/bot/#def-init-self-args-kwargs-none","44":"/dev/api/bot/#async-def-run-self","45":"/dev/api/bot/#def-run-self","46":"/dev/api/bot/#async-def-keep-alive-self","47":"/dev/api/bot/#def-handle-exit-self-signum-frame","48":"/dev/api/bot/#def-restart-self-delay-int-0","49":"/dev/api/bot/#def-restart-process-self-name-optional-str-none","50":"/dev/api/bot/#def-init-self-args-kwargs","51":"/dev/api/bot/#def-init-logger-self","52":"/dev/api/bot/#def-stop-self","53":"/dev/api/bot/#def-on-before-start-self-func-lifespan-func","54":"/dev/api/bot/#def-on-after-start-self-func-lifespan-func","55":"/dev/api/bot/#def-on-after-shutdown-self-func-lifespan-func","56":"/dev/api/bot/#def-on-before-process-shutdown-self-func-lifespan-func","57":"/dev/api/bot/#def-on-before-process-restart-self-func-lifespan-func","58":"/dev/api/bot/#def-on-after-restart-self-func-lifespan-func","59":"/dev/api/bot/#def-get-bot-liteyukibot","60":"/dev/api/bot/#def-get-config-key-str-default-any-none-any","61":"/dev/api/bot/#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","62":"/dev/api/bot/#def-print-logo","63":"/dev/api/bot/lifespan.html#liteyuki-bot-lifespan","64":"/dev/api/bot/lifespan.html#class-lifespan","65":"/dev/api/bot/lifespan.html#def-init-self-none","66":"/dev/api/bot/lifespan.html#async-def-run-funcs-funcs-list-async-lifespan-func-process-lifespan-func-args-kwargs-none","67":"/dev/api/bot/lifespan.html#def-on-before-start-self-func-lifespan-func-lifespan-func","68":"/dev/api/bot/lifespan.html#def-on-after-start-self-func-lifespan-func-lifespan-func","69":"/dev/api/bot/lifespan.html#def-on-before-process-shutdown-self-func-lifespan-func-lifespan-func","70":"/dev/api/bot/lifespan.html#def-on-after-shutdown-self-func-lifespan-func-lifespan-func","71":"/dev/api/bot/lifespan.html#def-on-before-process-restart-self-func-lifespan-func-lifespan-func","72":"/dev/api/bot/lifespan.html#def-on-after-restart-self-func-lifespan-func-lifespan-func","73":"/dev/api/bot/lifespan.html#async-def-before-start-self-none","74":"/dev/api/bot/lifespan.html#async-def-after-start-self-none","75":"/dev/api/bot/lifespan.html#async-def-before-process-shutdown-self-none","76":"/dev/api/bot/lifespan.html#async-def-after-shutdown-self-none","77":"/dev/api/bot/lifespan.html#async-def-before-process-restart-self-none","78":"/dev/api/bot/lifespan.html#async-def-after-restart-self-none","79":"/dev/api/comm/channel.html#liteyuki-comm-channel","80":"/dev/api/comm/channel.html#class-channel-generic-t","81":"/dev/api/comm/channel.html#def-init-self-name-str-type-check-optional-bool-none","82":"/dev/api/comm/channel.html#def-get-generic-type-self-optional-type","83":"/dev/api/comm/channel.html#def-validate-structure-self-data-any-structure-type-bool","84":"/dev/api/comm/channel.html#def-send-self-data-t","85":"/dev/api/comm/channel.html#def-receive-self-t","86":"/dev/api/comm/channel.html#async-def-async-receive-self-t","87":"/dev/api/comm/channel.html#def-on-receive-self-filter-func-optional-filter-func-none-callable-callable-t-any-callable-t-any","88":"/dev/api/comm/channel.html#async-def-run-on-receive-funcs-self-data-any","89":"/dev/api/comm/channel.html#async-def-start-receive-loop-self","90":"/dev/api/comm/channel.html#var-active-channel","91":"/dev/api/comm/channel.html#var-publish-channel","92":"/dev/api/comm/channel.html#var-channel-deliver-active-channel","93":"/dev/api/comm/channel.html#def-set-channel-name-str-channel-channel","94":"/dev/api/comm/channel.html#def-set-channels-channels-dict-str-channel","95":"/dev/api/comm/channel.html#def-get-channel-name-str-channel","96":"/dev/api/comm/channel.html#def-get-channels-dict-str-channel","97":"/dev/api/comm/channel.html#def-on-set-channel-data-tuple-str-dict-str-any","98":"/dev/api/comm/channel.html#def-on-get-channel-data-tuple-str-dict-str-any","99":"/dev/api/comm/channel.html#def-on-get-channels-data-tuple-str-dict-str-any","100":"/dev/api/comm/comm.html#liteyuki-comm","101":"/dev/api/comm/event.html#liteyuki-comm-event","102":"/dev/api/comm/event.html#class-event","103":"/dev/api/comm/event.html#def-init-self-name-str-data-dict-str-any","104":"/dev/api/comm/#liteyuki-comm","105":"/dev/api/comm/rpc.html#liteyuki-comm-rpc","106":"/dev/api/comm/rpc.html#class-rpc","107":"/dev/api/comm/rpc.html#def-init-self-on-calling-on-calling-func-none","108":"/dev/api/comm/rpc.html#def-call-self-args-tuple-kwargs-dict-any","109":"/dev/api/comm/socks_channel.html#liteyuki-comm-socks-channel","110":"/dev/api/comm/socks_channel.html#class-sockschannel","111":"/dev/api/comm/socks_channel.html#def-init-self-name-str","112":"/dev/api/comm/socks_channel.html#def-send-self-data","113":"/dev/api/comm/socks_channel.html#def-receive-self","114":"/dev/api/comm/socks_channel.html#def-close-self","115":"/dev/api/comm/storage.html#liteyuki-comm-storage","116":"/dev/api/comm/storage.html#var-on-main-subscriber-receive-funcs","117":"/dev/api/comm/storage.html#var-on-sub-subscriber-receive-funcs","118":"/dev/api/comm/storage.html#class-keyvaluestore","119":"/dev/api/comm/storage.html#def-init-self","120":"/dev/api/comm/storage.html#def-set-self-key-str-value-any-none","121":"/dev/api/comm/storage.html#def-get-self-key-str-default-optional-any-none-optional-any","122":"/dev/api/comm/storage.html#def-delete-self-key-str-ignore-key-error-bool-true-none","123":"/dev/api/comm/storage.html#def-get-all-self-dict-str-any","124":"/dev/api/comm/storage.html#def-publish-self-channel-str-data-any-none","125":"/dev/api/comm/storage.html#def-on-subscriber-receive-self-channel-str-callable-on-receive-func-on-receive-func","126":"/dev/api/comm/storage.html#async-def-run-subscriber-receive-funcs-channel-str-data-any","127":"/dev/api/comm/storage.html#async-def-start-receive-loop-self","128":"/dev/api/comm/storage.html#class-globalkeyvaluestore","129":"/dev/api/comm/storage.html#def-get-instance-cls","130":"/dev/api/comm/storage.html#attr-instance-none","131":"/dev/api/comm/storage.html#attr-lock-threading-lock","132":"/dev/api/comm/storage.html#var-ref-count","133":"/dev/api/comm/storage.html#def-on-get-data-tuple-str-dict-str-any","134":"/dev/api/comm/storage.html#def-on-set-data-tuple-str-dict-str-any","135":"/dev/api/comm/storage.html#def-on-delete-data-tuple-str-dict-str-any","136":"/dev/api/comm/storage.html#def-on-get-all-data-tuple-str-dict-str-any","137":"/dev/api/config.html#liteyuki-config","138":"/dev/api/config.html#def-flat-config-config-dict-str-any-dict-str-any","139":"/dev/api/config.html#def-load-from-yaml-file-str-dict-str-any","140":"/dev/api/config.html#def-load-from-json-file-str-dict-str-any","141":"/dev/api/config.html#def-load-from-toml-file-str-dict-str-any","142":"/dev/api/config.html#def-load-from-files-files-str-no-warning-bool-false-dict-str-any","143":"/dev/api/config.html#def-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any","144":"/dev/api/config.html#def-load-config-in-default-no-waring-bool-false-dict-str-any","145":"/dev/api/core/core.html#liteyuki-core","146":"/dev/api/core/#liteyuki-core","147":"/dev/api/core/manager.html#liteyuki-core-manager","148":"/dev/api/core/manager.html#class-channeldeliver","149":"/dev/api/core/manager.html#def-init-self-active-channel-any-passive-channel-any-channel-deliver-active-channel-channel-any-channel-deliver-passive-channel-tuple-str-dict-publish-channel-tuple-str-any","150":"/dev/api/core/manager.html#class-processmanager","151":"/dev/api/core/manager.html#def-init-self-lifespan-lifespan","152":"/dev/api/core/manager.html#async-def-run-process-self-name-str","153":"/dev/api/core/manager.html#async-def-start-all-self","154":"/dev/api/core/manager.html#def-add-target-self-name-str-target-target-func-args-tuple-kwargs-none","155":"/dev/api/core/manager.html#def-join-all-self","156":"/dev/api/core/manager.html#def-terminate-self-name-str","157":"/dev/api/core/manager.html#def-terminate-all-self","158":"/dev/api/core/manager.html#def-is-process-alive-self-name-str-bool","159":"/dev/api/dev/dev.html#liteyuki-dev","160":"/dev/api/dev/#liteyuki-dev","161":"/dev/api/dev/observer.html#liteyuki-dev-observer","162":"/dev/api/dev/observer.html#var-callback-func","163":"/dev/api/dev/observer.html#var-filter-func","164":"/dev/api/dev/observer.html#def-debounce-wait","165":"/dev/api/dev/observer.html#class-codemodifiedhandler-filesystemeventhandler","166":"/dev/api/dev/observer.html#def-on-modified-self-event","167":"/dev/api/dev/observer.html#def-on-created-self-event","168":"/dev/api/dev/observer.html#def-on-deleted-self-event","169":"/dev/api/dev/observer.html#def-on-moved-self-event","170":"/dev/api/dev/observer.html#def-on-any-event-self-event","171":"/dev/api/dev/observer.html#def-on-file-system-event-directories-tuple-str-recursive-bool-true-event-filter-filter-func-none-callable-callback-func-callback-func","172":"/dev/api/dev/plugin.html#liteyuki-dev-plugin","173":"/dev/api/dev/plugin.html#def-run-plugins-module-path-str-path","174":"/dev/api/exception.html#liteyuki-exception","175":"/dev/api/exception.html#class-liteyukiexception-baseexception","176":"/dev/api/#liteyuki","177":"/dev/api/#var-version","178":"/dev/api/log.html#liteyuki-log","179":"/dev/api/log.html#def-get-format-level-str-str","180":"/dev/api/log.html#def-init-log-config-dict","181":"/dev/api/message/event.html#liteyuki-message-event","182":"/dev/api/message/event.html#class-messageevent","183":"/dev/api/message/event.html#def-init-self-bot-id-str-message-list-dict-str-any-str-message-type-str-raw-message-str-session-id-str-user-id-str-session-type-str-receive-channel-optional-channel-messageevent-none-data-optional-dict-str-any-none","184":"/dev/api/message/event.html#def-reply-self-message-str-dict-str-any","185":"/dev/api/message/#liteyuki-message","186":"/dev/api/message/matcher.html#liteyuki-message-matcher","187":"/dev/api/message/matcher.html#class-matcher","188":"/dev/api/message/matcher.html#def-init-self-rule-rule-priority-int-block-bool","189":"/dev/api/message/matcher.html#def-handle-self-callable-eventhandler-eventhandler","190":"/dev/api/message/matcher.html#async-def-run-self-event-messageevent-none","191":"/dev/api/message/message.html#liteyuki-message","192":"/dev/api/message/on.html#liteyuki-message-on","193":"/dev/api/message/on.html#def-add-matcher-matcher-matcher","194":"/dev/api/message/on.html#def-on-message-rule-rule-empty-rule-priority-int-0-block-bool-false-matcher","195":"/dev/api/message/on.html#def-on-keywords-keywords-list-str-rule-empty-rule-priority-int-0-block-bool-false-matcher","196":"/dev/api/message/rule.html#liteyuki-message-rule","197":"/dev/api/message/rule.html#var-rulehandlerfunc","198":"/dev/api/message/rule.html#class-rule","199":"/dev/api/message/rule.html#def-init-self-handler-rulehandlerfunc","200":"/dev/api/message/rule.html#def-or-self-other-rule-rule","201":"/dev/api/message/rule.html#def-and-self-other-rule-rule","202":"/dev/api/message/rule.html#async-def-call-self-event-messageevent-bool","203":"/dev/api/message/rule.html#async-def-empty-rule-event-messageevent-bool","204":"/dev/api/message/rule.html#async-def-is-su-rule-event-messageevent-bool","205":"/dev/api/message/session.html#liteyuki-message-session","206":"/dev/api/mkdoc.html#liteyuki-mkdoc","207":"/dev/api/mkdoc.html#class-deftype-enum","208":"/dev/api/mkdoc.html#attr-function-function","209":"/dev/api/mkdoc.html#attr-method-method","210":"/dev/api/mkdoc.html#attr-static-method-staticmethod","211":"/dev/api/mkdoc.html#attr-class-method-classmethod","212":"/dev/api/mkdoc.html#attr-property-property","213":"/dev/api/mkdoc.html#class-functioninfo-basemodel","214":"/dev/api/mkdoc.html#attr-name-str-no-default","215":"/dev/api/mkdoc.html#attr-args-list-tuple-str-str-no-default","216":"/dev/api/mkdoc.html#attr-return-type-str-no-default","217":"/dev/api/mkdoc.html#attr-docstring-str-no-default","218":"/dev/api/mkdoc.html#attr-source-code-str","219":"/dev/api/mkdoc.html#attr-type-deftype-no-default","220":"/dev/api/mkdoc.html#attr-is-async-bool-no-default","221":"/dev/api/mkdoc.html#class-attributeinfo-basemodel","222":"/dev/api/mkdoc.html#attr-name-str-no-default-1","223":"/dev/api/mkdoc.html#attr-type-str-no-default","224":"/dev/api/mkdoc.html#attr-value-any-none","225":"/dev/api/mkdoc.html#attr-docstring-str","226":"/dev/api/mkdoc.html#class-classinfo-basemodel","227":"/dev/api/mkdoc.html#attr-name-str-no-default-2","228":"/dev/api/mkdoc.html#attr-docstring-str-no-default-1","229":"/dev/api/mkdoc.html#attr-methods-list-functioninfo-no-default","230":"/dev/api/mkdoc.html#attr-attributes-list-attributeinfo-no-default","231":"/dev/api/mkdoc.html#attr-inherit-list-str-no-default","232":"/dev/api/mkdoc.html#class-moduleinfo-basemodel","233":"/dev/api/mkdoc.html#attr-module-path-str-no-default","234":"/dev/api/mkdoc.html#attr-functions-list-functioninfo-no-default","235":"/dev/api/mkdoc.html#attr-classes-list-classinfo-no-default","236":"/dev/api/mkdoc.html#attr-attributes-list-attributeinfo-no-default-1","237":"/dev/api/mkdoc.html#attr-docstring-str-no-default-2","238":"/dev/api/mkdoc.html#def-get-relative-path-base-path-str-target-path-str-str","239":"/dev/api/mkdoc.html#def-write-to-files-file-data-dict-str-str","240":"/dev/api/mkdoc.html#def-get-file-list-module-folder-str","241":"/dev/api/mkdoc.html#def-get-module-info-normal-file-path-str-ignore-private-bool-true-moduleinfo","242":"/dev/api/mkdoc.html#def-generate-markdown-module-info-moduleinfo-front-matter-none-lang-str-zh-cn-str","243":"/dev/api/mkdoc.html#def-generate-docs-module-folder-str-output-dir-str-with-top-bool-false-lang-str-zh-cn-ignored-paths-none","244":"/dev/api/mkdoc.html#var-no-module-name-pyfile-path","245":"/dev/api/plugin/#liteyuki-plugin","246":"/dev/api/plugin/#def-get-loaded-plugins-dict-str-plugin","247":"/dev/api/plugin/load.html#liteyuki-plugin-load","248":"/dev/api/plugin/load.html#def-load-plugin-module-path-str-path-optional-plugin","249":"/dev/api/plugin/load.html#def-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin","250":"/dev/api/plugin/load.html#def-format-display-name-display-name-str-plugin-type-plugintype-str","251":"/dev/api/plugin/manager.html#liteyuki-plugin-manager","252":"/dev/api/plugin/model.html#liteyuki-plugin-model","253":"/dev/api/plugin/model.html#class-plugintype-enum","254":"/dev/api/plugin/model.html#attr-application-application","255":"/dev/api/plugin/model.html#attr-service-service","256":"/dev/api/plugin/model.html#attr-module-module","257":"/dev/api/plugin/model.html#attr-unclassified-unclassified","258":"/dev/api/plugin/model.html#attr-test-test","259":"/dev/api/plugin/model.html#class-pluginmetadata-basemodel","260":"/dev/api/plugin/model.html#attr-name-str-no-default","261":"/dev/api/plugin/model.html#attr-description-str","262":"/dev/api/plugin/model.html#attr-usage-str","263":"/dev/api/plugin/model.html#attr-type-plugintype-plugintype-unclassified","264":"/dev/api/plugin/model.html#attr-author-str","265":"/dev/api/plugin/model.html#attr-homepage-str","266":"/dev/api/plugin/model.html#attr-extra-dict-str-any","267":"/dev/api/plugin/model.html#class-plugin-basemodel","268":"/dev/api/plugin/model.html#def-hash-self","269":"/dev/api/plugin/model.html#attr-model-config-arbitrary-types-allowed-true","270":"/dev/api/plugin/model.html#attr-name-str-no-default-1","271":"/dev/api/plugin/model.html#attr-module-moduletype-no-default","272":"/dev/api/plugin/model.html#attr-module-name-str-no-default","273":"/dev/api/plugin/model.html#attr-metadata-optional-pluginmetadata-none","274":"/dev/api/plugin/plugin.html#liteyuki-plugin","275":"/dev/api/plugin/plugin.html#def-get-loaded-plugins-dict-str-plugin","276":"/dev/api/plugins/liteecho.html#liteyuki-plugins-liteecho","277":"/dev/api/plugins/liteecho.html#async-def-liteecho-event-messageevent","278":"/dev/api/plugins/plugin_loader/#liteyuki-plugins-plugin-loader","279":"/dev/api/plugins/plugin_loader/#def-default-plugins-loader","280":"/dev/api/plugins/plugin_loader/plugin_loader.html#liteyuki-plugins-plugin-loader","281":"/dev/api/plugins/plugin_loader/plugin_loader.html#def-default-plugins-loader","282":"/dev/api/utils.html#liteyuki-utils","283":"/dev/api/utils.html#def-is-coroutine-callable-call-callable-any-bool","284":"/dev/api/utils.html#def-run-coroutine-coro-coroutine","285":"/dev/api/utils.html#def-run-coroutine-in-thread-coro-coroutine","286":"/dev/api/utils.html#def-path-to-module-name-path-path-str","287":"/dev/api/utils.html#def-async-wrapper-func-callable-any-callable-coroutine","288":"/dev/comm.html#通道通信","289":"/dev/comm.html#简介","290":"/dev/comm.html#示例","291":"/dev/comm.html#共享内存通信","292":"/dev/comm.html#简介-1","293":"/dev/comm.html#示例-1","294":"/dev/lyfunc.html#轻雪函数","295":"/dev/lyfunc.html#函数文件","296":"/dev/lyfunc.html#命令文档","297":"/dev/lyfunc.html#示例","298":"/dev/lyfunc.html#api","299":"/dev/lyfunc.html#结束关键字","300":"/dev/plugin.html#简介","301":"/dev/plugin.html#开始","302":"/dev/plugin.html#创建插件","303":"/dev/plugin.html#编写逻辑部分","304":"/dev/plugin.html#加载插件","305":"/dev/plugin.html#方法1","306":"/dev/plugin.html#方法2","307":"/dev/resource.html#简介","308":"/dev/resource.html#加载资源包","309":"/usage/agreement.html#用户协议","310":"/usage/basic.html#基础插件","311":"/usage/basic.html#轻雪命令liteyuki-command","312":"/usage/basic.html#命令别名","313":"/usage/basic.html#插件-包管理器-liteyuki-pacman","314":"/usage/basic.html#命令别名-1","315":"/usage/basic.html#用户管理liteyuki-user","316":"/usage/extra.html#功能插件命令","317":"/usage/extra.html#轻雪天气liteyuki-weather","318":"/usage/extra.html#命令别名","319":"/usage/extra.html#统计信息liteyuki-statistics","320":"/usage/extra.html#命令别名-1"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,16],"1":[1,1,51],"2":[1,1,48],"3":[2,1,28],"4":[1,1,3],"5":[1,1,1],"6":[1,1,55],"7":[1,1,2],"8":[3,1,30],"9":[3,1,6],"10":[1,1,8],"11":[1,1,1],"12":[1,1,44],"13":[1,1,35],"14":[2,1,7],"15":[1,1,39],"16":[1,2,1],"17":[1,1,1],"18":[3,1,7],"19":[2,1,1],"20":[2,2,1],"21":[7,4,69],"22":[5,4,20],"23":[4,4,18],"24":[6,4,29],"25":[7,4,25],"26":[8,4,53],"27":[10,4,37],"28":[6,4,14],"29":[5,4,11],"30":[4,4,13],"31":[9,4,19],"32":[9,4,19],"33":[9,4,20],"34":[10,4,21],"35":[10,4,21],"36":[9,4,20],"37":[5,2,35],"38":[10,2,24],"39":[14,2,42],"40":[4,2,21],"41":[2,1,1],"42":[2,2,1],"43":[7,4,69],"44":[5,4,20],"45":[4,4,18],"46":[6,4,29],"47":[7,4,25],"48":[8,4,53],"49":[10,4,37],"50":[6,4,14],"51":[5,4,11],"52":[4,4,13],"53":[9,4,19],"54":[9,4,19],"55":[9,4,20],"56":[10,4,21],"57":[10,4,21],"58":[9,4,20],"59":[5,2,35],"60":[10,2,24],"61":[14,2,42],"62":[4,2,21],"63":[3,1,25],"64":[2,3,1],"65":[5,5,30],"66":[14,5,42],"67":[9,5,22],"68":[9,5,22],"69":[10,5,23],"70":[9,5,22],"71":[10,5,23],"72":[9,5,22],"73":[7,5,21],"74":[7,5,21],"75":[8,5,22],"76":[7,5,21],"77":[8,5,22],"78":[7,5,21],"79":[3,1,27],"80":[5,3,1],"81":[12,8,73],"82":[8,8,24],"83":[9,8,43],"84":[6,8,45],"85":[5,8,28],"86":[6,8,29],"87":[16,8,65],"88":[10,8,34],"89":[7,8,45],"90":[3,3,9],"91":[3,3,15],"92":[4,3,11],"93":[7,3,41],"94":[7,3,20],"95":[7,3,31],"96":[8,3,36],"97":[10,3,25],"98":[10,3,28],"99":[10,3,27],"100":[2,1,9],"101":[3,1,25],"102":[2,3,1],"103":[9,5,13],"104":[2,1,9],"105":[3,1,5],"106":[2,3,1],"107":[10,5,15],"108":[9,5,18],"109":[4,1,25],"110":[2,4,1],"111":[6,6,21],"112":[5,6,14],"113":[4,6,14],"114":[4,6,10],"115":[3,1,5],"116":[6,3,12],"117":[6,3,12],"118":[2,3,1],"119":[4,5,30],"120":[9,5,32],"121":[12,5,39],"122":[12,5,44],"123":[9,5,31],"124":[9,5,23],"125":[13,5,54],"126":[11,5,30],"127":[7,5,42],"128":[2,3,2],"129":[5,5,18],"130":[4,5,1],"131":[6,5,1],"132":[3,3,17],"133":[9,3,29],"134":[9,3,27],"135":[9,3,27],"136":[10,3,27],"137":[2,1,20],"138":[8,2,40],"139":[10,2,35],"140":[10,2,34],"141":[10,2,34],"142":[14,2,43],"143":[16,2,49],"144":[15,2,34],"145":[2,1,1],"146":[2,1,1],"147":[3,1,25],"148":[2,3,1],"149":[14,5,18],"150":[2,3,1],"151":[6,5,17],"152":[8,5,66],"153":[6,5,31],"154":[14,5,49],"155":[5,5,13],"156":[6,5,33],"157":[5,5,12],"158":[9,5,29],"159":[2,1,3],"160":[2,1,3],"161":[3,1,6],"162":[3,3,9],"163":[3,3,9],"164":[4,3,25],"165":[4,3,3],"166":[6,7,17],"167":[6,7,10],"168":[6,7,10],"169":[6,7,10],"170":[6,7,10],"171":[20,3,55],"172":[3,1,25],"173":[9,3,33],"174":[2,1,3],"175":[4,2,1],"176":[1,1,1],"177":[3,1,7],"178":[2,1,25],"179":[6,2,17],"180":[6,2,47],"181":[3,1,25],"182":[2,3,1],"183":[24,5,49],"184":[9,5,36],"185":[2,1,25],"186":[3,1,25],"187":[2,3,1],"188":[10,5,27],"189":[7,5,21],"190":[8,5,32],"191":[2,1,25],"192":[3,1,25],"193":[5,3,21],"194":[15,3,19],"195":[16,3,30],"196":[3,1,25],"197":[2,3,11],"198":[2,3,1],"199":[6,5,10],"200":[6,5,19],"201":[6,5,19],"202":[8,5,20],"203":[8,3,16],"204":[9,3,21],"205":[3,1,25],"206":[2,1,25],"207":[4,2,1],"208":[5,6,1],"209":[5,6,1],"210":[6,6,1],"211":[6,6,1],"212":[5,6,1],"213":[4,2,1],"214":[6,6,1],"215":[8,6,1],"216":[7,6,1],"217":[6,6,1],"218":[6,6,1],"219":[6,6,1],"220":[7,6,1],"221":[4,2,1],"222":[6,6,1],"223":[6,6,1],"224":[5,6,1],"225":[5,6,1],"226":[4,2,1],"227":[6,6,1],"228":[6,6,1],"229":[7,6,1],"230":[7,6,1],"231":[7,6,1],"232":[4,2,1],"233":[7,6,1],"234":[7,6,1],"235":[7,6,1],"236":[7,6,1],"237":[6,6,1],"238":[8,2,21],"239":[9,2,37],"240":[8,2,27],"241":[15,2,145],"242":[15,2,97],"243":[20,2,96],"244":[6,2,10],"245":[2,1,1],"246":[9,2,18],"247":[3,1,25],"248":[12,3,80],"249":[15,3,58],"250":[9,3,41],"251":[3,1,25],"252":[3,1,25],"253":[4,3,1],"254":[5,7,1],"255":[5,7,1],"256":[5,7,1],"257":[5,7,1],"258":[5,7,1],"259":[4,3,1],"260":[6,7,1],"261":[5,7,1],"262":[5,7,1],"263":[5,7,1],"264":[5,7,1],"265":[5,7,1],"266":[7,7,1],"267":[4,3,1],"268":[4,7,10],"269":[9,7,1],"270":[6,7,1],"271":[6,7,1],"272":[7,7,1],"273":[6,7,1],"274":[2,1,1],"275":[9,2,18],"276":[3,1,31],"277":[6,3,21],"278":[4,1,25],"279":[5,4,21],"280":[4,1,25],"281":[5,4,21],"282":[2,1,6],"283":[9,2,32],"284":[6,2,44],"285":[8,2,22],"286":[8,2,40],"287":[9,2,27],"288":[1,1,1],"289":[1,1,12],"290":[1,1,83],"291":[1,1,1],"292":[1,2,9],"293":[1,2,18],"294":[1,1,9],"295":[1,1,25],"296":[1,1,33],"297":[1,2,26],"298":[1,1,7],"299":[1,1,18],"300":[1,1,4],"301":[1,1,1],"302":[1,2,42],"303":[1,2,58],"304":[1,2,1],"305":[1,3,6],"306":[1,3,25],"307":[1,1,31],"308":[1,1,56],"309":[1,1,28],"310":[1,1,16],"311":[2,1,86],"312":[1,3,30],"313":[4,1,53],"314":[1,5,38],"315":[2,1,20],"316":[1,1,1],"317":[2,1,30],"318":[1,3,8],"319":[2,1,35],"320":[1,3,17]},"averageFieldLength":[5.725856697819316,3.485981308411215,20.401869158878498],"storedFields":{"0":{"title":"配置","titles":[]},"1":{"title":"基础配置项","titles":["配置"]},"2":{"title":"其他配置","titles":["配置"]},"3":{"title":"示例:与NoneBot对接的OneBot实现端配置","titles":["配置"]},"4":{"title":"其他","titles":["配置"]},"5":{"title":"答疑","titles":[]},"6":{"title":"常见问题","titles":["答疑"]},"7":{"title":"其他问题","titles":["答疑"]},"8":{"title":"推荐方案(QQ)","titles":["答疑"]},"9":{"title":"推荐方案(Minecraft)","titles":["答疑"]},"10":{"title":"鸣谢","titles":["答疑"]},"11":{"title":"安装","titles":[]},"12":{"title":"常规部署","titles":["安装"]},"13":{"title":"使用Docker构建","titles":["安装"]},"14":{"title":"使用TRSS Scripts部署","titles":["安装"]},"15":{"title":"装置要求","titles":["安装"]},"16":{"title":"其他问题请移步至","titles":["安装","装置要求"]},"17":{"title":"liteyuki","titles":[]},"18":{"title":"var __version__","titles":["liteyuki"]},"19":{"title":"liteyuki.bot","titles":[]},"20":{"title":"class LiteyukiBot","titles":["liteyuki.bot"]},"21":{"title":"def __init__(self, *args, **kwargs) -> None","titles":["liteyuki.bot","class LiteyukiBot"]},"22":{"title":"async def _run(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"23":{"title":"def run(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"24":{"title":"async def keep_alive(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"25":{"title":"def _handle_exit(self, signum, frame)","titles":["liteyuki.bot","class LiteyukiBot"]},"26":{"title":"def restart(self, delay: int = 0)","titles":["liteyuki.bot","class LiteyukiBot"]},"27":{"title":"def restart_process(self, name: Optional[str] = None)","titles":["liteyuki.bot","class LiteyukiBot"]},"28":{"title":"def init(self, *args, **kwargs)","titles":["liteyuki.bot","class LiteyukiBot"]},"29":{"title":"def init_logger(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"30":{"title":"def stop(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"31":{"title":"def on_before_start(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"32":{"title":"def on_after_start(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"33":{"title":"def on_after_shutdown(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"34":{"title":"def on_before_process_shutdown(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"35":{"title":"def on_before_process_restart(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"36":{"title":"def on_after_restart(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"37":{"title":"def get_bot() -> LiteyukiBot","titles":["liteyuki.bot"]},"38":{"title":"def get_config(key: str, default: Any = None) -> Any","titles":["liteyuki.bot"]},"39":{"title":"def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","titles":["liteyuki.bot"]},"40":{"title":"def print_logo()","titles":["liteyuki.bot"]},"41":{"title":"liteyuki.bot","titles":[]},"42":{"title":"class LiteyukiBot","titles":["liteyuki.bot"]},"43":{"title":"def __init__(self, *args, **kwargs) -> None","titles":["liteyuki.bot","class LiteyukiBot"]},"44":{"title":"async def _run(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"45":{"title":"def run(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"46":{"title":"async def keep_alive(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"47":{"title":"def _handle_exit(self, signum, frame)","titles":["liteyuki.bot","class LiteyukiBot"]},"48":{"title":"def restart(self, delay: int = 0)","titles":["liteyuki.bot","class LiteyukiBot"]},"49":{"title":"def restart_process(self, name: Optional[str] = None)","titles":["liteyuki.bot","class LiteyukiBot"]},"50":{"title":"def init(self, *args, **kwargs)","titles":["liteyuki.bot","class LiteyukiBot"]},"51":{"title":"def init_logger(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"52":{"title":"def stop(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"53":{"title":"def on_before_start(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"54":{"title":"def on_after_start(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"55":{"title":"def on_after_shutdown(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"56":{"title":"def on_before_process_shutdown(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"57":{"title":"def on_before_process_restart(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"58":{"title":"def on_after_restart(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"59":{"title":"def get_bot() -> LiteyukiBot","titles":["liteyuki.bot"]},"60":{"title":"def get_config(key: str, default: Any = None) -> Any","titles":["liteyuki.bot"]},"61":{"title":"def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","titles":["liteyuki.bot"]},"62":{"title":"def print_logo()","titles":["liteyuki.bot"]},"63":{"title":"liteyuki.bot.lifespan","titles":[]},"64":{"title":"class Lifespan","titles":["liteyuki.bot.lifespan"]},"65":{"title":"def __init__(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"66":{"title":"async def run_funcs(funcs: list[ASYNC_LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"67":{"title":"def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"68":{"title":"def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"69":{"title":"def on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"70":{"title":"def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"71":{"title":"def on_before_process_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"72":{"title":"def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"73":{"title":"async def before_start(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"74":{"title":"async def after_start(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"75":{"title":"async def before_process_shutdown(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"76":{"title":"async def after_shutdown(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"77":{"title":"async def before_process_restart(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"78":{"title":"async def after_restart(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"79":{"title":"liteyuki.comm.channel","titles":[]},"80":{"title":"class Channel(Generic[T])","titles":["liteyuki.comm.channel"]},"81":{"title":"def __init__(self, name: str, type_check: Optional[bool] = None)","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"82":{"title":"def _get_generic_type(self) -> Optional[type]","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"83":{"title":"def _validate_structure(self, data: Any, structure: type) -> bool","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"84":{"title":"def send(self, data: T)","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"85":{"title":"def receive(self) -> T","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"86":{"title":"async def async_receive(self) -> T","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"87":{"title":"def on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"88":{"title":"async def _run_on_receive_funcs(self, data: Any)","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"89":{"title":"async def start_receive_loop(self)","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"90":{"title":"var active_channel","titles":["liteyuki.comm.channel"]},"91":{"title":"var publish_channel","titles":["liteyuki.comm.channel"]},"92":{"title":"var channel_deliver_active_channel","titles":["liteyuki.comm.channel"]},"93":{"title":"def set_channel(name: str, channel: Channel)","titles":["liteyuki.comm.channel"]},"94":{"title":"def set_channels(channels: dict[str, Channel])","titles":["liteyuki.comm.channel"]},"95":{"title":"def get_channel(name: str) -> Channel","titles":["liteyuki.comm.channel"]},"96":{"title":"def get_channels() -> dict[str, Channel]","titles":["liteyuki.comm.channel"]},"97":{"title":"def on_set_channel(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.channel"]},"98":{"title":"def on_get_channel(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.channel"]},"99":{"title":"def on_get_channels(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.channel"]},"100":{"title":"liteyuki.comm","titles":[]},"101":{"title":"liteyuki.comm.event","titles":[]},"102":{"title":"class Event","titles":["liteyuki.comm.event"]},"103":{"title":"def __init__(self, name: str, data: dict[str, Any])","titles":["liteyuki.comm.event","class Event"]},"104":{"title":"liteyuki.comm","titles":[]},"105":{"title":"liteyuki.comm.rpc","titles":[]},"106":{"title":"class RPC","titles":["liteyuki.comm.rpc"]},"107":{"title":"def __init__(self, on_calling: ON_CALLING_FUNC) -> None","titles":["liteyuki.comm.rpc","class RPC"]},"108":{"title":"def call(self, args: tuple, kwargs: dict) -> Any","titles":["liteyuki.comm.rpc","class RPC"]},"109":{"title":"liteyuki.comm.socks_channel","titles":[]},"110":{"title":"class SocksChannel","titles":["liteyuki.comm.socks_channel"]},"111":{"title":"def __init__(self, name: str)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"112":{"title":"def send(self, data)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"113":{"title":"def receive(self)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"114":{"title":"def close(self)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"115":{"title":"liteyuki.comm.storage","titles":[]},"116":{"title":"var _on_main_subscriber_receive_funcs","titles":["liteyuki.comm.storage"]},"117":{"title":"var _on_sub_subscriber_receive_funcs","titles":["liteyuki.comm.storage"]},"118":{"title":"class KeyValueStore","titles":["liteyuki.comm.storage"]},"119":{"title":"def __init__(self)","titles":["liteyuki.comm.storage","class KeyValueStore"]},"120":{"title":"def set(self, key: str, value: Any) -> None","titles":["liteyuki.comm.storage","class KeyValueStore"]},"121":{"title":"def get(self, key: str, default: Optional[Any] = None) -> Optional[Any]","titles":["liteyuki.comm.storage","class KeyValueStore"]},"122":{"title":"def delete(self, key: str, ignore_key_error: bool = True) -> None","titles":["liteyuki.comm.storage","class KeyValueStore"]},"123":{"title":"def get_all(self) -> dict[str, Any]","titles":["liteyuki.comm.storage","class KeyValueStore"]},"124":{"title":"def publish(self, channel_: str, data: Any) -> None","titles":["liteyuki.comm.storage","class KeyValueStore"]},"125":{"title":"def on_subscriber_receive(self, channel_: str) -> Callable[[ON_RECEIVE_FUNC], ON_RECEIVE_FUNC]","titles":["liteyuki.comm.storage","class KeyValueStore"]},"126":{"title":"async def run_subscriber_receive_funcs(channel_: str, data: Any)","titles":["liteyuki.comm.storage","class KeyValueStore"]},"127":{"title":"async def start_receive_loop(self)","titles":["liteyuki.comm.storage","class KeyValueStore"]},"128":{"title":"class GlobalKeyValueStore","titles":["liteyuki.comm.storage"]},"129":{"title":"def get_instance(cls)","titles":["liteyuki.comm.storage","class GlobalKeyValueStore"]},"130":{"title":"attr _instance = None","titles":["liteyuki.comm.storage","class GlobalKeyValueStore"]},"131":{"title":"attr _lock = threading.Lock()","titles":["liteyuki.comm.storage","class GlobalKeyValueStore"]},"132":{"title":"var _ref_count","titles":["liteyuki.comm.storage"]},"133":{"title":"def on_get(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"134":{"title":"def on_set(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"135":{"title":"def on_delete(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"136":{"title":"def on_get_all(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"137":{"title":"liteyuki.config","titles":[]},"138":{"title":"def flat_config(config: dict[str, Any]) -> dict[str, Any]","titles":["liteyuki.config"]},"139":{"title":"def load_from_yaml(file_: str) -> dict[str, Any]","titles":["liteyuki.config"]},"140":{"title":"def load_from_json(file_: str) -> dict[str, Any]","titles":["liteyuki.config"]},"141":{"title":"def load_from_toml(file_: str) -> dict[str, Any]","titles":["liteyuki.config"]},"142":{"title":"def load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]","titles":["liteyuki.config"]},"143":{"title":"def load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]","titles":["liteyuki.config"]},"144":{"title":"def load_config_in_default(no_waring: bool = False) -> dict[str, Any]","titles":["liteyuki.config"]},"145":{"title":"liteyuki.core","titles":[]},"146":{"title":"liteyuki.core","titles":[]},"147":{"title":"liteyuki.core.manager","titles":[]},"148":{"title":"class ChannelDeliver","titles":["liteyuki.core.manager"]},"149":{"title":"def __init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]])","titles":["liteyuki.core.manager","class ChannelDeliver"]},"150":{"title":"class ProcessManager","titles":["liteyuki.core.manager"]},"151":{"title":"def __init__(self, lifespan: Lifespan)","titles":["liteyuki.core.manager","class ProcessManager"]},"152":{"title":"async def _run_process(self, name: str)","titles":["liteyuki.core.manager","class ProcessManager"]},"153":{"title":"async def start_all(self)","titles":["liteyuki.core.manager","class ProcessManager"]},"154":{"title":"def add_target(self, name: str, target: TARGET_FUNC, args: tuple = (), kwargs = None)","titles":["liteyuki.core.manager","class ProcessManager"]},"155":{"title":"def join_all(self)","titles":["liteyuki.core.manager","class ProcessManager"]},"156":{"title":"def terminate(self, name: str)","titles":["liteyuki.core.manager","class ProcessManager"]},"157":{"title":"def terminate_all(self)","titles":["liteyuki.core.manager","class ProcessManager"]},"158":{"title":"def is_process_alive(self, name: str) -> bool","titles":["liteyuki.core.manager","class ProcessManager"]},"159":{"title":"liteyuki.dev","titles":[]},"160":{"title":"liteyuki.dev","titles":[]},"161":{"title":"liteyuki.dev.observer","titles":[]},"162":{"title":"var CALLBACK_FUNC","titles":["liteyuki.dev.observer"]},"163":{"title":"var FILTER_FUNC","titles":["liteyuki.dev.observer"]},"164":{"title":"def debounce(wait)","titles":["liteyuki.dev.observer"]},"165":{"title":"class CodeModifiedHandler(FileSystemEventHandler)","titles":["liteyuki.dev.observer"]},"166":{"title":"def on_modified(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"167":{"title":"def on_created(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"168":{"title":"def on_deleted(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"169":{"title":"def on_moved(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"170":{"title":"def on_any_event(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"171":{"title":"def on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]","titles":["liteyuki.dev.observer"]},"172":{"title":"liteyuki.dev.plugin","titles":[]},"173":{"title":"def run_plugins(*module_path: str | Path)","titles":["liteyuki.dev.plugin"]},"174":{"title":"liteyuki.exception","titles":[]},"175":{"title":"class LiteyukiException(BaseException)","titles":["liteyuki.exception"]},"176":{"title":"liteyuki","titles":[]},"177":{"title":"var __version__","titles":["liteyuki"]},"178":{"title":"liteyuki.log","titles":[]},"179":{"title":"def get_format(level: str) -> str","titles":["liteyuki.log"]},"180":{"title":"def init_log(config: dict)","titles":["liteyuki.log"]},"181":{"title":"liteyuki.message.event","titles":[]},"182":{"title":"class MessageEvent","titles":["liteyuki.message.event"]},"183":{"title":"def __init__(self, bot_id: str, message: list[dict[str, Any]] | str, message_type: str, raw_message: str, session_id: str, user_id: str, session_type: str, receive_channel: Optional[Channel[MessageEvent]] = None, data: Optional[dict[str, Any]] = None)","titles":["liteyuki.message.event","class MessageEvent"]},"184":{"title":"def reply(self, message: str | dict[str, Any])","titles":["liteyuki.message.event","class MessageEvent"]},"185":{"title":"liteyuki.message","titles":[]},"186":{"title":"liteyuki.message.matcher","titles":[]},"187":{"title":"class Matcher","titles":["liteyuki.message.matcher"]},"188":{"title":"def __init__(self, rule: Rule, priority: int, block: bool)","titles":["liteyuki.message.matcher","class Matcher"]},"189":{"title":"def handle(self) -> Callable[[EventHandler], EventHandler]","titles":["liteyuki.message.matcher","class Matcher"]},"190":{"title":"async def run(self, event: MessageEvent) -> None","titles":["liteyuki.message.matcher","class Matcher"]},"191":{"title":"liteyuki.message","titles":[]},"192":{"title":"liteyuki.message.on","titles":[]},"193":{"title":"def add_matcher(matcher: Matcher)","titles":["liteyuki.message.on"]},"194":{"title":"def on_message(rule: Rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["liteyuki.message.on"]},"195":{"title":"def on_keywords(keywords: list[str], rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["liteyuki.message.on"]},"196":{"title":"liteyuki.message.rule","titles":[]},"197":{"title":"var RuleHandlerFunc","titles":["liteyuki.message.rule"]},"198":{"title":"class Rule","titles":["liteyuki.message.rule"]},"199":{"title":"def __init__(self, handler: RuleHandlerFunc)","titles":["liteyuki.message.rule","class Rule"]},"200":{"title":"def __or__(self, other: Rule) -> Rule","titles":["liteyuki.message.rule","class Rule"]},"201":{"title":"def __and__(self, other: Rule) -> Rule","titles":["liteyuki.message.rule","class Rule"]},"202":{"title":"async def __call__(self, event: MessageEvent) -> bool","titles":["liteyuki.message.rule","class Rule"]},"203":{"title":"async def empty_rule(event: MessageEvent) -> bool","titles":["liteyuki.message.rule"]},"204":{"title":"async def is_su_rule(event: MessageEvent) -> bool","titles":["liteyuki.message.rule"]},"205":{"title":"liteyuki.message.session","titles":[]},"206":{"title":"liteyuki.mkdoc","titles":[]},"207":{"title":"class DefType(Enum)","titles":["liteyuki.mkdoc"]},"208":{"title":"attr FUNCTION = 'function'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"209":{"title":"attr METHOD = 'method'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"210":{"title":"attr STATIC_METHOD = 'staticmethod'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"211":{"title":"attr CLASS_METHOD = 'classmethod'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"212":{"title":"attr PROPERTY = 'property'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"213":{"title":"class FunctionInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"214":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"215":{"title":"attr args: list[tuple[str, str]] = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"216":{"title":"attr return_type: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"217":{"title":"attr docstring: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"218":{"title":"attr source_code: str = ''","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"219":{"title":"attr type: DefType = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"220":{"title":"attr is_async: bool = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"221":{"title":"class AttributeInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"222":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"223":{"title":"attr type: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"224":{"title":"attr value: Any = None","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"225":{"title":"attr docstring: str = ''","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"226":{"title":"class ClassInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"227":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"228":{"title":"attr docstring: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"229":{"title":"attr methods: list[FunctionInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"230":{"title":"attr attributes: list[AttributeInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"231":{"title":"attr inherit: list[str] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"232":{"title":"class ModuleInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"233":{"title":"attr module_path: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"234":{"title":"attr functions: list[FunctionInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"235":{"title":"attr classes: list[ClassInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"236":{"title":"attr attributes: list[AttributeInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"237":{"title":"attr docstring: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"238":{"title":"def get_relative_path(base_path: str, target_path: str) -> str","titles":["liteyuki.mkdoc"]},"239":{"title":"def write_to_files(file_data: dict[str, str])","titles":["liteyuki.mkdoc"]},"240":{"title":"def get_file_list(module_folder: str)","titles":["liteyuki.mkdoc"]},"241":{"title":"def get_module_info_normal(file_path: str, ignore_private: bool = True) -> ModuleInfo","titles":["liteyuki.mkdoc"]},"242":{"title":"def generate_markdown(module_info: ModuleInfo, front_matter = None, lang: str = 'zh-CN') -> str","titles":["liteyuki.mkdoc"]},"243":{"title":"def generate_docs(module_folder: str, output_dir: str, with_top: bool = False, lang: str = 'zh-CN', ignored_paths = None)","titles":["liteyuki.mkdoc"]},"244":{"title":"var no_module_name_pyfile_path","titles":["liteyuki.mkdoc"]},"245":{"title":"liteyuki.plugin","titles":[]},"246":{"title":"def get_loaded_plugins() -> dict[str, Plugin]","titles":["liteyuki.plugin"]},"247":{"title":"liteyuki.plugin.load","titles":[]},"248":{"title":"def load_plugin(module_path: str | Path) -> Optional[Plugin]","titles":["liteyuki.plugin.load"]},"249":{"title":"def load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]","titles":["liteyuki.plugin.load"]},"250":{"title":"def format_display_name(display_name: str, plugin_type: PluginType) -> str","titles":["liteyuki.plugin.load"]},"251":{"title":"liteyuki.plugin.manager","titles":[]},"252":{"title":"liteyuki.plugin.model","titles":[]},"253":{"title":"class PluginType(Enum)","titles":["liteyuki.plugin.model"]},"254":{"title":"attr APPLICATION = 'application'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"255":{"title":"attr SERVICE = 'service'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"256":{"title":"attr MODULE = 'module'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"257":{"title":"attr UNCLASSIFIED = 'unclassified'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"258":{"title":"attr TEST = 'test'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"259":{"title":"class PluginMetadata(BaseModel)","titles":["liteyuki.plugin.model"]},"260":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"261":{"title":"attr description: str = ''","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"262":{"title":"attr usage: str = ''","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"263":{"title":"attr type: PluginType = PluginType.UNCLASSIFIED","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"264":{"title":"attr author: str = ''","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"265":{"title":"attr homepage: str = ''","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"266":{"title":"attr extra: dict[str, Any] = {}","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"267":{"title":"class Plugin(BaseModel)","titles":["liteyuki.plugin.model"]},"268":{"title":"def __hash__(self)","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"269":{"title":"attr model_config = {'arbitrary_types_allowed': True}","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"270":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"271":{"title":"attr module: ModuleType = NO_DEFAULT","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"272":{"title":"attr module_name: str = NO_DEFAULT","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"273":{"title":"attr metadata: Optional[PluginMetadata] = None","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"274":{"title":"liteyuki.plugin","titles":[]},"275":{"title":"def get_loaded_plugins() -> dict[str, Plugin]","titles":["liteyuki.plugin"]},"276":{"title":"liteyuki.plugins.liteecho","titles":[]},"277":{"title":"async def liteecho(event: MessageEvent)","titles":["liteyuki.plugins.liteecho"]},"278":{"title":"liteyuki.plugins.plugin_loader","titles":[]},"279":{"title":"def default_plugins_loader()","titles":["liteyuki.plugins.plugin_loader"]},"280":{"title":"liteyuki.plugins.plugin_loader","titles":[]},"281":{"title":"def default_plugins_loader()","titles":["liteyuki.plugins.plugin_loader"]},"282":{"title":"liteyuki.utils","titles":[]},"283":{"title":"def is_coroutine_callable(call: Callable[..., Any]) -> bool","titles":["liteyuki.utils"]},"284":{"title":"def run_coroutine(*coro: Coroutine)","titles":["liteyuki.utils"]},"285":{"title":"def run_coroutine_in_thread(*coro: Coroutine)","titles":["liteyuki.utils"]},"286":{"title":"def path_to_module_name(path: Path) -> str","titles":["liteyuki.utils"]},"287":{"title":"def async_wrapper(func: Callable[..., Any]) -> Callable[..., Coroutine]","titles":["liteyuki.utils"]},"288":{"title":"通道通信","titles":[]},"289":{"title":"简介","titles":["通道通信"]},"290":{"title":"示例","titles":["通道通信"]},"291":{"title":"共享内存通信","titles":["通道通信"]},"292":{"title":"简介","titles":["通道通信","共享内存通信"]},"293":{"title":"示例","titles":["通道通信","共享内存通信"]},"294":{"title":"轻雪函数","titles":[]},"295":{"title":"函数文件","titles":["轻雪函数"]},"296":{"title":"命令文档","titles":["轻雪函数"]},"297":{"title":"示例","titles":["轻雪函数","命令文档"]},"298":{"title":"API","titles":["轻雪函数"]},"299":{"title":"结束关键字","titles":["轻雪函数"]},"300":{"title":"简介","titles":[]},"301":{"title":"开始","titles":["简介"]},"302":{"title":"创建插件","titles":["简介","开始"]},"303":{"title":"编写逻辑部分","titles":["简介","开始"]},"304":{"title":"加载插件","titles":["简介","开始"]},"305":{"title":"方法1","titles":["简介","开始","加载插件"]},"306":{"title":"方法2","titles":["简介","开始","加载插件"]},"307":{"title":"简介","titles":[]},"308":{"title":"加载资源包","titles":["简介"]},"309":{"title":"用户协议","titles":[]},"310":{"title":"基础插件","titles":[]},"311":{"title":"轻雪命令liteyuki_command","titles":["基础插件"]},"312":{"title":"命令别名","titles":["基础插件","轻雪命令liteyuki_command"]},"313":{"title":"插件/包管理器 liteyuki_pacman","titles":["基础插件"]},"314":{"title":"命令别名","titles":["基础插件","插件/包管理器 liteyuki_pacman"]},"315":{"title":"用户管理liteyuki_user","titles":["基础插件"]},"316":{"title":"功能插件命令","titles":[]},"317":{"title":"轻雪天气liteyuki_weather","titles":["功能插件命令"]},"318":{"title":"命令别名","titles":["功能插件命令","轻雪天气liteyuki_weather"]},"319":{"title":"统计信息liteyuki_statistics","titles":["功能插件命令"]},"320":{"title":"命令别名","titles":["功能插件命令","统计信息liteyuki_statistics"]}},"dirtCount":0,"index":[["秒",{"2":{"319":2}}],["小时",{"2":{"319":2}}],["天",{"2":{"319":2}}],["天气",{"2":{"317":1,"318":1}}],["格式",{"2":{"319":1}}],["格式为onebot",{"2":{"311":1}}],["统计时间范围为duration",{"2":{"319":1}}],["统计周期为period",{"2":{"319":1}}],["统计信息",{"2":{"319":1}}],["统计信息liteyuki",{"0":{"319":1},"1":{"320":1}}],["功能",{"2":{"319":1}}],["功能插件命令",{"0":{"316":1},"1":{"317":1,"318":1,"319":1,"320":1}}],["个人全局生效",{"2":{"317":1}}],["个人信息",{"2":{"315":1}}],["绑定城市",{"2":{"318":1}}],["绑定查询城市",{"2":{"317":1}}],["绑定端口",{"2":{"1":1}}],["海淀",{"2":{"317":1}}],["北京",{"2":{"317":1}}],["受限于nonebot2钩子函数的依赖注入参数",{"2":{"314":1}}],["帮助",{"2":{"314":1}}],["列表",{"2":{"314":1}}],["列出所有资源包",{"2":{"313":1}}],["列出所有插件",{"2":{"313":1}}],["更改",{"2":{"314":1}}],["更新",{"2":{"314":1}}],["更新插件商店索引",{"2":{"313":1}}],["更新轻雪",{"2":{"311":1,"312":1}}],["更新轻雪失败",{"2":{"6":1}}],["全局停用",{"2":{"314":1}}],["全局启用",{"2":{"313":1,"314":1}}],["搜索",{"2":{"314":1}}],["卸载",{"2":{"314":2}}],["卸载资源包",{"2":{"313":1}}],["卸载插件",{"2":{"313":1}}],["私聊所有人可用",{"2":{"313":2}}],["私聊通常为用户id",{"2":{"183":1}}],["当前bot",{"2":{"319":1}}],["当前群聊",{"2":{"319":1}}],["当前会话启用",{"2":{"313":1}}],["当前的轻雪实例",{"2":{"37":2,"59":2}}],["包管理器",{"0":{"313":1},"1":{"314":1}}],["包括子task",{"2":{"296":1}}],["包括chromium",{"2":{"15":1}}],["切换图片模式",{"2":{"312":1}}],["切换到bot目录下",{"2":{"12":1}}],["状态",{"2":{"312":1}}],["别名",{"2":{"312":1,"314":1,"315":1,"318":1,"320":1}}],["别用你那b",{"2":{"15":1}}],["群号",{"2":{"311":1}}],["群聊",{"2":{"312":1}}],["群聊仅群主",{"2":{"311":1,"313":2}}],["群聊通常为群id",{"2":{"183":1}}],["管理员",{"2":{"311":1,"313":2}}],["停用插件",{"2":{"313":2}}],["停用",{"2":{"312":1,"314":1}}],["停用机器人",{"2":{"311":1}}],["停止后",{"2":{"76":2}}],["停止前",{"2":{"75":2}}],["停止",{"2":{"65":2}}],["停止轻雪",{"2":{"27":2,"30":2,"49":2,"52":2}}],["查询目标地实时天气",{"2":{"317":1}}],["查询实时天气",{"2":{"317":1}}],["查询",{"2":{"312":1,"315":1}}],["查询配置项",{"2":{"311":1}}],["查看用户信息菜单",{"2":{"315":1}}],["查看插件帮助",{"2":{"313":1}}],["查看轻雪文档",{"2":{"311":1}}],["查看统计信息和状态",{"2":{"311":1}}],["查看当前bot",{"2":{"311":1}}],["版本",{"2":{"311":1}}],["❌",{"2":{"311":11}}],["超级用户可用",{"2":{"311":1,"313":2}}],["超级用户",{"2":{"311":10,"313":10}}],["超级用户列表",{"2":{"1":1}}],["重载",{"2":{"314":1}}],["重载所有资源包",{"2":{"313":1}}],["重载资源",{"2":{"312":1}}],["重载轻雪",{"2":{"311":1}}],["重启轻雪",{"2":{"312":1}}],["重启轻雪即可加载插件",{"2":{"305":1}}],["重启轻雪本体",{"2":{"26":2,"48":2}}],["重启后",{"2":{"78":2}}],["重启前",{"2":{"77":2}}],["重启",{"2":{"65":2}}],["举例",{"2":{"311":1}}],["权限",{"2":{"311":1,"313":2,"315":1}}],["~代替",{"2":{"310":1}}],["~可以使用插件",{"2":{"310":1}}],["命令",{"2":{"311":1,"312":1,"313":2,"314":1,"315":2,"317":1,"318":1,"319":1,"320":1}}],["命令别名",{"0":{"312":1,"314":1,"318":1,"320":1},"2":{"310":1,"315":1}}],["命令文档",{"0":{"296":1},"1":{"297":1}}],["系统信息及python信息",{"2":{"309":1}}],["分钟",{"2":{"319":2}}],["分发",{"2":{"309":1}}],["分工明确",{"2":{"137":1}}],["修改优先级",{"2":{"313":1}}],["修改",{"2":{"309":1}}],["同时用户也应该自行选择可用的资源包",{"2":{"308":1}}],["同步接收数据",{"2":{"85":2}}],["第三方资源包开发者需要注意版本兼容性",{"2":{"308":1}}],["└─",{"2":{"308":1}}],["└───",{"2":{"308":1}}],["└─resource",{"2":{"308":2}}],["├─templates",{"2":{"308":1}}],["├─metadata",{"2":{"308":2}}],["正常的路径应该是这样的",{"2":{"308":1}}],["只需要将其解压到根目录resources目录下即可",{"2":{"308":1}}],["只负责处理和回应消息",{"2":{"6":1}}],["错位等无法预料的事情发生",{"2":{"307":1}}],["异常",{"2":{"307":1}}],["异步任务结束关键字",{"2":{"299":1}}],["异步等待",{"2":{"296":1}}],["异步包装器",{"2":{"287":2}}],["异步接收数据",{"2":{"86":2}}],["欢迎各位投稿资源包到轻雪资源商店",{"2":{"307":1}}],["部分异常信息",{"2":{"309":1}}],["部分内容制作需要一点点前端基础",{"2":{"307":1}}],["部分来源于",{"2":{"282":1}}],["讲起打包成一个新的资源包",{"2":{"307":1}}],["仅需按照原有路径进行文件替换即可",{"2":{"307":1}}],["资源",{"2":{"307":1}}],["资源包管理",{"2":{"313":1}}],["资源包的结构会随着轻雪的更新而有变动",{"2":{"308":1}}],["资源包的制作很简单",{"2":{"307":1}}],["资源包加载遵循一个优先级",{"2":{"308":1}}],["资源包描述",{"2":{"308":1}}],["资源包名称",{"2":{"308":1}}],["资源包通常是以",{"2":{"308":1}}],["资源包",{"2":{"307":1,"314":1}}],["它允许你一定程度上自定义轻雪的外观",{"2":{"307":1}}],["它允许你在轻雪中运行一些自定义的由数据驱动的命令",{"2":{"294":1}}],["亦可根据用途称为主题包",{"2":{"307":1}}],["保存后轻雪会自动重载nonebot进程",{"2":{"306":1}}],["保持轻雪运行",{"2":{"24":2,"46":2}}],["我们在src",{"2":{"306":1}}],["我们专门为minecraft开发的服务器bot",{"2":{"9":1}}],["方法2",{"0":{"306":1}}],["方法1",{"0":{"305":1}}],["用户管理liteyuki",{"0":{"315":1}}],["用户协议",{"0":{"309":1}}],["用observer的on",{"2":{"303":1}}],["用于统计bot接收到的消息",{"2":{"319":1}}],["用于开发nonebot时进行文件系统变更重载",{"2":{"303":1}}],["用于结束当前已完成function的执行",{"2":{"299":1}}],["用于回复消息",{"2":{"183":1}}],["用于获取和唯一标识",{"2":{"154":2}}],["用于进程间通信",{"2":{"79":1}}],["排除的文件扩展名",{"2":{"303":1}}],["因此插件主要是一些后台任务或者与聊天机器人的通信",{"2":{"303":1}}],["因此无法通过内存共享和直接对象传递的方式进行通信",{"2":{"289":1}}],["定义插件元数据",{"2":{"302":1}}],["定义变量",{"2":{"296":1}}],["导入轻雪bot和日志",{"2":{"303":1}}],["导入文件系统事件",{"2":{"303":1}}],["导入文件系统观察器",{"2":{"303":1}}],["导入文件夹下多个插件",{"2":{"249":2}}],["导入逻辑部分",{"2":{"302":1}}],["首先创建一个文件夹",{"2":{"302":1}}],["首次运行后生成config",{"2":{"0":1}}],["编写逻辑部分",{"0":{"303":1}}],["编写轻雪函数推荐你使用vs",{"2":{"299":1}}],["编辑时的语法高亮可采取shell格式",{"2":{"295":1}}],["那么加载b包后",{"2":{"308":1}}],["那么你能够很快就上手",{"2":{"307":1}}],["那么当前所有函数包的task都会被截停销毁",{"2":{"299":1}}],["那么将会被解析为nickname而不是命令",{"2":{"6":1}}],["的情况是效率提升的关键",{"2":{"299":1}}],["单线程走到底",{"2":{"299":1}}],["单位s",{"2":{"296":1}}],["避免出现",{"2":{"299":1}}],["所有人",{"2":{"311":1,"313":1,"315":3}}],["所有进程",{"2":{"27":2,"49":2}}],["所以在编写lyfunction时也要注意异步的调用",{"2":{"299":1}}],["由于liteyukibot基于异步运行",{"2":{"299":1}}],["理论上所有基于onebotv11的api都可调用",{"2":{"298":1}}],["则该文件夹不会被识别为资源包",{"2":{"308":1}}],["则需要删除await",{"2":{"297":1}}],["则传入泛型默认开启",{"2":{"81":2}}],["无需手动创建实例",{"2":{"306":1}}],["无需手动初始化bot",{"2":{"173":2}}],["无限戳",{"2":{"297":1}}],["执行",{"2":{"297":1}}],["疯狂戳好友",{"2":{"297":1}}],["否则会导致渲染失败或渲染结果不理想",{"2":{"307":1}}],["否则task对象会被销毁",{"2":{"296":1}}],["否则默认关闭",{"2":{"81":2}}],["等待所有异步任务结束",{"2":{"296":1}}],["等待接收数据",{"2":{"86":1}}],["结束关键字",{"0":{"299":1}}],["结束函数关键字",{"2":{"296":1}}],["结构",{"2":{"83":2}}],["也支持句末注释",{"2":{"295":1}}],["也可以监听其他进程的消息",{"2":{"289":1}}],["支持中英文",{"2":{"317":2}}],["支持中英文城市名",{"2":{"317":1}}],["支持多个关键词查询",{"2":{"317":1}}],["支持绑定城市",{"2":{"317":1}}],["支持单行注释",{"2":{"295":1}}],["支持onebotv11标准",{"2":{"9":1}}],["函数文件放在资源包的functions目录下",{"2":{"295":1}}],["函数文件",{"0":{"295":1}}],["属于资源包的一部分",{"2":{"294":1}}],["是可以相对引用的",{"2":{"308":1}}],["是轻雪的一个功能",{"2":{"294":1}}],["是否为协程可调用对象",{"2":{"283":2}}],["是否忽略警告",{"2":{"249":2}}],["是否忽略键不存在的错误",{"2":{"122":2}}],["是否包含顶层文件夹",{"2":{"243":2}}],["是否阻断后续优先级更低的匹配器",{"2":{"188":2}}],["是否递归监听子目录",{"2":{"171":2}}],["是否通过验证",{"2":{"83":2}}],["是否开启类型检查",{"2":{"81":2}}],["是否允许更新",{"2":{"2":1}}],["是否自动更新轻雪",{"2":{"1":1}}],["是否自动上报问题给轻雪服务器",{"2":{"1":1}}],["是否显示日志等级图标",{"2":{"1":1}}],["线程锁会自动保护共享内存的读写操作",{"2":{"292":1}}],["相比于普通进程通信",{"2":{"292":1}}],["相对路径",{"2":{"239":2}}],["共享内存通信",{"0":{"291":1},"1":{"292":1,"293":1}}],["共享内存模块",{"2":{"115":1}}],["被动模式",{"2":{"290":1}}],["被动模式由chan",{"2":{"290":1}}],["且通过安全的方式传输到轻雪的服务器",{"2":{"309":1}}],["且通道标识为",{"2":{"290":1}}],["且遵守了相关字体开源协议",{"2":{"10":1}}],["创建入口文件",{"2":{"306":1}}],["创建插件",{"0":{"302":1}}],["创建子进程的同时会初始化一个被动通道和一个主动通道",{"2":{"290":1}}],["创建asyncio",{"2":{"153":2}}],["实现",{"2":{"290":1}}],["实现端本身不负责处理响应逻辑",{"2":{"6":1}}],["主题包中的html渲染使用js来规定数据的渲染位置",{"2":{"307":1}}],["主题商店提供了一些资源包供你选择",{"2":{"307":1}}],["主动模式需调用chan",{"2":{"290":1}}],["主进程中",{"2":{"290":1}}],["主进程中通过get",{"2":{"290":1}}],["主进程接收到消息后重启对应子进程",{"2":{"289":1}}],["主进程订阅者接收函数",{"2":{"116":1}}],["主进程创建单例",{"2":{"91":1,"92":1}}],["即后加载的资源包会覆盖前面的资源包",{"2":{"308":1}}],["即可创建一个插件",{"2":{"302":1}}],["即不等待",{"2":{"296":1}}],["即被动模式和主动模式",{"2":{"290":1}}],["即轻雪作为服务端",{"2":{"3":1}}],["有一个task任务没有完成而await被执行了",{"2":{"299":1}}],["有两种接收模式",{"2":{"290":1}}],["有的插件安装后报错无法启动",{"2":{"6":1}}],["这时可以通过通道对主进程发送消息",{"2":{"289":1}}],["这里给出一个参考值",{"2":{"3":1}}],["里",{"2":{"289":1}}],["简介",{"0":{"289":1,"292":1,"300":1,"307":1},"1":{"301":1,"302":1,"303":1,"304":1,"305":1,"306":1,"308":1}}],["路径a",{"2":{"286":2}}],["转换路径为模块名",{"2":{"286":2}}],["判断是否为协程可调用对象",{"2":{"283":2}}],["一个",{"2":{"302":1}}],["一个键不要多次出现",{"2":{"137":1}}],["一些常用的工具类",{"2":{"282":1}}],["应在初始化时调用",{"2":{"279":2,"281":2}}],["根据不同类型插件设置颜色",{"2":{"250":2}}],["可用",{"2":{"311":1}}],["可用参数",{"2":{"311":1}}],["可以在配置文件中把auto",{"2":{"309":1}}],["可以在a的index",{"2":{"308":1}}],["可以在此基础上进行修改",{"2":{"307":1}}],["可以很高程度地扩展轻雪的功能",{"2":{"300":1}}],["可以是本地插件或是通过",{"2":{"248":2}}],["可递归",{"2":{"296":1}}],["可调用对象",{"2":{"283":2}}],["可使用ws",{"2":{"8":1}}],["插件停用只能阻断传入响应",{"2":{"314":1}}],["插件管理",{"2":{"313":1,"314":1}}],["插件",{"0":{"313":1},"1":{"314":1}}],["插件信息",{"2":{"309":1}}],["插件描述",{"2":{"302":1}}],["插件版本",{"2":{"302":1}}],["插件类型",{"2":{"250":2,"302":1}}],["插件名称",{"2":{"248":2,"250":2,"302":1}}],["插件字典",{"2":{"246":2,"275":2}}],["插件路径",{"2":{"173":2}}],["去头路径",{"2":{"244":1}}],["忽略的路径",{"2":{"243":2}}],["忽略私有函数和类",{"2":{"241":2}}],["模块名",{"2":{"286":2}}],["模块文件夹",{"2":{"243":2}}],["模块信息",{"2":{"241":2,"242":2}}],["\`pathlib",{"2":{"248":1}}],["\`path",{"2":{"248":1}}],["\`pip\`",{"2":{"248":1}}],["\`",{"2":{"242":14,"248":1}}],["字体包",{"2":{"307":1}}],["字符串",{"2":{"242":2}}],["字段",{"2":{"3":1}}],["语言包等",{"2":{"307":1}}],["语言",{"2":{"242":2,"243":2}}],["文件内容为一系列的命令",{"2":{"295":1}}],["文件名以",{"2":{"295":1}}],["文件夹路径",{"2":{"249":2}}],["文件路径",{"2":{"241":2}}],["文件数据",{"2":{"239":2}}],["输入值会被执行以转换为正确的类型",{"2":{"311":1}}],["输入playwright",{"2":{"6":1}}],["输出",{"2":{"295":1}}],["输出文件夹",{"2":{"243":2}}],["输出文件",{"2":{"239":2}}],["目标路径",{"2":{"238":2}}],["目前可用性较低",{"2":{"8":1}}],["目前markdown消息支持lagrange",{"2":{"8":1}}],["添加配置项",{"2":{"311":1}}],["添加sleep",{"2":{"297":1}}],["添加处理函数",{"2":{"189":2}}],["添加进程",{"2":{"154":2}}],["优先级",{"2":{"188":2}}],["规则函数签名",{"2":{"197":1}}],["规则",{"2":{"188":2}}],["匹配器",{"2":{"188":2}}],["回复消息",{"2":{"184":2}}],["附加数据",{"2":{"183":1}}],["原始消息",{"2":{"183":1}}],["原生实现",{"2":{"8":1}}],["消息类型",{"2":{"183":1}}],["消息段数组",{"2":{"183":1}}],["消息",{"2":{"183":1}}],["机器人id",{"2":{"183":1}}],["机器人昵称列表",{"2":{"1":1}}],["⭕",{"2":{"180":1}}],["⚠️",{"2":{"180":1}}],["✅",{"2":{"180":1}}],["ℹ️信息",{"2":{"290":4}}],["ℹ️",{"2":{"180":1}}],["🐛",{"2":{"180":1}}],["上午12",{"2":{"252":1}}],["上午11",{"2":{"147":1}}],["上午6",{"2":{"206":1}}],["上午9",{"2":{"178":1}}],["上午5",{"2":{"172":1}}],["事件过滤器",{"2":{"171":2}}],["事件循环",{"2":{"21":1,"43":1}}],["防抖函数",{"2":{"164":2}}],["防止获取空指针",{"2":{"132":1}}],["位置1为filesystemevent",{"2":{"162":1,"163":1}}],["启用",{"2":{"312":1,"314":1}}],["启用插件后",{"2":{"306":1}}],["启用该模块需要在配置文件中设置dev",{"2":{"161":1}}],["启动所有进程",{"2":{"153":2}}],["启动发布订阅接收器循环",{"2":{"127":2}}],["启动后控制台输出",{"2":{"290":1}}],["启动后",{"2":{"74":2}}],["启动前",{"2":{"73":2}}],["启动",{"2":{"65":2}}],["启动逻辑",{"2":{"22":2,"44":2}}],["启动容器",{"2":{"13":1}}],["启动bot",{"2":{"12":1}}],["启动时会加载项目目录下config",{"2":{"0":1}}],["此模块用于注册观察者函数",{"2":{"161":1}}],["检查进程是否存活",{"2":{"158":2}}],["终止进程并从进程字典中删除",{"2":{"156":2}}],["对于主动推送的插件不生效",{"2":{"314":1}}],["对于不同资源包的不同文件",{"2":{"308":1}}],["对外启动方法",{"2":{"153":2}}],["对公开放时建议设置",{"2":{"2":1}}],["项目目录下的配置文件优先",{"2":{"144":2}}],["项目目录下的配置文件优先级高于config目录下的配置文件",{"2":{"137":1}}],["项目目录下的config",{"2":{"144":2}}],["按照读取文件的优先级反向覆盖",{"2":{"143":2}}],["从一个标准的轻雪项目加载配置文件",{"2":{"144":2}}],["从目录下加载配置文件",{"2":{"143":2}}],["从指定文件加载配置项",{"2":{"142":2}}],["但请注意甄别第三方插件的安全性",{"2":{"309":1}}],["但请保证以上三个字段",{"2":{"308":1}}],["但若出现非单function的情况",{"2":{"299":1}}],["但需单独起篇幅",{"2":{"294":1}}],["但一个通道只能使用一种",{"2":{"290":1}}],["但也包含原有的键值对",{"2":{"138":2}}],["但是请保留原作者信息",{"2":{"309":1}}],["但是更加轻量级并且线程安全",{"2":{"115":1}}],["但是bot昵称有一个help",{"2":{"6":1}}],["但是基本上都是一样的",{"2":{"3":1}}],["但是部分内容会被覆盖",{"2":{"1":1}}],["扁平化后的配置文件",{"2":{"138":2}}],["扁平化配置文件",{"2":{"138":2}}],["扁平化编写",{"2":{"137":1}}],["注意不要嵌套文件夹",{"2":{"308":1}}],["注意冲突时的优先级",{"2":{"137":1}}],["注册一个函数在nonebot启动后运行",{"2":{"290":1}}],["注册一个函数在轻雪启动后运行",{"2":{"290":1}}],["注册文件系统变化监听器",{"2":{"171":2}}],["注册重启时的函数",{"2":{"71":2}}],["注册重启后的函数",{"2":{"36":2,"58":2,"72":2}}],["注册停止前的函数",{"2":{"69":2}}],["注册停止后的函数",{"2":{"33":2,"55":2,"70":2}}],["注册进程重启前的函数",{"2":{"35":2,"57":2}}],["注册进程停止前的函数",{"2":{"34":2,"56":2}}],["注册启动时的函数",{"2":{"67":2,"68":2}}],["注册启动后的函数",{"2":{"32":2,"54":2}}],["注册启动前的函数",{"2":{"31":2,"53":2}}],["45m",{"2":{"319":2}}],["44",{"2":{"185":1,"191":1}}],["4",{"2":{"137":1}}],["47",{"2":{"101":1,"181":1,"205":1}}],["每隔0",{"2":{"297":1}}],["每行一个命令",{"2":{"295":1}}],["每次接收到字符串数据时都会运行",{"2":{"290":1}}],["每3秒发送一次消息",{"2":{"290":1}}],["每个配置文件给一个或一类服务提供配置",{"2":{"137":1}}],["每天4点检查更新",{"2":{"1":1}}],["尽量不要冲突",{"2":{"137":1}}],["多配置文件编写原则",{"2":{"137":1}}],["引用计数",{"2":{"132":1}}],["运行环境的设备信息",{"2":{"309":1}}],["运行在主进程中",{"2":{"300":1}}],["运行协程",{"2":{"284":2}}],["运行处理函数",{"2":{"190":2}}],["运行插件",{"2":{"173":2}}],["运行订阅者接收函数",{"2":{"126":2}}],["运行接收函数",{"2":{"88":2}}],["订阅者接收消息时的回调",{"2":{"125":2}}],["频道",{"2":{"124":2,"125":2,"126":2}}],["发布消息",{"2":{"124":2}}],["发送函数为同步函数",{"2":{"84":2}}],["发送数据",{"2":{"84":2,"112":2}}],["删除键值对",{"2":{"122":2}}],["值",{"2":{"120":2,"121":2}}],["键值对",{"2":{"123":2}}],["键",{"2":{"120":2,"121":2,"122":2}}],["类似于minecraft的mcfunction",{"2":{"294":1}}],["类似于redis",{"2":{"115":1}}],["类型",{"2":{"90":1,"91":1,"92":1,"116":1,"117":1,"162":1,"163":1,"197":1}}],["关闭通道",{"2":{"114":2}}],["8",{"2":{"109":1,"139":1,"140":1,"141":1,"172":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"239":1,"241":1,"276":1,"277":1,"278":1,"280":1}}],["调用机器人函数",{"2":{"311":1}}],["调用机器人api",{"2":{"311":1}}],["调用重启进程方法",{"2":{"303":1}}],["调用函数",{"2":{"296":1}}],["调用bot",{"2":{"296":1}}],["调用",{"2":{"108":2}}],["通过关键词搜索插件",{"2":{"313":1}}],["通过装饰器注册一个函数在接收到消息时运行",{"2":{"290":1}}],["通常是目录不存在或目录为空",{"2":{"249":2}}],["通常为纯文本的格式",{"2":{"183":1}}],["通常会默认传入chan",{"2":{"154":2}}],["通信",{"2":{"105":1}}],["通道是全双工的",{"2":{"290":1}}],["通道通信",{"0":{"288":1},"1":{"289":1,"290":1,"291":1,"292":1,"293":1}}],["通道实例",{"2":{"93":2}}],["通道名称",{"2":{"93":2,"94":2,"95":2}}],["通道传递通道",{"2":{"91":1,"92":1}}],["通道id",{"2":{"81":2,"111":2}}],["依赖关系",{"2":{"100":1,"104":1}}],["设置用户信息或打开属性设置菜单",{"2":{"315":1}}],["设置",{"2":{"312":1,"315":1}}],["设置共享内存",{"2":{"293":1}}],["设置后的插件名称",{"2":{"250":2}}],["设置插件名称颜色",{"2":{"250":2}}],["设置键值对",{"2":{"120":2}}],["设置通道实例",{"2":{"93":2,"94":2}}],["设备上python环境太乱了",{"2":{"6":1}}],["子进程中获取通道直接导入进程全局单例即可",{"2":{"290":1}}],["子进程中导入单例active",{"2":{"290":1}}],["子进程订阅者接收函数",{"2":{"117":1}}],["子进程初始化时实例化",{"2":{"91":1,"92":1}}],["子进程可用的主动和被动通道",{"2":{"90":1}}],["装饰回调函数实现",{"2":{"290":1}}],["装饰一个函数在接收到数据后执行",{"2":{"87":2,"171":2}}],["装饰器",{"2":{"87":2,"125":2,"171":2,"189":4}}],["装置要求",{"0":{"15":1},"1":{"16":1}}],["过滤函数",{"2":{"87":2}}],["接收频道",{"2":{"183":1}}],["接收数据",{"2":{"113":2}}],["接收数据并执行函数",{"2":{"87":2}}],["接收到数据",{"2":{"86":1}}],["会触发最大递归深度限制",{"2":{"297":1}}],["会话负载信息",{"2":{"309":1}}],["会话类型",{"2":{"183":1}}],["会话id",{"2":{"183":1}}],["会阻塞",{"2":{"152":2}}],["会阻塞线程",{"2":{"85":2}}],["会自动判断key版本",{"2":{"317":1}}],["会自动判断主进程和子进程",{"2":{"89":2}}],["会自动识别文件格式",{"2":{"142":2}}],["会挂起等待",{"2":{"86":2}}],["没有异步的必要",{"2":{"84":2}}],["zip格式压缩的",{"2":{"308":1}}],["zip",{"2":{"83":1}}],["zh",{"0":{"242":1,"243":1},"2":{"2":1,"242":2,"243":1}}],["数据",{"2":{"83":2,"84":2,"88":2,"112":2,"113":2,"124":2,"126":2}}],["验证数据结构",{"2":{"83":2}}],["泛型类型",{"2":{"82":2}}],["并且应该在metadata",{"2":{"308":1}}],["并且不用修改源代码",{"2":{"307":1}}],["并在其中写入一些代码",{"2":{"306":1}}],["并在其中写入以下代码",{"2":{"306":1}}],["并在其中创建一个",{"2":{"302":1}}],["并遵循其许可进行修改",{"2":{"282":1}}],["并添加到进程字典中",{"2":{"152":2}}],["并发运行异步函数",{"2":{"66":2}}],["并使用克隆而非直接下载的方式部署轻雪",{"2":{"6":1}}],["下午3",{"2":{"109":1}}],["下午12",{"2":{"276":1}}],["下午10",{"2":{"101":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"278":1,"280":1}}],["下午11",{"2":{"79":1,"247":1,"251":1}}],["下午8",{"2":{"63":1}}],["下面已经列出一些推荐的实现端",{"2":{"6":1}}],["7",{"2":{"63":1,"79":1,"101":1,"147":1,"178":1,"247":1,"251":1,"252":1}}],["|$$$$$",{"2":{"40":1,"62":1}}],["|$$",{"2":{"40":5,"62":5}}],["|",{"0":{"66":1,"173":1,"183":1,"184":1,"248":1},"2":{"40":45,"62":45,"66":1,"173":1,"183":1,"184":1,"248":1}}],["+",{"2":{"40":2,"62":2,"242":2,"286":1}}],["+=",{"2":{"26":1,"48":1,"87":1,"242":15}}],["x26",{"2":{"195":1,"242":4}}],["x1b",{"2":{"40":2,"62":2}}],["x3c",{"2":{"26":1,"40":1,"48":1,"62":1,"180":5,"193":1,"242":8,"248":2,"250":4,"296":6,"317":2,"319":2}}],["兼容键",{"2":{"39":2,"61":2}}],["兼容旧版本",{"2":{"39":2,"61":2}}],["获取用户信息",{"2":{"315":1}}],["获取唯一的轻雪bot实例",{"2":{"303":1}}],["获取共享内存",{"2":{"293":1}}],["获取主动通道",{"2":{"290":1}}],["获取被动通道",{"2":{"290":1}}],["获取已加载的插件",{"2":{"246":2,"275":2}}],["获取函数和类",{"2":{"241":2}}],["获取相对路径",{"2":{"238":2}}],["获取所有键值对",{"2":{"123":2}}],["获取键值对",{"2":{"121":2}}],["获取通道实例",{"2":{"95":2,"96":2}}],["获取通道传递泛型类型",{"2":{"82":2}}],["获取配置",{"2":{"38":2,"39":2,"60":2,"61":2}}],["获取轻雪实例",{"2":{"37":2,"59":2}}],["返回true则执行回调函数",{"2":{"171":2}}],["返回",{"2":{"37":1,"38":1,"39":1,"59":1,"60":1,"61":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"82":1,"83":1,"87":1,"113":1,"121":1,"123":1,"125":1,"138":1,"171":1,"189":1,"241":1,"242":1,"246":1,"250":1,"275":1,"283":1,"286":1,"287":1}}],["为可选参数",{"2":{"310":1}}],["为必填参数",{"2":{"310":1}}],["为none则不过滤",{"2":{"87":2}}],["为子进程重启时调用",{"2":{"35":2,"57":2}}],["为子进程停止时调用",{"2":{"34":2,"56":2}}],["为什么我启动后机器人没有反应",{"2":{"6":1}}],["未实现",{"2":{"33":2,"36":2,"55":2,"58":2}}],["自定义选项title",{"2":{"242":2}}],["自动调用",{"2":{"28":2,"50":2}}],["自己整一个websocket客户端",{"2":{"8":1}}],["进程函数关键字参数",{"2":{"154":2}}],["进程函数参数",{"2":{"154":2}}],["进程函数",{"2":{"154":2}}],["进程名",{"2":{"154":2}}],["进程名称",{"2":{"27":2,"49":2}}],["进入轻雪目录",{"2":{"13":1}}],["join",{"0":{"155":1},"2":{"26":1,"48":1,"143":1,"155":2,"156":1,"240":1,"242":4,"243":1,"249":2,"286":2}}],["js",{"2":{"8":1}}],["json",{"0":{"140":1},"2":{"0":1,"140":5,"142":2,"144":1}}],["json和toml作为配置文件",{"2":{"0":1}}],["future",{"2":{"284":1}}],["func=none",{"2":{"171":1}}],["func=lambda",{"2":{"96":1,"97":2,"98":2,"99":1,"290":1}}],["function实现语法高亮",{"2":{"299":1}}],["functiondef",{"2":{"241":3}}],["functioninfo",{"0":{"213":1,"229":1,"234":1},"1":{"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1},"2":{"241":2}}],["function",{"0":{"208":2},"2":{"89":1,"241":3,"294":1,"296":1,"297":2,"311":3}}],["functions=",{"2":{"241":1}}],["functions",{"0":{"234":1},"2":{"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"241":1,"242":1}}],["funcs",{"0":{"66":2,"88":1,"116":1,"117":1,"126":1},"2":{"65":6,"66":5,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":2,"74":2,"75":2,"76":2,"77":2,"78":2,"87":1,"88":3,"89":1,"125":6,"126":2,"127":1}}],["func",{"0":{"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"66":2,"67":3,"68":3,"69":3,"70":3,"71":3,"72":3,"87":2,"107":1,"125":2,"154":1,"162":1,"163":1,"171":3,"287":1},"2":{"31":5,"32":5,"33":5,"34":5,"35":5,"36":5,"53":5,"54":5,"55":5,"56":5,"57":5,"58":5,"65":6,"66":6,"67":9,"68":9,"69":9,"70":9,"71":9,"72":9,"81":2,"87":20,"88":6,"89":1,"107":1,"116":1,"117":1,"125":8,"126":2,"154":1,"164":2,"171":7,"241":2,"242":9,"283":2,"287":5,"296":1}}],["failed",{"2":{"248":1}}],["false时例如docs",{"2":{"243":2}}],["false",{"0":{"142":1,"143":1,"144":1,"194":1,"195":1,"243":1},"2":{"2":4,"81":2,"83":4,"111":1,"119":2,"283":1}}],["first",{"2":{"241":2}}],["filter=lambda",{"2":{"303":1}}],["filter",{"0":{"87":2,"163":1,"171":2},"2":{"87":8,"96":1,"97":2,"98":2,"99":1,"171":6,"290":1}}],["filesystemeventhandler",{"0":{"165":1},"1":{"166":1,"167":1,"168":1,"169":1,"170":1}}],["filesystemevent",{"2":{"162":1,"163":1,"171":1,"303":2}}],["files",{"0":{"142":2,"239":1},"2":{"142":3,"143":1,"144":1,"239":1,"240":2,"243":1}}],["file",{"0":{"139":1,"140":1,"141":1,"171":1,"239":1,"240":1,"241":1},"2":{"63":1,"79":1,"101":1,"109":1,"139":5,"140":5,"141":5,"142":12,"143":3,"147":1,"171":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"239":4,"240":7,"241":9,"243":6,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1,"303":3}}],["flat",{"0":{"138":1},"2":{"138":2,"139":1,"140":1,"141":1}}],["flag",{"2":{"65":1}}],["friend",{"2":{"297":2}}],["front",{"0":{"242":1},"2":{"242":6,"243":3}}],["from",{"0":{"139":1,"140":1,"141":1,"142":1,"143":1},"2":{"85":1,"139":4,"140":4,"141":4,"142":4,"143":2,"144":2,"290":4,"302":1,"303":3}}],["frame",{"0":{"25":1,"47":1},"2":{"25":3,"47":3}}],["folder",{"0":{"240":1,"243":1},"2":{"240":2,"243":5,"244":1}}],["found",{"2":{"84":1,"93":1,"142":1,"143":1,"152":1,"156":1,"158":1}}],["format=get",{"2":{"180":1}}],["formats",{"2":{"143":1}}],["format",{"0":{"179":1,"250":1},"2":{"142":1,"179":3,"180":1,"248":2,"250":1}}],["for",{"2":{"27":1,"39":1,"49":1,"61":1,"66":1,"81":1,"83":3,"88":2,"89":2,"94":1,"126":1,"138":2,"142":1,"143":2,"153":3,"155":1,"157":1,"171":1,"190":1,"193":1,"195":1,"239":1,"240":2,"241":12,"242":9,"243":3,"249":2,"279":2,"281":2,"284":2,"302":1}}],["f",{"2":{"26":1,"27":2,"39":1,"48":1,"49":2,"61":1,"81":4,"84":1,"89":2,"93":2,"138":1,"139":1,"140":1,"141":1,"142":2,"143":1,"152":4,"156":2,"158":1,"239":2,"242":19,"243":1,"248":5,"249":9,"250":1,"284":1,"290":2,"303":1}}],["505468b及以后的lagrange",{"2":{"311":1}}],["59",{"2":{"247":1,"251":1}}],["55",{"2":{"196":1}}],["52",{"2":{"192":1}}],["51",{"2":{"186":1}}],["54",{"2":{"109":1}}],["5",{"2":{"24":1,"46":1,"137":1}}],["外部启动接口",{"2":{"23":2,"45":2}}],["kill",{"2":{"156":1}}],["k",{"2":{"83":4,"138":2,"242":2}}],["keyword",{"2":{"195":2}}],["keywords为城市名",{"2":{"317":2}}],["keywords",{"0":{"195":2},"2":{"195":5,"313":1,"317":2}}],["keyerror",{"2":{"122":1,"152":1}}],["keyvaluestore",{"0":{"118":1},"1":{"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1},"2":{"129":1}}],["keys",{"0":{"39":1,"61":1},"2":{"39":4,"61":4}}],["key",{"0":{"38":1,"39":1,"60":1,"61":1,"120":1,"121":1,"122":2},"2":{"38":4,"39":11,"60":4,"61":11,"120":7,"121":7,"122":13,"133":3,"134":3,"135":3,"138":2,"293":2,"311":4,"315":2,"317":1}}],["keyboardinterrupt",{"2":{"23":1,"24":1,"45":1,"46":1}}],["keep",{"0":{"24":1,"46":1},"2":{"22":1,"24":1,"44":1,"46":1}}],["kwargs=none",{"2":{"154":1}}],["kwargs=self",{"2":{"152":1}}],["kwargs",{"0":{"21":1,"28":1,"43":1,"50":1,"66":1,"108":1,"154":1},"2":{"21":4,"28":1,"43":4,"50":1,"66":3,"108":2,"154":5,"164":2,"287":2,"311":2}}],["echo",{"2":{"295":3}}],["emsp",{"2":{"242":4}}],["empty",{"0":{"194":1,"195":1,"203":1},"2":{"203":1,"248":1,"249":1}}],["email",{"2":{"63":1,"79":1,"101":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["enable",{"2":{"311":2,"312":1,"313":2,"314":2}}],["end",{"2":{"296":1}}],["endswith",{"2":{"142":3,"143":1,"240":1,"249":1,"303":1}}],["ensure",{"2":{"284":1}}],["enum",{"0":{"207":1,"253":1},"1":{"208":1,"209":1,"210":1,"211":1,"212":1,"254":1,"255":1,"256":1,"257":1,"258":1}}],["enumerate",{"2":{"193":1}}],["encoding=",{"2":{"139":1,"140":1,"141":1,"239":1,"241":1}}],["enforcing",{"2":{"81":1}}],["e",{"2":{"122":2,"248":1,"250":1,"284":2}}],["errors=true",{"2":{"243":1}}],["error",{"0":{"122":1},"2":{"122":4,"180":2,"284":1}}],["else",{"2":{"26":1,"27":1,"37":1,"48":1,"49":1,"59":1,"66":1,"81":1,"87":2,"88":1,"93":1,"95":1,"96":1,"120":1,"121":1,"122":1,"123":1,"125":2,"139":1,"140":1,"141":1,"152":1,"179":1,"180":5,"193":1,"241":9,"242":10,"243":2,"248":2,"284":1,"286":1}}],["elif",{"2":{"26":2,"48":2,"81":1,"83":3,"87":1,"142":4,"152":1,"241":5,"248":2,"249":1}}],["extensions",{"2":{"303":2}}],["extend",{"2":{"173":1}}],["extra",{"0":{"266":1}}],["exclude",{"2":{"303":2}}],["exc",{"2":{"190":1,"248":1}}],["exception模块包含了liteyuki运行中的所有错误",{"2":{"174":1}}],["exception",{"0":{"174":1},"1":{"175":1},"2":{"190":1,"248":1,"284":2}}],["except",{"2":{"23":1,"24":1,"45":1,"46":1,"122":1,"190":1,"248":1,"284":2}}],["executor",{"2":{"86":1}}],["executable",{"2":{"26":3,"48":3}}],["exist",{"2":{"249":1}}],["exists",{"2":{"81":2,"93":1,"142":1,"143":1,"239":1,"249":2}}],["exit",{"0":{"25":1,"47":1},"2":{"21":2,"25":2,"26":1,"43":2,"47":2,"48":1}}],["event装饰器监听文件系统事件",{"2":{"303":1}}],["events",{"2":{"303":1}}],["eventhandler",{"0":{"189":2},"2":{"188":1,"189":4}}],["event",{"0":{"101":1,"102":1,"166":1,"167":1,"168":1,"169":1,"170":2,"171":2,"181":1,"190":1,"202":1,"203":1,"204":1,"277":1},"1":{"102":1,"103":2,"182":1,"183":1,"184":1},"2":{"21":4,"24":1,"30":1,"43":4,"46":1,"52":1,"100":1,"101":1,"104":1,"166":1,"167":2,"168":2,"169":2,"170":3,"171":9,"181":1,"184":2,"190":5,"195":2,"200":3,"201":3,"202":2,"203":1,"204":2,"277":3,"284":2,"303":8}}],["信号处理",{"2":{"21":1,"25":2,"43":1,"47":2}}],["加载",{"2":{"314":1}}],["加载资源包",{"0":{"308":1},"2":{"313":1}}],["加载插件",{"0":{"304":1},"1":{"305":1,"306":1}}],["加载插件加载器",{"2":{"21":1,"43":1}}],["加载单个插件",{"2":{"248":2}}],["加入qq群775840726",{"2":{"7":1}}],["生成文档",{"2":{"243":2}}],["生成模块的markdown",{"2":{"242":2}}],["生命周期管理",{"2":{"21":1,"43":1}}],["生产环境中推荐反向websocket",{"2":{"3":1}}],["初始化通道",{"2":{"81":2,"111":2}}],["初始化轻雪",{"2":{"28":2,"50":2}}],["初始化轻雪实例",{"2":{"21":2,"43":2}}],["初始化",{"2":{"21":1,"43":1}}],["=none",{"2":{"27":1,"49":1,"81":1,"87":1,"121":1,"183":2}}],["==",{"2":{"26":3,"48":3,"89":1,"96":1,"97":2,"98":2,"99":1,"127":1,"132":1,"133":2,"134":2,"135":2,"136":1,"152":2,"179":1,"241":4,"242":2,"286":1}}],["=",{"0":{"26":1,"27":1,"38":1,"39":1,"48":1,"49":1,"60":1,"61":1,"81":1,"87":1,"121":1,"122":1,"130":1,"131":1,"142":1,"143":1,"144":1,"154":2,"171":2,"183":2,"194":3,"195":3,"208":1,"209":1,"210":1,"211":1,"212":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"227":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"241":1,"242":2,"243":3,"249":1,"254":1,"255":1,"256":1,"257":1,"258":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"269":1,"270":1,"271":1,"272":1,"273":1},"2":{"21":7,"26":6,"27":2,"43":7,"48":6,"49":2,"65":7,"66":2,"81":10,"83":1,"84":1,"85":1,"86":2,"87":1,"89":2,"93":1,"95":1,"96":1,"97":1,"98":1,"99":1,"103":2,"107":1,"111":4,"119":6,"120":2,"121":2,"122":1,"123":1,"125":2,"127":1,"129":1,"133":3,"134":2,"135":1,"136":1,"138":2,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":5,"151":3,"152":4,"154":5,"156":1,"164":3,"171":2,"173":4,"180":1,"183":10,"184":1,"188":5,"194":1,"199":1,"240":1,"241":17,"242":16,"243":13,"248":12,"249":6,"250":5,"283":1,"284":2,"286":1,"287":1,"290":5,"293":1,"302":1,"303":2}}],[">=",{"2":{"188":1}}],[">",{"2":{"21":1,"37":1,"38":1,"39":1,"43":1,"59":1,"60":1,"61":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"82":1,"83":1,"85":1,"86":1,"87":3,"95":1,"96":1,"107":1,"108":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"138":2,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"158":1,"164":1,"171":2,"179":1,"189":2,"190":1,"194":1,"195":1,"200":2,"201":2,"202":1,"203":1,"204":1,"238":1,"241":1,"242":3,"243":1,"246":1,"248":1,"249":1,"250":3,"275":1,"283":1,"286":2,"287":1,"317":2}}],["在群聊启用",{"2":{"311":1}}],["在普通图片和markdown大图之间切换",{"2":{"311":1}}],["在b中定义了templates",{"2":{"308":1}}],["在配置文件中的liteyuki",{"2":{"305":1}}],["在设备上执行命令",{"2":{"296":1}}],["在发信器输出",{"2":{"295":1}}],["在任意进程中均可使用",{"2":{"293":1}}],["在子进程中",{"2":{"290":1}}],["在轻雪插件中",{"2":{"290":1}}],["在新线程中运行协程",{"2":{"285":2}}],["在语言加载完成后执行",{"2":{"180":2}}],["在主进程中运行",{"2":{"127":2}}],["在github上查看",{"2":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"103":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"129":1,"133":1,"134":1,"135":1,"136":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"277":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1}}],["在安全模式下你可以使用npm",{"2":{"6":1}}],["或插件路径",{"2":{"248":2}}],["或",{"2":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"103":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"129":1,"133":1,"134":1,"135":1,"136":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"277":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1,"319":2}}],["源代码",{"2":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"103":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"129":1,"133":1,"134":1,"135":1,"136":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"238":1,"239":1,"240":1,"241":1,"242":2,"243":1,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"277":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1,"293":1}}],["参考\`liteyuki",{"2":{"173":1}}],["参考liteyuki",{"2":{"173":1}}],["参考值",{"2":{"3":1}}],["参数列表",{"2":{"311":2}}],["参数为调用set",{"2":{"290":1}}],["参数",{"2":{"21":1,"25":1,"27":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"38":1,"39":1,"43":1,"47":1,"49":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"81":1,"83":1,"84":1,"87":1,"88":1,"93":1,"94":1,"95":1,"111":1,"112":1,"120":1,"121":1,"122":1,"124":1,"125":1,"126":1,"138":1,"152":1,"154":1,"156":1,"158":1,"171":1,"173":1,"184":1,"188":1,"190":1,"238":1,"239":1,"241":1,"242":1,"243":1,"248":2,"249":2,"250":1,"283":1,"284":1,"285":1,"286":1,"287":1,"310":1,"319":1}}],["31",{"2":{"276":1}}],["34m",{"2":{"40":1,"62":1}}],["3",{"2":{"18":1,"137":1,"177":1,"249":1,"290":1}}],["6",{"2":{"18":1,"177":1}}],["测试版本号",{"2":{"18":1,"177":1}}],["至少1gb空间",{"2":{"15":1}}],["至少1vcpu",{"2":{"15":1}}],["硬盘",{"2":{"15":1}}],["及",{"2":{"15":1}}],["内存共享是线程安全的",{"2":{"292":1}}],["内存共享使得代码编写更加简洁",{"2":{"292":1}}],["内存",{"2":{"15":1,"309":1}}],["不带key返回配置项列表",{"2":{"311":1}}],["不包含任何隐私信息",{"2":{"309":1}}],["不含隐私部分",{"2":{"309":1}}],["不含插件数据",{"2":{"309":1}}],["不同adapter",{"2":{"298":1}}],["不同的实现端给出的字段可能不同",{"2":{"3":1}}],["不递归",{"2":{"143":2}}],["不要出现过多的嵌套",{"2":{"137":1}}],["不是liteyukibot官方提供的功能",{"2":{"14":1}}],["该功能需要commit",{"2":{"311":1}}],["该功能由trss提供支持",{"2":{"14":1}}],["该模块封装通道实现",{"2":{"292":1}}],["该模块用于存放一些开发工具",{"2":{"159":1,"160":1}}],["该模块用于常用配置文件的加载",{"2":{"137":1}}],["该模块用于轻雪主进程和nonebot子进程之间的通信",{"2":{"100":1,"104":1}}],["该步骤为必要项",{"2":{"12":1}}],["weather",{"0":{"317":1},"1":{"318":1},"2":{"317":1,"318":1}}],["world",{"2":{"295":5}}],["w",{"2":{"239":1}}],["write",{"0":{"239":1},"2":{"239":2,"243":1}}],["wrapper",{"0":{"287":1},"2":{"66":1,"87":2,"125":4,"154":1,"164":2,"171":2,"287":4}}],["watchdog",{"2":{"303":1,"306":1}}],["watch",{"2":{"302":1,"303":1}}],["walk",{"2":{"240":1,"241":1}}],["wait",{"0":{"164":1},"2":{"164":2}}],["waring=no",{"2":{"144":1}}],["waring",{"0":{"143":1,"144":1},"2":{"143":3,"144":3}}],["warning=no",{"2":{"143":1,"144":1}}],["warning",{"0":{"142":1,"249":1},"2":{"15":2,"39":1,"61":1,"89":1,"142":5,"143":1,"152":1,"156":1,"158":1,"180":2,"248":1,"249":9,"299":1,"314":1}}],["will",{"2":{"39":1,"61":1}}],["with",{"0":{"39":1,"61":1,"243":1},"2":{"39":1,"61":1,"120":1,"121":1,"122":1,"129":1,"239":1,"241":1,"242":5,"243":4}}],["windows",{"2":{"15":1,"26":1,"48":1}}],["windows系统版本最低windows10+",{"2":{"15":1}}],["windows请使用项目绝对目录",{"2":{"13":1}}],["while",{"2":{"24":1,"46":1,"85":1,"89":1,"127":1,"152":1,"290":2}}],["ws",{"2":{"3":2}}],["$$$$",{"2":{"40":1,"62":1}}],["$$$$$",{"2":{"40":1,"62":1}}],["$$$$$$$$",{"2":{"40":4,"62":4}}],["$$$$$$",{"2":{"40":5,"62":5}}],["$$",{"2":{"40":54,"62":54}}],["$",{"2":{"13":2}}],["构建镜像",{"2":{"13":1}}],["克隆项目",{"2":{"13":1}}],["克隆项目到本地",{"2":{"12":1}}],["使用通用日期简写",{"2":{"319":2}}],["使用此项目代表你已经同意以上协议",{"2":{"309":1}}],["使用开发工具快速运行插件",{"2":{"306":1}}],["使用",{"2":{"297":1}}],["使用新的task执行命令",{"2":{"296":1}}],["使用watchdog监控文件变化并重启bot",{"2":{"161":1}}],["使用trss",{"0":{"14":1}}],["使用docker构建",{"0":{"13":1}}],["使用其他项目连接请先自行查阅文档",{"2":{"9":1}}],["b包也定义了一个index",{"2":{"308":1}}],["block",{"0":{"188":1,"194":1,"195":1},"2":{"188":5,"194":2,"195":2}}],["blue>",{"2":{"180":1}}],["bases",{"2":{"241":1}}],["base",{"0":{"238":1},"2":{"238":4,"241":2}}],["basemodel",{"0":{"213":1,"221":1,"226":1,"232":1,"259":1,"267":1},"1":{"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"227":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1}}],["baseexception",{"0":{"175":1}}],["bash",{"2":{"12":1}}],["break",{"2":{"152":1,"193":1}}],["b",{"2":{"138":3,"243":4,"286":4,"320":1}}],["body",{"2":{"241":1}}],["bool=false",{"2":{"142":1,"143":1,"144":1,"194":1,"195":1,"243":1}}],["bool=true",{"2":{"122":1,"171":1,"241":1,"249":1}}],["bool",{"0":{"81":1,"83":1,"122":1,"142":1,"143":1,"144":1,"158":1,"171":1,"188":1,"194":1,"195":1,"202":1,"203":1,"204":1,"220":1,"241":1,"243":1,"249":1,"283":1},"2":{"81":1,"83":3,"158":1,"163":1,"188":1,"197":1,"200":1,"201":1,"202":1,"203":1,"204":1,"283":3}}],["bot",{"0":{"19":1,"37":1,"41":1,"59":1,"63":1,"183":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"21":2,"37":4,"38":1,"39":4,"43":2,"59":4,"60":1,"61":4,"173":2,"183":4,"184":2,"290":4,"295":1,"303":2,"311":1,"319":3,"320":1}}],["bot无其他插件会占用300~500mb",{"2":{"15":1}}],["be",{"2":{"39":1,"61":1,"84":1,"87":1,"93":1,"166":1}}],["before",{"0":{"31":1,"34":1,"35":1,"53":1,"56":1,"57":1,"67":1,"69":1,"71":1,"73":1,"75":1,"77":1},"2":{"22":1,"31":2,"34":2,"35":2,"44":1,"53":2,"56":2,"57":2,"65":3,"67":2,"69":2,"71":2,"73":3,"75":3,"77":3,"152":3}}],["build",{"2":{"13":1}}],["bind",{"2":{"318":1}}],["bin",{"2":{"12":1}}],["help",{"2":{"313":1,"314":1}}],["hello",{"2":{"295":5,"311":1}}],["html中用",{"2":{"308":1}}],["html",{"2":{"308":1}}],["html文件会被覆盖",{"2":{"308":1}}],["html文件",{"2":{"308":2}}],["https",{"2":{"12":1,"13":1}}],["homepage",{"0":{"265":1}}],["host",{"2":{"1":1}}],["hash",{"0":{"268":1},"2":{"268":2}}],["hasattr",{"2":{"82":1}}],["handlers",{"2":{"188":1,"189":1,"190":1}}],["handler",{"0":{"199":1},"2":{"171":3,"189":5,"190":2,"199":3,"200":4,"201":4,"202":2}}],["handle",{"0":{"25":1,"47":1,"189":1},"2":{"21":2,"25":1,"43":2,"47":1,"189":1,"276":1,"277":1}}],["hint",{"2":{"81":1,"241":1,"242":1}}],["环境",{"2":{"12":1}}],["和风天气的天气key",{"2":{"317":1}}],["和10是不一样的",{"2":{"311":1}}],["和config目录下的所有配置文件",{"2":{"144":2}}],["和",{"2":{"12":1,"311":1}}],["常规操作",{"2":{"21":1,"43":1}}],["常规部署",{"0":{"12":1}}],["常见问题",{"0":{"6":1}}],["安装插件",{"2":{"313":1}}],["安装的插件",{"2":{"248":2}}],["安装依赖",{"2":{"12":1}}],["安装",{"0":{"11":1},"1":{"12":1,"13":1,"14":1,"15":1,"16":1},"2":{"12":1,"13":1,"310":1,"314":1}}],["安全模式",{"2":{"2":1}}],["鸣谢",{"0":{"10":1}}],["然后运行python",{"2":{"306":1}}],["然后使用",{"2":{"12":1}}],["然后给轻雪传输数据",{"2":{"8":1}}],["然后用",{"2":{"6":1}}],["看着qq的消息",{"2":{"8":1}}],["人工实现的onebot协议",{"2":{"8":1}}],["需要在最后调用",{"2":{"296":1}}],["需要在对应进程都调度一次",{"2":{"89":2}}],["需要官方机器人权限",{"2":{"8":1}}],["需要安装ntqq",{"2":{"8":1}}],["g",{"2":{"250":1,"320":1}}],["group",{"2":{"183":2,"311":9,"312":1,"313":2,"319":3,"320":1}}],["green>",{"2":{"180":1}}],["gather",{"2":{"66":1,"284":1}}],["generate",{"0":{"242":1,"243":1},"2":{"242":1,"243":3}}],["generic",{"0":{"80":1,"82":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1},"2":{"81":2,"82":1,"84":1}}],["gensokyo",{"2":{"8":1}}],["getattr",{"2":{"283":1}}],["get",{"0":{"37":1,"38":1,"39":1,"59":1,"60":1,"61":1,"82":1,"95":1,"96":1,"98":1,"99":1,"121":1,"123":1,"129":1,"133":1,"136":1,"179":1,"238":1,"240":1,"241":1,"246":1,"275":1},"2":{"27":2,"37":2,"38":3,"39":5,"49":2,"59":2,"60":3,"61":5,"66":1,"81":2,"82":2,"84":1,"86":1,"95":2,"96":2,"97":1,"98":4,"99":3,"120":1,"121":4,"122":1,"123":2,"129":1,"132":1,"133":3,"135":1,"136":3,"152":1,"153":1,"173":1,"179":1,"180":2,"238":1,"240":1,"241":5,"243":3,"244":1,"246":1,"248":3,"249":1,"275":1,"279":2,"281":2,"284":1,"290":8,"293":1,"303":2,"311":3,"312":1,"315":2}}],["globalkeyvaluestore",{"0":{"128":1},"1":{"129":1,"130":1,"131":1}}],["global",{"2":{"21":1,"43":1,"87":1,"313":2,"314":2}}],["gt",{"0":{"21":1,"37":1,"38":1,"39":1,"43":1,"59":1,"60":1,"61":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"82":1,"83":1,"85":1,"86":1,"87":1,"95":1,"96":1,"107":1,"108":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"158":1,"171":1,"179":1,"189":1,"190":1,"194":1,"195":1,"200":1,"201":1,"202":1,"203":1,"204":1,"238":1,"241":1,"242":1,"246":1,"248":1,"249":1,"250":1,"275":1,"283":1,"286":1,"287":1},"2":{"100":3,"104":3,"138":1,"188":1,"286":1,"310":1,"311":7,"313":10,"315":2}}],["github",{"2":{"12":1,"13":1}}],["git",{"2":{"12":2,"13":1}}],["golang",{"2":{"8":1}}],["go语言实现的onebot11实现端",{"2":{"8":1}}],["go",{"2":{"8":1}}],["occurred",{"2":{"284":1}}],["output",{"0":{"243":1},"2":{"243":6}}],["outlook",{"2":{"63":1,"79":1,"101":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["other",{"0":{"200":1,"201":1},"2":{"183":1,"200":2,"201":2}}],["observer",{"0":{"161":1},"1":{"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1},"2":{"171":1,"303":2}}],["os",{"2":{"142":1,"143":3,"238":1,"239":4,"240":2,"241":1,"243":2,"249":9,"303":2}}],["of",{"2":{"84":1,"93":1,"248":1}}],["order",{"2":{"243":1}}],["or",{"0":{"200":1},"2":{"83":1,"200":2,"241":4}}],["orig",{"2":{"82":2}}],["only",{"2":{"87":1}}],["on",{"0":{"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"87":1,"88":1,"97":1,"98":1,"99":1,"107":2,"116":1,"117":1,"125":3,"133":1,"134":1,"135":1,"136":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"192":1,"194":1,"195":1},"1":{"193":1,"194":1,"195":1},"2":{"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"81":2,"87":4,"88":3,"89":3,"96":1,"97":3,"98":3,"99":2,"107":4,"108":1,"116":1,"117":1,"125":11,"126":1,"132":1,"133":3,"134":3,"135":3,"136":2,"166":2,"167":2,"168":2,"169":2,"170":2,"171":2,"192":1,"194":1,"195":4,"276":1,"277":1,"290":6,"303":1}}],["onebot",{"2":{"2":1,"3":1,"8":2,"298":1,"311":1}}],["option",{"2":{"310":1}}],["optional",{"0":{"27":1,"49":1,"81":1,"82":1,"87":1,"121":2,"183":2,"248":1,"273":1},"2":{"27":1,"49":1,"81":1,"82":3,"87":1,"119":2,"121":3,"183":2,"248":1}}],["opt",{"2":{"248":3}}],["open",{"2":{"26":1,"48":1,"139":1,"140":1,"141":1,"239":1,"241":1}}],["openshamrock",{"2":{"8":1}}],["基础插件",{"0":{"310":1},"1":{"311":1,"312":1,"313":1,"314":1,"315":1}}],["基础路径",{"2":{"238":2}}],["基础配置项",{"0":{"1":1}}],["基于ipc",{"2":{"105":1}}],["基于",{"2":{"8":1}}],["基于node",{"2":{"8":1}}],["基于ntqq的onebot实现",{"2":{"8":1}}],["基于lsposed的onebot11实现",{"2":{"8":1}}],["qq群号",{"2":{"319":1}}],["qq官方机器人api",{"2":{"8":1}}],["qq",{"0":{"8":1}}],["quot",{"2":{"3":2,"299":2,"311":2,"317":4}}],["推荐私聊使用",{"2":{"311":1}}],["推荐在编写html时同时更改对应js代码",{"2":{"307":1}}],["推荐ubuntu",{"2":{"15":1}}],["推荐使用arch",{"2":{"14":1}}],["推荐使用虚拟环境来运行轻雪",{"2":{"12":1}}],["推荐使用反向ws协议进行通信",{"2":{"3":1}}],["推荐方案",{"0":{"8":1,"9":1}}],["仍然出现问题",{"2":{"6":1}}],["将消息按照onebot标准处理好上报给轻雪",{"2":{"6":1}}],["提供",{"2":{"6":1}}],["登录功能由实现端",{"2":{"6":1}}],["本项目不会收集用户的任何隐私信息",{"2":{"309":1}}],["本项目不负责实现登录功能",{"2":{"6":1}}],["本项目遵循mit协议",{"2":{"309":1}}],["本模块用于实现rpc",{"2":{"105":1}}],["本模块定义了一个通用的通道类",{"2":{"79":1}}],["本机默认为127",{"2":{"3":1}}],["例如npm",{"2":{"310":1}}],["例如nonebot插件中",{"2":{"290":1}}],["例如你在a中定义了templates",{"2":{"308":1}}],["例如html",{"2":{"307":1}}],["例如main",{"2":{"306":1}}],["例如watchdog",{"2":{"302":1,"305":1}}],["例如",{"2":{"295":2,"308":1,"317":1}}],["例如test",{"2":{"295":1,"306":1}}],["例如子进程接收到用户信息需要重启机器人",{"2":{"289":1}}],["例如qq",{"2":{"6":1}}],["例如一个命令是help",{"2":{"6":1}}],["怎么登录聊天平台",{"2":{"6":1}}],["报错invalidgitrepositoryerror",{"2":{"6":1}}],["冲突",{"2":{"6":1}}],["确认插件必要配置项完好后",{"2":{"6":1}}],["确认命令头没有和nickname",{"2":{"6":1}}],["确认你有权限使用命令并按照正确的命令发送",{"2":{"6":1}}],["其中",{"2":{"6":1}}],["其他插件框架进程是伴随的子进程",{"2":{"289":1}}],["其他插件占用视具体插件而定",{"2":{"15":1}}],["其他插件自带的调试功能也将开启",{"2":{"2":1}}],["其他问题请移步至",{"0":{"16":1}}],["其他问题",{"0":{"7":1}}],["其他",{"0":{"4":1}}],["其他nonebot插件的配置项",{"2":{"2":1}}],["其他配置",{"0":{"2":1}}],["r>",{"2":{"248":2}}],["rv",{"2":{"243":2}}],["rk",{"2":{"243":2}}],["rmtree",{"2":{"243":1}}],["rpm",{"2":{"313":5,"314":1}}],["rp",{"2":{"239":4}}],["rpc",{"0":{"105":1,"106":1},"1":{"106":1,"107":2,"108":2},"2":{"100":1,"104":1}}],["rule=is",{"2":{"276":1,"277":1}}],["rule=empty",{"2":{"194":1,"195":1}}],["rulehandlerfunc",{"0":{"197":1,"199":1},"2":{"199":1}}],["rule",{"0":{"188":2,"194":3,"195":2,"196":1,"198":1,"200":2,"201":2,"203":1,"204":1},"1":{"197":1,"198":1,"199":2,"200":2,"201":2,"202":2,"203":1,"204":1},"2":{"188":6,"190":1,"194":3,"195":5,"196":1,"200":3,"201":3,"202":1,"203":3,"204":2,"276":1,"277":1}}],["running",{"2":{"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"86":1,"89":1,"119":2,"284":2}}],["runtimeerror",{"2":{"37":2,"59":2,"84":1,"85":1,"87":1,"125":1,"127":1,"284":1}}],["run",{"0":{"22":1,"23":1,"44":1,"45":1,"66":1,"88":1,"126":1,"152":1,"173":1,"190":1,"284":1,"285":1},"2":{"13":1,"22":1,"23":3,"44":1,"45":3,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"86":1,"88":1,"89":1,"126":1,"127":1,"152":1,"153":1,"173":2,"190":1,"284":3,"285":1,"306":2}}],["raw",{"0":{"183":1},"2":{"183":4,"184":1,"195":1,"277":1}}],["raise",{"2":{"37":2,"59":2,"81":3,"84":2,"85":1,"87":1,"93":2,"122":1,"125":1,"127":1,"152":1,"166":1}}],["rights",{"2":{"63":1,"79":1,"101":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["root",{"2":{"13":1,"240":2}}],["readme",{"2":{"243":2}}],["read",{"2":{"241":1}}],["reload",{"2":{"311":1,"312":2,"313":1,"314":1}}],["reloading",{"2":{"303":1}}],["rel",{"2":{"243":4,"286":5}}],["relpath",{"2":{"238":1}}],["relative",{"0":{"238":1},"2":{"238":1,"243":1,"244":1,"286":1}}],["replace",{"2":{"241":3,"242":4,"243":8}}],["reply",{"0":{"184":1},"2":{"184":3,"277":1}}],["report设定为false",{"2":{"309":1}}],["report",{"2":{"1":1,"309":1}}],["red>",{"2":{"180":1}}],["remove",{"2":{"180":1}}],["ref",{"0":{"132":1}}],["required",{"2":{"81":1}}],["requirements",{"2":{"6":1,"12":1,"15":1}}],["recursive=recursive",{"2":{"171":1}}],["recursive",{"0":{"171":1},"2":{"171":3}}],["receive",{"0":{"85":1,"86":1,"87":1,"88":1,"89":1,"113":1,"116":1,"117":1,"125":3,"126":1,"127":1,"183":1},"2":{"81":3,"85":2,"86":2,"87":4,"88":3,"89":7,"95":1,"96":2,"97":2,"98":2,"99":1,"113":1,"116":1,"117":1,"119":2,"121":1,"123":1,"125":11,"126":2,"127":4,"132":1,"133":2,"134":2,"135":2,"136":1,"152":1,"153":2,"183":4,"184":3,"290":11}}],["received",{"2":{"25":1,"47":1,"152":1}}],["recv",{"2":{"81":2,"85":2,"95":5,"96":5,"98":3,"99":3,"111":1,"121":5,"123":5,"133":3,"136":3}}],["resources",{"2":{"307":1,"308":1,"312":1}}],["resolve",{"2":{"286":2}}],["reserved",{"2":{"63":1,"79":1,"101":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["restarting",{"2":{"26":1,"48":1,"152":1}}],["restart",{"0":{"26":1,"27":1,"35":1,"36":1,"48":1,"49":1,"57":1,"58":1,"71":1,"72":1,"77":1,"78":1},"2":{"21":1,"26":3,"27":1,"35":2,"36":2,"43":1,"48":3,"49":1,"57":2,"58":2,"65":2,"71":2,"72":2,"77":3,"78":3,"152":1,"303":2}}],["return",{"0":{"216":1},"2":{"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":3,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":3,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"82":2,"83":8,"85":1,"86":1,"87":6,"89":1,"95":2,"96":2,"108":1,"121":2,"123":2,"125":2,"129":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"156":1,"158":1,"164":3,"171":3,"179":2,"189":2,"190":1,"194":1,"195":2,"200":2,"201":2,"202":2,"203":1,"204":1,"238":1,"240":1,"241":3,"242":3,"246":1,"248":2,"249":1,"250":1,"268":1,"275":1,"283":3,"286":2,"287":2}}],["returns",{"2":{"24":1,"25":1,"26":1,"27":1,"28":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"46":1,"47":1,"48":1,"49":1,"50":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"82":1,"83":1,"87":1,"95":1,"96":1,"113":1,"121":1,"122":1,"123":1,"124":1,"125":1,"138":1,"152":1,"156":1,"158":1,"171":1,"180":1,"184":1,"189":1,"190":1,"241":5,"242":1,"246":1,"250":1,"275":1,"283":1,"284":1,"285":1,"286":1,"287":1}}],["registered",{"2":{"89":1}}],["register",{"2":{"21":1,"43":1}}],["r",{"2":{"6":1,"12":1,"15":1,"139":1,"140":1,"141":1,"241":1}}],["msg",{"2":{"311":1}}],["mcfunction",{"2":{"295":2}}],["mkdir",{"2":{"243":1}}],["mkdoc",{"0":{"206":1},"1":{"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1},"2":{"206":1}}],["md",{"2":{"243":15}}],["member",{"2":{"311":1}}],["memory",{"2":{"119":3,"132":1,"133":3,"134":3,"135":3,"136":2,"153":1,"154":1,"293":3}}],["meta",{"2":{"248":4,"302":1}}],["metadata",{"0":{"273":1},"2":{"248":13}}],["methods=",{"2":{"241":1}}],["methods",{"0":{"229":1},"2":{"241":1,"242":1}}],["method",{"0":{"209":2,"210":1,"211":1},"2":{"241":5,"242":13}}],["message=",{"2":{"184":1,"311":1}}],["message=message",{"2":{"184":1}}],["messageevent",{"0":{"182":1,"183":1,"190":1,"202":1,"203":1,"204":1,"277":1},"1":{"183":1,"184":1},"2":{"183":1,"184":1,"190":1,"195":1,"197":1,"200":1,"201":1,"202":1,"203":1,"204":1,"277":1}}],["message",{"0":{"181":1,"183":3,"184":1,"185":1,"186":1,"191":1,"192":1,"194":1,"196":1,"205":1},"1":{"182":1,"183":1,"184":1,"187":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1},"2":{"183":12,"184":6,"194":1,"195":2,"277":1,"319":1,"320":1}}],["moved",{"0":{"169":1},"2":{"169":1}}],["moduletype",{"0":{"271":1}}],["module=module",{"2":{"248":1}}],["moduleinfo",{"0":{"232":1,"241":1,"242":1},"1":{"233":1,"234":1,"235":1,"236":1,"237":1},"2":{"241":2,"242":1}}],["module",{"0":{"173":1,"233":1,"240":1,"241":1,"242":1,"243":1,"244":1,"248":1,"256":2,"271":1,"272":1,"286":1},"2":{"173":4,"240":2,"241":11,"242":6,"243":26,"244":1,"248":27,"249":9,"250":1,"268":1,"286":1}}],["modified",{"0":{"166":1},"2":{"166":2,"167":1,"168":1,"169":1,"170":1,"171":4}}],["model",{"0":{"252":1,"269":1},"1":{"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1},"2":{"252":1}}],["mode为true",{"2":{"161":1}}],["mode",{"2":{"2":2,"6":1,"311":2,"312":1}}],["must",{"2":{"84":1,"93":1,"166":1}}],["match",{"2":{"250":1}}],["matcher",{"0":{"186":1,"187":1,"193":3,"194":1,"195":1},"1":{"187":1,"188":2,"189":2,"190":2},"2":{"186":1,"193":9,"194":6,"195":1}}],["matter=none",{"2":{"242":1}}],["matter",{"0":{"242":1},"2":{"242":5,"243":3}}],["markdown",{"0":{"242":1},"2":{"242":3,"243":1}}],["makedirs",{"2":{"239":1}}],["manually",{"2":{"81":1}}],["manager",{"0":{"147":1,"251":1},"1":{"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1},"2":{"21":2,"22":1,"26":1,"27":1,"43":2,"44":1,"48":1,"49":1,"147":1,"251":1}}],["maplemono提供的字体",{"2":{"10":1}}],["mainprocess",{"2":{"289":1}}],["main",{"0":{"116":1},"2":{"6":1,"12":1,"37":1,"59":1,"81":4,"87":4,"88":2,"89":1,"93":1,"95":1,"96":1,"119":1,"120":1,"121":1,"122":1,"123":1,"125":5,"126":1,"127":1,"290":6,"306":1}}],["misans",{"2":{"10":1}}],["minecraftonebot",{"2":{"9":1}}],["minecraft",{"0":{"9":1}}],["m",{"2":{"6":1,"12":1,"15":1,"193":2,"250":1,"320":1}}],["答疑",{"0":{"5":1},"1":{"6":1,"7":1,"8":1,"9":1,"10":1}}],["要使用其他通信方式请访问onebot",{"2":{"3":1}}],["如果你接触过minecraft的资源包",{"2":{"307":1}}],["如果你想同时输出多行内容可以尝试换行符",{"2":{"295":1}}],["如果你没有安装git直接下载源代码运行",{"2":{"15":1}}],["如果你给轻雪配置了accesstoken",{"2":{"3":1}}],["如果装置上有多个环境",{"2":{"15":1}}],["如需自定义请手动添加",{"2":{"2":1}}],["version=",{"2":{"302":1}}],["version",{"0":{"18":1,"177":1},"2":{"308":1}}],["venv来创建虚拟环境",{"2":{"12":1}}],["venv",{"2":{"12":3}}],["validate",{"0":{"83":1},"2":{"83":4,"84":1}}],["value=ast",{"2":{"241":1}}],["values",{"2":{"153":1}}],["value",{"0":{"120":1,"224":1},"2":{"120":6,"134":3,"138":3,"241":6,"242":3,"293":2,"311":2,"315":1}}],["valueerror",{"2":{"81":2,"93":1}}],["value2",{"2":{"2":1}}],["value1",{"2":{"2":1}}],["var=value",{"2":{"296":1}}],["var2=value2",{"2":{"296":1}}],["var1=value1>",{"2":{"296":1}}],["var",{"0":{"18":1,"90":1,"91":1,"92":1,"116":1,"117":1,"132":1,"162":1,"163":1,"177":1,"197":1,"244":1},"2":{"242":2}}],["v",{"2":{"13":2,"138":2,"242":2}}],["v11协议api",{"2":{"311":2}}],["v11",{"2":{"3":1,"298":1}}],["地址取决于配置文件",{"2":{"3":1}}],["地址",{"2":{"3":1}}],["反向websocket",{"2":{"3":1}}],["协议端",{"2":{"6":1}}],["协议",{"2":{"3":1}}],["说明",{"2":{"3":1,"18":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"63":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"100":1,"101":1,"104":1,"105":1,"108":1,"109":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"132":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"147":1,"152":1,"153":1,"154":1,"156":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"171":1,"172":1,"173":1,"174":1,"177":1,"178":1,"180":1,"181":1,"183":1,"184":1,"185":1,"186":1,"188":1,"189":1,"190":1,"191":1,"192":1,"196":1,"197":1,"205":1,"206":1,"238":1,"239":1,"241":1,"242":1,"243":1,"244":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"275":1,"276":1,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"284":1,"285":1,"286":1,"287":1,"311":1,"313":2,"315":1}}],["与nonebot对接的onebot实现端配置",{"0":{"3":1}}],["示例",{"0":{"3":1,"290":1,"293":1,"297":1}}],["监听目录们",{"2":{"171":2}}],["监听地址",{"2":{"1":1}}],["监视文件变化并自动重载",{"2":{"2":1}}],["开始",{"0":{"301":1},"1":{"302":1,"303":1,"304":1,"305":1,"306":1}}],["开始接收数据",{"2":{"89":2}}],["开发者模式",{"2":{"2":1}}],["开发者选项",{"2":{"2":1}}],["开启后自动监控进程",{"2":{"152":2}}],["开启后将会启动监视者",{"2":{"2":1}}],["开启后将不会加载任何第三方nonebot插件",{"2":{"2":1}}],["开启会自动重载bot或者资源",{"2":{"2":1}}],["2s戳两次",{"2":{"297":1}}],["22",{"2":{"276":1}}],["27",{"2":{"147":1,"178":1}}],["25",{"2":{"109":1}}],["21",{"2":{"79":1}}],["26",{"2":{"79":1,"101":1}}],["24",{"2":{"63":1,"252":1}}],["23",{"2":{"63":1,"206":1,"247":1,"251":1}}],["20代替空格",{"2":{"311":1}}],["20和end",{"2":{"297":1}}],["2024",{"2":{"63":2,"79":2,"101":2,"109":2,"147":2,"172":2,"178":2,"181":2,"185":2,"186":2,"191":2,"192":2,"196":2,"205":2,"206":2,"247":2,"251":2,"252":2,"276":2,"278":2,"280":2}}],["2020",{"2":{"63":1,"79":1,"101":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["20216中的20216替换为你的端口号",{"2":{"13":1}}],["20216",{"2":{"1":1,"3":2,"13":2}}],["20",{"2":{"15":1}}],["2019+",{"2":{"15":1}}],["2",{"2":{"2":1,"137":1,"152":1,"297":1,"308":1}}],["建议1gb以上",{"2":{"15":1}}],["建议开启",{"2":{"2":1}}],["建议迁移到liteyuki下",{"2":{"1":1}}],["默认普通图片",{"2":{"311":1}}],["默认开启",{"2":{"309":1}}],["默认插件加载器",{"2":{"279":2,"281":2}}],["默认执行扁平化选项",{"2":{"142":2,"143":2}}],["默认为none",{"2":{"27":2,"49":2}}],["默认为本机",{"2":{"1":1}}],["默认值",{"2":{"18":1,"38":2,"39":2,"60":2,"61":2,"90":1,"91":1,"92":1,"116":1,"117":1,"121":2,"132":1,"162":1,"163":1,"177":1,"197":1,"244":1}}],["默认false",{"2":{"2":1}}],["默认语言",{"2":{"2":1}}],["city",{"2":{"317":1,"318":1}}],["css相对路径引用b中的css",{"2":{"308":1}}],["css",{"2":{"307":1,"308":1}}],["cwd",{"2":{"286":1}}],["cfg",{"2":{"173":4}}],["current|bot",{"2":{"319":1}}],["current|group",{"2":{"319":1}}],["current",{"2":{"164":3,"319":2,"320":1}}],["custom",{"2":{"2":4}}],["created",{"0":{"167":1},"2":{"167":1}}],["create",{"2":{"88":2,"126":1,"153":3}}],["child",{"2":{"241":2}}],["check",{"0":{"81":1},"2":{"81":9,"84":1}}],["change",{"2":{"313":1,"314":1}}],["changed",{"2":{"303":1}}],["channel时的通道标识",{"2":{"290":1}}],["channel即可",{"2":{"290":1}}],["channel及passive",{"2":{"290":1}}],["channel函数获取通道对象",{"2":{"290":2}}],["channel=none",{"2":{"184":1}}],["channeldeliver",{"0":{"148":1},"1":{"149":1},"2":{"154":1}}],["channelv2",{"2":{"109":1}}],["channels",{"0":{"94":2,"96":1,"99":1},"2":{"94":5,"96":2,"98":1,"99":3,"153":1}}],["channel",{"0":{"79":1,"80":1,"90":1,"91":1,"92":2,"93":3,"94":1,"95":2,"96":1,"97":1,"98":1,"109":1,"124":1,"125":1,"126":1,"149":8,"183":2},"1":{"80":1,"81":2,"82":2,"83":2,"84":2,"85":2,"86":2,"87":2,"88":2,"89":2,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"110":1,"111":1,"112":1,"113":1,"114":1},"2":{"27":2,"49":2,"79":1,"81":7,"84":1,"85":1,"90":3,"91":3,"92":2,"93":19,"94":4,"95":8,"96":9,"97":11,"98":7,"99":2,"100":2,"104":2,"119":4,"121":1,"123":1,"124":5,"125":9,"126":4,"127":2,"149":12,"152":1,"154":12,"183":5,"184":2,"290":12}}],["chan",{"2":{"27":4,"49":4,"95":5,"96":5,"98":3,"99":3,"119":2,"120":1,"121":6,"122":1,"123":6,"124":1,"127":1,"132":1,"133":5,"134":2,"135":2,"136":4,"152":2,"153":2,"154":2}}],["c",{"2":{"63":1,"79":1,"101":1,"109":1,"138":3,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"250":1,"251":1,"252":1,"276":1,"278":1,"280":1,"284":4,"286":4,"320":1}}],["cmd",{"2":{"26":5,"48":5,"295":2,"296":1}}],["case",{"2":{"250":4}}],["category",{"2":{"242":2,"243":2}}],["cannot",{"2":{"84":1,"85":1,"125":1,"127":1}}],["can",{"2":{"37":1,"59":1,"87":1}}],["calling",{"0":{"107":2},"2":{"107":4,"108":1}}],["callback",{"0":{"162":1,"171":2},"2":{"87":1,"88":2,"171":4}}],["callable",{"0":{"87":3,"125":1,"171":1,"189":1,"283":2,"287":2},"2":{"66":1,"87":7,"125":2,"151":1,"162":1,"163":1,"171":1,"189":1,"197":1,"283":2,"287":6}}],["call",{"0":{"108":1,"202":1,"283":1},"2":{"21":1,"26":2,"43":1,"48":2,"108":1,"164":4,"202":1,"283":8}}],["cache",{"2":{"13":2}}],["cls",{"0":{"129":1},"2":{"129":6,"241":1,"242":11}}],["close",{"0":{"114":1},"2":{"114":1,"284":1}}],["closed",{"2":{"81":1,"84":2,"85":2,"89":1,"111":1}}],["clone",{"2":{"12":1,"13":1}}],["classdef",{"2":{"241":3}}],["classes=",{"2":{"241":1}}],["classes",{"0":{"235":1},"2":{"241":1,"242":1}}],["classinfo",{"0":{"226":1,"235":1},"1":{"227":1,"228":1,"229":1,"230":1,"231":1},"2":{"241":1}}],["classmethod",{"0":{"211":1},"2":{"128":1,"129":1,"241":1}}],["class",{"0":{"20":1,"42":1,"64":1,"80":1,"102":1,"106":1,"110":1,"118":1,"128":1,"148":1,"150":1,"165":1,"175":1,"182":1,"187":1,"198":1,"207":1,"211":1,"213":1,"221":1,"226":1,"232":1,"253":1,"259":1,"267":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"103":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"129":1,"130":1,"131":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"166":1,"167":1,"168":1,"169":1,"170":1,"183":1,"184":1,"188":1,"189":1,"190":1,"199":1,"200":1,"201":1,"202":1,"208":1,"209":1,"210":1,"211":1,"212":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"227":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"254":1,"255":1,"256":1,"257":1,"258":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1},"2":{"82":2,"241":24,"242":2}}],["cpu",{"2":{"15":1,"309":1}}],["centos",{"2":{"15":1}}],["cd",{"2":{"12":1,"13":1}}],["cqhttp",{"2":{"8":1}}],["color",{"2":{"250":7}}],["colors=true",{"2":{"248":3}}],["color=",{"2":{"180":5}}],["code插件liteyuki",{"2":{"299":1}}],["code=ast",{"2":{"241":2}}],["code",{"0":{"218":1},"2":{"171":3,"242":6,"243":2}}],["codemodifiedhandler",{"0":{"165":1},"1":{"166":1,"167":1,"168":1,"169":1,"170":1},"2":{"171":1}}],["coro",{"0":{"284":1,"285":1},"2":{"284":6,"285":3}}],["coroutine",{"0":{"283":1,"284":2,"285":2,"287":1},"2":{"66":1,"87":2,"125":1,"197":1,"283":1,"284":2,"285":3,"287":3}}],["core",{"0":{"145":1,"146":1,"147":1},"1":{"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1}}],["copy",{"2":{"138":1}}],["copyright",{"2":{"63":1,"79":1,"101":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["content",{"2":{"241":2,"242":17,"243":2}}],["continue",{"2":{"143":1,"152":1,"241":1,"243":1,"249":3}}],["conn",{"2":{"81":4,"84":1,"85":1,"111":2}}],["configs",{"0":{"143":1},"2":{"143":1,"144":1}}],["config=self",{"2":{"29":1,"51":1}}],["config",{"0":{"38":1,"39":1,"60":1,"61":1,"137":1,"138":2,"144":1,"180":1,"269":1},"1":{"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1},"2":{"2":2,"21":2,"29":1,"38":2,"39":6,"43":2,"51":1,"60":2,"61":6,"138":10,"139":7,"140":7,"141":7,"142":7,"143":4,"144":9,"173":1,"180":3,"279":2,"281":2,"311":4,"312":1}}],["count",{"0":{"132":1},"2":{"21":1,"26":2,"43":1,"48":2}}],["combined",{"2":{"200":2,"201":2}}],["comm",{"0":{"79":1,"100":1,"101":1,"104":1,"105":1,"109":1,"115":1},"1":{"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"102":1,"103":1,"106":1,"107":1,"108":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1},"2":{"290":2,"293":2}}],["command>",{"2":{"296":2}}],["command",{"0":{"311":1},"1":{"312":1},"2":{"1":2}}],["complete",{"2":{"284":2}}],["completion",{"2":{"2":1}}],["compat",{"0":{"39":2,"61":2},"2":{"39":9,"61":9}}],["com",{"2":{"12":1,"13":1,"63":1,"79":1,"101":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["cn",{"0":{"242":1,"243":1},"2":{"2":1,"242":2,"243":1}}],["duration>",{"2":{"319":1}}],["duration",{"2":{"319":2,"320":1}}],["driver",{"2":{"290":4}}],["dog",{"2":{"302":1,"303":1}}],["does",{"2":{"249":1}}],["dot",{"2":{"241":1}}],["docs",{"0":{"243":1},"2":{"243":5,"311":1,"312":1}}],["docstring=method",{"2":{"241":1}}],["docstring=module",{"2":{"241":1}}],["docstring=class",{"2":{"241":1}}],["docstring=function",{"2":{"241":1}}],["docstring",{"0":{"217":1,"225":1,"228":1,"237":1},"2":{"241":16,"242":12}}],["docker",{"2":{"13":3}}],["d",{"2":{"83":4,"132":2,"133":4,"134":4,"135":4,"136":2,"286":4,"320":1}}],["daemon=true",{"2":{"152":1,"285":1}}],["data=",{"2":{"184":1}}],["data",{"0":{"83":1,"84":1,"88":1,"97":1,"98":1,"99":1,"103":1,"112":1,"124":1,"126":1,"133":1,"134":1,"135":1,"136":1,"183":1,"239":1},"2":{"83":12,"84":7,"85":2,"86":2,"87":5,"88":5,"89":2,"96":2,"97":7,"98":7,"99":4,"103":3,"112":3,"113":2,"124":5,"125":3,"126":4,"127":6,"133":4,"134":3,"135":2,"136":2,"152":4,"183":7,"239":6,"243":5,"290":7}}],["darwin",{"2":{"26":1,"48":1}}],["disable",{"2":{"311":1,"312":1,"313":2,"314":2}}],["display",{"0":{"250":2},"2":{"248":7,"250":5}}],["diagnose=false",{"2":{"180":1}}],["dir",{"0":{"243":1,"249":1},"2":{"243":6,"249":17,"279":2,"281":2}}],["dirname",{"2":{"239":2}}],["directory",{"2":{"143":6,"171":2,"249":1}}],["directories=",{"2":{"303":1}}],["directories",{"0":{"143":1,"171":1},"2":{"143":2,"171":4}}],["dirs",{"0":{"143":1},"2":{"1":1,"143":1,"144":1,"240":1,"279":1,"281":1}}],["dict",{"0":{"94":1,"96":1,"97":1,"98":1,"99":1,"103":1,"108":1,"123":1,"133":1,"134":1,"135":1,"136":1,"138":2,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"180":1,"183":2,"184":1,"239":1,"246":1,"266":1,"275":1},"2":{"21":1,"43":1,"83":2,"91":1,"94":1,"96":2,"97":1,"98":1,"99":1,"103":1,"108":1,"116":1,"117":1,"119":2,"123":4,"133":1,"134":1,"135":1,"136":1,"138":3,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":3,"180":1,"183":3,"184":1,"239":1,"243":1,"246":3,"248":6,"275":3}}],["description=",{"2":{"302":1}}],["description",{"0":{"261":1},"2":{"308":1}}],["details>",{"2":{"242":4}}],["debounce",{"0":{"164":1},"2":{"164":1,"165":1,"166":1}}],["debug",{"2":{"2":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":2,"89":1,"139":1,"140":1,"141":1,"179":2,"180":2,"303":1}}],["deepcopy",{"2":{"138":1}}],["del",{"2":{"122":2}}],["deleted",{"0":{"168":1},"2":{"168":1}}],["delete",{"0":{"122":1,"135":1},"2":{"122":2,"134":1,"135":3}}],["delivery",{"2":{"154":1}}],["deliver",{"0":{"92":1,"149":2},"2":{"93":1,"95":1,"96":2,"97":2,"98":2,"99":1,"149":6,"154":6}}],["delay",{"0":{"26":1,"48":1},"2":{"26":2,"48":2}}],["decorator",{"2":{"87":2,"125":2,"164":2,"171":2,"189":2,"241":13}}],["deprecated",{"2":{"39":1,"61":1}}],["depth=1",{"2":{"12":1,"13":1}}],["deftype",{"0":{"207":1,"219":1},"1":{"208":1,"209":1,"210":1,"211":1,"212":1},"2":{"241":4,"242":1}}],["def",{"0":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"103":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"129":1,"133":1,"134":1,"135":1,"136":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"277":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1},"2":{"22":1,"24":1,"44":1,"46":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"86":1,"87":2,"88":1,"89":1,"97":1,"98":1,"99":1,"125":2,"126":1,"127":1,"129":1,"133":1,"134":1,"135":1,"136":1,"152":2,"153":1,"164":2,"166":1,"171":2,"189":1,"190":1,"195":1,"200":1,"201":1,"202":1,"203":1,"204":1,"241":4,"242":2,"277":1,"287":1,"290":3,"303":1}}],["default",{"0":{"38":1,"39":1,"60":1,"61":1,"121":1,"144":1,"214":1,"215":1,"216":1,"217":1,"219":1,"220":1,"222":1,"223":1,"227":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"260":1,"270":1,"271":1,"272":1,"279":1,"281":1},"2":{"2":1,"38":4,"39":4,"60":4,"61":4,"92":1,"121":6,"133":3,"144":1,"173":1,"179":1,"279":1,"281":1}}],["developer",{"2":{"302":1}}],["dev",{"0":{"159":1,"160":1,"161":1,"172":1},"1":{"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1},"2":{"2":1,"303":1,"306":1}}],["访问令牌",{"2":{"2":1}}],["a包中的index",{"2":{"308":1}}],["am",{"2":{"290":6}}],["arbitrary",{"0":{"269":1}}],["arg",{"2":{"241":13,"242":16}}],["argv",{"2":{"26":1,"48":1}}],["args=coro",{"2":{"285":1}}],["args=self",{"2":{"152":1}}],["args=",{"2":{"26":1,"48":1,"241":2}}],["args",{"0":{"21":1,"28":1,"43":1,"50":1,"66":1,"108":1,"154":1,"215":1},"2":{"21":4,"25":1,"26":2,"27":1,"28":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"38":1,"39":1,"43":4,"47":1,"48":2,"49":1,"50":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"66":4,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"81":1,"82":1,"83":1,"84":1,"85":1,"87":1,"88":1,"93":1,"94":1,"95":1,"108":2,"111":1,"112":1,"120":1,"121":1,"122":1,"124":1,"125":1,"126":1,"138":1,"152":1,"154":5,"156":1,"158":1,"164":2,"171":1,"173":1,"183":1,"184":1,"188":1,"190":1,"238":1,"239":1,"241":9,"242":9,"243":1,"250":1,"283":1,"284":1,"285":1,"286":1,"287":3,"311":4}}],["abs",{"2":{"243":4}}],["application",{"0":{"254":2},"2":{"250":1}}],["append",{"2":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"87":2,"125":2,"189":1,"193":1,"240":1,"241":5}}],["api格式为onebot",{"2":{"311":1}}],["api文档",{"2":{"298":1}}],["api也有差别",{"2":{"298":1}}],["api",{"0":{"298":1},"2":{"243":10,"296":3,"297":2,"311":3}}],["add",{"0":{"154":1,"193":1},"2":{"154":1,"180":1,"193":1,"194":1,"249":1}}],["adapter获取详细信息",{"2":{"3":1}}],["attributes=",{"2":{"241":2}}],["attributes",{"0":{"230":1,"236":1},"2":{"241":2,"242":2}}],["attributeinfo",{"0":{"221":1,"230":1,"236":1},"1":{"222":1,"223":1,"224":1,"225":1},"2":{"241":2}}],["attr",{"0":{"130":1,"131":1,"208":1,"209":1,"210":1,"211":1,"212":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"227":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"254":1,"255":1,"256":1,"257":1,"258":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"269":1,"270":1,"271":1,"272":1,"273":1},"2":{"241":2,"242":14}}],["atexit",{"2":{"21":1,"43":1}}],["assign",{"2":{"241":2}}],["ast",{"2":{"241":29}}],["as",{"2":{"122":1,"239":1,"241":1,"248":1,"284":1}}],["asynchronous",{"2":{"287":2}}],["async=isinstance",{"2":{"241":2}}],["asyncfunctiondef",{"2":{"241":3}}],["async",{"0":{"22":1,"24":1,"44":1,"46":1,"66":2,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"86":2,"88":1,"89":1,"126":1,"127":1,"152":1,"153":1,"190":1,"202":1,"203":1,"204":1,"220":1,"277":1,"287":1},"2":{"66":3,"86":1,"87":1,"89":1,"116":1,"117":1,"125":1,"126":1,"127":1,"152":1,"195":1,"200":1,"201":1,"203":1,"204":1,"242":4,"277":1,"287":2,"290":2}}],["asyncio",{"2":{"21":2,"23":1,"43":2,"45":1,"66":2,"86":1,"88":2,"126":1,"153":3,"284":5,"290":2}}],["a",{"2":{"84":1,"85":1,"138":3,"243":4,"249":1,"286":2,"302":1}}],["annassign",{"2":{"241":1}}],["annotation",{"2":{"241":6}}],["an",{"2":{"84":1,"93":1}}],["and",{"0":{"201":1},"2":{"83":1,"84":1,"171":1,"201":2,"241":7,"242":1,"249":3,"303":2}}],["any=none",{"2":{"38":1,"39":1,"60":1,"61":1}}],["any",{"0":{"38":2,"39":2,"60":2,"61":2,"83":1,"87":2,"88":1,"97":1,"98":1,"99":1,"103":1,"108":1,"120":1,"121":2,"123":1,"124":1,"126":1,"133":1,"134":1,"135":1,"136":1,"138":2,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":4,"170":1,"183":2,"184":1,"224":1,"266":1,"283":1,"287":1},"2":{"21":1,"38":3,"39":3,"43":1,"60":3,"61":3,"83":1,"87":5,"88":1,"91":1,"92":1,"95":1,"96":1,"97":1,"98":1,"99":1,"103":1,"108":1,"119":3,"120":1,"121":5,"123":4,"124":1,"125":1,"126":1,"133":1,"134":1,"135":1,"136":1,"138":2,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":4,"170":1,"183":3,"184":1,"195":1,"241":7,"243":1,"283":1,"287":1}}],["author",{"0":{"264":1},"2":{"63":1,"79":1,"101":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["auto",{"2":{"1":2,"2":1}}],["after",{"0":{"32":1,"33":1,"36":1,"54":1,"55":1,"58":1,"68":1,"70":1,"72":1,"74":1,"76":1,"78":1},"2":{"22":1,"32":2,"33":2,"36":2,"44":1,"54":2,"55":2,"58":2,"65":3,"68":2,"70":2,"72":2,"74":3,"76":3,"78":3,"290":1}}],["await",{"2":{"22":4,"44":4,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"86":1,"87":2,"89":2,"125":1,"127":2,"152":4,"190":2,"200":2,"201":2,"202":1,"290":1,"296":1,"297":1,"299":1}}],["active和",{"2":{"290":1}}],["active和chan",{"2":{"154":2}}],["active=channel",{"2":{"154":1}}],["active=chan",{"2":{"154":1}}],["active",{"0":{"90":1,"92":1,"149":2},"2":{"27":6,"49":6,"90":1,"119":2,"124":1,"127":1,"149":6,"152":3,"154":4,"290":11}}],["activate激活",{"2":{"12":1}}],["activate来激活虚拟环境",{"2":{"12":1}}],["accesstoken",{"2":{"3":1}}],["access",{"2":{"2":1}}],["already",{"2":{"81":2,"93":1}}],["alive",{"0":{"24":1,"46":1,"158":1},"2":{"22":1,"24":1,"44":1,"46":1,"156":1,"158":2}}],["all",{"0":{"123":1,"136":1,"153":1,"155":1,"157":1},"2":{"21":1,"22":1,"25":1,"26":1,"43":1,"44":1,"47":1,"48":1,"63":1,"79":1,"83":3,"101":1,"109":1,"123":2,"135":1,"136":3,"147":1,"153":1,"155":1,"157":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["allowed",{"0":{"269":1}}],["allow",{"2":{"2":1}}],["alconna提供的命令解析功能",{"2":{"10":1}}],["alconna是否自动补全指令",{"2":{"2":1}}],["alconna",{"2":{"2":1}}],["高级nonebot配置",{"2":{"2":1}}],["以上内容仅用于项目的优化",{"2":{"309":1}}],["以避免出现无法预料的问题",{"2":{"307":1}}],["以避免依赖冲突",{"2":{"12":1}}],["以下我们会编写一个简单的插件",{"2":{"303":1}}],["以下为默认值",{"2":{"2":1}}],["以前的最外层配置项仍可为nonebot服务",{"2":{"1":1}}],["period\`",{"2":{"320":1}}],["period>",{"2":{"319":1}}],["period",{"2":{"319":2}}],["poke",{"2":{"297":4}}],["port",{"2":{"1":1}}],["page为页数",{"2":{"313":2}}],["page",{"2":{"313":2}}],["pacman",{"0":{"313":1},"1":{"314":1}}],["pack",{"2":{"308":2,"313":3}}],["param",{"2":{"310":1}}],["parts",{"2":{"286":2}}],["parent",{"2":{"241":4}}],["parse",{"2":{"241":1}}],["pass",{"2":{"112":1,"113":1,"114":1}}],["passive=channel",{"2":{"154":1}}],["passive=chan",{"2":{"154":1}}],["passive",{"0":{"149":2},"2":{"93":1,"95":1,"96":2,"97":2,"98":2,"99":1,"119":2,"120":1,"121":1,"122":1,"123":1,"132":1,"133":2,"134":2,"135":2,"136":1,"149":6,"154":6,"290":13}}],["pathlib",{"2":{"248":1}}],["paths=none",{"2":{"243":1}}],["paths",{"0":{"243":1},"2":{"243":5}}],["path=dot",{"2":{"241":1}}],["path",{"0":{"173":2,"233":1,"238":3,"241":1,"244":1,"248":2,"286":3},"2":{"6":3,"13":1,"15":1,"142":1,"143":2,"173":5,"238":10,"239":3,"240":1,"241":7,"243":22,"244":2,"248":19,"249":26,"286":12,"303":5}}],["publish=publish",{"2":{"154":1}}],["publish",{"0":{"91":1,"124":1,"149":1},"2":{"91":1,"119":2,"124":2,"127":2,"149":3}}],["profile",{"2":{"315":4}}],["property",{"0":{"212":2},"2":{"241":2}}],["processes",{"2":{"25":1,"27":1,"47":1,"49":1,"151":1,"152":1,"156":2,"158":1}}],["processmanager",{"0":{"150":1},"1":{"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1},"2":{"21":2,"43":2}}],["process",{"0":{"27":1,"34":1,"35":1,"49":1,"56":1,"57":1,"66":1,"69":1,"71":1,"75":1,"77":1,"152":1,"158":1},"2":{"21":2,"22":1,"26":1,"27":4,"34":2,"35":2,"37":2,"43":2,"44":1,"48":1,"49":4,"56":2,"57":2,"59":2,"65":2,"66":1,"69":2,"71":2,"75":2,"77":2,"81":4,"87":3,"88":1,"93":1,"95":1,"96":1,"120":1,"121":1,"122":1,"123":1,"125":3,"127":2,"151":1,"152":14,"153":1,"155":2,"156":7,"158":2,"290":8,"303":2}}],["priority",{"0":{"188":1,"194":1,"195":1},"2":{"188":5,"193":2,"194":2,"195":2}}],["private",{"0":{"241":1},"2":{"183":2,"241":6}}],["print",{"0":{"40":1,"62":1},"2":{"21":1,"40":2,"43":1,"62":2,"86":2,"190":1,"243":1,"248":1}}],["pwd",{"2":{"13":3}}],["p",{"2":{"13":1,"320":1}}],["platform",{"2":{"26":3,"48":3}}],["playwright安装失败",{"2":{"6":1}}],["plugintype",{"0":{"250":1,"253":1,"263":2},"1":{"254":1,"255":1,"256":1,"257":1,"258":1},"2":{"250":5,"302":1}}],["pluginmetadata",{"0":{"259":1,"273":1},"1":{"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1},"2":{"248":4,"302":2}}],["plugin\`",{"2":{"248":1}}],["plugin\`的函数签名",{"2":{"173":1}}],["plugin的函数签名",{"2":{"173":1}}],["plugin进行通信",{"2":{"8":1}}],["plugin",{"0":{"172":1,"245":1,"246":1,"247":1,"248":2,"249":2,"250":1,"251":1,"252":1,"267":1,"274":1,"275":1,"278":1,"280":1},"1":{"173":1,"246":1,"248":1,"249":1,"250":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":2,"269":2,"270":2,"271":2,"272":2,"273":2,"275":1,"279":1,"281":1},"2":{"1":1,"10":1,"21":2,"43":2,"172":1,"246":3,"248":15,"249":6,"250":5,"275":3,"279":6,"281":6,"302":4,"305":1,"306":2,"313":5}}],["plugins下创建一个文件",{"2":{"306":1}}],["plugins中添加你的插件路径",{"2":{"305":1}}],["plugins",{"0":{"173":1,"246":1,"249":1,"275":1,"276":1,"278":1,"279":1,"280":1,"281":1},"1":{"277":1,"279":1,"281":1},"2":{"1":1,"21":1,"43":1,"173":6,"246":2,"248":3,"249":9,"275":2,"279":4,"281":4,"303":1,"306":2}}],["py即可启动插件",{"2":{"306":1}}],["pyo",{"2":{"303":1}}],["pycache",{"2":{"303":1}}],["pyc",{"2":{"303":1}}],["pycharm",{"2":{"63":1,"79":1,"101":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["py文件",{"2":{"302":1}}],["py文件或一个包含",{"2":{"302":1}}],["py的文件夹即可被识别为插件",{"2":{"302":1}}],["pyfile",{"0":{"244":1},"2":{"243":8,"244":1}}],["pyi",{"2":{"240":1,"241":1}}],["py",{"2":{"12":1,"63":1,"79":1,"101":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":2,"186":1,"191":2,"192":1,"196":1,"205":1,"206":1,"240":1,"241":1,"243":1,"247":1,"249":3,"251":1,"252":1,"276":1,"278":2,"280":2,"293":1,"302":1,"303":1,"306":2,"308":1}}],["py来启动bot",{"2":{"6":1}}],["python格式",{"2":{"295":1}}],["pythonfrom",{"2":{"290":1,"293":1,"302":1,"306":1}}],["pythonimport",{"2":{"290":1,"303":1}}],["pythonasync",{"2":{"22":1,"24":1,"44":1,"46":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"86":1,"88":1,"89":1,"127":1,"152":1,"153":1,"190":1,"202":1}}],["pythondef",{"2":{"21":1,"23":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"45":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"81":1,"82":1,"83":1,"84":1,"85":1,"87":1,"93":1,"94":1,"95":1,"96":1,"103":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"149":1,"151":1,"154":1,"155":1,"156":1,"157":1,"158":1,"164":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"179":1,"180":1,"183":1,"184":1,"188":1,"189":1,"193":1,"194":1,"195":1,"199":1,"200":1,"201":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"246":1,"248":1,"249":1,"250":1,"268":1,"275":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1}}],["python为你的python可执行文件路径",{"2":{"15":1}}],["python3",{"2":{"12":1}}],["python是你要用来运行bot的可执行文件",{"2":{"6":1}}],["python",{"2":{"6":2,"12":1,"15":1,"66":1,"97":1,"98":1,"99":1,"126":1,"129":1,"133":1,"134":1,"135":1,"136":1,"166":1,"203":1,"204":1,"241":2,"277":1}}],["pipe",{"2":{"81":2}}],["pip",{"2":{"6":1,"12":1,"15":1,"248":1}}],["pip和python不对应怎么办",{"2":{"6":1}}],["utils",{"0":{"282":1},"1":{"283":1,"284":1,"285":1,"286":1,"287":1}}],["utf",{"2":{"139":1,"140":1,"141":1,"239":1,"241":1}}],["usage",{"0":{"262":1}}],["user",{"0":{"183":1,"315":1},"2":{"183":3,"184":2,"204":1,"297":3}}],["used",{"2":{"87":1}}],["use",{"2":{"1":1,"39":1,"61":1,"248":1}}],["unload",{"2":{"313":1,"314":1}}],["uninstall",{"2":{"313":1,"314":1}}],["uninstall卸载问题插件",{"2":{"6":1}}],["until",{"2":{"284":2}}],["unclassified",{"0":{"257":2,"263":1}}],["unparse",{"2":{"241":10}}],["unknown",{"2":{"152":1}}],["unsupported",{"2":{"142":1}}],["update",{"2":{"1":1,"2":1,"142":3,"143":1,"144":1,"311":1,"312":1,"313":1,"314":1}}],["某些控制台字体不可用",{"2":{"1":1}}],["the",{"2":{"248":1}}],["thread",{"0":{"285":1},"2":{"26":1,"48":1,"285":2}}],["threading",{"0":{"131":1},"2":{"21":1,"26":1,"43":1,"48":1,"285":1}}],["test",{"0":{"258":2},"2":{"250":1}}],["text",{"2":{"242":3}}],["terminated",{"2":{"156":1}}],["terminate",{"0":{"156":1,"157":1},"2":{"21":1,"26":1,"43":1,"48":1,"152":2,"156":2,"157":2}}],["types",{"0":{"269":1}}],["type=plugintype",{"2":{"302":1}}],["type=attr",{"2":{"241":1}}],["type=ast",{"2":{"241":3}}],["type=def",{"2":{"241":1}}],["type=deftype",{"2":{"241":1}}],["type=self",{"2":{"184":2}}],["typealias",{"2":{"162":1,"163":1,"197":1}}],["typeerror",{"2":{"81":1,"84":1,"93":1}}],["type",{"0":{"81":1,"82":2,"83":1,"183":2,"216":1,"219":1,"223":1,"250":1,"263":1},"2":{"81":12,"82":4,"83":2,"84":7,"93":1,"183":9,"184":2,"241":11,"242":13,"248":2,"250":5}}],["target",{"0":{"154":3,"238":1},"2":{"154":6,"238":4,"241":5}}],["target=run",{"2":{"285":1}}],["target=self",{"2":{"152":1}}],["target=os",{"2":{"26":1,"48":1}}],["targets",{"2":{"151":1,"152":4,"153":1,"154":1,"155":1,"157":1,"158":1,"241":2}}],["task",{"2":{"88":2,"126":1,"153":5}}],["tasks",{"2":{"66":2}}],["tuple=",{"2":{"154":1}}],["tuple",{"0":{"39":1,"61":1,"97":1,"98":1,"99":1,"108":1,"133":1,"134":1,"135":1,"136":1,"149":2,"154":1,"171":1,"215":1},"2":{"39":1,"61":1,"83":2,"91":1,"97":1,"98":1,"99":1,"108":1,"119":3,"133":1,"134":1,"135":1,"136":1,"149":2,"151":2,"171":1}}],["title",{"2":{"243":2}}],["time>",{"2":{"296":1}}],["timeout",{"2":{"156":1}}],["time",{"2":{"24":1,"26":1,"46":1,"48":1,"63":1,"79":1,"101":1,"109":1,"147":1,"164":9,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["tip",{"2":{"12":1,"13":1,"299":1,"308":1,"310":1}}],["t",{"0":{"80":1,"84":1,"85":1,"86":1,"87":2},"1":{"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1},"2":{"13":1,"37":1,"59":1,"84":1,"85":1,"86":1,"87":5}}],["txt",{"2":{"12":1}}],["txt来安装依赖",{"2":{"6":1,"15":1}}],["tree",{"2":{"241":3}}],["traceback",{"2":{"190":1,"248":1}}],["try",{"2":{"23":1,"24":1,"45":1,"46":1,"122":1,"190":1,"248":1,"284":1}}],["trss",{"2":{"8":1,"14":1}}],["true时例如docs",{"2":{"243":2}}],["true下启动轻雪",{"2":{"6":1}}],["true",{"0":{"122":1,"171":1,"241":1,"249":1,"269":1},"2":{"1":3,"2":1,"85":1,"89":1,"127":1,"152":1,"180":1,"202":1,"203":1,"243":1,"290":2}}],["tokyo",{"2":{"317":1}}],["token",{"2":{"2":1}}],["top",{"0":{"243":1},"2":{"243":4}}],["toml",{"0":{"141":1},"2":{"141":5,"142":2,"144":1}}],["toml和config目录下的所有配置文件",{"2":{"0":1}}],["to",{"0":{"239":1,"286":1},"2":{"6":3,"13":1,"15":2,"84":1,"239":1,"243":1,"248":7,"249":2,"286":2}}],["image",{"2":{"311":2,"312":1}}],["implemented",{"2":{"166":1}}],["import",{"2":{"132":1,"248":1,"290":5,"293":1,"302":2,"303":3,"306":1}}],["iter",{"2":{"241":2}}],["items",{"2":{"94":1,"138":2,"239":1,"242":1,"243":1}}],["i",{"2":{"193":2,"290":6}}],["ignored",{"0":{"243":1},"2":{"152":1,"243":8}}],["ignore",{"0":{"122":1,"241":1,"249":1},"2":{"122":4,"241":6,"243":1,"249":6}}],["id仅超级用户可用",{"2":{"311":1}}],["id=user",{"2":{"297":2}}],["id=1234567",{"2":{"311":2}}],["id=123456",{"2":{"297":1}}],["id=self",{"2":{"184":3}}],["id",{"0":{"183":3},"2":{"87":5,"88":4,"183":11,"184":3,"204":1,"241":6,"297":2,"311":2,"313":1,"319":4}}],["ids",{"2":{"81":2,"87":2,"88":2,"89":1}}],["if",{"2":{"26":2,"27":1,"37":2,"39":2,"48":2,"49":1,"59":2,"61":2,"66":1,"81":5,"82":1,"83":4,"84":3,"85":1,"87":6,"88":1,"89":1,"93":3,"95":1,"96":1,"120":1,"121":1,"122":3,"123":1,"125":5,"127":2,"129":2,"138":1,"139":1,"140":1,"141":1,"142":2,"143":3,"152":2,"154":1,"156":2,"158":1,"164":1,"171":1,"179":1,"180":5,"183":1,"184":1,"190":1,"193":1,"202":1,"239":1,"240":1,"241":20,"242":10,"243":4,"248":2,"249":9,"283":2,"284":1,"286":1}}],["isclass",{"2":{"283":1}}],["iscoroutinefunction",{"2":{"283":2}}],["isroutine",{"2":{"283":1}}],["isfile",{"2":{"249":1,"303":1}}],["isdir",{"2":{"249":2}}],["isinstance",{"2":{"83":8,"93":1,"138":1,"241":13,"248":1,"290":1}}],["is",{"0":{"158":1,"204":1,"220":1,"283":1},"2":{"21":1,"23":1,"24":2,"27":1,"37":2,"43":1,"45":1,"46":2,"49":1,"59":2,"66":1,"81":6,"84":1,"87":5,"88":1,"89":1,"93":1,"95":1,"96":1,"119":2,"120":1,"121":1,"122":1,"123":1,"125":3,"127":1,"129":2,"139":1,"140":1,"141":1,"154":1,"156":1,"158":2,"171":1,"183":1,"202":1,"204":1,"241":2,"242":2,"243":1,"248":1,"249":2,"283":1,"284":1}}],["index",{"2":{"242":2,"243":1,"308":1}}],["inherit=",{"2":{"241":1}}],["inherit",{"0":{"231":1},"2":{"242":5}}],["inspect",{"2":{"283":4,"287":1}}],["insert",{"2":{"193":1}}],["instead",{"2":{"39":1,"61":1}}],["instance",{"0":{"129":1,"130":1},"2":{"21":2,"37":4,"43":2,"59":4,"84":1,"93":1,"129":5}}],["install安装浏览器",{"2":{"6":1}}],["install",{"2":{"6":1,"12":1,"15":1,"310":1,"313":1,"314":1}}],["inner",{"2":{"81":2}}],["in",{"0":{"144":1,"285":1},"2":{"27":1,"37":1,"39":3,"49":1,"59":1,"61":3,"66":1,"81":5,"83":4,"86":1,"87":1,"88":2,"93":1,"94":1,"122":1,"125":3,"126":1,"127":1,"138":2,"142":1,"143":2,"144":1,"152":1,"153":3,"155":1,"156":1,"157":1,"158":1,"171":1,"173":1,"190":1,"193":1,"195":2,"204":1,"239":1,"240":2,"241":13,"242":9,"243":5,"249":2,"279":2,"281":2,"284":2,"285":1,"303":1}}],["int=0",{"2":{"26":1,"48":1,"194":1,"195":1}}],["int",{"0":{"26":1,"48":1,"188":1,"194":1,"195":1},"2":{"65":1,"81":2,"188":1}}],["initialized",{"2":{"37":1,"59":1,"81":2}}],["initializing",{"2":{"21":1,"43":1}}],["init",{"0":{"21":1,"28":1,"29":1,"43":1,"50":1,"51":1,"65":1,"81":1,"103":1,"107":1,"111":1,"119":1,"149":1,"151":1,"180":1,"183":1,"188":1,"199":1},"2":{"21":2,"28":2,"29":2,"43":2,"50":2,"51":2,"65":1,"81":1,"103":1,"107":1,"111":1,"119":1,"149":1,"151":1,"180":1,"183":1,"185":1,"188":1,"191":1,"199":1,"241":1,"243":2,"249":2,"278":1,"280":1,"286":1,"302":3}}],["info",{"0":{"241":1,"242":1},"2":{"1":1,"21":1,"23":1,"24":1,"25":1,"26":1,"43":1,"45":1,"46":1,"47":1,"48":1,"152":2,"180":3,"241":12,"242":6,"243":5,"290":2}}],["icon=f",{"2":{"180":5}}],["icon",{"2":{"1":1,"180":7,"242":2,"243":2}}],["日志等级",{"2":{"1":1}}],["lt",{"2":{"310":1,"311":7,"313":10,"315":2}}],["lyf结尾",{"2":{"295":1}}],["lyfunction语法",{"2":{"311":1}}],["lyfunction",{"2":{"295":1}}],["len",{"2":{"83":2,"89":1}}],["level=0",{"2":{"180":1}}],["level",{"0":{"179":1},"2":{"1":1,"179":2,"180":6}}],["locks",{"2":{"122":1}}],["lock",{"0":{"131":2},"2":{"120":3,"121":3,"122":3,"129":1}}],["loaded",{"0":{"246":1,"275":1},"2":{"246":1,"275":1}}],["loader",{"0":{"278":1,"279":1,"280":1,"281":1},"1":{"279":1,"281":1},"2":{"21":1,"43":1,"279":1,"281":1}}],["loading",{"2":{"139":1,"140":1,"141":1}}],["load",{"0":{"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"247":1,"248":1,"249":1},"1":{"248":1,"249":1,"250":1},"2":{"21":1,"43":1,"139":4,"140":4,"141":4,"142":4,"143":2,"144":3,"173":3,"247":1,"248":3,"249":2,"279":2,"281":2,"313":1,"314":1}}],["loop",{"0":{"89":1,"127":1},"2":{"21":4,"30":1,"43":4,"52":1,"66":2,"81":1,"86":3,"89":3,"119":2,"127":2,"153":2,"284":10}}],["log0000",{"2":{"290":1}}],["logger",{"0":{"29":1,"51":1},"2":{"21":1,"23":1,"24":1,"25":1,"26":1,"28":1,"29":1,"39":1,"43":1,"45":1,"46":1,"47":1,"48":1,"50":1,"51":1,"61":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":2,"89":2,"139":1,"140":1,"141":1,"142":2,"143":1,"152":3,"156":2,"158":1,"180":7,"248":3,"249":3,"284":1,"290":3,"303":2}}],["logo",{"0":{"40":1,"62":1},"2":{"21":1,"40":1,"43":1,"62":1}}],["log",{"0":{"178":1,"180":1},"1":{"179":1,"180":1},"2":{"1":2,"29":1,"51":1,"178":1,"180":3,"290":1}}],["liteecho",{"0":{"276":1,"277":1},"1":{"277":1},"2":{"276":2,"277":2,"311":1}}],["liteyukiexception",{"0":{"175":1}}],["liteyuki轻雪机器人管理脚本",{"2":{"14":1}}],["liteyukibot代替$",{"2":{"13":1}}],["liteyukibot",{"0":{"20":1,"37":1,"42":1,"59":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1},"2":{"12":2,"13":5,"26":1,"37":3,"48":1,"59":3,"173":1}}],["liteyukistudio",{"2":{"12":1,"13":1,"63":1,"79":1,"101":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["liteyuki",{"0":{"17":1,"19":1,"41":1,"63":1,"79":1,"100":1,"101":1,"104":1,"105":1,"109":1,"115":1,"137":1,"145":1,"146":1,"147":1,"159":1,"160":1,"161":1,"172":1,"174":1,"176":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"245":1,"247":1,"251":1,"252":1,"274":1,"276":1,"278":1,"280":1,"282":1,"313":1},"1":{"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"102":1,"103":1,"106":1,"107":1,"108":1,"110":1,"111":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"171":1,"173":1,"175":1,"177":1,"179":1,"180":1,"182":1,"183":1,"184":1,"187":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"197":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"246":1,"248":1,"249":1,"250":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"275":1,"277":1,"279":1,"281":1,"283":1,"284":1,"285":1,"286":1,"287":1,"314":1},"2":{"1":2,"2":1,"21":2,"23":1,"24":1,"37":1,"43":2,"45":1,"46":1,"59":1,"173":2,"248":5,"279":3,"281":3,"290":12,"293":2,"294":1,"302":1,"303":4,"306":1,"307":1,"311":4,"312":3}}],["listdir",{"2":{"143":1,"249":2}}],["list",{"0":{"66":1,"183":1,"195":1,"215":1,"229":1,"230":1,"231":1,"234":1,"235":1,"236":1,"240":1},"2":{"65":6,"66":1,"81":2,"83":2,"116":1,"117":1,"183":1,"188":1,"193":3,"195":1,"240":4,"241":4,"243":3,"311":1,"313":2,"314":1}}],["life",{"2":{"65":1}}],["lifespan=self",{"2":{"21":1,"43":1}}],["lifespan",{"0":{"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"63":1,"64":1,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"151":2},"1":{"64":1,"65":2,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":2,"74":2,"75":2,"76":2,"77":2,"78":2},"2":{"21":3,"22":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"43":3,"44":2,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"63":1,"65":6,"66":2,"67":4,"68":4,"69":4,"70":4,"71":4,"72":4,"151":4,"152":3}}],["linux系统要支持python3",{"2":{"15":1}}],["linux",{"2":{"14":1,"26":1,"48":1}}],["linux下使用source",{"2":{"12":1}}],["llonebot",{"2":{"8":1}}],["laptop",{"2":{"243":2}}],["lang",{"0":{"242":1,"243":1},"2":{"242":4,"243":3}}],["language",{"2":{"2":1}}],["last",{"2":{"164":4}}],["lambda",{"2":{"132":1,"133":2,"134":2,"135":2,"136":1}}],["lagrange",{"2":{"8":1}}],["写在外层的配置项将会被覆盖",{"2":{"1":1}}],["switch",{"2":{"311":2,"312":1}}],["simple",{"2":{"302":1}}],["signature",{"2":{"287":2}}],["signal",{"2":{"21":6,"25":1,"43":6,"47":1}}],["signum",{"0":{"25":1,"47":1},"2":{"25":3,"47":3}}],["sigterm",{"2":{"21":1,"43":1}}],["sigint",{"2":{"21":1,"43":1}}],["sync",{"2":{"287":2}}],["system",{"0":{"171":1},"2":{"26":4,"48":4,"171":1,"303":2}}],["sys",{"2":{"25":1,"26":3,"47":1,"48":3,"180":1}}],["src",{"2":{"279":1,"281":1,"303":5}}],["specified",{"2":{"248":1}}],["split",{"2":{"248":4}}],["schedule",{"2":{"171":1}}],["scripts部署",{"0":{"14":1}}],["scripts",{"2":{"12":1}}],["sm",{"2":{"153":2}}],["source",{"0":{"218":1},"2":{"241":2,"242":6}}],["sockschannel",{"0":{"110":1},"1":{"111":1,"112":1,"113":1,"114":1}}],["socks",{"0":{"109":1},"1":{"110":1,"111":1,"112":1,"113":1,"114":1}}],["software",{"2":{"63":1,"79":1,"101":1,"109":1,"147":1,"172":1,"178":1,"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1,"247":1,"251":1,"252":1,"276":1,"278":1,"280":1}}],["s",{"2":{"83":2}}],["shinjuku",{"2":{"317":1}}],["shellstatistic",{"2":{"319":1}}],["shellbind",{"2":{"317":1}}],["shellweather",{"2":{"317":1}}],["shellmain",{"2":{"308":1}}],["shellvar",{"2":{"296":1}}],["shellcmd",{"2":{"295":1}}],["shell",{"2":{"295":1,"297":1}}],["shutil",{"2":{"243":1}}],["shutdown",{"0":{"33":1,"34":1,"55":1,"56":1,"69":1,"70":1,"75":1,"76":1},"2":{"33":2,"34":2,"55":2,"56":2,"65":2,"69":2,"70":2,"75":3,"76":3,"152":2}}],["show",{"2":{"180":6}}],["should",{"2":{"81":1}}],["shared",{"2":{"119":3,"132":1,"133":3,"134":3,"135":3,"136":2,"153":1,"154":1,"293":3}}],["snowykami",{"2":{"63":2,"79":2,"101":2,"109":2,"147":2,"172":2,"178":2,"181":2,"185":2,"186":2,"191":2,"192":2,"196":2,"205":2,"206":2,"247":2,"251":2,"252":2,"276":2,"278":2,"280":2}}],["succeeded",{"2":{"248":1}}],["success",{"2":{"156":1,"180":2,"248":2}}],["summary>",{"2":{"242":3}}],["summary>源代码",{"2":{"242":1}}],["su",{"0":{"204":1},"2":{"204":1,"276":1,"277":1}}],["supported",{"2":{"143":1}}],["superusers",{"2":{"1":1,"204":1}}],["subscribe",{"2":{"125":1}}],["subscriber",{"0":{"116":1,"117":1,"125":1,"126":1},"2":{"125":7,"126":2,"127":1}}],["sub",{"0":{"117":1},"2":{"37":1,"59":1,"81":2,"87":1,"88":1,"119":1,"125":4,"127":1}}],["sleep",{"2":{"24":1,"26":1,"46":1,"48":1,"290":1,"296":1,"297":1}}],["style",{"2":{"308":2}}],["stem",{"2":{"286":2}}],["stdout",{"2":{"180":1}}],["store",{"2":{"119":1,"120":1,"121":1,"122":2,"123":1}}],["storage",{"0":{"115":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1},"2":{"100":2,"104":2,"293":2}}],["stopping",{"2":{"23":1,"24":1,"25":1,"45":1,"46":1,"47":1,"152":1}}],["stop",{"0":{"30":1,"52":1},"2":{"21":1,"24":2,"25":1,"30":3,"43":1,"46":2,"47":1,"52":3}}],["stat",{"2":{"320":1}}],["statistic",{"2":{"320":1}}],["statistics",{"0":{"319":1},"1":{"320":1}}],["static",{"0":{"210":1},"2":{"241":1}}],["staticmethod",{"0":{"210":1},"2":{"65":1,"66":1,"125":1,"126":1,"241":1}}],["status",{"2":{"311":1,"312":1}}],["startup",{"2":{"290":2}}],["startswith",{"2":{"241":3,"276":1,"277":1}}],["starting",{"2":{"89":1}}],["start或superusers",{"2":{"6":1}}],["start保证alconna解析正常",{"2":{"1":1}}],["start",{"0":{"31":1,"32":1,"53":1,"54":1,"67":1,"68":1,"73":1,"74":1,"89":1,"127":1,"153":1},"2":{"1":1,"22":3,"26":2,"31":2,"32":2,"44":3,"48":2,"53":2,"54":2,"65":2,"67":2,"68":2,"73":3,"74":3,"89":1,"127":2,"152":4,"153":3,"285":1,"290":1}}],["strip",{"2":{"277":2}}],["str=",{"2":{"242":1,"243":1}}],["structure",{"0":{"83":2},"2":{"83":17,"84":1}}],["str",{"0":{"27":1,"38":1,"39":2,"49":1,"60":1,"61":2,"81":1,"93":1,"94":1,"95":1,"96":1,"97":2,"98":2,"99":2,"103":2,"111":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"133":2,"134":2,"135":2,"136":2,"138":2,"139":2,"140":2,"141":2,"142":2,"143":2,"144":1,"149":2,"152":1,"154":1,"156":1,"158":1,"171":1,"173":1,"179":2,"183":9,"184":2,"195":1,"214":1,"215":2,"216":1,"217":1,"218":1,"222":1,"223":1,"225":1,"227":1,"228":1,"231":1,"233":1,"237":1,"238":3,"239":2,"240":1,"241":1,"242":2,"243":3,"246":1,"248":1,"249":1,"250":2,"260":1,"261":1,"262":1,"264":1,"265":1,"266":1,"270":1,"272":1,"275":1,"286":1},"2":{"21":1,"27":1,"38":1,"39":2,"43":1,"49":1,"60":1,"61":2,"81":2,"91":2,"93":1,"94":1,"95":1,"96":2,"97":2,"98":2,"99":2,"103":2,"111":1,"116":1,"117":1,"119":5,"120":1,"121":1,"122":1,"123":4,"124":1,"125":1,"126":1,"133":2,"134":2,"135":2,"136":2,"138":2,"139":2,"140":2,"141":2,"142":2,"143":2,"144":1,"149":2,"151":2,"152":1,"154":1,"156":1,"158":1,"171":1,"173":1,"179":2,"183":11,"184":2,"195":1,"204":1,"238":3,"239":2,"240":1,"241":1,"242":1,"243":4,"246":3,"248":1,"249":1,"250":4,"275":3,"286":3,"290":1}}],["search",{"2":{"313":1,"314":1}}],["service",{"0":{"255":2},"2":{"250":1,"302":1}}],["server",{"2":{"15":1}}],["sep",{"2":{"241":3}}],["session",{"0":{"183":2,"205":1},"2":{"183":8,"184":5,"205":1}}],["send",{"0":{"84":1,"112":1},"2":{"27":2,"49":2,"81":2,"84":4,"93":1,"95":1,"96":1,"98":1,"99":1,"111":1,"112":1,"120":1,"121":1,"122":1,"123":1,"124":1,"127":1,"133":1,"136":1,"184":1,"290":3,"311":1}}],["set",{"0":{"93":1,"94":1,"97":1,"120":1,"134":1,"249":1},"2":{"21":1,"24":1,"30":1,"43":1,"46":1,"52":1,"81":1,"93":2,"94":2,"96":1,"97":3,"120":2,"133":1,"134":3,"249":2,"284":1,"293":1,"311":2,"312":1,"315":2}}],["self",{"0":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"103":1,"107":1,"108":1,"111":1,"112":1,"113":1,"114":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"127":1,"149":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"166":1,"167":1,"168":1,"169":1,"170":1,"183":1,"184":1,"188":1,"189":1,"190":1,"199":1,"200":1,"201":1,"202":1,"268":1},"2":{"21":14,"22":5,"23":2,"24":3,"25":2,"26":4,"27":2,"28":2,"29":1,"30":3,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"43":14,"44":5,"45":2,"46":3,"47":2,"48":4,"49":2,"50":2,"51":1,"52":3,"53":2,"54":2,"55":2,"56":2,"57":2,"58":2,"65":8,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":3,"74":3,"75":3,"76":3,"77":3,"78":3,"81":14,"82":3,"83":4,"84":6,"85":3,"86":2,"87":3,"88":3,"89":8,"103":3,"107":2,"108":2,"111":5,"112":1,"113":1,"114":1,"119":7,"120":3,"121":3,"122":4,"123":3,"124":2,"125":1,"127":4,"149":6,"151":4,"152":8,"153":3,"154":2,"155":2,"156":3,"157":3,"158":3,"166":1,"167":2,"168":2,"169":2,"170":2,"183":10,"184":3,"188":5,"189":2,"190":3,"199":2,"200":2,"201":2,"202":3,"241":1,"242":1,"268":2}}],["safe",{"2":{"2":1,"139":1}}],["num为每页显示数量",{"2":{"313":2}}],["num",{"2":{"313":2}}],["npm",{"2":{"313":7,"314":1}}],["nliteyuki",{"2":{"295":1}}],["n\`\`\`",{"2":{"242":2}}],["n\`\`\`python",{"2":{"242":2}}],["n",{"2":{"40":10,"62":10,"242":52,"243":2}}],["name>",{"2":{"296":2}}],["name=module",{"2":{"248":3}}],["name=target",{"2":{"241":2}}],["name=class",{"2":{"241":1}}],["name=node",{"2":{"241":2}}],["name=f",{"2":{"154":2}}],["name=",{"2":{"90":1,"91":1,"119":3,"302":1}}],["name",{"0":{"27":1,"49":1,"81":1,"93":1,"95":1,"103":1,"111":1,"152":1,"154":1,"156":1,"158":1,"214":1,"222":1,"227":1,"244":1,"250":2,"260":1,"270":1,"272":1,"286":1},"2":{"27":7,"49":7,"81":12,"89":2,"93":8,"94":2,"95":6,"97":3,"98":3,"103":3,"111":5,"152":14,"153":2,"154":6,"155":1,"156":7,"157":2,"158":6,"241":11,"242":7,"243":2,"248":20,"249":9,"250":7,"268":1,"286":1,"290":2,"311":4,"313":8}}],["new",{"2":{"21":1,"43":1,"138":3,"284":1}}],["nodes",{"2":{"241":2}}],["node",{"2":{"241":42}}],["node等进程",{"2":{"15":1}}],["normal",{"0":{"241":1},"2":{"241":1,"243":1}}],["normal>",{"2":{"180":1}}],["nonlocal",{"2":{"164":1}}],["nonedog",{"2":{"302":1}}],["none",{"0":{"21":1,"27":1,"38":1,"39":1,"43":1,"49":1,"60":1,"61":1,"65":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"87":1,"107":1,"120":1,"121":1,"122":1,"124":1,"130":1,"154":1,"171":1,"183":2,"190":1,"224":1,"242":1,"243":1,"273":1},"2":{"21":1,"27":1,"37":1,"43":1,"49":1,"59":1,"65":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":3,"82":1,"84":1,"86":1,"87":1,"107":1,"111":2,"120":1,"122":1,"124":1,"129":2,"139":1,"140":1,"141":1,"154":1,"162":1,"164":1,"171":1,"183":1,"190":1,"197":2,"202":1,"241":3,"243":1,"248":4,"249":1,"283":1}}],["nonebot2提供的框架支持",{"2":{"10":1}}],["nonebot",{"2":{"2":1,"10":1,"282":1,"290":3,"302":1,"303":4,"306":1}}],["nonebot机器人的配置",{"2":{"1":1}}],["no",{"0":{"142":1,"143":1,"144":1,"214":1,"215":1,"216":1,"217":1,"219":1,"220":1,"222":1,"223":1,"227":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"244":1,"260":1,"270":1,"271":1,"272":1},"2":{"89":1,"92":1,"142":3,"143":3,"144":3,"241":3,"242":1,"243":2}}],["nohup",{"2":{"26":2,"48":2,"296":1,"297":1}}],["notimplementederror",{"2":{"166":1}}],["not",{"2":{"24":1,"27":1,"37":1,"46":1,"49":1,"59":1,"81":1,"83":3,"84":2,"87":4,"89":1,"93":1,"122":1,"125":3,"127":1,"139":1,"140":1,"141":1,"142":3,"143":3,"152":2,"156":2,"158":2,"171":2,"190":1,"239":1,"241":8,"248":1,"249":8,"303":2}}],["ntqq的onebot插件",{"2":{"8":1}}],["nickname",{"2":{"1":1}}],["若不存在则返回空",{"2":{"311":1}}],["若不存在则创建于config",{"2":{"311":1}}],["若存在则返回",{"2":{"311":1}}],["若存在则覆盖",{"2":{"311":1}}],["若存在则会覆盖",{"2":{"311":1}}],["若你不希望提供这些信息",{"2":{"309":1}}],["若你修改了端口号请将20216",{"2":{"13":1}}],["若要戳20s后停止",{"2":{"297":1}}],["若要接收外部请求请填写0",{"2":{"1":1}}],["若函数中启动了其他task",{"2":{"296":1}}],["若有子进程订阅则推送给子进程",{"2":{"127":2}}],["若有困难请联系对应开发者而不是liteyuki的开发者",{"2":{"9":1}}],["若为空",{"2":{"81":2}}],["若没有metadata",{"2":{"308":1}}],["若没有",{"2":{"1":1}}],["14s",{"2":{"319":2}}],["1h",{"2":{"319":2}}],["1d",{"2":{"319":2}}],["1145141919810",{"2":{"311":1}}],["11",{"2":{"278":1,"280":1}}],["19",{"2":{"181":1,"185":1,"186":1,"191":1,"192":1,"196":1,"205":1,"206":1}}],["1919810",{"2":{"1":1}}],["18",{"2":{"172":1}}],["12",{"2":{"147":1,"178":1}}],["127",{"2":{"1":1,"3":1}}],["10",{"2":{"18":1,"177":1,"311":1}}],["10+",{"2":{"12":1,"15":1}}],["1",{"2":{"1":1,"2":1,"3":2,"26":2,"27":2,"48":2,"49":2,"87":1,"97":2,"98":2,"99":1,"127":2,"133":3,"134":2,"135":1,"136":1,"137":1,"138":3,"152":2,"165":1,"166":1,"242":6,"243":1,"248":4,"286":2,"302":1,"308":2}}],["03",{"2":{"290":2}}],["0000",{"2":{"290":3}}],["00",{"2":{"290":18}}],["02",{"2":{"252":1,"278":1,"280":1}}],["04",{"2":{"172":1}}],["04+",{"2":{"15":1}}],["0m",{"2":{"40":1,"62":1}}],["0",{"0":{"26":1,"48":1,"194":1,"195":1},"2":{"1":5,"3":4,"21":1,"24":1,"25":1,"26":1,"43":1,"46":1,"47":1,"48":1,"65":1,"82":1,"83":1,"89":1,"96":1,"97":2,"98":2,"99":1,"127":1,"132":2,"133":2,"134":2,"135":2,"136":1,"152":2,"188":2,"241":1,"242":7,"297":1,"302":2,"308":2}}],["请阅读插件主页的说明",{"2":{"314":1}}],["请确保您所编写的html代码能被bot解析",{"2":{"307":1}}],["请注意",{"2":{"307":1}}],["请创建task",{"2":{"152":2}}],["请不要将需要动态加载的内容写入配置文件",{"2":{"137":1}}],["请联系插件作者或在安全模式safe",{"2":{"6":1}}],["请先查阅插件文档",{"2":{"6":1}}],["请正确安装git",{"2":{"6":1}}],["请检查配置文件的command",{"2":{"6":1}}],["请使用path",{"2":{"15":1}}],["请使用",{"2":{"6":1}}],["请在此填写相同的值",{"2":{"3":1}}],["请开启alconna",{"2":{"1":1}}],["请尽快迁移",{"2":{"1":1}}],["空命令头",{"2":{"1":1}}],["指令前缀",{"2":{"1":1}}],["轻雪天气liteyuki",{"0":{"317":1},"1":{"318":1}}],["轻雪文档",{"2":{"312":1}}],["轻雪命令liteyuki",{"0":{"311":1},"1":{"312":1}}],["轻雪会收集以下内容",{"2":{"309":1}}],["轻雪会自动合并这些配置文件",{"2":{"0":1}}],["轻雪原版资源包请查看liteyukibot",{"2":{"307":1}}],["轻雪主进程不涉及聊天部分",{"2":{"303":1}}],["轻雪函数",{"0":{"294":1},"1":{"295":1,"296":1,"297":1,"298":1,"299":1},"2":{"294":1}}],["轻雪框架提供了一个内存共享通信的接口",{"2":{"292":1}}],["轻雪提供了一个通道channel用于跨进程通信",{"2":{"289":1}}],["轻雪运行在主进程",{"2":{"289":1}}],["轻雪抽象消息事件",{"2":{"183":2}}],["轻雪生命周期管理",{"2":{"65":2}}],["轻雪的更新功能依赖git",{"2":{"15":1}}],["轻雪使用git进行版本管理",{"2":{"12":1}}],["轻雪不局限于onebot适配器",{"2":{"4":1}}],["轻雪调试",{"2":{"2":1}}],["轻雪插件是轻雪内置的一部分功能",{"2":{"300":1}}],["轻雪插件目录列表",{"2":{"1":1}}],["轻雪插件列表",{"2":{"1":1}}],["轻雪支持yaml",{"2":{"0":1}}],["y",{"2":{"250":1}}],["y>",{"2":{"250":1}}],["y>name",{"2":{"250":1}}],["your",{"2":{"248":4}}],["yellow>",{"2":{"180":1}}],["yunzai",{"2":{"8":1}}],["yamlweather",{"2":{"317":1}}],["yamlname",{"2":{"308":1}}],["yamlnonebot",{"2":{"1":1}}],["yaml",{"0":{"139":1},"2":{"0":1,"2":1,"139":5,"142":2,"144":1}}],["yml格式的所有合法内容",{"2":{"311":1}}],["yml文件",{"2":{"308":1}}],["yml中填写一些信息",{"2":{"308":1}}],["yml",{"2":{"0":1,"142":1,"144":1,"308":2,"311":1}}],["yml和config目录",{"2":{"0":1}}],["你在a包中定义了一个index",{"2":{"308":1}}],["你自己制作的资源包也应该遵循这个规则",{"2":{"308":1}}],["你也可以自己制作资源包",{"2":{"307":1}}],["你的插件代码",{"2":{"302":1}}],["你应该使用其他储存方式",{"2":{"137":1}}],["你将无法使用更新功能",{"2":{"15":1}}],["你需要使用onebot标准的实现端来连接到轻雪并将消息上报给轻雪",{"2":{"6":1}}],["你有这个问题说明你不是很了解这个项目",{"2":{"6":1}}],["你可以选择开启auto",{"2":{"309":1}}],["你可以自由使用",{"2":{"309":1}}],["你可以自定义一些信息",{"2":{"308":1}}],["你可以在多个线程中读写共享内存",{"2":{"292":1}}],["你可以通过storage模块实现内存共享通信",{"2":{"292":1}}],["你可以通过channel发送消息给其他进程",{"2":{"289":1}}],["你可以使用python",{"2":{"12":1}}],["你可以使用nonebot2支持的任何适配器或使用轻雪讯息传递插件",{"2":{"4":1}}],["你可在此自定义生成的markdown格式",{"2":{"242":2}}],["你可在config目录下创建多个配置文件",{"2":{"0":1}}],["你可修改配置项后重启轻雪",{"2":{"0":1}}],["你只需要修改superusers及nickname字段即可",{"2":{"0":1}}],["绝大多数情况下",{"2":{"0":1}}],["取决于你个人的喜好",{"2":{"0":1}}],["配置项",{"2":{"317":1}}],["配置项目",{"2":{"138":2}}],["配置了命令别名的命令可以使用别名代替原命令",{"2":{"310":1}}],["配置文件尽量扁平化",{"2":{"137":1}}],["配置值",{"2":{"38":2,"39":2,"60":2,"61":2}}],["配置键",{"2":{"38":2,"39":2,"60":2,"61":2}}],["配置",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1},"2":{"21":3,"43":3,"312":1}}]],"serializationVersion":2}`;export{e as default}; diff --git a/assets/chunks/@localSearchIndexroot.s-V1IxJz.js b/assets/chunks/@localSearchIndexroot.s-V1IxJz.js new file mode 100644 index 00000000..b0a0edd8 --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.s-V1IxJz.js @@ -0,0 +1 @@ +const e='{"documentCount":327,"nextId":327,"documentIds":{"0":"/deploy/config.html#配置","1":"/deploy/config.html#基础配置项","2":"/deploy/config.html#其他配置","3":"/deploy/config.html#示例-与nonebot对接的onebot实现端配置","4":"/deploy/config.html#其他","5":"/deploy/fandq.html#答疑","6":"/deploy/fandq.html#常见问题","7":"/deploy/fandq.html#其他问题","8":"/deploy/fandq.html#推荐方案-qq","9":"/deploy/fandq.html#推荐方案-minecraft","10":"/deploy/fandq.html#鸣谢","11":"/deploy/install.html#安装","12":"/deploy/install.html#常规部署","13":"/deploy/install.html#使用docker构建","14":"/deploy/install.html#使用trss-scripts部署","15":"/deploy/install.html#装置要求","16":"/deploy/install.html#其他问题请移步至答疑","17":"/dev/api/api.html#liteyuki","18":"/dev/api/api.html#var-version","19":"/dev/api/bot/bot.html#liteyuki-bot","20":"/dev/api/bot/bot.html#class-liteyukibot","21":"/dev/api/bot/bot.html#def-init-self-kwargs-none","22":"/dev/api/bot/bot.html#def-run-self","23":"/dev/api/bot/bot.html#async-def-keep-alive-self","24":"/dev/api/bot/bot.html#def-restart-self-delay-int-0","25":"/dev/api/bot/bot.html#def-restart-process-self-name-optional-str-none","26":"/dev/api/bot/bot.html#def-init-self-args-kwargs","27":"/dev/api/bot/bot.html#def-init-logger-self","28":"/dev/api/bot/bot.html#def-stop-self","29":"/dev/api/bot/bot.html#def-on-before-start-self-func-lifespan-func-lifespan-func","30":"/dev/api/bot/bot.html#def-on-after-start-self-func-lifespan-func","31":"/dev/api/bot/bot.html#def-on-after-shutdown-self-func-lifespan-func","32":"/dev/api/bot/bot.html#def-on-before-process-shutdown-self-func-process-lifespan-func","33":"/dev/api/bot/bot.html#def-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","34":"/dev/api/bot/bot.html#def-on-after-restart-self-func-lifespan-func","35":"/dev/api/bot/bot.html#def-get-bot-liteyukibot","36":"/dev/api/bot/bot.html#def-get-config-key-str-default-any-none-any","37":"/dev/api/bot/bot.html#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","38":"/dev/api/bot/#liteyuki-bot","39":"/dev/api/bot/#class-liteyukibot","40":"/dev/api/bot/#def-init-self-kwargs-none","41":"/dev/api/bot/#def-run-self","42":"/dev/api/bot/#async-def-keep-alive-self","43":"/dev/api/bot/#def-restart-self-delay-int-0","44":"/dev/api/bot/#def-restart-process-self-name-optional-str-none","45":"/dev/api/bot/#def-init-self-args-kwargs","46":"/dev/api/bot/#def-init-logger-self","47":"/dev/api/bot/#def-stop-self","48":"/dev/api/bot/#def-on-before-start-self-func-lifespan-func-lifespan-func","49":"/dev/api/bot/#def-on-after-start-self-func-lifespan-func","50":"/dev/api/bot/#def-on-after-shutdown-self-func-lifespan-func","51":"/dev/api/bot/#def-on-before-process-shutdown-self-func-process-lifespan-func","52":"/dev/api/bot/#def-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","53":"/dev/api/bot/#def-on-after-restart-self-func-lifespan-func","54":"/dev/api/bot/#def-get-bot-liteyukibot","55":"/dev/api/bot/#def-get-config-key-str-default-any-none-any","56":"/dev/api/bot/#def-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","57":"/dev/api/bot/lifespan.html#liteyuki-bot-lifespan","58":"/dev/api/bot/lifespan.html#var-sync-lifespan-func","59":"/dev/api/bot/lifespan.html#var-async-lifespan-func","60":"/dev/api/bot/lifespan.html#var-lifespan-func","61":"/dev/api/bot/lifespan.html#var-sync-process-lifespan-func","62":"/dev/api/bot/lifespan.html#var-async-process-lifespan-func","63":"/dev/api/bot/lifespan.html#var-process-lifespan-func","64":"/dev/api/bot/lifespan.html#class-lifespan","65":"/dev/api/bot/lifespan.html#def-init-self-none","66":"/dev/api/bot/lifespan.html#async-def-run-funcs-funcs-sequence-lifespan-func-process-lifespan-func-args-kwargs-none","67":"/dev/api/bot/lifespan.html#def-on-before-start-self-func-lifespan-func-lifespan-func","68":"/dev/api/bot/lifespan.html#def-on-after-start-self-func-lifespan-func-lifespan-func","69":"/dev/api/bot/lifespan.html#def-on-before-process-shutdown-self-func-process-lifespan-func-process-lifespan-func","70":"/dev/api/bot/lifespan.html#def-on-after-shutdown-self-func-lifespan-func-lifespan-func","71":"/dev/api/bot/lifespan.html#def-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","72":"/dev/api/bot/lifespan.html#def-on-after-restart-self-func-lifespan-func-lifespan-func","73":"/dev/api/bot/lifespan.html#async-def-before-start-self-none","74":"/dev/api/bot/lifespan.html#async-def-after-start-self-none","75":"/dev/api/bot/lifespan.html#async-def-before-process-shutdown-self-none","76":"/dev/api/bot/lifespan.html#async-def-after-shutdown-self-none","77":"/dev/api/bot/lifespan.html#async-def-before-process-restart-self-none","78":"/dev/api/bot/lifespan.html#async-def-after-restart-self-none","79":"/dev/api/comm/channel.html#liteyuki-comm-channel","80":"/dev/api/comm/channel.html#var-sync-on-receive-func","81":"/dev/api/comm/channel.html#var-async-on-receive-func","82":"/dev/api/comm/channel.html#var-on-receive-func","83":"/dev/api/comm/channel.html#var-sync-filter-func","84":"/dev/api/comm/channel.html#var-async-filter-func","85":"/dev/api/comm/channel.html#var-filter-func","86":"/dev/api/comm/channel.html#class-channel-generic-t","87":"/dev/api/comm/channel.html#def-init-self-name-str-type-check-optional-bool-none","88":"/dev/api/comm/channel.html#def-send-self-data-t","89":"/dev/api/comm/channel.html#def-receive-self-t","90":"/dev/api/comm/channel.html#async-def-async-receive-self-t","91":"/dev/api/comm/channel.html#def-on-receive-self-filter-func-optional-filter-func-none-callable-callable-t-any-callable-t-any","92":"/dev/api/comm/channel.html#var-active-channel","93":"/dev/api/comm/channel.html#var-passive-channel","94":"/dev/api/comm/channel.html#var-publish-channel","95":"/dev/api/comm/channel.html#var-channel-deliver-active-channel","96":"/dev/api/comm/channel.html#var-channel-deliver-passive-channel","97":"/dev/api/comm/channel.html#def-set-channel-name-str-channel-channel","98":"/dev/api/comm/channel.html#def-set-channels-channels-dict-str-channel","99":"/dev/api/comm/channel.html#def-get-channel-name-str-channel","100":"/dev/api/comm/channel.html#def-get-channels-dict-str-channel","101":"/dev/api/comm/channel.html#var-channel-deliver-active-channel-1","102":"/dev/api/comm/channel.html#var-channel-deliver-passive-channel-1","103":"/dev/api/comm/channel.html#def-on-set-channel-data-tuple-str-dict-str-any","104":"/dev/api/comm/channel.html#def-on-get-channel-data-tuple-str-dict-str-any","105":"/dev/api/comm/channel.html#def-on-get-channels-data-tuple-str-dict-str-any","106":"/dev/api/comm/comm.html#liteyuki-comm","107":"/dev/api/comm/event.html#liteyuki-comm-event","108":"/dev/api/comm/event.html#class-event","109":"/dev/api/comm/event.html#def-init-self-name-str-data-dict-str-any","110":"/dev/api/comm/#liteyuki-comm","111":"/dev/api/comm/rpc.html#liteyuki-comm-rpc","112":"/dev/api/comm/rpc.html#class-rpc","113":"/dev/api/comm/rpc.html#def-init-self-on-calling-on-calling-func-none","114":"/dev/api/comm/rpc.html#def-call-self-args-tuple-kwargs-dict-any","115":"/dev/api/comm/socks_channel.html#liteyuki-comm-socks-channel","116":"/dev/api/comm/socks_channel.html#class-sockschannel","117":"/dev/api/comm/socks_channel.html#def-init-self-name-str","118":"/dev/api/comm/socks_channel.html#def-send-self-data","119":"/dev/api/comm/socks_channel.html#def-receive-self","120":"/dev/api/comm/socks_channel.html#def-close-self","121":"/dev/api/comm/storage.html#liteyuki-comm-storage","122":"/dev/api/comm/storage.html#var-on-main-subscriber-receive-funcs","123":"/dev/api/comm/storage.html#var-on-sub-subscriber-receive-funcs","124":"/dev/api/comm/storage.html#class-keyvaluestore","125":"/dev/api/comm/storage.html#def-init-self","126":"/dev/api/comm/storage.html#def-set-self-key-str-value-any-none","127":"/dev/api/comm/storage.html#def-get-self-key-str-default-optional-any-none-optional-any","128":"/dev/api/comm/storage.html#def-delete-self-key-str-ignore-key-error-bool-true-none","129":"/dev/api/comm/storage.html#def-get-all-self-dict-str-any","130":"/dev/api/comm/storage.html#def-publish-self-channel-str-data-any-none","131":"/dev/api/comm/storage.html#def-on-subscriber-receive-self-channel-str-callable-on-receive-func-on-receive-func","132":"/dev/api/comm/storage.html#async-def-run-subscriber-receive-funcs-channel-str-data-any","133":"/dev/api/comm/storage.html#async-def-start-receive-loop-self","134":"/dev/api/comm/storage.html#class-globalkeyvaluestore","135":"/dev/api/comm/storage.html#def-get-instance-cls","136":"/dev/api/comm/storage.html#attr-instance-none","137":"/dev/api/comm/storage.html#attr-lock-threading-lock","138":"/dev/api/comm/storage.html#var-shared-memory","139":"/dev/api/comm/storage.html#var-ref-count","140":"/dev/api/comm/storage.html#def-on-get-data-tuple-str-dict-str-any","141":"/dev/api/comm/storage.html#def-on-set-data-tuple-str-dict-str-any","142":"/dev/api/comm/storage.html#def-on-delete-data-tuple-str-dict-str-any","143":"/dev/api/comm/storage.html#def-on-get-all-data-tuple-str-dict-str-any","144":"/dev/api/config.html#liteyuki-config","145":"/dev/api/config.html#def-flat-config-config-dict-str-any-dict-str-any","146":"/dev/api/config.html#def-load-from-yaml-file-str-dict-str-any","147":"/dev/api/config.html#def-load-from-json-file-str-dict-str-any","148":"/dev/api/config.html#def-load-from-toml-file-str-dict-str-any","149":"/dev/api/config.html#def-load-from-files-files-str-no-warning-bool-false-dict-str-any","150":"/dev/api/config.html#def-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any","151":"/dev/api/config.html#def-load-config-in-default-no-waring-bool-false-dict-str-any","152":"/dev/api/core/core.html#liteyuki-core","153":"/dev/api/core/#liteyuki-core","154":"/dev/api/core/manager.html#liteyuki-core-manager","155":"/dev/api/core/manager.html#class-channeldeliver","156":"/dev/api/core/manager.html#def-init-self-active-channel-any-passive-channel-any-channel-deliver-active-channel-channel-any-channel-deliver-passive-channel-tuple-str-dict-publish-channel-tuple-str-any","157":"/dev/api/core/manager.html#class-processmanager","158":"/dev/api/core/manager.html#def-init-self-lifespan-lifespan","159":"/dev/api/core/manager.html#async-def-start-all-self","160":"/dev/api/core/manager.html#def-add-target-self-name-str-target-target-func-args-tuple-kwargs-none","161":"/dev/api/core/manager.html#def-join-all-self","162":"/dev/api/core/manager.html#def-terminate-self-name-str","163":"/dev/api/core/manager.html#def-terminate-all-self","164":"/dev/api/core/manager.html#def-is-process-alive-self-name-str-bool","165":"/dev/api/dev/dev.html#liteyuki-dev","166":"/dev/api/dev/#liteyuki-dev","167":"/dev/api/dev/observer.html#liteyuki-dev-observer","168":"/dev/api/dev/observer.html#var-callback-func","169":"/dev/api/dev/observer.html#var-filter-func","170":"/dev/api/dev/observer.html#def-debounce-wait","171":"/dev/api/dev/observer.html#class-codemodifiedhandler-filesystemeventhandler","172":"/dev/api/dev/observer.html#def-on-modified-self-event","173":"/dev/api/dev/observer.html#def-on-created-self-event","174":"/dev/api/dev/observer.html#def-on-deleted-self-event","175":"/dev/api/dev/observer.html#def-on-moved-self-event","176":"/dev/api/dev/observer.html#def-on-any-event-self-event","177":"/dev/api/dev/observer.html#def-on-file-system-event-directories-tuple-str-recursive-bool-true-event-filter-filter-func-none-callable-callback-func-callback-func","178":"/dev/api/exception.html#liteyuki-exception","179":"/dev/api/exception.html#class-liteyukiexception-baseexception","180":"/dev/api/dev/plugin.html#liteyuki-dev-plugin","181":"/dev/api/dev/plugin.html#def-run-plugins-module-path-str-path","182":"/dev/api/#liteyuki","183":"/dev/api/#var-version","184":"/dev/api/log.html#liteyuki-log","185":"/dev/api/log.html#def-get-format-level-str-str","186":"/dev/api/log.html#def-init-log-config-dict","187":"/dev/api/message/event.html#liteyuki-message-event","188":"/dev/api/message/event.html#class-messageevent","189":"/dev/api/message/event.html#def-init-self-bot-id-str-message-list-dict-str-any-str-message-type-str-raw-message-str-session-id-str-user-id-str-session-type-str-receive-channel-optional-channel-messageevent-none-data-optional-dict-str-any-none","190":"/dev/api/message/event.html#def-reply-self-message-str-dict-str-any","191":"/dev/api/message/#liteyuki-message","192":"/dev/api/message/matcher.html#liteyuki-message-matcher","193":"/dev/api/message/matcher.html#class-matcher","194":"/dev/api/message/matcher.html#def-init-self-rule-rule-priority-int-block-bool","195":"/dev/api/message/matcher.html#def-handle-self-callable-eventhandler-eventhandler","196":"/dev/api/message/matcher.html#async-def-run-self-event-messageevent-none","197":"/dev/api/message/message.html#liteyuki-message","198":"/dev/api/message/on.html#liteyuki-message-on","199":"/dev/api/message/on.html#def-add-matcher-matcher-matcher","200":"/dev/api/message/on.html#def-on-message-rule-rule-empty-rule-priority-int-0-block-bool-false-matcher","201":"/dev/api/message/on.html#def-on-keywords-keywords-list-str-rule-empty-rule-priority-int-0-block-bool-false-matcher","202":"/dev/api/message/rule.html#liteyuki-message-rule","203":"/dev/api/message/rule.html#var-rulehandlerfunc","204":"/dev/api/message/rule.html#class-rule","205":"/dev/api/message/rule.html#def-init-self-handler-rulehandlerfunc","206":"/dev/api/message/rule.html#def-or-self-other-rule-rule","207":"/dev/api/message/rule.html#def-and-self-other-rule-rule","208":"/dev/api/message/rule.html#async-def-call-self-event-messageevent-bool","209":"/dev/api/message/rule.html#async-def-empty-rule-event-messageevent-bool","210":"/dev/api/message/rule.html#async-def-is-su-rule-event-messageevent-bool","211":"/dev/api/message/session.html#liteyuki-message-session","212":"/dev/api/mkdoc.html#liteyuki-mkdoc","213":"/dev/api/mkdoc.html#class-deftype-enum","214":"/dev/api/mkdoc.html#attr-function-function","215":"/dev/api/mkdoc.html#attr-method-method","216":"/dev/api/mkdoc.html#attr-static-method-staticmethod","217":"/dev/api/mkdoc.html#attr-class-method-classmethod","218":"/dev/api/mkdoc.html#attr-property-property","219":"/dev/api/mkdoc.html#class-functioninfo-basemodel","220":"/dev/api/mkdoc.html#attr-name-str-no-default","221":"/dev/api/mkdoc.html#attr-args-list-tuple-str-str-no-default","222":"/dev/api/mkdoc.html#attr-return-type-str-no-default","223":"/dev/api/mkdoc.html#attr-docstring-str-no-default","224":"/dev/api/mkdoc.html#attr-source-code-str","225":"/dev/api/mkdoc.html#attr-type-deftype-no-default","226":"/dev/api/mkdoc.html#attr-is-async-bool-no-default","227":"/dev/api/mkdoc.html#class-attributeinfo-basemodel","228":"/dev/api/mkdoc.html#attr-name-str-no-default-1","229":"/dev/api/mkdoc.html#attr-type-str-no-default","230":"/dev/api/mkdoc.html#attr-value-any-none","231":"/dev/api/mkdoc.html#attr-docstring-str","232":"/dev/api/mkdoc.html#class-classinfo-basemodel","233":"/dev/api/mkdoc.html#attr-name-str-no-default-2","234":"/dev/api/mkdoc.html#attr-docstring-str-no-default-1","235":"/dev/api/mkdoc.html#attr-methods-list-functioninfo-no-default","236":"/dev/api/mkdoc.html#attr-attributes-list-attributeinfo-no-default","237":"/dev/api/mkdoc.html#attr-inherit-list-str-no-default","238":"/dev/api/mkdoc.html#class-moduleinfo-basemodel","239":"/dev/api/mkdoc.html#attr-module-path-str-no-default","240":"/dev/api/mkdoc.html#attr-functions-list-functioninfo-no-default","241":"/dev/api/mkdoc.html#attr-classes-list-classinfo-no-default","242":"/dev/api/mkdoc.html#attr-attributes-list-attributeinfo-no-default-1","243":"/dev/api/mkdoc.html#attr-docstring-str-no-default-2","244":"/dev/api/mkdoc.html#def-get-relative-path-base-path-str-target-path-str-str","245":"/dev/api/mkdoc.html#def-write-to-files-file-data-dict-str-str","246":"/dev/api/mkdoc.html#def-get-file-list-module-folder-str","247":"/dev/api/mkdoc.html#def-get-module-info-normal-file-path-str-ignore-private-bool-true-moduleinfo","248":"/dev/api/mkdoc.html#def-generate-markdown-module-info-moduleinfo-front-matter-none-lang-str-zh-cn-str","249":"/dev/api/mkdoc.html#def-generate-docs-module-folder-str-output-dir-str-with-top-bool-false-lang-str-zh-cn-ignored-paths-none","250":"/dev/api/mkdoc.html#var-no-module-name-pyfile-path","251":"/dev/api/plugin/#liteyuki-plugin","252":"/dev/api/plugin/#def-get-loaded-plugins-dict-str-plugin","253":"/dev/api/plugin/load.html#liteyuki-plugin-load","254":"/dev/api/plugin/load.html#def-load-plugin-module-path-str-path-optional-plugin","255":"/dev/api/plugin/load.html#def-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin","256":"/dev/api/plugin/load.html#def-format-display-name-display-name-str-plugin-type-plugintype-str","257":"/dev/api/plugin/manager.html#liteyuki-plugin-manager","258":"/dev/api/plugin/plugin.html#liteyuki-plugin","259":"/dev/api/plugin/plugin.html#def-get-loaded-plugins-dict-str-plugin","260":"/dev/api/plugin/model.html#liteyuki-plugin-model","261":"/dev/api/plugin/model.html#class-plugintype-enum","262":"/dev/api/plugin/model.html#attr-application-application","263":"/dev/api/plugin/model.html#attr-service-service","264":"/dev/api/plugin/model.html#attr-module-module","265":"/dev/api/plugin/model.html#attr-unclassified-unclassified","266":"/dev/api/plugin/model.html#attr-test-test","267":"/dev/api/plugin/model.html#class-pluginmetadata-basemodel","268":"/dev/api/plugin/model.html#attr-name-str-no-default","269":"/dev/api/plugin/model.html#attr-description-str","270":"/dev/api/plugin/model.html#attr-usage-str","271":"/dev/api/plugin/model.html#attr-type-plugintype-plugintype-unclassified","272":"/dev/api/plugin/model.html#attr-author-str","273":"/dev/api/plugin/model.html#attr-homepage-str","274":"/dev/api/plugin/model.html#attr-extra-dict-str-any","275":"/dev/api/plugin/model.html#class-plugin-basemodel","276":"/dev/api/plugin/model.html#def-hash-self","277":"/dev/api/plugin/model.html#attr-model-config-arbitrary-types-allowed-true","278":"/dev/api/plugin/model.html#attr-name-str-no-default-1","279":"/dev/api/plugin/model.html#attr-module-moduletype-no-default","280":"/dev/api/plugin/model.html#attr-module-name-str-no-default","281":"/dev/api/plugin/model.html#attr-metadata-optional-pluginmetadata-none","282":"/dev/api/plugins/liteecho.html#liteyuki-plugins-liteecho","283":"/dev/api/plugins/liteecho.html#async-def-liteecho-event-messageevent","284":"/dev/api/plugins/plugin_loader/plugin_loader.html#liteyuki-plugins-plugin-loader","285":"/dev/api/plugins/plugin_loader/plugin_loader.html#def-default-plugins-loader","286":"/dev/api/plugins/plugin_loader/#liteyuki-plugins-plugin-loader","287":"/dev/api/plugins/plugin_loader/#def-default-plugins-loader","288":"/dev/api/utils.html#liteyuki-utils","289":"/dev/api/utils.html#def-is-coroutine-callable-call-callable-any-bool","290":"/dev/api/utils.html#def-run-coroutine-coro-coroutine","291":"/dev/api/utils.html#def-run-coroutine-in-thread-coro-coroutine","292":"/dev/api/utils.html#def-path-to-module-name-path-path-str","293":"/dev/api/utils.html#def-async-wrapper-func-callable-any-callable-coroutine","294":"/dev/comm.html#通道通信","295":"/dev/comm.html#简介","296":"/dev/comm.html#示例","297":"/dev/comm.html#共享内存通信","298":"/dev/comm.html#简介-1","299":"/dev/comm.html#示例-1","300":"/dev/lyfunc.html#轻雪函数","301":"/dev/lyfunc.html#函数文件","302":"/dev/lyfunc.html#命令文档","303":"/dev/lyfunc.html#示例","304":"/dev/lyfunc.html#api","305":"/dev/lyfunc.html#结束关键字","306":"/dev/plugin.html#简介","307":"/dev/plugin.html#开始","308":"/dev/plugin.html#创建插件","309":"/dev/plugin.html#编写逻辑部分","310":"/dev/plugin.html#加载插件","311":"/dev/plugin.html#方法1","312":"/dev/plugin.html#方法2","313":"/dev/resource.html#简介","314":"/dev/resource.html#加载资源包","315":"/usage/agreement.html#用户协议","316":"/usage/basic.html#基础插件","317":"/usage/basic.html#轻雪命令liteyuki-command","318":"/usage/basic.html#命令别名","319":"/usage/basic.html#插件-包管理器-liteyuki-pacman","320":"/usage/basic.html#命令别名-1","321":"/usage/basic.html#用户管理liteyuki-user","322":"/usage/extra.html#功能插件命令","323":"/usage/extra.html#轻雪天气liteyuki-weather","324":"/usage/extra.html#命令别名","325":"/usage/extra.html#统计信息liteyuki-statistics","326":"/usage/extra.html#命令别名-1"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,16],"1":[1,1,51],"2":[1,1,48],"3":[2,1,28],"4":[1,1,3],"5":[1,1,1],"6":[1,1,55],"7":[1,1,2],"8":[3,1,30],"9":[3,1,6],"10":[1,1,8],"11":[1,1,1],"12":[1,1,44],"13":[1,1,35],"14":[2,1,7],"15":[1,1,39],"16":[1,2,1],"17":[1,1,1],"18":[3,1,7],"19":[2,1,1],"20":[2,2,1],"21":[6,4,68],"22":[4,4,18],"23":[6,4,28],"24":[8,4,69],"25":[10,4,49],"26":[6,4,16],"27":[5,4,13],"28":[4,4,12],"29":[9,4,25],"30":[9,4,24],"31":[9,4,25],"32":[11,4,27],"33":[11,4,28],"34":[9,4,25],"35":[5,2,38],"36":[10,2,41],"37":[14,2,61],"38":[2,1,1],"39":[2,2,1],"40":[6,4,68],"41":[4,4,18],"42":[6,4,28],"43":[8,4,69],"44":[10,4,49],"45":[6,4,16],"46":[5,4,13],"47":[4,4,12],"48":[9,4,25],"49":[9,4,24],"50":[9,4,25],"51":[11,4,27],"52":[11,4,28],"53":[9,4,25],"54":[5,2,38],"55":[10,2,41],"56":[14,2,61],"57":[3,1,25],"58":[4,3,8],"59":[4,3,9],"60":[3,3,11],"61":[5,3,9],"62":[5,3,10],"63":[4,3,12],"64":[2,3,1],"65":[5,5,31],"66":[13,5,55],"67":[9,5,27],"68":[9,5,27],"69":[11,5,29],"70":[9,5,27],"71":[11,5,29],"72":[9,5,27],"73":[7,5,20],"74":[7,5,20],"75":[8,5,21],"76":[7,5,21],"77":[8,5,21],"78":[7,5,21],"79":[3,1,4],"80":[5,3,9],"81":[5,3,10],"82":[4,3,12],"83":[4,3,9],"84":[4,3,11],"85":[3,3,11],"86":[5,3,1],"87":[12,8,73],"88":[6,8,45],"89":[5,8,30],"90":[6,8,32],"91":[16,8,79],"92":[3,3,9],"93":[3,3,9],"94":[3,3,15],"95":[4,3,11],"96":[4,3,12],"97":[7,3,55],"98":[7,3,35],"99":[7,3,47],"100":[8,3,46],"101":[4,3,9],"102":[4,3,17],"103":[10,3,25],"104":[10,3,28],"105":[10,3,27],"106":[2,1,9],"107":[3,1,3],"108":[2,3,1],"109":[9,5,13],"110":[2,1,9],"111":[3,1,5],"112":[2,3,1],"113":[10,5,15],"114":[9,5,18],"115":[4,1,3],"116":[2,4,1],"117":[6,6,21],"118":[5,6,14],"119":[4,6,14],"120":[4,6,10],"121":[3,1,5],"122":[6,3,12],"123":[6,3,12],"124":[2,3,1],"125":[4,5,30],"126":[9,5,32],"127":[12,5,39],"128":[12,5,44],"129":[9,5,31],"130":[9,5,23],"131":[13,5,54],"132":[11,5,30],"133":[7,5,42],"134":[2,3,2],"135":[5,5,18],"136":[4,5,1],"137":[6,5,1],"138":[3,3,9],"139":[3,3,17],"140":[9,3,29],"141":[9,3,27],"142":[9,3,27],"143":[10,3,27],"144":[2,1,20],"145":[8,2,40],"146":[10,2,35],"147":[10,2,34],"148":[10,2,34],"149":[14,2,43],"150":[16,2,49],"151":[15,2,34],"152":[2,1,1],"153":[2,1,1],"154":[3,1,25],"155":[2,3,1],"156":[14,5,18],"157":[2,3,1],"158":[6,5,17],"159":[6,5,31],"160":[14,5,49],"161":[5,5,13],"162":[6,5,33],"163":[5,5,12],"164":[9,5,29],"165":[2,1,3],"166":[2,1,3],"167":[3,1,6],"168":[3,3,9],"169":[3,3,9],"170":[4,3,25],"171":[4,3,3],"172":[6,7,17],"173":[6,7,10],"174":[6,7,10],"175":[6,7,10],"176":[6,7,10],"177":[20,3,55],"178":[2,1,3],"179":[4,2,1],"180":[3,1,25],"181":[9,3,33],"182":[1,1,1],"183":[3,1,7],"184":[2,1,25],"185":[6,2,17],"186":[6,2,47],"187":[3,1,25],"188":[2,3,1],"189":[24,5,49],"190":[9,5,36],"191":[2,1,25],"192":[3,1,25],"193":[2,3,1],"194":[10,5,27],"195":[7,5,21],"196":[8,5,32],"197":[2,1,25],"198":[3,1,25],"199":[5,3,21],"200":[15,3,19],"201":[16,3,30],"202":[3,1,25],"203":[2,3,11],"204":[2,3,1],"205":[6,5,10],"206":[6,5,19],"207":[6,5,19],"208":[8,5,20],"209":[8,3,16],"210":[9,3,21],"211":[3,1,25],"212":[2,1,25],"213":[4,2,1],"214":[5,6,1],"215":[5,6,1],"216":[6,6,1],"217":[6,6,1],"218":[5,6,1],"219":[4,2,1],"220":[6,6,1],"221":[8,6,1],"222":[7,6,1],"223":[6,6,1],"224":[6,6,1],"225":[6,6,1],"226":[7,6,1],"227":[4,2,1],"228":[6,6,1],"229":[6,6,1],"230":[5,6,1],"231":[5,6,1],"232":[4,2,1],"233":[6,6,1],"234":[6,6,1],"235":[7,6,1],"236":[7,6,1],"237":[7,6,1],"238":[4,2,1],"239":[7,6,1],"240":[7,6,1],"241":[7,6,1],"242":[7,6,1],"243":[6,6,1],"244":[8,2,21],"245":[9,2,37],"246":[8,2,27],"247":[15,2,145],"248":[15,2,97],"249":[20,2,96],"250":[6,2,10],"251":[2,1,1],"252":[9,2,18],"253":[3,1,25],"254":[12,3,80],"255":[15,3,58],"256":[9,3,41],"257":[3,1,25],"258":[2,1,1],"259":[9,2,18],"260":[3,1,25],"261":[4,3,1],"262":[5,7,1],"263":[5,7,1],"264":[5,7,1],"265":[5,7,1],"266":[5,7,1],"267":[4,3,1],"268":[6,7,1],"269":[5,7,1],"270":[5,7,1],"271":[5,7,1],"272":[5,7,1],"273":[5,7,1],"274":[7,7,1],"275":[4,3,1],"276":[4,7,10],"277":[9,7,1],"278":[6,7,1],"279":[6,7,1],"280":[7,7,1],"281":[6,7,1],"282":[3,1,31],"283":[6,3,21],"284":[4,1,25],"285":[5,4,21],"286":[4,1,25],"287":[5,4,21],"288":[2,1,6],"289":[9,2,32],"290":[6,2,44],"291":[8,2,22],"292":[8,2,40],"293":[9,2,27],"294":[1,1,1],"295":[1,1,12],"296":[1,1,83],"297":[1,1,1],"298":[1,2,9],"299":[1,2,18],"300":[1,1,9],"301":[1,1,25],"302":[1,1,33],"303":[1,2,26],"304":[1,1,7],"305":[1,1,18],"306":[1,1,4],"307":[1,1,1],"308":[1,2,42],"309":[1,2,58],"310":[1,2,1],"311":[1,3,6],"312":[1,3,25],"313":[1,1,31],"314":[1,1,56],"315":[1,1,28],"316":[1,1,16],"317":[2,1,86],"318":[1,3,30],"319":[4,1,53],"320":[1,5,38],"321":[2,1,20],"322":[1,1,1],"323":[2,1,30],"324":[1,3,8],"325":[2,1,35],"326":[1,3,17]},"averageFieldLength":[5.611620795107028,3.403669724770642,20.290519877675848],"storedFields":{"0":{"title":"配置","titles":[]},"1":{"title":"基础配置项","titles":["配置"]},"2":{"title":"其他配置","titles":["配置"]},"3":{"title":"示例:与NoneBot对接的OneBot实现端配置","titles":["配置"]},"4":{"title":"其他","titles":["配置"]},"5":{"title":"答疑","titles":[]},"6":{"title":"常见问题","titles":["答疑"]},"7":{"title":"其他问题","titles":["答疑"]},"8":{"title":"推荐方案(QQ)","titles":["答疑"]},"9":{"title":"推荐方案(Minecraft)","titles":["答疑"]},"10":{"title":"鸣谢","titles":["答疑"]},"11":{"title":"安装","titles":[]},"12":{"title":"常规部署","titles":["安装"]},"13":{"title":"使用Docker构建","titles":["安装"]},"14":{"title":"使用TRSS Scripts部署","titles":["安装"]},"15":{"title":"装置要求","titles":["安装"]},"16":{"title":"其他问题请移步至","titles":["安装","装置要求"]},"17":{"title":"liteyuki","titles":[]},"18":{"title":"var __version__","titles":["liteyuki"]},"19":{"title":"liteyuki.bot","titles":[]},"20":{"title":"class LiteyukiBot","titles":["liteyuki.bot"]},"21":{"title":"def __init__(self, **kwargs) -> None","titles":["liteyuki.bot","class LiteyukiBot"]},"22":{"title":"def run(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"23":{"title":"async def keep_alive(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"24":{"title":"def restart(self, delay: int = 0)","titles":["liteyuki.bot","class LiteyukiBot"]},"25":{"title":"def restart_process(self, name: Optional[str] = None)","titles":["liteyuki.bot","class LiteyukiBot"]},"26":{"title":"def init(self, *args, **kwargs)","titles":["liteyuki.bot","class LiteyukiBot"]},"27":{"title":"def init_logger(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"28":{"title":"def stop(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"29":{"title":"def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot","class LiteyukiBot"]},"30":{"title":"def on_after_start(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"31":{"title":"def on_after_shutdown(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"32":{"title":"def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"33":{"title":"def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot","class LiteyukiBot"]},"34":{"title":"def on_after_restart(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"35":{"title":"def get_bot() -> LiteyukiBot","titles":["liteyuki.bot"]},"36":{"title":"def get_config(key: str, default: Any = None) -> Any","titles":["liteyuki.bot"]},"37":{"title":"def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","titles":["liteyuki.bot"]},"38":{"title":"liteyuki.bot","titles":[]},"39":{"title":"class LiteyukiBot","titles":["liteyuki.bot"]},"40":{"title":"def __init__(self, **kwargs) -> None","titles":["liteyuki.bot","class LiteyukiBot"]},"41":{"title":"def run(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"42":{"title":"async def keep_alive(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"43":{"title":"def restart(self, delay: int = 0)","titles":["liteyuki.bot","class LiteyukiBot"]},"44":{"title":"def restart_process(self, name: Optional[str] = None)","titles":["liteyuki.bot","class LiteyukiBot"]},"45":{"title":"def init(self, *args, **kwargs)","titles":["liteyuki.bot","class LiteyukiBot"]},"46":{"title":"def init_logger(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"47":{"title":"def stop(self)","titles":["liteyuki.bot","class LiteyukiBot"]},"48":{"title":"def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot","class LiteyukiBot"]},"49":{"title":"def on_after_start(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"50":{"title":"def on_after_shutdown(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"51":{"title":"def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"52":{"title":"def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot","class LiteyukiBot"]},"53":{"title":"def on_after_restart(self, func: LIFESPAN_FUNC)","titles":["liteyuki.bot","class LiteyukiBot"]},"54":{"title":"def get_bot() -> LiteyukiBot","titles":["liteyuki.bot"]},"55":{"title":"def get_config(key: str, default: Any = None) -> Any","titles":["liteyuki.bot"]},"56":{"title":"def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","titles":["liteyuki.bot"]},"57":{"title":"liteyuki.bot.lifespan","titles":[]},"58":{"title":"var SYNC_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan"]},"59":{"title":"var ASYNC_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan"]},"60":{"title":"var LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan"]},"61":{"title":"var SYNC_PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan"]},"62":{"title":"var ASYNC_PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan"]},"63":{"title":"var PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan"]},"64":{"title":"class Lifespan","titles":["liteyuki.bot.lifespan"]},"65":{"title":"def __init__(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"66":{"title":"async def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"67":{"title":"def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"68":{"title":"def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"69":{"title":"def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"70":{"title":"def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"71":{"title":"def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"72":{"title":"def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["liteyuki.bot.lifespan","class Lifespan"]},"73":{"title":"async def before_start(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"74":{"title":"async def after_start(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"75":{"title":"async def before_process_shutdown(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"76":{"title":"async def after_shutdown(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"77":{"title":"async def before_process_restart(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"78":{"title":"async def after_restart(self) -> None","titles":["liteyuki.bot.lifespan","class Lifespan"]},"79":{"title":"liteyuki.comm.channel","titles":[]},"80":{"title":"var SYNC_ON_RECEIVE_FUNC","titles":["liteyuki.comm.channel"]},"81":{"title":"var ASYNC_ON_RECEIVE_FUNC","titles":["liteyuki.comm.channel"]},"82":{"title":"var ON_RECEIVE_FUNC","titles":["liteyuki.comm.channel"]},"83":{"title":"var SYNC_FILTER_FUNC","titles":["liteyuki.comm.channel"]},"84":{"title":"var ASYNC_FILTER_FUNC","titles":["liteyuki.comm.channel"]},"85":{"title":"var FILTER_FUNC","titles":["liteyuki.comm.channel"]},"86":{"title":"class Channel(Generic[T])","titles":["liteyuki.comm.channel"]},"87":{"title":"def __init__(self, name: str, type_check: Optional[bool] = None)","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"88":{"title":"def send(self, data: T)","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"89":{"title":"def receive(self) -> T","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"90":{"title":"async def async_receive(self) -> T","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"91":{"title":"def on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]","titles":["liteyuki.comm.channel","class Channel(Generic[T])"]},"92":{"title":"var active_channel","titles":["liteyuki.comm.channel"]},"93":{"title":"var passive_channel","titles":["liteyuki.comm.channel"]},"94":{"title":"var publish_channel","titles":["liteyuki.comm.channel"]},"95":{"title":"var channel_deliver_active_channel","titles":["liteyuki.comm.channel"]},"96":{"title":"var channel_deliver_passive_channel","titles":["liteyuki.comm.channel"]},"97":{"title":"def set_channel(name: str, channel: Channel)","titles":["liteyuki.comm.channel"]},"98":{"title":"def set_channels(channels: dict[str, Channel])","titles":["liteyuki.comm.channel"]},"99":{"title":"def get_channel(name: str) -> Channel","titles":["liteyuki.comm.channel"]},"100":{"title":"def get_channels() -> dict[str, Channel]","titles":["liteyuki.comm.channel"]},"101":{"title":"var channel_deliver_active_channel","titles":["liteyuki.comm.channel"]},"102":{"title":"var channel_deliver_passive_channel","titles":["liteyuki.comm.channel"]},"103":{"title":"def on_set_channel(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.channel"]},"104":{"title":"def on_get_channel(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.channel"]},"105":{"title":"def on_get_channels(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.channel"]},"106":{"title":"liteyuki.comm","titles":[]},"107":{"title":"liteyuki.comm.event","titles":[]},"108":{"title":"class Event","titles":["liteyuki.comm.event"]},"109":{"title":"def __init__(self, name: str, data: dict[str, Any])","titles":["liteyuki.comm.event","class Event"]},"110":{"title":"liteyuki.comm","titles":[]},"111":{"title":"liteyuki.comm.rpc","titles":[]},"112":{"title":"class RPC","titles":["liteyuki.comm.rpc"]},"113":{"title":"def __init__(self, on_calling: ON_CALLING_FUNC) -> None","titles":["liteyuki.comm.rpc","class RPC"]},"114":{"title":"def call(self, args: tuple, kwargs: dict) -> Any","titles":["liteyuki.comm.rpc","class RPC"]},"115":{"title":"liteyuki.comm.socks_channel","titles":[]},"116":{"title":"class SocksChannel","titles":["liteyuki.comm.socks_channel"]},"117":{"title":"def __init__(self, name: str)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"118":{"title":"def send(self, data)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"119":{"title":"def receive(self)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"120":{"title":"def close(self)","titles":["liteyuki.comm.socks_channel","class SocksChannel"]},"121":{"title":"liteyuki.comm.storage","titles":[]},"122":{"title":"var _on_main_subscriber_receive_funcs","titles":["liteyuki.comm.storage"]},"123":{"title":"var _on_sub_subscriber_receive_funcs","titles":["liteyuki.comm.storage"]},"124":{"title":"class KeyValueStore","titles":["liteyuki.comm.storage"]},"125":{"title":"def __init__(self)","titles":["liteyuki.comm.storage","class KeyValueStore"]},"126":{"title":"def set(self, key: str, value: Any) -> None","titles":["liteyuki.comm.storage","class KeyValueStore"]},"127":{"title":"def get(self, key: str, default: Optional[Any] = None) -> Optional[Any]","titles":["liteyuki.comm.storage","class KeyValueStore"]},"128":{"title":"def delete(self, key: str, ignore_key_error: bool = True) -> None","titles":["liteyuki.comm.storage","class KeyValueStore"]},"129":{"title":"def get_all(self) -> dict[str, Any]","titles":["liteyuki.comm.storage","class KeyValueStore"]},"130":{"title":"def publish(self, channel_: str, data: Any) -> None","titles":["liteyuki.comm.storage","class KeyValueStore"]},"131":{"title":"def on_subscriber_receive(self, channel_: str) -> Callable[[ON_RECEIVE_FUNC], ON_RECEIVE_FUNC]","titles":["liteyuki.comm.storage","class KeyValueStore"]},"132":{"title":"async def run_subscriber_receive_funcs(channel_: str, data: Any)","titles":["liteyuki.comm.storage","class KeyValueStore"]},"133":{"title":"async def start_receive_loop(self)","titles":["liteyuki.comm.storage","class KeyValueStore"]},"134":{"title":"class GlobalKeyValueStore","titles":["liteyuki.comm.storage"]},"135":{"title":"def get_instance(cls)","titles":["liteyuki.comm.storage","class GlobalKeyValueStore"]},"136":{"title":"attr _instance = None","titles":["liteyuki.comm.storage","class GlobalKeyValueStore"]},"137":{"title":"attr _lock = threading.Lock()","titles":["liteyuki.comm.storage","class GlobalKeyValueStore"]},"138":{"title":"var shared_memory","titles":["liteyuki.comm.storage"]},"139":{"title":"var _ref_count","titles":["liteyuki.comm.storage"]},"140":{"title":"def on_get(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"141":{"title":"def on_set(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"142":{"title":"def on_delete(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"143":{"title":"def on_get_all(data: tuple[str, dict[str, Any]])","titles":["liteyuki.comm.storage"]},"144":{"title":"liteyuki.config","titles":[]},"145":{"title":"def flat_config(config: dict[str, Any]) -> dict[str, Any]","titles":["liteyuki.config"]},"146":{"title":"def load_from_yaml(file_: str) -> dict[str, Any]","titles":["liteyuki.config"]},"147":{"title":"def load_from_json(file_: str) -> dict[str, Any]","titles":["liteyuki.config"]},"148":{"title":"def load_from_toml(file_: str) -> dict[str, Any]","titles":["liteyuki.config"]},"149":{"title":"def load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]","titles":["liteyuki.config"]},"150":{"title":"def load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]","titles":["liteyuki.config"]},"151":{"title":"def load_config_in_default(no_waring: bool = False) -> dict[str, Any]","titles":["liteyuki.config"]},"152":{"title":"liteyuki.core","titles":[]},"153":{"title":"liteyuki.core","titles":[]},"154":{"title":"liteyuki.core.manager","titles":[]},"155":{"title":"class ChannelDeliver","titles":["liteyuki.core.manager"]},"156":{"title":"def __init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]])","titles":["liteyuki.core.manager","class ChannelDeliver"]},"157":{"title":"class ProcessManager","titles":["liteyuki.core.manager"]},"158":{"title":"def __init__(self, lifespan: Lifespan)","titles":["liteyuki.core.manager","class ProcessManager"]},"159":{"title":"async def start_all(self)","titles":["liteyuki.core.manager","class ProcessManager"]},"160":{"title":"def add_target(self, name: str, target: TARGET_FUNC, args: tuple = (), kwargs = None)","titles":["liteyuki.core.manager","class ProcessManager"]},"161":{"title":"def join_all(self)","titles":["liteyuki.core.manager","class ProcessManager"]},"162":{"title":"def terminate(self, name: str)","titles":["liteyuki.core.manager","class ProcessManager"]},"163":{"title":"def terminate_all(self)","titles":["liteyuki.core.manager","class ProcessManager"]},"164":{"title":"def is_process_alive(self, name: str) -> bool","titles":["liteyuki.core.manager","class ProcessManager"]},"165":{"title":"liteyuki.dev","titles":[]},"166":{"title":"liteyuki.dev","titles":[]},"167":{"title":"liteyuki.dev.observer","titles":[]},"168":{"title":"var CALLBACK_FUNC","titles":["liteyuki.dev.observer"]},"169":{"title":"var FILTER_FUNC","titles":["liteyuki.dev.observer"]},"170":{"title":"def debounce(wait)","titles":["liteyuki.dev.observer"]},"171":{"title":"class CodeModifiedHandler(FileSystemEventHandler)","titles":["liteyuki.dev.observer"]},"172":{"title":"def on_modified(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"173":{"title":"def on_created(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"174":{"title":"def on_deleted(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"175":{"title":"def on_moved(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"176":{"title":"def on_any_event(self, event)","titles":["liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"177":{"title":"def on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]","titles":["liteyuki.dev.observer"]},"178":{"title":"liteyuki.exception","titles":[]},"179":{"title":"class LiteyukiException(BaseException)","titles":["liteyuki.exception"]},"180":{"title":"liteyuki.dev.plugin","titles":[]},"181":{"title":"def run_plugins(*module_path: str | Path)","titles":["liteyuki.dev.plugin"]},"182":{"title":"liteyuki","titles":[]},"183":{"title":"var __version__","titles":["liteyuki"]},"184":{"title":"liteyuki.log","titles":[]},"185":{"title":"def get_format(level: str) -> str","titles":["liteyuki.log"]},"186":{"title":"def init_log(config: dict)","titles":["liteyuki.log"]},"187":{"title":"liteyuki.message.event","titles":[]},"188":{"title":"class MessageEvent","titles":["liteyuki.message.event"]},"189":{"title":"def __init__(self, bot_id: str, message: list[dict[str, Any]] | str, message_type: str, raw_message: str, session_id: str, user_id: str, session_type: str, receive_channel: Optional[Channel[MessageEvent]] = None, data: Optional[dict[str, Any]] = None)","titles":["liteyuki.message.event","class MessageEvent"]},"190":{"title":"def reply(self, message: str | dict[str, Any])","titles":["liteyuki.message.event","class MessageEvent"]},"191":{"title":"liteyuki.message","titles":[]},"192":{"title":"liteyuki.message.matcher","titles":[]},"193":{"title":"class Matcher","titles":["liteyuki.message.matcher"]},"194":{"title":"def __init__(self, rule: Rule, priority: int, block: bool)","titles":["liteyuki.message.matcher","class Matcher"]},"195":{"title":"def handle(self) -> Callable[[EventHandler], EventHandler]","titles":["liteyuki.message.matcher","class Matcher"]},"196":{"title":"async def run(self, event: MessageEvent) -> None","titles":["liteyuki.message.matcher","class Matcher"]},"197":{"title":"liteyuki.message","titles":[]},"198":{"title":"liteyuki.message.on","titles":[]},"199":{"title":"def add_matcher(matcher: Matcher)","titles":["liteyuki.message.on"]},"200":{"title":"def on_message(rule: Rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["liteyuki.message.on"]},"201":{"title":"def on_keywords(keywords: list[str], rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["liteyuki.message.on"]},"202":{"title":"liteyuki.message.rule","titles":[]},"203":{"title":"var RuleHandlerFunc","titles":["liteyuki.message.rule"]},"204":{"title":"class Rule","titles":["liteyuki.message.rule"]},"205":{"title":"def __init__(self, handler: RuleHandlerFunc)","titles":["liteyuki.message.rule","class Rule"]},"206":{"title":"def __or__(self, other: Rule) -> Rule","titles":["liteyuki.message.rule","class Rule"]},"207":{"title":"def __and__(self, other: Rule) -> Rule","titles":["liteyuki.message.rule","class Rule"]},"208":{"title":"async def __call__(self, event: MessageEvent) -> bool","titles":["liteyuki.message.rule","class Rule"]},"209":{"title":"async def empty_rule(event: MessageEvent) -> bool","titles":["liteyuki.message.rule"]},"210":{"title":"async def is_su_rule(event: MessageEvent) -> bool","titles":["liteyuki.message.rule"]},"211":{"title":"liteyuki.message.session","titles":[]},"212":{"title":"liteyuki.mkdoc","titles":[]},"213":{"title":"class DefType(Enum)","titles":["liteyuki.mkdoc"]},"214":{"title":"attr FUNCTION = \'function\'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"215":{"title":"attr METHOD = \'method\'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"216":{"title":"attr STATIC_METHOD = \'staticmethod\'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"217":{"title":"attr CLASS_METHOD = \'classmethod\'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"218":{"title":"attr PROPERTY = \'property\'","titles":["liteyuki.mkdoc","class DefType(Enum)"]},"219":{"title":"class FunctionInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"220":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"221":{"title":"attr args: list[tuple[str, str]] = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"222":{"title":"attr return_type: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"223":{"title":"attr docstring: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"224":{"title":"attr source_code: str = \'\'","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"225":{"title":"attr type: DefType = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"226":{"title":"attr is_async: bool = NO_DEFAULT","titles":["liteyuki.mkdoc","class FunctionInfo(BaseModel)"]},"227":{"title":"class AttributeInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"228":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"229":{"title":"attr type: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"230":{"title":"attr value: Any = None","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"231":{"title":"attr docstring: str = \'\'","titles":["liteyuki.mkdoc","class AttributeInfo(BaseModel)"]},"232":{"title":"class ClassInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"233":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"234":{"title":"attr docstring: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"235":{"title":"attr methods: list[FunctionInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"236":{"title":"attr attributes: list[AttributeInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"237":{"title":"attr inherit: list[str] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ClassInfo(BaseModel)"]},"238":{"title":"class ModuleInfo(BaseModel)","titles":["liteyuki.mkdoc"]},"239":{"title":"attr module_path: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"240":{"title":"attr functions: list[FunctionInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"241":{"title":"attr classes: list[ClassInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"242":{"title":"attr attributes: list[AttributeInfo] = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"243":{"title":"attr docstring: str = NO_DEFAULT","titles":["liteyuki.mkdoc","class ModuleInfo(BaseModel)"]},"244":{"title":"def get_relative_path(base_path: str, target_path: str) -> str","titles":["liteyuki.mkdoc"]},"245":{"title":"def write_to_files(file_data: dict[str, str])","titles":["liteyuki.mkdoc"]},"246":{"title":"def get_file_list(module_folder: str)","titles":["liteyuki.mkdoc"]},"247":{"title":"def get_module_info_normal(file_path: str, ignore_private: bool = True) -> ModuleInfo","titles":["liteyuki.mkdoc"]},"248":{"title":"def generate_markdown(module_info: ModuleInfo, front_matter = None, lang: str = \'zh-CN\') -> str","titles":["liteyuki.mkdoc"]},"249":{"title":"def generate_docs(module_folder: str, output_dir: str, with_top: bool = False, lang: str = \'zh-CN\', ignored_paths = None)","titles":["liteyuki.mkdoc"]},"250":{"title":"var no_module_name_pyfile_path","titles":["liteyuki.mkdoc"]},"251":{"title":"liteyuki.plugin","titles":[]},"252":{"title":"def get_loaded_plugins() -> dict[str, Plugin]","titles":["liteyuki.plugin"]},"253":{"title":"liteyuki.plugin.load","titles":[]},"254":{"title":"def load_plugin(module_path: str | Path) -> Optional[Plugin]","titles":["liteyuki.plugin.load"]},"255":{"title":"def load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]","titles":["liteyuki.plugin.load"]},"256":{"title":"def format_display_name(display_name: str, plugin_type: PluginType) -> str","titles":["liteyuki.plugin.load"]},"257":{"title":"liteyuki.plugin.manager","titles":[]},"258":{"title":"liteyuki.plugin","titles":[]},"259":{"title":"def get_loaded_plugins() -> dict[str, Plugin]","titles":["liteyuki.plugin"]},"260":{"title":"liteyuki.plugin.model","titles":[]},"261":{"title":"class PluginType(Enum)","titles":["liteyuki.plugin.model"]},"262":{"title":"attr APPLICATION = \'application\'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"263":{"title":"attr SERVICE = \'service\'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"264":{"title":"attr MODULE = \'module\'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"265":{"title":"attr UNCLASSIFIED = \'unclassified\'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"266":{"title":"attr TEST = \'test\'","titles":["liteyuki.plugin.model","class PluginType(Enum)"]},"267":{"title":"class PluginMetadata(BaseModel)","titles":["liteyuki.plugin.model"]},"268":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"269":{"title":"attr description: str = \'\'","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"270":{"title":"attr usage: str = \'\'","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"271":{"title":"attr type: PluginType = PluginType.UNCLASSIFIED","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"272":{"title":"attr author: str = \'\'","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"273":{"title":"attr homepage: str = \'\'","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"274":{"title":"attr extra: dict[str, Any] = {}","titles":["liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"275":{"title":"class Plugin(BaseModel)","titles":["liteyuki.plugin.model"]},"276":{"title":"def __hash__(self)","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"277":{"title":"attr model_config = {\'arbitrary_types_allowed\': True}","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"278":{"title":"attr name: str = NO_DEFAULT","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"279":{"title":"attr module: ModuleType = NO_DEFAULT","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"280":{"title":"attr module_name: str = NO_DEFAULT","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"281":{"title":"attr metadata: Optional[PluginMetadata] = None","titles":["liteyuki.plugin.model","class Plugin(BaseModel)"]},"282":{"title":"liteyuki.plugins.liteecho","titles":[]},"283":{"title":"async def liteecho(event: MessageEvent)","titles":["liteyuki.plugins.liteecho"]},"284":{"title":"liteyuki.plugins.plugin_loader","titles":[]},"285":{"title":"def default_plugins_loader()","titles":["liteyuki.plugins.plugin_loader"]},"286":{"title":"liteyuki.plugins.plugin_loader","titles":[]},"287":{"title":"def default_plugins_loader()","titles":["liteyuki.plugins.plugin_loader"]},"288":{"title":"liteyuki.utils","titles":[]},"289":{"title":"def is_coroutine_callable(call: Callable[..., Any]) -> bool","titles":["liteyuki.utils"]},"290":{"title":"def run_coroutine(*coro: Coroutine)","titles":["liteyuki.utils"]},"291":{"title":"def run_coroutine_in_thread(*coro: Coroutine)","titles":["liteyuki.utils"]},"292":{"title":"def path_to_module_name(path: Path) -> str","titles":["liteyuki.utils"]},"293":{"title":"def async_wrapper(func: Callable[..., Any]) -> Callable[..., Coroutine]","titles":["liteyuki.utils"]},"294":{"title":"通道通信","titles":[]},"295":{"title":"简介","titles":["通道通信"]},"296":{"title":"示例","titles":["通道通信"]},"297":{"title":"共享内存通信","titles":["通道通信"]},"298":{"title":"简介","titles":["通道通信","共享内存通信"]},"299":{"title":"示例","titles":["通道通信","共享内存通信"]},"300":{"title":"轻雪函数","titles":[]},"301":{"title":"函数文件","titles":["轻雪函数"]},"302":{"title":"命令文档","titles":["轻雪函数"]},"303":{"title":"示例","titles":["轻雪函数","命令文档"]},"304":{"title":"API","titles":["轻雪函数"]},"305":{"title":"结束关键字","titles":["轻雪函数"]},"306":{"title":"简介","titles":[]},"307":{"title":"开始","titles":["简介"]},"308":{"title":"创建插件","titles":["简介","开始"]},"309":{"title":"编写逻辑部分","titles":["简介","开始"]},"310":{"title":"加载插件","titles":["简介","开始"]},"311":{"title":"方法1","titles":["简介","开始","加载插件"]},"312":{"title":"方法2","titles":["简介","开始","加载插件"]},"313":{"title":"简介","titles":[]},"314":{"title":"加载资源包","titles":["简介"]},"315":{"title":"用户协议","titles":[]},"316":{"title":"基础插件","titles":[]},"317":{"title":"轻雪命令liteyuki_command","titles":["基础插件"]},"318":{"title":"命令别名","titles":["基础插件","轻雪命令liteyuki_command"]},"319":{"title":"插件/包管理器 liteyuki_pacman","titles":["基础插件"]},"320":{"title":"命令别名","titles":["基础插件","插件/包管理器 liteyuki_pacman"]},"321":{"title":"用户管理liteyuki_user","titles":["基础插件"]},"322":{"title":"功能插件命令","titles":[]},"323":{"title":"轻雪天气liteyuki_weather","titles":["功能插件命令"]},"324":{"title":"命令别名","titles":["功能插件命令","轻雪天气liteyuki_weather"]},"325":{"title":"统计信息liteyuki_statistics","titles":["功能插件命令"]},"326":{"title":"命令别名","titles":["功能插件命令","统计信息liteyuki_statistics"]}},"dirtCount":0,"index":[["当前bot",{"2":{"325":1}}],["当前群聊",{"2":{"325":1}}],["当前会话启用",{"2":{"319":1}}],["秒",{"2":{"325":2}}],["小时",{"2":{"325":2}}],["天",{"2":{"325":2}}],["天气",{"2":{"323":1,"324":1}}],["格式",{"2":{"325":1}}],["格式为onebot",{"2":{"317":1}}],["统计时间范围为duration",{"2":{"325":1}}],["统计周期为period",{"2":{"325":1}}],["统计信息",{"2":{"325":1}}],["统计信息liteyuki",{"0":{"325":1},"1":{"326":1}}],["功能",{"2":{"325":1}}],["功能插件命令",{"0":{"322":1},"1":{"323":1,"324":1,"325":1,"326":1}}],["个人全局生效",{"2":{"323":1}}],["个人信息",{"2":{"321":1}}],["绑定城市",{"2":{"324":1}}],["绑定查询城市",{"2":{"323":1}}],["绑定端口",{"2":{"1":1}}],["海淀",{"2":{"323":1}}],["北京",{"2":{"323":1}}],["受限于nonebot2钩子函数的依赖注入参数",{"2":{"320":1}}],["帮助",{"2":{"320":1}}],["列表",{"2":{"320":1}}],["列出所有资源包",{"2":{"319":1}}],["列出所有插件",{"2":{"319":1}}],["更改",{"2":{"320":1}}],["更新",{"2":{"320":1}}],["更新插件商店索引",{"2":{"319":1}}],["更新轻雪",{"2":{"317":1,"318":1}}],["更新轻雪失败",{"2":{"6":1}}],["全局停用",{"2":{"320":1}}],["全局启用",{"2":{"319":1,"320":1}}],["搜索",{"2":{"320":1}}],["卸载",{"2":{"320":2}}],["卸载资源包",{"2":{"319":1}}],["卸载插件",{"2":{"319":1}}],["私聊所有人可用",{"2":{"319":2}}],["私聊通常为用户id",{"2":{"189":1}}],["包管理器",{"0":{"319":1},"1":{"320":1}}],["包括子task",{"2":{"302":1}}],["包括chromium",{"2":{"15":1}}],["切换图片模式",{"2":{"318":1}}],["切换到bot目录下",{"2":{"12":1}}],["状态",{"2":{"318":1}}],["别名",{"2":{"318":1,"320":1,"321":1,"324":1,"326":1}}],["别用你那b",{"2":{"15":1}}],["所有人",{"2":{"317":1,"319":1,"321":3}}],["所以在编写lyfunction时也要注意异步的调用",{"2":{"305":1}}],["群号",{"2":{"317":1}}],["群聊",{"2":{"318":1}}],["群聊仅群主",{"2":{"317":1,"319":2}}],["群聊通常为群id",{"2":{"189":1}}],["管理员",{"2":{"317":1,"319":2}}],["停用插件",{"2":{"319":2}}],["停用",{"2":{"318":1,"320":1}}],["停用机器人",{"2":{"317":1}}],["停止后钩子",{"2":{"76":2}}],["停止前钩子",{"2":{"75":2}}],["停止",{"2":{"65":2}}],["停止轻雪",{"2":{"25":2,"28":2,"44":2,"47":2}}],["查询目标地实时天气",{"2":{"323":1}}],["查询实时天气",{"2":{"323":1}}],["查询",{"2":{"318":1,"321":1}}],["查询配置项",{"2":{"317":1}}],["查看用户信息菜单",{"2":{"321":1}}],["查看插件帮助",{"2":{"319":1}}],["查看轻雪文档",{"2":{"317":1}}],["查看统计信息和状态",{"2":{"317":1}}],["查看当前bot",{"2":{"317":1}}],["版本",{"2":{"317":1}}],["❌",{"2":{"317":11}}],["超级用户可用",{"2":{"317":1,"319":2}}],["超级用户",{"2":{"317":10,"319":10}}],["超级用户列表",{"2":{"1":1}}],["重载",{"2":{"320":1}}],["重载所有资源包",{"2":{"319":1}}],["重载资源",{"2":{"318":1}}],["重载轻雪",{"2":{"317":1}}],["重启轻雪",{"2":{"318":1}}],["重启轻雪即可加载插件",{"2":{"311":1}}],["重启轻雪本体",{"2":{"24":2,"43":2}}],["重启后钩子",{"2":{"78":2}}],["重启前钩子",{"2":{"77":2}}],["重启",{"2":{"65":2}}],["举例",{"2":{"317":1}}],["权限",{"2":{"317":1,"319":2,"321":1}}],["~代替",{"2":{"316":1}}],["~可以使用插件",{"2":{"316":1}}],["命令",{"2":{"317":1,"318":1,"319":2,"320":1,"321":2,"323":1,"324":1,"325":1,"326":1}}],["命令别名",{"0":{"318":1,"320":1,"324":1,"326":1},"2":{"316":1,"321":1}}],["命令文档",{"0":{"302":1},"1":{"303":1}}],["系统信息及python信息",{"2":{"315":1}}],["分钟",{"2":{"325":2}}],["分发",{"2":{"315":1}}],["分工明确",{"2":{"144":1}}],["修改优先级",{"2":{"319":1}}],["修改",{"2":{"315":1}}],["同时用户也应该自行选择可用的资源包",{"2":{"314":1}}],["同步接收数据",{"2":{"89":2}}],["同步接收函数",{"2":{"80":1}}],["同步过滤函数",{"2":{"83":1}}],["同步进程生命周期函数",{"2":{"61":1}}],["同步生命周期函数",{"2":{"58":1}}],["第三方资源包开发者需要注意版本兼容性",{"2":{"314":1}}],["└─",{"2":{"314":1}}],["└───",{"2":{"314":1}}],["└─resource",{"2":{"314":2}}],["├─templates",{"2":{"314":1}}],["├─metadata",{"2":{"314":2}}],["正常的路径应该是这样的",{"2":{"314":1}}],["只需要将其解压到根目录resources目录下即可",{"2":{"314":1}}],["只负责处理和回应消息",{"2":{"6":1}}],["zip格式压缩的",{"2":{"314":1}}],["zh",{"0":{"248":1,"249":1},"2":{"2":1,"248":2,"249":1}}],["错位等无法预料的事情发生",{"2":{"313":1}}],["异常",{"2":{"313":1}}],["异步任务结束关键字",{"2":{"305":1}}],["异步等待",{"2":{"302":1}}],["异步包装器",{"2":{"293":2}}],["异步接收数据",{"2":{"90":2}}],["异步接收函数",{"2":{"81":1}}],["异步过滤函数",{"2":{"84":1}}],["异步进程生命周期函数",{"2":{"62":1}}],["异步生命周期函数",{"2":{"59":1}}],["欢迎各位投稿资源包到轻雪资源商店",{"2":{"313":1}}],["部分异常信息",{"2":{"315":1}}],["部分内容制作需要一点点前端基础",{"2":{"313":1}}],["部分来源于",{"2":{"288":1}}],["讲起打包成一个新的资源包",{"2":{"313":1}}],["仅需按照原有路径进行文件替换即可",{"2":{"313":1}}],["资源",{"2":{"313":1}}],["资源包管理",{"2":{"319":1}}],["资源包的结构会随着轻雪的更新而有变动",{"2":{"314":1}}],["资源包的制作很简单",{"2":{"313":1}}],["资源包加载遵循一个优先级",{"2":{"314":1}}],["资源包描述",{"2":{"314":1}}],["资源包名称",{"2":{"314":1}}],["资源包通常是以",{"2":{"314":1}}],["资源包",{"2":{"313":1,"320":1}}],["它允许你一定程度上自定义轻雪的外观",{"2":{"313":1}}],["它允许你在轻雪中运行一些自定义的由数据驱动的命令",{"2":{"300":1}}],["亦可根据用途称为主题包",{"2":{"313":1}}],["保存后轻雪会自动重载nonebot进程",{"2":{"312":1}}],["保持轻雪运行",{"2":{"23":2,"42":2}}],["我们在src",{"2":{"312":1}}],["我们专门为minecraft开发的服务器bot",{"2":{"9":1}}],["方法2",{"0":{"312":1}}],["方法1",{"0":{"311":1}}],["用户管理liteyuki",{"0":{"321":1}}],["用户协议",{"0":{"315":1}}],["用observer的on",{"2":{"309":1}}],["用于统计bot接收到的消息",{"2":{"325":1}}],["用于开发nonebot时进行文件系统变更重载",{"2":{"309":1}}],["用于结束当前已完成function的执行",{"2":{"305":1}}],["用于回复消息",{"2":{"189":1}}],["用于获取和唯一标识",{"2":{"160":2}}],["用于进程间通信",{"2":{"79":1}}],["排除的文件扩展名",{"2":{"309":1}}],["因此插件主要是一些后台任务或者与聊天机器人的通信",{"2":{"309":1}}],["因此无法通过内存共享和直接对象传递的方式进行通信",{"2":{"295":1}}],["定义插件元数据",{"2":{"308":1}}],["定义变量",{"2":{"302":1}}],["导入轻雪bot和日志",{"2":{"309":1}}],["导入文件系统事件",{"2":{"309":1}}],["导入文件系统观察器",{"2":{"309":1}}],["导入文件夹下多个插件",{"2":{"255":2}}],["导入逻辑部分",{"2":{"308":1}}],["首先创建一个文件夹",{"2":{"308":1}}],["首次运行后生成config",{"2":{"0":1}}],["编写逻辑部分",{"0":{"309":1}}],["编写轻雪函数推荐你使用vs",{"2":{"305":1}}],["编辑时的语法高亮可采取shell格式",{"2":{"301":1}}],["那么加载b包后",{"2":{"314":1}}],["那么你能够很快就上手",{"2":{"313":1}}],["那么当前所有函数包的task都会被截停销毁",{"2":{"305":1}}],["那么将会被解析为nickname而不是命令",{"2":{"6":1}}],["的情况是效率提升的关键",{"2":{"305":1}}],["单线程走到底",{"2":{"305":1}}],["单位s",{"2":{"302":1}}],["避免出现",{"2":{"305":1}}],["由于liteyukibot基于异步运行",{"2":{"305":1}}],["结束关键字",{"0":{"305":1}}],["结束函数关键字",{"2":{"302":1}}],["理论上所有基于onebotv11的api都可调用",{"2":{"304":1}}],["则该文件夹不会被识别为资源包",{"2":{"314":1}}],["则需要删除await",{"2":{"303":1}}],["则传入泛型默认开启",{"2":{"87":2}}],["无需手动创建实例",{"2":{"312":1}}],["无需手动初始化bot",{"2":{"181":2}}],["无限戳",{"2":{"303":1}}],["执行",{"2":{"303":1}}],["疯狂戳好友",{"2":{"303":1}}],["否则会导致渲染失败或渲染结果不理想",{"2":{"313":1}}],["否则task对象会被销毁",{"2":{"302":1}}],["否则默认关闭",{"2":{"87":2}}],["等待所有异步任务结束",{"2":{"302":1}}],["等待接收数据",{"2":{"90":1}}],["也支持句末注释",{"2":{"301":1}}],["也可以监听其他进程的消息",{"2":{"295":1}}],["支持中英文",{"2":{"323":2}}],["支持中英文城市名",{"2":{"323":1}}],["支持多个关键词查询",{"2":{"323":1}}],["支持绑定城市",{"2":{"323":1}}],["支持单行注释",{"2":{"301":1}}],["支持onebotv11标准",{"2":{"9":1}}],["函数文件放在资源包的functions目录下",{"2":{"301":1}}],["函数文件",{"0":{"301":1}}],["函数列表",{"2":{"66":2}}],["属于资源包的一部分",{"2":{"300":1}}],["是可以相对引用的",{"2":{"314":1}}],["是轻雪的一个功能",{"2":{"300":1}}],["是否为协程可调用对象",{"2":{"289":2}}],["是否忽略警告",{"2":{"255":2}}],["是否忽略键不存在的错误",{"2":{"128":2}}],["是否包含顶层文件夹",{"2":{"249":2}}],["是否阻断后续优先级更低的匹配器",{"2":{"194":2}}],["是否递归监听子目录",{"2":{"177":2}}],["是否开启类型检查",{"2":{"87":2}}],["是否允许更新",{"2":{"2":1}}],["是否自动更新轻雪",{"2":{"1":1}}],["是否自动上报问题给轻雪服务器",{"2":{"1":1}}],["是否显示日志等级图标",{"2":{"1":1}}],["线程锁会自动保护共享内存的读写操作",{"2":{"298":1}}],["相比于普通进程通信",{"2":{"298":1}}],["相对路径",{"2":{"245":2}}],["且通过安全的方式传输到轻雪的服务器",{"2":{"315":1}}],["且通道标识为",{"2":{"296":1}}],["且遵守了相关字体开源协议",{"2":{"10":1}}],["创建入口文件",{"2":{"312":1}}],["创建插件",{"0":{"308":1}}],["创建子进程的同时会初始化一个被动通道和一个主动通道",{"2":{"296":1}}],["创建asyncio",{"2":{"159":2}}],["实现",{"2":{"296":1}}],["实现端本身不负责处理响应逻辑",{"2":{"6":1}}],["被动模式",{"2":{"296":1}}],["被动模式由chan",{"2":{"296":1}}],["被动通道传递通道",{"2":{"96":1,"102":1}}],["被动通道",{"2":{"93":1}}],["即后加载的资源包会覆盖前面的资源包",{"2":{"314":1}}],["即可创建一个插件",{"2":{"308":1}}],["即不等待",{"2":{"302":1}}],["即被动模式和主动模式",{"2":{"296":1}}],["即轻雪作为服务端",{"2":{"3":1}}],["有一个task任务没有完成而await被执行了",{"2":{"305":1}}],["有两种接收模式",{"2":{"296":1}}],["有的插件安装后报错无法启动",{"2":{"6":1}}],["这时可以通过通道对主进程发送消息",{"2":{"295":1}}],["这里给出一个参考值",{"2":{"3":1}}],["里",{"2":{"295":1}}],["简介",{"0":{"295":1,"298":1,"306":1,"313":1},"1":{"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"314":1}}],["路径a",{"2":{"292":2}}],["转换路径为模块名",{"2":{"292":2}}],["判断是否为协程可调用对象",{"2":{"289":2}}],["一个",{"2":{"308":1}}],["一个键不要多次出现",{"2":{"144":1}}],["一些常用的工具类",{"2":{"288":1}}],["应在初始化时调用",{"2":{"285":2,"287":2}}],["根据不同类型插件设置颜色",{"2":{"256":2}}],["可用",{"2":{"317":1}}],["可用参数",{"2":{"317":1}}],["可以在配置文件中把auto",{"2":{"315":1}}],["可以在a的index",{"2":{"314":1}}],["可以在此基础上进行修改",{"2":{"313":1}}],["可以很高程度地扩展轻雪的功能",{"2":{"306":1}}],["可以是本地插件或是通过",{"2":{"254":2}}],["可递归",{"2":{"302":1}}],["可调用对象",{"2":{"289":2}}],["可使用ws",{"2":{"8":1}}],["插件停用只能阻断传入响应",{"2":{"320":1}}],["插件管理",{"2":{"319":1,"320":1}}],["插件",{"0":{"319":1},"1":{"320":1}}],["插件信息",{"2":{"315":1}}],["插件描述",{"2":{"308":1}}],["插件版本",{"2":{"308":1}}],["插件类型",{"2":{"256":2,"308":1}}],["插件名称",{"2":{"254":2,"256":2,"308":1}}],["插件字典",{"2":{"252":2,"259":2}}],["插件路径",{"2":{"181":2}}],["去头路径",{"2":{"250":1}}],["忽略的路径",{"2":{"249":2}}],["忽略私有函数和类",{"2":{"247":2}}],["模块名",{"2":{"292":2}}],["模块文件夹",{"2":{"249":2}}],["模块信息",{"2":{"247":2,"248":2}}],["+",{"2":{"248":2,"292":1}}],["+=",{"2":{"24":1,"43":1,"91":1,"248":15}}],["字体包",{"2":{"313":1}}],["字符串",{"2":{"248":2}}],["字段",{"2":{"3":1}}],["语言包等",{"2":{"313":1}}],["语言",{"2":{"248":2,"249":2}}],["文件内容为一系列的命令",{"2":{"301":1}}],["文件名以",{"2":{"301":1}}],["文件夹路径",{"2":{"255":2}}],["文件路径",{"2":{"247":2}}],["文件数据",{"2":{"245":2}}],["输入值会被执行以转换为正确的类型",{"2":{"317":1}}],["输入playwright",{"2":{"6":1}}],["输出",{"2":{"301":1}}],["输出文件夹",{"2":{"249":2}}],["输出文件",{"2":{"245":2}}],["目标路径",{"2":{"244":2}}],["目前可用性较低",{"2":{"8":1}}],["目前markdown消息支持lagrange",{"2":{"8":1}}],["x26",{"2":{"201":1,"248":4}}],["x3c",{"2":{"24":1,"43":1,"186":5,"199":1,"248":8,"254":2,"256":4,"302":6,"323":2,"325":2}}],["添加配置项",{"2":{"317":1}}],["添加sleep",{"2":{"303":1}}],["添加处理函数",{"2":{"195":2}}],["添加进程",{"2":{"160":2}}],["优先级",{"2":{"194":2}}],["规则函数签名",{"2":{"203":1}}],["规则",{"2":{"194":2}}],["匹配器",{"2":{"194":2}}],["回复消息",{"2":{"190":2}}],["附加数据",{"2":{"189":1}}],["原始消息",{"2":{"189":1}}],["原生实现",{"2":{"8":1}}],["消息类型",{"2":{"189":1}}],["消息段数组",{"2":{"189":1}}],["消息",{"2":{"189":1}}],["机器人id",{"2":{"189":1}}],["机器人昵称列表",{"2":{"1":1}}],["⭕",{"2":{"186":1}}],["⚠️",{"2":{"186":1}}],["✅",{"2":{"186":1}}],["ℹ️信息",{"2":{"296":4}}],["ℹ️",{"2":{"186":1}}],["🐛",{"2":{"186":1}}],["运行环境的设备信息",{"2":{"315":1}}],["运行在主进程中",{"2":{"306":1}}],["运行协程",{"2":{"290":2}}],["运行处理函数",{"2":{"196":2}}],["运行插件",{"2":{"181":2}}],["运行订阅者接收函数",{"2":{"132":2}}],["上午12",{"2":{"260":1}}],["上午11",{"2":{"154":1}}],["上午6",{"2":{"212":1}}],["上午9",{"2":{"184":1}}],["上午5",{"2":{"180":1}}],["事件过滤器",{"2":{"177":2}}],["事件循环",{"2":{"21":1,"40":1}}],["防抖函数",{"2":{"170":2}}],["防止获取空指针",{"2":{"139":1}}],["位置1为filesystemevent",{"2":{"168":1,"169":1}}],["启用",{"2":{"318":1,"320":1}}],["启用插件后",{"2":{"312":1}}],["启用该模块需要在配置文件中设置dev",{"2":{"167":1}}],["启动后控制台输出",{"2":{"296":1}}],["启动后钩子",{"2":{"74":2}}],["启动所有进程",{"2":{"159":2}}],["启动发布订阅接收器循环",{"2":{"133":2}}],["启动前钩子",{"2":{"73":2}}],["启动",{"2":{"65":2}}],["启动容器",{"2":{"13":1}}],["启动bot",{"2":{"12":1}}],["启动时会加载项目目录下config",{"2":{"0":1}}],["此模块用于注册观察者函数",{"2":{"167":1}}],["检查进程是否存活",{"2":{"164":2}}],["终止进程并从进程字典中删除",{"2":{"162":2}}],["对于主动推送的插件不生效",{"2":{"320":1}}],["对于不同资源包的不同文件",{"2":{"314":1}}],["对外启动方法",{"2":{"159":2}}],["对公开放时建议设置",{"2":{"2":1}}],["项目目录下的配置文件优先",{"2":{"151":2}}],["项目目录下的配置文件优先级高于config目录下的配置文件",{"2":{"144":1}}],["项目目录下的config",{"2":{"151":2}}],["按照读取文件的优先级反向覆盖",{"2":{"150":2}}],["从一个标准的轻雪项目加载配置文件",{"2":{"151":2}}],["从目录下加载配置文件",{"2":{"150":2}}],["从指定文件加载配置项",{"2":{"149":2}}],["8",{"2":{"146":1,"147":1,"148":1,"180":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"245":1,"247":1,"282":1,"283":1,"284":1,"286":1}}],["但请注意甄别第三方插件的安全性",{"2":{"315":1}}],["但请保证以上三个字段",{"2":{"314":1}}],["但若出现非单function的情况",{"2":{"305":1}}],["但需单独起篇幅",{"2":{"300":1}}],["但一个通道只能使用一种",{"2":{"296":1}}],["但也包含原有的键值对",{"2":{"145":2}}],["但是请保留原作者信息",{"2":{"315":1}}],["但是更加轻量级并且线程安全",{"2":{"121":1}}],["但是bot昵称有一个help",{"2":{"6":1}}],["但是基本上都是一样的",{"2":{"3":1}}],["但是部分内容会被覆盖",{"2":{"1":1}}],["扁平化后的配置文件",{"2":{"145":2}}],["扁平化配置文件",{"2":{"145":2}}],["扁平化编写",{"2":{"144":1}}],["注意不要嵌套文件夹",{"2":{"314":1}}],["注意冲突时的优先级",{"2":{"144":1}}],["注册一个函数在nonebot启动后运行",{"2":{"296":1}}],["注册一个函数在轻雪启动后运行",{"2":{"296":1}}],["注册文件系统变化监听器",{"2":{"177":2}}],["注册重启后的函数",{"2":{"34":2,"53":2,"72":2}}],["注册进程重启前的函数",{"2":{"33":2,"52":2,"71":2}}],["注册进程停止前的函数",{"2":{"32":2,"51":2,"69":2}}],["注册停止后的函数",{"2":{"31":2,"50":2,"70":2}}],["注册启动时的函数",{"2":{"67":2,"68":2}}],["注册启动后的函数",{"2":{"30":2,"49":2}}],["注册启动前的函数",{"2":{"29":2,"48":2}}],["45m",{"2":{"325":2}}],["44",{"2":{"191":1,"197":1}}],["47",{"2":{"187":1,"211":1}}],["4",{"2":{"144":1}}],["每隔0",{"2":{"303":1}}],["每行一个命令",{"2":{"301":1}}],["每次接收到字符串数据时都会运行",{"2":{"296":1}}],["每3秒发送一次消息",{"2":{"296":1}}],["每个配置文件给一个或一类服务提供配置",{"2":{"144":1}}],["每天4点检查更新",{"2":{"1":1}}],["尽量不要冲突",{"2":{"144":1}}],["多配置文件编写原则",{"2":{"144":1}}],["引用计数",{"2":{"139":1}}],["共享内存通信",{"0":{"297":1},"1":{"298":1,"299":1}}],["共享内存对象",{"2":{"138":1}}],["共享内存模块",{"2":{"121":1}}],["订阅者接收消息时的回调",{"2":{"131":2}}],["频道",{"2":{"130":2,"131":2,"132":2}}],["发布消息",{"2":{"130":2}}],["发送函数为同步函数",{"2":{"88":2}}],["发送数据",{"2":{"88":2,"118":2}}],["删除键值对",{"2":{"128":2}}],["值",{"2":{"126":2,"127":2}}],["键值对",{"2":{"129":2}}],["键",{"2":{"126":2,"127":2,"128":2}}],["类似于minecraft的mcfunction",{"2":{"300":1}}],["类似于redis",{"2":{"121":1}}],["类型",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"92":1,"93":1,"94":1,"95":1,"96":1,"122":1,"123":1,"138":1,"168":1,"169":1,"203":1}}],["关闭通道",{"2":{"120":2}}],["关键字参数",{"2":{"26":2,"45":2}}],["调用机器人函数",{"2":{"317":1}}],["调用机器人api",{"2":{"317":1}}],["调用重启进程方法",{"2":{"309":1}}],["调用函数",{"2":{"302":1}}],["调用bot",{"2":{"302":1}}],["调用",{"2":{"114":2}}],["通过关键词搜索插件",{"2":{"319":1}}],["通过装饰器注册一个函数在接收到消息时运行",{"2":{"296":1}}],["通常是目录不存在或目录为空",{"2":{"255":2}}],["通常为纯文本的格式",{"2":{"189":1}}],["通常会默认传入chan",{"2":{"160":2}}],["通信",{"2":{"111":1}}],["通道是全双工的",{"2":{"296":1}}],["通道通信",{"0":{"294":1},"1":{"295":1,"296":1,"297":1,"298":1,"299":1}}],["通道实例",{"2":{"97":2,"98":2,"99":2,"100":2}}],["通道名称",{"2":{"97":2,"99":2}}],["通道传递通道",{"2":{"94":1,"95":1}}],["通道id",{"2":{"87":2,"117":2}}],["依赖关系",{"2":{"106":1,"110":1}}],["主题包中的html渲染使用js来规定数据的渲染位置",{"2":{"313":1}}],["主题商店提供了一些资源包供你选择",{"2":{"313":1}}],["主动模式需调用chan",{"2":{"296":1}}],["主动通道传递通道",{"2":{"101":1}}],["主进程中",{"2":{"296":1}}],["主进程中通过get",{"2":{"296":1}}],["主进程接收到消息后重启对应子进程",{"2":{"295":1}}],["主进程订阅者接收函数",{"2":{"122":1}}],["主进程创建单例",{"2":{"94":1,"95":1}}],["设置用户信息或打开属性设置菜单",{"2":{"321":1}}],["设置",{"2":{"318":1,"321":1}}],["设置共享内存",{"2":{"299":1}}],["设置后的插件名称",{"2":{"256":2}}],["设置插件名称颜色",{"2":{"256":2}}],["设置键值对",{"2":{"126":2}}],["设置通道实例",{"2":{"97":2,"98":2}}],["设备上python环境太乱了",{"2":{"6":1}}],["子进程中获取通道直接导入进程全局单例即可",{"2":{"296":1}}],["子进程中导入单例active",{"2":{"296":1}}],["子进程订阅者接收函数",{"2":{"123":1}}],["子进程初始化时实例化",{"2":{"94":1,"95":1}}],["子进程可用的主动和被动通道",{"2":{"92":1}}],["装饰回调函数实现",{"2":{"296":1}}],["装饰一个函数在接收到数据后执行",{"2":{"177":2}}],["装饰器",{"2":{"91":2,"131":2,"177":2,"195":4}}],["装置要求",{"0":{"15":1},"1":{"16":1}}],["接收频道",{"2":{"189":1}}],["接收数据",{"2":{"119":2}}],["接收数据并执行函数",{"2":{"91":2}}],["接收到数据",{"2":{"90":1}}],["接收函数",{"2":{"82":1}}],["会自动判断key版本",{"2":{"323":1}}],["会自动识别文件格式",{"2":{"149":2}}],["会触发最大递归深度限制",{"2":{"303":1}}],["会话负载信息",{"2":{"315":1}}],["会话类型",{"2":{"189":1}}],["会话id",{"2":{"189":1}}],["会挂起等待",{"2":{"90":2}}],["会阻塞线程",{"2":{"89":2}}],["数据",{"2":{"88":2,"89":2,"90":2,"118":2,"119":2,"130":2,"132":2}}],["没有异步的必要",{"2":{"88":2}}],["过滤函数",{"2":{"85":1,"91":2}}],["并且应该在metadata",{"2":{"314":1}}],["并且不用修改源代码",{"2":{"313":1}}],["并在其中写入一些代码",{"2":{"312":1}}],["并在其中写入以下代码",{"2":{"312":1}}],["并在其中创建一个",{"2":{"308":1}}],["并遵循其许可进行修改",{"2":{"288":1}}],["并发运行异步函数",{"2":{"66":2}}],["并使用克隆而非直接下载的方式部署轻雪",{"2":{"6":1}}],["|",{"0":{"66":1,"181":1,"189":1,"190":1,"254":1},"2":{"60":1,"63":1,"66":3,"82":1,"85":1,"181":1,"189":1,"190":1,"254":1}}],["下午12",{"2":{"282":1}}],["下午11",{"2":{"253":1,"257":1}}],["下午10",{"2":{"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"284":1,"286":1}}],["下午8",{"2":{"57":1}}],["下面已经列出一些推荐的实现端",{"2":{"6":1}}],["7",{"2":{"57":1,"154":1,"184":1,"253":1,"257":1,"260":1}}],["兼容键",{"2":{"37":2,"56":2}}],["兼容旧版本",{"2":{"37":2,"56":2}}],["获取用户信息",{"2":{"321":1}}],["获取唯一的轻雪bot实例",{"2":{"309":1}}],["获取共享内存",{"2":{"299":1}}],["获取主动通道",{"2":{"296":1}}],["获取被动通道",{"2":{"296":1}}],["获取已加载的插件",{"2":{"252":2,"259":2}}],["获取函数和类",{"2":{"247":2}}],["获取相对路径",{"2":{"244":2}}],["获取所有键值对",{"2":{"129":2}}],["获取键值对",{"2":{"127":2}}],["获取通道实例们",{"2":{"100":2}}],["获取通道实例",{"2":{"99":2}}],["获取配置",{"2":{"36":2,"37":2,"55":2,"56":2}}],["获取轻雪实例",{"2":{"35":2,"54":2}}],["为可选参数",{"2":{"316":1}}],["为必填参数",{"2":{"316":1}}],["为子进程重启时调用",{"2":{"33":2,"52":2}}],["为子进程停止时调用",{"2":{"32":2,"51":2}}],["为什么我启动后机器人没有反应",{"2":{"6":1}}],["未实现",{"2":{"31":2,"34":2,"50":2,"53":2,"76":2,"78":2}}],["返回true则执行回调函数",{"2":{"177":2}}],["返回",{"2":{"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"89":1,"90":1,"91":1,"99":1,"100":1,"119":1,"127":1,"129":1,"131":1,"145":1,"177":1,"195":1,"247":1,"248":1,"252":1,"256":1,"259":1,"289":1,"292":1,"293":1}}],["自定义选项title",{"2":{"248":2}}],["自动调用",{"2":{"26":2,"45":2}}],["自己整一个websocket客户端",{"2":{"8":1}}],["`pathlib",{"2":{"254":1}}],["`path",{"2":{"254":1}}],["`pip`",{"2":{"254":1}}],["`process",{"2":{"32":2,"33":2,"51":2,"52":2,"66":1,"69":2,"71":2}}],["`",{"2":{"248":14,"254":1}}],["`dict`",{"2":{"98":1,"100":1}}],["`channel`",{"2":{"97":1,"98":1,"99":1,"100":1}}],["`filter",{"2":{"91":1}}],["`async",{"2":{"66":1}}],["`any`",{"2":{"36":2,"37":2,"55":2,"56":2}}],["`sequence`",{"2":{"66":1}}],["`str`",{"2":{"25":1,"36":1,"37":2,"44":1,"55":1,"56":2,"97":1,"98":1,"99":1,"100":1}}],["`tuple`",{"2":{"37":1,"56":1}}],["`liteyukibot`",{"2":{"35":1,"54":1}}],["`lifespan",{"2":{"29":2,"30":2,"31":2,"34":2,"48":2,"49":2,"50":2,"53":2,"67":2,"68":2,"70":2,"72":2}}],["`optional`",{"2":{"25":1,"44":1,"91":1}}],["`int`",{"2":{"24":1,"43":1}}],["进程生命周期函数",{"2":{"69":4,"71":4}}],["进程函数关键字参数",{"2":{"160":2}}],["进程函数参数",{"2":{"160":2}}],["进程函数",{"2":{"63":1,"160":2}}],["进程名",{"2":{"25":2,"44":2,"160":2}}],["进入轻雪目录",{"2":{"13":1}}],["join",{"0":{"161":1},"2":{"24":1,"43":1,"150":1,"161":2,"162":1,"246":1,"248":4,"249":1,"255":2,"292":2}}],["js",{"2":{"8":1}}],["json",{"0":{"147":1},"2":{"0":1,"147":5,"149":2,"151":1}}],["json和toml作为配置文件",{"2":{"0":1}}],["friend",{"2":{"303":2}}],["front",{"0":{"248":1},"2":{"248":6,"249":3}}],["from",{"0":{"146":1,"147":1,"148":1,"149":1,"150":1},"2":{"89":1,"146":4,"147":4,"148":4,"149":4,"150":2,"151":2,"296":4,"308":1,"309":3}}],["future",{"2":{"290":1}}],["function实现语法高亮",{"2":{"305":1}}],["functiondef",{"2":{"247":3}}],["functioninfo",{"0":{"219":1,"235":1,"240":1},"1":{"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1},"2":{"247":2}}],["function",{"0":{"214":2},"2":{"247":3,"300":1,"302":1,"303":2,"317":3}}],["functions=",{"2":{"247":1}}],["functions",{"0":{"240":1},"2":{"24":1,"36":2,"37":2,"43":1,"55":2,"56":2,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"247":1,"248":1}}],["func=none",{"2":{"177":1}}],["func=lambda",{"2":{"102":1,"103":2,"104":2,"105":1,"296":1}}],["funcs",{"0":{"66":2,"122":1,"123":1,"132":1},"2":{"65":6,"66":5,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":2,"74":2,"75":2,"76":2,"77":2,"78":2,"91":1,"131":6,"132":2,"133":1}}],["func`",{"2":{"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"91":1}}],["func",{"0":{"29":3,"30":2,"31":2,"32":2,"33":3,"34":2,"48":3,"49":2,"50":2,"51":2,"52":3,"53":2,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"66":2,"67":3,"68":3,"69":3,"70":3,"71":3,"72":3,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"91":2,"113":1,"131":2,"160":1,"168":1,"169":1,"177":3,"293":1},"2":{"29":10,"30":9,"31":9,"32":9,"33":10,"34":9,"48":10,"49":9,"50":9,"51":9,"52":10,"53":9,"60":2,"63":2,"65":6,"66":10,"67":11,"68":11,"69":11,"70":11,"71":11,"72":11,"82":2,"85":2,"87":2,"91":22,"113":1,"122":1,"123":1,"131":8,"132":2,"160":1,"170":2,"177":7,"247":2,"248":9,"289":2,"293":5,"302":1}}],["failed",{"2":{"254":1}}],["false时例如docs",{"2":{"249":2}}],["false",{"0":{"149":1,"150":1,"151":1,"200":1,"201":1,"249":1},"2":{"2":4,"87":2,"117":1,"125":2,"289":1}}],["first",{"2":{"247":2}}],["filter=lambda",{"2":{"309":1}}],["filter",{"0":{"83":1,"84":1,"85":1,"91":2,"169":1,"177":2},"2":{"85":2,"91":10,"102":1,"103":2,"104":2,"105":1,"177":6,"296":1}}],["filesystemeventhandler",{"0":{"171":1},"1":{"172":1,"173":1,"174":1,"175":1,"176":1}}],["filesystemevent",{"2":{"168":1,"169":1,"177":1,"309":2}}],["files",{"0":{"149":2,"245":1},"2":{"149":3,"150":1,"151":1,"245":1,"246":2,"249":1}}],["file",{"0":{"146":1,"147":1,"148":1,"177":1,"245":1,"246":1,"247":1},"2":{"57":1,"146":5,"147":5,"148":5,"149":12,"150":3,"154":1,"177":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"245":4,"246":7,"247":9,"249":6,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1,"309":3}}],["flat",{"0":{"145":1},"2":{"145":2,"146":1,"147":1,"148":1}}],["flag",{"2":{"65":1}}],["folder",{"0":{"246":1,"249":1},"2":{"246":2,"249":5,"250":1}}],["found",{"2":{"88":1,"97":1,"149":1,"150":1,"162":1,"164":1}}],["format=get",{"2":{"186":1}}],["formats",{"2":{"150":1}}],["format",{"0":{"185":1,"256":1},"2":{"149":1,"185":3,"186":1,"254":2,"256":1}}],["for",{"2":{"25":1,"37":1,"44":1,"56":1,"66":1,"87":1,"98":1,"132":1,"145":2,"149":1,"150":2,"159":3,"161":1,"163":1,"177":1,"196":1,"199":1,"201":1,"245":1,"246":2,"247":12,"248":9,"249":3,"255":2,"285":2,"287":2,"290":2,"308":1}}],["f",{"2":{"24":1,"25":2,"37":1,"43":1,"44":2,"56":1,"87":4,"88":1,"97":2,"145":1,"146":1,"147":1,"148":1,"149":2,"150":1,"162":2,"164":1,"245":2,"248":19,"249":1,"254":5,"255":9,"256":1,"290":1,"296":2,"309":1}}],["延迟重启时间",{"2":{"24":2,"43":2}}],["505468b及以后的lagrange",{"2":{"317":1}}],["59",{"2":{"253":1,"257":1}}],["55",{"2":{"202":1}}],["52",{"2":{"198":1}}],["51",{"2":{"192":1}}],["5",{"2":{"23":1,"42":1,"144":1}}],["kill",{"2":{"162":1}}],["k",{"2":{"145":2,"248":2}}],["keyword",{"2":{"201":2}}],["keywords为城市名",{"2":{"323":2}}],["keywords",{"0":{"201":2},"2":{"201":5,"319":1,"323":2}}],["keyerror",{"2":{"128":1}}],["keyvaluestore",{"0":{"124":1},"1":{"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1},"2":{"135":1,"138":1}}],["keys",{"0":{"37":1,"56":1},"2":{"37":4,"56":4}}],["key",{"0":{"36":1,"37":1,"55":1,"56":1,"126":1,"127":1,"128":2},"2":{"36":4,"37":11,"55":4,"56":11,"126":7,"127":7,"128":13,"140":3,"141":3,"142":3,"145":2,"299":2,"317":4,"321":2,"323":1}}],["keyboardinterrupt",{"2":{"22":1,"23":1,"41":1,"42":1}}],["keep",{"0":{"23":1,"42":1},"2":{"23":1,"42":1}}],["kwargs=none",{"2":{"160":1}}],["kwargs",{"0":{"21":1,"26":1,"40":1,"45":1,"66":1,"114":1,"160":1},"2":{"21":4,"26":3,"40":4,"45":3,"66":3,"114":2,"160":5,"170":2,"293":2,"317":2}}],["外部启动接口",{"2":{"22":2,"41":2}}],["echo",{"2":{"301":3}}],["emsp",{"2":{"248":4}}],["empty",{"0":{"200":1,"201":1,"209":1},"2":{"209":1,"254":1,"255":1}}],["email",{"2":{"57":1,"154":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["enable",{"2":{"317":2,"318":1,"319":2,"320":2}}],["end",{"2":{"302":1}}],["endswith",{"2":{"149":3,"150":1,"246":1,"255":1,"309":1}}],["ensure",{"2":{"290":1}}],["enum",{"0":{"213":1,"261":1},"1":{"214":1,"215":1,"216":1,"217":1,"218":1,"262":1,"263":1,"264":1,"265":1,"266":1}}],["enumerate",{"2":{"199":1}}],["encoding=",{"2":{"146":1,"147":1,"148":1,"245":1,"247":1}}],["enforcing",{"2":{"87":1}}],["e",{"2":{"128":2,"254":1,"256":1,"290":2}}],["errors=true",{"2":{"249":1}}],["error",{"0":{"128":1},"2":{"128":4,"186":2,"290":1}}],["else",{"2":{"24":1,"25":1,"35":1,"43":1,"44":1,"54":1,"66":1,"87":1,"91":2,"97":1,"99":1,"100":1,"126":1,"127":1,"128":1,"129":1,"131":2,"146":1,"147":1,"148":1,"185":1,"186":5,"199":1,"247":9,"248":10,"249":2,"254":2,"290":1,"292":1}}],["elif",{"2":{"24":2,"43":2,"87":1,"91":1,"149":4,"247":5,"254":2,"255":1}}],["extensions",{"2":{"309":2}}],["extend",{"2":{"181":1}}],["extra",{"0":{"274":1}}],["exclude",{"2":{"309":2}}],["exc",{"2":{"196":1,"254":1}}],["exception模块包含了liteyuki运行中的所有错误",{"2":{"178":1}}],["exception",{"0":{"178":1},"1":{"179":1},"2":{"196":1,"254":1,"290":2}}],["except",{"2":{"22":1,"23":1,"41":1,"42":1,"128":1,"196":1,"254":1,"290":2}}],["executor",{"2":{"90":1}}],["executable",{"2":{"24":3,"43":3}}],["exist",{"2":{"255":1}}],["exists",{"2":{"87":2,"97":1,"149":1,"150":1,"245":1,"255":2}}],["exit",{"2":{"21":2,"24":1,"40":2,"43":1}}],["event装饰器监听文件系统事件",{"2":{"309":1}}],["events",{"2":{"309":1}}],["eventhandler",{"0":{"195":2},"2":{"194":1,"195":4}}],["event",{"0":{"107":1,"108":1,"172":1,"173":1,"174":1,"175":1,"176":2,"177":2,"187":1,"196":1,"208":1,"209":1,"210":1,"283":1},"1":{"108":1,"109":2,"188":1,"189":1,"190":1},"2":{"21":4,"23":1,"28":1,"40":4,"42":1,"47":1,"106":1,"110":1,"172":1,"173":2,"174":2,"175":2,"176":3,"177":9,"187":1,"190":2,"196":5,"201":2,"206":3,"207":3,"208":2,"209":1,"210":2,"283":3,"290":2,"309":8}}],["信号处理",{"2":{"21":1,"40":1}}],["加载",{"2":{"320":1}}],["加载资源包",{"0":{"314":1},"2":{"319":1}}],["加载插件",{"0":{"310":1},"1":{"311":1,"312":1}}],["加载插件加载器",{"2":{"21":1,"40":1}}],["加载单个插件",{"2":{"254":2}}],["加入qq群775840726",{"2":{"7":1}}],["生成文档",{"2":{"249":2}}],["生成模块的markdown",{"2":{"248":2}}],["生命周期函数",{"2":{"29":4,"30":4,"31":4,"32":4,"33":4,"34":4,"48":4,"49":4,"50":4,"51":4,"52":4,"53":4,"60":1,"67":4,"68":4,"70":4,"72":4}}],["生命周期管理",{"2":{"21":1,"40":1}}],["生产环境中推荐反向websocket",{"2":{"3":1}}],["初始化通道",{"2":{"87":2,"117":2}}],["初始化日志",{"2":{"27":2,"46":2}}],["初始化轻雪",{"2":{"26":2,"45":2}}],["初始化轻雪实例",{"2":{"21":2,"40":2}}],["初始化",{"2":{"21":1,"40":1}}],["=none",{"2":{"25":1,"44":1,"87":1,"91":1,"127":1,"189":2}}],["==",{"2":{"24":3,"43":3,"102":1,"103":2,"104":2,"105":1,"133":1,"139":1,"140":2,"141":2,"142":2,"143":1,"185":1,"247":4,"248":2,"292":1}}],["=",{"0":{"24":1,"25":1,"36":1,"37":1,"43":1,"44":1,"55":1,"56":1,"87":1,"91":1,"127":1,"128":1,"136":1,"137":1,"149":1,"150":1,"151":1,"160":2,"177":2,"189":2,"200":3,"201":3,"214":1,"215":1,"216":1,"217":1,"218":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"243":1,"247":1,"248":2,"249":3,"255":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"277":1,"278":1,"279":1,"280":1,"281":1},"2":{"21":7,"24":6,"25":2,"40":7,"43":6,"44":2,"65":7,"66":1,"87":10,"88":1,"89":1,"90":2,"91":1,"97":1,"99":1,"100":1,"103":1,"104":1,"105":1,"109":2,"113":1,"117":4,"125":6,"126":2,"127":2,"128":1,"129":1,"131":2,"133":1,"135":1,"140":3,"141":2,"142":1,"143":1,"145":2,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"156":5,"158":3,"160":5,"162":1,"170":3,"177":2,"181":4,"186":1,"189":10,"190":1,"194":5,"200":1,"205":1,"246":1,"247":17,"248":16,"249":13,"254":12,"255":6,"256":5,"289":1,"290":2,"292":1,"293":1,"296":5,"299":1,"308":1,"309":2}}],[">=",{"2":{"194":1}}],[">",{"2":{"21":1,"29":1,"33":1,"35":1,"36":1,"37":1,"40":1,"48":1,"52":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"89":1,"90":1,"91":3,"99":1,"100":1,"113":1,"114":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":2,"145":2,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"164":1,"170":1,"177":2,"185":1,"195":2,"196":1,"200":1,"201":1,"206":2,"207":2,"208":1,"209":1,"210":1,"244":1,"247":1,"248":3,"249":1,"252":1,"254":1,"255":1,"256":3,"259":1,"289":1,"292":2,"293":1,"323":2}}],["在群聊启用",{"2":{"317":1}}],["在普通图片和markdown大图之间切换",{"2":{"317":1}}],["在b中定义了templates",{"2":{"314":1}}],["在配置文件中的liteyuki",{"2":{"311":1}}],["在设备上执行命令",{"2":{"302":1}}],["在发信器输出",{"2":{"301":1}}],["在任意进程中均可使用",{"2":{"299":1}}],["在子进程中",{"2":{"296":1}}],["在轻雪插件中",{"2":{"296":1}}],["在新线程中运行协程",{"2":{"291":2}}],["在语言加载完成后执行",{"2":{"186":2}}],["在主进程中运行",{"2":{"133":2}}],["在github上查看",{"2":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"87":1,"88":1,"89":1,"90":1,"91":1,"97":1,"98":1,"99":1,"100":1,"103":1,"104":1,"105":1,"109":1,"113":1,"114":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"135":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"156":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"181":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"252":1,"254":1,"255":1,"256":1,"259":1,"276":1,"283":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1}}],["在安全模式下你可以使用npm",{"2":{"6":1}}],["或插件路径",{"2":{"254":2}}],["或",{"2":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"87":1,"88":1,"89":1,"90":1,"91":1,"97":1,"98":1,"99":1,"100":1,"103":1,"104":1,"105":1,"109":1,"113":1,"114":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"135":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"156":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"181":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"252":1,"254":1,"255":1,"256":1,"259":1,"276":1,"283":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1,"325":2}}],["源代码",{"2":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"87":1,"88":1,"89":1,"90":1,"91":1,"97":1,"98":1,"99":1,"100":1,"103":1,"104":1,"105":1,"109":1,"113":1,"114":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"135":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"156":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"181":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"244":1,"245":1,"246":1,"247":1,"248":2,"249":1,"252":1,"254":1,"255":1,"256":1,"259":1,"276":1,"283":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1,"299":1}}],["参考`liteyuki",{"2":{"181":1}}],["参考liteyuki",{"2":{"181":1}}],["参考值",{"2":{"3":1}}],["参数列表",{"2":{"317":2}}],["参数为调用set",{"2":{"296":1}}],["参数",{"2":{"21":1,"24":1,"25":1,"26":3,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"36":1,"37":1,"40":1,"43":1,"44":1,"45":3,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"55":1,"56":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"87":1,"88":1,"91":1,"97":1,"98":1,"99":1,"117":1,"118":1,"126":1,"127":1,"128":1,"130":1,"131":1,"132":1,"145":1,"160":1,"162":1,"164":1,"177":1,"181":1,"190":1,"194":1,"196":1,"244":1,"245":1,"247":1,"248":1,"249":1,"254":2,"255":2,"256":1,"289":1,"290":1,"291":1,"292":1,"293":1,"316":1,"325":1}}],["31",{"2":{"282":1}}],["3a",{"2":{"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"91":1,"97":1,"98":2,"99":1,"100":2}}],["3",{"2":{"18":1,"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"91":1,"97":1,"98":2,"99":1,"100":2,"144":1,"183":1,"255":1,"296":1}}],["6",{"2":{"18":1,"183":1}}],["测试版本号",{"2":{"18":1,"183":1}}],["至少1gb空间",{"2":{"15":1}}],["至少1vcpu",{"2":{"15":1}}],["硬盘",{"2":{"15":1}}],["及",{"2":{"15":1}}],["内存共享是线程安全的",{"2":{"298":1}}],["内存共享使得代码编写更加简洁",{"2":{"298":1}}],["内存",{"2":{"15":1,"315":1}}],["不带key返回配置项列表",{"2":{"317":1}}],["不包含任何隐私信息",{"2":{"315":1}}],["不含隐私部分",{"2":{"315":1}}],["不含插件数据",{"2":{"315":1}}],["不同adapter",{"2":{"304":1}}],["不同的实现端给出的字段可能不同",{"2":{"3":1}}],["不递归",{"2":{"150":2}}],["不要出现过多的嵌套",{"2":{"144":1}}],["不是liteyukibot官方提供的功能",{"2":{"14":1}}],["该功能需要commit",{"2":{"317":1}}],["该功能由trss提供支持",{"2":{"14":1}}],["该模块封装通道实现",{"2":{"298":1}}],["该模块用于存放一些开发工具",{"2":{"165":1,"166":1}}],["该模块用于常用配置文件的加载",{"2":{"144":1}}],["该模块用于轻雪主进程和nonebot子进程之间的通信",{"2":{"106":1,"110":1}}],["该步骤为必要项",{"2":{"12":1}}],["weather",{"0":{"323":1},"1":{"324":1},"2":{"323":1,"324":1}}],["world",{"2":{"301":5}}],["w",{"2":{"245":1}}],["write",{"0":{"245":1},"2":{"245":2,"249":1}}],["wrapper",{"0":{"293":1},"2":{"66":1,"91":2,"131":4,"160":1,"170":2,"177":2,"293":4}}],["watchdog",{"2":{"309":1,"312":1}}],["watch",{"2":{"308":1,"309":1}}],["walk",{"2":{"246":1,"247":1}}],["wait",{"0":{"170":1},"2":{"170":2}}],["waring=no",{"2":{"151":1}}],["waring",{"0":{"150":1,"151":1},"2":{"150":3,"151":3}}],["warning=no",{"2":{"150":1,"151":1}}],["warning",{"0":{"149":1,"255":1},"2":{"15":2,"37":1,"56":1,"149":5,"150":1,"162":1,"164":1,"186":2,"254":1,"255":9,"305":1,"320":1}}],["will",{"2":{"37":1,"56":1}}],["with",{"0":{"37":1,"56":1,"249":1},"2":{"37":1,"56":1,"126":1,"127":1,"128":1,"135":1,"245":1,"247":1,"248":5,"249":4}}],["windows",{"2":{"15":1,"24":1,"43":1}}],["windows系统版本最低windows10+",{"2":{"15":1}}],["windows请使用项目绝对目录",{"2":{"13":1}}],["while",{"2":{"23":1,"42":1,"89":1,"133":1,"296":2}}],["ws",{"2":{"3":2}}],["$",{"2":{"13":2}}],["构建镜像",{"2":{"13":1}}],["克隆项目",{"2":{"13":1}}],["克隆项目到本地",{"2":{"12":1}}],["使用通用日期简写",{"2":{"325":2}}],["使用此项目代表你已经同意以上协议",{"2":{"315":1}}],["使用开发工具快速运行插件",{"2":{"312":1}}],["使用",{"2":{"303":1}}],["使用新的task执行命令",{"2":{"302":1}}],["使用watchdog监控文件变化并重启bot",{"2":{"167":1}}],["使用trss",{"0":{"14":1}}],["使用docker构建",{"0":{"13":1}}],["使用其他项目连接请先自行查阅文档",{"2":{"9":1}}],["b包也定义了一个index",{"2":{"314":1}}],["break",{"2":{"199":1}}],["block",{"0":{"194":1,"200":1,"201":1},"2":{"194":5,"200":2,"201":2}}],["blue>",{"2":{"186":1}}],["bases",{"2":{"247":1}}],["base",{"0":{"244":1},"2":{"244":4,"247":2}}],["basemodel",{"0":{"219":1,"227":1,"232":1,"238":1,"267":1,"275":1},"1":{"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"243":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1}}],["baseexception",{"0":{"179":1}}],["bash",{"2":{"12":1}}],["b",{"2":{"145":3,"249":4,"292":4,"326":1}}],["body",{"2":{"247":1}}],["bool=false",{"2":{"149":1,"150":1,"151":1,"200":1,"201":1,"249":1}}],["bool=true",{"2":{"128":1,"177":1,"247":1,"255":1}}],["bool",{"0":{"87":1,"128":1,"149":1,"150":1,"151":1,"164":1,"177":1,"194":1,"200":1,"201":1,"208":1,"209":1,"210":1,"226":1,"247":1,"249":1,"255":1,"289":1},"2":{"83":1,"84":1,"87":1,"164":1,"169":1,"194":1,"203":1,"206":1,"207":1,"208":1,"209":1,"210":1,"289":3}}],["bot",{"0":{"19":1,"35":1,"38":1,"54":1,"57":1,"189":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"21":2,"35":4,"36":1,"37":4,"40":2,"54":4,"55":1,"56":4,"181":2,"189":4,"190":2,"296":4,"301":1,"309":2,"317":1,"325":3,"326":1}}],["bot无其他插件会占用300~500mb",{"2":{"15":1}}],["be",{"2":{"37":1,"56":1,"88":1,"91":1,"97":1,"172":1}}],["before",{"0":{"29":1,"32":1,"33":1,"48":1,"51":1,"52":1,"67":1,"69":1,"71":1,"73":1,"75":1,"77":1},"2":{"29":2,"32":2,"33":2,"48":2,"51":2,"52":2,"65":3,"67":2,"69":2,"71":2,"73":3,"75":3,"77":3}}],["build",{"2":{"13":1}}],["bind",{"2":{"324":1}}],["bin",{"2":{"12":1}}],["help",{"2":{"319":1,"320":1}}],["hello",{"2":{"301":5,"317":1}}],["hash",{"0":{"276":1},"2":{"276":2}}],["handlers",{"2":{"194":1,"195":1,"196":1}}],["handler",{"0":{"205":1},"2":{"177":3,"195":5,"196":2,"205":3,"206":4,"207":4,"208":2}}],["handle",{"0":{"195":1},"2":{"21":2,"40":2,"195":1,"282":1,"283":1}}],["homepage",{"0":{"273":1}}],["host",{"2":{"1":1}}],["hint",{"2":{"87":1,"247":1,"248":1}}],["html中用",{"2":{"314":1}}],["html文件会被覆盖",{"2":{"314":1}}],["html文件",{"2":{"314":2}}],["html",{"2":{"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"91":1,"97":1,"98":2,"99":1,"100":2,"314":1}}],["https",{"2":{"12":1,"13":1,"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"91":1,"97":1,"98":2,"99":1,"100":2}}],["环境",{"2":{"12":1}}],["和风天气的天气key",{"2":{"323":1}}],["和10是不一样的",{"2":{"317":1}}],["和config目录下的所有配置文件",{"2":{"151":2}}],["和",{"2":{"12":1,"317":1}}],["常规操作",{"2":{"21":1,"40":1}}],["常规部署",{"0":{"12":1}}],["常见问题",{"0":{"6":1}}],["安装插件",{"2":{"319":1}}],["安装的插件",{"2":{"254":2}}],["安装依赖",{"2":{"12":1}}],["安装",{"0":{"11":1},"1":{"12":1,"13":1,"14":1,"15":1,"16":1},"2":{"12":1,"13":1,"316":1,"320":1}}],["安全模式",{"2":{"2":1}}],["鸣谢",{"0":{"10":1}}],["然后运行python",{"2":{"312":1}}],["然后使用",{"2":{"12":1}}],["然后给轻雪传输数据",{"2":{"8":1}}],["然后用",{"2":{"6":1}}],["看着qq的消息",{"2":{"8":1}}],["人工实现的onebot协议",{"2":{"8":1}}],["需要在最后调用",{"2":{"302":1}}],["需要官方机器人权限",{"2":{"8":1}}],["需要安装ntqq",{"2":{"8":1}}],["g",{"2":{"256":1,"326":1}}],["group",{"2":{"189":2,"317":9,"318":1,"319":2,"325":3,"326":1}}],["green>",{"2":{"186":1}}],["gather",{"2":{"66":1,"290":1}}],["generate",{"0":{"248":1,"249":1},"2":{"248":1,"249":3}}],["generic",{"0":{"86":1},"1":{"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"87":2,"88":1,"97":1,"98":1,"99":1,"100":1}}],["gensokyo",{"2":{"8":1}}],["getattr",{"2":{"289":1}}],["get",{"0":{"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"99":1,"100":1,"104":1,"105":1,"127":1,"129":1,"135":1,"140":1,"143":1,"185":1,"244":1,"246":1,"247":1,"252":1,"259":1},"2":{"25":2,"35":2,"36":3,"37":5,"44":2,"54":2,"55":3,"56":5,"87":2,"88":1,"90":1,"99":2,"100":2,"103":1,"104":4,"105":3,"126":1,"127":4,"128":1,"129":2,"135":1,"138":1,"139":1,"140":3,"142":1,"143":3,"159":1,"181":1,"185":1,"186":2,"244":1,"246":1,"247":5,"249":3,"250":1,"252":1,"254":3,"255":1,"259":1,"285":2,"287":2,"290":1,"296":8,"299":1,"309":2,"317":3,"318":1,"321":2}}],["globalkeyvaluestore",{"0":{"134":1},"1":{"135":1,"136":1,"137":1},"2":{"138":1}}],["global",{"2":{"21":1,"40":1,"91":1,"319":2,"320":2}}],["gt",{"0":{"21":1,"29":1,"33":1,"35":1,"36":1,"37":1,"40":1,"48":1,"52":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"89":1,"90":1,"91":1,"99":1,"100":1,"113":1,"114":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"164":1,"177":1,"185":1,"195":1,"196":1,"200":1,"201":1,"206":1,"207":1,"208":1,"209":1,"210":1,"244":1,"247":1,"248":1,"252":1,"254":1,"255":1,"256":1,"259":1,"289":1,"292":1,"293":1},"2":{"106":3,"110":3,"145":1,"194":1,"292":1,"316":1,"317":7,"319":10,"321":2}}],["github",{"2":{"12":1,"13":1}}],["git",{"2":{"12":2,"13":1}}],["golang",{"2":{"8":1}}],["go语言实现的onebot11实现端",{"2":{"8":1}}],["go",{"2":{"8":1}}],["occurred",{"2":{"290":1}}],["output",{"0":{"249":1},"2":{"249":6}}],["outlook",{"2":{"57":1,"154":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["order",{"2":{"249":1}}],["or",{"0":{"206":1},"2":{"206":2,"247":4}}],["org",{"2":{"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"91":1,"97":1,"98":2,"99":1,"100":2}}],["other",{"0":{"206":1,"207":1},"2":{"189":1,"206":2,"207":2}}],["observer",{"0":{"167":1},"1":{"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1},"2":{"177":1,"309":2}}],["os",{"2":{"149":1,"150":3,"244":1,"245":4,"246":2,"247":1,"249":2,"255":9,"309":2}}],["of",{"2":{"88":1,"97":1,"254":1}}],["only",{"2":{"91":1}}],["on",{"0":{"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"80":1,"81":1,"82":1,"91":1,"103":1,"104":1,"105":1,"113":2,"122":1,"123":1,"131":3,"140":1,"141":1,"142":1,"143":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"198":1,"200":1,"201":1},"1":{"199":1,"200":1,"201":1},"2":{"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"82":2,"87":2,"91":4,"102":1,"103":3,"104":3,"105":2,"113":4,"114":1,"122":1,"123":1,"131":11,"132":1,"139":1,"140":3,"141":3,"142":3,"143":2,"172":2,"173":2,"174":2,"175":2,"176":2,"177":2,"198":1,"200":1,"201":4,"282":1,"283":1,"296":6,"309":1}}],["onebot",{"2":{"2":1,"3":1,"8":2,"304":1,"317":1}}],["option",{"2":{"316":1}}],["optional",{"0":{"25":1,"44":1,"87":1,"91":1,"127":2,"189":2,"254":1,"281":1},"2":{"24":2,"25":3,"36":2,"37":2,"43":2,"44":3,"55":2,"56":2,"87":1,"91":5,"125":2,"127":3,"189":2,"254":1}}],["opt",{"2":{"254":3}}],["open",{"2":{"24":1,"43":1,"146":1,"147":1,"148":1,"245":1,"247":1}}],["openshamrock",{"2":{"8":1}}],["基础插件",{"0":{"316":1},"1":{"317":1,"318":1,"319":1,"320":1,"321":1}}],["基础路径",{"2":{"244":2}}],["基础配置项",{"0":{"1":1}}],["基于socket的通道",{"2":{"115":1}}],["基于ipc",{"2":{"111":1}}],["基于",{"2":{"8":1}}],["基于node",{"2":{"8":1}}],["基于ntqq的onebot实现",{"2":{"8":1}}],["基于lsposed的onebot11实现",{"2":{"8":1}}],["qq群号",{"2":{"325":1}}],["qq官方机器人api",{"2":{"8":1}}],["qq",{"0":{"8":1}}],["quot",{"2":{"3":2,"305":2,"317":2,"323":4}}],["推荐私聊使用",{"2":{"317":1}}],["推荐在编写html时同时更改对应js代码",{"2":{"313":1}}],["推荐ubuntu",{"2":{"15":1}}],["推荐使用arch",{"2":{"14":1}}],["推荐使用虚拟环境来运行轻雪",{"2":{"12":1}}],["推荐使用反向ws协议进行通信",{"2":{"3":1}}],["推荐方案",{"0":{"8":1,"9":1}}],["仍然出现问题",{"2":{"6":1}}],["将消息按照onebot标准处理好上报给轻雪",{"2":{"6":1}}],["提供",{"2":{"6":1}}],["登录功能由实现端",{"2":{"6":1}}],["本项目不会收集用户的任何隐私信息",{"2":{"315":1}}],["本项目不负责实现登录功能",{"2":{"6":1}}],["本项目遵循mit协议",{"2":{"315":1}}],["本模块用于实现rpc",{"2":{"111":1}}],["本模块用于轻雪主进程和子进程之间的通信的事件类",{"2":{"107":1}}],["本模块定义了一个通用的通道类",{"2":{"79":1}}],["本机默认为127",{"2":{"3":1}}],["例如npm",{"2":{"316":1}}],["例如nonebot插件中",{"2":{"296":1}}],["例如你在a中定义了templates",{"2":{"314":1}}],["例如html",{"2":{"313":1}}],["例如main",{"2":{"312":1}}],["例如watchdog",{"2":{"308":1,"311":1}}],["例如",{"2":{"301":2,"314":1,"323":1}}],["例如test",{"2":{"301":1,"312":1}}],["例如子进程接收到用户信息需要重启机器人",{"2":{"295":1}}],["例如qq",{"2":{"6":1}}],["例如一个命令是help",{"2":{"6":1}}],["怎么登录聊天平台",{"2":{"6":1}}],["报错invalidgitrepositoryerror",{"2":{"6":1}}],["冲突",{"2":{"6":1}}],["确认插件必要配置项完好后",{"2":{"6":1}}],["确认命令头没有和nickname",{"2":{"6":1}}],["确认你有权限使用命令并按照正确的命令发送",{"2":{"6":1}}],["其中",{"2":{"6":1}}],["其他插件框架进程是伴随的子进程",{"2":{"295":1}}],["其他插件占用视具体插件而定",{"2":{"15":1}}],["其他插件自带的调试功能也将开启",{"2":{"2":1}}],["其他问题请移步至",{"0":{"16":1}}],["其他问题",{"0":{"7":1}}],["其他",{"0":{"4":1}}],["其他nonebot插件的配置项",{"2":{"2":1}}],["其他配置",{"0":{"2":1}}],["r>",{"2":{"254":2}}],["rv",{"2":{"249":2}}],["rk",{"2":{"249":2}}],["rmtree",{"2":{"249":1}}],["rpm",{"2":{"319":5,"320":1}}],["rp",{"2":{"245":4}}],["rpc",{"0":{"111":1,"112":1},"1":{"112":1,"113":2,"114":2},"2":{"106":1,"110":1}}],["rule=is",{"2":{"282":1,"283":1}}],["rule=empty",{"2":{"200":1,"201":1}}],["rulehandlerfunc",{"0":{"203":1,"205":1},"2":{"205":1}}],["rule",{"0":{"194":2,"200":3,"201":2,"202":1,"204":1,"206":2,"207":2,"209":1,"210":1},"1":{"203":1,"204":1,"205":2,"206":2,"207":2,"208":2,"209":1,"210":1},"2":{"194":6,"196":1,"200":3,"201":5,"202":1,"206":3,"207":3,"208":1,"209":3,"210":2,"282":1,"283":1}}],["running",{"2":{"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"87":1,"90":1,"125":2,"290":2}}],["runtimeerror",{"2":{"35":2,"54":2,"88":1,"89":1,"91":1,"131":1,"133":1,"290":1}}],["run",{"0":{"22":1,"41":1,"66":1,"132":1,"181":1,"196":1,"290":1,"291":1},"2":{"13":1,"22":3,"41":3,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"90":1,"132":1,"133":1,"159":1,"181":2,"196":1,"290":3,"291":1,"312":2}}],["raw",{"0":{"189":1},"2":{"189":4,"190":1,"201":1,"283":1}}],["raise",{"2":{"35":2,"54":2,"87":3,"88":2,"89":1,"91":1,"97":2,"128":1,"131":1,"133":1,"172":1}}],["rights",{"2":{"57":1,"154":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["root",{"2":{"13":1,"246":2}}],["readme",{"2":{"249":2}}],["read",{"2":{"247":1}}],["reload",{"2":{"317":1,"318":2,"319":1,"320":1}}],["reloading",{"2":{"309":1}}],["rel",{"2":{"249":4,"292":5}}],["relpath",{"2":{"244":1}}],["relative",{"0":{"244":1},"2":{"244":1,"249":1,"250":1,"292":1}}],["replace",{"2":{"247":3,"248":4,"249":8}}],["reply",{"0":{"190":1},"2":{"190":3,"283":1}}],["report设定为false",{"2":{"315":1}}],["report",{"2":{"1":1,"315":1}}],["red>",{"2":{"186":1}}],["remove",{"2":{"186":1}}],["ref",{"0":{"139":1}}],["required",{"2":{"87":1}}],["requirements",{"2":{"6":1,"12":1,"15":1}}],["recursive=recursive",{"2":{"177":1}}],["recursive",{"0":{"177":1},"2":{"177":3}}],["recv",{"2":{"87":2,"89":2,"99":5,"100":5,"104":3,"105":3,"117":1,"127":5,"129":5,"140":3,"143":3}}],["receive",{"0":{"80":1,"81":1,"82":1,"89":1,"90":1,"91":1,"119":1,"122":1,"123":1,"131":3,"132":1,"133":1,"189":1},"2":{"82":2,"87":3,"89":2,"90":2,"91":4,"99":1,"100":1,"102":1,"103":2,"104":2,"105":1,"119":1,"122":1,"123":1,"125":2,"127":1,"129":1,"131":11,"132":2,"133":4,"139":1,"140":2,"141":2,"142":2,"143":1,"159":2,"189":4,"190":3,"296":11}}],["resources",{"2":{"313":1,"314":1,"318":1}}],["resolve",{"2":{"292":2}}],["reserved",{"2":{"57":1,"154":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["restarting",{"2":{"24":1,"43":1}}],["restart",{"0":{"24":1,"25":1,"33":1,"34":1,"43":1,"44":1,"52":1,"53":1,"71":1,"72":1,"77":1,"78":1},"2":{"21":1,"24":3,"25":1,"33":2,"34":2,"40":1,"43":3,"44":1,"52":2,"53":2,"65":2,"71":2,"72":2,"77":3,"78":3,"309":2}}],["return",{"0":{"222":1},"2":{"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":3,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":3,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"89":1,"90":1,"91":6,"99":2,"100":2,"114":1,"127":2,"129":2,"131":2,"135":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"162":1,"164":1,"170":3,"177":3,"185":2,"195":2,"196":1,"200":1,"201":2,"206":2,"207":2,"208":2,"209":1,"210":1,"244":1,"246":1,"247":3,"248":3,"252":1,"254":2,"255":1,"256":1,"259":1,"276":1,"289":3,"292":2,"293":2}}],["returns",{"2":{"25":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"44":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"89":1,"90":1,"91":1,"99":1,"100":1,"119":1,"127":1,"128":1,"129":1,"130":1,"131":1,"145":1,"162":1,"164":1,"177":1,"186":1,"190":1,"195":1,"196":1,"247":5,"248":1,"252":1,"256":1,"259":1,"289":1,"290":1,"291":1,"292":1,"293":1}}],["register",{"2":{"21":1,"40":1}}],["r",{"2":{"6":1,"12":1,"15":1,"146":1,"147":1,"148":1,"247":1}}],["msg",{"2":{"317":1}}],["mcfunction",{"2":{"301":2}}],["mkdir",{"2":{"249":1}}],["mkdoc",{"0":{"212":1},"1":{"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1},"2":{"212":1}}],["md",{"2":{"249":15}}],["member",{"2":{"317":1}}],["memory",{"0":{"138":1},"2":{"125":3,"139":1,"140":3,"141":3,"142":3,"143":2,"159":1,"160":1,"299":3}}],["meta",{"2":{"254":4,"308":1}}],["metadata",{"0":{"281":1},"2":{"254":13}}],["methods=",{"2":{"247":1}}],["methods",{"0":{"235":1},"2":{"247":1,"248":1}}],["method",{"0":{"215":2,"216":1,"217":1},"2":{"247":5,"248":13}}],["message=",{"2":{"190":1,"317":1}}],["message=message",{"2":{"190":1}}],["messageevent",{"0":{"188":1,"189":1,"196":1,"208":1,"209":1,"210":1,"283":1},"1":{"189":1,"190":1},"2":{"189":1,"190":1,"196":1,"201":1,"203":1,"206":1,"207":1,"208":1,"209":1,"210":1,"283":1}}],["message",{"0":{"187":1,"189":3,"190":1,"191":1,"192":1,"197":1,"198":1,"200":1,"202":1,"211":1},"1":{"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1},"2":{"189":12,"190":6,"200":1,"201":2,"283":1,"325":1,"326":1}}],["moved",{"0":{"175":1},"2":{"175":1}}],["moduletype",{"0":{"279":1}}],["module=module",{"2":{"254":1}}],["moduleinfo",{"0":{"238":1,"247":1,"248":1},"1":{"239":1,"240":1,"241":1,"242":1,"243":1},"2":{"247":2,"248":1}}],["module",{"0":{"181":1,"239":1,"246":1,"247":1,"248":1,"249":1,"250":1,"254":1,"264":2,"279":1,"280":1,"292":1},"2":{"181":4,"246":2,"247":11,"248":6,"249":26,"250":1,"254":27,"255":9,"256":1,"276":1,"292":1}}],["modified",{"0":{"172":1},"2":{"172":2,"173":1,"174":1,"175":1,"176":1,"177":4}}],["model",{"0":{"260":1,"277":1},"1":{"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1},"2":{"260":1}}],["mode为true",{"2":{"167":1}}],["mode",{"2":{"2":2,"6":1,"317":2,"318":1}}],["must",{"2":{"88":1,"97":1,"172":1}}],["match",{"2":{"256":1}}],["matcher",{"0":{"192":1,"193":1,"199":3,"200":1,"201":1},"1":{"193":1,"194":2,"195":2,"196":2},"2":{"192":1,"199":9,"200":6,"201":1}}],["matter=none",{"2":{"248":1}}],["matter",{"0":{"248":1},"2":{"248":5,"249":3}}],["markdown",{"0":{"248":1},"2":{"248":3,"249":1}}],["makedirs",{"2":{"245":1}}],["manually",{"2":{"87":1}}],["manager",{"0":{"154":1,"257":1},"1":{"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1},"2":{"21":2,"24":1,"25":1,"40":2,"43":1,"44":1,"154":1,"257":1}}],["maplemono提供的字体",{"2":{"10":1}}],["mainprocess",{"2":{"295":1}}],["main",{"0":{"122":1},"2":{"6":1,"12":1,"35":1,"54":1,"87":4,"91":4,"97":1,"99":1,"100":1,"125":1,"126":1,"127":1,"128":1,"129":1,"131":5,"132":1,"133":1,"296":6,"312":1}}],["misans",{"2":{"10":1}}],["minecraftonebot",{"2":{"9":1}}],["minecraft",{"0":{"9":1}}],["m",{"2":{"6":1,"12":1,"15":1,"199":2,"256":1,"326":1}}],["答疑",{"0":{"5":1},"1":{"6":1,"7":1,"8":1,"9":1,"10":1}}],["要使用其他通信方式请访问onebot",{"2":{"3":1}}],["如果你接触过minecraft的资源包",{"2":{"313":1}}],["如果你想同时输出多行内容可以尝试换行符",{"2":{"301":1}}],["如果你没有安装git直接下载源代码运行",{"2":{"15":1}}],["如果你给轻雪配置了accesstoken",{"2":{"3":1}}],["如果装置上有多个环境",{"2":{"15":1}}],["如需自定义请手动添加",{"2":{"2":1}}],["version=",{"2":{"308":1}}],["version",{"0":{"18":1,"183":1},"2":{"314":1}}],["venv来创建虚拟环境",{"2":{"12":1}}],["venv",{"2":{"12":3}}],["validate",{"2":{"88":1}}],["value=ast",{"2":{"247":1}}],["values",{"2":{"159":1}}],["value",{"0":{"126":1,"230":1},"2":{"126":6,"141":3,"145":3,"247":6,"248":3,"299":2,"317":2,"321":1}}],["valueerror",{"2":{"87":2,"97":1}}],["value2",{"2":{"2":1}}],["value1",{"2":{"2":1}}],["var=value",{"2":{"302":1}}],["var2=value2",{"2":{"302":1}}],["var1=value1>",{"2":{"302":1}}],["var",{"0":{"18":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"92":1,"93":1,"94":1,"95":1,"96":1,"101":1,"102":1,"122":1,"123":1,"138":1,"139":1,"168":1,"169":1,"183":1,"203":1,"250":1},"2":{"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"91":1,"248":2}}],["v",{"2":{"13":2,"145":2,"248":2}}],["v11协议api",{"2":{"317":2}}],["v11",{"2":{"3":1,"304":1}}],["地址取决于配置文件",{"2":{"3":1}}],["地址",{"2":{"3":1}}],["反向websocket",{"2":{"3":1}}],["协议端",{"2":{"6":1}}],["协议",{"2":{"3":1}}],["说明",{"2":{"3":1,"18":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"106":1,"107":1,"110":1,"111":1,"114":1,"115":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"138":1,"139":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"154":1,"159":1,"160":1,"162":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1,"170":1,"177":1,"178":1,"180":1,"181":1,"183":1,"184":1,"186":1,"187":1,"189":1,"190":1,"191":1,"192":1,"194":1,"195":1,"196":1,"197":1,"198":1,"202":1,"203":1,"211":1,"212":1,"244":1,"245":1,"247":1,"248":1,"249":1,"250":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"259":1,"260":1,"282":1,"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"317":1,"319":2,"321":1}}],["与nonebot对接的onebot实现端配置",{"0":{"3":1}}],["示例",{"0":{"3":1,"296":1,"299":1,"303":1}}],["监听目录们",{"2":{"177":2}}],["监听地址",{"2":{"1":1}}],["监视文件变化并自动重载",{"2":{"2":1}}],["开始",{"0":{"307":1},"1":{"308":1,"309":1,"310":1,"311":1,"312":1}}],["开发者模式",{"2":{"2":1}}],["开发者选项",{"2":{"2":1}}],["开启后将会启动监视者",{"2":{"2":1}}],["开启后将不会加载任何第三方nonebot插件",{"2":{"2":1}}],["开启会自动重载bot或者资源",{"2":{"2":1}}],["2s戳两次",{"2":{"303":1}}],["22",{"2":{"282":1}}],["27",{"2":{"154":1,"184":1}}],["24",{"2":{"57":1,"260":1}}],["23",{"2":{"57":1,"212":1,"253":1,"257":1}}],["20代替空格",{"2":{"317":1}}],["20和end",{"2":{"303":1}}],["2024",{"2":{"57":2,"154":2,"180":2,"184":2,"187":2,"191":2,"192":2,"197":2,"198":2,"202":2,"211":2,"212":2,"253":2,"257":2,"260":2,"282":2,"284":2,"286":2}}],["2020",{"2":{"57":1,"154":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["20216中的20216替换为你的端口号",{"2":{"13":1}}],["20216",{"2":{"1":1,"3":2,"13":2}}],["20",{"2":{"15":1}}],["2019+",{"2":{"15":1}}],["2",{"2":{"2":1,"144":1,"303":1,"314":1}}],["建议1gb以上",{"2":{"15":1}}],["建议开启",{"2":{"2":1}}],["建议迁移到liteyuki下",{"2":{"1":1}}],["默认普通图片",{"2":{"317":1}}],["默认开启",{"2":{"315":1}}],["默认插件加载器",{"2":{"285":2,"287":2}}],["默认执行扁平化选项",{"2":{"149":2,"150":2}}],["默认值",{"2":{"18":1,"36":2,"37":2,"55":2,"56":2,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"92":1,"93":1,"94":1,"95":1,"96":1,"101":1,"102":1,"122":1,"123":1,"127":2,"138":1,"139":1,"168":1,"169":1,"183":1,"203":1,"250":1}}],["默认false",{"2":{"2":1}}],["默认语言",{"2":{"2":1}}],["默认为本机",{"2":{"1":1}}],["city",{"2":{"323":1,"324":1}}],["css相对路径引用b中的css",{"2":{"314":1}}],["css",{"2":{"313":1,"314":1}}],["cwd",{"2":{"292":1}}],["cfg",{"2":{"181":4}}],["current|bot",{"2":{"325":1}}],["current|group",{"2":{"325":1}}],["current",{"2":{"170":3,"325":2,"326":1}}],["custom",{"2":{"2":4}}],["created",{"0":{"173":1},"2":{"173":1}}],["create",{"2":{"132":1,"159":3}}],["child",{"2":{"247":2}}],["check",{"0":{"87":1},"2":{"87":9,"88":1}}],["change",{"2":{"319":1,"320":1}}],["changed",{"2":{"309":1}}],["channel时的通道标识",{"2":{"296":1}}],["channel即可",{"2":{"296":1}}],["channel及passive",{"2":{"296":1}}],["channel函数获取通道对象",{"2":{"296":2}}],["channel=none",{"2":{"190":1}}],["channeldeliver",{"0":{"155":1},"1":{"156":1},"2":{"160":1}}],["channels",{"0":{"98":2,"100":1,"105":1},"2":{"98":5,"100":2,"104":1,"105":3,"159":1}}],["channel",{"0":{"79":1,"86":1,"92":1,"93":1,"94":1,"95":2,"96":2,"97":3,"98":1,"99":2,"100":1,"101":2,"102":2,"103":1,"104":1,"115":1,"130":1,"131":1,"132":1,"156":8,"189":2},"1":{"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":2,"88":2,"89":2,"90":2,"91":2,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"116":1,"117":1,"118":1,"119":1,"120":1},"2":{"25":2,"44":2,"87":7,"88":1,"89":1,"92":3,"93":3,"94":3,"95":2,"96":1,"97":21,"98":6,"99":10,"100":8,"101":3,"102":6,"103":11,"104":7,"105":2,"106":2,"110":2,"125":4,"127":1,"129":1,"130":5,"131":9,"132":4,"133":2,"156":12,"160":12,"189":5,"190":2,"296":12}}],["chan",{"2":{"25":4,"44":4,"99":5,"100":5,"104":3,"105":3,"125":2,"126":1,"127":6,"128":1,"129":6,"130":1,"133":1,"139":1,"140":5,"141":2,"142":2,"143":4,"159":2,"160":2}}],["c",{"2":{"57":1,"145":3,"154":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"256":1,"257":1,"260":1,"282":1,"284":1,"286":1,"290":4,"292":4,"326":1}}],["cmd",{"2":{"24":5,"43":5,"301":2,"302":1}}],["case",{"2":{"256":4}}],["category",{"2":{"248":2,"249":2}}],["cannot",{"2":{"88":1,"89":1,"131":1,"133":1}}],["can",{"2":{"35":1,"54":1,"91":1}}],["calling",{"0":{"113":2},"2":{"113":4,"114":1}}],["callback",{"0":{"168":1,"177":2},"2":{"91":1,"177":4}}],["callable",{"0":{"91":3,"131":1,"177":1,"195":1,"289":2,"293":2},"2":{"58":1,"59":1,"61":1,"62":1,"66":1,"80":1,"81":1,"83":1,"84":1,"91":13,"131":2,"158":1,"168":1,"169":1,"177":1,"195":1,"203":1,"289":2,"293":6}}],["call",{"0":{"114":1,"208":1,"289":1},"2":{"21":1,"24":2,"40":1,"43":2,"114":1,"170":4,"208":1,"289":8}}],["cache",{"2":{"13":2}}],["cls",{"0":{"135":1},"2":{"135":6,"247":1,"248":11}}],["close",{"0":{"120":1},"2":{"120":1,"290":1}}],["closed",{"2":{"87":1,"88":2,"89":2,"117":1}}],["clone",{"2":{"12":1,"13":1}}],["classdef",{"2":{"247":3}}],["classes=",{"2":{"247":1}}],["classes",{"0":{"241":1},"2":{"247":1,"248":1}}],["classinfo",{"0":{"232":1,"241":1},"1":{"233":1,"234":1,"235":1,"236":1,"237":1},"2":{"247":1}}],["classmethod",{"0":{"217":1},"2":{"134":1,"135":1,"247":1}}],["class",{"0":{"20":1,"39":1,"64":1,"86":1,"108":1,"112":1,"116":1,"124":1,"134":1,"155":1,"157":1,"171":1,"179":1,"188":1,"193":1,"204":1,"213":1,"217":1,"219":1,"227":1,"232":1,"238":1,"261":1,"267":1,"275":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"87":1,"88":1,"89":1,"90":1,"91":1,"109":1,"113":1,"114":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"135":1,"136":1,"137":1,"156":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"172":1,"173":1,"174":1,"175":1,"176":1,"189":1,"190":1,"194":1,"195":1,"196":1,"205":1,"206":1,"207":1,"208":1,"214":1,"215":1,"216":1,"217":1,"218":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"243":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1},"2":{"35":1,"54":1,"97":1,"98":1,"99":1,"100":1,"247":24,"248":2}}],["cpu",{"2":{"15":1,"315":1}}],["centos",{"2":{"15":1}}],["cd",{"2":{"12":1,"13":1}}],["cqhttp",{"2":{"8":1}}],["color",{"2":{"256":7}}],["colors=true",{"2":{"254":3}}],["color=",{"2":{"186":5}}],["code插件liteyuki",{"2":{"305":1}}],["code=ast",{"2":{"247":2}}],["code",{"0":{"224":1},"2":{"177":3,"248":6,"249":2}}],["codemodifiedhandler",{"0":{"171":1},"1":{"172":1,"173":1,"174":1,"175":1,"176":1},"2":{"177":1}}],["coro",{"0":{"290":1,"291":1},"2":{"290":6,"291":3}}],["coroutine",{"0":{"289":1,"290":2,"291":2,"293":1},"2":{"66":1,"81":1,"84":1,"91":2,"131":1,"203":1,"289":1,"290":2,"291":3,"293":3}}],["core",{"0":{"152":1,"153":1,"154":1},"1":{"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1}}],["copy",{"2":{"145":1}}],["copyright",{"2":{"57":1,"154":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["content",{"2":{"247":2,"248":17,"249":2}}],["continue",{"2":{"150":1,"247":1,"249":1,"255":3}}],["conn",{"2":{"87":4,"88":1,"89":1,"117":2}}],["configs",{"0":{"150":1},"2":{"150":1,"151":1}}],["config=self",{"2":{"27":1,"46":1}}],["config",{"0":{"36":1,"37":1,"55":1,"56":1,"144":1,"145":2,"151":1,"186":1,"277":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1},"2":{"2":2,"21":2,"27":1,"36":2,"37":6,"40":2,"46":1,"55":2,"56":6,"145":10,"146":7,"147":7,"148":7,"149":7,"150":4,"151":9,"181":1,"186":3,"285":2,"287":2,"317":4,"318":1}}],["count",{"0":{"139":1},"2":{"21":1,"24":2,"40":1,"43":2}}],["combined",{"2":{"206":2,"207":2}}],["comm",{"0":{"79":1,"106":1,"107":1,"110":1,"111":1,"115":1,"121":1},"1":{"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"108":1,"109":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1},"2":{"296":2,"299":2}}],["command>",{"2":{"302":2}}],["command",{"0":{"317":1},"1":{"318":1},"2":{"1":2}}],["complete",{"2":{"290":2}}],["completion",{"2":{"2":1}}],["compat",{"0":{"37":2,"56":2},"2":{"37":9,"56":9}}],["com",{"2":{"12":1,"13":1,"57":1,"154":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["cn",{"0":{"248":1,"249":1},"2":{"2":1,"248":2,"249":1}}],["duration>",{"2":{"325":1}}],["duration",{"2":{"325":2,"326":1}}],["driver",{"2":{"296":4}}],["dog",{"2":{"308":1,"309":1}}],["does",{"2":{"255":1}}],["dot",{"2":{"247":1}}],["docstring=method",{"2":{"247":1}}],["docstring=module",{"2":{"247":1}}],["docstring=class",{"2":{"247":1}}],["docstring=function",{"2":{"247":1}}],["docstring",{"0":{"223":1,"231":1,"234":1,"243":1},"2":{"247":16,"248":12}}],["docs",{"0":{"249":1},"2":{"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"91":1,"97":1,"98":2,"99":1,"100":2,"249":5,"317":1,"318":1}}],["docker",{"2":{"13":3}}],["d",{"2":{"139":2,"140":4,"141":4,"142":4,"143":2,"292":4,"326":1}}],["daemon=true",{"2":{"291":1}}],["data=",{"2":{"190":1}}],["data",{"0":{"88":1,"103":1,"104":1,"105":1,"109":1,"118":1,"130":1,"132":1,"140":1,"141":1,"142":1,"143":1,"189":1,"245":1},"2":{"88":7,"89":2,"90":2,"91":5,"102":2,"103":7,"104":7,"105":4,"109":3,"118":3,"119":2,"130":5,"131":3,"132":4,"133":6,"140":4,"141":3,"142":2,"143":2,"189":7,"245":6,"249":5,"296":7}}],["darwin",{"2":{"24":1,"43":1}}],["disable",{"2":{"317":1,"318":1,"319":2,"320":2}}],["display",{"0":{"256":2},"2":{"254":7,"256":5}}],["diagnose=false",{"2":{"186":1}}],["dir",{"0":{"249":1,"255":1},"2":{"249":6,"255":17,"285":2,"287":2}}],["dirname",{"2":{"245":2}}],["directory",{"2":{"150":6,"177":2,"255":1}}],["directories=",{"2":{"309":1}}],["directories",{"0":{"150":1,"177":1},"2":{"150":2,"177":4}}],["dirs",{"0":{"150":1},"2":{"1":1,"150":1,"151":1,"246":1,"285":1,"287":1}}],["dict",{"0":{"98":1,"100":1,"103":1,"104":1,"105":1,"109":1,"114":1,"129":1,"140":1,"141":1,"142":1,"143":1,"145":2,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"156":1,"186":1,"189":2,"190":1,"245":1,"252":1,"259":1,"274":1},"2":{"21":1,"40":1,"94":1,"96":1,"98":3,"100":4,"103":1,"104":1,"105":1,"109":1,"114":1,"122":1,"123":1,"125":2,"129":4,"140":1,"141":1,"142":1,"143":1,"145":3,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"156":1,"158":3,"186":1,"189":3,"190":1,"245":1,"249":1,"252":3,"254":6,"259":3}}],["description=",{"2":{"308":1}}],["description",{"0":{"269":1},"2":{"314":1}}],["details>",{"2":{"248":4}}],["debounce",{"0":{"170":1},"2":{"170":1,"171":1,"172":1}}],["debug",{"2":{"2":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"87":2,"146":1,"147":1,"148":1,"185":2,"186":2,"309":1}}],["deepcopy",{"2":{"145":1}}],["del",{"2":{"128":2}}],["deleted",{"0":{"174":1},"2":{"174":1}}],["delete",{"0":{"128":1,"142":1},"2":{"128":2,"141":1,"142":3}}],["delivery",{"2":{"160":1}}],["deliver",{"0":{"95":1,"96":1,"101":1,"102":1,"156":2},"2":{"97":1,"99":1,"100":1,"101":1,"102":2,"103":2,"104":2,"105":1,"156":6,"160":6}}],["delay",{"0":{"24":1,"43":1},"2":{"24":4,"43":4}}],["decorator",{"2":{"91":2,"131":2,"170":2,"177":2,"195":2,"247":13}}],["deprecated",{"2":{"37":1,"56":1}}],["depth=1",{"2":{"12":1,"13":1}}],["deftype",{"0":{"213":1,"225":1},"1":{"214":1,"215":1,"216":1,"217":1,"218":1},"2":{"247":4,"248":1}}],["def",{"0":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"87":1,"88":1,"89":1,"90":1,"91":1,"97":1,"98":1,"99":1,"100":1,"103":1,"104":1,"105":1,"109":1,"113":1,"114":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"135":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"156":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"170":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"181":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"252":1,"254":1,"255":1,"256":1,"259":1,"276":1,"283":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1},"2":{"23":1,"42":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"90":1,"91":2,"103":1,"104":1,"105":1,"131":2,"132":1,"133":1,"135":1,"140":1,"141":1,"142":1,"143":1,"159":1,"170":2,"172":1,"177":2,"195":1,"196":1,"201":1,"206":1,"207":1,"208":1,"209":1,"210":1,"247":4,"248":2,"283":1,"293":1,"296":3,"309":1}}],["defaults",{"2":{"24":2,"25":2,"36":2,"37":2,"43":2,"44":2,"55":2,"56":2,"91":2}}],["default",{"0":{"36":1,"37":1,"55":1,"56":1,"127":1,"151":1,"220":1,"221":1,"222":1,"223":1,"225":1,"226":1,"228":1,"229":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"243":1,"268":1,"278":1,"279":1,"280":1,"285":1,"287":1},"2":{"2":1,"36":4,"37":4,"55":4,"56":4,"95":1,"96":1,"127":6,"140":3,"151":1,"181":1,"185":1,"285":1,"287":1}}],["developer",{"2":{"308":1}}],["dev",{"0":{"165":1,"166":1,"167":1,"180":1},"1":{"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"181":1},"2":{"2":1,"309":1,"312":1}}],["访问令牌",{"2":{"2":1}}],["a包中的index",{"2":{"314":1}}],["am",{"2":{"296":6}}],["arbitrary",{"0":{"277":1}}],["arg",{"2":{"247":13,"248":16}}],["argv",{"2":{"24":1,"43":1}}],["args=coro",{"2":{"291":1}}],["args=",{"2":{"24":1,"43":1,"247":2}}],["args",{"0":{"26":1,"45":1,"66":1,"114":1,"160":1,"221":1},"2":{"21":1,"24":3,"25":1,"26":4,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"36":1,"37":1,"40":1,"43":3,"44":1,"45":4,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"55":1,"56":1,"66":4,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"87":1,"88":1,"91":1,"97":1,"98":1,"99":1,"114":2,"117":1,"118":1,"126":1,"127":1,"128":1,"130":1,"131":1,"132":1,"145":1,"160":5,"162":1,"164":1,"170":2,"177":1,"181":1,"189":1,"190":1,"194":1,"196":1,"244":1,"245":1,"247":9,"248":9,"249":1,"256":1,"289":1,"290":1,"291":1,"292":1,"293":3,"317":4}}],["abs",{"2":{"249":4}}],["application",{"0":{"262":2},"2":{"256":1}}],["append",{"2":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"91":2,"131":2,"195":1,"199":1,"246":1,"247":5}}],["api格式为onebot",{"2":{"317":1}}],["api文档",{"2":{"304":1}}],["api也有差别",{"2":{"304":1}}],["api",{"0":{"304":1},"2":{"249":10,"302":3,"303":2,"317":3}}],["add",{"0":{"160":1,"199":1},"2":{"160":1,"186":1,"199":1,"200":1,"255":1}}],["adapter获取详细信息",{"2":{"3":1}}],["attributes=",{"2":{"247":2}}],["attributes",{"0":{"236":1,"242":1},"2":{"247":2,"248":2}}],["attributeinfo",{"0":{"227":1,"236":1,"242":1},"1":{"228":1,"229":1,"230":1,"231":1},"2":{"247":2}}],["attr",{"0":{"136":1,"137":1,"214":1,"215":1,"216":1,"217":1,"218":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"243":1,"262":1,"263":1,"264":1,"265":1,"266":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"277":1,"278":1,"279":1,"280":1,"281":1},"2":{"247":2,"248":14}}],["atexit",{"2":{"21":1,"40":1}}],["assign",{"2":{"247":2}}],["ast",{"2":{"247":29}}],["as",{"2":{"128":1,"245":1,"247":1,"254":1,"290":1}}],["asynchronous",{"2":{"293":2}}],["async=isinstance",{"2":{"247":2}}],["asyncfunctiondef",{"2":{"247":3}}],["async",{"0":{"23":1,"42":1,"59":1,"62":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"81":1,"84":1,"90":2,"132":1,"133":1,"159":1,"196":1,"208":1,"209":1,"210":1,"226":1,"283":1,"293":1},"2":{"60":1,"63":1,"66":3,"82":1,"85":1,"90":1,"91":1,"122":1,"123":1,"131":1,"132":1,"133":1,"201":1,"206":1,"207":1,"209":1,"210":1,"248":4,"283":1,"293":2,"296":2}}],["asyncio",{"2":{"21":2,"22":1,"40":2,"41":1,"66":1,"90":1,"132":1,"159":3,"290":5,"296":2}}],["a",{"2":{"88":1,"89":1,"145":3,"249":4,"255":1,"292":2,"308":1}}],["annassign",{"2":{"247":1}}],["annotation",{"2":{"247":6}}],["an",{"2":{"88":1,"97":1}}],["and",{"0":{"207":1},"2":{"88":1,"177":1,"207":2,"247":7,"248":1,"255":3,"309":2}}],["any=none",{"2":{"36":1,"37":1,"55":1,"56":1}}],["any",{"0":{"36":2,"37":2,"55":2,"56":2,"91":2,"103":1,"104":1,"105":1,"109":1,"114":1,"126":1,"127":2,"129":1,"130":1,"132":1,"140":1,"141":1,"142":1,"143":1,"145":2,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"156":4,"176":1,"189":2,"190":1,"230":1,"274":1,"289":1,"293":1},"2":{"21":1,"36":5,"37":5,"40":1,"55":5,"56":5,"58":1,"59":1,"61":1,"62":1,"80":1,"81":3,"84":2,"91":9,"94":1,"95":1,"96":1,"99":1,"100":1,"103":1,"104":1,"105":1,"109":1,"114":1,"125":3,"126":1,"127":5,"129":4,"130":1,"131":1,"132":1,"140":1,"141":1,"142":1,"143":1,"145":2,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"156":4,"176":1,"189":3,"190":1,"201":1,"247":7,"249":1,"289":1,"293":1}}],["await",{"2":{"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"90":1,"91":2,"131":1,"133":2,"196":2,"206":2,"207":2,"208":1,"296":1,"302":1,"303":1,"305":1}}],["awaitable",{"2":{"59":1,"62":1}}],["author",{"0":{"272":1},"2":{"57":1,"154":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["auto",{"2":{"1":2,"2":1}}],["after",{"0":{"30":1,"31":1,"34":1,"49":1,"50":1,"53":1,"68":1,"70":1,"72":1,"74":1,"76":1,"78":1},"2":{"30":2,"31":2,"34":2,"49":2,"50":2,"53":2,"65":3,"68":2,"70":2,"72":2,"74":3,"76":3,"78":3,"296":1}}],["active和",{"2":{"296":1}}],["active和chan",{"2":{"160":2}}],["active=channel",{"2":{"160":1}}],["active=chan",{"2":{"160":1}}],["active",{"0":{"92":1,"95":1,"101":1,"156":2},"2":{"25":6,"44":6,"92":1,"101":1,"125":2,"130":1,"133":1,"156":6,"160":4,"296":11}}],["activate激活",{"2":{"12":1}}],["activate来激活虚拟环境",{"2":{"12":1}}],["accesstoken",{"2":{"3":1}}],["access",{"2":{"2":1}}],["already",{"2":{"87":2,"97":1}}],["alive",{"0":{"23":1,"42":1,"164":1},"2":{"23":1,"42":1,"162":1,"164":2}}],["all",{"0":{"129":1,"143":1,"159":1,"161":1,"163":1},"2":{"21":1,"24":1,"40":1,"43":1,"57":1,"129":2,"142":1,"143":3,"154":1,"159":1,"161":1,"163":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["allowed",{"0":{"277":1}}],["allow",{"2":{"2":1}}],["alconna提供的命令解析功能",{"2":{"10":1}}],["alconna是否自动补全指令",{"2":{"2":1}}],["alconna",{"2":{"2":1}}],["高级nonebot配置",{"2":{"2":1}}],["以上内容仅用于项目的优化",{"2":{"315":1}}],["以避免出现无法预料的问题",{"2":{"313":1}}],["以避免依赖冲突",{"2":{"12":1}}],["以下我们会编写一个简单的插件",{"2":{"309":1}}],["以下为默认值",{"2":{"2":1}}],["以前的最外层配置项仍可为nonebot服务",{"2":{"1":1}}],["period`",{"2":{"326":1}}],["period>",{"2":{"325":1}}],["period",{"2":{"325":2}}],["poke",{"2":{"303":4}}],["port",{"2":{"1":1}}],["publish=publish",{"2":{"160":1}}],["publish",{"0":{"94":1,"130":1,"156":1},"2":{"94":1,"125":2,"130":2,"133":2,"156":3}}],["page为页数",{"2":{"319":2}}],["page",{"2":{"319":2}}],["pacman",{"0":{"319":1},"1":{"320":1}}],["pack",{"2":{"314":2,"319":3}}],["param",{"2":{"316":1}}],["parts",{"2":{"292":2}}],["parent",{"2":{"247":4}}],["parse",{"2":{"247":1}}],["pass",{"2":{"118":1,"119":1,"120":1}}],["passive=channel",{"2":{"160":1}}],["passive=chan",{"2":{"160":1}}],["passive",{"0":{"93":1,"96":1,"102":1,"156":2},"2":{"93":1,"97":1,"99":1,"100":1,"102":2,"103":2,"104":2,"105":1,"125":2,"126":1,"127":1,"128":1,"129":1,"139":1,"140":2,"141":2,"142":2,"143":1,"156":6,"160":6,"296":13}}],["pathlib",{"2":{"254":1}}],["paths=none",{"2":{"249":1}}],["paths",{"0":{"249":1},"2":{"249":5}}],["path=dot",{"2":{"247":1}}],["path",{"0":{"181":2,"239":1,"244":3,"247":1,"250":1,"254":2,"292":3},"2":{"6":3,"13":1,"15":1,"149":1,"150":2,"181":5,"244":10,"245":3,"246":1,"247":7,"249":22,"250":2,"254":19,"255":26,"292":12,"309":5}}],["profile",{"2":{"321":4}}],["property",{"0":{"218":2},"2":{"247":2}}],["processes",{"2":{"25":1,"44":1,"158":1,"162":2,"164":1}}],["processmanager",{"0":{"157":1},"1":{"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1},"2":{"21":2,"40":2}}],["process",{"0":{"25":1,"32":2,"33":3,"44":1,"51":2,"52":3,"61":1,"62":1,"63":1,"66":1,"69":3,"71":3,"75":1,"77":1,"164":1},"2":{"21":2,"24":1,"25":4,"32":7,"33":8,"35":2,"40":2,"43":1,"44":4,"51":7,"52":8,"54":2,"63":2,"65":4,"66":3,"69":8,"71":8,"75":2,"77":2,"87":4,"91":3,"97":1,"99":1,"100":1,"126":1,"127":1,"128":1,"129":1,"131":3,"133":2,"158":1,"159":1,"161":2,"162":7,"164":2,"296":8,"309":2}}],["priority",{"0":{"194":1,"200":1,"201":1},"2":{"194":5,"199":2,"200":2,"201":2}}],["private",{"0":{"247":1},"2":{"189":2,"247":6}}],["print",{"2":{"21":1,"40":1,"90":2,"196":1,"249":1,"254":1}}],["pwd",{"2":{"13":3}}],["p",{"2":{"13":1,"326":1}}],["platform",{"2":{"24":3,"43":3}}],["playwright安装失败",{"2":{"6":1}}],["plugintype",{"0":{"256":1,"261":1,"271":2},"1":{"262":1,"263":1,"264":1,"265":1,"266":1},"2":{"256":5,"308":1}}],["pluginmetadata",{"0":{"267":1,"281":1},"1":{"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1},"2":{"254":4,"308":2}}],["plugin`",{"2":{"254":1}}],["plugin`的函数签名",{"2":{"181":1}}],["plugin的函数签名",{"2":{"181":1}}],["plugin进行通信",{"2":{"8":1}}],["plugin",{"0":{"180":1,"251":1,"252":1,"253":1,"254":2,"255":2,"256":1,"257":1,"258":1,"259":1,"260":1,"275":1,"284":1,"286":1},"1":{"181":1,"252":1,"254":1,"255":1,"256":1,"259":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":2,"277":2,"278":2,"279":2,"280":2,"281":2,"285":1,"287":1},"2":{"1":1,"10":1,"21":2,"40":2,"180":1,"252":3,"254":15,"255":6,"256":5,"259":3,"285":6,"287":6,"308":4,"311":1,"312":2,"319":5}}],["plugins下创建一个文件",{"2":{"312":1}}],["plugins中添加你的插件路径",{"2":{"311":1}}],["plugins",{"0":{"181":1,"252":1,"255":1,"259":1,"282":1,"284":1,"285":1,"286":1,"287":1},"1":{"283":1,"285":1,"287":1},"2":{"1":1,"21":1,"40":1,"181":6,"252":2,"254":3,"255":9,"259":2,"285":4,"287":4,"309":1,"312":2}}],["py即可启动插件",{"2":{"312":1}}],["pyo",{"2":{"309":1}}],["pycache",{"2":{"309":1}}],["pyc",{"2":{"309":1}}],["pycharm",{"2":{"57":1,"154":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["py文件",{"2":{"308":1}}],["py文件或一个包含",{"2":{"308":1}}],["py的文件夹即可被识别为插件",{"2":{"308":1}}],["pyfile",{"0":{"250":1},"2":{"249":8,"250":1}}],["pyi",{"2":{"246":1,"247":1}}],["py",{"2":{"12":1,"57":1,"154":1,"180":1,"184":1,"187":1,"191":2,"192":1,"197":2,"198":1,"202":1,"211":1,"212":1,"246":1,"247":1,"249":1,"253":1,"255":3,"257":1,"260":1,"282":1,"284":2,"286":2,"299":1,"308":1,"309":1,"312":2,"314":1}}],["py来启动bot",{"2":{"6":1}}],["python格式",{"2":{"301":1}}],["pythonfrom",{"2":{"296":1,"299":1,"308":1,"312":1}}],["pythonimport",{"2":{"296":1,"309":1}}],["pythonasync",{"2":{"23":1,"42":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"90":1,"133":1,"159":1,"196":1,"208":1}}],["pythondef",{"2":{"21":1,"22":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"40":1,"41":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"87":1,"88":1,"89":1,"91":1,"97":1,"98":1,"99":1,"100":1,"109":1,"113":1,"114":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"156":1,"158":1,"160":1,"161":1,"162":1,"163":1,"164":1,"170":1,"173":1,"174":1,"175":1,"176":1,"177":1,"181":1,"185":1,"186":1,"189":1,"190":1,"194":1,"195":1,"199":1,"200":1,"201":1,"205":1,"206":1,"207":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"252":1,"254":1,"255":1,"256":1,"259":1,"276":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1}}],["python为你的python可执行文件路径",{"2":{"15":1}}],["python3",{"2":{"12":1}}],["python是你要用来运行bot的可执行文件",{"2":{"6":1}}],["python",{"2":{"6":2,"12":1,"15":1,"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":2,"91":1,"97":1,"98":2,"99":1,"100":2,"103":1,"104":1,"105":1,"132":1,"135":1,"140":1,"141":1,"142":1,"143":1,"172":1,"209":1,"210":1,"247":2,"283":1}}],["pipe",{"2":{"87":2}}],["pip",{"2":{"6":1,"12":1,"15":1,"254":1}}],["pip和python不对应怎么办",{"2":{"6":1}}],["utils",{"0":{"288":1},"1":{"289":1,"290":1,"291":1,"292":1,"293":1}}],["utf",{"2":{"146":1,"147":1,"148":1,"245":1,"247":1}}],["usage",{"0":{"270":1}}],["user",{"0":{"189":1,"321":1},"2":{"189":3,"190":2,"210":1,"303":3}}],["used",{"2":{"91":1}}],["use",{"2":{"1":1,"37":1,"56":1,"254":1}}],["unload",{"2":{"319":1,"320":1}}],["uninstall",{"2":{"319":1,"320":1}}],["uninstall卸载问题插件",{"2":{"6":1}}],["until",{"2":{"290":2}}],["unclassified",{"0":{"265":2,"271":1}}],["unparse",{"2":{"247":10}}],["unsupported",{"2":{"149":1}}],["update",{"2":{"1":1,"2":1,"149":3,"150":1,"151":1,"317":1,"318":1,"319":1,"320":1}}],["某些控制台字体不可用",{"2":{"1":1}}],["the",{"2":{"254":1}}],["thread",{"0":{"291":1},"2":{"24":1,"43":1,"291":2}}],["threading",{"0":{"137":1},"2":{"21":1,"24":1,"40":1,"43":1,"291":1}}],["test",{"0":{"266":2},"2":{"256":1}}],["text",{"2":{"248":3}}],["terminated",{"2":{"162":1}}],["terminate",{"0":{"162":1,"163":1},"2":{"21":1,"24":1,"40":1,"43":1,"162":2,"163":2}}],["target=run",{"2":{"291":1}}],["target=os",{"2":{"24":1,"43":1}}],["target",{"0":{"160":3,"244":1},"2":{"160":6,"244":4,"247":5}}],["targets",{"2":{"158":1,"159":1,"160":1,"161":1,"163":1,"164":1,"247":2}}],["task",{"2":{"132":1,"159":5}}],["tasks",{"2":{"66":2}}],["types",{"0":{"277":1}}],["type=plugintype",{"2":{"308":1}}],["type=attr",{"2":{"247":1}}],["type=ast",{"2":{"247":3}}],["type=def",{"2":{"247":1}}],["type=deftype",{"2":{"247":1}}],["type=self",{"2":{"190":2}}],["typeerror",{"2":{"87":1,"88":1,"97":1}}],["type",{"0":{"87":1,"189":2,"222":1,"225":1,"229":1,"256":1,"271":1},"2":{"87":12,"88":7,"97":1,"189":9,"190":2,"247":11,"248":13,"254":2,"256":5}}],["typealias",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"168":1,"169":1,"203":1}}],["typing",{"2":{"25":2,"44":2,"66":2,"91":2}}],["tuple=",{"2":{"160":1}}],["tuplestr",{"2":{"37":1,"56":1}}],["tuple",{"0":{"37":1,"56":1,"103":1,"104":1,"105":1,"114":1,"140":1,"141":1,"142":1,"143":1,"156":2,"160":1,"177":1,"221":1},"2":{"37":2,"56":2,"94":1,"96":1,"103":1,"104":1,"105":1,"114":1,"125":3,"140":1,"141":1,"142":1,"143":1,"156":2,"158":2,"177":1}}],["title",{"2":{"249":2}}],["time>",{"2":{"302":1}}],["timeout",{"2":{"162":1}}],["time",{"2":{"23":1,"24":1,"42":1,"43":1,"57":1,"154":1,"170":9,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["tip",{"2":{"12":1,"13":1,"305":1,"314":1,"316":1}}],["t",{"0":{"86":1,"88":1,"89":1,"90":1,"91":2},"1":{"87":1,"88":1,"89":1,"90":1,"91":1},"2":{"13":1,"35":1,"54":1,"80":1,"81":1,"83":1,"84":1,"88":3,"89":3,"90":3,"91":9,"97":1,"98":1,"99":1,"100":1}}],["txt",{"2":{"12":1}}],["txt来安装依赖",{"2":{"6":1,"15":1}}],["tree",{"2":{"247":3}}],["traceback",{"2":{"196":1,"254":1}}],["try",{"2":{"22":1,"23":1,"41":1,"42":1,"128":1,"196":1,"254":1,"290":1}}],["trss",{"2":{"8":1,"14":1}}],["true时例如docs",{"2":{"249":2}}],["true下启动轻雪",{"2":{"6":1}}],["true",{"0":{"128":1,"177":1,"247":1,"255":1,"277":1},"2":{"1":3,"2":1,"89":1,"133":1,"186":1,"208":1,"209":1,"249":1,"296":2}}],["tokyo",{"2":{"323":1}}],["token",{"2":{"2":1}}],["top",{"0":{"249":1},"2":{"249":4}}],["toml",{"0":{"148":1},"2":{"148":5,"149":2,"151":1}}],["toml和config目录下的所有配置文件",{"2":{"0":1}}],["to",{"0":{"245":1,"292":1},"2":{"6":3,"13":1,"15":2,"24":2,"25":2,"36":2,"37":2,"43":2,"44":2,"55":2,"56":2,"88":1,"91":2,"245":1,"249":1,"254":7,"255":2,"292":2}}],["image",{"2":{"317":2,"318":1}}],["implemented",{"2":{"172":1}}],["import",{"2":{"139":1,"254":1,"296":5,"299":1,"308":2,"309":3,"312":1}}],["iter",{"2":{"247":2}}],["items",{"2":{"98":1,"145":2,"245":1,"248":1,"249":1}}],["i",{"2":{"199":2,"296":6}}],["ignored",{"0":{"249":1},"2":{"249":8}}],["ignore",{"0":{"128":1,"247":1,"255":1},"2":{"128":4,"247":6,"249":1,"255":6}}],["id仅超级用户可用",{"2":{"317":1}}],["id=user",{"2":{"303":2}}],["id=1234567",{"2":{"317":2}}],["id=123456",{"2":{"303":1}}],["id=self",{"2":{"190":3}}],["id",{"0":{"189":3},"2":{"91":5,"189":11,"190":3,"210":1,"247":6,"303":2,"317":2,"319":1,"325":4}}],["ids",{"2":{"87":2,"91":2}}],["if",{"2":{"24":2,"25":1,"35":2,"37":2,"43":2,"44":1,"54":2,"56":2,"66":1,"87":5,"88":3,"89":1,"91":6,"97":3,"99":1,"100":1,"126":1,"127":1,"128":3,"129":1,"131":5,"133":2,"135":2,"145":1,"146":1,"147":1,"148":1,"149":2,"150":3,"160":1,"162":2,"164":1,"170":1,"177":1,"185":1,"186":5,"189":1,"190":1,"196":1,"199":1,"208":1,"245":1,"246":1,"247":20,"248":10,"249":4,"254":2,"255":9,"289":2,"290":1,"292":1}}],["isclass",{"2":{"289":1}}],["iscoroutinefunction",{"2":{"289":2}}],["isroutine",{"2":{"289":1}}],["isfile",{"2":{"255":1,"309":1}}],["isdir",{"2":{"255":2}}],["isinstance",{"2":{"97":1,"145":1,"247":13,"254":1,"296":1}}],["is",{"0":{"164":1,"210":1,"226":1,"289":1},"2":{"21":1,"22":1,"23":2,"25":1,"35":2,"40":1,"41":1,"42":2,"44":1,"54":2,"66":1,"87":6,"88":1,"91":5,"97":1,"99":1,"100":1,"125":2,"126":1,"127":1,"128":1,"129":1,"131":3,"133":1,"135":2,"146":1,"147":1,"148":1,"160":1,"162":1,"164":2,"177":1,"189":1,"208":1,"210":1,"247":2,"248":2,"249":1,"254":1,"255":2,"289":1,"290":1}}],["index",{"2":{"248":2,"249":1,"314":1}}],["inherit=",{"2":{"247":1}}],["inherit",{"0":{"237":1},"2":{"248":5}}],["inspect",{"2":{"289":4,"293":1}}],["insert",{"2":{"199":1}}],["instead",{"2":{"37":1,"56":1}}],["instance",{"0":{"135":1,"136":1},"2":{"21":2,"35":4,"40":2,"54":4,"88":1,"97":1,"135":5,"138":1}}],["install安装浏览器",{"2":{"6":1}}],["install",{"2":{"6":1,"12":1,"15":1,"316":1,"319":1,"320":1}}],["inner",{"2":{"87":2}}],["in",{"0":{"151":1,"291":1},"2":{"25":1,"35":1,"37":3,"44":1,"54":1,"56":3,"66":1,"87":5,"90":1,"91":1,"97":1,"98":1,"128":1,"131":3,"132":1,"133":1,"145":2,"149":1,"150":2,"151":1,"159":3,"161":1,"162":1,"163":1,"164":1,"177":1,"181":1,"196":1,"199":1,"201":2,"210":1,"245":1,"246":2,"247":13,"248":9,"249":5,"255":2,"285":2,"287":2,"290":2,"291":1,"309":1}}],["int=0",{"2":{"24":1,"43":1,"200":1,"201":1}}],["int",{"0":{"24":1,"43":1,"194":1,"200":1,"201":1},"2":{"24":2,"43":2,"65":1,"87":2,"194":1}}],["initialized",{"2":{"35":1,"54":1,"87":2}}],["initializing",{"2":{"21":1,"40":1}}],["init",{"0":{"21":1,"26":1,"27":1,"40":1,"45":1,"46":1,"65":1,"87":1,"109":1,"113":1,"117":1,"125":1,"156":1,"158":1,"186":1,"189":1,"194":1,"205":1},"2":{"21":2,"26":2,"27":2,"40":2,"45":2,"46":2,"65":1,"87":1,"109":1,"113":1,"117":1,"125":1,"156":1,"158":1,"186":1,"189":1,"191":1,"194":1,"197":1,"205":1,"247":1,"249":2,"255":2,"284":1,"286":1,"292":1,"308":3}}],["info",{"0":{"247":1,"248":1},"2":{"1":1,"21":1,"22":1,"23":1,"24":1,"40":1,"41":1,"42":1,"43":1,"186":3,"247":12,"248":6,"249":5,"296":2}}],["icon=f",{"2":{"186":5}}],["icon",{"2":{"1":1,"186":7,"248":2,"249":2}}],["日志等级",{"2":{"1":1}}],["lt",{"2":{"316":1,"317":7,"319":10,"321":2}}],["lyf结尾",{"2":{"301":1}}],["lyfunction语法",{"2":{"317":1}}],["lyfunction",{"2":{"301":1}}],["locks",{"2":{"128":1}}],["lock",{"0":{"137":2},"2":{"126":3,"127":3,"128":3,"135":1}}],["loaded",{"0":{"252":1,"259":1},"2":{"252":1,"259":1}}],["loader",{"0":{"284":1,"285":1,"286":1,"287":1},"1":{"285":1,"287":1},"2":{"21":1,"40":1,"285":1,"287":1}}],["loading",{"2":{"146":1,"147":1,"148":1}}],["load",{"0":{"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"253":1,"254":1,"255":1},"1":{"254":1,"255":1,"256":1},"2":{"21":1,"40":1,"146":4,"147":4,"148":4,"149":4,"150":2,"151":3,"181":3,"253":1,"254":3,"255":2,"285":2,"287":2,"319":1,"320":1}}],["loop",{"0":{"133":1},"2":{"21":4,"28":1,"40":4,"47":1,"87":1,"90":3,"125":2,"133":2,"159":2,"290":10}}],["log0000",{"2":{"296":1}}],["logger",{"0":{"27":1,"46":1},"2":{"21":1,"22":1,"23":1,"24":1,"26":1,"27":1,"37":1,"40":1,"41":1,"42":1,"43":1,"45":1,"46":1,"56":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"87":2,"146":1,"147":1,"148":1,"149":2,"150":1,"162":2,"164":1,"186":7,"254":3,"255":3,"290":1,"296":3,"309":2}}],["logo",{"2":{"21":1,"40":1}}],["log",{"0":{"184":1,"186":1},"1":{"185":1,"186":1},"2":{"1":2,"27":1,"46":1,"184":1,"186":3,"296":1}}],["liteecho",{"0":{"282":1,"283":1},"1":{"283":1},"2":{"282":2,"283":2,"317":1}}],["liteyukiexception",{"0":{"179":1}}],["liteyuki轻雪机器人管理脚本",{"2":{"14":1}}],["liteyukibot代替$",{"2":{"13":1}}],["liteyukibot",{"0":{"20":1,"35":1,"39":1,"54":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1},"2":{"12":2,"13":5,"24":1,"35":3,"43":1,"54":3,"181":1}}],["liteyukistudio",{"2":{"12":1,"13":1,"57":1,"154":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["liteyuki",{"0":{"17":1,"19":1,"38":1,"57":1,"79":1,"106":1,"107":1,"110":1,"111":1,"115":1,"121":1,"144":1,"152":1,"153":1,"154":1,"165":1,"166":1,"167":1,"178":1,"180":1,"182":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"251":1,"253":1,"257":1,"258":1,"260":1,"282":1,"284":1,"286":1,"288":1,"319":1},"1":{"18":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"108":1,"109":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":1,"119":1,"120":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"179":1,"181":1,"183":1,"185":1,"186":1,"188":1,"189":1,"190":1,"193":1,"194":1,"195":1,"196":1,"199":1,"200":1,"201":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"209":1,"210":1,"213":1,"214":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"252":1,"254":1,"255":1,"256":1,"259":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":1,"273":1,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"283":1,"285":1,"287":1,"289":1,"290":1,"291":1,"292":1,"293":1,"320":1},"2":{"1":2,"2":1,"21":2,"22":1,"23":1,"35":1,"40":2,"41":1,"42":1,"54":1,"181":2,"254":5,"285":3,"287":3,"296":12,"299":2,"300":1,"308":1,"309":4,"312":1,"313":1,"317":4,"318":3}}],["listdir",{"2":{"150":1,"255":2}}],["list",{"0":{"189":1,"201":1,"221":1,"235":1,"236":1,"237":1,"240":1,"241":1,"242":1,"246":1},"2":{"65":6,"87":2,"122":1,"123":1,"189":1,"194":1,"199":3,"201":1,"246":4,"247":4,"249":3,"317":1,"319":2,"320":1}}],["life",{"2":{"65":1}}],["lifespan=self",{"2":{"21":1,"40":1}}],["lifespan",{"0":{"29":2,"30":1,"31":1,"32":1,"33":2,"34":1,"48":2,"49":1,"50":1,"51":1,"52":2,"53":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"158":2},"1":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":2,"66":2,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":2,"74":2,"75":2,"76":2,"77":2,"78":2},"2":{"21":3,"29":9,"30":8,"31":8,"32":10,"33":11,"34":8,"40":3,"48":9,"49":8,"50":8,"51":10,"52":11,"53":8,"57":1,"60":2,"63":2,"65":6,"66":8,"67":6,"68":6,"69":8,"70":6,"71":8,"72":6,"158":4}}],["library",{"2":{"24":1,"25":2,"36":3,"37":5,"43":1,"44":2,"55":3,"56":5,"66":1,"91":1,"97":1,"98":2,"99":1,"100":2}}],["linux系统要支持python3",{"2":{"15":1}}],["linux",{"2":{"14":1,"24":1,"43":1}}],["linux下使用source",{"2":{"12":1}}],["llonebot",{"2":{"8":1}}],["laptop",{"2":{"249":2}}],["lang",{"0":{"248":1,"249":1},"2":{"248":4,"249":3}}],["language",{"2":{"2":1}}],["last",{"2":{"170":4}}],["lambda",{"2":{"139":1,"140":2,"141":2,"142":2,"143":1}}],["lagrange",{"2":{"8":1}}],["level=0",{"2":{"186":1}}],["level",{"0":{"185":1},"2":{"1":1,"185":2,"186":6}}],["写在外层的配置项将会被覆盖",{"2":{"1":1}}],["switch",{"2":{"317":2,"318":1}}],["simple",{"2":{"308":1}}],["signature",{"2":{"293":2}}],["signal",{"2":{"21":6,"40":6}}],["sigterm",{"2":{"21":1,"40":1}}],["sigint",{"2":{"21":1,"40":1}}],["src",{"2":{"285":1,"287":1,"309":5}}],["specified",{"2":{"254":1}}],["split",{"2":{"254":4}}],["schedule",{"2":{"177":1}}],["scripts部署",{"0":{"14":1}}],["scripts",{"2":{"12":1}}],["sm",{"2":{"159":2}}],["source",{"0":{"224":1},"2":{"247":2,"248":6}}],["sockschannel",{"0":{"116":1},"1":{"117":1,"118":1,"119":1,"120":1}}],["socks",{"0":{"115":1},"1":{"116":1,"117":1,"118":1,"119":1,"120":1}}],["software",{"2":{"57":1,"154":1,"180":1,"184":1,"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1,"253":1,"257":1,"260":1,"282":1,"284":1,"286":1}}],["shinjuku",{"2":{"323":1}}],["shellstatistic",{"2":{"325":1}}],["shellbind",{"2":{"323":1}}],["shellweather",{"2":{"323":1}}],["shellmain",{"2":{"314":1}}],["shellvar",{"2":{"302":1}}],["shellcmd",{"2":{"301":1}}],["shell",{"2":{"301":1,"303":1}}],["shutil",{"2":{"249":1}}],["shutdown",{"0":{"31":1,"32":1,"50":1,"51":1,"69":1,"70":1,"75":1,"76":1},"2":{"31":2,"32":2,"50":2,"51":2,"65":2,"69":2,"70":2,"75":3,"76":3}}],["show",{"2":{"186":6}}],["should",{"2":{"87":1}}],["shared",{"0":{"138":1},"2":{"125":3,"139":1,"140":3,"141":3,"142":3,"143":2,"159":1,"160":1,"299":3}}],["sync",{"0":{"58":1,"61":1,"80":1,"83":1},"2":{"60":1,"63":1,"82":1,"85":1,"293":2}}],["system",{"0":{"177":1},"2":{"24":4,"43":4,"177":1,"309":2}}],["sys",{"2":{"24":3,"43":3,"186":1}}],["snowykami",{"2":{"57":2,"154":2,"180":2,"184":2,"187":2,"191":2,"192":2,"197":2,"198":2,"202":2,"211":2,"212":2,"253":2,"257":2,"260":2,"282":2,"284":2,"286":2}}],["succeeded",{"2":{"254":1}}],["success",{"2":{"162":1,"186":2,"254":2}}],["summary>",{"2":{"248":3}}],["summary>源代码",{"2":{"248":1}}],["su",{"0":{"210":1},"2":{"210":1,"282":1,"283":1}}],["supported",{"2":{"150":1}}],["superusers",{"2":{"1":1,"210":1}}],["subscribe",{"2":{"131":1}}],["subscriber",{"0":{"122":1,"123":1,"131":1,"132":1},"2":{"131":7,"132":2,"133":1}}],["sub",{"0":{"123":1},"2":{"35":1,"54":1,"87":2,"91":1,"125":1,"131":4,"133":1}}],["sleep",{"2":{"23":1,"24":1,"42":1,"43":1,"296":1,"302":1,"303":1}}],["style",{"2":{"314":2}}],["stem",{"2":{"292":2}}],["stdout",{"2":{"186":1}}],["stdtypes",{"2":{"25":1,"36":1,"37":3,"44":1,"55":1,"56":3,"97":1,"98":2,"99":1,"100":2}}],["store",{"2":{"125":1,"126":1,"127":1,"128":2,"129":1}}],["storage",{"0":{"121":1},"1":{"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1},"2":{"106":2,"110":2,"299":2}}],["stopping",{"2":{"22":1,"23":1,"41":1,"42":1}}],["stop",{"0":{"28":1,"47":1},"2":{"21":1,"23":2,"28":3,"40":1,"42":2,"47":3}}],["stat",{"2":{"326":1}}],["statistic",{"2":{"326":1}}],["statistics",{"0":{"325":1},"1":{"326":1}}],["static",{"0":{"216":1},"2":{"247":1}}],["staticmethod",{"0":{"216":1},"2":{"65":1,"66":1,"131":1,"132":1,"247":1}}],["status",{"2":{"317":1,"318":1}}],["startup",{"2":{"296":2}}],["startswith",{"2":{"247":3,"282":1,"283":1}}],["start或superusers",{"2":{"6":1}}],["start保证alconna解析正常",{"2":{"1":1}}],["start",{"0":{"29":1,"30":1,"48":1,"49":1,"67":1,"68":1,"73":1,"74":1,"133":1,"159":1},"2":{"1":1,"24":2,"29":2,"30":2,"43":2,"48":2,"49":2,"65":2,"67":2,"68":2,"73":3,"74":3,"133":2,"159":3,"291":1,"296":1}}],["strip",{"2":{"283":2}}],["str=",{"2":{"248":1,"249":1}}],["structure",{"2":{"88":1}}],["str",{"0":{"25":1,"36":1,"37":2,"44":1,"55":1,"56":2,"87":1,"97":1,"98":1,"99":1,"100":1,"103":2,"104":2,"105":2,"109":2,"117":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"140":2,"141":2,"142":2,"143":2,"145":2,"146":2,"147":2,"148":2,"149":2,"150":2,"151":1,"156":2,"160":1,"162":1,"164":1,"177":1,"181":1,"185":2,"189":9,"190":2,"201":1,"220":1,"221":2,"222":1,"223":1,"224":1,"228":1,"229":1,"231":1,"233":1,"234":1,"237":1,"239":1,"243":1,"244":3,"245":2,"246":1,"247":1,"248":2,"249":3,"252":1,"254":1,"255":1,"256":2,"259":1,"268":1,"269":1,"270":1,"272":1,"273":1,"274":1,"278":1,"280":1,"292":1},"2":{"21":1,"25":3,"36":3,"37":5,"40":1,"44":3,"55":3,"56":5,"61":1,"62":1,"87":2,"94":2,"96":2,"97":3,"98":3,"99":3,"100":4,"103":2,"104":2,"105":2,"109":2,"117":1,"122":1,"123":1,"125":5,"126":1,"127":1,"128":1,"129":4,"130":1,"131":1,"132":1,"140":2,"141":2,"142":2,"143":2,"145":2,"146":2,"147":2,"148":2,"149":2,"150":2,"151":1,"156":2,"158":2,"160":1,"162":1,"164":1,"177":1,"181":1,"185":2,"189":11,"190":2,"201":1,"210":1,"244":3,"245":2,"246":1,"247":1,"248":1,"249":4,"252":3,"254":1,"255":1,"256":4,"259":3,"292":3,"296":1}}],["search",{"2":{"319":1,"320":1}}],["service",{"0":{"263":2},"2":{"256":1,"308":1}}],["server",{"2":{"15":1}}],["sep",{"2":{"247":3}}],["session",{"0":{"189":2,"211":1},"2":{"189":8,"190":5,"211":1}}],["sequence",{"0":{"66":1},"2":{"66":3}}],["send",{"0":{"88":1,"118":1},"2":{"25":2,"44":2,"87":2,"88":4,"97":1,"99":1,"100":1,"104":1,"105":1,"117":1,"118":1,"126":1,"127":1,"128":1,"129":1,"130":1,"133":1,"140":1,"143":1,"190":1,"296":3,"317":1}}],["set",{"0":{"97":1,"98":1,"103":1,"126":1,"141":1,"255":1},"2":{"21":1,"23":1,"28":1,"40":1,"42":1,"47":1,"87":1,"97":2,"98":2,"102":1,"103":3,"126":2,"140":1,"141":3,"255":2,"290":1,"299":1,"317":2,"318":1,"321":2}}],["self",{"0":{"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"87":1,"88":1,"89":1,"90":1,"91":1,"109":1,"113":1,"114":1,"117":1,"118":1,"119":1,"120":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"133":1,"156":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"172":1,"173":1,"174":1,"175":1,"176":1,"189":1,"190":1,"194":1,"195":1,"196":1,"205":1,"206":1,"207":1,"208":1,"276":1},"2":{"21":14,"22":2,"23":3,"24":4,"25":2,"26":2,"27":1,"28":3,"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"40":14,"41":2,"42":3,"43":4,"44":2,"45":2,"46":1,"47":3,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"65":8,"67":2,"68":2,"69":2,"70":2,"71":2,"72":2,"73":3,"74":3,"75":3,"76":3,"77":3,"78":3,"87":14,"88":6,"89":3,"90":2,"91":3,"109":3,"113":2,"114":2,"117":5,"118":1,"119":1,"120":1,"125":7,"126":3,"127":3,"128":4,"129":3,"130":2,"131":1,"133":4,"156":6,"158":4,"159":3,"160":2,"161":2,"162":3,"163":3,"164":3,"172":1,"173":2,"174":2,"175":2,"176":2,"189":10,"190":3,"194":5,"195":2,"196":3,"205":2,"206":2,"207":2,"208":3,"247":1,"248":1,"276":2}}],["safe",{"2":{"2":1,"146":1}}],["num为每页显示数量",{"2":{"319":2}}],["num",{"2":{"319":2}}],["npm",{"2":{"319":7,"320":1}}],["nliteyuki",{"2":{"301":1}}],["n```",{"2":{"248":2}}],["n```python",{"2":{"248":2}}],["n",{"2":{"248":52,"249":2}}],["name>",{"2":{"302":2}}],["name=module",{"2":{"254":3}}],["name=target",{"2":{"247":2}}],["name=class",{"2":{"247":1}}],["name=node",{"2":{"247":2}}],["name=f",{"2":{"160":2}}],["name=",{"2":{"92":1,"93":1,"94":1,"101":1,"102":1,"125":3,"308":1}}],["name",{"0":{"25":1,"44":1,"87":1,"97":1,"99":1,"109":1,"117":1,"160":1,"162":1,"164":1,"220":1,"228":1,"233":1,"250":1,"256":2,"268":1,"278":1,"280":1,"292":1},"2":{"25":7,"44":7,"87":12,"97":8,"98":2,"99":6,"103":3,"104":3,"109":3,"117":5,"159":2,"160":6,"161":1,"162":7,"163":2,"164":6,"247":11,"248":7,"249":2,"254":20,"255":9,"256":7,"276":1,"292":1,"296":2,"317":4,"319":8}}],["new",{"2":{"21":1,"40":1,"145":3,"290":1}}],["nodes",{"2":{"247":2}}],["node",{"2":{"247":42}}],["node等进程",{"2":{"15":1}}],["normal",{"0":{"247":1},"2":{"247":1,"249":1}}],["normal>",{"2":{"186":1}}],["nonlocal",{"2":{"170":1}}],["nonedog",{"2":{"308":1}}],["none",{"0":{"21":1,"25":1,"36":1,"37":1,"40":1,"44":1,"55":1,"56":1,"65":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"87":1,"91":1,"113":1,"126":1,"127":1,"128":1,"130":1,"136":1,"160":1,"177":1,"189":2,"196":1,"230":1,"248":1,"249":1,"281":1},"2":{"21":1,"25":3,"35":1,"36":2,"37":2,"40":1,"44":3,"54":1,"55":2,"56":2,"65":1,"66":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"87":3,"88":1,"90":1,"91":3,"113":1,"117":2,"126":1,"128":1,"130":1,"135":2,"146":1,"147":1,"148":1,"160":1,"168":1,"170":1,"177":1,"189":1,"196":1,"203":2,"208":1,"247":3,"249":1,"254":4,"255":1,"289":1}}],["nonebot2提供的框架支持",{"2":{"10":1}}],["nonebot",{"2":{"2":1,"10":1,"288":1,"296":3,"308":1,"309":4,"312":1}}],["nonebot机器人的配置",{"2":{"1":1}}],["no",{"0":{"149":1,"150":1,"151":1,"220":1,"221":1,"222":1,"223":1,"225":1,"226":1,"228":1,"229":1,"233":1,"234":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"243":1,"250":1,"268":1,"278":1,"279":1,"280":1},"2":{"95":1,"96":1,"149":3,"150":3,"151":3,"247":3,"248":1,"249":2}}],["nohup",{"2":{"24":2,"43":2,"302":1,"303":1}}],["notimplementederror",{"2":{"172":1}}],["not",{"2":{"23":1,"25":1,"35":1,"42":1,"44":1,"54":1,"87":1,"88":2,"91":4,"97":1,"128":1,"131":3,"133":1,"146":1,"147":1,"148":1,"149":3,"150":3,"162":2,"164":2,"177":2,"196":1,"245":1,"247":8,"254":1,"255":8,"309":2}}],["ntqq的onebot插件",{"2":{"8":1}}],["nickname",{"2":{"1":1}}],["若不存在则返回空",{"2":{"317":1}}],["若不存在则创建于config",{"2":{"317":1}}],["若存在则返回",{"2":{"317":1}}],["若存在则覆盖",{"2":{"317":1}}],["若存在则会覆盖",{"2":{"317":1}}],["若你不希望提供这些信息",{"2":{"315":1}}],["若你修改了端口号请将20216",{"2":{"13":1}}],["若要戳20s后停止",{"2":{"303":1}}],["若要接收外部请求请填写0",{"2":{"1":1}}],["若函数中启动了其他task",{"2":{"302":1}}],["若有子进程订阅则推送给子进程",{"2":{"133":2}}],["若有困难请联系对应开发者而不是liteyuki的开发者",{"2":{"9":1}}],["若为空",{"2":{"87":2}}],["若没有metadata",{"2":{"314":1}}],["若没有",{"2":{"1":1}}],["14s",{"2":{"325":2}}],["1h",{"2":{"325":2}}],["1d",{"2":{"325":2}}],["1145141919810",{"2":{"317":1}}],["11",{"2":{"284":1,"286":1}}],["19",{"2":{"187":1,"191":1,"192":1,"197":1,"198":1,"202":1,"211":1,"212":1}}],["1919810",{"2":{"1":1}}],["18",{"2":{"180":1}}],["12",{"2":{"154":1,"184":1}}],["127",{"2":{"1":1,"3":1}}],["10",{"2":{"18":1,"183":1,"317":1}}],["10+",{"2":{"12":1,"15":1}}],["1",{"2":{"1":1,"2":1,"3":2,"24":2,"25":2,"43":2,"44":2,"91":1,"103":2,"104":2,"105":1,"133":2,"140":3,"141":2,"142":1,"143":1,"144":1,"145":3,"171":1,"172":1,"248":6,"249":1,"254":4,"292":2,"308":1,"314":2}}],["03",{"2":{"296":2}}],["0000",{"2":{"296":3}}],["00",{"2":{"296":18}}],["02",{"2":{"260":1,"284":1,"286":1}}],["04",{"2":{"180":1}}],["04+",{"2":{"15":1}}],["0",{"0":{"24":1,"43":1,"200":1,"201":1},"2":{"1":5,"3":4,"21":1,"23":1,"24":3,"40":1,"42":1,"43":3,"65":1,"102":1,"103":2,"104":2,"105":1,"133":1,"139":2,"140":2,"141":2,"142":2,"143":1,"194":2,"247":1,"248":7,"303":1,"308":2,"314":2}}],["请阅读插件主页的说明",{"2":{"320":1}}],["请确保您所编写的html代码能被bot解析",{"2":{"313":1}}],["请注意",{"2":{"313":1}}],["请不要将需要动态加载的内容写入配置文件",{"2":{"144":1}}],["请联系插件作者或在安全模式safe",{"2":{"6":1}}],["请先查阅插件文档",{"2":{"6":1}}],["请正确安装git",{"2":{"6":1}}],["请检查配置文件的command",{"2":{"6":1}}],["请使用path",{"2":{"15":1}}],["请使用",{"2":{"6":1}}],["请在此填写相同的值",{"2":{"3":1}}],["请开启alconna",{"2":{"1":1}}],["请尽快迁移",{"2":{"1":1}}],["空命令头",{"2":{"1":1}}],["指令前缀",{"2":{"1":1}}],["轻雪天气liteyuki",{"0":{"323":1},"1":{"324":1}}],["轻雪文档",{"2":{"318":1}}],["轻雪命令liteyuki",{"0":{"317":1},"1":{"318":1}}],["轻雪会收集以下内容",{"2":{"315":1}}],["轻雪会自动合并这些配置文件",{"2":{"0":1}}],["轻雪原版资源包请查看liteyukibot",{"2":{"313":1}}],["轻雪主进程不涉及聊天部分",{"2":{"309":1}}],["轻雪函数",{"0":{"300":1},"1":{"301":1,"302":1,"303":1,"304":1,"305":1},"2":{"300":1}}],["轻雪框架提供了一个内存共享通信的接口",{"2":{"298":1}}],["轻雪提供了一个通道channel用于跨进程通信",{"2":{"295":1}}],["轻雪运行在主进程",{"2":{"295":1}}],["轻雪抽象消息事件",{"2":{"189":2}}],["轻雪生命周期管理",{"2":{"65":2}}],["轻雪实例",{"2":{"35":2,"54":2}}],["轻雪的更新功能依赖git",{"2":{"15":1}}],["轻雪使用git进行版本管理",{"2":{"12":1}}],["轻雪不局限于onebot适配器",{"2":{"4":1}}],["轻雪调试",{"2":{"2":1}}],["轻雪插件是轻雪内置的一部分功能",{"2":{"306":1}}],["轻雪插件目录列表",{"2":{"1":1}}],["轻雪插件列表",{"2":{"1":1}}],["轻雪支持yaml",{"2":{"0":1}}],["y",{"2":{"256":1}}],["y>",{"2":{"256":1}}],["y>name",{"2":{"256":1}}],["your",{"2":{"254":4}}],["yellow>",{"2":{"186":1}}],["yunzai",{"2":{"8":1}}],["yamlweather",{"2":{"323":1}}],["yamlname",{"2":{"314":1}}],["yamlnonebot",{"2":{"1":1}}],["yaml",{"0":{"146":1},"2":{"0":1,"2":1,"146":5,"149":2,"151":1}}],["yml格式的所有合法内容",{"2":{"317":1}}],["yml文件",{"2":{"314":1}}],["yml中填写一些信息",{"2":{"314":1}}],["yml",{"2":{"0":1,"149":1,"151":1,"314":2,"317":1}}],["yml和config目录",{"2":{"0":1}}],["你在a包中定义了一个index",{"2":{"314":1}}],["你自己制作的资源包也应该遵循这个规则",{"2":{"314":1}}],["你也可以自己制作资源包",{"2":{"313":1}}],["你的插件代码",{"2":{"308":1}}],["你应该使用其他储存方式",{"2":{"144":1}}],["你将无法使用更新功能",{"2":{"15":1}}],["你需要使用onebot标准的实现端来连接到轻雪并将消息上报给轻雪",{"2":{"6":1}}],["你有这个问题说明你不是很了解这个项目",{"2":{"6":1}}],["你可以选择开启auto",{"2":{"315":1}}],["你可以自由使用",{"2":{"315":1}}],["你可以自定义一些信息",{"2":{"314":1}}],["你可以在多个线程中读写共享内存",{"2":{"298":1}}],["你可以通过storage模块实现内存共享通信",{"2":{"298":1}}],["你可以通过channel发送消息给其他进程",{"2":{"295":1}}],["你可以使用python",{"2":{"12":1}}],["你可以使用nonebot2支持的任何适配器或使用轻雪讯息传递插件",{"2":{"4":1}}],["你可在此自定义生成的markdown格式",{"2":{"248":2}}],["你可在config目录下创建多个配置文件",{"2":{"0":1}}],["你可修改配置项后重启轻雪",{"2":{"0":1}}],["你只需要修改superusers及nickname字段即可",{"2":{"0":1}}],["绝大多数情况下",{"2":{"0":1}}],["取决于你个人的喜好",{"2":{"0":1}}],["配置项",{"2":{"323":1}}],["配置项目",{"2":{"145":2}}],["配置了命令别名的命令可以使用别名代替原命令",{"2":{"316":1}}],["配置文件尽量扁平化",{"2":{"144":1}}],["配置值",{"2":{"36":2,"37":2,"55":2,"56":2}}],["配置键",{"2":{"36":2,"37":2,"55":2,"56":2}}],["配置",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1},"2":{"21":3,"40":3,"318":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/VPLocalSearchBox.CLGH5rWG.js b/assets/chunks/VPLocalSearchBox.DIjojvyn.js similarity index 99% rename from assets/chunks/VPLocalSearchBox.CLGH5rWG.js rename to assets/chunks/VPLocalSearchBox.DIjojvyn.js index eb0efc17..73aa88d3 100644 --- a/assets/chunks/VPLocalSearchBox.CLGH5rWG.js +++ b/assets/chunks/VPLocalSearchBox.DIjojvyn.js @@ -1,4 +1,4 @@ -var Ot=Object.defineProperty;var Rt=(a,e,t)=>e in a?Ot(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ce=(a,e,t)=>Rt(a,typeof e!="symbol"?e+"":e,t);import{X as et,s as ne,h as ve,aj as tt,ak as Ct,al as Mt,v as je,am as At,d as Lt,G as ye,an as st,ao as Dt,ap as zt,x as Pt,aq as Vt,y as Me,R as de,Q as we,ar as jt,as as $t,Y as Bt,U as Wt,a1 as Kt,o as Q,b as Jt,j as x,a2 as Ut,k as D,at as qt,au as Gt,av as Qt,c as Z,n as nt,e as _e,E as it,F as rt,a as he,t as fe,aw as Ht,p as Yt,l as Zt,ax as at,ay as Xt,a8 as es,ae as ts,az as ss,_ as ns}from"./framework.C3o_UkTa.js";import{u as is,c as rs}from"./theme.rDkprPqD.js";const as={en:()=>et(()=>import("./@localSearchIndexen.CgaiBpBo.js"),[]),root:()=>et(()=>import("./@localSearchIndexroot.ButuspH0.js"),[])};/*! +var Ot=Object.defineProperty;var Rt=(a,e,t)=>e in a?Ot(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ce=(a,e,t)=>Rt(a,typeof e!="symbol"?e+"":e,t);import{X as et,s as ne,h as ve,aj as tt,ak as Ct,al as Mt,v as je,am as At,d as Lt,G as ye,an as st,ao as Dt,ap as zt,x as Pt,aq as Vt,y as Me,R as de,Q as we,ar as jt,as as $t,Y as Bt,U as Wt,a1 as Kt,o as Q,b as Jt,j as x,a2 as Ut,k as D,at as qt,au as Gt,av as Qt,c as Z,n as nt,e as _e,E as it,F as rt,a as he,t as fe,aw as Ht,p as Yt,l as Zt,ax as at,ay as Xt,a8 as es,ae as ts,az as ss,_ as ns}from"./framework.C3o_UkTa.js";import{u as is,c as rs}from"./theme.Cfwe0ZOB.js";const as={en:()=>et(()=>import("./@localSearchIndexen.CmG7uZBz.js"),[]),root:()=>et(()=>import("./@localSearchIndexroot.s-V1IxJz.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var gt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ie=gt.join(","),bt=typeof Element>"u",re=bt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!bt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},ke=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},os=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},yt=function(e,t,s){if(ke(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ie));return t&&re.call(e,Ie)&&n.unshift(e),n=n.filter(s),n},wt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!ke(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),c=o.length?o:i.children,l=a(c,!0,s);s.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=re.call(i,Ie);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var v=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),f=!ke(v,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(v&&f){var b=a(v===!0?i.children:v.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},_t=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ie=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||os(e))&&!_t(e)?0:e.tabIndex},cs=function(e,t){var s=ie(e);return s<0&&t&&!_t(e)?0:s},ls=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},us=function(e){return xt(e)&&e.type==="hidden"},ds=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},hs=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(re.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var c=e.parentElement,l=Ne(e);if(c&&!c.shadowRoot&&n(c)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!c&&l!==e.ownerDocument?e=l.host:e=c}e=o}if(ms(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return ot(e);return!1},bs=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},ws=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,c=cs(o,i),l=i?a(n.candidates):o;c===0?i?t.push.apply(t,l):t.push(o):s.push({documentOrder:r,tabIndex:c,item:n,isScope:i,content:l})}),s.sort(ls).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},_s=function(e,t){t=t||{};var s;return t.getShadowRoot?s=wt([e],t.includeContainer,{filter:$e.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:ys}):s=yt(e,t.includeContainer,$e.bind(null,t)),ws(s)},xs=function(e,t){t=t||{};var s;return t.getShadowRoot?s=wt([e],t.includeContainer,{filter:Fe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=yt(e,t.includeContainer,Fe.bind(null,t)),s},ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,Ie)===!1?!1:$e(t,e)},Ss=gt.concat("iframe").join(","),Ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,Ss)===!1?!1:Fe(t,e)};/*! diff --git a/assets/chunks/theme.rDkprPqD.js b/assets/chunks/theme.Cfwe0ZOB.js similarity index 99% rename from assets/chunks/theme.rDkprPqD.js rename to assets/chunks/theme.Cfwe0ZOB.js index 474e1378..0cb921b5 100644 --- a/assets/chunks/theme.rDkprPqD.js +++ b/assets/chunks/theme.Cfwe0ZOB.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.CLGH5rWG.js","assets/chunks/framework.C3o_UkTa.js"])))=>i.map(i=>d[i]); -import{d as _,o as a,c,r as l,n as N,a as O,t as I,b as k,w as d,e as f,T as ve,_ as $,u as Ge,i as Ue,f as je,g as pe,h as y,j as v,k as r,p as C,l as H,m as K,q as ie,s as w,v as G,x as Z,y as W,z as he,A as fe,B as ze,C as qe,D as R,F as M,E,G as Pe,H as x,I as m,J as F,K as Ve,L as ee,M as q,N as te,O as Ke,P as Le,Q as le,R as We,S as Se,U as oe,V as Re,W as Je,X as Xe,Y as Te,Z as Ie,$ as Ye,a0 as Qe,a1 as Ze,a2 as xe,a3 as et}from"./framework.C3o_UkTa.js";const tt=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:N(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[O(I(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},nt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),k(ve,{name:"fade"},{default:d(()=>[e.show?(a(),c("div",ot)):f("",!0)]),_:1}))}}),st=$(nt,[["__scopeId","data-v-2cfdfdcf"]]),P=Ge;function at(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function ce(o){return/^\//.test(o)?o:`/${o}`}function _e(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(Ue(o)||o.startsWith("#")||!n.startsWith("http")||!je(e))return o;const{site:i}=P(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return pe(u)}function X({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:i}=P(),u=y(()=>{var p,g;return{label:(p=e.value.locales[t.value])==null?void 0:p.label,link:((g=e.value.locales[t.value])==null?void 0:g.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([p,g])=>u.value.label===g.label?[]:{text:g.label,link:rt(g.link||(p==="root"?"/":`/${p}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(u.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:u}}function rt(o,e,t,s){return e?o.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const it=o=>(C("data-v-868b40d9"),o=o(),H(),o),lt={class:"NotFound"},ct={class:"code"},ut={class:"title"},dt=it(()=>v("div",{class:"divider"},null,-1)),vt={class:"quote"},pt={class:"action"},ht=["href","aria-label"],ft=_({__name:"NotFound",setup(o){const{theme:e}=P(),{currentLang:t}=X();return(s,n)=>{var i,u,h,p,g;return a(),c("div",lt,[v("p",ct,I(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),v("h1",ut,I(((u=r(e).notFound)==null?void 0:u.title)??"PAGE NOT FOUND"),1),dt,v("blockquote",vt,I(((h=r(e).notFound)==null?void 0:h.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",pt,[v("a",{class:"link",href:r(pe)(r(t).link),"aria-label":((p=r(e).notFound)==null?void 0:p.linkLabel)??"go to home"},I(((g=r(e).notFound)==null?void 0:g.linkText)??"Take me home"),9,ht)])])}}}),_t=$(ft,[["__scopeId","data-v-868b40d9"]]);function we(o,e){if(Array.isArray(o))return Y(o);if(o==null)return[];e=ce(e);const t=Object.keys(o).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(ce(n))),s=t?o[t]:[];return Array.isArray(s)?Y(s):Y(s.items,s.base)}function mt(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function kt(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ue(o,e){return Array.isArray(e)?e.some(t=>ue(o,t)):K(o,e.link)?!0:e.items?ue(o,e.items):!1}function Y(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=Y(s.items,n)),s})}function U(){const{frontmatter:o,page:e,theme:t}=P(),s=ie("(min-width: 960px)"),n=w(!1),i=y(()=>{const B=t.value.sidebar,S=e.value.relativePath;return B?we(B,S):[]}),u=w(i.value);G(i,(B,S)=>{JSON.stringify(B)!==JSON.stringify(S)&&(u.value=i.value)});const h=y(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),p=y(()=>g?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),g=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),L=y(()=>h.value&&s.value),b=y(()=>h.value?mt(u.value):[]);function V(){n.value=!0}function T(){n.value=!1}function A(){n.value?T():V()}return{isOpen:n,sidebar:u,sidebarGroups:b,hasSidebar:h,hasAside:g,leftAside:p,isSidebarEnabled:L,open:V,close:T,toggle:A}}function bt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),W(()=>{window.addEventListener("keyup",s)}),he(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function $t(o){const{page:e,hash:t}=P(),s=w(!1),n=y(()=>o.value.collapsed!=null),i=y(()=>!!o.value.link),u=w(!1),h=()=>{u.value=K(e.value.relativePath,o.value.link)};G([e,o,t],h),W(h);const p=y(()=>u.value?!0:o.value.items?ue(e.value.relativePath,o.value.items):!1),g=y(()=>!!(o.value.items&&o.value.items.length));Z(()=>{s.value=!!(n.value&&o.value.collapsed)}),fe(()=>{(u.value||p.value)&&(s.value=!1)});function L(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:i,isActiveLink:u,hasActiveLink:p,hasChildren:g,toggle:L}}function gt(){const{hasSidebar:o}=U(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const de=[];function Ne(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function me(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:yt(t),link:"#"+t.id,level:s}});return Pt(e,o)}function yt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(u=>u.level>=s&&u.level<=n),de.length=0;for(const{element:u,link:h}of o)de.push({element:u,link:h});const i=[];e:for(let u=0;u=0;p--){const g=o[p];if(g.level{requestAnimationFrame(i),window.addEventListener("scroll",s)}),ze(()=>{u(location.hash)}),he(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const h=window.scrollY,p=window.innerHeight,g=document.body.offsetHeight,L=Math.abs(h+p-g)<1,b=de.map(({element:T,link:A})=>({link:A,top:Lt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,A)=>T.top-A.top);if(!b.length){u(null);return}if(h<1){u(null);return}if(L){u(b[b.length-1].link);return}let V=null;for(const{link:T,top:A}of b){if(A>h+qe()+4)break;V=T}u(V)}function u(h){n&&n.classList.remove("active"),h==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const p=n;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Lt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const St=["href","title"],Tt=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const s=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(s));n==null||n.focus({preventScroll:!0})}return(t,s)=>{const n=R("VPDocOutlineItem",!0);return a(),c("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(M,null,E(t.headers,({children:i,link:u,title:h})=>(a(),c("li",null,[v("a",{class:"outline-link",href:u,onClick:e,title:h},I(h),9,St),i!=null&&i.length?(a(),k(n,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Me=$(Tt,[["__scopeId","data-v-75b86f7a"]]),It={class:"content"},wt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Nt=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=P(),s=Pe([]);x(()=>{s.value=me(e.value.outline??t.value.outline)});const n=w(),i=w();return Vt(n,i),(u,h)=>(a(),c("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[v("div",It,[v("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),v("div",wt,I(r(Ne)(r(t))),1),m(Me,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),Mt=$(Nt,[["__scopeId","data-v-be1126ba"]]),At={class:"VPDocAsideCarbonAds"},Bt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),c("div",At,[m(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ct=o=>(C("data-v-65ef6f81"),o=o(),H(),o),Ht={class:"VPDocAside"},Et=Ct(()=>v("div",{class:"spacer"},null,-1)),Ft=_({__name:"VPDocAside",setup(o){const{theme:e}=P();return(t,s)=>(a(),c("div",Ht,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),m(Mt),l(t.$slots,"aside-outline-after",{},void 0,!0),Et,l(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),k(Bt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Dt=$(Ft,[["__scopeId","data-v-65ef6f81"]]);function Ot(){const{theme:o,page:e}=P();return y(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Gt(){const{page:o,theme:e,frontmatter:t}=P();return y(()=>{var g,L,b,V,T,A,B,S;const s=we(e.value.sidebar,o.value.relativePath),n=kt(s),i=Ut(n,j=>j.link.replace(/[?#].*$/,"")),u=i.findIndex(j=>K(o.value.relativePath,j.link)),h=((g=e.value.docFooter)==null?void 0:g.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((b=i[u-1])==null?void 0:b.docFooterText)??((V=i[u-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((T=i[u-1])==null?void 0:T.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[u+1])==null?void 0:A.docFooterText)??((B=i[u+1])==null?void 0:B.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[u+1])==null?void 0:S.link)}}})}function Ut(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const D=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Ve.test(e.href)||e.target==="_blank");return(n,i)=>(a(),k(F(t.value),{class:N(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?r(_e)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:d(()=>[l(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),jt={class:"VPLastUpdated"},zt=["datetime"],qt=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=P(),n=y(()=>new Date(t.value.lastUpdated)),i=y(()=>n.value.toISOString()),u=w("");return W(()=>{Z(()=>{var h,p,g;u.value=new Intl.DateTimeFormat((p=(h=e.value.lastUpdated)==null?void 0:h.formatOptions)!=null&&p.forceLocale?s.value:void 0,((g=e.value.lastUpdated)==null?void 0:g.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(h,p)=>{var g;return a(),c("p",jt,[O(I(((g=r(e).lastUpdated)==null?void 0:g.text)||r(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:i.value},I(u.value),9,zt)])}}}),Kt=$(qt,[["__scopeId","data-v-243e2690"]]),Ae=o=>(C("data-v-e27a0cf7"),o=o(),H(),o),Wt={key:0,class:"VPDocFooter"},Rt={key:0,class:"edit-info"},Jt={key:0,class:"edit-link"},Xt=Ae(()=>v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Yt={key:1,class:"last-updated"},Qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Zt=Ae(()=>v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),xt={class:"pager"},eo=["innerHTML"],to=["innerHTML"],oo={class:"pager"},no=["innerHTML"],so=["innerHTML"],ao=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=P(),n=Ot(),i=Gt(),u=y(()=>e.value.editLink&&s.value.editLink!==!1),h=y(()=>t.value.lastUpdated),p=y(()=>u.value||h.value||i.value.prev||i.value.next);return(g,L)=>{var b,V,T,A;return p.value?(a(),c("footer",Wt,[l(g.$slots,"doc-footer-before",{},void 0,!0),u.value||h.value?(a(),c("div",Rt,[u.value?(a(),c("div",Jt,[m(D,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:d(()=>[Xt,O(" "+I(r(n).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),c("div",Yt,[m(Kt)])):f("",!0)])):f("",!0),(b=r(i).prev)!=null&&b.link||(V=r(i).next)!=null&&V.link?(a(),c("nav",Qt,[Zt,v("div",xt,[(T=r(i).prev)!=null&&T.link?(a(),k(D,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:d(()=>{var B;return[v("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.prev)||"Previous page"},null,8,eo),v("span",{class:"title",innerHTML:r(i).prev.text},null,8,to)]}),_:1},8,["href"])):f("",!0)]),v("div",oo,[(A=r(i).next)!=null&&A.link?(a(),k(D,{key:0,class:"pager-link next",href:r(i).next.link},{default:d(()=>{var B;return[v("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.next)||"Next page"},null,8,no),v("span",{class:"title",innerHTML:r(i).next.text},null,8,so)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),ro=$(ao,[["__scopeId","data-v-e27a0cf7"]]),io=o=>(C("data-v-4981c415"),o=o(),H(),o),lo={class:"container"},co=io(()=>v("div",{class:"aside-curtain"},null,-1)),uo={class:"aside-container"},vo={class:"aside-content"},po={class:"content"},ho={class:"content-container"},fo={class:"main"},_o=_({__name:"VPDoc",setup(o){const{theme:e}=P(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:i}=U(),u=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,p)=>{const g=R("Content");return a(),c("div",{class:N(["VPDoc",{"has-sidebar":r(s),"has-aside":r(n)}])},[l(h.$slots,"doc-top",{},void 0,!0),v("div",lo,[r(n)?(a(),c("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[co,v("div",uo,[v("div",vo,[m(Dt,null,{"aside-top":d(()=>[l(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),v("div",po,[v("div",ho,[l(h.$slots,"doc-before",{},void 0,!0),v("main",fo,[m(g,{class:N(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(ro,null,{"doc-footer-before":d(()=>[l(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(h.$slots,"doc-after",{},void 0,!0)])])]),l(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),mo=$(_o,[["__scopeId","data-v-4981c415"]]),ko=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Ve.test(e.href)),s=y(()=>e.tag||e.href?"a":"button");return(n,i)=>(a(),k(F(s.value),{class:N(["VPButton",[n.size,n.theme]]),href:n.href?r(_e)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:d(()=>[O(I(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),bo=$(ko,[["__scopeId","data-v-5208c6a8"]]),$o=["src","alt"],go=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=R("VPImage",!0);return e.image?(a(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",q({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(pe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,$o)):(a(),c(M,{key:1},[m(s,q({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(s,q({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),Q=$(go,[["__scopeId","data-v-6e911b93"]]),yo=o=>(C("data-v-4963d475"),o=o(),H(),o),Po={class:"container"},Vo={class:"main"},Lo={key:0,class:"name"},So=["innerHTML"],To=["innerHTML"],Io=["innerHTML"],wo={key:0,class:"actions"},No={key:0,class:"image"},Mo={class:"image-container"},Ao=yo(()=>v("div",{class:"image-bg"},null,-1)),Bo=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=te("hero-image-slot-exists");return(t,s)=>(a(),c("div",{class:N(["VPHero",{"has-image":t.image||r(e)}])},[v("div",Po,[v("div",Vo,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",Lo,[v("span",{innerHTML:t.name,class:"clip"},null,8,So)])):f("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,To)):f("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Io)):f("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",wo,[(a(!0),c(M,null,E(t.actions,n=>(a(),c("div",{key:n.link,class:"action"},[m(bo,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),c("div",No,[v("div",Mo,[Ao,l(t.$slots,"home-hero-image",{},()=>[t.image?(a(),k(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Co=$(Bo,[["__scopeId","data-v-4963d475"]]),Ho=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=P();return(t,s)=>r(e).hero?(a(),k(Co,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Eo=o=>(C("data-v-c6ed09d2"),o=o(),H(),o),Fo={class:"box"},Do={key:0,class:"icon"},Oo=["innerHTML"],Go=["innerHTML"],Uo=["innerHTML"],jo={key:4,class:"link-text"},zo={class:"link-text-value"},qo=Eo(()=>v("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),Ko=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),k(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:d(()=>[v("article",Fo,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",Do,[m(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),k(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Oo)):f("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,Go),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,Uo)):f("",!0),e.linkText?(a(),c("div",jo,[v("p",zo,[O(I(e.linkText)+" ",1),qo])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Wo=$(Ko,[["__scopeId","data-v-c6ed09d2"]]),Ro={key:0,class:"VPFeatures"},Jo={class:"container"},Xo={class:"items"},Yo=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),c("div",Ro,[v("div",Jo,[v("div",Xo,[(a(!0),c(M,null,E(s.features,i=>(a(),c("div",{key:i.title,class:N(["item",[t.value]])},[m(Wo,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),Qo=$(Yo,[["__scopeId","data-v-c56833f4"]]),Zo=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=P();return(t,s)=>r(e).features?(a(),k(Qo,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),xo=_({__name:"VPHomeContent",setup(o){const{width:e}=Ke({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),c("div",{class:"vp-doc container",style:Le(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),en=$(xo,[["__scopeId","data-v-2763ee34"]]),tn={class:"VPHome"},on=_({__name:"VPHome",setup(o){const{frontmatter:e}=P();return(t,s)=>{const n=R("Content");return a(),c("div",tn,[l(t.$slots,"home-hero-before",{},void 0,!0),m(Ho,null,{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),m(Zo),l(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),k(en,{key:0},{default:d(()=>[m(n)]),_:1})):(a(),k(n,{key:1}))])}}}),nn=$(on,[["__scopeId","data-v-ceddc1ed"]]),sn={},an={class:"VPPage"};function rn(o,e){const t=R("Content");return a(),c("div",an,[l(o.$slots,"page-top"),m(t),l(o.$slots,"page-bottom")])}const ln=$(sn,[["render",rn]]),cn=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=P(),{hasSidebar:s}=U();return(n,i)=>(a(),c("div",{class:N(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?l(n.$slots,"not-found",{key:0},()=>[m(_t)],!0):r(t).layout==="page"?(a(),k(ln,{key:1},{"page-top":d(()=>[l(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),k(nn,{key:2},{"home-hero-before":d(()=>[l(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),k(F(r(t).layout),{key:3})):(a(),k(mo,{key:4},{"doc-top":d(()=>[l(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":d(()=>[l(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":d(()=>[l(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":d(()=>[l(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":d(()=>[l(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),un=$(cn,[["__scopeId","data-v-4e31bbd2"]]),dn={class:"container"},vn=["innerHTML"],pn=["innerHTML"],hn=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=P(),{hasSidebar:s}=U();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),c("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(s)}])},[v("div",dn,[r(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,vn)):f("",!0),r(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,pn)):f("",!0)])],2)):f("",!0)}}),fn=$(hn,[["__scopeId","data-v-098a46ae"]]);function _n(){const{theme:o,frontmatter:e}=P(),t=Pe([]),s=y(()=>t.value.length>0);return x(()=>{t.value=me(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const mn=o=>(C("data-v-5e8cf508"),o=o(),H(),o),kn={class:"menu-text"},bn=mn(()=>v("span",{class:"vpi-chevron-right icon"},null,-1)),$n={class:"header"},gn={class:"outline"},yn=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=P(),s=w(!1),n=w(0),i=w(),u=w();function h(b){var V;(V=i.value)!=null&&V.contains(b.target)||(s.value=!1)}G(s,b=>{if(b){document.addEventListener("click",h);return}document.removeEventListener("click",h)}),le("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function p(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function g(b){b.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),We(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,V)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:Le({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[b.headers.length>0?(a(),c("button",{key:0,onClick:p,class:N({open:s.value})},[v("span",kn,I(r(Ne)(r(t))),1),bn],2)):(a(),c("button",{key:1,onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)),m(ve,{name:"flyout"},{default:d(()=>[s.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:g},[v("div",$n,[v("a",{class:"top-link",href:"#",onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)]),v("div",gn,[m(Me,{headers:b.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),Pn=$(yn,[["__scopeId","data-v-5e8cf508"]]),Vn=o=>(C("data-v-b8036a12"),o=o(),H(),o),Ln={class:"container"},Sn=["aria-expanded"],Tn=Vn(()=>v("span",{class:"vpi-align-left menu-icon"},null,-1)),In={class:"menu-text"},wn=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=P(),{hasSidebar:s}=U(),{headers:n}=_n(),{y:i}=Se(),u=w(0);W(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=me(t.value.outline??e.value.outline)});const h=y(()=>n.value.length===0),p=y(()=>h.value&&!s.value),g=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:h.value,fixed:p.value}));return(L,b)=>r(t).layout!=="home"&&(!p.value||r(i)>=u.value)?(a(),c("div",{key:0,class:N(g.value)},[v("div",Ln,[r(s)?(a(),c("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=V=>L.$emit("open-menu"))},[Tn,v("span",In,I(r(e).sidebarMenuLabel||"Menu"),1)],8,Sn)):f("",!0),m(Pn,{headers:r(n),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Nn=$(wn,[["__scopeId","data-v-b8036a12"]]);function Mn(){const o=w(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=ee();return G(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const An={},Bn={class:"VPSwitch",type:"button",role:"switch"},Cn={class:"check"},Hn={key:0,class:"icon"};function En(o,e){return a(),c("button",Bn,[v("span",Cn,[o.$slots.default?(a(),c("span",Hn,[l(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Fn=$(An,[["render",En],["__scopeId","data-v-b19619af"]]),Be=o=>(C("data-v-0f382965"),o=o(),H(),o),Dn=Be(()=>v("span",{class:"vpi-sun sun"},null,-1)),On=Be(()=>v("span",{class:"vpi-moon moon"},null,-1)),Gn=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=P(),s=te("toggle-appearance",()=>{e.value=!e.value}),n=w("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,u)=>(a(),k(Fn,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:d(()=>[Dn,On]),_:1},8,["title","aria-checked","onClick"]))}}),ke=$(Gn,[["__scopeId","data-v-0f382965"]]),Un={key:0,class:"VPNavBarAppearance"},jn=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=P();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),c("div",Un,[m(ke)])):f("",!0)}}),zn=$(jn,[["__scopeId","data-v-0a1958c9"]]),be=w();let Ce=!1,re=0;function qn(o){const e=w(!1);if(oe){!Ce&&Kn(),re++;const t=G(be,s=>{var n,i,u;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});he(()=>{t(),re--,re||Wn()})}return Re(e)}function Kn(){document.addEventListener("focusin",He),Ce=!0,be.value=document.activeElement}function Wn(){document.removeEventListener("focusin",He)}function He(){be.value=document.activeElement}const Rn={class:"VPMenuLink"},Jn=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=P();return(t,s)=>(a(),c("div",Rn,[m(D,{class:N({active:r(K)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:d(()=>[O(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),ne=$(Jn,[["__scopeId","data-v-19363427"]]),Xn={class:"VPMenuGroup"},Yn={key:0,class:"title"},Qn=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Xn,[e.text?(a(),c("p",Yn,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,s=>(a(),c(M,null,["link"in s?(a(),k(ne,{key:0,item:s},null,8,["item"])):f("",!0)],64))),256))]))}}),Zn=$(Qn,[["__scopeId","data-v-e815e7e2"]]),xn={class:"VPMenu"},es={key:0,class:"items"},ts=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",xn,[e.items?(a(),c("div",es,[(a(!0),c(M,null,E(e.items,s=>(a(),c(M,{key:JSON.stringify(s)},["link"in s?(a(),k(ne,{key:0,item:s},null,8,["item"])):"component"in s?(a(),k(F(s.component),q({key:1,ref_for:!0},s.props),null,16)):(a(),k(Zn,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):f("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),os=$(ts,[["__scopeId","data-v-0e22c6c5"]]),ns=o=>(C("data-v-12ec5ee2"),o=o(),H(),o),ss=["aria-expanded","aria-label"],as={key:0,class:"text"},rs=["innerHTML"],is=ns(()=>v("span",{class:"vpi-chevron-down text-icon"},null,-1)),ls={key:1,class:"vpi-more-horizontal icon"},cs={class:"menu"},us=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=w(!1),t=w();qn({el:t,onBlur:s});function s(){e.value=!1}return(n,i)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[n.button||n.icon?(a(),c("span",as,[n.icon?(a(),c("span",{key:0,class:N([n.icon,"option-icon"])},null,2)):f("",!0),n.button?(a(),c("span",{key:1,innerHTML:n.button},null,8,rs)):f("",!0),is])):(a(),c("span",ls))],8,ss),v("div",cs,[m(os,{items:n.items},{default:d(()=>[l(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=$(us,[["__scopeId","data-v-12ec5ee2"]]),ds=["href","aria-label","innerHTML"],vs=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,n)=>(a(),c("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,ds))}}),ps=$(vs,[["__scopeId","data-v-974e0aed"]]),hs={class:"VPSocialLinks"},fs=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",hs,[(a(!0),c(M,null,E(e.links,({link:s,icon:n,ariaLabel:i})=>(a(),k(ps,{key:s,icon:n,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),ge=$(fs,[["__scopeId","data-v-52782a78"]]),_s={key:0,class:"group translations"},ms={class:"trans-title"},ks={key:1,class:"group"},bs={class:"item appearance"},$s={class:"label"},gs={class:"appearance-action"},ys={key:2,class:"group"},Ps={class:"item social-links"},Vs=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=P(),{localeLinks:s,currentLang:n}=X({correspondingLink:!0}),i=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(u,h)=>i.value?(a(),k($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:d(()=>[r(s).length&&r(n).label?(a(),c("div",_s,[v("p",ms,I(r(n).label),1),(a(!0),c(M,null,E(r(s),p=>(a(),k(ne,{key:p.link,item:p},null,8,["item"]))),128))])):f("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),c("div",ks,[v("div",bs,[v("p",$s,I(r(t).darkModeSwitchLabel||"Appearance"),1),v("div",gs,[m(ke)])])])):f("",!0),r(t).socialLinks?(a(),c("div",ys,[v("div",Ps,[m(ge,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),Ls=$(Vs,[["__scopeId","data-v-c34ef5aa"]]),Ss=o=>(C("data-v-6a2ed68b"),o=o(),H(),o),Ts=["aria-expanded"],Is=Ss(()=>v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)),ws=[Is],Ns=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},ws,10,Ts))}}),Ms=$(Ns,[["__scopeId","data-v-6a2ed68b"]]),As=["innerHTML"],Bs=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=P();return(t,s)=>(a(),k(D,{class:N({VPNavBarMenuLink:!0,active:r(K)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:d(()=>[v("span",{innerHTML:t.item.text},null,8,As)]),_:1},8,["class","href","noIcon","target","rel"]))}}),Cs=$(Bs,[["__scopeId","data-v-c423e9f4"]]),Hs=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=P(),s=i=>"component"in i?!1:"link"in i?K(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),n=y(()=>s(e.item));return(i,u)=>(a(),k($e,{class:N({VPNavBarMenuGroup:!0,active:r(K)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Es=o=>(C("data-v-71183eee"),o=o(),H(),o),Fs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Ds=Es(()=>v("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),Os=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=P();return(t,s)=>r(e).nav?(a(),c("nav",Fs,[Ds,(a(!0),c(M,null,E(r(e).nav,n=>(a(),c(M,{key:JSON.stringify(n)},["link"in n?(a(),k(Cs,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(F(n.component),q({key:1,ref_for:!0},n.props),null,16)):(a(),k(Hs,{key:2,item:n},null,8,["item"]))],64))),128))])):f("",!0)}}),Gs=$(Os,[["__scopeId","data-v-71183eee"]]);function Us(o){const{localeIndex:e,theme:t}=P();function s(n){var A,B,S;const i=n.split("."),u=(A=t.value.search)==null?void 0:A.options,h=u&&typeof u=="object",p=h&&((S=(B=u.locales)==null?void 0:B[e.value])==null?void 0:S.translations)||null,g=h&&u.translations||null;let L=p,b=g,V=o;const T=i.pop();for(const j of i){let z=null;const J=V==null?void 0:V[j];J&&(z=V=J);const se=b==null?void 0:b[j];se&&(z=b=se);const ae=L==null?void 0:L[j];ae&&(z=L=ae),J||(V=z),se||(b=z),ae||(L=z)}return(L==null?void 0:L[T])??(b==null?void 0:b[T])??(V==null?void 0:V[T])??""}return s}const js=["aria-label"],zs={class:"DocSearch-Button-Container"},qs=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Ks={class:"DocSearch-Button-Placeholder"},Ws=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ye=_({__name:"VPNavBarSearchButton",setup(o){const t=Us({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[v("span",zs,[qs,v("span",Ks,I(r(t)("button.buttonText")),1)]),Ws],8,js))}}),Rs={class:"VPNavBarSearch"},Js={id:"local-search"},Xs={key:1,id:"docsearch"},Ys=_({__name:"VPNavBarSearch",setup(o){const e=Je(()=>Xe(()=>import("./VPLocalSearchBox.CLGH5rWG.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=P(),n=w(!1),i=w(!1);W(()=>{});function u(){n.value||(n.value=!0,setTimeout(h,16))}function h(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}function p(b){const V=b.target,T=V.tagName;return V.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const g=w(!1);le("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),g.value=!0)}),le("/",b=>{p(b)||(b.preventDefault(),g.value=!0)});const L="local";return(b,V)=>{var T;return a(),c("div",Rs,[r(L)==="local"?(a(),c(M,{key:0},[g.value?(a(),k(r(e),{key:0,onClose:V[0]||(V[0]=A=>g.value=!1)})):f("",!0),v("div",Js,[m(ye,{onClick:V[1]||(V[1]=A=>g.value=!0)})])],64)):r(L)==="algolia"?(a(),c(M,{key:1},[n.value?(a(),k(r(t),{key:0,algolia:((T=r(s).search)==null?void 0:T.options)??r(s).algolia,onVnodeBeforeMount:V[2]||(V[2]=A=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),c("div",Xs,[m(ye,{onClick:u})]))],64)):f("",!0)])}}}),Qs=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=P();return(t,s)=>r(e).socialLinks?(a(),k(ge,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Zs=$(Qs,[["__scopeId","data-v-edaebeb1"]]),xs=["href","rel","target"],ea={key:1},ta={key:2},oa=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=P(),{hasSidebar:s}=U(),{currentLang:n}=X(),i=y(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),u=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),h=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,g)=>(a(),c("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(s)}])},[v("a",{class:"title",href:i.value??r(_e)(r(n).link),rel:u.value,target:h.value},[l(p.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),k(Q,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),c("span",ea,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),c("span",ta,I(r(e).title),1)):f("",!0),l(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,xs)],2))}}),na=$(oa,[["__scopeId","data-v-de953605"]]),sa={class:"items"},aa={class:"title"},ra=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=P(),{localeLinks:t,currentLang:s}=X({correspondingLink:!0});return(n,i)=>r(t).length&&r(s).label?(a(),k($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:d(()=>[v("div",sa,[v("p",aa,I(r(s).label),1),(a(!0),c(M,null,E(r(t),u=>(a(),k(ne,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),ia=$(ra,[["__scopeId","data-v-d3047050"]]),la=o=>(C("data-v-37a6b570"),o=o(),H(),o),ca={class:"wrapper"},ua={class:"container"},da={class:"title"},va={class:"content"},pa={class:"content-body"},ha=la(()=>v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1)),fa=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=Se(),{hasSidebar:s}=U(),{frontmatter:n}=P(),i=w({});return fe(()=>{i.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(u,h)=>(a(),c("div",{class:N(["VPNavBar",i.value])},[v("div",ca,[v("div",ua,[v("div",da,[m(na,null,{"nav-bar-title-before":d(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",va,[v("div",pa,[l(u.$slots,"nav-bar-content-before",{},void 0,!0),m(Ys,{class:"search"}),m(Gs,{class:"menu"}),m(ia,{class:"translations"}),m(zn,{class:"appearance"}),m(Zs,{class:"social-links"}),m(Ls,{class:"extra"}),l(u.$slots,"nav-bar-content-after",{},void 0,!0),m(Ms,{class:"hamburger",active:u.isScreenOpen,onClick:h[0]||(h[0]=p=>u.$emit("toggle-screen"))},null,8,["active"])])])])]),ha],2))}}),_a=$(fa,[["__scopeId","data-v-37a6b570"]]),ma={key:0,class:"VPNavScreenAppearance"},ka={class:"text"},ba=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=P();return(s,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),c("div",ma,[v("p",ka,I(r(t).darkModeSwitchLabel||"Appearance"),1),m(ke)])):f("",!0)}}),$a=$(ba,[["__scopeId","data-v-beb3f918"]]),ga=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,s)=>(a(),k(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),ya=$(ga,[["__scopeId","data-v-6f3d2ab5"]]),Pa=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,s)=>(a(),k(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:d(()=>[O(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ee=$(Pa,[["__scopeId","data-v-eab7bfa1"]]),Va={class:"VPNavScreenMenuGroupSection"},La={key:0,class:"title"},Sa=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Va,[e.text?(a(),c("p",La,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,s=>(a(),k(Ee,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Ta=$(Sa,[["__scopeId","data-v-60ca4288"]]),Ia=o=>(C("data-v-9b54e8b4"),o=o(),H(),o),wa=["aria-controls","aria-expanded"],Na=["innerHTML"],Ma=Ia(()=>v("span",{class:"vpi-plus button-icon"},null,-1)),Aa=["id"],Ba={key:0,class:"item"},Ca={key:1,class:"item"},Ha={key:2,class:"group"},Ea=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=w(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,u)=>(a(),c("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[v("span",{class:"button-text",innerHTML:i.text},null,8,Na),Ma],8,wa),v("div",{id:s.value,class:"items"},[(a(!0),c(M,null,E(i.items,h=>(a(),c(M,{key:JSON.stringify(h)},["link"in h?(a(),c("div",Ba,[m(Ee,{item:h},null,8,["item"])])):"component"in h?(a(),c("div",Ca,[(a(),k(F(h.component),q({ref_for:!0},h.props,{"screen-menu":""}),null,16))])):(a(),c("div",Ha,[m(Ta,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Aa)],2))}}),Fa=$(Ea,[["__scopeId","data-v-9b54e8b4"]]),Da={key:0,class:"VPNavScreenMenu"},Oa=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=P();return(t,s)=>r(e).nav?(a(),c("nav",Da,[(a(!0),c(M,null,E(r(e).nav,n=>(a(),c(M,{key:JSON.stringify(n)},["link"in n?(a(),k(ya,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(F(n.component),q({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),k(Fa,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Ga=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=P();return(t,s)=>r(e).socialLinks?(a(),k(ge,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Fe=o=>(C("data-v-d9ff2423"),o=o(),H(),o),Ua=Fe(()=>v("span",{class:"vpi-languages icon lang"},null,-1)),ja=Fe(()=>v("span",{class:"vpi-chevron-down icon chevron"},null,-1)),za={class:"list"},qa=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=X({correspondingLink:!0}),s=w(!1);function n(){s.value=!s.value}return(i,u)=>r(e).length&&r(t).label?(a(),c("div",{key:0,class:N(["VPNavScreenTranslations",{open:s.value}])},[v("button",{class:"title",onClick:n},[Ua,O(" "+I(r(t).label)+" ",1),ja]),v("ul",za,[(a(!0),c(M,null,E(r(e),h=>(a(),c("li",{key:h.link,class:"item"},[m(D,{class:"link",href:h.link},{default:d(()=>[O(I(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Ka=$(qa,[["__scopeId","data-v-d9ff2423"]]),Wa={class:"container"},Ra=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=w(null),t=Te(oe?document.body:null);return(s,n)=>(a(),k(ve,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:d(()=>[s.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",Wa,[l(s.$slots,"nav-screen-content-before",{},void 0,!0),m(Oa,{class:"menu"}),m(Ka,{class:"translations"}),m($a,{class:"appearance"}),m(Ga,{class:"social-links"}),l(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Ja=$(Ra,[["__scopeId","data-v-c6c7bd45"]]),Xa={key:0,class:"VPNav"},Ya=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=Mn(),{frontmatter:n}=P(),i=y(()=>n.value.navbar!==!1);return Ie("close-screen",t),Z(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,h)=>i.value?(a(),c("header",Xa,[m(_a,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":d(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(Ja,{open:r(e)},{"nav-screen-content-before":d(()=>[l(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Qa=$(Ya,[["__scopeId","data-v-d52d372b"]]),De=o=>(C("data-v-b74067ae"),o=o(),H(),o),Za=["role","tabindex"],xa=De(()=>v("div",{class:"indicator"},null,-1)),er=De(()=>v("span",{class:"vpi-chevron-right caret-icon"},null,-1)),tr=[er],or={key:1,class:"items"},nr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:i,hasActiveLink:u,hasChildren:h,toggle:p}=$t(y(()=>e.item)),g=y(()=>h.value?"section":"div"),L=y(()=>n.value?"a":"div"),b=y(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=y(()=>n.value?void 0:"button"),T=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":u.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&p()}function B(){e.item.link&&p()}return(S,j)=>{const z=R("VPSidebarItem",!0);return a(),k(F(g.value),{class:N(["VPSidebarItem",T.value])},{default:d(()=>[S.item.text?(a(),c("div",q({key:0,class:"item",role:V.value},Ye(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[xa,S.item.link?(a(),k(D,{key:0,tag:L.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:d(()=>[(a(),k(F(b.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(F(b.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:B,onKeydown:Qe(B,["enter"]),tabindex:"0"},tr,32)):f("",!0)],16,Za)):f("",!0),S.item.items&&S.item.items.length?(a(),c("div",or,[S.depth<5?(a(!0),c(M,{key:0},E(S.item.items,J=>(a(),k(z,{key:J.text,item:J,depth:S.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),sr=$(nr,[["__scopeId","data-v-b74067ae"]]),ar=_({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=w(!0);let t=null;return W(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Ze(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(a(!0),c(M,null,E(s.items,i=>(a(),c("div",{key:i.text,class:N(["group",{"no-transition":e.value}])},[m(sr,{item:i,depth:0},null,8,["item"])],2))),128))}}),rr=$(ar,[["__scopeId","data-v-e3ecf1ec"]]),Oe=o=>(C("data-v-f2245985"),o=o(),H(),o),ir=Oe(()=>v("div",{class:"curtain"},null,-1)),lr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},cr=Oe(()=>v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),ur=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=U(),s=o,n=w(null),i=Te(oe?document.body:null);G([s,n],()=>{var h;s.open?(i.value=!0,(h=n.value)==null||h.focus()):i.value=!1},{immediate:!0,flush:"post"});const u=w(0);return G(e,()=>{u.value+=1},{deep:!0}),(h,p)=>r(t)?(a(),c("aside",{key:0,class:N(["VPSidebar",{open:h.open}]),ref_key:"navEl",ref:n,onClick:p[0]||(p[0]=xe(()=>{},["stop"]))},[ir,v("nav",lr,[cr,l(h.$slots,"sidebar-nav-before",{},void 0,!0),(a(),k(rr,{items:r(e),key:u.value},null,8,["items"])),l(h.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),dr=$(ur,[["__scopeId","data-v-f2245985"]]),vr=_({__name:"VPSkipLink",setup(o){const e=ee(),t=w();G(()=>e.path,()=>t.value.focus());function s({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),c(M,null,[v("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),pr=$(vr,[["__scopeId","data-v-a977b129"]]),hr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=U(),n=ee();G(()=>n.path,s),bt(e,s);const{frontmatter:i}=P(),u=et(),h=y(()=>!!u["home-hero-image"]);return Ie("hero-image-slot-exists",h),(p,g)=>{const L=R("Content");return r(i).layout!==!1?(a(),c("div",{key:0,class:N(["Layout",r(i).pageClass])},[l(p.$slots,"layout-top",{},void 0,!0),m(pr),m(st,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),m(Qa,null,{"nav-bar-title-before":d(()=>[l(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":d(()=>[l(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(Nn,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),m(dr,{open:r(e)},{"sidebar-nav-before":d(()=>[l(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":d(()=>[l(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(un,null,{"page-top":d(()=>[l(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":d(()=>[l(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":d(()=>[l(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":d(()=>[l(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":d(()=>[l(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":d(()=>[l(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(fn),l(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k(L,{key:1}))}}}),fr=$(hr,[["__scopeId","data-v-7e3343f7"]]),mr={Layout:fr,enhanceApp:({app:o})=>{o.component("Badge",tt)}};export{Us as c,mr as t,P as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DIjojvyn.js","assets/chunks/framework.C3o_UkTa.js"])))=>i.map(i=>d[i]); +import{d as _,o as a,c,r as l,n as N,a as O,t as I,b as k,w as d,e as f,T as ve,_ as $,u as Ge,i as Ue,f as je,g as pe,h as y,j as v,k as r,p as C,l as H,m as K,q as ie,s as w,v as G,x as Z,y as W,z as he,A as fe,B as ze,C as qe,D as R,F as M,E,G as Pe,H as x,I as m,J as F,K as Ve,L as ee,M as q,N as te,O as Ke,P as Le,Q as le,R as We,S as Se,U as oe,V as Re,W as Je,X as Xe,Y as Te,Z as Ie,$ as Ye,a0 as Qe,a1 as Ze,a2 as xe,a3 as et}from"./framework.C3o_UkTa.js";const tt=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:N(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[O(I(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},nt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),k(ve,{name:"fade"},{default:d(()=>[e.show?(a(),c("div",ot)):f("",!0)]),_:1}))}}),st=$(nt,[["__scopeId","data-v-2cfdfdcf"]]),P=Ge;function at(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function ce(o){return/^\//.test(o)?o:`/${o}`}function _e(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(Ue(o)||o.startsWith("#")||!n.startsWith("http")||!je(e))return o;const{site:i}=P(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return pe(u)}function X({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:i}=P(),u=y(()=>{var p,g;return{label:(p=e.value.locales[t.value])==null?void 0:p.label,link:((g=e.value.locales[t.value])==null?void 0:g.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([p,g])=>u.value.label===g.label?[]:{text:g.label,link:rt(g.link||(p==="root"?"/":`/${p}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(u.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:u}}function rt(o,e,t,s){return e?o.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const it=o=>(C("data-v-868b40d9"),o=o(),H(),o),lt={class:"NotFound"},ct={class:"code"},ut={class:"title"},dt=it(()=>v("div",{class:"divider"},null,-1)),vt={class:"quote"},pt={class:"action"},ht=["href","aria-label"],ft=_({__name:"NotFound",setup(o){const{theme:e}=P(),{currentLang:t}=X();return(s,n)=>{var i,u,h,p,g;return a(),c("div",lt,[v("p",ct,I(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),v("h1",ut,I(((u=r(e).notFound)==null?void 0:u.title)??"PAGE NOT FOUND"),1),dt,v("blockquote",vt,I(((h=r(e).notFound)==null?void 0:h.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",pt,[v("a",{class:"link",href:r(pe)(r(t).link),"aria-label":((p=r(e).notFound)==null?void 0:p.linkLabel)??"go to home"},I(((g=r(e).notFound)==null?void 0:g.linkText)??"Take me home"),9,ht)])])}}}),_t=$(ft,[["__scopeId","data-v-868b40d9"]]);function we(o,e){if(Array.isArray(o))return Y(o);if(o==null)return[];e=ce(e);const t=Object.keys(o).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(ce(n))),s=t?o[t]:[];return Array.isArray(s)?Y(s):Y(s.items,s.base)}function mt(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function kt(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ue(o,e){return Array.isArray(e)?e.some(t=>ue(o,t)):K(o,e.link)?!0:e.items?ue(o,e.items):!1}function Y(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=Y(s.items,n)),s})}function U(){const{frontmatter:o,page:e,theme:t}=P(),s=ie("(min-width: 960px)"),n=w(!1),i=y(()=>{const B=t.value.sidebar,S=e.value.relativePath;return B?we(B,S):[]}),u=w(i.value);G(i,(B,S)=>{JSON.stringify(B)!==JSON.stringify(S)&&(u.value=i.value)});const h=y(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),p=y(()=>g?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),g=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),L=y(()=>h.value&&s.value),b=y(()=>h.value?mt(u.value):[]);function V(){n.value=!0}function T(){n.value=!1}function A(){n.value?T():V()}return{isOpen:n,sidebar:u,sidebarGroups:b,hasSidebar:h,hasAside:g,leftAside:p,isSidebarEnabled:L,open:V,close:T,toggle:A}}function bt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),W(()=>{window.addEventListener("keyup",s)}),he(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function $t(o){const{page:e,hash:t}=P(),s=w(!1),n=y(()=>o.value.collapsed!=null),i=y(()=>!!o.value.link),u=w(!1),h=()=>{u.value=K(e.value.relativePath,o.value.link)};G([e,o,t],h),W(h);const p=y(()=>u.value?!0:o.value.items?ue(e.value.relativePath,o.value.items):!1),g=y(()=>!!(o.value.items&&o.value.items.length));Z(()=>{s.value=!!(n.value&&o.value.collapsed)}),fe(()=>{(u.value||p.value)&&(s.value=!1)});function L(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:i,isActiveLink:u,hasActiveLink:p,hasChildren:g,toggle:L}}function gt(){const{hasSidebar:o}=U(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const de=[];function Ne(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function me(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:yt(t),link:"#"+t.id,level:s}});return Pt(e,o)}function yt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(u=>u.level>=s&&u.level<=n),de.length=0;for(const{element:u,link:h}of o)de.push({element:u,link:h});const i=[];e:for(let u=0;u=0;p--){const g=o[p];if(g.level{requestAnimationFrame(i),window.addEventListener("scroll",s)}),ze(()=>{u(location.hash)}),he(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const h=window.scrollY,p=window.innerHeight,g=document.body.offsetHeight,L=Math.abs(h+p-g)<1,b=de.map(({element:T,link:A})=>({link:A,top:Lt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,A)=>T.top-A.top);if(!b.length){u(null);return}if(h<1){u(null);return}if(L){u(b[b.length-1].link);return}let V=null;for(const{link:T,top:A}of b){if(A>h+qe()+4)break;V=T}u(V)}function u(h){n&&n.classList.remove("active"),h==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const p=n;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Lt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const St=["href","title"],Tt=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const s=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(s));n==null||n.focus({preventScroll:!0})}return(t,s)=>{const n=R("VPDocOutlineItem",!0);return a(),c("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(M,null,E(t.headers,({children:i,link:u,title:h})=>(a(),c("li",null,[v("a",{class:"outline-link",href:u,onClick:e,title:h},I(h),9,St),i!=null&&i.length?(a(),k(n,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Me=$(Tt,[["__scopeId","data-v-75b86f7a"]]),It={class:"content"},wt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Nt=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=P(),s=Pe([]);x(()=>{s.value=me(e.value.outline??t.value.outline)});const n=w(),i=w();return Vt(n,i),(u,h)=>(a(),c("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[v("div",It,[v("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),v("div",wt,I(r(Ne)(r(t))),1),m(Me,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),Mt=$(Nt,[["__scopeId","data-v-be1126ba"]]),At={class:"VPDocAsideCarbonAds"},Bt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),c("div",At,[m(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ct=o=>(C("data-v-65ef6f81"),o=o(),H(),o),Ht={class:"VPDocAside"},Et=Ct(()=>v("div",{class:"spacer"},null,-1)),Ft=_({__name:"VPDocAside",setup(o){const{theme:e}=P();return(t,s)=>(a(),c("div",Ht,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),m(Mt),l(t.$slots,"aside-outline-after",{},void 0,!0),Et,l(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),k(Bt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Dt=$(Ft,[["__scopeId","data-v-65ef6f81"]]);function Ot(){const{theme:o,page:e}=P();return y(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Gt(){const{page:o,theme:e,frontmatter:t}=P();return y(()=>{var g,L,b,V,T,A,B,S;const s=we(e.value.sidebar,o.value.relativePath),n=kt(s),i=Ut(n,j=>j.link.replace(/[?#].*$/,"")),u=i.findIndex(j=>K(o.value.relativePath,j.link)),h=((g=e.value.docFooter)==null?void 0:g.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((b=i[u-1])==null?void 0:b.docFooterText)??((V=i[u-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((T=i[u-1])==null?void 0:T.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[u+1])==null?void 0:A.docFooterText)??((B=i[u+1])==null?void 0:B.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[u+1])==null?void 0:S.link)}}})}function Ut(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const D=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Ve.test(e.href)||e.target==="_blank");return(n,i)=>(a(),k(F(t.value),{class:N(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?r(_e)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:d(()=>[l(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),jt={class:"VPLastUpdated"},zt=["datetime"],qt=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=P(),n=y(()=>new Date(t.value.lastUpdated)),i=y(()=>n.value.toISOString()),u=w("");return W(()=>{Z(()=>{var h,p,g;u.value=new Intl.DateTimeFormat((p=(h=e.value.lastUpdated)==null?void 0:h.formatOptions)!=null&&p.forceLocale?s.value:void 0,((g=e.value.lastUpdated)==null?void 0:g.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(h,p)=>{var g;return a(),c("p",jt,[O(I(((g=r(e).lastUpdated)==null?void 0:g.text)||r(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:i.value},I(u.value),9,zt)])}}}),Kt=$(qt,[["__scopeId","data-v-243e2690"]]),Ae=o=>(C("data-v-e27a0cf7"),o=o(),H(),o),Wt={key:0,class:"VPDocFooter"},Rt={key:0,class:"edit-info"},Jt={key:0,class:"edit-link"},Xt=Ae(()=>v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Yt={key:1,class:"last-updated"},Qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Zt=Ae(()=>v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),xt={class:"pager"},eo=["innerHTML"],to=["innerHTML"],oo={class:"pager"},no=["innerHTML"],so=["innerHTML"],ao=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=P(),n=Ot(),i=Gt(),u=y(()=>e.value.editLink&&s.value.editLink!==!1),h=y(()=>t.value.lastUpdated),p=y(()=>u.value||h.value||i.value.prev||i.value.next);return(g,L)=>{var b,V,T,A;return p.value?(a(),c("footer",Wt,[l(g.$slots,"doc-footer-before",{},void 0,!0),u.value||h.value?(a(),c("div",Rt,[u.value?(a(),c("div",Jt,[m(D,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:d(()=>[Xt,O(" "+I(r(n).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),c("div",Yt,[m(Kt)])):f("",!0)])):f("",!0),(b=r(i).prev)!=null&&b.link||(V=r(i).next)!=null&&V.link?(a(),c("nav",Qt,[Zt,v("div",xt,[(T=r(i).prev)!=null&&T.link?(a(),k(D,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:d(()=>{var B;return[v("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.prev)||"Previous page"},null,8,eo),v("span",{class:"title",innerHTML:r(i).prev.text},null,8,to)]}),_:1},8,["href"])):f("",!0)]),v("div",oo,[(A=r(i).next)!=null&&A.link?(a(),k(D,{key:0,class:"pager-link next",href:r(i).next.link},{default:d(()=>{var B;return[v("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.next)||"Next page"},null,8,no),v("span",{class:"title",innerHTML:r(i).next.text},null,8,so)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),ro=$(ao,[["__scopeId","data-v-e27a0cf7"]]),io=o=>(C("data-v-4981c415"),o=o(),H(),o),lo={class:"container"},co=io(()=>v("div",{class:"aside-curtain"},null,-1)),uo={class:"aside-container"},vo={class:"aside-content"},po={class:"content"},ho={class:"content-container"},fo={class:"main"},_o=_({__name:"VPDoc",setup(o){const{theme:e}=P(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:i}=U(),u=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,p)=>{const g=R("Content");return a(),c("div",{class:N(["VPDoc",{"has-sidebar":r(s),"has-aside":r(n)}])},[l(h.$slots,"doc-top",{},void 0,!0),v("div",lo,[r(n)?(a(),c("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[co,v("div",uo,[v("div",vo,[m(Dt,null,{"aside-top":d(()=>[l(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),v("div",po,[v("div",ho,[l(h.$slots,"doc-before",{},void 0,!0),v("main",fo,[m(g,{class:N(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(ro,null,{"doc-footer-before":d(()=>[l(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(h.$slots,"doc-after",{},void 0,!0)])])]),l(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),mo=$(_o,[["__scopeId","data-v-4981c415"]]),ko=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Ve.test(e.href)),s=y(()=>e.tag||e.href?"a":"button");return(n,i)=>(a(),k(F(s.value),{class:N(["VPButton",[n.size,n.theme]]),href:n.href?r(_e)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:d(()=>[O(I(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),bo=$(ko,[["__scopeId","data-v-5208c6a8"]]),$o=["src","alt"],go=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=R("VPImage",!0);return e.image?(a(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",q({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(pe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,$o)):(a(),c(M,{key:1},[m(s,q({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(s,q({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),Q=$(go,[["__scopeId","data-v-6e911b93"]]),yo=o=>(C("data-v-4963d475"),o=o(),H(),o),Po={class:"container"},Vo={class:"main"},Lo={key:0,class:"name"},So=["innerHTML"],To=["innerHTML"],Io=["innerHTML"],wo={key:0,class:"actions"},No={key:0,class:"image"},Mo={class:"image-container"},Ao=yo(()=>v("div",{class:"image-bg"},null,-1)),Bo=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=te("hero-image-slot-exists");return(t,s)=>(a(),c("div",{class:N(["VPHero",{"has-image":t.image||r(e)}])},[v("div",Po,[v("div",Vo,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",Lo,[v("span",{innerHTML:t.name,class:"clip"},null,8,So)])):f("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,To)):f("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Io)):f("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",wo,[(a(!0),c(M,null,E(t.actions,n=>(a(),c("div",{key:n.link,class:"action"},[m(bo,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),c("div",No,[v("div",Mo,[Ao,l(t.$slots,"home-hero-image",{},()=>[t.image?(a(),k(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Co=$(Bo,[["__scopeId","data-v-4963d475"]]),Ho=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=P();return(t,s)=>r(e).hero?(a(),k(Co,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Eo=o=>(C("data-v-c6ed09d2"),o=o(),H(),o),Fo={class:"box"},Do={key:0,class:"icon"},Oo=["innerHTML"],Go=["innerHTML"],Uo=["innerHTML"],jo={key:4,class:"link-text"},zo={class:"link-text-value"},qo=Eo(()=>v("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),Ko=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),k(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:d(()=>[v("article",Fo,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",Do,[m(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),k(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Oo)):f("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,Go),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,Uo)):f("",!0),e.linkText?(a(),c("div",jo,[v("p",zo,[O(I(e.linkText)+" ",1),qo])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Wo=$(Ko,[["__scopeId","data-v-c6ed09d2"]]),Ro={key:0,class:"VPFeatures"},Jo={class:"container"},Xo={class:"items"},Yo=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),c("div",Ro,[v("div",Jo,[v("div",Xo,[(a(!0),c(M,null,E(s.features,i=>(a(),c("div",{key:i.title,class:N(["item",[t.value]])},[m(Wo,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),Qo=$(Yo,[["__scopeId","data-v-c56833f4"]]),Zo=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=P();return(t,s)=>r(e).features?(a(),k(Qo,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),xo=_({__name:"VPHomeContent",setup(o){const{width:e}=Ke({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),c("div",{class:"vp-doc container",style:Le(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),en=$(xo,[["__scopeId","data-v-2763ee34"]]),tn={class:"VPHome"},on=_({__name:"VPHome",setup(o){const{frontmatter:e}=P();return(t,s)=>{const n=R("Content");return a(),c("div",tn,[l(t.$slots,"home-hero-before",{},void 0,!0),m(Ho,null,{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),m(Zo),l(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),k(en,{key:0},{default:d(()=>[m(n)]),_:1})):(a(),k(n,{key:1}))])}}}),nn=$(on,[["__scopeId","data-v-ceddc1ed"]]),sn={},an={class:"VPPage"};function rn(o,e){const t=R("Content");return a(),c("div",an,[l(o.$slots,"page-top"),m(t),l(o.$slots,"page-bottom")])}const ln=$(sn,[["render",rn]]),cn=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=P(),{hasSidebar:s}=U();return(n,i)=>(a(),c("div",{class:N(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?l(n.$slots,"not-found",{key:0},()=>[m(_t)],!0):r(t).layout==="page"?(a(),k(ln,{key:1},{"page-top":d(()=>[l(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),k(nn,{key:2},{"home-hero-before":d(()=>[l(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),k(F(r(t).layout),{key:3})):(a(),k(mo,{key:4},{"doc-top":d(()=>[l(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":d(()=>[l(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":d(()=>[l(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":d(()=>[l(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":d(()=>[l(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),un=$(cn,[["__scopeId","data-v-4e31bbd2"]]),dn={class:"container"},vn=["innerHTML"],pn=["innerHTML"],hn=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=P(),{hasSidebar:s}=U();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),c("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(s)}])},[v("div",dn,[r(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,vn)):f("",!0),r(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,pn)):f("",!0)])],2)):f("",!0)}}),fn=$(hn,[["__scopeId","data-v-098a46ae"]]);function _n(){const{theme:o,frontmatter:e}=P(),t=Pe([]),s=y(()=>t.value.length>0);return x(()=>{t.value=me(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const mn=o=>(C("data-v-5e8cf508"),o=o(),H(),o),kn={class:"menu-text"},bn=mn(()=>v("span",{class:"vpi-chevron-right icon"},null,-1)),$n={class:"header"},gn={class:"outline"},yn=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=P(),s=w(!1),n=w(0),i=w(),u=w();function h(b){var V;(V=i.value)!=null&&V.contains(b.target)||(s.value=!1)}G(s,b=>{if(b){document.addEventListener("click",h);return}document.removeEventListener("click",h)}),le("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function p(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function g(b){b.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),We(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,V)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:Le({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[b.headers.length>0?(a(),c("button",{key:0,onClick:p,class:N({open:s.value})},[v("span",kn,I(r(Ne)(r(t))),1),bn],2)):(a(),c("button",{key:1,onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)),m(ve,{name:"flyout"},{default:d(()=>[s.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:g},[v("div",$n,[v("a",{class:"top-link",href:"#",onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)]),v("div",gn,[m(Me,{headers:b.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),Pn=$(yn,[["__scopeId","data-v-5e8cf508"]]),Vn=o=>(C("data-v-b8036a12"),o=o(),H(),o),Ln={class:"container"},Sn=["aria-expanded"],Tn=Vn(()=>v("span",{class:"vpi-align-left menu-icon"},null,-1)),In={class:"menu-text"},wn=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=P(),{hasSidebar:s}=U(),{headers:n}=_n(),{y:i}=Se(),u=w(0);W(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=me(t.value.outline??e.value.outline)});const h=y(()=>n.value.length===0),p=y(()=>h.value&&!s.value),g=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:h.value,fixed:p.value}));return(L,b)=>r(t).layout!=="home"&&(!p.value||r(i)>=u.value)?(a(),c("div",{key:0,class:N(g.value)},[v("div",Ln,[r(s)?(a(),c("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=V=>L.$emit("open-menu"))},[Tn,v("span",In,I(r(e).sidebarMenuLabel||"Menu"),1)],8,Sn)):f("",!0),m(Pn,{headers:r(n),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Nn=$(wn,[["__scopeId","data-v-b8036a12"]]);function Mn(){const o=w(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=ee();return G(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const An={},Bn={class:"VPSwitch",type:"button",role:"switch"},Cn={class:"check"},Hn={key:0,class:"icon"};function En(o,e){return a(),c("button",Bn,[v("span",Cn,[o.$slots.default?(a(),c("span",Hn,[l(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Fn=$(An,[["render",En],["__scopeId","data-v-b19619af"]]),Be=o=>(C("data-v-0f382965"),o=o(),H(),o),Dn=Be(()=>v("span",{class:"vpi-sun sun"},null,-1)),On=Be(()=>v("span",{class:"vpi-moon moon"},null,-1)),Gn=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=P(),s=te("toggle-appearance",()=>{e.value=!e.value}),n=w("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,u)=>(a(),k(Fn,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:d(()=>[Dn,On]),_:1},8,["title","aria-checked","onClick"]))}}),ke=$(Gn,[["__scopeId","data-v-0f382965"]]),Un={key:0,class:"VPNavBarAppearance"},jn=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=P();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),c("div",Un,[m(ke)])):f("",!0)}}),zn=$(jn,[["__scopeId","data-v-0a1958c9"]]),be=w();let Ce=!1,re=0;function qn(o){const e=w(!1);if(oe){!Ce&&Kn(),re++;const t=G(be,s=>{var n,i,u;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});he(()=>{t(),re--,re||Wn()})}return Re(e)}function Kn(){document.addEventListener("focusin",He),Ce=!0,be.value=document.activeElement}function Wn(){document.removeEventListener("focusin",He)}function He(){be.value=document.activeElement}const Rn={class:"VPMenuLink"},Jn=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=P();return(t,s)=>(a(),c("div",Rn,[m(D,{class:N({active:r(K)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:d(()=>[O(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),ne=$(Jn,[["__scopeId","data-v-19363427"]]),Xn={class:"VPMenuGroup"},Yn={key:0,class:"title"},Qn=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Xn,[e.text?(a(),c("p",Yn,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,s=>(a(),c(M,null,["link"in s?(a(),k(ne,{key:0,item:s},null,8,["item"])):f("",!0)],64))),256))]))}}),Zn=$(Qn,[["__scopeId","data-v-e815e7e2"]]),xn={class:"VPMenu"},es={key:0,class:"items"},ts=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",xn,[e.items?(a(),c("div",es,[(a(!0),c(M,null,E(e.items,s=>(a(),c(M,{key:JSON.stringify(s)},["link"in s?(a(),k(ne,{key:0,item:s},null,8,["item"])):"component"in s?(a(),k(F(s.component),q({key:1,ref_for:!0},s.props),null,16)):(a(),k(Zn,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):f("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),os=$(ts,[["__scopeId","data-v-0e22c6c5"]]),ns=o=>(C("data-v-12ec5ee2"),o=o(),H(),o),ss=["aria-expanded","aria-label"],as={key:0,class:"text"},rs=["innerHTML"],is=ns(()=>v("span",{class:"vpi-chevron-down text-icon"},null,-1)),ls={key:1,class:"vpi-more-horizontal icon"},cs={class:"menu"},us=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=w(!1),t=w();qn({el:t,onBlur:s});function s(){e.value=!1}return(n,i)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[n.button||n.icon?(a(),c("span",as,[n.icon?(a(),c("span",{key:0,class:N([n.icon,"option-icon"])},null,2)):f("",!0),n.button?(a(),c("span",{key:1,innerHTML:n.button},null,8,rs)):f("",!0),is])):(a(),c("span",ls))],8,ss),v("div",cs,[m(os,{items:n.items},{default:d(()=>[l(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=$(us,[["__scopeId","data-v-12ec5ee2"]]),ds=["href","aria-label","innerHTML"],vs=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,n)=>(a(),c("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,ds))}}),ps=$(vs,[["__scopeId","data-v-974e0aed"]]),hs={class:"VPSocialLinks"},fs=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",hs,[(a(!0),c(M,null,E(e.links,({link:s,icon:n,ariaLabel:i})=>(a(),k(ps,{key:s,icon:n,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),ge=$(fs,[["__scopeId","data-v-52782a78"]]),_s={key:0,class:"group translations"},ms={class:"trans-title"},ks={key:1,class:"group"},bs={class:"item appearance"},$s={class:"label"},gs={class:"appearance-action"},ys={key:2,class:"group"},Ps={class:"item social-links"},Vs=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=P(),{localeLinks:s,currentLang:n}=X({correspondingLink:!0}),i=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(u,h)=>i.value?(a(),k($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:d(()=>[r(s).length&&r(n).label?(a(),c("div",_s,[v("p",ms,I(r(n).label),1),(a(!0),c(M,null,E(r(s),p=>(a(),k(ne,{key:p.link,item:p},null,8,["item"]))),128))])):f("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),c("div",ks,[v("div",bs,[v("p",$s,I(r(t).darkModeSwitchLabel||"Appearance"),1),v("div",gs,[m(ke)])])])):f("",!0),r(t).socialLinks?(a(),c("div",ys,[v("div",Ps,[m(ge,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),Ls=$(Vs,[["__scopeId","data-v-c34ef5aa"]]),Ss=o=>(C("data-v-6a2ed68b"),o=o(),H(),o),Ts=["aria-expanded"],Is=Ss(()=>v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)),ws=[Is],Ns=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},ws,10,Ts))}}),Ms=$(Ns,[["__scopeId","data-v-6a2ed68b"]]),As=["innerHTML"],Bs=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=P();return(t,s)=>(a(),k(D,{class:N({VPNavBarMenuLink:!0,active:r(K)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:d(()=>[v("span",{innerHTML:t.item.text},null,8,As)]),_:1},8,["class","href","noIcon","target","rel"]))}}),Cs=$(Bs,[["__scopeId","data-v-c423e9f4"]]),Hs=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=P(),s=i=>"component"in i?!1:"link"in i?K(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),n=y(()=>s(e.item));return(i,u)=>(a(),k($e,{class:N({VPNavBarMenuGroup:!0,active:r(K)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Es=o=>(C("data-v-71183eee"),o=o(),H(),o),Fs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Ds=Es(()=>v("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),Os=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=P();return(t,s)=>r(e).nav?(a(),c("nav",Fs,[Ds,(a(!0),c(M,null,E(r(e).nav,n=>(a(),c(M,{key:JSON.stringify(n)},["link"in n?(a(),k(Cs,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(F(n.component),q({key:1,ref_for:!0},n.props),null,16)):(a(),k(Hs,{key:2,item:n},null,8,["item"]))],64))),128))])):f("",!0)}}),Gs=$(Os,[["__scopeId","data-v-71183eee"]]);function Us(o){const{localeIndex:e,theme:t}=P();function s(n){var A,B,S;const i=n.split("."),u=(A=t.value.search)==null?void 0:A.options,h=u&&typeof u=="object",p=h&&((S=(B=u.locales)==null?void 0:B[e.value])==null?void 0:S.translations)||null,g=h&&u.translations||null;let L=p,b=g,V=o;const T=i.pop();for(const j of i){let z=null;const J=V==null?void 0:V[j];J&&(z=V=J);const se=b==null?void 0:b[j];se&&(z=b=se);const ae=L==null?void 0:L[j];ae&&(z=L=ae),J||(V=z),se||(b=z),ae||(L=z)}return(L==null?void 0:L[T])??(b==null?void 0:b[T])??(V==null?void 0:V[T])??""}return s}const js=["aria-label"],zs={class:"DocSearch-Button-Container"},qs=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Ks={class:"DocSearch-Button-Placeholder"},Ws=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ye=_({__name:"VPNavBarSearchButton",setup(o){const t=Us({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[v("span",zs,[qs,v("span",Ks,I(r(t)("button.buttonText")),1)]),Ws],8,js))}}),Rs={class:"VPNavBarSearch"},Js={id:"local-search"},Xs={key:1,id:"docsearch"},Ys=_({__name:"VPNavBarSearch",setup(o){const e=Je(()=>Xe(()=>import("./VPLocalSearchBox.DIjojvyn.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=P(),n=w(!1),i=w(!1);W(()=>{});function u(){n.value||(n.value=!0,setTimeout(h,16))}function h(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}function p(b){const V=b.target,T=V.tagName;return V.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const g=w(!1);le("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),g.value=!0)}),le("/",b=>{p(b)||(b.preventDefault(),g.value=!0)});const L="local";return(b,V)=>{var T;return a(),c("div",Rs,[r(L)==="local"?(a(),c(M,{key:0},[g.value?(a(),k(r(e),{key:0,onClose:V[0]||(V[0]=A=>g.value=!1)})):f("",!0),v("div",Js,[m(ye,{onClick:V[1]||(V[1]=A=>g.value=!0)})])],64)):r(L)==="algolia"?(a(),c(M,{key:1},[n.value?(a(),k(r(t),{key:0,algolia:((T=r(s).search)==null?void 0:T.options)??r(s).algolia,onVnodeBeforeMount:V[2]||(V[2]=A=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),c("div",Xs,[m(ye,{onClick:u})]))],64)):f("",!0)])}}}),Qs=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=P();return(t,s)=>r(e).socialLinks?(a(),k(ge,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Zs=$(Qs,[["__scopeId","data-v-edaebeb1"]]),xs=["href","rel","target"],ea={key:1},ta={key:2},oa=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=P(),{hasSidebar:s}=U(),{currentLang:n}=X(),i=y(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),u=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),h=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,g)=>(a(),c("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(s)}])},[v("a",{class:"title",href:i.value??r(_e)(r(n).link),rel:u.value,target:h.value},[l(p.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),k(Q,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),c("span",ea,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),c("span",ta,I(r(e).title),1)):f("",!0),l(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,xs)],2))}}),na=$(oa,[["__scopeId","data-v-de953605"]]),sa={class:"items"},aa={class:"title"},ra=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=P(),{localeLinks:t,currentLang:s}=X({correspondingLink:!0});return(n,i)=>r(t).length&&r(s).label?(a(),k($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:d(()=>[v("div",sa,[v("p",aa,I(r(s).label),1),(a(!0),c(M,null,E(r(t),u=>(a(),k(ne,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),ia=$(ra,[["__scopeId","data-v-d3047050"]]),la=o=>(C("data-v-37a6b570"),o=o(),H(),o),ca={class:"wrapper"},ua={class:"container"},da={class:"title"},va={class:"content"},pa={class:"content-body"},ha=la(()=>v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1)),fa=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=Se(),{hasSidebar:s}=U(),{frontmatter:n}=P(),i=w({});return fe(()=>{i.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(u,h)=>(a(),c("div",{class:N(["VPNavBar",i.value])},[v("div",ca,[v("div",ua,[v("div",da,[m(na,null,{"nav-bar-title-before":d(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",va,[v("div",pa,[l(u.$slots,"nav-bar-content-before",{},void 0,!0),m(Ys,{class:"search"}),m(Gs,{class:"menu"}),m(ia,{class:"translations"}),m(zn,{class:"appearance"}),m(Zs,{class:"social-links"}),m(Ls,{class:"extra"}),l(u.$slots,"nav-bar-content-after",{},void 0,!0),m(Ms,{class:"hamburger",active:u.isScreenOpen,onClick:h[0]||(h[0]=p=>u.$emit("toggle-screen"))},null,8,["active"])])])])]),ha],2))}}),_a=$(fa,[["__scopeId","data-v-37a6b570"]]),ma={key:0,class:"VPNavScreenAppearance"},ka={class:"text"},ba=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=P();return(s,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),c("div",ma,[v("p",ka,I(r(t).darkModeSwitchLabel||"Appearance"),1),m(ke)])):f("",!0)}}),$a=$(ba,[["__scopeId","data-v-beb3f918"]]),ga=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,s)=>(a(),k(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),ya=$(ga,[["__scopeId","data-v-6f3d2ab5"]]),Pa=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,s)=>(a(),k(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:d(()=>[O(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ee=$(Pa,[["__scopeId","data-v-eab7bfa1"]]),Va={class:"VPNavScreenMenuGroupSection"},La={key:0,class:"title"},Sa=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Va,[e.text?(a(),c("p",La,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,s=>(a(),k(Ee,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Ta=$(Sa,[["__scopeId","data-v-60ca4288"]]),Ia=o=>(C("data-v-9b54e8b4"),o=o(),H(),o),wa=["aria-controls","aria-expanded"],Na=["innerHTML"],Ma=Ia(()=>v("span",{class:"vpi-plus button-icon"},null,-1)),Aa=["id"],Ba={key:0,class:"item"},Ca={key:1,class:"item"},Ha={key:2,class:"group"},Ea=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=w(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,u)=>(a(),c("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[v("span",{class:"button-text",innerHTML:i.text},null,8,Na),Ma],8,wa),v("div",{id:s.value,class:"items"},[(a(!0),c(M,null,E(i.items,h=>(a(),c(M,{key:JSON.stringify(h)},["link"in h?(a(),c("div",Ba,[m(Ee,{item:h},null,8,["item"])])):"component"in h?(a(),c("div",Ca,[(a(),k(F(h.component),q({ref_for:!0},h.props,{"screen-menu":""}),null,16))])):(a(),c("div",Ha,[m(Ta,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Aa)],2))}}),Fa=$(Ea,[["__scopeId","data-v-9b54e8b4"]]),Da={key:0,class:"VPNavScreenMenu"},Oa=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=P();return(t,s)=>r(e).nav?(a(),c("nav",Da,[(a(!0),c(M,null,E(r(e).nav,n=>(a(),c(M,{key:JSON.stringify(n)},["link"in n?(a(),k(ya,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(F(n.component),q({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),k(Fa,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Ga=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=P();return(t,s)=>r(e).socialLinks?(a(),k(ge,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Fe=o=>(C("data-v-d9ff2423"),o=o(),H(),o),Ua=Fe(()=>v("span",{class:"vpi-languages icon lang"},null,-1)),ja=Fe(()=>v("span",{class:"vpi-chevron-down icon chevron"},null,-1)),za={class:"list"},qa=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=X({correspondingLink:!0}),s=w(!1);function n(){s.value=!s.value}return(i,u)=>r(e).length&&r(t).label?(a(),c("div",{key:0,class:N(["VPNavScreenTranslations",{open:s.value}])},[v("button",{class:"title",onClick:n},[Ua,O(" "+I(r(t).label)+" ",1),ja]),v("ul",za,[(a(!0),c(M,null,E(r(e),h=>(a(),c("li",{key:h.link,class:"item"},[m(D,{class:"link",href:h.link},{default:d(()=>[O(I(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Ka=$(qa,[["__scopeId","data-v-d9ff2423"]]),Wa={class:"container"},Ra=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=w(null),t=Te(oe?document.body:null);return(s,n)=>(a(),k(ve,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:d(()=>[s.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",Wa,[l(s.$slots,"nav-screen-content-before",{},void 0,!0),m(Oa,{class:"menu"}),m(Ka,{class:"translations"}),m($a,{class:"appearance"}),m(Ga,{class:"social-links"}),l(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Ja=$(Ra,[["__scopeId","data-v-c6c7bd45"]]),Xa={key:0,class:"VPNav"},Ya=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=Mn(),{frontmatter:n}=P(),i=y(()=>n.value.navbar!==!1);return Ie("close-screen",t),Z(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,h)=>i.value?(a(),c("header",Xa,[m(_a,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":d(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(Ja,{open:r(e)},{"nav-screen-content-before":d(()=>[l(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Qa=$(Ya,[["__scopeId","data-v-d52d372b"]]),De=o=>(C("data-v-b74067ae"),o=o(),H(),o),Za=["role","tabindex"],xa=De(()=>v("div",{class:"indicator"},null,-1)),er=De(()=>v("span",{class:"vpi-chevron-right caret-icon"},null,-1)),tr=[er],or={key:1,class:"items"},nr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:i,hasActiveLink:u,hasChildren:h,toggle:p}=$t(y(()=>e.item)),g=y(()=>h.value?"section":"div"),L=y(()=>n.value?"a":"div"),b=y(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=y(()=>n.value?void 0:"button"),T=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":u.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&p()}function B(){e.item.link&&p()}return(S,j)=>{const z=R("VPSidebarItem",!0);return a(),k(F(g.value),{class:N(["VPSidebarItem",T.value])},{default:d(()=>[S.item.text?(a(),c("div",q({key:0,class:"item",role:V.value},Ye(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[xa,S.item.link?(a(),k(D,{key:0,tag:L.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:d(()=>[(a(),k(F(b.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(F(b.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:B,onKeydown:Qe(B,["enter"]),tabindex:"0"},tr,32)):f("",!0)],16,Za)):f("",!0),S.item.items&&S.item.items.length?(a(),c("div",or,[S.depth<5?(a(!0),c(M,{key:0},E(S.item.items,J=>(a(),k(z,{key:J.text,item:J,depth:S.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),sr=$(nr,[["__scopeId","data-v-b74067ae"]]),ar=_({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=w(!0);let t=null;return W(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Ze(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(a(!0),c(M,null,E(s.items,i=>(a(),c("div",{key:i.text,class:N(["group",{"no-transition":e.value}])},[m(sr,{item:i,depth:0},null,8,["item"])],2))),128))}}),rr=$(ar,[["__scopeId","data-v-e3ecf1ec"]]),Oe=o=>(C("data-v-f2245985"),o=o(),H(),o),ir=Oe(()=>v("div",{class:"curtain"},null,-1)),lr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},cr=Oe(()=>v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),ur=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=U(),s=o,n=w(null),i=Te(oe?document.body:null);G([s,n],()=>{var h;s.open?(i.value=!0,(h=n.value)==null||h.focus()):i.value=!1},{immediate:!0,flush:"post"});const u=w(0);return G(e,()=>{u.value+=1},{deep:!0}),(h,p)=>r(t)?(a(),c("aside",{key:0,class:N(["VPSidebar",{open:h.open}]),ref_key:"navEl",ref:n,onClick:p[0]||(p[0]=xe(()=>{},["stop"]))},[ir,v("nav",lr,[cr,l(h.$slots,"sidebar-nav-before",{},void 0,!0),(a(),k(rr,{items:r(e),key:u.value},null,8,["items"])),l(h.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),dr=$(ur,[["__scopeId","data-v-f2245985"]]),vr=_({__name:"VPSkipLink",setup(o){const e=ee(),t=w();G(()=>e.path,()=>t.value.focus());function s({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),c(M,null,[v("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),pr=$(vr,[["__scopeId","data-v-a977b129"]]),hr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=U(),n=ee();G(()=>n.path,s),bt(e,s);const{frontmatter:i}=P(),u=et(),h=y(()=>!!u["home-hero-image"]);return Ie("hero-image-slot-exists",h),(p,g)=>{const L=R("Content");return r(i).layout!==!1?(a(),c("div",{key:0,class:N(["Layout",r(i).pageClass])},[l(p.$slots,"layout-top",{},void 0,!0),m(pr),m(st,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),m(Qa,null,{"nav-bar-title-before":d(()=>[l(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":d(()=>[l(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(Nn,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),m(dr,{open:r(e)},{"sidebar-nav-before":d(()=>[l(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":d(()=>[l(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(un,null,{"page-top":d(()=>[l(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":d(()=>[l(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":d(()=>[l(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":d(()=>[l(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":d(()=>[l(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":d(()=>[l(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(fn),l(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k(L,{key:1}))}}}),fr=$(hr,[["__scopeId","data-v-7e3343f7"]]),mr={Layout:fr,enhanceApp:({app:o})=>{o.component("Badge",tt)}};export{Us as c,mr as t,P as u}; diff --git a/assets/dev_api_bot_bot.md.CmVyYr_O.js b/assets/dev_api_bot_bot.md.Do8sEorT.js similarity index 62% rename from assets/dev_api_bot_bot.md.CmVyYr_O.js rename to assets/dev_api_bot_bot.md.Do8sEorT.js index 10bd7e8c..e62c3feb 100644 --- a/assets/dev_api_bot_bot.md.CmVyYr_O.js +++ b/assets/dev_api_bot_bot.md.Do8sEorT.js @@ -1,10 +1,8 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"dev/api/bot/bot.md","filePath":"zh/dev/api/bot/bot.md","lastUpdated":null}'),t={name:"dev/api/bot/bot.md"},l=n(`

liteyuki.bot

class LiteyukiBot

def __init__(self, *args, **kwargs) -> None

说明: 初始化轻雪实例

参数:

  • *args:
  • **kwargs: 配置
源代码在GitHub上查看
python
def __init__(self, *args, **kwargs) -> None:
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"dev/api/bot/bot.md","filePath":"zh/dev/api/bot/bot.md","lastUpdated":null}'),t={name:"dev/api/bot/bot.md"},e=n(`

liteyuki.bot

class LiteyukiBot

def __init__(self, **kwargs) -> None

说明: 初始化轻雪实例

参数:

  • **kwargs: 配置
源代码在GitHub上查看
python
def __init__(self, **kwargs) -> None:
     """
         初始化轻雪实例
         Args:
-            *args:
             **kwargs: 配置
-
         """
     '常规操作'
     print_logo()
@@ -28,48 +26,27 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
     '信号处理'
     signal.signal(signal.SIGINT, self._handle_exit)
     signal.signal(signal.SIGTERM, self._handle_exit)
-    atexit.register(self.process_manager.terminate_all)

async def _run(self)

说明: 启动逻辑

源代码在GitHub上查看
python
async def _run(self):
-    """
-        启动逻辑
-        """
-    await self.lifespan.before_start()
-    await self.process_manager.start_all()
-    await self.lifespan.after_start()
-    await self.keep_alive()

def run(self)

说明: 外部启动接口

源代码在GitHub上查看
python
def run(self):
+    atexit.register(self.process_manager.terminate_all)

def run(self)

说明: 外部启动接口

源代码在GitHub上查看
python
def run(self):
     """
         外部启动接口
         """
     try:
         asyncio.run(self._run())
     except KeyboardInterrupt:
-        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

说明: 保持轻雪运行

源代码在GitHub上查看
python
async def keep_alive(self):
+        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

说明: 保持轻雪运行

源代码在GitHub上查看
python
async def keep_alive(self):
     """
         保持轻雪运行
-        Returns:
-
         """
     try:
         while not self.stop_event.is_set():
             time.sleep(0.5)
     except KeyboardInterrupt:
         logger.info('Liteyuki is stopping...')
-        self.stop()

def _handle_exit(self, signum, frame)

说明: 信号处理

参数:

  • signum:
  • frame:
源代码在GitHub上查看
python
def _handle_exit(self, signum, frame):
-    """
-        信号处理
-        Args:
-            signum:
-            frame:
-
-        Returns:
-
-        """
-    logger.info('Received signal, stopping all processes.')
-    self.stop()
-    sys.exit(0)

def restart(self, delay: int = 0)

说明: 重启轻雪本体

源代码在GitHub上查看
python
def restart(self, delay: int=0):
+        self.stop()

def restart(self, delay: int = 0)

说明: 重启轻雪本体

参数:

  • delay (int, optional): 延迟重启时间. Defaults to 0.
源代码在GitHub上查看
python
def restart(self, delay: int=0):
     """
         重启轻雪本体
-        Returns:
-
+        Args:
+            delay ([\`int\`](https%3A//docs.python.org/3/library/functions.html#int), optional): 延迟重启时间. Defaults to 0.
         """
     if self.call_restart_count < 1:
         executable = sys.executable
@@ -87,11 +64,11 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
         self.process_manager.terminate_all()
         threading.Thread(target=os.system, args=(f"{cmd} {executable} {' '.join(args)}",)).start()
         sys.exit(0)
-    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

说明: 停止轻雪

参数:

  • name: 进程名称, 默认为None, 所有进程
源代码在GitHub上查看
python
def restart_process(self, name: Optional[str]=None):
+    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

说明: 停止轻雪

参数:

源代码在GitHub上查看
python
def restart_process(self, name: Optional[str]=None):
     """
         停止轻雪
         Args:
-            name: 进程名称, 默认为None, 所有进程
+            name ([\`Optional\`](https%3A//docs.python.org/3/library/typing.html#typing.Optional)[[\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)]): 进程名. Defaults to None.
         Returns:
         """
     if name is not None:
@@ -100,106 +77,100 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
     else:
         for process_name in self.process_manager.processes:
             chan_active = get_channel(f'{process_name}-active')
-            chan_active.send(1)

def init(self, *args, **kwargs)

说明: 初始化轻雪, 自动调用

源代码在GitHub上查看
python
def init(self, *args, **kwargs):
+            chan_active.send(1)

def init(self, *args, **kwargs)

说明: 初始化轻雪, 自动调用

参数:

  • *args: 参数
  • **kwargs: 关键字参数
源代码在GitHub上查看
python
def init(self, *args, **kwargs):
     """
         初始化轻雪, 自动调用
-        Returns:
-
+        Args:
+            *args: 参数
+            **kwargs: 关键字参数
         """
-    self.init_logger()

def init_logger(self)

源代码在GitHub上查看
python
def init_logger(self):
-    init_log(config=self.config)

def stop(self)

说明: 停止轻雪

源代码在GitHub上查看
python
def stop(self):
+    self.init_logger()

def init_logger(self)

说明: 初始化日志

源代码在GitHub上查看
python
def init_logger(self):
+    """
+        初始化日志
+        """
+    init_log(config=self.config)

def stop(self)

说明: 停止轻雪

源代码在GitHub上查看
python
def stop(self):
     """
         停止轻雪
-        Returns:
-
         """
     self.stop_event.set()
-    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC)

说明: 注册启动前的函数

参数:

  • func:
源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC):
+    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册启动前的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动前的函数
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

说明: 注册启动后的函数

参数:

  • func:
源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

说明: 注册启动后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC):
     """
         注册启动后的函数
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

说明: 注册停止后的函数:未实现

参数:

  • func:
源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

说明: 注册停止后的函数:未实现

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
     """
         注册停止后的函数:未实现
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: LIFESPAN_FUNC)

说明: 注册进程停止前的函数,为子进程停止时调用

参数:

  • func:
源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)

说明: 注册进程停止前的函数,为子进程停止时调用

参数:

返回: PROCESS_LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC):
     """
         注册进程停止前的函数,为子进程停止时调用
         Args:
-            func:
-
+            func ([\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: LIFESPAN_FUNC)

说明: 注册进程重启前的函数,为子进程重启时调用

参数:

  • func:
源代码在GitHub上查看
python
def on_before_process_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

说明: 注册进程重启前的函数,为子进程重启时调用

参数:

返回: PROCESS_LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
         注册进程重启前的函数,为子进程重启时调用
         Args:
-            func:
-
+            func ([\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

说明: 注册重启后的函数:未实现

参数:

  • func:
源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

说明: 注册重启后的函数:未实现

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC):
     """
         注册重启后的函数:未实现
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

说明: 获取轻雪实例

返回: LiteyukiBot: 当前的轻雪实例

源代码在GitHub上查看
python
def get_bot() -> LiteyukiBot:
+    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

说明: 获取轻雪实例

返回: LiteyukiBot: 轻雪实例

源代码在GitHub上查看
python
def get_bot() -> LiteyukiBot:
     """
     获取轻雪实例
-
     Returns:
-        LiteyukiBot: 当前的轻雪实例
+        [\`LiteyukiBot\`](#class-liteyukibot): 轻雪实例
     """
     if IS_MAIN_PROCESS:
         if _BOT_INSTANCE is None:
             raise RuntimeError('Liteyuki instance not initialized.')
         return _BOT_INSTANCE
     else:
-        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

说明: 获取配置

参数:

  • key: 配置键
  • default: 默认值

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config(key: str, default: Any=None) -> Any:
+        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

说明: 获取配置

参数:

  • key (str): 配置键
  • default (Any, optional): 默认值. Defaults to None.

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config(key: str, default: Any=None) -> Any:
     """
     获取配置
     Args:
-        key: 配置键
-        default: 默认值
-
+        key ([\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        default ([\`Any\`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
     Returns:
-        Any: 配置值
+        [\`Any\`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
-    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

说明: 获取配置,兼容旧版本

参数:

  • key: 配置键
  • compat_keys: 兼容键
  • default: 默认值

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
+    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

说明: 获取配置,兼容旧版本

参数:

  • key (str): 配置键
  • compat_keys (tuplestr): 兼容键
  • default (Any, optional): 默认值. Defaults to None.

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
     """
     获取配置,兼容旧版本
     Args:
-        key: 配置键
-        compat_keys: 兼容键
-        default: 默认值
+        key ([\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        compat_keys ([\`tuple\`](https%3A//docs.python.org/3/library/stdtypes.html#tuple)[\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 兼容键
+        default ([\`Any\`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
 
     Returns:
-        Any: 配置值
+        [\`Any\`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
     if key in get_bot().config:
         return get_bot().config[key]
@@ -207,5 +178,4 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
         if compat_key in get_bot().config:
             logger.warning(f'Config key "{compat_key}" will be deprecated, use "{key}" instead.')
             return get_bot().config[compat_key]
-    return default
源代码在GitHub上查看
python
def print_logo():
-    print('\\x1b[34m' + '\\n     __        ______  ________  ________  __      __  __    __  __    __  ______ \\n    /  |      /      |/        |/        |/  \\\\    /  |/  |  /  |/  |  /  |/      |\\n    $$ |      $$$$$$/ $$$$$$$$/ $$$$$$$$/ $$  \\\\  /$$/ $$ |  $$ |$$ | /$$/ $$$$$$/ \\n    $$ |        $$ |     $$ |   $$ |__     $$  \\\\/$$/  $$ |  $$ |$$ |/$$/    $$ |  \\n    $$ |        $$ |     $$ |   $$    |     $$  $$/   $$ |  $$ |$$  $$<     $$ |  \\n    $$ |        $$ |     $$ |   $$$$$/       $$$$/    $$ |  $$ |$$$$$  \\\\    $$ |  \\n    $$ |_____  _$$ |_    $$ |   $$ |_____     $$ |    $$ \\\\__$$ |$$ |$$  \\\\  _$$ |_ \\n    $$       |/ $$   |   $$ |   $$       |    $$ |    $$    $$/ $$ | $$  |/ $$   |\\n    $$$$$$$$/ $$$$$$/    $$/    $$$$$$$$/     $$/      $$$$$$/  $$/   $$/ $$$$$$/ \\n                ' + '\\x1b[0m')
`,85),e=[l];function h(p,k,r,d,g,o){return a(),i("div",null,e)}const F=s(t,[["render",h]]);export{y as __pageData,F as default}; + return default
`,86),l=[e];function p(h,k,r,o,d,g){return a(),i("div",null,l)}const F=s(t,[["render",p]]);export{y as __pageData,F as default}; diff --git a/assets/dev_api_bot_bot.md.CmVyYr_O.lean.js b/assets/dev_api_bot_bot.md.Do8sEorT.lean.js similarity index 72% rename from assets/dev_api_bot_bot.md.CmVyYr_O.lean.js rename to assets/dev_api_bot_bot.md.Do8sEorT.lean.js index 379d36c7..b26d3577 100644 --- a/assets/dev_api_bot_bot.md.CmVyYr_O.lean.js +++ b/assets/dev_api_bot_bot.md.Do8sEorT.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"dev/api/bot/bot.md","filePath":"zh/dev/api/bot/bot.md","lastUpdated":null}'),t={name:"dev/api/bot/bot.md"},l=n("",85),e=[l];function h(p,k,r,d,g,o){return a(),i("div",null,e)}const F=s(t,[["render",h]]);export{y as __pageData,F as default}; +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"dev/api/bot/bot.md","filePath":"zh/dev/api/bot/bot.md","lastUpdated":null}'),t={name:"dev/api/bot/bot.md"},e=n("",86),l=[e];function p(h,k,r,o,d,g){return a(),i("div",null,l)}const F=s(t,[["render",p]]);export{y as __pageData,F as default}; diff --git a/assets/dev_api_bot_index.md.DudPhKae.js b/assets/dev_api_bot_index.md.BWSjENmL.js similarity index 62% rename from assets/dev_api_bot_index.md.DudPhKae.js rename to assets/dev_api_bot_index.md.BWSjENmL.js index e8aaceca..b13ee207 100644 --- a/assets/dev_api_bot_index.md.DudPhKae.js +++ b/assets/dev_api_bot_index.md.BWSjENmL.js @@ -1,10 +1,8 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"dev/api/bot/index.md","filePath":"zh/dev/api/bot/index.md","lastUpdated":null}'),t={name:"dev/api/bot/index.md"},l=n(`

liteyuki.bot

class LiteyukiBot

def __init__(self, *args, **kwargs) -> None

说明: 初始化轻雪实例

参数:

  • *args:
  • **kwargs: 配置
源代码在GitHub上查看
python
def __init__(self, *args, **kwargs) -> None:
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"dev/api/bot/index.md","filePath":"zh/dev/api/bot/index.md","lastUpdated":null}'),t={name:"dev/api/bot/index.md"},e=n(`

liteyuki.bot

class LiteyukiBot

def __init__(self, **kwargs) -> None

说明: 初始化轻雪实例

参数:

  • **kwargs: 配置
源代码在GitHub上查看
python
def __init__(self, **kwargs) -> None:
     """
         初始化轻雪实例
         Args:
-            *args:
             **kwargs: 配置
-
         """
     '常规操作'
     print_logo()
@@ -28,48 +26,27 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
     '信号处理'
     signal.signal(signal.SIGINT, self._handle_exit)
     signal.signal(signal.SIGTERM, self._handle_exit)
-    atexit.register(self.process_manager.terminate_all)

async def _run(self)

说明: 启动逻辑

源代码在GitHub上查看
python
async def _run(self):
-    """
-        启动逻辑
-        """
-    await self.lifespan.before_start()
-    await self.process_manager.start_all()
-    await self.lifespan.after_start()
-    await self.keep_alive()

def run(self)

说明: 外部启动接口

源代码在GitHub上查看
python
def run(self):
+    atexit.register(self.process_manager.terminate_all)

def run(self)

说明: 外部启动接口

源代码在GitHub上查看
python
def run(self):
     """
         外部启动接口
         """
     try:
         asyncio.run(self._run())
     except KeyboardInterrupt:
-        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

说明: 保持轻雪运行

源代码在GitHub上查看
python
async def keep_alive(self):
+        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

说明: 保持轻雪运行

源代码在GitHub上查看
python
async def keep_alive(self):
     """
         保持轻雪运行
-        Returns:
-
         """
     try:
         while not self.stop_event.is_set():
             time.sleep(0.5)
     except KeyboardInterrupt:
         logger.info('Liteyuki is stopping...')
-        self.stop()

def _handle_exit(self, signum, frame)

说明: 信号处理

参数:

  • signum:
  • frame:
源代码在GitHub上查看
python
def _handle_exit(self, signum, frame):
-    """
-        信号处理
-        Args:
-            signum:
-            frame:
-
-        Returns:
-
-        """
-    logger.info('Received signal, stopping all processes.')
-    self.stop()
-    sys.exit(0)

def restart(self, delay: int = 0)

说明: 重启轻雪本体

源代码在GitHub上查看
python
def restart(self, delay: int=0):
+        self.stop()

def restart(self, delay: int = 0)

说明: 重启轻雪本体

参数:

  • delay (int, optional): 延迟重启时间. Defaults to 0.
源代码在GitHub上查看
python
def restart(self, delay: int=0):
     """
         重启轻雪本体
-        Returns:
-
+        Args:
+            delay ([\`int\`](https%3A//docs.python.org/3/library/functions.html#int), optional): 延迟重启时间. Defaults to 0.
         """
     if self.call_restart_count < 1:
         executable = sys.executable
@@ -87,11 +64,11 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
         self.process_manager.terminate_all()
         threading.Thread(target=os.system, args=(f"{cmd} {executable} {' '.join(args)}",)).start()
         sys.exit(0)
-    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

说明: 停止轻雪

参数:

  • name: 进程名称, 默认为None, 所有进程
源代码在GitHub上查看
python
def restart_process(self, name: Optional[str]=None):
+    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

说明: 停止轻雪

参数:

源代码在GitHub上查看
python
def restart_process(self, name: Optional[str]=None):
     """
         停止轻雪
         Args:
-            name: 进程名称, 默认为None, 所有进程
+            name ([\`Optional\`](https%3A//docs.python.org/3/library/typing.html#typing.Optional)[[\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)]): 进程名. Defaults to None.
         Returns:
         """
     if name is not None:
@@ -100,106 +77,100 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
     else:
         for process_name in self.process_manager.processes:
             chan_active = get_channel(f'{process_name}-active')
-            chan_active.send(1)

def init(self, *args, **kwargs)

说明: 初始化轻雪, 自动调用

源代码在GitHub上查看
python
def init(self, *args, **kwargs):
+            chan_active.send(1)

def init(self, *args, **kwargs)

说明: 初始化轻雪, 自动调用

参数:

  • *args: 参数
  • **kwargs: 关键字参数
源代码在GitHub上查看
python
def init(self, *args, **kwargs):
     """
         初始化轻雪, 自动调用
-        Returns:
-
+        Args:
+            *args: 参数
+            **kwargs: 关键字参数
         """
-    self.init_logger()

def init_logger(self)

源代码在GitHub上查看
python
def init_logger(self):
-    init_log(config=self.config)

def stop(self)

说明: 停止轻雪

源代码在GitHub上查看
python
def stop(self):
+    self.init_logger()

def init_logger(self)

说明: 初始化日志

源代码在GitHub上查看
python
def init_logger(self):
+    """
+        初始化日志
+        """
+    init_log(config=self.config)

def stop(self)

说明: 停止轻雪

源代码在GitHub上查看
python
def stop(self):
     """
         停止轻雪
-        Returns:
-
         """
     self.stop_event.set()
-    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC)

说明: 注册启动前的函数

参数:

  • func:
源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC):
+    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册启动前的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动前的函数
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

说明: 注册启动后的函数

参数:

  • func:
源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

说明: 注册启动后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC):
     """
         注册启动后的函数
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

说明: 注册停止后的函数:未实现

参数:

  • func:
源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

说明: 注册停止后的函数:未实现

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
     """
         注册停止后的函数:未实现
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: LIFESPAN_FUNC)

说明: 注册进程停止前的函数,为子进程停止时调用

参数:

  • func:
源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)

说明: 注册进程停止前的函数,为子进程停止时调用

参数:

返回: PROCESS_LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC):
     """
         注册进程停止前的函数,为子进程停止时调用
         Args:
-            func:
-
+            func ([\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: LIFESPAN_FUNC)

说明: 注册进程重启前的函数,为子进程重启时调用

参数:

  • func:
源代码在GitHub上查看
python
def on_before_process_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

说明: 注册进程重启前的函数,为子进程重启时调用

参数:

返回: PROCESS_LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
         注册进程重启前的函数,为子进程重启时调用
         Args:
-            func:
-
+            func ([\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

说明: 注册重启后的函数:未实现

参数:

  • func:
源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

说明: 注册重启后的函数:未实现

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC):
     """
         注册重启后的函数:未实现
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

说明: 获取轻雪实例

返回: LiteyukiBot: 当前的轻雪实例

源代码在GitHub上查看
python
def get_bot() -> LiteyukiBot:
+    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

说明: 获取轻雪实例

返回: LiteyukiBot: 轻雪实例

源代码在GitHub上查看
python
def get_bot() -> LiteyukiBot:
     """
     获取轻雪实例
-
     Returns:
-        LiteyukiBot: 当前的轻雪实例
+        [\`LiteyukiBot\`](#class-liteyukibot): 轻雪实例
     """
     if IS_MAIN_PROCESS:
         if _BOT_INSTANCE is None:
             raise RuntimeError('Liteyuki instance not initialized.')
         return _BOT_INSTANCE
     else:
-        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

说明: 获取配置

参数:

  • key: 配置键
  • default: 默认值

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config(key: str, default: Any=None) -> Any:
+        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

说明: 获取配置

参数:

  • key (str): 配置键
  • default (Any, optional): 默认值. Defaults to None.

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config(key: str, default: Any=None) -> Any:
     """
     获取配置
     Args:
-        key: 配置键
-        default: 默认值
-
+        key ([\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        default ([\`Any\`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
     Returns:
-        Any: 配置值
+        [\`Any\`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
-    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

说明: 获取配置,兼容旧版本

参数:

  • key: 配置键
  • compat_keys: 兼容键
  • default: 默认值

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
+    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

说明: 获取配置,兼容旧版本

参数:

  • key (str): 配置键
  • compat_keys (tuplestr): 兼容键
  • default (Any, optional): 默认值. Defaults to None.

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
     """
     获取配置,兼容旧版本
     Args:
-        key: 配置键
-        compat_keys: 兼容键
-        default: 默认值
+        key ([\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        compat_keys ([\`tuple\`](https%3A//docs.python.org/3/library/stdtypes.html#tuple)[\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 兼容键
+        default ([\`Any\`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
 
     Returns:
-        Any: 配置值
+        [\`Any\`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
     if key in get_bot().config:
         return get_bot().config[key]
@@ -207,5 +178,4 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
         if compat_key in get_bot().config:
             logger.warning(f'Config key "{compat_key}" will be deprecated, use "{key}" instead.')
             return get_bot().config[compat_key]
-    return default
源代码在GitHub上查看
python
def print_logo():
-    print('\\x1b[34m' + '\\n     __        ______  ________  ________  __      __  __    __  __    __  ______ \\n    /  |      /      |/        |/        |/  \\\\    /  |/  |  /  |/  |  /  |/      |\\n    $$ |      $$$$$$/ $$$$$$$$/ $$$$$$$$/ $$  \\\\  /$$/ $$ |  $$ |$$ | /$$/ $$$$$$/ \\n    $$ |        $$ |     $$ |   $$ |__     $$  \\\\/$$/  $$ |  $$ |$$ |/$$/    $$ |  \\n    $$ |        $$ |     $$ |   $$    |     $$  $$/   $$ |  $$ |$$  $$<     $$ |  \\n    $$ |        $$ |     $$ |   $$$$$/       $$$$/    $$ |  $$ |$$$$$  \\\\    $$ |  \\n    $$ |_____  _$$ |_    $$ |   $$ |_____     $$ |    $$ \\\\__$$ |$$ |$$  \\\\  _$$ |_ \\n    $$       |/ $$   |   $$ |   $$       |    $$ |    $$    $$/ $$ | $$  |/ $$   |\\n    $$$$$$$$/ $$$$$$/    $$/    $$$$$$$$/     $$/      $$$$$$/  $$/   $$/ $$$$$$/ \\n                ' + '\\x1b[0m')
`,85),e=[l];function h(p,k,r,d,g,o){return a(),i("div",null,e)}const F=s(t,[["render",h]]);export{y as __pageData,F as default}; + return default
`,86),l=[e];function p(h,k,r,o,d,g){return a(),i("div",null,l)}const F=s(t,[["render",p]]);export{y as __pageData,F as default}; diff --git a/assets/dev_api_bot_index.md.DudPhKae.lean.js b/assets/dev_api_bot_index.md.BWSjENmL.lean.js similarity index 72% rename from assets/dev_api_bot_index.md.DudPhKae.lean.js rename to assets/dev_api_bot_index.md.BWSjENmL.lean.js index f5927c92..7ac8984f 100644 --- a/assets/dev_api_bot_index.md.DudPhKae.lean.js +++ b/assets/dev_api_bot_index.md.BWSjENmL.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"dev/api/bot/index.md","filePath":"zh/dev/api/bot/index.md","lastUpdated":null}'),t={name:"dev/api/bot/index.md"},l=n("",85),e=[l];function h(p,k,r,d,g,o){return a(),i("div",null,e)}const F=s(t,[["render",h]]);export{y as __pageData,F as default}; +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"dev/api/bot/index.md","filePath":"zh/dev/api/bot/index.md","lastUpdated":null}'),t={name:"dev/api/bot/index.md"},e=n("",86),l=[e];function p(h,k,r,o,d,g){return a(),i("div",null,l)}const F=s(t,[["render",p]]);export{y as __pageData,F as default}; diff --git a/assets/dev_api_bot_lifespan.md.B4hpMOqt.js b/assets/dev_api_bot_lifespan.md.B_vxVvHa.js similarity index 53% rename from assets/dev_api_bot_lifespan.md.B4hpMOqt.js rename to assets/dev_api_bot_lifespan.md.B_vxVvHa.js index 70578a4c..7d4ab0f3 100644 --- a/assets/dev_api_bot_lifespan.md.B4hpMOqt.js +++ b/assets/dev_api_bot_lifespan.md.B_vxVvHa.js @@ -1,114 +1,104 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const F=JSON.parse('{"title":"liteyuki.bot.lifespan","description":"","frontmatter":{"title":"liteyuki.bot.lifespan"},"headers":[],"relativePath":"dev/api/bot/lifespan.md","filePath":"zh/dev/api/bot/lifespan.md","lastUpdated":null}'),t={name:"dev/api/bot/lifespan.md"},e=n(`

liteyuki.bot.lifespan

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File : lifespan.py @Software: PyCharm

class Lifespan

def __init__(self) -> None

说明: 轻雪生命周期管理,启动、停止、重启

源代码在GitHub上查看
python
def __init__(self) -> None:
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const E=JSON.parse('{"title":"liteyuki.bot.lifespan","description":"","frontmatter":{"title":"liteyuki.bot.lifespan"},"headers":[],"relativePath":"dev/api/bot/lifespan.md","filePath":"zh/dev/api/bot/lifespan.md","lastUpdated":null}'),t={name:"dev/api/bot/lifespan.md"},e=n(`

liteyuki.bot.lifespan

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File : lifespan.py @Software: PyCharm

var SYNC_LIFESPAN_FUNC

  • 说明: 同步生命周期函数

  • 类型: TypeAlias

  • 默认值: Callable[[], Any]

var ASYNC_LIFESPAN_FUNC

  • 说明: 异步生命周期函数

  • 类型: TypeAlias

  • 默认值: Callable[[], Awaitable[Any]]

var LIFESPAN_FUNC

  • 说明: 生命周期函数

  • 类型: TypeAlias

  • 默认值: SYNC_LIFESPAN_FUNC | ASYNC_LIFESPAN_FUNC

var SYNC_PROCESS_LIFESPAN_FUNC

  • 说明: 同步进程生命周期函数

  • 类型: TypeAlias

  • 默认值: Callable[[str], Any]

var ASYNC_PROCESS_LIFESPAN_FUNC

  • 说明: 异步进程生命周期函数

  • 类型: TypeAlias

  • 默认值: Callable[[str], Awaitable[Any]]

var PROCESS_LIFESPAN_FUNC

  • 说明: 进程函数

  • 类型: TypeAlias

  • 默认值: SYNC_PROCESS_LIFESPAN_FUNC | ASYNC_PROCESS_LIFESPAN_FUNC

class Lifespan

def __init__(self) -> None

说明: 轻雪生命周期管理,启动、停止、重启

源代码在GitHub上查看
python
def __init__(self) -> None:
     """
         轻雪生命周期管理,启动、停止、重启
         """
     self.life_flag: int = 0
     self._before_start_funcs: list[LIFESPAN_FUNC] = []
     self._after_start_funcs: list[LIFESPAN_FUNC] = []
-    self._before_process_shutdown_funcs: list[LIFESPAN_FUNC] = []
+    self._before_process_shutdown_funcs: list[PROCESS_LIFESPAN_FUNC] = []
     self._after_shutdown_funcs: list[LIFESPAN_FUNC] = []
-    self._before_process_restart_funcs: list[LIFESPAN_FUNC] = []
-    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

async def run_funcs(funcs: list[ASYNC_LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None

说明: 并发运行异步函数

参数:

  • funcs:
源代码在GitHub上查看
python
@staticmethod
-async def run_funcs(funcs: list[ASYNC_LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:
+    self._before_process_restart_funcs: list[PROCESS_LIFESPAN_FUNC] = []
+    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

async def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None

说明: 并发运行异步函数

参数:

源代码在GitHub上查看
python
@staticmethod
+async def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:
     """
         并发运行异步函数
         Args:
-            funcs:
+            funcs ([\`Sequence\`](https%3A//docs.python.org/3/library/typing.html#typing.Sequence)[[\`ASYNC_LIFESPAN_FUNC\`](#var-lifespan-func) | [\`PROCESS_LIFESPAN_FUNC\`](#var-process-lifespan-func)]): 函数列表
         Returns:
         """
-    loop = asyncio.get_running_loop()
     tasks = [func(*args, **kwargs) if is_coroutine_callable(func) else async_wrapper(func)(*args, **kwargs) for func in funcs]
-    await asyncio.gather(*tasks)

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册启动时的函数

参数:

  • func:

返回: LIFESPAN_FUNC:

源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    await asyncio.gather(*tasks)

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册启动时的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动时的函数
         Args:
-            func:
+            func ([\`LIFESPAN_FUNC\`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [\`LIFESPAN_FUNC\`](#var-lifespan-func): 生命周期函数
         """
     self._before_start_funcs.append(func)
-    return func

def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册启动时的函数

参数:

  • func:

返回: LIFESPAN_FUNC:

源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册启动时的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动时的函数
         Args:
-            func:
+            func ([\`LIFESPAN_FUNC\`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [\`LIFESPAN_FUNC\`](#var-lifespan-func): 生命周期函数
         """
     self._after_start_funcs.append(func)
-    return func

def on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册停止前的函数

参数:

  • func:

返回: LIFESPAN_FUNC:

源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

说明: 注册进程停止前的函数

参数:

返回: PROCESS_LIFESPAN_FUNC: 进程生命周期函数

源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
-        注册停止前的函数
+        注册进程停止前的函数
         Args:
-            func:
+            func ([\`PROCESS_LIFESPAN_FUNC\`](#var-process-lifespan-func)): 进程生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [\`PROCESS_LIFESPAN_FUNC\`](#var-process-lifespan-func): 进程生命周期函数
         """
     self._before_process_shutdown_funcs.append(func)
-    return func

def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册停止后的函数

参数:

  • func:

返回: LIFESPAN_FUNC:

源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册停止后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册停止后的函数
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
-
+            [\`LIFESPAN_FUNC\`](#var-lifespan-func): 生命周期函数
         """
     self._after_shutdown_funcs.append(func)
-    return func

def on_before_process_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册重启时的函数

参数:

  • func:

返回: LIFESPAN_FUNC:

源代码在GitHub上查看
python
def on_before_process_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

说明: 注册进程重启前的函数

参数:

返回: PROCESS_LIFESPAN_FUNC: 进程生命周期函数

源代码在GitHub上查看
python
def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
-        注册重启时的函数
+        注册进程重启前的函数
         Args:
-            func:
+            func ([\`PROCESS_LIFESPAN_FUNC\`](#var-process-lifespan-func)): 进程生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [\`PROCESS_LIFESPAN_FUNC\`](#var-process-lifespan-func): 进程生命周期函数
         """
     self._before_process_restart_funcs.append(func)
-    return func

def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册重启后的函数

参数:

  • func:

返回: LIFESPAN_FUNC:

源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册重启后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册重启后的函数
         Args:
-            func:
+            func ([\`LIFESPAN_FUNC\`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [\`LIFESPAN_FUNC\`](#var-lifespan-func): 生命周期函数
         """
     self._after_restart_funcs.append(func)
-    return func

async def before_start(self) -> None

说明: 启动前

源代码在GitHub上查看
python
async def before_start(self) -> None:
+    return func

async def before_start(self) -> None

说明: 启动前钩子

源代码在GitHub上查看
python
async def before_start(self) -> None:
     """
-        启动前
-        Returns:
+        启动前钩子
         """
     logger.debug('Running before_start functions')
-    await self.run_funcs(self._before_start_funcs)

async def after_start(self) -> None

说明: 启动后

源代码在GitHub上查看
python
async def after_start(self) -> None:
+    await self.run_funcs(self._before_start_funcs)

async def after_start(self) -> None

说明: 启动后钩子

源代码在GitHub上查看
python
async def after_start(self) -> None:
     """
-        启动后
-        Returns:
+        启动后钩子
         """
     logger.debug('Running after_start functions')
-    await self.run_funcs(self._after_start_funcs)

async def before_process_shutdown(self) -> None

说明: 停止前

源代码在GitHub上查看
python
async def before_process_shutdown(self) -> None:
+    await self.run_funcs(self._after_start_funcs)

async def before_process_shutdown(self) -> None

说明: 停止前钩子

源代码在GitHub上查看
python
async def before_process_shutdown(self) -> None:
     """
-        停止前
-        Returns:
+        停止前钩子
         """
     logger.debug('Running before_shutdown functions')
-    await self.run_funcs(self._before_process_shutdown_funcs)

async def after_shutdown(self) -> None

说明: 停止后

源代码在GitHub上查看
python
async def after_shutdown(self) -> None:
+    await self.run_funcs(self._before_process_shutdown_funcs)

async def after_shutdown(self) -> None

说明: 停止后钩子 未实现

源代码在GitHub上查看
python
async def after_shutdown(self) -> None:
     """
-        停止后
-        Returns:
+        停止后钩子 未实现
         """
     logger.debug('Running after_shutdown functions')
-    await self.run_funcs(self._after_shutdown_funcs)

async def before_process_restart(self) -> None

说明: 重启前

源代码在GitHub上查看
python
async def before_process_restart(self) -> None:
+    await self.run_funcs(self._after_shutdown_funcs)

async def before_process_restart(self) -> None

说明: 重启前钩子

源代码在GitHub上查看
python
async def before_process_restart(self) -> None:
     """
-        重启前
-        Returns:
+        重启前钩子
         """
     logger.debug('Running before_restart functions')
-    await self.run_funcs(self._before_process_restart_funcs)

async def after_restart(self) -> None

说明: 重启后

源代码在GitHub上查看
python
async def after_restart(self) -> None:
+    await self.run_funcs(self._before_process_restart_funcs)

async def after_restart(self) -> None

说明: 重启后钩子 未实现

源代码在GitHub上查看
python
async def after_restart(self) -> None:
     """
-        重启后
-        Returns:
-
+        重启后钩子 未实现
         """
     logger.debug('Running after_restart functions')
-    await self.run_funcs(self._after_restart_funcs)
`,67),l=[e];function p(h,k,r,o,d,g){return a(),i("div",null,l)}const c=s(t,[["render",p]]);export{F as __pageData,c as default}; + await self.run_funcs(self._after_restart_funcs)
`,79),l=[e];function p(h,k,r,o,d,c){return a(),i("div",null,l)}const u=s(t,[["render",p]]);export{E as __pageData,u as default}; diff --git a/assets/dev_api_bot_lifespan.md.B4hpMOqt.lean.js b/assets/dev_api_bot_lifespan.md.B_vxVvHa.lean.js similarity index 53% rename from assets/dev_api_bot_lifespan.md.B4hpMOqt.lean.js rename to assets/dev_api_bot_lifespan.md.B_vxVvHa.lean.js index a4bc1b67..70aed1d0 100644 --- a/assets/dev_api_bot_lifespan.md.B4hpMOqt.lean.js +++ b/assets/dev_api_bot_lifespan.md.B_vxVvHa.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const F=JSON.parse('{"title":"liteyuki.bot.lifespan","description":"","frontmatter":{"title":"liteyuki.bot.lifespan"},"headers":[],"relativePath":"dev/api/bot/lifespan.md","filePath":"zh/dev/api/bot/lifespan.md","lastUpdated":null}'),t={name:"dev/api/bot/lifespan.md"},e=n("",67),l=[e];function p(h,k,r,o,d,g){return a(),i("div",null,l)}const c=s(t,[["render",p]]);export{F as __pageData,c as default}; +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const E=JSON.parse('{"title":"liteyuki.bot.lifespan","description":"","frontmatter":{"title":"liteyuki.bot.lifespan"},"headers":[],"relativePath":"dev/api/bot/lifespan.md","filePath":"zh/dev/api/bot/lifespan.md","lastUpdated":null}'),t={name:"dev/api/bot/lifespan.md"},e=n("",79),l=[e];function p(h,k,r,o,d,c){return a(),i("div",null,l)}const u=s(t,[["render",p]]);export{E as __pageData,u as default}; diff --git a/assets/dev_api_comm_channel.md.CNJvRyvp.lean.js b/assets/dev_api_comm_channel.md.CNJvRyvp.lean.js deleted file mode 100644 index a3bbd77e..00000000 --- a/assets/dev_api_comm_channel.md.CNJvRyvp.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const c=JSON.parse('{"title":"liteyuki.comm.channel","description":"","frontmatter":{"title":"liteyuki.comm.channel"},"headers":[],"relativePath":"dev/api/comm/channel.md","filePath":"zh/dev/api/comm/channel.md","lastUpdated":null}'),t={name:"dev/api/comm/channel.md"},l=n("",78),h=[l];function e(k,p,r,d,E,g){return a(),i("div",null,h)}const F=s(t,[["render",e]]);export{c as __pageData,F as default}; diff --git a/assets/dev_api_comm_channel.md.CNJvRyvp.js b/assets/dev_api_comm_channel.md.D9FVh_nD.js similarity index 57% rename from assets/dev_api_comm_channel.md.CNJvRyvp.js rename to assets/dev_api_comm_channel.md.D9FVh_nD.js index 258b4b00..02276554 100644 --- a/assets/dev_api_comm_channel.md.CNJvRyvp.js +++ b/assets/dev_api_comm_channel.md.D9FVh_nD.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const c=JSON.parse('{"title":"liteyuki.comm.channel","description":"","frontmatter":{"title":"liteyuki.comm.channel"},"headers":[],"relativePath":"dev/api/comm/channel.md","filePath":"zh/dev/api/comm/channel.md","lastUpdated":null}'),t={name:"dev/api/comm/channel.md"},l=n(`

liteyuki.comm.channel

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/26 下午11:21 @Author : snowykami @Email : snowykami@outlook.com @File : channel_.py @Software: PyCharm

本模块定义了一个通用的通道类,用于进程间通信

class Channel(Generic[T])

def __init__(self, name: str, type_check: Optional[bool] = None)

说明: 初始化通道

参数:

  • name: 通道ID
  • type_check: 是否开启类型检查, 若为空,则传入泛型默认开启,否则默认关闭
源代码在GitHub上查看
python
def __init__(self, name: str, type_check: Optional[bool]=None):
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o=JSON.parse('{"title":"liteyuki.comm.channel","description":"","frontmatter":{"title":"liteyuki.comm.channel"},"headers":[],"relativePath":"dev/api/comm/channel.md","filePath":"zh/dev/api/comm/channel.md","lastUpdated":null}'),l={name:"dev/api/comm/channel.md"},e=n(`

liteyuki.comm.channel

说明: 本模块定义了一个通用的通道类,用于进程间通信

var SYNC_ON_RECEIVE_FUNC

  • 说明: 同步接收函数

  • 类型: TypeAlias

  • 默认值: Callable[[T], Any]

var ASYNC_ON_RECEIVE_FUNC

  • 说明: 异步接收函数

  • 类型: TypeAlias

  • 默认值: Callable[[T], Coroutine[Any, Any, Any]]

var ON_RECEIVE_FUNC

  • 说明: 接收函数

  • 类型: TypeAlias

  • 默认值: SYNC_ON_RECEIVE_FUNC | ASYNC_ON_RECEIVE_FUNC

var SYNC_FILTER_FUNC

  • 说明: 同步过滤函数

  • 类型: TypeAlias

  • 默认值: Callable[[T], bool]

var ASYNC_FILTER_FUNC

  • 说明: 异步过滤函数

  • 类型: TypeAlias

  • 默认值: Callable[[T], Coroutine[Any, Any, bool]]

var FILTER_FUNC

  • 说明: 过滤函数

  • 类型: TypeAlias

  • 默认值: SYNC_FILTER_FUNC | ASYNC_FILTER_FUNC

class Channel(Generic[T])

def __init__(self, name: str, type_check: Optional[bool] = None)

说明: 初始化通道

参数:

  • name: 通道ID
  • type_check: 是否开启类型检查, 若为空,则传入泛型默认开启,否则默认关闭
源代码在GitHub上查看
python
def __init__(self, name: str, type_check: Optional[bool]=None):
     """
         初始化通道
         Args:
@@ -26,44 +26,11 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const c
         _channel[name] = self
         logger.debug(f'Channel {name} initialized in main process')
     else:
-        logger.debug(f'Channel {name} initialized in sub process, should manually set in main process')

def _get_generic_type(self) -> Optional[type]

说明: 获取通道传递泛型类型

返回: Optional[type]: 泛型类型

源代码在GitHub上查看
python
def _get_generic_type(self) -> Optional[type]:
-    """
-        获取通道传递泛型类型
-
-        Returns:
-            Optional[type]: 泛型类型
-        """
-    if hasattr(self, '__orig_class__'):
-        return get_args(self.__orig_class__)[0]
-    return None

def _validate_structure(self, data: Any, structure: type) -> bool

说明: 验证数据结构

参数:

  • data: 数据
  • structure: 结构

返回: bool: 是否通过验证

源代码在GitHub上查看
python
def _validate_structure(self, data: Any, structure: type) -> bool:
-    """
-        验证数据结构
-        Args:
-            data: 数据
-            structure: 结构
-
-        Returns:
-            bool: 是否通过验证
-        """
-    if isinstance(structure, type):
-        return isinstance(data, structure)
-    elif isinstance(structure, tuple):
-        if not isinstance(data, tuple) or len(data) != len(structure):
-            return False
-        return all((self._validate_structure(d, s) for d, s in zip(data, structure)))
-    elif isinstance(structure, list):
-        if not isinstance(data, list):
-            return False
-        return all((self._validate_structure(d, structure[0]) for d in data))
-    elif isinstance(structure, dict):
-        if not isinstance(data, dict):
-            return False
-        return all((k in data and self._validate_structure(data[k], structure[k]) for k in structure))
-    return False

def send(self, data: T)

说明: 发送数据,发送函数为同步函数,没有异步的必要

参数:

  • data: 数据
源代码在GitHub上查看
python
def send(self, data: T):
+        logger.debug(f'Channel {name} initialized in sub process, should manually set in main process')

def send(self, data: T)

说明: 发送数据,发送函数为同步函数,没有异步的必要

参数:

  • data (T): 数据
源代码在GitHub上查看
python
def send(self, data: T):
     """
         发送数据,发送函数为同步函数,没有异步的必要
         Args:
-            data: 数据
+            data (T): 数据
         """
     if self.type_check:
         _type = self._get_generic_type()
@@ -71,30 +38,33 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const c
             raise TypeError(f'Data must be an instance of {_type}, {type(data)} found')
     if self._closed:
         raise RuntimeError('Cannot send to a closed channel_')
-    self.conn_send.send(data)

def receive(self) -> T

说明: 同步接收数据,会阻塞线程

源代码在GitHub上查看
python
def receive(self) -> T:
+    self.conn_send.send(data)

def receive(self) -> T

说明: 同步接收数据,会阻塞线程

返回: T: 数据

源代码在GitHub上查看
python
def receive(self) -> T:
     """
         同步接收数据,会阻塞线程
-        Args:
+        Returns:
+            T: 数据
         """
     if self._closed:
         raise RuntimeError('Cannot receive from a closed channel_')
     while True:
         data = self.conn_recv.recv()
-        return data

async def async_receive(self) -> T

说明: 异步接收数据,会挂起等待

源代码在GitHub上查看
python
async def async_receive(self) -> T:
+        return data

async def async_receive(self) -> T

说明: 异步接收数据,会挂起等待

返回: T: 数据

源代码在GitHub上查看
python
async def async_receive(self) -> T:
     """
         异步接收数据,会挂起等待
+        Returns:
+            T: 数据
         """
     print('等待接收数据')
     loop = asyncio.get_running_loop()
     data = await loop.run_in_executor(None, self.receive)
     print('接收到数据')
-    return data

def on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]

说明: 接收数据并执行函数

参数:

  • filter_func: 过滤函数,为None则不过滤

返回: 装饰器,装饰一个函数在接收到数据后执行

源代码在GitHub上查看
python
def on_receive(self, filter_func: Optional[FILTER_FUNC]=None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]:
+    return data

def on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]

说明: 接收数据并执行函数

参数:

返回: Callable[[Callable[[T], Any]], Callable[[T], Any]]: 装饰器

源代码在GitHub上查看
python
def on_receive(self, filter_func: Optional[FILTER_FUNC]=None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]:
     """
         接收数据并执行函数
         Args:
-            filter_func: 过滤函数,为None则不过滤
+            filter_func ([\`Optional\`](https%3A//docs.python.org/3/library/typing.html#typing.Optional)[[\`FILTER_FUNC\`](#var-FILTER_FUNC)], optional): 过滤函数. Defaults to None.
         Returns:
-            装饰器,装饰一个函数在接收到数据后执行
+            Callable[[Callable[[T], Any]], Callable[[T], Any]]: 装饰器
         """
     if not IS_MAIN_PROCESS:
         raise RuntimeError('on_receive can only be used in main process')
@@ -120,33 +90,12 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const c
             self._on_sub_receive_func_ids.append(_func_id)
         _func_id += 1
         return func
-    return decorator

async def _run_on_receive_funcs(self, data: Any)

说明: 运行接收函数

参数:

  • data: 数据
源代码在GitHub上查看
python
async def _run_on_receive_funcs(self, data: Any):
-    """
-        运行接收函数
-        Args:
-            data: 数据
-        """
-    if IS_MAIN_PROCESS:
-        [asyncio.create_task(_callback_funcs[func_id](data)) for func_id in self._on_main_receive_func_ids]
-    else:
-        [asyncio.create_task(_callback_funcs[func_id](data)) for func_id in self._on_sub_receive_func_ids]

async def start_receive_loop(self)

说明: 开始接收数据 会自动判断主进程和子进程,需要在对应进程都调度一次

源代码在GitHub上查看
python
async def start_receive_loop(self):
-    """
-        开始接收数据
-        会自动判断主进程和子进程,需要在对应进程都调度一次
-        """
-    if len(self._on_main_receive_func_ids) == 0:
-        logger.warning(f'No on_receive function registered for {self.name}')
-        return
-    self.is_receive_loop_running = True
-    logger.debug(f'Starting receive loop for {self.name}')
-    while not self._closed:
-        data = await self.async_receive()
-        await self._run_on_receive_funcs(data)

var active_channel

  • 说明: 子进程可用的主动和被动通道

  • 类型: Channel

  • 默认值: Channel(name='active_channel')

var publish_channel

  • 说明: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • 类型: Channel[tuple[str, dict[str, Any]]]

  • 默认值: Channel(name='publish_channel')

var channel_deliver_active_channel

  • 说明: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • 类型: Channel[Channel[Any]]

  • 默认值: NO_DEFAULT

def set_channel(name: str, channel: Channel)

说明: 设置通道实例

参数:

  • name: 通道名称
  • channel: 通道实例
源代码在GitHub上查看
python
def set_channel(name: str, channel: 'Channel'):
+    return decorator

var active_channel

  • 说明: 子进程可用的主动和被动通道

  • 类型: Channel

  • 默认值: Channel(name='active_channel')

var passive_channel

  • 说明: 被动通道

  • 类型: Channel

  • 默认值: Channel(name='passive_channel')

var publish_channel

  • 说明: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • 类型: Channel[tuple[str, dict[str, Any]]]

  • 默认值: Channel(name='publish_channel')

var channel_deliver_active_channel

  • 说明: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • 类型: Channel[Channel[Any]]

  • 默认值: NO_DEFAULT

var channel_deliver_passive_channel

  • 说明: 被动通道传递通道

  • 类型: Channel[tuple[str, dict[str, Any]]]

  • 默认值: NO_DEFAULT

def set_channel(name: str, channel: Channel)

说明: 设置通道实例

参数:

  • name (str): 通道名称
  • channel (Channel): 通道实例
源代码在GitHub上查看
python
def set_channel(name: str, channel: 'Channel'):
     """
     设置通道实例
     Args:
-        name: 通道名称
-        channel: 通道实例
+        name ([\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 通道名称
+        channel ([\`Channel\`](#class-channel-generic-t)): 通道实例
     """
     if not isinstance(channel, Channel):
         raise TypeError(f'channel_ must be an instance of Channel, {type(channel)} found')
@@ -155,42 +104,44 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const c
             raise ValueError(f'Channel {name} already exists')
         _channel[name] = channel
     else:
-        channel_deliver_passive_channel.send(('set_channel', {'name': name, 'channel_': channel}))

def set_channels(channels: dict[str, Channel])

说明: 设置通道实例

参数:

  • channels: 通道名称
源代码在GitHub上查看
python
def set_channels(channels: dict[str, 'Channel']):
+        channel_deliver_passive_channel.send(('set_channel', {'name': name, 'channel_': channel}))

def set_channels(channels: dict[str, Channel])

说明: 设置通道实例

参数:

源代码在GitHub上查看
python
def set_channels(channels: dict[str, 'Channel']):
     """
     设置通道实例
     Args:
-        channels: 通道名称
+        channels ([\`dict\`](https%3A//docs.python.org/3/library/stdtypes.html#dict)[[\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str), [\`Channel\`](#class-channel-generic-t)]): 通道实例
     """
     for name, channel in channels.items():
-        set_channel(name, channel)

def get_channel(name: str) -> Channel

说明: 获取通道实例

参数:

  • name: 通道名称
源代码在GitHub上查看
python
def get_channel(name: str) -> 'Channel':
+        set_channel(name, channel)

def get_channel(name: str) -> Channel

说明: 获取通道实例

参数:

  • name (str): 通道名称

返回: Channel: 通道实例

源代码在GitHub上查看
python
def get_channel(name: str) -> 'Channel':
     """
     获取通道实例
     Args:
-        name: 通道名称
+        name ([\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 通道名称
     Returns:
+        [\`Channel\`](#class-channel-generic-t): 通道实例
     """
     if IS_MAIN_PROCESS:
         return _channel[name]
     else:
         recv_chan = Channel[Channel[Any]]('recv_chan')
         channel_deliver_passive_channel.send(('get_channel', {'name': name, 'recv_chan': recv_chan}))
-        return recv_chan.receive()

def get_channels() -> dict[str, Channel]

说明: 获取通道实例

源代码在GitHub上查看
python
def get_channels() -> dict[str, 'Channel']:
+        return recv_chan.receive()

def get_channels() -> dict[str, Channel]

说明: 获取通道实例们

返回: dict[str, Channel]: 通道实例

源代码在GitHub上查看
python
def get_channels() -> dict[str, 'Channel']:
     """
-    获取通道实例
+    获取通道实例们
     Returns:
+        [\`dict\`](https%3A//docs.python.org/3/library/stdtypes.html#dict)[[\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str), [\`Channel\`](#class-channel-generic-t)]: 通道实例
     """
     if IS_MAIN_PROCESS:
         return _channel
     else:
         recv_chan = Channel[dict[str, Channel[Any]]]('recv_chan')
         channel_deliver_passive_channel.send(('get_channels', {'recv_chan': recv_chan}))
-        return recv_chan.receive()

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')

def on_set_channel(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')
+        return recv_chan.receive()

var channel_deliver_active_channel

  • 说明: 主动通道传递通道

  • 默认值: Channel(name='channel_deliver_active_channel')

var channel_deliver_passive_channel

  • 说明: 被动通道传递通道

  • 默认值: Channel(name='channel_deliver_passive_channel')

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')

def on_set_channel(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')
 def on_set_channel(data: tuple[str, dict[str, Any]]):
     name, channel = (data[1]['name'], data[1]['channel_'])
-    set_channel(name, channel)

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')

def on_get_channel(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')
+    set_channel(name, channel)

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')

def on_get_channel(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')
 def on_get_channel(data: tuple[str, dict[str, Any]]):
     name, recv_chan = (data[1]['name'], data[1]['recv_chan'])
-    recv_chan.send(get_channel(name))

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')

def on_get_channels(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')
+    recv_chan.send(get_channel(name))

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')

def on_get_channels(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')
 def on_get_channels(data: tuple[str, dict[str, Any]]):
     recv_chan = data[1]['recv_chan']
-    recv_chan.send(get_channels())
`,78),h=[l];function e(k,p,r,d,E,g){return a(),i("div",null,h)}const F=s(t,[["render",e]]);export{c as __pageData,F as default}; + recv_chan.send(get_channels())
`,82),t=[e];function h(p,k,r,d,c,E){return a(),i("div",null,t)}const y=s(l,[["render",h]]);export{o as __pageData,y as default}; diff --git a/assets/dev_api_comm_channel.md.D9FVh_nD.lean.js b/assets/dev_api_comm_channel.md.D9FVh_nD.lean.js new file mode 100644 index 00000000..7222cf24 --- /dev/null +++ b/assets/dev_api_comm_channel.md.D9FVh_nD.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o=JSON.parse('{"title":"liteyuki.comm.channel","description":"","frontmatter":{"title":"liteyuki.comm.channel"},"headers":[],"relativePath":"dev/api/comm/channel.md","filePath":"zh/dev/api/comm/channel.md","lastUpdated":null}'),l={name:"dev/api/comm/channel.md"},e=n("",82),t=[e];function h(p,k,r,d,c,E){return a(),i("div",null,t)}const y=s(l,[["render",h]]);export{o as __pageData,y as default}; diff --git a/assets/dev_api_comm_event.md.C9P63b1v.js b/assets/dev_api_comm_event.md.C9P63b1v.js deleted file mode 100644 index b6bd9132..00000000 --- a/assets/dev_api_comm_event.md.C9P63b1v.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as t,o as e,a4 as i}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.comm.event","description":"","frontmatter":{"title":"liteyuki.comm.event"},"headers":[],"relativePath":"dev/api/comm/event.md","filePath":"zh/dev/api/comm/event.md","lastUpdated":null}'),s={name:"dev/api/comm/event.md"},n=i('

liteyuki.comm.event

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/26 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File : event.py @Software: PyCharm

class Event

def __init__(self, name: str, data: dict[str, Any])

源代码在GitHub上查看
python
def __init__(self, name: str, data: dict[str, Any]):\n    self.name = name\n    self.data = data
',6),l=[n];function r(h,o,d,k,p,c){return e(),t("div",null,l)}const _=a(s,[["render",r]]);export{y as __pageData,_ as default}; diff --git a/assets/dev_api_comm_event.md.C9P63b1v.lean.js b/assets/dev_api_comm_event.md.C9P63b1v.lean.js deleted file mode 100644 index 01c19a4c..00000000 --- a/assets/dev_api_comm_event.md.C9P63b1v.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as t,o as e,a4 as i}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.comm.event","description":"","frontmatter":{"title":"liteyuki.comm.event"},"headers":[],"relativePath":"dev/api/comm/event.md","filePath":"zh/dev/api/comm/event.md","lastUpdated":null}'),s={name:"dev/api/comm/event.md"},n=i("",6),l=[n];function r(h,o,d,k,p,c){return e(),t("div",null,l)}const _=a(s,[["render",r]]);export{y as __pageData,_ as default}; diff --git a/assets/dev_api_comm_event.md.MthZC-SE.js b/assets/dev_api_comm_event.md.MthZC-SE.js new file mode 100644 index 00000000..aedebd21 --- /dev/null +++ b/assets/dev_api_comm_event.md.MthZC-SE.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as t,a4 as i}from"./chunks/framework.C3o_UkTa.js";const _=JSON.parse('{"title":"liteyuki.comm.event","description":"","frontmatter":{"title":"liteyuki.comm.event"},"headers":[],"relativePath":"dev/api/comm/event.md","filePath":"zh/dev/api/comm/event.md","lastUpdated":null}'),e={name:"dev/api/comm/event.md"},n=i('

liteyuki.comm.event

说明: 本模块用于轻雪主进程和子进程之间的通信的事件类

class Event

def __init__(self, name: str, data: dict[str, Any])

源代码在GitHub上查看
python
def __init__(self, name: str, data: dict[str, Any]):\n    self.name = name\n    self.data = data
',5),l=[n];function h(d,r,o,p,k,c){return t(),a("div",null,l)}const y=s(e,[["render",h]]);export{_ as __pageData,y as default}; diff --git a/assets/dev_api_comm_event.md.MthZC-SE.lean.js b/assets/dev_api_comm_event.md.MthZC-SE.lean.js new file mode 100644 index 00000000..19f267fe --- /dev/null +++ b/assets/dev_api_comm_event.md.MthZC-SE.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as t,a4 as i}from"./chunks/framework.C3o_UkTa.js";const _=JSON.parse('{"title":"liteyuki.comm.event","description":"","frontmatter":{"title":"liteyuki.comm.event"},"headers":[],"relativePath":"dev/api/comm/event.md","filePath":"zh/dev/api/comm/event.md","lastUpdated":null}'),e={name:"dev/api/comm/event.md"},n=i("",5),l=[n];function h(d,r,o,p,k,c){return t(),a("div",null,l)}const y=s(e,[["render",h]]);export{_ as __pageData,y as default}; diff --git a/assets/dev_api_comm_socks_channel.md.i5OohqUe.js b/assets/dev_api_comm_socks_channel.md.BeJH6Jbo.js similarity index 75% rename from assets/dev_api_comm_socks_channel.md.i5OohqUe.js rename to assets/dev_api_comm_socks_channel.md.BeJH6Jbo.js index 4c61f886..86c90f2b 100644 --- a/assets/dev_api_comm_socks_channel.md.i5OohqUe.js +++ b/assets/dev_api_comm_socks_channel.md.BeJH6Jbo.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.C3o_UkTa.js";const u=JSON.parse('{"title":"liteyuki.comm.socks_channel","description":"","frontmatter":{"title":"liteyuki.comm.socks_channel"},"headers":[],"relativePath":"dev/api/comm/socks_channel.md","filePath":"zh/dev/api/comm/socks_channel.md","lastUpdated":null}'),n={name:"dev/api/comm/socks_channel.md"},t=e(`

liteyuki.comm.socks_channel

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/8/25 下午3:54 @Author : snowykami @Email : snowykami@outlook.com @File : channelv2.py @Software: PyCharm

class SocksChannel

def __init__(self, name: str)

说明: 初始化通道

参数:

  • name: 通道ID
源代码在GitHub上查看
python
def __init__(self, name: str):
+import{_ as s,c as a,o as i,a4 as n}from"./chunks/framework.C3o_UkTa.js";const u=JSON.parse('{"title":"liteyuki.comm.socks_channel","description":"","frontmatter":{"title":"liteyuki.comm.socks_channel"},"headers":[],"relativePath":"dev/api/comm/socks_channel.md","filePath":"zh/dev/api/comm/socks_channel.md","lastUpdated":null}'),e={name:"dev/api/comm/socks_channel.md"},t=n(`

liteyuki.comm.socks_channel

说明: 基于socket的通道

class SocksChannel

def __init__(self, name: str)

说明: 初始化通道

参数:

  • name: 通道ID
源代码在GitHub上查看
python
def __init__(self, name: str):
     """
         初始化通道
         Args:
@@ -7,20 +7,20 @@ import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.C3o_UkTa.js";const u
     self._name = name
     self._conn_send = None
     self._conn_recv = None
-    self._closed = False

def send(self, data)

说明: 发送数据

参数:

  • data: 数据
源代码在GitHub上查看
python
def send(self, data):
+    self._closed = False

def send(self, data)

说明: 发送数据

参数:

  • data: 数据
源代码在GitHub上查看
python
def send(self, data):
     """
         发送数据
         Args:
             data: 数据
         """
-    pass

def receive(self)

说明: 接收数据

返回: data: 数据

源代码在GitHub上查看
python
def receive(self):
+    pass

def receive(self)

说明: 接收数据

返回: data: 数据

源代码在GitHub上查看
python
def receive(self):
     """
         接收数据
         Returns:
             data: 数据
         """
-    pass

def close(self)

说明: 关闭通道

源代码在GitHub上查看
python
def close(self):
+    pass

def close(self)

说明: 关闭通道

源代码在GitHub上查看
python
def close(self):
     """
         关闭通道
         """
-    pass
`,21),l=[t];function h(p,k,o,r,d,c){return i(),a("div",null,l)}const y=s(n,[["render",h]]);export{u as __pageData,y as default}; + pass
`,20),l=[t];function h(p,k,o,d,c,r){return i(),a("div",null,l)}const y=s(e,[["render",h]]);export{u as __pageData,y as default}; diff --git a/assets/dev_api_comm_socks_channel.md.i5OohqUe.lean.js b/assets/dev_api_comm_socks_channel.md.BeJH6Jbo.lean.js similarity index 50% rename from assets/dev_api_comm_socks_channel.md.i5OohqUe.lean.js rename to assets/dev_api_comm_socks_channel.md.BeJH6Jbo.lean.js index 53c26e10..7e296316 100644 --- a/assets/dev_api_comm_socks_channel.md.i5OohqUe.lean.js +++ b/assets/dev_api_comm_socks_channel.md.BeJH6Jbo.lean.js @@ -1 +1 @@ -import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.C3o_UkTa.js";const u=JSON.parse('{"title":"liteyuki.comm.socks_channel","description":"","frontmatter":{"title":"liteyuki.comm.socks_channel"},"headers":[],"relativePath":"dev/api/comm/socks_channel.md","filePath":"zh/dev/api/comm/socks_channel.md","lastUpdated":null}'),n={name:"dev/api/comm/socks_channel.md"},t=e("",21),l=[t];function h(p,k,o,r,d,c){return i(),a("div",null,l)}const y=s(n,[["render",h]]);export{u as __pageData,y as default}; +import{_ as s,c as a,o as i,a4 as n}from"./chunks/framework.C3o_UkTa.js";const u=JSON.parse('{"title":"liteyuki.comm.socks_channel","description":"","frontmatter":{"title":"liteyuki.comm.socks_channel"},"headers":[],"relativePath":"dev/api/comm/socks_channel.md","filePath":"zh/dev/api/comm/socks_channel.md","lastUpdated":null}'),e={name:"dev/api/comm/socks_channel.md"},t=n("",20),l=[t];function h(p,k,o,d,c,r){return i(),a("div",null,l)}const y=s(e,[["render",h]]);export{u as __pageData,y as default}; diff --git a/assets/dev_api_comm_storage.md.CquSLWbc.js b/assets/dev_api_comm_storage.md.BspAlO8q.js similarity index 96% rename from assets/dev_api_comm_storage.md.CquSLWbc.js rename to assets/dev_api_comm_storage.md.BspAlO8q.js index b48ff03d..cd2724cd 100644 --- a/assets/dev_api_comm_storage.md.CquSLWbc.js +++ b/assets/dev_api_comm_storage.md.BspAlO8q.js @@ -126,7 +126,7 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o with cls._lock: if cls._instance is None: cls._instance = KeyValueStore() - return cls._instance

attr _instance = None

attr _lock = threading.Lock()

var _ref_count

  • 说明: import 引用计数, 防止获取空指针

  • 默认值: 0

@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')

def on_get(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')
+    return cls._instance

attr _instance = None

attr _lock = threading.Lock()

var shared_memory

  • 说明: 共享内存对象

  • 类型: KeyValueStore

  • 默认值: GlobalKeyValueStore.get_instance()

var _ref_count

  • 说明: import 引用计数, 防止获取空指针

  • 默认值: 0

@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')

def on_get(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')
 def on_get(data: tuple[str, dict[str, Any]]):
     key = data[1]['key']
     default = data[1]['default']
@@ -141,4 +141,4 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o
     shared_memory.delete(key)

@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get_all')

def on_get_all(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get_all')
 def on_get_all(data: tuple[str, dict[str, Any]]):
     recv_chan = data[1]['recv_chan']
-    recv_chan.send(shared_memory.get_all())
`,69),l=[e];function h(k,p,r,d,E,g){return a(),i("div",null,l)}const c=s(t,[["render",h]]);export{o as __pageData,c as default}; + recv_chan.send(shared_memory.get_all())`,71),l=[e];function h(k,p,r,d,E,g){return a(),i("div",null,l)}const c=s(t,[["render",h]]);export{o as __pageData,c as default}; diff --git a/assets/dev_api_comm_storage.md.CquSLWbc.lean.js b/assets/dev_api_comm_storage.md.BspAlO8q.lean.js similarity index 86% rename from assets/dev_api_comm_storage.md.CquSLWbc.lean.js rename to assets/dev_api_comm_storage.md.BspAlO8q.lean.js index 0b52e792..8d9bae53 100644 --- a/assets/dev_api_comm_storage.md.CquSLWbc.lean.js +++ b/assets/dev_api_comm_storage.md.BspAlO8q.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o=JSON.parse('{"title":"liteyuki.comm.storage","description":"","frontmatter":{"title":"liteyuki.comm.storage"},"headers":[],"relativePath":"dev/api/comm/storage.md","filePath":"zh/dev/api/comm/storage.md","lastUpdated":null}'),t={name:"dev/api/comm/storage.md"},e=n("",69),l=[e];function h(k,p,r,d,E,g){return a(),i("div",null,l)}const c=s(t,[["render",h]]);export{o as __pageData,c as default}; +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o=JSON.parse('{"title":"liteyuki.comm.storage","description":"","frontmatter":{"title":"liteyuki.comm.storage"},"headers":[],"relativePath":"dev/api/comm/storage.md","filePath":"zh/dev/api/comm/storage.md","lastUpdated":null}'),t={name:"dev/api/comm/storage.md"},e=n("",71),l=[e];function h(k,p,r,d,E,g){return a(),i("div",null,l)}const c=s(t,[["render",h]]);export{o as __pageData,c as default}; diff --git a/assets/dev_api_core_manager.md.DiZst2H3.js b/assets/dev_api_core_manager.md.DWLgtjP0.js similarity index 69% rename from assets/dev_api_core_manager.md.DiZst2H3.js rename to assets/dev_api_core_manager.md.DWLgtjP0.js index ae13bae2..f505e83b 100644 --- a/assets/dev_api_core_manager.md.DiZst2H3.js +++ b/assets/dev_api_core_manager.md.DWLgtjP0.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o=JSON.parse('{"title":"liteyuki.core.manager","description":"","frontmatter":{"title":"liteyuki.core.manager"},"headers":[],"relativePath":"dev/api/core/manager.md","filePath":"zh/dev/api/core/manager.md","lastUpdated":null}'),e={name:"dev/api/core/manager.md"},l=n(`

liteyuki.core.manager

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/27 上午11:12 @Author : snowykami @Email : snowykami@outlook.com @File : manager.py @Software: PyCharm

class ChannelDeliver

def __init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]])

源代码在GitHub上查看
python
def __init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]]):
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o=JSON.parse('{"title":"liteyuki.core.manager","description":"","frontmatter":{"title":"liteyuki.core.manager"},"headers":[],"relativePath":"dev/api/core/manager.md","filePath":"zh/dev/api/core/manager.md","lastUpdated":null}'),e={name:"dev/api/core/manager.md"},t=n(`

liteyuki.core.manager

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/27 上午11:12 @Author : snowykami @Email : snowykami@outlook.com @File : manager.py @Software: PyCharm

class ChannelDeliver

def __init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]])

源代码在GitHub上查看
python
def __init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]]):
     self.active = active
     self.passive = passive
     self.channel_deliver_active = channel_deliver_active
@@ -6,38 +6,7 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o
     self.publish = publish

class ProcessManager

def __init__(self, lifespan: Lifespan)

源代码在GitHub上查看
python
def __init__(self, lifespan: 'Lifespan'):
     self.lifespan = lifespan
     self.targets: dict[str, tuple[Callable, tuple, dict]] = {}
-    self.processes: dict[str, Process] = {}

async def _run_process(self, name: str)

说明: 开启后自动监控进程,并添加到进程字典中,会阻塞,请创建task

参数:

  • name:
源代码在GitHub上查看
python
async def _run_process(self, name: str):
-    """
-        开启后自动监控进程,并添加到进程字典中,会阻塞,请创建task
-        Args:
-            name:
-        Returns:
-        """
-    if name not in self.targets:
-        raise KeyError(f'Process {name} not found.')
-    chan_active = get_channel(f'{name}-active')
-
-    def _start_process():
-        process = Process(target=self.targets[name][0], args=self.targets[name][1], kwargs=self.targets[name][2], daemon=True)
-        self.processes[name] = process
-        process.start()
-    _start_process()
-    while True:
-        data = await chan_active.async_receive()
-        if data == 0:
-            logger.info(f'Stopping process {name}')
-            await self.lifespan.before_process_shutdown()
-            self.terminate(name)
-            break
-        elif data == 1:
-            logger.info(f'Restarting process {name}')
-            await self.lifespan.before_process_shutdown()
-            await self.lifespan.before_process_restart()
-            self.terminate(name)
-            _start_process()
-            continue
-        else:
-            logger.warning('Unknown data received, ignored.')

async def start_all(self)

说明: 对外启动方法,启动所有进程,创建asyncio task

源代码在GitHub上查看
python
async def start_all(self):
+    self.processes: dict[str, Process] = {}

async def start_all(self)

说明: 对外启动方法,启动所有进程,创建asyncio task

源代码在GitHub上查看
python
async def start_all(self):
     """
         对外启动方法,启动所有进程,创建asyncio task
         """
@@ -89,4 +58,4 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o
         """
     if name not in self.targets:
         logger.warning(f'Process {name} not found.')
-    return self.processes[name].is_alive()
`,36),t=[l];function h(k,p,r,d,E,g){return a(),i("div",null,t)}const c=s(e,[["render",h]]);export{o as __pageData,c as default}; + return self.processes[name].is_alive()
`,31),l=[t];function h(p,k,r,d,E,g){return a(),i("div",null,l)}const c=s(e,[["render",h]]);export{o as __pageData,c as default}; diff --git a/assets/dev_api_core_manager.md.DiZst2H3.lean.js b/assets/dev_api_core_manager.md.DWLgtjP0.lean.js similarity index 73% rename from assets/dev_api_core_manager.md.DiZst2H3.lean.js rename to assets/dev_api_core_manager.md.DWLgtjP0.lean.js index 19d57784..b92bda22 100644 --- a/assets/dev_api_core_manager.md.DiZst2H3.lean.js +++ b/assets/dev_api_core_manager.md.DWLgtjP0.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o=JSON.parse('{"title":"liteyuki.core.manager","description":"","frontmatter":{"title":"liteyuki.core.manager"},"headers":[],"relativePath":"dev/api/core/manager.md","filePath":"zh/dev/api/core/manager.md","lastUpdated":null}'),e={name:"dev/api/core/manager.md"},l=n("",36),t=[l];function h(k,p,r,d,E,g){return a(),i("div",null,t)}const c=s(e,[["render",h]]);export{o as __pageData,c as default}; +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o=JSON.parse('{"title":"liteyuki.core.manager","description":"","frontmatter":{"title":"liteyuki.core.manager"},"headers":[],"relativePath":"dev/api/core/manager.md","filePath":"zh/dev/api/core/manager.md","lastUpdated":null}'),e={name:"dev/api/core/manager.md"},t=n("",31),l=[t];function h(p,k,r,d,E,g){return a(),i("div",null,l)}const c=s(e,[["render",h]]);export{o as __pageData,c as default}; diff --git a/assets/dev_api_dev_observer.md.rNRTx952.js b/assets/dev_api_dev_observer.md.CLF08-bp.js similarity index 98% rename from assets/dev_api_dev_observer.md.rNRTx952.js rename to assets/dev_api_dev_observer.md.CLF08-bp.js index 9ce86d69..10b04471 100644 --- a/assets/dev_api_dev_observer.md.rNRTx952.js +++ b/assets/dev_api_dev_observer.md.CLF08-bp.js @@ -13,13 +13,13 @@ import{_ as s,c as i,o as e,a4 as a}from"./chunks/framework.C3o_UkTa.js";const g return func(*args, **kwargs) last_call_time = None return wrapper - return decorator

class CodeModifiedHandler(FileSystemEventHandler)

@debounce(1)

def on_modified(self, event)

源代码在GitHub上查看
python
@debounce(1)
+    return decorator

class CodeModifiedHandler(FileSystemEventHandler)

@debounce(1)

def on_modified(self, event)

源代码在GitHub上查看
python
@debounce(1)
 def on_modified(self, event):
-    raise NotImplementedError('on_modified must be implemented')

def on_created(self, event)

源代码在GitHub上查看
python
def on_created(self, event):
-    self.on_modified(event)

def on_deleted(self, event)

源代码在GitHub上查看
python
def on_deleted(self, event):
-    self.on_modified(event)

def on_moved(self, event)

源代码在GitHub上查看
python
def on_moved(self, event):
-    self.on_modified(event)

def on_any_event(self, event)

源代码在GitHub上查看
python
def on_any_event(self, event):
-    self.on_modified(event)

def on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]

说明: 注册文件系统变化监听器

参数:

  • directories: 监听目录们
  • recursive: 是否递归监听子目录
  • event_filter: 事件过滤器, 返回True则执行回调函数

返回: 装饰器,装饰一个函数在接收到数据后执行

源代码在GitHub上查看
python
def on_file_system_event(directories: tuple[str], recursive: bool=True, event_filter: FILTER_FUNC=None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]:
+    raise NotImplementedError('on_modified must be implemented')

def on_created(self, event)

源代码在GitHub上查看
python
def on_created(self, event):
+    self.on_modified(event)

def on_deleted(self, event)

源代码在GitHub上查看
python
def on_deleted(self, event):
+    self.on_modified(event)

def on_moved(self, event)

源代码在GitHub上查看
python
def on_moved(self, event):
+    self.on_modified(event)

def on_any_event(self, event)

源代码在GitHub上查看
python
def on_any_event(self, event):
+    self.on_modified(event)

def on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]

说明: 注册文件系统变化监听器

参数:

  • directories: 监听目录们
  • recursive: 是否递归监听子目录
  • event_filter: 事件过滤器, 返回True则执行回调函数

返回: 装饰器,装饰一个函数在接收到数据后执行

源代码在GitHub上查看
python
def on_file_system_event(directories: tuple[str], recursive: bool=True, event_filter: FILTER_FUNC=None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]:
     """
     注册文件系统变化监听器
     Args:
diff --git a/assets/dev_api_dev_observer.md.rNRTx952.lean.js b/assets/dev_api_dev_observer.md.CLF08-bp.lean.js
similarity index 100%
rename from assets/dev_api_dev_observer.md.rNRTx952.lean.js
rename to assets/dev_api_dev_observer.md.CLF08-bp.lean.js
diff --git a/assets/en_dev_api_bot_bot.md.D0tmeTXy.js b/assets/en_dev_api_bot_bot.md.DVWp_48b.js
similarity index 63%
rename from assets/en_dev_api_bot_bot.md.D0tmeTXy.js
rename to assets/en_dev_api_bot_bot.md.DVWp_48b.js
index 1a468851..b2260b83 100644
--- a/assets/en_dev_api_bot_bot.md.D0tmeTXy.js
+++ b/assets/en_dev_api_bot_bot.md.DVWp_48b.js
@@ -1,10 +1,8 @@
-import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"en/dev/api/bot/bot.md","filePath":"en/dev/api/bot/bot.md","lastUpdated":null}'),t={name:"en/dev/api/bot/bot.md"},e=n(`

liteyuki.bot

class LiteyukiBot

def __init__(self, *args, **kwargs) -> None

Description: 初始化轻雪实例

Arguments:

  • *args:
  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, *args, **kwargs) -> None:
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"en/dev/api/bot/bot.md","filePath":"en/dev/api/bot/bot.md","lastUpdated":null}'),t={name:"en/dev/api/bot/bot.md"},e=n(`

liteyuki.bot

class LiteyukiBot

def __init__(self, **kwargs) -> None

Description: 初始化轻雪实例

Arguments:

  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, **kwargs) -> None:
     """
         初始化轻雪实例
         Args:
-            *args:
             **kwargs: 配置
-
         """
     '常规操作'
     print_logo()
@@ -28,48 +26,27 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
     '信号处理'
     signal.signal(signal.SIGINT, self._handle_exit)
     signal.signal(signal.SIGTERM, self._handle_exit)
-    atexit.register(self.process_manager.terminate_all)

async def _run(self)

Description: 启动逻辑

Source code or View on GitHub
python
async def _run(self):
-    """
-        启动逻辑
-        """
-    await self.lifespan.before_start()
-    await self.process_manager.start_all()
-    await self.lifespan.after_start()
-    await self.keep_alive()

def run(self)

Description: 外部启动接口

Source code or View on GitHub
python
def run(self):
+    atexit.register(self.process_manager.terminate_all)

def run(self)

Description: 外部启动接口

Source code or View on GitHub
python
def run(self):
     """
         外部启动接口
         """
     try:
         asyncio.run(self._run())
     except KeyboardInterrupt:
-        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

Description: 保持轻雪运行

Source code or View on GitHub
python
async def keep_alive(self):
+        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

Description: 保持轻雪运行

Source code or View on GitHub
python
async def keep_alive(self):
     """
         保持轻雪运行
-        Returns:
-
         """
     try:
         while not self.stop_event.is_set():
             time.sleep(0.5)
     except KeyboardInterrupt:
         logger.info('Liteyuki is stopping...')
-        self.stop()

def _handle_exit(self, signum, frame)

Description: 信号处理

Arguments:

  • signum:
  • frame:
Source code or View on GitHub
python
def _handle_exit(self, signum, frame):
-    """
-        信号处理
-        Args:
-            signum:
-            frame:
-
-        Returns:
-
-        """
-    logger.info('Received signal, stopping all processes.')
-    self.stop()
-    sys.exit(0)

def restart(self, delay: int = 0)

Description: 重启轻雪本体

Source code or View on GitHub
python
def restart(self, delay: int=0):
+        self.stop()

def restart(self, delay: int = 0)

Description: 重启轻雪本体

Arguments:

  • delay (int, optional): 延迟重启时间. Defaults to 0.
Source code or View on GitHub
python
def restart(self, delay: int=0):
     """
         重启轻雪本体
-        Returns:
-
+        Args:
+            delay ([\`int\`](https%3A//docs.python.org/3/library/functions.html#int), optional): 延迟重启时间. Defaults to 0.
         """
     if self.call_restart_count < 1:
         executable = sys.executable
@@ -87,11 +64,11 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
         self.process_manager.terminate_all()
         threading.Thread(target=os.system, args=(f"{cmd} {executable} {' '.join(args)}",)).start()
         sys.exit(0)
-    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

Description: 停止轻雪

Arguments:

  • name: 进程名称, 默认为None, 所有进程
Source code or View on GitHub
python
def restart_process(self, name: Optional[str]=None):
+    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

Description: 停止轻雪

Arguments:

Source code or View on GitHub
python
def restart_process(self, name: Optional[str]=None):
     """
         停止轻雪
         Args:
-            name: 进程名称, 默认为None, 所有进程
+            name ([\`Optional\`](https%3A//docs.python.org/3/library/typing.html#typing.Optional)[[\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)]): 进程名. Defaults to None.
         Returns:
         """
     if name is not None:
@@ -100,106 +77,100 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
     else:
         for process_name in self.process_manager.processes:
             chan_active = get_channel(f'{process_name}-active')
-            chan_active.send(1)

def init(self, *args, **kwargs)

Description: 初始化轻雪, 自动调用

Source code or View on GitHub
python
def init(self, *args, **kwargs):
+            chan_active.send(1)

def init(self, *args, **kwargs)

Description: 初始化轻雪, 自动调用

Arguments:

  • *args: 参数
  • **kwargs: 关键字参数
Source code or View on GitHub
python
def init(self, *args, **kwargs):
     """
         初始化轻雪, 自动调用
-        Returns:
-
+        Args:
+            *args: 参数
+            **kwargs: 关键字参数
         """
-    self.init_logger()

def init_logger(self)

Source code or View on GitHub
python
def init_logger(self):
-    init_log(config=self.config)

def stop(self)

Description: 停止轻雪

Source code or View on GitHub
python
def stop(self):
+    self.init_logger()

def init_logger(self)

Description: 初始化日志

Source code or View on GitHub
python
def init_logger(self):
+    """
+        初始化日志
+        """
+    init_log(config=self.config)

def stop(self)

Description: 停止轻雪

Source code or View on GitHub
python
def stop(self):
     """
         停止轻雪
-        Returns:
-
         """
     self.stop_event.set()
-    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC)

Description: 注册启动前的函数

Arguments:

  • func:
Source code or View on GitHub
python
def on_before_start(self, func: LIFESPAN_FUNC):
+    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册启动前的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动前的函数
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

Description: 注册启动后的函数

Arguments:

  • func:
Source code or View on GitHub
python
def on_after_start(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

Description: 注册启动后的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_start(self, func: LIFESPAN_FUNC):
     """
         注册启动后的函数
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

Description: 注册停止后的函数:未实现

Arguments:

  • func:
Source code or View on GitHub
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

Description: 注册停止后的函数:未实现

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
     """
         注册停止后的函数:未实现
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: LIFESPAN_FUNC)

Description: 注册进程停止前的函数,为子进程停止时调用

Arguments:

  • func:
Source code or View on GitHub
python
def on_before_process_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)

Description: 注册进程停止前的函数,为子进程停止时调用

Arguments:

Return: PROCESS_LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC):
     """
         注册进程停止前的函数,为子进程停止时调用
         Args:
-            func:
-
+            func ([\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: LIFESPAN_FUNC)

Description: 注册进程重启前的函数,为子进程重启时调用

Arguments:

  • func:
Source code or View on GitHub
python
def on_before_process_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

Description: 注册进程重启前的函数,为子进程重启时调用

Arguments:

Return: PROCESS_LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
         注册进程重启前的函数,为子进程重启时调用
         Args:
-            func:
-
+            func ([\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

Description: 注册重启后的函数:未实现

Arguments:

  • func:
Source code or View on GitHub
python
def on_after_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

Description: 注册重启后的函数:未实现

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_restart(self, func: LIFESPAN_FUNC):
     """
         注册重启后的函数:未实现
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

Description: 获取轻雪实例

Return: LiteyukiBot: 当前的轻雪实例

Source code or View on GitHub
python
def get_bot() -> LiteyukiBot:
+    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

Description: 获取轻雪实例

Return: LiteyukiBot: 轻雪实例

Source code or View on GitHub
python
def get_bot() -> LiteyukiBot:
     """
     获取轻雪实例
-
     Returns:
-        LiteyukiBot: 当前的轻雪实例
+        [\`LiteyukiBot\`](#class-liteyukibot): 轻雪实例
     """
     if IS_MAIN_PROCESS:
         if _BOT_INSTANCE is None:
             raise RuntimeError('Liteyuki instance not initialized.')
         return _BOT_INSTANCE
     else:
-        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

Description: 获取配置

Arguments:

  • key: 配置键
  • default: 默认值

Return: Any: 配置值

Source code or View on GitHub
python
def get_config(key: str, default: Any=None) -> Any:
+        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

Description: 获取配置

Arguments:

  • key (str): 配置键
  • default (Any, optional): 默认值. Defaults to None.

Return: Any: 配置值

Source code or View on GitHub
python
def get_config(key: str, default: Any=None) -> Any:
     """
     获取配置
     Args:
-        key: 配置键
-        default: 默认值
-
+        key ([\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        default ([\`Any\`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
     Returns:
-        Any: 配置值
+        [\`Any\`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
-    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

Description: 获取配置,兼容旧版本

Arguments:

  • key: 配置键
  • compat_keys: 兼容键
  • default: 默认值

Return: Any: 配置值

Source code or View on GitHub
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
+    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

Description: 获取配置,兼容旧版本

Arguments:

  • key (str): 配置键
  • compat_keys (tuplestr): 兼容键
  • default (Any, optional): 默认值. Defaults to None.

Return: Any: 配置值

Source code or View on GitHub
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
     """
     获取配置,兼容旧版本
     Args:
-        key: 配置键
-        compat_keys: 兼容键
-        default: 默认值
+        key ([\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        compat_keys ([\`tuple\`](https%3A//docs.python.org/3/library/stdtypes.html#tuple)[\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 兼容键
+        default ([\`Any\`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
 
     Returns:
-        Any: 配置值
+        [\`Any\`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
     if key in get_bot().config:
         return get_bot().config[key]
@@ -207,5 +178,4 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
         if compat_key in get_bot().config:
             logger.warning(f'Config key "{compat_key}" will be deprecated, use "{key}" instead.')
             return get_bot().config[compat_key]
-    return default
Source code or View on GitHub
python
def print_logo():
-    print('\\x1b[34m' + '\\n     __        ______  ________  ________  __      __  __    __  __    __  ______ \\n    /  |      /      |/        |/        |/  \\\\    /  |/  |  /  |/  |  /  |/      |\\n    $$ |      $$$$$$/ $$$$$$$$/ $$$$$$$$/ $$  \\\\  /$$/ $$ |  $$ |$$ | /$$/ $$$$$$/ \\n    $$ |        $$ |     $$ |   $$ |__     $$  \\\\/$$/  $$ |  $$ |$$ |/$$/    $$ |  \\n    $$ |        $$ |     $$ |   $$    |     $$  $$/   $$ |  $$ |$$  $$<     $$ |  \\n    $$ |        $$ |     $$ |   $$$$$/       $$$$/    $$ |  $$ |$$$$$  \\\\    $$ |  \\n    $$ |_____  _$$ |_    $$ |   $$ |_____     $$ |    $$ \\\\__$$ |$$ |$$  \\\\  _$$ |_ \\n    $$       |/ $$   |   $$ |   $$       |    $$ |    $$    $$/ $$ | $$  |/ $$   |\\n    $$$$$$$$/ $$$$$$/    $$/    $$$$$$$$/     $$/      $$$$$$/  $$/   $$/ $$$$$$/ \\n                ' + '\\x1b[0m')
`,85),l=[e];function h(p,k,r,d,o,g){return a(),i("div",null,l)}const F=s(t,[["render",h]]);export{y as __pageData,F as default}; + return default
`,86),l=[e];function p(h,k,r,o,d,g){return a(),i("div",null,l)}const c=s(t,[["render",p]]);export{y as __pageData,c as default}; diff --git a/assets/en_dev_api_bot_bot.md.D0tmeTXy.lean.js b/assets/en_dev_api_bot_bot.md.DVWp_48b.lean.js similarity index 68% rename from assets/en_dev_api_bot_bot.md.D0tmeTXy.lean.js rename to assets/en_dev_api_bot_bot.md.DVWp_48b.lean.js index 582bfaa1..ac5fed28 100644 --- a/assets/en_dev_api_bot_bot.md.D0tmeTXy.lean.js +++ b/assets/en_dev_api_bot_bot.md.DVWp_48b.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"en/dev/api/bot/bot.md","filePath":"en/dev/api/bot/bot.md","lastUpdated":null}'),t={name:"en/dev/api/bot/bot.md"},e=n("",85),l=[e];function h(p,k,r,d,o,g){return a(),i("div",null,l)}const F=s(t,[["render",h]]);export{y as __pageData,F as default}; +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"en/dev/api/bot/bot.md","filePath":"en/dev/api/bot/bot.md","lastUpdated":null}'),t={name:"en/dev/api/bot/bot.md"},e=n("",86),l=[e];function p(h,k,r,o,d,g){return a(),i("div",null,l)}const c=s(t,[["render",p]]);export{y as __pageData,c as default}; diff --git a/assets/en_dev_api_bot_index.md.LrWFTh2D.js b/assets/en_dev_api_bot_index.md.D0jrKfDJ.js similarity index 63% rename from assets/en_dev_api_bot_index.md.LrWFTh2D.js rename to assets/en_dev_api_bot_index.md.D0jrKfDJ.js index 27bf00de..00b1dc36 100644 --- a/assets/en_dev_api_bot_index.md.LrWFTh2D.js +++ b/assets/en_dev_api_bot_index.md.D0jrKfDJ.js @@ -1,10 +1,8 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"en/dev/api/bot/index.md","filePath":"en/dev/api/bot/index.md","lastUpdated":null}'),t={name:"en/dev/api/bot/index.md"},e=n(`

liteyuki.bot

class LiteyukiBot

def __init__(self, *args, **kwargs) -> None

Description: 初始化轻雪实例

Arguments:

  • *args:
  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, *args, **kwargs) -> None:
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"en/dev/api/bot/index.md","filePath":"en/dev/api/bot/index.md","lastUpdated":null}'),t={name:"en/dev/api/bot/index.md"},e=n(`

liteyuki.bot

class LiteyukiBot

def __init__(self, **kwargs) -> None

Description: 初始化轻雪实例

Arguments:

  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, **kwargs) -> None:
     """
         初始化轻雪实例
         Args:
-            *args:
             **kwargs: 配置
-
         """
     '常规操作'
     print_logo()
@@ -28,48 +26,27 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
     '信号处理'
     signal.signal(signal.SIGINT, self._handle_exit)
     signal.signal(signal.SIGTERM, self._handle_exit)
-    atexit.register(self.process_manager.terminate_all)

async def _run(self)

Description: 启动逻辑

Source code or View on GitHub
python
async def _run(self):
-    """
-        启动逻辑
-        """
-    await self.lifespan.before_start()
-    await self.process_manager.start_all()
-    await self.lifespan.after_start()
-    await self.keep_alive()

def run(self)

Description: 外部启动接口

Source code or View on GitHub
python
def run(self):
+    atexit.register(self.process_manager.terminate_all)

def run(self)

Description: 外部启动接口

Source code or View on GitHub
python
def run(self):
     """
         外部启动接口
         """
     try:
         asyncio.run(self._run())
     except KeyboardInterrupt:
-        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

Description: 保持轻雪运行

Source code or View on GitHub
python
async def keep_alive(self):
+        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

Description: 保持轻雪运行

Source code or View on GitHub
python
async def keep_alive(self):
     """
         保持轻雪运行
-        Returns:
-
         """
     try:
         while not self.stop_event.is_set():
             time.sleep(0.5)
     except KeyboardInterrupt:
         logger.info('Liteyuki is stopping...')
-        self.stop()

def _handle_exit(self, signum, frame)

Description: 信号处理

Arguments:

  • signum:
  • frame:
Source code or View on GitHub
python
def _handle_exit(self, signum, frame):
-    """
-        信号处理
-        Args:
-            signum:
-            frame:
-
-        Returns:
-
-        """
-    logger.info('Received signal, stopping all processes.')
-    self.stop()
-    sys.exit(0)

def restart(self, delay: int = 0)

Description: 重启轻雪本体

Source code or View on GitHub
python
def restart(self, delay: int=0):
+        self.stop()

def restart(self, delay: int = 0)

Description: 重启轻雪本体

Arguments:

  • delay (int, optional): 延迟重启时间. Defaults to 0.
Source code or View on GitHub
python
def restart(self, delay: int=0):
     """
         重启轻雪本体
-        Returns:
-
+        Args:
+            delay ([\`int\`](https%3A//docs.python.org/3/library/functions.html#int), optional): 延迟重启时间. Defaults to 0.
         """
     if self.call_restart_count < 1:
         executable = sys.executable
@@ -87,11 +64,11 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
         self.process_manager.terminate_all()
         threading.Thread(target=os.system, args=(f"{cmd} {executable} {' '.join(args)}",)).start()
         sys.exit(0)
-    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

Description: 停止轻雪

Arguments:

  • name: 进程名称, 默认为None, 所有进程
Source code or View on GitHub
python
def restart_process(self, name: Optional[str]=None):
+    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

Description: 停止轻雪

Arguments:

Source code or View on GitHub
python
def restart_process(self, name: Optional[str]=None):
     """
         停止轻雪
         Args:
-            name: 进程名称, 默认为None, 所有进程
+            name ([\`Optional\`](https%3A//docs.python.org/3/library/typing.html#typing.Optional)[[\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)]): 进程名. Defaults to None.
         Returns:
         """
     if name is not None:
@@ -100,106 +77,100 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
     else:
         for process_name in self.process_manager.processes:
             chan_active = get_channel(f'{process_name}-active')
-            chan_active.send(1)

def init(self, *args, **kwargs)

Description: 初始化轻雪, 自动调用

Source code or View on GitHub
python
def init(self, *args, **kwargs):
+            chan_active.send(1)

def init(self, *args, **kwargs)

Description: 初始化轻雪, 自动调用

Arguments:

  • *args: 参数
  • **kwargs: 关键字参数
Source code or View on GitHub
python
def init(self, *args, **kwargs):
     """
         初始化轻雪, 自动调用
-        Returns:
-
+        Args:
+            *args: 参数
+            **kwargs: 关键字参数
         """
-    self.init_logger()

def init_logger(self)

Source code or View on GitHub
python
def init_logger(self):
-    init_log(config=self.config)

def stop(self)

Description: 停止轻雪

Source code or View on GitHub
python
def stop(self):
+    self.init_logger()

def init_logger(self)

Description: 初始化日志

Source code or View on GitHub
python
def init_logger(self):
+    """
+        初始化日志
+        """
+    init_log(config=self.config)

def stop(self)

Description: 停止轻雪

Source code or View on GitHub
python
def stop(self):
     """
         停止轻雪
-        Returns:
-
         """
     self.stop_event.set()
-    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC)

Description: 注册启动前的函数

Arguments:

  • func:
Source code or View on GitHub
python
def on_before_start(self, func: LIFESPAN_FUNC):
+    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册启动前的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动前的函数
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

Description: 注册启动后的函数

Arguments:

  • func:
Source code or View on GitHub
python
def on_after_start(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

Description: 注册启动后的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_start(self, func: LIFESPAN_FUNC):
     """
         注册启动后的函数
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

Description: 注册停止后的函数:未实现

Arguments:

  • func:
Source code or View on GitHub
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

Description: 注册停止后的函数:未实现

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
     """
         注册停止后的函数:未实现
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: LIFESPAN_FUNC)

Description: 注册进程停止前的函数,为子进程停止时调用

Arguments:

  • func:
Source code or View on GitHub
python
def on_before_process_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)

Description: 注册进程停止前的函数,为子进程停止时调用

Arguments:

Return: PROCESS_LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC):
     """
         注册进程停止前的函数,为子进程停止时调用
         Args:
-            func:
-
+            func ([\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: LIFESPAN_FUNC)

Description: 注册进程重启前的函数,为子进程重启时调用

Arguments:

  • func:
Source code or View on GitHub
python
def on_before_process_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

Description: 注册进程重启前的函数,为子进程重启时调用

Arguments:

Return: PROCESS_LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
         注册进程重启前的函数,为子进程重启时调用
         Args:
-            func:
-
+            func ([\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`PROCESS_LIFESPAN_FUNC\`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

Description: 注册重启后的函数:未实现

Arguments:

  • func:
Source code or View on GitHub
python
def on_after_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

Description: 注册重启后的函数:未实现

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_restart(self, func: LIFESPAN_FUNC):
     """
         注册重启后的函数:未实现
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [\`LIFESPAN_FUNC\`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

Description: 获取轻雪实例

Return: LiteyukiBot: 当前的轻雪实例

Source code or View on GitHub
python
def get_bot() -> LiteyukiBot:
+    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

Description: 获取轻雪实例

Return: LiteyukiBot: 轻雪实例

Source code or View on GitHub
python
def get_bot() -> LiteyukiBot:
     """
     获取轻雪实例
-
     Returns:
-        LiteyukiBot: 当前的轻雪实例
+        [\`LiteyukiBot\`](#class-liteyukibot): 轻雪实例
     """
     if IS_MAIN_PROCESS:
         if _BOT_INSTANCE is None:
             raise RuntimeError('Liteyuki instance not initialized.')
         return _BOT_INSTANCE
     else:
-        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

Description: 获取配置

Arguments:

  • key: 配置键
  • default: 默认值

Return: Any: 配置值

Source code or View on GitHub
python
def get_config(key: str, default: Any=None) -> Any:
+        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

Description: 获取配置

Arguments:

  • key (str): 配置键
  • default (Any, optional): 默认值. Defaults to None.

Return: Any: 配置值

Source code or View on GitHub
python
def get_config(key: str, default: Any=None) -> Any:
     """
     获取配置
     Args:
-        key: 配置键
-        default: 默认值
-
+        key ([\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        default ([\`Any\`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
     Returns:
-        Any: 配置值
+        [\`Any\`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
-    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

Description: 获取配置,兼容旧版本

Arguments:

  • key: 配置键
  • compat_keys: 兼容键
  • default: 默认值

Return: Any: 配置值

Source code or View on GitHub
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
+    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

Description: 获取配置,兼容旧版本

Arguments:

  • key (str): 配置键
  • compat_keys (tuplestr): 兼容键
  • default (Any, optional): 默认值. Defaults to None.

Return: Any: 配置值

Source code or View on GitHub
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
     """
     获取配置,兼容旧版本
     Args:
-        key: 配置键
-        compat_keys: 兼容键
-        default: 默认值
+        key ([\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        compat_keys ([\`tuple\`](https%3A//docs.python.org/3/library/stdtypes.html#tuple)[\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 兼容键
+        default ([\`Any\`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
 
     Returns:
-        Any: 配置值
+        [\`Any\`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
     if key in get_bot().config:
         return get_bot().config[key]
@@ -207,5 +178,4 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
         if compat_key in get_bot().config:
             logger.warning(f'Config key "{compat_key}" will be deprecated, use "{key}" instead.')
             return get_bot().config[compat_key]
-    return default
Source code or View on GitHub
python
def print_logo():
-    print('\\x1b[34m' + '\\n     __        ______  ________  ________  __      __  __    __  __    __  ______ \\n    /  |      /      |/        |/        |/  \\\\    /  |/  |  /  |/  |  /  |/      |\\n    $$ |      $$$$$$/ $$$$$$$$/ $$$$$$$$/ $$  \\\\  /$$/ $$ |  $$ |$$ | /$$/ $$$$$$/ \\n    $$ |        $$ |     $$ |   $$ |__     $$  \\\\/$$/  $$ |  $$ |$$ |/$$/    $$ |  \\n    $$ |        $$ |     $$ |   $$    |     $$  $$/   $$ |  $$ |$$  $$<     $$ |  \\n    $$ |        $$ |     $$ |   $$$$$/       $$$$/    $$ |  $$ |$$$$$  \\\\    $$ |  \\n    $$ |_____  _$$ |_    $$ |   $$ |_____     $$ |    $$ \\\\__$$ |$$ |$$  \\\\  _$$ |_ \\n    $$       |/ $$   |   $$ |   $$       |    $$ |    $$    $$/ $$ | $$  |/ $$   |\\n    $$$$$$$$/ $$$$$$/    $$/    $$$$$$$$/     $$/      $$$$$$/  $$/   $$/ $$$$$$/ \\n                ' + '\\x1b[0m')
`,85),l=[e];function h(p,k,r,d,o,g){return a(),i("div",null,l)}const F=s(t,[["render",h]]);export{y as __pageData,F as default}; + return default
`,86),l=[e];function p(h,k,r,o,d,g){return a(),i("div",null,l)}const c=s(t,[["render",p]]);export{y as __pageData,c as default}; diff --git a/assets/en_dev_api_bot_index.md.LrWFTh2D.lean.js b/assets/en_dev_api_bot_index.md.D0jrKfDJ.lean.js similarity index 67% rename from assets/en_dev_api_bot_index.md.LrWFTh2D.lean.js rename to assets/en_dev_api_bot_index.md.D0jrKfDJ.lean.js index 59d1aab4..0991903c 100644 --- a/assets/en_dev_api_bot_index.md.LrWFTh2D.lean.js +++ b/assets/en_dev_api_bot_index.md.D0jrKfDJ.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"en/dev/api/bot/index.md","filePath":"en/dev/api/bot/index.md","lastUpdated":null}'),t={name:"en/dev/api/bot/index.md"},e=n("",85),l=[e];function h(p,k,r,d,o,g){return a(),i("div",null,l)}const F=s(t,[["render",h]]);export{y as __pageData,F as default}; +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.bot","description":"","frontmatter":{"title":"liteyuki.bot","collapsed":true},"headers":[],"relativePath":"en/dev/api/bot/index.md","filePath":"en/dev/api/bot/index.md","lastUpdated":null}'),t={name:"en/dev/api/bot/index.md"},e=n("",86),l=[e];function p(h,k,r,o,d,g){return a(),i("div",null,l)}const c=s(t,[["render",p]]);export{y as __pageData,c as default}; diff --git a/assets/en_dev_api_bot_lifespan.md.EgH0pEuD.js b/assets/en_dev_api_bot_lifespan.md.CDgzjr91.js similarity index 53% rename from assets/en_dev_api_bot_lifespan.md.EgH0pEuD.js rename to assets/en_dev_api_bot_lifespan.md.CDgzjr91.js index cd82bb55..662ca605 100644 --- a/assets/en_dev_api_bot_lifespan.md.EgH0pEuD.js +++ b/assets/en_dev_api_bot_lifespan.md.CDgzjr91.js @@ -1,114 +1,104 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const u=JSON.parse('{"title":"liteyuki.bot.lifespan","description":"","frontmatter":{"title":"liteyuki.bot.lifespan"},"headers":[],"relativePath":"en/dev/api/bot/lifespan.md","filePath":"en/dev/api/bot/lifespan.md","lastUpdated":1725101868000}'),t={name:"en/dev/api/bot/lifespan.md"},e=n(`

liteyuki.bot.lifespan

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File : lifespan.py @Software: PyCharm

class Lifespan

def __init__(self) -> None

Description: 轻雪生命周期管理,启动、停止、重启

Source code or View on GitHub
python
def __init__(self) -> None:
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const u=JSON.parse('{"title":"liteyuki.bot.lifespan","description":"","frontmatter":{"title":"liteyuki.bot.lifespan"},"headers":[],"relativePath":"en/dev/api/bot/lifespan.md","filePath":"en/dev/api/bot/lifespan.md","lastUpdated":1725101868000}'),e={name:"en/dev/api/bot/lifespan.md"},t=n(`

liteyuki.bot.lifespan

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File : lifespan.py @Software: PyCharm

var SYNC_LIFESPAN_FUNC

  • Description: 同步生命周期函数

  • Type: TypeAlias

  • Default: Callable[[], Any]

var ASYNC_LIFESPAN_FUNC

  • Description: 异步生命周期函数

  • Type: TypeAlias

  • Default: Callable[[], Awaitable[Any]]

var LIFESPAN_FUNC

  • Description: 生命周期函数

  • Type: TypeAlias

  • Default: SYNC_LIFESPAN_FUNC | ASYNC_LIFESPAN_FUNC

var SYNC_PROCESS_LIFESPAN_FUNC

  • Description: 同步进程生命周期函数

  • Type: TypeAlias

  • Default: Callable[[str], Any]

var ASYNC_PROCESS_LIFESPAN_FUNC

  • Description: 异步进程生命周期函数

  • Type: TypeAlias

  • Default: Callable[[str], Awaitable[Any]]

var PROCESS_LIFESPAN_FUNC

  • Description: 进程函数

  • Type: TypeAlias

  • Default: SYNC_PROCESS_LIFESPAN_FUNC | ASYNC_PROCESS_LIFESPAN_FUNC

class Lifespan

def __init__(self) -> None

Description: 轻雪生命周期管理,启动、停止、重启

Source code or View on GitHub
python
def __init__(self) -> None:
     """
         轻雪生命周期管理,启动、停止、重启
         """
     self.life_flag: int = 0
     self._before_start_funcs: list[LIFESPAN_FUNC] = []
     self._after_start_funcs: list[LIFESPAN_FUNC] = []
-    self._before_process_shutdown_funcs: list[LIFESPAN_FUNC] = []
+    self._before_process_shutdown_funcs: list[PROCESS_LIFESPAN_FUNC] = []
     self._after_shutdown_funcs: list[LIFESPAN_FUNC] = []
-    self._before_process_restart_funcs: list[LIFESPAN_FUNC] = []
-    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

async def run_funcs(funcs: list[ASYNC_LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None

Description: 并发运行异步函数

Arguments:

  • funcs:
Source code or View on GitHub
python
@staticmethod
-async def run_funcs(funcs: list[ASYNC_LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:
+    self._before_process_restart_funcs: list[PROCESS_LIFESPAN_FUNC] = []
+    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

async def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None

Description: 并发运行异步函数

Arguments:

Source code or View on GitHub
python
@staticmethod
+async def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:
     """
         并发运行异步函数
         Args:
-            funcs:
+            funcs ([\`Sequence\`](https%3A//docs.python.org/3/library/typing.html#typing.Sequence)[[\`ASYNC_LIFESPAN_FUNC\`](#var-lifespan-func) | [\`PROCESS_LIFESPAN_FUNC\`](#var-process-lifespan-func)]): 函数列表
         Returns:
         """
-    loop = asyncio.get_running_loop()
     tasks = [func(*args, **kwargs) if is_coroutine_callable(func) else async_wrapper(func)(*args, **kwargs) for func in funcs]
-    await asyncio.gather(*tasks)

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册启动时的函数

Arguments:

  • func:

Return: LIFESPAN_FUNC:

Source code or View on GitHub
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    await asyncio.gather(*tasks)

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册启动时的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动时的函数
         Args:
-            func:
+            func ([\`LIFESPAN_FUNC\`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [\`LIFESPAN_FUNC\`](#var-lifespan-func): 生命周期函数
         """
     self._before_start_funcs.append(func)
-    return func

def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册启动时的函数

Arguments:

  • func:

Return: LIFESPAN_FUNC:

Source code or View on GitHub
python
def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册启动时的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动时的函数
         Args:
-            func:
+            func ([\`LIFESPAN_FUNC\`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [\`LIFESPAN_FUNC\`](#var-lifespan-func): 生命周期函数
         """
     self._after_start_funcs.append(func)
-    return func

def on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册停止前的函数

Arguments:

  • func:

Return: LIFESPAN_FUNC:

Source code or View on GitHub
python
def on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

Description: 注册进程停止前的函数

Arguments:

Return: PROCESS_LIFESPAN_FUNC: 进程生命周期函数

Source code or View on GitHub
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
-        注册停止前的函数
+        注册进程停止前的函数
         Args:
-            func:
+            func ([\`PROCESS_LIFESPAN_FUNC\`](#var-process-lifespan-func)): 进程生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [\`PROCESS_LIFESPAN_FUNC\`](#var-process-lifespan-func): 进程生命周期函数
         """
     self._before_process_shutdown_funcs.append(func)
-    return func

def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册停止后的函数

Arguments:

  • func:

Return: LIFESPAN_FUNC:

Source code or View on GitHub
python
def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册停止后的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册停止后的函数
         Args:
-            func:
-
+            func ([\`LIFESPAN_FUNC\`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
-
+            [\`LIFESPAN_FUNC\`](#var-lifespan-func): 生命周期函数
         """
     self._after_shutdown_funcs.append(func)
-    return func

def on_before_process_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册重启时的函数

Arguments:

  • func:

Return: LIFESPAN_FUNC:

Source code or View on GitHub
python
def on_before_process_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

Description: 注册进程重启前的函数

Arguments:

Return: PROCESS_LIFESPAN_FUNC: 进程生命周期函数

Source code or View on GitHub
python
def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
-        注册重启时的函数
+        注册进程重启前的函数
         Args:
-            func:
+            func ([\`PROCESS_LIFESPAN_FUNC\`](#var-process-lifespan-func)): 进程生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [\`PROCESS_LIFESPAN_FUNC\`](#var-process-lifespan-func): 进程生命周期函数
         """
     self._before_process_restart_funcs.append(func)
-    return func

def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册重启后的函数

Arguments:

  • func:

Return: LIFESPAN_FUNC:

Source code or View on GitHub
python
def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册重启后的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册重启后的函数
         Args:
-            func:
+            func ([\`LIFESPAN_FUNC\`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [\`LIFESPAN_FUNC\`](#var-lifespan-func): 生命周期函数
         """
     self._after_restart_funcs.append(func)
-    return func

async def before_start(self) -> None

Description: 启动前

Source code or View on GitHub
python
async def before_start(self) -> None:
+    return func

async def before_start(self) -> None

Description: 启动前钩子

Source code or View on GitHub
python
async def before_start(self) -> None:
     """
-        启动前
-        Returns:
+        启动前钩子
         """
     logger.debug('Running before_start functions')
-    await self.run_funcs(self._before_start_funcs)

async def after_start(self) -> None

Description: 启动后

Source code or View on GitHub
python
async def after_start(self) -> None:
+    await self.run_funcs(self._before_start_funcs)

async def after_start(self) -> None

Description: 启动后钩子

Source code or View on GitHub
python
async def after_start(self) -> None:
     """
-        启动后
-        Returns:
+        启动后钩子
         """
     logger.debug('Running after_start functions')
-    await self.run_funcs(self._after_start_funcs)

async def before_process_shutdown(self) -> None

Description: 停止前

Source code or View on GitHub
python
async def before_process_shutdown(self) -> None:
+    await self.run_funcs(self._after_start_funcs)

async def before_process_shutdown(self) -> None

Description: 停止前钩子

Source code or View on GitHub
python
async def before_process_shutdown(self) -> None:
     """
-        停止前
-        Returns:
+        停止前钩子
         """
     logger.debug('Running before_shutdown functions')
-    await self.run_funcs(self._before_process_shutdown_funcs)

async def after_shutdown(self) -> None

Description: 停止后

Source code or View on GitHub
python
async def after_shutdown(self) -> None:
+    await self.run_funcs(self._before_process_shutdown_funcs)

async def after_shutdown(self) -> None

Description: 停止后钩子 未实现

Source code or View on GitHub
python
async def after_shutdown(self) -> None:
     """
-        停止后
-        Returns:
+        停止后钩子 未实现
         """
     logger.debug('Running after_shutdown functions')
-    await self.run_funcs(self._after_shutdown_funcs)

async def before_process_restart(self) -> None

Description: 重启前

Source code or View on GitHub
python
async def before_process_restart(self) -> None:
+    await self.run_funcs(self._after_shutdown_funcs)

async def before_process_restart(self) -> None

Description: 重启前钩子

Source code or View on GitHub
python
async def before_process_restart(self) -> None:
     """
-        重启前
-        Returns:
+        重启前钩子
         """
     logger.debug('Running before_restart functions')
-    await self.run_funcs(self._before_process_restart_funcs)

async def after_restart(self) -> None

Description: 重启后

Source code or View on GitHub
python
async def after_restart(self) -> None:
+    await self.run_funcs(self._before_process_restart_funcs)

async def after_restart(self) -> None

Description: 重启后钩子 未实现

Source code or View on GitHub
python
async def after_restart(self) -> None:
     """
-        重启后
-        Returns:
-
+        重启后钩子 未实现
         """
     logger.debug('Running after_restart functions')
-    await self.run_funcs(self._after_restart_funcs)
`,67),l=[e];function p(h,k,r,o,d,g){return a(),i("div",null,l)}const E=s(t,[["render",p]]);export{u as __pageData,E as default}; + await self.run_funcs(self._after_restart_funcs)
`,79),l=[t];function p(h,r,k,o,d,c){return a(),i("div",null,l)}const E=s(e,[["render",p]]);export{u as __pageData,E as default}; diff --git a/assets/en_dev_api_bot_lifespan.md.EgH0pEuD.lean.js b/assets/en_dev_api_bot_lifespan.md.CDgzjr91.lean.js similarity index 60% rename from assets/en_dev_api_bot_lifespan.md.EgH0pEuD.lean.js rename to assets/en_dev_api_bot_lifespan.md.CDgzjr91.lean.js index 188301be..d6e1f45c 100644 --- a/assets/en_dev_api_bot_lifespan.md.EgH0pEuD.lean.js +++ b/assets/en_dev_api_bot_lifespan.md.CDgzjr91.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const u=JSON.parse('{"title":"liteyuki.bot.lifespan","description":"","frontmatter":{"title":"liteyuki.bot.lifespan"},"headers":[],"relativePath":"en/dev/api/bot/lifespan.md","filePath":"en/dev/api/bot/lifespan.md","lastUpdated":1725101868000}'),t={name:"en/dev/api/bot/lifespan.md"},e=n("",67),l=[e];function p(h,k,r,o,d,g){return a(),i("div",null,l)}const E=s(t,[["render",p]]);export{u as __pageData,E as default}; +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const u=JSON.parse('{"title":"liteyuki.bot.lifespan","description":"","frontmatter":{"title":"liteyuki.bot.lifespan"},"headers":[],"relativePath":"en/dev/api/bot/lifespan.md","filePath":"en/dev/api/bot/lifespan.md","lastUpdated":1725101868000}'),e={name:"en/dev/api/bot/lifespan.md"},t=n("",79),l=[t];function p(h,r,k,o,d,c){return a(),i("div",null,l)}const E=s(e,[["render",p]]);export{u as __pageData,E as default}; diff --git a/assets/en_dev_api_comm_channel.md.BLjPtV1B.lean.js b/assets/en_dev_api_comm_channel.md.BLjPtV1B.lean.js deleted file mode 100644 index 90218063..00000000 --- a/assets/en_dev_api_comm_channel.md.BLjPtV1B.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.comm.channel","description":"","frontmatter":{"title":"liteyuki.comm.channel"},"headers":[],"relativePath":"en/dev/api/comm/channel.md","filePath":"en/dev/api/comm/channel.md","lastUpdated":1725101868000}'),t={name:"en/dev/api/comm/channel.md"},l=n("",78),h=[l];function e(k,p,r,d,E,g){return a(),i("div",null,h)}const o=s(t,[["render",e]]);export{y as __pageData,o as default}; diff --git a/assets/en_dev_api_comm_channel.md.BLjPtV1B.js b/assets/en_dev_api_comm_channel.md.BY8yNiex.js similarity index 58% rename from assets/en_dev_api_comm_channel.md.BLjPtV1B.js rename to assets/en_dev_api_comm_channel.md.BY8yNiex.js index 4354d4b0..78cddc40 100644 --- a/assets/en_dev_api_comm_channel.md.BLjPtV1B.js +++ b/assets/en_dev_api_comm_channel.md.BY8yNiex.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.comm.channel","description":"","frontmatter":{"title":"liteyuki.comm.channel"},"headers":[],"relativePath":"en/dev/api/comm/channel.md","filePath":"en/dev/api/comm/channel.md","lastUpdated":1725101868000}'),t={name:"en/dev/api/comm/channel.md"},l=n(`

liteyuki.comm.channel

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/26 下午11:21 @Author : snowykami @Email : snowykami@outlook.com @File : channel_.py @Software: PyCharm

本模块定义了一个通用的通道类,用于进程间通信

class Channel(Generic[T])

def __init__(self, name: str, type_check: Optional[bool] = None)

Description: 初始化通道

Arguments:

  • name: 通道ID
  • type_check: 是否开启类型检查, 若为空,则传入泛型默认开启,否则默认关闭
Source code or View on GitHub
python
def __init__(self, name: str, type_check: Optional[bool]=None):
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const g=JSON.parse('{"title":"liteyuki.comm.channel","description":"","frontmatter":{"title":"liteyuki.comm.channel"},"headers":[],"relativePath":"en/dev/api/comm/channel.md","filePath":"en/dev/api/comm/channel.md","lastUpdated":1725101868000}'),e={name:"en/dev/api/comm/channel.md"},l=n(`

liteyuki.comm.channel

Description: 本模块定义了一个通用的通道类,用于进程间通信

var SYNC_ON_RECEIVE_FUNC

  • Description: 同步接收函数

  • Type: TypeAlias

  • Default: Callable[[T], Any]

var ASYNC_ON_RECEIVE_FUNC

  • Description: 异步接收函数

  • Type: TypeAlias

  • Default: Callable[[T], Coroutine[Any, Any, Any]]

var ON_RECEIVE_FUNC

  • Description: 接收函数

  • Type: TypeAlias

  • Default: SYNC_ON_RECEIVE_FUNC | ASYNC_ON_RECEIVE_FUNC

var SYNC_FILTER_FUNC

  • Description: 同步过滤函数

  • Type: TypeAlias

  • Default: Callable[[T], bool]

var ASYNC_FILTER_FUNC

  • Description: 异步过滤函数

  • Type: TypeAlias

  • Default: Callable[[T], Coroutine[Any, Any, bool]]

var FILTER_FUNC

  • Description: 过滤函数

  • Type: TypeAlias

  • Default: SYNC_FILTER_FUNC | ASYNC_FILTER_FUNC

class Channel(Generic[T])

def __init__(self, name: str, type_check: Optional[bool] = None)

Description: 初始化通道

Arguments:

  • name: 通道ID
  • type_check: 是否开启类型检查, 若为空,则传入泛型默认开启,否则默认关闭
Source code or View on GitHub
python
def __init__(self, name: str, type_check: Optional[bool]=None):
     """
         初始化通道
         Args:
@@ -26,44 +26,11 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
         _channel[name] = self
         logger.debug(f'Channel {name} initialized in main process')
     else:
-        logger.debug(f'Channel {name} initialized in sub process, should manually set in main process')

def _get_generic_type(self) -> Optional[type]

Description: 获取通道传递泛型类型

Return: Optional[type]: 泛型类型

Source code or View on GitHub
python
def _get_generic_type(self) -> Optional[type]:
-    """
-        获取通道传递泛型类型
-
-        Returns:
-            Optional[type]: 泛型类型
-        """
-    if hasattr(self, '__orig_class__'):
-        return get_args(self.__orig_class__)[0]
-    return None

def _validate_structure(self, data: Any, structure: type) -> bool

Description: 验证数据结构

Arguments:

  • data: 数据
  • structure: 结构

Return: bool: 是否通过验证

Source code or View on GitHub
python
def _validate_structure(self, data: Any, structure: type) -> bool:
-    """
-        验证数据结构
-        Args:
-            data: 数据
-            structure: 结构
-
-        Returns:
-            bool: 是否通过验证
-        """
-    if isinstance(structure, type):
-        return isinstance(data, structure)
-    elif isinstance(structure, tuple):
-        if not isinstance(data, tuple) or len(data) != len(structure):
-            return False
-        return all((self._validate_structure(d, s) for d, s in zip(data, structure)))
-    elif isinstance(structure, list):
-        if not isinstance(data, list):
-            return False
-        return all((self._validate_structure(d, structure[0]) for d in data))
-    elif isinstance(structure, dict):
-        if not isinstance(data, dict):
-            return False
-        return all((k in data and self._validate_structure(data[k], structure[k]) for k in structure))
-    return False

def send(self, data: T)

Description: 发送数据,发送函数为同步函数,没有异步的必要

Arguments:

  • data: 数据
Source code or View on GitHub
python
def send(self, data: T):
+        logger.debug(f'Channel {name} initialized in sub process, should manually set in main process')

def send(self, data: T)

Description: 发送数据,发送函数为同步函数,没有异步的必要

Arguments:

  • data (T): 数据
Source code or View on GitHub
python
def send(self, data: T):
     """
         发送数据,发送函数为同步函数,没有异步的必要
         Args:
-            data: 数据
+            data (T): 数据
         """
     if self.type_check:
         _type = self._get_generic_type()
@@ -71,30 +38,33 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
             raise TypeError(f'Data must be an instance of {_type}, {type(data)} found')
     if self._closed:
         raise RuntimeError('Cannot send to a closed channel_')
-    self.conn_send.send(data)

def receive(self) -> T

Description: 同步接收数据,会阻塞线程

Source code or View on GitHub
python
def receive(self) -> T:
+    self.conn_send.send(data)

def receive(self) -> T

Description: 同步接收数据,会阻塞线程

Return: T: 数据

Source code or View on GitHub
python
def receive(self) -> T:
     """
         同步接收数据,会阻塞线程
-        Args:
+        Returns:
+            T: 数据
         """
     if self._closed:
         raise RuntimeError('Cannot receive from a closed channel_')
     while True:
         data = self.conn_recv.recv()
-        return data

async def async_receive(self) -> T

Description: 异步接收数据,会挂起等待

Source code or View on GitHub
python
async def async_receive(self) -> T:
+        return data

async def async_receive(self) -> T

Description: 异步接收数据,会挂起等待

Return: T: 数据

Source code or View on GitHub
python
async def async_receive(self) -> T:
     """
         异步接收数据,会挂起等待
+        Returns:
+            T: 数据
         """
     print('等待接收数据')
     loop = asyncio.get_running_loop()
     data = await loop.run_in_executor(None, self.receive)
     print('接收到数据')
-    return data

def on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]

Description: 接收数据并执行函数

Arguments:

  • filter_func: 过滤函数,为None则不过滤

Return: 装饰器,装饰一个函数在接收到数据后执行

Source code or View on GitHub
python
def on_receive(self, filter_func: Optional[FILTER_FUNC]=None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]:
+    return data

def on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]

Description: 接收数据并执行函数

Arguments:

Return: Callable[[Callable[[T], Any]], Callable[[T], Any]]: 装饰器

Source code or View on GitHub
python
def on_receive(self, filter_func: Optional[FILTER_FUNC]=None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]:
     """
         接收数据并执行函数
         Args:
-            filter_func: 过滤函数,为None则不过滤
+            filter_func ([\`Optional\`](https%3A//docs.python.org/3/library/typing.html#typing.Optional)[[\`FILTER_FUNC\`](#var-FILTER_FUNC)], optional): 过滤函数. Defaults to None.
         Returns:
-            装饰器,装饰一个函数在接收到数据后执行
+            Callable[[Callable[[T], Any]], Callable[[T], Any]]: 装饰器
         """
     if not IS_MAIN_PROCESS:
         raise RuntimeError('on_receive can only be used in main process')
@@ -120,33 +90,12 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
             self._on_sub_receive_func_ids.append(_func_id)
         _func_id += 1
         return func
-    return decorator

async def _run_on_receive_funcs(self, data: Any)

Description: 运行接收函数

Arguments:

  • data: 数据
Source code or View on GitHub
python
async def _run_on_receive_funcs(self, data: Any):
-    """
-        运行接收函数
-        Args:
-            data: 数据
-        """
-    if IS_MAIN_PROCESS:
-        [asyncio.create_task(_callback_funcs[func_id](data)) for func_id in self._on_main_receive_func_ids]
-    else:
-        [asyncio.create_task(_callback_funcs[func_id](data)) for func_id in self._on_sub_receive_func_ids]

async def start_receive_loop(self)

Description: 开始接收数据 会自动判断主进程和子进程,需要在对应进程都调度一次

Source code or View on GitHub
python
async def start_receive_loop(self):
-    """
-        开始接收数据
-        会自动判断主进程和子进程,需要在对应进程都调度一次
-        """
-    if len(self._on_main_receive_func_ids) == 0:
-        logger.warning(f'No on_receive function registered for {self.name}')
-        return
-    self.is_receive_loop_running = True
-    logger.debug(f'Starting receive loop for {self.name}')
-    while not self._closed:
-        data = await self.async_receive()
-        await self._run_on_receive_funcs(data)

var active_channel

  • Description: 子进程可用的主动和被动通道

  • Type: Channel

  • Default: Channel(name='active_channel')

var publish_channel

  • Description: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • Type: Channel[tuple[str, dict[str, Any]]]

  • Default: Channel(name='publish_channel')

var channel_deliver_active_channel

  • Description: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • Type: Channel[Channel[Any]]

  • Default: NO_DEFAULT

def set_channel(name: str, channel: Channel)

Description: 设置通道实例

Arguments:

  • name: 通道名称
  • channel: 通道实例
Source code or View on GitHub
python
def set_channel(name: str, channel: 'Channel'):
+    return decorator

var active_channel

  • Description: 子进程可用的主动和被动通道

  • Type: Channel

  • Default: Channel(name='active_channel')

var passive_channel

  • Description: 被动通道

  • Type: Channel

  • Default: Channel(name='passive_channel')

var publish_channel

  • Description: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • Type: Channel[tuple[str, dict[str, Any]]]

  • Default: Channel(name='publish_channel')

var channel_deliver_active_channel

  • Description: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • Type: Channel[Channel[Any]]

  • Default: NO_DEFAULT

var channel_deliver_passive_channel

  • Description: 被动通道传递通道

  • Type: Channel[tuple[str, dict[str, Any]]]

  • Default: NO_DEFAULT

def set_channel(name: str, channel: Channel)

Description: 设置通道实例

Arguments:

  • name (str): 通道名称
  • channel (Channel): 通道实例
Source code or View on GitHub
python
def set_channel(name: str, channel: 'Channel'):
     """
     设置通道实例
     Args:
-        name: 通道名称
-        channel: 通道实例
+        name ([\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 通道名称
+        channel ([\`Channel\`](#class-channel-generic-t)): 通道实例
     """
     if not isinstance(channel, Channel):
         raise TypeError(f'channel_ must be an instance of Channel, {type(channel)} found')
@@ -155,42 +104,44 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
             raise ValueError(f'Channel {name} already exists')
         _channel[name] = channel
     else:
-        channel_deliver_passive_channel.send(('set_channel', {'name': name, 'channel_': channel}))

def set_channels(channels: dict[str, Channel])

Description: 设置通道实例

Arguments:

  • channels: 通道名称
Source code or View on GitHub
python
def set_channels(channels: dict[str, 'Channel']):
+        channel_deliver_passive_channel.send(('set_channel', {'name': name, 'channel_': channel}))

def set_channels(channels: dict[str, Channel])

Description: 设置通道实例

Arguments:

Source code or View on GitHub
python
def set_channels(channels: dict[str, 'Channel']):
     """
     设置通道实例
     Args:
-        channels: 通道名称
+        channels ([\`dict\`](https%3A//docs.python.org/3/library/stdtypes.html#dict)[[\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str), [\`Channel\`](#class-channel-generic-t)]): 通道实例
     """
     for name, channel in channels.items():
-        set_channel(name, channel)

def get_channel(name: str) -> Channel

Description: 获取通道实例

Arguments:

  • name: 通道名称
Source code or View on GitHub
python
def get_channel(name: str) -> 'Channel':
+        set_channel(name, channel)

def get_channel(name: str) -> Channel

Description: 获取通道实例

Arguments:

  • name (str): 通道名称

Return: Channel: 通道实例

Source code or View on GitHub
python
def get_channel(name: str) -> 'Channel':
     """
     获取通道实例
     Args:
-        name: 通道名称
+        name ([\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 通道名称
     Returns:
+        [\`Channel\`](#class-channel-generic-t): 通道实例
     """
     if IS_MAIN_PROCESS:
         return _channel[name]
     else:
         recv_chan = Channel[Channel[Any]]('recv_chan')
         channel_deliver_passive_channel.send(('get_channel', {'name': name, 'recv_chan': recv_chan}))
-        return recv_chan.receive()

def get_channels() -> dict[str, Channel]

Description: 获取通道实例

Source code or View on GitHub
python
def get_channels() -> dict[str, 'Channel']:
+        return recv_chan.receive()

def get_channels() -> dict[str, Channel]

Description: 获取通道实例们

Return: dict[str, Channel]: 通道实例

Source code or View on GitHub
python
def get_channels() -> dict[str, 'Channel']:
     """
-    获取通道实例
+    获取通道实例们
     Returns:
+        [\`dict\`](https%3A//docs.python.org/3/library/stdtypes.html#dict)[[\`str\`](https%3A//docs.python.org/3/library/stdtypes.html#str), [\`Channel\`](#class-channel-generic-t)]: 通道实例
     """
     if IS_MAIN_PROCESS:
         return _channel
     else:
         recv_chan = Channel[dict[str, Channel[Any]]]('recv_chan')
         channel_deliver_passive_channel.send(('get_channels', {'recv_chan': recv_chan}))
-        return recv_chan.receive()

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')

def on_set_channel(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')
+        return recv_chan.receive()

var channel_deliver_active_channel

  • Description: 主动通道传递通道

  • Default: Channel(name='channel_deliver_active_channel')

var channel_deliver_passive_channel

  • Description: 被动通道传递通道

  • Default: Channel(name='channel_deliver_passive_channel')

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')

def on_set_channel(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')
 def on_set_channel(data: tuple[str, dict[str, Any]]):
     name, channel = (data[1]['name'], data[1]['channel_'])
-    set_channel(name, channel)

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')

def on_get_channel(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')
+    set_channel(name, channel)

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')

def on_get_channel(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')
 def on_get_channel(data: tuple[str, dict[str, Any]]):
     name, recv_chan = (data[1]['name'], data[1]['recv_chan'])
-    recv_chan.send(get_channel(name))

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')

def on_get_channels(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')
+    recv_chan.send(get_channel(name))

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')

def on_get_channels(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')
 def on_get_channels(data: tuple[str, dict[str, Any]]):
     recv_chan = data[1]['recv_chan']
-    recv_chan.send(get_channels())
`,78),h=[l];function e(k,p,r,d,E,g){return a(),i("div",null,h)}const o=s(t,[["render",e]]);export{y as __pageData,o as default}; + recv_chan.send(get_channels())
`,82),t=[l];function h(p,k,r,d,c,E){return a(),i("div",null,t)}const y=s(e,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/en_dev_api_comm_channel.md.BY8yNiex.lean.js b/assets/en_dev_api_comm_channel.md.BY8yNiex.lean.js new file mode 100644 index 00000000..98b7157f --- /dev/null +++ b/assets/en_dev_api_comm_channel.md.BY8yNiex.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const g=JSON.parse('{"title":"liteyuki.comm.channel","description":"","frontmatter":{"title":"liteyuki.comm.channel"},"headers":[],"relativePath":"en/dev/api/comm/channel.md","filePath":"en/dev/api/comm/channel.md","lastUpdated":1725101868000}'),e={name:"en/dev/api/comm/channel.md"},l=n("",82),t=[l];function h(p,k,r,d,c,E){return a(),i("div",null,t)}const y=s(e,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/en_dev_api_comm_event.md.B8tSNpPu.js b/assets/en_dev_api_comm_event.md.B8tSNpPu.js deleted file mode 100644 index 4676b31c..00000000 --- a/assets/en_dev_api_comm_event.md.B8tSNpPu.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,a4 as i}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.comm.event","description":"","frontmatter":{"title":"liteyuki.comm.event"},"headers":[],"relativePath":"en/dev/api/comm/event.md","filePath":"en/dev/api/comm/event.md","lastUpdated":1725101868000}'),s={name:"en/dev/api/comm/event.md"},n=i('

liteyuki.comm.event

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/26 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File : event.py @Software: PyCharm

class Event

def __init__(self, name: str, data: dict[str, Any])

Source code or View on GitHub
python
def __init__(self, name: str, data: dict[str, Any]):\n    self.name = name\n    self.data = data
',6),l=[n];function o(r,h,d,p,k,c){return a(),t("div",null,l)}const _=e(s,[["render",o]]);export{y as __pageData,_ as default}; diff --git a/assets/en_dev_api_comm_event.md.B8tSNpPu.lean.js b/assets/en_dev_api_comm_event.md.B8tSNpPu.lean.js deleted file mode 100644 index 1d958823..00000000 --- a/assets/en_dev_api_comm_event.md.B8tSNpPu.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a,a4 as i}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.comm.event","description":"","frontmatter":{"title":"liteyuki.comm.event"},"headers":[],"relativePath":"en/dev/api/comm/event.md","filePath":"en/dev/api/comm/event.md","lastUpdated":1725101868000}'),s={name:"en/dev/api/comm/event.md"},n=i("",6),l=[n];function o(r,h,d,p,k,c){return a(),t("div",null,l)}const _=e(s,[["render",o]]);export{y as __pageData,_ as default}; diff --git a/assets/en_dev_api_comm_event.md.DWKJlFsA.js b/assets/en_dev_api_comm_event.md.DWKJlFsA.js new file mode 100644 index 00000000..494aa6ed --- /dev/null +++ b/assets/en_dev_api_comm_event.md.DWKJlFsA.js @@ -0,0 +1 @@ +import{_ as s,c as e,o as a,a4 as t}from"./chunks/framework.C3o_UkTa.js";const _=JSON.parse('{"title":"liteyuki.comm.event","description":"","frontmatter":{"title":"liteyuki.comm.event"},"headers":[],"relativePath":"en/dev/api/comm/event.md","filePath":"en/dev/api/comm/event.md","lastUpdated":1725101868000}'),i={name:"en/dev/api/comm/event.md"},n=t('

liteyuki.comm.event

Description: 本模块用于轻雪主进程和子进程之间的通信的事件类

class Event

def __init__(self, name: str, data: dict[str, Any])

Source code or View on GitHub
python
def __init__(self, name: str, data: dict[str, Any]):\n    self.name = name\n    self.data = data
',5),l=[n];function h(d,r,o,p,c,k){return a(),e("div",null,l)}const y=s(i,[["render",h]]);export{_ as __pageData,y as default}; diff --git a/assets/en_dev_api_comm_event.md.DWKJlFsA.lean.js b/assets/en_dev_api_comm_event.md.DWKJlFsA.lean.js new file mode 100644 index 00000000..b49f83d1 --- /dev/null +++ b/assets/en_dev_api_comm_event.md.DWKJlFsA.lean.js @@ -0,0 +1 @@ +import{_ as s,c as e,o as a,a4 as t}from"./chunks/framework.C3o_UkTa.js";const _=JSON.parse('{"title":"liteyuki.comm.event","description":"","frontmatter":{"title":"liteyuki.comm.event"},"headers":[],"relativePath":"en/dev/api/comm/event.md","filePath":"en/dev/api/comm/event.md","lastUpdated":1725101868000}'),i={name:"en/dev/api/comm/event.md"},n=t("",5),l=[n];function h(d,r,o,p,c,k){return a(),e("div",null,l)}const y=s(i,[["render",h]]);export{_ as __pageData,y as default}; diff --git a/assets/en_dev_api_comm_socks_channel.md.kerI5Mmv.js b/assets/en_dev_api_comm_socks_channel.md.C3TKJ3cZ.js similarity index 77% rename from assets/en_dev_api_comm_socks_channel.md.kerI5Mmv.js rename to assets/en_dev_api_comm_socks_channel.md.C3TKJ3cZ.js index 21b1634c..b016550f 100644 --- a/assets/en_dev_api_comm_socks_channel.md.kerI5Mmv.js +++ b/assets/en_dev_api_comm_socks_channel.md.C3TKJ3cZ.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.C3o_UkTa.js";const g=JSON.parse('{"title":"liteyuki.comm.socks_channel","description":"","frontmatter":{"title":"liteyuki.comm.socks_channel"},"headers":[],"relativePath":"en/dev/api/comm/socks_channel.md","filePath":"en/dev/api/comm/socks_channel.md","lastUpdated":null}'),n={name:"en/dev/api/comm/socks_channel.md"},t=e(`

liteyuki.comm.socks_channel

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/8/25 下午3:54 @Author : snowykami @Email : snowykami@outlook.com @File : channelv2.py @Software: PyCharm

class SocksChannel

def __init__(self, name: str)

Description: 初始化通道

Arguments:

  • name: 通道ID
Source code or View on GitHub
python
def __init__(self, name: str):
+import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.C3o_UkTa.js";const g=JSON.parse('{"title":"liteyuki.comm.socks_channel","description":"","frontmatter":{"title":"liteyuki.comm.socks_channel"},"headers":[],"relativePath":"en/dev/api/comm/socks_channel.md","filePath":"en/dev/api/comm/socks_channel.md","lastUpdated":null}'),n={name:"en/dev/api/comm/socks_channel.md"},t=e(`

liteyuki.comm.socks_channel

Description: 基于socket的通道

class SocksChannel

def __init__(self, name: str)

Description: 初始化通道

Arguments:

  • name: 通道ID
Source code or View on GitHub
python
def __init__(self, name: str):
     """
         初始化通道
         Args:
@@ -7,20 +7,20 @@ import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.C3o_UkTa.js";const g
     self._name = name
     self._conn_send = None
     self._conn_recv = None
-    self._closed = False

def send(self, data)

Description: 发送数据

Arguments:

  • data: 数据
Source code or View on GitHub
python
def send(self, data):
+    self._closed = False

def send(self, data)

Description: 发送数据

Arguments:

  • data: 数据
Source code or View on GitHub
python
def send(self, data):
     """
         发送数据
         Args:
             data: 数据
         """
-    pass

def receive(self)

Description: 接收数据

Return: data: 数据

Source code or View on GitHub
python
def receive(self):
+    pass

def receive(self)

Description: 接收数据

Return: data: 数据

Source code or View on GitHub
python
def receive(self):
     """
         接收数据
         Returns:
             data: 数据
         """
-    pass

def close(self)

Description: 关闭通道

Source code or View on GitHub
python
def close(self):
+    pass

def close(self)

Description: 关闭通道

Source code or View on GitHub
python
def close(self):
     """
         关闭通道
         """
-    pass
`,21),l=[t];function h(p,o,k,r,c,d){return i(),a("div",null,l)}const y=s(n,[["render",h]]);export{g as __pageData,y as default}; + pass
`,20),l=[t];function h(p,o,k,c,r,d){return i(),a("div",null,l)}const y=s(n,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/en_dev_api_comm_socks_channel.md.kerI5Mmv.lean.js b/assets/en_dev_api_comm_socks_channel.md.C3TKJ3cZ.lean.js similarity index 87% rename from assets/en_dev_api_comm_socks_channel.md.kerI5Mmv.lean.js rename to assets/en_dev_api_comm_socks_channel.md.C3TKJ3cZ.lean.js index c0f66f79..7a8139e0 100644 --- a/assets/en_dev_api_comm_socks_channel.md.kerI5Mmv.lean.js +++ b/assets/en_dev_api_comm_socks_channel.md.C3TKJ3cZ.lean.js @@ -1 +1 @@ -import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.C3o_UkTa.js";const g=JSON.parse('{"title":"liteyuki.comm.socks_channel","description":"","frontmatter":{"title":"liteyuki.comm.socks_channel"},"headers":[],"relativePath":"en/dev/api/comm/socks_channel.md","filePath":"en/dev/api/comm/socks_channel.md","lastUpdated":null}'),n={name:"en/dev/api/comm/socks_channel.md"},t=e("",21),l=[t];function h(p,o,k,r,c,d){return i(),a("div",null,l)}const y=s(n,[["render",h]]);export{g as __pageData,y as default}; +import{_ as s,c as a,o as i,a4 as e}from"./chunks/framework.C3o_UkTa.js";const g=JSON.parse('{"title":"liteyuki.comm.socks_channel","description":"","frontmatter":{"title":"liteyuki.comm.socks_channel"},"headers":[],"relativePath":"en/dev/api/comm/socks_channel.md","filePath":"en/dev/api/comm/socks_channel.md","lastUpdated":null}'),n={name:"en/dev/api/comm/socks_channel.md"},t=e("",20),l=[t];function h(p,o,k,c,r,d){return i(),a("div",null,l)}const y=s(n,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/en_dev_api_comm_storage.md.CyNGUlpk.js b/assets/en_dev_api_comm_storage.md.B8fIOByJ.js similarity index 96% rename from assets/en_dev_api_comm_storage.md.CyNGUlpk.js rename to assets/en_dev_api_comm_storage.md.B8fIOByJ.js index b42e0ade..f8d9f83b 100644 --- a/assets/en_dev_api_comm_storage.md.CyNGUlpk.js +++ b/assets/en_dev_api_comm_storage.md.B8fIOByJ.js @@ -126,7 +126,7 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y with cls._lock: if cls._instance is None: cls._instance = KeyValueStore() - return cls._instance

attr _instance = None

attr _lock = threading.Lock()

var _ref_count

  • Description: import 引用计数, 防止获取空指针

  • Default: 0

@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')

def on_get(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')
+    return cls._instance

attr _instance = None

attr _lock = threading.Lock()

var shared_memory

  • Description: 共享内存对象

  • Type: KeyValueStore

  • Default: GlobalKeyValueStore.get_instance()

var _ref_count

  • Description: import 引用计数, 防止获取空指针

  • Default: 0

@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')

def on_get(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')
 def on_get(data: tuple[str, dict[str, Any]]):
     key = data[1]['key']
     default = data[1]['default']
@@ -141,4 +141,4 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y
     shared_memory.delete(key)

@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get_all')

def on_get_all(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get_all')
 def on_get_all(data: tuple[str, dict[str, Any]]):
     recv_chan = data[1]['recv_chan']
-    recv_chan.send(shared_memory.get_all())
`,69),l=[e];function h(k,p,r,d,E,o){return a(),i("div",null,l)}const c=s(t,[["render",h]]);export{y as __pageData,c as default}; + recv_chan.send(shared_memory.get_all())`,71),l=[e];function h(k,p,r,d,E,o){return a(),i("div",null,l)}const c=s(t,[["render",h]]);export{y as __pageData,c as default}; diff --git a/assets/en_dev_api_comm_storage.md.CyNGUlpk.lean.js b/assets/en_dev_api_comm_storage.md.B8fIOByJ.lean.js similarity index 86% rename from assets/en_dev_api_comm_storage.md.CyNGUlpk.lean.js rename to assets/en_dev_api_comm_storage.md.B8fIOByJ.lean.js index 5dd4febd..26b0a7ad 100644 --- a/assets/en_dev_api_comm_storage.md.CyNGUlpk.lean.js +++ b/assets/en_dev_api_comm_storage.md.B8fIOByJ.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.comm.storage","description":"","frontmatter":{"title":"liteyuki.comm.storage"},"headers":[],"relativePath":"en/dev/api/comm/storage.md","filePath":"en/dev/api/comm/storage.md","lastUpdated":1725101868000}'),t={name:"en/dev/api/comm/storage.md"},e=n("",69),l=[e];function h(k,p,r,d,E,o){return a(),i("div",null,l)}const c=s(t,[["render",h]]);export{y as __pageData,c as default}; +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const y=JSON.parse('{"title":"liteyuki.comm.storage","description":"","frontmatter":{"title":"liteyuki.comm.storage"},"headers":[],"relativePath":"en/dev/api/comm/storage.md","filePath":"en/dev/api/comm/storage.md","lastUpdated":1725101868000}'),t={name:"en/dev/api/comm/storage.md"},e=n("",71),l=[e];function h(k,p,r,d,E,o){return a(),i("div",null,l)}const c=s(t,[["render",h]]);export{y as __pageData,c as default}; diff --git a/assets/en_dev_api_core_manager.md.Bs82V5ER.js b/assets/en_dev_api_core_manager.md.Dv7N4zip.js similarity index 69% rename from assets/en_dev_api_core_manager.md.Bs82V5ER.js rename to assets/en_dev_api_core_manager.md.Dv7N4zip.js index 31a32f16..6f100201 100644 --- a/assets/en_dev_api_core_manager.md.Bs82V5ER.js +++ b/assets/en_dev_api_core_manager.md.Dv7N4zip.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o=JSON.parse('{"title":"liteyuki.core.manager","description":"","frontmatter":{"title":"liteyuki.core.manager"},"headers":[],"relativePath":"en/dev/api/core/manager.md","filePath":"en/dev/api/core/manager.md","lastUpdated":1725101868000}'),e={name:"en/dev/api/core/manager.md"},t=n(`

liteyuki.core.manager

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/27 上午11:12 @Author : snowykami @Email : snowykami@outlook.com @File : manager.py @Software: PyCharm

class ChannelDeliver

def __init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]])

Source code or View on GitHub
python
def __init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]]):
+import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const c=JSON.parse('{"title":"liteyuki.core.manager","description":"","frontmatter":{"title":"liteyuki.core.manager"},"headers":[],"relativePath":"en/dev/api/core/manager.md","filePath":"en/dev/api/core/manager.md","lastUpdated":1725101868000}'),e={name:"en/dev/api/core/manager.md"},t=n(`

liteyuki.core.manager

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/27 上午11:12 @Author : snowykami @Email : snowykami@outlook.com @File : manager.py @Software: PyCharm

class ChannelDeliver

def __init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]])

Source code or View on GitHub
python
def __init__(self, active: Channel[Any], passive: Channel[Any], channel_deliver_active: Channel[Channel[Any]], channel_deliver_passive: Channel[tuple[str, dict]], publish: Channel[tuple[str, Any]]):
     self.active = active
     self.passive = passive
     self.channel_deliver_active = channel_deliver_active
@@ -6,38 +6,7 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o
     self.publish = publish

class ProcessManager

def __init__(self, lifespan: Lifespan)

Source code or View on GitHub
python
def __init__(self, lifespan: 'Lifespan'):
     self.lifespan = lifespan
     self.targets: dict[str, tuple[Callable, tuple, dict]] = {}
-    self.processes: dict[str, Process] = {}

async def _run_process(self, name: str)

Description: 开启后自动监控进程,并添加到进程字典中,会阻塞,请创建task

Arguments:

  • name:
Source code or View on GitHub
python
async def _run_process(self, name: str):
-    """
-        开启后自动监控进程,并添加到进程字典中,会阻塞,请创建task
-        Args:
-            name:
-        Returns:
-        """
-    if name not in self.targets:
-        raise KeyError(f'Process {name} not found.')
-    chan_active = get_channel(f'{name}-active')
-
-    def _start_process():
-        process = Process(target=self.targets[name][0], args=self.targets[name][1], kwargs=self.targets[name][2], daemon=True)
-        self.processes[name] = process
-        process.start()
-    _start_process()
-    while True:
-        data = await chan_active.async_receive()
-        if data == 0:
-            logger.info(f'Stopping process {name}')
-            await self.lifespan.before_process_shutdown()
-            self.terminate(name)
-            break
-        elif data == 1:
-            logger.info(f'Restarting process {name}')
-            await self.lifespan.before_process_shutdown()
-            await self.lifespan.before_process_restart()
-            self.terminate(name)
-            _start_process()
-            continue
-        else:
-            logger.warning('Unknown data received, ignored.')

async def start_all(self)

Description: 对外启动方法,启动所有进程,创建asyncio task

Source code or View on GitHub
python
async def start_all(self):
+    self.processes: dict[str, Process] = {}

async def start_all(self)

Description: 对外启动方法,启动所有进程,创建asyncio task

Source code or View on GitHub
python
async def start_all(self):
     """
         对外启动方法,启动所有进程,创建asyncio task
         """
@@ -89,4 +58,4 @@ import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o
         """
     if name not in self.targets:
         logger.warning(f'Process {name} not found.')
-    return self.processes[name].is_alive()
`,36),l=[t];function h(k,p,r,d,E,g){return a(),i("div",null,l)}const c=s(e,[["render",h]]);export{o as __pageData,c as default}; + return self.processes[name].is_alive()
`,31),l=[t];function h(p,k,r,d,E,g){return a(),i("div",null,l)}const y=s(e,[["render",h]]);export{c as __pageData,y as default}; diff --git a/assets/en_dev_api_core_manager.md.Bs82V5ER.lean.js b/assets/en_dev_api_core_manager.md.Dv7N4zip.lean.js similarity index 52% rename from assets/en_dev_api_core_manager.md.Bs82V5ER.lean.js rename to assets/en_dev_api_core_manager.md.Dv7N4zip.lean.js index ef9e36c4..bc5474c1 100644 --- a/assets/en_dev_api_core_manager.md.Bs82V5ER.lean.js +++ b/assets/en_dev_api_core_manager.md.Dv7N4zip.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const o=JSON.parse('{"title":"liteyuki.core.manager","description":"","frontmatter":{"title":"liteyuki.core.manager"},"headers":[],"relativePath":"en/dev/api/core/manager.md","filePath":"en/dev/api/core/manager.md","lastUpdated":1725101868000}'),e={name:"en/dev/api/core/manager.md"},t=n("",36),l=[t];function h(k,p,r,d,E,g){return a(),i("div",null,l)}const c=s(e,[["render",h]]);export{o as __pageData,c as default}; +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.C3o_UkTa.js";const c=JSON.parse('{"title":"liteyuki.core.manager","description":"","frontmatter":{"title":"liteyuki.core.manager"},"headers":[],"relativePath":"en/dev/api/core/manager.md","filePath":"en/dev/api/core/manager.md","lastUpdated":1725101868000}'),e={name:"en/dev/api/core/manager.md"},t=n("",31),l=[t];function h(p,k,r,d,E,g){return a(),i("div",null,l)}const y=s(e,[["render",h]]);export{c as __pageData,y as default}; diff --git a/assets/en_dev_api_dev_observer.md.DfB9VffK.js b/assets/en_dev_api_dev_observer.md.B2sZAEEn.js similarity index 98% rename from assets/en_dev_api_dev_observer.md.DfB9VffK.js rename to assets/en_dev_api_dev_observer.md.B2sZAEEn.js index 0bd0c411..4c2cd416 100644 --- a/assets/en_dev_api_dev_observer.md.DfB9VffK.js +++ b/assets/en_dev_api_dev_observer.md.B2sZAEEn.js @@ -13,13 +13,13 @@ import{_ as s,c as i,o as e,a4 as a}from"./chunks/framework.C3o_UkTa.js";const g return func(*args, **kwargs) last_call_time = None return wrapper - return decorator

class CodeModifiedHandler(FileSystemEventHandler)

@debounce(1)

def on_modified(self, event)

Source code or View on GitHub
python
@debounce(1)
+    return decorator

class CodeModifiedHandler(FileSystemEventHandler)

@debounce(1)

def on_modified(self, event)

Source code or View on GitHub
python
@debounce(1)
 def on_modified(self, event):
-    raise NotImplementedError('on_modified must be implemented')

def on_created(self, event)

Source code or View on GitHub
python
def on_created(self, event):
-    self.on_modified(event)

def on_deleted(self, event)

Source code or View on GitHub
python
def on_deleted(self, event):
-    self.on_modified(event)

def on_moved(self, event)

Source code or View on GitHub
python
def on_moved(self, event):
-    self.on_modified(event)

def on_any_event(self, event)

Source code or View on GitHub
python
def on_any_event(self, event):
-    self.on_modified(event)

def on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]

Description: 注册文件系统变化监听器

Arguments:

  • directories: 监听目录们
  • recursive: 是否递归监听子目录
  • event_filter: 事件过滤器, 返回True则执行回调函数

Return: 装饰器,装饰一个函数在接收到数据后执行

Source code or View on GitHub
python
def on_file_system_event(directories: tuple[str], recursive: bool=True, event_filter: FILTER_FUNC=None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]:
+    raise NotImplementedError('on_modified must be implemented')

def on_created(self, event)

Source code or View on GitHub
python
def on_created(self, event):
+    self.on_modified(event)

def on_deleted(self, event)

Source code or View on GitHub
python
def on_deleted(self, event):
+    self.on_modified(event)

def on_moved(self, event)

Source code or View on GitHub
python
def on_moved(self, event):
+    self.on_modified(event)

def on_any_event(self, event)

Source code or View on GitHub
python
def on_any_event(self, event):
+    self.on_modified(event)

def on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]

Description: 注册文件系统变化监听器

Arguments:

  • directories: 监听目录们
  • recursive: 是否递归监听子目录
  • event_filter: 事件过滤器, 返回True则执行回调函数

Return: 装饰器,装饰一个函数在接收到数据后执行

Source code or View on GitHub
python
def on_file_system_event(directories: tuple[str], recursive: bool=True, event_filter: FILTER_FUNC=None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]:
     """
     注册文件系统变化监听器
     Args:
diff --git a/assets/en_dev_api_dev_observer.md.DfB9VffK.lean.js b/assets/en_dev_api_dev_observer.md.B2sZAEEn.lean.js
similarity index 100%
rename from assets/en_dev_api_dev_observer.md.DfB9VffK.lean.js
rename to assets/en_dev_api_dev_observer.md.B2sZAEEn.lean.js
diff --git a/deploy/config.html b/deploy/config.html
index d0bef215..4c0f1823 100644
--- a/deploy/config.html
+++ b/deploy/config.html
@@ -8,9 +8,9 @@
     
     
     
-    
+    
     
-    
+    
     
     
     
@@ -50,7 +50,7 @@
   dev_mode: false # 开发者模式,开启后将会启动监视者,监视文件变化并自动重载
 
 ...

示例:与NoneBot对接的OneBot实现端配置

生产环境中推荐反向WebSocket 不同的实现端给出的字段可能不同,但是基本上都是一样的,这里给出一个参考值

字段参考值说明
协议反向WebSocket推荐使用反向ws协议进行通信,即轻雪作为服务端
地址ws://127.0.0.1:20216/onebot/v11/ws地址取决于配置文件,本机默认为127.0.0.1:20216
AccessToken""如果你给轻雪配置了AccessToken,请在此填写相同的值

其他

  • 轻雪不局限于OneBot适配器,你可以使用NoneBot2支持的任何适配器或使用轻雪讯息传递插件

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/deploy/fandq.html b/deploy/fandq.html index 7d1bfbd7..6f7f036c 100644 --- a/deploy/fandq.html +++ b/deploy/fandq.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

答疑

常见问题

  • 设备上Python环境太乱了,pip和python不对应怎么办?

    • 请使用/path/to/python -m pip install -r requirements.txt来安装依赖, 然后用/path/to/python main.py来启动Bot, 其中/path/to/python是你要用来运行Bot的可执行文件
  • 为什么我启动后机器人没有反应?

    • 请检查配置文件的command_startsuperusers,确认你有权限使用命令并按照正确的命令发送
    • 确认命令头没有和nickname{}冲突,例如一个命令是help,但是Bot昵称有一个help,那么将会被解析为nickname而不是命令
  • 更新轻雪失败,报错InvalidGitRepositoryError

    • 请正确安装Git,并使用克隆而非直接下载的方式部署轻雪
  • 怎么登录聊天平台,例如QQ?

    • 你有这个问题说明你不是很了解这个项目,本项目不负责实现登录功能,只负责处理和回应消息,登录功能由实现端(协议端)提供, 实现端本身不负责处理响应逻辑,将消息按照OneBot标准处理好上报给轻雪 你需要使用Onebot标准的实现端来连接到轻雪并将消息上报给轻雪,下面已经列出一些推荐的实现端
  • Playwright安装失败

    • 输入playwright install安装浏览器
  • 有的插件安装后报错无法启动

    • 请先查阅插件文档,确认插件必要配置项完好后,仍然出现问题,请联系插件作者或在安全模式safe_mode: true下启动轻雪,在安全模式下你可以使用npm uninstall卸载问题插件
  • 其他问题

    加入QQ群775840726

推荐方案(QQ)

  1. Lagrange.OneBot,基于NTQQ的OneBot实现,目前Markdown消息支持Lagrange
  2. LLOneBot,NTQQ的OneBot插件,需要安装NTQQ
  3. OpenShamrock,基于Lsposed的OneBot11实现
  4. TRSS-Yunzai,基于node.js,可使用ws-plugin进行通信
  5. go-cqhttpgo语言实现的OneBot11实现端,目前可用性较低
  6. Gensokyo,基于 OneBot QQ官方机器人Api Golang 原生实现,需要官方机器人权限
  7. 人工实现的Onebot协议,自己整一个WebSocket客户端,看着QQ的消息,然后给轻雪传输数据

推荐方案(Minecraft)

  1. MinecraftOneBot,我们专门为Minecraft开发的服务器Bot,支持OneBotV11标准

使用其他项目连接请先自行查阅文档,若有困难请联系对应开发者而不是Liteyuki的开发者

鸣谢

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/deploy/install.html b/deploy/install.html index d67d66f5..560b5395 100644 --- a/deploy/install.html +++ b/deploy/install.html @@ -8,9 +8,9 @@ - + - + @@ -27,7 +27,7 @@ pip install -r requirements.txt # 启动Bot python main.py

TIP

推荐使用虚拟环境来运行轻雪,以避免依赖冲突,你可以使用python -m venv .venv来创建虚拟环境,然后使用.venv\Scripts\activate来激活虚拟环境(Linux下使用source .venv/bin/activate激活)

使用Docker构建

  1. 安装 Docker
  2. 克隆项目 git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1
  3. 进入轻雪目录 cd LiteyukiBot
  4. 构建镜像 docker build -t liteyukibot .
  5. 启动容器 docker run -p 20216:20216 -v $(pwd):/liteyukibot -v $(pwd)/.cache:/root/.cache liteyukibot

TIP

Windows请使用项目绝对目录/path/to/LiteyukiBot代替$(pwd)
若你修改了端口号请将20216:20216中的20216替换为你的端口号

使用TRSS Scripts部署

TRSS_Liteyuki轻雪机器人管理脚本,该功能由TRSS提供支持,不是LiteyukiBot官方提供的功能,推荐使用Arch Linux

装置要求

  • Windows系统版本最低Windows10+/Windows Server 2019+
  • Linux系统要支持Python3.10+,推荐Ubuntu 20.04+(别用你那b CentOS)
  • CPU: 至少1vCPU
  • 内存: Bot无其他插件会占用300~500MB,包括chromiumnode等进程,其他插件占用视具体插件而定,建议1GB以上
  • 硬盘: 至少1GB空间

WARNING

如果装置上有多个环境,请使用path/to/python -m pip install -r requirements.txt来安装依赖,path/to/python为你的Python可执行文件路径

WARNING

轻雪的更新功能依赖Git,如果你没有安装Git直接下载源代码运行,你将无法使用更新功能

其他问题请移步至答疑

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/api.html b/dev/api/api.html index 89aea284..8162fc69 100644 --- a/dev/api/api.html +++ b/dev/api/api.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/bot/bot.html b/dev/api/bot/bot.html index 8709e060..2af5123f 100644 --- a/dev/api/bot/bot.html +++ b/dev/api/bot/bot.html @@ -8,24 +8,22 @@ - + - + - + -
Skip to content

liteyuki.bot

class LiteyukiBot

def __init__(self, *args, **kwargs) -> None

说明: 初始化轻雪实例

参数:

  • *args:
  • **kwargs: 配置
源代码在GitHub上查看
python
def __init__(self, *args, **kwargs) -> None:
+    
Skip to content

liteyuki.bot

class LiteyukiBot

def __init__(self, **kwargs) -> None

说明: 初始化轻雪实例

参数:

  • **kwargs: 配置
源代码在GitHub上查看
python
def __init__(self, **kwargs) -> None:
     """
         初始化轻雪实例
         Args:
-            *args:
             **kwargs: 配置
-
         """
     '常规操作'
     print_logo()
@@ -49,48 +47,27 @@
     '信号处理'
     signal.signal(signal.SIGINT, self._handle_exit)
     signal.signal(signal.SIGTERM, self._handle_exit)
-    atexit.register(self.process_manager.terminate_all)

async def _run(self)

说明: 启动逻辑

源代码在GitHub上查看
python
async def _run(self):
-    """
-        启动逻辑
-        """
-    await self.lifespan.before_start()
-    await self.process_manager.start_all()
-    await self.lifespan.after_start()
-    await self.keep_alive()

def run(self)

说明: 外部启动接口

源代码在GitHub上查看
python
def run(self):
+    atexit.register(self.process_manager.terminate_all)

def run(self)

说明: 外部启动接口

源代码在GitHub上查看
python
def run(self):
     """
         外部启动接口
         """
     try:
         asyncio.run(self._run())
     except KeyboardInterrupt:
-        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

说明: 保持轻雪运行

源代码在GitHub上查看
python
async def keep_alive(self):
+        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

说明: 保持轻雪运行

源代码在GitHub上查看
python
async def keep_alive(self):
     """
         保持轻雪运行
-        Returns:
-
         """
     try:
         while not self.stop_event.is_set():
             time.sleep(0.5)
     except KeyboardInterrupt:
         logger.info('Liteyuki is stopping...')
-        self.stop()

def _handle_exit(self, signum, frame)

说明: 信号处理

参数:

  • signum:
  • frame:
源代码在GitHub上查看
python
def _handle_exit(self, signum, frame):
-    """
-        信号处理
-        Args:
-            signum:
-            frame:
-
-        Returns:
-
-        """
-    logger.info('Received signal, stopping all processes.')
-    self.stop()
-    sys.exit(0)

def restart(self, delay: int = 0)

说明: 重启轻雪本体

源代码在GitHub上查看
python
def restart(self, delay: int=0):
+        self.stop()

def restart(self, delay: int = 0)

说明: 重启轻雪本体

参数:

  • delay (int, optional): 延迟重启时间. Defaults to 0.
源代码在GitHub上查看
python
def restart(self, delay: int=0):
     """
         重启轻雪本体
-        Returns:
-
+        Args:
+            delay ([`int`](https%3A//docs.python.org/3/library/functions.html#int), optional): 延迟重启时间. Defaults to 0.
         """
     if self.call_restart_count < 1:
         executable = sys.executable
@@ -108,11 +85,11 @@
         self.process_manager.terminate_all()
         threading.Thread(target=os.system, args=(f"{cmd} {executable} {' '.join(args)}",)).start()
         sys.exit(0)
-    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

说明: 停止轻雪

参数:

  • name: 进程名称, 默认为None, 所有进程
源代码在GitHub上查看
python
def restart_process(self, name: Optional[str]=None):
+    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

说明: 停止轻雪

参数:

源代码在GitHub上查看
python
def restart_process(self, name: Optional[str]=None):
     """
         停止轻雪
         Args:
-            name: 进程名称, 默认为None, 所有进程
+            name ([`Optional`](https%3A//docs.python.org/3/library/typing.html#typing.Optional)[[`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)]): 进程名. Defaults to None.
         Returns:
         """
     if name is not None:
@@ -121,106 +98,100 @@
     else:
         for process_name in self.process_manager.processes:
             chan_active = get_channel(f'{process_name}-active')
-            chan_active.send(1)

def init(self, *args, **kwargs)

说明: 初始化轻雪, 自动调用

源代码在GitHub上查看
python
def init(self, *args, **kwargs):
+            chan_active.send(1)

def init(self, *args, **kwargs)

说明: 初始化轻雪, 自动调用

参数:

  • *args: 参数
  • **kwargs: 关键字参数
源代码在GitHub上查看
python
def init(self, *args, **kwargs):
     """
         初始化轻雪, 自动调用
-        Returns:
-
+        Args:
+            *args: 参数
+            **kwargs: 关键字参数
         """
-    self.init_logger()

def init_logger(self)

源代码在GitHub上查看
python
def init_logger(self):
-    init_log(config=self.config)

def stop(self)

说明: 停止轻雪

源代码在GitHub上查看
python
def stop(self):
+    self.init_logger()

def init_logger(self)

说明: 初始化日志

源代码在GitHub上查看
python
def init_logger(self):
+    """
+        初始化日志
+        """
+    init_log(config=self.config)

def stop(self)

说明: 停止轻雪

源代码在GitHub上查看
python
def stop(self):
     """
         停止轻雪
-        Returns:
-
         """
     self.stop_event.set()
-    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC)

说明: 注册启动前的函数

参数:

  • func:
源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC):
+    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册启动前的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动前的函数
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

说明: 注册启动后的函数

参数:

  • func:
源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

说明: 注册启动后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC):
     """
         注册启动后的函数
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

说明: 注册停止后的函数:未实现

参数:

  • func:
源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

说明: 注册停止后的函数:未实现

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
     """
         注册停止后的函数:未实现
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: LIFESPAN_FUNC)

说明: 注册进程停止前的函数,为子进程停止时调用

参数:

  • func:
源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)

说明: 注册进程停止前的函数,为子进程停止时调用

参数:

返回: PROCESS_LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC):
     """
         注册进程停止前的函数,为子进程停止时调用
         Args:
-            func:
-
+            func ([`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: LIFESPAN_FUNC)

说明: 注册进程重启前的函数,为子进程重启时调用

参数:

  • func:
源代码在GitHub上查看
python
def on_before_process_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

说明: 注册进程重启前的函数,为子进程重启时调用

参数:

返回: PROCESS_LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
         注册进程重启前的函数,为子进程重启时调用
         Args:
-            func:
-
+            func ([`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

说明: 注册重启后的函数:未实现

参数:

  • func:
源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

说明: 注册重启后的函数:未实现

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC):
     """
         注册重启后的函数:未实现
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

说明: 获取轻雪实例

返回: LiteyukiBot: 当前的轻雪实例

源代码在GitHub上查看
python
def get_bot() -> LiteyukiBot:
+    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

说明: 获取轻雪实例

返回: LiteyukiBot: 轻雪实例

源代码在GitHub上查看
python
def get_bot() -> LiteyukiBot:
     """
     获取轻雪实例
-
     Returns:
-        LiteyukiBot: 当前的轻雪实例
+        [`LiteyukiBot`](#class-liteyukibot): 轻雪实例
     """
     if IS_MAIN_PROCESS:
         if _BOT_INSTANCE is None:
             raise RuntimeError('Liteyuki instance not initialized.')
         return _BOT_INSTANCE
     else:
-        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

说明: 获取配置

参数:

  • key: 配置键
  • default: 默认值

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config(key: str, default: Any=None) -> Any:
+        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

说明: 获取配置

参数:

  • key (str): 配置键
  • default (Any, optional): 默认值. Defaults to None.

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config(key: str, default: Any=None) -> Any:
     """
     获取配置
     Args:
-        key: 配置键
-        default: 默认值
-
+        key ([`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        default ([`Any`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
     Returns:
-        Any: 配置值
+        [`Any`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
-    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

说明: 获取配置,兼容旧版本

参数:

  • key: 配置键
  • compat_keys: 兼容键
  • default: 默认值

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
+    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

说明: 获取配置,兼容旧版本

参数:

  • key (str): 配置键
  • compat_keys (tuplestr): 兼容键
  • default (Any, optional): 默认值. Defaults to None.

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
     """
     获取配置,兼容旧版本
     Args:
-        key: 配置键
-        compat_keys: 兼容键
-        default: 默认值
+        key ([`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        compat_keys ([`tuple`](https%3A//docs.python.org/3/library/stdtypes.html#tuple)[`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 兼容键
+        default ([`Any`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
 
     Returns:
-        Any: 配置值
+        [`Any`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
     if key in get_bot().config:
         return get_bot().config[key]
@@ -228,9 +199,8 @@
         if compat_key in get_bot().config:
             logger.warning(f'Config key "{compat_key}" will be deprecated, use "{key}" instead.')
             return get_bot().config[compat_key]
-    return default
源代码在GitHub上查看
python
def print_logo():
-    print('\x1b[34m' + '\n     __        ______  ________  ________  __      __  __    __  __    __  ______ \n    /  |      /      |/        |/        |/  \\    /  |/  |  /  |/  |  /  |/      |\n    $$ |      $$$$$$/ $$$$$$$$/ $$$$$$$$/ $$  \\  /$$/ $$ |  $$ |$$ | /$$/ $$$$$$/ \n    $$ |        $$ |     $$ |   $$ |__     $$  \\/$$/  $$ |  $$ |$$ |/$$/    $$ |  \n    $$ |        $$ |     $$ |   $$    |     $$  $$/   $$ |  $$ |$$  $$<     $$ |  \n    $$ |        $$ |     $$ |   $$$$$/       $$$$/    $$ |  $$ |$$$$$  \\    $$ |  \n    $$ |_____  _$$ |_    $$ |   $$ |_____     $$ |    $$ \\__$$ |$$ |$$  \\  _$$ |_ \n    $$       |/ $$   |   $$ |   $$       |    $$ |    $$    $$/ $$ | $$  |/ $$   |\n    $$$$$$$$/ $$$$$$/    $$/    $$$$$$$$/     $$/      $$$$$$/  $$/   $$/ $$$$$$/ \n                ' + '\x1b[0m')

文档由 VitePress 构建 | API引用由 litedoc 生成

- + return default

文档由 VitePress 构建 | API引用由 litedoc 生成

+ \ No newline at end of file diff --git a/dev/api/bot/index.html b/dev/api/bot/index.html index cf80c6cf..6b4c7ffd 100644 --- a/dev/api/bot/index.html +++ b/dev/api/bot/index.html @@ -8,24 +8,22 @@ - + - + - + -
Skip to content

liteyuki.bot

class LiteyukiBot

def __init__(self, *args, **kwargs) -> None

说明: 初始化轻雪实例

参数:

  • *args:
  • **kwargs: 配置
源代码在GitHub上查看
python
def __init__(self, *args, **kwargs) -> None:
+    
Skip to content

liteyuki.bot

class LiteyukiBot

def __init__(self, **kwargs) -> None

说明: 初始化轻雪实例

参数:

  • **kwargs: 配置
源代码在GitHub上查看
python
def __init__(self, **kwargs) -> None:
     """
         初始化轻雪实例
         Args:
-            *args:
             **kwargs: 配置
-
         """
     '常规操作'
     print_logo()
@@ -49,48 +47,27 @@
     '信号处理'
     signal.signal(signal.SIGINT, self._handle_exit)
     signal.signal(signal.SIGTERM, self._handle_exit)
-    atexit.register(self.process_manager.terminate_all)

async def _run(self)

说明: 启动逻辑

源代码在GitHub上查看
python
async def _run(self):
-    """
-        启动逻辑
-        """
-    await self.lifespan.before_start()
-    await self.process_manager.start_all()
-    await self.lifespan.after_start()
-    await self.keep_alive()

def run(self)

说明: 外部启动接口

源代码在GitHub上查看
python
def run(self):
+    atexit.register(self.process_manager.terminate_all)

def run(self)

说明: 外部启动接口

源代码在GitHub上查看
python
def run(self):
     """
         外部启动接口
         """
     try:
         asyncio.run(self._run())
     except KeyboardInterrupt:
-        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

说明: 保持轻雪运行

源代码在GitHub上查看
python
async def keep_alive(self):
+        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

说明: 保持轻雪运行

源代码在GitHub上查看
python
async def keep_alive(self):
     """
         保持轻雪运行
-        Returns:
-
         """
     try:
         while not self.stop_event.is_set():
             time.sleep(0.5)
     except KeyboardInterrupt:
         logger.info('Liteyuki is stopping...')
-        self.stop()

def _handle_exit(self, signum, frame)

说明: 信号处理

参数:

  • signum:
  • frame:
源代码在GitHub上查看
python
def _handle_exit(self, signum, frame):
-    """
-        信号处理
-        Args:
-            signum:
-            frame:
-
-        Returns:
-
-        """
-    logger.info('Received signal, stopping all processes.')
-    self.stop()
-    sys.exit(0)

def restart(self, delay: int = 0)

说明: 重启轻雪本体

源代码在GitHub上查看
python
def restart(self, delay: int=0):
+        self.stop()

def restart(self, delay: int = 0)

说明: 重启轻雪本体

参数:

  • delay (int, optional): 延迟重启时间. Defaults to 0.
源代码在GitHub上查看
python
def restart(self, delay: int=0):
     """
         重启轻雪本体
-        Returns:
-
+        Args:
+            delay ([`int`](https%3A//docs.python.org/3/library/functions.html#int), optional): 延迟重启时间. Defaults to 0.
         """
     if self.call_restart_count < 1:
         executable = sys.executable
@@ -108,11 +85,11 @@
         self.process_manager.terminate_all()
         threading.Thread(target=os.system, args=(f"{cmd} {executable} {' '.join(args)}",)).start()
         sys.exit(0)
-    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

说明: 停止轻雪

参数:

  • name: 进程名称, 默认为None, 所有进程
源代码在GitHub上查看
python
def restart_process(self, name: Optional[str]=None):
+    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

说明: 停止轻雪

参数:

源代码在GitHub上查看
python
def restart_process(self, name: Optional[str]=None):
     """
         停止轻雪
         Args:
-            name: 进程名称, 默认为None, 所有进程
+            name ([`Optional`](https%3A//docs.python.org/3/library/typing.html#typing.Optional)[[`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)]): 进程名. Defaults to None.
         Returns:
         """
     if name is not None:
@@ -121,106 +98,100 @@
     else:
         for process_name in self.process_manager.processes:
             chan_active = get_channel(f'{process_name}-active')
-            chan_active.send(1)

def init(self, *args, **kwargs)

说明: 初始化轻雪, 自动调用

源代码在GitHub上查看
python
def init(self, *args, **kwargs):
+            chan_active.send(1)

def init(self, *args, **kwargs)

说明: 初始化轻雪, 自动调用

参数:

  • *args: 参数
  • **kwargs: 关键字参数
源代码在GitHub上查看
python
def init(self, *args, **kwargs):
     """
         初始化轻雪, 自动调用
-        Returns:
-
+        Args:
+            *args: 参数
+            **kwargs: 关键字参数
         """
-    self.init_logger()

def init_logger(self)

源代码在GitHub上查看
python
def init_logger(self):
-    init_log(config=self.config)

def stop(self)

说明: 停止轻雪

源代码在GitHub上查看
python
def stop(self):
+    self.init_logger()

def init_logger(self)

说明: 初始化日志

源代码在GitHub上查看
python
def init_logger(self):
+    """
+        初始化日志
+        """
+    init_log(config=self.config)

def stop(self)

说明: 停止轻雪

源代码在GitHub上查看
python
def stop(self):
     """
         停止轻雪
-        Returns:
-
         """
     self.stop_event.set()
-    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC)

说明: 注册启动前的函数

参数:

  • func:
源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC):
+    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册启动前的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动前的函数
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

说明: 注册启动后的函数

参数:

  • func:
源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

说明: 注册启动后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC):
     """
         注册启动后的函数
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

说明: 注册停止后的函数:未实现

参数:

  • func:
源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

说明: 注册停止后的函数:未实现

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
     """
         注册停止后的函数:未实现
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: LIFESPAN_FUNC)

说明: 注册进程停止前的函数,为子进程停止时调用

参数:

  • func:
源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)

说明: 注册进程停止前的函数,为子进程停止时调用

参数:

返回: PROCESS_LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC):
     """
         注册进程停止前的函数,为子进程停止时调用
         Args:
-            func:
-
+            func ([`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: LIFESPAN_FUNC)

说明: 注册进程重启前的函数,为子进程重启时调用

参数:

  • func:
源代码在GitHub上查看
python
def on_before_process_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

说明: 注册进程重启前的函数,为子进程重启时调用

参数:

返回: PROCESS_LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
         注册进程重启前的函数,为子进程重启时调用
         Args:
-            func:
-
+            func ([`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

说明: 注册重启后的函数:未实现

参数:

  • func:
源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

说明: 注册重启后的函数:未实现

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC):
     """
         注册重启后的函数:未实现
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

说明: 获取轻雪实例

返回: LiteyukiBot: 当前的轻雪实例

源代码在GitHub上查看
python
def get_bot() -> LiteyukiBot:
+    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

说明: 获取轻雪实例

返回: LiteyukiBot: 轻雪实例

源代码在GitHub上查看
python
def get_bot() -> LiteyukiBot:
     """
     获取轻雪实例
-
     Returns:
-        LiteyukiBot: 当前的轻雪实例
+        [`LiteyukiBot`](#class-liteyukibot): 轻雪实例
     """
     if IS_MAIN_PROCESS:
         if _BOT_INSTANCE is None:
             raise RuntimeError('Liteyuki instance not initialized.')
         return _BOT_INSTANCE
     else:
-        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

说明: 获取配置

参数:

  • key: 配置键
  • default: 默认值

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config(key: str, default: Any=None) -> Any:
+        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

说明: 获取配置

参数:

  • key (str): 配置键
  • default (Any, optional): 默认值. Defaults to None.

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config(key: str, default: Any=None) -> Any:
     """
     获取配置
     Args:
-        key: 配置键
-        default: 默认值
-
+        key ([`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        default ([`Any`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
     Returns:
-        Any: 配置值
+        [`Any`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
-    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

说明: 获取配置,兼容旧版本

参数:

  • key: 配置键
  • compat_keys: 兼容键
  • default: 默认值

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
+    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

说明: 获取配置,兼容旧版本

参数:

  • key (str): 配置键
  • compat_keys (tuplestr): 兼容键
  • default (Any, optional): 默认值. Defaults to None.

返回: Any: 配置值

源代码在GitHub上查看
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
     """
     获取配置,兼容旧版本
     Args:
-        key: 配置键
-        compat_keys: 兼容键
-        default: 默认值
+        key ([`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        compat_keys ([`tuple`](https%3A//docs.python.org/3/library/stdtypes.html#tuple)[`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 兼容键
+        default ([`Any`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
 
     Returns:
-        Any: 配置值
+        [`Any`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
     if key in get_bot().config:
         return get_bot().config[key]
@@ -228,9 +199,8 @@
         if compat_key in get_bot().config:
             logger.warning(f'Config key "{compat_key}" will be deprecated, use "{key}" instead.')
             return get_bot().config[compat_key]
-    return default
源代码在GitHub上查看
python
def print_logo():
-    print('\x1b[34m' + '\n     __        ______  ________  ________  __      __  __    __  __    __  ______ \n    /  |      /      |/        |/        |/  \\    /  |/  |  /  |/  |  /  |/      |\n    $$ |      $$$$$$/ $$$$$$$$/ $$$$$$$$/ $$  \\  /$$/ $$ |  $$ |$$ | /$$/ $$$$$$/ \n    $$ |        $$ |     $$ |   $$ |__     $$  \\/$$/  $$ |  $$ |$$ |/$$/    $$ |  \n    $$ |        $$ |     $$ |   $$    |     $$  $$/   $$ |  $$ |$$  $$<     $$ |  \n    $$ |        $$ |     $$ |   $$$$$/       $$$$/    $$ |  $$ |$$$$$  \\    $$ |  \n    $$ |_____  _$$ |_    $$ |   $$ |_____     $$ |    $$ \\__$$ |$$ |$$  \\  _$$ |_ \n    $$       |/ $$   |   $$ |   $$       |    $$ |    $$    $$/ $$ | $$  |/ $$   |\n    $$$$$$$$/ $$$$$$/    $$/    $$$$$$$$/     $$/      $$$$$$/  $$/   $$/ $$$$$$/ \n                ' + '\x1b[0m')

文档由 VitePress 构建 | API引用由 litedoc 生成

- + return default

文档由 VitePress 构建 | API引用由 litedoc 生成

+ \ No newline at end of file diff --git a/dev/api/bot/lifespan.html b/dev/api/bot/lifespan.html index 12bdfc2e..05d698e4 100644 --- a/dev/api/bot/lifespan.html +++ b/dev/api/bot/lifespan.html @@ -8,132 +8,122 @@ - + - + - + -
Skip to content

liteyuki.bot.lifespan

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File : lifespan.py @Software: PyCharm

class Lifespan

def __init__(self) -> None

说明: 轻雪生命周期管理,启动、停止、重启

源代码在GitHub上查看
python
def __init__(self) -> None:
+    
Skip to content

liteyuki.bot.lifespan

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File : lifespan.py @Software: PyCharm

var SYNC_LIFESPAN_FUNC

  • 说明: 同步生命周期函数

  • 类型: TypeAlias

  • 默认值: Callable[[], Any]

var ASYNC_LIFESPAN_FUNC

  • 说明: 异步生命周期函数

  • 类型: TypeAlias

  • 默认值: Callable[[], Awaitable[Any]]

var LIFESPAN_FUNC

  • 说明: 生命周期函数

  • 类型: TypeAlias

  • 默认值: SYNC_LIFESPAN_FUNC | ASYNC_LIFESPAN_FUNC

var SYNC_PROCESS_LIFESPAN_FUNC

  • 说明: 同步进程生命周期函数

  • 类型: TypeAlias

  • 默认值: Callable[[str], Any]

var ASYNC_PROCESS_LIFESPAN_FUNC

  • 说明: 异步进程生命周期函数

  • 类型: TypeAlias

  • 默认值: Callable[[str], Awaitable[Any]]

var PROCESS_LIFESPAN_FUNC

  • 说明: 进程函数

  • 类型: TypeAlias

  • 默认值: SYNC_PROCESS_LIFESPAN_FUNC | ASYNC_PROCESS_LIFESPAN_FUNC

class Lifespan

def __init__(self) -> None

说明: 轻雪生命周期管理,启动、停止、重启

源代码在GitHub上查看
python
def __init__(self) -> None:
     """
         轻雪生命周期管理,启动、停止、重启
         """
     self.life_flag: int = 0
     self._before_start_funcs: list[LIFESPAN_FUNC] = []
     self._after_start_funcs: list[LIFESPAN_FUNC] = []
-    self._before_process_shutdown_funcs: list[LIFESPAN_FUNC] = []
+    self._before_process_shutdown_funcs: list[PROCESS_LIFESPAN_FUNC] = []
     self._after_shutdown_funcs: list[LIFESPAN_FUNC] = []
-    self._before_process_restart_funcs: list[LIFESPAN_FUNC] = []
-    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

async def run_funcs(funcs: list[ASYNC_LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None

说明: 并发运行异步函数

参数:

  • funcs:
源代码在GitHub上查看
python
@staticmethod
-async def run_funcs(funcs: list[ASYNC_LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:
+    self._before_process_restart_funcs: list[PROCESS_LIFESPAN_FUNC] = []
+    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

async def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None

说明: 并发运行异步函数

参数:

源代码在GitHub上查看
python
@staticmethod
+async def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:
     """
         并发运行异步函数
         Args:
-            funcs:
+            funcs ([`Sequence`](https%3A//docs.python.org/3/library/typing.html#typing.Sequence)[[`ASYNC_LIFESPAN_FUNC`](#var-lifespan-func) | [`PROCESS_LIFESPAN_FUNC`](#var-process-lifespan-func)]): 函数列表
         Returns:
         """
-    loop = asyncio.get_running_loop()
     tasks = [func(*args, **kwargs) if is_coroutine_callable(func) else async_wrapper(func)(*args, **kwargs) for func in funcs]
-    await asyncio.gather(*tasks)

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册启动时的函数

参数:

  • func:

返回: LIFESPAN_FUNC:

源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    await asyncio.gather(*tasks)

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册启动时的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动时的函数
         Args:
-            func:
+            func ([`LIFESPAN_FUNC`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [`LIFESPAN_FUNC`](#var-lifespan-func): 生命周期函数
         """
     self._before_start_funcs.append(func)
-    return func

def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册启动时的函数

参数:

  • func:

返回: LIFESPAN_FUNC:

源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册启动时的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动时的函数
         Args:
-            func:
+            func ([`LIFESPAN_FUNC`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [`LIFESPAN_FUNC`](#var-lifespan-func): 生命周期函数
         """
     self._after_start_funcs.append(func)
-    return func

def on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册停止前的函数

参数:

  • func:

返回: LIFESPAN_FUNC:

源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

说明: 注册进程停止前的函数

参数:

返回: PROCESS_LIFESPAN_FUNC: 进程生命周期函数

源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
-        注册停止前的函数
+        注册进程停止前的函数
         Args:
-            func:
+            func ([`PROCESS_LIFESPAN_FUNC`](#var-process-lifespan-func)): 进程生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [`PROCESS_LIFESPAN_FUNC`](#var-process-lifespan-func): 进程生命周期函数
         """
     self._before_process_shutdown_funcs.append(func)
-    return func

def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册停止后的函数

参数:

  • func:

返回: LIFESPAN_FUNC:

源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册停止后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册停止后的函数
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
-
+            [`LIFESPAN_FUNC`](#var-lifespan-func): 生命周期函数
         """
     self._after_shutdown_funcs.append(func)
-    return func

def on_before_process_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册重启时的函数

参数:

  • func:

返回: LIFESPAN_FUNC:

源代码在GitHub上查看
python
def on_before_process_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

说明: 注册进程重启前的函数

参数:

返回: PROCESS_LIFESPAN_FUNC: 进程生命周期函数

源代码在GitHub上查看
python
def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
-        注册重启时的函数
+        注册进程重启前的函数
         Args:
-            func:
+            func ([`PROCESS_LIFESPAN_FUNC`](#var-process-lifespan-func)): 进程生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [`PROCESS_LIFESPAN_FUNC`](#var-process-lifespan-func): 进程生命周期函数
         """
     self._before_process_restart_funcs.append(func)
-    return func

def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册重启后的函数

参数:

  • func:

返回: LIFESPAN_FUNC:

源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

说明: 注册重启后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册重启后的函数
         Args:
-            func:
+            func ([`LIFESPAN_FUNC`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [`LIFESPAN_FUNC`](#var-lifespan-func): 生命周期函数
         """
     self._after_restart_funcs.append(func)
-    return func

async def before_start(self) -> None

说明: 启动前

源代码在GitHub上查看
python
async def before_start(self) -> None:
+    return func

async def before_start(self) -> None

说明: 启动前钩子

源代码在GitHub上查看
python
async def before_start(self) -> None:
     """
-        启动前
-        Returns:
+        启动前钩子
         """
     logger.debug('Running before_start functions')
-    await self.run_funcs(self._before_start_funcs)

async def after_start(self) -> None

说明: 启动后

源代码在GitHub上查看
python
async def after_start(self) -> None:
+    await self.run_funcs(self._before_start_funcs)

async def after_start(self) -> None

说明: 启动后钩子

源代码在GitHub上查看
python
async def after_start(self) -> None:
     """
-        启动后
-        Returns:
+        启动后钩子
         """
     logger.debug('Running after_start functions')
-    await self.run_funcs(self._after_start_funcs)

async def before_process_shutdown(self) -> None

说明: 停止前

源代码在GitHub上查看
python
async def before_process_shutdown(self) -> None:
+    await self.run_funcs(self._after_start_funcs)

async def before_process_shutdown(self) -> None

说明: 停止前钩子

源代码在GitHub上查看
python
async def before_process_shutdown(self) -> None:
     """
-        停止前
-        Returns:
+        停止前钩子
         """
     logger.debug('Running before_shutdown functions')
-    await self.run_funcs(self._before_process_shutdown_funcs)

async def after_shutdown(self) -> None

说明: 停止后

源代码在GitHub上查看
python
async def after_shutdown(self) -> None:
+    await self.run_funcs(self._before_process_shutdown_funcs)

async def after_shutdown(self) -> None

说明: 停止后钩子 未实现

源代码在GitHub上查看
python
async def after_shutdown(self) -> None:
     """
-        停止后
-        Returns:
+        停止后钩子 未实现
         """
     logger.debug('Running after_shutdown functions')
-    await self.run_funcs(self._after_shutdown_funcs)

async def before_process_restart(self) -> None

说明: 重启前

源代码在GitHub上查看
python
async def before_process_restart(self) -> None:
+    await self.run_funcs(self._after_shutdown_funcs)

async def before_process_restart(self) -> None

说明: 重启前钩子

源代码在GitHub上查看
python
async def before_process_restart(self) -> None:
     """
-        重启前
-        Returns:
+        重启前钩子
         """
     logger.debug('Running before_restart functions')
-    await self.run_funcs(self._before_process_restart_funcs)

async def after_restart(self) -> None

说明: 重启后

源代码在GitHub上查看
python
async def after_restart(self) -> None:
+    await self.run_funcs(self._before_process_restart_funcs)

async def after_restart(self) -> None

说明: 重启后钩子 未实现

源代码在GitHub上查看
python
async def after_restart(self) -> None:
     """
-        重启后
-        Returns:
-
+        重启后钩子 未实现
         """
     logger.debug('Running after_restart functions')
     await self.run_funcs(self._after_restart_funcs)

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/comm/channel.html b/dev/api/comm/channel.html index 6811fe8b..9f742874 100644 --- a/dev/api/comm/channel.html +++ b/dev/api/comm/channel.html @@ -8,18 +8,18 @@ - + - + - + -
Skip to content

liteyuki.comm.channel

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/26 下午11:21 @Author : snowykami @Email : snowykami@outlook.com @File : channel_.py @Software: PyCharm

本模块定义了一个通用的通道类,用于进程间通信

class Channel(Generic[T])

def __init__(self, name: str, type_check: Optional[bool] = None)

说明: 初始化通道

参数:

  • name: 通道ID
  • type_check: 是否开启类型检查, 若为空,则传入泛型默认开启,否则默认关闭
源代码在GitHub上查看
python
def __init__(self, name: str, type_check: Optional[bool]=None):
+    
Skip to content

liteyuki.comm.channel

说明: 本模块定义了一个通用的通道类,用于进程间通信

var SYNC_ON_RECEIVE_FUNC

  • 说明: 同步接收函数

  • 类型: TypeAlias

  • 默认值: Callable[[T], Any]

var ASYNC_ON_RECEIVE_FUNC

  • 说明: 异步接收函数

  • 类型: TypeAlias

  • 默认值: Callable[[T], Coroutine[Any, Any, Any]]

var ON_RECEIVE_FUNC

  • 说明: 接收函数

  • 类型: TypeAlias

  • 默认值: SYNC_ON_RECEIVE_FUNC | ASYNC_ON_RECEIVE_FUNC

var SYNC_FILTER_FUNC

  • 说明: 同步过滤函数

  • 类型: TypeAlias

  • 默认值: Callable[[T], bool]

var ASYNC_FILTER_FUNC

  • 说明: 异步过滤函数

  • 类型: TypeAlias

  • 默认值: Callable[[T], Coroutine[Any, Any, bool]]

var FILTER_FUNC

  • 说明: 过滤函数

  • 类型: TypeAlias

  • 默认值: SYNC_FILTER_FUNC | ASYNC_FILTER_FUNC

class Channel(Generic[T])

def __init__(self, name: str, type_check: Optional[bool] = None)

说明: 初始化通道

参数:

  • name: 通道ID
  • type_check: 是否开启类型检查, 若为空,则传入泛型默认开启,否则默认关闭
源代码在GitHub上查看
python
def __init__(self, name: str, type_check: Optional[bool]=None):
     """
         初始化通道
         Args:
@@ -47,44 +47,11 @@
         _channel[name] = self
         logger.debug(f'Channel {name} initialized in main process')
     else:
-        logger.debug(f'Channel {name} initialized in sub process, should manually set in main process')

def _get_generic_type(self) -> Optional[type]

说明: 获取通道传递泛型类型

返回: Optional[type]: 泛型类型

源代码在GitHub上查看
python
def _get_generic_type(self) -> Optional[type]:
-    """
-        获取通道传递泛型类型
-
-        Returns:
-            Optional[type]: 泛型类型
-        """
-    if hasattr(self, '__orig_class__'):
-        return get_args(self.__orig_class__)[0]
-    return None

def _validate_structure(self, data: Any, structure: type) -> bool

说明: 验证数据结构

参数:

  • data: 数据
  • structure: 结构

返回: bool: 是否通过验证

源代码在GitHub上查看
python
def _validate_structure(self, data: Any, structure: type) -> bool:
-    """
-        验证数据结构
-        Args:
-            data: 数据
-            structure: 结构
-
-        Returns:
-            bool: 是否通过验证
-        """
-    if isinstance(structure, type):
-        return isinstance(data, structure)
-    elif isinstance(structure, tuple):
-        if not isinstance(data, tuple) or len(data) != len(structure):
-            return False
-        return all((self._validate_structure(d, s) for d, s in zip(data, structure)))
-    elif isinstance(structure, list):
-        if not isinstance(data, list):
-            return False
-        return all((self._validate_structure(d, structure[0]) for d in data))
-    elif isinstance(structure, dict):
-        if not isinstance(data, dict):
-            return False
-        return all((k in data and self._validate_structure(data[k], structure[k]) for k in structure))
-    return False

def send(self, data: T)

说明: 发送数据,发送函数为同步函数,没有异步的必要

参数:

  • data: 数据
源代码在GitHub上查看
python
def send(self, data: T):
+        logger.debug(f'Channel {name} initialized in sub process, should manually set in main process')

def send(self, data: T)

说明: 发送数据,发送函数为同步函数,没有异步的必要

参数:

  • data (T): 数据
源代码在GitHub上查看
python
def send(self, data: T):
     """
         发送数据,发送函数为同步函数,没有异步的必要
         Args:
-            data: 数据
+            data (T): 数据
         """
     if self.type_check:
         _type = self._get_generic_type()
@@ -92,30 +59,33 @@
             raise TypeError(f'Data must be an instance of {_type}, {type(data)} found')
     if self._closed:
         raise RuntimeError('Cannot send to a closed channel_')
-    self.conn_send.send(data)

def receive(self) -> T

说明: 同步接收数据,会阻塞线程

源代码在GitHub上查看
python
def receive(self) -> T:
+    self.conn_send.send(data)

def receive(self) -> T

说明: 同步接收数据,会阻塞线程

返回: T: 数据

源代码在GitHub上查看
python
def receive(self) -> T:
     """
         同步接收数据,会阻塞线程
-        Args:
+        Returns:
+            T: 数据
         """
     if self._closed:
         raise RuntimeError('Cannot receive from a closed channel_')
     while True:
         data = self.conn_recv.recv()
-        return data

async def async_receive(self) -> T

说明: 异步接收数据,会挂起等待

源代码在GitHub上查看
python
async def async_receive(self) -> T:
+        return data

async def async_receive(self) -> T

说明: 异步接收数据,会挂起等待

返回: T: 数据

源代码在GitHub上查看
python
async def async_receive(self) -> T:
     """
         异步接收数据,会挂起等待
+        Returns:
+            T: 数据
         """
     print('等待接收数据')
     loop = asyncio.get_running_loop()
     data = await loop.run_in_executor(None, self.receive)
     print('接收到数据')
-    return data

def on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]

说明: 接收数据并执行函数

参数:

  • filter_func: 过滤函数,为None则不过滤

返回: 装饰器,装饰一个函数在接收到数据后执行

源代码在GitHub上查看
python
def on_receive(self, filter_func: Optional[FILTER_FUNC]=None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]:
+    return data

def on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]

说明: 接收数据并执行函数

参数:

返回: Callable[[Callable[[T], Any]], Callable[[T], Any]]: 装饰器

源代码在GitHub上查看
python
def on_receive(self, filter_func: Optional[FILTER_FUNC]=None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]:
     """
         接收数据并执行函数
         Args:
-            filter_func: 过滤函数,为None则不过滤
+            filter_func ([`Optional`](https%3A//docs.python.org/3/library/typing.html#typing.Optional)[[`FILTER_FUNC`](#var-FILTER_FUNC)], optional): 过滤函数. Defaults to None.
         Returns:
-            装饰器,装饰一个函数在接收到数据后执行
+            Callable[[Callable[[T], Any]], Callable[[T], Any]]: 装饰器
         """
     if not IS_MAIN_PROCESS:
         raise RuntimeError('on_receive can only be used in main process')
@@ -141,33 +111,12 @@
             self._on_sub_receive_func_ids.append(_func_id)
         _func_id += 1
         return func
-    return decorator

async def _run_on_receive_funcs(self, data: Any)

说明: 运行接收函数

参数:

  • data: 数据
源代码在GitHub上查看
python
async def _run_on_receive_funcs(self, data: Any):
-    """
-        运行接收函数
-        Args:
-            data: 数据
-        """
-    if IS_MAIN_PROCESS:
-        [asyncio.create_task(_callback_funcs[func_id](data)) for func_id in self._on_main_receive_func_ids]
-    else:
-        [asyncio.create_task(_callback_funcs[func_id](data)) for func_id in self._on_sub_receive_func_ids]

async def start_receive_loop(self)

说明: 开始接收数据 会自动判断主进程和子进程,需要在对应进程都调度一次

源代码在GitHub上查看
python
async def start_receive_loop(self):
-    """
-        开始接收数据
-        会自动判断主进程和子进程,需要在对应进程都调度一次
-        """
-    if len(self._on_main_receive_func_ids) == 0:
-        logger.warning(f'No on_receive function registered for {self.name}')
-        return
-    self.is_receive_loop_running = True
-    logger.debug(f'Starting receive loop for {self.name}')
-    while not self._closed:
-        data = await self.async_receive()
-        await self._run_on_receive_funcs(data)

var active_channel

  • 说明: 子进程可用的主动和被动通道

  • 类型: Channel

  • 默认值: Channel(name='active_channel')

var publish_channel

  • 说明: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • 类型: Channel[tuple[str, dict[str, Any]]]

  • 默认值: Channel(name='publish_channel')

var channel_deliver_active_channel

  • 说明: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • 类型: Channel[Channel[Any]]

  • 默认值: NO_DEFAULT

def set_channel(name: str, channel: Channel)

说明: 设置通道实例

参数:

  • name: 通道名称
  • channel: 通道实例
源代码在GitHub上查看
python
def set_channel(name: str, channel: 'Channel'):
+    return decorator

var active_channel

  • 说明: 子进程可用的主动和被动通道

  • 类型: Channel

  • 默认值: Channel(name='active_channel')

var passive_channel

  • 说明: 被动通道

  • 类型: Channel

  • 默认值: Channel(name='passive_channel')

var publish_channel

  • 说明: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • 类型: Channel[tuple[str, dict[str, Any]]]

  • 默认值: Channel(name='publish_channel')

var channel_deliver_active_channel

  • 说明: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • 类型: Channel[Channel[Any]]

  • 默认值: NO_DEFAULT

var channel_deliver_passive_channel

  • 说明: 被动通道传递通道

  • 类型: Channel[tuple[str, dict[str, Any]]]

  • 默认值: NO_DEFAULT

def set_channel(name: str, channel: Channel)

说明: 设置通道实例

参数:

  • name (str): 通道名称
  • channel (Channel): 通道实例
源代码在GitHub上查看
python
def set_channel(name: str, channel: 'Channel'):
     """
     设置通道实例
     Args:
-        name: 通道名称
-        channel: 通道实例
+        name ([`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 通道名称
+        channel ([`Channel`](#class-channel-generic-t)): 通道实例
     """
     if not isinstance(channel, Channel):
         raise TypeError(f'channel_ must be an instance of Channel, {type(channel)} found')
@@ -176,46 +125,48 @@
             raise ValueError(f'Channel {name} already exists')
         _channel[name] = channel
     else:
-        channel_deliver_passive_channel.send(('set_channel', {'name': name, 'channel_': channel}))

def set_channels(channels: dict[str, Channel])

说明: 设置通道实例

参数:

  • channels: 通道名称
源代码在GitHub上查看
python
def set_channels(channels: dict[str, 'Channel']):
+        channel_deliver_passive_channel.send(('set_channel', {'name': name, 'channel_': channel}))

def set_channels(channels: dict[str, Channel])

说明: 设置通道实例

参数:

源代码在GitHub上查看
python
def set_channels(channels: dict[str, 'Channel']):
     """
     设置通道实例
     Args:
-        channels: 通道名称
+        channels ([`dict`](https%3A//docs.python.org/3/library/stdtypes.html#dict)[[`str`](https%3A//docs.python.org/3/library/stdtypes.html#str), [`Channel`](#class-channel-generic-t)]): 通道实例
     """
     for name, channel in channels.items():
-        set_channel(name, channel)

def get_channel(name: str) -> Channel

说明: 获取通道实例

参数:

  • name: 通道名称
源代码在GitHub上查看
python
def get_channel(name: str) -> 'Channel':
+        set_channel(name, channel)

def get_channel(name: str) -> Channel

说明: 获取通道实例

参数:

  • name (str): 通道名称

返回: Channel: 通道实例

源代码在GitHub上查看
python
def get_channel(name: str) -> 'Channel':
     """
     获取通道实例
     Args:
-        name: 通道名称
+        name ([`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 通道名称
     Returns:
+        [`Channel`](#class-channel-generic-t): 通道实例
     """
     if IS_MAIN_PROCESS:
         return _channel[name]
     else:
         recv_chan = Channel[Channel[Any]]('recv_chan')
         channel_deliver_passive_channel.send(('get_channel', {'name': name, 'recv_chan': recv_chan}))
-        return recv_chan.receive()

def get_channels() -> dict[str, Channel]

说明: 获取通道实例

源代码在GitHub上查看
python
def get_channels() -> dict[str, 'Channel']:
+        return recv_chan.receive()

def get_channels() -> dict[str, Channel]

说明: 获取通道实例们

返回: dict[str, Channel]: 通道实例

源代码在GitHub上查看
python
def get_channels() -> dict[str, 'Channel']:
     """
-    获取通道实例
+    获取通道实例们
     Returns:
+        [`dict`](https%3A//docs.python.org/3/library/stdtypes.html#dict)[[`str`](https%3A//docs.python.org/3/library/stdtypes.html#str), [`Channel`](#class-channel-generic-t)]: 通道实例
     """
     if IS_MAIN_PROCESS:
         return _channel
     else:
         recv_chan = Channel[dict[str, Channel[Any]]]('recv_chan')
         channel_deliver_passive_channel.send(('get_channels', {'recv_chan': recv_chan}))
-        return recv_chan.receive()

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')

def on_set_channel(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')
+        return recv_chan.receive()

var channel_deliver_active_channel

  • 说明: 主动通道传递通道

  • 默认值: Channel(name='channel_deliver_active_channel')

var channel_deliver_passive_channel

  • 说明: 被动通道传递通道

  • 默认值: Channel(name='channel_deliver_passive_channel')

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')

def on_set_channel(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')
 def on_set_channel(data: tuple[str, dict[str, Any]]):
     name, channel = (data[1]['name'], data[1]['channel_'])
-    set_channel(name, channel)

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')

def on_get_channel(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')
+    set_channel(name, channel)

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')

def on_get_channel(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')
 def on_get_channel(data: tuple[str, dict[str, Any]]):
     name, recv_chan = (data[1]['name'], data[1]['recv_chan'])
-    recv_chan.send(get_channel(name))

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')

def on_get_channels(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')
+    recv_chan.send(get_channel(name))

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')

def on_get_channels(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')
 def on_get_channels(data: tuple[str, dict[str, Any]]):
     recv_chan = data[1]['recv_chan']
     recv_chan.send(get_channels())

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/comm/comm.html b/dev/api/comm/comm.html index 16fb80da..7289b771 100644 --- a/dev/api/comm/comm.html +++ b/dev/api/comm/comm.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/comm/event.html b/dev/api/comm/event.html index 9fcc2fc8..a261b713 100644 --- a/dev/api/comm/event.html +++ b/dev/api/comm/event.html @@ -8,21 +8,21 @@ - + - + - + -
Skip to content

liteyuki.comm.event

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/26 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File : event.py @Software: PyCharm

class Event

def __init__(self, name: str, data: dict[str, Any])

源代码在GitHub上查看
python
def __init__(self, name: str, data: dict[str, Any]):
+    
-    
+    
     
   
 
\ No newline at end of file
diff --git a/dev/api/comm/index.html b/dev/api/comm/index.html
index 7bd2d63b..95309968 100644
--- a/dev/api/comm/index.html
+++ b/dev/api/comm/index.html
@@ -8,9 +8,9 @@
     
     
     
-    
+    
     
-    
+    
     
     
     
@@ -20,7 +20,7 @@
   
   
     
-    
+    
     
   
 
\ No newline at end of file
diff --git a/dev/api/comm/rpc.html b/dev/api/comm/rpc.html
index c1a156a7..32336abf 100644
--- a/dev/api/comm/rpc.html
+++ b/dev/api/comm/rpc.html
@@ -8,9 +8,9 @@
     
     
     
-    
+    
     
-    
+    
     
     
     
@@ -25,7 +25,7 @@
         调用
         """
     return self.on_calling(args, kwargs)

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/comm/socks_channel.html b/dev/api/comm/socks_channel.html index 4b2cee8e..6c004ea7 100644 --- a/dev/api/comm/socks_channel.html +++ b/dev/api/comm/socks_channel.html @@ -8,18 +8,18 @@ - + - + - + -
Skip to content

liteyuki.comm.socks_channel

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/8/25 下午3:54 @Author : snowykami @Email : snowykami@outlook.com @File : channelv2.py @Software: PyCharm

class SocksChannel

def __init__(self, name: str)

说明: 初始化通道

参数:

  • name: 通道ID
源代码在GitHub上查看
python
def __init__(self, name: str):
+    
Skip to content

liteyuki.comm.socks_channel

说明: 基于socket的通道

class SocksChannel

def __init__(self, name: str)

说明: 初始化通道

参数:

  • name: 通道ID
源代码在GitHub上查看
python
def __init__(self, name: str):
     """
         初始化通道
         Args:
@@ -28,24 +28,24 @@
     self._name = name
     self._conn_send = None
     self._conn_recv = None
-    self._closed = False

def send(self, data)

说明: 发送数据

参数:

  • data: 数据
源代码在GitHub上查看
python
def send(self, data):
+    self._closed = False

def send(self, data)

说明: 发送数据

参数:

  • data: 数据
源代码在GitHub上查看
python
def send(self, data):
     """
         发送数据
         Args:
             data: 数据
         """
-    pass

def receive(self)

说明: 接收数据

返回: data: 数据

源代码在GitHub上查看
python
def receive(self):
+    pass

def receive(self)

说明: 接收数据

返回: data: 数据

源代码在GitHub上查看
python
def receive(self):
     """
         接收数据
         Returns:
             data: 数据
         """
-    pass

def close(self)

说明: 关闭通道

源代码在GitHub上查看
python
def close(self):
+    pass

def close(self)

说明: 关闭通道

源代码在GitHub上查看
python
def close(self):
     """
         关闭通道
         """
     pass

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/comm/storage.html b/dev/api/comm/storage.html index 2596763e..1e59804f 100644 --- a/dev/api/comm/storage.html +++ b/dev/api/comm/storage.html @@ -8,11 +8,11 @@ - + - + - + @@ -147,7 +147,7 @@ with cls._lock: if cls._instance is None: cls._instance = KeyValueStore() - return cls._instance

attr _instance = None

attr _lock = threading.Lock()

var _ref_count

  • 说明: import 引用计数, 防止获取空指针

  • 默认值: 0

@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')

def on_get(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')
+    return cls._instance

attr _instance = None

attr _lock = threading.Lock()

var shared_memory

  • 说明: 共享内存对象

  • 类型: KeyValueStore

  • 默认值: GlobalKeyValueStore.get_instance()

var _ref_count

  • 说明: import 引用计数, 防止获取空指针

  • 默认值: 0

@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')

def on_get(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')
 def on_get(data: tuple[str, dict[str, Any]]):
     key = data[1]['key']
     default = data[1]['default']
@@ -163,7 +163,7 @@
 def on_get_all(data: tuple[str, dict[str, Any]]):
     recv_chan = data[1]['recv_chan']
     recv_chan.send(shared_memory.get_all())

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/config.html b/dev/api/config.html index 51135e45..d53e1328 100644 --- a/dev/api/config.html +++ b/dev/api/config.html @@ -8,9 +8,9 @@ - + - + @@ -96,7 +96,7 @@ config = load_configs_from_dirs('config', no_waring=no_waring) config.update(load_from_files('config.yaml', 'config.toml', 'config.json', 'config.yml', no_warning=no_waring)) return config

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/core/core.html b/dev/api/core/core.html index 580d28e3..751d971e 100644 --- a/dev/api/core/core.html +++ b/dev/api/core/core.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/core/index.html b/dev/api/core/index.html index 63668e35..b1b764c6 100644 --- a/dev/api/core/index.html +++ b/dev/api/core/index.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/core/manager.html b/dev/api/core/manager.html index 5b816da6..5dd4abe5 100644 --- a/dev/api/core/manager.html +++ b/dev/api/core/manager.html @@ -8,11 +8,11 @@ - + - + - + @@ -27,38 +27,7 @@ self.publish = publish

class ProcessManager

def __init__(self, lifespan: Lifespan)

源代码在GitHub上查看
python
def __init__(self, lifespan: 'Lifespan'):
     self.lifespan = lifespan
     self.targets: dict[str, tuple[Callable, tuple, dict]] = {}
-    self.processes: dict[str, Process] = {}

async def _run_process(self, name: str)

说明: 开启后自动监控进程,并添加到进程字典中,会阻塞,请创建task

参数:

  • name:
源代码在GitHub上查看
python
async def _run_process(self, name: str):
-    """
-        开启后自动监控进程,并添加到进程字典中,会阻塞,请创建task
-        Args:
-            name:
-        Returns:
-        """
-    if name not in self.targets:
-        raise KeyError(f'Process {name} not found.')
-    chan_active = get_channel(f'{name}-active')
-
-    def _start_process():
-        process = Process(target=self.targets[name][0], args=self.targets[name][1], kwargs=self.targets[name][2], daemon=True)
-        self.processes[name] = process
-        process.start()
-    _start_process()
-    while True:
-        data = await chan_active.async_receive()
-        if data == 0:
-            logger.info(f'Stopping process {name}')
-            await self.lifespan.before_process_shutdown()
-            self.terminate(name)
-            break
-        elif data == 1:
-            logger.info(f'Restarting process {name}')
-            await self.lifespan.before_process_shutdown()
-            await self.lifespan.before_process_restart()
-            self.terminate(name)
-            _start_process()
-            continue
-        else:
-            logger.warning('Unknown data received, ignored.')

async def start_all(self)

说明: 对外启动方法,启动所有进程,创建asyncio task

源代码在GitHub上查看
python
async def start_all(self):
+    self.processes: dict[str, Process] = {}

async def start_all(self)

说明: 对外启动方法,启动所有进程,创建asyncio task

源代码在GitHub上查看
python
async def start_all(self):
     """
         对外启动方法,启动所有进程,创建asyncio task
         """
@@ -111,7 +80,7 @@
     if name not in self.targets:
         logger.warning(f'Process {name} not found.')
     return self.processes[name].is_alive()

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/dev/dev.html b/dev/api/dev/dev.html index bd4811ee..b61d433e 100644 --- a/dev/api/dev/dev.html +++ b/dev/api/dev/dev.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/dev/index.html b/dev/api/dev/index.html index d16039c3..9bc0d8e2 100644 --- a/dev/api/dev/index.html +++ b/dev/api/dev/index.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/dev/observer.html b/dev/api/dev/observer.html index 028b1d6a..7b6c4e5d 100644 --- a/dev/api/dev/observer.html +++ b/dev/api/dev/observer.html @@ -8,11 +8,11 @@ - + - + - + @@ -34,13 +34,13 @@ return func(*args, **kwargs) last_call_time = None return wrapper - return decorator

class CodeModifiedHandler(FileSystemEventHandler)

@debounce(1)

def on_modified(self, event)

源代码在GitHub上查看
python
@debounce(1)
+    return decorator

class CodeModifiedHandler(FileSystemEventHandler)

@debounce(1)

def on_modified(self, event)

源代码在GitHub上查看
python
@debounce(1)
 def on_modified(self, event):
-    raise NotImplementedError('on_modified must be implemented')

def on_created(self, event)

源代码在GitHub上查看
python
def on_created(self, event):
-    self.on_modified(event)

def on_deleted(self, event)

源代码在GitHub上查看
python
def on_deleted(self, event):
-    self.on_modified(event)

def on_moved(self, event)

源代码在GitHub上查看
python
def on_moved(self, event):
-    self.on_modified(event)

def on_any_event(self, event)

源代码在GitHub上查看
python
def on_any_event(self, event):
-    self.on_modified(event)

def on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]

说明: 注册文件系统变化监听器

参数:

  • directories: 监听目录们
  • recursive: 是否递归监听子目录
  • event_filter: 事件过滤器, 返回True则执行回调函数

返回: 装饰器,装饰一个函数在接收到数据后执行

源代码在GitHub上查看
python
def on_file_system_event(directories: tuple[str], recursive: bool=True, event_filter: FILTER_FUNC=None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]:
+    raise NotImplementedError('on_modified must be implemented')

def on_created(self, event)

源代码在GitHub上查看
python
def on_created(self, event):
+    self.on_modified(event)

def on_deleted(self, event)

源代码在GitHub上查看
python
def on_deleted(self, event):
+    self.on_modified(event)

def on_moved(self, event)

源代码在GitHub上查看
python
def on_moved(self, event):
+    self.on_modified(event)

def on_any_event(self, event)

源代码在GitHub上查看
python
def on_any_event(self, event):
+    self.on_modified(event)

def on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]

说明: 注册文件系统变化监听器

参数:

  • directories: 监听目录们
  • recursive: 是否递归监听子目录
  • event_filter: 事件过滤器, 返回True则执行回调函数

返回: 装饰器,装饰一个函数在接收到数据后执行

源代码在GitHub上查看
python
def on_file_system_event(directories: tuple[str], recursive: bool=True, event_filter: FILTER_FUNC=None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]:
     """
     注册文件系统变化监听器
     Args:
@@ -63,7 +63,7 @@
             observer.schedule(code_modified_handler, directory, recursive=recursive)
         return func
     return decorator

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/dev/plugin.html b/dev/api/dev/plugin.html index e552909a..078a10a8 100644 --- a/dev/api/dev/plugin.html +++ b/dev/api/dev/plugin.html @@ -8,9 +8,9 @@ - + - + @@ -31,7 +31,7 @@ cfg['liteyuki.plugins'] = plugins bot = LiteyukiBot(**cfg) bot.run()

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/exception.html b/dev/api/exception.html index 8a3ca24d..92990539 100644 --- a/dev/api/exception.html +++ b/dev/api/exception.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/index.html b/dev/api/index.html index fd78ff0d..9d57a9e1 100644 --- a/dev/api/index.html +++ b/dev/api/index.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/log.html b/dev/api/log.html index 5a4457b6..46b65da4 100644 --- a/dev/api/log.html +++ b/dev/api/log.html @@ -8,9 +8,9 @@ - + - + @@ -37,7 +37,7 @@ logger.level('SUCCESS', color='<green>', icon=f"{('✅' if show_icon else '')}SUCCESS") logger.level('WARNING', color='<yellow>', icon=f"{('⚠️' if show_icon else '')}WARNING") logger.level('ERROR', color='<red>', icon=f"{('⭕' if show_icon else '')}ERROR")

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/message/event.html b/dev/api/message/event.html index 0db283d5..a501bba6 100644 --- a/dev/api/message/event.html +++ b/dev/api/message/event.html @@ -8,9 +8,9 @@ - + - + @@ -55,7 +55,7 @@ reply_event = MessageEvent(message_type=self.session_type, message=message, raw_message='', data={'message': message}, bot_id=self.bot_id, session_id=self.session_id, user_id=self.user_id, session_type=self.session_type, receive_channel=None) if self.receive_channel: self.receive_channel.send(reply_event)

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/message/index.html b/dev/api/message/index.html index e82fe7d8..9f4867aa 100644 --- a/dev/api/message/index.html +++ b/dev/api/message/index.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/message/matcher.html b/dev/api/message/matcher.html index 35ed2a6c..3168fb32 100644 --- a/dev/api/message/matcher.html +++ b/dev/api/message/matcher.html @@ -8,9 +8,9 @@ - + - + @@ -54,7 +54,7 @@ await handler(event) except Exception: traceback.print_exc()

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/message/message.html b/dev/api/message/message.html index afd8bb3c..9cadf533 100644 --- a/dev/api/message/message.html +++ b/dev/api/message/message.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/message/on.html b/dev/api/message/on.html index 20eae514..f129cae0 100644 --- a/dev/api/message/on.html +++ b/dev/api/message/on.html @@ -8,9 +8,9 @@ - + - + @@ -34,7 +34,7 @@ async def on_keywords_rule(event: MessageEvent): return any((keyword in event.raw_message for keyword in keywords)) return on_message(on_keywords_rule & rule, priority, block)

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/message/rule.html b/dev/api/message/rule.html index ae49ac7e..5006e581 100644 --- a/dev/api/message/rule.html +++ b/dev/api/message/rule.html @@ -8,9 +8,9 @@ - + - + @@ -36,7 +36,7 @@ return True

@Rule

async def is_su_rule(event: MessageEvent) -> bool

源代码在GitHub上查看
python
@Rule
 async def is_su_rule(event: MessageEvent) -> bool:
     return str(event.user_id) in _superusers

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/message/session.html b/dev/api/message/session.html index 20cfef0d..66f63cb6 100644 --- a/dev/api/message/session.html +++ b/dev/api/message/session.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/mkdoc.html b/dev/api/mkdoc.html index f9676497..0c0fc15f 100644 --- a/dev/api/mkdoc.html +++ b/dev/api/mkdoc.html @@ -8,9 +8,9 @@ - + - + @@ -180,7 +180,7 @@ print(f'Generate {pyfile_path} -> {abs_md_path}') file_data[abs_md_path] = md_content write_to_files(file_data)

var no_module_name_pyfile_path

  • 说明: 去头路径

  • 默认值: get_relative_path(module_folder, pyfile_path)

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/plugin/index.html b/dev/api/plugin/index.html index 4f946b66..0c4b8d52 100644 --- a/dev/api/plugin/index.html +++ b/dev/api/plugin/index.html @@ -8,9 +8,9 @@ - + - + @@ -26,7 +26,7 @@ dict[str, Plugin]: 插件字典 """ return _plugins

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/plugin/load.html b/dev/api/plugin/load.html index 3b74d8a5..b6b07359 100644 --- a/dev/api/plugin/load.html +++ b/dev/api/plugin/load.html @@ -8,9 +8,9 @@ - + - + @@ -102,7 +102,7 @@ case PluginType.SERVICE: color = 'c' return f'<{color}>{display_name} [{plugin_type.name}]</{color}>'

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/plugin/manager.html b/dev/api/plugin/manager.html index d9dd381a..c27fbade 100644 --- a/dev/api/plugin/manager.html +++ b/dev/api/plugin/manager.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/plugin/model.html b/dev/api/plugin/model.html index 6c3d82b9..58e2b333 100644 --- a/dev/api/plugin/model.html +++ b/dev/api/plugin/model.html @@ -8,9 +8,9 @@ - + - + @@ -21,7 +21,7 @@
Skip to content

liteyuki.plugin.model

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/24 上午12:02 @Author : snowykami @Email : snowykami@outlook.com @File : model.py @Software: PyCharm

class PluginType(Enum)

attr APPLICATION = 'application'

attr SERVICE = 'service'

attr MODULE = 'module'

attr UNCLASSIFIED = 'unclassified'

attr TEST = 'test'

class PluginMetadata(BaseModel)

attr name: str = NO_DEFAULT

attr description: str = ''

attr usage: str = ''

attr type: PluginType = PluginType.UNCLASSIFIED

attr author: str = ''

attr homepage: str = ''

attr extra: dict[str, Any] = {}

class Plugin(BaseModel)

def __hash__(self)

源代码在GitHub上查看
python
def __hash__(self):
     return hash(self.module_name)

attr model_config = {'arbitrary_types_allowed': True}

attr name: str = NO_DEFAULT

attr module: ModuleType = NO_DEFAULT

attr module_name: str = NO_DEFAULT

attr metadata: Optional[PluginMetadata] = None

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/plugin/plugin.html b/dev/api/plugin/plugin.html index 8bce9bfe..6d740ddc 100644 --- a/dev/api/plugin/plugin.html +++ b/dev/api/plugin/plugin.html @@ -8,9 +8,9 @@ - + - + @@ -26,7 +26,7 @@ dict[str, Plugin]: 插件字典 """ return _plugins

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/plugins/liteecho.html b/dev/api/plugins/liteecho.html index 9cee7359..b3053a5f 100644 --- a/dev/api/plugins/liteecho.html +++ b/dev/api/plugins/liteecho.html @@ -8,9 +8,9 @@ - + - + @@ -22,7 +22,7 @@
Skip to content

liteyuki.plugins.liteecho

说明: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/8/22 下午12:31 @Author : snowykami @Email : snowykami@outlook.com @File : liteecho.py @Software: PyCharm

@on_startswith(['liteecho'], rule=is_su_rule).handle()

async def liteecho(event: MessageEvent)

源代码在GitHub上查看
python
@on_startswith(['liteecho'], rule=is_su_rule).handle()
 async def liteecho(event: MessageEvent):
     event.reply(event.raw_message.strip()[8:].strip())

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/plugins/plugin_loader/index.html b/dev/api/plugins/plugin_loader/index.html index fd53f157..ec5eeb25 100644 --- a/dev/api/plugins/plugin_loader/index.html +++ b/dev/api/plugins/plugin_loader/index.html @@ -8,9 +8,9 @@ - + - + @@ -27,7 +27,7 @@ load_plugin(plugin) for plugin_dir in get_config('liteyuki.plugin_dirs', ['src/liteyuki_plugins']): load_plugins(plugin_dir)

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/plugins/plugin_loader/plugin_loader.html b/dev/api/plugins/plugin_loader/plugin_loader.html index 2629a37c..7fe71862 100644 --- a/dev/api/plugins/plugin_loader/plugin_loader.html +++ b/dev/api/plugins/plugin_loader/plugin_loader.html @@ -8,9 +8,9 @@ - + - + @@ -27,7 +27,7 @@ load_plugin(plugin) for plugin_dir in get_config('liteyuki.plugin_dirs', ['src/liteyuki_plugins']): load_plugins(plugin_dir)

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/api/utils.html b/dev/api/utils.html index 4c1563c7..dba93fc1 100644 --- a/dev/api/utils.html +++ b/dev/api/utils.html @@ -8,9 +8,9 @@ - + - + @@ -89,7 +89,7 @@ return func(*args, **kwargs) wrapper.__signature__ = inspect.signature(func) return wrapper

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/comm.html b/dev/comm.html index a737a41b..3b481810 100644 --- a/dev/comm.html +++ b/dev/comm.html @@ -8,9 +8,9 @@ - + - + @@ -62,7 +62,7 @@ shared_memory.set("key", "value") # 设置共享内存 value = shared_memory.get("key") # 获取共享内存

源代码:liteyuki/comm/storage.py

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/lyfunc.html b/dev/lyfunc.html index 6c292321..8387cb20 100644 --- a/dev/lyfunc.html +++ b/dev/lyfunc.html @@ -8,9 +8,9 @@ - + - + @@ -39,7 +39,7 @@ sleep 0.2 nohup function poke await

API

理论上所有基于onebotv11的api都可调用,不同Adapter api也有差别.

Onebot v11 API文档

结束关键字

由于LiteyukiBot基于异步运行, 所以在编写lyfunction时也要注意异步的调用,避免出现"单线程走到底"的情况是效率提升的关键.

await 异步任务结束关键字,用于结束当前已完成function的执行

WARNING

但若出现非单function的情况,有一个task任务没有完成而await被执行了,那么当前所有函数包的task都会被截停销毁

TIP

编写轻雪函数推荐你使用VS Code插件Liteyuki Function实现语法高亮

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/plugin.html b/dev/plugin.html index 87b45f61..d60d62a9 100644 --- a/dev/plugin.html +++ b/dev/plugin.html @@ -8,9 +8,9 @@ - + - + @@ -51,7 +51,7 @@ liteyuki.restart_process("nonebot") # 调用重启进程方法

加载插件

方法1

  • 在配置文件中的liteyuki.plugins中添加你的插件路径,例如watchdog_plugin,重启轻雪即可加载插件。

方法2

  • 使用开发工具快速运行插件,无需手动创建实例
  • 创建入口文件,例如main.py,并在其中写入以下代码
python
from liteyuki.dev.plugin import run_plugins
 
 run_plugins("watchdog_plugin")

然后运行python main.py即可启动插件

启用插件后,我们在src/nonebot_plugins下创建一个文件,例如test.py,并在其中写入一些代码,保存后轻雪会自动重载NoneBot进程

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/dev/resource.html b/dev/resource.html index 6a4dfc04..16becb4e 100644 --- a/dev/resource.html +++ b/dev/resource.html @@ -8,9 +8,9 @@ - + - + @@ -32,7 +32,7 @@ description: "资源包描述" # 你可以自定义一些信息,但请保证以上三个字段 ...
  • 资源包加载遵循一个优先级,即后加载的资源包会覆盖前面的资源包,例如,你在A包中定义了一个index.html文件,B包也定义了一个index.html文件,那么加载B包后,A包中的index.html文件会被覆盖
  • 对于不同资源包的不同文件,是可以相对引用的,例如你在A中定义了templates/index.html,在B中定义了templates/style.css,可以在A的index.html中用./style.css相对路径引用B中的css

TIP

资源包的结构会随着轻雪的更新而有变动,第三方资源包开发者需要注意版本兼容性,同时用户也应该自行选择可用的资源包

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/en/deploy/config.html b/en/deploy/config.html index 7c465fcc..a1a5afa0 100644 --- a/en/deploy/config.html +++ b/en/deploy/config.html @@ -8,9 +8,9 @@ - + - + @@ -48,7 +48,7 @@ debug: false # Debug mode, if true, Liteyuki will output more detailed logs dev_mode: false # development mode, if true, Liteyuki will load all plugins in the development directory ...
yaml

Example: Configuration of OneBot implementation side connected to NoneBot

In production environments, it is recommended to use reverse WebSocket The fields provided by different implementation sides may be different, but basically the same. Here is a reference value

FieldsValueDescription
protocolReverse WebSocketLiteyuki-NoneBot as server
addressws://127.0.0.1:20216/onebot/v11/wsThe address depends on the configuration file, the default is `
AccessToken""If you have configured AccessToken for Liteyuki, please fill in the same value here
  • To use other communication methods, please visit OneBot Adapter for detailed information

Other

  • Liteyuki is not limited to the OneBot adapter and NoneBot2. You can use any adapter supported by NoneBot2 or use the Liteyuki message delivery plugin

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/deploy/fandq.html b/en/deploy/fandq.html index f7a92ff6..38725972 100644 --- a/en/deploy/fandq.html +++ b/en/deploy/fandq.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

FAQ

Frequently Asked Questions

  • There are too many python interpreters on my computer, how do I know which one to use?

    • You can specify which python interpreter to use by using the full path to the python executable, for example, /path/to/python main.py
    • Use virtual environments to avoid conflicts between different python interpreters
  • Why does the bot not respond after I start it?

    • Please check the configuration file command_start or superusers, make sure you have permission to use the command and send it correctly
    • Make sure the command header does not conflict with nickname{}, for example, a command is help, but the Bot nickname has a help, then it will be parsed as a nickname instead of a command
  • Update Liteyuki failed, error InvalidGitRepositoryError

    • Please install Git correctly and deploy Liteyuki using cloning instead of direct download
  • How to log in to chat platforms such as Telegram?

    • If you have this question, it means you don't know much about this project. This project does not implement the login function, only the message processing and response. The login function is provided by the implementation side (protocol side). The implementation side itself does not handle response logic. It processes and reports messages to Liteyuki according to the OneBot standard. You need to use an implementation side that complies with the OneBot standard to connect to Liteyuki and report messages to Liteyuki. Some recommended implementation sides have been listed below
  • Playwright installation failed

    • Enter playwright install to install the browser
  • Some plugins report errors after installation and cannot be started

    • Please refer to the plugin documentation first, confirm that the necessary configuration items of the plugin are intact, and if the problem persists, please contact the plugin author or start Liteyuki in safe mode safe_mode: true. In safe mode, you can use npm uninstall to uninstall problematic plugins

Other questions

  1. Lagrange.OneBot, based on Lagrange.Core, a Linux QQ implementation, supports OneBotv11 protocol
  2. LLOneBot, a plugin for Liteloader NTQQ, supports OneBotv11 protocol
  3. OpenShamrock, based on Lsposed, supports kritor protocol
  4. TRSS-Yunzai, based on Node.js, supports OneBotv11 protocol
  5. go-cqhttp,A QQ Client based on go, supports OneBotv11 protocol
  6. Gensokyo, use QQ protocol
  1. MinecraftOneBot, We develop a Minecraft server chat bot

Other project encountered issues, please prioritize the documentation and issues of the project itself, don't ask LiteyukiBot developers

Acknowledgements

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/deploy/install.html b/en/deploy/install.html index 3ad9efad..2eb4fe55 100644 --- a/en/deploy/install.html +++ b/en/deploy/install.html @@ -8,9 +8,9 @@ - + - + @@ -27,7 +27,7 @@ pip install -r requirements.txt # start the bot! python main.py

TIP

It is recommended to use a virtual environment to run Liteyuki to avoid dependency conflicts. You can use python -m venv .venv to create a virtual environment, and then use .venv\Scripts\activate to activate the virtual environment (use source .venv/bin/activate to activate on Linux).

Run with Docker

  1. Install Docker
  2. Clone Repo git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1
  3. Change directory cd LiteyukiBot
  4. Build docker image docker build -t liteyukibot .
  5. Run container docker run -p 20216:20216 -v $(pwd):/liteyukibot -v $(pwd)/.cache:/root/.cache liteyukibot

TIP

If you are using Windows, please use the absolute project directory /path/to/LiteyukiBot instead of $&#40;pwd&#41;
If you have modified the port number, please replace 20216:20216 with your port number

Use TRSS Script

TRSS_Liteyuki Management Script, which provides a more convenient way to manage LiteyukiBot, recommended to use Arch Linux

Device Requirements

  • Windows system version minimum Windows10+/Windows Server 2019+
  • Linux system requires Python3.10+, recommended Ubuntu 20.04+
  • CPU: at least 1vCPU
  • Memory: Bot without other plugins will occupy 300~500MB, including chromium and node processes, other plugins depend on specific plugins, recommended 1GB or more
  • Disk: at least 1GB of space

WARNING

If there are multiple environments on the device, please use path/to/python -m pip install -r requirements.txt to install dependencies, path/to/python is the path to your Python executable

WARNING

Liteyuki's update function depends on Git. If you do not have Git installed and run the source code directly, you will not be able to use the update function

For other questions, please refer to FAQ

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/api.html b/en/dev/api/api.html index 7f6198f9..9b8af869 100644 --- a/en/dev/api/api.html +++ b/en/dev/api/api.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/dev/api/bot/bot.html b/en/dev/api/bot/bot.html index ce2c0169..a21edf0c 100644 --- a/en/dev/api/bot/bot.html +++ b/en/dev/api/bot/bot.html @@ -8,24 +8,22 @@ - + - + - + -
Skip to content

liteyuki.bot

class LiteyukiBot

def __init__(self, *args, **kwargs) -> None

Description: 初始化轻雪实例

Arguments:

  • *args:
  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, *args, **kwargs) -> None:
+    
Skip to content

liteyuki.bot

class LiteyukiBot

def __init__(self, **kwargs) -> None

Description: 初始化轻雪实例

Arguments:

  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, **kwargs) -> None:
     """
         初始化轻雪实例
         Args:
-            *args:
             **kwargs: 配置
-
         """
     '常规操作'
     print_logo()
@@ -49,48 +47,27 @@
     '信号处理'
     signal.signal(signal.SIGINT, self._handle_exit)
     signal.signal(signal.SIGTERM, self._handle_exit)
-    atexit.register(self.process_manager.terminate_all)

async def _run(self)

Description: 启动逻辑

Source code or View on GitHub
python
async def _run(self):
-    """
-        启动逻辑
-        """
-    await self.lifespan.before_start()
-    await self.process_manager.start_all()
-    await self.lifespan.after_start()
-    await self.keep_alive()

def run(self)

Description: 外部启动接口

Source code or View on GitHub
python
def run(self):
+    atexit.register(self.process_manager.terminate_all)

def run(self)

Description: 外部启动接口

Source code or View on GitHub
python
def run(self):
     """
         外部启动接口
         """
     try:
         asyncio.run(self._run())
     except KeyboardInterrupt:
-        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

Description: 保持轻雪运行

Source code or View on GitHub
python
async def keep_alive(self):
+        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

Description: 保持轻雪运行

Source code or View on GitHub
python
async def keep_alive(self):
     """
         保持轻雪运行
-        Returns:
-
         """
     try:
         while not self.stop_event.is_set():
             time.sleep(0.5)
     except KeyboardInterrupt:
         logger.info('Liteyuki is stopping...')
-        self.stop()

def _handle_exit(self, signum, frame)

Description: 信号处理

Arguments:

  • signum:
  • frame:
Source code or View on GitHub
python
def _handle_exit(self, signum, frame):
-    """
-        信号处理
-        Args:
-            signum:
-            frame:
-
-        Returns:
-
-        """
-    logger.info('Received signal, stopping all processes.')
-    self.stop()
-    sys.exit(0)

def restart(self, delay: int = 0)

Description: 重启轻雪本体

Source code or View on GitHub
python
def restart(self, delay: int=0):
+        self.stop()

def restart(self, delay: int = 0)

Description: 重启轻雪本体

Arguments:

  • delay (int, optional): 延迟重启时间. Defaults to 0.
Source code or View on GitHub
python
def restart(self, delay: int=0):
     """
         重启轻雪本体
-        Returns:
-
+        Args:
+            delay ([`int`](https%3A//docs.python.org/3/library/functions.html#int), optional): 延迟重启时间. Defaults to 0.
         """
     if self.call_restart_count < 1:
         executable = sys.executable
@@ -108,11 +85,11 @@
         self.process_manager.terminate_all()
         threading.Thread(target=os.system, args=(f"{cmd} {executable} {' '.join(args)}",)).start()
         sys.exit(0)
-    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

Description: 停止轻雪

Arguments:

  • name: 进程名称, 默认为None, 所有进程
Source code or View on GitHub
python
def restart_process(self, name: Optional[str]=None):
+    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

Description: 停止轻雪

Arguments:

Source code or View on GitHub
python
def restart_process(self, name: Optional[str]=None):
     """
         停止轻雪
         Args:
-            name: 进程名称, 默认为None, 所有进程
+            name ([`Optional`](https%3A//docs.python.org/3/library/typing.html#typing.Optional)[[`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)]): 进程名. Defaults to None.
         Returns:
         """
     if name is not None:
@@ -121,106 +98,100 @@
     else:
         for process_name in self.process_manager.processes:
             chan_active = get_channel(f'{process_name}-active')
-            chan_active.send(1)

def init(self, *args, **kwargs)

Description: 初始化轻雪, 自动调用

Source code or View on GitHub
python
def init(self, *args, **kwargs):
+            chan_active.send(1)

def init(self, *args, **kwargs)

Description: 初始化轻雪, 自动调用

Arguments:

  • *args: 参数
  • **kwargs: 关键字参数
Source code or View on GitHub
python
def init(self, *args, **kwargs):
     """
         初始化轻雪, 自动调用
-        Returns:
-
+        Args:
+            *args: 参数
+            **kwargs: 关键字参数
         """
-    self.init_logger()

def init_logger(self)

Source code or View on GitHub
python
def init_logger(self):
-    init_log(config=self.config)

def stop(self)

Description: 停止轻雪

Source code or View on GitHub
python
def stop(self):
+    self.init_logger()

def init_logger(self)

Description: 初始化日志

Source code or View on GitHub
python
def init_logger(self):
+    """
+        初始化日志
+        """
+    init_log(config=self.config)

def stop(self)

Description: 停止轻雪

Source code or View on GitHub
python
def stop(self):
     """
         停止轻雪
-        Returns:
-
         """
     self.stop_event.set()
-    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC)

Description: 注册启动前的函数

Arguments:

  • func:
Source code or View on GitHub
python
def on_before_start(self, func: LIFESPAN_FUNC):
+    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册启动前的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动前的函数
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

Description: 注册启动后的函数

Arguments:

  • func:
Source code or View on GitHub
python
def on_after_start(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

Description: 注册启动后的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_start(self, func: LIFESPAN_FUNC):
     """
         注册启动后的函数
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

Description: 注册停止后的函数:未实现

Arguments:

  • func:
Source code or View on GitHub
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

Description: 注册停止后的函数:未实现

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
     """
         注册停止后的函数:未实现
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: LIFESPAN_FUNC)

Description: 注册进程停止前的函数,为子进程停止时调用

Arguments:

  • func:
Source code or View on GitHub
python
def on_before_process_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)

Description: 注册进程停止前的函数,为子进程停止时调用

Arguments:

Return: PROCESS_LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC):
     """
         注册进程停止前的函数,为子进程停止时调用
         Args:
-            func:
-
+            func ([`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: LIFESPAN_FUNC)

Description: 注册进程重启前的函数,为子进程重启时调用

Arguments:

  • func:
Source code or View on GitHub
python
def on_before_process_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

Description: 注册进程重启前的函数,为子进程重启时调用

Arguments:

Return: PROCESS_LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
         注册进程重启前的函数,为子进程重启时调用
         Args:
-            func:
-
+            func ([`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

Description: 注册重启后的函数:未实现

Arguments:

  • func:
Source code or View on GitHub
python
def on_after_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

Description: 注册重启后的函数:未实现

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_restart(self, func: LIFESPAN_FUNC):
     """
         注册重启后的函数:未实现
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

Description: 获取轻雪实例

Return: LiteyukiBot: 当前的轻雪实例

Source code or View on GitHub
python
def get_bot() -> LiteyukiBot:
+    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

Description: 获取轻雪实例

Return: LiteyukiBot: 轻雪实例

Source code or View on GitHub
python
def get_bot() -> LiteyukiBot:
     """
     获取轻雪实例
-
     Returns:
-        LiteyukiBot: 当前的轻雪实例
+        [`LiteyukiBot`](#class-liteyukibot): 轻雪实例
     """
     if IS_MAIN_PROCESS:
         if _BOT_INSTANCE is None:
             raise RuntimeError('Liteyuki instance not initialized.')
         return _BOT_INSTANCE
     else:
-        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

Description: 获取配置

Arguments:

  • key: 配置键
  • default: 默认值

Return: Any: 配置值

Source code or View on GitHub
python
def get_config(key: str, default: Any=None) -> Any:
+        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

Description: 获取配置

Arguments:

  • key (str): 配置键
  • default (Any, optional): 默认值. Defaults to None.

Return: Any: 配置值

Source code or View on GitHub
python
def get_config(key: str, default: Any=None) -> Any:
     """
     获取配置
     Args:
-        key: 配置键
-        default: 默认值
-
+        key ([`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        default ([`Any`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
     Returns:
-        Any: 配置值
+        [`Any`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
-    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

Description: 获取配置,兼容旧版本

Arguments:

  • key: 配置键
  • compat_keys: 兼容键
  • default: 默认值

Return: Any: 配置值

Source code or View on GitHub
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
+    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

Description: 获取配置,兼容旧版本

Arguments:

  • key (str): 配置键
  • compat_keys (tuplestr): 兼容键
  • default (Any, optional): 默认值. Defaults to None.

Return: Any: 配置值

Source code or View on GitHub
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
     """
     获取配置,兼容旧版本
     Args:
-        key: 配置键
-        compat_keys: 兼容键
-        default: 默认值
+        key ([`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        compat_keys ([`tuple`](https%3A//docs.python.org/3/library/stdtypes.html#tuple)[`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 兼容键
+        default ([`Any`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
 
     Returns:
-        Any: 配置值
+        [`Any`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
     if key in get_bot().config:
         return get_bot().config[key]
@@ -228,9 +199,8 @@
         if compat_key in get_bot().config:
             logger.warning(f'Config key "{compat_key}" will be deprecated, use "{key}" instead.')
             return get_bot().config[compat_key]
-    return default
Source code or View on GitHub
python
def print_logo():
-    print('\x1b[34m' + '\n     __        ______  ________  ________  __      __  __    __  __    __  ______ \n    /  |      /      |/        |/        |/  \\    /  |/  |  /  |/  |  /  |/      |\n    $$ |      $$$$$$/ $$$$$$$$/ $$$$$$$$/ $$  \\  /$$/ $$ |  $$ |$$ | /$$/ $$$$$$/ \n    $$ |        $$ |     $$ |   $$ |__     $$  \\/$$/  $$ |  $$ |$$ |/$$/    $$ |  \n    $$ |        $$ |     $$ |   $$    |     $$  $$/   $$ |  $$ |$$  $$<     $$ |  \n    $$ |        $$ |     $$ |   $$$$$/       $$$$/    $$ |  $$ |$$$$$  \\    $$ |  \n    $$ |_____  _$$ |_    $$ |   $$ |_____     $$ |    $$ \\__$$ |$$ |$$  \\  _$$ |_ \n    $$       |/ $$   |   $$ |   $$       |    $$ |    $$    $$/ $$ | $$  |/ $$   |\n    $$$$$$$$/ $$$$$$/    $$/    $$$$$$$$/     $$/      $$$$$$/  $$/   $$/ $$$$$$/ \n                ' + '\x1b[0m')

Documentation built with VitePress | API references generated by litedoc

- + return default

Documentation built with VitePress | API references generated by litedoc

+ \ No newline at end of file diff --git a/en/dev/api/bot/index.html b/en/dev/api/bot/index.html index f691567a..5f429d58 100644 --- a/en/dev/api/bot/index.html +++ b/en/dev/api/bot/index.html @@ -8,24 +8,22 @@ - + - + - + -
Skip to content

liteyuki.bot

class LiteyukiBot

def __init__(self, *args, **kwargs) -> None

Description: 初始化轻雪实例

Arguments:

  • *args:
  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, *args, **kwargs) -> None:
+    
Skip to content

liteyuki.bot

class LiteyukiBot

def __init__(self, **kwargs) -> None

Description: 初始化轻雪实例

Arguments:

  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, **kwargs) -> None:
     """
         初始化轻雪实例
         Args:
-            *args:
             **kwargs: 配置
-
         """
     '常规操作'
     print_logo()
@@ -49,48 +47,27 @@
     '信号处理'
     signal.signal(signal.SIGINT, self._handle_exit)
     signal.signal(signal.SIGTERM, self._handle_exit)
-    atexit.register(self.process_manager.terminate_all)

async def _run(self)

Description: 启动逻辑

Source code or View on GitHub
python
async def _run(self):
-    """
-        启动逻辑
-        """
-    await self.lifespan.before_start()
-    await self.process_manager.start_all()
-    await self.lifespan.after_start()
-    await self.keep_alive()

def run(self)

Description: 外部启动接口

Source code or View on GitHub
python
def run(self):
+    atexit.register(self.process_manager.terminate_all)

def run(self)

Description: 外部启动接口

Source code or View on GitHub
python
def run(self):
     """
         外部启动接口
         """
     try:
         asyncio.run(self._run())
     except KeyboardInterrupt:
-        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

Description: 保持轻雪运行

Source code or View on GitHub
python
async def keep_alive(self):
+        logger.info('Liteyuki is stopping...')

async def keep_alive(self)

Description: 保持轻雪运行

Source code or View on GitHub
python
async def keep_alive(self):
     """
         保持轻雪运行
-        Returns:
-
         """
     try:
         while not self.stop_event.is_set():
             time.sleep(0.5)
     except KeyboardInterrupt:
         logger.info('Liteyuki is stopping...')
-        self.stop()

def _handle_exit(self, signum, frame)

Description: 信号处理

Arguments:

  • signum:
  • frame:
Source code or View on GitHub
python
def _handle_exit(self, signum, frame):
-    """
-        信号处理
-        Args:
-            signum:
-            frame:
-
-        Returns:
-
-        """
-    logger.info('Received signal, stopping all processes.')
-    self.stop()
-    sys.exit(0)

def restart(self, delay: int = 0)

Description: 重启轻雪本体

Source code or View on GitHub
python
def restart(self, delay: int=0):
+        self.stop()

def restart(self, delay: int = 0)

Description: 重启轻雪本体

Arguments:

  • delay (int, optional): 延迟重启时间. Defaults to 0.
Source code or View on GitHub
python
def restart(self, delay: int=0):
     """
         重启轻雪本体
-        Returns:
-
+        Args:
+            delay ([`int`](https%3A//docs.python.org/3/library/functions.html#int), optional): 延迟重启时间. Defaults to 0.
         """
     if self.call_restart_count < 1:
         executable = sys.executable
@@ -108,11 +85,11 @@
         self.process_manager.terminate_all()
         threading.Thread(target=os.system, args=(f"{cmd} {executable} {' '.join(args)}",)).start()
         sys.exit(0)
-    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

Description: 停止轻雪

Arguments:

  • name: 进程名称, 默认为None, 所有进程
Source code or View on GitHub
python
def restart_process(self, name: Optional[str]=None):
+    self.call_restart_count += 1

def restart_process(self, name: Optional[str] = None)

Description: 停止轻雪

Arguments:

Source code or View on GitHub
python
def restart_process(self, name: Optional[str]=None):
     """
         停止轻雪
         Args:
-            name: 进程名称, 默认为None, 所有进程
+            name ([`Optional`](https%3A//docs.python.org/3/library/typing.html#typing.Optional)[[`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)]): 进程名. Defaults to None.
         Returns:
         """
     if name is not None:
@@ -121,106 +98,100 @@
     else:
         for process_name in self.process_manager.processes:
             chan_active = get_channel(f'{process_name}-active')
-            chan_active.send(1)

def init(self, *args, **kwargs)

Description: 初始化轻雪, 自动调用

Source code or View on GitHub
python
def init(self, *args, **kwargs):
+            chan_active.send(1)

def init(self, *args, **kwargs)

Description: 初始化轻雪, 自动调用

Arguments:

  • *args: 参数
  • **kwargs: 关键字参数
Source code or View on GitHub
python
def init(self, *args, **kwargs):
     """
         初始化轻雪, 自动调用
-        Returns:
-
+        Args:
+            *args: 参数
+            **kwargs: 关键字参数
         """
-    self.init_logger()

def init_logger(self)

Source code or View on GitHub
python
def init_logger(self):
-    init_log(config=self.config)

def stop(self)

Description: 停止轻雪

Source code or View on GitHub
python
def stop(self):
+    self.init_logger()

def init_logger(self)

Description: 初始化日志

Source code or View on GitHub
python
def init_logger(self):
+    """
+        初始化日志
+        """
+    init_log(config=self.config)

def stop(self)

Description: 停止轻雪

Source code or View on GitHub
python
def stop(self):
     """
         停止轻雪
-        Returns:
-
         """
     self.stop_event.set()
-    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC)

Description: 注册启动前的函数

Arguments:

  • func:
Source code or View on GitHub
python
def on_before_start(self, func: LIFESPAN_FUNC):
+    self.loop.stop()

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册启动前的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动前的函数
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

Description: 注册启动后的函数

Arguments:

  • func:
Source code or View on GitHub
python
def on_after_start(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_start(func)

def on_after_start(self, func: LIFESPAN_FUNC)

Description: 注册启动后的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_start(self, func: LIFESPAN_FUNC):
     """
         注册启动后的函数
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

Description: 注册停止后的函数:未实现

Arguments:

  • func:
Source code or View on GitHub
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_start(func)

def on_after_shutdown(self, func: LIFESPAN_FUNC)

Description: 注册停止后的函数:未实现

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_shutdown(self, func: LIFESPAN_FUNC):
     """
         注册停止后的函数:未实现
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: LIFESPAN_FUNC)

Description: 注册进程停止前的函数,为子进程停止时调用

Arguments:

  • func:
Source code or View on GitHub
python
def on_before_process_shutdown(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_after_shutdown(func)

def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)

Description: 注册进程停止前的函数,为子进程停止时调用

Arguments:

Return: PROCESS_LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC):
     """
         注册进程停止前的函数,为子进程停止时调用
         Args:
-            func:
-
+            func ([`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: LIFESPAN_FUNC)

Description: 注册进程重启前的函数,为子进程重启时调用

Arguments:

  • func:
Source code or View on GitHub
python
def on_before_process_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_shutdown(func)

def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

Description: 注册进程重启前的函数,为子进程重启时调用

Arguments:

Return: PROCESS_LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
         注册进程重启前的函数,为子进程重启时调用
         Args:
-            func:
-
+            func ([`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func)): 生命周期函数
         Returns:
-
+            [`PROCESS_LIFESPAN_FUNC`](./lifespan#var-process-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

Description: 注册重启后的函数:未实现

Arguments:

  • func:
Source code or View on GitHub
python
def on_after_restart(self, func: LIFESPAN_FUNC):
+    return self.lifespan.on_before_process_restart(func)

def on_after_restart(self, func: LIFESPAN_FUNC)

Description: 注册重启后的函数:未实现

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_restart(self, func: LIFESPAN_FUNC):
     """
         注册重启后的函数:未实现
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](./lifespan#var-lifespan-func)): 生命周期函数
         Returns:
-
+            [`LIFESPAN_FUNC`](./lifespan#var-lifespan-func): 生命周期函数
         """
-    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

Description: 获取轻雪实例

Return: LiteyukiBot: 当前的轻雪实例

Source code or View on GitHub
python
def get_bot() -> LiteyukiBot:
+    return self.lifespan.on_after_restart(func)

def get_bot() -> LiteyukiBot

Description: 获取轻雪实例

Return: LiteyukiBot: 轻雪实例

Source code or View on GitHub
python
def get_bot() -> LiteyukiBot:
     """
     获取轻雪实例
-
     Returns:
-        LiteyukiBot: 当前的轻雪实例
+        [`LiteyukiBot`](#class-liteyukibot): 轻雪实例
     """
     if IS_MAIN_PROCESS:
         if _BOT_INSTANCE is None:
             raise RuntimeError('Liteyuki instance not initialized.')
         return _BOT_INSTANCE
     else:
-        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

Description: 获取配置

Arguments:

  • key: 配置键
  • default: 默认值

Return: Any: 配置值

Source code or View on GitHub
python
def get_config(key: str, default: Any=None) -> Any:
+        raise RuntimeError("Can't get bot instance in sub process.")

def get_config(key: str, default: Any = None) -> Any

Description: 获取配置

Arguments:

  • key (str): 配置键
  • default (Any, optional): 默认值. Defaults to None.

Return: Any: 配置值

Source code or View on GitHub
python
def get_config(key: str, default: Any=None) -> Any:
     """
     获取配置
     Args:
-        key: 配置键
-        default: 默认值
-
+        key ([`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        default ([`Any`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
     Returns:
-        Any: 配置值
+        [`Any`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
-    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

Description: 获取配置,兼容旧版本

Arguments:

  • key: 配置键
  • compat_keys: 兼容键
  • default: 默认值

Return: Any: 配置值

Source code or View on GitHub
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
+    return get_bot().config.get(key, default)

def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any

Description: 获取配置,兼容旧版本

Arguments:

  • key (str): 配置键
  • compat_keys (tuplestr): 兼容键
  • default (Any, optional): 默认值. Defaults to None.

Return: Any: 配置值

Source code or View on GitHub
python
def get_config_with_compat(key: str, compat_keys: tuple[str], default: Any=None) -> Any:
     """
     获取配置,兼容旧版本
     Args:
-        key: 配置键
-        compat_keys: 兼容键
-        default: 默认值
+        key ([`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 配置键
+        compat_keys ([`tuple`](https%3A//docs.python.org/3/library/stdtypes.html#tuple)[`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 兼容键
+        default ([`Any`](https%3A//docs.python.org/3/library/functions.html#any), optional): 默认值. Defaults to None.
 
     Returns:
-        Any: 配置值
+        [`Any`](https%3A//docs.python.org/3/library/functions.html#any): 配置值
     """
     if key in get_bot().config:
         return get_bot().config[key]
@@ -228,9 +199,8 @@
         if compat_key in get_bot().config:
             logger.warning(f'Config key "{compat_key}" will be deprecated, use "{key}" instead.')
             return get_bot().config[compat_key]
-    return default
Source code or View on GitHub
python
def print_logo():
-    print('\x1b[34m' + '\n     __        ______  ________  ________  __      __  __    __  __    __  ______ \n    /  |      /      |/        |/        |/  \\    /  |/  |  /  |/  |  /  |/      |\n    $$ |      $$$$$$/ $$$$$$$$/ $$$$$$$$/ $$  \\  /$$/ $$ |  $$ |$$ | /$$/ $$$$$$/ \n    $$ |        $$ |     $$ |   $$ |__     $$  \\/$$/  $$ |  $$ |$$ |/$$/    $$ |  \n    $$ |        $$ |     $$ |   $$    |     $$  $$/   $$ |  $$ |$$  $$<     $$ |  \n    $$ |        $$ |     $$ |   $$$$$/       $$$$/    $$ |  $$ |$$$$$  \\    $$ |  \n    $$ |_____  _$$ |_    $$ |   $$ |_____     $$ |    $$ \\__$$ |$$ |$$  \\  _$$ |_ \n    $$       |/ $$   |   $$ |   $$       |    $$ |    $$    $$/ $$ | $$  |/ $$   |\n    $$$$$$$$/ $$$$$$/    $$/    $$$$$$$$/     $$/      $$$$$$/  $$/   $$/ $$$$$$/ \n                ' + '\x1b[0m')

Documentation built with VitePress | API references generated by litedoc

- + return default

Documentation built with VitePress | API references generated by litedoc

+ \ No newline at end of file diff --git a/en/dev/api/bot/lifespan.html b/en/dev/api/bot/lifespan.html index 8534f2c2..96d5841e 100644 --- a/en/dev/api/bot/lifespan.html +++ b/en/dev/api/bot/lifespan.html @@ -8,132 +8,122 @@ - + - + - + -
Skip to content

liteyuki.bot.lifespan

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File : lifespan.py @Software: PyCharm

class Lifespan

def __init__(self) -> None

Description: 轻雪生命周期管理,启动、停止、重启

Source code or View on GitHub
python
def __init__(self) -> None:
+    
Skip to content

liteyuki.bot.lifespan

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/23 下午8:24 @Author : snowykami @Email : snowykami@outlook.com @File : lifespan.py @Software: PyCharm

var SYNC_LIFESPAN_FUNC

  • Description: 同步生命周期函数

  • Type: TypeAlias

  • Default: Callable[[], Any]

var ASYNC_LIFESPAN_FUNC

  • Description: 异步生命周期函数

  • Type: TypeAlias

  • Default: Callable[[], Awaitable[Any]]

var LIFESPAN_FUNC

  • Description: 生命周期函数

  • Type: TypeAlias

  • Default: SYNC_LIFESPAN_FUNC | ASYNC_LIFESPAN_FUNC

var SYNC_PROCESS_LIFESPAN_FUNC

  • Description: 同步进程生命周期函数

  • Type: TypeAlias

  • Default: Callable[[str], Any]

var ASYNC_PROCESS_LIFESPAN_FUNC

  • Description: 异步进程生命周期函数

  • Type: TypeAlias

  • Default: Callable[[str], Awaitable[Any]]

var PROCESS_LIFESPAN_FUNC

  • Description: 进程函数

  • Type: TypeAlias

  • Default: SYNC_PROCESS_LIFESPAN_FUNC | ASYNC_PROCESS_LIFESPAN_FUNC

class Lifespan

def __init__(self) -> None

Description: 轻雪生命周期管理,启动、停止、重启

Source code or View on GitHub
python
def __init__(self) -> None:
     """
         轻雪生命周期管理,启动、停止、重启
         """
     self.life_flag: int = 0
     self._before_start_funcs: list[LIFESPAN_FUNC] = []
     self._after_start_funcs: list[LIFESPAN_FUNC] = []
-    self._before_process_shutdown_funcs: list[LIFESPAN_FUNC] = []
+    self._before_process_shutdown_funcs: list[PROCESS_LIFESPAN_FUNC] = []
     self._after_shutdown_funcs: list[LIFESPAN_FUNC] = []
-    self._before_process_restart_funcs: list[LIFESPAN_FUNC] = []
-    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

async def run_funcs(funcs: list[ASYNC_LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None

Description: 并发运行异步函数

Arguments:

  • funcs:
Source code or View on GitHub
python
@staticmethod
-async def run_funcs(funcs: list[ASYNC_LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:
+    self._before_process_restart_funcs: list[PROCESS_LIFESPAN_FUNC] = []
+    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

async def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None

Description: 并发运行异步函数

Arguments:

Source code or View on GitHub
python
@staticmethod
+async def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:
     """
         并发运行异步函数
         Args:
-            funcs:
+            funcs ([`Sequence`](https%3A//docs.python.org/3/library/typing.html#typing.Sequence)[[`ASYNC_LIFESPAN_FUNC`](#var-lifespan-func) | [`PROCESS_LIFESPAN_FUNC`](#var-process-lifespan-func)]): 函数列表
         Returns:
         """
-    loop = asyncio.get_running_loop()
     tasks = [func(*args, **kwargs) if is_coroutine_callable(func) else async_wrapper(func)(*args, **kwargs) for func in funcs]
-    await asyncio.gather(*tasks)

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册启动时的函数

Arguments:

  • func:

Return: LIFESPAN_FUNC:

Source code or View on GitHub
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    await asyncio.gather(*tasks)

def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册启动时的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动时的函数
         Args:
-            func:
+            func ([`LIFESPAN_FUNC`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [`LIFESPAN_FUNC`](#var-lifespan-func): 生命周期函数
         """
     self._before_start_funcs.append(func)
-    return func

def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册启动时的函数

Arguments:

  • func:

Return: LIFESPAN_FUNC:

Source code or View on GitHub
python
def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册启动时的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册启动时的函数
         Args:
-            func:
+            func ([`LIFESPAN_FUNC`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [`LIFESPAN_FUNC`](#var-lifespan-func): 生命周期函数
         """
     self._after_start_funcs.append(func)
-    return func

def on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册停止前的函数

Arguments:

  • func:

Return: LIFESPAN_FUNC:

Source code or View on GitHub
python
def on_before_process_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

Description: 注册进程停止前的函数

Arguments:

Return: PROCESS_LIFESPAN_FUNC: 进程生命周期函数

Source code or View on GitHub
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
-        注册停止前的函数
+        注册进程停止前的函数
         Args:
-            func:
+            func ([`PROCESS_LIFESPAN_FUNC`](#var-process-lifespan-func)): 进程生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [`PROCESS_LIFESPAN_FUNC`](#var-process-lifespan-func): 进程生命周期函数
         """
     self._before_process_shutdown_funcs.append(func)
-    return func

def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册停止后的函数

Arguments:

  • func:

Return: LIFESPAN_FUNC:

Source code or View on GitHub
python
def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册停止后的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册停止后的函数
         Args:
-            func:
-
+            func ([`LIFESPAN_FUNC`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
-
+            [`LIFESPAN_FUNC`](#var-lifespan-func): 生命周期函数
         """
     self._after_shutdown_funcs.append(func)
-    return func

def on_before_process_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册重启时的函数

Arguments:

  • func:

Return: LIFESPAN_FUNC:

Source code or View on GitHub
python
def on_before_process_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC

Description: 注册进程重启前的函数

Arguments:

Return: PROCESS_LIFESPAN_FUNC: 进程生命周期函数

Source code or View on GitHub
python
def on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC:
     """
-        注册重启时的函数
+        注册进程重启前的函数
         Args:
-            func:
+            func ([`PROCESS_LIFESPAN_FUNC`](#var-process-lifespan-func)): 进程生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [`PROCESS_LIFESPAN_FUNC`](#var-process-lifespan-func): 进程生命周期函数
         """
     self._before_process_restart_funcs.append(func)
-    return func

def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册重启后的函数

Arguments:

  • func:

Return: LIFESPAN_FUNC:

Source code or View on GitHub
python
def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
+    return func

def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC

Description: 注册重启后的函数

Arguments:

Return: LIFESPAN_FUNC: 生命周期函数

Source code or View on GitHub
python
def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:
     """
         注册重启后的函数
         Args:
-            func:
+            func ([`LIFESPAN_FUNC`](#var-lifespan-func)): 生命周期函数
         Returns:
-            LIFESPAN_FUNC:
+            [`LIFESPAN_FUNC`](#var-lifespan-func): 生命周期函数
         """
     self._after_restart_funcs.append(func)
-    return func

async def before_start(self) -> None

Description: 启动前

Source code or View on GitHub
python
async def before_start(self) -> None:
+    return func

async def before_start(self) -> None

Description: 启动前钩子

Source code or View on GitHub
python
async def before_start(self) -> None:
     """
-        启动前
-        Returns:
+        启动前钩子
         """
     logger.debug('Running before_start functions')
-    await self.run_funcs(self._before_start_funcs)

async def after_start(self) -> None

Description: 启动后

Source code or View on GitHub
python
async def after_start(self) -> None:
+    await self.run_funcs(self._before_start_funcs)

async def after_start(self) -> None

Description: 启动后钩子

Source code or View on GitHub
python
async def after_start(self) -> None:
     """
-        启动后
-        Returns:
+        启动后钩子
         """
     logger.debug('Running after_start functions')
-    await self.run_funcs(self._after_start_funcs)

async def before_process_shutdown(self) -> None

Description: 停止前

Source code or View on GitHub
python
async def before_process_shutdown(self) -> None:
+    await self.run_funcs(self._after_start_funcs)

async def before_process_shutdown(self) -> None

Description: 停止前钩子

Source code or View on GitHub
python
async def before_process_shutdown(self) -> None:
     """
-        停止前
-        Returns:
+        停止前钩子
         """
     logger.debug('Running before_shutdown functions')
-    await self.run_funcs(self._before_process_shutdown_funcs)

async def after_shutdown(self) -> None

Description: 停止后

Source code or View on GitHub
python
async def after_shutdown(self) -> None:
+    await self.run_funcs(self._before_process_shutdown_funcs)

async def after_shutdown(self) -> None

Description: 停止后钩子 未实现

Source code or View on GitHub
python
async def after_shutdown(self) -> None:
     """
-        停止后
-        Returns:
+        停止后钩子 未实现
         """
     logger.debug('Running after_shutdown functions')
-    await self.run_funcs(self._after_shutdown_funcs)

async def before_process_restart(self) -> None

Description: 重启前

Source code or View on GitHub
python
async def before_process_restart(self) -> None:
+    await self.run_funcs(self._after_shutdown_funcs)

async def before_process_restart(self) -> None

Description: 重启前钩子

Source code or View on GitHub
python
async def before_process_restart(self) -> None:
     """
-        重启前
-        Returns:
+        重启前钩子
         """
     logger.debug('Running before_restart functions')
-    await self.run_funcs(self._before_process_restart_funcs)

async def after_restart(self) -> None

Description: 重启后

Source code or View on GitHub
python
async def after_restart(self) -> None:
+    await self.run_funcs(self._before_process_restart_funcs)

async def after_restart(self) -> None

Description: 重启后钩子 未实现

Source code or View on GitHub
python
async def after_restart(self) -> None:
     """
-        重启后
-        Returns:
-
+        重启后钩子 未实现
         """
     logger.debug('Running after_restart functions')
     await self.run_funcs(self._after_restart_funcs)

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/comm/channel.html b/en/dev/api/comm/channel.html index 881b9d4a..8291e507 100644 --- a/en/dev/api/comm/channel.html +++ b/en/dev/api/comm/channel.html @@ -8,18 +8,18 @@ - + - + - + -
Skip to content

liteyuki.comm.channel

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/26 下午11:21 @Author : snowykami @Email : snowykami@outlook.com @File : channel_.py @Software: PyCharm

本模块定义了一个通用的通道类,用于进程间通信

class Channel(Generic[T])

def __init__(self, name: str, type_check: Optional[bool] = None)

Description: 初始化通道

Arguments:

  • name: 通道ID
  • type_check: 是否开启类型检查, 若为空,则传入泛型默认开启,否则默认关闭
Source code or View on GitHub
python
def __init__(self, name: str, type_check: Optional[bool]=None):
+    
Skip to content

liteyuki.comm.channel

Description: 本模块定义了一个通用的通道类,用于进程间通信

var SYNC_ON_RECEIVE_FUNC

  • Description: 同步接收函数

  • Type: TypeAlias

  • Default: Callable[[T], Any]

var ASYNC_ON_RECEIVE_FUNC

  • Description: 异步接收函数

  • Type: TypeAlias

  • Default: Callable[[T], Coroutine[Any, Any, Any]]

var ON_RECEIVE_FUNC

  • Description: 接收函数

  • Type: TypeAlias

  • Default: SYNC_ON_RECEIVE_FUNC | ASYNC_ON_RECEIVE_FUNC

var SYNC_FILTER_FUNC

  • Description: 同步过滤函数

  • Type: TypeAlias

  • Default: Callable[[T], bool]

var ASYNC_FILTER_FUNC

  • Description: 异步过滤函数

  • Type: TypeAlias

  • Default: Callable[[T], Coroutine[Any, Any, bool]]

var FILTER_FUNC

  • Description: 过滤函数

  • Type: TypeAlias

  • Default: SYNC_FILTER_FUNC | ASYNC_FILTER_FUNC

class Channel(Generic[T])

def __init__(self, name: str, type_check: Optional[bool] = None)

Description: 初始化通道

Arguments:

  • name: 通道ID
  • type_check: 是否开启类型检查, 若为空,则传入泛型默认开启,否则默认关闭
Source code or View on GitHub
python
def __init__(self, name: str, type_check: Optional[bool]=None):
     """
         初始化通道
         Args:
@@ -47,44 +47,11 @@
         _channel[name] = self
         logger.debug(f'Channel {name} initialized in main process')
     else:
-        logger.debug(f'Channel {name} initialized in sub process, should manually set in main process')

def _get_generic_type(self) -> Optional[type]

Description: 获取通道传递泛型类型

Return: Optional[type]: 泛型类型

Source code or View on GitHub
python
def _get_generic_type(self) -> Optional[type]:
-    """
-        获取通道传递泛型类型
-
-        Returns:
-            Optional[type]: 泛型类型
-        """
-    if hasattr(self, '__orig_class__'):
-        return get_args(self.__orig_class__)[0]
-    return None

def _validate_structure(self, data: Any, structure: type) -> bool

Description: 验证数据结构

Arguments:

  • data: 数据
  • structure: 结构

Return: bool: 是否通过验证

Source code or View on GitHub
python
def _validate_structure(self, data: Any, structure: type) -> bool:
-    """
-        验证数据结构
-        Args:
-            data: 数据
-            structure: 结构
-
-        Returns:
-            bool: 是否通过验证
-        """
-    if isinstance(structure, type):
-        return isinstance(data, structure)
-    elif isinstance(structure, tuple):
-        if not isinstance(data, tuple) or len(data) != len(structure):
-            return False
-        return all((self._validate_structure(d, s) for d, s in zip(data, structure)))
-    elif isinstance(structure, list):
-        if not isinstance(data, list):
-            return False
-        return all((self._validate_structure(d, structure[0]) for d in data))
-    elif isinstance(structure, dict):
-        if not isinstance(data, dict):
-            return False
-        return all((k in data and self._validate_structure(data[k], structure[k]) for k in structure))
-    return False

def send(self, data: T)

Description: 发送数据,发送函数为同步函数,没有异步的必要

Arguments:

  • data: 数据
Source code or View on GitHub
python
def send(self, data: T):
+        logger.debug(f'Channel {name} initialized in sub process, should manually set in main process')

def send(self, data: T)

Description: 发送数据,发送函数为同步函数,没有异步的必要

Arguments:

  • data (T): 数据
Source code or View on GitHub
python
def send(self, data: T):
     """
         发送数据,发送函数为同步函数,没有异步的必要
         Args:
-            data: 数据
+            data (T): 数据
         """
     if self.type_check:
         _type = self._get_generic_type()
@@ -92,30 +59,33 @@
             raise TypeError(f'Data must be an instance of {_type}, {type(data)} found')
     if self._closed:
         raise RuntimeError('Cannot send to a closed channel_')
-    self.conn_send.send(data)

def receive(self) -> T

Description: 同步接收数据,会阻塞线程

Source code or View on GitHub
python
def receive(self) -> T:
+    self.conn_send.send(data)

def receive(self) -> T

Description: 同步接收数据,会阻塞线程

Return: T: 数据

Source code or View on GitHub
python
def receive(self) -> T:
     """
         同步接收数据,会阻塞线程
-        Args:
+        Returns:
+            T: 数据
         """
     if self._closed:
         raise RuntimeError('Cannot receive from a closed channel_')
     while True:
         data = self.conn_recv.recv()
-        return data

async def async_receive(self) -> T

Description: 异步接收数据,会挂起等待

Source code or View on GitHub
python
async def async_receive(self) -> T:
+        return data

async def async_receive(self) -> T

Description: 异步接收数据,会挂起等待

Return: T: 数据

Source code or View on GitHub
python
async def async_receive(self) -> T:
     """
         异步接收数据,会挂起等待
+        Returns:
+            T: 数据
         """
     print('等待接收数据')
     loop = asyncio.get_running_loop()
     data = await loop.run_in_executor(None, self.receive)
     print('接收到数据')
-    return data

def on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]

Description: 接收数据并执行函数

Arguments:

  • filter_func: 过滤函数,为None则不过滤

Return: 装饰器,装饰一个函数在接收到数据后执行

Source code or View on GitHub
python
def on_receive(self, filter_func: Optional[FILTER_FUNC]=None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]:
+    return data

def on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]

Description: 接收数据并执行函数

Arguments:

Return: Callable[[Callable[[T], Any]], Callable[[T], Any]]: 装饰器

Source code or View on GitHub
python
def on_receive(self, filter_func: Optional[FILTER_FUNC]=None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]:
     """
         接收数据并执行函数
         Args:
-            filter_func: 过滤函数,为None则不过滤
+            filter_func ([`Optional`](https%3A//docs.python.org/3/library/typing.html#typing.Optional)[[`FILTER_FUNC`](#var-FILTER_FUNC)], optional): 过滤函数. Defaults to None.
         Returns:
-            装饰器,装饰一个函数在接收到数据后执行
+            Callable[[Callable[[T], Any]], Callable[[T], Any]]: 装饰器
         """
     if not IS_MAIN_PROCESS:
         raise RuntimeError('on_receive can only be used in main process')
@@ -141,33 +111,12 @@
             self._on_sub_receive_func_ids.append(_func_id)
         _func_id += 1
         return func
-    return decorator

async def _run_on_receive_funcs(self, data: Any)

Description: 运行接收函数

Arguments:

  • data: 数据
Source code or View on GitHub
python
async def _run_on_receive_funcs(self, data: Any):
-    """
-        运行接收函数
-        Args:
-            data: 数据
-        """
-    if IS_MAIN_PROCESS:
-        [asyncio.create_task(_callback_funcs[func_id](data)) for func_id in self._on_main_receive_func_ids]
-    else:
-        [asyncio.create_task(_callback_funcs[func_id](data)) for func_id in self._on_sub_receive_func_ids]

async def start_receive_loop(self)

Description: 开始接收数据 会自动判断主进程和子进程,需要在对应进程都调度一次

Source code or View on GitHub
python
async def start_receive_loop(self):
-    """
-        开始接收数据
-        会自动判断主进程和子进程,需要在对应进程都调度一次
-        """
-    if len(self._on_main_receive_func_ids) == 0:
-        logger.warning(f'No on_receive function registered for {self.name}')
-        return
-    self.is_receive_loop_running = True
-    logger.debug(f'Starting receive loop for {self.name}')
-    while not self._closed:
-        data = await self.async_receive()
-        await self._run_on_receive_funcs(data)

var active_channel

  • Description: 子进程可用的主动和被动通道

  • Type: Channel

  • Default: Channel(name='active_channel')

var publish_channel

  • Description: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • Type: Channel[tuple[str, dict[str, Any]]]

  • Default: Channel(name='publish_channel')

var channel_deliver_active_channel

  • Description: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • Type: Channel[Channel[Any]]

  • Default: NO_DEFAULT

def set_channel(name: str, channel: Channel)

Description: 设置通道实例

Arguments:

  • name: 通道名称
  • channel: 通道实例
Source code or View on GitHub
python
def set_channel(name: str, channel: 'Channel'):
+    return decorator

var active_channel

  • Description: 子进程可用的主动和被动通道

  • Type: Channel

  • Default: Channel(name='active_channel')

var passive_channel

  • Description: 被动通道

  • Type: Channel

  • Default: Channel(name='passive_channel')

var publish_channel

  • Description: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • Type: Channel[tuple[str, dict[str, Any]]]

  • Default: Channel(name='publish_channel')

var channel_deliver_active_channel

  • Description: 通道传递通道,主进程创建单例,子进程初始化时实例化

  • Type: Channel[Channel[Any]]

  • Default: NO_DEFAULT

var channel_deliver_passive_channel

  • Description: 被动通道传递通道

  • Type: Channel[tuple[str, dict[str, Any]]]

  • Default: NO_DEFAULT

def set_channel(name: str, channel: Channel)

Description: 设置通道实例

Arguments:

  • name (str): 通道名称
  • channel (Channel): 通道实例
Source code or View on GitHub
python
def set_channel(name: str, channel: 'Channel'):
     """
     设置通道实例
     Args:
-        name: 通道名称
-        channel: 通道实例
+        name ([`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 通道名称
+        channel ([`Channel`](#class-channel-generic-t)): 通道实例
     """
     if not isinstance(channel, Channel):
         raise TypeError(f'channel_ must be an instance of Channel, {type(channel)} found')
@@ -176,46 +125,48 @@
             raise ValueError(f'Channel {name} already exists')
         _channel[name] = channel
     else:
-        channel_deliver_passive_channel.send(('set_channel', {'name': name, 'channel_': channel}))

def set_channels(channels: dict[str, Channel])

Description: 设置通道实例

Arguments:

  • channels: 通道名称
Source code or View on GitHub
python
def set_channels(channels: dict[str, 'Channel']):
+        channel_deliver_passive_channel.send(('set_channel', {'name': name, 'channel_': channel}))

def set_channels(channels: dict[str, Channel])

Description: 设置通道实例

Arguments:

Source code or View on GitHub
python
def set_channels(channels: dict[str, 'Channel']):
     """
     设置通道实例
     Args:
-        channels: 通道名称
+        channels ([`dict`](https%3A//docs.python.org/3/library/stdtypes.html#dict)[[`str`](https%3A//docs.python.org/3/library/stdtypes.html#str), [`Channel`](#class-channel-generic-t)]): 通道实例
     """
     for name, channel in channels.items():
-        set_channel(name, channel)

def get_channel(name: str) -> Channel

Description: 获取通道实例

Arguments:

  • name: 通道名称
Source code or View on GitHub
python
def get_channel(name: str) -> 'Channel':
+        set_channel(name, channel)

def get_channel(name: str) -> Channel

Description: 获取通道实例

Arguments:

  • name (str): 通道名称

Return: Channel: 通道实例

Source code or View on GitHub
python
def get_channel(name: str) -> 'Channel':
     """
     获取通道实例
     Args:
-        name: 通道名称
+        name ([`str`](https%3A//docs.python.org/3/library/stdtypes.html#str)): 通道名称
     Returns:
+        [`Channel`](#class-channel-generic-t): 通道实例
     """
     if IS_MAIN_PROCESS:
         return _channel[name]
     else:
         recv_chan = Channel[Channel[Any]]('recv_chan')
         channel_deliver_passive_channel.send(('get_channel', {'name': name, 'recv_chan': recv_chan}))
-        return recv_chan.receive()

def get_channels() -> dict[str, Channel]

Description: 获取通道实例

Source code or View on GitHub
python
def get_channels() -> dict[str, 'Channel']:
+        return recv_chan.receive()

def get_channels() -> dict[str, Channel]

Description: 获取通道实例们

Return: dict[str, Channel]: 通道实例

Source code or View on GitHub
python
def get_channels() -> dict[str, 'Channel']:
     """
-    获取通道实例
+    获取通道实例们
     Returns:
+        [`dict`](https%3A//docs.python.org/3/library/stdtypes.html#dict)[[`str`](https%3A//docs.python.org/3/library/stdtypes.html#str), [`Channel`](#class-channel-generic-t)]: 通道实例
     """
     if IS_MAIN_PROCESS:
         return _channel
     else:
         recv_chan = Channel[dict[str, Channel[Any]]]('recv_chan')
         channel_deliver_passive_channel.send(('get_channels', {'recv_chan': recv_chan}))
-        return recv_chan.receive()

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')

def on_set_channel(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')
+        return recv_chan.receive()

var channel_deliver_active_channel

  • Description: 主动通道传递通道

  • Default: Channel(name='channel_deliver_active_channel')

var channel_deliver_passive_channel

  • Description: 被动通道传递通道

  • Default: Channel(name='channel_deliver_passive_channel')

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')

def on_set_channel(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'set_channel')
 def on_set_channel(data: tuple[str, dict[str, Any]]):
     name, channel = (data[1]['name'], data[1]['channel_'])
-    set_channel(name, channel)

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')

def on_get_channel(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')
+    set_channel(name, channel)

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')

def on_get_channel(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channel')
 def on_get_channel(data: tuple[str, dict[str, Any]]):
     name, recv_chan = (data[1]['name'], data[1]['recv_chan'])
-    recv_chan.send(get_channel(name))

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')

def on_get_channels(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')
+    recv_chan.send(get_channel(name))

@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')

def on_get_channels(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@channel_deliver_passive_channel.on_receive(filter_func=lambda data: data[0] == 'get_channels')
 def on_get_channels(data: tuple[str, dict[str, Any]]):
     recv_chan = data[1]['recv_chan']
     recv_chan.send(get_channels())

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/comm/comm.html b/en/dev/api/comm/comm.html index 5e4fdbae..2b2ee3c9 100644 --- a/en/dev/api/comm/comm.html +++ b/en/dev/api/comm/comm.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/dev/api/comm/event.html b/en/dev/api/comm/event.html index 6760ad11..6d3f20a7 100644 --- a/en/dev/api/comm/event.html +++ b/en/dev/api/comm/event.html @@ -8,21 +8,21 @@ - + - + - + -
Skip to content

liteyuki.comm.event

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/26 下午10:47 @Author : snowykami @Email : snowykami@outlook.com @File : event.py @Software: PyCharm

class Event

def __init__(self, name: str, data: dict[str, Any])

Source code or View on GitHub
python
def __init__(self, name: str, data: dict[str, Any]):
+    
-    
+    
     
   
 
\ No newline at end of file
diff --git a/en/dev/api/comm/index.html b/en/dev/api/comm/index.html
index 3043af5b..f120b79a 100644
--- a/en/dev/api/comm/index.html
+++ b/en/dev/api/comm/index.html
@@ -8,9 +8,9 @@
     
     
     
-    
+    
     
-    
+    
     
     
     
@@ -20,7 +20,7 @@
   
   
     
-    
+    
     
   
 
\ No newline at end of file
diff --git a/en/dev/api/comm/rpc.html b/en/dev/api/comm/rpc.html
index b030c8c7..80254f92 100644
--- a/en/dev/api/comm/rpc.html
+++ b/en/dev/api/comm/rpc.html
@@ -8,9 +8,9 @@
     
     
     
-    
+    
     
-    
+    
     
     
     
@@ -25,7 +25,7 @@
         调用
         """
     return self.on_calling(args, kwargs)

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/comm/socks_channel.html b/en/dev/api/comm/socks_channel.html index c8cfdf76..c3234097 100644 --- a/en/dev/api/comm/socks_channel.html +++ b/en/dev/api/comm/socks_channel.html @@ -8,18 +8,18 @@ - + - + - + -
Skip to content

liteyuki.comm.socks_channel

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/8/25 下午3:54 @Author : snowykami @Email : snowykami@outlook.com @File : channelv2.py @Software: PyCharm

class SocksChannel

def __init__(self, name: str)

Description: 初始化通道

Arguments:

  • name: 通道ID
Source code or View on GitHub
python
def __init__(self, name: str):
+    
Skip to content

liteyuki.comm.socks_channel

Description: 基于socket的通道

class SocksChannel

def __init__(self, name: str)

Description: 初始化通道

Arguments:

  • name: 通道ID
Source code or View on GitHub
python
def __init__(self, name: str):
     """
         初始化通道
         Args:
@@ -28,24 +28,24 @@
     self._name = name
     self._conn_send = None
     self._conn_recv = None
-    self._closed = False

def send(self, data)

Description: 发送数据

Arguments:

  • data: 数据
Source code or View on GitHub
python
def send(self, data):
+    self._closed = False

def send(self, data)

Description: 发送数据

Arguments:

  • data: 数据
Source code or View on GitHub
python
def send(self, data):
     """
         发送数据
         Args:
             data: 数据
         """
-    pass

def receive(self)

Description: 接收数据

Return: data: 数据

Source code or View on GitHub
python
def receive(self):
+    pass

def receive(self)

Description: 接收数据

Return: data: 数据

Source code or View on GitHub
python
def receive(self):
     """
         接收数据
         Returns:
             data: 数据
         """
-    pass

def close(self)

Description: 关闭通道

Source code or View on GitHub
python
def close(self):
+    pass

def close(self)

Description: 关闭通道

Source code or View on GitHub
python
def close(self):
     """
         关闭通道
         """
     pass

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/comm/storage.html b/en/dev/api/comm/storage.html index 924e9615..fecb94bb 100644 --- a/en/dev/api/comm/storage.html +++ b/en/dev/api/comm/storage.html @@ -8,11 +8,11 @@ - + - + - + @@ -147,7 +147,7 @@ with cls._lock: if cls._instance is None: cls._instance = KeyValueStore() - return cls._instance

attr _instance = None

attr _lock = threading.Lock()

var _ref_count

  • Description: import 引用计数, 防止获取空指针

  • Default: 0

@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')

def on_get(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')
+    return cls._instance

attr _instance = None

attr _lock = threading.Lock()

var shared_memory

  • Description: 共享内存对象

  • Type: KeyValueStore

  • Default: GlobalKeyValueStore.get_instance()

var _ref_count

  • Description: import 引用计数, 防止获取空指针

  • Default: 0

@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')

def on_get(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'get')
 def on_get(data: tuple[str, dict[str, Any]]):
     key = data[1]['key']
     default = data[1]['default']
@@ -163,7 +163,7 @@
 def on_get_all(data: tuple[str, dict[str, Any]]):
     recv_chan = data[1]['recv_chan']
     recv_chan.send(shared_memory.get_all())

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/config.html b/en/dev/api/config.html index 81ef4e09..4bf28948 100644 --- a/en/dev/api/config.html +++ b/en/dev/api/config.html @@ -8,9 +8,9 @@ - + - + @@ -96,7 +96,7 @@ config = load_configs_from_dirs('config', no_waring=no_waring) config.update(load_from_files('config.yaml', 'config.toml', 'config.json', 'config.yml', no_warning=no_waring)) return config

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/core/core.html b/en/dev/api/core/core.html index 80df9f48..adaa4235 100644 --- a/en/dev/api/core/core.html +++ b/en/dev/api/core/core.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/dev/api/core/index.html b/en/dev/api/core/index.html index e4e590fd..256f2b4a 100644 --- a/en/dev/api/core/index.html +++ b/en/dev/api/core/index.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/dev/api/core/manager.html b/en/dev/api/core/manager.html index 847f5838..f20344ea 100644 --- a/en/dev/api/core/manager.html +++ b/en/dev/api/core/manager.html @@ -8,11 +8,11 @@ - + - + - + @@ -27,38 +27,7 @@ self.publish = publish

class ProcessManager

def __init__(self, lifespan: Lifespan)

Source code or View on GitHub
python
def __init__(self, lifespan: 'Lifespan'):
     self.lifespan = lifespan
     self.targets: dict[str, tuple[Callable, tuple, dict]] = {}
-    self.processes: dict[str, Process] = {}

async def _run_process(self, name: str)

Description: 开启后自动监控进程,并添加到进程字典中,会阻塞,请创建task

Arguments:

  • name:
Source code or View on GitHub
python
async def _run_process(self, name: str):
-    """
-        开启后自动监控进程,并添加到进程字典中,会阻塞,请创建task
-        Args:
-            name:
-        Returns:
-        """
-    if name not in self.targets:
-        raise KeyError(f'Process {name} not found.')
-    chan_active = get_channel(f'{name}-active')
-
-    def _start_process():
-        process = Process(target=self.targets[name][0], args=self.targets[name][1], kwargs=self.targets[name][2], daemon=True)
-        self.processes[name] = process
-        process.start()
-    _start_process()
-    while True:
-        data = await chan_active.async_receive()
-        if data == 0:
-            logger.info(f'Stopping process {name}')
-            await self.lifespan.before_process_shutdown()
-            self.terminate(name)
-            break
-        elif data == 1:
-            logger.info(f'Restarting process {name}')
-            await self.lifespan.before_process_shutdown()
-            await self.lifespan.before_process_restart()
-            self.terminate(name)
-            _start_process()
-            continue
-        else:
-            logger.warning('Unknown data received, ignored.')

async def start_all(self)

Description: 对外启动方法,启动所有进程,创建asyncio task

Source code or View on GitHub
python
async def start_all(self):
+    self.processes: dict[str, Process] = {}

async def start_all(self)

Description: 对外启动方法,启动所有进程,创建asyncio task

Source code or View on GitHub
python
async def start_all(self):
     """
         对外启动方法,启动所有进程,创建asyncio task
         """
@@ -111,7 +80,7 @@
     if name not in self.targets:
         logger.warning(f'Process {name} not found.')
     return self.processes[name].is_alive()

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/dev/dev.html b/en/dev/api/dev/dev.html index 78fdc246..8b577c6a 100644 --- a/en/dev/api/dev/dev.html +++ b/en/dev/api/dev/dev.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/dev/api/dev/index.html b/en/dev/api/dev/index.html index d2eaf766..d541f8c9 100644 --- a/en/dev/api/dev/index.html +++ b/en/dev/api/dev/index.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/dev/api/dev/observer.html b/en/dev/api/dev/observer.html index 67b7e5aa..312c27f3 100644 --- a/en/dev/api/dev/observer.html +++ b/en/dev/api/dev/observer.html @@ -8,11 +8,11 @@ - + - + - + @@ -34,13 +34,13 @@ return func(*args, **kwargs) last_call_time = None return wrapper - return decorator

class CodeModifiedHandler(FileSystemEventHandler)

@debounce(1)

def on_modified(self, event)

Source code or View on GitHub
python
@debounce(1)
+    return decorator

class CodeModifiedHandler(FileSystemEventHandler)

@debounce(1)

def on_modified(self, event)

Source code or View on GitHub
python
@debounce(1)
 def on_modified(self, event):
-    raise NotImplementedError('on_modified must be implemented')

def on_created(self, event)

Source code or View on GitHub
python
def on_created(self, event):
-    self.on_modified(event)

def on_deleted(self, event)

Source code or View on GitHub
python
def on_deleted(self, event):
-    self.on_modified(event)

def on_moved(self, event)

Source code or View on GitHub
python
def on_moved(self, event):
-    self.on_modified(event)

def on_any_event(self, event)

Source code or View on GitHub
python
def on_any_event(self, event):
-    self.on_modified(event)

def on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]

Description: 注册文件系统变化监听器

Arguments:

  • directories: 监听目录们
  • recursive: 是否递归监听子目录
  • event_filter: 事件过滤器, 返回True则执行回调函数

Return: 装饰器,装饰一个函数在接收到数据后执行

Source code or View on GitHub
python
def on_file_system_event(directories: tuple[str], recursive: bool=True, event_filter: FILTER_FUNC=None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]:
+    raise NotImplementedError('on_modified must be implemented')

def on_created(self, event)

Source code or View on GitHub
python
def on_created(self, event):
+    self.on_modified(event)

def on_deleted(self, event)

Source code or View on GitHub
python
def on_deleted(self, event):
+    self.on_modified(event)

def on_moved(self, event)

Source code or View on GitHub
python
def on_moved(self, event):
+    self.on_modified(event)

def on_any_event(self, event)

Source code or View on GitHub
python
def on_any_event(self, event):
+    self.on_modified(event)

def on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]

Description: 注册文件系统变化监听器

Arguments:

  • directories: 监听目录们
  • recursive: 是否递归监听子目录
  • event_filter: 事件过滤器, 返回True则执行回调函数

Return: 装饰器,装饰一个函数在接收到数据后执行

Source code or View on GitHub
python
def on_file_system_event(directories: tuple[str], recursive: bool=True, event_filter: FILTER_FUNC=None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]:
     """
     注册文件系统变化监听器
     Args:
@@ -63,7 +63,7 @@
             observer.schedule(code_modified_handler, directory, recursive=recursive)
         return func
     return decorator

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/dev/plugin.html b/en/dev/api/dev/plugin.html index d6b12c0e..da99b94a 100644 --- a/en/dev/api/dev/plugin.html +++ b/en/dev/api/dev/plugin.html @@ -8,9 +8,9 @@ - + - + @@ -31,7 +31,7 @@ cfg['liteyuki.plugins'] = plugins bot = LiteyukiBot(**cfg) bot.run()

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/exception.html b/en/dev/api/exception.html index 4686a9da..5d3ba087 100644 --- a/en/dev/api/exception.html +++ b/en/dev/api/exception.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/dev/api/index.html b/en/dev/api/index.html index 0e4566b3..b92f9463 100644 --- a/en/dev/api/index.html +++ b/en/dev/api/index.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/dev/api/log.html b/en/dev/api/log.html index 56bf7507..1bd0d90d 100644 --- a/en/dev/api/log.html +++ b/en/dev/api/log.html @@ -8,9 +8,9 @@ - + - + @@ -37,7 +37,7 @@ logger.level('SUCCESS', color='<green>', icon=f"{('✅' if show_icon else '')}SUCCESS") logger.level('WARNING', color='<yellow>', icon=f"{('⚠️' if show_icon else '')}WARNING") logger.level('ERROR', color='<red>', icon=f"{('⭕' if show_icon else '')}ERROR")

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/message/event.html b/en/dev/api/message/event.html index 11b23d97..673db9fa 100644 --- a/en/dev/api/message/event.html +++ b/en/dev/api/message/event.html @@ -8,9 +8,9 @@ - + - + @@ -55,7 +55,7 @@ reply_event = MessageEvent(message_type=self.session_type, message=message, raw_message='', data={'message': message}, bot_id=self.bot_id, session_id=self.session_id, user_id=self.user_id, session_type=self.session_type, receive_channel=None) if self.receive_channel: self.receive_channel.send(reply_event)

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/message/index.html b/en/dev/api/message/index.html index de0894ea..689faa0d 100644 --- a/en/dev/api/message/index.html +++ b/en/dev/api/message/index.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/dev/api/message/matcher.html b/en/dev/api/message/matcher.html index dbc230d2..16e186bb 100644 --- a/en/dev/api/message/matcher.html +++ b/en/dev/api/message/matcher.html @@ -8,9 +8,9 @@ - + - + @@ -54,7 +54,7 @@ await handler(event) except Exception: traceback.print_exc()

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/message/message.html b/en/dev/api/message/message.html index 761ce02b..df4de9c4 100644 --- a/en/dev/api/message/message.html +++ b/en/dev/api/message/message.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/dev/api/message/on.html b/en/dev/api/message/on.html index 51c9b1f6..8dff6d3a 100644 --- a/en/dev/api/message/on.html +++ b/en/dev/api/message/on.html @@ -8,9 +8,9 @@ - + - + @@ -34,7 +34,7 @@ async def on_keywords_rule(event: MessageEvent): return any((keyword in event.raw_message for keyword in keywords)) return on_message(on_keywords_rule & rule, priority, block)

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/message/rule.html b/en/dev/api/message/rule.html index de9f142f..3184b97a 100644 --- a/en/dev/api/message/rule.html +++ b/en/dev/api/message/rule.html @@ -8,9 +8,9 @@ - + - + @@ -36,7 +36,7 @@ return True

@Rule

async def is_su_rule(event: MessageEvent) -> bool

Source code or View on GitHub
python
@Rule
 async def is_su_rule(event: MessageEvent) -> bool:
     return str(event.user_id) in _superusers

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/message/session.html b/en/dev/api/message/session.html index f5f6c8e8..32e6184f 100644 --- a/en/dev/api/message/session.html +++ b/en/dev/api/message/session.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/dev/api/mkdoc.html b/en/dev/api/mkdoc.html index db609011..07a94dd8 100644 --- a/en/dev/api/mkdoc.html +++ b/en/dev/api/mkdoc.html @@ -8,9 +8,9 @@ - + - + @@ -180,7 +180,7 @@ print(f'Generate {pyfile_path} -> {abs_md_path}') file_data[abs_md_path] = md_content write_to_files(file_data)

var no_module_name_pyfile_path

  • Description: 去头路径

  • Default: get_relative_path(module_folder, pyfile_path)

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/plugin/index.html b/en/dev/api/plugin/index.html index 11c39b7e..4bdd2ade 100644 --- a/en/dev/api/plugin/index.html +++ b/en/dev/api/plugin/index.html @@ -8,9 +8,9 @@ - + - + @@ -26,7 +26,7 @@ dict[str, Plugin]: 插件字典 """ return _plugins

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/plugin/load.html b/en/dev/api/plugin/load.html index 8c0590d5..7168d6be 100644 --- a/en/dev/api/plugin/load.html +++ b/en/dev/api/plugin/load.html @@ -8,9 +8,9 @@ - + - + @@ -102,7 +102,7 @@ case PluginType.SERVICE: color = 'c' return f'<{color}>{display_name} [{plugin_type.name}]</{color}>'

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/plugin/manager.html b/en/dev/api/plugin/manager.html index 6e77c5d1..66b83c0f 100644 --- a/en/dev/api/plugin/manager.html +++ b/en/dev/api/plugin/manager.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/dev/api/plugin/model.html b/en/dev/api/plugin/model.html index 4c1d3e8e..5e9ab036 100644 --- a/en/dev/api/plugin/model.html +++ b/en/dev/api/plugin/model.html @@ -8,9 +8,9 @@ - + - + @@ -21,7 +21,7 @@
Skip to content

liteyuki.plugin.model

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/7/24 上午12:02 @Author : snowykami @Email : snowykami@outlook.com @File : model.py @Software: PyCharm

class PluginType(Enum)

attr APPLICATION = 'application'

attr SERVICE = 'service'

attr MODULE = 'module'

attr UNCLASSIFIED = 'unclassified'

attr TEST = 'test'

class PluginMetadata(BaseModel)

attr name: str = NO_DEFAULT

attr description: str = ''

attr usage: str = ''

attr type: PluginType = PluginType.UNCLASSIFIED

attr author: str = ''

attr homepage: str = ''

attr extra: dict[str, Any] = {}

class Plugin(BaseModel)

def __hash__(self)

Source code or View on GitHub
python
def __hash__(self):
     return hash(self.module_name)

attr model_config = {'arbitrary_types_allowed': True}

attr name: str = NO_DEFAULT

attr module: ModuleType = NO_DEFAULT

attr module_name: str = NO_DEFAULT

attr metadata: Optional[PluginMetadata] = None

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/plugin/plugin.html b/en/dev/api/plugin/plugin.html index 802cee99..00c555ca 100644 --- a/en/dev/api/plugin/plugin.html +++ b/en/dev/api/plugin/plugin.html @@ -8,9 +8,9 @@ - + - + @@ -26,7 +26,7 @@ dict[str, Plugin]: 插件字典 """ return _plugins

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/plugins/liteecho.html b/en/dev/api/plugins/liteecho.html index 365d7b52..3c9f414b 100644 --- a/en/dev/api/plugins/liteecho.html +++ b/en/dev/api/plugins/liteecho.html @@ -8,9 +8,9 @@ - + - + @@ -22,7 +22,7 @@
Skip to content

liteyuki.plugins.liteecho

Description: Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved

@Time : 2024/8/22 下午12:31 @Author : snowykami @Email : snowykami@outlook.com @File : liteecho.py @Software: PyCharm

@on_startswith(['liteecho'], rule=is_su_rule).handle()

async def liteecho(event: MessageEvent)

Source code or View on GitHub
python
@on_startswith(['liteecho'], rule=is_su_rule).handle()
 async def liteecho(event: MessageEvent):
     event.reply(event.raw_message.strip()[8:].strip())

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/plugins/plugin_loader/index.html b/en/dev/api/plugins/plugin_loader/index.html index ba4785a1..561370f0 100644 --- a/en/dev/api/plugins/plugin_loader/index.html +++ b/en/dev/api/plugins/plugin_loader/index.html @@ -8,9 +8,9 @@ - + - + @@ -27,7 +27,7 @@ load_plugin(plugin) for plugin_dir in get_config('liteyuki.plugin_dirs', ['src/liteyuki_plugins']): load_plugins(plugin_dir)

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/plugins/plugin_loader/plugin_loader.html b/en/dev/api/plugins/plugin_loader/plugin_loader.html index 69b9f7fb..2250a1ac 100644 --- a/en/dev/api/plugins/plugin_loader/plugin_loader.html +++ b/en/dev/api/plugins/plugin_loader/plugin_loader.html @@ -8,9 +8,9 @@ - + - + @@ -27,7 +27,7 @@ load_plugin(plugin) for plugin_dir in get_config('liteyuki.plugin_dirs', ['src/liteyuki_plugins']): load_plugins(plugin_dir)

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/api/utils.html b/en/dev/api/utils.html index 21c8ebe3..7b9a6d0d 100644 --- a/en/dev/api/utils.html +++ b/en/dev/api/utils.html @@ -8,9 +8,9 @@ - + - + @@ -89,7 +89,7 @@ return func(*args, **kwargs) wrapper.__signature__ = inspect.signature(func) return wrapper

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/comm.html b/en/dev/comm.html index 2510bd0a..47dea948 100644 --- a/en/dev/comm.html +++ b/en/dev/comm.html @@ -8,9 +8,9 @@ - + - + @@ -62,7 +62,7 @@ shared_memory.set("key", "value") # 设置共享内存 value = shared_memory.get("key") # 获取共享内存

源代码:liteyuki/comm/storage.py

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/lyfunc.html b/en/dev/lyfunc.html index a8de959a..f6d0dffb 100644 --- a/en/dev/lyfunc.html +++ b/en/dev/lyfunc.html @@ -8,9 +8,9 @@ - + - + @@ -39,7 +39,7 @@ sleep 0.2 nohup function poke await

API

理论上所有基于onebotv11的api都可调用,不同Adapter api也有差别.

Onebot v11 API文档

结束关键字

由于LiteyukiBot基于异步运行, 所以在编写lyfunction时也要注意异步的调用,避免出现"单线程走到底"的情况是效率提升的关键.

await 异步任务结束关键字,用于结束当前已完成function的执行

WARNING

但若出现非单function的情况,有一个task任务没有完成而await被执行了,那么当前所有函数包的task都会被截停销毁

TIP

编写轻雪函数推荐你使用VS Code插件Liteyuki Function实现语法高亮

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/plugin.html b/en/dev/plugin.html index 3c44256e..0d161c42 100644 --- a/en/dev/plugin.html +++ b/en/dev/plugin.html @@ -8,9 +8,9 @@ - + - + @@ -51,7 +51,7 @@ liteyuki.restart_process("nonebot") # 调用重启进程方法

加载插件

方法1

  • 在配置文件中的liteyuki.plugins中添加你的插件路径,例如watchdog_plugin,重启轻雪即可加载插件。

方法2

  • 使用开发工具快速运行插件,无需手动创建实例
  • 创建入口文件,例如main.py,并在其中写入以下代码
python
from liteyuki.dev.plugin import run_plugins
 
 run_plugins("watchdog_plugin")

然后运行python main.py即可启动插件

启用插件后,我们在src/nonebot_plugins下创建一个文件,例如test.py,并在其中写入一些代码,保存后轻雪会自动重载NoneBot进程

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/dev/resource.html b/en/dev/resource.html index e7ed0ec2..e20e1a0b 100644 --- a/en/dev/resource.html +++ b/en/dev/resource.html @@ -8,9 +8,9 @@ - + - + @@ -32,7 +32,7 @@ description: "资源包描述" # 你可以自定义一些信息,但请保证以上三个字段 ...
  • 资源包加载遵循一个优先级,即后加载的资源包会覆盖前面的资源包,例如,你在A包中定义了一个index.html文件,B包也定义了一个index.html文件,那么加载B包后,A包中的index.html文件会被覆盖
  • 对于不同资源包的不同文件,是可以相对引用的,例如你在A中定义了templates/index.html,在B中定义了templates/style.css,可以在A的index.html中用./style.css相对路径引用B中的css

TIP

资源包的结构会随着轻雪的更新而有变动,第三方资源包开发者需要注意版本兼容性,同时用户也应该自行选择可用的资源包

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/index.html b/en/index.html index 031c2be0..5b005b80 100644 --- a/en/index.html +++ b/en/index.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/en/store/plugin.html b/en/store/plugin.html index 8b5393a1..2c615039 100644 --- a/en/store/plugin.html +++ b/en/store/plugin.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/store/resource.html b/en/store/resource.html index 264a4298..bb042108 100644 --- a/en/store/resource.html +++ b/en/store/resource.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/usage/agreement.html b/en/usage/agreement.html index 6cf6ab88..3da4bbc7 100644 --- a/en/usage/agreement.html +++ b/en/usage/agreement.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

用户协议

  1. 本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息
  2. 你可以选择开启auto_report(默认开启),轻雪会收集以下内容
    • 运行环境的设备信息:CPU,内存,系统信息及Python信息
    • 插件信息(不含插件数据)
    • 部分异常信息,
    • 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务器,若你不希望提供这些信息,可以在配置文件中把auto_report设定为false
  3. 本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性
  4. 使用此项目代表你已经同意以上协议

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/usage/basic.html b/en/usage/basic.html index ae3e0357..5719143b 100644 --- a/en/usage/basic.html +++ b/en/usage/basic.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

基础插件


TIP

参数<param>为必填参数,[option]为可选参数。

命令别名:配置了命令别名的命令可以使用别名代替原命令,例如npm install ~可以使用插件 安装 ~代替。

轻雪命令liteyuki_command

命令说明权限举例可用参数
reload-liteyuki重载轻雪超级用户
update-liteyuki更新轻雪超级用户
liteecho查看当前bot 版本超级用户
status查看统计信息和状态超级用户
config set <key> value添加配置项,若存在则会覆盖,输入值会被执行以转换为正确的类型,"10"和10是不一样的超级用户config set name 'liteyuki-bot'<key>: 若存在则覆盖, 若不存在则创建于config.yml ; value: yml格式的所有合法内容
config get [key] 查询配置项,不带key返回配置项列表,推荐私聊使用超级用户config get name<key>: 若存在则返回, 若不存在则返回空
switch-image-mode 在普通图片和Markdown大图之间切换,该功能需要commit:505468b及以后的Lagrange.OneBot,默认普通图片超级用户switch-image-mode
/api api_name [args] 调用机器人API超级用户/api get_group_member_list group_id=1234567<args>: 参数列表, 格式为onebot v11协议api, 可用%20代替空格
/function function_name [args] [kwargs] 调用机器人函数(.lyfunction语法)超级用户/function send_group_msg group_id=1234567 message='hello'<args><kwargs>: 参数列表, api格式为onebot v11协议api
group enable/disable [group_id]在群聊启用/停用机器人,group_id仅超级用户可用超级用户,群聊仅群主、管理员、超级用户可用group enable 1145141919810<group_id>: 群号
liteyuki-docs查看轻雪文档所有人

命令别名

命令别名
status状态
reload-liteyuki重启轻雪
update-liteyuki更新轻雪
reload-resources重载资源
config配置, set 设置 / get 查询
switch-image-mode切换图片模式
liteyuki-docs轻雪文档
group群聊, enable 启用 / disable 停用

插件/包管理器 liteyuki_pacman

  • 插件管理
命令说明权限
npm update更新插件商店索引超级用户
npm install <plugin_name>安装插件超级用户
npm uninstall <plugin_name>卸载插件超级用户
npm search <keywords...>通过关键词搜索插件超级用户
npm enable-global/disable-global <plugin_name>全局启用/停用插件超级用户
npm enable/disable <plugin_name> [--group <group_id>]当前会话启用/停用插件群聊仅群主、管理员、超级用户可用,私聊所有人可用
npm list [page] [num]列出所有插件 page为页数,num为每页显示数量群聊仅群主、管理员、超级用户可用,私聊所有人可用
help <plugin_name>查看插件帮助所有人
  • 资源包管理
命令说明权限
rpm list [page] [num]列出所有资源包 page为页数,num为每页显示数量超级用户
rpm load <pack_name>加载资源包超级用户
rpm unload <pack_name>卸载资源包超级用户
rpm change <pack_name>修改优先级超级用户
rpm reload重载所有资源包超级用户

命令别名

命令别名
npm插件管理
update更新
install安装
uninstall卸载
search搜索
enable启用
disable停用
enable-global全局启用
disable-global全局停用
rpm资源包
load加载
unload卸载
change更改
reload重载
list列表
help帮助

WARNING

受限于NoneBot2钩子函数的依赖注入参数,插件停用只能阻断传入响应,对于主动推送的插件不生效,请阅读插件主页的说明。


用户管理liteyuki_user

命令说明权限
profile查看用户信息菜单所有人
profile set <key> [value]设置用户信息或打开属性设置菜单所有人
profile get <key>获取用户信息所有人

###命令别名

命令别名
profile个人信息
set设置
get查询

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/en/usage/extra.html b/en/usage/extra.html index 1d928d9d..ec7c7950 100644 --- a/en/usage/extra.html +++ b/en/usage/extra.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

功能插件命令

轻雪天气liteyuki_weather

查询实时天气,支持绑定城市,支持中英文城市名,支持多个关键词查询。

配置项

yaml
weather_key: "" # 和风天气的天气key,会自动判断key版本

命令

shell
weather <keywords...> # Keywords为城市名,支持中英文

查询目标地实时天气,例如:"天气 北京 海淀", "weather Tokyo Shinjuku"

shell
bind-city <keywords...> # Keywords为城市名,支持中英文

绑定查询城市,个人全局生效

命令别名

命令别名
weather天气
bind-city绑定城市

统计信息liteyuki_statistics

统计信息 命令

shell
statistic message --duration <duration> --period <period> --group [current|group_id] --bot [current|bot_id]

功能: 用于统计Bot接收到的消息, 统计周期为period, 统计时间范围为duration

参数格式
duration使用通用日期简写: 1d(天), 1h(小时), 45m(分钟), 14s(秒)
period使用通用日期简写: 1d(天), 1h(小时), 45m(分钟), 14s(秒)
groupcurrent (当前群聊) 或 group_id (QQ群号)
botcurrent (当前Bot) 或 bot_id

命令别名

命令别名
statisticstat
messagem
--duration-d
--period`-p
--group-g
--bot-b
currentc

Documentation built with VitePress | API references generated by litedoc

- + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 6e6fe822..08228afe 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"deploy_config.md":"QRt04bcu","deploy_fandq.md":"BC91M77d","deploy_install.md":"DaqD6Ylg","dev_api_api.md":"BjidfGYh","dev_api_bot_bot.md":"CmVyYr_O","dev_api_bot_index.md":"DudPhKae","dev_api_bot_lifespan.md":"B4hpMOqt","dev_api_comm_channel.md":"CNJvRyvp","dev_api_comm_comm.md":"UNalIkKO","dev_api_comm_event.md":"C9P63b1v","dev_api_comm_index.md":"Bztx56-h","dev_api_comm_rpc.md":"Ctatb5Fy","dev_api_comm_socks_channel.md":"i5OohqUe","dev_api_comm_storage.md":"CquSLWbc","dev_api_config.md":"5YZEeFsT","dev_api_core_core.md":"D46kyvua","dev_api_core_index.md":"BN6y5dmE","dev_api_core_manager.md":"DiZst2H3","dev_api_dev_dev.md":"CnxR9aZA","dev_api_dev_index.md":"CbQNGO4N","dev_api_dev_observer.md":"rNRTx952","dev_api_dev_plugin.md":"B8-Pj2Gj","dev_api_exception.md":"BdaZK_3x","dev_api_index.md":"Bj6EsNxq","dev_api_log.md":"C1VDikdj","dev_api_message_event.md":"AxntDJi3","dev_api_message_index.md":"B1MCWTHF","dev_api_message_matcher.md":"CrqC3-lV","dev_api_message_message.md":"Cp-oF0Sy","dev_api_message_on.md":"BdoE0DiT","dev_api_message_rule.md":"UByA3TJk","dev_api_message_session.md":"ZRjlTcix","dev_api_mkdoc.md":"BPGO1Znu","dev_api_plugin_index.md":"3yEbVRtX","dev_api_plugin_load.md":"Bb_Kxjiz","dev_api_plugin_manager.md":"wxoQsnAr","dev_api_plugin_model.md":"CXJI2586","dev_api_plugin_plugin.md":"CSWk8lsR","dev_api_plugins_liteecho.md":"CPFGVTjw","dev_api_plugins_plugin_loader_index.md":"BKOtyJlM","dev_api_plugins_plugin_loader_plugin_loader.md":"Bfz2lNbM","dev_api_utils.md":"BfOyfADO","dev_comm.md":"BaLcrxQn","dev_lyfunc.md":"DGSAE6Uz","dev_plugin.md":"7WyHaDzB","dev_resource.md":"DU3Q8OBq","en_deploy_config.md":"CB-Epa0p","en_deploy_fandq.md":"lp1l61Jw","en_deploy_install.md":"BnEnd6Nu","en_dev_api_api.md":"D-5_3fUd","en_dev_api_bot_bot.md":"D0tmeTXy","en_dev_api_bot_index.md":"LrWFTh2D","en_dev_api_bot_lifespan.md":"EgH0pEuD","en_dev_api_comm_channel.md":"BLjPtV1B","en_dev_api_comm_comm.md":"nImwmKaA","en_dev_api_comm_event.md":"B8tSNpPu","en_dev_api_comm_index.md":"DXB5jsIP","en_dev_api_comm_rpc.md":"Db5NdJbe","en_dev_api_comm_socks_channel.md":"kerI5Mmv","en_dev_api_comm_storage.md":"CyNGUlpk","en_dev_api_config.md":"paJM3SZQ","en_dev_api_core_core.md":"DspKdKLc","en_dev_api_core_index.md":"Cu0gmuqG","en_dev_api_core_manager.md":"Bs82V5ER","en_dev_api_dev_dev.md":"C7bp0nFK","en_dev_api_dev_index.md":"B_Clatcv","en_dev_api_dev_observer.md":"DfB9VffK","en_dev_api_dev_plugin.md":"dVSn90qu","en_dev_api_exception.md":"DTnDyb4J","en_dev_api_index.md":"Da9OtAtQ","en_dev_api_log.md":"BD04gPQH","en_dev_api_message_event.md":"DkU7HnIc","en_dev_api_message_index.md":"DEGPA3Qg","en_dev_api_message_matcher.md":"fjcL64M7","en_dev_api_message_message.md":"D0iZgCWF","en_dev_api_message_on.md":"Bpf1nKZ0","en_dev_api_message_rule.md":"L6rc-HBj","en_dev_api_message_session.md":"DMwGauxy","en_dev_api_mkdoc.md":"EVvNGPKX","en_dev_api_plugin_index.md":"7EqtiaFh","en_dev_api_plugin_load.md":"BWXzuii9","en_dev_api_plugin_manager.md":"Cq1g681t","en_dev_api_plugin_model.md":"CeWxdiF_","en_dev_api_plugin_plugin.md":"C9viahSZ","en_dev_api_plugins_liteecho.md":"w4kQQyNd","en_dev_api_plugins_plugin_loader_index.md":"DYxIyTd3","en_dev_api_plugins_plugin_loader_plugin_loader.md":"CX7_cGXK","en_dev_api_utils.md":"D2AasRls","en_dev_comm.md":"Cn-onW1y","en_dev_lyfunc.md":"C5K1_qgM","en_dev_plugin.md":"Xb7vUDpJ","en_dev_resource.md":"CYdCh9wj","en_index.md":"DVQGNFEI","en_store_plugin.md":"DceXsbsh","en_store_resource.md":"DwD3Poel","en_usage_agreement.md":"DzIdKK2Q","en_usage_basic.md":"CxkJTStx","en_usage_extra.md":"CHJ4PN4s","index.md":"CQL2AFxv","store_plugin.md":"BMBIhTm1","store_resource.md":"CfhqcpPi","usage_agreement.md":"DBBkunJ_","usage_basic.md":"DJoTZ022","usage_extra.md":"AJu--2F9"} +{"deploy_config.md":"QRt04bcu","deploy_fandq.md":"BC91M77d","deploy_install.md":"DaqD6Ylg","dev_api_api.md":"BjidfGYh","dev_api_bot_bot.md":"Do8sEorT","dev_api_bot_index.md":"BWSjENmL","dev_api_bot_lifespan.md":"B_vxVvHa","dev_api_comm_channel.md":"D9FVh_nD","dev_api_comm_comm.md":"UNalIkKO","dev_api_comm_event.md":"MthZC-SE","dev_api_comm_index.md":"Bztx56-h","dev_api_comm_rpc.md":"Ctatb5Fy","dev_api_comm_socks_channel.md":"BeJH6Jbo","dev_api_comm_storage.md":"BspAlO8q","dev_api_config.md":"5YZEeFsT","dev_api_core_core.md":"D46kyvua","dev_api_core_index.md":"BN6y5dmE","dev_api_core_manager.md":"DWLgtjP0","dev_api_dev_dev.md":"CnxR9aZA","dev_api_dev_index.md":"CbQNGO4N","dev_api_dev_observer.md":"CLF08-bp","dev_api_dev_plugin.md":"B8-Pj2Gj","dev_api_exception.md":"BdaZK_3x","dev_api_index.md":"Bj6EsNxq","dev_api_log.md":"C1VDikdj","dev_api_message_event.md":"AxntDJi3","dev_api_message_index.md":"B1MCWTHF","dev_api_message_matcher.md":"CrqC3-lV","dev_api_message_message.md":"Cp-oF0Sy","dev_api_message_on.md":"BdoE0DiT","dev_api_message_rule.md":"UByA3TJk","dev_api_message_session.md":"ZRjlTcix","dev_api_mkdoc.md":"BPGO1Znu","dev_api_plugin_index.md":"3yEbVRtX","dev_api_plugin_load.md":"Bb_Kxjiz","dev_api_plugin_manager.md":"wxoQsnAr","dev_api_plugin_model.md":"CXJI2586","dev_api_plugin_plugin.md":"CSWk8lsR","dev_api_plugins_liteecho.md":"CPFGVTjw","dev_api_plugins_plugin_loader_index.md":"BKOtyJlM","dev_api_plugins_plugin_loader_plugin_loader.md":"Bfz2lNbM","dev_api_utils.md":"BfOyfADO","dev_comm.md":"BaLcrxQn","dev_lyfunc.md":"DGSAE6Uz","dev_plugin.md":"7WyHaDzB","dev_resource.md":"DU3Q8OBq","en_deploy_config.md":"CB-Epa0p","en_deploy_fandq.md":"lp1l61Jw","en_deploy_install.md":"BnEnd6Nu","en_dev_api_api.md":"D-5_3fUd","en_dev_api_bot_bot.md":"DVWp_48b","en_dev_api_bot_index.md":"D0jrKfDJ","en_dev_api_bot_lifespan.md":"CDgzjr91","en_dev_api_comm_channel.md":"BY8yNiex","en_dev_api_comm_comm.md":"nImwmKaA","en_dev_api_comm_event.md":"DWKJlFsA","en_dev_api_comm_index.md":"DXB5jsIP","en_dev_api_comm_rpc.md":"Db5NdJbe","en_dev_api_comm_socks_channel.md":"C3TKJ3cZ","en_dev_api_comm_storage.md":"B8fIOByJ","en_dev_api_config.md":"paJM3SZQ","en_dev_api_core_core.md":"DspKdKLc","en_dev_api_core_index.md":"Cu0gmuqG","en_dev_api_core_manager.md":"Dv7N4zip","en_dev_api_dev_dev.md":"C7bp0nFK","en_dev_api_dev_index.md":"B_Clatcv","en_dev_api_dev_observer.md":"B2sZAEEn","en_dev_api_dev_plugin.md":"dVSn90qu","en_dev_api_exception.md":"DTnDyb4J","en_dev_api_index.md":"Da9OtAtQ","en_dev_api_log.md":"BD04gPQH","en_dev_api_message_event.md":"DkU7HnIc","en_dev_api_message_index.md":"DEGPA3Qg","en_dev_api_message_matcher.md":"fjcL64M7","en_dev_api_message_message.md":"D0iZgCWF","en_dev_api_message_on.md":"Bpf1nKZ0","en_dev_api_message_rule.md":"L6rc-HBj","en_dev_api_message_session.md":"DMwGauxy","en_dev_api_mkdoc.md":"EVvNGPKX","en_dev_api_plugin_index.md":"7EqtiaFh","en_dev_api_plugin_load.md":"BWXzuii9","en_dev_api_plugin_manager.md":"Cq1g681t","en_dev_api_plugin_model.md":"CeWxdiF_","en_dev_api_plugin_plugin.md":"C9viahSZ","en_dev_api_plugins_liteecho.md":"w4kQQyNd","en_dev_api_plugins_plugin_loader_index.md":"DYxIyTd3","en_dev_api_plugins_plugin_loader_plugin_loader.md":"CX7_cGXK","en_dev_api_utils.md":"D2AasRls","en_dev_comm.md":"Cn-onW1y","en_dev_lyfunc.md":"C5K1_qgM","en_dev_plugin.md":"Xb7vUDpJ","en_dev_resource.md":"CYdCh9wj","en_index.md":"DVQGNFEI","en_store_plugin.md":"DceXsbsh","en_store_resource.md":"DwD3Poel","en_usage_agreement.md":"DzIdKK2Q","en_usage_basic.md":"CxkJTStx","en_usage_extra.md":"CHJ4PN4s","index.md":"CQL2AFxv","store_plugin.md":"BMBIhTm1","store_resource.md":"CfhqcpPi","usage_agreement.md":"DBBkunJ_","usage_basic.md":"DJoTZ022","usage_extra.md":"AJu--2F9"} diff --git a/index.html b/index.html index fdab4605..e8bfec7f 100644 --- a/index.html +++ b/index.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/store/plugin.html b/store/plugin.html index c4144d9c..8031ae2c 100644 --- a/store/plugin.html +++ b/store/plugin.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/store/resource.html b/store/resource.html index f8c414a4..fc00b750 100644 --- a/store/resource.html +++ b/store/resource.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/usage/agreement.html b/usage/agreement.html index 6c34044a..35888126 100644 --- a/usage/agreement.html +++ b/usage/agreement.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

用户协议

  1. 本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息
  2. 你可以选择开启auto_report(默认开启),轻雪会收集以下内容
    • 运行环境的设备信息:CPU,内存,系统信息及Python信息
    • 插件信息(不含插件数据)
    • 部分异常信息,
    • 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务器,若你不希望提供这些信息,可以在配置文件中把auto_report设定为false
  3. 本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性
  4. 使用此项目代表你已经同意以上协议

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/usage/basic.html b/usage/basic.html index 77823cf4..d334707a 100644 --- a/usage/basic.html +++ b/usage/basic.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

基础插件


TIP

参数<param>为必填参数,[option]为可选参数。

命令别名:配置了命令别名的命令可以使用别名代替原命令,例如npm install ~可以使用插件 安装 ~代替。

轻雪命令liteyuki_command

命令说明权限举例可用参数
reload-liteyuki重载轻雪超级用户
update-liteyuki更新轻雪超级用户
liteecho查看当前bot 版本超级用户
status查看统计信息和状态超级用户
config set <key> value添加配置项,若存在则会覆盖,输入值会被执行以转换为正确的类型,"10"和10是不一样的超级用户config set name 'liteyuki-bot'<key>: 若存在则覆盖, 若不存在则创建于config.yml ; value: yml格式的所有合法内容
config get [key] 查询配置项,不带key返回配置项列表,推荐私聊使用超级用户config get name<key>: 若存在则返回, 若不存在则返回空
switch-image-mode 在普通图片和Markdown大图之间切换,该功能需要commit:505468b及以后的Lagrange.OneBot,默认普通图片超级用户switch-image-mode
/api api_name [args] 调用机器人API超级用户/api get_group_member_list group_id=1234567<args>: 参数列表, 格式为onebot v11协议api, 可用%20代替空格
/function function_name [args] [kwargs] 调用机器人函数(.lyfunction语法)超级用户/function send_group_msg group_id=1234567 message='hello'<args><kwargs>: 参数列表, api格式为onebot v11协议api
group enable/disable [group_id]在群聊启用/停用机器人,group_id仅超级用户可用超级用户,群聊仅群主、管理员、超级用户可用group enable 1145141919810<group_id>: 群号
liteyuki-docs查看轻雪文档所有人

命令别名

命令别名
status状态
reload-liteyuki重启轻雪
update-liteyuki更新轻雪
reload-resources重载资源
config配置, set 设置 / get 查询
switch-image-mode切换图片模式
liteyuki-docs轻雪文档
group群聊, enable 启用 / disable 停用

插件/包管理器 liteyuki_pacman

  • 插件管理
命令说明权限
npm update更新插件商店索引超级用户
npm install <plugin_name>安装插件超级用户
npm uninstall <plugin_name>卸载插件超级用户
npm search <keywords...>通过关键词搜索插件超级用户
npm enable-global/disable-global <plugin_name>全局启用/停用插件超级用户
npm enable/disable <plugin_name> [--group <group_id>]当前会话启用/停用插件群聊仅群主、管理员、超级用户可用,私聊所有人可用
npm list [page] [num]列出所有插件 page为页数,num为每页显示数量群聊仅群主、管理员、超级用户可用,私聊所有人可用
help <plugin_name>查看插件帮助所有人
  • 资源包管理
命令说明权限
rpm list [page] [num]列出所有资源包 page为页数,num为每页显示数量超级用户
rpm load <pack_name>加载资源包超级用户
rpm unload <pack_name>卸载资源包超级用户
rpm change <pack_name>修改优先级超级用户
rpm reload重载所有资源包超级用户

命令别名

命令别名
npm插件管理
update更新
install安装
uninstall卸载
search搜索
enable启用
disable停用
enable-global全局启用
disable-global全局停用
rpm资源包
load加载
unload卸载
change更改
reload重载
list列表
help帮助

WARNING

受限于NoneBot2钩子函数的依赖注入参数,插件停用只能阻断传入响应,对于主动推送的插件不生效,请阅读插件主页的说明。


用户管理liteyuki_user

命令说明权限
profile查看用户信息菜单所有人
profile set <key> [value]设置用户信息或打开属性设置菜单所有人
profile get <key>获取用户信息所有人

###命令别名

命令别名
profile个人信息
set设置
get查询

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file diff --git a/usage/extra.html b/usage/extra.html index 83958174..340517e9 100644 --- a/usage/extra.html +++ b/usage/extra.html @@ -8,9 +8,9 @@ - + - + @@ -20,7 +20,7 @@
Skip to content

功能插件命令

轻雪天气liteyuki_weather

查询实时天气,支持绑定城市,支持中英文城市名,支持多个关键词查询。

配置项

yaml
weather_key: "" # 和风天气的天气key,会自动判断key版本

命令

shell
weather <keywords...> # Keywords为城市名,支持中英文

查询目标地实时天气,例如:"天气 北京 海淀", "weather Tokyo Shinjuku"

shell
bind-city <keywords...> # Keywords为城市名,支持中英文

绑定查询城市,个人全局生效

命令别名

命令别名
weather天气
bind-city绑定城市

统计信息liteyuki_statistics

统计信息 命令

shell
statistic message --duration <duration> --period <period> --group [current|group_id] --bot [current|bot_id]

功能: 用于统计Bot接收到的消息, 统计周期为period, 统计时间范围为duration

参数格式
duration使用通用日期简写: 1d(天), 1h(小时), 45m(分钟), 14s(秒)
period使用通用日期简写: 1d(天), 1h(小时), 45m(分钟), 14s(秒)
groupcurrent (当前群聊) 或 group_id (QQ群号)
botcurrent (当前Bot) 或 bot_id

命令别名

命令别名
statisticstat
messagem
--duration-d
--period`-p
--group-g
--bot-b
currentc

文档由 VitePress 构建 | API引用由 litedoc 生成

- + \ No newline at end of file