From 75e546f8d480b403bf6274e666047916309c0656 Mon Sep 17 00:00:00 2001 From: snowykami Date: Mon, 17 Feb 2025 22:43:25 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20docs=20from=20@=20LiteyukiStud?= =?UTF-8?q?io/LiteyukiBot@60093b562b330e03dae910c6d4bf5e4c396b70ed=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 8 +- assets/app.BY-o2ChV.js | 1 + assets/app.rCcoAfOG.js | 1 - ...WCV.js => @localSearchIndexen.Uyy0KFlq.js} | 2 +- .../chunks/@localSearchIndexroot.636MGcQ0.js | 1 - .../chunks/@localSearchIndexroot.B9S8YLcg.js | 1 + ...DumWpLf_.js => ContributorBar.BEMv3ZFt.js} | 2 +- assets/chunks/VPLocalSearchBox.CgStO0jX.js | 8 ++ assets/chunks/VPLocalSearchBox.hkHdYWwT.js | 8 -- assets/chunks/framework.BUxnStXl.js | 18 ++++ assets/chunks/framework.v7PlT0Wt.js | 18 ---- assets/chunks/theme.2w8Mz6uA.js | 18 ---- assets/chunks/theme.DegCgHop.js | 18 ++++ ...YrTELl.js => deploy_config.md.fpf-x4oF.js} | 2 +- assets/deploy_config.md.fpf-x4oF.lean.js | 1 + assets/deploy_config.md.kGYrTELl.lean.js | 31 ------- assets/deploy_fandq.md.2fl_Ypjk.lean.js | 3 - ...fl_Ypjk.js => deploy_fandq.md.Cy8gyJaY.js} | 2 +- assets/deploy_fandq.md.Cy8gyJaY.lean.js | 1 + ...JcXz8.js => deploy_install.md.BKGuxzeN.js} | 2 +- assets/deploy_install.md.BKGuxzeN.lean.js | 1 + assets/deploy_install.md.c-fJcXz8.lean.js | 18 ---- ...eA.js => dev_api_bot_index.md.960PcKQi.js} | 2 +- assets/dev_api_bot_index.md.960PcKQi.lean.js | 1 + assets/dev_api_bot_index.md.Df_BdheA.lean.js | 78 ---------------- ...js => dev_api_bot_lifespan.md.BDitEzkK.js} | 2 +- .../dev_api_bot_lifespan.md.BDitEzkK.lean.js | 1 + assets/dev_api_bot_lifespan.md.QwkSyd4_.js | 1 - .../dev_api_comm_channel.md.BJ51vfDY.lean.js | 91 ------------------- ...js => dev_api_comm_channel.md.DEuJMgaR.js} | 2 +- .../dev_api_comm_channel.md.DEuJMgaR.lean.js | 1 + assets/dev_api_comm_event.md.BjGFyCyy.lean.js | 1 - ...y.js => dev_api_comm_event.md.C8x_KhiZ.js} | 2 +- assets/dev_api_comm_event.md.C8x_KhiZ.lean.js | 1 + ...Q.js => dev_api_comm_index.md.DpZuXB4y.js} | 2 +- ...=> dev_api_comm_index.md.DpZuXB4y.lean.js} | 2 +- .../dev_api_comm_storage.md.C4GYMY_x.lean.js | 90 ------------------ ...js => dev_api_comm_storage.md.CAq3N5ZQ.js} | 2 +- .../dev_api_comm_storage.md.CAq3N5ZQ.lean.js | 1 + assets/dev_api_config.md.CQFvBqcK.lean.js | 60 ------------ ...vBqcK.js => dev_api_config.md.DWW7CpGb.js} | 2 +- assets/dev_api_config.md.DWW7CpGb.lean.js | 1 + ...w.js => dev_api_core_index.md.BkWargRp.js} | 2 +- ...=> dev_api_core_index.md.BkWargRp.lean.js} | 2 +- ...js => dev_api_core_manager.md.CppxG0bb.js} | 2 +- .../dev_api_core_manager.md.CppxG0bb.lean.js | 1 + .../dev_api_core_manager.md.CvJAObrs.lean.js | 49 ---------- ...Hc.js => dev_api_dev_index.md.D1AkW7NO.js} | 2 +- ... => dev_api_dev_index.md.D1AkW7NO.lean.js} | 2 +- ...js => dev_api_dev_observer.md.C7yKDmOq.js} | 2 +- .../dev_api_dev_observer.md.C7yKDmOq.lean.js | 1 + .../dev_api_dev_observer.md.C9FG6EHy.lean.js | 32 ------- ...E.js => dev_api_dev_plugin.md.BHG9egtN.js} | 2 +- assets/dev_api_dev_plugin.md.BHG9egtN.lean.js | 1 + assets/dev_api_dev_plugin.md.DaD0588E.lean.js | 7 -- assets/dev_api_exception.md.CDDNIVPy.js | 1 + assets/dev_api_exception.md.CDDNIVPy.lean.js | 1 + assets/dev_api_exception.md.D3YlD-fL.js | 1 - assets/dev_api_exception.md.D3YlD-fL.lean.js | 1 - ...zmnGkf.js => dev_api_index.md.BHlKQdO1.js} | 2 +- assets/dev_api_index.md.BHlKQdO1.lean.js | 1 + assets/dev_api_index.md.BMzmnGkf.lean.js | 1 - assets/dev_api_log.md.BQCmlUGd.lean.js | 18 ---- ...BQCmlUGd.js => dev_api_log.md.DZftM0hz.js} | 2 +- assets/dev_api_log.md.DZftM0hz.lean.js | 1 + ...js => dev_api_plugin_index.md.DHABZfdI.js} | 2 +- .../dev_api_plugin_index.md.DHABZfdI.lean.js | 1 + .../dev_api_plugin_index.md.DmA7SgX7.lean.js | 1 - ....js => dev_api_plugin_load.md.1Dz_ezge.js} | 6 +- .../dev_api_plugin_load.md.1Dz_ezge.lean.js | 1 + .../dev_api_plugin_load.md.CGZBTpK5.lean.js | 62 ------------- ... => dev_api_plugin_manager.md.TWTXnW7t.js} | 2 +- ...ev_api_plugin_manager.md.TWTXnW7t.lean.js} | 2 +- assets/dev_api_plugin_model.md.DAxgz8GX.js | 1 - .../dev_api_plugin_model.md.DAxgz8GX.lean.js | 1 - assets/dev_api_plugin_model.md.TQv7nVxA.js | 1 + .../dev_api_plugin_model.md.TQv7nVxA.lean.js | 1 + ...s => dev_api_plugins_index.md.hrT7rK25.js} | 2 +- ...dev_api_plugins_index.md.hrT7rK25.lean.js} | 2 +- ...> dev_api_plugins_liteecho.md.B8syLDLV.js} | 2 +- ...v_api_plugins_liteecho.md.B8syLDLV.lean.js | 1 + ...v_api_plugins_liteecho.md.DBpO6gRP.lean.js | 1 - ...lugins_plugin_loader_index.md.BdRu1FeG.js} | 2 +- ...ns_plugin_loader_index.md.BdRu1FeG.lean.js | 1 + ...ns_plugin_loader_index.md.DKMgHA3A.lean.js | 1 - ...s => dev_api_session_event.md.B6MK29_S.js} | 2 +- .../dev_api_session_event.md.B6MK29_S.lean.js | 1 + .../dev_api_session_event.md.CKmLyT0n.lean.js | 15 --- .../dev_api_session_index.md.CFALBYZK.lean.js | 1 - ...s => dev_api_session_index.md.ZEoJ9e0W.js} | 2 +- .../dev_api_session_index.md.ZEoJ9e0W.lean.js | 1 + ...ev_api_session_matcher.md.B5yMvU4D.lean.js | 17 ---- ...=> dev_api_session_matcher.md.DSvh-SVh.js} | 2 +- ...ev_api_session_matcher.md.DSvh-SVh.lean.js | 1 + ...i_session_message_segments.md.COoexy54.js} | 2 +- ...ssion_message_segments.md.COoexy54.lean.js | 1 + ...ssion_message_segments.md.CREZ0kMU.lean.js | 1 - ...dev_api_session_models.md.ChyQE0cI.lean.js | 1 - ... => dev_api_session_models.md.DW1qGehT.js} | 2 +- ...dev_api_session_models.md.DW1qGehT.lean.js | 1 + ...h.js => dev_api_session_on.md.BCUmbb7c.js} | 2 +- assets/dev_api_session_on.md.BCUmbb7c.lean.js | 1 + assets/dev_api_session_on.md.DAHZ1Mfh.lean.js | 15 --- .../dev_api_session_rule.md.DMa6RDEX.lean.js | 1 - ...js => dev_api_session_rule.md.DNlFf93W.js} | 2 +- .../dev_api_session_rule.md.DNlFf93W.lean.js | 1 + ...xcDH2V.js => dev_api_utils.md.CT-KVtuC.js} | 4 +- assets/dev_api_utils.md.CT-KVtuC.lean.js | 1 + assets/dev_api_utils.md.DdxcDH2V.lean.js | 33 ------- assets/dev_best_practices.md.4fD5nTaf.lean.js | 1 - ...f.js => dev_best_practices.md.DdVeSj3v.js} | 2 +- assets/dev_best_practices.md.DdVeSj3v.lean.js | 1 + assets/dev_comm.md.C0QAxeah.lean.js | 43 --------- ...md.C0QAxeah.js => dev_comm.md.DqHPEgmD.js} | 2 +- assets/dev_comm.md.DqHPEgmD.lean.js | 1 + ...d.Gx0rbrqP.js => dev_guide.md.CmdhXyNq.js} | 2 +- assets/dev_guide.md.CmdhXyNq.lean.js | 1 + assets/dev_guide.md.Gx0rbrqP.lean.js | 1 - assets/dev_lyfunc.md.CZ1MrXwp.lean.js | 20 ---- ....CZ1MrXwp.js => dev_lyfunc.md.DJB4jOoE.js} | 2 +- assets/dev_lyfunc.md.DJB4jOoE.lean.js | 1 + ....Cu9RFJSc.js => dev_plugin.md.C0nKWwk2.js} | 2 +- assets/dev_plugin.md.C0nKWwk2.lean.js | 1 + assets/dev_plugin.md.Cu9RFJSc.lean.js | 32 ------- ...z1Qqb9X.js => dev_resource.md.BMo61atA.js} | 2 +- assets/dev_resource.md.BMo61atA.lean.js | 1 + assets/dev_resource.md.Vz1Qqb9X.lean.js | 13 --- ...oWa.js => en_deploy_config.md.Bn6meDsx.js} | 2 +- assets/en_deploy_config.md.Bn6meDsx.lean.js | 1 + assets/en_deploy_config.md.WUiVAoWa.lean.js | 29 ------ ...Tg2E.js => en_deploy_fandq.md.BmuhdVWC.js} | 2 +- assets/en_deploy_fandq.md.BmuhdVWC.lean.js | 1 + assets/en_deploy_fandq.md.D9-ETg2E.lean.js | 1 - ...aQ.js => en_deploy_install.md.BC4wsBsE.js} | 2 +- assets/en_deploy_install.md.BC4wsBsE.lean.js | 1 + assets/en_deploy_install.md.BKgEviaQ.lean.js | 18 ---- ...js => en_dev_api_bot_index.md.DdGmgfBu.js} | 2 +- .../en_dev_api_bot_index.md.DdGmgfBu.lean.js | 1 + .../en_dev_api_bot_index.md.eKUrYXBP.lean.js | 78 ---------------- ...n_dev_api_bot_lifespan.md.IGcJ9jb_.lean.js | 1 - ...=> en_dev_api_bot_lifespan.md.ODF4Dl0l.js} | 2 +- ...n_dev_api_bot_lifespan.md.ODF4Dl0l.lean.js | 1 + ...n_dev_api_comm_channel.md.BliZgU7O.lean.js | 91 ------------------- ...=> en_dev_api_comm_channel.md.DN1tFluf.js} | 2 +- ...n_dev_api_comm_channel.md.DN1tFluf.lean.js | 1 + .../en_dev_api_comm_event.md.BfkzHdR4.lean.js | 1 - ...s => en_dev_api_comm_event.md.C4C8DN0Q.js} | 2 +- .../en_dev_api_comm_event.md.C4C8DN0Q.lean.js | 1 + ...s => en_dev_api_comm_index.md.C-Qbduar.js} | 2 +- ...en_dev_api_comm_index.md.C-Qbduar.lean.js} | 2 +- ...n_dev_api_comm_storage.md.Ds5KWd_O.lean.js | 90 ------------------ ...=> en_dev_api_comm_storage.md.EioevEYA.js} | 2 +- ...n_dev_api_comm_storage.md.EioevEYA.lean.js | 1 + assets/en_dev_api_config.md.BS-UkXWI.lean.js | 60 ------------ ...WI.js => en_dev_api_config.md.CjW8NwT2.js} | 2 +- assets/en_dev_api_config.md.CjW8NwT2.lean.js | 1 + ...s => en_dev_api_core_index.md.CiLPSzAu.js} | 2 +- ...en_dev_api_core_index.md.CiLPSzAu.lean.js} | 2 +- ...=> en_dev_api_core_manager.md.BJ9nRG8V.js} | 2 +- ...n_dev_api_core_manager.md.BJ9nRG8V.lean.js | 1 + ...n_dev_api_core_manager.md.DlLZB3d5.lean.js | 49 ---------- ...js => en_dev_api_dev_index.md.HYeoPza5.js} | 2 +- ... en_dev_api_dev_index.md.HYeoPza5.lean.js} | 2 +- ...n_dev_api_dev_observer.md.B3H3Iuyc.lean.js | 32 ------- ...=> en_dev_api_dev_observer.md.BPkoTdDW.js} | 2 +- ...n_dev_api_dev_observer.md.BPkoTdDW.lean.js | 1 + .../en_dev_api_dev_plugin.md.CqTdN1FN.lean.js | 7 -- ...s => en_dev_api_dev_plugin.md.D7InLJN7.js} | 2 +- .../en_dev_api_dev_plugin.md.D7InLJN7.lean.js | 1 + assets/en_dev_api_exception.md.CFRRxHBG.js | 1 - .../en_dev_api_exception.md.CFRRxHBG.lean.js | 1 - assets/en_dev_api_exception.md.Kd_X7tPn.js | 1 + .../en_dev_api_exception.md.Kd_X7tPn.lean.js | 1 + assets/en_dev_api_index.md.D0QqgH5J.js | 1 + assets/en_dev_api_index.md.D0QqgH5J.lean.js | 1 + assets/en_dev_api_index.md.DjQyfBIN.js | 1 - assets/en_dev_api_index.md.DjQyfBIN.lean.js | 1 - ...qRTM2.js => en_dev_api_log.md.CvWACGo4.js} | 2 +- assets/en_dev_api_log.md.CvWACGo4.lean.js | 1 + assets/en_dev_api_log.md.WqQqRTM2.lean.js | 18 ---- ...n_dev_api_plugin_index.md.C5QZdPTH.lean.js | 1 - ...=> en_dev_api_plugin_index.md.CzkAgSLI.js} | 2 +- ...n_dev_api_plugin_index.md.CzkAgSLI.lean.js | 1 + ...en_dev_api_plugin_load.md.CUVhydQs.lean.js | 62 ------------- ... => en_dev_api_plugin_load.md.lnuEXY4W.js} | 6 +- ...en_dev_api_plugin_load.md.lnuEXY4W.lean.js | 1 + ... en_dev_api_plugin_manager.md.aR11rqTj.js} | 2 +- ...ev_api_plugin_manager.md.aR11rqTj.lean.js} | 2 +- assets/en_dev_api_plugin_model.md.BtKMMEeQ.js | 1 + ...n_dev_api_plugin_model.md.BtKMMEeQ.lean.js | 1 + assets/en_dev_api_plugin_model.md.DdvvcqBN.js | 1 - ...n_dev_api_plugin_model.md.DdvvcqBN.lean.js | 1 - ...> en_dev_api_plugins_index.md.mKXV75h2.js} | 2 +- ...dev_api_plugins_index.md.mKXV75h2.lean.js} | 2 +- ...v_api_plugins_liteecho.md.B8CO7WbT.lean.js | 1 - ...n_dev_api_plugins_liteecho.md.CbFj5eaD.js} | 2 +- ...v_api_plugins_liteecho.md.CbFj5eaD.lean.js | 1 + ...lugins_plugin_loader_index.md.Aahbq4rp.js} | 2 +- ...ns_plugin_loader_index.md.Aahbq4rp.lean.js | 1 + ...ns_plugin_loader_index.md.DvH6ajsD.lean.js | 1 - ...> en_dev_api_session_event.md.Cijk-LGh.js} | 2 +- ..._dev_api_session_event.md.Cijk-LGh.lean.js | 1 + ..._dev_api_session_event.md.D3Th-LcY.lean.js | 15 --- ...> en_dev_api_session_index.md.B0FePOxH.js} | 2 +- ..._dev_api_session_index.md.B0FePOxH.lean.js | 1 + ..._dev_api_session_index.md.DeXIcJ0I.lean.js | 1 - ...en_dev_api_session_matcher.md.BCKobbx7.js} | 2 +- ...ev_api_session_matcher.md.BCKobbx7.lean.js | 1 + ...ev_api_session_matcher.md.dQLmtmza.lean.js | 17 ---- ...i_session_message_segments.md.B9GxysTy.js} | 2 +- ...ssion_message_segments.md.B9GxysTy.lean.js | 1 + ...ssion_message_segments.md.Ds5UV5yu.lean.js | 1 - ...dev_api_session_models.md.DBZyv5gt.lean.js | 1 - ... en_dev_api_session_models.md.YkoyxVnZ.js} | 2 +- ...dev_api_session_models.md.YkoyxVnZ.lean.js | 1 + ...s => en_dev_api_session_on.md.BkoUd1nY.js} | 2 +- .../en_dev_api_session_on.md.BkoUd1nY.lean.js | 1 + .../en_dev_api_session_on.md.CFv3Q2g4.lean.js | 15 --- ...=> en_dev_api_session_rule.md.BLGxPo-M.js} | 2 +- ...n_dev_api_session_rule.md.BLGxPo-M.lean.js | 1 + ...n_dev_api_session_rule.md.UNaf14Gk.lean.js | 1 - ...HGv.js => en_dev_api_utils.md.CL2uJQsZ.js} | 4 +- assets/en_dev_api_utils.md.CL2uJQsZ.lean.js | 1 + assets/en_dev_api_utils.md.QHC7sHGv.lean.js | 33 ------- ...s => en_dev_best_practices.md.DrgXHNx1.js} | 2 +- .../en_dev_best_practices.md.DrgXHNx1.lean.js | 1 + .../en_dev_best_practices.md.oHVAAUps.lean.js | 1 - assets/en_dev_comm.md.DJzbE7ud.lean.js | 43 --------- ...DJzbE7ud.js => en_dev_comm.md.y7M-uNn5.js} | 2 +- assets/en_dev_comm.md.y7M-uNn5.lean.js | 1 + ...YFLz8NF.js => en_dev_guide.md.CEI7UF-O.js} | 2 +- assets/en_dev_guide.md.CEI7UF-O.lean.js | 1 + assets/en_dev_guide.md.CYFLz8NF.lean.js | 1 - assets/en_dev_lyfunc.md.C95UXHu-.lean.js | 20 ---- ...5UXHu-.js => en_dev_lyfunc.md.DVKdEQk1.js} | 2 +- assets/en_dev_lyfunc.md.DVKdEQk1.lean.js | 1 + assets/en_dev_plugin.md.BSEjcgQm.lean.js | 32 ------- ...EjcgQm.js => en_dev_plugin.md.CxsGn5di.js} | 2 +- assets/en_dev_plugin.md.CxsGn5di.lean.js | 1 + ...NDtb.js => en_dev_resource.md.D9Lv8e2n.js} | 2 +- assets/en_dev_resource.md.D9Lv8e2n.lean.js | 1 + assets/en_dev_resource.md.LROtNDtb.lean.js | 13 --- ...md.wjzMjZdd.js => en_index.md.C6RIk4Q2.js} | 2 +- ...d.lean.js => en_index.md.C6RIk4Q2.lean.js} | 2 +- assets/en_store_plugin.md.CZ_WhmmD.js | 1 + assets/en_store_plugin.md.CZ_WhmmD.lean.js | 1 + assets/en_store_plugin.md.DyVVfnXg.js | 1 - assets/en_store_plugin.md.DyVVfnXg.lean.js | 1 - assets/en_store_resource.md.ClNfFpQd.js | 1 - assets/en_store_resource.md.ClNfFpQd.lean.js | 1 - assets/en_store_resource.md.DizNjwji.js | 1 + assets/en_store_resource.md.DizNjwji.lean.js | 1 + assets/en_usage_agreement.md.BAeUOi9b.js | 1 - assets/en_usage_agreement.md.BAeUOi9b.lean.js | 1 - assets/en_usage_agreement.md.BX7O0VXK.js | 1 + assets/en_usage_agreement.md.BX7O0VXK.lean.js | 1 + ...zNgL6.js => en_usage_basic.md.C4neBE65.js} | 2 +- assets/en_usage_basic.md.C4neBE65.lean.js | 1 + assets/en_usage_basic.md.bPKzNgL6.lean.js | 1 - assets/en_usage_extra.md.0jxEAWnx.lean.js | 1 - ...EAWnx.js => en_usage_extra.md.DPI6MdLC.js} | 2 +- assets/en_usage_extra.md.DPI6MdLC.lean.js | 1 + ...ex.md.Di9XkcId.js => index.md.B3BfLzof.js} | 2 +- ...kcId.lean.js => index.md.B3BfLzof.lean.js} | 2 +- assets/store_plugin.md.20BP8Xz5.js | 1 - assets/store_plugin.md.20BP8Xz5.lean.js | 1 - assets/store_plugin.md.C6Kpa2EC.js | 1 + assets/store_plugin.md.C6Kpa2EC.lean.js | 1 + assets/store_resource.md.DN5P0drK.js | 1 - assets/store_resource.md.DN5P0drK.lean.js | 1 - assets/store_resource.md.gIoXHMek.js | 1 + assets/store_resource.md.gIoXHMek.lean.js | 1 + assets/style.BJrA67q3.css | 1 + assets/style.BVhTES01.css | 1 - assets/usage_agreement.md.BXBhbxWS.js | 1 - assets/usage_agreement.md.BXBhbxWS.lean.js | 1 - assets/usage_agreement.md.DkkU90yR.js | 1 + assets/usage_agreement.md.DkkU90yR.lean.js | 1 + assets/usage_basic.md.B7eQy5eg.lean.js | 1 - ...B7eQy5eg.js => usage_basic.md.Dpx_Yj4l.js} | 2 +- assets/usage_basic.md.Dpx_Yj4l.lean.js | 1 + assets/usage_extra.md.CrZ5PgMV.lean.js | 1 - ...CrZ5PgMV.js => usage_extra.md.DTJrnruE.js} | 2 +- assets/usage_extra.md.DTJrnruE.lean.js | 1 + deploy/config.html | 18 ++-- deploy/fandq.html | 18 ++-- deploy/install.html | 18 ++-- dev/api/bot/index.html | 18 ++-- dev/api/bot/lifespan.html | 18 ++-- dev/api/comm/channel.html | 18 ++-- dev/api/comm/event.html | 18 ++-- dev/api/comm/index.html | 16 ++-- dev/api/comm/storage.html | 18 ++-- dev/api/config.html | 18 ++-- dev/api/core/index.html | 16 ++-- dev/api/core/manager.html | 18 ++-- dev/api/dev/index.html | 16 ++-- dev/api/dev/observer.html | 18 ++-- dev/api/dev/plugin.html | 18 ++-- dev/api/exception.html | 16 ++-- dev/api/index.html | 16 ++-- dev/api/log.html | 18 ++-- dev/api/plugin/index.html | 18 ++-- dev/api/plugin/load.html | 18 ++-- dev/api/plugin/manager.html | 16 ++-- dev/api/plugin/model.html | 18 ++-- dev/api/plugins/index.html | 16 ++-- dev/api/plugins/liteecho.html | 18 ++-- dev/api/plugins/plugin_loader/index.html | 18 ++-- dev/api/session/event.html | 18 ++-- dev/api/session/index.html | 18 ++-- dev/api/session/matcher.html | 18 ++-- dev/api/session/message/segments.html | 16 ++-- dev/api/session/models.html | 18 ++-- dev/api/session/on.html | 18 ++-- dev/api/session/rule.html | 18 ++-- dev/api/utils.html | 18 ++-- dev/best_practices.html | 16 ++-- dev/comm.html | 18 ++-- dev/guide.html | 18 ++-- dev/lyfunc.html | 18 ++-- dev/plugin.html | 18 ++-- dev/resource.html | 18 ++-- en/deploy/config.html | 18 ++-- en/deploy/fandq.html | 16 ++-- en/deploy/install.html | 18 ++-- en/dev/api/bot/index.html | 18 ++-- en/dev/api/bot/lifespan.html | 18 ++-- en/dev/api/comm/channel.html | 18 ++-- en/dev/api/comm/event.html | 18 ++-- en/dev/api/comm/index.html | 16 ++-- en/dev/api/comm/storage.html | 18 ++-- en/dev/api/config.html | 18 ++-- en/dev/api/core/index.html | 16 ++-- en/dev/api/core/manager.html | 18 ++-- en/dev/api/dev/index.html | 16 ++-- en/dev/api/dev/observer.html | 18 ++-- en/dev/api/dev/plugin.html | 18 ++-- en/dev/api/exception.html | 16 ++-- en/dev/api/index.html | 16 ++-- en/dev/api/log.html | 18 ++-- en/dev/api/plugin/index.html | 18 ++-- en/dev/api/plugin/load.html | 18 ++-- en/dev/api/plugin/manager.html | 16 ++-- en/dev/api/plugin/model.html | 18 ++-- en/dev/api/plugins/index.html | 16 ++-- en/dev/api/plugins/liteecho.html | 18 ++-- en/dev/api/plugins/plugin_loader/index.html | 18 ++-- en/dev/api/session/event.html | 18 ++-- en/dev/api/session/index.html | 18 ++-- en/dev/api/session/matcher.html | 18 ++-- en/dev/api/session/message/segments.html | 16 ++-- en/dev/api/session/models.html | 18 ++-- en/dev/api/session/on.html | 18 ++-- en/dev/api/session/rule.html | 18 ++-- en/dev/api/utils.html | 18 ++-- en/dev/best_practices.html | 16 ++-- en/dev/comm.html | 18 ++-- en/dev/guide.html | 18 ++-- en/dev/lyfunc.html | 18 ++-- en/dev/plugin.html | 18 ++-- en/dev/resource.html | 18 ++-- en/index.html | 16 ++-- en/store/plugin.html | 16 ++-- en/store/resource.html | 16 ++-- en/usage/agreement.html | 16 ++-- en/usage/basic.html | 16 ++-- en/usage/extra.html | 16 ++-- hashmap.json | 2 +- index.html | 16 ++-- store/plugin.html | 16 ++-- store/resource.html | 16 ++-- usage/agreement.html | 16 ++-- usage/basic.html | 16 ++-- usage/extra.html | 16 ++-- 375 files changed, 1019 insertions(+), 2429 deletions(-) create mode 100644 assets/app.BY-o2ChV.js delete mode 100644 assets/app.rCcoAfOG.js rename assets/chunks/{@localSearchIndexen.DUUF6WCV.js => @localSearchIndexen.Uyy0KFlq.js} (92%) delete mode 100644 assets/chunks/@localSearchIndexroot.636MGcQ0.js create mode 100644 assets/chunks/@localSearchIndexroot.B9S8YLcg.js rename assets/chunks/{ContributorBar.DumWpLf_.js => ContributorBar.BEMv3ZFt.js} (66%) create mode 100644 assets/chunks/VPLocalSearchBox.CgStO0jX.js delete mode 100644 assets/chunks/VPLocalSearchBox.hkHdYWwT.js create mode 100644 assets/chunks/framework.BUxnStXl.js delete mode 100644 assets/chunks/framework.v7PlT0Wt.js delete mode 100644 assets/chunks/theme.2w8Mz6uA.js create mode 100644 assets/chunks/theme.DegCgHop.js rename assets/{deploy_config.md.kGYrTELl.js => deploy_config.md.fpf-x4oF.js} (98%) create mode 100644 assets/deploy_config.md.fpf-x4oF.lean.js delete mode 100644 assets/deploy_config.md.kGYrTELl.lean.js delete mode 100644 assets/deploy_fandq.md.2fl_Ypjk.lean.js rename assets/{deploy_fandq.md.2fl_Ypjk.js => deploy_fandq.md.Cy8gyJaY.js} (91%) create mode 100644 assets/deploy_fandq.md.Cy8gyJaY.lean.js rename assets/{deploy_install.md.c-fJcXz8.js => deploy_install.md.BKGuxzeN.js} (97%) create mode 100644 assets/deploy_install.md.BKGuxzeN.lean.js delete mode 100644 assets/deploy_install.md.c-fJcXz8.lean.js rename assets/{dev_api_bot_index.md.Df_BdheA.js => dev_api_bot_index.md.960PcKQi.js} (99%) create mode 100644 assets/dev_api_bot_index.md.960PcKQi.lean.js delete mode 100644 assets/dev_api_bot_index.md.Df_BdheA.lean.js rename assets/{dev_api_bot_lifespan.md.QwkSyd4_.lean.js => dev_api_bot_lifespan.md.BDitEzkK.js} (99%) create mode 100644 assets/dev_api_bot_lifespan.md.BDitEzkK.lean.js delete mode 100644 assets/dev_api_bot_lifespan.md.QwkSyd4_.js delete mode 100644 assets/dev_api_comm_channel.md.BJ51vfDY.lean.js rename assets/{dev_api_comm_channel.md.BJ51vfDY.js => dev_api_comm_channel.md.DEuJMgaR.js} (99%) create mode 100644 assets/dev_api_comm_channel.md.DEuJMgaR.lean.js delete mode 100644 assets/dev_api_comm_event.md.BjGFyCyy.lean.js rename assets/{dev_api_comm_event.md.BjGFyCyy.js => dev_api_comm_event.md.C8x_KhiZ.js} (91%) create mode 100644 assets/dev_api_comm_event.md.C8x_KhiZ.lean.js rename assets/{dev_api_comm_index.md.BFFUol4Q.js => dev_api_comm_index.md.DpZuXB4y.js} (85%) rename assets/{dev_api_comm_index.md.BFFUol4Q.lean.js => dev_api_comm_index.md.DpZuXB4y.lean.js} (85%) delete mode 100644 assets/dev_api_comm_storage.md.C4GYMY_x.lean.js rename assets/{dev_api_comm_storage.md.C4GYMY_x.js => dev_api_comm_storage.md.CAq3N5ZQ.js} (99%) create mode 100644 assets/dev_api_comm_storage.md.CAq3N5ZQ.lean.js delete mode 100644 assets/dev_api_config.md.CQFvBqcK.lean.js rename assets/{dev_api_config.md.CQFvBqcK.js => dev_api_config.md.DWW7CpGb.js} (99%) create mode 100644 assets/dev_api_config.md.DWW7CpGb.lean.js rename assets/{dev_api_core_index.md.SLqcvS5w.js => dev_api_core_index.md.BkWargRp.js} (90%) rename assets/{dev_api_core_index.md.SLqcvS5w.lean.js => dev_api_core_index.md.BkWargRp.lean.js} (90%) rename assets/{dev_api_core_manager.md.CvJAObrs.js => dev_api_core_manager.md.CppxG0bb.js} (99%) create mode 100644 assets/dev_api_core_manager.md.CppxG0bb.lean.js delete mode 100644 assets/dev_api_core_manager.md.CvJAObrs.lean.js rename assets/{dev_api_dev_index.md.BOIXWKHc.js => dev_api_dev_index.md.D1AkW7NO.js} (83%) rename assets/{dev_api_dev_index.md.BOIXWKHc.lean.js => dev_api_dev_index.md.D1AkW7NO.lean.js} (83%) rename assets/{dev_api_dev_observer.md.C9FG6EHy.js => dev_api_dev_observer.md.C7yKDmOq.js} (98%) create mode 100644 assets/dev_api_dev_observer.md.C7yKDmOq.lean.js delete mode 100644 assets/dev_api_dev_observer.md.C9FG6EHy.lean.js rename assets/{dev_api_dev_plugin.md.DaD0588E.js => dev_api_dev_plugin.md.BHG9egtN.js} (93%) create mode 100644 assets/dev_api_dev_plugin.md.BHG9egtN.lean.js delete mode 100644 assets/dev_api_dev_plugin.md.DaD0588E.lean.js create mode 100644 assets/dev_api_exception.md.CDDNIVPy.js create mode 100644 assets/dev_api_exception.md.CDDNIVPy.lean.js delete mode 100644 assets/dev_api_exception.md.D3YlD-fL.js delete mode 100644 assets/dev_api_exception.md.D3YlD-fL.lean.js rename assets/{dev_api_index.md.BMzmnGkf.js => dev_api_index.md.BHlKQdO1.js} (70%) create mode 100644 assets/dev_api_index.md.BHlKQdO1.lean.js delete mode 100644 assets/dev_api_index.md.BMzmnGkf.lean.js delete mode 100644 assets/dev_api_log.md.BQCmlUGd.lean.js rename assets/{dev_api_log.md.BQCmlUGd.js => dev_api_log.md.DZftM0hz.js} (98%) create mode 100644 assets/dev_api_log.md.DZftM0hz.lean.js rename assets/{dev_api_plugin_index.md.DmA7SgX7.js => dev_api_plugin_index.md.DHABZfdI.js} (88%) create mode 100644 assets/dev_api_plugin_index.md.DHABZfdI.lean.js delete mode 100644 assets/dev_api_plugin_index.md.DmA7SgX7.lean.js rename assets/{dev_api_plugin_load.md.CGZBTpK5.js => dev_api_plugin_load.md.1Dz_ezge.js} (99%) create mode 100644 assets/dev_api_plugin_load.md.1Dz_ezge.lean.js delete mode 100644 assets/dev_api_plugin_load.md.CGZBTpK5.lean.js rename assets/{dev_api_plugin_manager.md.bQiuqZoy.js => dev_api_plugin_manager.md.TWTXnW7t.js} (88%) rename assets/{dev_api_plugin_manager.md.bQiuqZoy.lean.js => dev_api_plugin_manager.md.TWTXnW7t.lean.js} (88%) delete mode 100644 assets/dev_api_plugin_model.md.DAxgz8GX.js delete mode 100644 assets/dev_api_plugin_model.md.DAxgz8GX.lean.js create mode 100644 assets/dev_api_plugin_model.md.TQv7nVxA.js create mode 100644 assets/dev_api_plugin_model.md.TQv7nVxA.lean.js rename assets/{dev_api_plugins_index.md.Upe_Wimu.js => dev_api_plugins_index.md.hrT7rK25.js} (85%) rename assets/{dev_api_plugins_index.md.Upe_Wimu.lean.js => dev_api_plugins_index.md.hrT7rK25.lean.js} (85%) rename assets/{dev_api_plugins_liteecho.md.DBpO6gRP.js => dev_api_plugins_liteecho.md.B8syLDLV.js} (93%) create mode 100644 assets/dev_api_plugins_liteecho.md.B8syLDLV.lean.js delete mode 100644 assets/dev_api_plugins_liteecho.md.DBpO6gRP.lean.js rename assets/{dev_api_plugins_plugin_loader_index.md.DKMgHA3A.js => dev_api_plugins_plugin_loader_index.md.BdRu1FeG.js} (94%) create mode 100644 assets/dev_api_plugins_plugin_loader_index.md.BdRu1FeG.lean.js delete mode 100644 assets/dev_api_plugins_plugin_loader_index.md.DKMgHA3A.lean.js rename assets/{dev_api_session_event.md.CKmLyT0n.js => dev_api_session_event.md.B6MK29_S.js} (98%) create mode 100644 assets/dev_api_session_event.md.B6MK29_S.lean.js delete mode 100644 assets/dev_api_session_event.md.CKmLyT0n.lean.js delete mode 100644 assets/dev_api_session_index.md.CFALBYZK.lean.js rename assets/{dev_api_session_index.md.CFALBYZK.js => dev_api_session_index.md.ZEoJ9e0W.js} (93%) create mode 100644 assets/dev_api_session_index.md.ZEoJ9e0W.lean.js delete mode 100644 assets/dev_api_session_matcher.md.B5yMvU4D.lean.js rename assets/{dev_api_session_matcher.md.B5yMvU4D.js => dev_api_session_matcher.md.DSvh-SVh.js} (97%) create mode 100644 assets/dev_api_session_matcher.md.DSvh-SVh.lean.js rename assets/{dev_api_session_message_segments.md.CREZ0kMU.js => dev_api_session_message_segments.md.COoexy54.js} (90%) create mode 100644 assets/dev_api_session_message_segments.md.COoexy54.lean.js delete mode 100644 assets/dev_api_session_message_segments.md.CREZ0kMU.lean.js delete mode 100644 assets/dev_api_session_models.md.ChyQE0cI.lean.js rename assets/{dev_api_session_models.md.ChyQE0cI.js => dev_api_session_models.md.DW1qGehT.js} (98%) create mode 100644 assets/dev_api_session_models.md.DW1qGehT.lean.js rename assets/{dev_api_session_on.md.DAHZ1Mfh.js => dev_api_session_on.md.BCUmbb7c.js} (97%) create mode 100644 assets/dev_api_session_on.md.BCUmbb7c.lean.js delete mode 100644 assets/dev_api_session_on.md.DAHZ1Mfh.lean.js delete mode 100644 assets/dev_api_session_rule.md.DMa6RDEX.lean.js rename assets/{dev_api_session_rule.md.DMa6RDEX.js => dev_api_session_rule.md.DNlFf93W.js} (98%) create mode 100644 assets/dev_api_session_rule.md.DNlFf93W.lean.js rename assets/{dev_api_utils.md.DdxcDH2V.js => dev_api_utils.md.CT-KVtuC.js} (98%) create mode 100644 assets/dev_api_utils.md.CT-KVtuC.lean.js delete mode 100644 assets/dev_api_utils.md.DdxcDH2V.lean.js delete mode 100644 assets/dev_best_practices.md.4fD5nTaf.lean.js rename assets/{dev_best_practices.md.4fD5nTaf.js => dev_best_practices.md.DdVeSj3v.js} (89%) create mode 100644 assets/dev_best_practices.md.DdVeSj3v.lean.js delete mode 100644 assets/dev_comm.md.C0QAxeah.lean.js rename assets/{dev_comm.md.C0QAxeah.js => dev_comm.md.DqHPEgmD.js} (98%) create mode 100644 assets/dev_comm.md.DqHPEgmD.lean.js rename assets/{dev_guide.md.Gx0rbrqP.js => dev_guide.md.CmdhXyNq.js} (93%) create mode 100644 assets/dev_guide.md.CmdhXyNq.lean.js delete mode 100644 assets/dev_guide.md.Gx0rbrqP.lean.js delete mode 100644 assets/dev_lyfunc.md.CZ1MrXwp.lean.js rename assets/{dev_lyfunc.md.CZ1MrXwp.js => dev_lyfunc.md.DJB4jOoE.js} (98%) create mode 100644 assets/dev_lyfunc.md.DJB4jOoE.lean.js rename assets/{dev_plugin.md.Cu9RFJSc.js => dev_plugin.md.C0nKWwk2.js} (98%) create mode 100644 assets/dev_plugin.md.C0nKWwk2.lean.js delete mode 100644 assets/dev_plugin.md.Cu9RFJSc.lean.js rename assets/{dev_resource.md.Vz1Qqb9X.js => dev_resource.md.BMo61atA.js} (95%) create mode 100644 assets/dev_resource.md.BMo61atA.lean.js delete mode 100644 assets/dev_resource.md.Vz1Qqb9X.lean.js rename assets/{en_deploy_config.md.WUiVAoWa.js => en_deploy_config.md.Bn6meDsx.js} (97%) create mode 100644 assets/en_deploy_config.md.Bn6meDsx.lean.js delete mode 100644 assets/en_deploy_config.md.WUiVAoWa.lean.js rename assets/{en_deploy_fandq.md.D9-ETg2E.js => en_deploy_fandq.md.BmuhdVWC.js} (93%) create mode 100644 assets/en_deploy_fandq.md.BmuhdVWC.lean.js delete mode 100644 assets/en_deploy_fandq.md.D9-ETg2E.lean.js rename assets/{en_deploy_install.md.BKgEviaQ.js => en_deploy_install.md.BC4wsBsE.js} (97%) create mode 100644 assets/en_deploy_install.md.BC4wsBsE.lean.js delete mode 100644 assets/en_deploy_install.md.BKgEviaQ.lean.js rename assets/{en_dev_api_bot_index.md.eKUrYXBP.js => en_dev_api_bot_index.md.DdGmgfBu.js} (99%) create mode 100644 assets/en_dev_api_bot_index.md.DdGmgfBu.lean.js delete mode 100644 assets/en_dev_api_bot_index.md.eKUrYXBP.lean.js delete mode 100644 assets/en_dev_api_bot_lifespan.md.IGcJ9jb_.lean.js rename assets/{en_dev_api_bot_lifespan.md.IGcJ9jb_.js => en_dev_api_bot_lifespan.md.ODF4Dl0l.js} (99%) create mode 100644 assets/en_dev_api_bot_lifespan.md.ODF4Dl0l.lean.js delete mode 100644 assets/en_dev_api_comm_channel.md.BliZgU7O.lean.js rename assets/{en_dev_api_comm_channel.md.BliZgU7O.js => en_dev_api_comm_channel.md.DN1tFluf.js} (99%) create mode 100644 assets/en_dev_api_comm_channel.md.DN1tFluf.lean.js delete mode 100644 assets/en_dev_api_comm_event.md.BfkzHdR4.lean.js rename assets/{en_dev_api_comm_event.md.BfkzHdR4.js => en_dev_api_comm_event.md.C4C8DN0Q.js} (91%) create mode 100644 assets/en_dev_api_comm_event.md.C4C8DN0Q.lean.js rename assets/{en_dev_api_comm_index.md.BesCS7WV.js => en_dev_api_comm_index.md.C-Qbduar.js} (85%) rename assets/{en_dev_api_comm_index.md.BesCS7WV.lean.js => en_dev_api_comm_index.md.C-Qbduar.lean.js} (85%) delete mode 100644 assets/en_dev_api_comm_storage.md.Ds5KWd_O.lean.js rename assets/{en_dev_api_comm_storage.md.Ds5KWd_O.js => en_dev_api_comm_storage.md.EioevEYA.js} (99%) create mode 100644 assets/en_dev_api_comm_storage.md.EioevEYA.lean.js delete mode 100644 assets/en_dev_api_config.md.BS-UkXWI.lean.js rename assets/{en_dev_api_config.md.BS-UkXWI.js => en_dev_api_config.md.CjW8NwT2.js} (99%) create mode 100644 assets/en_dev_api_config.md.CjW8NwT2.lean.js rename assets/{en_dev_api_core_index.md.CXc5eQIT.js => en_dev_api_core_index.md.CiLPSzAu.js} (82%) rename assets/{en_dev_api_core_index.md.CXc5eQIT.lean.js => en_dev_api_core_index.md.CiLPSzAu.lean.js} (82%) rename assets/{en_dev_api_core_manager.md.DlLZB3d5.js => en_dev_api_core_manager.md.BJ9nRG8V.js} (99%) create mode 100644 assets/en_dev_api_core_manager.md.BJ9nRG8V.lean.js delete mode 100644 assets/en_dev_api_core_manager.md.DlLZB3d5.lean.js rename assets/{en_dev_api_dev_index.md.CEZedfLv.js => en_dev_api_dev_index.md.HYeoPza5.js} (83%) rename assets/{en_dev_api_dev_index.md.CEZedfLv.lean.js => en_dev_api_dev_index.md.HYeoPza5.lean.js} (83%) delete mode 100644 assets/en_dev_api_dev_observer.md.B3H3Iuyc.lean.js rename assets/{en_dev_api_dev_observer.md.B3H3Iuyc.js => en_dev_api_dev_observer.md.BPkoTdDW.js} (98%) create mode 100644 assets/en_dev_api_dev_observer.md.BPkoTdDW.lean.js delete mode 100644 assets/en_dev_api_dev_plugin.md.CqTdN1FN.lean.js rename assets/{en_dev_api_dev_plugin.md.CqTdN1FN.js => en_dev_api_dev_plugin.md.D7InLJN7.js} (93%) create mode 100644 assets/en_dev_api_dev_plugin.md.D7InLJN7.lean.js delete mode 100644 assets/en_dev_api_exception.md.CFRRxHBG.js delete mode 100644 assets/en_dev_api_exception.md.CFRRxHBG.lean.js create mode 100644 assets/en_dev_api_exception.md.Kd_X7tPn.js create mode 100644 assets/en_dev_api_exception.md.Kd_X7tPn.lean.js create mode 100644 assets/en_dev_api_index.md.D0QqgH5J.js create mode 100644 assets/en_dev_api_index.md.D0QqgH5J.lean.js delete mode 100644 assets/en_dev_api_index.md.DjQyfBIN.js delete mode 100644 assets/en_dev_api_index.md.DjQyfBIN.lean.js rename assets/{en_dev_api_log.md.WqQqRTM2.js => en_dev_api_log.md.CvWACGo4.js} (98%) create mode 100644 assets/en_dev_api_log.md.CvWACGo4.lean.js delete mode 100644 assets/en_dev_api_log.md.WqQqRTM2.lean.js delete mode 100644 assets/en_dev_api_plugin_index.md.C5QZdPTH.lean.js rename assets/{en_dev_api_plugin_index.md.C5QZdPTH.js => en_dev_api_plugin_index.md.CzkAgSLI.js} (91%) create mode 100644 assets/en_dev_api_plugin_index.md.CzkAgSLI.lean.js delete mode 100644 assets/en_dev_api_plugin_load.md.CUVhydQs.lean.js rename assets/{en_dev_api_plugin_load.md.CUVhydQs.js => en_dev_api_plugin_load.md.lnuEXY4W.js} (98%) create mode 100644 assets/en_dev_api_plugin_load.md.lnuEXY4W.lean.js rename assets/{en_dev_api_plugin_manager.md.7EwFZ4RG.js => en_dev_api_plugin_manager.md.aR11rqTj.js} (88%) rename assets/{en_dev_api_plugin_manager.md.7EwFZ4RG.lean.js => en_dev_api_plugin_manager.md.aR11rqTj.lean.js} (88%) create mode 100644 assets/en_dev_api_plugin_model.md.BtKMMEeQ.js create mode 100644 assets/en_dev_api_plugin_model.md.BtKMMEeQ.lean.js delete mode 100644 assets/en_dev_api_plugin_model.md.DdvvcqBN.js delete mode 100644 assets/en_dev_api_plugin_model.md.DdvvcqBN.lean.js rename assets/{en_dev_api_plugins_index.md.D2Tiy6ZF.js => en_dev_api_plugins_index.md.mKXV75h2.js} (85%) rename assets/{en_dev_api_plugins_index.md.D2Tiy6ZF.lean.js => en_dev_api_plugins_index.md.mKXV75h2.lean.js} (85%) delete mode 100644 assets/en_dev_api_plugins_liteecho.md.B8CO7WbT.lean.js rename assets/{en_dev_api_plugins_liteecho.md.B8CO7WbT.js => en_dev_api_plugins_liteecho.md.CbFj5eaD.js} (93%) create mode 100644 assets/en_dev_api_plugins_liteecho.md.CbFj5eaD.lean.js rename assets/{en_dev_api_plugins_plugin_loader_index.md.DvH6ajsD.js => en_dev_api_plugins_plugin_loader_index.md.Aahbq4rp.js} (94%) create mode 100644 assets/en_dev_api_plugins_plugin_loader_index.md.Aahbq4rp.lean.js delete mode 100644 assets/en_dev_api_plugins_plugin_loader_index.md.DvH6ajsD.lean.js rename assets/{en_dev_api_session_event.md.D3Th-LcY.js => en_dev_api_session_event.md.Cijk-LGh.js} (98%) create mode 100644 assets/en_dev_api_session_event.md.Cijk-LGh.lean.js delete mode 100644 assets/en_dev_api_session_event.md.D3Th-LcY.lean.js rename assets/{en_dev_api_session_index.md.DeXIcJ0I.js => en_dev_api_session_index.md.B0FePOxH.js} (94%) create mode 100644 assets/en_dev_api_session_index.md.B0FePOxH.lean.js delete mode 100644 assets/en_dev_api_session_index.md.DeXIcJ0I.lean.js rename assets/{en_dev_api_session_matcher.md.dQLmtmza.js => en_dev_api_session_matcher.md.BCKobbx7.js} (97%) create mode 100644 assets/en_dev_api_session_matcher.md.BCKobbx7.lean.js delete mode 100644 assets/en_dev_api_session_matcher.md.dQLmtmza.lean.js rename assets/{en_dev_api_session_message_segments.md.Ds5UV5yu.js => en_dev_api_session_message_segments.md.B9GxysTy.js} (90%) create mode 100644 assets/en_dev_api_session_message_segments.md.B9GxysTy.lean.js delete mode 100644 assets/en_dev_api_session_message_segments.md.Ds5UV5yu.lean.js delete mode 100644 assets/en_dev_api_session_models.md.DBZyv5gt.lean.js rename assets/{en_dev_api_session_models.md.DBZyv5gt.js => en_dev_api_session_models.md.YkoyxVnZ.js} (99%) create mode 100644 assets/en_dev_api_session_models.md.YkoyxVnZ.lean.js rename assets/{en_dev_api_session_on.md.CFv3Q2g4.js => en_dev_api_session_on.md.BkoUd1nY.js} (97%) create mode 100644 assets/en_dev_api_session_on.md.BkoUd1nY.lean.js delete mode 100644 assets/en_dev_api_session_on.md.CFv3Q2g4.lean.js rename assets/{en_dev_api_session_rule.md.UNaf14Gk.js => en_dev_api_session_rule.md.BLGxPo-M.js} (98%) create mode 100644 assets/en_dev_api_session_rule.md.BLGxPo-M.lean.js delete mode 100644 assets/en_dev_api_session_rule.md.UNaf14Gk.lean.js rename assets/{en_dev_api_utils.md.QHC7sHGv.js => en_dev_api_utils.md.CL2uJQsZ.js} (98%) create mode 100644 assets/en_dev_api_utils.md.CL2uJQsZ.lean.js delete mode 100644 assets/en_dev_api_utils.md.QHC7sHGv.lean.js rename assets/{en_dev_best_practices.md.oHVAAUps.js => en_dev_best_practices.md.DrgXHNx1.js} (90%) create mode 100644 assets/en_dev_best_practices.md.DrgXHNx1.lean.js delete mode 100644 assets/en_dev_best_practices.md.oHVAAUps.lean.js delete mode 100644 assets/en_dev_comm.md.DJzbE7ud.lean.js rename assets/{en_dev_comm.md.DJzbE7ud.js => en_dev_comm.md.y7M-uNn5.js} (98%) create mode 100644 assets/en_dev_comm.md.y7M-uNn5.lean.js rename assets/{en_dev_guide.md.CYFLz8NF.js => en_dev_guide.md.CEI7UF-O.js} (95%) create mode 100644 assets/en_dev_guide.md.CEI7UF-O.lean.js delete mode 100644 assets/en_dev_guide.md.CYFLz8NF.lean.js delete mode 100644 assets/en_dev_lyfunc.md.C95UXHu-.lean.js rename assets/{en_dev_lyfunc.md.C95UXHu-.js => en_dev_lyfunc.md.DVKdEQk1.js} (97%) create mode 100644 assets/en_dev_lyfunc.md.DVKdEQk1.lean.js delete mode 100644 assets/en_dev_plugin.md.BSEjcgQm.lean.js rename assets/{en_dev_plugin.md.BSEjcgQm.js => en_dev_plugin.md.CxsGn5di.js} (98%) create mode 100644 assets/en_dev_plugin.md.CxsGn5di.lean.js rename assets/{en_dev_resource.md.LROtNDtb.js => en_dev_resource.md.D9Lv8e2n.js} (95%) create mode 100644 assets/en_dev_resource.md.D9Lv8e2n.lean.js delete mode 100644 assets/en_dev_resource.md.LROtNDtb.lean.js rename assets/{en_index.md.wjzMjZdd.js => en_index.md.C6RIk4Q2.js} (96%) rename assets/{en_index.md.wjzMjZdd.lean.js => en_index.md.C6RIk4Q2.lean.js} (96%) create mode 100644 assets/en_store_plugin.md.CZ_WhmmD.js create mode 100644 assets/en_store_plugin.md.CZ_WhmmD.lean.js delete mode 100644 assets/en_store_plugin.md.DyVVfnXg.js delete mode 100644 assets/en_store_plugin.md.DyVVfnXg.lean.js delete mode 100644 assets/en_store_resource.md.ClNfFpQd.js delete mode 100644 assets/en_store_resource.md.ClNfFpQd.lean.js create mode 100644 assets/en_store_resource.md.DizNjwji.js create mode 100644 assets/en_store_resource.md.DizNjwji.lean.js delete mode 100644 assets/en_usage_agreement.md.BAeUOi9b.js delete mode 100644 assets/en_usage_agreement.md.BAeUOi9b.lean.js create mode 100644 assets/en_usage_agreement.md.BX7O0VXK.js create mode 100644 assets/en_usage_agreement.md.BX7O0VXK.lean.js rename assets/{en_usage_basic.md.bPKzNgL6.js => en_usage_basic.md.C4neBE65.js} (98%) create mode 100644 assets/en_usage_basic.md.C4neBE65.lean.js delete mode 100644 assets/en_usage_basic.md.bPKzNgL6.lean.js delete mode 100644 assets/en_usage_extra.md.0jxEAWnx.lean.js rename assets/{en_usage_extra.md.0jxEAWnx.js => en_usage_extra.md.DPI6MdLC.js} (97%) create mode 100644 assets/en_usage_extra.md.DPI6MdLC.lean.js rename assets/{index.md.Di9XkcId.js => index.md.B3BfLzof.js} (96%) rename assets/{index.md.Di9XkcId.lean.js => index.md.B3BfLzof.lean.js} (96%) delete mode 100644 assets/store_plugin.md.20BP8Xz5.js delete mode 100644 assets/store_plugin.md.20BP8Xz5.lean.js create mode 100644 assets/store_plugin.md.C6Kpa2EC.js create mode 100644 assets/store_plugin.md.C6Kpa2EC.lean.js delete mode 100644 assets/store_resource.md.DN5P0drK.js delete mode 100644 assets/store_resource.md.DN5P0drK.lean.js create mode 100644 assets/store_resource.md.gIoXHMek.js create mode 100644 assets/store_resource.md.gIoXHMek.lean.js create mode 100644 assets/style.BJrA67q3.css delete mode 100644 assets/style.BVhTES01.css delete mode 100644 assets/usage_agreement.md.BXBhbxWS.js delete mode 100644 assets/usage_agreement.md.BXBhbxWS.lean.js create mode 100644 assets/usage_agreement.md.DkkU90yR.js create mode 100644 assets/usage_agreement.md.DkkU90yR.lean.js delete mode 100644 assets/usage_basic.md.B7eQy5eg.lean.js rename assets/{usage_basic.md.B7eQy5eg.js => usage_basic.md.Dpx_Yj4l.js} (98%) create mode 100644 assets/usage_basic.md.Dpx_Yj4l.lean.js delete mode 100644 assets/usage_extra.md.CrZ5PgMV.lean.js rename assets/{usage_extra.md.CrZ5PgMV.js => usage_extra.md.DTJrnruE.js} (97%) create mode 100644 assets/usage_extra.md.DTJrnruE.lean.js diff --git a/404.html b/404.html index c833a561..2be5edd1 100644 --- a/404.html +++ b/404.html @@ -5,11 +5,11 @@ 404 | 轻雪机器人 - - + + - + @@ -18,7 +18,7 @@
- + \ No newline at end of file diff --git a/assets/app.BY-o2ChV.js b/assets/app.BY-o2ChV.js new file mode 100644 index 00000000..6ec2b64a --- /dev/null +++ b/assets/app.BY-o2ChV.js @@ -0,0 +1 @@ +import{R as p}from"./chunks/theme.DegCgHop.js";import{R as s,a7 as i,a8 as u,a9 as c,aa as l,ab as f,ac as d,ad as m,ae as h,af as g,ag as A,d as v,u as R,v as w,s as y,ah as C,ai as P,aj as b,ak as E}from"./chunks/framework.BUxnStXl.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),P(),b(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=D(),a=j();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return A(S)}function D(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; diff --git a/assets/app.rCcoAfOG.js b/assets/app.rCcoAfOG.js deleted file mode 100644 index 46fd8e86..00000000 --- a/assets/app.rCcoAfOG.js +++ /dev/null @@ -1 +0,0 @@ -import{R as p}from"./chunks/theme.2w8Mz6uA.js";import{R as o,a8 as u,a9 as l,aa as c,ab as f,ac as d,ad as m,ae as h,af as g,ag as A,ah as v,d as P,u as R,v as w,s as y,ai as C,aj as b,ak as E,al as S}from"./chunks/framework.v7PlT0Wt.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}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function j(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(l,e);const t=c(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=v(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&&j().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{j as createApp}; diff --git a/assets/chunks/@localSearchIndexen.DUUF6WCV.js b/assets/chunks/@localSearchIndexen.Uyy0KFlq.js similarity index 92% rename from assets/chunks/@localSearchIndexen.DUUF6WCV.js rename to assets/chunks/@localSearchIndexen.Uyy0KFlq.js index f288e336..fb4b4605 100644 --- a/assets/chunks/@localSearchIndexen.DUUF6WCV.js +++ b/assets/chunks/@localSearchIndexen.Uyy0KFlq.js @@ -1 +1 @@ -const e=`{"documentCount":315,"nextId":315,"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/install.html#install","9":"/en/deploy/install.html#normal-installation","10":"/en/deploy/install.html#run-with-docker","11":"/en/deploy/install.html#device-requirements","12":"/en/deploy/install.html#for-other-questions-please-refer-to-faq","13":"/en/dev/api/bot/#module-liteyuki-bot","14":"/en/dev/api/bot/#class-liteyukibot","15":"/en/dev/api/bot/#func-init-self-kwargs-none","16":"/en/dev/api/bot/#func-run-self","17":"/en/dev/api/bot/#func-restart-self-delay-int-0","18":"/en/dev/api/bot/#func-restart-process-self-name-optional-str-none","19":"/en/dev/api/bot/#func-init-self-args-kwargs","20":"/en/dev/api/bot/#func-init-logger-self","21":"/en/dev/api/bot/#func-stop-self","22":"/en/dev/api/bot/#func-on-before-start-self-func-lifespan-func-lifespan-func","23":"/en/dev/api/bot/#func-on-after-start-self-func-lifespan-func","24":"/en/dev/api/bot/#func-on-after-shutdown-self-func-lifespan-func","25":"/en/dev/api/bot/#func-on-before-process-shutdown-self-func-process-lifespan-func","26":"/en/dev/api/bot/#func-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","27":"/en/dev/api/bot/#func-on-after-restart-self-func-lifespan-func","28":"/en/dev/api/bot/#func-get-bot-liteyukibot","29":"/en/dev/api/bot/#func-get-config-key-str-default-any-none-any","30":"/en/dev/api/bot/#func-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","31":"/en/dev/api/bot/lifespan.html#module-liteyuki-bot-lifespan","32":"/en/dev/api/bot/lifespan.html#var-sync-lifespan-func","33":"/en/dev/api/bot/lifespan.html#var-async-lifespan-func","34":"/en/dev/api/bot/lifespan.html#var-lifespan-func","35":"/en/dev/api/bot/lifespan.html#var-sync-process-lifespan-func","36":"/en/dev/api/bot/lifespan.html#var-async-process-lifespan-func","37":"/en/dev/api/bot/lifespan.html#var-process-lifespan-func","38":"/en/dev/api/bot/lifespan.html#class-lifespan","39":"/en/dev/api/bot/lifespan.html#func-init-self-none","40":"/en/dev/api/bot/lifespan.html#async-func-run-funcs-funcs-sequence-lifespan-func-process-lifespan-func-args-kwargs-none","41":"/en/dev/api/bot/lifespan.html#func-on-before-start-self-func-lifespan-func-lifespan-func","42":"/en/dev/api/bot/lifespan.html#func-on-after-start-self-func-lifespan-func-lifespan-func","43":"/en/dev/api/bot/lifespan.html#func-on-before-process-shutdown-self-func-process-lifespan-func-process-lifespan-func","44":"/en/dev/api/bot/lifespan.html#func-on-after-shutdown-self-func-lifespan-func-lifespan-func","45":"/en/dev/api/bot/lifespan.html#func-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","46":"/en/dev/api/bot/lifespan.html#func-on-after-restart-self-func-lifespan-func-lifespan-func","47":"/en/dev/api/bot/lifespan.html#async-func-before-start-self-none","48":"/en/dev/api/bot/lifespan.html#async-func-after-start-self-none","49":"/en/dev/api/bot/lifespan.html#async-func-before-process-shutdown-self-args-kwargs-none","50":"/en/dev/api/bot/lifespan.html#async-func-after-shutdown-self-none","51":"/en/dev/api/bot/lifespan.html#async-func-before-process-restart-self-args-kwargs-none","52":"/en/dev/api/bot/lifespan.html#async-func-after-restart-self-none","53":"/en/dev/api/comm/channel.html#module-liteyuki-comm-channel","54":"/en/dev/api/comm/channel.html#var-sync-on-receive-func","55":"/en/dev/api/comm/channel.html#var-on-receive-func","56":"/en/dev/api/comm/channel.html#var-sync-filter-func","57":"/en/dev/api/comm/channel.html#var-async-filter-func","58":"/en/dev/api/comm/channel.html#var-filter-func","59":"/en/dev/api/comm/channel.html#class-channel-generic-t","60":"/en/dev/api/comm/channel.html#func-init-self-name-str-type-check-optional-bool-none","61":"/en/dev/api/comm/channel.html#func-send-self-data-t","62":"/en/dev/api/comm/channel.html#func-receive-self-t","63":"/en/dev/api/comm/channel.html#async-func-async-receive-self-t","64":"/en/dev/api/comm/channel.html#func-on-receive-self-filter-func-optional-filter-func-none-callable-callable-t-any-callable-t-any","65":"/en/dev/api/comm/channel.html#var-active-channel","66":"/en/dev/api/comm/channel.html#var-passive-channel","67":"/en/dev/api/comm/channel.html#var-channel-deliver-active-channel","68":"/en/dev/api/comm/channel.html#var-channel-deliver-passive-channel","69":"/en/dev/api/comm/channel.html#func-set-channel-name-str-channel-channel","70":"/en/dev/api/comm/channel.html#func-set-channels-channels-dict-str-channel","71":"/en/dev/api/comm/channel.html#func-get-channel-name-str-channel","72":"/en/dev/api/comm/channel.html#func-get-channels-dict-str-channel","73":"/en/dev/api/comm/channel.html#func-on-set-channel-data-tuple-str-dict-str-any","74":"/en/dev/api/comm/channel.html#func-on-get-channel-data-tuple-str-dict-str-any","75":"/en/dev/api/comm/channel.html#func-on-get-channels-data-tuple-str-dict-str-any","76":"/en/dev/api/comm/event.html#module-liteyuki-comm-event","77":"/en/dev/api/comm/event.html#class-event","78":"/en/dev/api/comm/event.html#func-init-self-name-str-data-dict-str-any","79":"/en/dev/api/comm/#module-liteyuki-comm","80":"/en/dev/api/comm/storage.html#module-liteyuki-comm-storage","81":"/en/dev/api/comm/storage.html#var-on-main-subscriber-receive-funcs","82":"/en/dev/api/comm/storage.html#var-on-sub-subscriber-receive-funcs","83":"/en/dev/api/comm/storage.html#class-keyvaluestore","84":"/en/dev/api/comm/storage.html#func-init-self","85":"/en/dev/api/comm/storage.html#func-set-self-key-str-value-any-none","86":"/en/dev/api/comm/storage.html#func-get-self-key-str-default-optional-any-none-optional-any","87":"/en/dev/api/comm/storage.html#func-delete-self-key-str-ignore-key-error-bool-true-none","88":"/en/dev/api/comm/storage.html#func-get-all-self-dict-str-any","89":"/en/dev/api/comm/storage.html#func-publish-self-channel-str-data-any-none","90":"/en/dev/api/comm/storage.html#func-on-subscriber-receive-self-channel-str-callable-on-receive-func-on-receive-func","91":"/en/dev/api/comm/storage.html#async-func-run-subscriber-receive-funcs-channel-str-data-any","92":"/en/dev/api/comm/storage.html#async-func-start-receive-loop-self","93":"/en/dev/api/comm/storage.html#class-globalkeyvaluestore","94":"/en/dev/api/comm/storage.html#func-get-instance-cls","95":"/en/dev/api/comm/storage.html#attr-instance-none","96":"/en/dev/api/comm/storage.html#attr-lock-threading-lock","97":"/en/dev/api/comm/storage.html#var-shared-memory","98":"/en/dev/api/comm/storage.html#var-ref-count","99":"/en/dev/api/comm/storage.html#func-on-get-data-tuple-str-dict-str-any","100":"/en/dev/api/comm/storage.html#func-on-set-data-tuple-str-dict-str-any","101":"/en/dev/api/comm/storage.html#func-on-delete-data-tuple-str-dict-str-any","102":"/en/dev/api/comm/storage.html#func-on-get-all-data-tuple-str-dict-str-any","103":"/en/dev/api/config.html#module-liteyuki-config","104":"/en/dev/api/config.html#func-flat-config-config-dict-str-any-dict-str-any","105":"/en/dev/api/config.html#func-load-from-yaml-file-str-dict-str-any","106":"/en/dev/api/config.html#func-load-from-json-file-str-dict-str-any","107":"/en/dev/api/config.html#func-load-from-toml-file-str-dict-str-any","108":"/en/dev/api/config.html#func-load-from-files-files-str-no-warning-bool-false-dict-str-any","109":"/en/dev/api/config.html#func-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any","110":"/en/dev/api/config.html#func-load-config-in-default-no-waring-bool-false-dict-str-any","111":"/en/dev/api/config.html#class-loader","112":"/en/dev/api/config.html#func-init-self","113":"/en/dev/api/config.html#func-load-from-yaml-self-fp-str-loader","114":"/en/dev/api/config.html#func-load-from-toml-self-fp-str-loader","115":"/en/dev/api/config.html#func-load-from-json-self-fp-str-loader","116":"/en/dev/api/config.html#func-load-from-env-self-prefix-str-loader","117":"/en/dev/api/config.html#func-merge-self-loader-loader-loader","118":"/en/dev/api/config.html#func-get-self-key-str-default-any-none-any","119":"/en/dev/api/core/#module-liteyuki-core","120":"/en/dev/api/core/manager.html#module-liteyuki-core-manager","121":"/en/dev/api/core/manager.html#class-channeldeliver","122":"/en/dev/api/core/manager.html#func-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","123":"/en/dev/api/core/manager.html#class-processmanager","124":"/en/dev/api/core/manager.html#func-init-self-lifespan-lifespan","125":"/en/dev/api/core/manager.html#func-start-all-self","126":"/en/dev/api/core/manager.html#func-add-target-self-name-str-target-target-func-args-tuple-kwargs-none","127":"/en/dev/api/core/manager.html#func-join-all-self","128":"/en/dev/api/core/manager.html#func-terminate-self-name-str","129":"/en/dev/api/core/manager.html#func-terminate-all-self","130":"/en/dev/api/core/manager.html#func-is-process-alive-self-name-str-bool","131":"/en/dev/api/core/manager.html#class-subprocessmanager","132":"/en/dev/api/core/manager.html#func-init-self","133":"/en/dev/api/core/manager.html#func-add-self-name-str-func-processfunctype-args-kwargs","134":"/en/dev/api/core/manager.html#func-start-self-name-str","135":"/en/dev/api/core/manager.html#func-start-all-self-1","136":"/en/dev/api/core/manager.html#func-terminate-self-name-str-1","137":"/en/dev/api/core/manager.html#func-terminate-all-self-1","138":"/en/dev/api/core/manager.html#func-get-process-self-name-str-subprocess-none","139":"/en/dev/api/dev/#module-liteyuki-dev","140":"/en/dev/api/dev/observer.html#module-liteyuki-dev-observer","141":"/en/dev/api/dev/observer.html#var-callback-func","142":"/en/dev/api/dev/observer.html#var-filter-func","143":"/en/dev/api/dev/observer.html#func-debounce-wait","144":"/en/dev/api/dev/observer.html#class-codemodifiedhandler-filesystemeventhandler","145":"/en/dev/api/dev/observer.html#func-on-modified-self-event","146":"/en/dev/api/dev/observer.html#func-on-created-self-event","147":"/en/dev/api/dev/observer.html#func-on-deleted-self-event","148":"/en/dev/api/dev/observer.html#func-on-moved-self-event","149":"/en/dev/api/dev/observer.html#func-on-any-event-self-event","150":"/en/dev/api/dev/observer.html#func-on-file-system-event-directories-tuple-str-recursive-bool-true-event-filter-filter-func-none-callable-callback-func-callback-func","151":"/en/dev/api/dev/plugin.html#module-liteyuki-dev-plugin","152":"/en/dev/api/dev/plugin.html#func-run-plugins-module-path-str-path","153":"/en/dev/api/exception.html#module-liteyuki-exception","154":"/en/dev/api/exception.html#class-liteyukiexception-baseexception","155":"/en/dev/api/#module-liteyuki","156":"/en/dev/api/#var-version","157":"/en/dev/api/log.html#module-liteyuki-log","158":"/en/dev/api/log.html#func-get-format-level-str-str","159":"/en/dev/api/log.html#func-init-log-config-dict","160":"/en/dev/api/plugin/#module-liteyuki-plugin","161":"/en/dev/api/plugin/#func-get-loaded-plugins-dict-str-plugin","162":"/en/dev/api/plugin/load.html#module-liteyuki-plugin-load","163":"/en/dev/api/plugin/load.html#func-load-plugin-module-path-str-path-optional-plugin","164":"/en/dev/api/plugin/load.html#func-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin","165":"/en/dev/api/plugin/load.html#func-format-display-name-display-name-str-plugin-type-plugintype-str","166":"/en/dev/api/plugin/manager.html#module-liteyuki-plugin-manager","167":"/en/dev/api/plugin/model.html#module-liteyuki-plugin-model","168":"/en/dev/api/plugin/model.html#class-plugintype-enum","169":"/en/dev/api/plugin/model.html#attr-application-application","170":"/en/dev/api/plugin/model.html#attr-service-service","171":"/en/dev/api/plugin/model.html#attr-module-module","172":"/en/dev/api/plugin/model.html#attr-unclassified-unclassified","173":"/en/dev/api/plugin/model.html#attr-test-test","174":"/en/dev/api/plugin/model.html#class-pluginmetadata-basemodel","175":"/en/dev/api/plugin/model.html#attr-name-str-no-default","176":"/en/dev/api/plugin/model.html#attr-description-str","177":"/en/dev/api/plugin/model.html#attr-usage-str","178":"/en/dev/api/plugin/model.html#attr-type-plugintype-plugintype-unclassified","179":"/en/dev/api/plugin/model.html#attr-author-str","180":"/en/dev/api/plugin/model.html#attr-homepage-str","181":"/en/dev/api/plugin/model.html#attr-extra-dict-str-any","182":"/en/dev/api/plugin/model.html#class-plugin-basemodel","183":"/en/dev/api/plugin/model.html#func-hash-self","184":"/en/dev/api/plugin/model.html#attr-model-config-arbitrary-types-allowed-true","185":"/en/dev/api/plugin/model.html#attr-name-str-no-default-1","186":"/en/dev/api/plugin/model.html#attr-module-moduletype-no-default","187":"/en/dev/api/plugin/model.html#attr-module-name-str-no-default","188":"/en/dev/api/plugin/model.html#attr-metadata-optional-pluginmetadata-none","189":"/en/dev/api/plugins/#module-liteyuki-plugins","190":"/en/dev/api/plugins/liteecho.html#module-liteyuki-plugins-liteecho","191":"/en/dev/api/plugins/liteecho.html#async-func-liteecho-event-messageevent","192":"/en/dev/api/plugins/plugin_loader/#module-liteyuki-plugins-plugin-loader","193":"/en/dev/api/plugins/plugin_loader/#func-default-plugins-loader","194":"/en/dev/api/session/event.html#module-liteyuki-session-event","195":"/en/dev/api/session/event.html#class-messageevent","196":"/en/dev/api/session/event.html#func-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","197":"/en/dev/api/session/event.html#func-reply-self-message-str-dict-str-any","198":"/en/dev/api/session/#module-liteyuki-session","199":"/en/dev/api/session/#func-message-handler-thread-i-chans-iterable-chan-any","200":"/en/dev/api/session/matcher.html#module-liteyuki-session-matcher","201":"/en/dev/api/session/matcher.html#class-matcher","202":"/en/dev/api/session/matcher.html#func-init-self-rule-rule-priority-int-block-bool","203":"/en/dev/api/session/matcher.html#func-handle-self-callable-eventhandler-eventhandler","204":"/en/dev/api/session/matcher.html#async-func-run-self-event-messageevent-none","205":"/en/dev/api/session/message/segments.html#module-liteyuki-session-message-segments","206":"/en/dev/api/session/message/segments.html#class-baseseg-basemodel","207":"/en/dev/api/session/message/segments.html#attr-type-str-segment","208":"/en/dev/api/session/message/segments.html#attr-data-dict-str-any-no-default","209":"/en/dev/api/session/message/segments.html#class-text-baseseg","210":"/en/dev/api/session/message/segments.html#attr-content-str-no-default","211":"/en/dev/api/session/message/segments.html#class-image-baseseg","212":"/en/dev/api/session/message/segments.html#attr-url-str-no-default","213":"/en/dev/api/session/models.html#module-liteyuki-session-models","214":"/en/dev/api/session/models.html#class-scenetype-int-enum","215":"/en/dev/api/session/models.html#attr-private-0","216":"/en/dev/api/session/models.html#attr-group-1","217":"/en/dev/api/session/models.html#attr-guild-2","218":"/en/dev/api/session/models.html#attr-channel-text-3","219":"/en/dev/api/session/models.html#attr-channel-category-4","220":"/en/dev/api/session/models.html#attr-channel-voice-5","221":"/en/dev/api/session/models.html#class-user-basemodel","222":"/en/dev/api/session/models.html#attr-id-str-no-default","223":"/en/dev/api/session/models.html#attr-name-str-none-none","224":"/en/dev/api/session/models.html#attr-nick-str-none-none","225":"/en/dev/api/session/models.html#attr-avatar-str-none-none","226":"/en/dev/api/session/models.html#attr-gender-str-none-none","227":"/en/dev/api/session/models.html#class-scene-basemodel","228":"/en/dev/api/session/models.html#attr-id-str-no-default-1","229":"/en/dev/api/session/models.html#attr-type-scenetype-no-default","230":"/en/dev/api/session/models.html#attr-name-str-none-none-1","231":"/en/dev/api/session/models.html#attr-avatar-str-none-none-1","232":"/en/dev/api/session/models.html#attr-parent-scene-none-none","233":"/en/dev/api/session/models.html#class-role-basemodel","234":"/en/dev/api/session/models.html#attr-id-str-no-default-2","235":"/en/dev/api/session/models.html#attr-level-int-none-none","236":"/en/dev/api/session/models.html#attr-name-str-none-none-2","237":"/en/dev/api/session/models.html#class-member-basemodel","238":"/en/dev/api/session/models.html#attr-user-user-no-default","239":"/en/dev/api/session/models.html#attr-nickname-str-none-none","240":"/en/dev/api/session/models.html#attr-role-role-none-none","241":"/en/dev/api/session/models.html#attr-mute-bool-none-none","242":"/en/dev/api/session/models.html#attr-joined-at-datetime-none-none","243":"/en/dev/api/session/models.html#class-session-basemodel","244":"/en/dev/api/session/models.html#func-session-id-self","245":"/en/dev/api/session/models.html#func-target-id-self","246":"/en/dev/api/session/models.html#attr-self-id-str-no-default","247":"/en/dev/api/session/models.html#attr-adapter-str-no-default","248":"/en/dev/api/session/models.html#attr-scope-str-no-default","249":"/en/dev/api/session/models.html#attr-scene-scene-no-default","250":"/en/dev/api/session/models.html#attr-user-user-no-default-1","251":"/en/dev/api/session/models.html#attr-member-member-none-none","252":"/en/dev/api/session/models.html#attr-operator-member-none-none","253":"/en/dev/api/session/on.html#module-liteyuki-session-on","254":"/en/dev/api/session/on.html#func-add-matcher-matcher-matcher","255":"/en/dev/api/session/on.html#func-on-message-rule-rule-empty-rule-priority-int-0-block-bool-false-matcher","256":"/en/dev/api/session/on.html#func-on-keywords-keywords-list-str-rule-empty-rule-priority-int-0-block-bool-false-matcher","257":"/en/dev/api/session/rule.html#module-liteyuki-session-rule","258":"/en/dev/api/session/rule.html#var-rulehandlerfunc","259":"/en/dev/api/session/rule.html#class-rule","260":"/en/dev/api/session/rule.html#func-init-self-handler-rulehandlerfunc","261":"/en/dev/api/session/rule.html#func-self-other-rule-rule","262":"/en/dev/api/session/rule.html#func-self-other-rule-rule-1","263":"/en/dev/api/session/rule.html#async-func-self-event-messageevent-bool","264":"/en/dev/api/session/rule.html#async-func-empty-rule-event-messageevent-bool","265":"/en/dev/api/session/rule.html#async-func-is-su-rule-event-messageevent-bool","266":"/en/dev/api/utils.html#module-liteyuki-utils","267":"/en/dev/api/utils.html#func-is-coroutine-callable-call-callable-any-bool","268":"/en/dev/api/utils.html#func-run-coroutine-coro-coroutine","269":"/en/dev/api/utils.html#func-run-coroutine-in-thread-coro-coroutine","270":"/en/dev/api/utils.html#func-path-to-module-name-path-path-str","271":"/en/dev/api/utils.html#func-async-wrapper-func-callable-any-callable-coroutine","272":"/en/dev/best_practices.html#best-practices","273":"/en/dev/best_practices.html#bot-applications","274":"/en/dev/best_practices.html#plugins","275":"/en/dev/best_practices.html#others","276":"/en/dev/comm.html#channel-communication","277":"/en/dev/comm.html#introduction","278":"/en/dev/comm.html#example","279":"/en/dev/comm.html#共享内存通信","280":"/en/dev/comm.html#简介","281":"/en/dev/comm.html#示例","282":"/en/dev/guide.html#development-guide","283":"/en/dev/guide.html#how-to-develop","284":"/en/dev/guide.html#suggestions","285":"/en/dev/guide.html#project-structure","286":"/en/dev/guide.html#standardization","287":"/en/dev/guide.html#finally","288":"/en/dev/lyfunc.html#轻雪函数","289":"/en/dev/lyfunc.html#函数文件","290":"/en/dev/lyfunc.html#命令文档","291":"/en/dev/lyfunc.html#示例","292":"/en/dev/lyfunc.html#api","293":"/en/dev/lyfunc.html#结束关键字","294":"/en/dev/plugin.html#简介","295":"/en/dev/plugin.html#开始","296":"/en/dev/plugin.html#创建插件","297":"/en/dev/plugin.html#编写逻辑部分","298":"/en/dev/plugin.html#加载插件","299":"/en/dev/plugin.html#方法1","300":"/en/dev/plugin.html#方法2","301":"/en/dev/resource.html#简介","302":"/en/dev/resource.html#加载资源包","303":"/en/usage/agreement.html#用户协议","304":"/en/usage/basic.html#基础插件","305":"/en/usage/basic.html#轻雪命令liteyuki-command","306":"/en/usage/basic.html#命令别名","307":"/en/usage/basic.html#插件-包管理器-liteyuki-pacman","308":"/en/usage/basic.html#命令别名-1","309":"/en/usage/basic.html#用户管理liteyuki-user","310":"/en/usage/extra.html#功能插件命令","311":"/en/usage/extra.html#轻雪天气liteyuki-weather","312":"/en/usage/extra.html#命令别名","313":"/en/usage/extra.html#统计信息liteyuki-statistics","314":"/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,105],"7":[2,1,18],"8":[1,1,1],"9":[2,1,61],"10":[3,1,41],"11":[2,1,83],"12":[6,3,1],"13":[3,1,1],"14":[2,3,1],"15":[6,5,65],"16":[4,5,31],"17":[8,5,62],"18":[10,5,38],"19":[6,5,19],"20":[5,5,16],"21":[4,5,18],"22":[8,5,22],"23":[8,5,21],"24":[8,5,22],"25":[10,5,24],"26":[10,5,25],"27":[8,5,22],"28":[5,3,37],"29":[10,3,29],"30":[14,3,48],"31":[4,1,24],"32":[4,4,8],"33":[4,4,9],"34":[3,4,11],"35":[5,4,9],"36":[5,4,10],"37":[4,4,12],"38":[2,4,1],"39":[5,6,34],"40":[13,6,41],"41":[8,6,23],"42":[8,6,23],"43":[10,6,25],"44":[8,6,23],"45":[10,6,25],"46":[8,6,23],"47":[7,6,23],"48":[7,6,23],"49":[10,6,26],"50":[7,6,24],"51":[10,6,26],"52":[7,6,24],"53":[4,1,3],"54":[5,4,9],"55":[4,4,12],"56":[4,4,9],"57":[4,4,11],"58":[3,4,11],"59":[5,4,1],"60":[12,9,66],"61":[6,9,47],"62":[5,9,32],"63":[6,9,31],"64":[15,9,66],"65":[3,4,9],"66":[3,4,9],"67":[4,4,11],"68":[4,4,12],"69":[7,4,43],"70":[7,4,22],"71":[7,4,34],"72":[8,4,39],"73":[10,4,27],"74":[10,4,30],"75":[10,4,29],"76":[4,1,2],"77":[2,4,1],"78":[9,6,16],"79":[3,1,8],"80":[4,1,4],"81":[6,4,12],"82":[6,4,12],"83":[2,4,1],"84":[4,6,33],"85":[9,6,34],"86":[12,6,40],"87":[12,6,45],"88":[9,6,33],"89":[9,6,24],"90":[13,6,54],"91":[11,6,31],"92":[7,6,45],"93":[2,4,2],"94":[5,6,21],"95":[4,6,1],"96":[6,6,1],"97":[3,4,9],"98":[3,4,17],"99":[9,4,31],"100":[9,4,29],"101":[9,4,29],"102":[10,4,29],"103":[3,1,14],"104":[8,3,41],"105":[10,3,38],"106":[10,3,37],"107":[10,3,37],"108":[14,3,46],"109":[16,3,52],"110":[15,3,39],"111":[2,3,1],"112":[4,5,12],"113":[9,5,28],"114":[9,5,26],"115":[9,5,26],"116":[10,5,31],"117":[6,5,18],"118":[10,5,20],"119":[3,1,1],"120":[4,1,24],"121":[2,4,1],"122":[14,6,21],"123":[2,4,1],"124":[6,6,20],"125":[5,6,31],"126":[14,6,51],"127":[5,6,16],"128":[6,6,34],"129":[5,6,15],"130":[9,6,30],"131":[2,4,1],"132":[4,6,15],"133":[9,6,26],"134":[6,6,25],"135":[5,6,23],"136":[6,6,25],"137":[5,6,23],"138":[10,6,23],"139":[3,1,2],"140":[4,1,5],"141":[3,4,9],"142":[3,4,9],"143":[4,4,28],"144":[4,4,3],"145":[6,8,19],"146":[6,8,12],"147":[6,8,12],"148":[6,8,12],"149":[6,8,12],"150":[20,4,54],"151":[4,1,24],"152":[9,4,33],"153":[3,1,2],"154":[4,3,1],"155":[2,1,10],"156":[3,2,7],"157":[3,1,24],"158":[6,3,24],"159":[6,3,58],"160":[3,1,1],"161":[9,3,20],"162":[4,1,24],"163":[12,4,78],"164":[15,4,61],"165":[9,4,40],"166":[4,1,24],"167":[4,1,24],"168":[4,4,1],"169":[5,8,1],"170":[5,8,1],"171":[5,8,1],"172":[5,8,1],"173":[5,8,1],"174":[4,4,1],"175":[6,8,1],"176":[5,8,1],"177":[5,8,1],"178":[5,8,1],"179":[5,8,1],"180":[5,8,1],"181":[7,8,1],"182":[4,4,1],"183":[3,8,13],"184":[9,8,1],"185":[6,8,1],"186":[6,8,1],"187":[7,8,1],"188":[6,8,1],"189":[3,1,15],"190":[4,1,30],"191":[6,4,23],"192":[5,1,24],"193":[5,5,24],"194":[4,1,24],"195":[2,4,1],"196":[24,6,35],"197":[9,6,37],"198":[3,1,4],"199":[10,3,30],"200":[4,1,24],"201":[2,4,1],"202":[10,6,28],"203":[7,6,23],"204":[8,6,33],"205":[5,1,1],"206":[4,5,1],"207":[6,9,1],"208":[8,9,1],"209":[4,5,1],"210":[6,9,1],"211":[4,5,1],"212":[6,9,1],"213":[4,1,123],"214":[5,4,1],"215":[4,9,1],"216":[4,9,1],"217":[4,9,1],"218":[5,9,1],"219":[5,9,1],"220":[5,9,1],"221":[4,4,1],"222":[6,8,1],"223":[6,8,1],"224":[6,8,1],"225":[6,8,1],"226":[6,8,1],"227":[4,4,1],"228":[6,8,1],"229":[6,8,1],"230":[6,8,1],"231":[6,8,1],"232":[6,8,1],"233":[4,4,1],"234":[6,8,1],"235":[6,8,1],"236":[6,8,1],"237":[4,4,1],"238":[6,8,1],"239":[6,8,1],"240":[6,8,1],"241":[6,8,1],"242":[7,8,1],"243":[4,4,2],"244":[5,8,34],"245":[5,8,30],"246":[7,8,1],"247":[6,8,1],"248":[6,8,1],"249":[6,8,1],"250":[6,8,1],"251":[6,8,1],"252":[6,8,1],"253":[4,1,24],"254":[5,4,24],"255":[15,4,21],"256":[16,4,32],"257":[4,1,24],"258":[2,4,11],"259":[2,4,1],"260":[6,6,13],"261":[7,6,21],"262":[7,6,22],"263":[8,6,23],"264":[8,4,19],"265":[9,4,24],"266":[3,1,5],"267":[9,3,33],"268":[6,3,45],"269":[8,3,23],"270":[8,3,41],"271":[8,3,28],"272":[2,1,1],"273":[2,2,19],"274":[1,2,10],"275":[1,2,30],"276":[2,1,1],"277":[1,2,46],"278":[1,2,105],"279":[1,2,1],"280":[1,3,9],"281":[1,3,18],"282":[2,1,1],"283":[3,2,67],"284":[1,5,34],"285":[2,2,60],"286":[1,2,141],"287":[1,2,23],"288":[1,1,9],"289":[1,1,25],"290":[1,1,33],"291":[1,2,26],"292":[1,1,7],"293":[1,1,18],"294":[1,1,4],"295":[1,1,1],"296":[1,2,42],"297":[1,2,58],"298":[1,2,1],"299":[1,3,6],"300":[1,3,25],"301":[1,1,31],"302":[1,1,56],"303":[1,1,28],"304":[1,1,16],"305":[2,1,86],"306":[1,3,30],"307":[4,1,53],"308":[1,5,38],"309":[2,1,20],"310":[1,1,1],"311":[2,1,30],"312":[1,3,8],"313":[2,1,35],"314":[1,3,17]},"averageFieldLength":[5.555555555555555,4.498412698412699,20.657142857142848],"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":"Install","titles":[]},"9":{"title":"Normal Installation","titles":["Install"]},"10":{"title":"Run with Docker","titles":["Install"]},"11":{"title":"Device Requirements","titles":["Install"]},"12":{"title":"For other questions, please refer to","titles":["Install","Device Requirements"]},"13":{"title":"Module liteyuki.bot","titles":[]},"14":{"title":"class LiteyukiBot","titles":["Module liteyuki.bot"]},"15":{"title":"func __init__(self, **kwargs) -> None","titles":["Module liteyuki.bot","class LiteyukiBot"]},"16":{"title":"func run(self)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"17":{"title":"func restart(self, delay: int = 0)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"18":{"title":"func restart_process(self, name: Optional[str] = None)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"19":{"title":"func init(self, *args, **kwargs)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"20":{"title":"func init_logger(self)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"21":{"title":"func stop(self)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"22":{"title":"func on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["Module liteyuki.bot","class LiteyukiBot"]},"23":{"title":"func on_after_start(self, func: LIFESPAN_FUNC)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"24":{"title":"func on_after_shutdown(self, func: LIFESPAN_FUNC)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"25":{"title":"func on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"26":{"title":"func on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["Module liteyuki.bot","class LiteyukiBot"]},"27":{"title":"func on_after_restart(self, func: LIFESPAN_FUNC)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"28":{"title":"func get_bot() -> LiteyukiBot","titles":["Module liteyuki.bot"]},"29":{"title":"func get_config(key: str, default: Any = None) -> Any","titles":["Module liteyuki.bot"]},"30":{"title":"func get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","titles":["Module liteyuki.bot"]},"31":{"title":"Module liteyuki.bot.lifespan","titles":[]},"32":{"title":"var SYNC_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan"]},"33":{"title":"var ASYNC_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan"]},"34":{"title":"var LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan"]},"35":{"title":"var SYNC_PROCESS_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan"]},"36":{"title":"var ASYNC_PROCESS_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan"]},"37":{"title":"var PROCESS_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan"]},"38":{"title":"class Lifespan","titles":["Module liteyuki.bot.lifespan"]},"39":{"title":"func __init__(self) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"40":{"title":"async func run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"41":{"title":"func on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"42":{"title":"func on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"43":{"title":"func on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"44":{"title":"func on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"45":{"title":"func on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"46":{"title":"func on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"47":{"title":"async func before_start(self) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"48":{"title":"async func after_start(self) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"49":{"title":"async func before_process_shutdown(self, *args, **kwargs) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"50":{"title":"async func after_shutdown(self) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"51":{"title":"async func before_process_restart(self, *args, **kwargs) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"52":{"title":"async func after_restart(self) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"53":{"title":"Module liteyuki.comm.channel","titles":[]},"54":{"title":"var SYNC_ON_RECEIVE_FUNC","titles":["Module liteyuki.comm.channel"]},"55":{"title":"var ON_RECEIVE_FUNC","titles":["Module liteyuki.comm.channel"]},"56":{"title":"var SYNC_FILTER_FUNC","titles":["Module liteyuki.comm.channel"]},"57":{"title":"var ASYNC_FILTER_FUNC","titles":["Module liteyuki.comm.channel"]},"58":{"title":"var FILTER_FUNC","titles":["Module liteyuki.comm.channel"]},"59":{"title":"class Channel(Generic[T])","titles":["Module liteyuki.comm.channel"]},"60":{"title":"func __init__(self, name: str, type_check: Optional[bool] = None)","titles":["Module liteyuki.comm.channel","class Channel(Generic[T])"]},"61":{"title":"func send(self, data: T)","titles":["Module liteyuki.comm.channel","class Channel(Generic[T])"]},"62":{"title":"func receive(self) -> T","titles":["Module liteyuki.comm.channel","class Channel(Generic[T])"]},"63":{"title":"async func async_receive(self) -> T","titles":["Module liteyuki.comm.channel","class Channel(Generic[T])"]},"64":{"title":"func on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]","titles":["Module liteyuki.comm.channel","class Channel(Generic[T])"]},"65":{"title":"var active_channel","titles":["Module liteyuki.comm.channel"]},"66":{"title":"var passive_channel","titles":["Module liteyuki.comm.channel"]},"67":{"title":"var channel_deliver_active_channel","titles":["Module liteyuki.comm.channel"]},"68":{"title":"var channel_deliver_passive_channel","titles":["Module liteyuki.comm.channel"]},"69":{"title":"func set_channel(name: str, channel: Channel)","titles":["Module liteyuki.comm.channel"]},"70":{"title":"func set_channels(channels: dict[str, Channel])","titles":["Module liteyuki.comm.channel"]},"71":{"title":"func get_channel(name: str) -> Channel","titles":["Module liteyuki.comm.channel"]},"72":{"title":"func get_channels() -> dict[str, Channel]","titles":["Module liteyuki.comm.channel"]},"73":{"title":"func on_set_channel(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.channel"]},"74":{"title":"func on_get_channel(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.channel"]},"75":{"title":"func on_get_channels(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.channel"]},"76":{"title":"Module liteyuki.comm.event","titles":[]},"77":{"title":"class Event","titles":["Module liteyuki.comm.event"]},"78":{"title":"func __init__(self, name: str, data: dict[str, Any])","titles":["Module liteyuki.comm.event","class Event"]},"79":{"title":"Module liteyuki.comm","titles":[]},"80":{"title":"Module liteyuki.comm.storage","titles":[]},"81":{"title":"var _on_main_subscriber_receive_funcs","titles":["Module liteyuki.comm.storage"]},"82":{"title":"var _on_sub_subscriber_receive_funcs","titles":["Module liteyuki.comm.storage"]},"83":{"title":"class KeyValueStore","titles":["Module liteyuki.comm.storage"]},"84":{"title":"func __init__(self)","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"85":{"title":"func set(self, key: str, value: Any) -> None","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"86":{"title":"func get(self, key: str, default: Optional[Any] = None) -> Optional[Any]","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"87":{"title":"func delete(self, key: str, ignore_key_error: bool = True) -> None","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"88":{"title":"func get_all(self) -> dict[str, Any]","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"89":{"title":"func publish(self, channel_: str, data: Any) -> None","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"90":{"title":"func on_subscriber_receive(self, channel_: str) -> Callable[[ON_RECEIVE_FUNC], ON_RECEIVE_FUNC]","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"91":{"title":"async func run_subscriber_receive_funcs(channel_: str, data: Any)","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"92":{"title":"async func start_receive_loop(self)","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"93":{"title":"class GlobalKeyValueStore","titles":["Module liteyuki.comm.storage"]},"94":{"title":"func get_instance(cls)","titles":["Module liteyuki.comm.storage","class GlobalKeyValueStore"]},"95":{"title":"attr _instance = None","titles":["Module liteyuki.comm.storage","class GlobalKeyValueStore"]},"96":{"title":"attr _lock = threading.Lock()","titles":["Module liteyuki.comm.storage","class GlobalKeyValueStore"]},"97":{"title":"var shared_memory","titles":["Module liteyuki.comm.storage"]},"98":{"title":"var _ref_count","titles":["Module liteyuki.comm.storage"]},"99":{"title":"func on_get(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.storage"]},"100":{"title":"func on_set(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.storage"]},"101":{"title":"func on_delete(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.storage"]},"102":{"title":"func on_get_all(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.storage"]},"103":{"title":"Module liteyuki.config","titles":[]},"104":{"title":"func flat_config(config: dict[str, Any]) -> dict[str, Any]","titles":["Module liteyuki.config"]},"105":{"title":"func load_from_yaml(file_: str) -> dict[str, Any]","titles":["Module liteyuki.config"]},"106":{"title":"func load_from_json(file_: str) -> dict[str, Any]","titles":["Module liteyuki.config"]},"107":{"title":"func load_from_toml(file_: str) -> dict[str, Any]","titles":["Module liteyuki.config"]},"108":{"title":"func load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]","titles":["Module liteyuki.config"]},"109":{"title":"func load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]","titles":["Module liteyuki.config"]},"110":{"title":"func load_config_in_default(no_waring: bool = False) -> dict[str, Any]","titles":["Module liteyuki.config"]},"111":{"title":"class Loader","titles":["Module liteyuki.config"]},"112":{"title":"func __init__(self)","titles":["Module liteyuki.config","class Loader"]},"113":{"title":"func load_from_yaml(self, fp: str) -> Loader","titles":["Module liteyuki.config","class Loader"]},"114":{"title":"func load_from_toml(self, fp: str) -> Loader","titles":["Module liteyuki.config","class Loader"]},"115":{"title":"func load_from_json(self, fp: str) -> Loader","titles":["Module liteyuki.config","class Loader"]},"116":{"title":"func load_from_env(self, prefix: str = '') -> Loader","titles":["Module liteyuki.config","class Loader"]},"117":{"title":"func merge(self, loader: Loader) -> Loader","titles":["Module liteyuki.config","class Loader"]},"118":{"title":"func get(self, key: str, default: Any = None) -> Any","titles":["Module liteyuki.config","class Loader"]},"119":{"title":"Module liteyuki.core","titles":[]},"120":{"title":"Module liteyuki.core.manager","titles":[]},"121":{"title":"class ChannelDeliver","titles":["Module liteyuki.core.manager"]},"122":{"title":"func __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":["Module liteyuki.core.manager","class ChannelDeliver"]},"123":{"title":"class ProcessManager","titles":["Module liteyuki.core.manager"]},"124":{"title":"func __init__(self, lifespan: Lifespan)","titles":["Module liteyuki.core.manager","class ProcessManager"]},"125":{"title":"func start_all(self)","titles":["Module liteyuki.core.manager","class ProcessManager"]},"126":{"title":"func add_target(self, name: str, target: TARGET_FUNC, args: tuple = (), kwargs = None)","titles":["Module liteyuki.core.manager","class ProcessManager"]},"127":{"title":"func join_all(self)","titles":["Module liteyuki.core.manager","class ProcessManager"]},"128":{"title":"func terminate(self, name: str)","titles":["Module liteyuki.core.manager","class ProcessManager"]},"129":{"title":"func terminate_all(self)","titles":["Module liteyuki.core.manager","class ProcessManager"]},"130":{"title":"func is_process_alive(self, name: str) -> bool","titles":["Module liteyuki.core.manager","class ProcessManager"]},"131":{"title":"class _SubProcessManager","titles":["Module liteyuki.core.manager"]},"132":{"title":"func __init__(self)","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"133":{"title":"func add(self, name: str, func: ProcessFuncType, *args, **kwargs)","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"134":{"title":"func start(self, name: str)","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"135":{"title":"func start_all(self)","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"136":{"title":"func terminate(self, name: str)","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"137":{"title":"func terminate_all(self)","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"138":{"title":"func get_process(self, name: str) -> SubProcess | None","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"139":{"title":"Module liteyuki.dev","titles":[]},"140":{"title":"Module liteyuki.dev.observer","titles":[]},"141":{"title":"var CALLBACK_FUNC","titles":["Module liteyuki.dev.observer"]},"142":{"title":"var FILTER_FUNC","titles":["Module liteyuki.dev.observer"]},"143":{"title":"func debounce(wait)","titles":["Module liteyuki.dev.observer"]},"144":{"title":"class CodeModifiedHandler(FileSystemEventHandler)","titles":["Module liteyuki.dev.observer"]},"145":{"title":"func on_modified(self, event)","titles":["Module liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"146":{"title":"func on_created(self, event)","titles":["Module liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"147":{"title":"func on_deleted(self, event)","titles":["Module liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"148":{"title":"func on_moved(self, event)","titles":["Module liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"149":{"title":"func on_any_event(self, event)","titles":["Module liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"150":{"title":"func on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]","titles":["Module liteyuki.dev.observer"]},"151":{"title":"Module liteyuki.dev.plugin","titles":[]},"152":{"title":"func run_plugins(*module_path: str | Path)","titles":["Module liteyuki.dev.plugin"]},"153":{"title":"Module liteyuki.exception","titles":[]},"154":{"title":"class LiteyukiException(BaseException)","titles":["Module liteyuki.exception"]},"155":{"title":"Module liteyuki","titles":[]},"156":{"title":"var __version__","titles":["Module liteyuki"]},"157":{"title":"Module liteyuki.log","titles":[]},"158":{"title":"func get_format(level: str) -> str","titles":["Module liteyuki.log"]},"159":{"title":"func init_log(config: dict)","titles":["Module liteyuki.log"]},"160":{"title":"Module liteyuki.plugin","titles":[]},"161":{"title":"func get_loaded_plugins() -> dict[str, Plugin]","titles":["Module liteyuki.plugin"]},"162":{"title":"Module liteyuki.plugin.load","titles":[]},"163":{"title":"func load_plugin(module_path: str | Path) -> Optional[Plugin]","titles":["Module liteyuki.plugin.load"]},"164":{"title":"func load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]","titles":["Module liteyuki.plugin.load"]},"165":{"title":"func format_display_name(display_name: str, plugin_type: PluginType) -> str","titles":["Module liteyuki.plugin.load"]},"166":{"title":"Module liteyuki.plugin.manager","titles":[]},"167":{"title":"Module liteyuki.plugin.model","titles":[]},"168":{"title":"class PluginType(Enum)","titles":["Module liteyuki.plugin.model"]},"169":{"title":"attr APPLICATION = 'application'","titles":["Module liteyuki.plugin.model","class PluginType(Enum)"]},"170":{"title":"attr SERVICE = 'service'","titles":["Module liteyuki.plugin.model","class PluginType(Enum)"]},"171":{"title":"attr MODULE = 'module'","titles":["Module liteyuki.plugin.model","class PluginType(Enum)"]},"172":{"title":"attr UNCLASSIFIED = 'unclassified'","titles":["Module liteyuki.plugin.model","class PluginType(Enum)"]},"173":{"title":"attr TEST = 'test'","titles":["Module liteyuki.plugin.model","class PluginType(Enum)"]},"174":{"title":"class PluginMetadata(BaseModel)","titles":["Module liteyuki.plugin.model"]},"175":{"title":"attr name: str = NO_DEFAULT","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"176":{"title":"attr description: str = ''","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"177":{"title":"attr usage: str = ''","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"178":{"title":"attr type: PluginType = PluginType.UNCLASSIFIED","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"179":{"title":"attr author: str = ''","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"180":{"title":"attr homepage: str = ''","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"181":{"title":"attr extra: dict[str, Any] = {}","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"182":{"title":"class Plugin(BaseModel)","titles":["Module liteyuki.plugin.model"]},"183":{"title":"func hash self","titles":["Module liteyuki.plugin.model","class Plugin(BaseModel)"]},"184":{"title":"attr model_config = {'arbitrary_types_allowed': True}","titles":["Module liteyuki.plugin.model","class Plugin(BaseModel)"]},"185":{"title":"attr name: str = NO_DEFAULT","titles":["Module liteyuki.plugin.model","class Plugin(BaseModel)"]},"186":{"title":"attr module: ModuleType = NO_DEFAULT","titles":["Module liteyuki.plugin.model","class Plugin(BaseModel)"]},"187":{"title":"attr module_name: str = NO_DEFAULT","titles":["Module liteyuki.plugin.model","class Plugin(BaseModel)"]},"188":{"title":"attr metadata: Optional[PluginMetadata] = None","titles":["Module liteyuki.plugin.model","class Plugin(BaseModel)"]},"189":{"title":"Module liteyuki.plugins","titles":[]},"190":{"title":"Module liteyuki.plugins.liteecho","titles":[]},"191":{"title":"async func liteecho(event: MessageEvent)","titles":["Module liteyuki.plugins.liteecho"]},"192":{"title":"Module liteyuki.plugins.plugin_loader","titles":[]},"193":{"title":"func default_plugins_loader()","titles":["Module liteyuki.plugins.plugin_loader"]},"194":{"title":"Module liteyuki.session.event","titles":[]},"195":{"title":"class MessageEvent","titles":["Module liteyuki.session.event"]},"196":{"title":"func __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":["Module liteyuki.session.event","class MessageEvent"]},"197":{"title":"func reply(self, message: str | dict[str, Any])","titles":["Module liteyuki.session.event","class MessageEvent"]},"198":{"title":"Module liteyuki.session","titles":[]},"199":{"title":"func message_handler_thread(i_chans: Iterable[Chan[Any]])","titles":["Module liteyuki.session"]},"200":{"title":"Module liteyuki.session.matcher","titles":[]},"201":{"title":"class Matcher","titles":["Module liteyuki.session.matcher"]},"202":{"title":"func __init__(self, rule: Rule, priority: int, block: bool)","titles":["Module liteyuki.session.matcher","class Matcher"]},"203":{"title":"func handle(self) -> Callable[[EventHandler], EventHandler]","titles":["Module liteyuki.session.matcher","class Matcher"]},"204":{"title":"async func run(self, event: MessageEvent) -> None","titles":["Module liteyuki.session.matcher","class Matcher"]},"205":{"title":"Module liteyuki.session.message.segments","titles":[]},"206":{"title":"class BaseSeg(BaseModel)","titles":["Module liteyuki.session.message.segments"]},"207":{"title":"attr type: str = 'Segment'","titles":["Module liteyuki.session.message.segments","class BaseSeg(BaseModel)"]},"208":{"title":"attr data: dict[str, Any] = NO_DEFAULT","titles":["Module liteyuki.session.message.segments","class BaseSeg(BaseModel)"]},"209":{"title":"class Text(BaseSeg)","titles":["Module liteyuki.session.message.segments"]},"210":{"title":"attr content: str = NO_DEFAULT","titles":["Module liteyuki.session.message.segments","class Text(BaseSeg)"]},"211":{"title":"class Image(BaseSeg)","titles":["Module liteyuki.session.message.segments"]},"212":{"title":"attr url: str = NO_DEFAULT","titles":["Module liteyuki.session.message.segments","class Image(BaseSeg)"]},"213":{"title":"Module liteyuki.session.models","titles":[]},"214":{"title":"class SceneType(int, Enum)","titles":["Module liteyuki.session.models"]},"215":{"title":"attr PRIVATE = 0","titles":["Module liteyuki.session.models","class SceneType(int, Enum)"]},"216":{"title":"attr GROUP = 1","titles":["Module liteyuki.session.models","class SceneType(int, Enum)"]},"217":{"title":"attr GUILD = 2","titles":["Module liteyuki.session.models","class SceneType(int, Enum)"]},"218":{"title":"attr CHANNEL_TEXT = 3","titles":["Module liteyuki.session.models","class SceneType(int, Enum)"]},"219":{"title":"attr CHANNEL_CATEGORY = 4","titles":["Module liteyuki.session.models","class SceneType(int, Enum)"]},"220":{"title":"attr CHANNEL_VOICE = 5","titles":["Module liteyuki.session.models","class SceneType(int, Enum)"]},"221":{"title":"class User(BaseModel)","titles":["Module liteyuki.session.models"]},"222":{"title":"attr id: str = NO_DEFAULT","titles":["Module liteyuki.session.models","class User(BaseModel)"]},"223":{"title":"attr name: str | None = None","titles":["Module liteyuki.session.models","class User(BaseModel)"]},"224":{"title":"attr nick: str | None = None","titles":["Module liteyuki.session.models","class User(BaseModel)"]},"225":{"title":"attr avatar: str | None = None","titles":["Module liteyuki.session.models","class User(BaseModel)"]},"226":{"title":"attr gender: str | None = None","titles":["Module liteyuki.session.models","class User(BaseModel)"]},"227":{"title":"class Scene(BaseModel)","titles":["Module liteyuki.session.models"]},"228":{"title":"attr id: str = NO_DEFAULT","titles":["Module liteyuki.session.models","class Scene(BaseModel)"]},"229":{"title":"attr type: SceneType = NO_DEFAULT","titles":["Module liteyuki.session.models","class Scene(BaseModel)"]},"230":{"title":"attr name: str | None = None","titles":["Module liteyuki.session.models","class Scene(BaseModel)"]},"231":{"title":"attr avatar: str | None = None","titles":["Module liteyuki.session.models","class Scene(BaseModel)"]},"232":{"title":"attr parent: 'Scene | None' = None","titles":["Module liteyuki.session.models","class Scene(BaseModel)"]},"233":{"title":"class Role(BaseModel)","titles":["Module liteyuki.session.models"]},"234":{"title":"attr id: str = NO_DEFAULT","titles":["Module liteyuki.session.models","class Role(BaseModel)"]},"235":{"title":"attr level: int | None = None","titles":["Module liteyuki.session.models","class Role(BaseModel)"]},"236":{"title":"attr name: str | None = None","titles":["Module liteyuki.session.models","class Role(BaseModel)"]},"237":{"title":"class Member(BaseModel)","titles":["Module liteyuki.session.models"]},"238":{"title":"attr user: User = NO_DEFAULT","titles":["Module liteyuki.session.models","class Member(BaseModel)"]},"239":{"title":"attr nickname: str | None = None","titles":["Module liteyuki.session.models","class Member(BaseModel)"]},"240":{"title":"attr role: Role | None = None","titles":["Module liteyuki.session.models","class Member(BaseModel)"]},"241":{"title":"attr mute: bool | None = None","titles":["Module liteyuki.session.models","class Member(BaseModel)"]},"242":{"title":"attr joined_at: datetime | None = None","titles":["Module liteyuki.session.models","class Member(BaseModel)"]},"243":{"title":"class Session(BaseModel)","titles":["Module liteyuki.session.models"]},"244":{"title":"func session_id(self)","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"245":{"title":"func target_id(self)","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"246":{"title":"attr self_id: str = NO_DEFAULT","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"247":{"title":"attr adapter: str = NO_DEFAULT","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"248":{"title":"attr scope: str = NO_DEFAULT","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"249":{"title":"attr scene: Scene = NO_DEFAULT","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"250":{"title":"attr user: User = NO_DEFAULT","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"251":{"title":"attr member: 'Member | None' = None","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"252":{"title":"attr operator: 'Member | None' = None","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"253":{"title":"Module liteyuki.session.on","titles":[]},"254":{"title":"func add_matcher(matcher: Matcher)","titles":["Module liteyuki.session.on"]},"255":{"title":"func on_message(rule: Rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["Module liteyuki.session.on"]},"256":{"title":"func on_keywords(keywords: list[str], rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["Module liteyuki.session.on"]},"257":{"title":"Module liteyuki.session.rule","titles":[]},"258":{"title":"var RuleHandlerFunc","titles":["Module liteyuki.session.rule"]},"259":{"title":"class Rule","titles":["Module liteyuki.session.rule"]},"260":{"title":"func __init__(self, handler: RuleHandlerFunc)","titles":["Module liteyuki.session.rule","class Rule"]},"261":{"title":"func self | other: Rule => Rule","titles":["Module liteyuki.session.rule","class Rule"]},"262":{"title":"func self & other: Rule => Rule","titles":["Module liteyuki.session.rule","class Rule"]},"263":{"title":"async func self () event: MessageEvent => bool","titles":["Module liteyuki.session.rule","class Rule"]},"264":{"title":"async func empty_rule(event: MessageEvent) -> bool","titles":["Module liteyuki.session.rule"]},"265":{"title":"async func is_su_rule(event: MessageEvent) -> bool","titles":["Module liteyuki.session.rule"]},"266":{"title":"Module liteyuki.utils","titles":[]},"267":{"title":"func is_coroutine_callable(call: Callable[..., Any]) -> bool","titles":["Module liteyuki.utils"]},"268":{"title":"func run_coroutine(*coro: Coroutine)","titles":["Module liteyuki.utils"]},"269":{"title":"func run_coroutine_in_thread(*coro: Coroutine)","titles":["Module liteyuki.utils"]},"270":{"title":"func path_to_module_name(path: Path) -> str","titles":["Module liteyuki.utils"]},"271":{"title":"func async_wrapper(func: Callable[..., Any]) -> Callable[..., Coroutine]","titles":["Module liteyuki.utils"]},"272":{"title":"Best Practices","titles":[]},"273":{"title":"Bot applications","titles":["Best Practices"]},"274":{"title":"plugins","titles":["Best Practices"]},"275":{"title":"Others","titles":["Best Practices"]},"276":{"title":"Channel Communication","titles":[]},"277":{"title":"Introduction","titles":["Channel Communication"]},"278":{"title":"Example","titles":["Channel Communication"]},"279":{"title":"共享内存通信","titles":["Channel Communication"]},"280":{"title":"简介","titles":["Channel Communication","共享内存通信"]},"281":{"title":"示例","titles":["Channel Communication","共享内存通信"]},"282":{"title":"Development Guide","titles":[]},"283":{"title":"How to Develop","titles":["Development Guide"]},"284":{"title":"Suggestions","titles":["Development Guide","How to Develop"]},"285":{"title":"Project Structure","titles":["Development Guide"]},"286":{"title":"Standardization","titles":["Development Guide"]},"287":{"title":"Finally","titles":["Development Guide"]},"288":{"title":"轻雪函数","titles":[]},"289":{"title":"函数文件","titles":["轻雪函数"]},"290":{"title":"命令文档","titles":["轻雪函数"]},"291":{"title":"示例","titles":["轻雪函数","命令文档"]},"292":{"title":"API","titles":["轻雪函数"]},"293":{"title":"结束关键字","titles":["轻雪函数"]},"294":{"title":"简介","titles":[]},"295":{"title":"开始","titles":["简介"]},"296":{"title":"创建插件","titles":["简介","开始"]},"297":{"title":"编写逻辑部分","titles":["简介","开始"]},"298":{"title":"加载插件","titles":["简介","开始"]},"299":{"title":"方法1","titles":["简介","开始","加载插件"]},"300":{"title":"方法2","titles":["简介","开始","加载插件"]},"301":{"title":"简介","titles":[]},"302":{"title":"加载资源包","titles":["简介"]},"303":{"title":"用户协议","titles":[]},"304":{"title":"基础插件","titles":[]},"305":{"title":"轻雪命令liteyuki_command","titles":["基础插件"]},"306":{"title":"命令别名","titles":["基础插件","轻雪命令liteyuki_command"]},"307":{"title":"插件/包管理器 liteyuki_pacman","titles":["基础插件"]},"308":{"title":"命令别名","titles":["基础插件","插件/包管理器 liteyuki_pacman"]},"309":{"title":"用户管理liteyuki_user","titles":["基础插件"]},"310":{"title":"功能插件命令","titles":[]},"311":{"title":"轻雪天气liteyuki_weather","titles":["功能插件命令"]},"312":{"title":"命令别名","titles":["功能插件命令","轻雪天气liteyuki_weather"]},"313":{"title":"统计信息liteyuki_statistics","titles":["功能插件命令"]},"314":{"title":"命令别名","titles":["功能插件命令","统计信息liteyuki_statistics"]}},"dirtCount":0,"index":[["或",{"2":{"313":2}}],["或插件路径",{"2":{"163":1}}],["当前bot",{"2":{"313":1}}],["当前群聊",{"2":{"313":1}}],["当前会话启用",{"2":{"307":1}}],["秒",{"2":{"313":2}}],["小时",{"2":{"313":2}}],["天",{"2":{"313":2}}],["天气",{"2":{"311":1,"312":1}}],["格式",{"2":{"313":1}}],["格式为onebot",{"2":{"305":1}}],["统计时间范围为duration",{"2":{"313":1}}],["统计周期为period",{"2":{"313":1}}],["统计信息",{"2":{"313":1}}],["统计信息liteyuki",{"0":{"313":1},"1":{"314":1}}],["功能",{"2":{"313":1}}],["功能插件命令",{"0":{"310":1},"1":{"311":1,"312":1,"313":1,"314":1}}],["绑定城市",{"2":{"312":1}}],["绑定查询城市",{"2":{"311":1}}],["个人全局生效",{"2":{"311":1}}],["个人信息",{"2":{"309":1}}],["海淀",{"2":{"311":1}}],["北京",{"2":{"311":1}}],["支持中英文",{"2":{"311":2}}],["支持中英文城市名",{"2":{"311":1}}],["支持多个关键词查询",{"2":{"311":1}}],["支持绑定城市",{"2":{"311":1}}],["支持单行注释",{"2":{"289":1}}],["受限于nonebot2钩子函数的依赖注入参数",{"2":{"308":1}}],["帮助",{"2":{"308":1}}],["列表",{"2":{"308":1}}],["列出所有资源包",{"2":{"307":1}}],["列出所有插件",{"2":{"307":1}}],["更改",{"2":{"308":1}}],["更新",{"2":{"308":1}}],["更新插件商店索引",{"2":{"307":1}}],["更新轻雪",{"2":{"305":1,"306":1}}],["全局停用",{"2":{"308":1}}],["全局启用",{"2":{"307":1,"308":1}}],["搜索",{"2":{"308":1}}],["卸载",{"2":{"308":2}}],["卸载资源包",{"2":{"307":1}}],["卸载插件",{"2":{"307":1}}],["私聊所有人可用",{"2":{"307":2}}],["包管理器",{"0":{"307":1},"1":{"308":1}}],["包括子task",{"2":{"290":1}}],["切换图片模式",{"2":{"306":1}}],["状态",{"2":{"306":1}}],["别名",{"2":{"306":1,"308":1,"309":1,"312":1,"314":1}}],["所有人",{"2":{"305":1,"307":1,"309":3}}],["所以在编写lyfunction时也要注意异步的调用",{"2":{"293":1}}],["群聊",{"2":{"306":1}}],["群聊仅群主",{"2":{"305":1,"307":2}}],["群号",{"2":{"305":1}}],["管理员",{"2":{"305":1,"307":2}}],["停用插件",{"2":{"307":2}}],["停用",{"2":{"306":1,"308":1}}],["停用机器人",{"2":{"305":1}}],["停止后钩子",{"2":{"50":1}}],["停止前钩子",{"2":{"49":1}}],["停止",{"2":{"39":1}}],["停止轻雪",{"2":{"18":1,"21":1}}],["该功能需要commit",{"2":{"305":1}}],["该模块封装通道实现",{"2":{"280":1}}],["该模块参考并引用了nonebot",{"2":{"198":1}}],["该模块用于存放一些开发工具",{"2":{"139":1}}],["该模块用于常用配置文件的加载",{"2":{"103":1}}],["该模块用于轻雪主进程和nonebot子进程之间的通信",{"2":{"79":1}}],["推荐私聊使用",{"2":{"305":1}}],["推荐在编写html时同时更改对应js代码",{"2":{"301":1}}],["查询目标地实时天气",{"2":{"311":1}}],["查询实时天气",{"2":{"311":1}}],["查询",{"2":{"306":1,"309":1}}],["查询配置项",{"2":{"305":1}}],["查看用户信息菜单",{"2":{"309":1}}],["查看插件帮助",{"2":{"307":1}}],["查看轻雪文档",{"2":{"305":1}}],["查看统计信息和状态",{"2":{"305":1}}],["查看当前bot",{"2":{"305":1}}],["和风天气的天气key",{"2":{"311":1}}],["和",{"2":{"305":1}}],["和10是不一样的",{"2":{"305":1}}],["和config目录下的所有配置文件",{"2":{"110":1}}],["输入值会被执行以转换为正确的类型",{"2":{"305":1}}],["输出",{"2":{"289":1}}],["版本",{"2":{"305":1}}],["超级用户可用",{"2":{"305":1,"307":2}}],["超级用户",{"2":{"305":10,"307":10}}],["重载",{"2":{"308":1}}],["重载所有资源包",{"2":{"307":1}}],["重载资源",{"2":{"306":1}}],["重载轻雪",{"2":{"305":1}}],["重启轻雪",{"2":{"306":1}}],["重启轻雪即可加载插件",{"2":{"299":1}}],["重启轻雪本体",{"2":{"17":1}}],["重启后钩子",{"2":{"52":1}}],["重启前钩子",{"2":{"51":1}}],["重启",{"2":{"39":1}}],["举例",{"2":{"305":1}}],["权限",{"2":{"305":1,"307":2,"309":1}}],["说明",{"2":{"305":1,"307":2,"309":1}}],["~代替",{"2":{"304":1}}],["~可以使用插件",{"2":{"304":1}}],["安装插件",{"2":{"307":1}}],["安装",{"2":{"304":1,"308":1}}],["安装的插件",{"2":{"163":1}}],["命令",{"2":{"305":1,"306":1,"307":2,"308":1,"309":2,"311":1,"312":1,"313":1,"314":1}}],["命令别名",{"0":{"306":1,"308":1,"312":1,"314":1},"2":{"304":1,"309":1}}],["命令文档",{"0":{"290":1},"1":{"291":1}}],["为可选参数",{"2":{"304":1}}],["为必填参数",{"2":{"304":1}}],["为子进程重启时调用",{"2":{"26":1}}],["为子进程停止时调用",{"2":{"25":1}}],["基础插件",{"0":{"304":1},"1":{"305":1,"306":1,"307":1,"308":1,"309":1}}],["且通过安全的方式传输到轻雪的服务器",{"2":{"303":1}}],["且通道标识为",{"2":{"278":1}}],["系统信息及python信息",{"2":{"303":1}}],["内存",{"2":{"303":1}}],["内存共享是线程安全的",{"2":{"280":1}}],["内存共享使得代码编写更加简洁",{"2":{"280":1}}],["分钟",{"2":{"313":2}}],["分发",{"2":{"303":1}}],["分工明确",{"2":{"103":1}}],["修改优先级",{"2":{"307":1}}],["修改",{"2":{"303":1}}],["本项目不会收集用户的任何隐私信息",{"2":{"303":1}}],["本项目遵循mit协议",{"2":{"303":1}}],["本模块使用了nonebot",{"2":{"213":1}}],["本模块用于轻雪主进程和子进程之间的通信的事件类",{"2":{"76":1}}],["本模块定义了一个通用的通道类",{"2":{"53":1}}],["同时用户也应该自行选择可用的资源包",{"2":{"302":1}}],["同步接收数据",{"2":{"62":1}}],["同步接收函数",{"2":{"54":1}}],["同步过滤函数",{"2":{"56":1}}],["同步进程生命周期函数",{"2":{"35":1}}],["同步生命周期函数",{"2":{"32":1}}],["第三方资源包开发者需要注意版本兼容性",{"2":{"302":1}}],["对于主动推送的插件不生效",{"2":{"308":1}}],["对于不同资源包的不同文件",{"2":{"302":1}}],["对外启动方法",{"2":{"125":1}}],["└─",{"2":{"302":1}}],["└───",{"2":{"302":1}}],["└─resource",{"2":{"302":2}}],["├─templates",{"2":{"302":1}}],["├─metadata",{"2":{"302":2}}],["正常的路径应该是这样的",{"2":{"302":1}}],["只需要将其解压到根目录resources目录下即可",{"2":{"302":1}}],["zip格式压缩的",{"2":{"302":1}}],["zh",{"2":{"2":1,"285":1}}],["以上内容仅用于项目的优化",{"2":{"303":1}}],["以避免出现无法预料的问题",{"2":{"301":1}}],["以下我们会编写一个简单的插件",{"2":{"297":1}}],["错位等无法预料的事情发生",{"2":{"301":1}}],["异常",{"2":{"301":1}}],["异步任务结束关键字",{"2":{"293":1}}],["异步等待",{"2":{"290":1}}],["异步包装器",{"2":{"271":1}}],["异步接收数据",{"2":{"63":1}}],["异步过滤函数",{"2":{"57":1}}],["异步进程生命周期函数",{"2":{"36":1}}],["异步生命周期函数",{"2":{"33":1}}],["请阅读插件主页的说明",{"2":{"308":1}}],["请确保您所编写的html代码能被bot解析",{"2":{"301":1}}],["请注意",{"2":{"301":1}}],["请不要将需要动态加载的内容写入配置文件",{"2":{"103":1}}],["欢迎各位投稿资源包到轻雪资源商店",{"2":{"301":1}}],["部分异常信息",{"2":{"303":1}}],["部分内容制作需要一点点前端基础",{"2":{"301":1}}],["部分来源于",{"2":{"266":1}}],["讲起打包成一个新的资源包",{"2":{"301":1}}],["仅需按照原有路径进行文件替换即可",{"2":{"301":1}}],["那么加载b包后",{"2":{"302":1}}],["那么你能够很快就上手",{"2":{"301":1}}],["那么当前所有函数包的task都会被截停销毁",{"2":{"293":1}}],["如果你接触过minecraft的资源包",{"2":{"301":1}}],["如果你想同时输出多行内容可以尝试换行符",{"2":{"289":1}}],["主题包中的html渲染使用js来规定数据的渲染位置",{"2":{"301":1}}],["主题商店提供了一些资源包供你选择",{"2":{"301":1}}],["主进程中",{"2":{"278":1}}],["主进程中通过get",{"2":{"278":1}}],["主进程订阅者接收函数",{"2":{"81":1}}],["主进程创建单例",{"2":{"67":1}}],["资源",{"2":{"301":1}}],["资源包管理",{"2":{"307":1}}],["资源包的结构会随着轻雪的更新而有变动",{"2":{"302":1}}],["资源包的制作很简单",{"2":{"301":1}}],["资源包加载遵循一个优先级",{"2":{"302":1}}],["资源包描述",{"2":{"302":1}}],["资源包名称",{"2":{"302":1}}],["资源包通常是以",{"2":{"302":1}}],["资源包",{"2":{"301":1,"308":1}}],["它允许你一定程度上自定义轻雪的外观",{"2":{"301":1}}],["它允许你在轻雪中运行一些自定义的由数据驱动的命令",{"2":{"288":1}}],["语言包等",{"2":{"301":1}}],["字体包",{"2":{"301":1}}],["亦可根据用途称为主题包",{"2":{"301":1}}],["保存后轻雪会自动重载nonebot进程",{"2":{"300":1}}],["我们在src",{"2":{"300":1}}],["然后运行python",{"2":{"300":1}}],["方法2",{"0":{"300":1}}],["方法1",{"0":{"299":1}}],["用户管理liteyuki",{"0":{"309":1}}],["用户协议",{"0":{"303":1}}],["用observer的on",{"2":{"297":1}}],["用于统计bot接收到的消息",{"2":{"313":1}}],["用于开发nonebot时进行文件系统变更重载",{"2":{"297":1}}],["用于结束当前已完成function的执行",{"2":{"293":1}}],["用于存放内置插件",{"2":{"189":1}}],["用于获取和唯一标识",{"2":{"126":1}}],["用于进程间通信",{"2":{"53":1}}],["排除的文件扩展名",{"2":{"297":1}}],["因此插件主要是一些后台任务或者与聊天机器人的通信",{"2":{"297":1}}],["定义插件元数据",{"2":{"296":1}}],["定义变量",{"2":{"290":1}}],["导入轻雪bot和日志",{"2":{"297":1}}],["导入文件系统事件",{"2":{"297":1}}],["导入文件系统观察器",{"2":{"297":1}}],["导入文件夹下多个插件",{"2":{"164":1}}],["导入逻辑部分",{"2":{"296":1}}],["即后加载的资源包会覆盖前面的资源包",{"2":{"302":1}}],["即可创建一个插件",{"2":{"296":1}}],["即不等待",{"2":{"290":1}}],["首先创建一个文件夹",{"2":{"296":1}}],["开始",{"0":{"295":1},"1":{"296":1,"297":1,"298":1,"299":1,"300":1}}],["编写逻辑部分",{"0":{"297":1}}],["编写轻雪函数推荐你使用vs",{"2":{"293":1}}],["编辑时的语法高亮可采取shell格式",{"2":{"289":1}}],["有一个task任务没有完成而await被执行了",{"2":{"293":1}}],["的情况是效率提升的关键",{"2":{"293":1}}],["单线程走到底",{"2":{"293":1}}],["单位s",{"2":{"290":1}}],["避免出现",{"2":{"293":1}}],["由于liteyukibot基于异步运行",{"2":{"293":1}}],["结束关键字",{"0":{"293":1}}],["结束函数关键字",{"2":{"290":1}}],["理论上所有基于onebotv11的api都可调用",{"2":{"292":1}}],["则该文件夹不会被识别为资源包",{"2":{"302":1}}],["则需要删除await",{"2":{"291":1}}],["则传入泛型默认开启",{"2":{"60":1}}],["无需手动创建实例",{"2":{"300":1}}],["无需手动初始化bot",{"2":{"152":1}}],["无限戳",{"2":{"291":1}}],["执行",{"2":{"291":1}}],["疯狂戳好友",{"2":{"291":1}}],["否则会导致渲染失败或渲染结果不理想",{"2":{"301":1}}],["否则task对象会被销毁",{"2":{"290":1}}],["否则默认关闭",{"2":{"60":1}}],["需要在最后调用",{"2":{"290":1}}],["等待所有异步任务结束",{"2":{"290":1}}],["使用通用日期简写",{"2":{"313":2}}],["使用此项目代表你已经同意以上协议",{"2":{"303":1}}],["使用开发工具快速运行插件",{"2":{"300":1}}],["使用",{"2":{"291":1}}],["使用新的task执行命令",{"2":{"290":1}}],["使用watchdog监控文件变化并重启bot",{"2":{"140":1}}],["调用机器人函数",{"2":{"305":1}}],["调用机器人api",{"2":{"305":1}}],["调用重启进程方法",{"2":{"297":1}}],["调用函数",{"2":{"290":1}}],["调用bot",{"2":{"290":1}}],["也支持句末注释",{"2":{"289":1}}],["例如npm",{"2":{"304":1}}],["例如nonebot插件中",{"2":{"278":1}}],["例如你在a中定义了templates",{"2":{"302":1}}],["例如html",{"2":{"301":1}}],["例如main",{"2":{"300":1}}],["例如watchdog",{"2":{"296":1,"299":1}}],["例如",{"2":{"289":2,"302":1,"311":1}}],["例如test",{"2":{"289":1,"300":1}}],["文件内容为一系列的命令",{"2":{"289":1}}],["文件名以",{"2":{"289":1}}],["文件夹路径",{"2":{"164":1}}],["函数文件放在资源包的functions目录下",{"2":{"289":1}}],["函数文件",{"0":{"289":1}}],["函数列表",{"2":{"40":1}}],["属于资源包的一部分",{"2":{"288":1}}],["类似于minecraft的mcfunction",{"2":{"288":1}}],["类似于redis",{"2":{"80":1}}],["是可以相对引用的",{"2":{"302":1}}],["是轻雪的一个功能",{"2":{"288":1}}],["是否为协程可调用对象",{"2":{"267":1}}],["是否阻断后续优先级更低的匹配器",{"2":{"202":1}}],["是否忽略警告",{"2":{"164":1}}],["是否忽略键不存在的错误",{"2":{"87":1}}],["是否递归监听子目录",{"2":{"150":1}}],["是否关闭警告",{"2":{"110":1}}],["是否开启类型检查",{"2":{"60":1}}],["源代码",{"2":{"281":1}}],["示例",{"0":{"281":1,"291":1}}],["线程锁会自动保护共享内存的读写操作",{"2":{"280":1}}],["你在a包中定义了一个index",{"2":{"302":1}}],["你自己制作的资源包也应该遵循这个规则",{"2":{"302":1}}],["你也可以自己制作资源包",{"2":{"301":1}}],["你的插件代码",{"2":{"296":1}}],["你可以选择开启auto",{"2":{"303":1}}],["你可以自由使用",{"2":{"303":1}}],["你可以自定义一些信息",{"2":{"302":1}}],["你可以在多个线程中读写共享内存",{"2":{"280":1}}],["你可以通过storage模块实现内存共享通信",{"2":{"280":1}}],["你应该使用其他储存方式",{"2":{"103":1}}],["相比于普通进程通信",{"2":{"280":1}}],["简介",{"0":{"280":1,"294":1,"301":1},"1":{"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"302":1}}],["被动模式",{"2":{"278":1}}],["被动通道传递通道",{"2":{"68":1}}],["被动通道",{"2":{"66":1}}],["每隔0",{"2":{"291":1}}],["每行一个命令",{"2":{"289":1}}],["每次接收到字符串数据时都会运行",{"2":{"278":1}}],["每3秒发送一次消息",{"2":{"278":1}}],["每个配置文件给一个或一类服务提供配置",{"2":{"103":1}}],["创建入口文件",{"2":{"300":1}}],["创建插件",{"0":{"296":1}}],["创建子进程的同时会初始化一个被动通道和一个主动通道",{"2":{"278":1}}],["创建asyncio",{"2":{"125":1}}],["+",{"2":{"270":1}}],["+=",{"2":{"17":1,"64":1}}],["模块名",{"2":{"270":1}}],["路径a",{"2":{"270":1}}],["转换路径为模块名",{"2":{"270":1}}],["可用",{"2":{"305":1}}],["可用参数",{"2":{"305":1}}],["可以在配置文件中把auto",{"2":{"303":1}}],["可以在a的index",{"2":{"302":1}}],["可以在此基础上进行修改",{"2":{"301":1}}],["可以很高程度地扩展轻雪的功能",{"2":{"294":1}}],["可以是本地插件或是通过",{"2":{"163":1}}],["可递归",{"2":{"290":1}}],["可调用对象",{"2":{"267":1}}],["判断是否为协程可调用对象",{"2":{"267":1}}],["并且应该在metadata",{"2":{"302":1}}],["并且不用修改源代码",{"2":{"301":1}}],["并在其中写入一些代码",{"2":{"300":1}}],["并在其中写入以下代码",{"2":{"300":1}}],["并在其中创建一个",{"2":{"296":1}}],["并遵循其许可进行修改",{"2":{"266":1}}],["并发运行异步函数",{"2":{"40":1}}],["一个",{"2":{"296":1}}],["一个键不要多次出现",{"2":{"103":1}}],["一些常用的工具类",{"2":{"266":1}}],["x26",{"2":{"256":1}}],["x3c",{"2":{"16":4,"17":1,"159":7,"163":2,"165":2,"254":1,"290":6,"311":2,"313":2}}],["优先级",{"2":{"202":1}}],["规则函数签名",{"2":{"258":1}}],["规则",{"2":{"202":1}}],["匹配器",{"2":{"202":1}}],["505468b及以后的lagrange",{"2":{"305":1}}],["55",{"2":{"257":1}}],["52",{"2":{"253":1}}],["5",{"0":{"220":1}}],["51",{"2":{"200":1}}],["59",{"2":{"162":1,"166":1}}],["多路输入管道组",{"2":{"199":1}}],["多配置文件编写原则",{"2":{"103":1}}],["回复消息",{"2":{"197":1}}],["应在初始化时调用",{"2":{"193":1}}],["根据不同类型插件设置颜色",{"2":{"165":1}}],["加载",{"2":{"308":1}}],["加载资源包",{"0":{"302":1},"2":{"307":1}}],["加载插件",{"0":{"298":1},"1":{"299":1,"300":1}}],["加载插件加载器",{"2":{"15":1}}],["加载单个插件",{"2":{"163":1}}],["下午10",{"2":{"192":1,"194":1,"200":1,"253":1,"257":1}}],["下午12",{"2":{"190":1}}],["下午11",{"2":{"162":1,"166":1}}],["下午8",{"2":{"31":1}}],["插件停用只能阻断传入响应",{"2":{"308":1}}],["插件管理",{"2":{"307":1,"308":1}}],["插件",{"0":{"307":1},"1":{"308":1}}],["插件信息",{"2":{"303":1}}],["插件描述",{"2":{"296":1}}],["插件版本",{"2":{"296":1}}],["插件类型",{"2":{"165":1,"296":1}}],["插件名称",{"2":{"163":1,"165":1,"296":1}}],["插件字典",{"2":{"161":1}}],["插件路径",{"2":{"152":1}}],["🔍",{"2":{"159":1}}],["🐛",{"2":{"159":1}}],["❌",{"2":{"159":1,"305":11}}],["⭕",{"2":{"159":1}}],["⚠️",{"2":{"159":1}}],["✅",{"2":{"159":1}}],["ℹ️信息",{"2":{"278":4}}],["ℹ️",{"2":{"159":1}}],["在群聊启用",{"2":{"305":1}}],["在普通图片和markdown大图之间切换",{"2":{"305":1}}],["在b中定义了templates",{"2":{"302":1}}],["在配置文件中的liteyuki",{"2":{"299":1}}],["在设备上执行命令",{"2":{"290":1}}],["在发信器输出",{"2":{"289":1}}],["在任意进程中均可使用",{"2":{"281":1}}],["在子进程中",{"2":{"278":1}}],["在轻雪插件中",{"2":{"278":1}}],["在新线程中运行协程",{"2":{"269":1}}],["在语言加载完成后执行",{"2":{"159":1}}],["在主进程中运行",{"2":{"92":1}}],["日志等级",{"2":{"158":1}}],["31",{"2":{"190":1}}],["3",{"0":{"218":1},"2":{"156":1,"164":1,"278":1}}],["300~500mb",{"2":{"11":1}}],["6",{"2":{"156":1}}],["测试版本号",{"2":{"156":1}}],["此模块为内置插件文件夹",{"2":{"189":1}}],["此模块为liteyuki的框架整体",{"2":{"155":1}}],["此模块用于注册观察者函数",{"2":{"140":1}}],["参考liteyuki",{"2":{"152":1}}],["参数列表",{"2":{"305":2}}],["参数为调用set",{"2":{"278":1}}],["参数",{"2":{"19":1,"304":1,"313":1}}],["运行环境的设备信息",{"2":{"303":1}}],["运行在主进程中",{"2":{"294":1}}],["运行协程",{"2":{"268":1}}],["运行处理函数",{"2":{"204":1}}],["运行插件",{"2":{"152":1}}],["运行订阅者接收函数",{"2":{"91":1}}],["上午12",{"2":{"167":1}}],["上午11",{"2":{"120":1}}],["上午9",{"2":{"157":1}}],["上午5",{"2":{"151":1}}],["装饰一个函数在接收到数据后执行",{"2":{"150":1}}],["装饰器",{"2":{"64":1,"90":1,"150":1,"203":2}}],["返回true则执行回调函数",{"2":{"150":1}}],["事件过滤器",{"2":{"150":1}}],["事件循环",{"2":{"15":1}}],["监听目录们",{"2":{"150":1}}],["防抖函数",{"2":{"143":1}}],["防止获取空指针",{"2":{"98":1}}],["位置1为filesystemevent",{"2":{"141":1,"142":1}}],["启用",{"2":{"306":1,"308":1}}],["启用插件后",{"2":{"300":1}}],["启用该模块需要在配置文件中设置dev",{"2":{"140":1}}],["启动后控制台输出",{"2":{"278":1}}],["启动后钩子",{"2":{"48":1}}],["启动所有子进程",{"2":{"135":1}}],["启动所有进程",{"2":{"125":1}}],["启动指定子进程",{"2":{"134":1}}],["启动发布订阅接收器循环",{"2":{"92":1}}],["启动前钩子",{"2":{"47":1}}],["启动",{"2":{"39":1}}],["终止所有子进程",{"2":{"137":1}}],["终止指定子进程",{"2":{"136":1}}],["终止进程并从进程字典中删除",{"2":{"128":1}}],["添加配置项",{"2":{"305":1}}],["添加sleep",{"2":{"291":1}}],["添加处理函数",{"2":{"203":1}}],["添加子进程",{"2":{"133":1}}],["添加进程",{"2":{"126":1}}],["检查进程是否存活",{"2":{"130":1}}],["通过关键词搜索插件",{"2":{"307":1}}],["通过装饰器注册一个函数在接收到消息时运行",{"2":{"278":1}}],["通常是目录不存在或目录为空",{"2":{"164":1}}],["通常会默认传入chan",{"2":{"126":1}}],["通道实例",{"2":{"69":1,"70":1,"71":1,"72":1}}],["通道名称",{"2":{"69":1,"71":1}}],["通道传递通道",{"2":{"67":1}}],["通道id",{"2":{"60":1}}],["合并两个loader键值对树",{"2":{"117":1}}],["项目目录下的配置文件优先",{"2":{"110":1}}],["项目目录下的配置文件优先级高于config目录下的配置文件",{"2":{"103":1}}],["项目目录下的config",{"2":{"110":1}}],["按照读取文件的优先级反向覆盖",{"2":{"109":1}}],["不带key返回配置项列表",{"2":{"305":1}}],["不包含任何隐私信息",{"2":{"303":1}}],["不含隐私部分",{"2":{"303":1}}],["不含插件数据",{"2":{"303":1}}],["不同adapter",{"2":{"292":1}}],["不递归",{"2":{"109":1}}],["不要出现过多的嵌套",{"2":{"103":1}}],["从环境变量加载配置",{"2":{"116":1}}],["从json文件加载配置",{"2":{"115":1}}],["从toml文件加载配置",{"2":{"114":1}}],["从yaml文件加载配置",{"2":{"113":1}}],["从一个标准的轻雪项目加载配置文件",{"2":{"110":1}}],["从目录下加载配置文件",{"2":{"109":1}}],["从指定文件加载配置项",{"2":{"108":1}}],["默认普通图片",{"2":{"305":1}}],["默认开启",{"2":{"303":1}}],["默认插件加载器",{"2":{"193":1}}],["默认执行扁平化选项",{"2":{"108":1,"109":1}}],["默认值",{"2":{"29":1,"30":1,"86":1}}],["8",{"2":{"105":1,"106":1,"107":1,"151":1,"190":1,"191":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["但请注意甄别第三方插件的安全性",{"2":{"303":1}}],["但请保证以上三个字段",{"2":{"302":1}}],["但是请保留原作者信息",{"2":{"303":1}}],["但是更加轻量级并且线程安全",{"2":{"80":1}}],["但若出现非单function的情况",{"2":{"293":1}}],["但需单独起篇幅",{"2":{"288":1}}],["但也包含原有的键值对",{"2":{"104":1}}],["扁平化后的配置文件",{"2":{"104":1}}],["扁平化配置文件",{"2":{"104":1}}],["扁平化编写",{"2":{"103":1}}],["注意不要嵌套文件夹",{"2":{"302":1}}],["注意冲突时的优先级",{"2":{"103":1}}],["注册一个函数在nonebot启动后运行",{"2":{"278":1}}],["注册一个函数在轻雪启动后运行",{"2":{"278":1}}],["注册文件系统变化监听器",{"2":{"150":1}}],["注册重启后的函数",{"2":{"27":1,"46":1}}],["注册进程重启前的函数",{"2":{"26":1,"45":1}}],["注册进程停止前的函数",{"2":{"25":1,"43":1}}],["注册停止后的函数",{"2":{"24":1,"44":1}}],["注册启动时的函数",{"2":{"41":1,"42":1}}],["注册启动后的函数",{"2":{"23":1}}],["注册启动前的函数",{"2":{"22":1}}],["尽量不要冲突",{"2":{"103":1}}],["引用计数",{"2":{"98":1}}],["共享内存通信",{"0":{"279":1},"1":{"280":1,"281":1}}],["共享内存对象",{"2":{"97":1}}],["共享内存模块",{"2":{"80":1}}],["若不存在则返回空",{"2":{"305":1}}],["若不存在则创建于config",{"2":{"305":1}}],["若存在则返回",{"2":{"305":1}}],["若存在则覆盖",{"2":{"305":1}}],["若存在则会覆盖",{"2":{"305":1}}],["若你不希望提供这些信息",{"2":{"303":1}}],["若没有metadata",{"2":{"302":1}}],["若要戳20s后停止",{"2":{"291":1}}],["若函数中启动了其他task",{"2":{"290":1}}],["若有子进程订阅则推送给子进程",{"2":{"92":1}}],["若为空",{"2":{"60":1}}],["订阅者接收消息时的回调",{"2":{"90":1}}],["频道",{"2":{"89":1,"90":1,"91":1}}],["发布消息",{"2":{"89":1}}],["发送函数为同步函数",{"2":{"61":1}}],["发送数据",{"2":{"61":1}}],["删除键值对",{"2":{"87":1}}],["值",{"2":{"85":1,"86":1}}],["键值对",{"2":{"88":1}}],["键",{"2":{"85":1,"86":1,"87":1}}],["设置用户信息或打开属性设置菜单",{"2":{"309":1}}],["设置",{"2":{"306":1,"309":1}}],["设置共享内存",{"2":{"281":1}}],["设置后的插件名称",{"2":{"165":1}}],["设置插件名称颜色",{"2":{"165":1}}],["设置键值对",{"2":{"85":1}}],["设置通道实例",{"2":{"69":1,"70":1}}],["依赖关系",{"2":{"79":1}}],["子进程中获取通道直接导入进程全局单例即可",{"2":{"278":1}}],["子进程中导入单例active",{"2":{"278":1}}],["子进程名称",{"2":{"133":1,"134":1,"136":1,"138":1}}],["子进程函数关键字参数",{"2":{"133":1}}],["子进程函数参数",{"2":{"133":1}}],["子进程函数",{"2":{"133":1}}],["子进程订阅者接收函数",{"2":{"82":1}}],["子进程初始化时实例化",{"2":{"67":1}}],["子进程可用的主动和被动通道",{"2":{"65":1}}],["接收数据并执行函数",{"2":{"64":1}}],["接收函数",{"2":{"55":1}}],["会自动判断key版本",{"2":{"311":1}}],["会自动识别文件格式",{"2":{"108":1}}],["会话负载信息",{"2":{"303":1}}],["会触发最大递归深度限制",{"2":{"291":1}}],["会挂起等待",{"2":{"63":1}}],["会阻塞线程",{"2":{"62":1}}],["数据",{"2":{"61":1,"62":1,"63":1,"89":1,"91":1}}],["没有异步的必要",{"2":{"61":1}}],["过滤函数",{"2":{"58":1,"64":1}}],["轻雪天气liteyuki",{"0":{"311":1},"1":{"312":1}}],["轻雪文档",{"2":{"306":1}}],["轻雪命令liteyuki",{"0":{"305":1},"1":{"306":1}}],["轻雪会收集以下内容",{"2":{"303":1}}],["轻雪原版资源包请查看liteyukibot",{"2":{"301":1}}],["轻雪主进程不涉及聊天部分",{"2":{"297":1}}],["轻雪插件是轻雪内置的一部分功能",{"2":{"294":1}}],["轻雪函数",{"0":{"288":1},"1":{"289":1,"290":1,"291":1,"292":1,"293":1},"2":{"288":1}}],["轻雪框架提供了一个内存共享通信的接口",{"2":{"280":1}}],["轻雪抽象消息事件",{"2":{"196":1}}],["轻雪生命周期管理",{"2":{"39":1}}],["轻雪实例",{"2":{"28":1}}],["进程生命周期函数",{"2":{"43":2,"45":2}}],["进程函数关键字参数",{"2":{"126":1}}],["进程函数参数",{"2":{"126":1}}],["进程函数",{"2":{"37":1,"126":1}}],["进程名",{"2":{"18":1,"126":1}}],["|",{"0":{"40":1,"138":1,"152":1,"163":1,"196":1,"197":1,"223":1,"224":1,"225":1,"226":1,"230":1,"231":1,"232":1,"235":1,"236":1,"239":1,"240":1,"241":1,"242":1,"251":1,"252":1,"261":1},"2":{"34":1,"37":1,"40":2,"55":1,"58":1,"138":1,"152":1,"163":1,"196":1,"197":1}}],["7",{"2":{"31":1,"120":1,"157":1,"162":1,"166":1,"167":1}}],["兼容键",{"2":{"30":1}}],["兼容旧版本",{"2":{"30":1}}],["获取用户信息",{"2":{"309":1}}],["获取唯一的轻雪bot实例",{"2":{"297":1}}],["获取共享内存",{"2":{"281":1}}],["获取主动通道",{"2":{"278":1}}],["获取被动通道",{"2":{"278":1}}],["获取已加载的插件",{"2":{"161":1}}],["获取日志格式",{"2":{"158":1}}],["获取指定子进程",{"2":{"138":1}}],["获取所有键值对",{"2":{"88":1}}],["获取键值对",{"2":{"86":1}}],["获取通道实例们",{"2":{"72":1}}],["获取通道实例",{"2":{"71":1}}],["获取配置值",{"2":{"118":1}}],["获取配置",{"2":{"29":1,"30":1}}],["获取轻雪实例",{"2":{"28":1}}],["未实现",{"2":{"24":1,"27":1,"50":1,"52":1}}],["生命周期函数",{"2":{"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"34":1,"41":2,"42":2,"44":2,"46":2}}],["生命周期管理",{"2":{"15":1}}],["关键字参数",{"2":{"19":1}}],["自动调用",{"2":{"19":1}}],["延迟重启时间",{"2":{"17":1}}],["外部启动接口",{"2":{"16":1}}],["初始化通道",{"2":{"60":1}}],["初始化日志",{"2":{"20":1}}],["初始化轻雪",{"2":{"19":1}}],["初始化轻雪实例",{"2":{"15":1}}],["初始化",{"2":{"15":1}}],["常规操作",{"2":{"15":1}}],["=none",{"2":{"18":1,"60":1,"64":1,"86":1,"196":2}}],["==",{"2":{"17":3,"72":1,"73":2,"74":2,"75":1,"92":1,"98":1,"99":2,"100":2,"101":2,"102":1,"158":1,"244":1,"245":1,"270":1}}],["=",{"0":{"17":1,"18":1,"29":1,"30":1,"60":1,"64":1,"86":1,"87":1,"95":1,"96":1,"108":1,"109":1,"110":1,"116":1,"118":1,"126":2,"150":2,"164":1,"169":1,"170":1,"171":1,"172":1,"173":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"184":1,"185":1,"186":1,"187":1,"188":1,"196":2,"207":1,"208":1,"210":1,"212":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"255":3,"256":3,"261":1,"262":1,"263":1},"2":{"15":9,"17":6,"18":2,"39":7,"40":1,"60":10,"61":1,"62":1,"63":2,"64":1,"69":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":2,"84":6,"85":2,"86":2,"87":1,"88":1,"90":2,"92":1,"94":1,"99":3,"100":2,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"116":1,"122":5,"124":3,"126":5,"128":1,"132":1,"133":1,"143":3,"150":2,"152":4,"159":2,"163":12,"164":6,"165":5,"196":10,"197":1,"202":5,"255":1,"260":1,"267":1,"268":2,"270":1,"271":1,"278":5,"281":1,"296":1,"297":2}}],["总通道",{"2":{"15":1}}],[">",{"2":{"15":1,"22":1,"26":1,"28":1,"29":1,"30":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,"62":1,"63":1,"64":3,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":2,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"130":1,"138":1,"143":1,"150":2,"158":1,"161":1,"163":1,"164":1,"165":3,"203":2,"204":1,"255":1,"256":1,"261":2,"262":2,"263":1,"264":1,"265":1,"267":1,"270":1,"271":1,"311":2}}],["配置项",{"2":{"311":1}}],["配置项目",{"2":{"104":1}}],["配置了命令别名的命令可以使用别名代替原命令",{"2":{"304":1}}],["配置文件尽量扁平化",{"2":{"103":1}}],["配置值",{"2":{"29":1,"30":1}}],["配置键",{"2":{"29":1,"30":1}}],["配置",{"2":{"15":2,"159":1,"306":1}}],["kind",{"2":{"213":1}}],["kill",{"2":{"128":1}}],["k",{"2":{"104":2}}],["keyword",{"2":{"256":2}}],["keywords为城市名",{"2":{"311":2}}],["keywords",{"0":{"256":2},"2":{"256":5,"307":1,"311":2}}],["keyerror",{"2":{"87":1,"134":1,"136":1}}],["keyvaluestore",{"0":{"83":1},"1":{"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1},"2":{"94":1,"97":1}}],["keys",{"0":{"30":1},"2":{"30":3}}],["key",{"0":{"29":1,"30":1,"85":1,"86":1,"87":2,"118":1},"2":{"29":3,"30":10,"85":6,"86":6,"87":11,"99":3,"100":3,"101":3,"104":2,"116":3,"118":2,"281":2,"305":4,"309":2,"311":1}}],["keyboardinterrupt",{"2":{"16":1}}],["kwargs=none",{"2":{"126":1}}],["kwargs",{"0":{"15":1,"19":1,"40":1,"49":1,"51":1,"126":1,"133":1},"2":{"15":3,"19":2,"40":3,"49":2,"51":2,"126":4,"133":3,"143":2,"271":2,"305":2}}],["knowledge",{"2":{"283":1}}],["know",{"2":{"6":1}}],["$",{"2":{"10":1}}],["qq群号",{"2":{"313":1}}],["qq",{"2":{"7":1}}],["questions",{"0":{"6":1,"7":1,"12":1}}],["quotes",{"2":{"286":2}}],["quot",{"2":{"3":2,"213":4,"286":1,"293":2,"305":2,"311":4}}],["joined",{"0":{"242":1}}],["join",{"0":{"127":1},"2":{"7":1,"17":1,"109":1,"127":2,"128":1,"164":2,"270":2}}],["json",{"0":{"106":1,"115":1},"2":{"0":2,"106":4,"108":2,"110":1,"115":2}}],["guidelines",{"2":{"286":2}}],["guide",{"0":{"282":1},"1":{"283":1,"284":1,"285":1,"286":1,"287":1},"2":{"286":1}}],["guild",{"0":{"217":1},"2":{"244":1,"245":1}}],["google",{"2":{"286":2}}],["go",{"2":{"277":1}}],["girl",{"2":{"273":1}}],["gitmoji",{"2":{"286":2}}],["github",{"2":{"7":1,"9":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"273":1}}],["git",{"2":{"6":1,"9":2,"10":1,"11":2}}],["g",{"2":{"165":1,"314":1}}],["group",{"0":{"216":1},"2":{"244":1,"245":1,"305":9,"306":1,"307":2,"313":3,"314":1}}],["group775840726",{"2":{"7":1}}],["granted",{"2":{"213":1}}],["green>",{"2":{"159":1}}],["gather",{"2":{"40":1,"268":1}}],["gender",{"0":{"226":1}}],["generator",{"2":{"275":1}}],["generate",{"2":{"0":1,"286":1}}],["generic",{"0":{"59":1},"1":{"60":1,"61":1,"62":1,"63":1,"64":1},"2":{"60":2,"61":1}}],["getattr",{"2":{"267":1}}],["get",{"0":{"28":1,"29":1,"30":1,"71":1,"72":1,"74":1,"75":1,"86":1,"88":1,"94":1,"99":1,"102":1,"118":1,"138":1,"158":1,"161":1},"2":{"18":2,"28":2,"29":3,"30":5,"60":2,"61":1,"63":1,"71":2,"72":2,"73":1,"74":4,"75":3,"85":1,"86":4,"87":1,"88":2,"94":1,"97":1,"98":1,"99":3,"101":1,"102":3,"118":2,"138":2,"152":1,"158":1,"159":2,"161":1,"163":3,"164":1,"193":2,"268":1,"278":8,"281":1,"297":2,"305":3,"306":1,"309":2}}],["globalkeyvaluestore",{"0":{"93":1},"1":{"94":1,"95":1,"96":1},"2":{"97":1}}],["global",{"2":{"15":1,"64":1,"159":1,"307":2,"308":2}}],["gt",{"0":{"15":1,"22":1,"26":1,"28":1,"29":1,"30":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,"62":1,"63":1,"64":1,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"130":1,"138":1,"150":1,"158":1,"161":1,"163":1,"164":1,"165":1,"203":1,"204":1,"255":1,"256":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"270":1,"271":1},"2":{"79":3,"104":1,"202":1,"270":1,"286":2,"304":1,"305":7,"307":10,"309":2}}],["\`",{"2":{"3":1}}],["voice",{"0":{"220":1},"2":{"244":1,"245":1}}],["v",{"2":{"104":2}}],["validate",{"2":{"61":1}}],["valueerror",{"2":{"60":2,"69":1,"244":1}}],["value2",{"2":{"2":1}}],["value1",{"2":{"2":1}}],["value",{"0":{"85":1},"2":{"2":1,"3":3,"85":5,"100":3,"104":3,"116":2,"281":2,"305":2,"309":1}}],["var=value",{"2":{"290":1}}],["var2=value2",{"2":{"290":1}}],["var1=value1>",{"2":{"290":1}}],["var",{"0":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"66":1,"67":1,"68":1,"81":1,"82":1,"97":1,"98":1,"141":1,"142":1,"156":1,"258":1}}],["version=",{"2":{"296":1}}],["version",{"0":{"156":1},"2":{"11":1,"302":1}}],["venv",{"2":{"9":8}}],["vitepress",{"2":{"286":1}}],["view",{"2":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1}}],["virtual",{"2":{"6":1,"9":5}}],["visit",{"2":{"3":1}}],["v11协议api",{"2":{"305":2}}],["v11",{"2":{"3":1,"292":1}}],["2s戳两次",{"2":{"291":1}}],["22",{"2":{"190":1}}],["27",{"2":{"120":1,"157":1}}],["24",{"2":{"31":1,"167":1}}],["23",{"2":{"31":1,"162":1,"166":1}}],["20代替空格",{"2":{"305":1}}],["20和end",{"2":{"291":1}}],["2024",{"2":{"31":2,"120":2,"151":2,"157":2,"162":2,"166":2,"167":2,"190":2,"192":2,"194":2,"200":2,"213":1,"253":2,"257":2}}],["2020",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["20216",{"2":{"1":1,"3":1,"10":2}}],["20",{"2":{"11":1}}],["2019+",{"2":{"11":1}}],["2",{"0":{"217":1},"2":{"2":1,"291":1,"302":1}}],["occurred",{"2":{"268":1}}],["occupy",{"2":{"11":1}}],["object",{"2":{"277":1}}],["obtaining",{"2":{"213":1}}],["observer",{"0":{"140":1},"1":{"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1},"2":{"150":1,"297":2}}],["overall",{"2":{"155":1}}],["os",{"2":{"108":1,"109":3,"116":1,"164":9,"297":2}}],["out",{"2":{"213":1}}],["outlook",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["output",{"2":{"2":1}}],["operator",{"0":{"252":1}}],["open",{"2":{"17":1,"105":1,"106":1,"107":1,"113":1,"114":1,"115":1,"287":1}}],["option",{"2":{"304":1}}],["optional",{"0":{"18":1,"60":1,"64":1,"86":2,"163":1,"188":1,"196":2},"2":{"17":1,"18":2,"29":1,"30":1,"60":1,"64":3,"84":2,"86":3,"163":1,"196":2}}],["opt",{"2":{"16":2,"163":3}}],["o",{"2":{"15":1}}],["ordinary",{"2":{"286":1}}],["organization",{"2":{"283":1}}],["or",{"2":{"4":1,"6":1,"11":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"213":9,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":3,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"286":3}}],["official",{"2":{"273":2,"275":1}}],["of",{"0":{"3":1},"2":{"6":2,"10":1,"11":1,"61":1,"69":1,"155":1,"163":1,"213":8,"275":1,"283":4,"286":5}}],["others",{"0":{"275":1}}],["otherwise",{"2":{"213":1}}],["other",{"0":{"2":1,"4":1,"7":1,"12":1,"261":1,"262":1},"2":{"2":1,"3":1,"11":2,"213":2,"261":2,"262":2,"277":3}}],["one",{"2":{"6":1,"278":1}}],["onebot",{"0":{"3":1},"2":{"2":2,"3":2,"4":1,"292":1,"305":1}}],["only",{"2":{"0":1,"64":1,"278":1}}],["on",{"0":{"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"64":1,"73":1,"74":1,"75":1,"81":1,"82":1,"90":3,"99":1,"100":1,"101":1,"102":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"253":1,"255":1,"256":1},"1":{"254":1,"255":1,"256":1},"2":{"0":1,"3":1,"6":1,"7":1,"9":1,"11":3,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":3,"23":3,"24":3,"25":3,"26":3,"27":3,"28":1,"29":1,"30":1,"39":1,"40":1,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"55":2,"60":3,"61":1,"62":1,"63":1,"64":5,"69":1,"70":1,"71":1,"72":2,"73":4,"74":4,"75":3,"78":1,"81":1,"82":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":12,"91":2,"92":1,"94":1,"98":1,"99":4,"100":4,"101":4,"102":3,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":3,"146":3,"147":3,"148":3,"149":3,"150":3,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"190":1,"191":2,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"253":1,"254":1,"255":2,"256":5,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"273":1,"278":6,"286":1,"297":1}}],["45m",{"2":{"313":2}}],["47",{"2":{"194":1}}],["41",{"2":{"10":1}}],["40",{"2":{"10":1}}],["4",{"0":{"219":1},"2":{"1":1}}],["utility",{"2":{"285":1}}],["utils",{"0":{"266":1},"1":{"267":1,"268":1,"269":1,"270":1,"271":1},"2":{"285":1}}],["utf",{"2":{"105":1,"106":1,"107":1}}],["url",{"0":{"212":1}}],["unload",{"2":{"307":1,"308":1}}],["understand",{"2":{"286":1}}],["unit",{"2":{"285":1}}],["uninfo的部分模型定义",{"2":{"213":1}}],["uninstall",{"2":{"6":2,"307":1,"308":1}}],["until",{"2":{"268":2}}],["unclassified",{"0":{"172":2,"178":1}}],["unsupported",{"2":{"108":1}}],["ubuntu",{"2":{"11":1}}],["usage",{"0":{"177":1},"2":{"283":1}}],["using",{"2":{"6":3,"10":1}}],["users",{"2":{"286":1}}],["user",{"0":{"196":1,"221":1,"238":2,"250":2,"309":1},"1":{"222":1,"223":1,"224":1,"225":1,"226":1},"2":{"196":3,"197":2,"244":1,"245":2,"265":1,"286":1,"291":3}}],["used",{"2":{"64":1,"189":1,"278":1,"286":1}}],["use",{"2":{"1":1,"3":2,"4":2,"6":4,"9":4,"10":1,"11":2,"30":1,"163":1,"213":2,"284":1,"286":2}}],["updates",{"2":{"1":1}}],["update",{"2":{"1":2,"2":2,"6":1,"11":2,"108":3,"109":1,"110":1,"113":1,"114":1,"115":1,"117":1,"305":1,"306":1,"307":1,"308":1}}],["feat",{"2":{"286":1}}],["features",{"2":{"286":2}}],["feature",{"2":{"286":1}}],["fp",{"0":{"113":1,"114":1,"115":1},"2":{"113":3,"114":2,"115":2}}],["flake8",{"2":{"284":1}}],["flat",{"0":{"104":1},"2":{"104":2,"105":1,"106":1,"107":1}}],["flag",{"2":{"39":1}}],["friend",{"2":{"291":2}}],["front",{"2":{"283":1}}],["from",{"0":{"105":1,"106":1,"107":1,"108":1,"109":1,"113":1,"114":1,"115":1,"116":1},"2":{"62":1,"105":3,"106":3,"107":3,"108":4,"109":2,"110":2,"113":1,"114":1,"115":1,"116":1,"199":2,"213":1,"277":1,"278":4,"296":1,"297":3}}],["free",{"2":{"213":1}}],["frequently",{"0":{"6":1}}],["framework",{"2":{"155":1,"277":1,"283":1,"285":3}}],["f",{"2":{"17":1,"18":2,"30":1,"60":2,"61":1,"69":2,"104":1,"105":1,"106":1,"107":1,"108":2,"109":1,"125":1,"128":2,"130":1,"134":1,"135":1,"136":1,"137":1,"163":5,"164":9,"165":1,"199":2,"244":2,"245":2,"268":1,"278":2,"297":1}}],["future",{"2":{"268":1}}],["furnished",{"2":{"213":1}}],["func=none",{"2":{"150":1}}],["func=lambda",{"2":{"72":1,"73":2,"74":2,"75":1,"278":1}}],["funcs",{"0":{"40":2,"81":1,"82":1,"91":1},"2":{"39":6,"40":4,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2,"64":1,"90":6,"91":2,"92":1}}],["func",{"0":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":4,"23":3,"24":3,"25":3,"26":4,"27":3,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"39":1,"40":3,"41":4,"42":4,"43":4,"44":4,"45":4,"46":4,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"62":1,"63":1,"64":3,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":3,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":2,"127":1,"128":1,"129":1,"130":1,"132":1,"133":2,"134":1,"135":1,"136":1,"137":1,"138":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":4,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":2},"2":{"22":7,"23":6,"24":6,"25":6,"26":7,"27":6,"34":2,"37":2,"39":6,"40":8,"41":8,"42":8,"43":8,"44":8,"45":8,"46":8,"55":2,"58":2,"60":2,"64":20,"81":1,"82":1,"90":8,"91":2,"126":1,"133":3,"143":2,"150":7,"267":2,"271":4,"290":1}}],["function实现语法高亮",{"2":{"293":1}}],["functions",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["function",{"2":{"11":2,"278":1,"288":1,"290":1,"291":2,"305":3}}],["full",{"2":{"6":1,"278":1}}],["familiar",{"2":{"283":2}}],["failed",{"2":{"6":2,"163":1}}],["faq",{"0":{"5":1},"1":{"6":1,"7":1}}],["false",{"0":{"108":1,"109":1,"110":1,"255":1,"256":1},"2":{"2":4,"60":2,"84":2,"267":1}}],["follow",{"2":{"286":4}}],["following",{"2":{"2":1,"213":1,"283":1,"286":2}}],["folder",{"2":{"189":1}}],["found",{"2":{"61":1,"69":1,"108":1,"109":1,"128":1,"130":1,"134":1,"136":1}}],["fork",{"2":{"283":1}}],["formatting",{"2":{"284":1}}],["format=get",{"2":{"159":1}}],["formats",{"2":{"109":1}}],["format",{"0":{"158":1,"165":1},"2":{"108":1,"158":3,"159":1,"163":2,"165":1,"286":1}}],["for",{"0":{"12":1},"2":{"1":1,"3":2,"6":2,"18":1,"30":1,"40":1,"60":1,"70":1,"91":1,"104":2,"108":1,"109":2,"116":1,"125":1,"127":1,"129":1,"135":1,"137":1,"150":1,"164":2,"193":2,"199":1,"204":1,"213":2,"254":1,"256":1,"268":2,"277":1,"278":1,"284":1,"286":5,"296":1}}],["fonts",{"2":{"1":1}}],["finally",{"0":{"287":1}}],["field",{"2":{"286":3}}],["fields",{"2":{"0":1,"3":2}}],["fixing",{"2":{"286":2}}],["fitness",{"2":{"213":1}}],["filter=lambda",{"2":{"297":1}}],["filter",{"0":{"56":1,"57":1,"58":1,"64":2,"142":1,"150":2},"2":{"58":2,"64":8,"72":1,"73":2,"74":2,"75":1,"150":5,"278":1}}],["file",{"0":{"105":1,"106":1,"107":1,"150":1},"2":{"3":1,"31":1,"105":4,"106":4,"107":4,"108":12,"109":3,"113":2,"114":2,"115":2,"120":1,"150":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1,"285":1,"297":3}}],["filesystemeventhandler",{"0":{"144":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":1}}],["filesystemevent",{"2":{"141":1,"142":1,"150":1,"297":2}}],["files",{"0":{"108":2},"2":{"0":4,"108":3,"109":1,"110":1,"213":1}}],["fill",{"2":{"1":1,"3":1,"286":1}}],["first",{"2":{"0":1,"6":1,"283":1}}],["b包也定义了一个index",{"2":{"302":1}}],["bilingual",{"2":{"286":1}}],["bind",{"2":{"159":1,"312":1}}],["binding",{"2":{"1":1}}],["bin",{"2":{"9":2}}],["brief",{"2":{"286":1}}],["branch",{"2":{"283":4}}],["break",{"2":{"254":1}}],["browser",{"2":{"6":1}}],["black",{"2":{"284":1}}],["block",{"0":{"202":1,"255":1,"256":1},"2":{"202":4,"255":2,"256":2}}],["blue>",{"2":{"159":1}}],["b",{"2":{"104":1,"270":2,"314":1}}],["bool=false",{"2":{"108":1,"109":1,"110":1,"255":1,"256":1}}],["bool=true",{"2":{"87":1,"150":1,"164":1}}],["bool",{"0":{"60":1,"87":1,"108":1,"109":1,"110":1,"130":1,"150":1,"164":1,"202":1,"241":1,"255":1,"256":1,"263":1,"264":1,"265":1,"267":1},"2":{"56":1,"57":1,"60":1,"130":1,"142":1,"202":1,"258":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":2}}],["both",{"2":{"285":1}}],["bot",{"0":{"13":1,"28":1,"31":1,"196":1,"273":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":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},"2":{"1":1,"2":1,"10":1,"11":1,"15":2,"28":4,"29":1,"30":4,"152":2,"196":3,"197":2,"273":3,"274":1,"275":1,"278":4,"285":2,"289":1,"297":2,"305":1,"313":3,"314":1}}],["bugs",{"2":{"286":2}}],["bug",{"2":{"286":2}}],["business",{"2":{"285":1}}],["built",{"2":{"189":2,"285":1}}],["build",{"2":{"10":1}}],["but",{"2":{"3":1,"213":1,"278":1,"286":1}}],["based",{"2":{"273":1}}],["baseseg",{"0":{"206":1,"209":1,"211":1},"1":{"207":1,"208":1,"210":1,"212":1}}],["basemodel",{"0":{"174":1,"182":1,"206":1,"221":1,"227":1,"233":1,"237":1,"243":1},"1":{"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"207":1,"208":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1}}],["baseexception",{"0":{"154":1}}],["bashdocker",{"2":{"10":1}}],["bash",{"2":{"9":1}}],["basically",{"2":{"3":1}}],["basic",{"0":{"1":1},"2":{"283":2}}],["better",{"2":{"287":1}}],["between",{"2":{"6":1}}],["best",{"0":{"272":1},"1":{"273":1,"274":1,"275":1}}],["before",{"0":{"22":1,"25":1,"26":1,"41":1,"43":1,"45":1,"47":1,"49":1,"51":1},"2":{"22":2,"25":2,"26":2,"39":3,"41":2,"43":2,"45":2,"47":3,"49":3,"51":3}}],["be",{"2":{"3":1,"6":1,"11":1,"30":1,"61":1,"64":1,"69":1,"145":1,"213":2,"278":1,"286":2}}],["by",{"2":{"3":1,"4":1,"6":1,"278":1,"284":1}}],["14s",{"2":{"313":2}}],["1h",{"2":{"313":2}}],["1d",{"2":{"313":2}}],["19",{"2":{"194":1,"200":1,"253":1,"257":1}}],["1919810",{"2":{"1":1}}],["1145141919810",{"2":{"305":1}}],["11",{"2":{"192":1}}],["10",{"2":{"156":1,"305":1}}],["10+",{"2":{"9":1,"11":1}}],["18",{"2":{"151":1}}],["12",{"2":{"120":1,"157":1}}],["127",{"2":{"1":1,"3":1}}],["1gb",{"2":{"11":2}}],["1vcpu",{"2":{"11":1}}],["1",{"0":{"216":1},"2":{"1":1,"2":1,"3":1,"17":2,"18":2,"64":1,"73":2,"74":2,"75":1,"92":2,"99":3,"100":2,"101":1,"102":1,"104":1,"144":1,"145":1,"163":4,"270":2,"296":1,"302":2}}],["03",{"2":{"278":2}}],["0000",{"2":{"278":3}}],["00",{"2":{"278":18}}],["02",{"2":{"167":1,"192":1}}],["04",{"2":{"151":1}}],["04+",{"2":{"11":1}}],["0",{"0":{"17":1,"215":1,"255":1,"256":1},"2":{"1":2,"3":2,"15":1,"17":2,"39":1,"72":1,"73":2,"74":2,"75":1,"92":1,"98":2,"99":2,"100":2,"101":2,"102":1,"202":1,"291":1,"296":2,"302":2}}],["html中用",{"2":{"302":1}}],["html",{"2":{"302":1}}],["html文件会被覆盖",{"2":{"302":1}}],["html文件",{"2":{"302":2}}],["https",{"2":{"9":1}}],["has",{"2":{"286":1}}],["hash",{"0":{"183":1},"2":{"183":2}}],["harmless",{"2":{"286":1}}],["handle",{"0":{"203":1},"2":{"190":1,"191":1,"203":1}}],["handlers",{"2":{"202":1,"203":1,"204":1}}],["handler",{"0":{"199":1,"260":1},"2":{"150":3,"199":1,"203":4,"204":2,"260":3,"261":4,"262":4,"263":2}}],["have",{"2":{"3":1,"7":1,"10":1,"11":1}}],["hints",{"2":{"286":1}}],["hint",{"2":{"60":1}}],["holders",{"2":{"213":1}}],["homepage",{"0":{"180":1}}],["how",{"0":{"283":1},"1":{"284":1},"2":{"6":2}}],["host",{"2":{"1":1}}],["help",{"2":{"307":1,"308":1}}],["hello",{"2":{"289":5,"305":1}}],["hereby",{"2":{"213":1}}],["here",{"2":{"3":2}}],["header",{"2":{"1":1}}],["echo",{"2":{"289":3}}],["easy",{"2":{"286":1}}],["each",{"2":{"286":2}}],["editing",{"2":{"286":1}}],["etc",{"2":{"286":1}}],["e",{"2":{"87":2,"163":1,"165":1,"268":2}}],["emoji",{"2":{"286":1}}],["email",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["empty",{"0":{"255":1,"256":1,"264":1},"2":{"1":1,"163":1,"164":1,"264":1}}],["else",{"2":{"17":1,"18":1,"28":1,"40":1,"64":2,"69":1,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"90":2,"105":1,"106":1,"107":1,"158":1,"159":7,"163":2,"244":1,"254":1,"268":1,"270":1}}],["elif",{"2":{"17":2,"60":1,"64":1,"108":4,"163":2,"164":1,"244":1,"245":1}}],["event装饰器监听文件系统事件",{"2":{"297":1}}],["events",{"2":{"297":1}}],["eventhandler",{"0":{"203":2},"2":{"202":1,"203":4}}],["event",{"0":{"76":1,"77":1,"145":1,"146":1,"147":1,"148":1,"149":2,"150":2,"191":1,"194":1,"204":1,"263":1,"264":1,"265":1},"1":{"77":1,"78":2,"195":1,"196":1,"197":1},"2":{"15":4,"21":1,"79":1,"145":1,"146":2,"147":2,"148":2,"149":3,"150":8,"191":3,"194":1,"197":2,"204":4,"213":1,"256":2,"261":3,"262":3,"263":2,"264":1,"265":2,"268":2,"286":1,"297":8}}],["every",{"2":{"1":1}}],["errors",{"2":{"6":1}}],["error",{"0":{"87":1},"2":{"6":1,"87":3,"159":1,"268":1}}],["express",{"2":{"213":1}}],["extra",{"0":{"181":1}}],["extensions",{"2":{"297":2}}],["extend",{"2":{"152":1}}],["external",{"2":{"1":1}}],["exclude",{"2":{"297":2}}],["exc",{"2":{"163":1,"204":1}}],["exception模块包含了liteyuki运行中的所有错误",{"2":{"153":1}}],["exception",{"0":{"153":1},"1":{"154":1},"2":{"163":1,"204":1,"268":2}}],["except",{"2":{"16":1,"87":1,"163":1,"204":1,"268":2}}],["executor",{"2":{"63":1}}],["executable",{"2":{"6":1,"11":1,"17":3}}],["exist",{"2":{"164":1}}],["exists",{"2":{"60":2,"69":1,"108":1,"109":1,"164":2}}],["exit",{"2":{"17":1}}],["example",{"0":{"3":1,"278":1},"2":{"6":2}}],["enclosed",{"2":{"286":1}}],["encoding=",{"2":{"105":1,"106":1,"107":1}}],["english",{"2":{"285":1}}],["en",{"2":{"285":1}}],["entry",{"2":{"285":1}}],["enter",{"2":{"6":1}}],["end",{"2":{"283":1,"290":1}}],["endswith",{"2":{"108":3,"109":1,"164":1,"297":1}}],["enumerate",{"2":{"254":1}}],["enum",{"0":{"168":1,"214":1},"1":{"169":1,"170":1,"171":1,"172":1,"173":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1}}],["environ",{"2":{"116":1}}],["environment",{"2":{"9":6}}],["environments",{"2":{"3":1,"6":1,"11":1}}],["env",{"0":{"116":1},"2":{"116":1}}],["enforcing",{"2":{"60":1}}],["ensure",{"2":{"1":1,"268":1,"283":1,"286":7}}],["enable",{"2":{"1":1,"284":1,"305":2,"306":1,"307":2,"308":2}}],["mcfunction",{"2":{"289":2}}],["mix",{"2":{"286":1}}],["mit",{"2":{"213":1}}],["minimum",{"2":{"11":1}}],["msg",{"2":{"199":3,"305":1}}],["much",{"2":{"286":3}}],["mute",{"0":{"241":1}}],["must",{"2":{"61":1,"69":1,"145":1}}],["multiple",{"2":{"0":1,"11":1,"286":1}}],["m",{"2":{"9":2,"11":1,"165":1,"254":2,"314":1}}],["mypy",{"2":{"284":1}}],["my",{"2":{"6":1}}],["member",{"0":{"237":1,"251":2,"252":1},"1":{"238":1,"239":1,"240":1,"241":1,"242":1},"2":{"305":1}}],["memory",{"0":{"97":1},"2":{"11":1,"84":3,"98":1,"99":3,"100":3,"101":3,"102":2,"126":1,"277":1,"281":3}}],["merchantability",{"2":{"213":1}}],["merge",{"0":{"117":1},"2":{"0":1,"117":1,"213":1,"283":1}}],["meta",{"2":{"163":4,"296":1}}],["metadata",{"0":{"188":1},"2":{"163":13}}],["methods",{"2":{"3":1}}],["messages",{"2":{"277":2}}],["message=",{"2":{"197":1,"305":1}}],["message=message",{"2":{"197":1}}],["messageevent",{"0":{"191":1,"195":1,"196":1,"204":1,"263":1,"264":1,"265":1},"1":{"196":1,"197":1},"2":{"191":1,"196":1,"197":1,"204":1,"256":1,"258":1,"261":1,"262":1,"263":1,"264":1,"265":1}}],["message",{"0":{"196":3,"197":1,"199":1,"205":1,"255":1},"1":{"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1},"2":{"4":1,"191":1,"196":9,"197":5,"199":1,"255":1,"256":2,"286":5,"313":1,"314":1}}],["make",{"2":{"287":1}}],["mark",{"2":{"286":1}}],["markdown",{"2":{"283":1,"286":1}}],["marsho",{"2":{"273":1}}],["map",{"2":{"275":1}}],["matcher",{"0":{"200":1,"201":1,"254":3,"255":1,"256":1},"1":{"201":1,"202":2,"203":2,"204":2},"2":{"200":1,"254":9,"255":6,"256":1}}],["match",{"2":{"165":1}}],["maintainer",{"2":{"283":1}}],["mainprocess",{"2":{"277":1}}],["main",{"0":{"81":1},"2":{"6":1,"9":1,"28":1,"60":2,"64":4,"69":1,"71":1,"72":1,"84":1,"85":1,"86":1,"87":1,"88":1,"90":5,"91":1,"92":1,"277":1,"278":6,"283":1,"285":1,"300":1}}],["management",{"2":{"275":1}}],["manager",{"0":{"120":1,"166":1},"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,"137":1,"138":1},"2":{"15":1,"16":1,"17":1,"18":1,"21":1,"120":1,"166":1}}],["many",{"2":{"6":1}}],["manually",{"2":{"2":1}}],["may",{"2":{"3":1}}],["moved",{"0":{"148":1},"2":{"148":1}}],["more",{"2":{"2":1,"11":1,"284":1}}],["moduletype",{"0":{"186":1}}],["module=module",{"2":{"163":1}}],["module",{"0":{"13":1,"31":1,"53":1,"76":1,"79":1,"80":1,"103":1,"119":1,"120":1,"139":1,"140":1,"151":1,"152":1,"153":1,"155":1,"157":1,"160":1,"162":1,"163":1,"166":1,"167":1,"171":2,"186":1,"187":1,"189":1,"190":1,"192":1,"194":1,"198":1,"200":1,"205":1,"213":1,"253":1,"257":1,"266":1,"270":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":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,"54":1,"55":1,"56":1,"57":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,"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,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":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,"137":1,"138":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"154":1,"156":1,"158":1,"159":1,"161":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,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"191":1,"193":1,"195":1,"196":1,"197":1,"199":1,"201":1,"202":1,"203":1,"204":1,"206":1,"207":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,"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,"251":1,"252":1,"254":1,"255":1,"256":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1},"2":{"152":3,"155":1,"163":26,"164":9,"165":1,"183":1,"189":1,"270":1}}],["modified",{"0":{"145":1},"2":{"10":1,"145":2,"146":1,"147":1,"148":1,"149":1,"150":4}}],["modify",{"2":{"0":2,"213":1}}],["modes",{"2":{"278":1}}],["models",{"0":{"213":1},"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,"251":1,"252":1}}],["model",{"0":{"167":1,"184":1},"1":{"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1},"2":{"167":1,"273":1}}],["mode为true",{"2":{"140":1}}],["mode",{"2":{"2":5,"6":3,"278":5,"284":2,"305":2,"306":1}}],["most",{"2":{"0":1}}],["lyf结尾",{"2":{"289":1}}],["lyfunction语法",{"2":{"305":1}}],["lyfunction",{"2":{"289":1}}],["lt",{"2":{"286":2,"304":1,"305":7,"307":10,"309":2}}],["lead",{"2":{"286":1}}],["least",{"2":{"11":2}}],["len",{"2":{"116":1}}],["level=level",{"2":{"159":1}}],["level",{"0":{"158":1,"235":1},"2":{"1":3,"158":3,"159":10}}],["last",{"2":{"143":4}}],["lambda",{"2":{"98":1,"99":2,"100":2,"101":2,"102":1}}],["latest",{"2":{"10":1}}],["language",{"2":{"2":2,"283":1,"286":3}}],["location",{"2":{"275":1}}],["local",{"2":{"1":1}}],["locks",{"2":{"87":1}}],["lock",{"0":{"96":2},"2":{"85":3,"86":3,"87":3,"94":1}}],["loop",{"0":{"92":1},"2":{"15":4,"60":1,"63":3,"84":2,"92":2,"268":10}}],["logic",{"2":{"285":1}}],["log0000",{"2":{"278":1}}],["logger",{"0":{"20":1},"2":{"15":1,"16":2,"17":1,"19":1,"20":1,"30":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"105":1,"106":1,"107":1,"108":2,"109":1,"125":1,"128":2,"130":1,"135":1,"137":1,"159":11,"163":3,"164":3,"199":2,"268":1,"278":3,"297":2}}],["logo",{"2":{"15":1}}],["logs",{"2":{"2":1}}],["log",{"0":{"157":1,"159":1},"1":{"158":1,"159":1},"2":{"1":4,"6":3,"20":1,"157":1,"159":3,"278":1}}],["loaded",{"0":{"161":1},"2":{"161":1}}],["loader",{"0":{"111":1,"113":1,"114":1,"115":1,"116":1,"117":3,"192":1,"193":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"193":1},"2":{"15":1,"113":1,"114":1,"115":1,"116":1,"117":4,"193":1}}],["loading",{"2":{"105":1,"106":1,"107":1}}],["load",{"0":{"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"162":1,"163":1,"164":1},"1":{"163":1,"164":1,"165":1},"2":{"0":1,"2":2,"15":1,"105":3,"106":3,"107":3,"108":4,"109":2,"110":3,"113":2,"114":2,"115":2,"116":1,"152":2,"162":1,"163":3,"164":2,"193":2,"307":1,"308":1}}],["links",{"2":{"286":2}}],["linux",{"2":{"9":2,"11":1,"17":1}}],["like",{"2":{"277":1}}],["liability",{"2":{"213":1}}],["liable",{"2":{"213":1}}],["limitation",{"2":{"213":1}}],["limited",{"2":{"4":1,"213":1}}],["license",{"2":{"213":1}}],["litedoc",{"2":{"275":1,"286":1}}],["liteecho",{"0":{"190":1,"191":1},"1":{"191":1},"2":{"190":2,"191":2,"305":1}}],["liteyukiexception",{"0":{"154":1}}],["liteyukistudio",{"2":{"9":1,"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["liteyuki",{"0":{"13":1,"31":1,"53":1,"76":1,"79":1,"80":1,"103":1,"119":1,"120":1,"139":1,"140":1,"151":1,"153":1,"155":1,"157":1,"160":1,"162":1,"166":1,"167":1,"189":1,"190":1,"192":1,"194":1,"198":1,"200":1,"205":1,"213":1,"253":1,"257":1,"266":1,"307":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":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,"54":1,"55":1,"56":1,"57":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,"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,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":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,"137":1,"138":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"154":1,"156":1,"158":1,"159":1,"161":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,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"191":1,"193":1,"195":1,"196":1,"197":1,"199":1,"201":1,"202":1,"203":1,"204":1,"206":1,"207":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,"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,"251":1,"252":1,"254":1,"255":1,"256":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"308":1},"2":{"1":6,"2":4,"3":2,"4":2,"6":3,"9":2,"10":1,"11":1,"15":2,"28":1,"152":2,"155":1,"163":5,"193":3,"273":4,"274":3,"275":6,"277":1,"278":12,"281":2,"283":4,"285":6,"286":2,"287":1,"288":1,"296":1,"297":4,"300":1,"301":1,"305":4,"306":3}}],["liteyukibot",{"0":{"14":1,"28":1},"1":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"0":5,"9":2,"10":1,"17":1,"28":2,"152":1,"273":2,"274":2,"275":2,"277":1,"285":3}}],["life",{"2":{"39":1}}],["lifespan=self",{"2":{"15":1}}],["lifespan",{"0":{"22":2,"23":1,"24":1,"25":1,"26":2,"27":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"124":2},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":2,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2},"2":{"15":3,"22":5,"23":4,"24":4,"25":4,"26":5,"27":4,"31":1,"34":2,"37":2,"39":6,"40":4,"41":4,"42":4,"43":4,"44":4,"45":4,"46":4,"124":4}}],["listen",{"2":{"277":1}}],["listening",{"2":{"1":1}}],["listdir",{"2":{"109":1,"164":2}}],["list",{"0":{"196":1,"256":1},"2":{"1":4,"39":6,"60":2,"81":1,"82":1,"196":1,"202":1,"254":3,"256":1,"305":1,"307":2,"308":1}}],["switch",{"2":{"305":2,"306":1}}],["simple",{"2":{"296":1}}],["single",{"2":{"286":1}}],["signature",{"2":{"271":2}}],["sides",{"2":{"3":1}}],["side",{"0":{"3":1}}],["src",{"2":{"193":1,"285":2,"297":5}}],["script",{"2":{"275":1}}],["scripts",{"2":{"9":2}}],["scope",{"0":{"248":1},"2":{"244":4,"245":4}}],["scene",{"0":{"227":1,"232":1,"249":2},"1":{"228":1,"229":1,"230":1,"231":1,"232":1},"2":{"244":1,"245":1}}],["scenetype",{"0":{"214":1,"229":1},"1":{"215":1,"216":1,"217":1,"218":1,"219":1,"220":1},"2":{"244":7,"245":6}}],["schedule",{"2":{"150":1}}],["shinjuku",{"2":{"311":1}}],["shellstatistic",{"2":{"313":1}}],["shellbind",{"2":{"311":1}}],["shellweather",{"2":{"311":1}}],["shellmain",{"2":{"302":1}}],["shellvar",{"2":{"290":1}}],["shellcmd",{"2":{"289":1}}],["shell",{"2":{"289":1,"291":1}}],["should",{"2":{"286":7}}],["showing",{"2":{"275":1}}],["show",{"2":{"159":8}}],["shall",{"2":{"213":2}}],["shared",{"0":{"97":1},"2":{"84":3,"98":1,"99":3,"100":3,"101":3,"102":2,"126":1,"277":1,"281":3}}],["shutdown",{"0":{"24":1,"25":1,"43":1,"44":1,"49":1,"50":1},"2":{"24":2,"25":2,"39":2,"43":2,"44":2,"49":3,"50":3}}],["syntax",{"2":{"283":1,"286":1}}],["sync",{"0":{"32":1,"35":1,"54":1,"56":1},"2":{"34":1,"37":1,"55":1,"58":1,"271":1}}],["sys",{"2":{"17":3,"159":1}}],["system",{"0":{"150":1},"2":{"11":2,"17":4,"150":1,"297":2}}],["snowykami",{"2":{"31":2,"120":2,"151":2,"157":2,"162":2,"166":2,"167":2,"190":2,"192":2,"194":2,"200":2,"253":2,"257":2}}],["sleep",{"2":{"17":1,"278":1,"290":1,"291":1}}],["style",{"2":{"286":2,"302":2}}],["stem",{"2":{"270":2}}],["stdout",{"2":{"159":1}}],["store",{"2":{"84":1,"85":1,"86":1,"87":2,"88":1,"189":1}}],["storage",{"0":{"80":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},"2":{"79":2,"281":2}}],["stopped",{"2":{"16":1}}],["stopping",{"2":{"16":1}}],["stop",{"0":{"21":1},"2":{"15":1,"16":1,"21":2}}],["standardization",{"0":{"286":1}}],["statistic",{"2":{"314":1}}],["statistics",{"0":{"313":1},"1":{"314":1}}],["staticmethod",{"2":{"39":1,"40":1,"90":1,"91":1}}],["status",{"2":{"305":1,"306":1}}],["stat",{"2":{"275":1,"314":1}}],["star",{"2":{"275":1}}],["starmap",{"2":{"275":1}}],["startup",{"2":{"278":2}}],["startswith",{"2":{"116":1,"190":1,"191":1}}],["started",{"2":{"6":1}}],["start",{"0":{"22":1,"23":1,"41":1,"42":1,"47":1,"48":1,"92":1,"125":1,"134":1,"135":1},"2":{"1":2,"6":1,"16":1,"17":2,"22":2,"23":2,"39":2,"41":2,"42":2,"47":3,"48":3,"92":2,"125":2,"134":2,"135":2,"269":1,"278":1}}],["starting",{"2":{"0":1,"125":1,"135":1}}],["strings",{"2":{"286":2}}],["strip",{"2":{"191":2}}],["str=",{"2":{"116":1}}],["structure",{"0":{"285":1},"2":{"61":1}}],["str",{"0":{"18":1,"29":1,"30":2,"60":1,"69":1,"70":1,"71":1,"72":1,"73":2,"74":2,"75":2,"78":2,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"99":2,"100":2,"101":2,"102":2,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":1,"113":1,"114":1,"115":1,"116":1,"118":1,"122":2,"126":1,"128":1,"130":1,"133":1,"134":1,"136":1,"138":1,"150":1,"152":1,"158":2,"161":1,"163":1,"164":1,"165":2,"175":1,"176":1,"177":1,"179":1,"180":1,"181":1,"185":1,"187":1,"196":9,"197":2,"207":1,"208":1,"210":1,"212":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"230":1,"231":1,"234":1,"236":1,"239":1,"246":1,"247":1,"248":1,"256":1,"270":1},"2":{"15":1,"18":2,"29":2,"30":3,"35":1,"36":1,"60":2,"68":2,"69":2,"70":2,"71":2,"72":3,"73":2,"74":2,"75":2,"78":2,"81":1,"82":1,"84":5,"85":1,"86":1,"87":1,"88":3,"89":1,"90":1,"91":1,"99":2,"100":2,"101":2,"102":2,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":1,"113":1,"114":1,"115":1,"118":1,"122":2,"124":2,"126":1,"128":1,"130":1,"132":1,"133":1,"134":1,"136":1,"138":1,"150":1,"152":1,"158":2,"161":2,"163":1,"164":1,"165":3,"196":9,"197":2,"256":1,"265":1,"270":2,"278":1}}],["search",{"2":{"307":1,"308":1}}],["see",{"2":{"284":1}}],["segment",{"0":{"207":1}}],["segments",{"0":{"205":1},"1":{"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1}}],["sell",{"2":{"213":1}}],["select",{"2":{"199":1}}],["self",{"0":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"39":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,"60":1,"61":1,"62":1,"63":1,"64":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"92":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"145":1,"146":1,"147":1,"148":1,"149":1,"183":1,"196":1,"197":1,"202":1,"203":1,"204":1,"244":1,"245":1,"246":1,"260":1,"261":1,"262":1,"263":1},"2":{"15":13,"16":4,"17":4,"18":2,"19":2,"20":1,"21":3,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"39":8,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":3,"48":3,"49":3,"50":3,"51":3,"52":3,"60":14,"61":6,"62":3,"63":2,"64":3,"78":3,"84":7,"85":3,"86":3,"87":4,"88":3,"89":2,"90":1,"92":4,"112":2,"113":3,"114":3,"115":3,"116":3,"117":3,"118":2,"122":6,"124":4,"125":2,"126":2,"127":2,"128":3,"129":3,"130":3,"132":2,"133":2,"134":3,"135":2,"136":3,"137":2,"138":2,"145":1,"146":2,"147":2,"148":2,"149":2,"183":2,"196":10,"197":3,"202":5,"203":2,"204":3,"244":7,"245":8,"260":2,"261":2,"262":2,"263":3}}],["session",{"0":{"194":1,"196":2,"198":1,"200":1,"205":1,"213":1,"243":1,"244":1,"253":1,"257":1},"1":{"195":1,"196":1,"197":1,"199":1,"201":1,"202":1,"203":1,"204":1,"206":1,"207":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,"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":2,"245":2,"246":2,"247":2,"248":2,"249":2,"250":2,"251":2,"252":2,"254":1,"255":1,"256":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1},"2":{"196":6,"197":5,"244":1}}],["service",{"0":{"170":2},"2":{"165":1,"296":1}}],["server",{"2":{"1":1,"3":1,"11":1}}],["sequence",{"0":{"40":1},"2":{"40":2}}],["send",{"0":{"61":1},"2":{"18":2,"60":2,"61":4,"69":1,"71":1,"72":1,"74":1,"75":1,"85":1,"86":1,"87":1,"88":1,"89":1,"92":1,"99":1,"102":1,"197":1,"277":1,"278":3,"305":1}}],["setting",{"2":{"284":1}}],["set",{"0":{"69":1,"70":1,"73":1,"85":1,"100":1,"164":1},"2":{"15":1,"21":1,"69":2,"70":2,"72":1,"73":3,"85":2,"99":1,"100":3,"164":2,"268":1,"281":1,"305":2,"306":1,"309":2}}],["s",{"2":{"11":1}}],["sparkles",{"2":{"286":2}}],["space",{"2":{"11":1}}],["split",{"2":{"163":4}}],["specified",{"2":{"163":1}}],["specific",{"2":{"6":1,"11":1}}],["specify",{"2":{"6":1}}],["so",{"2":{"213":1,"285":1}}],["software",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":9,"253":1,"257":1}}],["source",{"2":{"9":2,"11":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"275":1,"285":1,"287":1}}],["some",{"2":{"1":1,"6":2}}],["summary",{"2":{"286":1}}],["such",{"2":{"284":1,"286":2}}],["succeeded",{"2":{"163":1}}],["success",{"2":{"128":1,"159":1,"163":2}}],["suggestions",{"0":{"284":1}}],["su",{"0":{"265":1},"2":{"190":1,"191":1,"265":1}}],["substantial",{"2":{"213":1}}],["subscribe",{"2":{"90":1}}],["subscriber",{"0":{"81":1,"82":1,"90":1,"91":1},"2":{"90":7,"91":2,"92":1}}],["subject",{"2":{"213":1}}],["sublicense",{"2":{"213":1}}],["subprocess",{"0":{"138":1},"2":{"132":1,"133":1,"138":1}}],["subprocessmanager",{"0":{"131":1},"1":{"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1}}],["sub",{"0":{"82":1},"2":{"28":1,"60":1,"64":1,"84":1,"90":4,"92":1}}],["submitted",{"2":{"286":1}}],["submit",{"2":{"7":1,"283":2}}],["support",{"2":{"274":2,"286":1}}],["supported",{"2":{"4":1,"6":1,"109":1}}],["supports",{"2":{"0":1}}],["superuser",{"2":{"1":1}}],["superusers",{"2":{"0":1,"1":1,"265":1}}],["same",{"2":{"3":2}}],["safe",{"2":{"2":2,"6":3,"105":1,"113":1}}],["num为每页显示数量",{"2":{"307":2}}],["num",{"2":{"307":2}}],["number",{"2":{"10":2}}],["nliteyuki",{"2":{"289":1}}],["name>",{"2":{"290":2}}],["name=module",{"2":{"163":3}}],["name=f",{"2":{"126":2}}],["name=",{"2":{"65":1,"66":1,"84":3,"296":1}}],["name",{"0":{"18":1,"60":1,"69":1,"71":1,"78":1,"126":1,"128":1,"130":1,"133":1,"134":1,"136":1,"138":1,"165":2,"175":1,"185":1,"187":1,"223":1,"230":1,"236":1,"270":1},"2":{"18":6,"60":9,"69":7,"70":2,"71":5,"73":3,"74":3,"78":3,"125":3,"126":5,"127":1,"128":6,"129":2,"130":5,"133":4,"134":5,"135":2,"136":5,"137":2,"138":3,"163":20,"164":9,"165":6,"183":1,"270":1,"278":2,"305":4,"307":8}}],["nick",{"0":{"224":1}}],["nickname",{"0":{"239":1},"2":{"0":1,"1":2}}],["nightly",{"2":{"10":1}}],["npm",{"2":{"6":1,"307":7,"308":1}}],["nesting",{"2":{"286":1}}],["new",{"2":{"15":1,"104":3,"268":1,"283":1,"286":2}}],["necessary",{"2":{"6":1}}],["needs",{"2":{"278":1}}],["need",{"2":{"0":1,"2":1,"283":1}}],["non",{"2":{"287":1}}],["noninfringement",{"2":{"213":1}}],["nonlocal",{"2":{"143":1}}],["nonedog",{"2":{"296":1}}],["none",{"0":{"15":1,"18":1,"29":1,"30":1,"39":1,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"60":1,"64":1,"85":1,"86":1,"87":1,"89":1,"95":1,"118":1,"126":1,"138":1,"150":1,"188":1,"196":2,"204":1,"223":2,"224":2,"225":2,"226":2,"230":2,"231":2,"232":2,"235":2,"236":2,"239":2,"240":2,"241":2,"242":2,"251":2,"252":2},"2":{"15":1,"18":2,"28":1,"29":1,"30":1,"39":1,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"60":3,"61":1,"63":1,"64":2,"85":1,"87":1,"89":1,"94":2,"105":1,"106":1,"107":1,"126":1,"138":2,"141":1,"143":1,"150":1,"163":4,"164":1,"196":1,"204":1,"258":2,"263":1,"267":1}}],["nonebot2",{"2":{"4":2}}],["nonebot",{"0":{"3":1},"2":{"1":2,"2":2,"3":1,"6":1,"266":1,"274":6,"278":3,"285":3,"296":1,"297":4,"300":1}}],["nohup",{"2":{"17":2,"290":1,"291":1}}],["node",{"2":{"11":1}}],["notice",{"2":{"213":2}}],["notimplementederror",{"2":{"145":1}}],["not",{"2":{"1":1,"2":1,"4":1,"11":2,"18":1,"28":1,"60":1,"61":2,"64":4,"69":1,"87":1,"90":3,"92":1,"105":1,"106":1,"107":1,"108":3,"109":3,"128":2,"130":2,"134":2,"136":2,"150":2,"163":1,"164":8,"204":1,"213":1,"286":3,"297":2}}],["normal>",{"2":{"159":1}}],["normal",{"0":{"9":1},"2":{"1":1}}],["no",{"0":{"108":1,"109":1,"110":1,"175":1,"185":1,"186":1,"187":1,"208":1,"210":1,"212":1,"222":1,"228":1,"229":1,"234":1,"238":1,"246":1,"247":1,"248":1,"249":1,"250":1},"2":{"1":1,"67":1,"68":1,"108":3,"109":3,"110":4,"213":1,"286":1}}],["image",{"0":{"211":1},"1":{"212":1},"2":{"305":2,"306":1}}],["impossible",{"2":{"277":1}}],["import",{"2":{"98":1,"163":1,"278":5,"281":1,"296":2,"297":3,"300":1}}],["implied",{"2":{"213":1}}],["implement",{"2":{"278":1}}],["implemented",{"2":{"145":1,"278":1}}],["implementation",{"0":{"3":1},"2":{"3":1}}],["ignore",{"0":{"87":1,"164":1},"2":{"87":3,"164":5}}],["id仅超级用户可用",{"2":{"305":1}}],["id=user",{"2":{"291":2}}],["id=1234567",{"2":{"305":2}}],["id=123456",{"2":{"291":1}}],["id=self",{"2":{"197":3}}],["id",{"0":{"196":3,"222":1,"228":1,"234":1,"244":1,"245":1,"246":1},"2":{"64":5,"196":9,"197":3,"244":3,"245":4,"265":1,"291":2,"305":2,"307":1,"313":4}}],["ids",{"2":{"60":2,"64":2}}],["icu",{"2":{"10":1}}],["icon=f",{"2":{"159":7}}],["icon",{"2":{"1":2,"159":9}}],["i",{"0":{"199":1},"2":{"6":1,"15":1,"199":3,"254":2,"278":6}}],["isclass",{"2":{"267":1}}],["iscoroutinefunction",{"2":{"267":2}}],["isroutine",{"2":{"267":1}}],["isfile",{"2":{"164":1,"297":1}}],["isdir",{"2":{"164":2}}],["isinstance",{"2":{"69":1,"104":1,"163":1,"278":1}}],["issue",{"2":{"7":1}}],["is",{"0":{"130":1,"265":1,"267":1},"2":{"1":3,"2":1,"3":3,"4":1,"9":1,"11":1,"15":1,"16":2,"18":1,"28":2,"40":1,"60":6,"61":1,"64":5,"69":1,"71":1,"72":1,"84":2,"85":1,"86":1,"87":1,"88":1,"90":3,"92":1,"94":2,"105":1,"106":1,"107":1,"126":1,"128":1,"130":2,"150":1,"155":1,"163":1,"164":2,"189":1,"196":1,"213":4,"263":1,"265":1,"267":1,"268":1,"277":2,"278":3,"285":3,"286":12,"287":1}}],["if",{"2":{"1":2,"2":4,"3":1,"6":1,"7":1,"10":2,"11":2,"17":2,"18":1,"28":2,"30":2,"40":1,"60":5,"61":3,"62":1,"64":6,"69":3,"71":1,"72":1,"85":1,"86":1,"87":3,"88":1,"90":5,"92":2,"94":2,"104":1,"105":1,"106":1,"107":1,"108":2,"109":3,"116":1,"126":1,"128":2,"130":1,"134":1,"136":1,"143":1,"150":1,"158":1,"159":7,"163":2,"164":9,"196":1,"197":1,"204":1,"244":1,"245":1,"254":1,"263":1,"267":2,"268":1,"270":1,"283":3,"286":2}}],["index",{"2":{"302":1}}],["inaccessible",{"2":{"286":1}}],["inspect",{"2":{"267":4,"271":1}}],["insert",{"2":{"254":1}}],["instances",{"2":{"275":1}}],["instance",{"0":{"94":1,"95":1},"2":{"15":2,"28":4,"61":1,"69":1,"94":5,"97":1}}],["installed",{"2":{"11":1}}],["installation",{"0":{"9":1},"2":{"6":2}}],["install",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1},"2":{"6":3,"9":3,"11":2,"304":1,"307":1,"308":1}}],["instead",{"2":{"6":1,"10":1,"30":1}}],["invalid",{"2":{"244":1}}],["invalidgitrepositoryerror",{"2":{"6":1}}],["included",{"2":{"213":1,"285":1}}],["including",{"2":{"11":1,"213":2}}],["inner",{"2":{"60":2}}],["initialized",{"2":{"28":1}}],["initializing",{"2":{"15":1}}],["init",{"0":{"15":1,"19":1,"20":1,"39":1,"60":1,"78":1,"84":1,"112":1,"122":1,"124":1,"132":1,"159":1,"196":1,"202":1,"260":1},"2":{"15":2,"19":2,"20":2,"39":1,"60":1,"78":1,"84":1,"112":1,"122":1,"124":1,"132":1,"159":1,"164":2,"192":1,"196":1,"202":1,"260":1,"270":1,"296":3}}],["introducing",{"2":{"286":1}}],["introduction",{"0":{"277":1}}],["into",{"2":{"283":1}}],["inter",{"2":{"277":1}}],["interface",{"2":{"275":1}}],["interpreter",{"2":{"6":1}}],["interpreters",{"2":{"6":2}}],["int=0",{"2":{"17":1,"255":1,"256":1}}],["int",{"0":{"17":1,"202":1,"214":1,"235":1,"255":1,"256":1},"1":{"215":1,"216":1,"217":1,"218":1,"219":1,"220":1},"2":{"17":1,"39":1,"60":2,"202":1}}],["intact",{"2":{"6":1}}],["information",{"2":{"3":1,"284":1}}],["info",{"2":{"1":1,"15":1,"16":2,"17":1,"159":1,"199":1,"278":2}}],["in",{"0":{"110":1,"269":1},"2":{"0":3,"1":1,"2":1,"3":2,"6":5,"18":1,"28":1,"30":3,"40":1,"60":2,"63":1,"64":1,"69":1,"70":1,"87":1,"90":3,"91":1,"92":1,"104":2,"108":1,"109":2,"110":1,"116":1,"125":1,"127":1,"128":1,"129":1,"130":1,"134":1,"135":1,"136":1,"137":1,"150":1,"152":1,"164":2,"189":2,"193":2,"199":1,"204":1,"213":6,"244":1,"245":1,"254":1,"256":2,"265":1,"268":2,"269":1,"277":1,"283":5,"284":2,"285":4,"286":6,"287":1,"297":1}}],["iterable",{"0":{"199":1},"2":{"199":1}}],["items",{"2":{"0":1,"6":1,"70":1,"104":2,"116":1,"135":1,"137":1}}],["it",{"2":{"0":1,"2":2,"3":1,"9":1,"277":2}}],["rpm",{"2":{"307":5,"308":1}}],["rpc",{"2":{"79":1}}],["role",{"0":{"233":1,"240":2},"1":{"234":1,"235":1,"236":1}}],["rf",{"2":{"213":1}}],["railt",{"2":{"213":1}}],["raise",{"2":{"28":2,"60":3,"61":2,"62":1,"64":1,"69":2,"87":1,"90":1,"92":1,"134":1,"136":1,"145":1,"244":1}}],["raw",{"0":{"196":1},"2":{"191":1,"196":3,"197":1,"256":1}}],["rulehandlerfunc",{"0":{"258":1,"260":1},"2":{"260":1}}],["rule=empty",{"2":{"255":1,"256":1}}],["rule=is",{"2":{"190":1,"191":1}}],["rule",{"0":{"202":2,"255":3,"256":2,"257":1,"259":1,"261":2,"262":2,"264":1,"265":1},"1":{"258":1,"259":1,"260":2,"261":2,"262":2,"263":2,"264":1,"265":1},"2":{"190":1,"191":1,"202":5,"204":1,"255":3,"256":5,"257":1,"261":3,"262":3,"263":1,"264":3,"265":2}}],["runnable",{"2":{"286":1}}],["running",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"60":1,"63":1,"84":2,"268":2,"277":1}}],["runtimeerror",{"2":{"28":2,"61":1,"62":1,"64":1,"90":1,"92":1,"268":1}}],["run",{"0":{"10":1,"16":1,"40":1,"91":1,"152":1,"204":1,"268":1,"269":1},"2":{"0":1,"9":2,"11":1,"16":3,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"91":1,"92":1,"125":1,"152":2,"204":1,"268":3,"269":1,"300":2}}],["r>",{"2":{"163":2}}],["rights",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":1,"253":1,"257":1}}],["r",{"2":{"9":1,"11":1,"105":1,"106":1,"107":1,"113":1,"114":1,"115":1}}],["revise",{"2":{"286":1}}],["reverse",{"2":{"3":2}}],["read",{"2":{"283":2}}],["reload",{"2":{"305":1,"306":2,"307":1,"308":1}}],["reloading",{"2":{"297":1}}],["related",{"2":{"285":1,"286":1}}],["relative",{"2":{"270":1}}],["rel",{"2":{"270":5}}],["red>",{"2":{"159":2}}],["remove",{"2":{"159":1}}],["ref",{"0":{"98":1}}],["refer",{"0":{"12":1},"2":{"6":1,"286":1}}],["reference",{"2":{"3":1,"283":1}}],["resource",{"2":{"285":1}}],["resources",{"2":{"285":1,"301":1,"302":1,"306":1}}],["resolve",{"2":{"270":2}}],["restriction",{"2":{"213":1,"286":1}}],["restarting",{"2":{"17":1}}],["restart",{"0":{"17":1,"18":1,"26":1,"27":1,"45":1,"46":1,"51":1,"52":1},"2":{"0":1,"15":1,"17":3,"18":1,"26":2,"27":2,"39":2,"45":2,"46":2,"51":3,"52":3,"297":2}}],["reserved",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["return",{"2":{"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":4,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"62":2,"63":2,"64":7,"71":3,"72":3,"86":3,"88":3,"90":3,"94":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"128":1,"130":1,"138":1,"143":3,"150":4,"158":2,"161":2,"163":2,"164":1,"165":2,"183":1,"203":3,"204":1,"244":2,"245":2,"255":1,"256":2,"261":2,"262":2,"263":2,"264":1,"265":1,"267":4,"270":3,"271":3}}],["reply",{"0":{"197":1},"2":{"191":1,"197":3}}],["replace",{"2":{"10":1}}],["repository",{"2":{"283":7,"285":2,"286":1}}],["repo",{"2":{"9":1}}],["report设定为false",{"2":{"303":1}}],["report",{"2":{"1":2,"6":1,"303":1}}],["request",{"2":{"283":1}}],["requests",{"2":{"1":1}}],["required",{"2":{"60":1,"286":1}}],["requires",{"2":{"11":1}}],["requirements",{"0":{"11":1},"1":{"12":1},"2":{"9":1,"11":1}}],["receiving",{"2":{"278":1}}],["receive",{"0":{"54":1,"55":1,"62":1,"63":1,"64":1,"81":1,"82":1,"90":3,"91":1,"92":1,"196":1},"2":{"1":1,"55":2,"60":3,"62":2,"63":2,"64":4,"71":1,"72":2,"73":2,"74":2,"75":1,"81":1,"82":1,"84":2,"86":1,"88":1,"90":11,"91":2,"92":4,"98":1,"99":2,"100":2,"101":2,"102":1,"196":3,"197":3,"278":11}}],["recursive=recursive",{"2":{"150":1}}],["recursive",{"0":{"150":1},"2":{"150":2}}],["recv",{"2":{"60":2,"62":2,"71":5,"72":5,"74":3,"75":3,"86":5,"88":5,"99":3,"102":3,"199":2}}],["recommended",{"2":{"3":1,"9":1,"11":2,"286":1}}],["city",{"2":{"311":1,"312":1}}],["css相对路径引用b中的css",{"2":{"302":1}}],["css",{"2":{"301":1,"302":1}}],["cwd",{"2":{"270":1}}],["cyan>",{"2":{"159":1}}],["critical",{"2":{"159":1}}],["created",{"0":{"146":1},"2":{"146":1}}],["create",{"2":{"0":1,"9":2,"91":1,"283":2}}],["cfg",{"2":{"152":4}}],["cute",{"2":{"273":1}}],["current|bot",{"2":{"313":1}}],["current|group",{"2":{"313":1}}],["current",{"2":{"143":3,"313":2,"314":1}}],["custom",{"2":{"2":4,"273":1}}],["customize",{"2":{"2":1}}],["c",{"2":{"31":1,"104":1,"120":1,"151":1,"157":1,"162":1,"165":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":1,"253":1,"257":1,"268":4,"270":2,"314":1}}],["cmd",{"2":{"17":5,"289":2,"290":1}}],["claim",{"2":{"213":1}}],["classmethod",{"2":{"93":1,"94":1}}],["class",{"0":{"14":1,"38":1,"59":1,"77":1,"83":1,"93":1,"111":1,"121":1,"123":1,"131":1,"144":1,"154":1,"168":1,"174":1,"182":1,"195":1,"201":1,"206":1,"209":1,"211":1,"214":1,"221":1,"227":1,"233":1,"237":1,"243":1,"259":1},"1":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":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,"60":1,"61":1,"62":1,"63":1,"64":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"95":1,"96":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"145":1,"146":1,"147":1,"148":1,"149":1,"169":1,"170":1,"171":1,"172":1,"173":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"196":1,"197":1,"202":1,"203":1,"204":1,"207":1,"208":1,"210":1,"212":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"260":1,"261":1,"262":1,"263":1}}],["cls",{"0":{"94":1},"2":{"94":6}}],["close",{"2":{"268":1}}],["closed",{"2":{"60":1,"61":2,"62":2,"275":1}}],["clone",{"2":{"9":2}}],["cloning",{"2":{"6":1}}],["cpu",{"2":{"11":1,"303":1}}],["cd",{"2":{"9":1}}],["chinese",{"2":{"285":1}}],["child",{"2":{"277":1}}],["chromium",{"2":{"11":1}}],["charge",{"2":{"213":1}}],["chans",{"0":{"199":1},"2":{"199":3}}],["channel时的通道标识",{"2":{"278":1}}],["channel即可",{"2":{"278":1}}],["channel及passive",{"2":{"278":1}}],["channel函数获取通道对象",{"2":{"278":2}}],["channel=none",{"2":{"197":1}}],["channeldeliver",{"0":{"121":1},"1":{"122":1},"2":{"126":1}}],["channels",{"0":{"70":2,"72":1,"75":1},"2":{"70":4,"72":2,"74":1,"75":3}}],["channel",{"0":{"53":1,"59":1,"65":1,"66":1,"67":2,"68":2,"69":3,"70":1,"71":2,"72":1,"73":1,"74":1,"89":1,"90":1,"91":1,"122":8,"196":2,"218":1,"219":1,"220":1,"276":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":2,"61":2,"62":2,"63":2,"64":2,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"277":1,"278":1,"279":1,"280":1,"281":1},"2":{"18":2,"60":5,"61":1,"62":1,"65":3,"66":3,"67":2,"68":1,"69":19,"70":5,"71":9,"72":10,"73":11,"74":7,"75":2,"79":2,"84":4,"86":1,"88":1,"89":4,"90":8,"91":3,"92":2,"122":12,"126":12,"196":4,"197":2,"244":3,"245":3,"277":3,"278":14}}],["chan",{"0":{"199":1},"2":{"15":4,"18":4,"71":5,"72":5,"74":3,"75":3,"84":2,"85":1,"86":6,"87":1,"88":6,"89":1,"92":1,"98":1,"99":5,"100":2,"101":2,"102":4,"126":2,"199":1,"278":2}}],["changed",{"2":{"297":1}}],["change",{"2":{"9":1,"307":1,"308":1}}],["chat",{"2":{"6":1,"7":1}}],["checking",{"2":{"284":1}}],["check",{"0":{"60":1},"2":{"1":1,"60":8,"61":1}}],["cn",{"2":{"2":1}}],["copies",{"2":{"213":2}}],["copy",{"2":{"104":1,"213":2,"283":1}}],["copyright",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":3,"253":1,"257":1}}],["color",{"2":{"165":7}}],["color=",{"2":{"159":7}}],["colors=true",{"2":{"16":2,"163":3}}],["corresponding",{"2":{"286":1}}],["correct",{"2":{"286":2}}],["correctly",{"2":{"6":1,"286":1}}],["coro",{"0":{"268":1,"269":1},"2":{"268":5,"269":2}}],["coroutine",{"0":{"267":1,"268":2,"269":2,"271":1},"2":{"40":1,"57":1,"64":2,"90":1,"258":1,"267":1,"268":2,"269":3,"271":2}}],["core",{"0":{"119":1,"120":1},"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,"137":1,"138":1}}],["count",{"0":{"98":1},"2":{"15":1,"17":2}}],["code插件liteyuki",{"2":{"293":1}}],["codemodifiedhandler",{"0":{"144":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":1},"2":{"150":1}}],["code",{"2":{"11":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":4,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"283":2,"284":1,"285":1,"286":6}}],["come",{"2":{"277":1}}],["combined",{"2":{"261":2,"262":2}}],["com",{"2":{"9":1,"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["completing",{"2":{"286":1}}],["completion",{"2":{"2":2}}],["complete",{"2":{"268":2,"286":1}}],["compat",{"0":{"30":2},"2":{"30":8}}],["computer",{"2":{"6":1}}],["commit",{"2":{"286":6}}],["comment",{"2":{"286":1}}],["communicate",{"2":{"277":1}}],["communication",{"0":{"276":1},"1":{"277":1,"278":1,"279":1,"280":1,"281":1},"2":{"3":1,"277":1}}],["comm",{"0":{"53":1,"76":1,"79":1,"80":1},"1":{"54":1,"55":1,"56":1,"57":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,"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},"2":{"278":2,"281":2}}],["command>",{"2":{"290":2}}],["command",{"0":{"305":1},"1":{"306":1},"2":{"1":4}}],["conditions",{"2":{"213":1,"286":1}}],["contributions",{"2":{"287":1}}],["contract",{"2":{"213":1}}],["content",{"0":{"210":1},"2":{"285":1,"286":1}}],["continue",{"2":{"109":1,"164":3}}],["contact",{"2":{"6":1,"283":1}}],["connection",{"2":{"213":1}}],["connected",{"0":{"3":1}}],["conn",{"2":{"60":4,"61":1,"62":1}}],["confirm",{"2":{"6":1}}],["configs",{"0":{"109":1},"2":{"109":1,"110":1}}],["config=self",{"2":{"20":1}}],["configured",{"2":{"3":1}}],["configuration",{"0":{"1":1,"3":1},"2":{"0":5,"1":1,"2":2,"3":1,"6":1}}],["configurations",{"0":{"0":1,"2":1},"1":{"1":1,"2":1,"3":1,"4":1},"2":{"2":1}}],["config",{"0":{"29":1,"30":1,"103":1,"104":2,"110":1,"159":1,"184":1},"1":{"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1},"2":{"0":5,"2":2,"15":2,"20":1,"29":2,"30":6,"104":9,"105":6,"106":6,"107":6,"108":7,"109":4,"110":9,"112":1,"113":1,"114":1,"115":1,"116":1,"117":2,"118":1,"152":1,"159":4,"193":2,"284":1,"305":4,"306":1}}],["conflicts",{"2":{"6":1,"9":1,"283":1}}],["console",{"2":{"1":1,"284":1}}],["cat",{"2":{"273":1}}],["category",{"0":{"219":1},"2":{"244":1,"245":1}}],["case",{"2":{"165":4,"283":1}}],["cases",{"2":{"0":1}}],["callback",{"0":{"141":1,"150":2},"2":{"64":1,"150":4,"278":1}}],["callable",{"0":{"64":3,"90":1,"150":1,"203":1,"267":2,"271":2},"2":{"32":1,"33":1,"35":1,"36":1,"40":1,"54":1,"56":1,"57":1,"64":10,"90":2,"124":1,"141":1,"142":1,"150":1,"203":1,"258":1,"267":2,"271":4}}],["call",{"0":{"267":1},"2":{"15":1,"17":2,"143":4,"263":1,"267":7,"278":1}}],["cannot",{"2":{"6":1,"61":1,"62":1,"90":1,"92":1}}],["can",{"2":{"0":2,"4":1,"6":2,"7":1,"9":1,"28":1,"64":1,"277":1,"278":1,"284":1,"286":1}}],["duration>",{"2":{"313":1}}],["duration",{"2":{"313":2,"314":1}}],["during",{"2":{"284":1}}],["duplex",{"2":{"278":1}}],["driver",{"2":{"278":4}}],["d",{"2":{"98":2,"99":4,"100":4,"101":4,"102":2,"270":2,"314":1}}],["datetime",{"0":{"242":1}}],["data=",{"2":{"197":1}}],["data",{"0":{"61":1,"73":1,"74":1,"75":1,"78":1,"89":1,"91":1,"99":1,"100":1,"101":1,"102":1,"196":1,"208":1},"2":{"61":6,"62":2,"63":2,"64":5,"72":2,"73":7,"74":7,"75":4,"78":3,"89":4,"90":3,"91":3,"92":6,"99":4,"100":3,"101":2,"102":2,"196":5,"278":7}}],["damages",{"2":{"213":1}}],["daemon=true",{"2":{"17":1,"125":1,"269":1}}],["darwin",{"2":{"17":1}}],["day",{"2":{"1":1}}],["dog",{"2":{"296":1,"297":1}}],["double",{"2":{"286":1}}],["does",{"2":{"164":1}}],["docstring",{"2":{"286":2}}],["docs",{"2":{"285":1,"305":1,"306":1}}],["document",{"2":{"286":1}}],["documents",{"2":{"283":1}}],["documentation",{"2":{"6":1,"213":1,"275":1,"283":1,"285":3,"286":7}}],["docker",{"0":{"10":1},"2":{"285":2}}],["don",{"2":{"7":1}}],["download",{"2":{"6":1}}],["do",{"2":{"6":1,"11":1,"213":1,"286":1}}],["did",{"2":{"286":1}}],["diagnose=false",{"2":{"159":1}}],["dict",{"0":{"70":1,"72":1,"73":1,"74":1,"75":1,"78":1,"88":1,"99":1,"100":1,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"122":1,"159":1,"161":1,"181":1,"196":2,"197":1,"208":1},"2":{"15":1,"68":1,"70":2,"72":3,"73":1,"74":1,"75":1,"78":1,"81":1,"82":1,"84":2,"88":3,"99":1,"100":1,"101":1,"102":1,"104":3,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"122":1,"124":3,"132":1,"159":1,"161":2,"163":6,"196":2,"197":1}}],["disable",{"2":{"305":1,"306":1,"307":2,"308":2}}],["distribution",{"2":{"275":1}}],["distribute",{"2":{"213":1}}],["disk",{"2":{"11":1}}],["display",{"0":{"165":2},"2":{"1":1,"163":7,"165":4}}],["different",{"2":{"3":2,"6":1}}],["dir",{"0":{"164":1},"2":{"164":16,"193":2}}],["directories=",{"2":{"297":1}}],["directories",{"0":{"109":1,"150":1},"2":{"109":2,"150":3,"285":3}}],["directory",{"2":{"0":4,"1":1,"2":1,"9":1,"10":1,"109":6,"150":2,"164":1,"285":11}}],["directly",{"2":{"11":1}}],["direct",{"2":{"6":1,"277":1}}],["dirs",{"0":{"109":1},"2":{"1":1,"109":1,"110":1,"193":1}}],["details",{"2":{"286":1}}],["detailed",{"2":{"2":1,"3":1,"286":1}}],["dealings",{"2":{"213":1}}],["deal",{"2":{"213":1}}],["debounce",{"0":{"143":1},"2":{"143":1,"144":1,"145":1}}],["debugging",{"2":{"284":1}}],["debug",{"2":{"2":2,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"105":1,"106":1,"107":1,"125":1,"135":1,"137":1,"158":2,"159":2,"199":1,"297":1}}],["deepcopy",{"2":{"104":1}}],["decorator",{"2":{"64":2,"90":2,"143":2,"150":2,"203":2,"278":1}}],["def",{"2":{"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"64":2,"73":1,"74":1,"75":1,"90":2,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"143":2,"145":1,"150":2,"191":1,"203":1,"204":1,"244":1,"245":1,"256":1,"261":1,"262":1,"263":1,"264":1,"265":1,"271":1,"278":3,"297":1}}],["defaults",{"2":{"17":1,"18":1,"29":1,"30":1,"64":1}}],["default",{"0":{"29":1,"30":1,"86":1,"110":1,"118":1,"175":1,"185":1,"186":1,"187":1,"193":1,"208":1,"210":1,"212":1,"222":1,"228":1,"229":1,"234":1,"238":1,"246":1,"247":1,"248":1,"249":1,"250":1},"2":{"1":1,"2":3,"3":1,"29":3,"30":3,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"66":1,"67":2,"68":2,"81":1,"82":1,"86":5,"97":1,"98":1,"99":3,"110":1,"118":2,"141":1,"142":1,"152":1,"156":1,"158":1,"193":1,"258":1}}],["del",{"2":{"87":2}}],["deleted",{"0":{"147":1},"2":{"147":1}}],["delete",{"0":{"87":1,"101":1},"2":{"87":2,"100":1,"101":3}}],["deliver",{"0":{"67":1,"68":1,"122":2},"2":{"69":1,"71":1,"72":2,"73":2,"74":2,"75":1,"122":6,"126":6}}],["delivery",{"2":{"4":1,"126":1}}],["delay",{"0":{"17":1},"2":{"17":3}}],["deprecated",{"2":{"30":1}}],["depth=1",{"2":{"9":1}}],["deploy",{"2":{"6":1}}],["depend",{"2":{"11":1}}],["dependency",{"2":{"9":1}}],["dependencies",{"2":{"9":1,"11":1}}],["depends",{"2":{"3":1,"11":1}}],["depending",{"2":{"0":1}}],["description=",{"2":{"296":1}}],["description",{"0":{"176":1},"2":{"3":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"54":1,"55":1,"56":1,"57":1,"58":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,"81":1,"82":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"97":1,"98":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"125":1,"126":1,"128":1,"130":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"141":1,"142":1,"143":1,"150":1,"152":1,"156":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"193":1,"196":1,"197":1,"202":1,"203":1,"204":1,"258":1,"267":1,"268":1,"269":1,"270":1,"271":1,"286":1,"302":1}}],["developer",{"2":{"284":1,"296":1}}],["developing",{"2":{"283":2}}],["develop",{"0":{"283":1},"1":{"284":1},"2":{"283":1,"285":2}}],["development",{"0":{"282":1},"1":{"283":1,"284":1,"285":1,"286":1,"287":1},"2":{"2":3,"283":2,"284":1,"286":1,"287":1}}],["device",{"0":{"11":1},"1":{"12":1},"2":{"11":1}}],["dev",{"0":{"139":1,"140":1,"151":1},"1":{"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1},"2":{"2":1,"284":1,"297":1,"300":1}}],["two",{"2":{"278":1}}],["text",{"0":{"209":1,"218":1},"1":{"210":1},"2":{"244":1,"245":1}}],["tests",{"2":{"285":1}}],["test",{"0":{"173":2},"2":{"165":1,"285":1}}],["terminating",{"2":{"137":1}}],["terminated",{"2":{"128":1}}],["terminate",{"0":{"128":1,"129":1,"136":1,"137":1},"2":{"17":1,"21":1,"128":2,"129":2,"136":2,"137":2}}],["tar",{"2":{"213":1}}],["target",{"0":{"126":3,"245":1},"2":{"126":5,"245":1}}],["target=run",{"2":{"269":1}}],["target=self",{"2":{"125":1}}],["target=os",{"2":{"17":1}}],["targets",{"2":{"124":1,"125":1,"126":1,"127":1,"129":1,"130":1}}],["task",{"2":{"91":1,"125":1}}],["tasks",{"2":{"40":2}}],["type=plugintype",{"2":{"296":1}}],["type=self",{"2":{"197":2}}],["types",{"0":{"184":1}}],["typeerror",{"2":{"60":1,"61":1,"69":1}}],["typealias",{"2":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"141":1,"142":1,"258":1}}],["type",{"0":{"60":1,"165":1,"178":1,"196":2,"207":1,"229":1},"2":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":11,"61":7,"65":1,"66":1,"67":1,"68":1,"69":1,"81":1,"82":1,"97":1,"141":1,"142":1,"163":2,"165":4,"196":6,"197":2,"258":1,"286":5}}],["tuple=",{"2":{"126":1}}],["tuplestr",{"2":{"30":1}}],["tuple",{"0":{"30":1,"73":1,"74":1,"75":1,"99":1,"100":1,"101":1,"102":1,"122":2,"126":1,"150":1},"2":{"30":1,"68":1,"73":1,"74":1,"75":1,"84":3,"99":1,"100":1,"101":1,"102":1,"122":2,"124":2,"150":1}}],["time>",{"2":{"290":1}}],["timeout",{"2":{"128":1}}],["time",{"2":{"17":1,"31":1,"120":1,"143":9,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["tip",{"2":{"9":1,"10":1,"293":1,"302":1,"304":1}}],["transfer",{"2":{"277":1}}],["traceback",{"2":{"163":1,"204":1}}],["trace",{"2":{"159":1}}],["trss",{"2":{"275":1}}],["trim",{"2":{"273":2}}],["try",{"2":{"16":1,"87":1,"163":1,"204":1,"268":1}}],["true",{"0":{"87":1,"150":1,"164":1,"184":1},"2":{"1":3,"2":4,"6":1,"62":1,"92":1,"159":1,"263":1,"264":1,"278":2,"284":1}}],["txt",{"2":{"9":1,"11":1}}],["t",{"0":{"59":1,"61":1,"62":1,"63":1,"64":2},"1":{"60":1,"61":1,"62":1,"63":1,"64":1},"2":{"7":1,"28":1,"54":1,"56":1,"57":1,"61":2,"62":2,"63":2,"64":7}}],["through",{"2":{"277":2}}],["thread",{"0":{"199":1,"269":1},"2":{"17":1,"125":1,"199":1,"269":2}}],["threading",{"0":{"96":1},"2":{"15":1,"17":1,"125":1,"269":1}}],["this",{"2":{"155":1,"189":1,"213":2,"283":1,"285":2,"287":1}}],["that",{"2":{"6":1,"277":1,"278":1,"283":2,"286":7}}],["their",{"2":{"275":1}}],["then",{"2":{"9":1}}],["therefore",{"2":{"277":1}}],["there",{"2":{"1":1,"6":1,"11":1,"286":2}}],["these",{"2":{"0":1,"285":1}}],["the",{"2":{"0":6,"1":1,"2":4,"3":6,"4":2,"6":10,"9":1,"10":2,"11":4,"155":1,"163":1,"189":1,"213":14,"273":1,"277":1,"278":2,"283":10,"284":1,"285":6,"286":24}}],["tokyo",{"2":{"311":1}}],["token",{"2":{"2":2}}],["together",{"2":{"286":1}}],["tort",{"2":{"213":1}}],["tools",{"2":{"284":1}}],["too",{"2":{"6":1}}],["to",{"0":{"3":1,"12":1,"270":1,"283":1},"1":{"284":1},"2":{"0":1,"1":6,"2":3,"3":2,"4":1,"6":14,"9":6,"10":1,"11":5,"17":1,"18":1,"29":1,"30":1,"61":1,"64":1,"163":5,"164":2,"189":1,"213":8,"270":2,"274":2,"277":3,"278":2,"283":5,"284":1,"286":7,"287":1}}],["toml",{"0":{"107":1,"114":1},"2":{"0":2,"107":4,"108":2,"110":1,"114":2}}],["world",{"2":{"289":5}}],["weather",{"0":{"311":1},"1":{"312":1},"2":{"311":1,"312":1}}],["welcome",{"2":{"287":1}}],["we",{"2":{"286":1,"287":1}}],["websocket",{"2":{"3":2}}],["wrapper",{"0":{"271":1},"2":{"40":1,"64":2,"90":4,"126":1,"143":2,"150":2,"271":4}}],["watchdog",{"2":{"297":1,"300":1}}],["watch",{"2":{"296":1,"297":1}}],["wait",{"0":{"143":1},"2":{"143":2}}],["warranties",{"2":{"213":1}}],["warranty",{"2":{"213":1}}],["waring=no",{"2":{"110":1}}],["waring",{"0":{"109":1,"110":1},"2":{"109":3,"110":4}}],["warning=no",{"2":{"109":1,"110":1}}],["warning",{"0":{"108":1,"164":1},"2":{"11":2,"30":1,"108":5,"109":1,"128":1,"130":1,"159":1,"163":1,"164":8,"293":1,"308":1}}],["want",{"2":{"1":1}}],["without",{"2":{"11":1,"213":3}}],["with",{"0":{"10":1,"30":1},"2":{"10":1,"30":1,"85":1,"86":1,"87":1,"94":1,"113":1,"114":1,"115":1,"213":1,"277":1,"278":1,"283":2}}],["windows10+",{"2":{"11":1}}],["windows",{"2":{"9":1,"10":1,"11":2,"17":1}}],["will",{"2":{"0":3,"2":3,"11":2,"30":1,"287":1}}],["what",{"2":{"286":1}}],["whom",{"2":{"213":1}}],["while",{"2":{"62":1,"92":1,"278":2}}],["which",{"2":{"6":2}}],["where",{"2":{"286":1}}],["whether",{"2":{"1":3,"2":1,"213":1}}],["when",{"2":{"0":2,"286":2}}],["ws",{"2":{"3":2}}],["p",{"2":{"314":1}}],["poke",{"2":{"291":4}}],["possible",{"2":{"286":3}}],["portions",{"2":{"213":1}}],["port",{"2":{"1":2,"10":2}}],["pep8",{"2":{"286":1}}],["period\`",{"2":{"314":1}}],["period>",{"2":{"313":1}}],["period",{"2":{"313":2}}],["permit",{"2":{"213":1,"286":1}}],["permission",{"2":{"213":2}}],["persons",{"2":{"213":1}}],["person",{"2":{"213":1}}],["personal",{"2":{"0":1,"283":1}}],["persists",{"2":{"6":1}}],["purpose",{"2":{"213":1}}],["publish=publish",{"2":{"126":1}}],["publish",{"0":{"89":1,"122":1},"2":{"84":2,"89":2,"92":2,"122":3,"213":1}}],["pull",{"2":{"10":1,"283":1}}],["pwd",{"2":{"10":1}}],["pipe",{"2":{"60":2}}],["pip",{"2":{"9":1,"11":1,"163":1}}],["py即可启动插件",{"2":{"300":1}}],["pyo",{"2":{"297":1}}],["pycache",{"2":{"297":1}}],["pyc",{"2":{"297":1}}],["pycharm",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["py文件",{"2":{"296":1}}],["py文件或一个包含",{"2":{"296":1}}],["py的文件夹即可被识别为插件",{"2":{"296":1}}],["py",{"2":{"6":1,"9":1,"31":1,"120":1,"151":1,"157":1,"162":1,"164":3,"166":1,"167":1,"190":1,"192":2,"194":1,"200":1,"253":1,"257":1,"281":1,"285":1,"296":1,"297":1,"300":2,"302":1}}],["python格式",{"2":{"289":1}}],["pythonfrom",{"2":{"278":1,"281":1,"296":1,"300":1}}],["pythonimport",{"2":{"278":1,"297":1}}],["pythonasync",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"92":1,"204":1,"263":1}}],["pythondef",{"2":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"39":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"60":1,"61":1,"62":1,"64":1,"69":1,"70":1,"71":1,"72":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"267":1,"268":1,"269":1,"270":1,"271":1}}],["python3",{"2":{"9":1,"11":1}}],["python",{"2":{"6":5,"9":3,"11":3,"40":1,"73":1,"74":1,"75":1,"91":1,"94":1,"99":1,"100":1,"101":1,"102":1,"145":1,"191":1,"244":1,"245":1,"264":1,"265":1,"283":1,"286":1}}],["page为页数",{"2":{"307":2}}],["page",{"2":{"307":2}}],["pacman",{"0":{"307":1},"1":{"308":1}}],["pack",{"2":{"302":2,"307":3}}],["packs",{"2":{"285":1}}],["param",{"2":{"304":1}}],["parse",{"2":{"286":1}}],["parsing",{"2":{"1":1}}],["part",{"2":{"285":1,"286":1}}],["participate",{"2":{"287":1}}],["participation",{"2":{"283":1}}],["particular",{"2":{"213":1}}],["parts",{"2":{"270":2}}],["parent",{"0":{"232":1}}],["pass",{"2":{"199":1}}],["passive=channel",{"2":{"126":1}}],["passive=chan",{"2":{"126":1}}],["passive",{"0":{"66":1,"68":1,"122":2},"2":{"66":1,"69":1,"71":1,"72":2,"73":2,"74":2,"75":1,"84":2,"85":1,"86":1,"87":1,"88":1,"98":1,"99":2,"100":2,"101":2,"102":1,"122":6,"126":5,"278":15}}],["pathlib",{"2":{"163":1}}],["path",{"0":{"152":2,"163":2,"270":3},"2":{"6":2,"10":1,"11":3,"108":1,"109":2,"152":4,"163":16,"164":26,"270":11,"297":5}}],["platform",{"2":{"17":3}}],["platforms",{"2":{"6":3}}],["playwright",{"2":{"6":2}}],["plugintype",{"0":{"165":1,"168":1,"178":2},"1":{"169":1,"170":1,"171":1,"172":1,"173":1},"2":{"165":5,"296":1}}],["pluginmetadata",{"0":{"174":1,"188":1},"1":{"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1},"2":{"163":4,"296":2}}],["plugin的函数签名",{"2":{"152":1}}],["plugin",{"0":{"151":1,"160":1,"161":1,"162":1,"163":2,"164":2,"165":1,"166":1,"167":1,"182":1,"192":1},"1":{"152":1,"161":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,"178":1,"179":1,"180":1,"181":1,"182":1,"183":2,"184":2,"185":2,"186":2,"187":2,"188":2,"193":1},"2":{"1":3,"4":1,"6":4,"15":2,"151":1,"161":2,"163":14,"164":5,"165":4,"189":1,"193":6,"198":1,"213":1,"274":4,"277":1,"283":2,"285":3,"296":4,"299":1,"300":2,"307":5}}],["plugins下创建一个文件",{"2":{"300":1}}],["plugins中添加你的插件路径",{"2":{"299":1}}],["plugins",{"0":{"152":1,"161":1,"164":1,"189":1,"190":1,"192":1,"193":1,"274":1},"1":{"191":1,"193":1},"2":{"1":1,"2":2,"6":3,"11":3,"15":1,"152":6,"161":2,"163":3,"164":9,"189":1,"193":4,"285":5,"297":1,"300":2}}],["please",{"0":{"12":1},"2":{"1":2,"2":1,"3":2,"6":3,"10":2,"11":1,"283":3,"285":2,"286":2}}],["practices",{"0":{"272":1},"1":{"273":1,"274":1,"275":1}}],["private",{"0":{"215":1},"2":{"244":1,"245":1}}],["priority",{"0":{"202":1,"255":1,"256":1},"2":{"202":4,"254":2,"255":2,"256":2}}],["print",{"2":{"15":1,"163":1,"204":1}}],["profile",{"2":{"309":4}}],["profit",{"2":{"287":1}}],["property",{"2":{"243":1,"244":2,"245":1}}],["processfunctype",{"0":{"133":1},"2":{"133":1}}],["processmanager",{"0":{"123":1},"1":{"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1},"2":{"15":2}}],["process",{"0":{"18":1,"25":2,"26":3,"35":1,"36":1,"37":1,"40":1,"43":3,"45":3,"49":1,"51":1,"130":1,"138":1},"2":{"15":1,"16":1,"17":1,"18":4,"21":1,"25":5,"26":6,"28":2,"37":2,"39":4,"40":2,"43":6,"45":6,"49":2,"51":2,"60":1,"64":3,"69":1,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"90":3,"92":2,"124":1,"125":2,"127":2,"128":7,"130":2,"134":1,"135":3,"136":1,"137":3,"138":1,"277":2,"278":8,"297":2}}],["processes",{"2":{"11":1,"18":1,"124":1,"128":2,"130":1,"132":1,"133":1,"134":2,"135":1,"136":2,"137":1,"138":1,"277":4}}],["problematic",{"2":{"6":1}}],["problem",{"2":{"6":1}}],["problems",{"2":{"1":1}}],["provides",{"2":{"277":1}}],["provide",{"2":{"6":1}}],["provided",{"2":{"3":1,"213":1}}],["protocol",{"2":{"3":1}}],["production",{"2":{"3":1}}],["project",{"0":{"285":1},"2":{"0":1,"10":1,"285":1,"287":2}}],["prefix",{"0":{"116":1},"2":{"1":1,"116":3}}],["preference",{"2":{"0":1}}],["y",{"2":{"165":1}}],["yellow>",{"2":{"159":1}}],["y>",{"2":{"16":2}}],["y>liteyuki",{"2":{"16":2}}],["yml格式的所有合法内容",{"2":{"305":1}}],["yml文件",{"2":{"302":1}}],["yml中填写一些信息",{"2":{"302":1}}],["yml",{"2":{"0":2,"108":1,"110":1,"284":1,"302":2,"305":1}}],["you",{"2":{"0":4,"1":1,"2":1,"3":1,"4":1,"6":2,"7":2,"9":1,"10":2,"11":2,"277":1,"283":5,"284":1,"286":2}}],["your",{"2":{"0":1,"10":1,"11":1,"163":2,"283":6,"287":1}}],["yamlweather",{"2":{"311":1}}],["yamlname",{"2":{"302":1}}],["yaml",{"0":{"105":1,"113":1},"2":{"0":2,"1":1,"2":2,"105":4,"108":2,"110":1,"113":2}}],["a包中的index",{"2":{"302":1}}],["api格式为onebot",{"2":{"305":1}}],["api文档",{"2":{"292":1}}],["api也有差别",{"2":{"292":1}}],["api",{"0":{"292":1},"2":{"275":2,"283":1,"290":3,"291":2,"305":3}}],["applications",{"0":{"273":1}}],["application",{"0":{"169":2},"2":{"165":1,"285":4}}],["append",{"2":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"64":2,"90":2,"203":1,"254":1}}],["app",{"2":{"10":1}}],["await",{"2":{"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"64":2,"90":1,"92":2,"204":2,"261":2,"262":2,"263":1,"278":1,"290":1,"291":1,"293":1}}],["awaitable",{"2":{"33":1,"36":1}}],["arising",{"2":{"213":1}}],["arbitrary",{"0":{"184":1}}],["argv",{"2":{"17":1}}],["args=coro",{"2":{"269":1}}],["args=",{"2":{"17":1,"125":1}}],["args",{"0":{"19":1,"40":1,"49":1,"51":1,"126":1,"133":1},"2":{"17":2,"19":2,"40":3,"49":2,"51":2,"126":3,"133":3,"143":2,"271":2,"305":4}}],["arguments",{"2":{"15":1,"17":1,"18":1,"19":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"29":1,"30":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"60":1,"61":1,"64":1,"69":1,"70":1,"71":1,"85":1,"86":1,"87":1,"89":1,"90":1,"91":1,"104":1,"110":1,"113":1,"126":1,"128":1,"130":1,"133":1,"134":1,"136":1,"138":1,"150":1,"152":1,"158":1,"159":1,"163":1,"164":1,"165":1,"197":1,"199":1,"202":1,"204":1,"267":1,"268":1,"269":1,"270":1,"271":1}}],["are",{"2":{"1":1,"6":2,"10":1,"11":1,"277":1,"283":4,"285":1,"286":2}}],["above",{"2":{"213":1}}],["able",{"2":{"11":1}}],["absolute",{"2":{"10":1}}],["ability",{"2":{"6":1}}],["action",{"2":{"213":1}}],["active和",{"2":{"278":1}}],["active和chan",{"2":{"126":1}}],["active=channel",{"2":{"126":1}}],["active=chan",{"2":{"126":1}}],["active",{"0":{"65":1,"67":1,"122":2},"2":{"18":6,"65":1,"84":2,"89":1,"92":1,"122":6,"126":4,"278":13}}],["activate",{"2":{"9":7}}],["account",{"2":{"7":1,"283":1}}],["accesstoken",{"2":{"3":2}}],["access",{"2":{"2":2}}],["authors",{"2":{"213":1}}],["author",{"0":{"179":1},"2":{"6":1,"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["auto",{"2":{"1":2,"2":2}}],["automatically",{"2":{"0":1,"1":2}}],["after",{"0":{"23":1,"24":1,"27":1,"42":1,"44":1,"46":1,"48":1,"50":1,"52":1},"2":{"6":1,"23":2,"24":2,"27":2,"39":3,"42":2,"44":2,"46":2,"48":3,"50":3,"52":3,"278":1,"286":1}}],["avatar",{"0":{"225":1,"231":1}}],["available",{"2":{"1":1}}],["avoid",{"2":{"6":1,"9":1}}],["a",{"2":{"3":1,"7":1,"9":2,"61":1,"62":1,"104":1,"164":1,"213":2,"270":1,"273":1,"277":1,"278":1,"283":4,"286":4,"287":1,"296":1}}],["an",{"2":{"7":1,"61":1,"69":1,"213":1}}],["anyone",{"2":{"287":1}}],["anybot",{"2":{"199":2}}],["any=none",{"2":{"29":1,"30":1,"118":1}}],["any",{"0":{"29":2,"30":2,"64":2,"73":1,"74":1,"75":1,"78":1,"85":1,"86":2,"88":1,"89":1,"91":1,"99":1,"100":1,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"118":2,"122":4,"149":1,"181":1,"196":2,"197":1,"199":1,"208":1,"267":1,"271":1},"2":{"2":1,"4":1,"15":3,"29":3,"30":3,"32":1,"33":1,"35":1,"36":1,"54":1,"57":2,"64":7,"67":1,"68":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":3,"85":1,"86":4,"88":3,"89":1,"90":1,"91":1,"99":1,"100":1,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"118":1,"122":4,"149":1,"196":2,"197":1,"199":1,"213":3,"256":1,"267":1,"271":1}}],["and",{"2":{"0":6,"4":1,"6":3,"9":2,"11":2,"61":1,"150":1,"164":3,"213":5,"262":2,"273":1,"275":1,"277":3,"278":2,"283":4,"284":2,"285":2,"286":9,"287":1,"297":2}}],["adapter",{"0":{"247":1},"2":{"3":1,"4":2,"6":1}}],["advanced",{"2":{"2":1}}],["addition",{"2":{"286":1}}],["add",{"0":{"126":1,"133":1,"254":1},"2":{"2":1,"126":1,"133":1,"159":1,"164":1,"254":1,"255":1,"286":1}}],["address",{"2":{"1":1,"3":2}}],["amp",{"0":{"262":1},"2":{"10":2}}],["am",{"2":{"1":1,"278":6}}],["attr",{"0":{"95":1,"96":1,"169":1,"170":1,"171":1,"172":1,"173":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"184":1,"185":1,"186":1,"187":1,"188":1,"207":1,"208":1,"210":1,"212":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1}}],["at",{"0":{"242":1},"2":{"1":1,"11":2}}],["alive",{"0":{"130":1},"2":{"128":1,"130":2}}],["already",{"2":{"60":2,"69":1,"283":1}}],["alconna的消息段定义",{"2":{"198":1}}],["alconna",{"2":{"1":2,"2":2}}],["allowing",{"2":{"274":2}}],["allowed",{"0":{"184":1}}],["allow",{"2":{"2":2}}],["all",{"0":{"88":1,"102":1,"125":1,"127":1,"129":1,"135":1,"137":1},"2":{"0":1,"2":1,"16":1,"17":1,"21":1,"31":1,"88":2,"101":1,"102":3,"120":1,"125":1,"127":1,"129":1,"135":1,"137":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":1,"253":1,"257":1,"275":1}}],["assumes",{"2":{"283":1}}],["associated",{"2":{"213":1}}],["asynchronous",{"2":{"271":1}}],["async",{"0":{"33":1,"36":1,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"57":1,"63":2,"91":1,"92":1,"191":1,"204":1,"263":1,"264":1,"265":1,"271":1},"2":{"34":1,"37":1,"40":3,"55":1,"58":1,"63":1,"64":1,"81":1,"82":1,"90":1,"91":1,"92":1,"191":1,"256":1,"261":1,"262":1,"264":1,"265":1,"271":2,"278":2}}],["asyncio",{"2":{"15":2,"16":1,"40":1,"63":1,"91":1,"268":5,"278":2}}],["asked",{"0":{"6":1}}],["as",{"2":{"0":1,"3":1,"87":1,"113":1,"114":1,"115":1,"163":1,"213":1,"268":1,"284":1,"286":6}}]],"serializationVersion":2}`;export{e as default}; +const e=`{"documentCount":315,"nextId":315,"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/install.html#install","9":"/en/deploy/install.html#normal-installation","10":"/en/deploy/install.html#run-with-docker","11":"/en/deploy/install.html#device-requirements","12":"/en/deploy/install.html#for-other-questions-please-refer-to-faq","13":"/en/dev/api/bot/#module-liteyuki-bot","14":"/en/dev/api/bot/#class-liteyukibot","15":"/en/dev/api/bot/#func-init-self-kwargs-none","16":"/en/dev/api/bot/#func-run-self","17":"/en/dev/api/bot/#func-restart-self-delay-int-0","18":"/en/dev/api/bot/#func-restart-process-self-name-optional-str-none","19":"/en/dev/api/bot/#func-init-self-args-kwargs","20":"/en/dev/api/bot/#func-init-logger-self","21":"/en/dev/api/bot/#func-stop-self","22":"/en/dev/api/bot/#func-on-before-start-self-func-lifespan-func-lifespan-func","23":"/en/dev/api/bot/#func-on-after-start-self-func-lifespan-func","24":"/en/dev/api/bot/#func-on-after-shutdown-self-func-lifespan-func","25":"/en/dev/api/bot/#func-on-before-process-shutdown-self-func-process-lifespan-func","26":"/en/dev/api/bot/#func-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","27":"/en/dev/api/bot/#func-on-after-restart-self-func-lifespan-func","28":"/en/dev/api/bot/#func-get-bot-liteyukibot","29":"/en/dev/api/bot/#func-get-config-key-str-default-any-none-any","30":"/en/dev/api/bot/#func-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","31":"/en/dev/api/bot/lifespan.html#module-liteyuki-bot-lifespan","32":"/en/dev/api/bot/lifespan.html#var-sync-lifespan-func","33":"/en/dev/api/bot/lifespan.html#var-async-lifespan-func","34":"/en/dev/api/bot/lifespan.html#var-lifespan-func","35":"/en/dev/api/bot/lifespan.html#var-sync-process-lifespan-func","36":"/en/dev/api/bot/lifespan.html#var-async-process-lifespan-func","37":"/en/dev/api/bot/lifespan.html#var-process-lifespan-func","38":"/en/dev/api/bot/lifespan.html#class-lifespan","39":"/en/dev/api/bot/lifespan.html#func-init-self-none","40":"/en/dev/api/bot/lifespan.html#async-func-run-funcs-funcs-sequence-lifespan-func-process-lifespan-func-args-kwargs-none","41":"/en/dev/api/bot/lifespan.html#func-on-before-start-self-func-lifespan-func-lifespan-func","42":"/en/dev/api/bot/lifespan.html#func-on-after-start-self-func-lifespan-func-lifespan-func","43":"/en/dev/api/bot/lifespan.html#func-on-before-process-shutdown-self-func-process-lifespan-func-process-lifespan-func","44":"/en/dev/api/bot/lifespan.html#func-on-after-shutdown-self-func-lifespan-func-lifespan-func","45":"/en/dev/api/bot/lifespan.html#func-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","46":"/en/dev/api/bot/lifespan.html#func-on-after-restart-self-func-lifespan-func-lifespan-func","47":"/en/dev/api/bot/lifespan.html#async-func-before-start-self-none","48":"/en/dev/api/bot/lifespan.html#async-func-after-start-self-none","49":"/en/dev/api/bot/lifespan.html#async-func-before-process-shutdown-self-args-kwargs-none","50":"/en/dev/api/bot/lifespan.html#async-func-after-shutdown-self-none","51":"/en/dev/api/bot/lifespan.html#async-func-before-process-restart-self-args-kwargs-none","52":"/en/dev/api/bot/lifespan.html#async-func-after-restart-self-none","53":"/en/dev/api/comm/channel.html#module-liteyuki-comm-channel","54":"/en/dev/api/comm/channel.html#var-sync-on-receive-func","55":"/en/dev/api/comm/channel.html#var-on-receive-func","56":"/en/dev/api/comm/channel.html#var-sync-filter-func","57":"/en/dev/api/comm/channel.html#var-async-filter-func","58":"/en/dev/api/comm/channel.html#var-filter-func","59":"/en/dev/api/comm/channel.html#class-channel-generic-t","60":"/en/dev/api/comm/channel.html#func-init-self-name-str-type-check-optional-bool-none","61":"/en/dev/api/comm/channel.html#func-send-self-data-t","62":"/en/dev/api/comm/channel.html#func-receive-self-t","63":"/en/dev/api/comm/channel.html#async-func-async-receive-self-t","64":"/en/dev/api/comm/channel.html#func-on-receive-self-filter-func-optional-filter-func-none-callable-callable-t-any-callable-t-any","65":"/en/dev/api/comm/channel.html#var-active-channel","66":"/en/dev/api/comm/channel.html#var-passive-channel","67":"/en/dev/api/comm/channel.html#var-channel-deliver-active-channel","68":"/en/dev/api/comm/channel.html#var-channel-deliver-passive-channel","69":"/en/dev/api/comm/channel.html#func-set-channel-name-str-channel-channel","70":"/en/dev/api/comm/channel.html#func-set-channels-channels-dict-str-channel","71":"/en/dev/api/comm/channel.html#func-get-channel-name-str-channel","72":"/en/dev/api/comm/channel.html#func-get-channels-dict-str-channel","73":"/en/dev/api/comm/channel.html#func-on-set-channel-data-tuple-str-dict-str-any","74":"/en/dev/api/comm/channel.html#func-on-get-channel-data-tuple-str-dict-str-any","75":"/en/dev/api/comm/channel.html#func-on-get-channels-data-tuple-str-dict-str-any","76":"/en/dev/api/comm/event.html#module-liteyuki-comm-event","77":"/en/dev/api/comm/event.html#class-event","78":"/en/dev/api/comm/event.html#func-init-self-name-str-data-dict-str-any","79":"/en/dev/api/comm/#module-liteyuki-comm","80":"/en/dev/api/comm/storage.html#module-liteyuki-comm-storage","81":"/en/dev/api/comm/storage.html#var-on-main-subscriber-receive-funcs","82":"/en/dev/api/comm/storage.html#var-on-sub-subscriber-receive-funcs","83":"/en/dev/api/comm/storage.html#class-keyvaluestore","84":"/en/dev/api/comm/storage.html#func-init-self","85":"/en/dev/api/comm/storage.html#func-set-self-key-str-value-any-none","86":"/en/dev/api/comm/storage.html#func-get-self-key-str-default-optional-any-none-optional-any","87":"/en/dev/api/comm/storage.html#func-delete-self-key-str-ignore-key-error-bool-true-none","88":"/en/dev/api/comm/storage.html#func-get-all-self-dict-str-any","89":"/en/dev/api/comm/storage.html#func-publish-self-channel-str-data-any-none","90":"/en/dev/api/comm/storage.html#func-on-subscriber-receive-self-channel-str-callable-on-receive-func-on-receive-func","91":"/en/dev/api/comm/storage.html#async-func-run-subscriber-receive-funcs-channel-str-data-any","92":"/en/dev/api/comm/storage.html#async-func-start-receive-loop-self","93":"/en/dev/api/comm/storage.html#class-globalkeyvaluestore","94":"/en/dev/api/comm/storage.html#func-get-instance-cls","95":"/en/dev/api/comm/storage.html#attr-instance-none","96":"/en/dev/api/comm/storage.html#attr-lock-threading-lock","97":"/en/dev/api/comm/storage.html#var-shared-memory","98":"/en/dev/api/comm/storage.html#var-ref-count","99":"/en/dev/api/comm/storage.html#func-on-get-data-tuple-str-dict-str-any","100":"/en/dev/api/comm/storage.html#func-on-set-data-tuple-str-dict-str-any","101":"/en/dev/api/comm/storage.html#func-on-delete-data-tuple-str-dict-str-any","102":"/en/dev/api/comm/storage.html#func-on-get-all-data-tuple-str-dict-str-any","103":"/en/dev/api/config.html#module-liteyuki-config","104":"/en/dev/api/config.html#func-flat-config-config-dict-str-any-dict-str-any","105":"/en/dev/api/config.html#func-load-from-yaml-file-str-dict-str-any","106":"/en/dev/api/config.html#func-load-from-json-file-str-dict-str-any","107":"/en/dev/api/config.html#func-load-from-toml-file-str-dict-str-any","108":"/en/dev/api/config.html#func-load-from-files-files-str-no-warning-bool-false-dict-str-any","109":"/en/dev/api/config.html#func-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any","110":"/en/dev/api/config.html#func-load-config-in-default-no-waring-bool-false-dict-str-any","111":"/en/dev/api/config.html#class-loader","112":"/en/dev/api/config.html#func-init-self","113":"/en/dev/api/config.html#func-load-from-yaml-self-fp-str-loader","114":"/en/dev/api/config.html#func-load-from-toml-self-fp-str-loader","115":"/en/dev/api/config.html#func-load-from-json-self-fp-str-loader","116":"/en/dev/api/config.html#func-load-from-env-self-prefix-str-loader","117":"/en/dev/api/config.html#func-merge-self-loader-loader-loader","118":"/en/dev/api/config.html#func-get-self-key-str-default-any-none-any","119":"/en/dev/api/core/#module-liteyuki-core","120":"/en/dev/api/core/manager.html#module-liteyuki-core-manager","121":"/en/dev/api/core/manager.html#class-channeldeliver","122":"/en/dev/api/core/manager.html#func-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","123":"/en/dev/api/core/manager.html#class-processmanager","124":"/en/dev/api/core/manager.html#func-init-self-lifespan-lifespan","125":"/en/dev/api/core/manager.html#func-start-all-self","126":"/en/dev/api/core/manager.html#func-add-target-self-name-str-target-target-func-args-tuple-kwargs-none","127":"/en/dev/api/core/manager.html#func-join-all-self","128":"/en/dev/api/core/manager.html#func-terminate-self-name-str","129":"/en/dev/api/core/manager.html#func-terminate-all-self","130":"/en/dev/api/core/manager.html#func-is-process-alive-self-name-str-bool","131":"/en/dev/api/core/manager.html#class-subprocessmanager","132":"/en/dev/api/core/manager.html#func-init-self","133":"/en/dev/api/core/manager.html#func-add-self-name-str-func-processfunctype-args-kwargs","134":"/en/dev/api/core/manager.html#func-start-self-name-str","135":"/en/dev/api/core/manager.html#func-start-all-self-1","136":"/en/dev/api/core/manager.html#func-terminate-self-name-str-1","137":"/en/dev/api/core/manager.html#func-terminate-all-self-1","138":"/en/dev/api/core/manager.html#func-get-process-self-name-str-subprocess-none","139":"/en/dev/api/dev/#module-liteyuki-dev","140":"/en/dev/api/dev/observer.html#module-liteyuki-dev-observer","141":"/en/dev/api/dev/observer.html#var-callback-func","142":"/en/dev/api/dev/observer.html#var-filter-func","143":"/en/dev/api/dev/observer.html#func-debounce-wait","144":"/en/dev/api/dev/observer.html#class-codemodifiedhandler-filesystemeventhandler","145":"/en/dev/api/dev/observer.html#func-on-modified-self-event","146":"/en/dev/api/dev/observer.html#func-on-created-self-event","147":"/en/dev/api/dev/observer.html#func-on-deleted-self-event","148":"/en/dev/api/dev/observer.html#func-on-moved-self-event","149":"/en/dev/api/dev/observer.html#func-on-any-event-self-event","150":"/en/dev/api/dev/observer.html#func-on-file-system-event-directories-tuple-str-recursive-bool-true-event-filter-filter-func-none-callable-callback-func-callback-func","151":"/en/dev/api/dev/plugin.html#module-liteyuki-dev-plugin","152":"/en/dev/api/dev/plugin.html#func-run-plugins-module-path-str-path","153":"/en/dev/api/exception.html#module-liteyuki-exception","154":"/en/dev/api/exception.html#class-liteyukiexception-baseexception","155":"/en/dev/api/#module-liteyuki","156":"/en/dev/api/#var-version","157":"/en/dev/api/log.html#module-liteyuki-log","158":"/en/dev/api/log.html#func-get-format-level-str-str","159":"/en/dev/api/log.html#func-init-log-config-dict","160":"/en/dev/api/plugin/load.html#module-liteyuki-plugin-load","161":"/en/dev/api/plugin/load.html#func-load-plugin-module-path-str-path-optional-plugin","162":"/en/dev/api/plugin/load.html#func-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin","163":"/en/dev/api/plugin/load.html#func-format-display-name-display-name-str-plugin-type-plugintype-str","164":"/en/dev/api/plugin/#module-liteyuki-plugin","165":"/en/dev/api/plugin/#func-get-loaded-plugins-dict-str-plugin","166":"/en/dev/api/plugin/manager.html#module-liteyuki-plugin-manager","167":"/en/dev/api/plugin/model.html#module-liteyuki-plugin-model","168":"/en/dev/api/plugin/model.html#class-plugintype-enum","169":"/en/dev/api/plugin/model.html#attr-application-application","170":"/en/dev/api/plugin/model.html#attr-service-service","171":"/en/dev/api/plugin/model.html#attr-module-module","172":"/en/dev/api/plugin/model.html#attr-unclassified-unclassified","173":"/en/dev/api/plugin/model.html#attr-test-test","174":"/en/dev/api/plugin/model.html#class-pluginmetadata-basemodel","175":"/en/dev/api/plugin/model.html#attr-name-str-no-default","176":"/en/dev/api/plugin/model.html#attr-description-str","177":"/en/dev/api/plugin/model.html#attr-usage-str","178":"/en/dev/api/plugin/model.html#attr-type-plugintype-plugintype-unclassified","179":"/en/dev/api/plugin/model.html#attr-author-str","180":"/en/dev/api/plugin/model.html#attr-homepage-str","181":"/en/dev/api/plugin/model.html#attr-extra-dict-str-any","182":"/en/dev/api/plugin/model.html#class-plugin-basemodel","183":"/en/dev/api/plugin/model.html#func-hash-self","184":"/en/dev/api/plugin/model.html#attr-model-config-arbitrary-types-allowed-true","185":"/en/dev/api/plugin/model.html#attr-name-str-no-default-1","186":"/en/dev/api/plugin/model.html#attr-module-moduletype-no-default","187":"/en/dev/api/plugin/model.html#attr-module-name-str-no-default","188":"/en/dev/api/plugin/model.html#attr-metadata-optional-pluginmetadata-none","189":"/en/dev/api/plugins/#module-liteyuki-plugins","190":"/en/dev/api/plugins/liteecho.html#module-liteyuki-plugins-liteecho","191":"/en/dev/api/plugins/liteecho.html#async-func-liteecho-event-messageevent","192":"/en/dev/api/plugins/plugin_loader/#module-liteyuki-plugins-plugin-loader","193":"/en/dev/api/plugins/plugin_loader/#func-default-plugins-loader","194":"/en/dev/api/session/event.html#module-liteyuki-session-event","195":"/en/dev/api/session/event.html#class-messageevent","196":"/en/dev/api/session/event.html#func-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","197":"/en/dev/api/session/event.html#func-reply-self-message-str-dict-str-any","198":"/en/dev/api/session/#module-liteyuki-session","199":"/en/dev/api/session/#func-message-handler-thread-i-chans-iterable-chan-any","200":"/en/dev/api/session/matcher.html#module-liteyuki-session-matcher","201":"/en/dev/api/session/matcher.html#class-matcher","202":"/en/dev/api/session/matcher.html#func-init-self-rule-rule-priority-int-block-bool","203":"/en/dev/api/session/matcher.html#func-handle-self-callable-eventhandler-eventhandler","204":"/en/dev/api/session/matcher.html#async-func-run-self-event-messageevent-none","205":"/en/dev/api/session/message/segments.html#module-liteyuki-session-message-segments","206":"/en/dev/api/session/message/segments.html#class-baseseg-basemodel","207":"/en/dev/api/session/message/segments.html#attr-type-str-segment","208":"/en/dev/api/session/message/segments.html#attr-data-dict-str-any-no-default","209":"/en/dev/api/session/message/segments.html#class-text-baseseg","210":"/en/dev/api/session/message/segments.html#attr-content-str-no-default","211":"/en/dev/api/session/message/segments.html#class-image-baseseg","212":"/en/dev/api/session/message/segments.html#attr-url-str-no-default","213":"/en/dev/api/session/models.html#module-liteyuki-session-models","214":"/en/dev/api/session/models.html#class-scenetype-int-enum","215":"/en/dev/api/session/models.html#attr-private-0","216":"/en/dev/api/session/models.html#attr-group-1","217":"/en/dev/api/session/models.html#attr-guild-2","218":"/en/dev/api/session/models.html#attr-channel-text-3","219":"/en/dev/api/session/models.html#attr-channel-category-4","220":"/en/dev/api/session/models.html#attr-channel-voice-5","221":"/en/dev/api/session/models.html#class-user-basemodel","222":"/en/dev/api/session/models.html#attr-id-str-no-default","223":"/en/dev/api/session/models.html#attr-name-str-none-none","224":"/en/dev/api/session/models.html#attr-nick-str-none-none","225":"/en/dev/api/session/models.html#attr-avatar-str-none-none","226":"/en/dev/api/session/models.html#attr-gender-str-none-none","227":"/en/dev/api/session/models.html#class-scene-basemodel","228":"/en/dev/api/session/models.html#attr-id-str-no-default-1","229":"/en/dev/api/session/models.html#attr-type-scenetype-no-default","230":"/en/dev/api/session/models.html#attr-name-str-none-none-1","231":"/en/dev/api/session/models.html#attr-avatar-str-none-none-1","232":"/en/dev/api/session/models.html#attr-parent-scene-none-none","233":"/en/dev/api/session/models.html#class-role-basemodel","234":"/en/dev/api/session/models.html#attr-id-str-no-default-2","235":"/en/dev/api/session/models.html#attr-level-int-none-none","236":"/en/dev/api/session/models.html#attr-name-str-none-none-2","237":"/en/dev/api/session/models.html#class-member-basemodel","238":"/en/dev/api/session/models.html#attr-user-user-no-default","239":"/en/dev/api/session/models.html#attr-nickname-str-none-none","240":"/en/dev/api/session/models.html#attr-role-role-none-none","241":"/en/dev/api/session/models.html#attr-mute-bool-none-none","242":"/en/dev/api/session/models.html#attr-joined-at-datetime-none-none","243":"/en/dev/api/session/models.html#class-session-basemodel","244":"/en/dev/api/session/models.html#func-session-id-self","245":"/en/dev/api/session/models.html#func-target-id-self","246":"/en/dev/api/session/models.html#attr-self-id-str-no-default","247":"/en/dev/api/session/models.html#attr-adapter-str-no-default","248":"/en/dev/api/session/models.html#attr-scope-str-no-default","249":"/en/dev/api/session/models.html#attr-scene-scene-no-default","250":"/en/dev/api/session/models.html#attr-user-user-no-default-1","251":"/en/dev/api/session/models.html#attr-member-member-none-none","252":"/en/dev/api/session/models.html#attr-operator-member-none-none","253":"/en/dev/api/session/on.html#module-liteyuki-session-on","254":"/en/dev/api/session/on.html#func-add-matcher-matcher-matcher","255":"/en/dev/api/session/on.html#func-on-message-rule-rule-empty-rule-priority-int-0-block-bool-false-matcher","256":"/en/dev/api/session/on.html#func-on-keywords-keywords-list-str-rule-empty-rule-priority-int-0-block-bool-false-matcher","257":"/en/dev/api/session/rule.html#module-liteyuki-session-rule","258":"/en/dev/api/session/rule.html#var-rulehandlerfunc","259":"/en/dev/api/session/rule.html#class-rule","260":"/en/dev/api/session/rule.html#func-init-self-handler-rulehandlerfunc","261":"/en/dev/api/session/rule.html#func-self-other-rule-rule","262":"/en/dev/api/session/rule.html#func-self-other-rule-rule-1","263":"/en/dev/api/session/rule.html#async-func-self-event-messageevent-bool","264":"/en/dev/api/session/rule.html#async-func-empty-rule-event-messageevent-bool","265":"/en/dev/api/session/rule.html#async-func-is-su-rule-event-messageevent-bool","266":"/en/dev/api/utils.html#module-liteyuki-utils","267":"/en/dev/api/utils.html#func-is-coroutine-callable-call-callable-any-bool","268":"/en/dev/api/utils.html#func-run-coroutine-coro-coroutine","269":"/en/dev/api/utils.html#func-run-coroutine-in-thread-coro-coroutine","270":"/en/dev/api/utils.html#func-path-to-module-name-path-path-str","271":"/en/dev/api/utils.html#func-async-wrapper-func-callable-any-callable-coroutine","272":"/en/dev/best_practices.html#best-practices","273":"/en/dev/best_practices.html#bot-applications","274":"/en/dev/best_practices.html#plugins","275":"/en/dev/best_practices.html#others","276":"/en/dev/comm.html#channel-communication","277":"/en/dev/comm.html#introduction","278":"/en/dev/comm.html#example","279":"/en/dev/comm.html#共享内存通信","280":"/en/dev/comm.html#简介","281":"/en/dev/comm.html#示例","282":"/en/dev/guide.html#development-guide","283":"/en/dev/guide.html#how-to-develop","284":"/en/dev/guide.html#suggestions","285":"/en/dev/guide.html#project-structure","286":"/en/dev/guide.html#standardization","287":"/en/dev/guide.html#finally","288":"/en/dev/lyfunc.html#轻雪函数","289":"/en/dev/lyfunc.html#函数文件","290":"/en/dev/lyfunc.html#命令文档","291":"/en/dev/lyfunc.html#示例","292":"/en/dev/lyfunc.html#api","293":"/en/dev/lyfunc.html#结束关键字","294":"/en/dev/plugin.html#简介","295":"/en/dev/plugin.html#开始","296":"/en/dev/plugin.html#创建插件","297":"/en/dev/plugin.html#编写逻辑部分","298":"/en/dev/plugin.html#加载插件","299":"/en/dev/plugin.html#方法1","300":"/en/dev/plugin.html#方法2","301":"/en/dev/resource.html#简介","302":"/en/dev/resource.html#加载资源包","303":"/en/usage/agreement.html#用户协议","304":"/en/usage/basic.html#基础插件","305":"/en/usage/basic.html#轻雪命令liteyuki-command","306":"/en/usage/basic.html#命令别名","307":"/en/usage/basic.html#插件-包管理器-liteyuki-pacman","308":"/en/usage/basic.html#命令别名-1","309":"/en/usage/basic.html#用户管理liteyuki-user","310":"/en/usage/extra.html#功能插件命令","311":"/en/usage/extra.html#轻雪天气liteyuki-weather","312":"/en/usage/extra.html#命令别名","313":"/en/usage/extra.html#统计信息liteyuki-statistics","314":"/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,105],"7":[2,1,18],"8":[1,1,1],"9":[2,1,61],"10":[3,1,41],"11":[2,1,83],"12":[6,3,1],"13":[3,1,1],"14":[2,3,1],"15":[6,5,65],"16":[4,5,31],"17":[8,5,62],"18":[10,5,38],"19":[6,5,19],"20":[5,5,16],"21":[4,5,18],"22":[8,5,22],"23":[8,5,21],"24":[8,5,22],"25":[10,5,24],"26":[10,5,25],"27":[8,5,22],"28":[5,3,37],"29":[10,3,29],"30":[14,3,48],"31":[4,1,24],"32":[4,4,8],"33":[4,4,9],"34":[3,4,11],"35":[5,4,9],"36":[5,4,10],"37":[4,4,12],"38":[2,4,1],"39":[5,6,34],"40":[13,6,41],"41":[8,6,23],"42":[8,6,23],"43":[10,6,25],"44":[8,6,23],"45":[10,6,25],"46":[8,6,23],"47":[7,6,23],"48":[7,6,23],"49":[10,6,26],"50":[7,6,24],"51":[10,6,26],"52":[7,6,24],"53":[4,1,3],"54":[5,4,9],"55":[4,4,12],"56":[4,4,9],"57":[4,4,11],"58":[3,4,11],"59":[5,4,1],"60":[12,9,66],"61":[6,9,47],"62":[5,9,32],"63":[6,9,31],"64":[15,9,66],"65":[3,4,9],"66":[3,4,9],"67":[4,4,11],"68":[4,4,12],"69":[7,4,43],"70":[7,4,22],"71":[7,4,34],"72":[8,4,39],"73":[10,4,27],"74":[10,4,30],"75":[10,4,29],"76":[4,1,2],"77":[2,4,1],"78":[9,6,16],"79":[3,1,8],"80":[4,1,4],"81":[6,4,12],"82":[6,4,12],"83":[2,4,1],"84":[4,6,33],"85":[9,6,34],"86":[12,6,40],"87":[12,6,45],"88":[9,6,33],"89":[9,6,24],"90":[13,6,54],"91":[11,6,31],"92":[7,6,45],"93":[2,4,2],"94":[5,6,21],"95":[4,6,1],"96":[6,6,1],"97":[3,4,9],"98":[3,4,17],"99":[9,4,31],"100":[9,4,29],"101":[9,4,29],"102":[10,4,29],"103":[3,1,14],"104":[8,3,41],"105":[10,3,38],"106":[10,3,37],"107":[10,3,37],"108":[14,3,46],"109":[16,3,52],"110":[15,3,39],"111":[2,3,1],"112":[4,5,12],"113":[9,5,28],"114":[9,5,26],"115":[9,5,26],"116":[10,5,31],"117":[6,5,18],"118":[10,5,20],"119":[3,1,1],"120":[4,1,24],"121":[2,4,1],"122":[14,6,21],"123":[2,4,1],"124":[6,6,20],"125":[5,6,31],"126":[14,6,51],"127":[5,6,16],"128":[6,6,34],"129":[5,6,15],"130":[9,6,30],"131":[2,4,1],"132":[4,6,15],"133":[9,6,26],"134":[6,6,25],"135":[5,6,23],"136":[6,6,25],"137":[5,6,23],"138":[10,6,23],"139":[3,1,2],"140":[4,1,5],"141":[3,4,9],"142":[3,4,9],"143":[4,4,28],"144":[4,4,3],"145":[6,8,19],"146":[6,8,12],"147":[6,8,12],"148":[6,8,12],"149":[6,8,12],"150":[20,4,54],"151":[4,1,24],"152":[9,4,33],"153":[3,1,2],"154":[4,3,1],"155":[2,1,10],"156":[3,2,7],"157":[3,1,24],"158":[6,3,24],"159":[6,3,58],"160":[4,1,24],"161":[12,4,78],"162":[15,4,61],"163":[9,4,40],"164":[3,1,1],"165":[9,3,20],"166":[4,1,24],"167":[4,1,24],"168":[4,4,1],"169":[5,8,1],"170":[5,8,1],"171":[5,8,1],"172":[5,8,1],"173":[5,8,1],"174":[4,4,1],"175":[6,8,1],"176":[5,8,1],"177":[5,8,1],"178":[5,8,1],"179":[5,8,1],"180":[5,8,1],"181":[7,8,1],"182":[4,4,1],"183":[3,8,13],"184":[9,8,1],"185":[6,8,1],"186":[6,8,1],"187":[7,8,1],"188":[6,8,1],"189":[3,1,15],"190":[4,1,30],"191":[6,4,23],"192":[5,1,24],"193":[5,5,24],"194":[4,1,24],"195":[2,4,1],"196":[24,6,35],"197":[9,6,37],"198":[3,1,4],"199":[10,3,30],"200":[4,1,24],"201":[2,4,1],"202":[10,6,28],"203":[7,6,23],"204":[8,6,33],"205":[5,1,1],"206":[4,5,1],"207":[6,9,1],"208":[8,9,1],"209":[4,5,1],"210":[6,9,1],"211":[4,5,1],"212":[6,9,1],"213":[4,1,123],"214":[5,4,1],"215":[4,9,1],"216":[4,9,1],"217":[4,9,1],"218":[5,9,1],"219":[5,9,1],"220":[5,9,1],"221":[4,4,1],"222":[6,8,1],"223":[6,8,1],"224":[6,8,1],"225":[6,8,1],"226":[6,8,1],"227":[4,4,1],"228":[6,8,1],"229":[6,8,1],"230":[6,8,1],"231":[6,8,1],"232":[6,8,1],"233":[4,4,1],"234":[6,8,1],"235":[6,8,1],"236":[6,8,1],"237":[4,4,1],"238":[6,8,1],"239":[6,8,1],"240":[6,8,1],"241":[6,8,1],"242":[7,8,1],"243":[4,4,2],"244":[5,8,34],"245":[5,8,30],"246":[7,8,1],"247":[6,8,1],"248":[6,8,1],"249":[6,8,1],"250":[6,8,1],"251":[6,8,1],"252":[6,8,1],"253":[4,1,24],"254":[5,4,24],"255":[15,4,21],"256":[16,4,32],"257":[4,1,24],"258":[2,4,11],"259":[2,4,1],"260":[6,6,13],"261":[7,6,21],"262":[7,6,22],"263":[8,6,23],"264":[8,4,19],"265":[9,4,24],"266":[3,1,5],"267":[9,3,33],"268":[6,3,45],"269":[8,3,23],"270":[8,3,41],"271":[8,3,28],"272":[2,1,1],"273":[2,2,19],"274":[1,2,10],"275":[1,2,30],"276":[2,1,1],"277":[1,2,46],"278":[1,2,105],"279":[1,2,1],"280":[1,3,9],"281":[1,3,18],"282":[2,1,1],"283":[3,2,67],"284":[1,5,34],"285":[2,2,60],"286":[1,2,141],"287":[1,2,23],"288":[1,1,9],"289":[1,1,25],"290":[1,1,33],"291":[1,2,26],"292":[1,1,7],"293":[1,1,18],"294":[1,1,4],"295":[1,1,1],"296":[1,2,42],"297":[1,2,58],"298":[1,2,1],"299":[1,3,6],"300":[1,3,25],"301":[1,1,31],"302":[1,1,56],"303":[1,1,28],"304":[1,1,16],"305":[2,1,86],"306":[1,3,30],"307":[4,1,53],"308":[1,5,38],"309":[2,1,20],"310":[1,1,1],"311":[2,1,30],"312":[1,3,8],"313":[2,1,35],"314":[1,3,17]},"averageFieldLength":[5.555555555555555,4.498412698412699,20.657142857142848],"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":"Install","titles":[]},"9":{"title":"Normal Installation","titles":["Install"]},"10":{"title":"Run with Docker","titles":["Install"]},"11":{"title":"Device Requirements","titles":["Install"]},"12":{"title":"For other questions, please refer to","titles":["Install","Device Requirements"]},"13":{"title":"Module liteyuki.bot","titles":[]},"14":{"title":"class LiteyukiBot","titles":["Module liteyuki.bot"]},"15":{"title":"func __init__(self, **kwargs) -> None","titles":["Module liteyuki.bot","class LiteyukiBot"]},"16":{"title":"func run(self)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"17":{"title":"func restart(self, delay: int = 0)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"18":{"title":"func restart_process(self, name: Optional[str] = None)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"19":{"title":"func init(self, *args, **kwargs)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"20":{"title":"func init_logger(self)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"21":{"title":"func stop(self)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"22":{"title":"func on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["Module liteyuki.bot","class LiteyukiBot"]},"23":{"title":"func on_after_start(self, func: LIFESPAN_FUNC)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"24":{"title":"func on_after_shutdown(self, func: LIFESPAN_FUNC)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"25":{"title":"func on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"26":{"title":"func on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["Module liteyuki.bot","class LiteyukiBot"]},"27":{"title":"func on_after_restart(self, func: LIFESPAN_FUNC)","titles":["Module liteyuki.bot","class LiteyukiBot"]},"28":{"title":"func get_bot() -> LiteyukiBot","titles":["Module liteyuki.bot"]},"29":{"title":"func get_config(key: str, default: Any = None) -> Any","titles":["Module liteyuki.bot"]},"30":{"title":"func get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","titles":["Module liteyuki.bot"]},"31":{"title":"Module liteyuki.bot.lifespan","titles":[]},"32":{"title":"var SYNC_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan"]},"33":{"title":"var ASYNC_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan"]},"34":{"title":"var LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan"]},"35":{"title":"var SYNC_PROCESS_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan"]},"36":{"title":"var ASYNC_PROCESS_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan"]},"37":{"title":"var PROCESS_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan"]},"38":{"title":"class Lifespan","titles":["Module liteyuki.bot.lifespan"]},"39":{"title":"func __init__(self) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"40":{"title":"async func run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"41":{"title":"func on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"42":{"title":"func on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"43":{"title":"func on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"44":{"title":"func on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"45":{"title":"func on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"46":{"title":"func on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"47":{"title":"async func before_start(self) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"48":{"title":"async func after_start(self) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"49":{"title":"async func before_process_shutdown(self, *args, **kwargs) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"50":{"title":"async func after_shutdown(self) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"51":{"title":"async func before_process_restart(self, *args, **kwargs) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"52":{"title":"async func after_restart(self) -> None","titles":["Module liteyuki.bot.lifespan","class Lifespan"]},"53":{"title":"Module liteyuki.comm.channel","titles":[]},"54":{"title":"var SYNC_ON_RECEIVE_FUNC","titles":["Module liteyuki.comm.channel"]},"55":{"title":"var ON_RECEIVE_FUNC","titles":["Module liteyuki.comm.channel"]},"56":{"title":"var SYNC_FILTER_FUNC","titles":["Module liteyuki.comm.channel"]},"57":{"title":"var ASYNC_FILTER_FUNC","titles":["Module liteyuki.comm.channel"]},"58":{"title":"var FILTER_FUNC","titles":["Module liteyuki.comm.channel"]},"59":{"title":"class Channel(Generic[T])","titles":["Module liteyuki.comm.channel"]},"60":{"title":"func __init__(self, name: str, type_check: Optional[bool] = None)","titles":["Module liteyuki.comm.channel","class Channel(Generic[T])"]},"61":{"title":"func send(self, data: T)","titles":["Module liteyuki.comm.channel","class Channel(Generic[T])"]},"62":{"title":"func receive(self) -> T","titles":["Module liteyuki.comm.channel","class Channel(Generic[T])"]},"63":{"title":"async func async_receive(self) -> T","titles":["Module liteyuki.comm.channel","class Channel(Generic[T])"]},"64":{"title":"func on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]","titles":["Module liteyuki.comm.channel","class Channel(Generic[T])"]},"65":{"title":"var active_channel","titles":["Module liteyuki.comm.channel"]},"66":{"title":"var passive_channel","titles":["Module liteyuki.comm.channel"]},"67":{"title":"var channel_deliver_active_channel","titles":["Module liteyuki.comm.channel"]},"68":{"title":"var channel_deliver_passive_channel","titles":["Module liteyuki.comm.channel"]},"69":{"title":"func set_channel(name: str, channel: Channel)","titles":["Module liteyuki.comm.channel"]},"70":{"title":"func set_channels(channels: dict[str, Channel])","titles":["Module liteyuki.comm.channel"]},"71":{"title":"func get_channel(name: str) -> Channel","titles":["Module liteyuki.comm.channel"]},"72":{"title":"func get_channels() -> dict[str, Channel]","titles":["Module liteyuki.comm.channel"]},"73":{"title":"func on_set_channel(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.channel"]},"74":{"title":"func on_get_channel(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.channel"]},"75":{"title":"func on_get_channels(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.channel"]},"76":{"title":"Module liteyuki.comm.event","titles":[]},"77":{"title":"class Event","titles":["Module liteyuki.comm.event"]},"78":{"title":"func __init__(self, name: str, data: dict[str, Any])","titles":["Module liteyuki.comm.event","class Event"]},"79":{"title":"Module liteyuki.comm","titles":[]},"80":{"title":"Module liteyuki.comm.storage","titles":[]},"81":{"title":"var _on_main_subscriber_receive_funcs","titles":["Module liteyuki.comm.storage"]},"82":{"title":"var _on_sub_subscriber_receive_funcs","titles":["Module liteyuki.comm.storage"]},"83":{"title":"class KeyValueStore","titles":["Module liteyuki.comm.storage"]},"84":{"title":"func __init__(self)","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"85":{"title":"func set(self, key: str, value: Any) -> None","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"86":{"title":"func get(self, key: str, default: Optional[Any] = None) -> Optional[Any]","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"87":{"title":"func delete(self, key: str, ignore_key_error: bool = True) -> None","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"88":{"title":"func get_all(self) -> dict[str, Any]","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"89":{"title":"func publish(self, channel_: str, data: Any) -> None","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"90":{"title":"func on_subscriber_receive(self, channel_: str) -> Callable[[ON_RECEIVE_FUNC], ON_RECEIVE_FUNC]","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"91":{"title":"async func run_subscriber_receive_funcs(channel_: str, data: Any)","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"92":{"title":"async func start_receive_loop(self)","titles":["Module liteyuki.comm.storage","class KeyValueStore"]},"93":{"title":"class GlobalKeyValueStore","titles":["Module liteyuki.comm.storage"]},"94":{"title":"func get_instance(cls)","titles":["Module liteyuki.comm.storage","class GlobalKeyValueStore"]},"95":{"title":"attr _instance = None","titles":["Module liteyuki.comm.storage","class GlobalKeyValueStore"]},"96":{"title":"attr _lock = threading.Lock()","titles":["Module liteyuki.comm.storage","class GlobalKeyValueStore"]},"97":{"title":"var shared_memory","titles":["Module liteyuki.comm.storage"]},"98":{"title":"var _ref_count","titles":["Module liteyuki.comm.storage"]},"99":{"title":"func on_get(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.storage"]},"100":{"title":"func on_set(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.storage"]},"101":{"title":"func on_delete(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.storage"]},"102":{"title":"func on_get_all(data: tuple[str, dict[str, Any]])","titles":["Module liteyuki.comm.storage"]},"103":{"title":"Module liteyuki.config","titles":[]},"104":{"title":"func flat_config(config: dict[str, Any]) -> dict[str, Any]","titles":["Module liteyuki.config"]},"105":{"title":"func load_from_yaml(file_: str) -> dict[str, Any]","titles":["Module liteyuki.config"]},"106":{"title":"func load_from_json(file_: str) -> dict[str, Any]","titles":["Module liteyuki.config"]},"107":{"title":"func load_from_toml(file_: str) -> dict[str, Any]","titles":["Module liteyuki.config"]},"108":{"title":"func load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]","titles":["Module liteyuki.config"]},"109":{"title":"func load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]","titles":["Module liteyuki.config"]},"110":{"title":"func load_config_in_default(no_waring: bool = False) -> dict[str, Any]","titles":["Module liteyuki.config"]},"111":{"title":"class Loader","titles":["Module liteyuki.config"]},"112":{"title":"func __init__(self)","titles":["Module liteyuki.config","class Loader"]},"113":{"title":"func load_from_yaml(self, fp: str) -> Loader","titles":["Module liteyuki.config","class Loader"]},"114":{"title":"func load_from_toml(self, fp: str) -> Loader","titles":["Module liteyuki.config","class Loader"]},"115":{"title":"func load_from_json(self, fp: str) -> Loader","titles":["Module liteyuki.config","class Loader"]},"116":{"title":"func load_from_env(self, prefix: str = '') -> Loader","titles":["Module liteyuki.config","class Loader"]},"117":{"title":"func merge(self, loader: Loader) -> Loader","titles":["Module liteyuki.config","class Loader"]},"118":{"title":"func get(self, key: str, default: Any = None) -> Any","titles":["Module liteyuki.config","class Loader"]},"119":{"title":"Module liteyuki.core","titles":[]},"120":{"title":"Module liteyuki.core.manager","titles":[]},"121":{"title":"class ChannelDeliver","titles":["Module liteyuki.core.manager"]},"122":{"title":"func __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":["Module liteyuki.core.manager","class ChannelDeliver"]},"123":{"title":"class ProcessManager","titles":["Module liteyuki.core.manager"]},"124":{"title":"func __init__(self, lifespan: Lifespan)","titles":["Module liteyuki.core.manager","class ProcessManager"]},"125":{"title":"func start_all(self)","titles":["Module liteyuki.core.manager","class ProcessManager"]},"126":{"title":"func add_target(self, name: str, target: TARGET_FUNC, args: tuple = (), kwargs = None)","titles":["Module liteyuki.core.manager","class ProcessManager"]},"127":{"title":"func join_all(self)","titles":["Module liteyuki.core.manager","class ProcessManager"]},"128":{"title":"func terminate(self, name: str)","titles":["Module liteyuki.core.manager","class ProcessManager"]},"129":{"title":"func terminate_all(self)","titles":["Module liteyuki.core.manager","class ProcessManager"]},"130":{"title":"func is_process_alive(self, name: str) -> bool","titles":["Module liteyuki.core.manager","class ProcessManager"]},"131":{"title":"class _SubProcessManager","titles":["Module liteyuki.core.manager"]},"132":{"title":"func __init__(self)","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"133":{"title":"func add(self, name: str, func: ProcessFuncType, *args, **kwargs)","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"134":{"title":"func start(self, name: str)","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"135":{"title":"func start_all(self)","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"136":{"title":"func terminate(self, name: str)","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"137":{"title":"func terminate_all(self)","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"138":{"title":"func get_process(self, name: str) -> SubProcess | None","titles":["Module liteyuki.core.manager","class _SubProcessManager"]},"139":{"title":"Module liteyuki.dev","titles":[]},"140":{"title":"Module liteyuki.dev.observer","titles":[]},"141":{"title":"var CALLBACK_FUNC","titles":["Module liteyuki.dev.observer"]},"142":{"title":"var FILTER_FUNC","titles":["Module liteyuki.dev.observer"]},"143":{"title":"func debounce(wait)","titles":["Module liteyuki.dev.observer"]},"144":{"title":"class CodeModifiedHandler(FileSystemEventHandler)","titles":["Module liteyuki.dev.observer"]},"145":{"title":"func on_modified(self, event)","titles":["Module liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"146":{"title":"func on_created(self, event)","titles":["Module liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"147":{"title":"func on_deleted(self, event)","titles":["Module liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"148":{"title":"func on_moved(self, event)","titles":["Module liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"149":{"title":"func on_any_event(self, event)","titles":["Module liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"150":{"title":"func on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]","titles":["Module liteyuki.dev.observer"]},"151":{"title":"Module liteyuki.dev.plugin","titles":[]},"152":{"title":"func run_plugins(*module_path: str | Path)","titles":["Module liteyuki.dev.plugin"]},"153":{"title":"Module liteyuki.exception","titles":[]},"154":{"title":"class LiteyukiException(BaseException)","titles":["Module liteyuki.exception"]},"155":{"title":"Module liteyuki","titles":[]},"156":{"title":"var __version__","titles":["Module liteyuki"]},"157":{"title":"Module liteyuki.log","titles":[]},"158":{"title":"func get_format(level: str) -> str","titles":["Module liteyuki.log"]},"159":{"title":"func init_log(config: dict)","titles":["Module liteyuki.log"]},"160":{"title":"Module liteyuki.plugin.load","titles":[]},"161":{"title":"func load_plugin(module_path: str | Path) -> Optional[Plugin]","titles":["Module liteyuki.plugin.load"]},"162":{"title":"func load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]","titles":["Module liteyuki.plugin.load"]},"163":{"title":"func format_display_name(display_name: str, plugin_type: PluginType) -> str","titles":["Module liteyuki.plugin.load"]},"164":{"title":"Module liteyuki.plugin","titles":[]},"165":{"title":"func get_loaded_plugins() -> dict[str, Plugin]","titles":["Module liteyuki.plugin"]},"166":{"title":"Module liteyuki.plugin.manager","titles":[]},"167":{"title":"Module liteyuki.plugin.model","titles":[]},"168":{"title":"class PluginType(Enum)","titles":["Module liteyuki.plugin.model"]},"169":{"title":"attr APPLICATION = 'application'","titles":["Module liteyuki.plugin.model","class PluginType(Enum)"]},"170":{"title":"attr SERVICE = 'service'","titles":["Module liteyuki.plugin.model","class PluginType(Enum)"]},"171":{"title":"attr MODULE = 'module'","titles":["Module liteyuki.plugin.model","class PluginType(Enum)"]},"172":{"title":"attr UNCLASSIFIED = 'unclassified'","titles":["Module liteyuki.plugin.model","class PluginType(Enum)"]},"173":{"title":"attr TEST = 'test'","titles":["Module liteyuki.plugin.model","class PluginType(Enum)"]},"174":{"title":"class PluginMetadata(BaseModel)","titles":["Module liteyuki.plugin.model"]},"175":{"title":"attr name: str = NO_DEFAULT","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"176":{"title":"attr description: str = ''","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"177":{"title":"attr usage: str = ''","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"178":{"title":"attr type: PluginType = PluginType.UNCLASSIFIED","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"179":{"title":"attr author: str = ''","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"180":{"title":"attr homepage: str = ''","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"181":{"title":"attr extra: dict[str, Any] = {}","titles":["Module liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"182":{"title":"class Plugin(BaseModel)","titles":["Module liteyuki.plugin.model"]},"183":{"title":"func hash self","titles":["Module liteyuki.plugin.model","class Plugin(BaseModel)"]},"184":{"title":"attr model_config = {'arbitrary_types_allowed': True}","titles":["Module liteyuki.plugin.model","class Plugin(BaseModel)"]},"185":{"title":"attr name: str = NO_DEFAULT","titles":["Module liteyuki.plugin.model","class Plugin(BaseModel)"]},"186":{"title":"attr module: ModuleType = NO_DEFAULT","titles":["Module liteyuki.plugin.model","class Plugin(BaseModel)"]},"187":{"title":"attr module_name: str = NO_DEFAULT","titles":["Module liteyuki.plugin.model","class Plugin(BaseModel)"]},"188":{"title":"attr metadata: Optional[PluginMetadata] = None","titles":["Module liteyuki.plugin.model","class Plugin(BaseModel)"]},"189":{"title":"Module liteyuki.plugins","titles":[]},"190":{"title":"Module liteyuki.plugins.liteecho","titles":[]},"191":{"title":"async func liteecho(event: MessageEvent)","titles":["Module liteyuki.plugins.liteecho"]},"192":{"title":"Module liteyuki.plugins.plugin_loader","titles":[]},"193":{"title":"func default_plugins_loader()","titles":["Module liteyuki.plugins.plugin_loader"]},"194":{"title":"Module liteyuki.session.event","titles":[]},"195":{"title":"class MessageEvent","titles":["Module liteyuki.session.event"]},"196":{"title":"func __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":["Module liteyuki.session.event","class MessageEvent"]},"197":{"title":"func reply(self, message: str | dict[str, Any])","titles":["Module liteyuki.session.event","class MessageEvent"]},"198":{"title":"Module liteyuki.session","titles":[]},"199":{"title":"func message_handler_thread(i_chans: Iterable[Chan[Any]])","titles":["Module liteyuki.session"]},"200":{"title":"Module liteyuki.session.matcher","titles":[]},"201":{"title":"class Matcher","titles":["Module liteyuki.session.matcher"]},"202":{"title":"func __init__(self, rule: Rule, priority: int, block: bool)","titles":["Module liteyuki.session.matcher","class Matcher"]},"203":{"title":"func handle(self) -> Callable[[EventHandler], EventHandler]","titles":["Module liteyuki.session.matcher","class Matcher"]},"204":{"title":"async func run(self, event: MessageEvent) -> None","titles":["Module liteyuki.session.matcher","class Matcher"]},"205":{"title":"Module liteyuki.session.message.segments","titles":[]},"206":{"title":"class BaseSeg(BaseModel)","titles":["Module liteyuki.session.message.segments"]},"207":{"title":"attr type: str = 'Segment'","titles":["Module liteyuki.session.message.segments","class BaseSeg(BaseModel)"]},"208":{"title":"attr data: dict[str, Any] = NO_DEFAULT","titles":["Module liteyuki.session.message.segments","class BaseSeg(BaseModel)"]},"209":{"title":"class Text(BaseSeg)","titles":["Module liteyuki.session.message.segments"]},"210":{"title":"attr content: str = NO_DEFAULT","titles":["Module liteyuki.session.message.segments","class Text(BaseSeg)"]},"211":{"title":"class Image(BaseSeg)","titles":["Module liteyuki.session.message.segments"]},"212":{"title":"attr url: str = NO_DEFAULT","titles":["Module liteyuki.session.message.segments","class Image(BaseSeg)"]},"213":{"title":"Module liteyuki.session.models","titles":[]},"214":{"title":"class SceneType(int, Enum)","titles":["Module liteyuki.session.models"]},"215":{"title":"attr PRIVATE = 0","titles":["Module liteyuki.session.models","class SceneType(int, Enum)"]},"216":{"title":"attr GROUP = 1","titles":["Module liteyuki.session.models","class SceneType(int, Enum)"]},"217":{"title":"attr GUILD = 2","titles":["Module liteyuki.session.models","class SceneType(int, Enum)"]},"218":{"title":"attr CHANNEL_TEXT = 3","titles":["Module liteyuki.session.models","class SceneType(int, Enum)"]},"219":{"title":"attr CHANNEL_CATEGORY = 4","titles":["Module liteyuki.session.models","class SceneType(int, Enum)"]},"220":{"title":"attr CHANNEL_VOICE = 5","titles":["Module liteyuki.session.models","class SceneType(int, Enum)"]},"221":{"title":"class User(BaseModel)","titles":["Module liteyuki.session.models"]},"222":{"title":"attr id: str = NO_DEFAULT","titles":["Module liteyuki.session.models","class User(BaseModel)"]},"223":{"title":"attr name: str | None = None","titles":["Module liteyuki.session.models","class User(BaseModel)"]},"224":{"title":"attr nick: str | None = None","titles":["Module liteyuki.session.models","class User(BaseModel)"]},"225":{"title":"attr avatar: str | None = None","titles":["Module liteyuki.session.models","class User(BaseModel)"]},"226":{"title":"attr gender: str | None = None","titles":["Module liteyuki.session.models","class User(BaseModel)"]},"227":{"title":"class Scene(BaseModel)","titles":["Module liteyuki.session.models"]},"228":{"title":"attr id: str = NO_DEFAULT","titles":["Module liteyuki.session.models","class Scene(BaseModel)"]},"229":{"title":"attr type: SceneType = NO_DEFAULT","titles":["Module liteyuki.session.models","class Scene(BaseModel)"]},"230":{"title":"attr name: str | None = None","titles":["Module liteyuki.session.models","class Scene(BaseModel)"]},"231":{"title":"attr avatar: str | None = None","titles":["Module liteyuki.session.models","class Scene(BaseModel)"]},"232":{"title":"attr parent: 'Scene | None' = None","titles":["Module liteyuki.session.models","class Scene(BaseModel)"]},"233":{"title":"class Role(BaseModel)","titles":["Module liteyuki.session.models"]},"234":{"title":"attr id: str = NO_DEFAULT","titles":["Module liteyuki.session.models","class Role(BaseModel)"]},"235":{"title":"attr level: int | None = None","titles":["Module liteyuki.session.models","class Role(BaseModel)"]},"236":{"title":"attr name: str | None = None","titles":["Module liteyuki.session.models","class Role(BaseModel)"]},"237":{"title":"class Member(BaseModel)","titles":["Module liteyuki.session.models"]},"238":{"title":"attr user: User = NO_DEFAULT","titles":["Module liteyuki.session.models","class Member(BaseModel)"]},"239":{"title":"attr nickname: str | None = None","titles":["Module liteyuki.session.models","class Member(BaseModel)"]},"240":{"title":"attr role: Role | None = None","titles":["Module liteyuki.session.models","class Member(BaseModel)"]},"241":{"title":"attr mute: bool | None = None","titles":["Module liteyuki.session.models","class Member(BaseModel)"]},"242":{"title":"attr joined_at: datetime | None = None","titles":["Module liteyuki.session.models","class Member(BaseModel)"]},"243":{"title":"class Session(BaseModel)","titles":["Module liteyuki.session.models"]},"244":{"title":"func session_id(self)","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"245":{"title":"func target_id(self)","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"246":{"title":"attr self_id: str = NO_DEFAULT","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"247":{"title":"attr adapter: str = NO_DEFAULT","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"248":{"title":"attr scope: str = NO_DEFAULT","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"249":{"title":"attr scene: Scene = NO_DEFAULT","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"250":{"title":"attr user: User = NO_DEFAULT","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"251":{"title":"attr member: 'Member | None' = None","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"252":{"title":"attr operator: 'Member | None' = None","titles":["Module liteyuki.session.models","class Session(BaseModel)"]},"253":{"title":"Module liteyuki.session.on","titles":[]},"254":{"title":"func add_matcher(matcher: Matcher)","titles":["Module liteyuki.session.on"]},"255":{"title":"func on_message(rule: Rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["Module liteyuki.session.on"]},"256":{"title":"func on_keywords(keywords: list[str], rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["Module liteyuki.session.on"]},"257":{"title":"Module liteyuki.session.rule","titles":[]},"258":{"title":"var RuleHandlerFunc","titles":["Module liteyuki.session.rule"]},"259":{"title":"class Rule","titles":["Module liteyuki.session.rule"]},"260":{"title":"func __init__(self, handler: RuleHandlerFunc)","titles":["Module liteyuki.session.rule","class Rule"]},"261":{"title":"func self | other: Rule => Rule","titles":["Module liteyuki.session.rule","class Rule"]},"262":{"title":"func self & other: Rule => Rule","titles":["Module liteyuki.session.rule","class Rule"]},"263":{"title":"async func self () event: MessageEvent => bool","titles":["Module liteyuki.session.rule","class Rule"]},"264":{"title":"async func empty_rule(event: MessageEvent) -> bool","titles":["Module liteyuki.session.rule"]},"265":{"title":"async func is_su_rule(event: MessageEvent) -> bool","titles":["Module liteyuki.session.rule"]},"266":{"title":"Module liteyuki.utils","titles":[]},"267":{"title":"func is_coroutine_callable(call: Callable[..., Any]) -> bool","titles":["Module liteyuki.utils"]},"268":{"title":"func run_coroutine(*coro: Coroutine)","titles":["Module liteyuki.utils"]},"269":{"title":"func run_coroutine_in_thread(*coro: Coroutine)","titles":["Module liteyuki.utils"]},"270":{"title":"func path_to_module_name(path: Path) -> str","titles":["Module liteyuki.utils"]},"271":{"title":"func async_wrapper(func: Callable[..., Any]) -> Callable[..., Coroutine]","titles":["Module liteyuki.utils"]},"272":{"title":"Best Practices","titles":[]},"273":{"title":"Bot applications","titles":["Best Practices"]},"274":{"title":"plugins","titles":["Best Practices"]},"275":{"title":"Others","titles":["Best Practices"]},"276":{"title":"Channel Communication","titles":[]},"277":{"title":"Introduction","titles":["Channel Communication"]},"278":{"title":"Example","titles":["Channel Communication"]},"279":{"title":"共享内存通信","titles":["Channel Communication"]},"280":{"title":"简介","titles":["Channel Communication","共享内存通信"]},"281":{"title":"示例","titles":["Channel Communication","共享内存通信"]},"282":{"title":"Development Guide","titles":[]},"283":{"title":"How to Develop","titles":["Development Guide"]},"284":{"title":"Suggestions","titles":["Development Guide","How to Develop"]},"285":{"title":"Project Structure","titles":["Development Guide"]},"286":{"title":"Standardization","titles":["Development Guide"]},"287":{"title":"Finally","titles":["Development Guide"]},"288":{"title":"轻雪函数","titles":[]},"289":{"title":"函数文件","titles":["轻雪函数"]},"290":{"title":"命令文档","titles":["轻雪函数"]},"291":{"title":"示例","titles":["轻雪函数","命令文档"]},"292":{"title":"API","titles":["轻雪函数"]},"293":{"title":"结束关键字","titles":["轻雪函数"]},"294":{"title":"简介","titles":[]},"295":{"title":"开始","titles":["简介"]},"296":{"title":"创建插件","titles":["简介","开始"]},"297":{"title":"编写逻辑部分","titles":["简介","开始"]},"298":{"title":"加载插件","titles":["简介","开始"]},"299":{"title":"方法1","titles":["简介","开始","加载插件"]},"300":{"title":"方法2","titles":["简介","开始","加载插件"]},"301":{"title":"简介","titles":[]},"302":{"title":"加载资源包","titles":["简介"]},"303":{"title":"用户协议","titles":[]},"304":{"title":"基础插件","titles":[]},"305":{"title":"轻雪命令liteyuki_command","titles":["基础插件"]},"306":{"title":"命令别名","titles":["基础插件","轻雪命令liteyuki_command"]},"307":{"title":"插件/包管理器 liteyuki_pacman","titles":["基础插件"]},"308":{"title":"命令别名","titles":["基础插件","插件/包管理器 liteyuki_pacman"]},"309":{"title":"用户管理liteyuki_user","titles":["基础插件"]},"310":{"title":"功能插件命令","titles":[]},"311":{"title":"轻雪天气liteyuki_weather","titles":["功能插件命令"]},"312":{"title":"命令别名","titles":["功能插件命令","轻雪天气liteyuki_weather"]},"313":{"title":"统计信息liteyuki_statistics","titles":["功能插件命令"]},"314":{"title":"命令别名","titles":["功能插件命令","统计信息liteyuki_statistics"]}},"dirtCount":0,"index":[["或",{"2":{"313":2}}],["或插件路径",{"2":{"161":1}}],["当前bot",{"2":{"313":1}}],["当前群聊",{"2":{"313":1}}],["当前会话启用",{"2":{"307":1}}],["秒",{"2":{"313":2}}],["小时",{"2":{"313":2}}],["天",{"2":{"313":2}}],["天气",{"2":{"311":1,"312":1}}],["格式",{"2":{"313":1}}],["格式为onebot",{"2":{"305":1}}],["统计时间范围为duration",{"2":{"313":1}}],["统计周期为period",{"2":{"313":1}}],["统计信息",{"2":{"313":1}}],["统计信息liteyuki",{"0":{"313":1},"1":{"314":1}}],["功能",{"2":{"313":1}}],["功能插件命令",{"0":{"310":1},"1":{"311":1,"312":1,"313":1,"314":1}}],["绑定城市",{"2":{"312":1}}],["绑定查询城市",{"2":{"311":1}}],["个人全局生效",{"2":{"311":1}}],["个人信息",{"2":{"309":1}}],["海淀",{"2":{"311":1}}],["北京",{"2":{"311":1}}],["支持中英文",{"2":{"311":2}}],["支持中英文城市名",{"2":{"311":1}}],["支持多个关键词查询",{"2":{"311":1}}],["支持绑定城市",{"2":{"311":1}}],["支持单行注释",{"2":{"289":1}}],["受限于nonebot2钩子函数的依赖注入参数",{"2":{"308":1}}],["帮助",{"2":{"308":1}}],["列表",{"2":{"308":1}}],["列出所有资源包",{"2":{"307":1}}],["列出所有插件",{"2":{"307":1}}],["更改",{"2":{"308":1}}],["更新",{"2":{"308":1}}],["更新插件商店索引",{"2":{"307":1}}],["更新轻雪",{"2":{"305":1,"306":1}}],["全局停用",{"2":{"308":1}}],["全局启用",{"2":{"307":1,"308":1}}],["搜索",{"2":{"308":1}}],["卸载",{"2":{"308":2}}],["卸载资源包",{"2":{"307":1}}],["卸载插件",{"2":{"307":1}}],["私聊所有人可用",{"2":{"307":2}}],["包管理器",{"0":{"307":1},"1":{"308":1}}],["包括子task",{"2":{"290":1}}],["切换图片模式",{"2":{"306":1}}],["状态",{"2":{"306":1}}],["别名",{"2":{"306":1,"308":1,"309":1,"312":1,"314":1}}],["所有人",{"2":{"305":1,"307":1,"309":3}}],["所以在编写lyfunction时也要注意异步的调用",{"2":{"293":1}}],["群聊",{"2":{"306":1}}],["群聊仅群主",{"2":{"305":1,"307":2}}],["群号",{"2":{"305":1}}],["管理员",{"2":{"305":1,"307":2}}],["停用插件",{"2":{"307":2}}],["停用",{"2":{"306":1,"308":1}}],["停用机器人",{"2":{"305":1}}],["停止后钩子",{"2":{"50":1}}],["停止前钩子",{"2":{"49":1}}],["停止",{"2":{"39":1}}],["停止轻雪",{"2":{"18":1,"21":1}}],["该功能需要commit",{"2":{"305":1}}],["该模块封装通道实现",{"2":{"280":1}}],["该模块参考并引用了nonebot",{"2":{"198":1}}],["该模块用于存放一些开发工具",{"2":{"139":1}}],["该模块用于常用配置文件的加载",{"2":{"103":1}}],["该模块用于轻雪主进程和nonebot子进程之间的通信",{"2":{"79":1}}],["推荐私聊使用",{"2":{"305":1}}],["推荐在编写html时同时更改对应js代码",{"2":{"301":1}}],["查询目标地实时天气",{"2":{"311":1}}],["查询实时天气",{"2":{"311":1}}],["查询",{"2":{"306":1,"309":1}}],["查询配置项",{"2":{"305":1}}],["查看用户信息菜单",{"2":{"309":1}}],["查看插件帮助",{"2":{"307":1}}],["查看轻雪文档",{"2":{"305":1}}],["查看统计信息和状态",{"2":{"305":1}}],["查看当前bot",{"2":{"305":1}}],["和风天气的天气key",{"2":{"311":1}}],["和",{"2":{"305":1}}],["和10是不一样的",{"2":{"305":1}}],["和config目录下的所有配置文件",{"2":{"110":1}}],["输入值会被执行以转换为正确的类型",{"2":{"305":1}}],["输出",{"2":{"289":1}}],["版本",{"2":{"305":1}}],["超级用户可用",{"2":{"305":1,"307":2}}],["超级用户",{"2":{"305":10,"307":10}}],["重载",{"2":{"308":1}}],["重载所有资源包",{"2":{"307":1}}],["重载资源",{"2":{"306":1}}],["重载轻雪",{"2":{"305":1}}],["重启轻雪",{"2":{"306":1}}],["重启轻雪即可加载插件",{"2":{"299":1}}],["重启轻雪本体",{"2":{"17":1}}],["重启后钩子",{"2":{"52":1}}],["重启前钩子",{"2":{"51":1}}],["重启",{"2":{"39":1}}],["举例",{"2":{"305":1}}],["权限",{"2":{"305":1,"307":2,"309":1}}],["说明",{"2":{"305":1,"307":2,"309":1}}],["~代替",{"2":{"304":1}}],["~可以使用插件",{"2":{"304":1}}],["安装插件",{"2":{"307":1}}],["安装",{"2":{"304":1,"308":1}}],["安装的插件",{"2":{"161":1}}],["命令",{"2":{"305":1,"306":1,"307":2,"308":1,"309":2,"311":1,"312":1,"313":1,"314":1}}],["命令别名",{"0":{"306":1,"308":1,"312":1,"314":1},"2":{"304":1,"309":1}}],["命令文档",{"0":{"290":1},"1":{"291":1}}],["为可选参数",{"2":{"304":1}}],["为必填参数",{"2":{"304":1}}],["为子进程重启时调用",{"2":{"26":1}}],["为子进程停止时调用",{"2":{"25":1}}],["基础插件",{"0":{"304":1},"1":{"305":1,"306":1,"307":1,"308":1,"309":1}}],["且通过安全的方式传输到轻雪的服务器",{"2":{"303":1}}],["且通道标识为",{"2":{"278":1}}],["系统信息及python信息",{"2":{"303":1}}],["内存",{"2":{"303":1}}],["内存共享是线程安全的",{"2":{"280":1}}],["内存共享使得代码编写更加简洁",{"2":{"280":1}}],["分钟",{"2":{"313":2}}],["分发",{"2":{"303":1}}],["分工明确",{"2":{"103":1}}],["修改优先级",{"2":{"307":1}}],["修改",{"2":{"303":1}}],["本项目不会收集用户的任何隐私信息",{"2":{"303":1}}],["本项目遵循mit协议",{"2":{"303":1}}],["本模块使用了nonebot",{"2":{"213":1}}],["本模块用于轻雪主进程和子进程之间的通信的事件类",{"2":{"76":1}}],["本模块定义了一个通用的通道类",{"2":{"53":1}}],["同时用户也应该自行选择可用的资源包",{"2":{"302":1}}],["同步接收数据",{"2":{"62":1}}],["同步接收函数",{"2":{"54":1}}],["同步过滤函数",{"2":{"56":1}}],["同步进程生命周期函数",{"2":{"35":1}}],["同步生命周期函数",{"2":{"32":1}}],["第三方资源包开发者需要注意版本兼容性",{"2":{"302":1}}],["对于主动推送的插件不生效",{"2":{"308":1}}],["对于不同资源包的不同文件",{"2":{"302":1}}],["对外启动方法",{"2":{"125":1}}],["└─",{"2":{"302":1}}],["└───",{"2":{"302":1}}],["└─resource",{"2":{"302":2}}],["├─templates",{"2":{"302":1}}],["├─metadata",{"2":{"302":2}}],["正常的路径应该是这样的",{"2":{"302":1}}],["只需要将其解压到根目录resources目录下即可",{"2":{"302":1}}],["zip格式压缩的",{"2":{"302":1}}],["zh",{"2":{"2":1,"285":1}}],["以上内容仅用于项目的优化",{"2":{"303":1}}],["以避免出现无法预料的问题",{"2":{"301":1}}],["以下我们会编写一个简单的插件",{"2":{"297":1}}],["错位等无法预料的事情发生",{"2":{"301":1}}],["异常",{"2":{"301":1}}],["异步任务结束关键字",{"2":{"293":1}}],["异步等待",{"2":{"290":1}}],["异步包装器",{"2":{"271":1}}],["异步接收数据",{"2":{"63":1}}],["异步过滤函数",{"2":{"57":1}}],["异步进程生命周期函数",{"2":{"36":1}}],["异步生命周期函数",{"2":{"33":1}}],["请阅读插件主页的说明",{"2":{"308":1}}],["请确保您所编写的html代码能被bot解析",{"2":{"301":1}}],["请注意",{"2":{"301":1}}],["请不要将需要动态加载的内容写入配置文件",{"2":{"103":1}}],["欢迎各位投稿资源包到轻雪资源商店",{"2":{"301":1}}],["部分异常信息",{"2":{"303":1}}],["部分内容制作需要一点点前端基础",{"2":{"301":1}}],["部分来源于",{"2":{"266":1}}],["讲起打包成一个新的资源包",{"2":{"301":1}}],["仅需按照原有路径进行文件替换即可",{"2":{"301":1}}],["那么加载b包后",{"2":{"302":1}}],["那么你能够很快就上手",{"2":{"301":1}}],["那么当前所有函数包的task都会被截停销毁",{"2":{"293":1}}],["如果你接触过minecraft的资源包",{"2":{"301":1}}],["如果你想同时输出多行内容可以尝试换行符",{"2":{"289":1}}],["主题包中的html渲染使用js来规定数据的渲染位置",{"2":{"301":1}}],["主题商店提供了一些资源包供你选择",{"2":{"301":1}}],["主进程中",{"2":{"278":1}}],["主进程中通过get",{"2":{"278":1}}],["主进程订阅者接收函数",{"2":{"81":1}}],["主进程创建单例",{"2":{"67":1}}],["资源",{"2":{"301":1}}],["资源包管理",{"2":{"307":1}}],["资源包的结构会随着轻雪的更新而有变动",{"2":{"302":1}}],["资源包的制作很简单",{"2":{"301":1}}],["资源包加载遵循一个优先级",{"2":{"302":1}}],["资源包描述",{"2":{"302":1}}],["资源包名称",{"2":{"302":1}}],["资源包通常是以",{"2":{"302":1}}],["资源包",{"2":{"301":1,"308":1}}],["它允许你一定程度上自定义轻雪的外观",{"2":{"301":1}}],["它允许你在轻雪中运行一些自定义的由数据驱动的命令",{"2":{"288":1}}],["语言包等",{"2":{"301":1}}],["字体包",{"2":{"301":1}}],["亦可根据用途称为主题包",{"2":{"301":1}}],["保存后轻雪会自动重载nonebot进程",{"2":{"300":1}}],["我们在src",{"2":{"300":1}}],["然后运行python",{"2":{"300":1}}],["方法2",{"0":{"300":1}}],["方法1",{"0":{"299":1}}],["用户管理liteyuki",{"0":{"309":1}}],["用户协议",{"0":{"303":1}}],["用observer的on",{"2":{"297":1}}],["用于统计bot接收到的消息",{"2":{"313":1}}],["用于开发nonebot时进行文件系统变更重载",{"2":{"297":1}}],["用于结束当前已完成function的执行",{"2":{"293":1}}],["用于存放内置插件",{"2":{"189":1}}],["用于获取和唯一标识",{"2":{"126":1}}],["用于进程间通信",{"2":{"53":1}}],["排除的文件扩展名",{"2":{"297":1}}],["因此插件主要是一些后台任务或者与聊天机器人的通信",{"2":{"297":1}}],["定义插件元数据",{"2":{"296":1}}],["定义变量",{"2":{"290":1}}],["导入轻雪bot和日志",{"2":{"297":1}}],["导入文件系统事件",{"2":{"297":1}}],["导入文件系统观察器",{"2":{"297":1}}],["导入文件夹下多个插件",{"2":{"162":1}}],["导入逻辑部分",{"2":{"296":1}}],["即后加载的资源包会覆盖前面的资源包",{"2":{"302":1}}],["即可创建一个插件",{"2":{"296":1}}],["即不等待",{"2":{"290":1}}],["首先创建一个文件夹",{"2":{"296":1}}],["开始",{"0":{"295":1},"1":{"296":1,"297":1,"298":1,"299":1,"300":1}}],["编写逻辑部分",{"0":{"297":1}}],["编写轻雪函数推荐你使用vs",{"2":{"293":1}}],["编辑时的语法高亮可采取shell格式",{"2":{"289":1}}],["有一个task任务没有完成而await被执行了",{"2":{"293":1}}],["的情况是效率提升的关键",{"2":{"293":1}}],["单线程走到底",{"2":{"293":1}}],["单位s",{"2":{"290":1}}],["避免出现",{"2":{"293":1}}],["由于liteyukibot基于异步运行",{"2":{"293":1}}],["结束关键字",{"0":{"293":1}}],["结束函数关键字",{"2":{"290":1}}],["理论上所有基于onebotv11的api都可调用",{"2":{"292":1}}],["则该文件夹不会被识别为资源包",{"2":{"302":1}}],["则需要删除await",{"2":{"291":1}}],["则传入泛型默认开启",{"2":{"60":1}}],["无需手动创建实例",{"2":{"300":1}}],["无需手动初始化bot",{"2":{"152":1}}],["无限戳",{"2":{"291":1}}],["执行",{"2":{"291":1}}],["疯狂戳好友",{"2":{"291":1}}],["否则会导致渲染失败或渲染结果不理想",{"2":{"301":1}}],["否则task对象会被销毁",{"2":{"290":1}}],["否则默认关闭",{"2":{"60":1}}],["需要在最后调用",{"2":{"290":1}}],["等待所有异步任务结束",{"2":{"290":1}}],["使用通用日期简写",{"2":{"313":2}}],["使用此项目代表你已经同意以上协议",{"2":{"303":1}}],["使用开发工具快速运行插件",{"2":{"300":1}}],["使用",{"2":{"291":1}}],["使用新的task执行命令",{"2":{"290":1}}],["使用watchdog监控文件变化并重启bot",{"2":{"140":1}}],["调用机器人函数",{"2":{"305":1}}],["调用机器人api",{"2":{"305":1}}],["调用重启进程方法",{"2":{"297":1}}],["调用函数",{"2":{"290":1}}],["调用bot",{"2":{"290":1}}],["也支持句末注释",{"2":{"289":1}}],["例如npm",{"2":{"304":1}}],["例如nonebot插件中",{"2":{"278":1}}],["例如你在a中定义了templates",{"2":{"302":1}}],["例如html",{"2":{"301":1}}],["例如main",{"2":{"300":1}}],["例如watchdog",{"2":{"296":1,"299":1}}],["例如",{"2":{"289":2,"302":1,"311":1}}],["例如test",{"2":{"289":1,"300":1}}],["文件内容为一系列的命令",{"2":{"289":1}}],["文件名以",{"2":{"289":1}}],["文件夹路径",{"2":{"162":1}}],["函数文件放在资源包的functions目录下",{"2":{"289":1}}],["函数文件",{"0":{"289":1}}],["函数列表",{"2":{"40":1}}],["属于资源包的一部分",{"2":{"288":1}}],["类似于minecraft的mcfunction",{"2":{"288":1}}],["类似于redis",{"2":{"80":1}}],["是可以相对引用的",{"2":{"302":1}}],["是轻雪的一个功能",{"2":{"288":1}}],["是否为协程可调用对象",{"2":{"267":1}}],["是否阻断后续优先级更低的匹配器",{"2":{"202":1}}],["是否忽略警告",{"2":{"162":1}}],["是否忽略键不存在的错误",{"2":{"87":1}}],["是否递归监听子目录",{"2":{"150":1}}],["是否关闭警告",{"2":{"110":1}}],["是否开启类型检查",{"2":{"60":1}}],["源代码",{"2":{"281":1}}],["示例",{"0":{"281":1,"291":1}}],["线程锁会自动保护共享内存的读写操作",{"2":{"280":1}}],["你在a包中定义了一个index",{"2":{"302":1}}],["你自己制作的资源包也应该遵循这个规则",{"2":{"302":1}}],["你也可以自己制作资源包",{"2":{"301":1}}],["你的插件代码",{"2":{"296":1}}],["你可以选择开启auto",{"2":{"303":1}}],["你可以自由使用",{"2":{"303":1}}],["你可以自定义一些信息",{"2":{"302":1}}],["你可以在多个线程中读写共享内存",{"2":{"280":1}}],["你可以通过storage模块实现内存共享通信",{"2":{"280":1}}],["你应该使用其他储存方式",{"2":{"103":1}}],["相比于普通进程通信",{"2":{"280":1}}],["简介",{"0":{"280":1,"294":1,"301":1},"1":{"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"302":1}}],["被动模式",{"2":{"278":1}}],["被动通道传递通道",{"2":{"68":1}}],["被动通道",{"2":{"66":1}}],["每隔0",{"2":{"291":1}}],["每行一个命令",{"2":{"289":1}}],["每次接收到字符串数据时都会运行",{"2":{"278":1}}],["每3秒发送一次消息",{"2":{"278":1}}],["每个配置文件给一个或一类服务提供配置",{"2":{"103":1}}],["创建入口文件",{"2":{"300":1}}],["创建插件",{"0":{"296":1}}],["创建子进程的同时会初始化一个被动通道和一个主动通道",{"2":{"278":1}}],["创建asyncio",{"2":{"125":1}}],["+",{"2":{"270":1}}],["+=",{"2":{"17":1,"64":1}}],["模块名",{"2":{"270":1}}],["路径a",{"2":{"270":1}}],["转换路径为模块名",{"2":{"270":1}}],["可用",{"2":{"305":1}}],["可用参数",{"2":{"305":1}}],["可以在配置文件中把auto",{"2":{"303":1}}],["可以在a的index",{"2":{"302":1}}],["可以在此基础上进行修改",{"2":{"301":1}}],["可以很高程度地扩展轻雪的功能",{"2":{"294":1}}],["可以是本地插件或是通过",{"2":{"161":1}}],["可递归",{"2":{"290":1}}],["可调用对象",{"2":{"267":1}}],["判断是否为协程可调用对象",{"2":{"267":1}}],["并且应该在metadata",{"2":{"302":1}}],["并且不用修改源代码",{"2":{"301":1}}],["并在其中写入一些代码",{"2":{"300":1}}],["并在其中写入以下代码",{"2":{"300":1}}],["并在其中创建一个",{"2":{"296":1}}],["并遵循其许可进行修改",{"2":{"266":1}}],["并发运行异步函数",{"2":{"40":1}}],["一个",{"2":{"296":1}}],["一个键不要多次出现",{"2":{"103":1}}],["一些常用的工具类",{"2":{"266":1}}],["x26",{"2":{"256":1}}],["x3c",{"2":{"16":4,"17":1,"159":7,"161":2,"163":2,"254":1,"290":6,"311":2,"313":2}}],["优先级",{"2":{"202":1}}],["规则函数签名",{"2":{"258":1}}],["规则",{"2":{"202":1}}],["匹配器",{"2":{"202":1}}],["505468b及以后的lagrange",{"2":{"305":1}}],["55",{"2":{"257":1}}],["52",{"2":{"253":1}}],["5",{"0":{"220":1}}],["51",{"2":{"200":1}}],["59",{"2":{"160":1,"166":1}}],["多路输入管道组",{"2":{"199":1}}],["多配置文件编写原则",{"2":{"103":1}}],["回复消息",{"2":{"197":1}}],["应在初始化时调用",{"2":{"193":1}}],["根据不同类型插件设置颜色",{"2":{"163":1}}],["插件停用只能阻断传入响应",{"2":{"308":1}}],["插件管理",{"2":{"307":1,"308":1}}],["插件",{"0":{"307":1},"1":{"308":1}}],["插件信息",{"2":{"303":1}}],["插件描述",{"2":{"296":1}}],["插件版本",{"2":{"296":1}}],["插件字典",{"2":{"165":1}}],["插件类型",{"2":{"163":1,"296":1}}],["插件名称",{"2":{"161":1,"163":1,"296":1}}],["插件路径",{"2":{"152":1}}],["加载",{"2":{"308":1}}],["加载资源包",{"0":{"302":1},"2":{"307":1}}],["加载插件",{"0":{"298":1},"1":{"299":1,"300":1}}],["加载插件加载器",{"2":{"15":1}}],["加载单个插件",{"2":{"161":1}}],["下午10",{"2":{"192":1,"194":1,"200":1,"253":1,"257":1}}],["下午12",{"2":{"190":1}}],["下午11",{"2":{"160":1,"166":1}}],["下午8",{"2":{"31":1}}],["🔍",{"2":{"159":1}}],["🐛",{"2":{"159":1}}],["❌",{"2":{"159":1,"305":11}}],["⭕",{"2":{"159":1}}],["⚠️",{"2":{"159":1}}],["✅",{"2":{"159":1}}],["ℹ️信息",{"2":{"278":4}}],["ℹ️",{"2":{"159":1}}],["在群聊启用",{"2":{"305":1}}],["在普通图片和markdown大图之间切换",{"2":{"305":1}}],["在b中定义了templates",{"2":{"302":1}}],["在配置文件中的liteyuki",{"2":{"299":1}}],["在设备上执行命令",{"2":{"290":1}}],["在发信器输出",{"2":{"289":1}}],["在任意进程中均可使用",{"2":{"281":1}}],["在子进程中",{"2":{"278":1}}],["在轻雪插件中",{"2":{"278":1}}],["在新线程中运行协程",{"2":{"269":1}}],["在语言加载完成后执行",{"2":{"159":1}}],["在主进程中运行",{"2":{"92":1}}],["日志等级",{"2":{"158":1}}],["31",{"2":{"190":1}}],["3",{"0":{"218":1},"2":{"156":1,"162":1,"278":1}}],["300~500mb",{"2":{"11":1}}],["6",{"2":{"156":1}}],["测试版本号",{"2":{"156":1}}],["此模块为内置插件文件夹",{"2":{"189":1}}],["此模块为liteyuki的框架整体",{"2":{"155":1}}],["此模块用于注册观察者函数",{"2":{"140":1}}],["参考liteyuki",{"2":{"152":1}}],["参数列表",{"2":{"305":2}}],["参数为调用set",{"2":{"278":1}}],["参数",{"2":{"19":1,"304":1,"313":1}}],["运行环境的设备信息",{"2":{"303":1}}],["运行在主进程中",{"2":{"294":1}}],["运行协程",{"2":{"268":1}}],["运行处理函数",{"2":{"204":1}}],["运行插件",{"2":{"152":1}}],["运行订阅者接收函数",{"2":{"91":1}}],["上午12",{"2":{"167":1}}],["上午11",{"2":{"120":1}}],["上午9",{"2":{"157":1}}],["上午5",{"2":{"151":1}}],["装饰一个函数在接收到数据后执行",{"2":{"150":1}}],["装饰器",{"2":{"64":1,"90":1,"150":1,"203":2}}],["返回true则执行回调函数",{"2":{"150":1}}],["事件过滤器",{"2":{"150":1}}],["事件循环",{"2":{"15":1}}],["监听目录们",{"2":{"150":1}}],["防抖函数",{"2":{"143":1}}],["防止获取空指针",{"2":{"98":1}}],["位置1为filesystemevent",{"2":{"141":1,"142":1}}],["启用",{"2":{"306":1,"308":1}}],["启用插件后",{"2":{"300":1}}],["启用该模块需要在配置文件中设置dev",{"2":{"140":1}}],["启动后控制台输出",{"2":{"278":1}}],["启动后钩子",{"2":{"48":1}}],["启动所有子进程",{"2":{"135":1}}],["启动所有进程",{"2":{"125":1}}],["启动指定子进程",{"2":{"134":1}}],["启动发布订阅接收器循环",{"2":{"92":1}}],["启动前钩子",{"2":{"47":1}}],["启动",{"2":{"39":1}}],["终止所有子进程",{"2":{"137":1}}],["终止指定子进程",{"2":{"136":1}}],["终止进程并从进程字典中删除",{"2":{"128":1}}],["添加配置项",{"2":{"305":1}}],["添加sleep",{"2":{"291":1}}],["添加处理函数",{"2":{"203":1}}],["添加子进程",{"2":{"133":1}}],["添加进程",{"2":{"126":1}}],["检查进程是否存活",{"2":{"130":1}}],["通过关键词搜索插件",{"2":{"307":1}}],["通过装饰器注册一个函数在接收到消息时运行",{"2":{"278":1}}],["通常是目录不存在或目录为空",{"2":{"162":1}}],["通常会默认传入chan",{"2":{"126":1}}],["通道实例",{"2":{"69":1,"70":1,"71":1,"72":1}}],["通道名称",{"2":{"69":1,"71":1}}],["通道传递通道",{"2":{"67":1}}],["通道id",{"2":{"60":1}}],["合并两个loader键值对树",{"2":{"117":1}}],["项目目录下的配置文件优先",{"2":{"110":1}}],["项目目录下的配置文件优先级高于config目录下的配置文件",{"2":{"103":1}}],["项目目录下的config",{"2":{"110":1}}],["按照读取文件的优先级反向覆盖",{"2":{"109":1}}],["不带key返回配置项列表",{"2":{"305":1}}],["不包含任何隐私信息",{"2":{"303":1}}],["不含隐私部分",{"2":{"303":1}}],["不含插件数据",{"2":{"303":1}}],["不同adapter",{"2":{"292":1}}],["不递归",{"2":{"109":1}}],["不要出现过多的嵌套",{"2":{"103":1}}],["从环境变量加载配置",{"2":{"116":1}}],["从json文件加载配置",{"2":{"115":1}}],["从toml文件加载配置",{"2":{"114":1}}],["从yaml文件加载配置",{"2":{"113":1}}],["从一个标准的轻雪项目加载配置文件",{"2":{"110":1}}],["从目录下加载配置文件",{"2":{"109":1}}],["从指定文件加载配置项",{"2":{"108":1}}],["默认普通图片",{"2":{"305":1}}],["默认开启",{"2":{"303":1}}],["默认插件加载器",{"2":{"193":1}}],["默认执行扁平化选项",{"2":{"108":1,"109":1}}],["默认值",{"2":{"29":1,"30":1,"86":1}}],["8",{"2":{"105":1,"106":1,"107":1,"151":1,"190":1,"191":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["但请注意甄别第三方插件的安全性",{"2":{"303":1}}],["但请保证以上三个字段",{"2":{"302":1}}],["但是请保留原作者信息",{"2":{"303":1}}],["但是更加轻量级并且线程安全",{"2":{"80":1}}],["但若出现非单function的情况",{"2":{"293":1}}],["但需单独起篇幅",{"2":{"288":1}}],["但也包含原有的键值对",{"2":{"104":1}}],["扁平化后的配置文件",{"2":{"104":1}}],["扁平化配置文件",{"2":{"104":1}}],["扁平化编写",{"2":{"103":1}}],["注意不要嵌套文件夹",{"2":{"302":1}}],["注意冲突时的优先级",{"2":{"103":1}}],["注册一个函数在nonebot启动后运行",{"2":{"278":1}}],["注册一个函数在轻雪启动后运行",{"2":{"278":1}}],["注册文件系统变化监听器",{"2":{"150":1}}],["注册重启后的函数",{"2":{"27":1,"46":1}}],["注册进程重启前的函数",{"2":{"26":1,"45":1}}],["注册进程停止前的函数",{"2":{"25":1,"43":1}}],["注册停止后的函数",{"2":{"24":1,"44":1}}],["注册启动时的函数",{"2":{"41":1,"42":1}}],["注册启动后的函数",{"2":{"23":1}}],["注册启动前的函数",{"2":{"22":1}}],["尽量不要冲突",{"2":{"103":1}}],["引用计数",{"2":{"98":1}}],["共享内存通信",{"0":{"279":1},"1":{"280":1,"281":1}}],["共享内存对象",{"2":{"97":1}}],["共享内存模块",{"2":{"80":1}}],["若不存在则返回空",{"2":{"305":1}}],["若不存在则创建于config",{"2":{"305":1}}],["若存在则返回",{"2":{"305":1}}],["若存在则覆盖",{"2":{"305":1}}],["若存在则会覆盖",{"2":{"305":1}}],["若你不希望提供这些信息",{"2":{"303":1}}],["若没有metadata",{"2":{"302":1}}],["若要戳20s后停止",{"2":{"291":1}}],["若函数中启动了其他task",{"2":{"290":1}}],["若有子进程订阅则推送给子进程",{"2":{"92":1}}],["若为空",{"2":{"60":1}}],["订阅者接收消息时的回调",{"2":{"90":1}}],["频道",{"2":{"89":1,"90":1,"91":1}}],["发布消息",{"2":{"89":1}}],["发送函数为同步函数",{"2":{"61":1}}],["发送数据",{"2":{"61":1}}],["删除键值对",{"2":{"87":1}}],["值",{"2":{"85":1,"86":1}}],["键值对",{"2":{"88":1}}],["键",{"2":{"85":1,"86":1,"87":1}}],["设置用户信息或打开属性设置菜单",{"2":{"309":1}}],["设置",{"2":{"306":1,"309":1}}],["设置共享内存",{"2":{"281":1}}],["设置后的插件名称",{"2":{"163":1}}],["设置插件名称颜色",{"2":{"163":1}}],["设置键值对",{"2":{"85":1}}],["设置通道实例",{"2":{"69":1,"70":1}}],["依赖关系",{"2":{"79":1}}],["子进程中获取通道直接导入进程全局单例即可",{"2":{"278":1}}],["子进程中导入单例active",{"2":{"278":1}}],["子进程名称",{"2":{"133":1,"134":1,"136":1,"138":1}}],["子进程函数关键字参数",{"2":{"133":1}}],["子进程函数参数",{"2":{"133":1}}],["子进程函数",{"2":{"133":1}}],["子进程订阅者接收函数",{"2":{"82":1}}],["子进程初始化时实例化",{"2":{"67":1}}],["子进程可用的主动和被动通道",{"2":{"65":1}}],["接收数据并执行函数",{"2":{"64":1}}],["接收函数",{"2":{"55":1}}],["会自动判断key版本",{"2":{"311":1}}],["会自动识别文件格式",{"2":{"108":1}}],["会话负载信息",{"2":{"303":1}}],["会触发最大递归深度限制",{"2":{"291":1}}],["会挂起等待",{"2":{"63":1}}],["会阻塞线程",{"2":{"62":1}}],["数据",{"2":{"61":1,"62":1,"63":1,"89":1,"91":1}}],["没有异步的必要",{"2":{"61":1}}],["过滤函数",{"2":{"58":1,"64":1}}],["轻雪天气liteyuki",{"0":{"311":1},"1":{"312":1}}],["轻雪文档",{"2":{"306":1}}],["轻雪命令liteyuki",{"0":{"305":1},"1":{"306":1}}],["轻雪会收集以下内容",{"2":{"303":1}}],["轻雪原版资源包请查看liteyukibot",{"2":{"301":1}}],["轻雪主进程不涉及聊天部分",{"2":{"297":1}}],["轻雪插件是轻雪内置的一部分功能",{"2":{"294":1}}],["轻雪函数",{"0":{"288":1},"1":{"289":1,"290":1,"291":1,"292":1,"293":1},"2":{"288":1}}],["轻雪框架提供了一个内存共享通信的接口",{"2":{"280":1}}],["轻雪抽象消息事件",{"2":{"196":1}}],["轻雪生命周期管理",{"2":{"39":1}}],["轻雪实例",{"2":{"28":1}}],["进程生命周期函数",{"2":{"43":2,"45":2}}],["进程函数关键字参数",{"2":{"126":1}}],["进程函数参数",{"2":{"126":1}}],["进程函数",{"2":{"37":1,"126":1}}],["进程名",{"2":{"18":1,"126":1}}],["|",{"0":{"40":1,"138":1,"152":1,"161":1,"196":1,"197":1,"223":1,"224":1,"225":1,"226":1,"230":1,"231":1,"232":1,"235":1,"236":1,"239":1,"240":1,"241":1,"242":1,"251":1,"252":1,"261":1},"2":{"34":1,"37":1,"40":2,"55":1,"58":1,"138":1,"152":1,"161":1,"196":1,"197":1}}],["7",{"2":{"31":1,"120":1,"157":1,"160":1,"166":1,"167":1}}],["兼容键",{"2":{"30":1}}],["兼容旧版本",{"2":{"30":1}}],["获取用户信息",{"2":{"309":1}}],["获取唯一的轻雪bot实例",{"2":{"297":1}}],["获取共享内存",{"2":{"281":1}}],["获取主动通道",{"2":{"278":1}}],["获取被动通道",{"2":{"278":1}}],["获取已加载的插件",{"2":{"165":1}}],["获取日志格式",{"2":{"158":1}}],["获取指定子进程",{"2":{"138":1}}],["获取所有键值对",{"2":{"88":1}}],["获取键值对",{"2":{"86":1}}],["获取通道实例们",{"2":{"72":1}}],["获取通道实例",{"2":{"71":1}}],["获取配置值",{"2":{"118":1}}],["获取配置",{"2":{"29":1,"30":1}}],["获取轻雪实例",{"2":{"28":1}}],["未实现",{"2":{"24":1,"27":1,"50":1,"52":1}}],["生命周期函数",{"2":{"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"34":1,"41":2,"42":2,"44":2,"46":2}}],["生命周期管理",{"2":{"15":1}}],["关键字参数",{"2":{"19":1}}],["自动调用",{"2":{"19":1}}],["延迟重启时间",{"2":{"17":1}}],["外部启动接口",{"2":{"16":1}}],["初始化通道",{"2":{"60":1}}],["初始化日志",{"2":{"20":1}}],["初始化轻雪",{"2":{"19":1}}],["初始化轻雪实例",{"2":{"15":1}}],["初始化",{"2":{"15":1}}],["常规操作",{"2":{"15":1}}],["=none",{"2":{"18":1,"60":1,"64":1,"86":1,"196":2}}],["==",{"2":{"17":3,"72":1,"73":2,"74":2,"75":1,"92":1,"98":1,"99":2,"100":2,"101":2,"102":1,"158":1,"244":1,"245":1,"270":1}}],["=",{"0":{"17":1,"18":1,"29":1,"30":1,"60":1,"64":1,"86":1,"87":1,"95":1,"96":1,"108":1,"109":1,"110":1,"116":1,"118":1,"126":2,"150":2,"162":1,"169":1,"170":1,"171":1,"172":1,"173":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"184":1,"185":1,"186":1,"187":1,"188":1,"196":2,"207":1,"208":1,"210":1,"212":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"255":3,"256":3,"261":1,"262":1,"263":1},"2":{"15":9,"17":6,"18":2,"39":7,"40":1,"60":10,"61":1,"62":1,"63":2,"64":1,"69":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":2,"84":6,"85":2,"86":2,"87":1,"88":1,"90":2,"92":1,"94":1,"99":3,"100":2,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"116":1,"122":5,"124":3,"126":5,"128":1,"132":1,"133":1,"143":3,"150":2,"152":4,"159":2,"161":12,"162":6,"163":5,"196":10,"197":1,"202":5,"255":1,"260":1,"267":1,"268":2,"270":1,"271":1,"278":5,"281":1,"296":1,"297":2}}],["总通道",{"2":{"15":1}}],[">",{"2":{"15":1,"22":1,"26":1,"28":1,"29":1,"30":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,"62":1,"63":1,"64":3,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":2,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"130":1,"138":1,"143":1,"150":2,"158":1,"161":1,"162":1,"163":3,"165":1,"203":2,"204":1,"255":1,"256":1,"261":2,"262":2,"263":1,"264":1,"265":1,"267":1,"270":1,"271":1,"311":2}}],["配置项",{"2":{"311":1}}],["配置项目",{"2":{"104":1}}],["配置了命令别名的命令可以使用别名代替原命令",{"2":{"304":1}}],["配置文件尽量扁平化",{"2":{"103":1}}],["配置值",{"2":{"29":1,"30":1}}],["配置键",{"2":{"29":1,"30":1}}],["配置",{"2":{"15":2,"159":1,"306":1}}],["kind",{"2":{"213":1}}],["kill",{"2":{"128":1}}],["k",{"2":{"104":2}}],["keyword",{"2":{"256":2}}],["keywords为城市名",{"2":{"311":2}}],["keywords",{"0":{"256":2},"2":{"256":5,"307":1,"311":2}}],["keyerror",{"2":{"87":1,"134":1,"136":1}}],["keyvaluestore",{"0":{"83":1},"1":{"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1},"2":{"94":1,"97":1}}],["keys",{"0":{"30":1},"2":{"30":3}}],["key",{"0":{"29":1,"30":1,"85":1,"86":1,"87":2,"118":1},"2":{"29":3,"30":10,"85":6,"86":6,"87":11,"99":3,"100":3,"101":3,"104":2,"116":3,"118":2,"281":2,"305":4,"309":2,"311":1}}],["keyboardinterrupt",{"2":{"16":1}}],["kwargs=none",{"2":{"126":1}}],["kwargs",{"0":{"15":1,"19":1,"40":1,"49":1,"51":1,"126":1,"133":1},"2":{"15":3,"19":2,"40":3,"49":2,"51":2,"126":4,"133":3,"143":2,"271":2,"305":2}}],["knowledge",{"2":{"283":1}}],["know",{"2":{"6":1}}],["$",{"2":{"10":1}}],["qq群号",{"2":{"313":1}}],["qq",{"2":{"7":1}}],["questions",{"0":{"6":1,"7":1,"12":1}}],["quotes",{"2":{"286":2}}],["quot",{"2":{"3":2,"213":4,"286":1,"293":2,"305":2,"311":4}}],["joined",{"0":{"242":1}}],["join",{"0":{"127":1},"2":{"7":1,"17":1,"109":1,"127":2,"128":1,"162":2,"270":2}}],["json",{"0":{"106":1,"115":1},"2":{"0":2,"106":4,"108":2,"110":1,"115":2}}],["guidelines",{"2":{"286":2}}],["guide",{"0":{"282":1},"1":{"283":1,"284":1,"285":1,"286":1,"287":1},"2":{"286":1}}],["guild",{"0":{"217":1},"2":{"244":1,"245":1}}],["google",{"2":{"286":2}}],["go",{"2":{"277":1}}],["girl",{"2":{"273":1}}],["gitmoji",{"2":{"286":2}}],["github",{"2":{"7":1,"9":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"162":1,"163":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"273":1}}],["git",{"2":{"6":1,"9":2,"10":1,"11":2}}],["g",{"2":{"163":1,"314":1}}],["group",{"0":{"216":1},"2":{"244":1,"245":1,"305":9,"306":1,"307":2,"313":3,"314":1}}],["group775840726",{"2":{"7":1}}],["granted",{"2":{"213":1}}],["green>",{"2":{"159":1}}],["gather",{"2":{"40":1,"268":1}}],["gender",{"0":{"226":1}}],["generator",{"2":{"275":1}}],["generate",{"2":{"0":1,"286":1}}],["generic",{"0":{"59":1},"1":{"60":1,"61":1,"62":1,"63":1,"64":1},"2":{"60":2,"61":1}}],["getattr",{"2":{"267":1}}],["get",{"0":{"28":1,"29":1,"30":1,"71":1,"72":1,"74":1,"75":1,"86":1,"88":1,"94":1,"99":1,"102":1,"118":1,"138":1,"158":1,"165":1},"2":{"18":2,"28":2,"29":3,"30":5,"60":2,"61":1,"63":1,"71":2,"72":2,"73":1,"74":4,"75":3,"85":1,"86":4,"87":1,"88":2,"94":1,"97":1,"98":1,"99":3,"101":1,"102":3,"118":2,"138":2,"152":1,"158":1,"159":2,"161":3,"162":1,"165":1,"193":2,"268":1,"278":8,"281":1,"297":2,"305":3,"306":1,"309":2}}],["globalkeyvaluestore",{"0":{"93":1},"1":{"94":1,"95":1,"96":1},"2":{"97":1}}],["global",{"2":{"15":1,"64":1,"159":1,"307":2,"308":2}}],["gt",{"0":{"15":1,"22":1,"26":1,"28":1,"29":1,"30":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,"62":1,"63":1,"64":1,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"130":1,"138":1,"150":1,"158":1,"161":1,"162":1,"163":1,"165":1,"203":1,"204":1,"255":1,"256":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"270":1,"271":1},"2":{"79":3,"104":1,"202":1,"270":1,"286":2,"304":1,"305":7,"307":10,"309":2}}],["\`",{"2":{"3":1}}],["voice",{"0":{"220":1},"2":{"244":1,"245":1}}],["v",{"2":{"104":2}}],["validate",{"2":{"61":1}}],["valueerror",{"2":{"60":2,"69":1,"244":1}}],["value2",{"2":{"2":1}}],["value1",{"2":{"2":1}}],["value",{"0":{"85":1},"2":{"2":1,"3":3,"85":5,"100":3,"104":3,"116":2,"281":2,"305":2,"309":1}}],["var=value",{"2":{"290":1}}],["var2=value2",{"2":{"290":1}}],["var1=value1>",{"2":{"290":1}}],["var",{"0":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"66":1,"67":1,"68":1,"81":1,"82":1,"97":1,"98":1,"141":1,"142":1,"156":1,"258":1}}],["version=",{"2":{"296":1}}],["version",{"0":{"156":1},"2":{"11":1,"302":1}}],["venv",{"2":{"9":8}}],["vitepress",{"2":{"286":1}}],["view",{"2":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"162":1,"163":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1}}],["virtual",{"2":{"6":1,"9":5}}],["visit",{"2":{"3":1}}],["v11协议api",{"2":{"305":2}}],["v11",{"2":{"3":1,"292":1}}],["2s戳两次",{"2":{"291":1}}],["22",{"2":{"190":1}}],["27",{"2":{"120":1,"157":1}}],["24",{"2":{"31":1,"167":1}}],["23",{"2":{"31":1,"160":1,"166":1}}],["20代替空格",{"2":{"305":1}}],["20和end",{"2":{"291":1}}],["2024",{"2":{"31":2,"120":2,"151":2,"157":2,"160":2,"166":2,"167":2,"190":2,"192":2,"194":2,"200":2,"213":1,"253":2,"257":2}}],["2020",{"2":{"31":1,"120":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["20216",{"2":{"1":1,"3":1,"10":2}}],["20",{"2":{"11":1}}],["2019+",{"2":{"11":1}}],["2",{"0":{"217":1},"2":{"2":1,"291":1,"302":1}}],["occurred",{"2":{"268":1}}],["occupy",{"2":{"11":1}}],["object",{"2":{"277":1}}],["obtaining",{"2":{"213":1}}],["observer",{"0":{"140":1},"1":{"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1},"2":{"150":1,"297":2}}],["overall",{"2":{"155":1}}],["os",{"2":{"108":1,"109":3,"116":1,"162":9,"297":2}}],["out",{"2":{"213":1}}],["outlook",{"2":{"31":1,"120":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["output",{"2":{"2":1}}],["operator",{"0":{"252":1}}],["open",{"2":{"17":1,"105":1,"106":1,"107":1,"113":1,"114":1,"115":1,"287":1}}],["option",{"2":{"304":1}}],["optional",{"0":{"18":1,"60":1,"64":1,"86":2,"161":1,"188":1,"196":2},"2":{"17":1,"18":2,"29":1,"30":1,"60":1,"64":3,"84":2,"86":3,"161":1,"196":2}}],["opt",{"2":{"16":2,"161":3}}],["o",{"2":{"15":1}}],["ordinary",{"2":{"286":1}}],["organization",{"2":{"283":1}}],["or",{"2":{"4":1,"6":1,"11":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"162":1,"163":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"213":9,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":3,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"286":3}}],["official",{"2":{"273":2,"275":1}}],["of",{"0":{"3":1},"2":{"6":2,"10":1,"11":1,"61":1,"69":1,"155":1,"161":1,"213":8,"275":1,"283":4,"286":5}}],["others",{"0":{"275":1}}],["otherwise",{"2":{"213":1}}],["other",{"0":{"2":1,"4":1,"7":1,"12":1,"261":1,"262":1},"2":{"2":1,"3":1,"11":2,"213":2,"261":2,"262":2,"277":3}}],["one",{"2":{"6":1,"278":1}}],["onebot",{"0":{"3":1},"2":{"2":2,"3":2,"4":1,"292":1,"305":1}}],["only",{"2":{"0":1,"64":1,"278":1}}],["on",{"0":{"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"64":1,"73":1,"74":1,"75":1,"81":1,"82":1,"90":3,"99":1,"100":1,"101":1,"102":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"253":1,"255":1,"256":1},"1":{"254":1,"255":1,"256":1},"2":{"0":1,"3":1,"6":1,"7":1,"9":1,"11":3,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":3,"23":3,"24":3,"25":3,"26":3,"27":3,"28":1,"29":1,"30":1,"39":1,"40":1,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"55":2,"60":3,"61":1,"62":1,"63":1,"64":5,"69":1,"70":1,"71":1,"72":2,"73":4,"74":4,"75":3,"78":1,"81":1,"82":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":12,"91":2,"92":1,"94":1,"98":1,"99":4,"100":4,"101":4,"102":3,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":3,"146":3,"147":3,"148":3,"149":3,"150":3,"152":1,"158":1,"159":1,"161":1,"162":1,"163":1,"165":1,"183":1,"190":1,"191":2,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"253":1,"254":1,"255":2,"256":5,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"273":1,"278":6,"286":1,"297":1}}],["45m",{"2":{"313":2}}],["47",{"2":{"194":1}}],["41",{"2":{"10":1}}],["40",{"2":{"10":1}}],["4",{"0":{"219":1},"2":{"1":1}}],["utility",{"2":{"285":1}}],["utils",{"0":{"266":1},"1":{"267":1,"268":1,"269":1,"270":1,"271":1},"2":{"285":1}}],["utf",{"2":{"105":1,"106":1,"107":1}}],["url",{"0":{"212":1}}],["unload",{"2":{"307":1,"308":1}}],["understand",{"2":{"286":1}}],["unit",{"2":{"285":1}}],["uninfo的部分模型定义",{"2":{"213":1}}],["uninstall",{"2":{"6":2,"307":1,"308":1}}],["until",{"2":{"268":2}}],["unclassified",{"0":{"172":2,"178":1}}],["unsupported",{"2":{"108":1}}],["ubuntu",{"2":{"11":1}}],["usage",{"0":{"177":1},"2":{"283":1}}],["using",{"2":{"6":3,"10":1}}],["users",{"2":{"286":1}}],["user",{"0":{"196":1,"221":1,"238":2,"250":2,"309":1},"1":{"222":1,"223":1,"224":1,"225":1,"226":1},"2":{"196":3,"197":2,"244":1,"245":2,"265":1,"286":1,"291":3}}],["used",{"2":{"64":1,"189":1,"278":1,"286":1}}],["use",{"2":{"1":1,"3":2,"4":2,"6":4,"9":4,"10":1,"11":2,"30":1,"161":1,"213":2,"284":1,"286":2}}],["updates",{"2":{"1":1}}],["update",{"2":{"1":2,"2":2,"6":1,"11":2,"108":3,"109":1,"110":1,"113":1,"114":1,"115":1,"117":1,"305":1,"306":1,"307":1,"308":1}}],["feat",{"2":{"286":1}}],["features",{"2":{"286":2}}],["feature",{"2":{"286":1}}],["fp",{"0":{"113":1,"114":1,"115":1},"2":{"113":3,"114":2,"115":2}}],["flake8",{"2":{"284":1}}],["flat",{"0":{"104":1},"2":{"104":2,"105":1,"106":1,"107":1}}],["flag",{"2":{"39":1}}],["friend",{"2":{"291":2}}],["front",{"2":{"283":1}}],["from",{"0":{"105":1,"106":1,"107":1,"108":1,"109":1,"113":1,"114":1,"115":1,"116":1},"2":{"62":1,"105":3,"106":3,"107":3,"108":4,"109":2,"110":2,"113":1,"114":1,"115":1,"116":1,"199":2,"213":1,"277":1,"278":4,"296":1,"297":3}}],["free",{"2":{"213":1}}],["frequently",{"0":{"6":1}}],["framework",{"2":{"155":1,"277":1,"283":1,"285":3}}],["f",{"2":{"17":1,"18":2,"30":1,"60":2,"61":1,"69":2,"104":1,"105":1,"106":1,"107":1,"108":2,"109":1,"125":1,"128":2,"130":1,"134":1,"135":1,"136":1,"137":1,"161":5,"162":9,"163":1,"199":2,"244":2,"245":2,"268":1,"278":2,"297":1}}],["future",{"2":{"268":1}}],["furnished",{"2":{"213":1}}],["func=none",{"2":{"150":1}}],["func=lambda",{"2":{"72":1,"73":2,"74":2,"75":1,"278":1}}],["funcs",{"0":{"40":2,"81":1,"82":1,"91":1},"2":{"39":6,"40":4,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2,"64":1,"90":6,"91":2,"92":1}}],["func",{"0":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":4,"23":3,"24":3,"25":3,"26":4,"27":3,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"39":1,"40":3,"41":4,"42":4,"43":4,"44":4,"45":4,"46":4,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"62":1,"63":1,"64":3,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":3,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":2,"127":1,"128":1,"129":1,"130":1,"132":1,"133":2,"134":1,"135":1,"136":1,"137":1,"138":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":4,"152":1,"158":1,"159":1,"161":1,"162":1,"163":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":2},"2":{"22":7,"23":6,"24":6,"25":6,"26":7,"27":6,"34":2,"37":2,"39":6,"40":8,"41":8,"42":8,"43":8,"44":8,"45":8,"46":8,"55":2,"58":2,"60":2,"64":20,"81":1,"82":1,"90":8,"91":2,"126":1,"133":3,"143":2,"150":7,"267":2,"271":4,"290":1}}],["function实现语法高亮",{"2":{"293":1}}],["functions",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["function",{"2":{"11":2,"278":1,"288":1,"290":1,"291":2,"305":3}}],["full",{"2":{"6":1,"278":1}}],["familiar",{"2":{"283":2}}],["failed",{"2":{"6":2,"161":1}}],["faq",{"0":{"5":1},"1":{"6":1,"7":1}}],["false",{"0":{"108":1,"109":1,"110":1,"255":1,"256":1},"2":{"2":4,"60":2,"84":2,"267":1}}],["follow",{"2":{"286":4}}],["following",{"2":{"2":1,"213":1,"283":1,"286":2}}],["folder",{"2":{"189":1}}],["found",{"2":{"61":1,"69":1,"108":1,"109":1,"128":1,"130":1,"134":1,"136":1}}],["fork",{"2":{"283":1}}],["formatting",{"2":{"284":1}}],["format=get",{"2":{"159":1}}],["formats",{"2":{"109":1}}],["format",{"0":{"158":1,"163":1},"2":{"108":1,"158":3,"159":1,"161":2,"163":1,"286":1}}],["for",{"0":{"12":1},"2":{"1":1,"3":2,"6":2,"18":1,"30":1,"40":1,"60":1,"70":1,"91":1,"104":2,"108":1,"109":2,"116":1,"125":1,"127":1,"129":1,"135":1,"137":1,"150":1,"162":2,"193":2,"199":1,"204":1,"213":2,"254":1,"256":1,"268":2,"277":1,"278":1,"284":1,"286":5,"296":1}}],["fonts",{"2":{"1":1}}],["finally",{"0":{"287":1}}],["field",{"2":{"286":3}}],["fields",{"2":{"0":1,"3":2}}],["fixing",{"2":{"286":2}}],["fitness",{"2":{"213":1}}],["filter=lambda",{"2":{"297":1}}],["filter",{"0":{"56":1,"57":1,"58":1,"64":2,"142":1,"150":2},"2":{"58":2,"64":8,"72":1,"73":2,"74":2,"75":1,"150":5,"278":1}}],["file",{"0":{"105":1,"106":1,"107":1,"150":1},"2":{"3":1,"31":1,"105":4,"106":4,"107":4,"108":12,"109":3,"113":2,"114":2,"115":2,"120":1,"150":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1,"285":1,"297":3}}],["filesystemeventhandler",{"0":{"144":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":1}}],["filesystemevent",{"2":{"141":1,"142":1,"150":1,"297":2}}],["files",{"0":{"108":2},"2":{"0":4,"108":3,"109":1,"110":1,"213":1}}],["fill",{"2":{"1":1,"3":1,"286":1}}],["first",{"2":{"0":1,"6":1,"283":1}}],["b包也定义了一个index",{"2":{"302":1}}],["bilingual",{"2":{"286":1}}],["bind",{"2":{"159":1,"312":1}}],["binding",{"2":{"1":1}}],["bin",{"2":{"9":2}}],["brief",{"2":{"286":1}}],["branch",{"2":{"283":4}}],["break",{"2":{"254":1}}],["browser",{"2":{"6":1}}],["black",{"2":{"284":1}}],["block",{"0":{"202":1,"255":1,"256":1},"2":{"202":4,"255":2,"256":2}}],["blue>",{"2":{"159":1}}],["b",{"2":{"104":1,"270":2,"314":1}}],["bool=false",{"2":{"108":1,"109":1,"110":1,"255":1,"256":1}}],["bool=true",{"2":{"87":1,"150":1,"162":1}}],["bool",{"0":{"60":1,"87":1,"108":1,"109":1,"110":1,"130":1,"150":1,"162":1,"202":1,"241":1,"255":1,"256":1,"263":1,"264":1,"265":1,"267":1},"2":{"56":1,"57":1,"60":1,"130":1,"142":1,"202":1,"258":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":2}}],["both",{"2":{"285":1}}],["bot",{"0":{"13":1,"28":1,"31":1,"196":1,"273":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":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},"2":{"1":1,"2":1,"10":1,"11":1,"15":2,"28":4,"29":1,"30":4,"152":2,"196":3,"197":2,"273":3,"274":1,"275":1,"278":4,"285":2,"289":1,"297":2,"305":1,"313":3,"314":1}}],["bugs",{"2":{"286":2}}],["bug",{"2":{"286":2}}],["business",{"2":{"285":1}}],["built",{"2":{"189":2,"285":1}}],["build",{"2":{"10":1}}],["but",{"2":{"3":1,"213":1,"278":1,"286":1}}],["based",{"2":{"273":1}}],["baseseg",{"0":{"206":1,"209":1,"211":1},"1":{"207":1,"208":1,"210":1,"212":1}}],["basemodel",{"0":{"174":1,"182":1,"206":1,"221":1,"227":1,"233":1,"237":1,"243":1},"1":{"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"207":1,"208":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1}}],["baseexception",{"0":{"154":1}}],["bashdocker",{"2":{"10":1}}],["bash",{"2":{"9":1}}],["basically",{"2":{"3":1}}],["basic",{"0":{"1":1},"2":{"283":2}}],["better",{"2":{"287":1}}],["between",{"2":{"6":1}}],["best",{"0":{"272":1},"1":{"273":1,"274":1,"275":1}}],["before",{"0":{"22":1,"25":1,"26":1,"41":1,"43":1,"45":1,"47":1,"49":1,"51":1},"2":{"22":2,"25":2,"26":2,"39":3,"41":2,"43":2,"45":2,"47":3,"49":3,"51":3}}],["be",{"2":{"3":1,"6":1,"11":1,"30":1,"61":1,"64":1,"69":1,"145":1,"213":2,"278":1,"286":2}}],["by",{"2":{"3":1,"4":1,"6":1,"278":1,"284":1}}],["14s",{"2":{"313":2}}],["1h",{"2":{"313":2}}],["1d",{"2":{"313":2}}],["19",{"2":{"194":1,"200":1,"253":1,"257":1}}],["1919810",{"2":{"1":1}}],["1145141919810",{"2":{"305":1}}],["11",{"2":{"192":1}}],["10",{"2":{"156":1,"305":1}}],["10+",{"2":{"9":1,"11":1}}],["18",{"2":{"151":1}}],["12",{"2":{"120":1,"157":1}}],["127",{"2":{"1":1,"3":1}}],["1gb",{"2":{"11":2}}],["1vcpu",{"2":{"11":1}}],["1",{"0":{"216":1},"2":{"1":1,"2":1,"3":1,"17":2,"18":2,"64":1,"73":2,"74":2,"75":1,"92":2,"99":3,"100":2,"101":1,"102":1,"104":1,"144":1,"145":1,"161":4,"270":2,"296":1,"302":2}}],["03",{"2":{"278":2}}],["0000",{"2":{"278":3}}],["00",{"2":{"278":18}}],["02",{"2":{"167":1,"192":1}}],["04",{"2":{"151":1}}],["04+",{"2":{"11":1}}],["0",{"0":{"17":1,"215":1,"255":1,"256":1},"2":{"1":2,"3":2,"15":1,"17":2,"39":1,"72":1,"73":2,"74":2,"75":1,"92":1,"98":2,"99":2,"100":2,"101":2,"102":1,"202":1,"291":1,"296":2,"302":2}}],["html中用",{"2":{"302":1}}],["html",{"2":{"302":1}}],["html文件会被覆盖",{"2":{"302":1}}],["html文件",{"2":{"302":2}}],["https",{"2":{"9":1}}],["has",{"2":{"286":1}}],["hash",{"0":{"183":1},"2":{"183":2}}],["harmless",{"2":{"286":1}}],["handle",{"0":{"203":1},"2":{"190":1,"191":1,"203":1}}],["handlers",{"2":{"202":1,"203":1,"204":1}}],["handler",{"0":{"199":1,"260":1},"2":{"150":3,"199":1,"203":4,"204":2,"260":3,"261":4,"262":4,"263":2}}],["have",{"2":{"3":1,"7":1,"10":1,"11":1}}],["hints",{"2":{"286":1}}],["hint",{"2":{"60":1}}],["holders",{"2":{"213":1}}],["homepage",{"0":{"180":1}}],["how",{"0":{"283":1},"1":{"284":1},"2":{"6":2}}],["host",{"2":{"1":1}}],["help",{"2":{"307":1,"308":1}}],["hello",{"2":{"289":5,"305":1}}],["hereby",{"2":{"213":1}}],["here",{"2":{"3":2}}],["header",{"2":{"1":1}}],["echo",{"2":{"289":3}}],["easy",{"2":{"286":1}}],["each",{"2":{"286":2}}],["editing",{"2":{"286":1}}],["etc",{"2":{"286":1}}],["e",{"2":{"87":2,"161":1,"163":1,"268":2}}],["emoji",{"2":{"286":1}}],["email",{"2":{"31":1,"120":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["empty",{"0":{"255":1,"256":1,"264":1},"2":{"1":1,"161":1,"162":1,"264":1}}],["else",{"2":{"17":1,"18":1,"28":1,"40":1,"64":2,"69":1,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"90":2,"105":1,"106":1,"107":1,"158":1,"159":7,"161":2,"244":1,"254":1,"268":1,"270":1}}],["elif",{"2":{"17":2,"60":1,"64":1,"108":4,"161":2,"162":1,"244":1,"245":1}}],["event装饰器监听文件系统事件",{"2":{"297":1}}],["events",{"2":{"297":1}}],["eventhandler",{"0":{"203":2},"2":{"202":1,"203":4}}],["event",{"0":{"76":1,"77":1,"145":1,"146":1,"147":1,"148":1,"149":2,"150":2,"191":1,"194":1,"204":1,"263":1,"264":1,"265":1},"1":{"77":1,"78":2,"195":1,"196":1,"197":1},"2":{"15":4,"21":1,"79":1,"145":1,"146":2,"147":2,"148":2,"149":3,"150":8,"191":3,"194":1,"197":2,"204":4,"213":1,"256":2,"261":3,"262":3,"263":2,"264":1,"265":2,"268":2,"286":1,"297":8}}],["every",{"2":{"1":1}}],["errors",{"2":{"6":1}}],["error",{"0":{"87":1},"2":{"6":1,"87":3,"159":1,"268":1}}],["express",{"2":{"213":1}}],["extra",{"0":{"181":1}}],["extensions",{"2":{"297":2}}],["extend",{"2":{"152":1}}],["external",{"2":{"1":1}}],["exclude",{"2":{"297":2}}],["exc",{"2":{"161":1,"204":1}}],["exception模块包含了liteyuki运行中的所有错误",{"2":{"153":1}}],["exception",{"0":{"153":1},"1":{"154":1},"2":{"161":1,"204":1,"268":2}}],["except",{"2":{"16":1,"87":1,"161":1,"204":1,"268":2}}],["executor",{"2":{"63":1}}],["executable",{"2":{"6":1,"11":1,"17":3}}],["exist",{"2":{"162":1}}],["exists",{"2":{"60":2,"69":1,"108":1,"109":1,"162":2}}],["exit",{"2":{"17":1}}],["example",{"0":{"3":1,"278":1},"2":{"6":2}}],["enclosed",{"2":{"286":1}}],["encoding=",{"2":{"105":1,"106":1,"107":1}}],["english",{"2":{"285":1}}],["en",{"2":{"285":1}}],["entry",{"2":{"285":1}}],["enter",{"2":{"6":1}}],["end",{"2":{"283":1,"290":1}}],["endswith",{"2":{"108":3,"109":1,"162":1,"297":1}}],["enumerate",{"2":{"254":1}}],["enum",{"0":{"168":1,"214":1},"1":{"169":1,"170":1,"171":1,"172":1,"173":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1}}],["environ",{"2":{"116":1}}],["environment",{"2":{"9":6}}],["environments",{"2":{"3":1,"6":1,"11":1}}],["env",{"0":{"116":1},"2":{"116":1}}],["enforcing",{"2":{"60":1}}],["ensure",{"2":{"1":1,"268":1,"283":1,"286":7}}],["enable",{"2":{"1":1,"284":1,"305":2,"306":1,"307":2,"308":2}}],["mcfunction",{"2":{"289":2}}],["mix",{"2":{"286":1}}],["mit",{"2":{"213":1}}],["minimum",{"2":{"11":1}}],["msg",{"2":{"199":3,"305":1}}],["much",{"2":{"286":3}}],["mute",{"0":{"241":1}}],["must",{"2":{"61":1,"69":1,"145":1}}],["multiple",{"2":{"0":1,"11":1,"286":1}}],["m",{"2":{"9":2,"11":1,"163":1,"254":2,"314":1}}],["mypy",{"2":{"284":1}}],["my",{"2":{"6":1}}],["member",{"0":{"237":1,"251":2,"252":1},"1":{"238":1,"239":1,"240":1,"241":1,"242":1},"2":{"305":1}}],["memory",{"0":{"97":1},"2":{"11":1,"84":3,"98":1,"99":3,"100":3,"101":3,"102":2,"126":1,"277":1,"281":3}}],["merchantability",{"2":{"213":1}}],["merge",{"0":{"117":1},"2":{"0":1,"117":1,"213":1,"283":1}}],["meta",{"2":{"161":4,"296":1}}],["metadata",{"0":{"188":1},"2":{"161":13}}],["methods",{"2":{"3":1}}],["messages",{"2":{"277":2}}],["message=",{"2":{"197":1,"305":1}}],["message=message",{"2":{"197":1}}],["messageevent",{"0":{"191":1,"195":1,"196":1,"204":1,"263":1,"264":1,"265":1},"1":{"196":1,"197":1},"2":{"191":1,"196":1,"197":1,"204":1,"256":1,"258":1,"261":1,"262":1,"263":1,"264":1,"265":1}}],["message",{"0":{"196":3,"197":1,"199":1,"205":1,"255":1},"1":{"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1},"2":{"4":1,"191":1,"196":9,"197":5,"199":1,"255":1,"256":2,"286":5,"313":1,"314":1}}],["make",{"2":{"287":1}}],["mark",{"2":{"286":1}}],["markdown",{"2":{"283":1,"286":1}}],["marsho",{"2":{"273":1}}],["map",{"2":{"275":1}}],["matcher",{"0":{"200":1,"201":1,"254":3,"255":1,"256":1},"1":{"201":1,"202":2,"203":2,"204":2},"2":{"200":1,"254":9,"255":6,"256":1}}],["match",{"2":{"163":1}}],["maintainer",{"2":{"283":1}}],["mainprocess",{"2":{"277":1}}],["main",{"0":{"81":1},"2":{"6":1,"9":1,"28":1,"60":2,"64":4,"69":1,"71":1,"72":1,"84":1,"85":1,"86":1,"87":1,"88":1,"90":5,"91":1,"92":1,"277":1,"278":6,"283":1,"285":1,"300":1}}],["management",{"2":{"275":1}}],["manager",{"0":{"120":1,"166":1},"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,"137":1,"138":1},"2":{"15":1,"16":1,"17":1,"18":1,"21":1,"120":1,"166":1}}],["many",{"2":{"6":1}}],["manually",{"2":{"2":1}}],["may",{"2":{"3":1}}],["moved",{"0":{"148":1},"2":{"148":1}}],["more",{"2":{"2":1,"11":1,"284":1}}],["moduletype",{"0":{"186":1}}],["module=module",{"2":{"161":1}}],["module",{"0":{"13":1,"31":1,"53":1,"76":1,"79":1,"80":1,"103":1,"119":1,"120":1,"139":1,"140":1,"151":1,"152":1,"153":1,"155":1,"157":1,"160":1,"161":1,"164":1,"166":1,"167":1,"171":2,"186":1,"187":1,"189":1,"190":1,"192":1,"194":1,"198":1,"200":1,"205":1,"213":1,"253":1,"257":1,"266":1,"270":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":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,"54":1,"55":1,"56":1,"57":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,"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,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":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,"137":1,"138":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"154":1,"156":1,"158":1,"159":1,"161":1,"162":1,"163":1,"165":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"191":1,"193":1,"195":1,"196":1,"197":1,"199":1,"201":1,"202":1,"203":1,"204":1,"206":1,"207":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,"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,"251":1,"252":1,"254":1,"255":1,"256":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1},"2":{"152":3,"155":1,"161":26,"162":9,"163":1,"183":1,"189":1,"270":1}}],["modified",{"0":{"145":1},"2":{"10":1,"145":2,"146":1,"147":1,"148":1,"149":1,"150":4}}],["modify",{"2":{"0":2,"213":1}}],["modes",{"2":{"278":1}}],["models",{"0":{"213":1},"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,"251":1,"252":1}}],["model",{"0":{"167":1,"184":1},"1":{"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1},"2":{"167":1,"273":1}}],["mode为true",{"2":{"140":1}}],["mode",{"2":{"2":5,"6":3,"278":5,"284":2,"305":2,"306":1}}],["most",{"2":{"0":1}}],["lyf结尾",{"2":{"289":1}}],["lyfunction语法",{"2":{"305":1}}],["lyfunction",{"2":{"289":1}}],["lt",{"2":{"286":2,"304":1,"305":7,"307":10,"309":2}}],["lead",{"2":{"286":1}}],["least",{"2":{"11":2}}],["len",{"2":{"116":1}}],["level=level",{"2":{"159":1}}],["level",{"0":{"158":1,"235":1},"2":{"1":3,"158":3,"159":10}}],["last",{"2":{"143":4}}],["lambda",{"2":{"98":1,"99":2,"100":2,"101":2,"102":1}}],["latest",{"2":{"10":1}}],["language",{"2":{"2":2,"283":1,"286":3}}],["location",{"2":{"275":1}}],["local",{"2":{"1":1}}],["locks",{"2":{"87":1}}],["lock",{"0":{"96":2},"2":{"85":3,"86":3,"87":3,"94":1}}],["loop",{"0":{"92":1},"2":{"15":4,"60":1,"63":3,"84":2,"92":2,"268":10}}],["logic",{"2":{"285":1}}],["log0000",{"2":{"278":1}}],["logger",{"0":{"20":1},"2":{"15":1,"16":2,"17":1,"19":1,"20":1,"30":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"105":1,"106":1,"107":1,"108":2,"109":1,"125":1,"128":2,"130":1,"135":1,"137":1,"159":11,"161":3,"162":3,"199":2,"268":1,"278":3,"297":2}}],["logo",{"2":{"15":1}}],["logs",{"2":{"2":1}}],["log",{"0":{"157":1,"159":1},"1":{"158":1,"159":1},"2":{"1":4,"6":3,"20":1,"157":1,"159":3,"278":1}}],["loaded",{"0":{"165":1},"2":{"165":1}}],["loader",{"0":{"111":1,"113":1,"114":1,"115":1,"116":1,"117":3,"192":1,"193":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"193":1},"2":{"15":1,"113":1,"114":1,"115":1,"116":1,"117":4,"193":1}}],["loading",{"2":{"105":1,"106":1,"107":1}}],["load",{"0":{"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"160":1,"161":1,"162":1},"1":{"161":1,"162":1,"163":1},"2":{"0":1,"2":2,"15":1,"105":3,"106":3,"107":3,"108":4,"109":2,"110":3,"113":2,"114":2,"115":2,"116":1,"152":2,"160":1,"161":3,"162":2,"193":2,"307":1,"308":1}}],["links",{"2":{"286":2}}],["linux",{"2":{"9":2,"11":1,"17":1}}],["like",{"2":{"277":1}}],["liability",{"2":{"213":1}}],["liable",{"2":{"213":1}}],["limitation",{"2":{"213":1}}],["limited",{"2":{"4":1,"213":1}}],["license",{"2":{"213":1}}],["litedoc",{"2":{"275":1,"286":1}}],["liteecho",{"0":{"190":1,"191":1},"1":{"191":1},"2":{"190":2,"191":2,"305":1}}],["liteyukiexception",{"0":{"154":1}}],["liteyukistudio",{"2":{"9":1,"31":1,"120":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["liteyuki",{"0":{"13":1,"31":1,"53":1,"76":1,"79":1,"80":1,"103":1,"119":1,"120":1,"139":1,"140":1,"151":1,"153":1,"155":1,"157":1,"160":1,"164":1,"166":1,"167":1,"189":1,"190":1,"192":1,"194":1,"198":1,"200":1,"205":1,"213":1,"253":1,"257":1,"266":1,"307":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":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,"54":1,"55":1,"56":1,"57":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,"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,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":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,"137":1,"138":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"154":1,"156":1,"158":1,"159":1,"161":1,"162":1,"163":1,"165":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"191":1,"193":1,"195":1,"196":1,"197":1,"199":1,"201":1,"202":1,"203":1,"204":1,"206":1,"207":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,"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,"251":1,"252":1,"254":1,"255":1,"256":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"308":1},"2":{"1":6,"2":4,"3":2,"4":2,"6":3,"9":2,"10":1,"11":1,"15":2,"28":1,"152":2,"155":1,"161":5,"193":3,"273":4,"274":3,"275":6,"277":1,"278":12,"281":2,"283":4,"285":6,"286":2,"287":1,"288":1,"296":1,"297":4,"300":1,"301":1,"305":4,"306":3}}],["liteyukibot",{"0":{"14":1,"28":1},"1":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"0":5,"9":2,"10":1,"17":1,"28":2,"152":1,"273":2,"274":2,"275":2,"277":1,"285":3}}],["life",{"2":{"39":1}}],["lifespan=self",{"2":{"15":1}}],["lifespan",{"0":{"22":2,"23":1,"24":1,"25":1,"26":2,"27":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"124":2},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":2,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2},"2":{"15":3,"22":5,"23":4,"24":4,"25":4,"26":5,"27":4,"31":1,"34":2,"37":2,"39":6,"40":4,"41":4,"42":4,"43":4,"44":4,"45":4,"46":4,"124":4}}],["listen",{"2":{"277":1}}],["listening",{"2":{"1":1}}],["listdir",{"2":{"109":1,"162":2}}],["list",{"0":{"196":1,"256":1},"2":{"1":4,"39":6,"60":2,"81":1,"82":1,"196":1,"202":1,"254":3,"256":1,"305":1,"307":2,"308":1}}],["switch",{"2":{"305":2,"306":1}}],["simple",{"2":{"296":1}}],["single",{"2":{"286":1}}],["signature",{"2":{"271":2}}],["sides",{"2":{"3":1}}],["side",{"0":{"3":1}}],["src",{"2":{"193":1,"285":2,"297":5}}],["script",{"2":{"275":1}}],["scripts",{"2":{"9":2}}],["scope",{"0":{"248":1},"2":{"244":4,"245":4}}],["scene",{"0":{"227":1,"232":1,"249":2},"1":{"228":1,"229":1,"230":1,"231":1,"232":1},"2":{"244":1,"245":1}}],["scenetype",{"0":{"214":1,"229":1},"1":{"215":1,"216":1,"217":1,"218":1,"219":1,"220":1},"2":{"244":7,"245":6}}],["schedule",{"2":{"150":1}}],["shinjuku",{"2":{"311":1}}],["shellstatistic",{"2":{"313":1}}],["shellbind",{"2":{"311":1}}],["shellweather",{"2":{"311":1}}],["shellmain",{"2":{"302":1}}],["shellvar",{"2":{"290":1}}],["shellcmd",{"2":{"289":1}}],["shell",{"2":{"289":1,"291":1}}],["should",{"2":{"286":7}}],["showing",{"2":{"275":1}}],["show",{"2":{"159":8}}],["shall",{"2":{"213":2}}],["shared",{"0":{"97":1},"2":{"84":3,"98":1,"99":3,"100":3,"101":3,"102":2,"126":1,"277":1,"281":3}}],["shutdown",{"0":{"24":1,"25":1,"43":1,"44":1,"49":1,"50":1},"2":{"24":2,"25":2,"39":2,"43":2,"44":2,"49":3,"50":3}}],["syntax",{"2":{"283":1,"286":1}}],["sync",{"0":{"32":1,"35":1,"54":1,"56":1},"2":{"34":1,"37":1,"55":1,"58":1,"271":1}}],["sys",{"2":{"17":3,"159":1}}],["system",{"0":{"150":1},"2":{"11":2,"17":4,"150":1,"297":2}}],["snowykami",{"2":{"31":2,"120":2,"151":2,"157":2,"160":2,"166":2,"167":2,"190":2,"192":2,"194":2,"200":2,"253":2,"257":2}}],["sleep",{"2":{"17":1,"278":1,"290":1,"291":1}}],["style",{"2":{"286":2,"302":2}}],["stem",{"2":{"270":2}}],["stdout",{"2":{"159":1}}],["store",{"2":{"84":1,"85":1,"86":1,"87":2,"88":1,"189":1}}],["storage",{"0":{"80":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},"2":{"79":2,"281":2}}],["stopped",{"2":{"16":1}}],["stopping",{"2":{"16":1}}],["stop",{"0":{"21":1},"2":{"15":1,"16":1,"21":2}}],["standardization",{"0":{"286":1}}],["statistic",{"2":{"314":1}}],["statistics",{"0":{"313":1},"1":{"314":1}}],["staticmethod",{"2":{"39":1,"40":1,"90":1,"91":1}}],["status",{"2":{"305":1,"306":1}}],["stat",{"2":{"275":1,"314":1}}],["star",{"2":{"275":1}}],["starmap",{"2":{"275":1}}],["startup",{"2":{"278":2}}],["startswith",{"2":{"116":1,"190":1,"191":1}}],["started",{"2":{"6":1}}],["start",{"0":{"22":1,"23":1,"41":1,"42":1,"47":1,"48":1,"92":1,"125":1,"134":1,"135":1},"2":{"1":2,"6":1,"16":1,"17":2,"22":2,"23":2,"39":2,"41":2,"42":2,"47":3,"48":3,"92":2,"125":2,"134":2,"135":2,"269":1,"278":1}}],["starting",{"2":{"0":1,"125":1,"135":1}}],["strings",{"2":{"286":2}}],["strip",{"2":{"191":2}}],["str=",{"2":{"116":1}}],["structure",{"0":{"285":1},"2":{"61":1}}],["str",{"0":{"18":1,"29":1,"30":2,"60":1,"69":1,"70":1,"71":1,"72":1,"73":2,"74":2,"75":2,"78":2,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"99":2,"100":2,"101":2,"102":2,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":1,"113":1,"114":1,"115":1,"116":1,"118":1,"122":2,"126":1,"128":1,"130":1,"133":1,"134":1,"136":1,"138":1,"150":1,"152":1,"158":2,"161":1,"162":1,"163":2,"165":1,"175":1,"176":1,"177":1,"179":1,"180":1,"181":1,"185":1,"187":1,"196":9,"197":2,"207":1,"208":1,"210":1,"212":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"230":1,"231":1,"234":1,"236":1,"239":1,"246":1,"247":1,"248":1,"256":1,"270":1},"2":{"15":1,"18":2,"29":2,"30":3,"35":1,"36":1,"60":2,"68":2,"69":2,"70":2,"71":2,"72":3,"73":2,"74":2,"75":2,"78":2,"81":1,"82":1,"84":5,"85":1,"86":1,"87":1,"88":3,"89":1,"90":1,"91":1,"99":2,"100":2,"101":2,"102":2,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":1,"113":1,"114":1,"115":1,"118":1,"122":2,"124":2,"126":1,"128":1,"130":1,"132":1,"133":1,"134":1,"136":1,"138":1,"150":1,"152":1,"158":2,"161":1,"162":1,"163":3,"165":2,"196":9,"197":2,"256":1,"265":1,"270":2,"278":1}}],["search",{"2":{"307":1,"308":1}}],["see",{"2":{"284":1}}],["segment",{"0":{"207":1}}],["segments",{"0":{"205":1},"1":{"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1}}],["sell",{"2":{"213":1}}],["select",{"2":{"199":1}}],["self",{"0":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"39":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,"60":1,"61":1,"62":1,"63":1,"64":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"92":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"145":1,"146":1,"147":1,"148":1,"149":1,"183":1,"196":1,"197":1,"202":1,"203":1,"204":1,"244":1,"245":1,"246":1,"260":1,"261":1,"262":1,"263":1},"2":{"15":13,"16":4,"17":4,"18":2,"19":2,"20":1,"21":3,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"39":8,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":3,"48":3,"49":3,"50":3,"51":3,"52":3,"60":14,"61":6,"62":3,"63":2,"64":3,"78":3,"84":7,"85":3,"86":3,"87":4,"88":3,"89":2,"90":1,"92":4,"112":2,"113":3,"114":3,"115":3,"116":3,"117":3,"118":2,"122":6,"124":4,"125":2,"126":2,"127":2,"128":3,"129":3,"130":3,"132":2,"133":2,"134":3,"135":2,"136":3,"137":2,"138":2,"145":1,"146":2,"147":2,"148":2,"149":2,"183":2,"196":10,"197":3,"202":5,"203":2,"204":3,"244":7,"245":8,"260":2,"261":2,"262":2,"263":3}}],["session",{"0":{"194":1,"196":2,"198":1,"200":1,"205":1,"213":1,"243":1,"244":1,"253":1,"257":1},"1":{"195":1,"196":1,"197":1,"199":1,"201":1,"202":1,"203":1,"204":1,"206":1,"207":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,"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":2,"245":2,"246":2,"247":2,"248":2,"249":2,"250":2,"251":2,"252":2,"254":1,"255":1,"256":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1},"2":{"196":6,"197":5,"244":1}}],["service",{"0":{"170":2},"2":{"163":1,"296":1}}],["server",{"2":{"1":1,"3":1,"11":1}}],["sequence",{"0":{"40":1},"2":{"40":2}}],["send",{"0":{"61":1},"2":{"18":2,"60":2,"61":4,"69":1,"71":1,"72":1,"74":1,"75":1,"85":1,"86":1,"87":1,"88":1,"89":1,"92":1,"99":1,"102":1,"197":1,"277":1,"278":3,"305":1}}],["setting",{"2":{"284":1}}],["set",{"0":{"69":1,"70":1,"73":1,"85":1,"100":1,"162":1},"2":{"15":1,"21":1,"69":2,"70":2,"72":1,"73":3,"85":2,"99":1,"100":3,"162":2,"268":1,"281":1,"305":2,"306":1,"309":2}}],["s",{"2":{"11":1}}],["sparkles",{"2":{"286":2}}],["space",{"2":{"11":1}}],["split",{"2":{"161":4}}],["specified",{"2":{"161":1}}],["specific",{"2":{"6":1,"11":1}}],["specify",{"2":{"6":1}}],["so",{"2":{"213":1,"285":1}}],["software",{"2":{"31":1,"120":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":9,"253":1,"257":1}}],["source",{"2":{"9":2,"11":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"162":1,"163":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"275":1,"285":1,"287":1}}],["some",{"2":{"1":1,"6":2}}],["summary",{"2":{"286":1}}],["such",{"2":{"284":1,"286":2}}],["succeeded",{"2":{"161":1}}],["success",{"2":{"128":1,"159":1,"161":2}}],["suggestions",{"0":{"284":1}}],["su",{"0":{"265":1},"2":{"190":1,"191":1,"265":1}}],["substantial",{"2":{"213":1}}],["subscribe",{"2":{"90":1}}],["subscriber",{"0":{"81":1,"82":1,"90":1,"91":1},"2":{"90":7,"91":2,"92":1}}],["subject",{"2":{"213":1}}],["sublicense",{"2":{"213":1}}],["subprocess",{"0":{"138":1},"2":{"132":1,"133":1,"138":1}}],["subprocessmanager",{"0":{"131":1},"1":{"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1}}],["sub",{"0":{"82":1},"2":{"28":1,"60":1,"64":1,"84":1,"90":4,"92":1}}],["submitted",{"2":{"286":1}}],["submit",{"2":{"7":1,"283":2}}],["support",{"2":{"274":2,"286":1}}],["supported",{"2":{"4":1,"6":1,"109":1}}],["supports",{"2":{"0":1}}],["superuser",{"2":{"1":1}}],["superusers",{"2":{"0":1,"1":1,"265":1}}],["same",{"2":{"3":2}}],["safe",{"2":{"2":2,"6":3,"105":1,"113":1}}],["num为每页显示数量",{"2":{"307":2}}],["num",{"2":{"307":2}}],["number",{"2":{"10":2}}],["nliteyuki",{"2":{"289":1}}],["name>",{"2":{"290":2}}],["name=module",{"2":{"161":3}}],["name=f",{"2":{"126":2}}],["name=",{"2":{"65":1,"66":1,"84":3,"296":1}}],["name",{"0":{"18":1,"60":1,"69":1,"71":1,"78":1,"126":1,"128":1,"130":1,"133":1,"134":1,"136":1,"138":1,"163":2,"175":1,"185":1,"187":1,"223":1,"230":1,"236":1,"270":1},"2":{"18":6,"60":9,"69":7,"70":2,"71":5,"73":3,"74":3,"78":3,"125":3,"126":5,"127":1,"128":6,"129":2,"130":5,"133":4,"134":5,"135":2,"136":5,"137":2,"138":3,"161":20,"162":9,"163":6,"183":1,"270":1,"278":2,"305":4,"307":8}}],["nick",{"0":{"224":1}}],["nickname",{"0":{"239":1},"2":{"0":1,"1":2}}],["nightly",{"2":{"10":1}}],["npm",{"2":{"6":1,"307":7,"308":1}}],["nesting",{"2":{"286":1}}],["new",{"2":{"15":1,"104":3,"268":1,"283":1,"286":2}}],["necessary",{"2":{"6":1}}],["needs",{"2":{"278":1}}],["need",{"2":{"0":1,"2":1,"283":1}}],["non",{"2":{"287":1}}],["noninfringement",{"2":{"213":1}}],["nonlocal",{"2":{"143":1}}],["nonedog",{"2":{"296":1}}],["none",{"0":{"15":1,"18":1,"29":1,"30":1,"39":1,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"60":1,"64":1,"85":1,"86":1,"87":1,"89":1,"95":1,"118":1,"126":1,"138":1,"150":1,"188":1,"196":2,"204":1,"223":2,"224":2,"225":2,"226":2,"230":2,"231":2,"232":2,"235":2,"236":2,"239":2,"240":2,"241":2,"242":2,"251":2,"252":2},"2":{"15":1,"18":2,"28":1,"29":1,"30":1,"39":1,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"60":3,"61":1,"63":1,"64":2,"85":1,"87":1,"89":1,"94":2,"105":1,"106":1,"107":1,"126":1,"138":2,"141":1,"143":1,"150":1,"161":4,"162":1,"196":1,"204":1,"258":2,"263":1,"267":1}}],["nonebot2",{"2":{"4":2}}],["nonebot",{"0":{"3":1},"2":{"1":2,"2":2,"3":1,"6":1,"266":1,"274":6,"278":3,"285":3,"296":1,"297":4,"300":1}}],["nohup",{"2":{"17":2,"290":1,"291":1}}],["node",{"2":{"11":1}}],["notice",{"2":{"213":2}}],["notimplementederror",{"2":{"145":1}}],["not",{"2":{"1":1,"2":1,"4":1,"11":2,"18":1,"28":1,"60":1,"61":2,"64":4,"69":1,"87":1,"90":3,"92":1,"105":1,"106":1,"107":1,"108":3,"109":3,"128":2,"130":2,"134":2,"136":2,"150":2,"161":1,"162":8,"204":1,"213":1,"286":3,"297":2}}],["normal>",{"2":{"159":1}}],["normal",{"0":{"9":1},"2":{"1":1}}],["no",{"0":{"108":1,"109":1,"110":1,"175":1,"185":1,"186":1,"187":1,"208":1,"210":1,"212":1,"222":1,"228":1,"229":1,"234":1,"238":1,"246":1,"247":1,"248":1,"249":1,"250":1},"2":{"1":1,"67":1,"68":1,"108":3,"109":3,"110":4,"213":1,"286":1}}],["image",{"0":{"211":1},"1":{"212":1},"2":{"305":2,"306":1}}],["impossible",{"2":{"277":1}}],["import",{"2":{"98":1,"161":1,"278":5,"281":1,"296":2,"297":3,"300":1}}],["implied",{"2":{"213":1}}],["implement",{"2":{"278":1}}],["implemented",{"2":{"145":1,"278":1}}],["implementation",{"0":{"3":1},"2":{"3":1}}],["ignore",{"0":{"87":1,"162":1},"2":{"87":3,"162":5}}],["id仅超级用户可用",{"2":{"305":1}}],["id=user",{"2":{"291":2}}],["id=1234567",{"2":{"305":2}}],["id=123456",{"2":{"291":1}}],["id=self",{"2":{"197":3}}],["id",{"0":{"196":3,"222":1,"228":1,"234":1,"244":1,"245":1,"246":1},"2":{"64":5,"196":9,"197":3,"244":3,"245":4,"265":1,"291":2,"305":2,"307":1,"313":4}}],["ids",{"2":{"60":2,"64":2}}],["icu",{"2":{"10":1}}],["icon=f",{"2":{"159":7}}],["icon",{"2":{"1":2,"159":9}}],["i",{"0":{"199":1},"2":{"6":1,"15":1,"199":3,"254":2,"278":6}}],["isclass",{"2":{"267":1}}],["iscoroutinefunction",{"2":{"267":2}}],["isroutine",{"2":{"267":1}}],["isfile",{"2":{"162":1,"297":1}}],["isdir",{"2":{"162":2}}],["isinstance",{"2":{"69":1,"104":1,"161":1,"278":1}}],["issue",{"2":{"7":1}}],["is",{"0":{"130":1,"265":1,"267":1},"2":{"1":3,"2":1,"3":3,"4":1,"9":1,"11":1,"15":1,"16":2,"18":1,"28":2,"40":1,"60":6,"61":1,"64":5,"69":1,"71":1,"72":1,"84":2,"85":1,"86":1,"87":1,"88":1,"90":3,"92":1,"94":2,"105":1,"106":1,"107":1,"126":1,"128":1,"130":2,"150":1,"155":1,"161":1,"162":2,"189":1,"196":1,"213":4,"263":1,"265":1,"267":1,"268":1,"277":2,"278":3,"285":3,"286":12,"287":1}}],["if",{"2":{"1":2,"2":4,"3":1,"6":1,"7":1,"10":2,"11":2,"17":2,"18":1,"28":2,"30":2,"40":1,"60":5,"61":3,"62":1,"64":6,"69":3,"71":1,"72":1,"85":1,"86":1,"87":3,"88":1,"90":5,"92":2,"94":2,"104":1,"105":1,"106":1,"107":1,"108":2,"109":3,"116":1,"126":1,"128":2,"130":1,"134":1,"136":1,"143":1,"150":1,"158":1,"159":7,"161":2,"162":9,"196":1,"197":1,"204":1,"244":1,"245":1,"254":1,"263":1,"267":2,"268":1,"270":1,"283":3,"286":2}}],["index",{"2":{"302":1}}],["inaccessible",{"2":{"286":1}}],["inspect",{"2":{"267":4,"271":1}}],["insert",{"2":{"254":1}}],["instances",{"2":{"275":1}}],["instance",{"0":{"94":1,"95":1},"2":{"15":2,"28":4,"61":1,"69":1,"94":5,"97":1}}],["installed",{"2":{"11":1}}],["installation",{"0":{"9":1},"2":{"6":2}}],["install",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1},"2":{"6":3,"9":3,"11":2,"304":1,"307":1,"308":1}}],["instead",{"2":{"6":1,"10":1,"30":1}}],["invalid",{"2":{"244":1}}],["invalidgitrepositoryerror",{"2":{"6":1}}],["included",{"2":{"213":1,"285":1}}],["including",{"2":{"11":1,"213":2}}],["inner",{"2":{"60":2}}],["initialized",{"2":{"28":1}}],["initializing",{"2":{"15":1}}],["init",{"0":{"15":1,"19":1,"20":1,"39":1,"60":1,"78":1,"84":1,"112":1,"122":1,"124":1,"132":1,"159":1,"196":1,"202":1,"260":1},"2":{"15":2,"19":2,"20":2,"39":1,"60":1,"78":1,"84":1,"112":1,"122":1,"124":1,"132":1,"159":1,"162":2,"192":1,"196":1,"202":1,"260":1,"270":1,"296":3}}],["introducing",{"2":{"286":1}}],["introduction",{"0":{"277":1}}],["into",{"2":{"283":1}}],["inter",{"2":{"277":1}}],["interface",{"2":{"275":1}}],["interpreter",{"2":{"6":1}}],["interpreters",{"2":{"6":2}}],["int=0",{"2":{"17":1,"255":1,"256":1}}],["int",{"0":{"17":1,"202":1,"214":1,"235":1,"255":1,"256":1},"1":{"215":1,"216":1,"217":1,"218":1,"219":1,"220":1},"2":{"17":1,"39":1,"60":2,"202":1}}],["intact",{"2":{"6":1}}],["information",{"2":{"3":1,"284":1}}],["info",{"2":{"1":1,"15":1,"16":2,"17":1,"159":1,"199":1,"278":2}}],["in",{"0":{"110":1,"269":1},"2":{"0":3,"1":1,"2":1,"3":2,"6":5,"18":1,"28":1,"30":3,"40":1,"60":2,"63":1,"64":1,"69":1,"70":1,"87":1,"90":3,"91":1,"92":1,"104":2,"108":1,"109":2,"110":1,"116":1,"125":1,"127":1,"128":1,"129":1,"130":1,"134":1,"135":1,"136":1,"137":1,"150":1,"152":1,"162":2,"189":2,"193":2,"199":1,"204":1,"213":6,"244":1,"245":1,"254":1,"256":2,"265":1,"268":2,"269":1,"277":1,"283":5,"284":2,"285":4,"286":6,"287":1,"297":1}}],["iterable",{"0":{"199":1},"2":{"199":1}}],["items",{"2":{"0":1,"6":1,"70":1,"104":2,"116":1,"135":1,"137":1}}],["it",{"2":{"0":1,"2":2,"3":1,"9":1,"277":2}}],["rpm",{"2":{"307":5,"308":1}}],["rpc",{"2":{"79":1}}],["role",{"0":{"233":1,"240":2},"1":{"234":1,"235":1,"236":1}}],["rf",{"2":{"213":1}}],["railt",{"2":{"213":1}}],["raise",{"2":{"28":2,"60":3,"61":2,"62":1,"64":1,"69":2,"87":1,"90":1,"92":1,"134":1,"136":1,"145":1,"244":1}}],["raw",{"0":{"196":1},"2":{"191":1,"196":3,"197":1,"256":1}}],["rulehandlerfunc",{"0":{"258":1,"260":1},"2":{"260":1}}],["rule=empty",{"2":{"255":1,"256":1}}],["rule=is",{"2":{"190":1,"191":1}}],["rule",{"0":{"202":2,"255":3,"256":2,"257":1,"259":1,"261":2,"262":2,"264":1,"265":1},"1":{"258":1,"259":1,"260":2,"261":2,"262":2,"263":2,"264":1,"265":1},"2":{"190":1,"191":1,"202":5,"204":1,"255":3,"256":5,"257":1,"261":3,"262":3,"263":1,"264":3,"265":2}}],["runnable",{"2":{"286":1}}],["running",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"60":1,"63":1,"84":2,"268":2,"277":1}}],["runtimeerror",{"2":{"28":2,"61":1,"62":1,"64":1,"90":1,"92":1,"268":1}}],["run",{"0":{"10":1,"16":1,"40":1,"91":1,"152":1,"204":1,"268":1,"269":1},"2":{"0":1,"9":2,"11":1,"16":3,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"91":1,"92":1,"125":1,"152":2,"204":1,"268":3,"269":1,"300":2}}],["r>",{"2":{"161":2}}],["rights",{"2":{"31":1,"120":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":1,"253":1,"257":1}}],["r",{"2":{"9":1,"11":1,"105":1,"106":1,"107":1,"113":1,"114":1,"115":1}}],["revise",{"2":{"286":1}}],["reverse",{"2":{"3":2}}],["read",{"2":{"283":2}}],["reload",{"2":{"305":1,"306":2,"307":1,"308":1}}],["reloading",{"2":{"297":1}}],["related",{"2":{"285":1,"286":1}}],["relative",{"2":{"270":1}}],["rel",{"2":{"270":5}}],["red>",{"2":{"159":2}}],["remove",{"2":{"159":1}}],["ref",{"0":{"98":1}}],["refer",{"0":{"12":1},"2":{"6":1,"286":1}}],["reference",{"2":{"3":1,"283":1}}],["resource",{"2":{"285":1}}],["resources",{"2":{"285":1,"301":1,"302":1,"306":1}}],["resolve",{"2":{"270":2}}],["restriction",{"2":{"213":1,"286":1}}],["restarting",{"2":{"17":1}}],["restart",{"0":{"17":1,"18":1,"26":1,"27":1,"45":1,"46":1,"51":1,"52":1},"2":{"0":1,"15":1,"17":3,"18":1,"26":2,"27":2,"39":2,"45":2,"46":2,"51":3,"52":3,"297":2}}],["reserved",{"2":{"31":1,"120":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["return",{"2":{"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":4,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"62":2,"63":2,"64":7,"71":3,"72":3,"86":3,"88":3,"90":3,"94":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"128":1,"130":1,"138":1,"143":3,"150":4,"158":2,"161":2,"162":1,"163":2,"165":2,"183":1,"203":3,"204":1,"244":2,"245":2,"255":1,"256":2,"261":2,"262":2,"263":2,"264":1,"265":1,"267":4,"270":3,"271":3}}],["reply",{"0":{"197":1},"2":{"191":1,"197":3}}],["replace",{"2":{"10":1}}],["repository",{"2":{"283":7,"285":2,"286":1}}],["repo",{"2":{"9":1}}],["report设定为false",{"2":{"303":1}}],["report",{"2":{"1":2,"6":1,"303":1}}],["request",{"2":{"283":1}}],["requests",{"2":{"1":1}}],["required",{"2":{"60":1,"286":1}}],["requires",{"2":{"11":1}}],["requirements",{"0":{"11":1},"1":{"12":1},"2":{"9":1,"11":1}}],["receiving",{"2":{"278":1}}],["receive",{"0":{"54":1,"55":1,"62":1,"63":1,"64":1,"81":1,"82":1,"90":3,"91":1,"92":1,"196":1},"2":{"1":1,"55":2,"60":3,"62":2,"63":2,"64":4,"71":1,"72":2,"73":2,"74":2,"75":1,"81":1,"82":1,"84":2,"86":1,"88":1,"90":11,"91":2,"92":4,"98":1,"99":2,"100":2,"101":2,"102":1,"196":3,"197":3,"278":11}}],["recursive=recursive",{"2":{"150":1}}],["recursive",{"0":{"150":1},"2":{"150":2}}],["recv",{"2":{"60":2,"62":2,"71":5,"72":5,"74":3,"75":3,"86":5,"88":5,"99":3,"102":3,"199":2}}],["recommended",{"2":{"3":1,"9":1,"11":2,"286":1}}],["city",{"2":{"311":1,"312":1}}],["css相对路径引用b中的css",{"2":{"302":1}}],["css",{"2":{"301":1,"302":1}}],["cwd",{"2":{"270":1}}],["cyan>",{"2":{"159":1}}],["critical",{"2":{"159":1}}],["created",{"0":{"146":1},"2":{"146":1}}],["create",{"2":{"0":1,"9":2,"91":1,"283":2}}],["cfg",{"2":{"152":4}}],["cute",{"2":{"273":1}}],["current|bot",{"2":{"313":1}}],["current|group",{"2":{"313":1}}],["current",{"2":{"143":3,"313":2,"314":1}}],["custom",{"2":{"2":4,"273":1}}],["customize",{"2":{"2":1}}],["c",{"2":{"31":1,"104":1,"120":1,"151":1,"157":1,"160":1,"163":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":1,"253":1,"257":1,"268":4,"270":2,"314":1}}],["cmd",{"2":{"17":5,"289":2,"290":1}}],["claim",{"2":{"213":1}}],["classmethod",{"2":{"93":1,"94":1}}],["class",{"0":{"14":1,"38":1,"59":1,"77":1,"83":1,"93":1,"111":1,"121":1,"123":1,"131":1,"144":1,"154":1,"168":1,"174":1,"182":1,"195":1,"201":1,"206":1,"209":1,"211":1,"214":1,"221":1,"227":1,"233":1,"237":1,"243":1,"259":1},"1":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":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,"60":1,"61":1,"62":1,"63":1,"64":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"95":1,"96":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"145":1,"146":1,"147":1,"148":1,"149":1,"169":1,"170":1,"171":1,"172":1,"173":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"196":1,"197":1,"202":1,"203":1,"204":1,"207":1,"208":1,"210":1,"212":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"260":1,"261":1,"262":1,"263":1}}],["cls",{"0":{"94":1},"2":{"94":6}}],["close",{"2":{"268":1}}],["closed",{"2":{"60":1,"61":2,"62":2,"275":1}}],["clone",{"2":{"9":2}}],["cloning",{"2":{"6":1}}],["cpu",{"2":{"11":1,"303":1}}],["cd",{"2":{"9":1}}],["chinese",{"2":{"285":1}}],["child",{"2":{"277":1}}],["chromium",{"2":{"11":1}}],["charge",{"2":{"213":1}}],["chans",{"0":{"199":1},"2":{"199":3}}],["channel时的通道标识",{"2":{"278":1}}],["channel即可",{"2":{"278":1}}],["channel及passive",{"2":{"278":1}}],["channel函数获取通道对象",{"2":{"278":2}}],["channel=none",{"2":{"197":1}}],["channeldeliver",{"0":{"121":1},"1":{"122":1},"2":{"126":1}}],["channels",{"0":{"70":2,"72":1,"75":1},"2":{"70":4,"72":2,"74":1,"75":3}}],["channel",{"0":{"53":1,"59":1,"65":1,"66":1,"67":2,"68":2,"69":3,"70":1,"71":2,"72":1,"73":1,"74":1,"89":1,"90":1,"91":1,"122":8,"196":2,"218":1,"219":1,"220":1,"276":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":2,"61":2,"62":2,"63":2,"64":2,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"277":1,"278":1,"279":1,"280":1,"281":1},"2":{"18":2,"60":5,"61":1,"62":1,"65":3,"66":3,"67":2,"68":1,"69":19,"70":5,"71":9,"72":10,"73":11,"74":7,"75":2,"79":2,"84":4,"86":1,"88":1,"89":4,"90":8,"91":3,"92":2,"122":12,"126":12,"196":4,"197":2,"244":3,"245":3,"277":3,"278":14}}],["chan",{"0":{"199":1},"2":{"15":4,"18":4,"71":5,"72":5,"74":3,"75":3,"84":2,"85":1,"86":6,"87":1,"88":6,"89":1,"92":1,"98":1,"99":5,"100":2,"101":2,"102":4,"126":2,"199":1,"278":2}}],["changed",{"2":{"297":1}}],["change",{"2":{"9":1,"307":1,"308":1}}],["chat",{"2":{"6":1,"7":1}}],["checking",{"2":{"284":1}}],["check",{"0":{"60":1},"2":{"1":1,"60":8,"61":1}}],["cn",{"2":{"2":1}}],["copies",{"2":{"213":2}}],["copy",{"2":{"104":1,"213":2,"283":1}}],["copyright",{"2":{"31":1,"120":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":3,"253":1,"257":1}}],["color",{"2":{"163":7}}],["color=",{"2":{"159":7}}],["colors=true",{"2":{"16":2,"161":3}}],["corresponding",{"2":{"286":1}}],["correct",{"2":{"286":2}}],["correctly",{"2":{"6":1,"286":1}}],["coro",{"0":{"268":1,"269":1},"2":{"268":5,"269":2}}],["coroutine",{"0":{"267":1,"268":2,"269":2,"271":1},"2":{"40":1,"57":1,"64":2,"90":1,"258":1,"267":1,"268":2,"269":3,"271":2}}],["core",{"0":{"119":1,"120":1},"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,"137":1,"138":1}}],["count",{"0":{"98":1},"2":{"15":1,"17":2}}],["code插件liteyuki",{"2":{"293":1}}],["codemodifiedhandler",{"0":{"144":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":1},"2":{"150":1}}],["code",{"2":{"11":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":4,"152":1,"158":1,"159":1,"161":1,"162":1,"163":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"283":2,"284":1,"285":1,"286":6}}],["come",{"2":{"277":1}}],["combined",{"2":{"261":2,"262":2}}],["com",{"2":{"9":1,"31":1,"120":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["completing",{"2":{"286":1}}],["completion",{"2":{"2":2}}],["complete",{"2":{"268":2,"286":1}}],["compat",{"0":{"30":2},"2":{"30":8}}],["computer",{"2":{"6":1}}],["commit",{"2":{"286":6}}],["comment",{"2":{"286":1}}],["communicate",{"2":{"277":1}}],["communication",{"0":{"276":1},"1":{"277":1,"278":1,"279":1,"280":1,"281":1},"2":{"3":1,"277":1}}],["comm",{"0":{"53":1,"76":1,"79":1,"80":1},"1":{"54":1,"55":1,"56":1,"57":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,"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},"2":{"278":2,"281":2}}],["command>",{"2":{"290":2}}],["command",{"0":{"305":1},"1":{"306":1},"2":{"1":4}}],["conditions",{"2":{"213":1,"286":1}}],["contributions",{"2":{"287":1}}],["contract",{"2":{"213":1}}],["content",{"0":{"210":1},"2":{"285":1,"286":1}}],["continue",{"2":{"109":1,"162":3}}],["contact",{"2":{"6":1,"283":1}}],["connection",{"2":{"213":1}}],["connected",{"0":{"3":1}}],["conn",{"2":{"60":4,"61":1,"62":1}}],["confirm",{"2":{"6":1}}],["configs",{"0":{"109":1},"2":{"109":1,"110":1}}],["config=self",{"2":{"20":1}}],["configured",{"2":{"3":1}}],["configuration",{"0":{"1":1,"3":1},"2":{"0":5,"1":1,"2":2,"3":1,"6":1}}],["configurations",{"0":{"0":1,"2":1},"1":{"1":1,"2":1,"3":1,"4":1},"2":{"2":1}}],["config",{"0":{"29":1,"30":1,"103":1,"104":2,"110":1,"159":1,"184":1},"1":{"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1},"2":{"0":5,"2":2,"15":2,"20":1,"29":2,"30":6,"104":9,"105":6,"106":6,"107":6,"108":7,"109":4,"110":9,"112":1,"113":1,"114":1,"115":1,"116":1,"117":2,"118":1,"152":1,"159":4,"193":2,"284":1,"305":4,"306":1}}],["conflicts",{"2":{"6":1,"9":1,"283":1}}],["console",{"2":{"1":1,"284":1}}],["cat",{"2":{"273":1}}],["category",{"0":{"219":1},"2":{"244":1,"245":1}}],["case",{"2":{"163":4,"283":1}}],["cases",{"2":{"0":1}}],["callback",{"0":{"141":1,"150":2},"2":{"64":1,"150":4,"278":1}}],["callable",{"0":{"64":3,"90":1,"150":1,"203":1,"267":2,"271":2},"2":{"32":1,"33":1,"35":1,"36":1,"40":1,"54":1,"56":1,"57":1,"64":10,"90":2,"124":1,"141":1,"142":1,"150":1,"203":1,"258":1,"267":2,"271":4}}],["call",{"0":{"267":1},"2":{"15":1,"17":2,"143":4,"263":1,"267":7,"278":1}}],["cannot",{"2":{"6":1,"61":1,"62":1,"90":1,"92":1}}],["can",{"2":{"0":2,"4":1,"6":2,"7":1,"9":1,"28":1,"64":1,"277":1,"278":1,"284":1,"286":1}}],["duration>",{"2":{"313":1}}],["duration",{"2":{"313":2,"314":1}}],["during",{"2":{"284":1}}],["duplex",{"2":{"278":1}}],["driver",{"2":{"278":4}}],["d",{"2":{"98":2,"99":4,"100":4,"101":4,"102":2,"270":2,"314":1}}],["datetime",{"0":{"242":1}}],["data=",{"2":{"197":1}}],["data",{"0":{"61":1,"73":1,"74":1,"75":1,"78":1,"89":1,"91":1,"99":1,"100":1,"101":1,"102":1,"196":1,"208":1},"2":{"61":6,"62":2,"63":2,"64":5,"72":2,"73":7,"74":7,"75":4,"78":3,"89":4,"90":3,"91":3,"92":6,"99":4,"100":3,"101":2,"102":2,"196":5,"278":7}}],["damages",{"2":{"213":1}}],["daemon=true",{"2":{"17":1,"125":1,"269":1}}],["darwin",{"2":{"17":1}}],["day",{"2":{"1":1}}],["dog",{"2":{"296":1,"297":1}}],["double",{"2":{"286":1}}],["does",{"2":{"162":1}}],["docstring",{"2":{"286":2}}],["docs",{"2":{"285":1,"305":1,"306":1}}],["document",{"2":{"286":1}}],["documents",{"2":{"283":1}}],["documentation",{"2":{"6":1,"213":1,"275":1,"283":1,"285":3,"286":7}}],["docker",{"0":{"10":1},"2":{"285":2}}],["don",{"2":{"7":1}}],["download",{"2":{"6":1}}],["do",{"2":{"6":1,"11":1,"213":1,"286":1}}],["did",{"2":{"286":1}}],["diagnose=false",{"2":{"159":1}}],["dict",{"0":{"70":1,"72":1,"73":1,"74":1,"75":1,"78":1,"88":1,"99":1,"100":1,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"122":1,"159":1,"165":1,"181":1,"196":2,"197":1,"208":1},"2":{"15":1,"68":1,"70":2,"72":3,"73":1,"74":1,"75":1,"78":1,"81":1,"82":1,"84":2,"88":3,"99":1,"100":1,"101":1,"102":1,"104":3,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"122":1,"124":3,"132":1,"159":1,"161":6,"165":2,"196":2,"197":1}}],["disable",{"2":{"305":1,"306":1,"307":2,"308":2}}],["distribution",{"2":{"275":1}}],["distribute",{"2":{"213":1}}],["disk",{"2":{"11":1}}],["display",{"0":{"163":2},"2":{"1":1,"161":7,"163":4}}],["different",{"2":{"3":2,"6":1}}],["dir",{"0":{"162":1},"2":{"162":16,"193":2}}],["directories=",{"2":{"297":1}}],["directories",{"0":{"109":1,"150":1},"2":{"109":2,"150":3,"285":3}}],["directory",{"2":{"0":4,"1":1,"2":1,"9":1,"10":1,"109":6,"150":2,"162":1,"285":11}}],["directly",{"2":{"11":1}}],["direct",{"2":{"6":1,"277":1}}],["dirs",{"0":{"109":1},"2":{"1":1,"109":1,"110":1,"193":1}}],["details",{"2":{"286":1}}],["detailed",{"2":{"2":1,"3":1,"286":1}}],["dealings",{"2":{"213":1}}],["deal",{"2":{"213":1}}],["debounce",{"0":{"143":1},"2":{"143":1,"144":1,"145":1}}],["debugging",{"2":{"284":1}}],["debug",{"2":{"2":2,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"105":1,"106":1,"107":1,"125":1,"135":1,"137":1,"158":2,"159":2,"199":1,"297":1}}],["deepcopy",{"2":{"104":1}}],["decorator",{"2":{"64":2,"90":2,"143":2,"150":2,"203":2,"278":1}}],["def",{"2":{"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"64":2,"73":1,"74":1,"75":1,"90":2,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"143":2,"145":1,"150":2,"191":1,"203":1,"204":1,"244":1,"245":1,"256":1,"261":1,"262":1,"263":1,"264":1,"265":1,"271":1,"278":3,"297":1}}],["defaults",{"2":{"17":1,"18":1,"29":1,"30":1,"64":1}}],["default",{"0":{"29":1,"30":1,"86":1,"110":1,"118":1,"175":1,"185":1,"186":1,"187":1,"193":1,"208":1,"210":1,"212":1,"222":1,"228":1,"229":1,"234":1,"238":1,"246":1,"247":1,"248":1,"249":1,"250":1},"2":{"1":1,"2":3,"3":1,"29":3,"30":3,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"66":1,"67":2,"68":2,"81":1,"82":1,"86":5,"97":1,"98":1,"99":3,"110":1,"118":2,"141":1,"142":1,"152":1,"156":1,"158":1,"193":1,"258":1}}],["del",{"2":{"87":2}}],["deleted",{"0":{"147":1},"2":{"147":1}}],["delete",{"0":{"87":1,"101":1},"2":{"87":2,"100":1,"101":3}}],["deliver",{"0":{"67":1,"68":1,"122":2},"2":{"69":1,"71":1,"72":2,"73":2,"74":2,"75":1,"122":6,"126":6}}],["delivery",{"2":{"4":1,"126":1}}],["delay",{"0":{"17":1},"2":{"17":3}}],["deprecated",{"2":{"30":1}}],["depth=1",{"2":{"9":1}}],["deploy",{"2":{"6":1}}],["depend",{"2":{"11":1}}],["dependency",{"2":{"9":1}}],["dependencies",{"2":{"9":1,"11":1}}],["depends",{"2":{"3":1,"11":1}}],["depending",{"2":{"0":1}}],["description=",{"2":{"296":1}}],["description",{"0":{"176":1},"2":{"3":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"54":1,"55":1,"56":1,"57":1,"58":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,"81":1,"82":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"97":1,"98":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"125":1,"126":1,"128":1,"130":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"141":1,"142":1,"143":1,"150":1,"152":1,"156":1,"158":1,"159":1,"161":1,"162":1,"163":1,"165":1,"193":1,"196":1,"197":1,"202":1,"203":1,"204":1,"258":1,"267":1,"268":1,"269":1,"270":1,"271":1,"286":1,"302":1}}],["developer",{"2":{"284":1,"296":1}}],["developing",{"2":{"283":2}}],["develop",{"0":{"283":1},"1":{"284":1},"2":{"283":1,"285":2}}],["development",{"0":{"282":1},"1":{"283":1,"284":1,"285":1,"286":1,"287":1},"2":{"2":3,"283":2,"284":1,"286":1,"287":1}}],["device",{"0":{"11":1},"1":{"12":1},"2":{"11":1}}],["dev",{"0":{"139":1,"140":1,"151":1},"1":{"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1},"2":{"2":1,"284":1,"297":1,"300":1}}],["two",{"2":{"278":1}}],["text",{"0":{"209":1,"218":1},"1":{"210":1},"2":{"244":1,"245":1}}],["tests",{"2":{"285":1}}],["test",{"0":{"173":2},"2":{"163":1,"285":1}}],["terminating",{"2":{"137":1}}],["terminated",{"2":{"128":1}}],["terminate",{"0":{"128":1,"129":1,"136":1,"137":1},"2":{"17":1,"21":1,"128":2,"129":2,"136":2,"137":2}}],["tar",{"2":{"213":1}}],["target",{"0":{"126":3,"245":1},"2":{"126":5,"245":1}}],["target=run",{"2":{"269":1}}],["target=self",{"2":{"125":1}}],["target=os",{"2":{"17":1}}],["targets",{"2":{"124":1,"125":1,"126":1,"127":1,"129":1,"130":1}}],["task",{"2":{"91":1,"125":1}}],["tasks",{"2":{"40":2}}],["type=plugintype",{"2":{"296":1}}],["type=self",{"2":{"197":2}}],["types",{"0":{"184":1}}],["typeerror",{"2":{"60":1,"61":1,"69":1}}],["typealias",{"2":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"141":1,"142":1,"258":1}}],["type",{"0":{"60":1,"163":1,"178":1,"196":2,"207":1,"229":1},"2":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":11,"61":7,"65":1,"66":1,"67":1,"68":1,"69":1,"81":1,"82":1,"97":1,"141":1,"142":1,"161":2,"163":4,"196":6,"197":2,"258":1,"286":5}}],["tuple=",{"2":{"126":1}}],["tuplestr",{"2":{"30":1}}],["tuple",{"0":{"30":1,"73":1,"74":1,"75":1,"99":1,"100":1,"101":1,"102":1,"122":2,"126":1,"150":1},"2":{"30":1,"68":1,"73":1,"74":1,"75":1,"84":3,"99":1,"100":1,"101":1,"102":1,"122":2,"124":2,"150":1}}],["time>",{"2":{"290":1}}],["timeout",{"2":{"128":1}}],["time",{"2":{"17":1,"31":1,"120":1,"143":9,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["tip",{"2":{"9":1,"10":1,"293":1,"302":1,"304":1}}],["transfer",{"2":{"277":1}}],["traceback",{"2":{"161":1,"204":1}}],["trace",{"2":{"159":1}}],["trss",{"2":{"275":1}}],["trim",{"2":{"273":2}}],["try",{"2":{"16":1,"87":1,"161":1,"204":1,"268":1}}],["true",{"0":{"87":1,"150":1,"162":1,"184":1},"2":{"1":3,"2":4,"6":1,"62":1,"92":1,"159":1,"263":1,"264":1,"278":2,"284":1}}],["txt",{"2":{"9":1,"11":1}}],["t",{"0":{"59":1,"61":1,"62":1,"63":1,"64":2},"1":{"60":1,"61":1,"62":1,"63":1,"64":1},"2":{"7":1,"28":1,"54":1,"56":1,"57":1,"61":2,"62":2,"63":2,"64":7}}],["through",{"2":{"277":2}}],["thread",{"0":{"199":1,"269":1},"2":{"17":1,"125":1,"199":1,"269":2}}],["threading",{"0":{"96":1},"2":{"15":1,"17":1,"125":1,"269":1}}],["this",{"2":{"155":1,"189":1,"213":2,"283":1,"285":2,"287":1}}],["that",{"2":{"6":1,"277":1,"278":1,"283":2,"286":7}}],["their",{"2":{"275":1}}],["then",{"2":{"9":1}}],["therefore",{"2":{"277":1}}],["there",{"2":{"1":1,"6":1,"11":1,"286":2}}],["these",{"2":{"0":1,"285":1}}],["the",{"2":{"0":6,"1":1,"2":4,"3":6,"4":2,"6":10,"9":1,"10":2,"11":4,"155":1,"161":1,"189":1,"213":14,"273":1,"277":1,"278":2,"283":10,"284":1,"285":6,"286":24}}],["tokyo",{"2":{"311":1}}],["token",{"2":{"2":2}}],["together",{"2":{"286":1}}],["tort",{"2":{"213":1}}],["tools",{"2":{"284":1}}],["too",{"2":{"6":1}}],["to",{"0":{"3":1,"12":1,"270":1,"283":1},"1":{"284":1},"2":{"0":1,"1":6,"2":3,"3":2,"4":1,"6":14,"9":6,"10":1,"11":5,"17":1,"18":1,"29":1,"30":1,"61":1,"64":1,"161":5,"162":2,"189":1,"213":8,"270":2,"274":2,"277":3,"278":2,"283":5,"284":1,"286":7,"287":1}}],["toml",{"0":{"107":1,"114":1},"2":{"0":2,"107":4,"108":2,"110":1,"114":2}}],["world",{"2":{"289":5}}],["weather",{"0":{"311":1},"1":{"312":1},"2":{"311":1,"312":1}}],["welcome",{"2":{"287":1}}],["we",{"2":{"286":1,"287":1}}],["websocket",{"2":{"3":2}}],["wrapper",{"0":{"271":1},"2":{"40":1,"64":2,"90":4,"126":1,"143":2,"150":2,"271":4}}],["watchdog",{"2":{"297":1,"300":1}}],["watch",{"2":{"296":1,"297":1}}],["wait",{"0":{"143":1},"2":{"143":2}}],["warranties",{"2":{"213":1}}],["warranty",{"2":{"213":1}}],["waring=no",{"2":{"110":1}}],["waring",{"0":{"109":1,"110":1},"2":{"109":3,"110":4}}],["warning=no",{"2":{"109":1,"110":1}}],["warning",{"0":{"108":1,"162":1},"2":{"11":2,"30":1,"108":5,"109":1,"128":1,"130":1,"159":1,"161":1,"162":8,"293":1,"308":1}}],["want",{"2":{"1":1}}],["without",{"2":{"11":1,"213":3}}],["with",{"0":{"10":1,"30":1},"2":{"10":1,"30":1,"85":1,"86":1,"87":1,"94":1,"113":1,"114":1,"115":1,"213":1,"277":1,"278":1,"283":2}}],["windows10+",{"2":{"11":1}}],["windows",{"2":{"9":1,"10":1,"11":2,"17":1}}],["will",{"2":{"0":3,"2":3,"11":2,"30":1,"287":1}}],["what",{"2":{"286":1}}],["whom",{"2":{"213":1}}],["while",{"2":{"62":1,"92":1,"278":2}}],["which",{"2":{"6":2}}],["where",{"2":{"286":1}}],["whether",{"2":{"1":3,"2":1,"213":1}}],["when",{"2":{"0":2,"286":2}}],["ws",{"2":{"3":2}}],["p",{"2":{"314":1}}],["poke",{"2":{"291":4}}],["possible",{"2":{"286":3}}],["portions",{"2":{"213":1}}],["port",{"2":{"1":2,"10":2}}],["pep8",{"2":{"286":1}}],["period\`",{"2":{"314":1}}],["period>",{"2":{"313":1}}],["period",{"2":{"313":2}}],["permit",{"2":{"213":1,"286":1}}],["permission",{"2":{"213":2}}],["persons",{"2":{"213":1}}],["person",{"2":{"213":1}}],["personal",{"2":{"0":1,"283":1}}],["persists",{"2":{"6":1}}],["purpose",{"2":{"213":1}}],["publish=publish",{"2":{"126":1}}],["publish",{"0":{"89":1,"122":1},"2":{"84":2,"89":2,"92":2,"122":3,"213":1}}],["pull",{"2":{"10":1,"283":1}}],["pwd",{"2":{"10":1}}],["pipe",{"2":{"60":2}}],["pip",{"2":{"9":1,"11":1,"161":1}}],["py即可启动插件",{"2":{"300":1}}],["pyo",{"2":{"297":1}}],["pycache",{"2":{"297":1}}],["pyc",{"2":{"297":1}}],["pycharm",{"2":{"31":1,"120":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["py文件",{"2":{"296":1}}],["py文件或一个包含",{"2":{"296":1}}],["py的文件夹即可被识别为插件",{"2":{"296":1}}],["py",{"2":{"6":1,"9":1,"31":1,"120":1,"151":1,"157":1,"160":1,"162":3,"166":1,"167":1,"190":1,"192":2,"194":1,"200":1,"253":1,"257":1,"281":1,"285":1,"296":1,"297":1,"300":2,"302":1}}],["python格式",{"2":{"289":1}}],["pythonfrom",{"2":{"278":1,"281":1,"296":1,"300":1}}],["pythonimport",{"2":{"278":1,"297":1}}],["pythonasync",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"92":1,"204":1,"263":1}}],["pythondef",{"2":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"39":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"60":1,"61":1,"62":1,"64":1,"69":1,"70":1,"71":1,"72":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"162":1,"163":1,"165":1,"183":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"267":1,"268":1,"269":1,"270":1,"271":1}}],["python3",{"2":{"9":1,"11":1}}],["python",{"2":{"6":5,"9":3,"11":3,"40":1,"73":1,"74":1,"75":1,"91":1,"94":1,"99":1,"100":1,"101":1,"102":1,"145":1,"191":1,"244":1,"245":1,"264":1,"265":1,"283":1,"286":1}}],["page为页数",{"2":{"307":2}}],["page",{"2":{"307":2}}],["pacman",{"0":{"307":1},"1":{"308":1}}],["pack",{"2":{"302":2,"307":3}}],["packs",{"2":{"285":1}}],["param",{"2":{"304":1}}],["parse",{"2":{"286":1}}],["parsing",{"2":{"1":1}}],["part",{"2":{"285":1,"286":1}}],["participate",{"2":{"287":1}}],["participation",{"2":{"283":1}}],["particular",{"2":{"213":1}}],["parts",{"2":{"270":2}}],["parent",{"0":{"232":1}}],["pass",{"2":{"199":1}}],["passive=channel",{"2":{"126":1}}],["passive=chan",{"2":{"126":1}}],["passive",{"0":{"66":1,"68":1,"122":2},"2":{"66":1,"69":1,"71":1,"72":2,"73":2,"74":2,"75":1,"84":2,"85":1,"86":1,"87":1,"88":1,"98":1,"99":2,"100":2,"101":2,"102":1,"122":6,"126":5,"278":15}}],["pathlib",{"2":{"161":1}}],["path",{"0":{"152":2,"161":2,"270":3},"2":{"6":2,"10":1,"11":3,"108":1,"109":2,"152":4,"161":16,"162":26,"270":11,"297":5}}],["platform",{"2":{"17":3}}],["platforms",{"2":{"6":3}}],["playwright",{"2":{"6":2}}],["plugintype",{"0":{"163":1,"168":1,"178":2},"1":{"169":1,"170":1,"171":1,"172":1,"173":1},"2":{"163":5,"296":1}}],["pluginmetadata",{"0":{"174":1,"188":1},"1":{"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1},"2":{"161":4,"296":2}}],["plugin的函数签名",{"2":{"152":1}}],["plugin",{"0":{"151":1,"160":1,"161":2,"162":2,"163":1,"164":1,"165":1,"166":1,"167":1,"182":1,"192":1},"1":{"152":1,"161":1,"162":1,"163":1,"165":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":2,"184":2,"185":2,"186":2,"187":2,"188":2,"193":1},"2":{"1":3,"4":1,"6":4,"15":2,"151":1,"161":14,"162":5,"163":4,"165":2,"189":1,"193":6,"198":1,"213":1,"274":4,"277":1,"283":2,"285":3,"296":4,"299":1,"300":2,"307":5}}],["plugins下创建一个文件",{"2":{"300":1}}],["plugins中添加你的插件路径",{"2":{"299":1}}],["plugins",{"0":{"152":1,"162":1,"165":1,"189":1,"190":1,"192":1,"193":1,"274":1},"1":{"191":1,"193":1},"2":{"1":1,"2":2,"6":3,"11":3,"15":1,"152":6,"161":3,"162":9,"165":2,"189":1,"193":4,"285":5,"297":1,"300":2}}],["please",{"0":{"12":1},"2":{"1":2,"2":1,"3":2,"6":3,"10":2,"11":1,"283":3,"285":2,"286":2}}],["practices",{"0":{"272":1},"1":{"273":1,"274":1,"275":1}}],["private",{"0":{"215":1},"2":{"244":1,"245":1}}],["priority",{"0":{"202":1,"255":1,"256":1},"2":{"202":4,"254":2,"255":2,"256":2}}],["print",{"2":{"15":1,"161":1,"204":1}}],["profile",{"2":{"309":4}}],["profit",{"2":{"287":1}}],["property",{"2":{"243":1,"244":2,"245":1}}],["processfunctype",{"0":{"133":1},"2":{"133":1}}],["processmanager",{"0":{"123":1},"1":{"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1},"2":{"15":2}}],["process",{"0":{"18":1,"25":2,"26":3,"35":1,"36":1,"37":1,"40":1,"43":3,"45":3,"49":1,"51":1,"130":1,"138":1},"2":{"15":1,"16":1,"17":1,"18":4,"21":1,"25":5,"26":6,"28":2,"37":2,"39":4,"40":2,"43":6,"45":6,"49":2,"51":2,"60":1,"64":3,"69":1,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"90":3,"92":2,"124":1,"125":2,"127":2,"128":7,"130":2,"134":1,"135":3,"136":1,"137":3,"138":1,"277":2,"278":8,"297":2}}],["processes",{"2":{"11":1,"18":1,"124":1,"128":2,"130":1,"132":1,"133":1,"134":2,"135":1,"136":2,"137":1,"138":1,"277":4}}],["problematic",{"2":{"6":1}}],["problem",{"2":{"6":1}}],["problems",{"2":{"1":1}}],["provides",{"2":{"277":1}}],["provide",{"2":{"6":1}}],["provided",{"2":{"3":1,"213":1}}],["protocol",{"2":{"3":1}}],["production",{"2":{"3":1}}],["project",{"0":{"285":1},"2":{"0":1,"10":1,"285":1,"287":2}}],["prefix",{"0":{"116":1},"2":{"1":1,"116":3}}],["preference",{"2":{"0":1}}],["y",{"2":{"163":1}}],["yellow>",{"2":{"159":1}}],["y>",{"2":{"16":2}}],["y>liteyuki",{"2":{"16":2}}],["yml格式的所有合法内容",{"2":{"305":1}}],["yml文件",{"2":{"302":1}}],["yml中填写一些信息",{"2":{"302":1}}],["yml",{"2":{"0":2,"108":1,"110":1,"284":1,"302":2,"305":1}}],["you",{"2":{"0":4,"1":1,"2":1,"3":1,"4":1,"6":2,"7":2,"9":1,"10":2,"11":2,"277":1,"283":5,"284":1,"286":2}}],["your",{"2":{"0":1,"10":1,"11":1,"161":2,"283":6,"287":1}}],["yamlweather",{"2":{"311":1}}],["yamlname",{"2":{"302":1}}],["yaml",{"0":{"105":1,"113":1},"2":{"0":2,"1":1,"2":2,"105":4,"108":2,"110":1,"113":2}}],["a包中的index",{"2":{"302":1}}],["api格式为onebot",{"2":{"305":1}}],["api文档",{"2":{"292":1}}],["api也有差别",{"2":{"292":1}}],["api",{"0":{"292":1},"2":{"275":2,"283":1,"290":3,"291":2,"305":3}}],["applications",{"0":{"273":1}}],["application",{"0":{"169":2},"2":{"163":1,"285":4}}],["append",{"2":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"64":2,"90":2,"203":1,"254":1}}],["app",{"2":{"10":1}}],["await",{"2":{"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"64":2,"90":1,"92":2,"204":2,"261":2,"262":2,"263":1,"278":1,"290":1,"291":1,"293":1}}],["awaitable",{"2":{"33":1,"36":1}}],["arising",{"2":{"213":1}}],["arbitrary",{"0":{"184":1}}],["argv",{"2":{"17":1}}],["args=coro",{"2":{"269":1}}],["args=",{"2":{"17":1,"125":1}}],["args",{"0":{"19":1,"40":1,"49":1,"51":1,"126":1,"133":1},"2":{"17":2,"19":2,"40":3,"49":2,"51":2,"126":3,"133":3,"143":2,"271":2,"305":4}}],["arguments",{"2":{"15":1,"17":1,"18":1,"19":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"29":1,"30":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"60":1,"61":1,"64":1,"69":1,"70":1,"71":1,"85":1,"86":1,"87":1,"89":1,"90":1,"91":1,"104":1,"110":1,"113":1,"126":1,"128":1,"130":1,"133":1,"134":1,"136":1,"138":1,"150":1,"152":1,"158":1,"159":1,"161":1,"162":1,"163":1,"197":1,"199":1,"202":1,"204":1,"267":1,"268":1,"269":1,"270":1,"271":1}}],["are",{"2":{"1":1,"6":2,"10":1,"11":1,"277":1,"283":4,"285":1,"286":2}}],["above",{"2":{"213":1}}],["able",{"2":{"11":1}}],["absolute",{"2":{"10":1}}],["ability",{"2":{"6":1}}],["action",{"2":{"213":1}}],["active和",{"2":{"278":1}}],["active和chan",{"2":{"126":1}}],["active=channel",{"2":{"126":1}}],["active=chan",{"2":{"126":1}}],["active",{"0":{"65":1,"67":1,"122":2},"2":{"18":6,"65":1,"84":2,"89":1,"92":1,"122":6,"126":4,"278":13}}],["activate",{"2":{"9":7}}],["account",{"2":{"7":1,"283":1}}],["accesstoken",{"2":{"3":2}}],["access",{"2":{"2":2}}],["authors",{"2":{"213":1}}],["author",{"0":{"179":1},"2":{"6":1,"31":1,"120":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["auto",{"2":{"1":2,"2":2}}],["automatically",{"2":{"0":1,"1":2}}],["after",{"0":{"23":1,"24":1,"27":1,"42":1,"44":1,"46":1,"48":1,"50":1,"52":1},"2":{"6":1,"23":2,"24":2,"27":2,"39":3,"42":2,"44":2,"46":2,"48":3,"50":3,"52":3,"278":1,"286":1}}],["avatar",{"0":{"225":1,"231":1}}],["available",{"2":{"1":1}}],["avoid",{"2":{"6":1,"9":1}}],["a",{"2":{"3":1,"7":1,"9":2,"61":1,"62":1,"104":1,"162":1,"213":2,"270":1,"273":1,"277":1,"278":1,"283":4,"286":4,"287":1,"296":1}}],["an",{"2":{"7":1,"61":1,"69":1,"213":1}}],["anyone",{"2":{"287":1}}],["anybot",{"2":{"199":2}}],["any=none",{"2":{"29":1,"30":1,"118":1}}],["any",{"0":{"29":2,"30":2,"64":2,"73":1,"74":1,"75":1,"78":1,"85":1,"86":2,"88":1,"89":1,"91":1,"99":1,"100":1,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"118":2,"122":4,"149":1,"181":1,"196":2,"197":1,"199":1,"208":1,"267":1,"271":1},"2":{"2":1,"4":1,"15":3,"29":3,"30":3,"32":1,"33":1,"35":1,"36":1,"54":1,"57":2,"64":7,"67":1,"68":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":3,"85":1,"86":4,"88":3,"89":1,"90":1,"91":1,"99":1,"100":1,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"118":1,"122":4,"149":1,"196":2,"197":1,"199":1,"213":3,"256":1,"267":1,"271":1}}],["and",{"2":{"0":6,"4":1,"6":3,"9":2,"11":2,"61":1,"150":1,"162":3,"213":5,"262":2,"273":1,"275":1,"277":3,"278":2,"283":4,"284":2,"285":2,"286":9,"287":1,"297":2}}],["adapter",{"0":{"247":1},"2":{"3":1,"4":2,"6":1}}],["advanced",{"2":{"2":1}}],["addition",{"2":{"286":1}}],["add",{"0":{"126":1,"133":1,"254":1},"2":{"2":1,"126":1,"133":1,"159":1,"162":1,"254":1,"255":1,"286":1}}],["address",{"2":{"1":1,"3":2}}],["amp",{"0":{"262":1},"2":{"10":2}}],["am",{"2":{"1":1,"278":6}}],["attr",{"0":{"95":1,"96":1,"169":1,"170":1,"171":1,"172":1,"173":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"184":1,"185":1,"186":1,"187":1,"188":1,"207":1,"208":1,"210":1,"212":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1}}],["at",{"0":{"242":1},"2":{"1":1,"11":2}}],["alive",{"0":{"130":1},"2":{"128":1,"130":2}}],["already",{"2":{"60":2,"69":1,"283":1}}],["alconna的消息段定义",{"2":{"198":1}}],["alconna",{"2":{"1":2,"2":2}}],["allowing",{"2":{"274":2}}],["allowed",{"0":{"184":1}}],["allow",{"2":{"2":2}}],["all",{"0":{"88":1,"102":1,"125":1,"127":1,"129":1,"135":1,"137":1},"2":{"0":1,"2":1,"16":1,"17":1,"21":1,"31":1,"88":2,"101":1,"102":3,"120":1,"125":1,"127":1,"129":1,"135":1,"137":1,"151":1,"157":1,"160":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":1,"253":1,"257":1,"275":1}}],["assumes",{"2":{"283":1}}],["associated",{"2":{"213":1}}],["asynchronous",{"2":{"271":1}}],["async",{"0":{"33":1,"36":1,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"57":1,"63":2,"91":1,"92":1,"191":1,"204":1,"263":1,"264":1,"265":1,"271":1},"2":{"34":1,"37":1,"40":3,"55":1,"58":1,"63":1,"64":1,"81":1,"82":1,"90":1,"91":1,"92":1,"191":1,"256":1,"261":1,"262":1,"264":1,"265":1,"271":2,"278":2}}],["asyncio",{"2":{"15":2,"16":1,"40":1,"63":1,"91":1,"268":5,"278":2}}],["asked",{"0":{"6":1}}],["as",{"2":{"0":1,"3":1,"87":1,"113":1,"114":1,"115":1,"161":1,"213":1,"268":1,"284":1,"286":6}}]],"serializationVersion":2}`;export{e as default}; diff --git a/assets/chunks/@localSearchIndexroot.636MGcQ0.js b/assets/chunks/@localSearchIndexroot.636MGcQ0.js deleted file mode 100644 index a00cfe5d..00000000 --- a/assets/chunks/@localSearchIndexroot.636MGcQ0.js +++ /dev/null @@ -1 +0,0 @@ -const e=`{"documentCount":315,"nextId":315,"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/install.html#安装","9":"/deploy/install.html#常规部署","10":"/deploy/install.html#使用docker构建","11":"/deploy/install.html#装置要求","12":"/deploy/install.html#其他问题请移步至答疑","13":"/dev/api/bot/#模块-liteyuki-bot","14":"/dev/api/bot/#class-liteyukibot","15":"/dev/api/bot/#func-init-self-kwargs-none","16":"/dev/api/bot/#func-run-self","17":"/dev/api/bot/#func-restart-self-delay-int-0","18":"/dev/api/bot/#func-restart-process-self-name-optional-str-none","19":"/dev/api/bot/#func-init-self-args-kwargs","20":"/dev/api/bot/#func-init-logger-self","21":"/dev/api/bot/#func-stop-self","22":"/dev/api/bot/#func-on-before-start-self-func-lifespan-func-lifespan-func","23":"/dev/api/bot/#func-on-after-start-self-func-lifespan-func","24":"/dev/api/bot/#func-on-after-shutdown-self-func-lifespan-func","25":"/dev/api/bot/#func-on-before-process-shutdown-self-func-process-lifespan-func","26":"/dev/api/bot/#func-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","27":"/dev/api/bot/#func-on-after-restart-self-func-lifespan-func","28":"/dev/api/bot/#func-get-bot-liteyukibot","29":"/dev/api/bot/#func-get-config-key-str-default-any-none-any","30":"/dev/api/bot/#func-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","31":"/dev/api/bot/lifespan.html#模块-liteyuki-bot-lifespan","32":"/dev/api/bot/lifespan.html#var-sync-lifespan-func","33":"/dev/api/bot/lifespan.html#var-async-lifespan-func","34":"/dev/api/bot/lifespan.html#var-lifespan-func","35":"/dev/api/bot/lifespan.html#var-sync-process-lifespan-func","36":"/dev/api/bot/lifespan.html#var-async-process-lifespan-func","37":"/dev/api/bot/lifespan.html#var-process-lifespan-func","38":"/dev/api/bot/lifespan.html#class-lifespan","39":"/dev/api/bot/lifespan.html#func-init-self-none","40":"/dev/api/bot/lifespan.html#async-func-run-funcs-funcs-sequence-lifespan-func-process-lifespan-func-args-kwargs-none","41":"/dev/api/bot/lifespan.html#func-on-before-start-self-func-lifespan-func-lifespan-func","42":"/dev/api/bot/lifespan.html#func-on-after-start-self-func-lifespan-func-lifespan-func","43":"/dev/api/bot/lifespan.html#func-on-before-process-shutdown-self-func-process-lifespan-func-process-lifespan-func","44":"/dev/api/bot/lifespan.html#func-on-after-shutdown-self-func-lifespan-func-lifespan-func","45":"/dev/api/bot/lifespan.html#func-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","46":"/dev/api/bot/lifespan.html#func-on-after-restart-self-func-lifespan-func-lifespan-func","47":"/dev/api/bot/lifespan.html#async-func-before-start-self-none","48":"/dev/api/bot/lifespan.html#async-func-after-start-self-none","49":"/dev/api/bot/lifespan.html#async-func-before-process-shutdown-self-args-kwargs-none","50":"/dev/api/bot/lifespan.html#async-func-after-shutdown-self-none","51":"/dev/api/bot/lifespan.html#async-func-before-process-restart-self-args-kwargs-none","52":"/dev/api/bot/lifespan.html#async-func-after-restart-self-none","53":"/dev/api/comm/channel.html#模块-liteyuki-comm-channel","54":"/dev/api/comm/channel.html#var-sync-on-receive-func","55":"/dev/api/comm/channel.html#var-on-receive-func","56":"/dev/api/comm/channel.html#var-sync-filter-func","57":"/dev/api/comm/channel.html#var-async-filter-func","58":"/dev/api/comm/channel.html#var-filter-func","59":"/dev/api/comm/channel.html#class-channel-generic-t","60":"/dev/api/comm/channel.html#func-init-self-name-str-type-check-optional-bool-none","61":"/dev/api/comm/channel.html#func-send-self-data-t","62":"/dev/api/comm/channel.html#func-receive-self-t","63":"/dev/api/comm/channel.html#async-func-async-receive-self-t","64":"/dev/api/comm/channel.html#func-on-receive-self-filter-func-optional-filter-func-none-callable-callable-t-any-callable-t-any","65":"/dev/api/comm/channel.html#var-active-channel","66":"/dev/api/comm/channel.html#var-passive-channel","67":"/dev/api/comm/channel.html#var-channel-deliver-active-channel","68":"/dev/api/comm/channel.html#var-channel-deliver-passive-channel","69":"/dev/api/comm/channel.html#func-set-channel-name-str-channel-channel","70":"/dev/api/comm/channel.html#func-set-channels-channels-dict-str-channel","71":"/dev/api/comm/channel.html#func-get-channel-name-str-channel","72":"/dev/api/comm/channel.html#func-get-channels-dict-str-channel","73":"/dev/api/comm/channel.html#func-on-set-channel-data-tuple-str-dict-str-any","74":"/dev/api/comm/channel.html#func-on-get-channel-data-tuple-str-dict-str-any","75":"/dev/api/comm/channel.html#func-on-get-channels-data-tuple-str-dict-str-any","76":"/dev/api/comm/event.html#模块-liteyuki-comm-event","77":"/dev/api/comm/event.html#class-event","78":"/dev/api/comm/event.html#func-init-self-name-str-data-dict-str-any","79":"/dev/api/comm/#模块-liteyuki-comm","80":"/dev/api/comm/storage.html#模块-liteyuki-comm-storage","81":"/dev/api/comm/storage.html#var-on-main-subscriber-receive-funcs","82":"/dev/api/comm/storage.html#var-on-sub-subscriber-receive-funcs","83":"/dev/api/comm/storage.html#class-keyvaluestore","84":"/dev/api/comm/storage.html#func-init-self","85":"/dev/api/comm/storage.html#func-set-self-key-str-value-any-none","86":"/dev/api/comm/storage.html#func-get-self-key-str-default-optional-any-none-optional-any","87":"/dev/api/comm/storage.html#func-delete-self-key-str-ignore-key-error-bool-true-none","88":"/dev/api/comm/storage.html#func-get-all-self-dict-str-any","89":"/dev/api/comm/storage.html#func-publish-self-channel-str-data-any-none","90":"/dev/api/comm/storage.html#func-on-subscriber-receive-self-channel-str-callable-on-receive-func-on-receive-func","91":"/dev/api/comm/storage.html#async-func-run-subscriber-receive-funcs-channel-str-data-any","92":"/dev/api/comm/storage.html#async-func-start-receive-loop-self","93":"/dev/api/comm/storage.html#class-globalkeyvaluestore","94":"/dev/api/comm/storage.html#func-get-instance-cls","95":"/dev/api/comm/storage.html#attr-instance-none","96":"/dev/api/comm/storage.html#attr-lock-threading-lock","97":"/dev/api/comm/storage.html#var-shared-memory","98":"/dev/api/comm/storage.html#var-ref-count","99":"/dev/api/comm/storage.html#func-on-get-data-tuple-str-dict-str-any","100":"/dev/api/comm/storage.html#func-on-set-data-tuple-str-dict-str-any","101":"/dev/api/comm/storage.html#func-on-delete-data-tuple-str-dict-str-any","102":"/dev/api/comm/storage.html#func-on-get-all-data-tuple-str-dict-str-any","103":"/dev/api/config.html#模块-liteyuki-config","104":"/dev/api/config.html#func-flat-config-config-dict-str-any-dict-str-any","105":"/dev/api/config.html#func-load-from-yaml-file-str-dict-str-any","106":"/dev/api/config.html#func-load-from-json-file-str-dict-str-any","107":"/dev/api/config.html#func-load-from-toml-file-str-dict-str-any","108":"/dev/api/config.html#func-load-from-files-files-str-no-warning-bool-false-dict-str-any","109":"/dev/api/config.html#func-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any","110":"/dev/api/config.html#func-load-config-in-default-no-waring-bool-false-dict-str-any","111":"/dev/api/config.html#class-loader","112":"/dev/api/config.html#func-init-self","113":"/dev/api/config.html#func-load-from-yaml-self-fp-str-loader","114":"/dev/api/config.html#func-load-from-toml-self-fp-str-loader","115":"/dev/api/config.html#func-load-from-json-self-fp-str-loader","116":"/dev/api/config.html#func-load-from-env-self-prefix-str-loader","117":"/dev/api/config.html#func-merge-self-loader-loader-loader","118":"/dev/api/config.html#func-get-self-key-str-default-any-none-any","119":"/dev/api/core/#模块-liteyuki-core","120":"/dev/api/core/manager.html#模块-liteyuki-core-manager","121":"/dev/api/core/manager.html#class-channeldeliver","122":"/dev/api/core/manager.html#func-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","123":"/dev/api/core/manager.html#class-processmanager","124":"/dev/api/core/manager.html#func-init-self-lifespan-lifespan","125":"/dev/api/core/manager.html#func-start-all-self","126":"/dev/api/core/manager.html#func-add-target-self-name-str-target-target-func-args-tuple-kwargs-none","127":"/dev/api/core/manager.html#func-join-all-self","128":"/dev/api/core/manager.html#func-terminate-self-name-str","129":"/dev/api/core/manager.html#func-terminate-all-self","130":"/dev/api/core/manager.html#func-is-process-alive-self-name-str-bool","131":"/dev/api/core/manager.html#class-subprocessmanager","132":"/dev/api/core/manager.html#func-init-self","133":"/dev/api/core/manager.html#func-add-self-name-str-func-processfunctype-args-kwargs","134":"/dev/api/core/manager.html#func-start-self-name-str","135":"/dev/api/core/manager.html#func-start-all-self-1","136":"/dev/api/core/manager.html#func-terminate-self-name-str-1","137":"/dev/api/core/manager.html#func-terminate-all-self-1","138":"/dev/api/core/manager.html#func-get-process-self-name-str-subprocess-none","139":"/dev/api/dev/#模块-liteyuki-dev","140":"/dev/api/dev/observer.html#模块-liteyuki-dev-observer","141":"/dev/api/dev/observer.html#var-callback-func","142":"/dev/api/dev/observer.html#var-filter-func","143":"/dev/api/dev/observer.html#func-debounce-wait","144":"/dev/api/dev/observer.html#class-codemodifiedhandler-filesystemeventhandler","145":"/dev/api/dev/observer.html#func-on-modified-self-event","146":"/dev/api/dev/observer.html#func-on-created-self-event","147":"/dev/api/dev/observer.html#func-on-deleted-self-event","148":"/dev/api/dev/observer.html#func-on-moved-self-event","149":"/dev/api/dev/observer.html#func-on-any-event-self-event","150":"/dev/api/dev/observer.html#func-on-file-system-event-directories-tuple-str-recursive-bool-true-event-filter-filter-func-none-callable-callback-func-callback-func","151":"/dev/api/dev/plugin.html#模块-liteyuki-dev-plugin","152":"/dev/api/dev/plugin.html#func-run-plugins-module-path-str-path","153":"/dev/api/exception.html#模块-liteyuki-exception","154":"/dev/api/exception.html#class-liteyukiexception-baseexception","155":"/dev/api/#模块-liteyuki","156":"/dev/api/#var-version","157":"/dev/api/log.html#模块-liteyuki-log","158":"/dev/api/log.html#func-get-format-level-str-str","159":"/dev/api/log.html#func-init-log-config-dict","160":"/dev/api/plugin/#模块-liteyuki-plugin","161":"/dev/api/plugin/#func-get-loaded-plugins-dict-str-plugin","162":"/dev/api/plugin/load.html#模块-liteyuki-plugin-load","163":"/dev/api/plugin/load.html#func-load-plugin-module-path-str-path-optional-plugin","164":"/dev/api/plugin/load.html#func-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin","165":"/dev/api/plugin/load.html#func-format-display-name-display-name-str-plugin-type-plugintype-str","166":"/dev/api/plugin/manager.html#模块-liteyuki-plugin-manager","167":"/dev/api/plugin/model.html#模块-liteyuki-plugin-model","168":"/dev/api/plugin/model.html#class-plugintype-enum","169":"/dev/api/plugin/model.html#attr-application-application","170":"/dev/api/plugin/model.html#attr-service-service","171":"/dev/api/plugin/model.html#attr-module-module","172":"/dev/api/plugin/model.html#attr-unclassified-unclassified","173":"/dev/api/plugin/model.html#attr-test-test","174":"/dev/api/plugin/model.html#class-pluginmetadata-basemodel","175":"/dev/api/plugin/model.html#attr-name-str-no-default","176":"/dev/api/plugin/model.html#attr-description-str","177":"/dev/api/plugin/model.html#attr-usage-str","178":"/dev/api/plugin/model.html#attr-type-plugintype-plugintype-unclassified","179":"/dev/api/plugin/model.html#attr-author-str","180":"/dev/api/plugin/model.html#attr-homepage-str","181":"/dev/api/plugin/model.html#attr-extra-dict-str-any","182":"/dev/api/plugin/model.html#class-plugin-basemodel","183":"/dev/api/plugin/model.html#func-hash-self","184":"/dev/api/plugin/model.html#attr-model-config-arbitrary-types-allowed-true","185":"/dev/api/plugin/model.html#attr-name-str-no-default-1","186":"/dev/api/plugin/model.html#attr-module-moduletype-no-default","187":"/dev/api/plugin/model.html#attr-module-name-str-no-default","188":"/dev/api/plugin/model.html#attr-metadata-optional-pluginmetadata-none","189":"/dev/api/plugins/#模块-liteyuki-plugins","190":"/dev/api/plugins/liteecho.html#模块-liteyuki-plugins-liteecho","191":"/dev/api/plugins/liteecho.html#async-func-liteecho-event-messageevent","192":"/dev/api/plugins/plugin_loader/#模块-liteyuki-plugins-plugin-loader","193":"/dev/api/plugins/plugin_loader/#func-default-plugins-loader","194":"/dev/api/session/event.html#模块-liteyuki-session-event","195":"/dev/api/session/event.html#class-messageevent","196":"/dev/api/session/event.html#func-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","197":"/dev/api/session/event.html#func-reply-self-message-str-dict-str-any","198":"/dev/api/session/#模块-liteyuki-session","199":"/dev/api/session/#func-message-handler-thread-i-chans-iterable-chan-any","200":"/dev/api/session/matcher.html#模块-liteyuki-session-matcher","201":"/dev/api/session/matcher.html#class-matcher","202":"/dev/api/session/matcher.html#func-init-self-rule-rule-priority-int-block-bool","203":"/dev/api/session/matcher.html#func-handle-self-callable-eventhandler-eventhandler","204":"/dev/api/session/matcher.html#async-func-run-self-event-messageevent-none","205":"/dev/api/session/message/segments.html#模块-liteyuki-session-message-segments","206":"/dev/api/session/message/segments.html#class-baseseg-basemodel","207":"/dev/api/session/message/segments.html#attr-type-str-segment","208":"/dev/api/session/message/segments.html#attr-data-dict-str-any-no-default","209":"/dev/api/session/message/segments.html#class-text-baseseg","210":"/dev/api/session/message/segments.html#attr-content-str-no-default","211":"/dev/api/session/message/segments.html#class-image-baseseg","212":"/dev/api/session/message/segments.html#attr-url-str-no-default","213":"/dev/api/session/models.html#模块-liteyuki-session-models","214":"/dev/api/session/models.html#class-scenetype-int-enum","215":"/dev/api/session/models.html#attr-private-0","216":"/dev/api/session/models.html#attr-group-1","217":"/dev/api/session/models.html#attr-guild-2","218":"/dev/api/session/models.html#attr-channel-text-3","219":"/dev/api/session/models.html#attr-channel-category-4","220":"/dev/api/session/models.html#attr-channel-voice-5","221":"/dev/api/session/models.html#class-user-basemodel","222":"/dev/api/session/models.html#attr-id-str-no-default","223":"/dev/api/session/models.html#attr-name-str-none-none","224":"/dev/api/session/models.html#attr-nick-str-none-none","225":"/dev/api/session/models.html#attr-avatar-str-none-none","226":"/dev/api/session/models.html#attr-gender-str-none-none","227":"/dev/api/session/models.html#class-scene-basemodel","228":"/dev/api/session/models.html#attr-id-str-no-default-1","229":"/dev/api/session/models.html#attr-type-scenetype-no-default","230":"/dev/api/session/models.html#attr-name-str-none-none-1","231":"/dev/api/session/models.html#attr-avatar-str-none-none-1","232":"/dev/api/session/models.html#attr-parent-scene-none-none","233":"/dev/api/session/models.html#class-role-basemodel","234":"/dev/api/session/models.html#attr-id-str-no-default-2","235":"/dev/api/session/models.html#attr-level-int-none-none","236":"/dev/api/session/models.html#attr-name-str-none-none-2","237":"/dev/api/session/models.html#class-member-basemodel","238":"/dev/api/session/models.html#attr-user-user-no-default","239":"/dev/api/session/models.html#attr-nickname-str-none-none","240":"/dev/api/session/models.html#attr-role-role-none-none","241":"/dev/api/session/models.html#attr-mute-bool-none-none","242":"/dev/api/session/models.html#attr-joined-at-datetime-none-none","243":"/dev/api/session/models.html#class-session-basemodel","244":"/dev/api/session/models.html#func-session-id-self","245":"/dev/api/session/models.html#func-target-id-self","246":"/dev/api/session/models.html#attr-self-id-str-no-default","247":"/dev/api/session/models.html#attr-adapter-str-no-default","248":"/dev/api/session/models.html#attr-scope-str-no-default","249":"/dev/api/session/models.html#attr-scene-scene-no-default","250":"/dev/api/session/models.html#attr-user-user-no-default-1","251":"/dev/api/session/models.html#attr-member-member-none-none","252":"/dev/api/session/models.html#attr-operator-member-none-none","253":"/dev/api/session/on.html#模块-liteyuki-session-on","254":"/dev/api/session/on.html#func-add-matcher-matcher-matcher","255":"/dev/api/session/on.html#func-on-message-rule-rule-empty-rule-priority-int-0-block-bool-false-matcher","256":"/dev/api/session/on.html#func-on-keywords-keywords-list-str-rule-empty-rule-priority-int-0-block-bool-false-matcher","257":"/dev/api/session/rule.html#模块-liteyuki-session-rule","258":"/dev/api/session/rule.html#var-rulehandlerfunc","259":"/dev/api/session/rule.html#class-rule","260":"/dev/api/session/rule.html#func-init-self-handler-rulehandlerfunc","261":"/dev/api/session/rule.html#func-self-other-rule-rule","262":"/dev/api/session/rule.html#func-self-other-rule-rule-1","263":"/dev/api/session/rule.html#async-func-self-event-messageevent-bool","264":"/dev/api/session/rule.html#async-func-empty-rule-event-messageevent-bool","265":"/dev/api/session/rule.html#async-func-is-su-rule-event-messageevent-bool","266":"/dev/api/utils.html#模块-liteyuki-utils","267":"/dev/api/utils.html#func-is-coroutine-callable-call-callable-any-bool","268":"/dev/api/utils.html#func-run-coroutine-coro-coroutine","269":"/dev/api/utils.html#func-run-coroutine-in-thread-coro-coroutine","270":"/dev/api/utils.html#func-path-to-module-name-path-path-str","271":"/dev/api/utils.html#func-async-wrapper-func-callable-any-callable-coroutine","272":"/dev/best_practices.html#最佳实践","273":"/dev/best_practices.html#机器人应用","274":"/dev/best_practices.html#插件","275":"/dev/best_practices.html#其他","276":"/dev/comm.html#通道通信","277":"/dev/comm.html#简介","278":"/dev/comm.html#示例","279":"/dev/comm.html#共享内存通信","280":"/dev/comm.html#简介-1","281":"/dev/comm.html#示例-1","282":"/dev/guide.html#开发指南","283":"/dev/guide.html#如何开发","284":"/dev/guide.html#建议","285":"/dev/guide.html#项目结构","286":"/dev/guide.html#规范化","287":"/dev/guide.html#最后","288":"/dev/lyfunc.html#轻雪函数","289":"/dev/lyfunc.html#函数文件","290":"/dev/lyfunc.html#命令文档","291":"/dev/lyfunc.html#示例","292":"/dev/lyfunc.html#api","293":"/dev/lyfunc.html#结束关键字","294":"/dev/plugin.html#简介","295":"/dev/plugin.html#开始","296":"/dev/plugin.html#创建插件","297":"/dev/plugin.html#编写逻辑部分","298":"/dev/plugin.html#加载插件","299":"/dev/plugin.html#方法1","300":"/dev/plugin.html#方法2","301":"/dev/resource.html#简介","302":"/dev/resource.html#加载资源包","303":"/usage/agreement.html#用户协议","304":"/usage/basic.html#基础插件","305":"/usage/basic.html#轻雪命令liteyuki-command","306":"/usage/basic.html#命令别名","307":"/usage/basic.html#插件-包管理器-liteyuki-pacman","308":"/usage/basic.html#命令别名-1","309":"/usage/basic.html#用户管理liteyuki-user","310":"/usage/extra.html#功能插件命令","311":"/usage/extra.html#轻雪天气liteyuki-weather","312":"/usage/extra.html#命令别名","313":"/usage/extra.html#统计信息liteyuki-statistics","314":"/usage/extra.html#命令别名-1"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,16],"1":[1,1,55],"2":[1,1,48],"3":[2,1,28],"4":[1,1,3],"5":[1,1,1],"6":[1,1,37],"7":[1,1,21],"8":[1,1,1],"9":[1,1,47],"10":[1,1,18],"11":[1,1,39],"12":[1,2,1],"13":[3,1,1],"14":[2,3,1],"15":[6,5,62],"16":[4,5,28],"17":[8,5,59],"18":[10,5,35],"19":[6,5,15],"20":[5,5,13],"21":[4,5,15],"22":[8,5,20],"23":[8,5,19],"24":[8,5,20],"25":[10,5,22],"26":[10,5,23],"27":[8,5,20],"28":[5,3,34],"29":[10,3,26],"30":[14,3,45],"31":[4,1,24],"32":[4,4,8],"33":[4,4,9],"34":[3,4,11],"35":[5,4,9],"36":[5,4,10],"37":[4,4,12],"38":[2,4,1],"39":[5,6,31],"40":[13,6,38],"41":[8,6,21],"42":[8,6,21],"43":[10,6,23],"44":[8,6,21],"45":[10,6,23],"46":[8,6,21],"47":[7,6,20],"48":[7,6,20],"49":[10,6,23],"50":[7,6,21],"51":[10,6,23],"52":[7,6,21],"53":[4,1,3],"54":[5,4,9],"55":[4,4,12],"56":[4,4,9],"57":[4,4,11],"58":[3,4,11],"59":[5,4,1],"60":[12,9,64],"61":[6,9,44],"62":[5,9,29],"63":[6,9,28],"64":[15,9,64],"65":[3,4,9],"66":[3,4,9],"67":[4,4,11],"68":[4,4,12],"69":[7,4,40],"70":[7,4,19],"71":[7,4,31],"72":[8,4,37],"73":[10,4,25],"74":[10,4,28],"75":[10,4,27],"76":[4,1,2],"77":[2,4,1],"78":[9,6,13],"79":[3,1,8],"80":[4,1,4],"81":[6,4,12],"82":[6,4,12],"83":[2,4,1],"84":[4,6,30],"85":[9,6,31],"86":[12,6,37],"87":[12,6,42],"88":[9,6,30],"89":[9,6,21],"90":[13,6,52],"91":[11,6,29],"92":[7,6,42],"93":[2,4,2],"94":[5,6,18],"95":[4,6,1],"96":[6,6,1],"97":[3,4,9],"98":[3,4,17],"99":[9,4,29],"100":[9,4,27],"101":[9,4,27],"102":[10,4,27],"103":[3,1,14],"104":[8,3,38],"105":[10,3,35],"106":[10,3,34],"107":[10,3,34],"108":[14,3,43],"109":[16,3,49],"110":[15,3,36],"111":[2,3,1],"112":[4,5,9],"113":[9,5,25],"114":[9,5,23],"115":[9,5,23],"116":[10,5,28],"117":[6,5,15],"118":[10,5,17],"119":[3,1,1],"120":[4,1,24],"121":[2,4,1],"122":[14,6,18],"123":[2,4,1],"124":[6,6,17],"125":[5,6,28],"126":[14,6,48],"127":[5,6,13],"128":[6,6,31],"129":[5,6,12],"130":[9,6,27],"131":[2,4,1],"132":[4,6,12],"133":[9,6,23],"134":[6,6,22],"135":[5,6,20],"136":[6,6,22],"137":[5,6,20],"138":[10,6,20],"139":[3,1,2],"140":[4,1,5],"141":[3,4,9],"142":[3,4,9],"143":[4,4,25],"144":[4,4,3],"145":[6,8,17],"146":[6,8,10],"147":[6,8,10],"148":[6,8,10],"149":[6,8,10],"150":[20,4,53],"151":[4,1,24],"152":[9,4,30],"153":[3,1,2],"154":[4,3,1],"155":[2,1,10],"156":[3,2,7],"157":[3,1,24],"158":[6,3,21],"159":[6,3,55],"160":[3,1,1],"161":[9,3,17],"162":[4,1,24],"163":[12,4,75],"164":[15,4,58],"165":[9,4,37],"166":[4,1,24],"167":[4,1,24],"168":[4,4,1],"169":[5,8,1],"170":[5,8,1],"171":[5,8,1],"172":[5,8,1],"173":[5,8,1],"174":[4,4,1],"175":[6,8,1],"176":[5,8,1],"177":[5,8,1],"178":[5,8,1],"179":[5,8,1],"180":[5,8,1],"181":[7,8,1],"182":[4,4,1],"183":[3,8,10],"184":[9,8,1],"185":[6,8,1],"186":[6,8,1],"187":[7,8,1],"188":[6,8,1],"189":[3,1,15],"190":[4,1,30],"191":[6,4,21],"192":[5,1,24],"193":[5,5,21],"194":[4,1,24],"195":[2,4,1],"196":[24,6,32],"197":[9,6,34],"198":[3,1,4],"199":[10,3,27],"200":[4,1,24],"201":[2,4,1],"202":[10,6,25],"203":[7,6,20],"204":[8,6,30],"205":[5,1,1],"206":[4,5,1],"207":[6,9,1],"208":[8,9,1],"209":[4,5,1],"210":[6,9,1],"211":[4,5,1],"212":[6,9,1],"213":[4,1,123],"214":[5,4,1],"215":[4,9,1],"216":[4,9,1],"217":[4,9,1],"218":[5,9,1],"219":[5,9,1],"220":[5,9,1],"221":[4,4,1],"222":[6,8,1],"223":[6,8,1],"224":[6,8,1],"225":[6,8,1],"226":[6,8,1],"227":[4,4,1],"228":[6,8,1],"229":[6,8,1],"230":[6,8,1],"231":[6,8,1],"232":[6,8,1],"233":[4,4,1],"234":[6,8,1],"235":[6,8,1],"236":[6,8,1],"237":[4,4,1],"238":[6,8,1],"239":[6,8,1],"240":[6,8,1],"241":[6,8,1],"242":[7,8,1],"243":[4,4,2],"244":[5,8,31],"245":[5,8,27],"246":[7,8,1],"247":[6,8,1],"248":[6,8,1],"249":[6,8,1],"250":[6,8,1],"251":[6,8,1],"252":[6,8,1],"253":[4,1,24],"254":[5,4,21],"255":[15,4,19],"256":[16,4,30],"257":[4,1,24],"258":[2,4,11],"259":[2,4,1],"260":[6,6,10],"261":[7,6,19],"262":[7,6,19],"263":[8,6,20],"264":[8,4,16],"265":[9,4,21],"266":[3,1,5],"267":[9,3,30],"268":[6,3,42],"269":[8,3,20],"270":[8,3,38],"271":[8,3,25],"272":[1,1,1],"273":[1,1,13],"274":[1,1,10],"275":[1,1,15],"276":[1,1,1],"277":[1,1,10],"278":[1,1,83],"279":[1,1,1],"280":[1,2,9],"281":[1,2,18],"282":[1,1,1],"283":[1,1,18],"284":[1,2,10],"285":[1,1,36],"286":[1,1,55],"287":[1,1,4],"288":[1,1,9],"289":[1,1,25],"290":[1,1,33],"291":[1,2,26],"292":[1,1,7],"293":[1,1,18],"294":[1,1,27],"295":[1,1,1],"296":[1,2,42],"297":[1,2,58],"298":[1,2,1],"299":[1,3,6],"300":[1,3,25],"301":[1,1,31],"302":[1,1,56],"303":[1,1,28],"304":[1,1,16],"305":[2,1,86],"306":[1,3,30],"307":[4,1,53],"308":[1,5,38],"309":[2,1,20],"310":[1,1,1],"311":[2,1,30],"312":[1,3,8],"313":[2,1,35],"314":[1,3,17]},"averageFieldLength":[5.466666666666668,4.447619047619045,17.84444444444445],"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":"安装","titles":[]},"9":{"title":"常规部署","titles":["安装"]},"10":{"title":"使用Docker构建","titles":["安装"]},"11":{"title":"装置要求","titles":["安装"]},"12":{"title":"其他问题请移步至","titles":["安装","装置要求"]},"13":{"title":"模块 liteyuki.bot","titles":[]},"14":{"title":"class LiteyukiBot","titles":["模块 liteyuki.bot"]},"15":{"title":"func __init__(self, **kwargs) -> None","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"16":{"title":"func run(self)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"17":{"title":"func restart(self, delay: int = 0)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"18":{"title":"func restart_process(self, name: Optional[str] = None)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"19":{"title":"func init(self, *args, **kwargs)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"20":{"title":"func init_logger(self)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"21":{"title":"func stop(self)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"22":{"title":"func on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"23":{"title":"func on_after_start(self, func: LIFESPAN_FUNC)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"24":{"title":"func on_after_shutdown(self, func: LIFESPAN_FUNC)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"25":{"title":"func on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"26":{"title":"func on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"27":{"title":"func on_after_restart(self, func: LIFESPAN_FUNC)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"28":{"title":"func get_bot() -> LiteyukiBot","titles":["模块 liteyuki.bot"]},"29":{"title":"func get_config(key: str, default: Any = None) -> Any","titles":["模块 liteyuki.bot"]},"30":{"title":"func get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","titles":["模块 liteyuki.bot"]},"31":{"title":"模块 liteyuki.bot.lifespan","titles":[]},"32":{"title":"var SYNC_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan"]},"33":{"title":"var ASYNC_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan"]},"34":{"title":"var LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan"]},"35":{"title":"var SYNC_PROCESS_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan"]},"36":{"title":"var ASYNC_PROCESS_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan"]},"37":{"title":"var PROCESS_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan"]},"38":{"title":"class Lifespan","titles":["模块 liteyuki.bot.lifespan"]},"39":{"title":"func __init__(self) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"40":{"title":"async func run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"41":{"title":"func on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"42":{"title":"func on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"43":{"title":"func on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"44":{"title":"func on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"45":{"title":"func on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"46":{"title":"func on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"47":{"title":"async func before_start(self) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"48":{"title":"async func after_start(self) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"49":{"title":"async func before_process_shutdown(self, *args, **kwargs) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"50":{"title":"async func after_shutdown(self) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"51":{"title":"async func before_process_restart(self, *args, **kwargs) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"52":{"title":"async func after_restart(self) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"53":{"title":"模块 liteyuki.comm.channel","titles":[]},"54":{"title":"var SYNC_ON_RECEIVE_FUNC","titles":["模块 liteyuki.comm.channel"]},"55":{"title":"var ON_RECEIVE_FUNC","titles":["模块 liteyuki.comm.channel"]},"56":{"title":"var SYNC_FILTER_FUNC","titles":["模块 liteyuki.comm.channel"]},"57":{"title":"var ASYNC_FILTER_FUNC","titles":["模块 liteyuki.comm.channel"]},"58":{"title":"var FILTER_FUNC","titles":["模块 liteyuki.comm.channel"]},"59":{"title":"class Channel(Generic[T])","titles":["模块 liteyuki.comm.channel"]},"60":{"title":"func __init__(self, name: str, type_check: Optional[bool] = None)","titles":["模块 liteyuki.comm.channel","class Channel(Generic[T])"]},"61":{"title":"func send(self, data: T)","titles":["模块 liteyuki.comm.channel","class Channel(Generic[T])"]},"62":{"title":"func receive(self) -> T","titles":["模块 liteyuki.comm.channel","class Channel(Generic[T])"]},"63":{"title":"async func async_receive(self) -> T","titles":["模块 liteyuki.comm.channel","class Channel(Generic[T])"]},"64":{"title":"func on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]","titles":["模块 liteyuki.comm.channel","class Channel(Generic[T])"]},"65":{"title":"var active_channel","titles":["模块 liteyuki.comm.channel"]},"66":{"title":"var passive_channel","titles":["模块 liteyuki.comm.channel"]},"67":{"title":"var channel_deliver_active_channel","titles":["模块 liteyuki.comm.channel"]},"68":{"title":"var channel_deliver_passive_channel","titles":["模块 liteyuki.comm.channel"]},"69":{"title":"func set_channel(name: str, channel: Channel)","titles":["模块 liteyuki.comm.channel"]},"70":{"title":"func set_channels(channels: dict[str, Channel])","titles":["模块 liteyuki.comm.channel"]},"71":{"title":"func get_channel(name: str) -> Channel","titles":["模块 liteyuki.comm.channel"]},"72":{"title":"func get_channels() -> dict[str, Channel]","titles":["模块 liteyuki.comm.channel"]},"73":{"title":"func on_set_channel(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.channel"]},"74":{"title":"func on_get_channel(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.channel"]},"75":{"title":"func on_get_channels(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.channel"]},"76":{"title":"模块 liteyuki.comm.event","titles":[]},"77":{"title":"class Event","titles":["模块 liteyuki.comm.event"]},"78":{"title":"func __init__(self, name: str, data: dict[str, Any])","titles":["模块 liteyuki.comm.event","class Event"]},"79":{"title":"模块 liteyuki.comm","titles":[]},"80":{"title":"模块 liteyuki.comm.storage","titles":[]},"81":{"title":"var _on_main_subscriber_receive_funcs","titles":["模块 liteyuki.comm.storage"]},"82":{"title":"var _on_sub_subscriber_receive_funcs","titles":["模块 liteyuki.comm.storage"]},"83":{"title":"class KeyValueStore","titles":["模块 liteyuki.comm.storage"]},"84":{"title":"func __init__(self)","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"85":{"title":"func set(self, key: str, value: Any) -> None","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"86":{"title":"func get(self, key: str, default: Optional[Any] = None) -> Optional[Any]","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"87":{"title":"func delete(self, key: str, ignore_key_error: bool = True) -> None","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"88":{"title":"func get_all(self) -> dict[str, Any]","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"89":{"title":"func publish(self, channel_: str, data: Any) -> None","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"90":{"title":"func on_subscriber_receive(self, channel_: str) -> Callable[[ON_RECEIVE_FUNC], ON_RECEIVE_FUNC]","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"91":{"title":"async func run_subscriber_receive_funcs(channel_: str, data: Any)","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"92":{"title":"async func start_receive_loop(self)","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"93":{"title":"class GlobalKeyValueStore","titles":["模块 liteyuki.comm.storage"]},"94":{"title":"func get_instance(cls)","titles":["模块 liteyuki.comm.storage","class GlobalKeyValueStore"]},"95":{"title":"attr _instance = None","titles":["模块 liteyuki.comm.storage","class GlobalKeyValueStore"]},"96":{"title":"attr _lock = threading.Lock()","titles":["模块 liteyuki.comm.storage","class GlobalKeyValueStore"]},"97":{"title":"var shared_memory","titles":["模块 liteyuki.comm.storage"]},"98":{"title":"var _ref_count","titles":["模块 liteyuki.comm.storage"]},"99":{"title":"func on_get(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.storage"]},"100":{"title":"func on_set(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.storage"]},"101":{"title":"func on_delete(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.storage"]},"102":{"title":"func on_get_all(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.storage"]},"103":{"title":"模块 liteyuki.config","titles":[]},"104":{"title":"func flat_config(config: dict[str, Any]) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"105":{"title":"func load_from_yaml(file_: str) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"106":{"title":"func load_from_json(file_: str) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"107":{"title":"func load_from_toml(file_: str) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"108":{"title":"func load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"109":{"title":"func load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"110":{"title":"func load_config_in_default(no_waring: bool = False) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"111":{"title":"class Loader","titles":["模块 liteyuki.config"]},"112":{"title":"func __init__(self)","titles":["模块 liteyuki.config","class Loader"]},"113":{"title":"func load_from_yaml(self, fp: str) -> Loader","titles":["模块 liteyuki.config","class Loader"]},"114":{"title":"func load_from_toml(self, fp: str) -> Loader","titles":["模块 liteyuki.config","class Loader"]},"115":{"title":"func load_from_json(self, fp: str) -> Loader","titles":["模块 liteyuki.config","class Loader"]},"116":{"title":"func load_from_env(self, prefix: str = '') -> Loader","titles":["模块 liteyuki.config","class Loader"]},"117":{"title":"func merge(self, loader: Loader) -> Loader","titles":["模块 liteyuki.config","class Loader"]},"118":{"title":"func get(self, key: str, default: Any = None) -> Any","titles":["模块 liteyuki.config","class Loader"]},"119":{"title":"模块 liteyuki.core","titles":[]},"120":{"title":"模块 liteyuki.core.manager","titles":[]},"121":{"title":"class ChannelDeliver","titles":["模块 liteyuki.core.manager"]},"122":{"title":"func __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"]},"123":{"title":"class ProcessManager","titles":["模块 liteyuki.core.manager"]},"124":{"title":"func __init__(self, lifespan: Lifespan)","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"125":{"title":"func start_all(self)","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"126":{"title":"func add_target(self, name: str, target: TARGET_FUNC, args: tuple = (), kwargs = None)","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"127":{"title":"func join_all(self)","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"128":{"title":"func terminate(self, name: str)","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"129":{"title":"func terminate_all(self)","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"130":{"title":"func is_process_alive(self, name: str) -> bool","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"131":{"title":"class _SubProcessManager","titles":["模块 liteyuki.core.manager"]},"132":{"title":"func __init__(self)","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"133":{"title":"func add(self, name: str, func: ProcessFuncType, *args, **kwargs)","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"134":{"title":"func start(self, name: str)","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"135":{"title":"func start_all(self)","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"136":{"title":"func terminate(self, name: str)","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"137":{"title":"func terminate_all(self)","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"138":{"title":"func get_process(self, name: str) -> SubProcess | None","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"139":{"title":"模块 liteyuki.dev","titles":[]},"140":{"title":"模块 liteyuki.dev.observer","titles":[]},"141":{"title":"var CALLBACK_FUNC","titles":["模块 liteyuki.dev.observer"]},"142":{"title":"var FILTER_FUNC","titles":["模块 liteyuki.dev.observer"]},"143":{"title":"func debounce(wait)","titles":["模块 liteyuki.dev.observer"]},"144":{"title":"class CodeModifiedHandler(FileSystemEventHandler)","titles":["模块 liteyuki.dev.observer"]},"145":{"title":"func on_modified(self, event)","titles":["模块 liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"146":{"title":"func on_created(self, event)","titles":["模块 liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"147":{"title":"func on_deleted(self, event)","titles":["模块 liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"148":{"title":"func on_moved(self, event)","titles":["模块 liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"149":{"title":"func on_any_event(self, event)","titles":["模块 liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"150":{"title":"func on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]","titles":["模块 liteyuki.dev.observer"]},"151":{"title":"模块 liteyuki.dev.plugin","titles":[]},"152":{"title":"func run_plugins(*module_path: str | Path)","titles":["模块 liteyuki.dev.plugin"]},"153":{"title":"模块 liteyuki.exception","titles":[]},"154":{"title":"class LiteyukiException(BaseException)","titles":["模块 liteyuki.exception"]},"155":{"title":"模块 liteyuki","titles":[]},"156":{"title":"var __version__","titles":["模块 liteyuki"]},"157":{"title":"模块 liteyuki.log","titles":[]},"158":{"title":"func get_format(level: str) -> str","titles":["模块 liteyuki.log"]},"159":{"title":"func init_log(config: dict)","titles":["模块 liteyuki.log"]},"160":{"title":"模块 liteyuki.plugin","titles":[]},"161":{"title":"func get_loaded_plugins() -> dict[str, Plugin]","titles":["模块 liteyuki.plugin"]},"162":{"title":"模块 liteyuki.plugin.load","titles":[]},"163":{"title":"func load_plugin(module_path: str | Path) -> Optional[Plugin]","titles":["模块 liteyuki.plugin.load"]},"164":{"title":"func load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]","titles":["模块 liteyuki.plugin.load"]},"165":{"title":"func format_display_name(display_name: str, plugin_type: PluginType) -> str","titles":["模块 liteyuki.plugin.load"]},"166":{"title":"模块 liteyuki.plugin.manager","titles":[]},"167":{"title":"模块 liteyuki.plugin.model","titles":[]},"168":{"title":"class PluginType(Enum)","titles":["模块 liteyuki.plugin.model"]},"169":{"title":"attr APPLICATION = 'application'","titles":["模块 liteyuki.plugin.model","class PluginType(Enum)"]},"170":{"title":"attr SERVICE = 'service'","titles":["模块 liteyuki.plugin.model","class PluginType(Enum)"]},"171":{"title":"attr MODULE = 'module'","titles":["模块 liteyuki.plugin.model","class PluginType(Enum)"]},"172":{"title":"attr UNCLASSIFIED = 'unclassified'","titles":["模块 liteyuki.plugin.model","class PluginType(Enum)"]},"173":{"title":"attr TEST = 'test'","titles":["模块 liteyuki.plugin.model","class PluginType(Enum)"]},"174":{"title":"class PluginMetadata(BaseModel)","titles":["模块 liteyuki.plugin.model"]},"175":{"title":"attr name: str = NO_DEFAULT","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"176":{"title":"attr description: str = ''","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"177":{"title":"attr usage: str = ''","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"178":{"title":"attr type: PluginType = PluginType.UNCLASSIFIED","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"179":{"title":"attr author: str = ''","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"180":{"title":"attr homepage: str = ''","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"181":{"title":"attr extra: dict[str, Any] = {}","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"182":{"title":"class Plugin(BaseModel)","titles":["模块 liteyuki.plugin.model"]},"183":{"title":"func hash self","titles":["模块 liteyuki.plugin.model","class Plugin(BaseModel)"]},"184":{"title":"attr model_config = {'arbitrary_types_allowed': True}","titles":["模块 liteyuki.plugin.model","class Plugin(BaseModel)"]},"185":{"title":"attr name: str = NO_DEFAULT","titles":["模块 liteyuki.plugin.model","class Plugin(BaseModel)"]},"186":{"title":"attr module: ModuleType = NO_DEFAULT","titles":["模块 liteyuki.plugin.model","class Plugin(BaseModel)"]},"187":{"title":"attr module_name: str = NO_DEFAULT","titles":["模块 liteyuki.plugin.model","class Plugin(BaseModel)"]},"188":{"title":"attr metadata: Optional[PluginMetadata] = None","titles":["模块 liteyuki.plugin.model","class Plugin(BaseModel)"]},"189":{"title":"模块 liteyuki.plugins","titles":[]},"190":{"title":"模块 liteyuki.plugins.liteecho","titles":[]},"191":{"title":"async func liteecho(event: MessageEvent)","titles":["模块 liteyuki.plugins.liteecho"]},"192":{"title":"模块 liteyuki.plugins.plugin_loader","titles":[]},"193":{"title":"func default_plugins_loader()","titles":["模块 liteyuki.plugins.plugin_loader"]},"194":{"title":"模块 liteyuki.session.event","titles":[]},"195":{"title":"class MessageEvent","titles":["模块 liteyuki.session.event"]},"196":{"title":"func __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.session.event","class MessageEvent"]},"197":{"title":"func reply(self, message: str | dict[str, Any])","titles":["模块 liteyuki.session.event","class MessageEvent"]},"198":{"title":"模块 liteyuki.session","titles":[]},"199":{"title":"func message_handler_thread(i_chans: Iterable[Chan[Any]])","titles":["模块 liteyuki.session"]},"200":{"title":"模块 liteyuki.session.matcher","titles":[]},"201":{"title":"class Matcher","titles":["模块 liteyuki.session.matcher"]},"202":{"title":"func __init__(self, rule: Rule, priority: int, block: bool)","titles":["模块 liteyuki.session.matcher","class Matcher"]},"203":{"title":"func handle(self) -> Callable[[EventHandler], EventHandler]","titles":["模块 liteyuki.session.matcher","class Matcher"]},"204":{"title":"async func run(self, event: MessageEvent) -> None","titles":["模块 liteyuki.session.matcher","class Matcher"]},"205":{"title":"模块 liteyuki.session.message.segments","titles":[]},"206":{"title":"class BaseSeg(BaseModel)","titles":["模块 liteyuki.session.message.segments"]},"207":{"title":"attr type: str = 'Segment'","titles":["模块 liteyuki.session.message.segments","class BaseSeg(BaseModel)"]},"208":{"title":"attr data: dict[str, Any] = NO_DEFAULT","titles":["模块 liteyuki.session.message.segments","class BaseSeg(BaseModel)"]},"209":{"title":"class Text(BaseSeg)","titles":["模块 liteyuki.session.message.segments"]},"210":{"title":"attr content: str = NO_DEFAULT","titles":["模块 liteyuki.session.message.segments","class Text(BaseSeg)"]},"211":{"title":"class Image(BaseSeg)","titles":["模块 liteyuki.session.message.segments"]},"212":{"title":"attr url: str = NO_DEFAULT","titles":["模块 liteyuki.session.message.segments","class Image(BaseSeg)"]},"213":{"title":"模块 liteyuki.session.models","titles":[]},"214":{"title":"class SceneType(int, Enum)","titles":["模块 liteyuki.session.models"]},"215":{"title":"attr PRIVATE = 0","titles":["模块 liteyuki.session.models","class SceneType(int, Enum)"]},"216":{"title":"attr GROUP = 1","titles":["模块 liteyuki.session.models","class SceneType(int, Enum)"]},"217":{"title":"attr GUILD = 2","titles":["模块 liteyuki.session.models","class SceneType(int, Enum)"]},"218":{"title":"attr CHANNEL_TEXT = 3","titles":["模块 liteyuki.session.models","class SceneType(int, Enum)"]},"219":{"title":"attr CHANNEL_CATEGORY = 4","titles":["模块 liteyuki.session.models","class SceneType(int, Enum)"]},"220":{"title":"attr CHANNEL_VOICE = 5","titles":["模块 liteyuki.session.models","class SceneType(int, Enum)"]},"221":{"title":"class User(BaseModel)","titles":["模块 liteyuki.session.models"]},"222":{"title":"attr id: str = NO_DEFAULT","titles":["模块 liteyuki.session.models","class User(BaseModel)"]},"223":{"title":"attr name: str | None = None","titles":["模块 liteyuki.session.models","class User(BaseModel)"]},"224":{"title":"attr nick: str | None = None","titles":["模块 liteyuki.session.models","class User(BaseModel)"]},"225":{"title":"attr avatar: str | None = None","titles":["模块 liteyuki.session.models","class User(BaseModel)"]},"226":{"title":"attr gender: str | None = None","titles":["模块 liteyuki.session.models","class User(BaseModel)"]},"227":{"title":"class Scene(BaseModel)","titles":["模块 liteyuki.session.models"]},"228":{"title":"attr id: str = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Scene(BaseModel)"]},"229":{"title":"attr type: SceneType = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Scene(BaseModel)"]},"230":{"title":"attr name: str | None = None","titles":["模块 liteyuki.session.models","class Scene(BaseModel)"]},"231":{"title":"attr avatar: str | None = None","titles":["模块 liteyuki.session.models","class Scene(BaseModel)"]},"232":{"title":"attr parent: 'Scene | None' = None","titles":["模块 liteyuki.session.models","class Scene(BaseModel)"]},"233":{"title":"class Role(BaseModel)","titles":["模块 liteyuki.session.models"]},"234":{"title":"attr id: str = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Role(BaseModel)"]},"235":{"title":"attr level: int | None = None","titles":["模块 liteyuki.session.models","class Role(BaseModel)"]},"236":{"title":"attr name: str | None = None","titles":["模块 liteyuki.session.models","class Role(BaseModel)"]},"237":{"title":"class Member(BaseModel)","titles":["模块 liteyuki.session.models"]},"238":{"title":"attr user: User = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Member(BaseModel)"]},"239":{"title":"attr nickname: str | None = None","titles":["模块 liteyuki.session.models","class Member(BaseModel)"]},"240":{"title":"attr role: Role | None = None","titles":["模块 liteyuki.session.models","class Member(BaseModel)"]},"241":{"title":"attr mute: bool | None = None","titles":["模块 liteyuki.session.models","class Member(BaseModel)"]},"242":{"title":"attr joined_at: datetime | None = None","titles":["模块 liteyuki.session.models","class Member(BaseModel)"]},"243":{"title":"class Session(BaseModel)","titles":["模块 liteyuki.session.models"]},"244":{"title":"func session_id(self)","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"245":{"title":"func target_id(self)","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"246":{"title":"attr self_id: str = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"247":{"title":"attr adapter: str = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"248":{"title":"attr scope: str = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"249":{"title":"attr scene: Scene = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"250":{"title":"attr user: User = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"251":{"title":"attr member: 'Member | None' = None","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"252":{"title":"attr operator: 'Member | None' = None","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"253":{"title":"模块 liteyuki.session.on","titles":[]},"254":{"title":"func add_matcher(matcher: Matcher)","titles":["模块 liteyuki.session.on"]},"255":{"title":"func on_message(rule: Rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["模块 liteyuki.session.on"]},"256":{"title":"func on_keywords(keywords: list[str], rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["模块 liteyuki.session.on"]},"257":{"title":"模块 liteyuki.session.rule","titles":[]},"258":{"title":"var RuleHandlerFunc","titles":["模块 liteyuki.session.rule"]},"259":{"title":"class Rule","titles":["模块 liteyuki.session.rule"]},"260":{"title":"func __init__(self, handler: RuleHandlerFunc)","titles":["模块 liteyuki.session.rule","class Rule"]},"261":{"title":"func self | other: Rule => Rule","titles":["模块 liteyuki.session.rule","class Rule"]},"262":{"title":"func self & other: Rule => Rule","titles":["模块 liteyuki.session.rule","class Rule"]},"263":{"title":"async func self () event: MessageEvent => bool","titles":["模块 liteyuki.session.rule","class Rule"]},"264":{"title":"async func empty_rule(event: MessageEvent) -> bool","titles":["模块 liteyuki.session.rule"]},"265":{"title":"async func is_su_rule(event: MessageEvent) -> bool","titles":["模块 liteyuki.session.rule"]},"266":{"title":"模块 liteyuki.utils","titles":[]},"267":{"title":"func is_coroutine_callable(call: Callable[..., Any]) -> bool","titles":["模块 liteyuki.utils"]},"268":{"title":"func run_coroutine(*coro: Coroutine)","titles":["模块 liteyuki.utils"]},"269":{"title":"func run_coroutine_in_thread(*coro: Coroutine)","titles":["模块 liteyuki.utils"]},"270":{"title":"func path_to_module_name(path: Path) -> str","titles":["模块 liteyuki.utils"]},"271":{"title":"func async_wrapper(func: Callable[..., Any]) -> Callable[..., Coroutine]","titles":["模块 liteyuki.utils"]},"272":{"title":"最佳实践","titles":[]},"273":{"title":"机器人应用","titles":["最佳实践"]},"274":{"title":"插件","titles":["最佳实践"]},"275":{"title":"其他","titles":["最佳实践"]},"276":{"title":"通道通信","titles":[]},"277":{"title":"简介","titles":["通道通信"]},"278":{"title":"示例","titles":["通道通信"]},"279":{"title":"共享内存通信","titles":["通道通信"]},"280":{"title":"简介","titles":["通道通信","共享内存通信"]},"281":{"title":"示例","titles":["通道通信","共享内存通信"]},"282":{"title":"开发指南","titles":[]},"283":{"title":"如何开发","titles":["开发指南"]},"284":{"title":"建议","titles":["开发指南","如何开发"]},"285":{"title":"项目结构","titles":["开发指南"]},"286":{"title":"规范化","titles":["开发指南"]},"287":{"title":"最后","titles":["开发指南"]},"288":{"title":"轻雪函数","titles":[]},"289":{"title":"函数文件","titles":["轻雪函数"]},"290":{"title":"命令文档","titles":["轻雪函数"]},"291":{"title":"示例","titles":["轻雪函数","命令文档"]},"292":{"title":"API","titles":["轻雪函数"]},"293":{"title":"结束关键字","titles":["轻雪函数"]},"294":{"title":"简介","titles":[]},"295":{"title":"开始","titles":["简介"]},"296":{"title":"创建插件","titles":["简介","开始"]},"297":{"title":"编写逻辑部分","titles":["简介","开始"]},"298":{"title":"加载插件","titles":["简介","开始"]},"299":{"title":"方法1","titles":["简介","开始","加载插件"]},"300":{"title":"方法2","titles":["简介","开始","加载插件"]},"301":{"title":"简介","titles":[]},"302":{"title":"加载资源包","titles":["简介"]},"303":{"title":"用户协议","titles":[]},"304":{"title":"基础插件","titles":[]},"305":{"title":"轻雪命令liteyuki_command","titles":["基础插件"]},"306":{"title":"命令别名","titles":["基础插件","轻雪命令liteyuki_command"]},"307":{"title":"插件/包管理器 liteyuki_pacman","titles":["基础插件"]},"308":{"title":"命令别名","titles":["基础插件","插件/包管理器 liteyuki_pacman"]},"309":{"title":"用户管理liteyuki_user","titles":["基础插件"]},"310":{"title":"功能插件命令","titles":[]},"311":{"title":"轻雪天气liteyuki_weather","titles":["功能插件命令"]},"312":{"title":"命令别名","titles":["功能插件命令","轻雪天气liteyuki_weather"]},"313":{"title":"统计信息liteyuki_statistics","titles":["功能插件命令"]},"314":{"title":"命令别名","titles":["功能插件命令","统计信息liteyuki_statistics"]}},"dirtCount":0,"index":[["当前bot",{"2":{"313":1}}],["当前群聊",{"2":{"313":1}}],["当前会话启用",{"2":{"307":1}}],["秒",{"2":{"313":2}}],["小时",{"2":{"313":2}}],["天",{"2":{"313":2}}],["天气",{"2":{"311":1,"312":1}}],["格式",{"2":{"313":1}}],["格式为onebot",{"2":{"305":1}}],["统计时间范围为duration",{"2":{"313":1}}],["统计周期为period",{"2":{"313":1}}],["统计信息",{"2":{"313":1}}],["统计信息liteyuki",{"0":{"313":1},"1":{"314":1}}],["功能",{"2":{"313":1}}],["功能插件命令",{"0":{"310":1},"1":{"311":1,"312":1,"313":1,"314":1}}],["个人全局生效",{"2":{"311":1}}],["个人信息",{"2":{"309":1}}],["绑定城市",{"2":{"312":1}}],["绑定查询城市",{"2":{"311":1}}],["绑定端口",{"2":{"1":1}}],["海淀",{"2":{"311":1}}],["北京",{"2":{"311":1}}],["受限于nonebot2钩子函数的依赖注入参数",{"2":{"308":1}}],["帮助",{"2":{"308":1}}],["列表",{"2":{"308":1}}],["列出所有资源包",{"2":{"307":1}}],["列出所有插件",{"2":{"307":1}}],["更改",{"2":{"308":1}}],["更新",{"2":{"308":1}}],["更新插件商店索引",{"2":{"307":1}}],["更新轻雪",{"2":{"305":1,"306":1}}],["更新轻雪失败",{"2":{"6":1}}],["全局停用",{"2":{"308":1}}],["全局启用",{"2":{"307":1,"308":1}}],["搜索",{"2":{"308":1}}],["卸载",{"2":{"308":2}}],["卸载资源包",{"2":{"307":1}}],["卸载插件",{"2":{"307":1}}],["私聊所有人可用",{"2":{"307":2}}],["包管理器",{"0":{"307":1},"1":{"308":1}}],["包括子task",{"2":{"290":1}}],["包括chromium",{"2":{"11":1}}],["切换图片模式",{"2":{"306":1}}],["切换到bot目录下",{"2":{"9":1}}],["状态",{"2":{"306":1}}],["别名",{"2":{"306":1,"308":1,"309":1,"312":1,"314":1}}],["别用你那b",{"2":{"11":1}}],["所有人",{"2":{"305":1,"307":1,"309":3}}],["所以在编写lyfunction时也要注意异步的调用",{"2":{"293":1}}],["所以此项目既是liteyukibot应用仓库",{"2":{"285":1}}],["群聊",{"2":{"306":1}}],["群聊仅群主",{"2":{"305":1,"307":2}}],["群号",{"2":{"305":1}}],["管理员",{"2":{"305":1,"307":2}}],["管理脚本",{"2":{"275":1}}],["停用插件",{"2":{"307":2}}],["停用",{"2":{"306":1,"308":1}}],["停用机器人",{"2":{"305":1}}],["停止后钩子",{"2":{"50":1}}],["停止前钩子",{"2":{"49":1}}],["停止",{"2":{"39":1}}],["停止轻雪",{"2":{"18":1,"21":1}}],["查询目标地实时天气",{"2":{"311":1}}],["查询实时天气",{"2":{"311":1}}],["查询",{"2":{"306":1,"309":1}}],["查询配置项",{"2":{"305":1}}],["查看用户信息菜单",{"2":{"309":1}}],["查看插件帮助",{"2":{"307":1}}],["查看轻雪文档",{"2":{"305":1}}],["查看统计信息和状态",{"2":{"305":1}}],["查看当前bot",{"2":{"305":1}}],["版本",{"2":{"305":1}}],["超级用户可用",{"2":{"305":1,"307":2}}],["超级用户",{"2":{"305":10,"307":10}}],["超级用户列表",{"2":{"1":1}}],["重载",{"2":{"308":1}}],["重载所有资源包",{"2":{"307":1}}],["重载资源",{"2":{"306":1}}],["重载轻雪",{"2":{"305":1}}],["重启轻雪",{"2":{"306":1}}],["重启轻雪即可加载插件",{"2":{"299":1}}],["重启轻雪本体",{"2":{"17":1}}],["重启后钩子",{"2":{"52":1}}],["重启前钩子",{"2":{"51":1}}],["重启",{"2":{"39":1}}],["举例",{"2":{"305":1}}],["权限",{"2":{"305":1,"307":2,"309":1}}],["~代替",{"2":{"304":1}}],["~可以使用插件",{"2":{"304":1}}],["命令",{"2":{"305":1,"306":1,"307":2,"308":1,"309":2,"311":1,"312":1,"313":1,"314":1}}],["命令别名",{"0":{"306":1,"308":1,"312":1,"314":1},"2":{"304":1,"309":1}}],["命令文档",{"0":{"290":1},"1":{"291":1}}],["且通过安全的方式传输到轻雪的服务器",{"2":{"303":1}}],["且通道标识为",{"2":{"278":1}}],["系统信息及python信息",{"2":{"303":1}}],["分钟",{"2":{"313":2}}],["分发",{"2":{"303":1}}],["分工明确",{"2":{"103":1}}],["修改优先级",{"2":{"307":1}}],["修改",{"2":{"303":1}}],["修订文档时",{"2":{"286":1}}],["第三方资源包开发者需要注意版本兼容性",{"2":{"302":1}}],["└─",{"2":{"302":1}}],["└───",{"2":{"302":1}}],["└─resource",{"2":{"302":2}}],["├─templates",{"2":{"302":1}}],["├─metadata",{"2":{"302":2}}],["正常的路径应该是这样的",{"2":{"302":1}}],["只需要将其解压到根目录resources目录下即可",{"2":{"302":1}}],["zip格式压缩的",{"2":{"302":1}}],["zh",{"2":{"2":1,"285":1}}],["错位等无法预料的事情发生",{"2":{"301":1}}],["异常",{"2":{"301":1}}],["异步任务结束关键字",{"2":{"293":1}}],["异步等待",{"2":{"290":1}}],["异步包装器",{"2":{"271":1}}],["异步接收数据",{"2":{"63":1}}],["异步过滤函数",{"2":{"57":1}}],["异步进程生命周期函数",{"2":{"36":1}}],["异步生命周期函数",{"2":{"33":1}}],["欢迎各位投稿资源包到轻雪资源商店",{"2":{"301":1}}],["部分异常信息",{"2":{"303":1}}],["部分内容制作需要一点点前端基础",{"2":{"301":1}}],["部分来源于",{"2":{"266":1}}],["讲起打包成一个新的资源包",{"2":{"301":1}}],["仅需按照原有路径进行文件替换即可",{"2":{"301":1}}],["那么加载b包后",{"2":{"302":1}}],["那么你能够很快就上手",{"2":{"301":1}}],["那么当前所有函数包的task都会被截停销毁",{"2":{"293":1}}],["资源",{"2":{"301":1}}],["资源包管理",{"2":{"307":1}}],["资源包的结构会随着轻雪的更新而有变动",{"2":{"302":1}}],["资源包的制作很简单",{"2":{"301":1}}],["资源包加载遵循一个优先级",{"2":{"302":1}}],["资源包描述",{"2":{"302":1}}],["资源包名称",{"2":{"302":1}}],["资源包通常是以",{"2":{"302":1}}],["资源包",{"2":{"301":1,"308":1}}],["它允许你一定程度上自定义轻雪的外观",{"2":{"301":1}}],["它允许你在轻雪中运行一些自定义的由数据驱动的命令",{"2":{"288":1}}],["语言包等",{"2":{"301":1}}],["亦可根据用途称为主题包",{"2":{"301":1}}],["保存后轻雪会自动重载nonebot进程",{"2":{"300":1}}],["然后运行python",{"2":{"300":1}}],["然后用",{"2":{"6":1}}],["方法2",{"0":{"300":1}}],["方法1",{"0":{"299":1}}],["用户管理liteyuki",{"0":{"309":1}}],["用户协议",{"0":{"303":1}}],["用observer的on",{"2":{"297":1}}],["用于统计bot接收到的消息",{"2":{"313":1}}],["用于开发nonebot时进行文件系统变更重载",{"2":{"297":1}}],["用于结束当前已完成function的执行",{"2":{"293":1}}],["用于存放内置插件",{"2":{"189":1}}],["用于获取和唯一标识",{"2":{"126":1}}],["用于进程间通信",{"2":{"53":1}}],["排除的文件扩展名",{"2":{"297":1}}],["因此插件主要是一些后台任务或者与聊天机器人的通信",{"2":{"297":1}}],["因此无法通过共享内存和直接对象传递进行通信",{"2":{"277":1}}],["定义插件元数据",{"2":{"296":1}}],["定义变量",{"2":{"290":1}}],["导入轻雪bot和日志",{"2":{"297":1}}],["导入文件系统事件",{"2":{"297":1}}],["导入文件系统观察器",{"2":{"297":1}}],["导入文件夹下多个插件",{"2":{"164":1}}],["导入逻辑部分",{"2":{"296":1}}],["供其他插件调用",{"2":{"294":1}}],["提供一系列对外的ipc",{"2":{"294":1}}],["提交到轻雪仓库的代码",{"2":{"286":1}}],["服务",{"2":{"294":1}}],["把平台的消息转换为轻雪消息格式传入总线通道",{"2":{"294":1}}],["响应",{"2":{"294":1}}],["应用",{"2":{"294":1}}],["应在每次完成一个功能或修复一个bug后提交代码",{"2":{"286":1}}],["应在初始化时调用",{"2":{"193":1}}],["大部分情况下一个插件通常承担着多个责任",{"2":{"294":1}}],["等几种类型",{"2":{"294":1}}],["等待所有异步任务结束",{"2":{"290":1}}],["编写逻辑部分",{"0":{"297":1}}],["编写轻雪函数推荐你使用vs",{"2":{"293":1}}],["编辑时的语法高亮可采取shell格式",{"2":{"289":1}}],["的情况是效率提升的关键",{"2":{"293":1}}],["的可爱猫娘机器人",{"2":{"273":1}}],["避免出现",{"2":{"293":1}}],["由于liteyukibot基于异步运行",{"2":{"293":1}}],["结束关键字",{"0":{"293":1}}],["结束函数关键字",{"2":{"290":1}}],["理论上所有基于onebotv11的api都可调用",{"2":{"292":1}}],["则该文件夹不会被识别为资源包",{"2":{"302":1}}],["则需要删除await",{"2":{"291":1}}],["则传入泛型默认开启",{"2":{"60":1}}],["无需手动创建实例",{"2":{"300":1}}],["无需手动初始化bot",{"2":{"152":1}}],["无限戳",{"2":{"291":1}}],["执行",{"2":{"291":1}}],["疯狂戳好友",{"2":{"291":1}}],["否则会导致渲染失败或渲染结果不理想",{"2":{"301":1}}],["否则task对象会被销毁",{"2":{"290":1}}],["否则默认关闭",{"2":{"60":1}}],["需要在最后调用",{"2":{"290":1}}],["单线程走到底",{"2":{"293":1}}],["单位s",{"2":{"290":1}}],["单元测试目录",{"2":{"285":1}}],["调用机器人函数",{"2":{"305":1}}],["调用机器人api",{"2":{"305":1}}],["调用重启进程方法",{"2":{"297":1}}],["调用函数",{"2":{"290":1}}],["调用bot",{"2":{"290":1}}],["输入值会被执行以转换为正确的类型",{"2":{"305":1}}],["输入playwright",{"2":{"6":1}}],["输出",{"2":{"289":1}}],["也支持句末注释",{"2":{"289":1}}],["支持中英文",{"2":{"311":2}}],["支持中英文城市名",{"2":{"311":1}}],["支持多个关键词查询",{"2":{"311":1}}],["支持绑定城市",{"2":{"311":1}}],["支持单行注释",{"2":{"289":1}}],["支持轻雪",{"2":{"274":1}}],["函数文件放在资源包的functions目录下",{"2":{"289":1}}],["函数文件",{"0":{"289":1}}],["函数列表",{"2":{"40":1}}],["属于资源包的一部分",{"2":{"288":1}}],["是可以相对引用的",{"2":{"302":1}}],["是轻雪的一个功能",{"2":{"288":1}}],["是否为协程可调用对象",{"2":{"267":1}}],["是否阻断后续优先级更低的匹配器",{"2":{"202":1}}],["是否忽略警告",{"2":{"164":1}}],["是否忽略键不存在的错误",{"2":{"87":1}}],["是否递归监听子目录",{"2":{"150":1}}],["是否关闭警告",{"2":{"110":1}}],["是否开启类型检查",{"2":{"60":1}}],["是否允许更新",{"2":{"2":1}}],["是否自动更新轻雪",{"2":{"1":1}}],["是否自动上报问题给轻雪服务器",{"2":{"1":1}}],["是否显示日志等级图标",{"2":{"1":1}}],["我们在src",{"2":{"300":1}}],["我们鼓励使用magicoca进行对象传递来进行插件间通信而不是依赖关系",{"2":{"294":1}}],["我们欢迎任何人参与开发",{"2":{"287":1}}],["我们使用gitmoji来标记commit的类型",{"2":{"286":1}}],["最后",{"0":{"287":1}}],["最佳实践",{"0":{"272":1},"1":{"273":1,"274":1,"275":1}}],["总结来说就是你干了什么",{"2":{"286":1}}],["总通道",{"2":{"15":1}}],["给event添加新字段",{"2":{"286":1}}],["具体请参考gitmoji",{"2":{"286":1}}],["表示修复bug等",{"2":{"286":1}}],["表示引入新功能",{"2":{"286":1}}],["尽量避免使用单引号",{"2":{"286":1}}],["尽量不要冲突",{"2":{"103":1}}],["字体包",{"2":{"301":1}}],["字符串请使用双引号",{"2":{"286":1}}],["字段",{"2":{"3":1}}],["以上内容仅用于项目的优化",{"2":{"303":1}}],["以避免出现无法预料的问题",{"2":{"301":1}}],["以下我们会编写一个简单的插件",{"2":{"297":1}}],["以下为默认值",{"2":{"2":1}}],["以实现某些功能",{"2":{"294":1}}],["以保证litedoc能够正确解析并生成文档",{"2":{"286":1}}],["没有危害的",{"2":{"286":1}}],["没有异步的必要",{"2":{"61":1}}],["代码请遵循pep8和google",{"2":{"286":1}}],["规范化",{"0":{"286":1}}],["规则函数签名",{"2":{"258":1}}],["规则",{"2":{"202":1}}],["业务逻辑请在此目录下进行开发",{"2":{"285":1}}],["同时用户也应该自行选择可用的资源包",{"2":{"302":1}}],["同时也是liteyuki框架的仓库",{"2":{"285":1}}],["同步接收数据",{"2":{"62":1}}],["同步接收函数",{"2":{"54":1}}],["同步过滤函数",{"2":{"56":1}}],["同步进程生命周期函数",{"2":{"35":1}}],["同步生命周期函数",{"2":{"32":1}}],["中文文档",{"2":{"285":1}}],["英文文档",{"2":{"285":1}}],["文件内容为一系列的命令",{"2":{"289":1}}],["文件名以",{"2":{"289":1}}],["文件夹路径",{"2":{"164":1}}],["文档请遵循markdown语法",{"2":{"286":1}}],["文档目录",{"2":{"285":1}}],["工具目录",{"2":{"285":1}}],["内置资源包目录",{"2":{"285":1}}],["内存共享是线程安全的",{"2":{"280":1}}],["内存共享使得代码编写更加简洁",{"2":{"280":1}}],["内存",{"2":{"11":1,"303":1}}],["框架目录",{"2":{"285":1}}],["项目结构",{"0":{"285":1}}],["项目目录下的配置文件优先",{"2":{"110":1}}],["项目目录下的配置文件优先级高于config目录下的配置文件",{"2":{"103":1}}],["项目目录下的config",{"2":{"110":1}}],["出现冲突请与仓库维护者联系",{"2":{"283":1}}],["将你的分支合并到轻雪仓库的main分支",{"2":{"283":1}}],["将你的代码提交到这个分支",{"2":{"283":1}}],["组织账户下",{"2":{"283":1}}],["首先创建一个文件夹",{"2":{"296":1}}],["首先fork一份轻雪仓库到你的个人",{"2":{"283":1}}],["首次运行后生成config",{"2":{"0":1}}],["引用",{"2":{"283":1}}],["引用计数",{"2":{"98":1}}],["线程锁会自动保护共享内存的读写操作",{"2":{"280":1}}],["相比于普通进程通信",{"2":{"280":1}}],["实现",{"2":{"278":1,"294":2}}],["主题包中的html渲染使用js来规定数据的渲染位置",{"2":{"301":1}}],["主题商店提供了一些资源包供你选择",{"2":{"301":1}}],["主动模式需调用chan",{"2":{"278":1}}],["主进程中",{"2":{"278":1}}],["主进程中通过get",{"2":{"278":1}}],["主进程接收到消息后重启对应子进程",{"2":{"277":1}}],["主进程订阅者接收函数",{"2":{"81":1}}],["主进程创建单例",{"2":{"67":1}}],["被动模式",{"2":{"278":1}}],["被动模式由chan",{"2":{"278":1}}],["被动通道传递通道",{"2":{"68":1}}],["被动通道",{"2":{"66":1}}],["即后加载的资源包会覆盖前面的资源包",{"2":{"302":1}}],["即可创建一个插件",{"2":{"296":1}}],["即不等待",{"2":{"290":1}}],["即被动模式和主动模式",{"2":{"278":1}}],["即轻雪作为服务端",{"2":{"3":1}}],["例如npm",{"2":{"304":1}}],["例如nonebot插件中",{"2":{"278":1}}],["例如你在a中定义了templates",{"2":{"302":1}}],["例如html",{"2":{"301":1}}],["例如main",{"2":{"300":1}}],["例如watchdog",{"2":{"296":1,"299":1}}],["例如echo",{"2":{"294":1}}],["例如",{"2":{"289":2,"302":1,"311":1}}],["例如test",{"2":{"289":1,"300":1}}],["例如子进程接收到用户信息需要重启机器人",{"2":{"277":1}}],["例如使用nonebot插件可对接支持的适配器平台",{"2":{"6":1}}],["这样可以避免很多潜在的问题",{"2":{"294":1}}],["这样可以在控制台看到更多的调试信息",{"2":{"284":1}}],["这样两个进程上下文是不会互相干扰的",{"2":{"277":1}}],["这时可以通过通道对主进程发送消息",{"2":{"277":1}}],["这里给出一个参考值",{"2":{"3":1}}],["有一个task任务没有完成而await被执行了",{"2":{"293":1}}],["有条件可以使用中英双语",{"2":{"286":1}}],["有两种接收模式",{"2":{"278":1}}],["有部分实现插件为了一些功能在子进程中运行",{"2":{"277":1}}],["有的插件安装后报错无法启动",{"2":{"6":1}}],["里",{"2":{"277":1}}],["简介",{"0":{"277":1,"280":1,"294":1,"301":1},"1":{"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"302":1}}],["闭源",{"2":{"275":1}}],["展示轻雪的所有实例及其位置分布",{"2":{"275":1}}],["让",{"2":{"274":1}}],["让轻雪支持",{"2":{"274":1}}],["基础插件",{"0":{"304":1},"1":{"305":1,"306":1,"307":1,"308":1,"309":1}}],["基础配置项",{"0":{"1":1}}],["基于",{"2":{"273":1}}],["官方定制轻雪机器人",{"2":{"273":1}}],["机器人源码目录",{"2":{"285":1}}],["机器人入口文件",{"2":{"285":1}}],["机器人应用",{"0":{"273":1}}],["机器人昵称列表",{"2":{"1":1}}],["+",{"2":{"270":1}}],["+=",{"2":{"17":1,"64":1}}],["路径a",{"2":{"270":1}}],["转换路径为模块名",{"2":{"270":1}}],["可用",{"2":{"305":1}}],["可用参数",{"2":{"305":1}}],["可按需调整",{"2":{"294":1}}],["可递归",{"2":{"290":1}}],["可调用对象",{"2":{"267":1}}],["可以在配置文件中把auto",{"2":{"303":1}}],["可以在a的index",{"2":{"302":1}}],["可以在此基础上进行修改",{"2":{"301":1}}],["可以在config",{"2":{"284":1}}],["可以很高程度地扩展轻雪的功能",{"2":{"294":1}}],["可以是本地插件或是通过",{"2":{"163":1}}],["可以使用liteyuki镜像",{"2":{"9":1}}],["判断是否为协程可调用对象",{"2":{"267":1}}],["一个",{"2":{"296":1}}],["一个键不要多次出现",{"2":{"103":1}}],["一些常用的工具类",{"2":{"266":1}}],["x26",{"2":{"256":1}}],["x3c",{"2":{"16":4,"17":1,"159":7,"163":2,"165":2,"254":1,"290":6,"311":2,"313":2}}],["45m",{"2":{"313":2}}],["4",{"0":{"219":1}}],["47",{"2":{"194":1}}],["优先级",{"2":{"202":1}}],["匹配器",{"2":{"202":1}}],["505468b及以后的lagrange",{"2":{"305":1}}],["55",{"2":{"257":1}}],["52",{"2":{"253":1}}],["5",{"0":{"220":1}}],["51",{"2":{"200":1}}],["59",{"2":{"162":1,"166":1}}],["多路输入管道组",{"2":{"199":1}}],["多配置文件编写原则",{"2":{"103":1}}],["回复消息",{"2":{"197":1}}],["根据不同类型插件设置颜色",{"2":{"165":1}}],["下午10",{"2":{"192":1,"194":1,"200":1,"253":1,"257":1}}],["下午12",{"2":{"190":1}}],["下午11",{"2":{"162":1,"166":1}}],["下午8",{"2":{"31":1}}],["插件停用只能阻断传入响应",{"2":{"308":1}}],["插件管理",{"2":{"307":1,"308":1}}],["插件信息",{"2":{"303":1}}],["插件描述",{"2":{"296":1}}],["插件版本",{"2":{"296":1}}],["插件大致可分为应用",{"2":{"294":1}}],["插件开发请在此目录下进行开发",{"2":{"285":1}}],["插件开发无需阅读本文档",{"2":{"283":1}}],["插件",{"0":{"274":1,"307":1},"1":{"308":1},"2":{"274":2}}],["插件类型",{"2":{"165":1,"296":1}}],["插件名称",{"2":{"163":1,"165":1,"296":1}}],["插件字典",{"2":{"161":1}}],["插件路径",{"2":{"152":1}}],["🔍",{"2":{"159":1}}],["🐛",{"2":{"159":1}}],["❌",{"2":{"159":1,"305":11}}],["⭕",{"2":{"159":1}}],["⚠️",{"2":{"159":1}}],["✅",{"2":{"159":1}}],["ℹ️信息",{"2":{"278":4}}],["ℹ️",{"2":{"159":1}}],["测试版本号",{"2":{"156":1}}],["此模块为内置插件文件夹",{"2":{"189":1}}],["此模块为liteyuki的框架整体",{"2":{"155":1}}],["此模块用于注册观察者函数",{"2":{"140":1}}],["运行环境的设备信息",{"2":{"303":1}}],["运行在主进程中",{"2":{"294":1}}],["运行协程",{"2":{"268":1}}],["运行处理函数",{"2":{"204":1}}],["运行插件",{"2":{"152":1}}],["运行订阅者接收函数",{"2":{"91":1}}],["上午12",{"2":{"167":1}}],["上午11",{"2":{"120":1}}],["上午9",{"2":{"157":1}}],["上午5",{"2":{"151":1}}],["事件过滤器",{"2":{"150":1}}],["事件循环",{"2":{"15":1}}],["防抖函数",{"2":{"143":1}}],["防止获取空指针",{"2":{"98":1}}],["位置1为filesystemevent",{"2":{"141":1,"142":1}}],["启用",{"2":{"306":1,"308":1}}],["启用插件后",{"2":{"300":1}}],["启用开发者模式",{"2":{"284":1}}],["启用该模块需要在配置文件中设置dev",{"2":{"140":1}}],["启动后控制台输出",{"2":{"278":1}}],["启动后钩子",{"2":{"48":1}}],["启动所有子进程",{"2":{"135":1}}],["启动所有进程",{"2":{"125":1}}],["启动指定子进程",{"2":{"134":1}}],["启动发布订阅接收器循环",{"2":{"92":1}}],["启动前钩子",{"2":{"47":1}}],["启动",{"2":{"39":1}}],["启动bot",{"2":{"9":1}}],["启动时会加载项目目录下config",{"2":{"0":1}}],["使用通用日期简写",{"2":{"313":2}}],["使用此项目代表你已经同意以上协议",{"2":{"303":1}}],["使用开发工具快速运行插件",{"2":{"300":1}}],["使用",{"2":{"291":1}}],["使用新的task执行命令",{"2":{"290":1}}],["使用watchdog监控文件变化并重启bot",{"2":{"140":1}}],["使用docker构建",{"0":{"10":1}}],["终止所有子进程",{"2":{"137":1}}],["终止指定子进程",{"2":{"136":1}}],["终止进程并从进程字典中删除",{"2":{"128":1}}],["添加配置项",{"2":{"305":1}}],["添加sleep",{"2":{"291":1}}],["添加处理函数",{"2":{"203":1}}],["添加子进程",{"2":{"133":1}}],["添加进程",{"2":{"126":1}}],["检查进程是否存活",{"2":{"130":1}}],["通过关键词搜索插件",{"2":{"307":1}}],["通过装饰器注册一个函数在接收到消息时运行",{"2":{"278":1}}],["通常是目录不存在或目录为空",{"2":{"164":1}}],["通常会默认传入chan",{"2":{"126":1}}],["通道是全双工的",{"2":{"278":1}}],["通道通信",{"0":{"276":1},"1":{"277":1,"278":1,"279":1,"280":1,"281":1}}],["通道实例",{"2":{"69":1,"70":1,"71":1,"72":1}}],["通道名称",{"2":{"69":1,"71":1}}],["通道传递通道",{"2":{"67":1}}],["通道id",{"2":{"60":1}}],["创建入口文件",{"2":{"300":1}}],["创建插件",{"0":{"296":1}}],["创建子进程的同时会初始化一个被动通道和一个主动通道",{"2":{"278":1}}],["创建asyncio",{"2":{"125":1}}],["创建虚拟环境",{"2":{"9":1}}],["对于主动推送的插件不生效",{"2":{"308":1}}],["对于不同资源包的不同文件",{"2":{"302":1}}],["对接特定平台",{"2":{"294":1}}],["对外启动方法",{"2":{"125":1}}],["对公开放时建议设置",{"2":{"2":1}}],["合并两个loader键值对树",{"2":{"117":1}}],["按照读取文件的优先级反向覆盖",{"2":{"109":1}}],["从总线通道接收到消息后进行处理",{"2":{"294":1}}],["从环境变量加载配置",{"2":{"116":1}}],["从json文件加载配置",{"2":{"115":1}}],["从toml文件加载配置",{"2":{"114":1}}],["从yaml文件加载配置",{"2":{"113":1}}],["从一个标准的轻雪项目加载配置文件",{"2":{"110":1}}],["从目录下加载配置文件",{"2":{"109":1}}],["从指定文件加载配置项",{"2":{"108":1}}],["8",{"2":{"105":1,"106":1,"107":1,"151":1,"190":1,"191":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["但请注意甄别第三方插件的安全性",{"2":{"303":1}}],["但请保证以上三个字段",{"2":{"302":1}}],["但若出现非单function的情况",{"2":{"293":1}}],["但需单独起篇幅",{"2":{"288":1}}],["但在嵌套字符串时可以使用单引号",{"2":{"286":1}}],["但一个通道只能使用一种",{"2":{"278":1}}],["但也包含原有的键值对",{"2":{"104":1}}],["但是请保留原作者信息",{"2":{"303":1}}],["但是更加轻量级并且线程安全",{"2":{"80":1}}],["但是基本上都是一样的",{"2":{"3":1}}],["但是部分内容会被覆盖",{"2":{"1":1}}],["扁平化后的配置文件",{"2":{"104":1}}],["扁平化配置文件",{"2":{"104":1}}],["扁平化编写",{"2":{"103":1}}],["注意不要嵌套文件夹",{"2":{"302":1}}],["注意冲突时的优先级",{"2":{"103":1}}],["注册一个函数在nonebot启动后运行",{"2":{"278":1}}],["注册一个函数在轻雪启动后运行",{"2":{"278":1}}],["注册文件系统变化监听器",{"2":{"150":1}}],["注册重启后的函数",{"2":{"27":1,"46":1}}],["注册进程重启前的函数",{"2":{"26":1,"45":1}}],["注册进程停止前的函数",{"2":{"25":1,"43":1}}],["注册停止后的函数",{"2":{"24":1,"44":1}}],["注册启动时的函数",{"2":{"41":1,"42":1}}],["注册启动后的函数",{"2":{"23":1}}],["注册启动前的函数",{"2":{"22":1}}],["共享内存通信",{"0":{"279":1},"1":{"280":1,"281":1}}],["共享内存对象",{"2":{"97":1}}],["共享内存模块",{"2":{"80":1}}],["订阅者接收消息时的回调",{"2":{"90":1}}],["频道",{"2":{"89":1,"90":1,"91":1}}],["发布消息",{"2":{"89":1}}],["发送函数为同步函数",{"2":{"61":1}}],["发送数据",{"2":{"61":1}}],["删除键值对",{"2":{"87":1}}],["值",{"2":{"85":1,"86":1}}],["键值对",{"2":{"88":1}}],["键",{"2":{"85":1,"86":1,"87":1}}],["类似于minecraft的mcfunction",{"2":{"288":1}}],["类似于redis",{"2":{"80":1}}],["类型",{"2":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"66":1,"67":1,"68":1,"81":1,"82":1,"97":1,"141":1,"142":1,"258":1}}],["依赖关系",{"2":{"79":1}}],["该功能需要commit",{"2":{"305":1}}],["该模块封装通道实现",{"2":{"280":1}}],["该模块参考并引用了nonebot",{"2":{"198":1}}],["该模块用于存放一些开发工具",{"2":{"139":1}}],["该模块用于常用配置文件的加载",{"2":{"103":1}}],["该模块用于轻雪主进程和nonebot子进程之间的通信",{"2":{"79":1}}],["该步骤为必要项",{"2":{"9":1}}],["设置用户信息或打开属性设置菜单",{"2":{"309":1}}],["设置",{"2":{"306":1,"309":1}}],["设置共享内存",{"2":{"281":1}}],["设置后的插件名称",{"2":{"165":1}}],["设置插件名称颜色",{"2":{"165":1}}],["设置键值对",{"2":{"85":1}}],["设置通道实例",{"2":{"69":1,"70":1}}],["设备上python环境太乱了",{"2":{"6":1}}],["子进程中获取通道直接导入进程全局单例即可",{"2":{"278":1}}],["子进程中导入单例active",{"2":{"278":1}}],["子进程名称",{"2":{"133":1,"134":1,"136":1,"138":1}}],["子进程函数关键字参数",{"2":{"133":1}}],["子进程函数参数",{"2":{"133":1}}],["子进程函数",{"2":{"133":1}}],["子进程订阅者接收函数",{"2":{"82":1}}],["子进程初始化时实例化",{"2":{"67":1}}],["子进程可用的主动和被动通道",{"2":{"65":1}}],["装饰回调函数实现",{"2":{"278":1}}],["装饰一个函数在接收到数据后执行",{"2":{"150":1}}],["装饰器",{"2":{"64":1,"90":1,"150":1,"203":2}}],["装置要求",{"0":{"11":1},"1":{"12":1}}],["接收数据并执行函数",{"2":{"64":1}}],["接收函数",{"2":{"55":1}}],["会自动判断key版本",{"2":{"311":1}}],["会自动识别文件格式",{"2":{"108":1}}],["会话负载信息",{"2":{"303":1}}],["会触发最大递归深度限制",{"2":{"291":1}}],["会挂起等待",{"2":{"63":1}}],["会阻塞线程",{"2":{"62":1}}],["数据",{"2":{"61":1,"62":1,"63":1,"89":1,"91":1}}],["过滤函数",{"2":{"58":1,"64":1}}],["本项目不会收集用户的任何隐私信息",{"2":{"303":1}}],["本项目遵循mit协议",{"2":{"303":1}}],["本项目是一个非盈利的开源项目",{"2":{"287":1}}],["本模块使用了nonebot",{"2":{"213":1}}],["本模块用于轻雪主进程和子进程之间的通信的事件类",{"2":{"76":1}}],["本模块定义了一个通用的通道类",{"2":{"53":1}}],["本机默认为127",{"2":{"3":1}}],["并且应该在metadata",{"2":{"302":1}}],["并且不用修改源代码",{"2":{"301":1}}],["并且支持vitepress相关内容",{"2":{"286":1}}],["并在其中写入一些代码",{"2":{"300":1}}],["并在其中写入以下代码",{"2":{"300":1}}],["并在其中创建一个",{"2":{"296":1}}],["并遵循其许可进行修改",{"2":{"266":1}}],["并发运行异步函数",{"2":{"40":1}}],["并使用克隆而非直接下载的方式部署轻雪",{"2":{"6":1}}],["进程生命周期函数",{"2":{"43":2,"45":2}}],["进程函数关键字参数",{"2":{"126":1}}],["进程函数参数",{"2":{"126":1}}],["进程函数",{"2":{"37":1,"126":1}}],["进程名",{"2":{"18":1,"126":1}}],["|",{"0":{"40":1,"138":1,"152":1,"163":1,"196":1,"197":1,"223":1,"224":1,"225":1,"226":1,"230":1,"231":1,"232":1,"235":1,"236":1,"239":1,"240":1,"241":1,"242":1,"251":1,"252":1,"261":1},"2":{"34":1,"37":1,"40":2,"55":1,"58":1,"138":1,"152":1,"163":1,"196":1,"197":1}}],["7",{"2":{"31":1,"120":1,"157":1,"162":1,"166":1,"167":1}}],["775840726",{"2":{"7":1}}],["兼容键",{"2":{"30":1}}],["兼容旧版本",{"2":{"30":1}}],["获取用户信息",{"2":{"309":1}}],["获取唯一的轻雪bot实例",{"2":{"297":1}}],["获取共享内存",{"2":{"281":1}}],["获取主动通道",{"2":{"278":1}}],["获取被动通道",{"2":{"278":1}}],["获取已加载的插件",{"2":{"161":1}}],["获取日志格式",{"2":{"158":1}}],["获取指定子进程",{"2":{"138":1}}],["获取所有键值对",{"2":{"88":1}}],["获取键值对",{"2":{"86":1}}],["获取通道实例们",{"2":{"72":1}}],["获取通道实例",{"2":{"71":1}}],["获取配置值",{"2":{"118":1}}],["获取配置",{"2":{"29":1,"30":1}}],["获取轻雪实例",{"2":{"28":1}}],["为可选参数",{"2":{"304":1}}],["为必填参数",{"2":{"304":1}}],["为子进程重启时调用",{"2":{"26":1}}],["为子进程停止时调用",{"2":{"25":1}}],["为你的python可执行文件路径",{"2":{"11":1}}],["未实现",{"2":{"24":1,"27":1,"50":1,"52":1}}],["返回true则执行回调函数",{"2":{"150":1}}],["返回",{"2":{"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"62":1,"63":1,"64":1,"71":1,"72":1,"86":1,"88":1,"90":1,"104":1,"150":1,"161":1,"165":1,"203":1,"267":1,"270":1,"271":1}}],["关键字参数",{"2":{"19":1}}],["自动调用",{"2":{"19":1}}],["joined",{"0":{"242":1}}],["join",{"0":{"127":1},"2":{"17":1,"109":1,"127":2,"128":1,"164":2,"270":2}}],["json",{"0":{"106":1,"115":1},"2":{"0":1,"106":4,"108":2,"110":1,"115":2}}],["json和toml作为配置文件",{"2":{"0":1}}],["延迟重启时间",{"2":{"17":1}}],["echo",{"2":{"289":3}}],["emoji",{"2":{"286":1}}],["empty",{"0":{"255":1,"256":1,"264":1},"2":{"163":1,"164":1,"264":1}}],["email",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["enable",{"2":{"305":2,"306":1,"307":2,"308":2}}],["end",{"2":{"290":1}}],["endswith",{"2":{"108":3,"109":1,"164":1,"297":1}}],["en",{"2":{"285":1}}],["ensure",{"2":{"268":1}}],["enumerate",{"2":{"254":1}}],["enum",{"0":{"168":1,"214":1},"1":{"169":1,"170":1,"171":1,"172":1,"173":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1}}],["environ",{"2":{"116":1}}],["env",{"0":{"116":1},"2":{"116":1}}],["encoding=",{"2":{"105":1,"106":1,"107":1}}],["enforcing",{"2":{"60":1}}],["e",{"2":{"87":2,"163":1,"165":1,"268":2}}],["error",{"0":{"87":1},"2":{"87":3,"159":1,"268":1}}],["else",{"2":{"17":1,"18":1,"28":1,"40":1,"64":2,"69":1,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"90":2,"105":1,"106":1,"107":1,"158":1,"159":7,"163":2,"244":1,"254":1,"268":1,"270":1}}],["elif",{"2":{"17":2,"60":1,"64":1,"108":4,"163":2,"164":1,"244":1,"245":1}}],["express",{"2":{"213":1}}],["extensions",{"2":{"297":2}}],["extend",{"2":{"152":1}}],["extra",{"0":{"181":1}}],["exclude",{"2":{"297":2}}],["exc",{"2":{"163":1,"204":1}}],["exception模块包含了liteyuki运行中的所有错误",{"2":{"153":1}}],["exception",{"0":{"153":1},"1":{"154":1},"2":{"163":1,"204":1,"268":2}}],["except",{"2":{"16":1,"87":1,"163":1,"204":1,"268":2}}],["executor",{"2":{"63":1}}],["executable",{"2":{"17":3}}],["exist",{"2":{"164":1}}],["exists",{"2":{"60":2,"69":1,"108":1,"109":1,"164":2}}],["exit",{"2":{"17":1}}],["event装饰器监听文件系统事件",{"2":{"297":1}}],["events",{"2":{"297":1}}],["eventhandler",{"0":{"203":2},"2":{"202":1,"203":4}}],["event",{"0":{"76":1,"77":1,"145":1,"146":1,"147":1,"148":1,"149":2,"150":2,"191":1,"194":1,"204":1,"263":1,"264":1,"265":1},"1":{"77":1,"78":2,"195":1,"196":1,"197":1},"2":{"15":4,"21":1,"79":1,"145":1,"146":2,"147":2,"148":2,"149":3,"150":8,"191":3,"194":1,"197":2,"204":4,"213":1,"256":2,"261":3,"262":3,"263":2,"264":1,"265":2,"268":2,"297":8}}],["外部启动接口",{"2":{"16":1}}],["加载",{"2":{"308":1}}],["加载资源包",{"0":{"302":1},"2":{"307":1}}],["加载插件",{"0":{"298":1},"1":{"299":1,"300":1}}],["加载插件加载器",{"2":{"15":1}}],["加载单个插件",{"2":{"163":1}}],["加入qq群",{"2":{"7":1}}],["生命周期函数",{"2":{"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"34":1,"41":2,"42":2,"44":2,"46":2}}],["生命周期管理",{"2":{"15":1}}],["生产环境中推荐反向websocket",{"2":{"3":1}}],["初始化通道",{"2":{"60":1}}],["初始化日志",{"2":{"20":1}}],["初始化轻雪",{"2":{"19":1}}],["初始化轻雪实例",{"2":{"15":1}}],["初始化",{"2":{"15":1}}],["occurred",{"2":{"268":1}}],["out",{"2":{"213":1}}],["outlook",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["otherwise",{"2":{"213":1}}],["other",{"0":{"261":1,"262":1},"2":{"213":2,"261":2,"262":2}}],["or",{"2":{"213":9,"261":2}}],["obtaining",{"2":{"213":1}}],["observer",{"0":{"140":1},"1":{"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1},"2":{"150":1,"297":2}}],["overall",{"2":{"155":1}}],["os",{"2":{"108":1,"109":3,"116":1,"164":9,"297":2}}],["of",{"2":{"61":1,"69":1,"155":1,"163":1,"213":8}}],["only",{"2":{"64":1}}],["on",{"0":{"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"64":1,"73":1,"74":1,"75":1,"81":1,"82":1,"90":3,"99":1,"100":1,"101":1,"102":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"253":1,"255":1,"256":1},"1":{"254":1,"255":1,"256":1},"2":{"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"55":2,"60":2,"64":4,"72":1,"73":3,"74":3,"75":2,"81":1,"82":1,"90":11,"91":1,"98":1,"99":3,"100":3,"101":3,"102":2,"145":2,"146":2,"147":2,"148":2,"149":2,"150":2,"190":1,"191":1,"253":1,"255":1,"256":4,"278":6,"297":1}}],["onebot",{"2":{"2":1,"3":1,"292":1,"305":1}}],["operator",{"0":{"252":1}}],["open",{"2":{"17":1,"105":1,"106":1,"107":1,"113":1,"114":1,"115":1}}],["option",{"2":{"304":1}}],["optional",{"0":{"18":1,"60":1,"64":1,"86":2,"163":1,"188":1,"196":2},"2":{"17":1,"18":2,"29":1,"30":1,"60":1,"64":3,"84":2,"86":3,"163":1,"196":2}}],["opt",{"2":{"16":2,"163":3}}],["o",{"2":{"15":1}}],["=none",{"2":{"18":1,"60":1,"64":1,"86":1,"196":2}}],["==",{"2":{"17":3,"72":1,"73":2,"74":2,"75":1,"92":1,"98":1,"99":2,"100":2,"101":2,"102":1,"158":1,"244":1,"245":1,"270":1}}],["=",{"0":{"17":1,"18":1,"29":1,"30":1,"60":1,"64":1,"86":1,"87":1,"95":1,"96":1,"108":1,"109":1,"110":1,"116":1,"118":1,"126":2,"150":2,"164":1,"169":1,"170":1,"171":1,"172":1,"173":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"184":1,"185":1,"186":1,"187":1,"188":1,"196":2,"207":1,"208":1,"210":1,"212":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"255":3,"256":3,"261":1,"262":1,"263":1},"2":{"15":9,"17":6,"18":2,"39":7,"40":1,"60":10,"61":1,"62":1,"63":2,"64":1,"69":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":2,"84":6,"85":2,"86":2,"87":1,"88":1,"90":2,"92":1,"94":1,"99":3,"100":2,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"116":1,"122":5,"124":3,"126":5,"128":1,"132":1,"133":1,"143":3,"150":2,"152":4,"159":2,"163":12,"164":6,"165":5,"196":10,"197":1,"202":5,"255":1,"260":1,"267":1,"268":2,"270":1,"271":1,"278":5,"281":1,"296":1,"297":2}}],[">",{"2":{"15":1,"22":1,"26":1,"28":1,"29":1,"30":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,"62":1,"63":1,"64":3,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":2,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"130":1,"138":1,"143":1,"150":2,"158":1,"161":1,"163":1,"164":1,"165":3,"203":2,"204":1,"255":1,"256":1,"261":2,"262":2,"263":1,"264":1,"265":1,"267":1,"270":1,"271":1,"311":2}}],["在群聊启用",{"2":{"305":1}}],["在普通图片和markdown大图之间切换",{"2":{"305":1}}],["在b中定义了templates",{"2":{"302":1}}],["在配置文件中的liteyuki",{"2":{"299":1}}],["在设备上执行命令",{"2":{"290":1}}],["在发信器输出",{"2":{"289":1}}],["在你的仓库中创建一个pull",{"2":{"283":1}}],["在你的仓库中创建一个新的分支",{"2":{"283":1}}],["在你的仓库中进行开发",{"2":{"283":1}}],["在任意进程中均可使用",{"2":{"281":1}}],["在子进程中",{"2":{"278":1}}],["在轻雪插件中",{"2":{"278":1}}],["在新线程中运行协程",{"2":{"269":1}}],["在语言加载完成后执行",{"2":{"159":1}}],["在主进程中运行",{"2":{"92":1}}],["在github上查看",{"2":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1}}],["在安全模式下你可以使用npm",{"2":{"6":1}}],["或插件路径",{"2":{"163":1}}],["或",{"2":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"313":2}}],["源代码",{"2":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"281":1}}],["参与开发默认你已经了解python语言和轻雪框架的基本使用方法",{"2":{"283":1}}],["参考liteyuki",{"2":{"152":1}}],["参考值",{"2":{"3":1}}],["参数列表",{"2":{"305":2}}],["参数为调用set",{"2":{"278":1}}],["参数",{"2":{"15":1,"17":1,"18":1,"19":2,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"29":1,"30":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"60":1,"61":1,"64":1,"69":1,"70":1,"71":1,"85":1,"86":1,"87":1,"89":1,"90":1,"91":1,"104":1,"110":1,"113":1,"126":1,"128":1,"130":1,"133":1,"134":1,"136":1,"138":1,"150":1,"152":1,"158":1,"159":1,"163":1,"164":1,"165":1,"197":1,"199":1,"202":1,"204":1,"267":1,"268":1,"269":1,"270":1,"271":1,"304":1,"313":1}}],["kind",{"2":{"213":1}}],["kill",{"2":{"128":1}}],["k",{"2":{"104":2}}],["keyword",{"2":{"256":2}}],["keywords为城市名",{"2":{"311":2}}],["keywords",{"0":{"256":2},"2":{"256":5,"307":1,"311":2}}],["keyerror",{"2":{"87":1,"134":1,"136":1}}],["keyvaluestore",{"0":{"83":1},"1":{"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1},"2":{"94":1,"97":1}}],["keys",{"0":{"30":1},"2":{"30":3}}],["key",{"0":{"29":1,"30":1,"85":1,"86":1,"87":2,"118":1},"2":{"29":3,"30":10,"85":6,"86":6,"87":11,"99":3,"100":3,"101":3,"104":2,"116":3,"118":2,"281":2,"305":4,"309":2,"311":1}}],["keyboardinterrupt",{"2":{"16":1}}],["kwargs=none",{"2":{"126":1}}],["kwargs",{"0":{"15":1,"19":1,"40":1,"49":1,"51":1,"126":1,"133":1},"2":{"15":3,"19":2,"40":3,"49":2,"51":2,"126":4,"133":3,"143":2,"271":2,"305":2}}],["k=szmdybfr6jy94o9kfnon7awelryi6m",{"2":{"7":1}}],["feat",{"2":{"286":1}}],["fitness",{"2":{"213":1}}],["filter=lambda",{"2":{"297":1}}],["filter",{"0":{"56":1,"57":1,"58":1,"64":2,"142":1,"150":2},"2":{"58":2,"64":8,"72":1,"73":2,"74":2,"75":1,"150":5,"278":1}}],["filesystemeventhandler",{"0":{"144":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":1}}],["filesystemevent",{"2":{"141":1,"142":1,"150":1,"297":2}}],["files",{"0":{"108":2},"2":{"108":3,"109":1,"110":1,"213":1}}],["file",{"0":{"105":1,"106":1,"107":1,"150":1},"2":{"31":1,"105":4,"106":4,"107":4,"108":12,"109":3,"113":2,"114":2,"115":2,"120":1,"150":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1,"297":3}}],["future",{"2":{"268":1}}],["furnished",{"2":{"213":1}}],["function实现语法高亮",{"2":{"293":1}}],["function",{"2":{"288":1,"290":1,"291":2,"305":3}}],["functions",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["func=none",{"2":{"150":1}}],["func=lambda",{"2":{"72":1,"73":2,"74":2,"75":1,"278":1}}],["funcs",{"0":{"40":2,"81":1,"82":1,"91":1},"2":{"39":6,"40":4,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2,"64":1,"90":6,"91":2,"92":1}}],["func",{"0":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":4,"23":3,"24":3,"25":3,"26":4,"27":3,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"39":1,"40":3,"41":4,"42":4,"43":4,"44":4,"45":4,"46":4,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"62":1,"63":1,"64":3,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":3,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":2,"127":1,"128":1,"129":1,"130":1,"132":1,"133":2,"134":1,"135":1,"136":1,"137":1,"138":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":4,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":2},"2":{"22":7,"23":6,"24":6,"25":6,"26":7,"27":6,"34":2,"37":2,"39":6,"40":8,"41":8,"42":8,"43":8,"44":8,"45":8,"46":8,"55":2,"58":2,"60":2,"64":20,"81":1,"82":1,"90":8,"91":2,"126":1,"133":3,"143":2,"150":7,"267":2,"271":4,"290":1}}],["failed",{"2":{"163":1}}],["false",{"0":{"108":1,"109":1,"110":1,"255":1,"256":1},"2":{"2":4,"60":2,"84":2,"267":1}}],["friend",{"2":{"291":2}}],["free",{"2":{"213":1}}],["framework",{"2":{"155":1}}],["from",{"0":{"105":1,"106":1,"107":1,"108":1,"109":1,"113":1,"114":1,"115":1,"116":1},"2":{"62":1,"105":3,"106":3,"107":3,"108":4,"109":2,"110":2,"113":1,"114":1,"115":1,"116":1,"199":2,"213":1,"278":4,"296":1,"297":3}}],["fp",{"0":{"113":1,"114":1,"115":1},"2":{"113":3,"114":2,"115":2}}],["flake8",{"2":{"284":1}}],["flat",{"0":{"104":1},"2":{"104":2,"105":1,"106":1,"107":1}}],["flag",{"2":{"39":1}}],["following",{"2":{"213":1}}],["folder",{"2":{"189":1}}],["found",{"2":{"61":1,"69":1,"108":1,"109":1,"128":1,"130":1,"134":1,"136":1}}],["format=get",{"2":{"159":1}}],["formats",{"2":{"109":1}}],["format",{"0":{"158":1,"165":1},"2":{"108":1,"158":3,"159":1,"163":2,"165":1}}],["for",{"2":{"18":1,"30":1,"40":1,"60":1,"70":1,"91":1,"104":2,"108":1,"109":2,"116":1,"125":1,"127":1,"129":1,"135":1,"137":1,"150":1,"164":2,"193":2,"199":1,"204":1,"213":2,"254":1,"256":1,"268":2,"296":1}}],["f",{"2":{"17":1,"18":2,"30":1,"60":2,"61":1,"69":2,"104":1,"105":1,"106":1,"107":1,"108":2,"109":1,"125":1,"128":2,"130":1,"134":1,"135":1,"136":1,"137":1,"163":5,"164":9,"165":1,"199":2,"244":2,"245":2,"268":1,"278":2,"297":1}}],["模块名",{"2":{"270":1}}],["模块",{"0":{"13":1,"31":1,"53":1,"76":1,"79":1,"80":1,"103":1,"119":1,"120":1,"139":1,"140":1,"151":1,"153":1,"155":1,"157":1,"160":1,"162":1,"166":1,"167":1,"189":1,"190":1,"192":1,"194":1,"198":1,"200":1,"205":1,"213":1,"253":1,"257":1,"266":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":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,"54":1,"55":1,"56":1,"57":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,"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,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":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,"137":1,"138":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"154":1,"156":1,"158":1,"159":1,"161":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,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"191":1,"193":1,"195":1,"196":1,"197":1,"199":1,"201":1,"202":1,"203":1,"204":1,"206":1,"207":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,"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,"251":1,"252":1,"254":1,"255":1,"256":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1}}],["至少1gb空间",{"2":{"11":1}}],["至少1vcpu",{"2":{"11":1}}],["硬盘",{"2":{"11":1}}],["及服务",{"2":{"294":1}}],["及",{"2":{"11":1}}],["推荐私聊使用",{"2":{"305":1}}],["推荐在编写html时同时更改对应js代码",{"2":{"301":1}}],["推荐",{"2":{"286":1}}],["推荐ubuntu",{"2":{"11":1}}],["推荐使用反向ws协议进行通信",{"2":{"3":1}}],["每隔0",{"2":{"291":1}}],["每行一个命令",{"2":{"289":1}}],["每个语言的文档都要修订",{"2":{"286":1}}],["每个配置文件给一个或一类服务提供配置",{"2":{"103":1}}],["每种语言都有对应的文档",{"2":{"286":1}}],["每次接收到字符串数据时都会运行",{"2":{"278":1}}],["每3秒发送一次消息",{"2":{"278":1}}],["每夜版镜像",{"2":{"10":1}}],["每天4点检查更新",{"2":{"1":1}}],["激活虚拟环境",{"2":{"9":1}}],["克隆项目到本地",{"2":{"9":1}}],["环境",{"2":{"9":1}}],["和风天气的天气key",{"2":{"311":1}}],["和10是不一样的",{"2":{"305":1}}],["和config目录下的所有配置文件",{"2":{"110":1}}],["和",{"2":{"9":1,"273":1,"305":1}}],["guide",{"2":{"286":1}}],["guild",{"0":{"217":1},"2":{"244":1,"245":1}}],["g",{"2":{"165":1,"314":1}}],["granted",{"2":{"213":1}}],["green>",{"2":{"159":1}}],["group",{"0":{"216":1},"2":{"7":1,"244":1,"245":1,"305":9,"306":1,"307":2,"313":3,"314":1}}],["gender",{"0":{"226":1}}],["generic",{"0":{"59":1},"1":{"60":1,"61":1,"62":1,"63":1,"64":1},"2":{"60":2,"61":1}}],["getattr",{"2":{"267":1}}],["get",{"0":{"28":1,"29":1,"30":1,"71":1,"72":1,"74":1,"75":1,"86":1,"88":1,"94":1,"99":1,"102":1,"118":1,"138":1,"158":1,"161":1},"2":{"18":2,"28":2,"29":3,"30":5,"60":2,"61":1,"63":1,"71":2,"72":2,"73":1,"74":4,"75":3,"85":1,"86":4,"87":1,"88":2,"94":1,"97":1,"98":1,"99":3,"101":1,"102":3,"118":2,"138":2,"152":1,"158":1,"159":2,"161":1,"163":3,"164":1,"193":2,"268":1,"278":8,"281":1,"297":2,"305":3,"306":1,"309":2}}],["gather",{"2":{"40":1,"268":1}}],["globalkeyvaluestore",{"0":{"93":1},"1":{"94":1,"95":1,"96":1},"2":{"97":1}}],["global",{"2":{"15":1,"64":1,"159":1,"307":2,"308":2}}],["gt",{"0":{"15":1,"22":1,"26":1,"28":1,"29":1,"30":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,"62":1,"63":1,"64":1,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"130":1,"138":1,"150":1,"158":1,"161":1,"163":1,"164":1,"165":1,"203":1,"204":1,"255":1,"256":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"270":1,"271":1},"2":{"79":3,"104":1,"202":1,"270":1,"286":2,"304":1,"305":7,"307":10,"309":2}}],["github",{"2":{"9":1,"273":1}}],["git",{"2":{"9":3,"10":1}}],["常规操作",{"2":{"15":1}}],["常规部署",{"0":{"9":1}}],["常见问题",{"0":{"6":1}}],["安装插件",{"2":{"307":1}}],["安装的插件",{"2":{"163":1}}],["安装依赖",{"2":{"9":1}}],["安装",{"0":{"8":1},"1":{"9":1,"10":1,"11":1,"12":1},"2":{"9":1,"304":1,"308":1}}],["安全模式",{"2":{"2":1}}],["weather",{"0":{"311":1},"1":{"312":1},"2":{"311":1,"312":1}}],["world",{"2":{"289":5}}],["whether",{"2":{"213":1}}],["whom",{"2":{"213":1}}],["while",{"2":{"62":1,"92":1,"278":2}}],["watchdog",{"2":{"297":1,"300":1}}],["watch",{"2":{"296":1,"297":1}}],["wait",{"0":{"143":1},"2":{"143":2}}],["warranties",{"2":{"213":1}}],["warranty",{"2":{"213":1}}],["waring=no",{"2":{"110":1}}],["waring",{"0":{"109":1,"110":1},"2":{"109":3,"110":4}}],["warning=no",{"2":{"109":1,"110":1}}],["warning",{"0":{"108":1,"164":1},"2":{"11":2,"30":1,"108":5,"109":1,"128":1,"130":1,"159":1,"163":1,"164":8,"293":1,"308":1}}],["wrapper",{"0":{"271":1},"2":{"40":1,"64":2,"90":4,"126":1,"143":2,"150":2,"271":4}}],["will",{"2":{"30":1}}],["without",{"2":{"213":3}}],["with",{"0":{"30":1},"2":{"30":1,"85":1,"86":1,"87":1,"94":1,"113":1,"114":1,"115":1,"213":1}}],["windows系统版本最低windows10+",{"2":{"11":1}}],["windows请使用项目绝对目录",{"2":{"10":1}}],["windows",{"2":{"9":1,"11":1,"17":1}}],["wv=1027",{"2":{"7":1}}],["ws",{"2":{"3":2}}],["b包也定义了一个index",{"2":{"302":1}}],["break",{"2":{"254":1}}],["bug",{"2":{"286":1}}],["but",{"2":{"213":1}}],["built",{"2":{"189":2}}],["black等工具进行代码检查和格式化",{"2":{"284":1}}],["block",{"0":{"202":1,"255":1,"256":1},"2":{"202":4,"255":2,"256":2}}],["blue>",{"2":{"159":1}}],["baseseg",{"0":{"206":1,"209":1,"211":1},"1":{"207":1,"208":1,"210":1,"212":1}}],["basemodel",{"0":{"174":1,"182":1,"206":1,"221":1,"227":1,"233":1,"237":1,"243":1},"1":{"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"207":1,"208":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1}}],["baseexception",{"0":{"154":1}}],["bashdocker",{"2":{"10":1}}],["bash",{"2":{"9":1}}],["b",{"2":{"104":1,"270":2,"314":1}}],["bool=false",{"2":{"108":1,"109":1,"110":1,"255":1,"256":1}}],["bool=true",{"2":{"87":1,"150":1,"164":1}}],["bool",{"0":{"60":1,"87":1,"108":1,"109":1,"110":1,"130":1,"150":1,"164":1,"202":1,"241":1,"255":1,"256":1,"263":1,"264":1,"265":1,"267":1},"2":{"56":1,"57":1,"60":1,"130":1,"142":1,"202":1,"258":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":2}}],["bot无其他插件会占用300~500mb",{"2":{"11":1}}],["bot",{"0":{"13":1,"28":1,"31":1,"196":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":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},"2":{"9":1,"10":1,"15":2,"28":4,"29":1,"30":4,"152":2,"196":3,"197":2,"278":4,"289":1,"297":2,"305":1,"313":3,"314":1}}],["bot部分插件提供了对接特定平台的能力",{"2":{"6":1}}],["be",{"2":{"30":1,"61":1,"64":1,"69":1,"145":1,"213":2}}],["before",{"0":{"22":1,"25":1,"26":1,"41":1,"43":1,"45":1,"47":1,"49":1,"51":1},"2":{"22":2,"25":2,"26":2,"39":3,"41":2,"43":2,"45":2,"47":3,"49":3,"51":3}}],["bind",{"2":{"159":1,"312":1}}],["bin",{"2":{"7":1,"9":1}}],["qr",{"2":{"7":1}}],["qq群号",{"2":{"313":1}}],["qq",{"2":{"7":1}}],["qm",{"2":{"7":2}}],["quot",{"2":{"3":2,"213":4,"286":1,"293":2,"305":2,"311":4}}],["html中用",{"2":{"302":1}}],["html",{"2":{"302":1}}],["html文件会被覆盖",{"2":{"302":1}}],["html文件",{"2":{"302":2}}],["http等服务",{"2":{"294":1}}],["https",{"2":{"9":2}}],["http",{"2":{"7":1}}],["help",{"2":{"307":1,"308":1}}],["hello",{"2":{"289":5,"305":1}}],["hereby",{"2":{"213":1}}],["handle",{"0":{"203":1},"2":{"190":1,"191":1,"203":1}}],["handlers",{"2":{"202":1,"203":1,"204":1}}],["handler",{"0":{"199":1,"260":1},"2":{"150":3,"199":1,"203":4,"204":2,"260":3,"261":4,"262":4,"263":2}}],["hash",{"0":{"183":1},"2":{"183":2}}],["holders",{"2":{"213":1}}],["homepage",{"0":{"180":1}}],["host",{"2":{"1":1}}],["hint",{"2":{"60":1}}],["仍然出现问题",{"2":{"6":1}}],["确认插件必要配置项完好后",{"2":{"6":1}}],["怎么对接聊天平台",{"2":{"6":1}}],["报错invalidgitrepositoryerror",{"2":{"6":1}}],["其中type字段为commit类型且可选",{"2":{"286":1}}],["其中",{"2":{"6":1,"285":1}}],["其他插件占用视具体插件而定",{"2":{"11":1}}],["其他插件自带的调试功能也将开启",{"2":{"2":1}}],["其他问题请移步至",{"0":{"12":1}}],["其他问题",{"0":{"7":1}}],["其他",{"0":{"4":1,"275":1}}],["其他nonebot插件的配置项",{"2":{"2":1}}],["其他配置",{"0":{"2":1}}],["rpm",{"2":{"307":5,"308":1}}],["rpc",{"2":{"79":1,"294":1}}],["role",{"0":{"233":1,"240":2},"1":{"234":1,"235":1,"236":1}}],["rf",{"2":{"213":1}}],["railt",{"2":{"213":1}}],["raise",{"2":{"28":2,"60":3,"61":2,"62":1,"64":1,"69":2,"87":1,"90":1,"92":1,"134":1,"136":1,"145":1,"244":1}}],["raw",{"0":{"196":1},"2":{"191":1,"196":3,"197":1,"256":1}}],["rulehandlerfunc",{"0":{"258":1,"260":1},"2":{"260":1}}],["rule=empty",{"2":{"255":1,"256":1}}],["rule=is",{"2":{"190":1,"191":1}}],["rule",{"0":{"202":2,"255":3,"256":2,"257":1,"259":1,"261":2,"262":2,"264":1,"265":1},"1":{"258":1,"259":1,"260":2,"261":2,"262":2,"263":2,"264":1,"265":1},"2":{"190":1,"191":1,"202":5,"204":1,"255":3,"256":5,"257":1,"261":3,"262":3,"263":1,"264":3,"265":2}}],["running",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"60":1,"63":1,"84":2,"268":2}}],["runtimeerror",{"2":{"28":2,"61":1,"62":1,"64":1,"90":1,"92":1,"268":1}}],["run",{"0":{"16":1,"40":1,"91":1,"152":1,"204":1,"268":1,"269":1},"2":{"16":3,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"91":1,"92":1,"125":1,"152":2,"204":1,"268":3,"269":1,"300":2}}],["r>",{"2":{"163":2}}],["rights",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":1,"253":1,"257":1}}],["request",{"2":{"283":1}}],["required",{"2":{"60":1}}],["requirements",{"2":{"6":1,"9":1,"11":1}}],["reload",{"2":{"305":1,"306":2,"307":1,"308":1}}],["reloading",{"2":{"297":1}}],["relative",{"2":{"270":1}}],["rel",{"2":{"270":5}}],["reply",{"0":{"197":1},"2":{"191":1,"197":3}}],["report设定为false",{"2":{"303":1}}],["report",{"2":{"1":1,"303":1}}],["red>",{"2":{"159":2}}],["remove",{"2":{"159":1}}],["ref",{"0":{"98":1}}],["recursive=recursive",{"2":{"150":1}}],["recursive",{"0":{"150":1},"2":{"150":2}}],["recv",{"2":{"60":2,"62":2,"71":5,"72":5,"74":3,"75":3,"86":5,"88":5,"99":3,"102":3,"199":2}}],["receive",{"0":{"54":1,"55":1,"62":1,"63":1,"64":1,"81":1,"82":1,"90":3,"91":1,"92":1,"196":1},"2":{"55":2,"60":3,"62":2,"63":2,"64":4,"71":1,"72":2,"73":2,"74":2,"75":1,"81":1,"82":1,"84":2,"86":1,"88":1,"90":11,"91":2,"92":4,"98":1,"99":2,"100":2,"101":2,"102":1,"196":3,"197":3,"278":11}}],["resources",{"2":{"285":1,"301":1,"302":1,"306":1}}],["resolve",{"2":{"270":2}}],["restriction",{"2":{"213":1}}],["restarting",{"2":{"17":1}}],["restart",{"0":{"17":1,"18":1,"26":1,"27":1,"45":1,"46":1,"51":1,"52":1},"2":{"15":1,"17":3,"18":1,"26":2,"27":2,"39":2,"45":2,"46":2,"51":3,"52":3,"297":2}}],["reserved",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["return",{"2":{"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":3,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"62":1,"63":1,"64":6,"71":2,"72":2,"86":2,"88":2,"90":2,"94":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"128":1,"130":1,"138":1,"143":3,"150":3,"158":2,"161":1,"163":2,"164":1,"165":1,"183":1,"203":2,"204":1,"244":2,"245":2,"255":1,"256":2,"261":2,"262":2,"263":2,"264":1,"265":1,"267":3,"270":2,"271":2}}],["r",{"2":{"6":1,"9":1,"11":1,"105":1,"106":1,"107":1,"113":1,"114":1,"115":1}}],["mcfunction",{"2":{"289":2}}],["mute",{"0":{"241":1}}],["must",{"2":{"61":1,"69":1,"145":1}}],["mit",{"2":{"213":1}}],["msg",{"2":{"199":3,"305":1}}],["moved",{"0":{"148":1},"2":{"148":1}}],["modify",{"2":{"213":1}}],["modified",{"0":{"145":1},"2":{"145":2,"146":1,"147":1,"148":1,"149":1,"150":4}}],["moduletype",{"0":{"186":1}}],["module=module",{"2":{"163":1}}],["module",{"0":{"152":1,"163":1,"171":2,"186":1,"187":1,"270":1},"2":{"152":3,"155":1,"163":26,"164":9,"165":1,"183":1,"189":1,"270":1}}],["models",{"0":{"213":1},"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,"251":1,"252":1}}],["model",{"0":{"167":1,"184":1},"1":{"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1},"2":{"167":1,"273":1}}],["mode为true",{"2":{"140":1}}],["mode",{"2":{"2":2,"6":1,"284":1,"305":2,"306":1}}],["member",{"0":{"237":1,"251":2,"252":1},"1":{"238":1,"239":1,"240":1,"241":1,"242":1},"2":{"305":1}}],["memory",{"0":{"97":1},"2":{"84":3,"98":1,"99":3,"100":3,"101":3,"102":2,"126":1,"281":3}}],["merchantability",{"2":{"213":1}}],["merge",{"0":{"117":1},"2":{"117":1,"213":1}}],["message的语言",{"2":{"286":1}}],["message的格式为",{"2":{"286":1}}],["message字段为简短的描述",{"2":{"286":1}}],["message请遵循以下规范",{"2":{"286":1}}],["message=",{"2":{"197":1,"305":1}}],["message=message",{"2":{"197":1}}],["message",{"0":{"196":3,"197":1,"199":1,"205":1,"255":1},"1":{"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1},"2":{"191":1,"196":9,"197":5,"199":1,"255":1,"256":2,"286":1,"313":1,"314":1}}],["messageevent",{"0":{"191":1,"195":1,"196":1,"204":1,"263":1,"264":1,"265":1},"1":{"196":1,"197":1},"2":{"191":1,"196":1,"197":1,"204":1,"256":1,"258":1,"261":1,"262":1,"263":1,"264":1,"265":1}}],["meta",{"2":{"163":4,"296":1}}],["metadata",{"0":{"188":1},"2":{"163":13}}],["marsho",{"2":{"273":1}}],["matcher",{"0":{"200":1,"201":1,"254":3,"255":1,"256":1},"1":{"201":1,"202":2,"203":2,"204":2},"2":{"200":1,"254":9,"255":6,"256":1}}],["match",{"2":{"165":1}}],["manager",{"0":{"120":1,"166":1},"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,"137":1,"138":1},"2":{"15":1,"16":1,"17":1,"18":1,"21":1,"120":1,"166":1}}],["mainprocess",{"2":{"277":1}}],["main",{"0":{"81":1},"2":{"6":1,"9":1,"28":1,"60":2,"64":4,"69":1,"71":1,"72":1,"84":1,"85":1,"86":1,"87":1,"88":1,"90":5,"91":1,"92":1,"278":6,"285":1,"300":1}}],["m",{"2":{"6":1,"9":1,"11":1,"165":1,"254":2,"314":1}}],["答疑",{"0":{"5":1},"1":{"6":1,"7":1}}],["要使用其他通信方式请访问onebot",{"2":{"3":1}}],["如",{"2":{"286":2}}],["如需往轻雪仓库提交代码",{"2":{"283":1}}],["如需自定义请手动添加",{"2":{"2":1}}],["如何开发",{"0":{"283":1},"1":{"284":1}}],["如果是文档相关的开发",{"2":{"283":1}}],["如果你接触过minecraft的资源包",{"2":{"301":1}}],["如果你想同时输出多行内容可以尝试换行符",{"2":{"289":1}}],["如果你没有安装git直接下载源代码运行",{"2":{"11":1}}],["如果你给轻雪配置了accesstoken",{"2":{"3":1}}],["如果装置上有多个环境",{"2":{"11":1}}],["voice",{"0":{"220":1},"2":{"244":1,"245":1}}],["version=",{"2":{"296":1}}],["version",{"0":{"156":1},"2":{"302":1}}],["venv",{"2":{"9":4}}],["v",{"2":{"104":2}}],["validate",{"2":{"61":1}}],["value",{"0":{"85":1},"2":{"85":5,"100":3,"104":3,"116":2,"281":2,"305":2,"309":1}}],["valueerror",{"2":{"60":2,"69":1,"244":1}}],["value2",{"2":{"2":1}}],["value1",{"2":{"2":1}}],["var=value",{"2":{"290":1}}],["var2=value2",{"2":{"290":1}}],["var1=value1>",{"2":{"290":1}}],["var",{"0":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"66":1,"67":1,"68":1,"81":1,"82":1,"97":1,"98":1,"141":1,"142":1,"156":1,"258":1}}],["v11协议api",{"2":{"305":2}}],["v11",{"2":{"3":1,"292":1}}],["地址取决于配置文件",{"2":{"3":1}}],["地址",{"2":{"3":1}}],["反向websocket",{"2":{"3":1}}],["协议",{"2":{"3":1}}],["说明",{"2":{"3":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"54":1,"55":1,"56":1,"57":1,"58":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,"81":1,"82":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"97":1,"98":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"125":1,"126":1,"128":1,"130":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"141":1,"142":1,"143":1,"150":1,"152":1,"156":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"193":1,"196":1,"197":1,"202":1,"203":1,"204":1,"258":1,"267":1,"268":1,"269":1,"270":1,"271":1,"305":1,"307":2,"309":1}}],["不带key返回配置项列表",{"2":{"305":1}}],["不包含任何隐私信息",{"2":{"303":1}}],["不含隐私部分",{"2":{"303":1}}],["不含插件数据",{"2":{"303":1}}],["不同adapter",{"2":{"292":1}}],["不同的实现端给出的字段可能不同",{"2":{"3":1}}],["不限制commit",{"2":{"286":1}}],["不要出现无法访问的死链接",{"2":{"286":1}}],["不要出现过多的嵌套",{"2":{"103":1}}],["不要将多个功能或多个bug的代码混在一起提交",{"2":{"286":1}}],["不递归",{"2":{"109":1}}],["不再使用外层配置",{"2":{"1":1}}],["与nonebot对接的onebot实现端配置",{"0":{"3":1}}],["示例",{"0":{"3":1,"278":1,"281":1,"291":1}}],["监听目录们",{"2":{"150":1}}],["监听地址",{"2":{"1":1}}],["监视文件变化并自动重载",{"2":{"2":1}}],["开始",{"0":{"295":1},"1":{"296":1,"297":1,"298":1,"299":1,"300":1}}],["开发文档是详细的",{"2":{"286":1}}],["开发过程中可以使用mypy",{"2":{"284":1}}],["开发指南",{"0":{"282":1},"1":{"283":1,"284":1,"285":1,"286":1,"287":1}}],["开发者模式",{"2":{"2":1}}],["开发者选项",{"2":{"2":1}}],["开启后将会启动监视者",{"2":{"2":1}}],["开启后将不会加载任何第三方nonebot插件",{"2":{"2":1}}],["开启会自动重载bot或者资源",{"2":{"2":1}}],["2s戳两次",{"2":{"291":1}}],["22",{"2":{"190":1}}],["27",{"2":{"120":1,"157":1}}],["24",{"2":{"31":1,"167":1}}],["23",{"2":{"31":1,"162":1,"166":1}}],["20代替空格",{"2":{"305":1}}],["20和end",{"2":{"291":1}}],["2024",{"2":{"31":2,"120":2,"151":2,"157":2,"162":2,"166":2,"167":2,"190":2,"192":2,"194":2,"200":2,"213":1,"253":2,"257":2}}],["2020",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["20216中的20216替换为你的端口号",{"2":{"10":1}}],["20216",{"2":{"1":1,"3":2}}],["20",{"2":{"11":1}}],["2019+",{"2":{"11":1}}],["2fghnnlvencigbdftsnn7",{"2":{"7":1}}],["2fdfn0tzbkycnbb",{"2":{"7":1}}],["2b5odg7k",{"2":{"7":1}}],["2",{"0":{"217":1},"2":{"2":1,"291":1,"302":1}}],["建议",{"0":{"284":1}}],["建议1gb以上",{"2":{"11":1}}],["建议开启",{"2":{"2":1}}],["建议迁移到liteyuki下",{"2":{"1":1}}],["默认普通图片",{"2":{"305":1}}],["默认开启",{"2":{"303":1}}],["默认插件加载器",{"2":{"193":1}}],["默认执行扁平化选项",{"2":{"108":1,"109":1}}],["默认值",{"2":{"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"66":1,"67":1,"68":1,"81":1,"82":1,"86":1,"97":1,"98":1,"141":1,"142":1,"156":1,"258":1}}],["默认false",{"2":{"2":1}}],["默认语言",{"2":{"2":1}}],["默认为本机",{"2":{"1":1}}],["city",{"2":{"311":1,"312":1}}],["css相对路径引用b中的css",{"2":{"302":1}}],["css",{"2":{"301":1,"302":1}}],["cwd",{"2":{"270":1}}],["cyan>",{"2":{"159":1}}],["critical",{"2":{"159":1}}],["created",{"0":{"146":1},"2":{"146":1}}],["create",{"2":{"91":1}}],["cfg",{"2":{"152":4}}],["current|bot",{"2":{"313":1}}],["current|group",{"2":{"313":1}}],["current",{"2":{"143":3,"313":2,"314":1}}],["custom",{"2":{"2":4}}],["charge",{"2":{"213":1}}],["change",{"2":{"307":1,"308":1}}],["changed",{"2":{"297":1}}],["chans",{"0":{"199":1},"2":{"199":3}}],["channel时的通道标识",{"2":{"278":1}}],["channel即可",{"2":{"278":1}}],["channel及passive",{"2":{"278":1}}],["channel函数获取通道对象",{"2":{"278":2}}],["channel=none",{"2":{"197":1}}],["channeldeliver",{"0":{"121":1},"1":{"122":1},"2":{"126":1}}],["channels",{"0":{"70":2,"72":1,"75":1},"2":{"70":4,"72":2,"74":1,"75":3}}],["channel",{"0":{"53":1,"59":1,"65":1,"66":1,"67":2,"68":2,"69":3,"70":1,"71":2,"72":1,"73":1,"74":1,"89":1,"90":1,"91":1,"122":8,"196":2,"218":1,"219":1,"220":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":2,"61":2,"62":2,"63":2,"64":2,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1},"2":{"18":2,"60":5,"61":1,"62":1,"65":3,"66":3,"67":2,"68":1,"69":19,"70":5,"71":9,"72":10,"73":11,"74":7,"75":2,"79":2,"84":4,"86":1,"88":1,"89":4,"90":8,"91":3,"92":2,"122":12,"126":12,"196":4,"197":2,"244":3,"245":3,"278":12}}],["chan",{"0":{"199":1},"2":{"15":4,"18":4,"71":5,"72":5,"74":3,"75":3,"84":2,"85":1,"86":6,"87":1,"88":6,"89":1,"92":1,"98":1,"99":5,"100":2,"101":2,"102":4,"126":2,"199":1}}],["check",{"0":{"60":1},"2":{"60":8,"61":1}}],["c",{"2":{"31":1,"104":1,"120":1,"151":1,"157":1,"162":1,"165":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":1,"253":1,"257":1,"268":4,"270":2,"314":1}}],["category",{"0":{"219":1},"2":{"244":1,"245":1}}],["case",{"2":{"165":4}}],["cannot",{"2":{"61":1,"62":1,"90":1,"92":1}}],["can",{"2":{"28":1,"64":1}}],["callback",{"0":{"141":1,"150":2},"2":{"64":1,"150":4}}],["callable",{"0":{"64":3,"90":1,"150":1,"203":1,"267":2,"271":2},"2":{"32":1,"33":1,"35":1,"36":1,"40":1,"54":1,"56":1,"57":1,"64":10,"90":2,"124":1,"141":1,"142":1,"150":1,"203":1,"258":1,"267":2,"271":4}}],["call",{"0":{"267":1},"2":{"15":1,"17":2,"143":4,"263":1,"267":7}}],["cmd",{"2":{"17":5,"289":2,"290":1}}],["claim",{"2":{"213":1}}],["classmethod",{"2":{"93":1,"94":1}}],["class",{"0":{"14":1,"38":1,"59":1,"77":1,"83":1,"93":1,"111":1,"121":1,"123":1,"131":1,"144":1,"154":1,"168":1,"174":1,"182":1,"195":1,"201":1,"206":1,"209":1,"211":1,"214":1,"221":1,"227":1,"233":1,"237":1,"243":1,"259":1},"1":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":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,"60":1,"61":1,"62":1,"63":1,"64":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"95":1,"96":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"145":1,"146":1,"147":1,"148":1,"149":1,"169":1,"170":1,"171":1,"172":1,"173":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"196":1,"197":1,"202":1,"203":1,"204":1,"207":1,"208":1,"210":1,"212":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"260":1,"261":1,"262":1,"263":1}}],["cls",{"0":{"94":1},"2":{"94":6}}],["close",{"2":{"268":1}}],["closed",{"2":{"60":1,"61":2,"62":2}}],["clone",{"2":{"9":1}}],["cpu",{"2":{"11":1,"303":1}}],["centos",{"2":{"11":1}}],["cd",{"2":{"9":1}}],["cgi",{"2":{"7":1}}],["copies",{"2":{"213":2}}],["copy",{"2":{"104":1,"213":2}}],["copyright",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":3,"253":1,"257":1}}],["color",{"2":{"165":7}}],["color=",{"2":{"159":7}}],["colors=true",{"2":{"16":2,"163":3}}],["code插件liteyuki",{"2":{"293":1}}],["code",{"2":{"150":3}}],["codemodifiedhandler",{"0":{"144":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":1},"2":{"150":1}}],["code=775840726",{"2":{"7":1}}],["coro",{"0":{"268":1,"269":1},"2":{"268":5,"269":2}}],["coroutine",{"0":{"267":1,"268":2,"269":2,"271":1},"2":{"40":1,"57":1,"64":2,"90":1,"258":1,"267":1,"268":2,"269":3,"271":2}}],["core",{"0":{"119":1,"120":1},"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,"137":1,"138":1}}],["conditions",{"2":{"213":1}}],["contract",{"2":{"213":1}}],["content",{"0":{"210":1}}],["continue",{"2":{"109":1,"164":3}}],["connection",{"2":{"213":1}}],["conn",{"2":{"60":4,"61":1,"62":1}}],["configs",{"0":{"109":1},"2":{"109":1,"110":1}}],["config=self",{"2":{"20":1}}],["config",{"0":{"29":1,"30":1,"103":1,"104":2,"110":1,"159":1,"184":1},"1":{"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1},"2":{"2":2,"15":2,"20":1,"29":2,"30":6,"104":9,"105":6,"106":6,"107":6,"108":7,"109":4,"110":9,"112":1,"113":1,"114":1,"115":1,"116":1,"117":2,"118":1,"152":1,"159":4,"193":2,"305":4,"306":1}}],["count",{"0":{"98":1},"2":{"15":1,"17":2}}],["combined",{"2":{"261":2,"262":2}}],["commit",{"2":{"286":2}}],["comm",{"0":{"53":1,"76":1,"79":1,"80":1},"1":{"54":1,"55":1,"56":1,"57":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,"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},"2":{"278":2,"281":2}}],["command>",{"2":{"290":2}}],["command",{"0":{"305":1},"1":{"306":1},"2":{"1":2}}],["complete",{"2":{"268":2}}],["completion",{"2":{"2":1}}],["compat",{"0":{"30":2},"2":{"30":8}}],["com",{"2":{"7":1,"9":1,"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["cn",{"2":{"2":1}}],["duration>",{"2":{"313":1}}],["duration",{"2":{"313":2,"314":1}}],["driver",{"2":{"278":4}}],["dog",{"2":{"296":1,"297":1}}],["docker相关内容目录",{"2":{"285":1}}],["docker",{"2":{"285":1}}],["docstring",{"2":{"286":1}}],["docstring或liteyuki",{"2":{"286":1}}],["docs",{"2":{"285":1,"305":1,"306":1}}],["documentation",{"2":{"213":1}}],["do",{"2":{"213":1}}],["does",{"2":{"164":1}}],["d",{"2":{"98":2,"99":4,"100":4,"101":4,"102":2,"270":2,"314":1}}],["datetime",{"0":{"242":1}}],["data=",{"2":{"197":1}}],["data",{"0":{"61":1,"73":1,"74":1,"75":1,"78":1,"89":1,"91":1,"99":1,"100":1,"101":1,"102":1,"196":1,"208":1},"2":{"61":6,"62":2,"63":2,"64":5,"72":2,"73":7,"74":7,"75":4,"78":3,"89":4,"90":3,"91":3,"92":6,"99":4,"100":3,"101":2,"102":2,"196":5,"278":7}}],["damages",{"2":{"213":1}}],["daemon=true",{"2":{"17":1,"125":1,"269":1}}],["darwin",{"2":{"17":1}}],["disable",{"2":{"305":1,"306":1,"307":2,"308":2}}],["distribute",{"2":{"213":1}}],["display",{"0":{"165":2},"2":{"163":7,"165":4}}],["diagnose=false",{"2":{"159":1}}],["dir",{"0":{"164":1},"2":{"164":16,"193":2}}],["directory",{"2":{"109":6,"150":2,"164":1}}],["directories=",{"2":{"297":1}}],["directories",{"0":{"109":1,"150":1},"2":{"109":2,"150":3}}],["dirs",{"0":{"109":1},"2":{"1":1,"109":1,"110":1,"193":1}}],["dict",{"0":{"70":1,"72":1,"73":1,"74":1,"75":1,"78":1,"88":1,"99":1,"100":1,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"122":1,"159":1,"161":1,"181":1,"196":2,"197":1,"208":1},"2":{"15":1,"68":1,"70":2,"72":3,"73":1,"74":1,"75":1,"78":1,"81":1,"82":1,"84":2,"88":3,"99":1,"100":1,"101":1,"102":1,"104":3,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"122":1,"124":3,"132":1,"159":1,"161":2,"163":6,"196":2,"197":1}}],["dealings",{"2":{"213":1}}],["deal",{"2":{"213":1}}],["description=",{"2":{"296":1}}],["description",{"0":{"176":1},"2":{"302":1}}],["debounce",{"0":{"143":1},"2":{"143":1,"144":1,"145":1}}],["debug",{"2":{"2":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"105":1,"106":1,"107":1,"125":1,"135":1,"137":1,"158":2,"159":2,"199":1,"297":1}}],["deepcopy",{"2":{"104":1}}],["del",{"2":{"87":2}}],["deleted",{"0":{"147":1},"2":{"147":1}}],["delete",{"0":{"87":1,"101":1},"2":{"87":2,"100":1,"101":3}}],["delivery",{"2":{"126":1}}],["deliver",{"0":{"67":1,"68":1,"122":2},"2":{"69":1,"71":1,"72":2,"73":2,"74":2,"75":1,"122":6,"126":6}}],["delay",{"0":{"17":1},"2":{"17":3}}],["decorator",{"2":{"64":2,"90":2,"143":2,"150":2,"203":2}}],["def",{"2":{"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"64":2,"73":1,"74":1,"75":1,"90":2,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"143":2,"145":1,"150":2,"191":1,"203":1,"204":1,"244":1,"245":1,"256":1,"261":1,"262":1,"263":1,"264":1,"265":1,"271":1,"278":3,"297":1}}],["defaults",{"2":{"17":1,"18":1,"29":1,"30":1,"64":1}}],["default",{"0":{"29":1,"30":1,"86":1,"110":1,"118":1,"175":1,"185":1,"186":1,"187":1,"193":1,"208":1,"210":1,"212":1,"222":1,"228":1,"229":1,"234":1,"238":1,"246":1,"247":1,"248":1,"249":1,"250":1},"2":{"2":1,"29":3,"30":3,"67":1,"68":1,"86":5,"99":3,"110":1,"118":2,"152":1,"158":1,"193":1}}],["deprecated",{"2":{"30":1}}],["depth=1",{"2":{"9":1}}],["developer",{"2":{"296":1}}],["dev",{"0":{"139":1,"140":1,"151":1},"1":{"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1},"2":{"2":1,"297":1,"300":1}}],["访问令牌",{"2":{"2":1}}],["a包中的index",{"2":{"302":1}}],["am",{"2":{"278":6}}],["amp",{"0":{"262":1},"2":{"7":4}}],["api格式为onebot",{"2":{"305":1}}],["api文档",{"2":{"292":1}}],["api也有差别",{"2":{"292":1}}],["api",{"0":{"292":1},"2":{"275":1,"290":3,"291":2,"305":3}}],["application",{"0":{"169":2},"2":{"165":1,"294":1}}],["append",{"2":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"64":2,"90":2,"203":1,"254":1}}],["app",{"2":{"9":1,"10":1}}],["at",{"0":{"242":1}}],["attr",{"0":{"95":1,"96":1,"169":1,"170":1,"171":1,"172":1,"173":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"184":1,"185":1,"186":1,"187":1,"188":1,"207":1,"208":1,"210":1,"212":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1}}],["avatar",{"0":{"225":1,"231":1}}],["above",{"2":{"213":1}}],["arising",{"2":{"213":1}}],["arbitrary",{"0":{"184":1}}],["argv",{"2":{"17":1}}],["args=coro",{"2":{"269":1}}],["args=",{"2":{"17":1,"125":1}}],["args",{"0":{"19":1,"40":1,"49":1,"51":1,"126":1,"133":1},"2":{"17":2,"19":2,"40":3,"49":2,"51":2,"126":3,"133":3,"143":2,"271":2,"305":4}}],["adapter",{"0":{"247":1}}],["adapter获取详细信息",{"2":{"3":1}}],["add",{"0":{"126":1,"133":1,"254":1},"2":{"126":1,"133":1,"159":1,"164":1,"254":1,"255":1}}],["associated",{"2":{"213":1}}],["as",{"2":{"87":1,"113":1,"114":1,"115":1,"163":1,"213":1,"268":1}}],["asynchronous",{"2":{"271":1}}],["async",{"0":{"33":1,"36":1,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"57":1,"63":2,"91":1,"92":1,"191":1,"204":1,"263":1,"264":1,"265":1,"271":1},"2":{"34":1,"37":1,"40":3,"55":1,"58":1,"63":1,"64":1,"81":1,"82":1,"90":1,"91":1,"92":1,"191":1,"256":1,"261":1,"262":1,"264":1,"265":1,"271":2,"278":2}}],["asyncio",{"2":{"15":2,"16":1,"40":1,"63":1,"91":1,"268":5,"278":2}}],["a",{"2":{"61":1,"62":1,"104":1,"164":1,"213":2,"270":1,"296":1}}],["an",{"2":{"61":1,"69":1,"213":1}}],["and",{"2":{"61":1,"150":1,"164":3,"213":5,"262":2,"297":2}}],["anybot",{"2":{"199":2}}],["any=none",{"2":{"29":1,"30":1,"118":1}}],["any",{"0":{"29":2,"30":2,"64":2,"73":1,"74":1,"75":1,"78":1,"85":1,"86":2,"88":1,"89":1,"91":1,"99":1,"100":1,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"118":2,"122":4,"149":1,"181":1,"196":2,"197":1,"199":1,"208":1,"267":1,"271":1},"2":{"15":3,"29":3,"30":3,"32":1,"33":1,"35":1,"36":1,"54":1,"57":2,"64":7,"67":1,"68":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":3,"85":1,"86":4,"88":3,"89":1,"90":1,"91":1,"99":1,"100":1,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"118":1,"122":4,"149":1,"196":2,"197":1,"199":1,"213":3,"256":1,"267":1,"271":1}}],["await",{"2":{"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"64":2,"90":1,"92":2,"204":2,"261":2,"262":2,"263":1,"278":1,"290":1,"291":1,"293":1}}],["awaitable",{"2":{"33":1,"36":1}}],["after",{"0":{"23":1,"24":1,"27":1,"42":1,"44":1,"46":1,"48":1,"50":1,"52":1},"2":{"23":2,"24":2,"27":2,"39":3,"42":2,"44":2,"46":2,"48":3,"50":3,"52":3,"278":1}}],["action",{"2":{"213":1}}],["active和",{"2":{"278":1}}],["active和chan",{"2":{"126":1}}],["active=channel",{"2":{"126":1}}],["active=chan",{"2":{"126":1}}],["active",{"0":{"65":1,"67":1,"122":2},"2":{"18":6,"65":1,"84":2,"89":1,"92":1,"122":6,"126":4,"278":11}}],["activate",{"2":{"9":2}}],["accesstoken",{"2":{"3":1}}],["access",{"2":{"2":1}}],["authors",{"2":{"213":1}}],["author",{"0":{"179":1},"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["authkey=ygebdemdfnycwunr4w0m1m8",{"2":{"7":1}}],["auto",{"2":{"1":2,"2":1}}],["alive",{"0":{"130":1},"2":{"128":1,"130":2}}],["already",{"2":{"60":2,"69":1}}],["all",{"0":{"88":1,"102":1,"125":1,"127":1,"129":1,"135":1,"137":1},"2":{"16":1,"17":1,"21":1,"31":1,"88":2,"101":1,"102":3,"120":1,"125":1,"127":1,"129":1,"135":1,"137":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":1,"253":1,"257":1}}],["allowed",{"0":{"184":1}}],["allow",{"2":{"2":1}}],["alconna的消息段定义",{"2":{"198":1}}],["alconna是否自动补全指令",{"2":{"2":1}}],["alconna",{"2":{"2":1}}],["高级nonebot配置",{"2":{"2":1}}],["p",{"2":{"314":1}}],["poke",{"2":{"291":4}}],["portions",{"2":{"213":1}}],["port",{"2":{"1":1}}],["period\`",{"2":{"314":1}}],["period>",{"2":{"313":1}}],["period",{"2":{"313":2}}],["permit",{"2":{"213":1}}],["permission",{"2":{"213":2}}],["persons",{"2":{"213":1}}],["person",{"2":{"213":1}}],["purpose",{"2":{"213":1}}],["publish=publish",{"2":{"126":1}}],["publish",{"0":{"89":1,"122":1},"2":{"84":2,"89":2,"92":2,"122":3,"213":1}}],["pull",{"2":{"10":1}}],["page为页数",{"2":{"307":2}}],["page",{"2":{"307":2}}],["pacman",{"0":{"307":1},"1":{"308":1}}],["pack",{"2":{"302":2,"307":3}}],["param",{"2":{"304":1}}],["parts",{"2":{"270":2}}],["particular",{"2":{"213":1}}],["parent",{"0":{"232":1}}],["pass",{"2":{"199":1}}],["passive=channel",{"2":{"126":1}}],["passive=chan",{"2":{"126":1}}],["passive",{"0":{"66":1,"68":1,"122":2},"2":{"66":1,"69":1,"71":1,"72":2,"73":2,"74":2,"75":1,"84":2,"85":1,"86":1,"87":1,"88":1,"98":1,"99":2,"100":2,"101":2,"102":1,"122":6,"126":5,"278":13}}],["pathlib",{"2":{"163":1}}],["path",{"0":{"152":2,"163":2,"270":3},"2":{"6":3,"10":1,"11":1,"108":1,"109":2,"152":4,"163":16,"164":26,"270":11,"297":5}}],["profile",{"2":{"309":4}}],["property",{"2":{"243":1,"244":2,"245":1}}],["provided",{"2":{"213":1}}],["processfunctype",{"0":{"133":1},"2":{"133":1}}],["processes",{"2":{"18":1,"124":1,"128":2,"130":1,"132":1,"133":1,"134":2,"135":1,"136":2,"137":1,"138":1}}],["processmanager",{"0":{"123":1},"1":{"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1},"2":{"15":2}}],["process",{"0":{"18":1,"25":2,"26":3,"35":1,"36":1,"37":1,"40":1,"43":3,"45":3,"49":1,"51":1,"130":1,"138":1},"2":{"15":1,"16":1,"17":1,"18":4,"21":1,"25":5,"26":6,"28":2,"37":2,"39":4,"40":2,"43":6,"45":6,"49":2,"51":2,"60":1,"64":3,"69":1,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"90":3,"92":2,"124":1,"125":2,"127":2,"128":7,"130":2,"134":1,"135":3,"136":1,"137":3,"138":1,"278":8,"297":2}}],["private",{"0":{"215":1},"2":{"244":1,"245":1}}],["priority",{"0":{"202":1,"255":1,"256":1},"2":{"202":4,"254":2,"255":2,"256":2}}],["print",{"2":{"15":1,"163":1,"204":1}}],["prefix",{"0":{"116":1},"2":{"116":3}}],["pwd",{"2":{"10":1}}],["platform",{"2":{"17":3}}],["playwright安装失败",{"2":{"6":1}}],["plugintype",{"0":{"165":1,"168":1,"178":2},"1":{"169":1,"170":1,"171":1,"172":1,"173":1},"2":{"165":5,"296":1}}],["pluginmetadata",{"0":{"174":1,"188":1},"1":{"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1},"2":{"163":4,"296":2}}],["plugin的函数签名",{"2":{"152":1}}],["plugin",{"0":{"151":1,"160":1,"161":1,"162":1,"163":2,"164":2,"165":1,"166":1,"167":1,"182":1,"192":1},"1":{"152":1,"161":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,"178":1,"179":1,"180":1,"181":1,"182":1,"183":2,"184":2,"185":2,"186":2,"187":2,"188":2,"193":1},"2":{"1":1,"15":2,"151":1,"161":2,"163":14,"164":5,"165":4,"189":1,"193":6,"198":1,"213":1,"274":2,"296":4,"299":1,"300":2,"307":5}}],["plugins下创建一个文件",{"2":{"300":1}}],["plugins中添加你的插件路径",{"2":{"299":1}}],["plugins目录下为插件目录",{"2":{"285":1}}],["plugins和nonebot",{"2":{"285":1}}],["plugins",{"0":{"152":1,"161":1,"164":1,"189":1,"190":1,"192":1,"193":1},"1":{"191":1,"193":1},"2":{"1":1,"15":1,"152":6,"161":2,"163":3,"164":9,"189":1,"193":4,"285":2,"297":1,"300":2}}],["py即可启动插件",{"2":{"300":1}}],["pyo",{"2":{"297":1}}],["pycache",{"2":{"297":1}}],["pyc",{"2":{"297":1}}],["pycharm",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["py文件",{"2":{"296":1}}],["py文件或一个包含",{"2":{"296":1}}],["py的文件夹即可被识别为插件",{"2":{"296":1}}],["py",{"2":{"9":1,"31":1,"120":1,"151":1,"157":1,"162":1,"164":3,"166":1,"167":1,"190":1,"192":2,"194":1,"200":1,"253":1,"257":1,"281":1,"285":1,"296":1,"297":1,"300":2,"302":1}}],["py来启动bot",{"2":{"6":1}}],["python格式",{"2":{"289":1}}],["pythonfrom",{"2":{"278":1,"281":1,"296":1,"300":1}}],["pythonimport",{"2":{"278":1,"297":1}}],["pythonasync",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"92":1,"204":1,"263":1}}],["pythondef",{"2":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"39":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"60":1,"61":1,"62":1,"64":1,"69":1,"70":1,"71":1,"72":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"193":1,"196":1,"197":1,"199":1,"202":1,"203":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"267":1,"268":1,"269":1,"270":1,"271":1}}],["python3",{"2":{"9":1}}],["python是你要用来运行bot的可执行文件",{"2":{"6":1}}],["python",{"2":{"6":2,"9":2,"11":2,"40":1,"73":1,"74":1,"75":1,"91":1,"94":1,"99":1,"100":1,"101":1,"102":1,"145":1,"191":1,"244":1,"245":1,"264":1,"265":1,"286":1}}],["pipe",{"2":{"60":2}}],["pip",{"2":{"6":1,"9":1,"11":1,"163":1}}],["pip和python不对应怎么办",{"2":{"6":1}}],["utils",{"0":{"266":1},"1":{"267":1,"268":1,"269":1,"270":1,"271":1},"2":{"285":1}}],["utf",{"2":{"105":1,"106":1,"107":1}}],["url",{"0":{"212":1}}],["usage",{"0":{"177":1}}],["user",{"0":{"196":1,"221":1,"238":2,"250":2,"309":1},"1":{"222":1,"223":1,"224":1,"225":1,"226":1},"2":{"196":3,"197":2,"244":1,"245":2,"265":1,"291":3}}],["used",{"2":{"64":1,"189":1}}],["use",{"2":{"1":1,"30":1,"163":1,"213":2}}],["unload",{"2":{"307":1,"308":1}}],["until",{"2":{"268":2}}],["uninstall",{"2":{"307":1,"308":1}}],["uninstall卸载问题插件",{"2":{"6":1}}],["uninfo的部分模型定义",{"2":{"213":1}}],["unclassified",{"0":{"172":2,"178":1}}],["unsupported",{"2":{"108":1}}],["u",{"2":{"7":1}}],["update",{"2":{"1":1,"2":1,"108":3,"109":1,"110":1,"113":1,"114":1,"115":1,"117":1,"305":1,"306":1,"307":1,"308":1}}],["某些控制台字体不可用",{"2":{"1":1}}],["text",{"0":{"209":1,"218":1},"1":{"210":1},"2":{"244":1,"245":1}}],["tests",{"2":{"285":1}}],["test",{"0":{"173":2},"2":{"165":1}}],["terminating",{"2":{"137":1}}],["terminated",{"2":{"128":1}}],["terminate",{"0":{"128":1,"129":1,"136":1,"137":1},"2":{"17":1,"21":1,"128":2,"129":2,"136":2,"137":2}}],["the",{"2":{"155":1,"163":1,"189":1,"213":14}}],["this",{"2":{"155":1,"189":1,"213":2}}],["thread",{"0":{"199":1,"269":1},"2":{"17":1,"125":1,"199":1,"269":2}}],["threading",{"0":{"96":1},"2":{"15":1,"17":1,"125":1,"269":1}}],["type=plugintype",{"2":{"296":1}}],["type=self",{"2":{"197":2}}],["types",{"0":{"184":1}}],["typeerror",{"2":{"60":1,"61":1,"69":1}}],["type",{"0":{"60":1,"165":1,"178":1,"196":2,"207":1,"229":1},"2":{"60":11,"61":7,"69":1,"163":2,"165":4,"196":6,"197":2,"286":1}}],["typealias",{"2":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"141":1,"142":1,"258":1}}],["tar",{"2":{"213":1}}],["target",{"0":{"126":3,"245":1},"2":{"126":5,"245":1}}],["target=run",{"2":{"269":1}}],["target=self",{"2":{"125":1}}],["target=os",{"2":{"17":1}}],["targets",{"2":{"124":1,"125":1,"126":1,"127":1,"129":1,"130":1}}],["task",{"2":{"91":1,"125":1}}],["tasks",{"2":{"40":2}}],["tuple=",{"2":{"126":1}}],["tuplestr",{"2":{"30":1}}],["tuple",{"0":{"30":1,"73":1,"74":1,"75":1,"99":1,"100":1,"101":1,"102":1,"122":2,"126":1,"150":1},"2":{"30":1,"68":1,"73":1,"74":1,"75":1,"84":3,"99":1,"100":1,"101":1,"102":1,"122":2,"124":2,"150":1}}],["t",{"0":{"59":1,"61":1,"62":1,"63":1,"64":2},"1":{"60":1,"61":1,"62":1,"63":1,"64":1},"2":{"28":1,"54":1,"56":1,"57":1,"61":2,"62":2,"63":2,"64":7}}],["time>",{"2":{"290":1}}],["timeout",{"2":{"128":1}}],["time",{"2":{"17":1,"31":1,"120":1,"143":9,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["tip",{"2":{"10":1,"293":1,"302":1,"304":1}}],["trss",{"2":{"275":2}}],["trim",{"2":{"273":2}}],["traceback",{"2":{"163":1,"204":1}}],["trace",{"2":{"159":1}}],["try",{"2":{"16":1,"87":1,"163":1,"204":1,"268":1}}],["true下启动轻雪",{"2":{"6":1}}],["true",{"0":{"87":1,"150":1,"164":1,"184":1},"2":{"1":3,"2":1,"62":1,"92":1,"159":1,"263":1,"264":1,"278":2,"284":1}}],["txt",{"2":{"9":1}}],["txt来安装依赖",{"2":{"6":1,"11":1}}],["tokyo",{"2":{"311":1}}],["token",{"2":{"2":1}}],["tort",{"2":{"213":1}}],["toml",{"0":{"107":1,"114":1},"2":{"107":4,"108":2,"110":1,"114":2}}],["toml和config目录下的所有配置文件",{"2":{"0":1}}],["to",{"0":{"270":1},"2":{"6":3,"10":1,"11":2,"17":1,"18":1,"29":1,"30":1,"61":1,"64":1,"163":5,"164":2,"189":1,"213":8,"270":2}}],["image",{"0":{"211":1},"1":{"212":1},"2":{"305":2,"306":1}}],["implementation",{"2":{"294":1}}],["implemented",{"2":{"145":1}}],["implied",{"2":{"213":1}}],["import",{"2":{"98":1,"163":1,"278":5,"281":1,"296":2,"297":3,"300":1}}],["iterable",{"0":{"199":1},"2":{"199":1}}],["items",{"2":{"70":1,"104":2,"116":1,"135":1,"137":1}}],["ignore",{"0":{"87":1,"164":1},"2":{"87":3,"164":5}}],["id仅超级用户可用",{"2":{"305":1}}],["id=user",{"2":{"291":2}}],["id=1234567",{"2":{"305":2}}],["id=123456",{"2":{"291":1}}],["id=self",{"2":{"197":3}}],["id",{"0":{"196":3,"222":1,"228":1,"234":1,"244":1,"245":1,"246":1},"2":{"64":5,"196":9,"197":3,"244":3,"245":4,"265":1,"291":2,"305":2,"307":1,"313":4}}],["ids",{"2":{"60":2,"64":2}}],["if",{"2":{"17":2,"18":1,"28":2,"30":2,"40":1,"60":5,"61":3,"62":1,"64":6,"69":3,"71":1,"72":1,"85":1,"86":1,"87":3,"88":1,"90":5,"92":2,"94":2,"104":1,"105":1,"106":1,"107":1,"108":2,"109":3,"116":1,"126":1,"128":2,"130":1,"134":1,"136":1,"143":1,"150":1,"158":1,"159":7,"163":2,"164":9,"196":1,"197":1,"204":1,"244":1,"245":1,"254":1,"263":1,"267":2,"268":1,"270":1}}],["isclass",{"2":{"267":1}}],["iscoroutinefunction",{"2":{"267":2}}],["isroutine",{"2":{"267":1}}],["isfile",{"2":{"164":1,"297":1}}],["isdir",{"2":{"164":2}}],["isinstance",{"2":{"69":1,"104":1,"163":1,"278":1}}],["is",{"0":{"130":1,"265":1,"267":1},"2":{"15":1,"16":2,"18":1,"28":2,"40":1,"60":6,"61":1,"64":5,"69":1,"71":1,"72":1,"84":2,"85":1,"86":1,"87":1,"88":1,"90":3,"92":1,"94":2,"105":1,"106":1,"107":1,"126":1,"128":1,"130":2,"150":1,"155":1,"163":1,"164":2,"189":1,"196":1,"213":4,"263":1,"265":1,"267":1,"268":1}}],["i",{"0":{"199":1},"2":{"15":1,"199":3,"254":2,"278":6}}],["icu",{"2":{"9":1,"10":1}}],["icon=f",{"2":{"159":7}}],["icon",{"2":{"1":1,"159":9}}],["index",{"2":{"302":1}}],["inspect",{"2":{"267":4,"271":1}}],["insert",{"2":{"254":1}}],["instead",{"2":{"30":1}}],["instance",{"0":{"94":1,"95":1},"2":{"15":2,"28":4,"61":1,"69":1,"94":5,"97":1}}],["install安装浏览器",{"2":{"6":1}}],["install",{"2":{"6":1,"9":1,"11":1,"304":1,"307":1,"308":1}}],["invalid",{"2":{"244":1}}],["included",{"2":{"213":1}}],["including",{"2":{"213":2}}],["inner",{"2":{"60":2}}],["in",{"0":{"110":1,"269":1},"2":{"18":1,"28":1,"30":3,"40":1,"60":2,"63":1,"64":1,"69":1,"70":1,"87":1,"90":3,"91":1,"92":1,"104":2,"108":1,"109":2,"110":1,"116":1,"125":1,"127":1,"128":1,"129":1,"130":1,"134":1,"135":1,"136":1,"137":1,"150":1,"152":1,"164":2,"189":2,"193":2,"199":1,"204":1,"213":6,"244":1,"245":1,"254":1,"256":2,"265":1,"268":2,"269":1,"297":1}}],["int=0",{"2":{"17":1,"255":1,"256":1}}],["int",{"0":{"17":1,"202":1,"214":1,"235":1,"255":1,"256":1},"1":{"215":1,"216":1,"217":1,"218":1,"219":1,"220":1},"2":{"17":1,"39":1,"60":2,"202":1}}],["initialized",{"2":{"28":1}}],["initializing",{"2":{"15":1}}],["init",{"0":{"15":1,"19":1,"20":1,"39":1,"60":1,"78":1,"84":1,"112":1,"122":1,"124":1,"132":1,"159":1,"196":1,"202":1,"260":1},"2":{"15":2,"19":2,"20":2,"39":1,"60":1,"78":1,"84":1,"112":1,"122":1,"124":1,"132":1,"159":1,"164":2,"192":1,"196":1,"202":1,"260":1,"270":1,"296":3}}],["info",{"2":{"1":1,"15":1,"16":2,"17":1,"159":1,"199":1,"278":2}}],["日志等级",{"2":{"1":1,"158":1}}],["lyf结尾",{"2":{"289":1}}],["lyfunction语法",{"2":{"305":1}}],["lyfunction",{"2":{"289":1}}],["lt",{"2":{"286":2,"304":1,"305":7,"307":10,"309":2}}],["len",{"2":{"116":1}}],["level=level",{"2":{"159":1}}],["level",{"0":{"158":1,"235":1},"2":{"1":1,"158":3,"159":10}}],["locks",{"2":{"87":1}}],["lock",{"0":{"96":2},"2":{"85":3,"86":3,"87":3,"94":1}}],["loaded",{"0":{"161":1},"2":{"161":1}}],["loader",{"0":{"111":1,"113":1,"114":1,"115":1,"116":1,"117":3,"192":1,"193":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"193":1},"2":{"15":1,"113":1,"114":1,"115":1,"116":1,"117":4,"193":1}}],["loading",{"2":{"105":1,"106":1,"107":1}}],["load",{"0":{"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"162":1,"163":1,"164":1},"1":{"163":1,"164":1,"165":1},"2":{"15":1,"105":3,"106":3,"107":3,"108":4,"109":2,"110":3,"113":2,"114":2,"115":2,"116":1,"152":2,"162":1,"163":3,"164":2,"193":2,"307":1,"308":1}}],["loop",{"0":{"92":1},"2":{"15":4,"60":1,"63":3,"84":2,"92":2,"268":10}}],["log0000",{"2":{"278":1}}],["logger",{"0":{"20":1},"2":{"15":1,"16":2,"17":1,"19":1,"20":1,"30":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"105":1,"106":1,"107":1,"108":2,"109":1,"125":1,"128":2,"130":1,"135":1,"137":1,"159":11,"163":3,"164":3,"199":2,"268":1,"278":3,"297":2}}],["logo",{"2":{"15":1}}],["log",{"0":{"157":1,"159":1},"1":{"158":1,"159":1},"2":{"1":2,"20":1,"157":1,"159":3,"278":1}}],["last",{"2":{"143":4}}],["lambda",{"2":{"98":1,"99":2,"100":2,"101":2,"102":1}}],["latest",{"2":{"10":1}}],["language",{"2":{"2":1}}],["liability",{"2":{"213":1}}],["liable",{"2":{"213":1}}],["limited",{"2":{"213":1}}],["limitation",{"2":{"213":1}}],["license",{"2":{"213":1}}],["litedoc",{"2":{"275":1}}],["liteecho",{"0":{"190":1,"191":1},"1":{"191":1},"2":{"190":2,"191":2,"305":1}}],["liteyuki框架是包含在liteyukibot应用中的",{"2":{"285":1}}],["liteyukiexception",{"0":{"154":1}}],["liteyukibot代替$",{"2":{"10":1}}],["liteyukibot",{"0":{"14":1,"28":1},"1":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"9":2,"17":1,"28":2,"152":1,"273":2,"274":2,"275":2,"285":1}}],["liteyukistudio",{"2":{"9":1,"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"253":1,"257":1}}],["liteyuki",{"0":{"13":1,"31":1,"53":1,"76":1,"79":1,"80":1,"103":1,"119":1,"120":1,"139":1,"140":1,"151":1,"153":1,"155":1,"157":1,"160":1,"162":1,"166":1,"167":1,"189":1,"190":1,"192":1,"194":1,"198":1,"200":1,"205":1,"213":1,"253":1,"257":1,"266":1,"307":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":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,"54":1,"55":1,"56":1,"57":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,"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,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":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,"137":1,"138":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"154":1,"156":1,"158":1,"159":1,"161":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,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"191":1,"193":1,"195":1,"196":1,"197":1,"199":1,"201":1,"202":1,"203":1,"204":1,"206":1,"207":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,"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,"251":1,"252":1,"254":1,"255":1,"256":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"308":1},"2":{"1":2,"2":1,"9":1,"10":1,"15":2,"28":1,"152":2,"155":1,"163":5,"193":3,"273":1,"275":2,"278":12,"281":2,"285":3,"288":1,"296":1,"297":4,"300":1,"301":1,"305":4,"306":3}}],["listdir",{"2":{"109":1,"164":2}}],["list",{"0":{"196":1,"256":1},"2":{"39":6,"60":2,"81":1,"82":1,"196":1,"202":1,"254":3,"256":1,"305":1,"307":2,"308":1}}],["life",{"2":{"39":1}}],["lifespan=self",{"2":{"15":1}}],["lifespan",{"0":{"22":2,"23":1,"24":1,"25":1,"26":2,"27":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"124":2},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":2,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2},"2":{"15":3,"22":5,"23":4,"24":4,"25":4,"26":5,"27":4,"31":1,"34":2,"37":2,"39":6,"40":4,"41":4,"42":4,"43":4,"44":4,"45":4,"46":4,"124":4}}],["linux系统要支持python3",{"2":{"11":1}}],["linux",{"2":{"9":1,"17":1}}],["写在外层的配置项将会被覆盖",{"2":{"1":1}}],["switch",{"2":{"305":2,"306":1}}],["simple",{"2":{"296":1}}],["signature",{"2":{"271":2}}],["src目录下为应用程序部分",{"2":{"285":1}}],["src",{"2":{"193":1,"285":1,"297":5}}],["sparkles",{"2":{"286":2}}],["specified",{"2":{"163":1}}],["split",{"2":{"163":4}}],["scope",{"0":{"248":1},"2":{"244":4,"245":4}}],["scene",{"0":{"227":1,"232":1,"249":2},"1":{"228":1,"229":1,"230":1,"231":1,"232":1},"2":{"244":1,"245":1}}],["scenetype",{"0":{"214":1,"229":1},"1":{"215":1,"216":1,"217":1,"218":1,"219":1,"220":1},"2":{"244":7,"245":6}}],["schedule",{"2":{"150":1}}],["scripts",{"2":{"9":1}}],["shinjuku",{"2":{"311":1}}],["shellstatistic",{"2":{"313":1}}],["shellbind",{"2":{"311":1}}],["shellweather",{"2":{"311":1}}],["shellmain",{"2":{"302":1}}],["shellvar",{"2":{"290":1}}],["shellcmd",{"2":{"289":1}}],["shell",{"2":{"289":1,"291":1}}],["shall",{"2":{"213":2}}],["shared",{"0":{"97":1},"2":{"84":3,"98":1,"99":3,"100":3,"101":3,"102":2,"126":1,"281":3}}],["show",{"2":{"159":8}}],["shutdown",{"0":{"24":1,"25":1,"43":1,"44":1,"49":1,"50":1},"2":{"24":2,"25":2,"39":2,"43":2,"44":2,"49":3,"50":3}}],["sync",{"0":{"32":1,"35":1,"54":1,"56":1},"2":{"34":1,"37":1,"55":1,"58":1,"271":1}}],["system",{"0":{"150":1},"2":{"17":4,"150":1,"297":2}}],["sys",{"2":{"17":3,"159":1}}],["so",{"2":{"213":1}}],["software",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"194":1,"200":1,"213":9,"253":1,"257":1}}],["source",{"2":{"9":1}}],["snowykami",{"2":{"31":2,"120":2,"151":2,"157":2,"162":2,"166":2,"167":2,"190":2,"192":2,"194":2,"200":2,"253":2,"257":2}}],["su",{"0":{"265":1},"2":{"190":1,"191":1,"265":1}}],["succeeded",{"2":{"163":1}}],["success",{"2":{"128":1,"159":1,"163":2}}],["supported",{"2":{"109":1}}],["superusers",{"2":{"1":1,"265":1}}],["substantial",{"2":{"213":1}}],["subscribe",{"2":{"90":1}}],["subscriber",{"0":{"81":1,"82":1,"90":1,"91":1},"2":{"90":7,"91":2,"92":1}}],["subject",{"2":{"213":1}}],["sublicense",{"2":{"213":1}}],["subprocess",{"0":{"138":1},"2":{"132":1,"133":1,"138":1}}],["subprocessmanager",{"0":{"131":1},"1":{"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1}}],["sub",{"0":{"82":1},"2":{"28":1,"60":1,"64":1,"84":1,"90":4,"92":1}}],["sleep",{"2":{"17":1,"278":1,"290":1,"291":1}}],["style",{"2":{"286":1,"302":2}}],["stem",{"2":{"270":2}}],["stdout",{"2":{"159":1}}],["store",{"2":{"84":1,"85":1,"86":1,"87":2,"88":1,"189":1}}],["storage",{"0":{"80":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},"2":{"79":2,"281":2}}],["stopped",{"2":{"16":1}}],["stopping",{"2":{"16":1}}],["stop",{"0":{"21":1},"2":{"15":1,"16":1,"21":2}}],["stat",{"2":{"314":1}}],["statistic",{"2":{"314":1}}],["statistics",{"0":{"313":1},"1":{"314":1}}],["staticmethod",{"2":{"39":1,"40":1,"90":1,"91":1}}],["status",{"2":{"305":1,"306":1}}],["starmap",{"2":{"275":1}}],["startup",{"2":{"278":2}}],["starting",{"2":{"125":1,"135":1}}],["startswith",{"2":{"116":1,"190":1,"191":1}}],["start保证alconna解析正常",{"2":{"1":1}}],["start",{"0":{"22":1,"23":1,"41":1,"42":1,"47":1,"48":1,"92":1,"125":1,"134":1,"135":1},"2":{"1":1,"16":1,"17":2,"22":2,"23":2,"39":2,"41":2,"42":2,"47":3,"48":3,"92":2,"125":2,"134":2,"135":2,"269":1,"278":1}}],["strip",{"2":{"191":2}}],["str=",{"2":{"116":1}}],["structure",{"2":{"61":1}}],["str",{"0":{"18":1,"29":1,"30":2,"60":1,"69":1,"70":1,"71":1,"72":1,"73":2,"74":2,"75":2,"78":2,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"99":2,"100":2,"101":2,"102":2,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":1,"113":1,"114":1,"115":1,"116":1,"118":1,"122":2,"126":1,"128":1,"130":1,"133":1,"134":1,"136":1,"138":1,"150":1,"152":1,"158":2,"161":1,"163":1,"164":1,"165":2,"175":1,"176":1,"177":1,"179":1,"180":1,"181":1,"185":1,"187":1,"196":9,"197":2,"207":1,"208":1,"210":1,"212":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"230":1,"231":1,"234":1,"236":1,"239":1,"246":1,"247":1,"248":1,"256":1,"270":1},"2":{"15":1,"18":2,"29":2,"30":3,"35":1,"36":1,"60":2,"68":2,"69":2,"70":2,"71":2,"72":3,"73":2,"74":2,"75":2,"78":2,"81":1,"82":1,"84":5,"85":1,"86":1,"87":1,"88":3,"89":1,"90":1,"91":1,"99":2,"100":2,"101":2,"102":2,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":1,"113":1,"114":1,"115":1,"118":1,"122":2,"124":2,"126":1,"128":1,"130":1,"132":1,"133":1,"134":1,"136":1,"138":1,"150":1,"152":1,"158":2,"161":2,"163":1,"164":1,"165":3,"196":9,"197":2,"256":1,"265":1,"270":2,"278":1}}],["search",{"2":{"307":1,"308":1}}],["segment",{"0":{"207":1}}],["segments",{"0":{"205":1},"1":{"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1}}],["sell",{"2":{"213":1}}],["select",{"2":{"199":1}}],["self",{"0":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"39":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,"60":1,"61":1,"62":1,"63":1,"64":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"92":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"145":1,"146":1,"147":1,"148":1,"149":1,"183":1,"196":1,"197":1,"202":1,"203":1,"204":1,"244":1,"245":1,"246":1,"260":1,"261":1,"262":1,"263":1},"2":{"15":13,"16":4,"17":4,"18":2,"19":2,"20":1,"21":3,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"39":8,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":3,"48":3,"49":3,"50":3,"51":3,"52":3,"60":14,"61":6,"62":3,"63":2,"64":3,"78":3,"84":7,"85":3,"86":3,"87":4,"88":3,"89":2,"90":1,"92":4,"112":2,"113":3,"114":3,"115":3,"116":3,"117":3,"118":2,"122":6,"124":4,"125":2,"126":2,"127":2,"128":3,"129":3,"130":3,"132":2,"133":2,"134":3,"135":2,"136":3,"137":2,"138":2,"145":1,"146":2,"147":2,"148":2,"149":2,"183":2,"196":10,"197":3,"202":5,"203":2,"204":3,"244":7,"245":8,"260":2,"261":2,"262":2,"263":3}}],["session",{"0":{"194":1,"196":2,"198":1,"200":1,"205":1,"213":1,"243":1,"244":1,"253":1,"257":1},"1":{"195":1,"196":1,"197":1,"199":1,"201":1,"202":1,"203":1,"204":1,"206":1,"207":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,"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":2,"245":2,"246":2,"247":2,"248":2,"249":2,"250":2,"251":2,"252":2,"254":1,"255":1,"256":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1},"2":{"196":6,"197":5,"244":1}}],["service",{"0":{"170":2},"2":{"165":1,"294":1,"296":1}}],["server",{"2":{"11":1}}],["sequence",{"0":{"40":1},"2":{"40":2}}],["send",{"0":{"61":1},"2":{"18":2,"60":2,"61":4,"69":1,"71":1,"72":1,"74":1,"75":1,"85":1,"86":1,"87":1,"88":1,"89":1,"92":1,"99":1,"102":1,"197":1,"278":3,"305":1}}],["set",{"0":{"69":1,"70":1,"73":1,"85":1,"100":1,"164":1},"2":{"15":1,"21":1,"69":2,"70":2,"72":1,"73":3,"85":2,"99":1,"100":3,"164":2,"268":1,"281":1,"305":2,"306":1,"309":2}}],["safe",{"2":{"2":1,"105":1,"113":1}}],["num为每页显示数量",{"2":{"307":2}}],["num",{"2":{"307":2}}],["npm",{"2":{"307":7,"308":1}}],["nliteyuki",{"2":{"289":1}}],["nick",{"0":{"224":1}}],["nickname",{"0":{"239":1},"2":{"1":1}}],["name>",{"2":{"290":2}}],["name=module",{"2":{"163":3}}],["name=f",{"2":{"126":2}}],["name=",{"2":{"65":1,"66":1,"84":3,"296":1}}],["name",{"0":{"18":1,"60":1,"69":1,"71":1,"78":1,"126":1,"128":1,"130":1,"133":1,"134":1,"136":1,"138":1,"165":2,"175":1,"185":1,"187":1,"223":1,"230":1,"236":1,"270":1},"2":{"18":6,"60":9,"69":7,"70":2,"71":5,"73":3,"74":3,"78":3,"125":3,"126":5,"127":1,"128":6,"129":2,"130":5,"133":4,"134":5,"135":2,"136":5,"137":2,"138":3,"163":20,"164":9,"165":6,"183":1,"270":1,"278":2,"305":4,"307":8}}],["new",{"2":{"15":1,"104":3,"268":1}}],["normal>",{"2":{"159":1}}],["noninfringement",{"2":{"213":1}}],["nonlocal",{"2":{"143":1}}],["nonedog",{"2":{"296":1}}],["none",{"0":{"15":1,"18":1,"29":1,"30":1,"39":1,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"60":1,"64":1,"85":1,"86":1,"87":1,"89":1,"95":1,"118":1,"126":1,"138":1,"150":1,"188":1,"196":2,"204":1,"223":2,"224":2,"225":2,"226":2,"230":2,"231":2,"232":2,"235":2,"236":2,"239":2,"240":2,"241":2,"242":2,"251":2,"252":2},"2":{"15":1,"18":2,"28":1,"29":1,"30":1,"39":1,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"60":3,"61":1,"63":1,"64":2,"85":1,"87":1,"89":1,"94":2,"105":1,"106":1,"107":1,"126":1,"138":2,"141":1,"143":1,"150":1,"163":4,"164":1,"196":1,"204":1,"258":2,"263":1,"267":1}}],["nonebot插件目录",{"2":{"285":1}}],["nonebot",{"2":{"2":1,"266":1,"274":6,"278":3,"285":1,"296":1,"297":4,"300":1}}],["nonebot下配置已迁移至nonebot键下",{"2":{"1":1}}],["nonebot机器人的配置",{"2":{"1":1}}],["no",{"0":{"108":1,"109":1,"110":1,"175":1,"185":1,"186":1,"187":1,"208":1,"210":1,"212":1,"222":1,"228":1,"229":1,"234":1,"238":1,"246":1,"247":1,"248":1,"249":1,"250":1},"2":{"67":1,"68":1,"108":3,"109":3,"110":4,"213":1}}],["notice",{"2":{"213":2}}],["notimplementederror",{"2":{"145":1}}],["not",{"2":{"18":1,"28":1,"60":1,"61":2,"64":4,"69":1,"87":1,"90":3,"92":1,"105":1,"106":1,"107":1,"108":3,"109":3,"128":2,"130":2,"134":2,"136":2,"150":2,"163":1,"164":8,"204":1,"213":1,"297":2}}],["nohup",{"2":{"17":2,"290":1,"291":1}}],["node等进程",{"2":{"11":1}}],["noverify=0",{"2":{"7":1}}],["若不存在则返回空",{"2":{"305":1}}],["若不存在则创建于config",{"2":{"305":1}}],["若存在则返回",{"2":{"305":1}}],["若存在则覆盖",{"2":{"305":1}}],["若存在则会覆盖",{"2":{"305":1}}],["若要戳20s后停止",{"2":{"291":1}}],["若要接收外部请求请填写0",{"2":{"1":1}}],["若函数中启动了其他task",{"2":{"290":1}}],["若有面向普通用户部分",{"2":{"286":1}}],["若有子进程订阅则推送给子进程",{"2":{"92":1}}],["若为空",{"2":{"60":1}}],["若你不希望提供这些信息",{"2":{"303":1}}],["若你不能访问github",{"2":{"9":1}}],["若你修改了端口号请将20216",{"2":{"10":1}}],["若没有metadata",{"2":{"302":1}}],["若没有",{"2":{"1":1}}],["03",{"2":{"278":2}}],["0000",{"2":{"278":3}}],["00",{"2":{"278":18}}],["02",{"2":{"167":1,"192":1}}],["04",{"2":{"151":1}}],["04+",{"2":{"11":1}}],["0",{"0":{"17":1,"215":1,"255":1,"256":1},"2":{"1":5,"3":4,"15":1,"17":2,"39":1,"72":1,"73":2,"74":2,"75":1,"92":1,"98":2,"99":2,"100":2,"101":2,"102":1,"202":1,"291":1,"296":2,"302":2}}],["14s",{"2":{"313":2}}],["1h",{"2":{"313":2}}],["1d",{"2":{"313":2}}],["19",{"2":{"194":1,"200":1,"253":1,"257":1}}],["1919810",{"2":{"1":1}}],["1145141919810",{"2":{"305":1}}],["11",{"2":{"192":1}}],["18",{"2":{"151":1}}],["12",{"2":{"120":1,"157":1}}],["127",{"2":{"1":1,"3":1}}],["10",{"2":{"156":1,"305":1}}],["10+",{"2":{"9":1,"11":1}}],["10版本后",{"2":{"1":1}}],["1",{"0":{"216":1},"2":{"1":1,"2":1,"3":2,"17":2,"18":2,"64":1,"73":2,"74":2,"75":1,"92":2,"99":3,"100":2,"101":1,"102":1,"104":1,"144":1,"145":1,"163":4,"270":2,"296":1,"302":2}}],["请注意",{"2":{"301":1}}],["请确保您所编写的html代码能被bot解析",{"2":{"301":1}}],["请确保用户文档是通俗易懂的",{"2":{"286":1}}],["请确保文档内的链接是正确的",{"2":{"286":1}}],["请确保文档是完善的",{"2":{"286":1}}],["请确保注释风格为google",{"2":{"286":1}}],["请确保代码的类型提示是正确的",{"2":{"286":1}}],["请确保代码是可运行的",{"2":{"286":1}}],["请确保你了解markdown语法和基本前端知识",{"2":{"283":1}}],["请遵循以下规范",{"2":{"286":1}}],["请阅读插件主页的说明",{"2":{"308":1}}],["请阅读插件开发文档和api",{"2":{"283":1}}],["请阅读以下内容",{"2":{"283":1}}],["请不要将需要动态加载的内容写入配置文件",{"2":{"103":1}}],["请联系插件作者或在安全模式safe",{"2":{"6":1}}],["请先查阅插件文档",{"2":{"6":1}}],["请正确安装git",{"2":{"6":1}}],["请使用path",{"2":{"11":1}}],["请使用",{"2":{"6":1}}],["请在此填写相同的值",{"2":{"3":1}}],["请开启alconna",{"2":{"1":1}}],["请尽快迁移",{"2":{"1":1}}],["空命令头",{"2":{"1":1}}],["指令前缀",{"2":{"1":1}}],["31",{"2":{"190":1}}],["3",{"0":{"218":1},"2":{"1":1,"156":1,"164":1,"278":1}}],["6",{"2":{"1":1,"156":1}}],["轻雪天气liteyuki",{"0":{"311":1},"1":{"312":1}}],["轻雪文档",{"2":{"306":1}}],["轻雪命令liteyuki",{"0":{"305":1},"1":{"306":1}}],["轻雪会收集以下内容",{"2":{"303":1}}],["轻雪会自动合并这些配置文件",{"2":{"0":1}}],["轻雪原版资源包请查看liteyukibot",{"2":{"301":1}}],["轻雪主进程不涉及聊天部分",{"2":{"297":1}}],["轻雪函数",{"0":{"288":1},"1":{"289":1,"290":1,"291":1,"292":1,"293":1},"2":{"288":1}}],["轻雪框架提供了一个内存共享通信的接口",{"2":{"280":1}}],["轻雪运行在主进程",{"2":{"277":1}}],["轻雪api文档生成器",{"2":{"275":1}}],["轻雪官方星图",{"2":{"275":1}}],["轻雪官方机器人",{"2":{"273":1}}],["轻雪机器人统计接口",{"2":{"275":1}}],["轻雪机器人",{"2":{"274":1}}],["轻雪",{"2":{"273":1}}],["轻雪抽象消息事件",{"2":{"196":1}}],["轻雪生命周期管理",{"2":{"39":1}}],["轻雪实例",{"2":{"28":1}}],["轻雪的更新功能依赖git",{"2":{"11":1}}],["轻雪使用git进行版本管理",{"2":{"9":1}}],["轻雪不局限于onebot适配器",{"2":{"4":1}}],["轻雪调试",{"2":{"2":1}}],["轻雪插件是轻雪内置的一部分功能",{"2":{"294":1}}],["轻雪插件目录",{"2":{"285":1}}],["轻雪插件目录列表",{"2":{"1":1}}],["轻雪插件列表",{"2":{"1":1}}],["轻雪支持yaml",{"2":{"0":1}}],["y",{"2":{"165":1}}],["your",{"2":{"163":2}}],["yellow>",{"2":{"159":1}}],["y>",{"2":{"16":2}}],["y>liteyuki",{"2":{"16":2}}],["yamlweather",{"2":{"311":1}}],["yamlname",{"2":{"302":1}}],["yamlnonebot",{"2":{"1":1}}],["yaml",{"0":{"105":1,"113":1},"2":{"0":1,"2":1,"105":4,"108":2,"110":1,"113":2}}],["yml格式的所有合法内容",{"2":{"305":1}}],["yml文件",{"2":{"302":1}}],["yml中填写一些信息",{"2":{"302":1}}],["yml中设置dev",{"2":{"284":1}}],["yml",{"2":{"0":1,"108":1,"110":1,"302":2,"305":1}}],["yml和config目录",{"2":{"0":1}}],["你在a包中定义了一个index",{"2":{"302":1}}],["你自己制作的资源包也应该遵循这个规则",{"2":{"302":1}}],["你也可以自己制作资源包",{"2":{"301":1}}],["你的插件代码",{"2":{"296":1}}],["你的贡献将会使轻雪变得更好",{"2":{"287":1}}],["你应该使用其他储存方式",{"2":{"103":1}}],["你将无法使用更新功能",{"2":{"11":1}}],["你可以选择开启auto",{"2":{"303":1}}],["你可以自由使用",{"2":{"303":1}}],["你可以自定义一些信息",{"2":{"302":1}}],["你可以在多个线程中读写共享内存",{"2":{"280":1}}],["你可以通过storage模块实现内存共享通信",{"2":{"280":1}}],["你可以使用nonebot2支持的任何适配器或使用轻雪讯息传递插件",{"2":{"4":1}}],["你可在config目录下创建多个配置文件",{"2":{"0":1}}],["你可修改配置项后重启轻雪",{"2":{"0":1}}],["你只需要修改superusers及nickname字段即可",{"2":{"0":1}}],["绝大多数情况下",{"2":{"0":1}}],["取决于你个人的喜好",{"2":{"0":1}}],["配置项",{"2":{"311":1}}],["配置项目",{"2":{"104":1}}],["配置了命令别名的命令可以使用别名代替原命令",{"2":{"304":1}}],["配置文件尽量扁平化",{"2":{"103":1}}],["配置值",{"2":{"29":1,"30":1}}],["配置键",{"2":{"29":1,"30":1}}],["配置",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1},"2":{"15":2,"159":1,"306":1}}]],"serializationVersion":2}`;export{e as default}; diff --git a/assets/chunks/@localSearchIndexroot.B9S8YLcg.js b/assets/chunks/@localSearchIndexroot.B9S8YLcg.js new file mode 100644 index 00000000..980eb65a --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.B9S8YLcg.js @@ -0,0 +1 @@ +const e=`{"documentCount":315,"nextId":315,"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/install.html#安装","6":"/deploy/install.html#常规部署","7":"/deploy/install.html#使用docker构建","8":"/deploy/install.html#装置要求","9":"/deploy/install.html#其他问题请移步至答疑","10":"/deploy/fandq.html#答疑","11":"/deploy/fandq.html#常见问题","12":"/deploy/fandq.html#其他问题","13":"/dev/api/bot/#模块-liteyuki-bot","14":"/dev/api/bot/#class-liteyukibot","15":"/dev/api/bot/#func-init-self-kwargs-none","16":"/dev/api/bot/#func-run-self","17":"/dev/api/bot/#func-restart-self-delay-int-0","18":"/dev/api/bot/#func-restart-process-self-name-optional-str-none","19":"/dev/api/bot/#func-init-self-args-kwargs","20":"/dev/api/bot/#func-init-logger-self","21":"/dev/api/bot/#func-stop-self","22":"/dev/api/bot/#func-on-before-start-self-func-lifespan-func-lifespan-func","23":"/dev/api/bot/#func-on-after-start-self-func-lifespan-func","24":"/dev/api/bot/#func-on-after-shutdown-self-func-lifespan-func","25":"/dev/api/bot/#func-on-before-process-shutdown-self-func-process-lifespan-func","26":"/dev/api/bot/#func-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","27":"/dev/api/bot/#func-on-after-restart-self-func-lifespan-func","28":"/dev/api/bot/#func-get-bot-liteyukibot","29":"/dev/api/bot/#func-get-config-key-str-default-any-none-any","30":"/dev/api/bot/#func-get-config-with-compat-key-str-compat-keys-tuple-str-default-any-none-any","31":"/dev/api/bot/lifespan.html#模块-liteyuki-bot-lifespan","32":"/dev/api/bot/lifespan.html#var-sync-lifespan-func","33":"/dev/api/bot/lifespan.html#var-async-lifespan-func","34":"/dev/api/bot/lifespan.html#var-lifespan-func","35":"/dev/api/bot/lifespan.html#var-sync-process-lifespan-func","36":"/dev/api/bot/lifespan.html#var-async-process-lifespan-func","37":"/dev/api/bot/lifespan.html#var-process-lifespan-func","38":"/dev/api/bot/lifespan.html#class-lifespan","39":"/dev/api/bot/lifespan.html#func-init-self-none","40":"/dev/api/bot/lifespan.html#async-func-run-funcs-funcs-sequence-lifespan-func-process-lifespan-func-args-kwargs-none","41":"/dev/api/bot/lifespan.html#func-on-before-start-self-func-lifespan-func-lifespan-func","42":"/dev/api/bot/lifespan.html#func-on-after-start-self-func-lifespan-func-lifespan-func","43":"/dev/api/bot/lifespan.html#func-on-before-process-shutdown-self-func-process-lifespan-func-process-lifespan-func","44":"/dev/api/bot/lifespan.html#func-on-after-shutdown-self-func-lifespan-func-lifespan-func","45":"/dev/api/bot/lifespan.html#func-on-before-process-restart-self-func-process-lifespan-func-process-lifespan-func","46":"/dev/api/bot/lifespan.html#func-on-after-restart-self-func-lifespan-func-lifespan-func","47":"/dev/api/bot/lifespan.html#async-func-before-start-self-none","48":"/dev/api/bot/lifespan.html#async-func-after-start-self-none","49":"/dev/api/bot/lifespan.html#async-func-before-process-shutdown-self-args-kwargs-none","50":"/dev/api/bot/lifespan.html#async-func-after-shutdown-self-none","51":"/dev/api/bot/lifespan.html#async-func-before-process-restart-self-args-kwargs-none","52":"/dev/api/bot/lifespan.html#async-func-after-restart-self-none","53":"/dev/api/comm/channel.html#模块-liteyuki-comm-channel","54":"/dev/api/comm/channel.html#var-sync-on-receive-func","55":"/dev/api/comm/channel.html#var-on-receive-func","56":"/dev/api/comm/channel.html#var-sync-filter-func","57":"/dev/api/comm/channel.html#var-async-filter-func","58":"/dev/api/comm/channel.html#var-filter-func","59":"/dev/api/comm/channel.html#class-channel-generic-t","60":"/dev/api/comm/channel.html#func-init-self-name-str-type-check-optional-bool-none","61":"/dev/api/comm/channel.html#func-send-self-data-t","62":"/dev/api/comm/channel.html#func-receive-self-t","63":"/dev/api/comm/channel.html#async-func-async-receive-self-t","64":"/dev/api/comm/channel.html#func-on-receive-self-filter-func-optional-filter-func-none-callable-callable-t-any-callable-t-any","65":"/dev/api/comm/channel.html#var-active-channel","66":"/dev/api/comm/channel.html#var-passive-channel","67":"/dev/api/comm/channel.html#var-channel-deliver-active-channel","68":"/dev/api/comm/channel.html#var-channel-deliver-passive-channel","69":"/dev/api/comm/channel.html#func-set-channel-name-str-channel-channel","70":"/dev/api/comm/channel.html#func-set-channels-channels-dict-str-channel","71":"/dev/api/comm/channel.html#func-get-channel-name-str-channel","72":"/dev/api/comm/channel.html#func-get-channels-dict-str-channel","73":"/dev/api/comm/channel.html#func-on-set-channel-data-tuple-str-dict-str-any","74":"/dev/api/comm/channel.html#func-on-get-channel-data-tuple-str-dict-str-any","75":"/dev/api/comm/channel.html#func-on-get-channels-data-tuple-str-dict-str-any","76":"/dev/api/comm/event.html#模块-liteyuki-comm-event","77":"/dev/api/comm/event.html#class-event","78":"/dev/api/comm/event.html#func-init-self-name-str-data-dict-str-any","79":"/dev/api/comm/#模块-liteyuki-comm","80":"/dev/api/comm/storage.html#模块-liteyuki-comm-storage","81":"/dev/api/comm/storage.html#var-on-main-subscriber-receive-funcs","82":"/dev/api/comm/storage.html#var-on-sub-subscriber-receive-funcs","83":"/dev/api/comm/storage.html#class-keyvaluestore","84":"/dev/api/comm/storage.html#func-init-self","85":"/dev/api/comm/storage.html#func-set-self-key-str-value-any-none","86":"/dev/api/comm/storage.html#func-get-self-key-str-default-optional-any-none-optional-any","87":"/dev/api/comm/storage.html#func-delete-self-key-str-ignore-key-error-bool-true-none","88":"/dev/api/comm/storage.html#func-get-all-self-dict-str-any","89":"/dev/api/comm/storage.html#func-publish-self-channel-str-data-any-none","90":"/dev/api/comm/storage.html#func-on-subscriber-receive-self-channel-str-callable-on-receive-func-on-receive-func","91":"/dev/api/comm/storage.html#async-func-run-subscriber-receive-funcs-channel-str-data-any","92":"/dev/api/comm/storage.html#async-func-start-receive-loop-self","93":"/dev/api/comm/storage.html#class-globalkeyvaluestore","94":"/dev/api/comm/storage.html#func-get-instance-cls","95":"/dev/api/comm/storage.html#attr-instance-none","96":"/dev/api/comm/storage.html#attr-lock-threading-lock","97":"/dev/api/comm/storage.html#var-shared-memory","98":"/dev/api/comm/storage.html#var-ref-count","99":"/dev/api/comm/storage.html#func-on-get-data-tuple-str-dict-str-any","100":"/dev/api/comm/storage.html#func-on-set-data-tuple-str-dict-str-any","101":"/dev/api/comm/storage.html#func-on-delete-data-tuple-str-dict-str-any","102":"/dev/api/comm/storage.html#func-on-get-all-data-tuple-str-dict-str-any","103":"/dev/api/config.html#模块-liteyuki-config","104":"/dev/api/config.html#func-flat-config-config-dict-str-any-dict-str-any","105":"/dev/api/config.html#func-load-from-yaml-file-str-dict-str-any","106":"/dev/api/config.html#func-load-from-json-file-str-dict-str-any","107":"/dev/api/config.html#func-load-from-toml-file-str-dict-str-any","108":"/dev/api/config.html#func-load-from-files-files-str-no-warning-bool-false-dict-str-any","109":"/dev/api/config.html#func-load-configs-from-dirs-directories-str-no-waring-bool-false-dict-str-any","110":"/dev/api/config.html#func-load-config-in-default-no-waring-bool-false-dict-str-any","111":"/dev/api/config.html#class-loader","112":"/dev/api/config.html#func-init-self","113":"/dev/api/config.html#func-load-from-yaml-self-fp-str-loader","114":"/dev/api/config.html#func-load-from-toml-self-fp-str-loader","115":"/dev/api/config.html#func-load-from-json-self-fp-str-loader","116":"/dev/api/config.html#func-load-from-env-self-prefix-str-loader","117":"/dev/api/config.html#func-merge-self-loader-loader-loader","118":"/dev/api/config.html#func-get-self-key-str-default-any-none-any","119":"/dev/api/core/#模块-liteyuki-core","120":"/dev/api/core/manager.html#模块-liteyuki-core-manager","121":"/dev/api/core/manager.html#class-channeldeliver","122":"/dev/api/core/manager.html#func-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","123":"/dev/api/core/manager.html#class-processmanager","124":"/dev/api/core/manager.html#func-init-self-lifespan-lifespan","125":"/dev/api/core/manager.html#func-start-all-self","126":"/dev/api/core/manager.html#func-add-target-self-name-str-target-target-func-args-tuple-kwargs-none","127":"/dev/api/core/manager.html#func-join-all-self","128":"/dev/api/core/manager.html#func-terminate-self-name-str","129":"/dev/api/core/manager.html#func-terminate-all-self","130":"/dev/api/core/manager.html#func-is-process-alive-self-name-str-bool","131":"/dev/api/core/manager.html#class-subprocessmanager","132":"/dev/api/core/manager.html#func-init-self","133":"/dev/api/core/manager.html#func-add-self-name-str-func-processfunctype-args-kwargs","134":"/dev/api/core/manager.html#func-start-self-name-str","135":"/dev/api/core/manager.html#func-start-all-self-1","136":"/dev/api/core/manager.html#func-terminate-self-name-str-1","137":"/dev/api/core/manager.html#func-terminate-all-self-1","138":"/dev/api/core/manager.html#func-get-process-self-name-str-subprocess-none","139":"/dev/api/dev/#模块-liteyuki-dev","140":"/dev/api/dev/observer.html#模块-liteyuki-dev-observer","141":"/dev/api/dev/observer.html#var-callback-func","142":"/dev/api/dev/observer.html#var-filter-func","143":"/dev/api/dev/observer.html#func-debounce-wait","144":"/dev/api/dev/observer.html#class-codemodifiedhandler-filesystemeventhandler","145":"/dev/api/dev/observer.html#func-on-modified-self-event","146":"/dev/api/dev/observer.html#func-on-created-self-event","147":"/dev/api/dev/observer.html#func-on-deleted-self-event","148":"/dev/api/dev/observer.html#func-on-moved-self-event","149":"/dev/api/dev/observer.html#func-on-any-event-self-event","150":"/dev/api/dev/observer.html#func-on-file-system-event-directories-tuple-str-recursive-bool-true-event-filter-filter-func-none-callable-callback-func-callback-func","151":"/dev/api/dev/plugin.html#模块-liteyuki-dev-plugin","152":"/dev/api/dev/plugin.html#func-run-plugins-module-path-str-path","153":"/dev/api/exception.html#模块-liteyuki-exception","154":"/dev/api/exception.html#class-liteyukiexception-baseexception","155":"/dev/api/#模块-liteyuki","156":"/dev/api/#var-version","157":"/dev/api/log.html#模块-liteyuki-log","158":"/dev/api/log.html#func-get-format-level-str-str","159":"/dev/api/log.html#func-init-log-config-dict","160":"/dev/api/plugin/#模块-liteyuki-plugin","161":"/dev/api/plugin/#func-get-loaded-plugins-dict-str-plugin","162":"/dev/api/plugin/load.html#模块-liteyuki-plugin-load","163":"/dev/api/plugin/load.html#func-load-plugin-module-path-str-path-optional-plugin","164":"/dev/api/plugin/load.html#func-load-plugins-plugin-dir-str-ignore-warning-bool-true-set-plugin","165":"/dev/api/plugin/load.html#func-format-display-name-display-name-str-plugin-type-plugintype-str","166":"/dev/api/plugin/manager.html#模块-liteyuki-plugin-manager","167":"/dev/api/plugin/model.html#模块-liteyuki-plugin-model","168":"/dev/api/plugin/model.html#class-plugintype-enum","169":"/dev/api/plugin/model.html#attr-application-application","170":"/dev/api/plugin/model.html#attr-service-service","171":"/dev/api/plugin/model.html#attr-module-module","172":"/dev/api/plugin/model.html#attr-unclassified-unclassified","173":"/dev/api/plugin/model.html#attr-test-test","174":"/dev/api/plugin/model.html#class-pluginmetadata-basemodel","175":"/dev/api/plugin/model.html#attr-name-str-no-default","176":"/dev/api/plugin/model.html#attr-description-str","177":"/dev/api/plugin/model.html#attr-usage-str","178":"/dev/api/plugin/model.html#attr-type-plugintype-plugintype-unclassified","179":"/dev/api/plugin/model.html#attr-author-str","180":"/dev/api/plugin/model.html#attr-homepage-str","181":"/dev/api/plugin/model.html#attr-extra-dict-str-any","182":"/dev/api/plugin/model.html#class-plugin-basemodel","183":"/dev/api/plugin/model.html#func-hash-self","184":"/dev/api/plugin/model.html#attr-model-config-arbitrary-types-allowed-true","185":"/dev/api/plugin/model.html#attr-name-str-no-default-1","186":"/dev/api/plugin/model.html#attr-module-moduletype-no-default","187":"/dev/api/plugin/model.html#attr-module-name-str-no-default","188":"/dev/api/plugin/model.html#attr-metadata-optional-pluginmetadata-none","189":"/dev/api/plugins/#模块-liteyuki-plugins","190":"/dev/api/plugins/liteecho.html#模块-liteyuki-plugins-liteecho","191":"/dev/api/plugins/liteecho.html#async-func-liteecho-event-messageevent","192":"/dev/api/session/event.html#模块-liteyuki-session-event","193":"/dev/api/session/event.html#class-messageevent","194":"/dev/api/session/event.html#func-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","195":"/dev/api/session/event.html#func-reply-self-message-str-dict-str-any","196":"/dev/api/plugins/plugin_loader/#模块-liteyuki-plugins-plugin-loader","197":"/dev/api/plugins/plugin_loader/#func-default-plugins-loader","198":"/dev/api/session/#模块-liteyuki-session","199":"/dev/api/session/#func-message-handler-thread-i-chans-iterable-chan-any","200":"/dev/api/session/matcher.html#模块-liteyuki-session-matcher","201":"/dev/api/session/matcher.html#class-matcher","202":"/dev/api/session/matcher.html#func-init-self-rule-rule-priority-int-block-bool","203":"/dev/api/session/matcher.html#func-handle-self-callable-eventhandler-eventhandler","204":"/dev/api/session/matcher.html#async-func-run-self-event-messageevent-none","205":"/dev/api/session/message/segments.html#模块-liteyuki-session-message-segments","206":"/dev/api/session/message/segments.html#class-baseseg-basemodel","207":"/dev/api/session/message/segments.html#attr-type-str-segment","208":"/dev/api/session/message/segments.html#attr-data-dict-str-any-no-default","209":"/dev/api/session/message/segments.html#class-text-baseseg","210":"/dev/api/session/message/segments.html#attr-content-str-no-default","211":"/dev/api/session/message/segments.html#class-image-baseseg","212":"/dev/api/session/message/segments.html#attr-url-str-no-default","213":"/dev/api/session/models.html#模块-liteyuki-session-models","214":"/dev/api/session/models.html#class-scenetype-int-enum","215":"/dev/api/session/models.html#attr-private-0","216":"/dev/api/session/models.html#attr-group-1","217":"/dev/api/session/models.html#attr-guild-2","218":"/dev/api/session/models.html#attr-channel-text-3","219":"/dev/api/session/models.html#attr-channel-category-4","220":"/dev/api/session/models.html#attr-channel-voice-5","221":"/dev/api/session/models.html#class-user-basemodel","222":"/dev/api/session/models.html#attr-id-str-no-default","223":"/dev/api/session/models.html#attr-name-str-none-none","224":"/dev/api/session/models.html#attr-nick-str-none-none","225":"/dev/api/session/models.html#attr-avatar-str-none-none","226":"/dev/api/session/models.html#attr-gender-str-none-none","227":"/dev/api/session/models.html#class-scene-basemodel","228":"/dev/api/session/models.html#attr-id-str-no-default-1","229":"/dev/api/session/models.html#attr-type-scenetype-no-default","230":"/dev/api/session/models.html#attr-name-str-none-none-1","231":"/dev/api/session/models.html#attr-avatar-str-none-none-1","232":"/dev/api/session/models.html#attr-parent-scene-none-none","233":"/dev/api/session/models.html#class-role-basemodel","234":"/dev/api/session/models.html#attr-id-str-no-default-2","235":"/dev/api/session/models.html#attr-level-int-none-none","236":"/dev/api/session/models.html#attr-name-str-none-none-2","237":"/dev/api/session/models.html#class-member-basemodel","238":"/dev/api/session/models.html#attr-user-user-no-default","239":"/dev/api/session/models.html#attr-nickname-str-none-none","240":"/dev/api/session/models.html#attr-role-role-none-none","241":"/dev/api/session/models.html#attr-mute-bool-none-none","242":"/dev/api/session/models.html#attr-joined-at-datetime-none-none","243":"/dev/api/session/models.html#class-session-basemodel","244":"/dev/api/session/models.html#func-session-id-self","245":"/dev/api/session/models.html#func-target-id-self","246":"/dev/api/session/models.html#attr-self-id-str-no-default","247":"/dev/api/session/models.html#attr-adapter-str-no-default","248":"/dev/api/session/models.html#attr-scope-str-no-default","249":"/dev/api/session/models.html#attr-scene-scene-no-default","250":"/dev/api/session/models.html#attr-user-user-no-default-1","251":"/dev/api/session/models.html#attr-member-member-none-none","252":"/dev/api/session/models.html#attr-operator-member-none-none","253":"/dev/api/session/on.html#模块-liteyuki-session-on","254":"/dev/api/session/on.html#func-add-matcher-matcher-matcher","255":"/dev/api/session/on.html#func-on-message-rule-rule-empty-rule-priority-int-0-block-bool-false-matcher","256":"/dev/api/session/on.html#func-on-keywords-keywords-list-str-rule-empty-rule-priority-int-0-block-bool-false-matcher","257":"/dev/api/session/rule.html#模块-liteyuki-session-rule","258":"/dev/api/session/rule.html#var-rulehandlerfunc","259":"/dev/api/session/rule.html#class-rule","260":"/dev/api/session/rule.html#func-init-self-handler-rulehandlerfunc","261":"/dev/api/session/rule.html#func-self-other-rule-rule","262":"/dev/api/session/rule.html#func-self-other-rule-rule-1","263":"/dev/api/session/rule.html#async-func-self-event-messageevent-bool","264":"/dev/api/session/rule.html#async-func-empty-rule-event-messageevent-bool","265":"/dev/api/session/rule.html#async-func-is-su-rule-event-messageevent-bool","266":"/dev/api/utils.html#模块-liteyuki-utils","267":"/dev/api/utils.html#func-is-coroutine-callable-call-callable-any-bool","268":"/dev/api/utils.html#func-run-coroutine-coro-coroutine","269":"/dev/api/utils.html#func-run-coroutine-in-thread-coro-coroutine","270":"/dev/api/utils.html#func-path-to-module-name-path-path-str","271":"/dev/api/utils.html#func-async-wrapper-func-callable-any-callable-coroutine","272":"/dev/best_practices.html#最佳实践","273":"/dev/best_practices.html#机器人应用","274":"/dev/best_practices.html#插件","275":"/dev/best_practices.html#其他","276":"/dev/comm.html#通道通信","277":"/dev/comm.html#简介","278":"/dev/comm.html#示例","279":"/dev/comm.html#共享内存通信","280":"/dev/comm.html#简介-1","281":"/dev/comm.html#示例-1","282":"/dev/guide.html#开发指南","283":"/dev/guide.html#如何开发","284":"/dev/guide.html#建议","285":"/dev/guide.html#项目结构","286":"/dev/guide.html#规范化","287":"/dev/guide.html#最后","288":"/dev/lyfunc.html#轻雪函数","289":"/dev/lyfunc.html#函数文件","290":"/dev/lyfunc.html#命令文档","291":"/dev/lyfunc.html#示例","292":"/dev/lyfunc.html#api","293":"/dev/lyfunc.html#结束关键字","294":"/dev/plugin.html#简介","295":"/dev/plugin.html#开始","296":"/dev/plugin.html#创建插件","297":"/dev/plugin.html#编写逻辑部分","298":"/dev/plugin.html#加载插件","299":"/dev/plugin.html#方法1","300":"/dev/plugin.html#方法2","301":"/dev/resource.html#简介","302":"/dev/resource.html#加载资源包","303":"/usage/agreement.html#用户协议","304":"/usage/basic.html#基础插件","305":"/usage/basic.html#轻雪命令liteyuki-command","306":"/usage/basic.html#命令别名","307":"/usage/basic.html#插件-包管理器-liteyuki-pacman","308":"/usage/basic.html#命令别名-1","309":"/usage/basic.html#用户管理liteyuki-user","310":"/usage/extra.html#功能插件命令","311":"/usage/extra.html#轻雪天气liteyuki-weather","312":"/usage/extra.html#命令别名","313":"/usage/extra.html#统计信息liteyuki-statistics","314":"/usage/extra.html#命令别名-1"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,16],"1":[1,1,55],"2":[1,1,48],"3":[2,1,28],"4":[1,1,3],"5":[1,1,1],"6":[1,1,47],"7":[1,1,18],"8":[1,1,39],"9":[1,2,1],"10":[1,1,1],"11":[1,1,37],"12":[1,1,21],"13":[3,1,1],"14":[2,3,1],"15":[6,5,62],"16":[4,5,28],"17":[8,5,59],"18":[10,5,35],"19":[6,5,15],"20":[5,5,13],"21":[4,5,15],"22":[8,5,20],"23":[8,5,19],"24":[8,5,20],"25":[10,5,22],"26":[10,5,23],"27":[8,5,20],"28":[5,3,34],"29":[10,3,26],"30":[14,3,45],"31":[4,1,24],"32":[4,4,8],"33":[4,4,9],"34":[3,4,11],"35":[5,4,9],"36":[5,4,10],"37":[4,4,12],"38":[2,4,1],"39":[5,6,31],"40":[13,6,38],"41":[8,6,21],"42":[8,6,21],"43":[10,6,23],"44":[8,6,21],"45":[10,6,23],"46":[8,6,21],"47":[7,6,20],"48":[7,6,20],"49":[10,6,23],"50":[7,6,21],"51":[10,6,23],"52":[7,6,21],"53":[4,1,3],"54":[5,4,9],"55":[4,4,12],"56":[4,4,9],"57":[4,4,11],"58":[3,4,11],"59":[5,4,1],"60":[12,9,64],"61":[6,9,44],"62":[5,9,29],"63":[6,9,28],"64":[15,9,64],"65":[3,4,9],"66":[3,4,9],"67":[4,4,11],"68":[4,4,12],"69":[7,4,40],"70":[7,4,19],"71":[7,4,31],"72":[8,4,37],"73":[10,4,25],"74":[10,4,28],"75":[10,4,27],"76":[4,1,2],"77":[2,4,1],"78":[9,6,13],"79":[3,1,8],"80":[4,1,4],"81":[6,4,12],"82":[6,4,12],"83":[2,4,1],"84":[4,6,30],"85":[9,6,31],"86":[12,6,37],"87":[12,6,42],"88":[9,6,30],"89":[9,6,21],"90":[13,6,52],"91":[11,6,29],"92":[7,6,42],"93":[2,4,2],"94":[5,6,18],"95":[4,6,1],"96":[6,6,1],"97":[3,4,9],"98":[3,4,17],"99":[9,4,29],"100":[9,4,27],"101":[9,4,27],"102":[10,4,27],"103":[3,1,14],"104":[8,3,38],"105":[10,3,35],"106":[10,3,34],"107":[10,3,34],"108":[14,3,43],"109":[16,3,49],"110":[15,3,36],"111":[2,3,1],"112":[4,5,9],"113":[9,5,25],"114":[9,5,23],"115":[9,5,23],"116":[10,5,28],"117":[6,5,15],"118":[10,5,17],"119":[3,1,1],"120":[4,1,24],"121":[2,4,1],"122":[14,6,18],"123":[2,4,1],"124":[6,6,17],"125":[5,6,28],"126":[14,6,48],"127":[5,6,13],"128":[6,6,31],"129":[5,6,12],"130":[9,6,27],"131":[2,4,1],"132":[4,6,12],"133":[9,6,23],"134":[6,6,22],"135":[5,6,20],"136":[6,6,22],"137":[5,6,20],"138":[10,6,20],"139":[3,1,2],"140":[4,1,5],"141":[3,4,9],"142":[3,4,9],"143":[4,4,25],"144":[4,4,3],"145":[6,8,17],"146":[6,8,10],"147":[6,8,10],"148":[6,8,10],"149":[6,8,10],"150":[20,4,53],"151":[4,1,24],"152":[9,4,30],"153":[3,1,2],"154":[4,3,1],"155":[2,1,10],"156":[3,2,7],"157":[3,1,24],"158":[6,3,21],"159":[6,3,55],"160":[3,1,1],"161":[9,3,17],"162":[4,1,24],"163":[12,4,75],"164":[15,4,58],"165":[9,4,37],"166":[4,1,24],"167":[4,1,24],"168":[4,4,1],"169":[5,8,1],"170":[5,8,1],"171":[5,8,1],"172":[5,8,1],"173":[5,8,1],"174":[4,4,1],"175":[6,8,1],"176":[5,8,1],"177":[5,8,1],"178":[5,8,1],"179":[5,8,1],"180":[5,8,1],"181":[7,8,1],"182":[4,4,1],"183":[3,8,10],"184":[9,8,1],"185":[6,8,1],"186":[6,8,1],"187":[7,8,1],"188":[6,8,1],"189":[3,1,15],"190":[4,1,30],"191":[6,4,21],"192":[4,1,24],"193":[2,4,1],"194":[24,6,32],"195":[9,6,34],"196":[5,1,24],"197":[5,5,21],"198":[3,1,4],"199":[10,3,27],"200":[4,1,24],"201":[2,4,1],"202":[10,6,25],"203":[7,6,20],"204":[8,6,30],"205":[5,1,1],"206":[4,5,1],"207":[6,9,1],"208":[8,9,1],"209":[4,5,1],"210":[6,9,1],"211":[4,5,1],"212":[6,9,1],"213":[4,1,123],"214":[5,4,1],"215":[4,9,1],"216":[4,9,1],"217":[4,9,1],"218":[5,9,1],"219":[5,9,1],"220":[5,9,1],"221":[4,4,1],"222":[6,8,1],"223":[6,8,1],"224":[6,8,1],"225":[6,8,1],"226":[6,8,1],"227":[4,4,1],"228":[6,8,1],"229":[6,8,1],"230":[6,8,1],"231":[6,8,1],"232":[6,8,1],"233":[4,4,1],"234":[6,8,1],"235":[6,8,1],"236":[6,8,1],"237":[4,4,1],"238":[6,8,1],"239":[6,8,1],"240":[6,8,1],"241":[6,8,1],"242":[7,8,1],"243":[4,4,2],"244":[5,8,31],"245":[5,8,27],"246":[7,8,1],"247":[6,8,1],"248":[6,8,1],"249":[6,8,1],"250":[6,8,1],"251":[6,8,1],"252":[6,8,1],"253":[4,1,24],"254":[5,4,21],"255":[15,4,19],"256":[16,4,30],"257":[4,1,24],"258":[2,4,11],"259":[2,4,1],"260":[6,6,10],"261":[7,6,19],"262":[7,6,19],"263":[8,6,20],"264":[8,4,16],"265":[9,4,21],"266":[3,1,5],"267":[9,3,30],"268":[6,3,42],"269":[8,3,20],"270":[8,3,38],"271":[8,3,25],"272":[1,1,1],"273":[1,1,13],"274":[1,1,10],"275":[1,1,15],"276":[1,1,1],"277":[1,1,10],"278":[1,1,83],"279":[1,1,1],"280":[1,2,9],"281":[1,2,18],"282":[1,1,1],"283":[1,1,18],"284":[1,2,10],"285":[1,1,36],"286":[1,1,55],"287":[1,1,4],"288":[1,1,9],"289":[1,1,25],"290":[1,1,33],"291":[1,2,26],"292":[1,1,7],"293":[1,1,18],"294":[1,1,27],"295":[1,1,1],"296":[1,2,42],"297":[1,2,58],"298":[1,2,1],"299":[1,3,6],"300":[1,3,25],"301":[1,1,31],"302":[1,1,56],"303":[1,1,28],"304":[1,1,16],"305":[2,1,86],"306":[1,3,30],"307":[4,1,53],"308":[1,5,38],"309":[2,1,20],"310":[1,1,1],"311":[2,1,30],"312":[1,3,8],"313":[2,1,35],"314":[1,3,17]},"averageFieldLength":[5.466666666666668,4.447619047619045,17.84444444444445],"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":"使用Docker构建","titles":["安装"]},"8":{"title":"装置要求","titles":["安装"]},"9":{"title":"其他问题请移步至","titles":["安装","装置要求"]},"10":{"title":"答疑","titles":[]},"11":{"title":"常见问题","titles":["答疑"]},"12":{"title":"其他问题","titles":["答疑"]},"13":{"title":"模块 liteyuki.bot","titles":[]},"14":{"title":"class LiteyukiBot","titles":["模块 liteyuki.bot"]},"15":{"title":"func __init__(self, **kwargs) -> None","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"16":{"title":"func run(self)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"17":{"title":"func restart(self, delay: int = 0)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"18":{"title":"func restart_process(self, name: Optional[str] = None)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"19":{"title":"func init(self, *args, **kwargs)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"20":{"title":"func init_logger(self)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"21":{"title":"func stop(self)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"22":{"title":"func on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"23":{"title":"func on_after_start(self, func: LIFESPAN_FUNC)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"24":{"title":"func on_after_shutdown(self, func: LIFESPAN_FUNC)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"25":{"title":"func on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"26":{"title":"func on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"27":{"title":"func on_after_restart(self, func: LIFESPAN_FUNC)","titles":["模块 liteyuki.bot","class LiteyukiBot"]},"28":{"title":"func get_bot() -> LiteyukiBot","titles":["模块 liteyuki.bot"]},"29":{"title":"func get_config(key: str, default: Any = None) -> Any","titles":["模块 liteyuki.bot"]},"30":{"title":"func get_config_with_compat(key: str, compat_keys: tuple[str], default: Any = None) -> Any","titles":["模块 liteyuki.bot"]},"31":{"title":"模块 liteyuki.bot.lifespan","titles":[]},"32":{"title":"var SYNC_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan"]},"33":{"title":"var ASYNC_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan"]},"34":{"title":"var LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan"]},"35":{"title":"var SYNC_PROCESS_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan"]},"36":{"title":"var ASYNC_PROCESS_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan"]},"37":{"title":"var PROCESS_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan"]},"38":{"title":"class Lifespan","titles":["模块 liteyuki.bot.lifespan"]},"39":{"title":"func __init__(self) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"40":{"title":"async func run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"41":{"title":"func on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"42":{"title":"func on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"43":{"title":"func on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"44":{"title":"func on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"45":{"title":"func on_before_process_restart(self, func: PROCESS_LIFESPAN_FUNC) -> PROCESS_LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"46":{"title":"func on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"47":{"title":"async func before_start(self) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"48":{"title":"async func after_start(self) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"49":{"title":"async func before_process_shutdown(self, *args, **kwargs) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"50":{"title":"async func after_shutdown(self) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"51":{"title":"async func before_process_restart(self, *args, **kwargs) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"52":{"title":"async func after_restart(self) -> None","titles":["模块 liteyuki.bot.lifespan","class Lifespan"]},"53":{"title":"模块 liteyuki.comm.channel","titles":[]},"54":{"title":"var SYNC_ON_RECEIVE_FUNC","titles":["模块 liteyuki.comm.channel"]},"55":{"title":"var ON_RECEIVE_FUNC","titles":["模块 liteyuki.comm.channel"]},"56":{"title":"var SYNC_FILTER_FUNC","titles":["模块 liteyuki.comm.channel"]},"57":{"title":"var ASYNC_FILTER_FUNC","titles":["模块 liteyuki.comm.channel"]},"58":{"title":"var FILTER_FUNC","titles":["模块 liteyuki.comm.channel"]},"59":{"title":"class Channel(Generic[T])","titles":["模块 liteyuki.comm.channel"]},"60":{"title":"func __init__(self, name: str, type_check: Optional[bool] = None)","titles":["模块 liteyuki.comm.channel","class Channel(Generic[T])"]},"61":{"title":"func send(self, data: T)","titles":["模块 liteyuki.comm.channel","class Channel(Generic[T])"]},"62":{"title":"func receive(self) -> T","titles":["模块 liteyuki.comm.channel","class Channel(Generic[T])"]},"63":{"title":"async func async_receive(self) -> T","titles":["模块 liteyuki.comm.channel","class Channel(Generic[T])"]},"64":{"title":"func on_receive(self, filter_func: Optional[FILTER_FUNC] = None) -> Callable[[Callable[[T], Any]], Callable[[T], Any]]","titles":["模块 liteyuki.comm.channel","class Channel(Generic[T])"]},"65":{"title":"var active_channel","titles":["模块 liteyuki.comm.channel"]},"66":{"title":"var passive_channel","titles":["模块 liteyuki.comm.channel"]},"67":{"title":"var channel_deliver_active_channel","titles":["模块 liteyuki.comm.channel"]},"68":{"title":"var channel_deliver_passive_channel","titles":["模块 liteyuki.comm.channel"]},"69":{"title":"func set_channel(name: str, channel: Channel)","titles":["模块 liteyuki.comm.channel"]},"70":{"title":"func set_channels(channels: dict[str, Channel])","titles":["模块 liteyuki.comm.channel"]},"71":{"title":"func get_channel(name: str) -> Channel","titles":["模块 liteyuki.comm.channel"]},"72":{"title":"func get_channels() -> dict[str, Channel]","titles":["模块 liteyuki.comm.channel"]},"73":{"title":"func on_set_channel(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.channel"]},"74":{"title":"func on_get_channel(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.channel"]},"75":{"title":"func on_get_channels(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.channel"]},"76":{"title":"模块 liteyuki.comm.event","titles":[]},"77":{"title":"class Event","titles":["模块 liteyuki.comm.event"]},"78":{"title":"func __init__(self, name: str, data: dict[str, Any])","titles":["模块 liteyuki.comm.event","class Event"]},"79":{"title":"模块 liteyuki.comm","titles":[]},"80":{"title":"模块 liteyuki.comm.storage","titles":[]},"81":{"title":"var _on_main_subscriber_receive_funcs","titles":["模块 liteyuki.comm.storage"]},"82":{"title":"var _on_sub_subscriber_receive_funcs","titles":["模块 liteyuki.comm.storage"]},"83":{"title":"class KeyValueStore","titles":["模块 liteyuki.comm.storage"]},"84":{"title":"func __init__(self)","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"85":{"title":"func set(self, key: str, value: Any) -> None","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"86":{"title":"func get(self, key: str, default: Optional[Any] = None) -> Optional[Any]","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"87":{"title":"func delete(self, key: str, ignore_key_error: bool = True) -> None","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"88":{"title":"func get_all(self) -> dict[str, Any]","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"89":{"title":"func publish(self, channel_: str, data: Any) -> None","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"90":{"title":"func on_subscriber_receive(self, channel_: str) -> Callable[[ON_RECEIVE_FUNC], ON_RECEIVE_FUNC]","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"91":{"title":"async func run_subscriber_receive_funcs(channel_: str, data: Any)","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"92":{"title":"async func start_receive_loop(self)","titles":["模块 liteyuki.comm.storage","class KeyValueStore"]},"93":{"title":"class GlobalKeyValueStore","titles":["模块 liteyuki.comm.storage"]},"94":{"title":"func get_instance(cls)","titles":["模块 liteyuki.comm.storage","class GlobalKeyValueStore"]},"95":{"title":"attr _instance = None","titles":["模块 liteyuki.comm.storage","class GlobalKeyValueStore"]},"96":{"title":"attr _lock = threading.Lock()","titles":["模块 liteyuki.comm.storage","class GlobalKeyValueStore"]},"97":{"title":"var shared_memory","titles":["模块 liteyuki.comm.storage"]},"98":{"title":"var _ref_count","titles":["模块 liteyuki.comm.storage"]},"99":{"title":"func on_get(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.storage"]},"100":{"title":"func on_set(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.storage"]},"101":{"title":"func on_delete(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.storage"]},"102":{"title":"func on_get_all(data: tuple[str, dict[str, Any]])","titles":["模块 liteyuki.comm.storage"]},"103":{"title":"模块 liteyuki.config","titles":[]},"104":{"title":"func flat_config(config: dict[str, Any]) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"105":{"title":"func load_from_yaml(file_: str) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"106":{"title":"func load_from_json(file_: str) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"107":{"title":"func load_from_toml(file_: str) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"108":{"title":"func load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"109":{"title":"func load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"110":{"title":"func load_config_in_default(no_waring: bool = False) -> dict[str, Any]","titles":["模块 liteyuki.config"]},"111":{"title":"class Loader","titles":["模块 liteyuki.config"]},"112":{"title":"func __init__(self)","titles":["模块 liteyuki.config","class Loader"]},"113":{"title":"func load_from_yaml(self, fp: str) -> Loader","titles":["模块 liteyuki.config","class Loader"]},"114":{"title":"func load_from_toml(self, fp: str) -> Loader","titles":["模块 liteyuki.config","class Loader"]},"115":{"title":"func load_from_json(self, fp: str) -> Loader","titles":["模块 liteyuki.config","class Loader"]},"116":{"title":"func load_from_env(self, prefix: str = '') -> Loader","titles":["模块 liteyuki.config","class Loader"]},"117":{"title":"func merge(self, loader: Loader) -> Loader","titles":["模块 liteyuki.config","class Loader"]},"118":{"title":"func get(self, key: str, default: Any = None) -> Any","titles":["模块 liteyuki.config","class Loader"]},"119":{"title":"模块 liteyuki.core","titles":[]},"120":{"title":"模块 liteyuki.core.manager","titles":[]},"121":{"title":"class ChannelDeliver","titles":["模块 liteyuki.core.manager"]},"122":{"title":"func __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"]},"123":{"title":"class ProcessManager","titles":["模块 liteyuki.core.manager"]},"124":{"title":"func __init__(self, lifespan: Lifespan)","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"125":{"title":"func start_all(self)","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"126":{"title":"func add_target(self, name: str, target: TARGET_FUNC, args: tuple = (), kwargs = None)","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"127":{"title":"func join_all(self)","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"128":{"title":"func terminate(self, name: str)","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"129":{"title":"func terminate_all(self)","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"130":{"title":"func is_process_alive(self, name: str) -> bool","titles":["模块 liteyuki.core.manager","class ProcessManager"]},"131":{"title":"class _SubProcessManager","titles":["模块 liteyuki.core.manager"]},"132":{"title":"func __init__(self)","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"133":{"title":"func add(self, name: str, func: ProcessFuncType, *args, **kwargs)","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"134":{"title":"func start(self, name: str)","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"135":{"title":"func start_all(self)","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"136":{"title":"func terminate(self, name: str)","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"137":{"title":"func terminate_all(self)","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"138":{"title":"func get_process(self, name: str) -> SubProcess | None","titles":["模块 liteyuki.core.manager","class _SubProcessManager"]},"139":{"title":"模块 liteyuki.dev","titles":[]},"140":{"title":"模块 liteyuki.dev.observer","titles":[]},"141":{"title":"var CALLBACK_FUNC","titles":["模块 liteyuki.dev.observer"]},"142":{"title":"var FILTER_FUNC","titles":["模块 liteyuki.dev.observer"]},"143":{"title":"func debounce(wait)","titles":["模块 liteyuki.dev.observer"]},"144":{"title":"class CodeModifiedHandler(FileSystemEventHandler)","titles":["模块 liteyuki.dev.observer"]},"145":{"title":"func on_modified(self, event)","titles":["模块 liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"146":{"title":"func on_created(self, event)","titles":["模块 liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"147":{"title":"func on_deleted(self, event)","titles":["模块 liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"148":{"title":"func on_moved(self, event)","titles":["模块 liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"149":{"title":"func on_any_event(self, event)","titles":["模块 liteyuki.dev.observer","class CodeModifiedHandler(FileSystemEventHandler)"]},"150":{"title":"func on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]","titles":["模块 liteyuki.dev.observer"]},"151":{"title":"模块 liteyuki.dev.plugin","titles":[]},"152":{"title":"func run_plugins(*module_path: str | Path)","titles":["模块 liteyuki.dev.plugin"]},"153":{"title":"模块 liteyuki.exception","titles":[]},"154":{"title":"class LiteyukiException(BaseException)","titles":["模块 liteyuki.exception"]},"155":{"title":"模块 liteyuki","titles":[]},"156":{"title":"var __version__","titles":["模块 liteyuki"]},"157":{"title":"模块 liteyuki.log","titles":[]},"158":{"title":"func get_format(level: str) -> str","titles":["模块 liteyuki.log"]},"159":{"title":"func init_log(config: dict)","titles":["模块 liteyuki.log"]},"160":{"title":"模块 liteyuki.plugin","titles":[]},"161":{"title":"func get_loaded_plugins() -> dict[str, Plugin]","titles":["模块 liteyuki.plugin"]},"162":{"title":"模块 liteyuki.plugin.load","titles":[]},"163":{"title":"func load_plugin(module_path: str | Path) -> Optional[Plugin]","titles":["模块 liteyuki.plugin.load"]},"164":{"title":"func load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]","titles":["模块 liteyuki.plugin.load"]},"165":{"title":"func format_display_name(display_name: str, plugin_type: PluginType) -> str","titles":["模块 liteyuki.plugin.load"]},"166":{"title":"模块 liteyuki.plugin.manager","titles":[]},"167":{"title":"模块 liteyuki.plugin.model","titles":[]},"168":{"title":"class PluginType(Enum)","titles":["模块 liteyuki.plugin.model"]},"169":{"title":"attr APPLICATION = 'application'","titles":["模块 liteyuki.plugin.model","class PluginType(Enum)"]},"170":{"title":"attr SERVICE = 'service'","titles":["模块 liteyuki.plugin.model","class PluginType(Enum)"]},"171":{"title":"attr MODULE = 'module'","titles":["模块 liteyuki.plugin.model","class PluginType(Enum)"]},"172":{"title":"attr UNCLASSIFIED = 'unclassified'","titles":["模块 liteyuki.plugin.model","class PluginType(Enum)"]},"173":{"title":"attr TEST = 'test'","titles":["模块 liteyuki.plugin.model","class PluginType(Enum)"]},"174":{"title":"class PluginMetadata(BaseModel)","titles":["模块 liteyuki.plugin.model"]},"175":{"title":"attr name: str = NO_DEFAULT","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"176":{"title":"attr description: str = ''","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"177":{"title":"attr usage: str = ''","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"178":{"title":"attr type: PluginType = PluginType.UNCLASSIFIED","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"179":{"title":"attr author: str = ''","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"180":{"title":"attr homepage: str = ''","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"181":{"title":"attr extra: dict[str, Any] = {}","titles":["模块 liteyuki.plugin.model","class PluginMetadata(BaseModel)"]},"182":{"title":"class Plugin(BaseModel)","titles":["模块 liteyuki.plugin.model"]},"183":{"title":"func hash self","titles":["模块 liteyuki.plugin.model","class Plugin(BaseModel)"]},"184":{"title":"attr model_config = {'arbitrary_types_allowed': True}","titles":["模块 liteyuki.plugin.model","class Plugin(BaseModel)"]},"185":{"title":"attr name: str = NO_DEFAULT","titles":["模块 liteyuki.plugin.model","class Plugin(BaseModel)"]},"186":{"title":"attr module: ModuleType = NO_DEFAULT","titles":["模块 liteyuki.plugin.model","class Plugin(BaseModel)"]},"187":{"title":"attr module_name: str = NO_DEFAULT","titles":["模块 liteyuki.plugin.model","class Plugin(BaseModel)"]},"188":{"title":"attr metadata: Optional[PluginMetadata] = None","titles":["模块 liteyuki.plugin.model","class Plugin(BaseModel)"]},"189":{"title":"模块 liteyuki.plugins","titles":[]},"190":{"title":"模块 liteyuki.plugins.liteecho","titles":[]},"191":{"title":"async func liteecho(event: MessageEvent)","titles":["模块 liteyuki.plugins.liteecho"]},"192":{"title":"模块 liteyuki.session.event","titles":[]},"193":{"title":"class MessageEvent","titles":["模块 liteyuki.session.event"]},"194":{"title":"func __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.session.event","class MessageEvent"]},"195":{"title":"func reply(self, message: str | dict[str, Any])","titles":["模块 liteyuki.session.event","class MessageEvent"]},"196":{"title":"模块 liteyuki.plugins.plugin_loader","titles":[]},"197":{"title":"func default_plugins_loader()","titles":["模块 liteyuki.plugins.plugin_loader"]},"198":{"title":"模块 liteyuki.session","titles":[]},"199":{"title":"func message_handler_thread(i_chans: Iterable[Chan[Any]])","titles":["模块 liteyuki.session"]},"200":{"title":"模块 liteyuki.session.matcher","titles":[]},"201":{"title":"class Matcher","titles":["模块 liteyuki.session.matcher"]},"202":{"title":"func __init__(self, rule: Rule, priority: int, block: bool)","titles":["模块 liteyuki.session.matcher","class Matcher"]},"203":{"title":"func handle(self) -> Callable[[EventHandler], EventHandler]","titles":["模块 liteyuki.session.matcher","class Matcher"]},"204":{"title":"async func run(self, event: MessageEvent) -> None","titles":["模块 liteyuki.session.matcher","class Matcher"]},"205":{"title":"模块 liteyuki.session.message.segments","titles":[]},"206":{"title":"class BaseSeg(BaseModel)","titles":["模块 liteyuki.session.message.segments"]},"207":{"title":"attr type: str = 'Segment'","titles":["模块 liteyuki.session.message.segments","class BaseSeg(BaseModel)"]},"208":{"title":"attr data: dict[str, Any] = NO_DEFAULT","titles":["模块 liteyuki.session.message.segments","class BaseSeg(BaseModel)"]},"209":{"title":"class Text(BaseSeg)","titles":["模块 liteyuki.session.message.segments"]},"210":{"title":"attr content: str = NO_DEFAULT","titles":["模块 liteyuki.session.message.segments","class Text(BaseSeg)"]},"211":{"title":"class Image(BaseSeg)","titles":["模块 liteyuki.session.message.segments"]},"212":{"title":"attr url: str = NO_DEFAULT","titles":["模块 liteyuki.session.message.segments","class Image(BaseSeg)"]},"213":{"title":"模块 liteyuki.session.models","titles":[]},"214":{"title":"class SceneType(int, Enum)","titles":["模块 liteyuki.session.models"]},"215":{"title":"attr PRIVATE = 0","titles":["模块 liteyuki.session.models","class SceneType(int, Enum)"]},"216":{"title":"attr GROUP = 1","titles":["模块 liteyuki.session.models","class SceneType(int, Enum)"]},"217":{"title":"attr GUILD = 2","titles":["模块 liteyuki.session.models","class SceneType(int, Enum)"]},"218":{"title":"attr CHANNEL_TEXT = 3","titles":["模块 liteyuki.session.models","class SceneType(int, Enum)"]},"219":{"title":"attr CHANNEL_CATEGORY = 4","titles":["模块 liteyuki.session.models","class SceneType(int, Enum)"]},"220":{"title":"attr CHANNEL_VOICE = 5","titles":["模块 liteyuki.session.models","class SceneType(int, Enum)"]},"221":{"title":"class User(BaseModel)","titles":["模块 liteyuki.session.models"]},"222":{"title":"attr id: str = NO_DEFAULT","titles":["模块 liteyuki.session.models","class User(BaseModel)"]},"223":{"title":"attr name: str | None = None","titles":["模块 liteyuki.session.models","class User(BaseModel)"]},"224":{"title":"attr nick: str | None = None","titles":["模块 liteyuki.session.models","class User(BaseModel)"]},"225":{"title":"attr avatar: str | None = None","titles":["模块 liteyuki.session.models","class User(BaseModel)"]},"226":{"title":"attr gender: str | None = None","titles":["模块 liteyuki.session.models","class User(BaseModel)"]},"227":{"title":"class Scene(BaseModel)","titles":["模块 liteyuki.session.models"]},"228":{"title":"attr id: str = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Scene(BaseModel)"]},"229":{"title":"attr type: SceneType = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Scene(BaseModel)"]},"230":{"title":"attr name: str | None = None","titles":["模块 liteyuki.session.models","class Scene(BaseModel)"]},"231":{"title":"attr avatar: str | None = None","titles":["模块 liteyuki.session.models","class Scene(BaseModel)"]},"232":{"title":"attr parent: 'Scene | None' = None","titles":["模块 liteyuki.session.models","class Scene(BaseModel)"]},"233":{"title":"class Role(BaseModel)","titles":["模块 liteyuki.session.models"]},"234":{"title":"attr id: str = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Role(BaseModel)"]},"235":{"title":"attr level: int | None = None","titles":["模块 liteyuki.session.models","class Role(BaseModel)"]},"236":{"title":"attr name: str | None = None","titles":["模块 liteyuki.session.models","class Role(BaseModel)"]},"237":{"title":"class Member(BaseModel)","titles":["模块 liteyuki.session.models"]},"238":{"title":"attr user: User = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Member(BaseModel)"]},"239":{"title":"attr nickname: str | None = None","titles":["模块 liteyuki.session.models","class Member(BaseModel)"]},"240":{"title":"attr role: Role | None = None","titles":["模块 liteyuki.session.models","class Member(BaseModel)"]},"241":{"title":"attr mute: bool | None = None","titles":["模块 liteyuki.session.models","class Member(BaseModel)"]},"242":{"title":"attr joined_at: datetime | None = None","titles":["模块 liteyuki.session.models","class Member(BaseModel)"]},"243":{"title":"class Session(BaseModel)","titles":["模块 liteyuki.session.models"]},"244":{"title":"func session_id(self)","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"245":{"title":"func target_id(self)","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"246":{"title":"attr self_id: str = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"247":{"title":"attr adapter: str = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"248":{"title":"attr scope: str = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"249":{"title":"attr scene: Scene = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"250":{"title":"attr user: User = NO_DEFAULT","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"251":{"title":"attr member: 'Member | None' = None","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"252":{"title":"attr operator: 'Member | None' = None","titles":["模块 liteyuki.session.models","class Session(BaseModel)"]},"253":{"title":"模块 liteyuki.session.on","titles":[]},"254":{"title":"func add_matcher(matcher: Matcher)","titles":["模块 liteyuki.session.on"]},"255":{"title":"func on_message(rule: Rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["模块 liteyuki.session.on"]},"256":{"title":"func on_keywords(keywords: list[str], rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher","titles":["模块 liteyuki.session.on"]},"257":{"title":"模块 liteyuki.session.rule","titles":[]},"258":{"title":"var RuleHandlerFunc","titles":["模块 liteyuki.session.rule"]},"259":{"title":"class Rule","titles":["模块 liteyuki.session.rule"]},"260":{"title":"func __init__(self, handler: RuleHandlerFunc)","titles":["模块 liteyuki.session.rule","class Rule"]},"261":{"title":"func self | other: Rule => Rule","titles":["模块 liteyuki.session.rule","class Rule"]},"262":{"title":"func self & other: Rule => Rule","titles":["模块 liteyuki.session.rule","class Rule"]},"263":{"title":"async func self () event: MessageEvent => bool","titles":["模块 liteyuki.session.rule","class Rule"]},"264":{"title":"async func empty_rule(event: MessageEvent) -> bool","titles":["模块 liteyuki.session.rule"]},"265":{"title":"async func is_su_rule(event: MessageEvent) -> bool","titles":["模块 liteyuki.session.rule"]},"266":{"title":"模块 liteyuki.utils","titles":[]},"267":{"title":"func is_coroutine_callable(call: Callable[..., Any]) -> bool","titles":["模块 liteyuki.utils"]},"268":{"title":"func run_coroutine(*coro: Coroutine)","titles":["模块 liteyuki.utils"]},"269":{"title":"func run_coroutine_in_thread(*coro: Coroutine)","titles":["模块 liteyuki.utils"]},"270":{"title":"func path_to_module_name(path: Path) -> str","titles":["模块 liteyuki.utils"]},"271":{"title":"func async_wrapper(func: Callable[..., Any]) -> Callable[..., Coroutine]","titles":["模块 liteyuki.utils"]},"272":{"title":"最佳实践","titles":[]},"273":{"title":"机器人应用","titles":["最佳实践"]},"274":{"title":"插件","titles":["最佳实践"]},"275":{"title":"其他","titles":["最佳实践"]},"276":{"title":"通道通信","titles":[]},"277":{"title":"简介","titles":["通道通信"]},"278":{"title":"示例","titles":["通道通信"]},"279":{"title":"共享内存通信","titles":["通道通信"]},"280":{"title":"简介","titles":["通道通信","共享内存通信"]},"281":{"title":"示例","titles":["通道通信","共享内存通信"]},"282":{"title":"开发指南","titles":[]},"283":{"title":"如何开发","titles":["开发指南"]},"284":{"title":"建议","titles":["开发指南","如何开发"]},"285":{"title":"项目结构","titles":["开发指南"]},"286":{"title":"规范化","titles":["开发指南"]},"287":{"title":"最后","titles":["开发指南"]},"288":{"title":"轻雪函数","titles":[]},"289":{"title":"函数文件","titles":["轻雪函数"]},"290":{"title":"命令文档","titles":["轻雪函数"]},"291":{"title":"示例","titles":["轻雪函数","命令文档"]},"292":{"title":"API","titles":["轻雪函数"]},"293":{"title":"结束关键字","titles":["轻雪函数"]},"294":{"title":"简介","titles":[]},"295":{"title":"开始","titles":["简介"]},"296":{"title":"创建插件","titles":["简介","开始"]},"297":{"title":"编写逻辑部分","titles":["简介","开始"]},"298":{"title":"加载插件","titles":["简介","开始"]},"299":{"title":"方法1","titles":["简介","开始","加载插件"]},"300":{"title":"方法2","titles":["简介","开始","加载插件"]},"301":{"title":"简介","titles":[]},"302":{"title":"加载资源包","titles":["简介"]},"303":{"title":"用户协议","titles":[]},"304":{"title":"基础插件","titles":[]},"305":{"title":"轻雪命令liteyuki_command","titles":["基础插件"]},"306":{"title":"命令别名","titles":["基础插件","轻雪命令liteyuki_command"]},"307":{"title":"插件/包管理器 liteyuki_pacman","titles":["基础插件"]},"308":{"title":"命令别名","titles":["基础插件","插件/包管理器 liteyuki_pacman"]},"309":{"title":"用户管理liteyuki_user","titles":["基础插件"]},"310":{"title":"功能插件命令","titles":[]},"311":{"title":"轻雪天气liteyuki_weather","titles":["功能插件命令"]},"312":{"title":"命令别名","titles":["功能插件命令","轻雪天气liteyuki_weather"]},"313":{"title":"统计信息liteyuki_statistics","titles":["功能插件命令"]},"314":{"title":"命令别名","titles":["功能插件命令","统计信息liteyuki_statistics"]}},"dirtCount":0,"index":[["当前bot",{"2":{"313":1}}],["当前群聊",{"2":{"313":1}}],["当前会话启用",{"2":{"307":1}}],["秒",{"2":{"313":2}}],["小时",{"2":{"313":2}}],["天",{"2":{"313":2}}],["天气",{"2":{"311":1,"312":1}}],["格式",{"2":{"313":1}}],["格式为onebot",{"2":{"305":1}}],["统计时间范围为duration",{"2":{"313":1}}],["统计周期为period",{"2":{"313":1}}],["统计信息",{"2":{"313":1}}],["统计信息liteyuki",{"0":{"313":1},"1":{"314":1}}],["功能",{"2":{"313":1}}],["功能插件命令",{"0":{"310":1},"1":{"311":1,"312":1,"313":1,"314":1}}],["个人全局生效",{"2":{"311":1}}],["个人信息",{"2":{"309":1}}],["绑定城市",{"2":{"312":1}}],["绑定查询城市",{"2":{"311":1}}],["绑定端口",{"2":{"1":1}}],["海淀",{"2":{"311":1}}],["北京",{"2":{"311":1}}],["受限于nonebot2钩子函数的依赖注入参数",{"2":{"308":1}}],["帮助",{"2":{"308":1}}],["列表",{"2":{"308":1}}],["列出所有资源包",{"2":{"307":1}}],["列出所有插件",{"2":{"307":1}}],["更改",{"2":{"308":1}}],["更新",{"2":{"308":1}}],["更新插件商店索引",{"2":{"307":1}}],["更新轻雪",{"2":{"305":1,"306":1}}],["更新轻雪失败",{"2":{"11":1}}],["全局停用",{"2":{"308":1}}],["全局启用",{"2":{"307":1,"308":1}}],["搜索",{"2":{"308":1}}],["卸载",{"2":{"308":2}}],["卸载资源包",{"2":{"307":1}}],["卸载插件",{"2":{"307":1}}],["私聊所有人可用",{"2":{"307":2}}],["包管理器",{"0":{"307":1},"1":{"308":1}}],["包括子task",{"2":{"290":1}}],["包括chromium",{"2":{"8":1}}],["切换图片模式",{"2":{"306":1}}],["切换到bot目录下",{"2":{"6":1}}],["状态",{"2":{"306":1}}],["别名",{"2":{"306":1,"308":1,"309":1,"312":1,"314":1}}],["别用你那b",{"2":{"8":1}}],["所有人",{"2":{"305":1,"307":1,"309":3}}],["所以在编写lyfunction时也要注意异步的调用",{"2":{"293":1}}],["所以此项目既是liteyukibot应用仓库",{"2":{"285":1}}],["群聊",{"2":{"306":1}}],["群聊仅群主",{"2":{"305":1,"307":2}}],["群号",{"2":{"305":1}}],["管理员",{"2":{"305":1,"307":2}}],["管理脚本",{"2":{"275":1}}],["停用插件",{"2":{"307":2}}],["停用",{"2":{"306":1,"308":1}}],["停用机器人",{"2":{"305":1}}],["停止后钩子",{"2":{"50":1}}],["停止前钩子",{"2":{"49":1}}],["停止",{"2":{"39":1}}],["停止轻雪",{"2":{"18":1,"21":1}}],["查询目标地实时天气",{"2":{"311":1}}],["查询实时天气",{"2":{"311":1}}],["查询",{"2":{"306":1,"309":1}}],["查询配置项",{"2":{"305":1}}],["查看用户信息菜单",{"2":{"309":1}}],["查看插件帮助",{"2":{"307":1}}],["查看轻雪文档",{"2":{"305":1}}],["查看统计信息和状态",{"2":{"305":1}}],["查看当前bot",{"2":{"305":1}}],["版本",{"2":{"305":1}}],["超级用户可用",{"2":{"305":1,"307":2}}],["超级用户",{"2":{"305":10,"307":10}}],["超级用户列表",{"2":{"1":1}}],["重载",{"2":{"308":1}}],["重载所有资源包",{"2":{"307":1}}],["重载资源",{"2":{"306":1}}],["重载轻雪",{"2":{"305":1}}],["重启轻雪",{"2":{"306":1}}],["重启轻雪即可加载插件",{"2":{"299":1}}],["重启轻雪本体",{"2":{"17":1}}],["重启后钩子",{"2":{"52":1}}],["重启前钩子",{"2":{"51":1}}],["重启",{"2":{"39":1}}],["举例",{"2":{"305":1}}],["权限",{"2":{"305":1,"307":2,"309":1}}],["~代替",{"2":{"304":1}}],["~可以使用插件",{"2":{"304":1}}],["命令",{"2":{"305":1,"306":1,"307":2,"308":1,"309":2,"311":1,"312":1,"313":1,"314":1}}],["命令别名",{"0":{"306":1,"308":1,"312":1,"314":1},"2":{"304":1,"309":1}}],["命令文档",{"0":{"290":1},"1":{"291":1}}],["且通过安全的方式传输到轻雪的服务器",{"2":{"303":1}}],["且通道标识为",{"2":{"278":1}}],["系统信息及python信息",{"2":{"303":1}}],["分钟",{"2":{"313":2}}],["分发",{"2":{"303":1}}],["分工明确",{"2":{"103":1}}],["修改优先级",{"2":{"307":1}}],["修改",{"2":{"303":1}}],["修订文档时",{"2":{"286":1}}],["第三方资源包开发者需要注意版本兼容性",{"2":{"302":1}}],["└─",{"2":{"302":1}}],["└───",{"2":{"302":1}}],["└─resource",{"2":{"302":2}}],["├─templates",{"2":{"302":1}}],["├─metadata",{"2":{"302":2}}],["正常的路径应该是这样的",{"2":{"302":1}}],["只需要将其解压到根目录resources目录下即可",{"2":{"302":1}}],["zip格式压缩的",{"2":{"302":1}}],["zh",{"2":{"2":1,"285":1}}],["错位等无法预料的事情发生",{"2":{"301":1}}],["异常",{"2":{"301":1}}],["异步任务结束关键字",{"2":{"293":1}}],["异步等待",{"2":{"290":1}}],["异步包装器",{"2":{"271":1}}],["异步接收数据",{"2":{"63":1}}],["异步过滤函数",{"2":{"57":1}}],["异步进程生命周期函数",{"2":{"36":1}}],["异步生命周期函数",{"2":{"33":1}}],["欢迎各位投稿资源包到轻雪资源商店",{"2":{"301":1}}],["部分异常信息",{"2":{"303":1}}],["部分内容制作需要一点点前端基础",{"2":{"301":1}}],["部分来源于",{"2":{"266":1}}],["讲起打包成一个新的资源包",{"2":{"301":1}}],["仅需按照原有路径进行文件替换即可",{"2":{"301":1}}],["那么加载b包后",{"2":{"302":1}}],["那么你能够很快就上手",{"2":{"301":1}}],["那么当前所有函数包的task都会被截停销毁",{"2":{"293":1}}],["资源",{"2":{"301":1}}],["资源包管理",{"2":{"307":1}}],["资源包的结构会随着轻雪的更新而有变动",{"2":{"302":1}}],["资源包的制作很简单",{"2":{"301":1}}],["资源包加载遵循一个优先级",{"2":{"302":1}}],["资源包描述",{"2":{"302":1}}],["资源包名称",{"2":{"302":1}}],["资源包通常是以",{"2":{"302":1}}],["资源包",{"2":{"301":1,"308":1}}],["它允许你一定程度上自定义轻雪的外观",{"2":{"301":1}}],["它允许你在轻雪中运行一些自定义的由数据驱动的命令",{"2":{"288":1}}],["语言包等",{"2":{"301":1}}],["亦可根据用途称为主题包",{"2":{"301":1}}],["保存后轻雪会自动重载nonebot进程",{"2":{"300":1}}],["然后运行python",{"2":{"300":1}}],["然后用",{"2":{"11":1}}],["方法2",{"0":{"300":1}}],["方法1",{"0":{"299":1}}],["用户管理liteyuki",{"0":{"309":1}}],["用户协议",{"0":{"303":1}}],["用observer的on",{"2":{"297":1}}],["用于统计bot接收到的消息",{"2":{"313":1}}],["用于开发nonebot时进行文件系统变更重载",{"2":{"297":1}}],["用于结束当前已完成function的执行",{"2":{"293":1}}],["用于存放内置插件",{"2":{"189":1}}],["用于获取和唯一标识",{"2":{"126":1}}],["用于进程间通信",{"2":{"53":1}}],["排除的文件扩展名",{"2":{"297":1}}],["因此插件主要是一些后台任务或者与聊天机器人的通信",{"2":{"297":1}}],["因此无法通过共享内存和直接对象传递进行通信",{"2":{"277":1}}],["定义插件元数据",{"2":{"296":1}}],["定义变量",{"2":{"290":1}}],["导入轻雪bot和日志",{"2":{"297":1}}],["导入文件系统事件",{"2":{"297":1}}],["导入文件系统观察器",{"2":{"297":1}}],["导入文件夹下多个插件",{"2":{"164":1}}],["导入逻辑部分",{"2":{"296":1}}],["供其他插件调用",{"2":{"294":1}}],["提供一系列对外的ipc",{"2":{"294":1}}],["提交到轻雪仓库的代码",{"2":{"286":1}}],["服务",{"2":{"294":1}}],["把平台的消息转换为轻雪消息格式传入总线通道",{"2":{"294":1}}],["响应",{"2":{"294":1}}],["应用",{"2":{"294":1}}],["应在每次完成一个功能或修复一个bug后提交代码",{"2":{"286":1}}],["应在初始化时调用",{"2":{"197":1}}],["大部分情况下一个插件通常承担着多个责任",{"2":{"294":1}}],["等几种类型",{"2":{"294":1}}],["等待所有异步任务结束",{"2":{"290":1}}],["编写逻辑部分",{"0":{"297":1}}],["编写轻雪函数推荐你使用vs",{"2":{"293":1}}],["编辑时的语法高亮可采取shell格式",{"2":{"289":1}}],["的情况是效率提升的关键",{"2":{"293":1}}],["的可爱猫娘机器人",{"2":{"273":1}}],["避免出现",{"2":{"293":1}}],["由于liteyukibot基于异步运行",{"2":{"293":1}}],["结束关键字",{"0":{"293":1}}],["结束函数关键字",{"2":{"290":1}}],["理论上所有基于onebotv11的api都可调用",{"2":{"292":1}}],["则该文件夹不会被识别为资源包",{"2":{"302":1}}],["则需要删除await",{"2":{"291":1}}],["则传入泛型默认开启",{"2":{"60":1}}],["无需手动创建实例",{"2":{"300":1}}],["无需手动初始化bot",{"2":{"152":1}}],["无限戳",{"2":{"291":1}}],["执行",{"2":{"291":1}}],["疯狂戳好友",{"2":{"291":1}}],["否则会导致渲染失败或渲染结果不理想",{"2":{"301":1}}],["否则task对象会被销毁",{"2":{"290":1}}],["否则默认关闭",{"2":{"60":1}}],["需要在最后调用",{"2":{"290":1}}],["单线程走到底",{"2":{"293":1}}],["单位s",{"2":{"290":1}}],["单元测试目录",{"2":{"285":1}}],["调用机器人函数",{"2":{"305":1}}],["调用机器人api",{"2":{"305":1}}],["调用重启进程方法",{"2":{"297":1}}],["调用函数",{"2":{"290":1}}],["调用bot",{"2":{"290":1}}],["输入值会被执行以转换为正确的类型",{"2":{"305":1}}],["输入playwright",{"2":{"11":1}}],["输出",{"2":{"289":1}}],["也支持句末注释",{"2":{"289":1}}],["支持中英文",{"2":{"311":2}}],["支持中英文城市名",{"2":{"311":1}}],["支持多个关键词查询",{"2":{"311":1}}],["支持绑定城市",{"2":{"311":1}}],["支持单行注释",{"2":{"289":1}}],["支持轻雪",{"2":{"274":1}}],["函数文件放在资源包的functions目录下",{"2":{"289":1}}],["函数文件",{"0":{"289":1}}],["函数列表",{"2":{"40":1}}],["属于资源包的一部分",{"2":{"288":1}}],["是可以相对引用的",{"2":{"302":1}}],["是轻雪的一个功能",{"2":{"288":1}}],["是否为协程可调用对象",{"2":{"267":1}}],["是否阻断后续优先级更低的匹配器",{"2":{"202":1}}],["是否忽略警告",{"2":{"164":1}}],["是否忽略键不存在的错误",{"2":{"87":1}}],["是否递归监听子目录",{"2":{"150":1}}],["是否关闭警告",{"2":{"110":1}}],["是否开启类型检查",{"2":{"60":1}}],["是否允许更新",{"2":{"2":1}}],["是否自动更新轻雪",{"2":{"1":1}}],["是否自动上报问题给轻雪服务器",{"2":{"1":1}}],["是否显示日志等级图标",{"2":{"1":1}}],["我们在src",{"2":{"300":1}}],["我们鼓励使用magicoca进行对象传递来进行插件间通信而不是依赖关系",{"2":{"294":1}}],["我们欢迎任何人参与开发",{"2":{"287":1}}],["我们使用gitmoji来标记commit的类型",{"2":{"286":1}}],["最后",{"0":{"287":1}}],["最佳实践",{"0":{"272":1},"1":{"273":1,"274":1,"275":1}}],["总结来说就是你干了什么",{"2":{"286":1}}],["总通道",{"2":{"15":1}}],["给event添加新字段",{"2":{"286":1}}],["具体请参考gitmoji",{"2":{"286":1}}],["表示修复bug等",{"2":{"286":1}}],["表示引入新功能",{"2":{"286":1}}],["尽量避免使用单引号",{"2":{"286":1}}],["尽量不要冲突",{"2":{"103":1}}],["字体包",{"2":{"301":1}}],["字符串请使用双引号",{"2":{"286":1}}],["字段",{"2":{"3":1}}],["以上内容仅用于项目的优化",{"2":{"303":1}}],["以避免出现无法预料的问题",{"2":{"301":1}}],["以下我们会编写一个简单的插件",{"2":{"297":1}}],["以下为默认值",{"2":{"2":1}}],["以实现某些功能",{"2":{"294":1}}],["以保证litedoc能够正确解析并生成文档",{"2":{"286":1}}],["没有危害的",{"2":{"286":1}}],["没有异步的必要",{"2":{"61":1}}],["代码请遵循pep8和google",{"2":{"286":1}}],["规范化",{"0":{"286":1}}],["规则函数签名",{"2":{"258":1}}],["规则",{"2":{"202":1}}],["业务逻辑请在此目录下进行开发",{"2":{"285":1}}],["同时用户也应该自行选择可用的资源包",{"2":{"302":1}}],["同时也是liteyuki框架的仓库",{"2":{"285":1}}],["同步接收数据",{"2":{"62":1}}],["同步接收函数",{"2":{"54":1}}],["同步过滤函数",{"2":{"56":1}}],["同步进程生命周期函数",{"2":{"35":1}}],["同步生命周期函数",{"2":{"32":1}}],["中文文档",{"2":{"285":1}}],["英文文档",{"2":{"285":1}}],["文件内容为一系列的命令",{"2":{"289":1}}],["文件名以",{"2":{"289":1}}],["文件夹路径",{"2":{"164":1}}],["文档请遵循markdown语法",{"2":{"286":1}}],["文档目录",{"2":{"285":1}}],["工具目录",{"2":{"285":1}}],["内置资源包目录",{"2":{"285":1}}],["内存共享是线程安全的",{"2":{"280":1}}],["内存共享使得代码编写更加简洁",{"2":{"280":1}}],["内存",{"2":{"8":1,"303":1}}],["框架目录",{"2":{"285":1}}],["项目结构",{"0":{"285":1}}],["项目目录下的配置文件优先",{"2":{"110":1}}],["项目目录下的配置文件优先级高于config目录下的配置文件",{"2":{"103":1}}],["项目目录下的config",{"2":{"110":1}}],["出现冲突请与仓库维护者联系",{"2":{"283":1}}],["将你的分支合并到轻雪仓库的main分支",{"2":{"283":1}}],["将你的代码提交到这个分支",{"2":{"283":1}}],["组织账户下",{"2":{"283":1}}],["首先创建一个文件夹",{"2":{"296":1}}],["首先fork一份轻雪仓库到你的个人",{"2":{"283":1}}],["首次运行后生成config",{"2":{"0":1}}],["引用",{"2":{"283":1}}],["引用计数",{"2":{"98":1}}],["线程锁会自动保护共享内存的读写操作",{"2":{"280":1}}],["相比于普通进程通信",{"2":{"280":1}}],["实现",{"2":{"278":1,"294":2}}],["主题包中的html渲染使用js来规定数据的渲染位置",{"2":{"301":1}}],["主题商店提供了一些资源包供你选择",{"2":{"301":1}}],["主动模式需调用chan",{"2":{"278":1}}],["主进程中",{"2":{"278":1}}],["主进程中通过get",{"2":{"278":1}}],["主进程接收到消息后重启对应子进程",{"2":{"277":1}}],["主进程订阅者接收函数",{"2":{"81":1}}],["主进程创建单例",{"2":{"67":1}}],["被动模式",{"2":{"278":1}}],["被动模式由chan",{"2":{"278":1}}],["被动通道传递通道",{"2":{"68":1}}],["被动通道",{"2":{"66":1}}],["即后加载的资源包会覆盖前面的资源包",{"2":{"302":1}}],["即可创建一个插件",{"2":{"296":1}}],["即不等待",{"2":{"290":1}}],["即被动模式和主动模式",{"2":{"278":1}}],["即轻雪作为服务端",{"2":{"3":1}}],["例如npm",{"2":{"304":1}}],["例如nonebot插件中",{"2":{"278":1}}],["例如你在a中定义了templates",{"2":{"302":1}}],["例如html",{"2":{"301":1}}],["例如main",{"2":{"300":1}}],["例如watchdog",{"2":{"296":1,"299":1}}],["例如echo",{"2":{"294":1}}],["例如",{"2":{"289":2,"302":1,"311":1}}],["例如test",{"2":{"289":1,"300":1}}],["例如子进程接收到用户信息需要重启机器人",{"2":{"277":1}}],["例如使用nonebot插件可对接支持的适配器平台",{"2":{"11":1}}],["这样可以避免很多潜在的问题",{"2":{"294":1}}],["这样可以在控制台看到更多的调试信息",{"2":{"284":1}}],["这样两个进程上下文是不会互相干扰的",{"2":{"277":1}}],["这时可以通过通道对主进程发送消息",{"2":{"277":1}}],["这里给出一个参考值",{"2":{"3":1}}],["有一个task任务没有完成而await被执行了",{"2":{"293":1}}],["有条件可以使用中英双语",{"2":{"286":1}}],["有两种接收模式",{"2":{"278":1}}],["有部分实现插件为了一些功能在子进程中运行",{"2":{"277":1}}],["有的插件安装后报错无法启动",{"2":{"11":1}}],["里",{"2":{"277":1}}],["简介",{"0":{"277":1,"280":1,"294":1,"301":1},"1":{"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"302":1}}],["闭源",{"2":{"275":1}}],["展示轻雪的所有实例及其位置分布",{"2":{"275":1}}],["让",{"2":{"274":1}}],["让轻雪支持",{"2":{"274":1}}],["基础插件",{"0":{"304":1},"1":{"305":1,"306":1,"307":1,"308":1,"309":1}}],["基础配置项",{"0":{"1":1}}],["基于",{"2":{"273":1}}],["官方定制轻雪机器人",{"2":{"273":1}}],["机器人源码目录",{"2":{"285":1}}],["机器人入口文件",{"2":{"285":1}}],["机器人应用",{"0":{"273":1}}],["机器人昵称列表",{"2":{"1":1}}],["+",{"2":{"270":1}}],["+=",{"2":{"17":1,"64":1}}],["路径a",{"2":{"270":1}}],["转换路径为模块名",{"2":{"270":1}}],["可用",{"2":{"305":1}}],["可用参数",{"2":{"305":1}}],["可按需调整",{"2":{"294":1}}],["可递归",{"2":{"290":1}}],["可调用对象",{"2":{"267":1}}],["可以在配置文件中把auto",{"2":{"303":1}}],["可以在a的index",{"2":{"302":1}}],["可以在此基础上进行修改",{"2":{"301":1}}],["可以在config",{"2":{"284":1}}],["可以很高程度地扩展轻雪的功能",{"2":{"294":1}}],["可以是本地插件或是通过",{"2":{"163":1}}],["可以使用liteyuki镜像",{"2":{"6":1}}],["判断是否为协程可调用对象",{"2":{"267":1}}],["一个",{"2":{"296":1}}],["一个键不要多次出现",{"2":{"103":1}}],["一些常用的工具类",{"2":{"266":1}}],["x26",{"2":{"256":1}}],["x3c",{"2":{"16":4,"17":1,"159":7,"163":2,"165":2,"254":1,"290":6,"311":2,"313":2}}],["45m",{"2":{"313":2}}],["4",{"0":{"219":1}}],["47",{"2":{"192":1}}],["优先级",{"2":{"202":1}}],["匹配器",{"2":{"202":1}}],["505468b及以后的lagrange",{"2":{"305":1}}],["55",{"2":{"257":1}}],["52",{"2":{"253":1}}],["5",{"0":{"220":1}}],["51",{"2":{"200":1}}],["59",{"2":{"162":1,"166":1}}],["多路输入管道组",{"2":{"199":1}}],["多配置文件编写原则",{"2":{"103":1}}],["回复消息",{"2":{"195":1}}],["根据不同类型插件设置颜色",{"2":{"165":1}}],["下午10",{"2":{"192":1,"196":1,"200":1,"253":1,"257":1}}],["下午12",{"2":{"190":1}}],["下午11",{"2":{"162":1,"166":1}}],["下午8",{"2":{"31":1}}],["插件停用只能阻断传入响应",{"2":{"308":1}}],["插件管理",{"2":{"307":1,"308":1}}],["插件信息",{"2":{"303":1}}],["插件描述",{"2":{"296":1}}],["插件版本",{"2":{"296":1}}],["插件大致可分为应用",{"2":{"294":1}}],["插件开发请在此目录下进行开发",{"2":{"285":1}}],["插件开发无需阅读本文档",{"2":{"283":1}}],["插件",{"0":{"274":1,"307":1},"1":{"308":1},"2":{"274":2}}],["插件类型",{"2":{"165":1,"296":1}}],["插件名称",{"2":{"163":1,"165":1,"296":1}}],["插件字典",{"2":{"161":1}}],["插件路径",{"2":{"152":1}}],["🔍",{"2":{"159":1}}],["🐛",{"2":{"159":1}}],["❌",{"2":{"159":1,"305":11}}],["⭕",{"2":{"159":1}}],["⚠️",{"2":{"159":1}}],["✅",{"2":{"159":1}}],["ℹ️信息",{"2":{"278":4}}],["ℹ️",{"2":{"159":1}}],["测试版本号",{"2":{"156":1}}],["此模块为内置插件文件夹",{"2":{"189":1}}],["此模块为liteyuki的框架整体",{"2":{"155":1}}],["此模块用于注册观察者函数",{"2":{"140":1}}],["运行环境的设备信息",{"2":{"303":1}}],["运行在主进程中",{"2":{"294":1}}],["运行协程",{"2":{"268":1}}],["运行处理函数",{"2":{"204":1}}],["运行插件",{"2":{"152":1}}],["运行订阅者接收函数",{"2":{"91":1}}],["上午12",{"2":{"167":1}}],["上午11",{"2":{"120":1}}],["上午9",{"2":{"157":1}}],["上午5",{"2":{"151":1}}],["事件过滤器",{"2":{"150":1}}],["事件循环",{"2":{"15":1}}],["防抖函数",{"2":{"143":1}}],["防止获取空指针",{"2":{"98":1}}],["位置1为filesystemevent",{"2":{"141":1,"142":1}}],["启用",{"2":{"306":1,"308":1}}],["启用插件后",{"2":{"300":1}}],["启用开发者模式",{"2":{"284":1}}],["启用该模块需要在配置文件中设置dev",{"2":{"140":1}}],["启动后控制台输出",{"2":{"278":1}}],["启动后钩子",{"2":{"48":1}}],["启动所有子进程",{"2":{"135":1}}],["启动所有进程",{"2":{"125":1}}],["启动指定子进程",{"2":{"134":1}}],["启动发布订阅接收器循环",{"2":{"92":1}}],["启动前钩子",{"2":{"47":1}}],["启动",{"2":{"39":1}}],["启动bot",{"2":{"6":1}}],["启动时会加载项目目录下config",{"2":{"0":1}}],["使用通用日期简写",{"2":{"313":2}}],["使用此项目代表你已经同意以上协议",{"2":{"303":1}}],["使用开发工具快速运行插件",{"2":{"300":1}}],["使用",{"2":{"291":1}}],["使用新的task执行命令",{"2":{"290":1}}],["使用watchdog监控文件变化并重启bot",{"2":{"140":1}}],["使用docker构建",{"0":{"7":1}}],["终止所有子进程",{"2":{"137":1}}],["终止指定子进程",{"2":{"136":1}}],["终止进程并从进程字典中删除",{"2":{"128":1}}],["添加配置项",{"2":{"305":1}}],["添加sleep",{"2":{"291":1}}],["添加处理函数",{"2":{"203":1}}],["添加子进程",{"2":{"133":1}}],["添加进程",{"2":{"126":1}}],["检查进程是否存活",{"2":{"130":1}}],["通过关键词搜索插件",{"2":{"307":1}}],["通过装饰器注册一个函数在接收到消息时运行",{"2":{"278":1}}],["通常是目录不存在或目录为空",{"2":{"164":1}}],["通常会默认传入chan",{"2":{"126":1}}],["通道是全双工的",{"2":{"278":1}}],["通道通信",{"0":{"276":1},"1":{"277":1,"278":1,"279":1,"280":1,"281":1}}],["通道实例",{"2":{"69":1,"70":1,"71":1,"72":1}}],["通道名称",{"2":{"69":1,"71":1}}],["通道传递通道",{"2":{"67":1}}],["通道id",{"2":{"60":1}}],["创建入口文件",{"2":{"300":1}}],["创建插件",{"0":{"296":1}}],["创建子进程的同时会初始化一个被动通道和一个主动通道",{"2":{"278":1}}],["创建asyncio",{"2":{"125":1}}],["创建虚拟环境",{"2":{"6":1}}],["对于主动推送的插件不生效",{"2":{"308":1}}],["对于不同资源包的不同文件",{"2":{"302":1}}],["对接特定平台",{"2":{"294":1}}],["对外启动方法",{"2":{"125":1}}],["对公开放时建议设置",{"2":{"2":1}}],["合并两个loader键值对树",{"2":{"117":1}}],["按照读取文件的优先级反向覆盖",{"2":{"109":1}}],["从总线通道接收到消息后进行处理",{"2":{"294":1}}],["从环境变量加载配置",{"2":{"116":1}}],["从json文件加载配置",{"2":{"115":1}}],["从toml文件加载配置",{"2":{"114":1}}],["从yaml文件加载配置",{"2":{"113":1}}],["从一个标准的轻雪项目加载配置文件",{"2":{"110":1}}],["从目录下加载配置文件",{"2":{"109":1}}],["从指定文件加载配置项",{"2":{"108":1}}],["8",{"2":{"105":1,"106":1,"107":1,"151":1,"190":1,"191":1,"192":1,"196":1,"200":1,"253":1,"257":1}}],["但请注意甄别第三方插件的安全性",{"2":{"303":1}}],["但请保证以上三个字段",{"2":{"302":1}}],["但若出现非单function的情况",{"2":{"293":1}}],["但需单独起篇幅",{"2":{"288":1}}],["但在嵌套字符串时可以使用单引号",{"2":{"286":1}}],["但一个通道只能使用一种",{"2":{"278":1}}],["但也包含原有的键值对",{"2":{"104":1}}],["但是请保留原作者信息",{"2":{"303":1}}],["但是更加轻量级并且线程安全",{"2":{"80":1}}],["但是基本上都是一样的",{"2":{"3":1}}],["但是部分内容会被覆盖",{"2":{"1":1}}],["扁平化后的配置文件",{"2":{"104":1}}],["扁平化配置文件",{"2":{"104":1}}],["扁平化编写",{"2":{"103":1}}],["注意不要嵌套文件夹",{"2":{"302":1}}],["注意冲突时的优先级",{"2":{"103":1}}],["注册一个函数在nonebot启动后运行",{"2":{"278":1}}],["注册一个函数在轻雪启动后运行",{"2":{"278":1}}],["注册文件系统变化监听器",{"2":{"150":1}}],["注册重启后的函数",{"2":{"27":1,"46":1}}],["注册进程重启前的函数",{"2":{"26":1,"45":1}}],["注册进程停止前的函数",{"2":{"25":1,"43":1}}],["注册停止后的函数",{"2":{"24":1,"44":1}}],["注册启动时的函数",{"2":{"41":1,"42":1}}],["注册启动后的函数",{"2":{"23":1}}],["注册启动前的函数",{"2":{"22":1}}],["共享内存通信",{"0":{"279":1},"1":{"280":1,"281":1}}],["共享内存对象",{"2":{"97":1}}],["共享内存模块",{"2":{"80":1}}],["订阅者接收消息时的回调",{"2":{"90":1}}],["频道",{"2":{"89":1,"90":1,"91":1}}],["发布消息",{"2":{"89":1}}],["发送函数为同步函数",{"2":{"61":1}}],["发送数据",{"2":{"61":1}}],["删除键值对",{"2":{"87":1}}],["值",{"2":{"85":1,"86":1}}],["键值对",{"2":{"88":1}}],["键",{"2":{"85":1,"86":1,"87":1}}],["类似于minecraft的mcfunction",{"2":{"288":1}}],["类似于redis",{"2":{"80":1}}],["类型",{"2":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"66":1,"67":1,"68":1,"81":1,"82":1,"97":1,"141":1,"142":1,"258":1}}],["依赖关系",{"2":{"79":1}}],["该功能需要commit",{"2":{"305":1}}],["该模块封装通道实现",{"2":{"280":1}}],["该模块参考并引用了nonebot",{"2":{"198":1}}],["该模块用于存放一些开发工具",{"2":{"139":1}}],["该模块用于常用配置文件的加载",{"2":{"103":1}}],["该模块用于轻雪主进程和nonebot子进程之间的通信",{"2":{"79":1}}],["该步骤为必要项",{"2":{"6":1}}],["设置用户信息或打开属性设置菜单",{"2":{"309":1}}],["设置",{"2":{"306":1,"309":1}}],["设置共享内存",{"2":{"281":1}}],["设置后的插件名称",{"2":{"165":1}}],["设置插件名称颜色",{"2":{"165":1}}],["设置键值对",{"2":{"85":1}}],["设置通道实例",{"2":{"69":1,"70":1}}],["设备上python环境太乱了",{"2":{"11":1}}],["子进程中获取通道直接导入进程全局单例即可",{"2":{"278":1}}],["子进程中导入单例active",{"2":{"278":1}}],["子进程名称",{"2":{"133":1,"134":1,"136":1,"138":1}}],["子进程函数关键字参数",{"2":{"133":1}}],["子进程函数参数",{"2":{"133":1}}],["子进程函数",{"2":{"133":1}}],["子进程订阅者接收函数",{"2":{"82":1}}],["子进程初始化时实例化",{"2":{"67":1}}],["子进程可用的主动和被动通道",{"2":{"65":1}}],["装饰回调函数实现",{"2":{"278":1}}],["装饰一个函数在接收到数据后执行",{"2":{"150":1}}],["装饰器",{"2":{"64":1,"90":1,"150":1,"203":2}}],["装置要求",{"0":{"8":1},"1":{"9":1}}],["接收数据并执行函数",{"2":{"64":1}}],["接收函数",{"2":{"55":1}}],["会自动判断key版本",{"2":{"311":1}}],["会自动识别文件格式",{"2":{"108":1}}],["会话负载信息",{"2":{"303":1}}],["会触发最大递归深度限制",{"2":{"291":1}}],["会挂起等待",{"2":{"63":1}}],["会阻塞线程",{"2":{"62":1}}],["数据",{"2":{"61":1,"62":1,"63":1,"89":1,"91":1}}],["过滤函数",{"2":{"58":1,"64":1}}],["本项目不会收集用户的任何隐私信息",{"2":{"303":1}}],["本项目遵循mit协议",{"2":{"303":1}}],["本项目是一个非盈利的开源项目",{"2":{"287":1}}],["本模块使用了nonebot",{"2":{"213":1}}],["本模块用于轻雪主进程和子进程之间的通信的事件类",{"2":{"76":1}}],["本模块定义了一个通用的通道类",{"2":{"53":1}}],["本机默认为127",{"2":{"3":1}}],["并且应该在metadata",{"2":{"302":1}}],["并且不用修改源代码",{"2":{"301":1}}],["并且支持vitepress相关内容",{"2":{"286":1}}],["并在其中写入一些代码",{"2":{"300":1}}],["并在其中写入以下代码",{"2":{"300":1}}],["并在其中创建一个",{"2":{"296":1}}],["并遵循其许可进行修改",{"2":{"266":1}}],["并发运行异步函数",{"2":{"40":1}}],["并使用克隆而非直接下载的方式部署轻雪",{"2":{"11":1}}],["进程生命周期函数",{"2":{"43":2,"45":2}}],["进程函数关键字参数",{"2":{"126":1}}],["进程函数参数",{"2":{"126":1}}],["进程函数",{"2":{"37":1,"126":1}}],["进程名",{"2":{"18":1,"126":1}}],["|",{"0":{"40":1,"138":1,"152":1,"163":1,"194":1,"195":1,"223":1,"224":1,"225":1,"226":1,"230":1,"231":1,"232":1,"235":1,"236":1,"239":1,"240":1,"241":1,"242":1,"251":1,"252":1,"261":1},"2":{"34":1,"37":1,"40":2,"55":1,"58":1,"138":1,"152":1,"163":1,"194":1,"195":1}}],["7",{"2":{"31":1,"120":1,"157":1,"162":1,"166":1,"167":1}}],["775840726",{"2":{"12":1}}],["兼容键",{"2":{"30":1}}],["兼容旧版本",{"2":{"30":1}}],["获取用户信息",{"2":{"309":1}}],["获取唯一的轻雪bot实例",{"2":{"297":1}}],["获取共享内存",{"2":{"281":1}}],["获取主动通道",{"2":{"278":1}}],["获取被动通道",{"2":{"278":1}}],["获取已加载的插件",{"2":{"161":1}}],["获取日志格式",{"2":{"158":1}}],["获取指定子进程",{"2":{"138":1}}],["获取所有键值对",{"2":{"88":1}}],["获取键值对",{"2":{"86":1}}],["获取通道实例们",{"2":{"72":1}}],["获取通道实例",{"2":{"71":1}}],["获取配置值",{"2":{"118":1}}],["获取配置",{"2":{"29":1,"30":1}}],["获取轻雪实例",{"2":{"28":1}}],["为可选参数",{"2":{"304":1}}],["为必填参数",{"2":{"304":1}}],["为子进程重启时调用",{"2":{"26":1}}],["为子进程停止时调用",{"2":{"25":1}}],["为你的python可执行文件路径",{"2":{"8":1}}],["未实现",{"2":{"24":1,"27":1,"50":1,"52":1}}],["返回true则执行回调函数",{"2":{"150":1}}],["返回",{"2":{"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"62":1,"63":1,"64":1,"71":1,"72":1,"86":1,"88":1,"90":1,"104":1,"150":1,"161":1,"165":1,"203":1,"267":1,"270":1,"271":1}}],["关键字参数",{"2":{"19":1}}],["自动调用",{"2":{"19":1}}],["joined",{"0":{"242":1}}],["join",{"0":{"127":1},"2":{"17":1,"109":1,"127":2,"128":1,"164":2,"270":2}}],["json",{"0":{"106":1,"115":1},"2":{"0":1,"106":4,"108":2,"110":1,"115":2}}],["json和toml作为配置文件",{"2":{"0":1}}],["延迟重启时间",{"2":{"17":1}}],["echo",{"2":{"289":3}}],["emoji",{"2":{"286":1}}],["empty",{"0":{"255":1,"256":1,"264":1},"2":{"163":1,"164":1,"264":1}}],["email",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"253":1,"257":1}}],["enable",{"2":{"305":2,"306":1,"307":2,"308":2}}],["end",{"2":{"290":1}}],["endswith",{"2":{"108":3,"109":1,"164":1,"297":1}}],["en",{"2":{"285":1}}],["ensure",{"2":{"268":1}}],["enumerate",{"2":{"254":1}}],["enum",{"0":{"168":1,"214":1},"1":{"169":1,"170":1,"171":1,"172":1,"173":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1}}],["environ",{"2":{"116":1}}],["env",{"0":{"116":1},"2":{"116":1}}],["encoding=",{"2":{"105":1,"106":1,"107":1}}],["enforcing",{"2":{"60":1}}],["e",{"2":{"87":2,"163":1,"165":1,"268":2}}],["error",{"0":{"87":1},"2":{"87":3,"159":1,"268":1}}],["else",{"2":{"17":1,"18":1,"28":1,"40":1,"64":2,"69":1,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"90":2,"105":1,"106":1,"107":1,"158":1,"159":7,"163":2,"244":1,"254":1,"268":1,"270":1}}],["elif",{"2":{"17":2,"60":1,"64":1,"108":4,"163":2,"164":1,"244":1,"245":1}}],["express",{"2":{"213":1}}],["extensions",{"2":{"297":2}}],["extend",{"2":{"152":1}}],["extra",{"0":{"181":1}}],["exclude",{"2":{"297":2}}],["exc",{"2":{"163":1,"204":1}}],["exception模块包含了liteyuki运行中的所有错误",{"2":{"153":1}}],["exception",{"0":{"153":1},"1":{"154":1},"2":{"163":1,"204":1,"268":2}}],["except",{"2":{"16":1,"87":1,"163":1,"204":1,"268":2}}],["executor",{"2":{"63":1}}],["executable",{"2":{"17":3}}],["exist",{"2":{"164":1}}],["exists",{"2":{"60":2,"69":1,"108":1,"109":1,"164":2}}],["exit",{"2":{"17":1}}],["event装饰器监听文件系统事件",{"2":{"297":1}}],["events",{"2":{"297":1}}],["eventhandler",{"0":{"203":2},"2":{"202":1,"203":4}}],["event",{"0":{"76":1,"77":1,"145":1,"146":1,"147":1,"148":1,"149":2,"150":2,"191":1,"192":1,"204":1,"263":1,"264":1,"265":1},"1":{"77":1,"78":2,"193":1,"194":1,"195":1},"2":{"15":4,"21":1,"79":1,"145":1,"146":2,"147":2,"148":2,"149":3,"150":8,"191":3,"192":1,"195":2,"204":4,"213":1,"256":2,"261":3,"262":3,"263":2,"264":1,"265":2,"268":2,"297":8}}],["外部启动接口",{"2":{"16":1}}],["加载",{"2":{"308":1}}],["加载资源包",{"0":{"302":1},"2":{"307":1}}],["加载插件",{"0":{"298":1},"1":{"299":1,"300":1}}],["加载插件加载器",{"2":{"15":1}}],["加载单个插件",{"2":{"163":1}}],["加入qq群",{"2":{"12":1}}],["生命周期函数",{"2":{"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"34":1,"41":2,"42":2,"44":2,"46":2}}],["生命周期管理",{"2":{"15":1}}],["生产环境中推荐反向websocket",{"2":{"3":1}}],["初始化通道",{"2":{"60":1}}],["初始化日志",{"2":{"20":1}}],["初始化轻雪",{"2":{"19":1}}],["初始化轻雪实例",{"2":{"15":1}}],["初始化",{"2":{"15":1}}],["occurred",{"2":{"268":1}}],["out",{"2":{"213":1}}],["outlook",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"253":1,"257":1}}],["otherwise",{"2":{"213":1}}],["other",{"0":{"261":1,"262":1},"2":{"213":2,"261":2,"262":2}}],["or",{"2":{"213":9,"261":2}}],["obtaining",{"2":{"213":1}}],["observer",{"0":{"140":1},"1":{"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1},"2":{"150":1,"297":2}}],["overall",{"2":{"155":1}}],["os",{"2":{"108":1,"109":3,"116":1,"164":9,"297":2}}],["of",{"2":{"61":1,"69":1,"155":1,"163":1,"213":8}}],["only",{"2":{"64":1}}],["on",{"0":{"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"54":1,"55":1,"64":1,"73":1,"74":1,"75":1,"81":1,"82":1,"90":3,"99":1,"100":1,"101":1,"102":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"253":1,"255":1,"256":1},"1":{"254":1,"255":1,"256":1},"2":{"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"55":2,"60":2,"64":4,"72":1,"73":3,"74":3,"75":2,"81":1,"82":1,"90":11,"91":1,"98":1,"99":3,"100":3,"101":3,"102":2,"145":2,"146":2,"147":2,"148":2,"149":2,"150":2,"190":1,"191":1,"253":1,"255":1,"256":4,"278":6,"297":1}}],["onebot",{"2":{"2":1,"3":1,"292":1,"305":1}}],["operator",{"0":{"252":1}}],["open",{"2":{"17":1,"105":1,"106":1,"107":1,"113":1,"114":1,"115":1}}],["option",{"2":{"304":1}}],["optional",{"0":{"18":1,"60":1,"64":1,"86":2,"163":1,"188":1,"194":2},"2":{"17":1,"18":2,"29":1,"30":1,"60":1,"64":3,"84":2,"86":3,"163":1,"194":2}}],["opt",{"2":{"16":2,"163":3}}],["o",{"2":{"15":1}}],["=none",{"2":{"18":1,"60":1,"64":1,"86":1,"194":2}}],["==",{"2":{"17":3,"72":1,"73":2,"74":2,"75":1,"92":1,"98":1,"99":2,"100":2,"101":2,"102":1,"158":1,"244":1,"245":1,"270":1}}],["=",{"0":{"17":1,"18":1,"29":1,"30":1,"60":1,"64":1,"86":1,"87":1,"95":1,"96":1,"108":1,"109":1,"110":1,"116":1,"118":1,"126":2,"150":2,"164":1,"169":1,"170":1,"171":1,"172":1,"173":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"184":1,"185":1,"186":1,"187":1,"188":1,"194":2,"207":1,"208":1,"210":1,"212":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"255":3,"256":3,"261":1,"262":1,"263":1},"2":{"15":9,"17":6,"18":2,"39":7,"40":1,"60":10,"61":1,"62":1,"63":2,"64":1,"69":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":2,"84":6,"85":2,"86":2,"87":1,"88":1,"90":2,"92":1,"94":1,"99":3,"100":2,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"116":1,"122":5,"124":3,"126":5,"128":1,"132":1,"133":1,"143":3,"150":2,"152":4,"159":2,"163":12,"164":6,"165":5,"194":10,"195":1,"202":5,"255":1,"260":1,"267":1,"268":2,"270":1,"271":1,"278":5,"281":1,"296":1,"297":2}}],[">",{"2":{"15":1,"22":1,"26":1,"28":1,"29":1,"30":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,"62":1,"63":1,"64":3,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":2,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"130":1,"138":1,"143":1,"150":2,"158":1,"161":1,"163":1,"164":1,"165":3,"203":2,"204":1,"255":1,"256":1,"261":2,"262":2,"263":1,"264":1,"265":1,"267":1,"270":1,"271":1,"311":2}}],["在群聊启用",{"2":{"305":1}}],["在普通图片和markdown大图之间切换",{"2":{"305":1}}],["在b中定义了templates",{"2":{"302":1}}],["在配置文件中的liteyuki",{"2":{"299":1}}],["在设备上执行命令",{"2":{"290":1}}],["在发信器输出",{"2":{"289":1}}],["在你的仓库中创建一个pull",{"2":{"283":1}}],["在你的仓库中创建一个新的分支",{"2":{"283":1}}],["在你的仓库中进行开发",{"2":{"283":1}}],["在任意进程中均可使用",{"2":{"281":1}}],["在子进程中",{"2":{"278":1}}],["在轻雪插件中",{"2":{"278":1}}],["在新线程中运行协程",{"2":{"269":1}}],["在语言加载完成后执行",{"2":{"159":1}}],["在主进程中运行",{"2":{"92":1}}],["在github上查看",{"2":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"194":1,"195":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1}}],["在安全模式下你可以使用npm",{"2":{"11":1}}],["或插件路径",{"2":{"163":1}}],["或",{"2":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"194":1,"195":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"313":2}}],["源代码",{"2":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"60":1,"61":1,"62":1,"63":1,"64":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"194":1,"195":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"281":1}}],["参与开发默认你已经了解python语言和轻雪框架的基本使用方法",{"2":{"283":1}}],["参考liteyuki",{"2":{"152":1}}],["参考值",{"2":{"3":1}}],["参数列表",{"2":{"305":2}}],["参数为调用set",{"2":{"278":1}}],["参数",{"2":{"15":1,"17":1,"18":1,"19":2,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"29":1,"30":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"60":1,"61":1,"64":1,"69":1,"70":1,"71":1,"85":1,"86":1,"87":1,"89":1,"90":1,"91":1,"104":1,"110":1,"113":1,"126":1,"128":1,"130":1,"133":1,"134":1,"136":1,"138":1,"150":1,"152":1,"158":1,"159":1,"163":1,"164":1,"165":1,"195":1,"199":1,"202":1,"204":1,"267":1,"268":1,"269":1,"270":1,"271":1,"304":1,"313":1}}],["kind",{"2":{"213":1}}],["kill",{"2":{"128":1}}],["k",{"2":{"104":2}}],["keyword",{"2":{"256":2}}],["keywords为城市名",{"2":{"311":2}}],["keywords",{"0":{"256":2},"2":{"256":5,"307":1,"311":2}}],["keyerror",{"2":{"87":1,"134":1,"136":1}}],["keyvaluestore",{"0":{"83":1},"1":{"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1},"2":{"94":1,"97":1}}],["keys",{"0":{"30":1},"2":{"30":3}}],["key",{"0":{"29":1,"30":1,"85":1,"86":1,"87":2,"118":1},"2":{"29":3,"30":10,"85":6,"86":6,"87":11,"99":3,"100":3,"101":3,"104":2,"116":3,"118":2,"281":2,"305":4,"309":2,"311":1}}],["keyboardinterrupt",{"2":{"16":1}}],["kwargs=none",{"2":{"126":1}}],["kwargs",{"0":{"15":1,"19":1,"40":1,"49":1,"51":1,"126":1,"133":1},"2":{"15":3,"19":2,"40":3,"49":2,"51":2,"126":4,"133":3,"143":2,"271":2,"305":2}}],["k=szmdybfr6jy94o9kfnon7awelryi6m",{"2":{"12":1}}],["feat",{"2":{"286":1}}],["fitness",{"2":{"213":1}}],["filter=lambda",{"2":{"297":1}}],["filter",{"0":{"56":1,"57":1,"58":1,"64":2,"142":1,"150":2},"2":{"58":2,"64":8,"72":1,"73":2,"74":2,"75":1,"150":5,"278":1}}],["filesystemeventhandler",{"0":{"144":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":1}}],["filesystemevent",{"2":{"141":1,"142":1,"150":1,"297":2}}],["files",{"0":{"108":2},"2":{"108":3,"109":1,"110":1,"213":1}}],["file",{"0":{"105":1,"106":1,"107":1,"150":1},"2":{"31":1,"105":4,"106":4,"107":4,"108":12,"109":3,"113":2,"114":2,"115":2,"120":1,"150":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"253":1,"257":1,"297":3}}],["future",{"2":{"268":1}}],["furnished",{"2":{"213":1}}],["function实现语法高亮",{"2":{"293":1}}],["function",{"2":{"288":1,"290":1,"291":2,"305":3}}],["functions",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["func=none",{"2":{"150":1}}],["func=lambda",{"2":{"72":1,"73":2,"74":2,"75":1,"278":1}}],["funcs",{"0":{"40":2,"81":1,"82":1,"91":1},"2":{"39":6,"40":4,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2,"64":1,"90":6,"91":2,"92":1}}],["func",{"0":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":4,"23":3,"24":3,"25":3,"26":4,"27":3,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"39":1,"40":3,"41":4,"42":4,"43":4,"44":4,"45":4,"46":4,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"54":1,"55":1,"56":1,"57":1,"58":1,"60":1,"61":1,"62":1,"63":1,"64":3,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":3,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":2,"127":1,"128":1,"129":1,"130":1,"132":1,"133":2,"134":1,"135":1,"136":1,"137":1,"138":1,"141":1,"142":1,"143":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":4,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"191":1,"194":1,"195":1,"197":1,"199":1,"202":1,"203":1,"204":1,"244":1,"245":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":2},"2":{"22":7,"23":6,"24":6,"25":6,"26":7,"27":6,"34":2,"37":2,"39":6,"40":8,"41":8,"42":8,"43":8,"44":8,"45":8,"46":8,"55":2,"58":2,"60":2,"64":20,"81":1,"82":1,"90":8,"91":2,"126":1,"133":3,"143":2,"150":7,"267":2,"271":4,"290":1}}],["failed",{"2":{"163":1}}],["false",{"0":{"108":1,"109":1,"110":1,"255":1,"256":1},"2":{"2":4,"60":2,"84":2,"267":1}}],["friend",{"2":{"291":2}}],["free",{"2":{"213":1}}],["framework",{"2":{"155":1}}],["from",{"0":{"105":1,"106":1,"107":1,"108":1,"109":1,"113":1,"114":1,"115":1,"116":1},"2":{"62":1,"105":3,"106":3,"107":3,"108":4,"109":2,"110":2,"113":1,"114":1,"115":1,"116":1,"199":2,"213":1,"278":4,"296":1,"297":3}}],["fp",{"0":{"113":1,"114":1,"115":1},"2":{"113":3,"114":2,"115":2}}],["flake8",{"2":{"284":1}}],["flat",{"0":{"104":1},"2":{"104":2,"105":1,"106":1,"107":1}}],["flag",{"2":{"39":1}}],["following",{"2":{"213":1}}],["folder",{"2":{"189":1}}],["found",{"2":{"61":1,"69":1,"108":1,"109":1,"128":1,"130":1,"134":1,"136":1}}],["format=get",{"2":{"159":1}}],["formats",{"2":{"109":1}}],["format",{"0":{"158":1,"165":1},"2":{"108":1,"158":3,"159":1,"163":2,"165":1}}],["for",{"2":{"18":1,"30":1,"40":1,"60":1,"70":1,"91":1,"104":2,"108":1,"109":2,"116":1,"125":1,"127":1,"129":1,"135":1,"137":1,"150":1,"164":2,"197":2,"199":1,"204":1,"213":2,"254":1,"256":1,"268":2,"296":1}}],["f",{"2":{"17":1,"18":2,"30":1,"60":2,"61":1,"69":2,"104":1,"105":1,"106":1,"107":1,"108":2,"109":1,"125":1,"128":2,"130":1,"134":1,"135":1,"136":1,"137":1,"163":5,"164":9,"165":1,"199":2,"244":2,"245":2,"268":1,"278":2,"297":1}}],["模块名",{"2":{"270":1}}],["模块",{"0":{"13":1,"31":1,"53":1,"76":1,"79":1,"80":1,"103":1,"119":1,"120":1,"139":1,"140":1,"151":1,"153":1,"155":1,"157":1,"160":1,"162":1,"166":1,"167":1,"189":1,"190":1,"192":1,"196":1,"198":1,"200":1,"205":1,"213":1,"253":1,"257":1,"266":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":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,"54":1,"55":1,"56":1,"57":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,"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,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":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,"137":1,"138":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"154":1,"156":1,"158":1,"159":1,"161":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,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"191":1,"193":1,"194":1,"195":1,"197":1,"199":1,"201":1,"202":1,"203":1,"204":1,"206":1,"207":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,"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,"251":1,"252":1,"254":1,"255":1,"256":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1}}],["guide",{"2":{"286":1}}],["guild",{"0":{"217":1},"2":{"244":1,"245":1}}],["g",{"2":{"165":1,"314":1}}],["granted",{"2":{"213":1}}],["green>",{"2":{"159":1}}],["group",{"0":{"216":1},"2":{"12":1,"244":1,"245":1,"305":9,"306":1,"307":2,"313":3,"314":1}}],["gender",{"0":{"226":1}}],["generic",{"0":{"59":1},"1":{"60":1,"61":1,"62":1,"63":1,"64":1},"2":{"60":2,"61":1}}],["getattr",{"2":{"267":1}}],["get",{"0":{"28":1,"29":1,"30":1,"71":1,"72":1,"74":1,"75":1,"86":1,"88":1,"94":1,"99":1,"102":1,"118":1,"138":1,"158":1,"161":1},"2":{"18":2,"28":2,"29":3,"30":5,"60":2,"61":1,"63":1,"71":2,"72":2,"73":1,"74":4,"75":3,"85":1,"86":4,"87":1,"88":2,"94":1,"97":1,"98":1,"99":3,"101":1,"102":3,"118":2,"138":2,"152":1,"158":1,"159":2,"161":1,"163":3,"164":1,"197":2,"268":1,"278":8,"281":1,"297":2,"305":3,"306":1,"309":2}}],["gather",{"2":{"40":1,"268":1}}],["globalkeyvaluestore",{"0":{"93":1},"1":{"94":1,"95":1,"96":1},"2":{"97":1}}],["global",{"2":{"15":1,"64":1,"159":1,"307":2,"308":2}}],["gt",{"0":{"15":1,"22":1,"26":1,"28":1,"29":1,"30":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,"62":1,"63":1,"64":1,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"130":1,"138":1,"150":1,"158":1,"161":1,"163":1,"164":1,"165":1,"203":1,"204":1,"255":1,"256":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"270":1,"271":1},"2":{"79":3,"104":1,"202":1,"270":1,"286":2,"304":1,"305":7,"307":10,"309":2}}],["github",{"2":{"6":1,"273":1}}],["git",{"2":{"6":3,"7":1}}],["qr",{"2":{"12":1}}],["qq群号",{"2":{"313":1}}],["qq",{"2":{"12":1}}],["qm",{"2":{"12":2}}],["quot",{"2":{"3":2,"213":4,"286":1,"293":2,"305":2,"311":4}}],["仍然出现问题",{"2":{"11":1}}],["确认插件必要配置项完好后",{"2":{"11":1}}],["怎么对接聊天平台",{"2":{"11":1}}],["报错invalidgitrepositoryerror",{"2":{"11":1}}],["其中type字段为commit类型且可选",{"2":{"286":1}}],["其中",{"2":{"11":1,"285":1}}],["其他问题",{"0":{"12":1}}],["其他问题请移步至",{"0":{"9":1}}],["其他插件占用视具体插件而定",{"2":{"8":1}}],["其他插件自带的调试功能也将开启",{"2":{"2":1}}],["其他",{"0":{"4":1,"275":1}}],["其他nonebot插件的配置项",{"2":{"2":1}}],["其他配置",{"0":{"2":1}}],["常规操作",{"2":{"15":1}}],["常规部署",{"0":{"6":1}}],["常见问题",{"0":{"11":1}}],["答疑",{"0":{"10":1},"1":{"11":1,"12":1}}],["至少1gb空间",{"2":{"8":1}}],["至少1vcpu",{"2":{"8":1}}],["硬盘",{"2":{"8":1}}],["及服务",{"2":{"294":1}}],["及",{"2":{"8":1}}],["推荐私聊使用",{"2":{"305":1}}],["推荐在编写html时同时更改对应js代码",{"2":{"301":1}}],["推荐",{"2":{"286":1}}],["推荐ubuntu",{"2":{"8":1}}],["推荐使用反向ws协议进行通信",{"2":{"3":1}}],["每隔0",{"2":{"291":1}}],["每行一个命令",{"2":{"289":1}}],["每个语言的文档都要修订",{"2":{"286":1}}],["每个配置文件给一个或一类服务提供配置",{"2":{"103":1}}],["每种语言都有对应的文档",{"2":{"286":1}}],["每次接收到字符串数据时都会运行",{"2":{"278":1}}],["每3秒发送一次消息",{"2":{"278":1}}],["每夜版镜像",{"2":{"7":1}}],["每天4点检查更新",{"2":{"1":1}}],["rpm",{"2":{"307":5,"308":1}}],["rpc",{"2":{"79":1,"294":1}}],["role",{"0":{"233":1,"240":2},"1":{"234":1,"235":1,"236":1}}],["rf",{"2":{"213":1}}],["railt",{"2":{"213":1}}],["raise",{"2":{"28":2,"60":3,"61":2,"62":1,"64":1,"69":2,"87":1,"90":1,"92":1,"134":1,"136":1,"145":1,"244":1}}],["raw",{"0":{"194":1},"2":{"191":1,"194":3,"195":1,"256":1}}],["rulehandlerfunc",{"0":{"258":1,"260":1},"2":{"260":1}}],["rule=empty",{"2":{"255":1,"256":1}}],["rule=is",{"2":{"190":1,"191":1}}],["rule",{"0":{"202":2,"255":3,"256":2,"257":1,"259":1,"261":2,"262":2,"264":1,"265":1},"1":{"258":1,"259":1,"260":2,"261":2,"262":2,"263":2,"264":1,"265":1},"2":{"190":1,"191":1,"202":5,"204":1,"255":3,"256":5,"257":1,"261":3,"262":3,"263":1,"264":3,"265":2}}],["running",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"60":1,"63":1,"84":2,"268":2}}],["runtimeerror",{"2":{"28":2,"61":1,"62":1,"64":1,"90":1,"92":1,"268":1}}],["run",{"0":{"16":1,"40":1,"91":1,"152":1,"204":1,"268":1,"269":1},"2":{"16":3,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"91":1,"92":1,"125":1,"152":2,"204":1,"268":3,"269":1,"300":2}}],["r>",{"2":{"163":2}}],["rights",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"213":1,"253":1,"257":1}}],["request",{"2":{"283":1}}],["required",{"2":{"60":1}}],["requirements",{"2":{"6":1,"8":1,"11":1}}],["reload",{"2":{"305":1,"306":2,"307":1,"308":1}}],["reloading",{"2":{"297":1}}],["relative",{"2":{"270":1}}],["rel",{"2":{"270":5}}],["reply",{"0":{"195":1},"2":{"191":1,"195":3}}],["report设定为false",{"2":{"303":1}}],["report",{"2":{"1":1,"303":1}}],["red>",{"2":{"159":2}}],["remove",{"2":{"159":1}}],["ref",{"0":{"98":1}}],["recursive=recursive",{"2":{"150":1}}],["recursive",{"0":{"150":1},"2":{"150":2}}],["recv",{"2":{"60":2,"62":2,"71":5,"72":5,"74":3,"75":3,"86":5,"88":5,"99":3,"102":3,"199":2}}],["receive",{"0":{"54":1,"55":1,"62":1,"63":1,"64":1,"81":1,"82":1,"90":3,"91":1,"92":1,"194":1},"2":{"55":2,"60":3,"62":2,"63":2,"64":4,"71":1,"72":2,"73":2,"74":2,"75":1,"81":1,"82":1,"84":2,"86":1,"88":1,"90":11,"91":2,"92":4,"98":1,"99":2,"100":2,"101":2,"102":1,"194":3,"195":3,"278":11}}],["resources",{"2":{"285":1,"301":1,"302":1,"306":1}}],["resolve",{"2":{"270":2}}],["restriction",{"2":{"213":1}}],["restarting",{"2":{"17":1}}],["restart",{"0":{"17":1,"18":1,"26":1,"27":1,"45":1,"46":1,"51":1,"52":1},"2":{"15":1,"17":3,"18":1,"26":2,"27":2,"39":2,"45":2,"46":2,"51":3,"52":3,"297":2}}],["reserved",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"253":1,"257":1}}],["return",{"2":{"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":3,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"62":1,"63":1,"64":6,"71":2,"72":2,"86":2,"88":2,"90":2,"94":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"128":1,"130":1,"138":1,"143":3,"150":3,"158":2,"161":1,"163":2,"164":1,"165":1,"183":1,"203":2,"204":1,"244":2,"245":2,"255":1,"256":2,"261":2,"262":2,"263":2,"264":1,"265":1,"267":3,"270":2,"271":2}}],["r",{"2":{"6":1,"8":1,"11":1,"105":1,"106":1,"107":1,"113":1,"114":1,"115":1}}],["weather",{"0":{"311":1},"1":{"312":1},"2":{"311":1,"312":1}}],["world",{"2":{"289":5}}],["whether",{"2":{"213":1}}],["whom",{"2":{"213":1}}],["while",{"2":{"62":1,"92":1,"278":2}}],["watchdog",{"2":{"297":1,"300":1}}],["watch",{"2":{"296":1,"297":1}}],["wait",{"0":{"143":1},"2":{"143":2}}],["warranties",{"2":{"213":1}}],["warranty",{"2":{"213":1}}],["waring=no",{"2":{"110":1}}],["waring",{"0":{"109":1,"110":1},"2":{"109":3,"110":4}}],["warning=no",{"2":{"109":1,"110":1}}],["warning",{"0":{"108":1,"164":1},"2":{"8":2,"30":1,"108":5,"109":1,"128":1,"130":1,"159":1,"163":1,"164":8,"293":1,"308":1}}],["wrapper",{"0":{"271":1},"2":{"40":1,"64":2,"90":4,"126":1,"143":2,"150":2,"271":4}}],["will",{"2":{"30":1}}],["without",{"2":{"213":3}}],["with",{"0":{"30":1},"2":{"30":1,"85":1,"86":1,"87":1,"94":1,"113":1,"114":1,"115":1,"213":1}}],["windows系统版本最低windows10+",{"2":{"8":1}}],["windows请使用项目绝对目录",{"2":{"7":1}}],["windows",{"2":{"6":1,"8":1,"17":1}}],["wv=1027",{"2":{"12":1}}],["ws",{"2":{"3":2}}],["激活虚拟环境",{"2":{"6":1}}],["mcfunction",{"2":{"289":2}}],["mute",{"0":{"241":1}}],["must",{"2":{"61":1,"69":1,"145":1}}],["mit",{"2":{"213":1}}],["msg",{"2":{"199":3,"305":1}}],["moved",{"0":{"148":1},"2":{"148":1}}],["modify",{"2":{"213":1}}],["modified",{"0":{"145":1},"2":{"145":2,"146":1,"147":1,"148":1,"149":1,"150":4}}],["moduletype",{"0":{"186":1}}],["module=module",{"2":{"163":1}}],["module",{"0":{"152":1,"163":1,"171":2,"186":1,"187":1,"270":1},"2":{"152":3,"155":1,"163":26,"164":9,"165":1,"183":1,"189":1,"270":1}}],["models",{"0":{"213":1},"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,"251":1,"252":1}}],["model",{"0":{"167":1,"184":1},"1":{"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1},"2":{"167":1,"273":1}}],["mode为true",{"2":{"140":1}}],["mode",{"2":{"2":2,"11":1,"284":1,"305":2,"306":1}}],["member",{"0":{"237":1,"251":2,"252":1},"1":{"238":1,"239":1,"240":1,"241":1,"242":1},"2":{"305":1}}],["memory",{"0":{"97":1},"2":{"84":3,"98":1,"99":3,"100":3,"101":3,"102":2,"126":1,"281":3}}],["merchantability",{"2":{"213":1}}],["merge",{"0":{"117":1},"2":{"117":1,"213":1}}],["message的语言",{"2":{"286":1}}],["message的格式为",{"2":{"286":1}}],["message字段为简短的描述",{"2":{"286":1}}],["message请遵循以下规范",{"2":{"286":1}}],["message=",{"2":{"195":1,"305":1}}],["message=message",{"2":{"195":1}}],["message",{"0":{"194":3,"195":1,"199":1,"205":1,"255":1},"1":{"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1},"2":{"191":1,"194":9,"195":5,"199":1,"255":1,"256":2,"286":1,"313":1,"314":1}}],["messageevent",{"0":{"191":1,"193":1,"194":1,"204":1,"263":1,"264":1,"265":1},"1":{"194":1,"195":1},"2":{"191":1,"194":1,"195":1,"204":1,"256":1,"258":1,"261":1,"262":1,"263":1,"264":1,"265":1}}],["meta",{"2":{"163":4,"296":1}}],["metadata",{"0":{"188":1},"2":{"163":13}}],["marsho",{"2":{"273":1}}],["matcher",{"0":{"200":1,"201":1,"254":3,"255":1,"256":1},"1":{"201":1,"202":2,"203":2,"204":2},"2":{"200":1,"254":9,"255":6,"256":1}}],["match",{"2":{"165":1}}],["manager",{"0":{"120":1,"166":1},"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,"137":1,"138":1},"2":{"15":1,"16":1,"17":1,"18":1,"21":1,"120":1,"166":1}}],["mainprocess",{"2":{"277":1}}],["main",{"0":{"81":1},"2":{"6":1,"11":1,"28":1,"60":2,"64":4,"69":1,"71":1,"72":1,"84":1,"85":1,"86":1,"87":1,"88":1,"90":5,"91":1,"92":1,"278":6,"285":1,"300":1}}],["m",{"2":{"6":1,"8":1,"11":1,"165":1,"254":2,"314":1}}],["b包也定义了一个index",{"2":{"302":1}}],["break",{"2":{"254":1}}],["bug",{"2":{"286":1}}],["but",{"2":{"213":1}}],["built",{"2":{"189":2}}],["black等工具进行代码检查和格式化",{"2":{"284":1}}],["block",{"0":{"202":1,"255":1,"256":1},"2":{"202":4,"255":2,"256":2}}],["blue>",{"2":{"159":1}}],["baseseg",{"0":{"206":1,"209":1,"211":1},"1":{"207":1,"208":1,"210":1,"212":1}}],["basemodel",{"0":{"174":1,"182":1,"206":1,"221":1,"227":1,"233":1,"237":1,"243":1},"1":{"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"207":1,"208":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1}}],["baseexception",{"0":{"154":1}}],["bashdocker",{"2":{"7":1}}],["bash",{"2":{"6":1}}],["b",{"2":{"104":1,"270":2,"314":1}}],["bool=false",{"2":{"108":1,"109":1,"110":1,"255":1,"256":1}}],["bool=true",{"2":{"87":1,"150":1,"164":1}}],["bool",{"0":{"60":1,"87":1,"108":1,"109":1,"110":1,"130":1,"150":1,"164":1,"202":1,"241":1,"255":1,"256":1,"263":1,"264":1,"265":1,"267":1},"2":{"56":1,"57":1,"60":1,"130":1,"142":1,"202":1,"258":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":2}}],["bot部分插件提供了对接特定平台的能力",{"2":{"11":1}}],["bot无其他插件会占用300~500mb",{"2":{"8":1}}],["bot",{"0":{"13":1,"28":1,"31":1,"194":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":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},"2":{"6":1,"7":1,"15":2,"28":4,"29":1,"30":4,"152":2,"194":3,"195":2,"278":4,"289":1,"297":2,"305":1,"313":3,"314":1}}],["be",{"2":{"30":1,"61":1,"64":1,"69":1,"145":1,"213":2}}],["before",{"0":{"22":1,"25":1,"26":1,"41":1,"43":1,"45":1,"47":1,"49":1,"51":1},"2":{"22":2,"25":2,"26":2,"39":3,"41":2,"43":2,"45":2,"47":3,"49":3,"51":3}}],["bind",{"2":{"159":1,"312":1}}],["bin",{"2":{"6":1,"12":1}}],["html中用",{"2":{"302":1}}],["html",{"2":{"302":1}}],["html文件会被覆盖",{"2":{"302":1}}],["html文件",{"2":{"302":2}}],["http等服务",{"2":{"294":1}}],["http",{"2":{"12":1}}],["https",{"2":{"6":2}}],["help",{"2":{"307":1,"308":1}}],["hello",{"2":{"289":5,"305":1}}],["hereby",{"2":{"213":1}}],["handle",{"0":{"203":1},"2":{"190":1,"191":1,"203":1}}],["handlers",{"2":{"202":1,"203":1,"204":1}}],["handler",{"0":{"199":1,"260":1},"2":{"150":3,"199":1,"203":4,"204":2,"260":3,"261":4,"262":4,"263":2}}],["hash",{"0":{"183":1},"2":{"183":2}}],["holders",{"2":{"213":1}}],["homepage",{"0":{"180":1}}],["host",{"2":{"1":1}}],["hint",{"2":{"60":1}}],["克隆项目到本地",{"2":{"6":1}}],["环境",{"2":{"6":1}}],["和风天气的天气key",{"2":{"311":1}}],["和10是不一样的",{"2":{"305":1}}],["和config目录下的所有配置文件",{"2":{"110":1}}],["和",{"2":{"6":1,"273":1,"305":1}}],["安装插件",{"2":{"307":1}}],["安装的插件",{"2":{"163":1}}],["安装依赖",{"2":{"6":1}}],["安装",{"0":{"5":1},"1":{"6":1,"7":1,"8":1,"9":1},"2":{"6":1,"304":1,"308":1}}],["安全模式",{"2":{"2":1}}],["要使用其他通信方式请访问onebot",{"2":{"3":1}}],["如",{"2":{"286":2}}],["如需往轻雪仓库提交代码",{"2":{"283":1}}],["如需自定义请手动添加",{"2":{"2":1}}],["如何开发",{"0":{"283":1},"1":{"284":1}}],["如果是文档相关的开发",{"2":{"283":1}}],["如果你接触过minecraft的资源包",{"2":{"301":1}}],["如果你想同时输出多行内容可以尝试换行符",{"2":{"289":1}}],["如果你没有安装git直接下载源代码运行",{"2":{"8":1}}],["如果你给轻雪配置了accesstoken",{"2":{"3":1}}],["如果装置上有多个环境",{"2":{"8":1}}],["voice",{"0":{"220":1},"2":{"244":1,"245":1}}],["version=",{"2":{"296":1}}],["version",{"0":{"156":1},"2":{"302":1}}],["venv",{"2":{"6":4}}],["v",{"2":{"104":2}}],["validate",{"2":{"61":1}}],["value",{"0":{"85":1},"2":{"85":5,"100":3,"104":3,"116":2,"281":2,"305":2,"309":1}}],["valueerror",{"2":{"60":2,"69":1,"244":1}}],["value2",{"2":{"2":1}}],["value1",{"2":{"2":1}}],["var=value",{"2":{"290":1}}],["var2=value2",{"2":{"290":1}}],["var1=value1>",{"2":{"290":1}}],["var",{"0":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"66":1,"67":1,"68":1,"81":1,"82":1,"97":1,"98":1,"141":1,"142":1,"156":1,"258":1}}],["v11协议api",{"2":{"305":2}}],["v11",{"2":{"3":1,"292":1}}],["地址取决于配置文件",{"2":{"3":1}}],["地址",{"2":{"3":1}}],["反向websocket",{"2":{"3":1}}],["协议",{"2":{"3":1}}],["说明",{"2":{"3":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":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,"54":1,"55":1,"56":1,"57":1,"58":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,"81":1,"82":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"97":1,"98":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"125":1,"126":1,"128":1,"130":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"141":1,"142":1,"143":1,"150":1,"152":1,"156":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"194":1,"195":1,"197":1,"202":1,"203":1,"204":1,"258":1,"267":1,"268":1,"269":1,"270":1,"271":1,"305":1,"307":2,"309":1}}],["不带key返回配置项列表",{"2":{"305":1}}],["不包含任何隐私信息",{"2":{"303":1}}],["不含隐私部分",{"2":{"303":1}}],["不含插件数据",{"2":{"303":1}}],["不同adapter",{"2":{"292":1}}],["不同的实现端给出的字段可能不同",{"2":{"3":1}}],["不限制commit",{"2":{"286":1}}],["不要出现无法访问的死链接",{"2":{"286":1}}],["不要出现过多的嵌套",{"2":{"103":1}}],["不要将多个功能或多个bug的代码混在一起提交",{"2":{"286":1}}],["不递归",{"2":{"109":1}}],["不再使用外层配置",{"2":{"1":1}}],["与nonebot对接的onebot实现端配置",{"0":{"3":1}}],["示例",{"0":{"3":1,"278":1,"281":1,"291":1}}],["监听目录们",{"2":{"150":1}}],["监听地址",{"2":{"1":1}}],["监视文件变化并自动重载",{"2":{"2":1}}],["开始",{"0":{"295":1},"1":{"296":1,"297":1,"298":1,"299":1,"300":1}}],["开发文档是详细的",{"2":{"286":1}}],["开发过程中可以使用mypy",{"2":{"284":1}}],["开发指南",{"0":{"282":1},"1":{"283":1,"284":1,"285":1,"286":1,"287":1}}],["开发者模式",{"2":{"2":1}}],["开发者选项",{"2":{"2":1}}],["开启后将会启动监视者",{"2":{"2":1}}],["开启后将不会加载任何第三方nonebot插件",{"2":{"2":1}}],["开启会自动重载bot或者资源",{"2":{"2":1}}],["2s戳两次",{"2":{"291":1}}],["22",{"2":{"190":1}}],["27",{"2":{"120":1,"157":1}}],["24",{"2":{"31":1,"167":1}}],["23",{"2":{"31":1,"162":1,"166":1}}],["2fghnnlvencigbdftsnn7",{"2":{"12":1}}],["2fdfn0tzbkycnbb",{"2":{"12":1}}],["2b5odg7k",{"2":{"12":1}}],["20代替空格",{"2":{"305":1}}],["20和end",{"2":{"291":1}}],["2024",{"2":{"31":2,"120":2,"151":2,"157":2,"162":2,"166":2,"167":2,"190":2,"192":2,"196":2,"200":2,"213":1,"253":2,"257":2}}],["2020",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"253":1,"257":1}}],["20216中的20216替换为你的端口号",{"2":{"7":1}}],["20216",{"2":{"1":1,"3":2}}],["20",{"2":{"8":1}}],["2019+",{"2":{"8":1}}],["2",{"0":{"217":1},"2":{"2":1,"291":1,"302":1}}],["建议",{"0":{"284":1}}],["建议1gb以上",{"2":{"8":1}}],["建议开启",{"2":{"2":1}}],["建议迁移到liteyuki下",{"2":{"1":1}}],["默认普通图片",{"2":{"305":1}}],["默认开启",{"2":{"303":1}}],["默认插件加载器",{"2":{"197":1}}],["默认执行扁平化选项",{"2":{"108":1,"109":1}}],["默认值",{"2":{"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"65":1,"66":1,"67":1,"68":1,"81":1,"82":1,"86":1,"97":1,"98":1,"141":1,"142":1,"156":1,"258":1}}],["默认false",{"2":{"2":1}}],["默认语言",{"2":{"2":1}}],["默认为本机",{"2":{"1":1}}],["city",{"2":{"311":1,"312":1}}],["css相对路径引用b中的css",{"2":{"302":1}}],["css",{"2":{"301":1,"302":1}}],["cwd",{"2":{"270":1}}],["cyan>",{"2":{"159":1}}],["critical",{"2":{"159":1}}],["created",{"0":{"146":1},"2":{"146":1}}],["create",{"2":{"91":1}}],["cfg",{"2":{"152":4}}],["current|bot",{"2":{"313":1}}],["current|group",{"2":{"313":1}}],["current",{"2":{"143":3,"313":2,"314":1}}],["custom",{"2":{"2":4}}],["charge",{"2":{"213":1}}],["change",{"2":{"307":1,"308":1}}],["changed",{"2":{"297":1}}],["chans",{"0":{"199":1},"2":{"199":3}}],["channel时的通道标识",{"2":{"278":1}}],["channel即可",{"2":{"278":1}}],["channel及passive",{"2":{"278":1}}],["channel函数获取通道对象",{"2":{"278":2}}],["channel=none",{"2":{"195":1}}],["channeldeliver",{"0":{"121":1},"1":{"122":1},"2":{"126":1}}],["channels",{"0":{"70":2,"72":1,"75":1},"2":{"70":4,"72":2,"74":1,"75":3}}],["channel",{"0":{"53":1,"59":1,"65":1,"66":1,"67":2,"68":2,"69":3,"70":1,"71":2,"72":1,"73":1,"74":1,"89":1,"90":1,"91":1,"122":8,"194":2,"218":1,"219":1,"220":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":2,"61":2,"62":2,"63":2,"64":2,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1},"2":{"18":2,"60":5,"61":1,"62":1,"65":3,"66":3,"67":2,"68":1,"69":19,"70":5,"71":9,"72":10,"73":11,"74":7,"75":2,"79":2,"84":4,"86":1,"88":1,"89":4,"90":8,"91":3,"92":2,"122":12,"126":12,"194":4,"195":2,"244":3,"245":3,"278":12}}],["chan",{"0":{"199":1},"2":{"15":4,"18":4,"71":5,"72":5,"74":3,"75":3,"84":2,"85":1,"86":6,"87":1,"88":6,"89":1,"92":1,"98":1,"99":5,"100":2,"101":2,"102":4,"126":2,"199":1}}],["check",{"0":{"60":1},"2":{"60":8,"61":1}}],["c",{"2":{"31":1,"104":1,"120":1,"151":1,"157":1,"162":1,"165":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"213":1,"253":1,"257":1,"268":4,"270":2,"314":1}}],["category",{"0":{"219":1},"2":{"244":1,"245":1}}],["case",{"2":{"165":4}}],["cannot",{"2":{"61":1,"62":1,"90":1,"92":1}}],["can",{"2":{"28":1,"64":1}}],["callback",{"0":{"141":1,"150":2},"2":{"64":1,"150":4}}],["callable",{"0":{"64":3,"90":1,"150":1,"203":1,"267":2,"271":2},"2":{"32":1,"33":1,"35":1,"36":1,"40":1,"54":1,"56":1,"57":1,"64":10,"90":2,"124":1,"141":1,"142":1,"150":1,"203":1,"258":1,"267":2,"271":4}}],["call",{"0":{"267":1},"2":{"15":1,"17":2,"143":4,"263":1,"267":7}}],["cmd",{"2":{"17":5,"289":2,"290":1}}],["claim",{"2":{"213":1}}],["classmethod",{"2":{"93":1,"94":1}}],["class",{"0":{"14":1,"38":1,"59":1,"77":1,"83":1,"93":1,"111":1,"121":1,"123":1,"131":1,"144":1,"154":1,"168":1,"174":1,"182":1,"193":1,"201":1,"206":1,"209":1,"211":1,"214":1,"221":1,"227":1,"233":1,"237":1,"243":1,"259":1},"1":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":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,"60":1,"61":1,"62":1,"63":1,"64":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"94":1,"95":1,"96":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"145":1,"146":1,"147":1,"148":1,"149":1,"169":1,"170":1,"171":1,"172":1,"173":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"194":1,"195":1,"202":1,"203":1,"204":1,"207":1,"208":1,"210":1,"212":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"244":1,"245":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"260":1,"261":1,"262":1,"263":1}}],["cls",{"0":{"94":1},"2":{"94":6}}],["close",{"2":{"268":1}}],["closed",{"2":{"60":1,"61":2,"62":2}}],["clone",{"2":{"6":1}}],["cgi",{"2":{"12":1}}],["cpu",{"2":{"8":1,"303":1}}],["centos",{"2":{"8":1}}],["cd",{"2":{"6":1}}],["copies",{"2":{"213":2}}],["copy",{"2":{"104":1,"213":2}}],["copyright",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"213":3,"253":1,"257":1}}],["color",{"2":{"165":7}}],["color=",{"2":{"159":7}}],["colors=true",{"2":{"16":2,"163":3}}],["code插件liteyuki",{"2":{"293":1}}],["code",{"2":{"150":3}}],["codemodifiedhandler",{"0":{"144":1},"1":{"145":1,"146":1,"147":1,"148":1,"149":1},"2":{"150":1}}],["code=775840726",{"2":{"12":1}}],["coro",{"0":{"268":1,"269":1},"2":{"268":5,"269":2}}],["coroutine",{"0":{"267":1,"268":2,"269":2,"271":1},"2":{"40":1,"57":1,"64":2,"90":1,"258":1,"267":1,"268":2,"269":3,"271":2}}],["core",{"0":{"119":1,"120":1},"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,"137":1,"138":1}}],["conditions",{"2":{"213":1}}],["contract",{"2":{"213":1}}],["content",{"0":{"210":1}}],["continue",{"2":{"109":1,"164":3}}],["connection",{"2":{"213":1}}],["conn",{"2":{"60":4,"61":1,"62":1}}],["configs",{"0":{"109":1},"2":{"109":1,"110":1}}],["config=self",{"2":{"20":1}}],["config",{"0":{"29":1,"30":1,"103":1,"104":2,"110":1,"159":1,"184":1},"1":{"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1},"2":{"2":2,"15":2,"20":1,"29":2,"30":6,"104":9,"105":6,"106":6,"107":6,"108":7,"109":4,"110":9,"112":1,"113":1,"114":1,"115":1,"116":1,"117":2,"118":1,"152":1,"159":4,"197":2,"305":4,"306":1}}],["count",{"0":{"98":1},"2":{"15":1,"17":2}}],["combined",{"2":{"261":2,"262":2}}],["commit",{"2":{"286":2}}],["comm",{"0":{"53":1,"76":1,"79":1,"80":1},"1":{"54":1,"55":1,"56":1,"57":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,"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},"2":{"278":2,"281":2}}],["command>",{"2":{"290":2}}],["command",{"0":{"305":1},"1":{"306":1},"2":{"1":2}}],["complete",{"2":{"268":2}}],["completion",{"2":{"2":1}}],["compat",{"0":{"30":2},"2":{"30":8}}],["com",{"2":{"6":1,"12":1,"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"253":1,"257":1}}],["cn",{"2":{"2":1}}],["duration>",{"2":{"313":1}}],["duration",{"2":{"313":2,"314":1}}],["driver",{"2":{"278":4}}],["dog",{"2":{"296":1,"297":1}}],["docker相关内容目录",{"2":{"285":1}}],["docker",{"2":{"285":1}}],["docstring",{"2":{"286":1}}],["docstring或liteyuki",{"2":{"286":1}}],["docs",{"2":{"285":1,"305":1,"306":1}}],["documentation",{"2":{"213":1}}],["do",{"2":{"213":1}}],["does",{"2":{"164":1}}],["d",{"2":{"98":2,"99":4,"100":4,"101":4,"102":2,"270":2,"314":1}}],["datetime",{"0":{"242":1}}],["data=",{"2":{"195":1}}],["data",{"0":{"61":1,"73":1,"74":1,"75":1,"78":1,"89":1,"91":1,"99":1,"100":1,"101":1,"102":1,"194":1,"208":1},"2":{"61":6,"62":2,"63":2,"64":5,"72":2,"73":7,"74":7,"75":4,"78":3,"89":4,"90":3,"91":3,"92":6,"99":4,"100":3,"101":2,"102":2,"194":5,"278":7}}],["damages",{"2":{"213":1}}],["daemon=true",{"2":{"17":1,"125":1,"269":1}}],["darwin",{"2":{"17":1}}],["disable",{"2":{"305":1,"306":1,"307":2,"308":2}}],["distribute",{"2":{"213":1}}],["display",{"0":{"165":2},"2":{"163":7,"165":4}}],["diagnose=false",{"2":{"159":1}}],["dir",{"0":{"164":1},"2":{"164":16,"197":2}}],["directory",{"2":{"109":6,"150":2,"164":1}}],["directories=",{"2":{"297":1}}],["directories",{"0":{"109":1,"150":1},"2":{"109":2,"150":3}}],["dirs",{"0":{"109":1},"2":{"1":1,"109":1,"110":1,"197":1}}],["dict",{"0":{"70":1,"72":1,"73":1,"74":1,"75":1,"78":1,"88":1,"99":1,"100":1,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"122":1,"159":1,"161":1,"181":1,"194":2,"195":1,"208":1},"2":{"15":1,"68":1,"70":2,"72":3,"73":1,"74":1,"75":1,"78":1,"81":1,"82":1,"84":2,"88":3,"99":1,"100":1,"101":1,"102":1,"104":3,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"122":1,"124":3,"132":1,"159":1,"161":2,"163":6,"194":2,"195":1}}],["dealings",{"2":{"213":1}}],["deal",{"2":{"213":1}}],["description=",{"2":{"296":1}}],["description",{"0":{"176":1},"2":{"302":1}}],["debounce",{"0":{"143":1},"2":{"143":1,"144":1,"145":1}}],["debug",{"2":{"2":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"105":1,"106":1,"107":1,"125":1,"135":1,"137":1,"158":2,"159":2,"199":1,"297":1}}],["deepcopy",{"2":{"104":1}}],["del",{"2":{"87":2}}],["deleted",{"0":{"147":1},"2":{"147":1}}],["delete",{"0":{"87":1,"101":1},"2":{"87":2,"100":1,"101":3}}],["delivery",{"2":{"126":1}}],["deliver",{"0":{"67":1,"68":1,"122":2},"2":{"69":1,"71":1,"72":2,"73":2,"74":2,"75":1,"122":6,"126":6}}],["delay",{"0":{"17":1},"2":{"17":3}}],["decorator",{"2":{"64":2,"90":2,"143":2,"150":2,"203":2}}],["def",{"2":{"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"64":2,"73":1,"74":1,"75":1,"90":2,"91":1,"92":1,"94":1,"99":1,"100":1,"101":1,"102":1,"143":2,"145":1,"150":2,"191":1,"203":1,"204":1,"244":1,"245":1,"256":1,"261":1,"262":1,"263":1,"264":1,"265":1,"271":1,"278":3,"297":1}}],["defaults",{"2":{"17":1,"18":1,"29":1,"30":1,"64":1}}],["default",{"0":{"29":1,"30":1,"86":1,"110":1,"118":1,"175":1,"185":1,"186":1,"187":1,"197":1,"208":1,"210":1,"212":1,"222":1,"228":1,"229":1,"234":1,"238":1,"246":1,"247":1,"248":1,"249":1,"250":1},"2":{"2":1,"29":3,"30":3,"67":1,"68":1,"86":5,"99":3,"110":1,"118":2,"152":1,"158":1,"197":1}}],["deprecated",{"2":{"30":1}}],["depth=1",{"2":{"6":1}}],["developer",{"2":{"296":1}}],["dev",{"0":{"139":1,"140":1,"151":1},"1":{"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1},"2":{"2":1,"297":1,"300":1}}],["访问令牌",{"2":{"2":1}}],["a包中的index",{"2":{"302":1}}],["am",{"2":{"278":6}}],["amp",{"0":{"262":1},"2":{"12":4}}],["api格式为onebot",{"2":{"305":1}}],["api文档",{"2":{"292":1}}],["api也有差别",{"2":{"292":1}}],["api",{"0":{"292":1},"2":{"275":1,"290":3,"291":2,"305":3}}],["application",{"0":{"169":2},"2":{"165":1,"294":1}}],["append",{"2":{"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"64":2,"90":2,"203":1,"254":1}}],["app",{"2":{"6":1,"7":1}}],["at",{"0":{"242":1}}],["attr",{"0":{"95":1,"96":1,"169":1,"170":1,"171":1,"172":1,"173":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1,"184":1,"185":1,"186":1,"187":1,"188":1,"207":1,"208":1,"210":1,"212":1,"215":1,"216":1,"217":1,"218":1,"219":1,"220":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"234":1,"235":1,"236":1,"238":1,"239":1,"240":1,"241":1,"242":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1}}],["avatar",{"0":{"225":1,"231":1}}],["above",{"2":{"213":1}}],["arising",{"2":{"213":1}}],["arbitrary",{"0":{"184":1}}],["argv",{"2":{"17":1}}],["args=coro",{"2":{"269":1}}],["args=",{"2":{"17":1,"125":1}}],["args",{"0":{"19":1,"40":1,"49":1,"51":1,"126":1,"133":1},"2":{"17":2,"19":2,"40":3,"49":2,"51":2,"126":3,"133":3,"143":2,"271":2,"305":4}}],["adapter",{"0":{"247":1}}],["adapter获取详细信息",{"2":{"3":1}}],["add",{"0":{"126":1,"133":1,"254":1},"2":{"126":1,"133":1,"159":1,"164":1,"254":1,"255":1}}],["associated",{"2":{"213":1}}],["as",{"2":{"87":1,"113":1,"114":1,"115":1,"163":1,"213":1,"268":1}}],["asynchronous",{"2":{"271":1}}],["async",{"0":{"33":1,"36":1,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"57":1,"63":2,"91":1,"92":1,"191":1,"204":1,"263":1,"264":1,"265":1,"271":1},"2":{"34":1,"37":1,"40":3,"55":1,"58":1,"63":1,"64":1,"81":1,"82":1,"90":1,"91":1,"92":1,"191":1,"256":1,"261":1,"262":1,"264":1,"265":1,"271":2,"278":2}}],["asyncio",{"2":{"15":2,"16":1,"40":1,"63":1,"91":1,"268":5,"278":2}}],["a",{"2":{"61":1,"62":1,"104":1,"164":1,"213":2,"270":1,"296":1}}],["an",{"2":{"61":1,"69":1,"213":1}}],["and",{"2":{"61":1,"150":1,"164":3,"213":5,"262":2,"297":2}}],["anybot",{"2":{"199":2}}],["any=none",{"2":{"29":1,"30":1,"118":1}}],["any",{"0":{"29":2,"30":2,"64":2,"73":1,"74":1,"75":1,"78":1,"85":1,"86":2,"88":1,"89":1,"91":1,"99":1,"100":1,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"118":2,"122":4,"149":1,"181":1,"194":2,"195":1,"199":1,"208":1,"267":1,"271":1},"2":{"15":3,"29":3,"30":3,"32":1,"33":1,"35":1,"36":1,"54":1,"57":2,"64":7,"67":1,"68":1,"71":1,"72":1,"73":1,"74":1,"75":1,"78":1,"84":3,"85":1,"86":4,"88":3,"89":1,"90":1,"91":1,"99":1,"100":1,"101":1,"102":1,"104":2,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"118":1,"122":4,"149":1,"194":2,"195":1,"199":1,"213":3,"256":1,"267":1,"271":1}}],["await",{"2":{"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"64":2,"90":1,"92":2,"204":2,"261":2,"262":2,"263":1,"278":1,"290":1,"291":1,"293":1}}],["awaitable",{"2":{"33":1,"36":1}}],["after",{"0":{"23":1,"24":1,"27":1,"42":1,"44":1,"46":1,"48":1,"50":1,"52":1},"2":{"23":2,"24":2,"27":2,"39":3,"42":2,"44":2,"46":2,"48":3,"50":3,"52":3,"278":1}}],["authors",{"2":{"213":1}}],["author",{"0":{"179":1},"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"253":1,"257":1}}],["authkey=ygebdemdfnycwunr4w0m1m8",{"2":{"12":1}}],["auto",{"2":{"1":2,"2":1}}],["action",{"2":{"213":1}}],["active和",{"2":{"278":1}}],["active和chan",{"2":{"126":1}}],["active=channel",{"2":{"126":1}}],["active=chan",{"2":{"126":1}}],["active",{"0":{"65":1,"67":1,"122":2},"2":{"18":6,"65":1,"84":2,"89":1,"92":1,"122":6,"126":4,"278":11}}],["activate",{"2":{"6":2}}],["accesstoken",{"2":{"3":1}}],["access",{"2":{"2":1}}],["alive",{"0":{"130":1},"2":{"128":1,"130":2}}],["already",{"2":{"60":2,"69":1}}],["all",{"0":{"88":1,"102":1,"125":1,"127":1,"129":1,"135":1,"137":1},"2":{"16":1,"17":1,"21":1,"31":1,"88":2,"101":1,"102":3,"120":1,"125":1,"127":1,"129":1,"135":1,"137":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"213":1,"253":1,"257":1}}],["allowed",{"0":{"184":1}}],["allow",{"2":{"2":1}}],["alconna的消息段定义",{"2":{"198":1}}],["alconna是否自动补全指令",{"2":{"2":1}}],["alconna",{"2":{"2":1}}],["高级nonebot配置",{"2":{"2":1}}],["p",{"2":{"314":1}}],["poke",{"2":{"291":4}}],["portions",{"2":{"213":1}}],["port",{"2":{"1":1}}],["period\`",{"2":{"314":1}}],["period>",{"2":{"313":1}}],["period",{"2":{"313":2}}],["permit",{"2":{"213":1}}],["permission",{"2":{"213":2}}],["persons",{"2":{"213":1}}],["person",{"2":{"213":1}}],["purpose",{"2":{"213":1}}],["publish=publish",{"2":{"126":1}}],["publish",{"0":{"89":1,"122":1},"2":{"84":2,"89":2,"92":2,"122":3,"213":1}}],["pull",{"2":{"7":1}}],["page为页数",{"2":{"307":2}}],["page",{"2":{"307":2}}],["pacman",{"0":{"307":1},"1":{"308":1}}],["pack",{"2":{"302":2,"307":3}}],["param",{"2":{"304":1}}],["parts",{"2":{"270":2}}],["particular",{"2":{"213":1}}],["parent",{"0":{"232":1}}],["pass",{"2":{"199":1}}],["passive=channel",{"2":{"126":1}}],["passive=chan",{"2":{"126":1}}],["passive",{"0":{"66":1,"68":1,"122":2},"2":{"66":1,"69":1,"71":1,"72":2,"73":2,"74":2,"75":1,"84":2,"85":1,"86":1,"87":1,"88":1,"98":1,"99":2,"100":2,"101":2,"102":1,"122":6,"126":5,"278":13}}],["pathlib",{"2":{"163":1}}],["path",{"0":{"152":2,"163":2,"270":3},"2":{"7":1,"8":1,"11":3,"108":1,"109":2,"152":4,"163":16,"164":26,"270":11,"297":5}}],["profile",{"2":{"309":4}}],["property",{"2":{"243":1,"244":2,"245":1}}],["provided",{"2":{"213":1}}],["processfunctype",{"0":{"133":1},"2":{"133":1}}],["processes",{"2":{"18":1,"124":1,"128":2,"130":1,"132":1,"133":1,"134":2,"135":1,"136":2,"137":1,"138":1}}],["processmanager",{"0":{"123":1},"1":{"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1},"2":{"15":2}}],["process",{"0":{"18":1,"25":2,"26":3,"35":1,"36":1,"37":1,"40":1,"43":3,"45":3,"49":1,"51":1,"130":1,"138":1},"2":{"15":1,"16":1,"17":1,"18":4,"21":1,"25":5,"26":6,"28":2,"37":2,"39":4,"40":2,"43":6,"45":6,"49":2,"51":2,"60":1,"64":3,"69":1,"71":1,"72":1,"85":1,"86":1,"87":1,"88":1,"90":3,"92":2,"124":1,"125":2,"127":2,"128":7,"130":2,"134":1,"135":3,"136":1,"137":3,"138":1,"278":8,"297":2}}],["private",{"0":{"215":1},"2":{"244":1,"245":1}}],["priority",{"0":{"202":1,"255":1,"256":1},"2":{"202":4,"254":2,"255":2,"256":2}}],["print",{"2":{"15":1,"163":1,"204":1}}],["prefix",{"0":{"116":1},"2":{"116":3}}],["platform",{"2":{"17":3}}],["playwright安装失败",{"2":{"11":1}}],["plugintype",{"0":{"165":1,"168":1,"178":2},"1":{"169":1,"170":1,"171":1,"172":1,"173":1},"2":{"165":5,"296":1}}],["pluginmetadata",{"0":{"174":1,"188":1},"1":{"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"181":1},"2":{"163":4,"296":2}}],["plugin的函数签名",{"2":{"152":1}}],["plugin",{"0":{"151":1,"160":1,"161":1,"162":1,"163":2,"164":2,"165":1,"166":1,"167":1,"182":1,"196":1},"1":{"152":1,"161":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,"178":1,"179":1,"180":1,"181":1,"182":1,"183":2,"184":2,"185":2,"186":2,"187":2,"188":2,"197":1},"2":{"1":1,"15":2,"151":1,"161":2,"163":14,"164":5,"165":4,"189":1,"197":6,"198":1,"213":1,"274":2,"296":4,"299":1,"300":2,"307":5}}],["plugins下创建一个文件",{"2":{"300":1}}],["plugins中添加你的插件路径",{"2":{"299":1}}],["plugins目录下为插件目录",{"2":{"285":1}}],["plugins和nonebot",{"2":{"285":1}}],["plugins",{"0":{"152":1,"161":1,"164":1,"189":1,"190":1,"196":1,"197":1},"1":{"191":1,"197":1},"2":{"1":1,"15":1,"152":6,"161":2,"163":3,"164":9,"189":1,"197":4,"285":2,"297":1,"300":2}}],["pwd",{"2":{"7":1}}],["py即可启动插件",{"2":{"300":1}}],["pyo",{"2":{"297":1}}],["pycache",{"2":{"297":1}}],["pyc",{"2":{"297":1}}],["pycharm",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"253":1,"257":1}}],["py文件",{"2":{"296":1}}],["py文件或一个包含",{"2":{"296":1}}],["py的文件夹即可被识别为插件",{"2":{"296":1}}],["py来启动bot",{"2":{"11":1}}],["py",{"2":{"6":1,"31":1,"120":1,"151":1,"157":1,"162":1,"164":3,"166":1,"167":1,"190":1,"192":1,"196":2,"200":1,"253":1,"257":1,"281":1,"285":1,"296":1,"297":1,"300":2,"302":1}}],["python格式",{"2":{"289":1}}],["pythonfrom",{"2":{"278":1,"281":1,"296":1,"300":1}}],["pythonimport",{"2":{"278":1,"297":1}}],["pythonasync",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"63":1,"92":1,"204":1,"263":1}}],["pythondef",{"2":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"39":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"60":1,"61":1,"62":1,"64":1,"69":1,"70":1,"71":1,"72":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"143":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"158":1,"159":1,"161":1,"163":1,"164":1,"165":1,"183":1,"194":1,"195":1,"197":1,"199":1,"202":1,"203":1,"254":1,"255":1,"256":1,"260":1,"261":1,"262":1,"267":1,"268":1,"269":1,"270":1,"271":1}}],["python是你要用来运行bot的可执行文件",{"2":{"11":1}}],["python",{"2":{"6":2,"8":2,"11":2,"40":1,"73":1,"74":1,"75":1,"91":1,"94":1,"99":1,"100":1,"101":1,"102":1,"145":1,"191":1,"244":1,"245":1,"264":1,"265":1,"286":1}}],["python3",{"2":{"6":1}}],["pipe",{"2":{"60":2}}],["pip和python不对应怎么办",{"2":{"11":1}}],["pip",{"2":{"6":1,"8":1,"11":1,"163":1}}],["utils",{"0":{"266":1},"1":{"267":1,"268":1,"269":1,"270":1,"271":1},"2":{"285":1}}],["utf",{"2":{"105":1,"106":1,"107":1}}],["url",{"0":{"212":1}}],["usage",{"0":{"177":1}}],["user",{"0":{"194":1,"221":1,"238":2,"250":2,"309":1},"1":{"222":1,"223":1,"224":1,"225":1,"226":1},"2":{"194":3,"195":2,"244":1,"245":2,"265":1,"291":3}}],["used",{"2":{"64":1,"189":1}}],["use",{"2":{"1":1,"30":1,"163":1,"213":2}}],["unload",{"2":{"307":1,"308":1}}],["until",{"2":{"268":2}}],["uninstall",{"2":{"307":1,"308":1}}],["uninstall卸载问题插件",{"2":{"11":1}}],["uninfo的部分模型定义",{"2":{"213":1}}],["unclassified",{"0":{"172":2,"178":1}}],["unsupported",{"2":{"108":1}}],["u",{"2":{"12":1}}],["update",{"2":{"1":1,"2":1,"108":3,"109":1,"110":1,"113":1,"114":1,"115":1,"117":1,"305":1,"306":1,"307":1,"308":1}}],["某些控制台字体不可用",{"2":{"1":1}}],["text",{"0":{"209":1,"218":1},"1":{"210":1},"2":{"244":1,"245":1}}],["tests",{"2":{"285":1}}],["test",{"0":{"173":2},"2":{"165":1}}],["terminating",{"2":{"137":1}}],["terminated",{"2":{"128":1}}],["terminate",{"0":{"128":1,"129":1,"136":1,"137":1},"2":{"17":1,"21":1,"128":2,"129":2,"136":2,"137":2}}],["the",{"2":{"155":1,"163":1,"189":1,"213":14}}],["this",{"2":{"155":1,"189":1,"213":2}}],["thread",{"0":{"199":1,"269":1},"2":{"17":1,"125":1,"199":1,"269":2}}],["threading",{"0":{"96":1},"2":{"15":1,"17":1,"125":1,"269":1}}],["type=plugintype",{"2":{"296":1}}],["type=self",{"2":{"195":2}}],["types",{"0":{"184":1}}],["typeerror",{"2":{"60":1,"61":1,"69":1}}],["type",{"0":{"60":1,"165":1,"178":1,"194":2,"207":1,"229":1},"2":{"60":11,"61":7,"69":1,"163":2,"165":4,"194":6,"195":2,"286":1}}],["typealias",{"2":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"54":1,"55":1,"56":1,"57":1,"58":1,"141":1,"142":1,"258":1}}],["tar",{"2":{"213":1}}],["target",{"0":{"126":3,"245":1},"2":{"126":5,"245":1}}],["target=run",{"2":{"269":1}}],["target=self",{"2":{"125":1}}],["target=os",{"2":{"17":1}}],["targets",{"2":{"124":1,"125":1,"126":1,"127":1,"129":1,"130":1}}],["task",{"2":{"91":1,"125":1}}],["tasks",{"2":{"40":2}}],["tuple=",{"2":{"126":1}}],["tuplestr",{"2":{"30":1}}],["tuple",{"0":{"30":1,"73":1,"74":1,"75":1,"99":1,"100":1,"101":1,"102":1,"122":2,"126":1,"150":1},"2":{"30":1,"68":1,"73":1,"74":1,"75":1,"84":3,"99":1,"100":1,"101":1,"102":1,"122":2,"124":2,"150":1}}],["t",{"0":{"59":1,"61":1,"62":1,"63":1,"64":2},"1":{"60":1,"61":1,"62":1,"63":1,"64":1},"2":{"28":1,"54":1,"56":1,"57":1,"61":2,"62":2,"63":2,"64":7}}],["time>",{"2":{"290":1}}],["timeout",{"2":{"128":1}}],["time",{"2":{"17":1,"31":1,"120":1,"143":9,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"253":1,"257":1}}],["tip",{"2":{"7":1,"293":1,"302":1,"304":1}}],["trss",{"2":{"275":2}}],["trim",{"2":{"273":2}}],["traceback",{"2":{"163":1,"204":1}}],["trace",{"2":{"159":1}}],["try",{"2":{"16":1,"87":1,"163":1,"204":1,"268":1}}],["true下启动轻雪",{"2":{"11":1}}],["true",{"0":{"87":1,"150":1,"164":1,"184":1},"2":{"1":3,"2":1,"62":1,"92":1,"159":1,"263":1,"264":1,"278":2,"284":1}}],["txt来安装依赖",{"2":{"8":1,"11":1}}],["txt",{"2":{"6":1}}],["tokyo",{"2":{"311":1}}],["token",{"2":{"2":1}}],["tort",{"2":{"213":1}}],["toml",{"0":{"107":1,"114":1},"2":{"107":4,"108":2,"110":1,"114":2}}],["toml和config目录下的所有配置文件",{"2":{"0":1}}],["to",{"0":{"270":1},"2":{"7":1,"8":2,"11":3,"17":1,"18":1,"29":1,"30":1,"61":1,"64":1,"163":5,"164":2,"189":1,"213":8,"270":2}}],["image",{"0":{"211":1},"1":{"212":1},"2":{"305":2,"306":1}}],["implementation",{"2":{"294":1}}],["implemented",{"2":{"145":1}}],["implied",{"2":{"213":1}}],["import",{"2":{"98":1,"163":1,"278":5,"281":1,"296":2,"297":3,"300":1}}],["iterable",{"0":{"199":1},"2":{"199":1}}],["items",{"2":{"70":1,"104":2,"116":1,"135":1,"137":1}}],["ignore",{"0":{"87":1,"164":1},"2":{"87":3,"164":5}}],["id仅超级用户可用",{"2":{"305":1}}],["id=user",{"2":{"291":2}}],["id=1234567",{"2":{"305":2}}],["id=123456",{"2":{"291":1}}],["id=self",{"2":{"195":3}}],["id",{"0":{"194":3,"222":1,"228":1,"234":1,"244":1,"245":1,"246":1},"2":{"64":5,"194":9,"195":3,"244":3,"245":4,"265":1,"291":2,"305":2,"307":1,"313":4}}],["ids",{"2":{"60":2,"64":2}}],["if",{"2":{"17":2,"18":1,"28":2,"30":2,"40":1,"60":5,"61":3,"62":1,"64":6,"69":3,"71":1,"72":1,"85":1,"86":1,"87":3,"88":1,"90":5,"92":2,"94":2,"104":1,"105":1,"106":1,"107":1,"108":2,"109":3,"116":1,"126":1,"128":2,"130":1,"134":1,"136":1,"143":1,"150":1,"158":1,"159":7,"163":2,"164":9,"194":1,"195":1,"204":1,"244":1,"245":1,"254":1,"263":1,"267":2,"268":1,"270":1}}],["isclass",{"2":{"267":1}}],["iscoroutinefunction",{"2":{"267":2}}],["isroutine",{"2":{"267":1}}],["isfile",{"2":{"164":1,"297":1}}],["isdir",{"2":{"164":2}}],["isinstance",{"2":{"69":1,"104":1,"163":1,"278":1}}],["is",{"0":{"130":1,"265":1,"267":1},"2":{"15":1,"16":2,"18":1,"28":2,"40":1,"60":6,"61":1,"64":5,"69":1,"71":1,"72":1,"84":2,"85":1,"86":1,"87":1,"88":1,"90":3,"92":1,"94":2,"105":1,"106":1,"107":1,"126":1,"128":1,"130":2,"150":1,"155":1,"163":1,"164":2,"189":1,"194":1,"213":4,"263":1,"265":1,"267":1,"268":1}}],["i",{"0":{"199":1},"2":{"15":1,"199":3,"254":2,"278":6}}],["index",{"2":{"302":1}}],["inspect",{"2":{"267":4,"271":1}}],["insert",{"2":{"254":1}}],["instead",{"2":{"30":1}}],["instance",{"0":{"94":1,"95":1},"2":{"15":2,"28":4,"61":1,"69":1,"94":5,"97":1}}],["install安装浏览器",{"2":{"11":1}}],["install",{"2":{"6":1,"8":1,"11":1,"304":1,"307":1,"308":1}}],["invalid",{"2":{"244":1}}],["included",{"2":{"213":1}}],["including",{"2":{"213":2}}],["inner",{"2":{"60":2}}],["in",{"0":{"110":1,"269":1},"2":{"18":1,"28":1,"30":3,"40":1,"60":2,"63":1,"64":1,"69":1,"70":1,"87":1,"90":3,"91":1,"92":1,"104":2,"108":1,"109":2,"110":1,"116":1,"125":1,"127":1,"128":1,"129":1,"130":1,"134":1,"135":1,"136":1,"137":1,"150":1,"152":1,"164":2,"189":2,"197":2,"199":1,"204":1,"213":6,"244":1,"245":1,"254":1,"256":2,"265":1,"268":2,"269":1,"297":1}}],["int=0",{"2":{"17":1,"255":1,"256":1}}],["int",{"0":{"17":1,"202":1,"214":1,"235":1,"255":1,"256":1},"1":{"215":1,"216":1,"217":1,"218":1,"219":1,"220":1},"2":{"17":1,"39":1,"60":2,"202":1}}],["initialized",{"2":{"28":1}}],["initializing",{"2":{"15":1}}],["init",{"0":{"15":1,"19":1,"20":1,"39":1,"60":1,"78":1,"84":1,"112":1,"122":1,"124":1,"132":1,"159":1,"194":1,"202":1,"260":1},"2":{"15":2,"19":2,"20":2,"39":1,"60":1,"78":1,"84":1,"112":1,"122":1,"124":1,"132":1,"159":1,"164":2,"194":1,"196":1,"202":1,"260":1,"270":1,"296":3}}],["info",{"2":{"1":1,"15":1,"16":2,"17":1,"159":1,"199":1,"278":2}}],["icu",{"2":{"6":1,"7":1}}],["icon=f",{"2":{"159":7}}],["icon",{"2":{"1":1,"159":9}}],["日志等级",{"2":{"1":1,"158":1}}],["lyf结尾",{"2":{"289":1}}],["lyfunction语法",{"2":{"305":1}}],["lyfunction",{"2":{"289":1}}],["lt",{"2":{"286":2,"304":1,"305":7,"307":10,"309":2}}],["len",{"2":{"116":1}}],["level=level",{"2":{"159":1}}],["level",{"0":{"158":1,"235":1},"2":{"1":1,"158":3,"159":10}}],["locks",{"2":{"87":1}}],["lock",{"0":{"96":2},"2":{"85":3,"86":3,"87":3,"94":1}}],["loaded",{"0":{"161":1},"2":{"161":1}}],["loader",{"0":{"111":1,"113":1,"114":1,"115":1,"116":1,"117":3,"196":1,"197":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"197":1},"2":{"15":1,"113":1,"114":1,"115":1,"116":1,"117":4,"197":1}}],["loading",{"2":{"105":1,"106":1,"107":1}}],["load",{"0":{"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"113":1,"114":1,"115":1,"116":1,"162":1,"163":1,"164":1},"1":{"163":1,"164":1,"165":1},"2":{"15":1,"105":3,"106":3,"107":3,"108":4,"109":2,"110":3,"113":2,"114":2,"115":2,"116":1,"152":2,"162":1,"163":3,"164":2,"197":2,"307":1,"308":1}}],["loop",{"0":{"92":1},"2":{"15":4,"60":1,"63":3,"84":2,"92":2,"268":10}}],["log0000",{"2":{"278":1}}],["logger",{"0":{"20":1},"2":{"15":1,"16":2,"17":1,"19":1,"20":1,"30":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"105":1,"106":1,"107":1,"108":2,"109":1,"125":1,"128":2,"130":1,"135":1,"137":1,"159":11,"163":3,"164":3,"199":2,"268":1,"278":3,"297":2}}],["logo",{"2":{"15":1}}],["log",{"0":{"157":1,"159":1},"1":{"158":1,"159":1},"2":{"1":2,"20":1,"157":1,"159":3,"278":1}}],["last",{"2":{"143":4}}],["lambda",{"2":{"98":1,"99":2,"100":2,"101":2,"102":1}}],["latest",{"2":{"7":1}}],["language",{"2":{"2":1}}],["liability",{"2":{"213":1}}],["liable",{"2":{"213":1}}],["limited",{"2":{"213":1}}],["limitation",{"2":{"213":1}}],["license",{"2":{"213":1}}],["litedoc",{"2":{"275":1}}],["liteecho",{"0":{"190":1,"191":1},"1":{"191":1},"2":{"190":2,"191":2,"305":1}}],["liteyuki框架是包含在liteyukibot应用中的",{"2":{"285":1}}],["liteyukiexception",{"0":{"154":1}}],["liteyukibot代替$",{"2":{"7":1}}],["liteyukibot",{"0":{"14":1,"28":1},"1":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"6":2,"17":1,"28":2,"152":1,"273":2,"274":2,"275":2,"285":1}}],["liteyukistudio",{"2":{"6":1,"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"253":1,"257":1}}],["liteyuki",{"0":{"13":1,"31":1,"53":1,"76":1,"79":1,"80":1,"103":1,"119":1,"120":1,"139":1,"140":1,"151":1,"153":1,"155":1,"157":1,"160":1,"162":1,"166":1,"167":1,"189":1,"190":1,"192":1,"196":1,"198":1,"200":1,"205":1,"213":1,"253":1,"257":1,"266":1,"307":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":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,"54":1,"55":1,"56":1,"57":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,"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,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":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,"137":1,"138":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"154":1,"156":1,"158":1,"159":1,"161":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,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"191":1,"193":1,"194":1,"195":1,"197":1,"199":1,"201":1,"202":1,"203":1,"204":1,"206":1,"207":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,"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,"251":1,"252":1,"254":1,"255":1,"256":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"308":1},"2":{"1":2,"2":1,"6":1,"7":1,"15":2,"28":1,"152":2,"155":1,"163":5,"197":3,"273":1,"275":2,"278":12,"281":2,"285":3,"288":1,"296":1,"297":4,"300":1,"301":1,"305":4,"306":3}}],["listdir",{"2":{"109":1,"164":2}}],["list",{"0":{"194":1,"256":1},"2":{"39":6,"60":2,"81":1,"82":1,"194":1,"202":1,"254":3,"256":1,"305":1,"307":2,"308":1}}],["life",{"2":{"39":1}}],["lifespan=self",{"2":{"15":1}}],["lifespan",{"0":{"22":2,"23":1,"24":1,"25":1,"26":2,"27":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"124":2},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":2,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":2,"48":2,"49":2,"50":2,"51":2,"52":2},"2":{"15":3,"22":5,"23":4,"24":4,"25":4,"26":5,"27":4,"31":1,"34":2,"37":2,"39":6,"40":4,"41":4,"42":4,"43":4,"44":4,"45":4,"46":4,"124":4}}],["linux系统要支持python3",{"2":{"8":1}}],["linux",{"2":{"6":1,"17":1}}],["写在外层的配置项将会被覆盖",{"2":{"1":1}}],["switch",{"2":{"305":2,"306":1}}],["simple",{"2":{"296":1}}],["signature",{"2":{"271":2}}],["src目录下为应用程序部分",{"2":{"285":1}}],["src",{"2":{"197":1,"285":1,"297":5}}],["sparkles",{"2":{"286":2}}],["specified",{"2":{"163":1}}],["split",{"2":{"163":4}}],["scope",{"0":{"248":1},"2":{"244":4,"245":4}}],["scene",{"0":{"227":1,"232":1,"249":2},"1":{"228":1,"229":1,"230":1,"231":1,"232":1},"2":{"244":1,"245":1}}],["scenetype",{"0":{"214":1,"229":1},"1":{"215":1,"216":1,"217":1,"218":1,"219":1,"220":1},"2":{"244":7,"245":6}}],["schedule",{"2":{"150":1}}],["scripts",{"2":{"6":1}}],["shinjuku",{"2":{"311":1}}],["shellstatistic",{"2":{"313":1}}],["shellbind",{"2":{"311":1}}],["shellweather",{"2":{"311":1}}],["shellmain",{"2":{"302":1}}],["shellvar",{"2":{"290":1}}],["shellcmd",{"2":{"289":1}}],["shell",{"2":{"289":1,"291":1}}],["shall",{"2":{"213":2}}],["shared",{"0":{"97":1},"2":{"84":3,"98":1,"99":3,"100":3,"101":3,"102":2,"126":1,"281":3}}],["show",{"2":{"159":8}}],["shutdown",{"0":{"24":1,"25":1,"43":1,"44":1,"49":1,"50":1},"2":{"24":2,"25":2,"39":2,"43":2,"44":2,"49":3,"50":3}}],["sync",{"0":{"32":1,"35":1,"54":1,"56":1},"2":{"34":1,"37":1,"55":1,"58":1,"271":1}}],["system",{"0":{"150":1},"2":{"17":4,"150":1,"297":2}}],["sys",{"2":{"17":3,"159":1}}],["so",{"2":{"213":1}}],["software",{"2":{"31":1,"120":1,"151":1,"157":1,"162":1,"166":1,"167":1,"190":1,"192":1,"196":1,"200":1,"213":9,"253":1,"257":1}}],["source",{"2":{"6":1}}],["snowykami",{"2":{"31":2,"120":2,"151":2,"157":2,"162":2,"166":2,"167":2,"190":2,"192":2,"196":2,"200":2,"253":2,"257":2}}],["su",{"0":{"265":1},"2":{"190":1,"191":1,"265":1}}],["succeeded",{"2":{"163":1}}],["success",{"2":{"128":1,"159":1,"163":2}}],["supported",{"2":{"109":1}}],["superusers",{"2":{"1":1,"265":1}}],["substantial",{"2":{"213":1}}],["subscribe",{"2":{"90":1}}],["subscriber",{"0":{"81":1,"82":1,"90":1,"91":1},"2":{"90":7,"91":2,"92":1}}],["subject",{"2":{"213":1}}],["sublicense",{"2":{"213":1}}],["subprocess",{"0":{"138":1},"2":{"132":1,"133":1,"138":1}}],["subprocessmanager",{"0":{"131":1},"1":{"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1}}],["sub",{"0":{"82":1},"2":{"28":1,"60":1,"64":1,"84":1,"90":4,"92":1}}],["sleep",{"2":{"17":1,"278":1,"290":1,"291":1}}],["style",{"2":{"286":1,"302":2}}],["stem",{"2":{"270":2}}],["stdout",{"2":{"159":1}}],["store",{"2":{"84":1,"85":1,"86":1,"87":2,"88":1,"189":1}}],["storage",{"0":{"80":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},"2":{"79":2,"281":2}}],["stopped",{"2":{"16":1}}],["stopping",{"2":{"16":1}}],["stop",{"0":{"21":1},"2":{"15":1,"16":1,"21":2}}],["stat",{"2":{"314":1}}],["statistic",{"2":{"314":1}}],["statistics",{"0":{"313":1},"1":{"314":1}}],["staticmethod",{"2":{"39":1,"40":1,"90":1,"91":1}}],["status",{"2":{"305":1,"306":1}}],["starmap",{"2":{"275":1}}],["startup",{"2":{"278":2}}],["starting",{"2":{"125":1,"135":1}}],["startswith",{"2":{"116":1,"190":1,"191":1}}],["start保证alconna解析正常",{"2":{"1":1}}],["start",{"0":{"22":1,"23":1,"41":1,"42":1,"47":1,"48":1,"92":1,"125":1,"134":1,"135":1},"2":{"1":1,"16":1,"17":2,"22":2,"23":2,"39":2,"41":2,"42":2,"47":3,"48":3,"92":2,"125":2,"134":2,"135":2,"269":1,"278":1}}],["strip",{"2":{"191":2}}],["str=",{"2":{"116":1}}],["structure",{"2":{"61":1}}],["str",{"0":{"18":1,"29":1,"30":2,"60":1,"69":1,"70":1,"71":1,"72":1,"73":2,"74":2,"75":2,"78":2,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"99":2,"100":2,"101":2,"102":2,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":1,"113":1,"114":1,"115":1,"116":1,"118":1,"122":2,"126":1,"128":1,"130":1,"133":1,"134":1,"136":1,"138":1,"150":1,"152":1,"158":2,"161":1,"163":1,"164":1,"165":2,"175":1,"176":1,"177":1,"179":1,"180":1,"181":1,"185":1,"187":1,"194":9,"195":2,"207":1,"208":1,"210":1,"212":1,"222":1,"223":1,"224":1,"225":1,"226":1,"228":1,"230":1,"231":1,"234":1,"236":1,"239":1,"246":1,"247":1,"248":1,"256":1,"270":1},"2":{"15":1,"18":2,"29":2,"30":3,"35":1,"36":1,"60":2,"68":2,"69":2,"70":2,"71":2,"72":3,"73":2,"74":2,"75":2,"78":2,"81":1,"82":1,"84":5,"85":1,"86":1,"87":1,"88":3,"89":1,"90":1,"91":1,"99":2,"100":2,"101":2,"102":2,"104":2,"105":2,"106":2,"107":2,"108":2,"109":2,"110":1,"113":1,"114":1,"115":1,"118":1,"122":2,"124":2,"126":1,"128":1,"130":1,"132":1,"133":1,"134":1,"136":1,"138":1,"150":1,"152":1,"158":2,"161":2,"163":1,"164":1,"165":3,"194":9,"195":2,"256":1,"265":1,"270":2,"278":1}}],["search",{"2":{"307":1,"308":1}}],["segment",{"0":{"207":1}}],["segments",{"0":{"205":1},"1":{"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1}}],["sell",{"2":{"213":1}}],["select",{"2":{"199":1}}],["self",{"0":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"39":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,"60":1,"61":1,"62":1,"63":1,"64":1,"78":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"92":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"122":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"145":1,"146":1,"147":1,"148":1,"149":1,"183":1,"194":1,"195":1,"202":1,"203":1,"204":1,"244":1,"245":1,"246":1,"260":1,"261":1,"262":1,"263":1},"2":{"15":13,"16":4,"17":4,"18":2,"19":2,"20":1,"21":3,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"39":8,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":3,"48":3,"49":3,"50":3,"51":3,"52":3,"60":14,"61":6,"62":3,"63":2,"64":3,"78":3,"84":7,"85":3,"86":3,"87":4,"88":3,"89":2,"90":1,"92":4,"112":2,"113":3,"114":3,"115":3,"116":3,"117":3,"118":2,"122":6,"124":4,"125":2,"126":2,"127":2,"128":3,"129":3,"130":3,"132":2,"133":2,"134":3,"135":2,"136":3,"137":2,"138":2,"145":1,"146":2,"147":2,"148":2,"149":2,"183":2,"194":10,"195":3,"202":5,"203":2,"204":3,"244":7,"245":8,"260":2,"261":2,"262":2,"263":3}}],["session",{"0":{"192":1,"194":2,"198":1,"200":1,"205":1,"213":1,"243":1,"244":1,"253":1,"257":1},"1":{"193":1,"194":1,"195":1,"199":1,"201":1,"202":1,"203":1,"204":1,"206":1,"207":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,"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":2,"245":2,"246":2,"247":2,"248":2,"249":2,"250":2,"251":2,"252":2,"254":1,"255":1,"256":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1},"2":{"194":6,"195":5,"244":1}}],["service",{"0":{"170":2},"2":{"165":1,"294":1,"296":1}}],["server",{"2":{"8":1}}],["sequence",{"0":{"40":1},"2":{"40":2}}],["send",{"0":{"61":1},"2":{"18":2,"60":2,"61":4,"69":1,"71":1,"72":1,"74":1,"75":1,"85":1,"86":1,"87":1,"88":1,"89":1,"92":1,"99":1,"102":1,"195":1,"278":3,"305":1}}],["set",{"0":{"69":1,"70":1,"73":1,"85":1,"100":1,"164":1},"2":{"15":1,"21":1,"69":2,"70":2,"72":1,"73":3,"85":2,"99":1,"100":3,"164":2,"268":1,"281":1,"305":2,"306":1,"309":2}}],["safe",{"2":{"2":1,"105":1,"113":1}}],["num为每页显示数量",{"2":{"307":2}}],["num",{"2":{"307":2}}],["npm",{"2":{"307":7,"308":1}}],["nliteyuki",{"2":{"289":1}}],["nick",{"0":{"224":1}}],["nickname",{"0":{"239":1},"2":{"1":1}}],["name>",{"2":{"290":2}}],["name=module",{"2":{"163":3}}],["name=f",{"2":{"126":2}}],["name=",{"2":{"65":1,"66":1,"84":3,"296":1}}],["name",{"0":{"18":1,"60":1,"69":1,"71":1,"78":1,"126":1,"128":1,"130":1,"133":1,"134":1,"136":1,"138":1,"165":2,"175":1,"185":1,"187":1,"223":1,"230":1,"236":1,"270":1},"2":{"18":6,"60":9,"69":7,"70":2,"71":5,"73":3,"74":3,"78":3,"125":3,"126":5,"127":1,"128":6,"129":2,"130":5,"133":4,"134":5,"135":2,"136":5,"137":2,"138":3,"163":20,"164":9,"165":6,"183":1,"270":1,"278":2,"305":4,"307":8}}],["new",{"2":{"15":1,"104":3,"268":1}}],["normal>",{"2":{"159":1}}],["noninfringement",{"2":{"213":1}}],["nonlocal",{"2":{"143":1}}],["nonedog",{"2":{"296":1}}],["none",{"0":{"15":1,"18":1,"29":1,"30":1,"39":1,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"60":1,"64":1,"85":1,"86":1,"87":1,"89":1,"95":1,"118":1,"126":1,"138":1,"150":1,"188":1,"194":2,"204":1,"223":2,"224":2,"225":2,"226":2,"230":2,"231":2,"232":2,"235":2,"236":2,"239":2,"240":2,"241":2,"242":2,"251":2,"252":2},"2":{"15":1,"18":2,"28":1,"29":1,"30":1,"39":1,"40":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"60":3,"61":1,"63":1,"64":2,"85":1,"87":1,"89":1,"94":2,"105":1,"106":1,"107":1,"126":1,"138":2,"141":1,"143":1,"150":1,"163":4,"164":1,"194":1,"204":1,"258":2,"263":1,"267":1}}],["nonebot插件目录",{"2":{"285":1}}],["nonebot",{"2":{"2":1,"266":1,"274":6,"278":3,"285":1,"296":1,"297":4,"300":1}}],["nonebot下配置已迁移至nonebot键下",{"2":{"1":1}}],["nonebot机器人的配置",{"2":{"1":1}}],["no",{"0":{"108":1,"109":1,"110":1,"175":1,"185":1,"186":1,"187":1,"208":1,"210":1,"212":1,"222":1,"228":1,"229":1,"234":1,"238":1,"246":1,"247":1,"248":1,"249":1,"250":1},"2":{"67":1,"68":1,"108":3,"109":3,"110":4,"213":1}}],["notice",{"2":{"213":2}}],["notimplementederror",{"2":{"145":1}}],["not",{"2":{"18":1,"28":1,"60":1,"61":2,"64":4,"69":1,"87":1,"90":3,"92":1,"105":1,"106":1,"107":1,"108":3,"109":3,"128":2,"130":2,"134":2,"136":2,"150":2,"163":1,"164":8,"204":1,"213":1,"297":2}}],["nohup",{"2":{"17":2,"290":1,"291":1}}],["noverify=0",{"2":{"12":1}}],["node等进程",{"2":{"8":1}}],["若不存在则返回空",{"2":{"305":1}}],["若不存在则创建于config",{"2":{"305":1}}],["若存在则返回",{"2":{"305":1}}],["若存在则覆盖",{"2":{"305":1}}],["若存在则会覆盖",{"2":{"305":1}}],["若要戳20s后停止",{"2":{"291":1}}],["若要接收外部请求请填写0",{"2":{"1":1}}],["若函数中启动了其他task",{"2":{"290":1}}],["若有面向普通用户部分",{"2":{"286":1}}],["若有子进程订阅则推送给子进程",{"2":{"92":1}}],["若为空",{"2":{"60":1}}],["若你不希望提供这些信息",{"2":{"303":1}}],["若你不能访问github",{"2":{"6":1}}],["若你修改了端口号请将20216",{"2":{"7":1}}],["若没有metadata",{"2":{"302":1}}],["若没有",{"2":{"1":1}}],["03",{"2":{"278":2}}],["0000",{"2":{"278":3}}],["00",{"2":{"278":18}}],["02",{"2":{"167":1,"196":1}}],["04",{"2":{"151":1}}],["04+",{"2":{"8":1}}],["0",{"0":{"17":1,"215":1,"255":1,"256":1},"2":{"1":5,"3":4,"15":1,"17":2,"39":1,"72":1,"73":2,"74":2,"75":1,"92":1,"98":2,"99":2,"100":2,"101":2,"102":1,"202":1,"291":1,"296":2,"302":2}}],["14s",{"2":{"313":2}}],["1h",{"2":{"313":2}}],["1d",{"2":{"313":2}}],["1145141919810",{"2":{"305":1}}],["11",{"2":{"196":1}}],["19",{"2":{"192":1,"200":1,"253":1,"257":1}}],["1919810",{"2":{"1":1}}],["18",{"2":{"151":1}}],["12",{"2":{"120":1,"157":1}}],["127",{"2":{"1":1,"3":1}}],["10",{"2":{"156":1,"305":1}}],["10+",{"2":{"6":1,"8":1}}],["10版本后",{"2":{"1":1}}],["1",{"0":{"216":1},"2":{"1":1,"2":1,"3":2,"17":2,"18":2,"64":1,"73":2,"74":2,"75":1,"92":2,"99":3,"100":2,"101":1,"102":1,"104":1,"144":1,"145":1,"163":4,"270":2,"296":1,"302":2}}],["请注意",{"2":{"301":1}}],["请确保您所编写的html代码能被bot解析",{"2":{"301":1}}],["请确保用户文档是通俗易懂的",{"2":{"286":1}}],["请确保文档内的链接是正确的",{"2":{"286":1}}],["请确保文档是完善的",{"2":{"286":1}}],["请确保注释风格为google",{"2":{"286":1}}],["请确保代码的类型提示是正确的",{"2":{"286":1}}],["请确保代码是可运行的",{"2":{"286":1}}],["请确保你了解markdown语法和基本前端知识",{"2":{"283":1}}],["请遵循以下规范",{"2":{"286":1}}],["请阅读插件主页的说明",{"2":{"308":1}}],["请阅读插件开发文档和api",{"2":{"283":1}}],["请阅读以下内容",{"2":{"283":1}}],["请不要将需要动态加载的内容写入配置文件",{"2":{"103":1}}],["请联系插件作者或在安全模式safe",{"2":{"11":1}}],["请先查阅插件文档",{"2":{"11":1}}],["请正确安装git",{"2":{"11":1}}],["请使用",{"2":{"11":1}}],["请使用path",{"2":{"8":1}}],["请在此填写相同的值",{"2":{"3":1}}],["请开启alconna",{"2":{"1":1}}],["请尽快迁移",{"2":{"1":1}}],["空命令头",{"2":{"1":1}}],["指令前缀",{"2":{"1":1}}],["31",{"2":{"190":1}}],["3",{"0":{"218":1},"2":{"1":1,"156":1,"164":1,"278":1}}],["6",{"2":{"1":1,"156":1}}],["轻雪天气liteyuki",{"0":{"311":1},"1":{"312":1}}],["轻雪文档",{"2":{"306":1}}],["轻雪命令liteyuki",{"0":{"305":1},"1":{"306":1}}],["轻雪会收集以下内容",{"2":{"303":1}}],["轻雪会自动合并这些配置文件",{"2":{"0":1}}],["轻雪原版资源包请查看liteyukibot",{"2":{"301":1}}],["轻雪主进程不涉及聊天部分",{"2":{"297":1}}],["轻雪函数",{"0":{"288":1},"1":{"289":1,"290":1,"291":1,"292":1,"293":1},"2":{"288":1}}],["轻雪框架提供了一个内存共享通信的接口",{"2":{"280":1}}],["轻雪运行在主进程",{"2":{"277":1}}],["轻雪api文档生成器",{"2":{"275":1}}],["轻雪官方星图",{"2":{"275":1}}],["轻雪官方机器人",{"2":{"273":1}}],["轻雪机器人统计接口",{"2":{"275":1}}],["轻雪机器人",{"2":{"274":1}}],["轻雪",{"2":{"273":1}}],["轻雪抽象消息事件",{"2":{"194":1}}],["轻雪生命周期管理",{"2":{"39":1}}],["轻雪实例",{"2":{"28":1}}],["轻雪的更新功能依赖git",{"2":{"8":1}}],["轻雪使用git进行版本管理",{"2":{"6":1}}],["轻雪不局限于onebot适配器",{"2":{"4":1}}],["轻雪调试",{"2":{"2":1}}],["轻雪插件是轻雪内置的一部分功能",{"2":{"294":1}}],["轻雪插件目录",{"2":{"285":1}}],["轻雪插件目录列表",{"2":{"1":1}}],["轻雪插件列表",{"2":{"1":1}}],["轻雪支持yaml",{"2":{"0":1}}],["y",{"2":{"165":1}}],["your",{"2":{"163":2}}],["yellow>",{"2":{"159":1}}],["y>",{"2":{"16":2}}],["y>liteyuki",{"2":{"16":2}}],["yamlweather",{"2":{"311":1}}],["yamlname",{"2":{"302":1}}],["yamlnonebot",{"2":{"1":1}}],["yaml",{"0":{"105":1,"113":1},"2":{"0":1,"2":1,"105":4,"108":2,"110":1,"113":2}}],["yml格式的所有合法内容",{"2":{"305":1}}],["yml文件",{"2":{"302":1}}],["yml中填写一些信息",{"2":{"302":1}}],["yml中设置dev",{"2":{"284":1}}],["yml",{"2":{"0":1,"108":1,"110":1,"302":2,"305":1}}],["yml和config目录",{"2":{"0":1}}],["你在a包中定义了一个index",{"2":{"302":1}}],["你自己制作的资源包也应该遵循这个规则",{"2":{"302":1}}],["你也可以自己制作资源包",{"2":{"301":1}}],["你的插件代码",{"2":{"296":1}}],["你的贡献将会使轻雪变得更好",{"2":{"287":1}}],["你应该使用其他储存方式",{"2":{"103":1}}],["你将无法使用更新功能",{"2":{"8":1}}],["你可以选择开启auto",{"2":{"303":1}}],["你可以自由使用",{"2":{"303":1}}],["你可以自定义一些信息",{"2":{"302":1}}],["你可以在多个线程中读写共享内存",{"2":{"280":1}}],["你可以通过storage模块实现内存共享通信",{"2":{"280":1}}],["你可以使用nonebot2支持的任何适配器或使用轻雪讯息传递插件",{"2":{"4":1}}],["你可在config目录下创建多个配置文件",{"2":{"0":1}}],["你可修改配置项后重启轻雪",{"2":{"0":1}}],["你只需要修改superusers及nickname字段即可",{"2":{"0":1}}],["绝大多数情况下",{"2":{"0":1}}],["取决于你个人的喜好",{"2":{"0":1}}],["配置项",{"2":{"311":1}}],["配置项目",{"2":{"104":1}}],["配置了命令别名的命令可以使用别名代替原命令",{"2":{"304":1}}],["配置文件尽量扁平化",{"2":{"103":1}}],["配置值",{"2":{"29":1,"30":1}}],["配置键",{"2":{"29":1,"30":1}}],["配置",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1},"2":{"15":2,"159":1,"306":1}}]],"serializationVersion":2}`;export{e as default}; diff --git a/assets/chunks/ContributorBar.DumWpLf_.js b/assets/chunks/ContributorBar.BEMv3ZFt.js similarity index 66% rename from assets/chunks/ContributorBar.DumWpLf_.js rename to assets/chunks/ContributorBar.BEMv3ZFt.js index 07fd45d1..0ffd4b59 100644 --- a/assets/chunks/ContributorBar.DumWpLf_.js +++ b/assets/chunks/ContributorBar.BEMv3ZFt.js @@ -1 +1 @@ -import{g as c}from"./theme.2w8Mz6uA.js";import{d as e,o as a,c as n,j as t,t as i,k as p,_ as u}from"./framework.v7PlT0Wt.js";const _="https://github.com/",o="LiteyukiStudio/LiteyukiBot",b=`${_}${o}`,m={class:"contributor-bar"},l=e({__name:"ContributorBar",setup(h){const r=`https://contrib.rocks/image?repo=${o}`,s=`${b}/graphs/contributors`;return(d,f)=>(a(),n("div",m,[t("h2",null,i(p(c)("thx_contributors")),1),t("a",{href:s},[t("div",{class:"contributor-list"},[t("img",{src:r,alt:"Contributors"})])])]))}}),k=u(l,[["__scopeId","data-v-bc374713"]]);export{k as C}; +import{g as c}from"./theme.DegCgHop.js";import{d as e,c as a,o as n,j as t,t as i,k as p,_ as u}from"./framework.BUxnStXl.js";const _="https://github.com/",o="LiteyukiStudio/LiteyukiBot",b=`${_}${o}`,m={class:"contributor-bar"},l=e({__name:"ContributorBar",setup(h){const r=`https://contrib.rocks/image?repo=${o}`,s=`${b}/graphs/contributors`;return(d,f)=>(n(),a("div",m,[t("h2",null,i(p(c)("thx_contributors")),1),t("a",{href:s},[t("div",{class:"contributor-list"},[t("img",{src:r,alt:"Contributors"})])])]))}}),k=u(l,[["__scopeId","data-v-bc374713"]]);export{k as C}; diff --git a/assets/chunks/VPLocalSearchBox.CgStO0jX.js b/assets/chunks/VPLocalSearchBox.CgStO0jX.js new file mode 100644 index 00000000..b4181a18 --- /dev/null +++ b/assets/chunks/VPLocalSearchBox.CgStO0jX.js @@ -0,0 +1,8 @@ +var Ft=Object.defineProperty;var Rt=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Rt(a,typeof e!="symbol"?e+"":e,t);import{V as tt,D as le,h as ge,am as nt,an as Ct,ao as At,ap as Mt,q as $e,aq as Lt,d as Dt,ar as st,p as fe,as as zt,at as Pt,s as jt,au as Vt,v as Me,P as he,O as _e,av as $t,aw as Bt,W as Wt,R as Kt,$ as Jt,b as qt,o as H,j as _,a0 as Ut,a4 as Gt,k as L,a5 as Ht,a6 as Qt,c as Z,e as Se,n as it,B as rt,F as at,a as pe,t as me,ax as Yt,ay as ot,az as Zt,aa as Xt,af as en,aA as tn,_ as nn}from"./framework.BUxnStXl.js";import{u as sn,c as rn}from"./theme.DegCgHop.js";const an={en:()=>tt(()=>import("./@localSearchIndexen.Uyy0KFlq.js"),[]),root:()=>tt(()=>import("./@localSearchIndexroot.B9S8YLcg.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])"],Ne=gt.join(","),bt=typeof Element>"u",re=bt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Oe=!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},Fe=function a(e,t){var n;t===void 0&&(t=!0);var s=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),r=s===""||s==="true",i=r||t&&e&&a(e.parentNode);return i},on=function(e){var t,n=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return n===""||n==="true"},yt=function(e,t,n){if(Fe(e))return[];var s=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&re.call(e,Ne)&&s.unshift(e),s=s.filter(n),s},wt=function a(e,t,n){for(var s=[],r=Array.from(e);r.length;){var i=r.shift();if(!Fe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,n);n.flatten?s.push.apply(s,c):s.push({scopeParent:i,candidates:c})}else{var f=re.call(i,Ne);f&&n.filter(i)&&(t||!e.includes(i))&&s.push(i);var v=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),h=!Fe(v,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(v&&h){var b=a(v===!0?i.children:v.children,!0,n);n.flatten?s.push.apply(s,b):s.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return s},xt=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)||on(e))&&!xt(e)?0:e.tabIndex},ln=function(e,t){var n=ie(e);return n<0&&t&&!xt(e)?0:n},cn=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},_t=function(e){return e.tagName==="INPUT"},un=function(e){return _t(e)&&e.type==="hidden"},dn=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return t},fn=function(e,t){for(var n=0;nsummary:first-of-type"),i=r?e.parentElement:e;if(re.call(i,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="legacy-full"){if(typeof s=="function"){for(var o=e;e;){var l=e.parentElement,c=Oe(e);if(l&&!l.shadowRoot&&s(l)===!0)return lt(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(vn(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return lt(e);return!1},bn=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var n=0;n=0)},wn=function a(e){var t=[],n=[];return e.forEach(function(s,r){var i=!!s.scopeParent,o=i?s.scopeParent:s,l=ln(o,i),c=i?a(s.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):n.push({documentOrder:r,tabIndex:l,item:s,isScope:i,content:c})}),n.sort(cn).reduce(function(s,r){return r.isScope?s.push.apply(s,r.content):s.push(r.content),s},[]).concat(t)},xn=function(e,t){t=t||{};var n;return t.getShadowRoot?n=wt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:yn}):n=yt(e,t.includeContainer,Be.bind(null,t)),wn(n)},_n=function(e,t){t=t||{};var n;return t.getShadowRoot?n=wt([e],t.includeContainer,{filter:Re.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):n=yt(e,t.includeContainer,Re.bind(null,t)),n},ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,Ne)===!1?!1:Be(t,e)},Sn=gt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,Sn)===!1?!1:Re(t,e)};/*! +* focus-trap 7.6.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function We(a,e){(e==null||e>a.length)&&(e=a.length);for(var t=0,n=Array(e);t0){var n=e[e.length-1];n!==t&&n._setPausedState(!0)}var s=e.indexOf(t);s===-1||e.splice(s,1),e.push(t)},deactivateTrap:function(e,t){var n=e.indexOf(t);n!==-1&&e.splice(n,1),e.length>0&&!e[e.length-1]._isManuallyPaused()&&e[e.length-1]._setPausedState(!1)}},Cn=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},An=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},be=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Mn=function(e){return be(e)&&!e.shiftKey},Ln=function(e){return be(e)&&e.shiftKey},ft=function(e){return setTimeout(e,0)},ve=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),s=1;s1&&arguments[1]!==void 0?arguments[1]:{},g=d.hasFallback,E=g===void 0?!1:g,T=d.params,O=T===void 0?[]:T,S=r[u];if(typeof S=="function"&&(S=S.apply(void 0,Nn(O))),S===!0&&(S=void 0),!S){if(S===void 0||S===!1)return S;throw new Error("`".concat(u,"` was specified but was not a node, or did not return a node"))}var R=S;if(typeof S=="string"){try{R=n.querySelector(S)}catch(m){throw new Error("`".concat(u,'` appears to be an invalid selector; error="').concat(m.message,'"'))}if(!R&&!E)throw new Error("`".concat(u,"` as selector refers to no known node"))}return R},v=function(){var u=f("initialFocus",{hasFallback:!0});if(u===!1)return!1;if(u===void 0||u&&!Le(u,r.tabbableOptions))if(c(n.activeElement)>=0)u=n.activeElement;else{var d=i.tabbableGroups[0],g=d&&d.firstTabbableNode;u=g||f("fallbackFocus")}else u===null&&(u=f("fallbackFocus"));if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},h=function(){if(i.containerGroups=i.containers.map(function(u){var d=xn(u,r.tabbableOptions),g=_n(u,r.tabbableOptions),E=d.length>0?d[0]:void 0,T=d.length>0?d[d.length-1]:void 0,O=g.find(function(m){return ae(m)}),S=g.slice().reverse().find(function(m){return ae(m)}),R=!!d.find(function(m){return ie(m)>0});return{container:u,tabbableNodes:d,focusableNodes:g,posTabIndexesFound:R,firstTabbableNode:E,lastTabbableNode:T,firstDomTabbableNode:O,lastDomTabbableNode:S,nextTabbableNode:function(p){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,F=d.indexOf(p);return F<0?I?g.slice(g.indexOf(p)+1).find(function(z){return ae(z)}):g.slice(0,g.indexOf(p)).reverse().find(function(z){return ae(z)}):d[F+(I?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!f("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?b(d.shadowRoot):d},y=function(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){y(v());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Cn(u)&&u.select()}},x=function(u){var d=f("setReturnFocus",{params:[u]});return d||(d===!1?!1:u)},w=function(u){var d=u.target,g=u.event,E=u.isBackward,T=E===void 0?!1:E;d=d||Ee(g),h();var O=null;if(i.tabbableGroups.length>0){var S=c(d,g),R=S>=0?i.containerGroups[S]:void 0;if(S<0)T?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(T){var m=i.tabbableGroups.findIndex(function(j){var k=j.firstTabbableNode;return d===k});if(m<0&&(R.container===d||Le(d,r.tabbableOptions)&&!ae(d,r.tabbableOptions)&&!R.nextTabbableNode(d,!1))&&(m=S),m>=0){var p=m===0?i.tabbableGroups.length-1:m-1,I=i.tabbableGroups[p];O=ie(d)>=0?I.lastTabbableNode:I.lastDomTabbableNode}else be(g)||(O=R.nextTabbableNode(d,!1))}else{var F=i.tabbableGroups.findIndex(function(j){var k=j.lastTabbableNode;return d===k});if(F<0&&(R.container===d||Le(d,r.tabbableOptions)&&!ae(d,r.tabbableOptions)&&!R.nextTabbableNode(d))&&(F=S),F>=0){var z=F===i.tabbableGroups.length-1?0:F+1,P=i.tabbableGroups[z];O=ie(d)>=0?P.firstTabbableNode:P.firstDomTabbableNode}else be(g)||(O=R.nextTabbableNode(d))}}else O=f("fallbackFocus");return O},C=function(u){var d=Ee(u);if(!(c(d,u)>=0)){if(ve(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}ve(r.allowOutsideClick,u)||u.preventDefault()}},A=function(u){var d=Ee(u),g=c(d,u)>=0;if(g||d instanceof Document)g&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var E,T=!0;if(i.mostRecentlyFocusedNode)if(ie(i.mostRecentlyFocusedNode)>0){var O=c(i.mostRecentlyFocusedNode),S=i.containerGroups[O].tabbableNodes;if(S.length>0){var R=S.findIndex(function(m){return m===i.mostRecentlyFocusedNode});R>=0&&(r.isKeyForward(i.recentNavEvent)?R+1=0&&(E=S[R-1],T=!1))}}else i.containerGroups.some(function(m){return m.tabbableNodes.some(function(p){return ie(p)>0})})||(T=!1);else T=!1;T&&(E=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(E||i.mostRecentlyFocusedNode||v())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var g=w({event:u,isBackward:d});g&&(be(u)&&u.preventDefault(),y(g))},Q=function(u){(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){An(u)&&ve(r.escapeDeactivates,u)!==!1&&(u.preventDefault(),o.deactivate())},V=function(u){var d=Ee(u);c(d,u)>=0||ve(r.clickOutsideDeactivates,u)||ve(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},$=function(){if(i.active)return dt.activateTrap(s,o),i.delayInitialFocusTimer=r.delayInitialFocus?ft(function(){y(v())}):y(v()),n.addEventListener("focusin",A,!0),n.addEventListener("mousedown",C,{capture:!0,passive:!1}),n.addEventListener("touchstart",C,{capture:!0,passive:!1}),n.addEventListener("click",V,{capture:!0,passive:!1}),n.addEventListener("keydown",Q,{capture:!0,passive:!1}),n.addEventListener("keydown",W),o},ye=function(){if(i.active)return n.removeEventListener("focusin",A,!0),n.removeEventListener("mousedown",C,!0),n.removeEventListener("touchstart",C,!0),n.removeEventListener("click",V,!0),n.removeEventListener("keydown",Q,!0),n.removeEventListener("keydown",W),o},M=function(u){var d=u.some(function(g){var E=Array.from(g.removedNodes);return E.some(function(T){return T===i.mostRecentlyFocusedNode})});d&&y(v())},q=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(M):void 0,U=function(){q&&(q.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){q.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=l(u,"onActivate"),g=l(u,"onPostActivate"),E=l(u,"checkCanFocusTrap");E||h(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=n.activeElement,d==null||d();var T=function(){E&&h(),$(),U(),g==null||g()};return E?(E(i.containers.concat()).then(T,T),this):(T(),this)},deactivate:function(u){if(!i.active)return this;var d=ut({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,ye(),i.active=!1,i.paused=!1,U(),dt.deactivateTrap(s,o);var g=l(d,"onDeactivate"),E=l(d,"onPostDeactivate"),T=l(d,"checkCanReturnFocus"),O=l(d,"returnFocus","returnFocusOnDeactivate");g==null||g();var S=function(){ft(function(){O&&y(x(i.nodeFocusedBeforeActivation)),E==null||E()})};return O&&T?(T(x(i.nodeFocusedBeforeActivation)).then(S,S),this):(S(),this)},pause:function(u){return i.active?(i.manuallyPaused=!0,this._setPausedState(!0,u)):this},unpause:function(u){return i.active?(i.manuallyPaused=!1,s[s.length-1]!==this?this:this._setPausedState(!1,u)):this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(g){return typeof g=="string"?n.querySelector(g):g}),i.active&&h(),U(),this}},Object.defineProperties(o,{_isManuallyPaused:{value:function(){return i.manuallyPaused}},_setPausedState:{value:function(u,d){if(i.paused===u)return this;if(i.paused=u,u){var g=l(d,"onPause"),E=l(d,"onPostPause");g==null||g(),ye(),U(),E==null||E()}else{var T=l(d,"onUnpause"),O=l(d,"onPostUnpause");T==null||T(),h(),$(),U(),O==null||O()}return this}}}),o.updateContainerElements(e),o};function Pn(a,e={}){let t;const{immediate:n,...s}=e,r=le(!1),i=le(!1),o=h=>t&&t.activate(h),l=h=>t&&t.deactivate(h),c=()=>{t&&(t.pause(),i.value=!0)},f=()=>{t&&(t.unpause(),i.value=!1)},v=ge(()=>{const h=nt(a);return Ct(h).map(b=>{const y=nt(b);return typeof y=="string"?y:At(y)}).filter(Mt)});return $e(v,h=>{h.length&&(t=zn(h,{...s,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),n&&o())},{flush:"post"}),Lt(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:f}}class ce{constructor(e,t=!0,n=[],s=5e3){this.ctx=e,this.iframes=t,this.exclude=n,this.iframesTimeout=s}static matches(e,t){const n=typeof t=="string"?[t]:t,s=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(s){let r=!1;return n.every(i=>s.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(n=>{const s=t.filter(r=>r.contains(n)).length>0;t.indexOf(n)===-1&&!s&&t.push(n)}),t}getIframeContents(e,t,n=()=>{}){let s;try{const r=e.contentWindow;if(s=r.document,!r||!s)throw new Error("iframe inaccessible")}catch{n()}s&&t(s)}isIframeBlank(e){const t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}observeIframeLoad(e,t,n){let s=!1,r=null;const i=()=>{if(!s){s=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,n))}catch{n()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,n){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch{n()}}waitForIframes(e,t){let n=0;this.forEachIframe(e,()=>!0,s=>{n++,this.waitForIframes(s.querySelector("html"),()=>{--n||t()})},s=>{s||t()})}forEachIframe(e,t,n,s=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&s(o)};i||l(),r.forEach(c=>{ce.matches(c,this.exclude)?l():this.onIframeReady(c,f=>{t(c)&&(o++,n(f)),l()},l)})}createIterator(e,t,n){return document.createNodeIterator(e,t,n,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,n){const s=e.compareDocumentPosition(n),r=Node.DOCUMENT_POSITION_PRECEDING;if(s&r)if(t!==null){const i=t.compareDocumentPosition(n),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let n;return t===null?n=e.nextNode():n=e.nextNode()&&e.nextNode(),{prevNode:t,node:n}}checkIframeFilter(e,t,n,s){let r=!1,i=!1;return s.forEach((o,l)=>{o.val===n&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,n)?(r===!1&&!i?s.push({val:n,handled:!0}):r!==!1&&!i&&(s[r].handled=!0),!0):(r===!1&&s.push({val:n,handled:!1}),!1)}handleOpenIframes(e,t,n,s){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,n,s)})})}iterateThroughNodes(e,t,n,s,r){const i=this.createIterator(t,e,s);let o=[],l=[],c,f,v=()=>({prevNode:f,node:c}=this.getIteratorNode(i),c);for(;v();)this.iframes&&this.forEachIframe(t,h=>this.checkIframeFilter(c,f,h,o),h=>{this.createInstanceOnIframe(h).forEachNode(e,b=>l.push(b),s)}),l.push(c);l.forEach(h=>{n(h)}),this.iframes&&this.handleOpenIframes(o,e,n,s),r()}forEachNode(e,t,n,s=()=>{}){const r=this.getContexts();let i=r.length;i||s(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,n,()=>{--i<=0&&s()})};this.iframes?this.waitForIframes(o,l):l()})}}let jn=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const n=this.opt.log;this.opt.debug&&typeof n=="object"&&typeof n[t]=="function"&&n[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",s=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${n}`),s+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+s))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,n,s)=>{let r=s.charAt(n+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let s=[];return e.split("").forEach(r=>{n.every(i=>{if(i.indexOf(r)!==-1){if(s.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),s.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let n=this.opt.accuracy,s=typeof n=="string"?n:n.value,r=typeof n=="string"?[]:n.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),s){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(n=>{this.opt.separateWordSearch?n.split(" ").forEach(s=>{s.trim()&&t.indexOf(s)===-1&&t.push(s)}):n.trim()&&t.indexOf(n)===-1&&t.push(n)}),{keywords:t.sort((n,s)=>s.length-n.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let n=0;return e.sort((s,r)=>s.start-r.start).forEach(s=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(s,n);o&&(s.start=r,s.length=i-r,t.push(s),n=i)}),t}callNoMatchOnInvalidRanges(e,t){let n,s,r=!1;return e&&typeof e.start<"u"?(n=parseInt(e.start,10),s=n+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&s-t>0&&s-n>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:n,end:s,valid:r}}checkWhitespaceRanges(e,t,n){let s,r=!0,i=n.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,s=l+parseInt(e.length,10),s>i&&(s=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||s-l<0||l>i||s>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):n.substring(l,s).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:s,valid:r}}getTextNodes(e){let t="",n=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,s=>{n.push({start:t.length,end:(t+=s.textContent).length,node:s})},s=>this.matchesExclude(s.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:n})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,n){const s=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(n-t);let o=document.createElement(s);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,n,s,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!s(i.node))return!1;const c=t-i.start,f=(n>i.end?i.end:n)-i.start,v=e.value.substr(0,i.start),h=e.value.substr(f+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,f),e.value=v+h,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=f),e.nodes[y].end-=f)}),n-=f,r(i.node.previousSibling,i.start),n>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,n,s,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!n(c[i],l))continue;let f=c.index;if(i!==0)for(let v=1;v{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let v=1;vn(l[i],v),(v,h)=>{e.lastIndex=h,s(v)})}r()})}wrapRangeFromIndex(e,t,n,s){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:f,valid:v}=this.checkWhitespaceRanges(o,i,r.value);v&&this.wrapRangeInMappedTextNode(r,c,f,h=>t(h,o,r.value.substring(c,f),l),h=>{n(h,o)})}),s()})}unwrapMatches(e){const t=e.parentNode;let n=document.createDocumentFragment();for(;e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let n=0,s="wrapMatches";const r=i=>{n++,this.opt.each(i)};this.opt.acrossElements&&(s="wrapMatchesAcrossElements"),this[s](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,n),r,()=>{n===0&&this.opt.noMatch(e),this.opt.done(n)})}mark(e,t){this.opt=t;let n=0,s="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let f=new RegExp(this.createRegExp(c),`gm${o}`),v=0;this.log(`Searching with expression "${f}"`),this[s](f,1,(h,b)=>this.opt.filter(b,c,n,v),h=>{v++,n++,this.opt.each(h)},()=>{v===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(n):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(s="wrapMatchesAcrossElements"),i===0?this.opt.done(n):l(r[0])}markRanges(e,t){this.opt=t;let n=0,s=this.checkRanges(e);s&&s.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(s)),this.wrapRangeFromIndex(s,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{n++,this.opt.each(r,i)},()=>{this.opt.done(n)})):this.opt.done(n)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,n=>{this.unwrapMatches(n)},n=>{const s=ce.matches(n,t),r=this.matchesExclude(n);return!s||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Vn(a){const e=new jn(a);return this.mark=(t,n)=>(e.mark(t,n),this),this.markRegExp=(t,n)=>(e.markRegExp(t,n),this),this.markRanges=(t,n)=>(e.markRanges(t,n),this),this.unmark=t=>(e.unmark(t),this),this}function ke(a,e,t,n){function s(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(f){try{c(n.next(f))}catch(v){i(v)}}function l(f){try{c(n.throw(f))}catch(v){i(v)}}function c(f){f.done?r(f.value):s(f.value).then(o,l)}c((n=n.apply(a,[])).next())})}const $n="ENTRIES",St="KEYS",Et="VALUES",D="";class De{constructor(e,t){const n=e._tree,s=Array.from(n.keys());this.set=e,this._type=t,this._path=s.length>0?[{node:n,keys:s}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=oe(this._path);if(oe(t)===D)return{done:!1,value:this.result()};const n=e.get(oe(t));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=oe(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>oe(e)).filter(e=>e!==D).join("")}value(){return oe(this._path).node.get(D)}result(){switch(this._type){case Et:return this.value();case St:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const oe=a=>a[a.length-1],Bn=(a,e,t)=>{const n=new Map;if(e===void 0)return n;const s=e.length+1,r=s+t,i=new Uint8Array(r*s).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===D){const f=s[l-1];f<=t&&n.set(o,[a.get(c),f])}else{let f=r;for(let v=0;vt)continue e}Tt(a.get(c),e,t,n,s,f,i,o+c)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,n]=Ce(this._tree,e.slice(this._prefix.length));if(t===void 0){const[s,r]=Ue(n);for(const i of s.keys())if(i!==D&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),s.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Wn(this._tree,e)}entries(){return new De(this,$n)}forEach(e){for(const[t,n]of this)e(t,n,this)}fuzzyGet(e,t){return Bn(this._tree,e,t)}get(e){const t=Ke(this._tree,e);return t!==void 0?t.get(D):void 0}has(e){const t=Ke(this._tree,e);return t!==void 0&&t.has(D)}keys(){return new De(this,St)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(D,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ze(this._tree,e);return n.set(D,t(n.get(D))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ze(this._tree,e);let s=n.get(D);return s===void 0&&n.set(D,s=t()),s}values(){return new De(this,Et)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[n,s]of e)t.set(n,s);return t}static fromObject(e){return X.from(Object.entries(e))}}const Ce=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const n of a.keys())if(n!==D&&e.startsWith(n))return t.push([a,n]),Ce(a.get(n),e.slice(n.length),t);return t.push([a,e]),Ce(void 0,"",t)},Ke=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==D&&e.startsWith(t))return Ke(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let n=0;a&&n{const[t,n]=Ce(a,e);if(t!==void 0){if(t.delete(D),t.size===0)It(n);else if(t.size===1){const[s,r]=t.entries().next().value;kt(n,s,r)}}},It=a=>{if(a.length===0)return;const[e,t]=Ue(a);if(e.delete(t),e.size===0)It(a.slice(0,-1));else if(e.size===1){const[n,s]=e.entries().next().value;n!==D&&kt(a.slice(0,-1),n,s)}},kt=(a,e,t)=>{if(a.length===0)return;const[n,s]=Ue(a);n.set(s+e,t),n.delete(s)},Ue=a=>a[a.length-1],Ge="or",Nt="and",Kn="and_not";class ue{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},je),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ht),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},Hn),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=qe,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:n,processTerm:s,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const f=t(e,c);if(f==null)continue;const v=n(f.toString(),c),h=this._fieldIds[c],b=new Set(v).size;this.addFieldLength(l,h,this._documentCount-1,b);for(const y of v){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(h,l,w);else x&&this.addTerm(h,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:n=10}=t,s={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,f)=>(o.push(c),(f+1)%n===0?{chunk:[],promise:l.then(()=>new Promise(v=>setTimeout(v,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),s);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:n,extractField:s,fields:r,idField:i}=this._options,o=s(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const f=s(e,c);if(f==null)continue;const v=t(f.toString(),c),h=this._fieldIds[c],b=new Set(v).size;this.removeFieldLength(l,h,this._documentCount,b);for(const y of v){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(h,l,w);else x&&this.removeTerm(h,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((n,s)=>{this.removeFieldLength(t,s,this._documentCount,n)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:n,batchWait:s}=this._options.autoVacuum;this.conditionalVacuum({batchSize:n,batchWait:s},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const n of e)this.discard(n)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:n}=this._options,s=n(e,t);this.discard(s),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const n=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=qe,this.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return ke(this,void 0,void 0,function*(){const n=this._dirtCount;if(this.vacuumConditionsMet(t)){const s=e.batchSize||Je.batchSize,r=e.batchWait||Je.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,f]of l)for(const[v]of f)this._documentIds.has(v)||(f.size<=1?l.delete(c):f.delete(v));this._index.get(o).size===0&&this._index.delete(o),i%s===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=n}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:n}=e;return t=t||Ve.minDirtCount,n=n||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=n}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const{searchOptions:n}=this._options,s=Object.assign(Object.assign({},n),t),r=this.executeQuery(e,t),i=[];for(const[o,{score:l,terms:c,match:f}]of r){const v=c.length||1,h={id:this._documentIds.get(o),score:l*v,terms:Object.keys(f),queryTerms:c,match:f};Object.assign(h,this._storedFields.get(o)),(s.filter==null||s.filter(h))&&i.push(h)}return e===ue.wildcard&&s.boostDocument==null||i.sort(mt),i}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const n=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=n.get(o);l!=null?(l.score+=r,l.count+=1):n.set(o,{score:r,terms:i,count:1})}const s=[];for(const[r,{score:i,terms:o,count:l}]of n)s.push({suggestion:r,terms:o,score:i/l});return s.sort(mt),s}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return ke(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(je.hasOwnProperty(e))return Pe(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:n,documentIds:s,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Te(s),l._fieldLength=Te(r),l._storedFields=Te(i);for(const[c,f]of l._documentIds)l._idToShortId.set(f,c);for(const[c,f]of n){const v=new Map;for(const h of Object.keys(f)){let b=f[h];o===1&&(b=b.ds),v.set(parseInt(h,10),Te(b))}l._index.set(c,v)}return l}static loadJSAsync(e,t){return ke(this,void 0,void 0,function*(){const{index:n,documentIds:s,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Ie(s),l._fieldLength=yield Ie(r),l._storedFields=yield Ie(i);for(const[f,v]of l._documentIds)l._idToShortId.set(v,f);let c=0;for(const[f,v]of n){const h=new Map;for(const b of Object.keys(v)){let y=v[b];o===1&&(y=y.ds),h.set(parseInt(b,10),yield Ie(y))}++c%1e3===0&&(yield Ot(0)),l._index.set(f,h)}return l})}static instantiateMiniSearch(e,t){const{documentCount:n,nextId:s,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new ue(t);return c._documentCount=n,c._nextId=s,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new X,c}executeQuery(e,t={}){if(e===ue.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const h=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,h));return this.combineResults(b,h.combineWith)}const{tokenize:n,processTerm:s,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:n,processTerm:s},r),t),{tokenize:o,processTerm:l}=i,v=o(e).flatMap(h=>l(h)).filter(h=>!!h).map(Gn(i)).map(h=>this.executeQuerySpec(h,i));return this.combineResults(v,i.combineWith)}executeQuerySpec(e,t){const n=Object.assign(Object.assign({},this._options.searchOptions),t),s=(n.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:Pe(n.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=n,{fuzzy:c,prefix:f}=Object.assign(Object.assign({},ht.weights),i),v=this._index.get(e.term),h=this.termResults(e.term,e.term,1,e.termBoost,v,s,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const C=x.length-e.term.length;if(!C)continue;y==null||y.delete(x);const A=f*x.length/(x.length+.3*C);this.termResults(e.term,x,A,e.termBoost,w,s,r,l,h)}if(y)for(const x of y.keys()){const[w,C]=y.get(x);if(!C)continue;const A=c*x.length/(x.length+C);this.termResults(e.term,x,A,e.termBoost,w,s,r,l,h)}return h}executeWildcardQuery(e){const t=new Map,n=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[s,r]of this._documentIds){const i=n.boostDocument?n.boostDocument(r,"",this._storedFields.get(s)):1;t.set(s,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ge){if(e.length===0)return new Map;const n=t.toLowerCase(),s=Jn[n];if(!s)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(s)||new Map}toJSON(){const e=[];for(const[t,n]of this._index){const s={};for(const[r,i]of n)s[r]=Object.fromEntries(i);e.push([t,s])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,n,s,r,i,o,l,c=new Map){if(r==null)return c;for(const f of Object.keys(i)){const v=i[f],h=this._fieldIds[f],b=r.get(h);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[h];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(h,w,t),y-=1;continue}const C=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!C)continue;const A=b.get(w),J=this._fieldLength.get(w)[h],Q=Un(A,y,this._documentCount,J,x,l),W=n*s*v*C*Q,V=c.get(w);if(V){V.score+=W,Qn(V.terms,e);const $=Pe(V.match,t);$?$.push(f):V.match[t]=[f]}else c.set(w,{score:W,terms:[e],match:{[t]:[f]}})}}return c}addTerm(e,t,n){const s=this._index.fetch(n,vt);let r=s.get(e);if(r==null)r=new Map,r.set(t,1),s.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,n){if(!this._index.has(n)){this.warnDocumentChanged(t,e,n);return}const s=this._index.fetch(n,vt),r=s.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,n):r.get(t)<=1?r.size<=1?s.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(n).size===0&&this._index.delete(n)}warnDocumentChanged(e,t,n){for(const s of Object.keys(this._fieldIds))if(this._fieldIds[s]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${n}" was not present in field "${s}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Jn={[Ge]:(a,e)=>{for(const t of e.keys()){const n=a.get(t);if(n==null)a.set(t,e.get(t));else{const{score:s,terms:r,match:i}=e.get(t);n.score=n.score+s,n.match=Object.assign(n.match,i),pt(n.terms,r)}}return a},[Nt]:(a,e)=>{const t=new Map;for(const n of e.keys()){const s=a.get(n);if(s==null)continue;const{score:r,terms:i,match:o}=e.get(n);pt(s.terms,i),t.set(n,{score:s.score+r,terms:s.terms,match:Object.assign(s.match,o)})}return t},[Kn]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},qn={k:1.2,b:.7,d:.5},Un=(a,e,t,n,s,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*n/s)))},Gn=a=>(e,t,n)=>{const s=typeof a.fuzzy=="function"?a.fuzzy(e,t,n):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,n):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,n):1;return{term:e,fuzzy:s,prefix:r,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Yn),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ht={combineWith:Ge,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:qn},Hn={combineWith:Nt,prefix:(a,e,t)=>e===t.length-1},Je={batchSize:1e3,batchWait:10},qe={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},Je),qe),Qn=(a,e)=>{a.includes(e)||a.push(e)},pt=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},mt=({score:a},{score:e})=>e-a,vt=()=>new Map,Te=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=a=>ke(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const n of Object.keys(a))e.set(parseInt(n,10),a[n]),++t%1e3===0&&(yield Ot(0));return e}),Ot=a=>new Promise(e=>setTimeout(e,a)),Yn=/[\n\r\p{Z}\p{P}]+/u;class Zn{constructor(e=10){Ae(this,"max");Ae(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Xn=["aria-owns"],es={class:"shell"},ts=["title"],ns={class:"search-actions before"},ss=["title"],is=["aria-activedescendant","aria-controls","placeholder"],rs={class:"search-actions"},as=["title"],os=["disabled","title"],ls=["id","role","aria-labelledby"],cs=["id","aria-selected"],us=["href","aria-label","onMouseenter","onFocusin","data-index"],ds={class:"titles"},fs=["innerHTML"],hs={class:"title main"},ps=["innerHTML"],ms={key:0,class:"excerpt-wrapper"},vs={key:0,class:"excerpt",inert:""},gs=["innerHTML"],bs={key:0,class:"no-results"},ys={class:"search-keyboard-shortcuts"},ws=["aria-label"],xs=["aria-label"],_s=["aria-label"],Ss=["aria-label"],Es=Dt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var S,R;const t=e,n=le(),s=le(),r=le(an),i=sn(),{activate:o}=Pn(n,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,f=st(async()=>{var m,p,I,F,z,P,j,k,K;return ot(ue.loadJSON((I=await((p=(m=r.value)[l.value])==null?void 0:p.call(m)))==null?void 0:I.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((F=c.value.search)==null?void 0:F.provider)==="local"&&((P=(z=c.value.search.options)==null?void 0:z.miniSearch)==null?void 0:P.searchOptions)},...((j=c.value.search)==null?void 0:j.provider)==="local"&&((K=(k=c.value.search.options)==null?void 0:k.miniSearch)==null?void 0:K.options)}))}),h=ge(()=>{var m,p;return((m=c.value.search)==null?void 0:m.provider)==="local"&&((p=c.value.search.options)==null?void 0:p.disableQueryPersistence)===!0}).value?fe(""):zt("vitepress:local-search-filter",""),b=Pt("vitepress:local-search-detailed-list",((S=c.value.search)==null?void 0:S.provider)==="local"&&((R=c.value.search.options)==null?void 0:R.detailedView)===!0),y=ge(()=>{var m,p,I;return((m=c.value.search)==null?void 0:m.provider)==="local"&&(((p=c.value.search.options)==null?void 0:p.disableDetailedView)===!0||((I=c.value.search.options)==null?void 0:I.detailedView)===!1)}),x=ge(()=>{var p,I,F,z,P,j,k;const m=((p=c.value.search)==null?void 0:p.options)??c.value.algolia;return((P=(z=(F=(I=m==null?void 0:m.locales)==null?void 0:I[l.value])==null?void 0:F.translations)==null?void 0:z.button)==null?void 0:P.buttonText)||((k=(j=m==null?void 0:m.translations)==null?void 0:j.button)==null?void 0:k.buttonText)||"Search"});jt(()=>{y.value&&(b.value=!1)});const w=le([]),C=fe(!1);$e(h,()=>{C.value=!1});const A=st(async()=>{if(s.value)return ot(new Vn(s.value))},null),J=new Zn(16);Vt(()=>[f.value,h.value,b.value],async([m,p,I],F,z)=>{var ee,we,He,Qe;(F==null?void 0:F[0])!==m&&J.clear();let P=!1;if(z(()=>{P=!0}),!m)return;w.value=m.search(p).slice(0,16),C.value=!0;const j=I?await Promise.all(w.value.map(B=>Q(B.id))):[];if(P)return;for(const{id:B,mod:te}of j){const ne=B.slice(0,B.indexOf("#"));let Y=J.get(ne);if(Y)continue;Y=new Map,J.set(ne,Y);const G=te.default??te;if(G!=null&&G.render||G!=null&&G.setup){const se=Zt(G);se.config.warnHandler=()=>{},se.provide(Xt,i),Object.defineProperties(se.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");se.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var et;const xe=(et=de.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(xe==null?void 0:xe.startsWith("#"))&&xe.slice(1);if(!Ze)return;let Xe="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Xe+=de.outerHTML;Y.set(Ze,Xe)}),se.unmount()}if(P)return}const k=new Set;if(w.value=w.value.map(B=>{const[te,ne]=B.id.split("#"),Y=J.get(te),G=(Y==null?void 0:Y.get(ne))??"";for(const se in B.match)k.add(se);return{...B,text:G}}),await he(),P)return;await new Promise(B=>{var te;(te=A.value)==null||te.unmark({done:()=>{var ne;(ne=A.value)==null||ne.markRegExp(T(k),{done:B})}})});const K=((ee=n.value)==null?void 0:ee.querySelectorAll(".result .excerpt"))??[];for(const B of K)(we=B.querySelector('mark[data-markjs="true"]'))==null||we.scrollIntoView({block:"center"});(Qe=(He=s.value)==null?void 0:He.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function Q(m){const p=en(m.slice(0,m.indexOf("#")));try{if(!p)throw new Error(`Cannot find file for id: ${m}`);return{id:m,mod:await import(p)}}catch(I){return console.error(I),{id:m,mod:{}}}}const W=fe(),V=ge(()=>{var m;return((m=h.value)==null?void 0:m.length)<=0});function $(m=!0){var p,I;(p=W.value)==null||p.focus(),m&&((I=W.value)==null||I.select())}Me(()=>{$()});function ye(m){m.pointerType==="mouse"&&$()}const M=fe(-1),q=fe(!0);$e(w,m=>{M.value=m.length?0:-1,U()});function U(){he(()=>{const m=document.querySelector(".result.selected");m==null||m.scrollIntoView({block:"nearest"})})}_e("ArrowUp",m=>{m.preventDefault(),M.value--,M.value<0&&(M.value=w.value.length-1),q.value=!0,U()}),_e("ArrowDown",m=>{m.preventDefault(),M.value++,M.value>=w.value.length&&(M.value=0),q.value=!0,U()});const N=$t();_e("Enter",m=>{if(m.isComposing||m.target instanceof HTMLButtonElement&&m.target.type!=="submit")return;const p=w.value[M.value];if(m.target instanceof HTMLInputElement&&!p){m.preventDefault();return}p&&(N.go(p.id),t("close"))}),_e("Escape",()=>{t("close")});const d=rn({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),Bt("popstate",m=>{m.preventDefault(),t("close")});const g=Wt(Kt?document.body:null);Me(()=>{he(()=>{g.value=!0,he().then(()=>o())})}),Jt(()=>{g.value=!1});function E(){h.value="",he().then(()=>$(!1))}function T(m){return new RegExp([...m].sort((p,I)=>I.length-p.length).map(p=>`(${tn(p)})`).join("|"),"gi")}function O(m){var F;if(!q.value)return;const p=(F=m.target)==null?void 0:F.closest(".result"),I=Number.parseInt(p==null?void 0:p.dataset.index);I>=0&&I!==M.value&&(M.value=I),q.value=!1}return(m,p)=>{var I,F,z,P,j;return H(),qt(Yt,{to:"body"},[_("div",{ref_key:"el",ref:n,role:"button","aria-owns":(I=w.value)!=null&&I.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[_("div",{class:"backdrop",onClick:p[0]||(p[0]=k=>m.$emit("close"))}),_("div",es,[_("form",{class:"search-bar",onPointerup:p[4]||(p[4]=k=>ye(k)),onSubmit:p[5]||(p[5]=Ut(()=>{},["prevent"]))},[_("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},p[7]||(p[7]=[_("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,ts),_("div",ns,[_("button",{class:"back-button",title:L(d)("modal.backButtonTitle"),onClick:p[1]||(p[1]=k=>m.$emit("close"))},p[8]||(p[8]=[_("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,ss)]),Gt(_("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":p[2]||(p[2]=k=>Qt(h)?h.value=k:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(F=w.value)!=null&&F.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:x.value,spellcheck:"false",type:"search"},null,8,is),[[Ht,L(h)]]),_("div",rs,[y.value?Se("",!0):(H(),Z("button",{key:0,class:it(["toggle-layout-button",{"detailed-list":L(b)}]),type:"button",title:L(d)("modal.displayDetails"),onClick:p[3]||(p[3]=k=>M.value>-1&&(b.value=!L(b)))},p[9]||(p[9]=[_("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,as)),_("button",{class:"clear-button",type:"reset",disabled:V.value,title:L(d)("modal.resetButtonTitle"),onClick:E},p[10]||(p[10]=[_("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,os)])],32),_("ul",{ref_key:"resultsEl",ref:s,id:(z=w.value)!=null&&z.length?"localsearch-list":void 0,role:(P=w.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=w.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:O},[(H(!0),Z(at,null,rt(w.value,(k,K)=>(H(),Z("li",{key:k.id,id:"localsearch-item-"+K,"aria-selected":M.value===K?"true":"false",role:"option"},[_("a",{href:k.id,class:it(["result",{selected:M.value===K}]),"aria-label":[...k.titles,k.title].join(" > "),onMouseenter:ee=>!q.value&&(M.value=K),onFocusin:ee=>M.value=K,onClick:p[6]||(p[6]=ee=>m.$emit("close")),"data-index":K},[_("div",null,[_("div",ds,[p[12]||(p[12]=_("span",{class:"title-icon"},"#",-1)),(H(!0),Z(at,null,rt(k.titles,(ee,we)=>(H(),Z("span",{key:we,class:"title"},[_("span",{class:"text",innerHTML:ee},null,8,fs),p[11]||(p[11]=_("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),_("span",hs,[_("span",{class:"text",innerHTML:k.title},null,8,ps)])]),L(b)?(H(),Z("div",ms,[k.text?(H(),Z("div",vs,[_("div",{class:"vp-doc",innerHTML:k.text},null,8,gs)])):Se("",!0),p[13]||(p[13]=_("div",{class:"excerpt-gradient-bottom"},null,-1)),p[14]||(p[14]=_("div",{class:"excerpt-gradient-top"},null,-1))])):Se("",!0)])],42,us)],8,cs))),128)),L(h)&&!w.value.length&&C.value?(H(),Z("li",bs,[pe(me(L(d)("modal.noResultsText"))+' "',1),_("strong",null,me(L(h)),1),p[15]||(p[15]=pe('" '))])):Se("",!0)],40,ls),_("div",ys,[_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.navigateUpKeyAriaLabel")},p[16]||(p[16]=[_("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,ws),_("kbd",{"aria-label":L(d)("modal.footer.navigateDownKeyAriaLabel")},p[17]||(p[17]=[_("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,xs),pe(" "+me(L(d)("modal.footer.navigateText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.selectKeyAriaLabel")},p[18]||(p[18]=[_("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,_s),pe(" "+me(L(d)("modal.footer.selectText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.closeKeyAriaLabel")},"esc",8,Ss),pe(" "+me(L(d)("modal.footer.closeText")),1)])])])],8,Xn)])}}}),Fs=nn(Es,[["__scopeId","data-v-5f27cea7"]]);export{Fs as default}; diff --git a/assets/chunks/VPLocalSearchBox.hkHdYWwT.js b/assets/chunks/VPLocalSearchBox.hkHdYWwT.js deleted file mode 100644 index 3a8b97d7..00000000 --- a/assets/chunks/VPLocalSearchBox.hkHdYWwT.js +++ /dev/null @@ -1,8 +0,0 @@ -var Ft=Object.defineProperty;var Rt=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Rt(a,typeof e!="symbol"?e+"":e,t);import{V as tt,p as ie,h as ge,am as nt,an as Ct,ao as At,q as $e,ap as Mt,d as Lt,D as xe,aq as st,ar as Dt,as as zt,s as Pt,at as jt,v as Me,P as fe,O as _e,au as Vt,av as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as _,a0 as qt,k as L,a4 as Ut,a5 as Gt,a6 as Ht,c as Z,n as it,e as Se,C as rt,F as at,a as he,t as pe,aw as Qt,ax as ot,ay as Yt,ab as Zt,ah as Xt,az as en,_ as tn}from"./framework.v7PlT0Wt.js";import{u as nn,c as sn}from"./theme.2w8Mz6uA.js";const rn={en:()=>tt(()=>import("./@localSearchIndexen.DUUF6WCV.js"),[]),root:()=>tt(()=>import("./@localSearchIndexroot.636MGcQ0.js"),[])};/*! -* tabbable 6.2.0 -* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE -*/var vt=["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])"],Ne=vt.join(","),bt=typeof Element>"u",ae=bt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Oe=!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},Fe=function a(e,t){var n;t===void 0&&(t=!0);var s=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),r=s===""||s==="true",i=r||t&&e&&a(e.parentNode);return i},an=function(e){var t,n=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return n===""||n==="true"},yt=function(e,t,n){if(Fe(e))return[];var s=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&s.unshift(e),s=s.filter(n),s},wt=function a(e,t,n){for(var s=[],r=Array.from(e);r.length;){var i=r.shift();if(!Fe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,n);n.flatten?s.push.apply(s,c):s.push({scopeParent:i,candidates:c})}else{var f=ae.call(i,Ne);f&&n.filter(i)&&(t||!e.includes(i))&&s.push(i);var g=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),h=!Fe(g,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(g&&h){var b=a(g===!0?i.children:g.children,!0,n);n.flatten?s.push.apply(s,b):s.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return s},xt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||an(e))&&!xt(e)?0:e.tabIndex},on=function(e,t){var n=re(e);return n<0&&t&&!xt(e)?0:n},ln=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},_t=function(e){return e.tagName==="INPUT"},cn=function(e){return _t(e)&&e.type==="hidden"},un=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return t},dn=function(e,t){for(var n=0;nsummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="legacy-full"){if(typeof s=="function"){for(var o=e;e;){var l=e.parentElement,c=Oe(e);if(l&&!l.shadowRoot&&s(l)===!0)return lt(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(mn(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return lt(e);return!1},vn=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var n=0;n=0)},yn=function a(e){var t=[],n=[];return e.forEach(function(s,r){var i=!!s.scopeParent,o=i?s.scopeParent:s,l=on(o,i),c=i?a(s.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):n.push({documentOrder:r,tabIndex:l,item:s,isScope:i,content:c})}),n.sort(ln).reduce(function(s,r){return r.isScope?s.push.apply(s,r.content):s.push(r.content),s},[]).concat(t)},wn=function(e,t){t=t||{};var n;return t.getShadowRoot?n=wt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:bn}):n=yt(e,t.includeContainer,Be.bind(null,t)),yn(n)},xn=function(e,t){t=t||{};var n;return t.getShadowRoot?n=wt([e],t.includeContainer,{filter:Re.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):n=yt(e,t.includeContainer,Re.bind(null,t)),n},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},_n=vt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,_n)===!1?!1:Re(t,e)};/*! -* focus-trap 7.6.4 -* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE -*/function We(a,e){(e==null||e>a.length)&&(e=a.length);for(var t=0,n=Array(e);t0){var n=e[e.length-1];n!==t&&n._setPausedState(!0)}var s=e.indexOf(t);s===-1||e.splice(s,1),e.push(t)},deactivateTrap:function(e,t){var n=e.indexOf(t);n!==-1&&e.splice(n,1),e.length>0&&!e[e.length-1]._isManuallyPaused()&&e[e.length-1]._setPausedState(!1)}},Rn=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Cn=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ve=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},An=function(e){return ve(e)&&!e.shiftKey},Mn=function(e){return ve(e)&&e.shiftKey},ft=function(e){return setTimeout(e,0)},me=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),s=1;s1&&arguments[1]!==void 0?arguments[1]:{},v=d.hasFallback,E=v===void 0?!1:v,T=d.params,O=T===void 0?[]:T,S=r[u];if(typeof S=="function"&&(S=S.apply(void 0,kn(O))),S===!0&&(S=void 0),!S){if(S===void 0||S===!1)return S;throw new Error("`".concat(u,"` was specified but was not a node, or did not return a node"))}var R=S;if(typeof S=="string"){try{R=n.querySelector(S)}catch(m){throw new Error("`".concat(u,'` appears to be an invalid selector; error="').concat(m.message,'"'))}if(!R&&!E)throw new Error("`".concat(u,"` as selector refers to no known node"))}return R},g=function(){var u=f("initialFocus",{hasFallback:!0});if(u===!1)return!1;if(u===void 0||u&&!Le(u,r.tabbableOptions))if(c(n.activeElement)>=0)u=n.activeElement;else{var d=i.tabbableGroups[0],v=d&&d.firstTabbableNode;u=v||f("fallbackFocus")}else u===null&&(u=f("fallbackFocus"));if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},h=function(){if(i.containerGroups=i.containers.map(function(u){var d=wn(u,r.tabbableOptions),v=xn(u,r.tabbableOptions),E=d.length>0?d[0]:void 0,T=d.length>0?d[d.length-1]:void 0,O=v.find(function(m){return oe(m)}),S=v.slice().reverse().find(function(m){return oe(m)}),R=!!d.find(function(m){return re(m)>0});return{container:u,tabbableNodes:d,focusableNodes:v,posTabIndexesFound:R,firstTabbableNode:E,lastTabbableNode:T,firstDomTabbableNode:O,lastDomTabbableNode:S,nextTabbableNode:function(p){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,F=d.indexOf(p);return F<0?I?v.slice(v.indexOf(p)+1).find(function(z){return oe(z)}):v.slice(0,v.indexOf(p)).reverse().find(function(z){return oe(z)}):d[F+(I?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!f("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?b(d.shadowRoot):d},y=function(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){y(g());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Rn(u)&&u.select()}},x=function(u){var d=f("setReturnFocus",{params:[u]});return d||(d===!1?!1:u)},w=function(u){var d=u.target,v=u.event,E=u.isBackward,T=E===void 0?!1:E;d=d||Ee(v),h();var O=null;if(i.tabbableGroups.length>0){var S=c(d,v),R=S>=0?i.containerGroups[S]:void 0;if(S<0)T?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(T){var m=i.tabbableGroups.findIndex(function(j){var k=j.firstTabbableNode;return d===k});if(m<0&&(R.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!R.nextTabbableNode(d,!1))&&(m=S),m>=0){var p=m===0?i.tabbableGroups.length-1:m-1,I=i.tabbableGroups[p];O=re(d)>=0?I.lastTabbableNode:I.lastDomTabbableNode}else ve(v)||(O=R.nextTabbableNode(d,!1))}else{var F=i.tabbableGroups.findIndex(function(j){var k=j.lastTabbableNode;return d===k});if(F<0&&(R.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!R.nextTabbableNode(d))&&(F=S),F>=0){var z=F===i.tabbableGroups.length-1?0:F+1,P=i.tabbableGroups[z];O=re(d)>=0?P.firstTabbableNode:P.firstDomTabbableNode}else ve(v)||(O=R.nextTabbableNode(d))}}else O=f("fallbackFocus");return O},C=function(u){var d=Ee(u);if(!(c(d,u)>=0)){if(me(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}me(r.allowOutsideClick,u)||u.preventDefault()}},A=function(u){var d=Ee(u),v=c(d,u)>=0;if(v||d instanceof Document)v&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var E,T=!0;if(i.mostRecentlyFocusedNode)if(re(i.mostRecentlyFocusedNode)>0){var O=c(i.mostRecentlyFocusedNode),S=i.containerGroups[O].tabbableNodes;if(S.length>0){var R=S.findIndex(function(m){return m===i.mostRecentlyFocusedNode});R>=0&&(r.isKeyForward(i.recentNavEvent)?R+1=0&&(E=S[R-1],T=!1))}}else i.containerGroups.some(function(m){return m.tabbableNodes.some(function(p){return re(p)>0})})||(T=!1);else T=!1;T&&(E=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(E||i.mostRecentlyFocusedNode||g())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var v=w({event:u,isBackward:d});v&&(ve(u)&&u.preventDefault(),y(v))},Q=function(u){(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){Cn(u)&&me(r.escapeDeactivates,u)!==!1&&(u.preventDefault(),o.deactivate())},V=function(u){var d=Ee(u);c(d,u)>=0||me(r.clickOutsideDeactivates,u)||me(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},$=function(){if(i.active)return dt.activateTrap(s,o),i.delayInitialFocusTimer=r.delayInitialFocus?ft(function(){y(g())}):y(g()),n.addEventListener("focusin",A,!0),n.addEventListener("mousedown",C,{capture:!0,passive:!1}),n.addEventListener("touchstart",C,{capture:!0,passive:!1}),n.addEventListener("click",V,{capture:!0,passive:!1}),n.addEventListener("keydown",Q,{capture:!0,passive:!1}),n.addEventListener("keydown",W),o},be=function(){if(i.active)return n.removeEventListener("focusin",A,!0),n.removeEventListener("mousedown",C,!0),n.removeEventListener("touchstart",C,!0),n.removeEventListener("click",V,!0),n.removeEventListener("keydown",Q,!0),n.removeEventListener("keydown",W),o},M=function(u){var d=u.some(function(v){var E=Array.from(v.removedNodes);return E.some(function(T){return T===i.mostRecentlyFocusedNode})});d&&y(g())},q=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(M):void 0,U=function(){q&&(q.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){q.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=l(u,"onActivate"),v=l(u,"onPostActivate"),E=l(u,"checkCanFocusTrap");E||h(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=n.activeElement,d==null||d();var T=function(){E&&h(),$(),U(),v==null||v()};return E?(E(i.containers.concat()).then(T,T),this):(T(),this)},deactivate:function(u){if(!i.active)return this;var d=ut({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,be(),i.active=!1,i.paused=!1,U(),dt.deactivateTrap(s,o);var v=l(d,"onDeactivate"),E=l(d,"onPostDeactivate"),T=l(d,"checkCanReturnFocus"),O=l(d,"returnFocus","returnFocusOnDeactivate");v==null||v();var S=function(){ft(function(){O&&y(x(i.nodeFocusedBeforeActivation)),E==null||E()})};return O&&T?(T(x(i.nodeFocusedBeforeActivation)).then(S,S),this):(S(),this)},pause:function(u){return i.active?(i.manuallyPaused=!0,this._setPausedState(!0,u)):this},unpause:function(u){return i.active?(i.manuallyPaused=!1,s[s.length-1]!==this?this:this._setPausedState(!1,u)):this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(v){return typeof v=="string"?n.querySelector(v):v}),i.active&&h(),U(),this}},Object.defineProperties(o,{_isManuallyPaused:{value:function(){return i.manuallyPaused}},_setPausedState:{value:function(u,d){if(i.paused===u)return this;if(i.paused=u,u){var v=l(d,"onPause"),E=l(d,"onPostPause");v==null||v(),be(),U(),E==null||E()}else{var T=l(d,"onUnpause"),O=l(d,"onPostUnpause");T==null||T(),h(),$(),U(),O==null||O()}return this}}}),o.updateContainerElements(e),o};function zn(a,e={}){let t;const{immediate:n,...s}=e,r=ie(!1),i=ie(!1),o=h=>t&&t.activate(h),l=h=>t&&t.deactivate(h),c=()=>{t&&(t.pause(),i.value=!0)},f=()=>{t&&(t.unpause(),i.value=!1)},g=ge(()=>{const h=nt(a);return(Array.isArray(h)?h:[h]).map(b=>{const y=nt(b);return typeof y=="string"?y:Ct(y)}).filter(At)});return $e(g,h=>{h.length&&(t=Dn(h,{...s,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),n&&o())},{flush:"post"}),Mt(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:f}}class ce{constructor(e,t=!0,n=[],s=5e3){this.ctx=e,this.iframes=t,this.exclude=n,this.iframesTimeout=s}static matches(e,t){const n=typeof t=="string"?[t]:t,s=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(s){let r=!1;return n.every(i=>s.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(n=>{const s=t.filter(r=>r.contains(n)).length>0;t.indexOf(n)===-1&&!s&&t.push(n)}),t}getIframeContents(e,t,n=()=>{}){let s;try{const r=e.contentWindow;if(s=r.document,!r||!s)throw new Error("iframe inaccessible")}catch{n()}s&&t(s)}isIframeBlank(e){const t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}observeIframeLoad(e,t,n){let s=!1,r=null;const i=()=>{if(!s){s=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,n))}catch{n()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,n){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch{n()}}waitForIframes(e,t){let n=0;this.forEachIframe(e,()=>!0,s=>{n++,this.waitForIframes(s.querySelector("html"),()=>{--n||t()})},s=>{s||t()})}forEachIframe(e,t,n,s=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&s(o)};i||l(),r.forEach(c=>{ce.matches(c,this.exclude)?l():this.onIframeReady(c,f=>{t(c)&&(o++,n(f)),l()},l)})}createIterator(e,t,n){return document.createNodeIterator(e,t,n,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,n){const s=e.compareDocumentPosition(n),r=Node.DOCUMENT_POSITION_PRECEDING;if(s&r)if(t!==null){const i=t.compareDocumentPosition(n),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let n;return t===null?n=e.nextNode():n=e.nextNode()&&e.nextNode(),{prevNode:t,node:n}}checkIframeFilter(e,t,n,s){let r=!1,i=!1;return s.forEach((o,l)=>{o.val===n&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,n)?(r===!1&&!i?s.push({val:n,handled:!0}):r!==!1&&!i&&(s[r].handled=!0),!0):(r===!1&&s.push({val:n,handled:!1}),!1)}handleOpenIframes(e,t,n,s){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,n,s)})})}iterateThroughNodes(e,t,n,s,r){const i=this.createIterator(t,e,s);let o=[],l=[],c,f,g=()=>({prevNode:f,node:c}=this.getIteratorNode(i),c);for(;g();)this.iframes&&this.forEachIframe(t,h=>this.checkIframeFilter(c,f,h,o),h=>{this.createInstanceOnIframe(h).forEachNode(e,b=>l.push(b),s)}),l.push(c);l.forEach(h=>{n(h)}),this.iframes&&this.handleOpenIframes(o,e,n,s),r()}forEachNode(e,t,n,s=()=>{}){const r=this.getContexts();let i=r.length;i||s(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,n,()=>{--i<=0&&s()})};this.iframes?this.waitForIframes(o,l):l()})}}let Pn=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const n=this.opt.log;this.opt.debug&&typeof n=="object"&&typeof n[t]=="function"&&n[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",s=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${n}`),s+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+s))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,n,s)=>{let r=s.charAt(n+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let s=[];return e.split("").forEach(r=>{n.every(i=>{if(i.indexOf(r)!==-1){if(s.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),s.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let n=this.opt.accuracy,s=typeof n=="string"?n:n.value,r=typeof n=="string"?[]:n.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),s){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(n=>{this.opt.separateWordSearch?n.split(" ").forEach(s=>{s.trim()&&t.indexOf(s)===-1&&t.push(s)}):n.trim()&&t.indexOf(n)===-1&&t.push(n)}),{keywords:t.sort((n,s)=>s.length-n.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let n=0;return e.sort((s,r)=>s.start-r.start).forEach(s=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(s,n);o&&(s.start=r,s.length=i-r,t.push(s),n=i)}),t}callNoMatchOnInvalidRanges(e,t){let n,s,r=!1;return e&&typeof e.start<"u"?(n=parseInt(e.start,10),s=n+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&s-t>0&&s-n>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:n,end:s,valid:r}}checkWhitespaceRanges(e,t,n){let s,r=!0,i=n.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,s=l+parseInt(e.length,10),s>i&&(s=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||s-l<0||l>i||s>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):n.substring(l,s).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:s,valid:r}}getTextNodes(e){let t="",n=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,s=>{n.push({start:t.length,end:(t+=s.textContent).length,node:s})},s=>this.matchesExclude(s.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:n})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,n){const s=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(n-t);let o=document.createElement(s);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,n,s,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!s(i.node))return!1;const c=t-i.start,f=(n>i.end?i.end:n)-i.start,g=e.value.substr(0,i.start),h=e.value.substr(f+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,f),e.value=g+h,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=f),e.nodes[y].end-=f)}),n-=f,r(i.node.previousSibling,i.start),n>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,n,s,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!n(c[i],l))continue;let f=c.index;if(i!==0)for(let g=1;g{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let g=1;gn(l[i],g),(g,h)=>{e.lastIndex=h,s(g)})}r()})}wrapRangeFromIndex(e,t,n,s){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:f,valid:g}=this.checkWhitespaceRanges(o,i,r.value);g&&this.wrapRangeInMappedTextNode(r,c,f,h=>t(h,o,r.value.substring(c,f),l),h=>{n(h,o)})}),s()})}unwrapMatches(e){const t=e.parentNode;let n=document.createDocumentFragment();for(;e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let n=0,s="wrapMatches";const r=i=>{n++,this.opt.each(i)};this.opt.acrossElements&&(s="wrapMatchesAcrossElements"),this[s](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,n),r,()=>{n===0&&this.opt.noMatch(e),this.opt.done(n)})}mark(e,t){this.opt=t;let n=0,s="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let f=new RegExp(this.createRegExp(c),`gm${o}`),g=0;this.log(`Searching with expression "${f}"`),this[s](f,1,(h,b)=>this.opt.filter(b,c,n,g),h=>{g++,n++,this.opt.each(h)},()=>{g===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(n):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(s="wrapMatchesAcrossElements"),i===0?this.opt.done(n):l(r[0])}markRanges(e,t){this.opt=t;let n=0,s=this.checkRanges(e);s&&s.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(s)),this.wrapRangeFromIndex(s,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{n++,this.opt.each(r,i)},()=>{this.opt.done(n)})):this.opt.done(n)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,n=>{this.unwrapMatches(n)},n=>{const s=ce.matches(n,t),r=this.matchesExclude(n);return!s||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function jn(a){const e=new Pn(a);return this.mark=(t,n)=>(e.mark(t,n),this),this.markRegExp=(t,n)=>(e.markRegExp(t,n),this),this.markRanges=(t,n)=>(e.markRanges(t,n),this),this.unmark=t=>(e.unmark(t),this),this}function ke(a,e,t,n){function s(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(f){try{c(n.next(f))}catch(g){i(g)}}function l(f){try{c(n.throw(f))}catch(g){i(g)}}function c(f){f.done?r(f.value):s(f.value).then(o,l)}c((n=n.apply(a,[])).next())})}const Vn="ENTRIES",St="KEYS",Et="VALUES",D="";class De{constructor(e,t){const n=e._tree,s=Array.from(n.keys());this.set=e,this._type=t,this._path=s.length>0?[{node:n,keys:s}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=le(this._path);if(le(t)===D)return{done:!1,value:this.result()};const n=e.get(le(t));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=le(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>le(e)).filter(e=>e!==D).join("")}value(){return le(this._path).node.get(D)}result(){switch(this._type){case Et:return this.value();case St:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const le=a=>a[a.length-1],$n=(a,e,t)=>{const n=new Map;if(e===void 0)return n;const s=e.length+1,r=s+t,i=new Uint8Array(r*s).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===D){const f=s[l-1];f<=t&&n.set(o,[a.get(c),f])}else{let f=r;for(let g=0;gt)continue e}Tt(a.get(c),e,t,n,s,f,i,o+c)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,n]=Ce(this._tree,e.slice(this._prefix.length));if(t===void 0){const[s,r]=Ue(n);for(const i of s.keys())if(i!==D&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),s.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Bn(this._tree,e)}entries(){return new De(this,Vn)}forEach(e){for(const[t,n]of this)e(t,n,this)}fuzzyGet(e,t){return $n(this._tree,e,t)}get(e){const t=Ke(this._tree,e);return t!==void 0?t.get(D):void 0}has(e){const t=Ke(this._tree,e);return t!==void 0&&t.has(D)}keys(){return new De(this,St)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(D,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ze(this._tree,e);return n.set(D,t(n.get(D))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ze(this._tree,e);let s=n.get(D);return s===void 0&&n.set(D,s=t()),s}values(){return new De(this,Et)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[n,s]of e)t.set(n,s);return t}static fromObject(e){return X.from(Object.entries(e))}}const Ce=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const n of a.keys())if(n!==D&&e.startsWith(n))return t.push([a,n]),Ce(a.get(n),e.slice(n.length),t);return t.push([a,e]),Ce(void 0,"",t)},Ke=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==D&&e.startsWith(t))return Ke(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let n=0;a&&n{const[t,n]=Ce(a,e);if(t!==void 0){if(t.delete(D),t.size===0)It(n);else if(t.size===1){const[s,r]=t.entries().next().value;kt(n,s,r)}}},It=a=>{if(a.length===0)return;const[e,t]=Ue(a);if(e.delete(t),e.size===0)It(a.slice(0,-1));else if(e.size===1){const[n,s]=e.entries().next().value;n!==D&&kt(a.slice(0,-1),n,s)}},kt=(a,e,t)=>{if(a.length===0)return;const[n,s]=Ue(a);n.set(s+e,t),n.delete(s)},Ue=a=>a[a.length-1],Ge="or",Nt="and",Wn="and_not";class ue{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},je),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ht),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},Gn),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=qe,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:n,processTerm:s,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const f=t(e,c);if(f==null)continue;const g=n(f.toString(),c),h=this._fieldIds[c],b=new Set(g).size;this.addFieldLength(l,h,this._documentCount-1,b);for(const y of g){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(h,l,w);else x&&this.addTerm(h,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:n=10}=t,s={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,f)=>(o.push(c),(f+1)%n===0?{chunk:[],promise:l.then(()=>new Promise(g=>setTimeout(g,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),s);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:n,extractField:s,fields:r,idField:i}=this._options,o=s(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const f=s(e,c);if(f==null)continue;const g=t(f.toString(),c),h=this._fieldIds[c],b=new Set(g).size;this.removeFieldLength(l,h,this._documentCount,b);for(const y of g){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(h,l,w);else x&&this.removeTerm(h,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((n,s)=>{this.removeFieldLength(t,s,this._documentCount,n)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:n,batchWait:s}=this._options.autoVacuum;this.conditionalVacuum({batchSize:n,batchWait:s},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const n of e)this.discard(n)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:n}=this._options,s=n(e,t);this.discard(s),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const n=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=qe,this.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return ke(this,void 0,void 0,function*(){const n=this._dirtCount;if(this.vacuumConditionsMet(t)){const s=e.batchSize||Je.batchSize,r=e.batchWait||Je.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,f]of l)for(const[g]of f)this._documentIds.has(g)||(f.size<=1?l.delete(c):f.delete(g));this._index.get(o).size===0&&this._index.delete(o),i%s===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=n}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:n}=e;return t=t||Ve.minDirtCount,n=n||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=n}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const{searchOptions:n}=this._options,s=Object.assign(Object.assign({},n),t),r=this.executeQuery(e,t),i=[];for(const[o,{score:l,terms:c,match:f}]of r){const g=c.length||1,h={id:this._documentIds.get(o),score:l*g,terms:Object.keys(f),queryTerms:c,match:f};Object.assign(h,this._storedFields.get(o)),(s.filter==null||s.filter(h))&&i.push(h)}return e===ue.wildcard&&s.boostDocument==null||i.sort(mt),i}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const n=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=n.get(o);l!=null?(l.score+=r,l.count+=1):n.set(o,{score:r,terms:i,count:1})}const s=[];for(const[r,{score:i,terms:o,count:l}]of n)s.push({suggestion:r,terms:o,score:i/l});return s.sort(mt),s}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return ke(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(je.hasOwnProperty(e))return Pe(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:n,documentIds:s,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Te(s),l._fieldLength=Te(r),l._storedFields=Te(i);for(const[c,f]of l._documentIds)l._idToShortId.set(f,c);for(const[c,f]of n){const g=new Map;for(const h of Object.keys(f)){let b=f[h];o===1&&(b=b.ds),g.set(parseInt(h,10),Te(b))}l._index.set(c,g)}return l}static loadJSAsync(e,t){return ke(this,void 0,void 0,function*(){const{index:n,documentIds:s,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Ie(s),l._fieldLength=yield Ie(r),l._storedFields=yield Ie(i);for(const[f,g]of l._documentIds)l._idToShortId.set(g,f);let c=0;for(const[f,g]of n){const h=new Map;for(const b of Object.keys(g)){let y=g[b];o===1&&(y=y.ds),h.set(parseInt(b,10),yield Ie(y))}++c%1e3===0&&(yield Ot(0)),l._index.set(f,h)}return l})}static instantiateMiniSearch(e,t){const{documentCount:n,nextId:s,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new ue(t);return c._documentCount=n,c._nextId=s,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new X,c}executeQuery(e,t={}){if(e===ue.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const h=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,h));return this.combineResults(b,h.combineWith)}const{tokenize:n,processTerm:s,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:n,processTerm:s},r),t),{tokenize:o,processTerm:l}=i,g=o(e).flatMap(h=>l(h)).filter(h=>!!h).map(Un(i)).map(h=>this.executeQuerySpec(h,i));return this.combineResults(g,i.combineWith)}executeQuerySpec(e,t){const n=Object.assign(Object.assign({},this._options.searchOptions),t),s=(n.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:Pe(n.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=n,{fuzzy:c,prefix:f}=Object.assign(Object.assign({},ht.weights),i),g=this._index.get(e.term),h=this.termResults(e.term,e.term,1,e.termBoost,g,s,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const C=x.length-e.term.length;if(!C)continue;y==null||y.delete(x);const A=f*x.length/(x.length+.3*C);this.termResults(e.term,x,A,e.termBoost,w,s,r,l,h)}if(y)for(const x of y.keys()){const[w,C]=y.get(x);if(!C)continue;const A=c*x.length/(x.length+C);this.termResults(e.term,x,A,e.termBoost,w,s,r,l,h)}return h}executeWildcardQuery(e){const t=new Map,n=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[s,r]of this._documentIds){const i=n.boostDocument?n.boostDocument(r,"",this._storedFields.get(s)):1;t.set(s,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ge){if(e.length===0)return new Map;const n=t.toLowerCase(),s=Kn[n];if(!s)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(s)||new Map}toJSON(){const e=[];for(const[t,n]of this._index){const s={};for(const[r,i]of n)s[r]=Object.fromEntries(i);e.push([t,s])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,n,s,r,i,o,l,c=new Map){if(r==null)return c;for(const f of Object.keys(i)){const g=i[f],h=this._fieldIds[f],b=r.get(h);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[h];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(h,w,t),y-=1;continue}const C=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!C)continue;const A=b.get(w),J=this._fieldLength.get(w)[h],Q=qn(A,y,this._documentCount,J,x,l),W=n*s*g*C*Q,V=c.get(w);if(V){V.score+=W,Hn(V.terms,e);const $=Pe(V.match,t);$?$.push(f):V.match[t]=[f]}else c.set(w,{score:W,terms:[e],match:{[t]:[f]}})}}return c}addTerm(e,t,n){const s=this._index.fetch(n,gt);let r=s.get(e);if(r==null)r=new Map,r.set(t,1),s.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,n){if(!this._index.has(n)){this.warnDocumentChanged(t,e,n);return}const s=this._index.fetch(n,gt),r=s.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,n):r.get(t)<=1?r.size<=1?s.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(n).size===0&&this._index.delete(n)}warnDocumentChanged(e,t,n){for(const s of Object.keys(this._fieldIds))if(this._fieldIds[s]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${n}" was not present in field "${s}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Kn={[Ge]:(a,e)=>{for(const t of e.keys()){const n=a.get(t);if(n==null)a.set(t,e.get(t));else{const{score:s,terms:r,match:i}=e.get(t);n.score=n.score+s,n.match=Object.assign(n.match,i),pt(n.terms,r)}}return a},[Nt]:(a,e)=>{const t=new Map;for(const n of e.keys()){const s=a.get(n);if(s==null)continue;const{score:r,terms:i,match:o}=e.get(n);pt(s.terms,i),t.set(n,{score:s.score+r,terms:s.terms,match:Object.assign(s.match,o)})}return t},[Wn]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},Jn={k:1.2,b:.7,d:.5},qn=(a,e,t,n,s,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*n/s)))},Un=a=>(e,t,n)=>{const s=typeof a.fuzzy=="function"?a.fuzzy(e,t,n):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,n):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,n):1;return{term:e,fuzzy:s,prefix:r,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Qn),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ht={combineWith:Ge,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:Jn},Gn={combineWith:Nt,prefix:(a,e,t)=>e===t.length-1},Je={batchSize:1e3,batchWait:10},qe={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},Je),qe),Hn=(a,e)=>{a.includes(e)||a.push(e)},pt=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},mt=({score:a},{score:e})=>e-a,gt=()=>new Map,Te=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=a=>ke(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const n of Object.keys(a))e.set(parseInt(n,10),a[n]),++t%1e3===0&&(yield Ot(0));return e}),Ot=a=>new Promise(e=>setTimeout(e,a)),Qn=/[\n\r\p{Z}\p{P}]+/u;class Yn{constructor(e=10){Ae(this,"max");Ae(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Zn=["aria-owns"],Xn={class:"shell"},es=["title"],ts={class:"search-actions before"},ns=["title"],ss=["aria-activedescendant","aria-controls","placeholder"],is={class:"search-actions"},rs=["title"],as=["disabled","title"],os=["id","role","aria-labelledby"],ls=["id","aria-selected"],cs=["href","aria-label","onMouseenter","onFocusin","data-index"],us={class:"titles"},ds=["innerHTML"],fs={class:"title main"},hs=["innerHTML"],ps={key:0,class:"excerpt-wrapper"},ms={key:0,class:"excerpt",inert:""},gs=["innerHTML"],vs={key:0,class:"no-results"},bs={class:"search-keyboard-shortcuts"},ys=["aria-label"],ws=["aria-label"],xs=["aria-label"],_s=["aria-label"],Ss=Lt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var S,R;const t=e,n=xe(),s=xe(),r=xe(rn),i=nn(),{activate:o}=zn(n,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,f=st(async()=>{var m,p,I,F,z,P,j,k,K;return ot(ue.loadJSON((I=await((p=(m=r.value)[l.value])==null?void 0:p.call(m)))==null?void 0:I.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((F=c.value.search)==null?void 0:F.provider)==="local"&&((P=(z=c.value.search.options)==null?void 0:z.miniSearch)==null?void 0:P.searchOptions)},...((j=c.value.search)==null?void 0:j.provider)==="local"&&((K=(k=c.value.search.options)==null?void 0:k.miniSearch)==null?void 0:K.options)}))}),h=ge(()=>{var m,p;return((m=c.value.search)==null?void 0:m.provider)==="local"&&((p=c.value.search.options)==null?void 0:p.disableQueryPersistence)===!0}).value?ie(""):Dt("vitepress:local-search-filter",""),b=zt("vitepress:local-search-detailed-list",((S=c.value.search)==null?void 0:S.provider)==="local"&&((R=c.value.search.options)==null?void 0:R.detailedView)===!0),y=ge(()=>{var m,p,I;return((m=c.value.search)==null?void 0:m.provider)==="local"&&(((p=c.value.search.options)==null?void 0:p.disableDetailedView)===!0||((I=c.value.search.options)==null?void 0:I.detailedView)===!1)}),x=ge(()=>{var p,I,F,z,P,j,k;const m=((p=c.value.search)==null?void 0:p.options)??c.value.algolia;return((P=(z=(F=(I=m==null?void 0:m.locales)==null?void 0:I[l.value])==null?void 0:F.translations)==null?void 0:z.button)==null?void 0:P.buttonText)||((k=(j=m==null?void 0:m.translations)==null?void 0:j.button)==null?void 0:k.buttonText)||"Search"});Pt(()=>{y.value&&(b.value=!1)});const w=xe([]),C=ie(!1);$e(h,()=>{C.value=!1});const A=st(async()=>{if(s.value)return ot(new jn(s.value))},null),J=new Yn(16);jt(()=>[f.value,h.value,b.value],async([m,p,I],F,z)=>{var ee,ye,He,Qe;(F==null?void 0:F[0])!==m&&J.clear();let P=!1;if(z(()=>{P=!0}),!m)return;w.value=m.search(p).slice(0,16),C.value=!0;const j=I?await Promise.all(w.value.map(B=>Q(B.id))):[];if(P)return;for(const{id:B,mod:te}of j){const ne=B.slice(0,B.indexOf("#"));let Y=J.get(ne);if(Y)continue;Y=new Map,J.set(ne,Y);const G=te.default??te;if(G!=null&&G.render||G!=null&&G.setup){const se=Yt(G);se.config.warnHandler=()=>{},se.provide(Zt,i),Object.defineProperties(se.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");se.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var et;const we=(et=de.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Xe+=de.outerHTML;Y.set(Ze,Xe)}),se.unmount()}if(P)return}const k=new Set;if(w.value=w.value.map(B=>{const[te,ne]=B.id.split("#"),Y=J.get(te),G=(Y==null?void 0:Y.get(ne))??"";for(const se in B.match)k.add(se);return{...B,text:G}}),await fe(),P)return;await new Promise(B=>{var te;(te=A.value)==null||te.unmark({done:()=>{var ne;(ne=A.value)==null||ne.markRegExp(T(k),{done:B})}})});const K=((ee=n.value)==null?void 0:ee.querySelectorAll(".result .excerpt"))??[];for(const B of K)(ye=B.querySelector('mark[data-markjs="true"]'))==null||ye.scrollIntoView({block:"center"});(Qe=(He=s.value)==null?void 0:He.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function Q(m){const p=Xt(m.slice(0,m.indexOf("#")));try{if(!p)throw new Error(`Cannot find file for id: ${m}`);return{id:m,mod:await import(p)}}catch(I){return console.error(I),{id:m,mod:{}}}}const W=ie(),V=ge(()=>{var m;return((m=h.value)==null?void 0:m.length)<=0});function $(m=!0){var p,I;(p=W.value)==null||p.focus(),m&&((I=W.value)==null||I.select())}Me(()=>{$()});function be(m){m.pointerType==="mouse"&&$()}const M=ie(-1),q=ie(!0);$e(w,m=>{M.value=m.length?0:-1,U()});function U(){fe(()=>{const m=document.querySelector(".result.selected");m==null||m.scrollIntoView({block:"nearest"})})}_e("ArrowUp",m=>{m.preventDefault(),M.value--,M.value<0&&(M.value=w.value.length-1),q.value=!0,U()}),_e("ArrowDown",m=>{m.preventDefault(),M.value++,M.value>=w.value.length&&(M.value=0),q.value=!0,U()});const N=Vt();_e("Enter",m=>{if(m.isComposing||m.target instanceof HTMLButtonElement&&m.target.type!=="submit")return;const p=w.value[M.value];if(m.target instanceof HTMLInputElement&&!p){m.preventDefault();return}p&&(N.go(p.id),t("close"))}),_e("Escape",()=>{t("close")});const d=sn({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),$t("popstate",m=>{m.preventDefault(),t("close")});const v=Bt(Wt?document.body:null);Me(()=>{fe(()=>{v.value=!0,fe().then(()=>o())})}),Kt(()=>{v.value=!1});function E(){h.value="",fe().then(()=>$(!1))}function T(m){return new RegExp([...m].sort((p,I)=>I.length-p.length).map(p=>`(${en(p)})`).join("|"),"gi")}function O(m){var F;if(!q.value)return;const p=(F=m.target)==null?void 0:F.closest(".result"),I=Number.parseInt(p==null?void 0:p.dataset.index);I>=0&&I!==M.value&&(M.value=I),q.value=!1}return(m,p)=>{var I,F,z,P,j;return H(),Jt(Qt,{to:"body"},[_("div",{ref_key:"el",ref:n,role:"button","aria-owns":(I=w.value)!=null&&I.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[_("div",{class:"backdrop",onClick:p[0]||(p[0]=k=>m.$emit("close"))}),_("div",Xn,[_("form",{class:"search-bar",onPointerup:p[4]||(p[4]=k=>be(k)),onSubmit:p[5]||(p[5]=qt(()=>{},["prevent"]))},[_("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},p[7]||(p[7]=[_("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,es),_("div",ts,[_("button",{class:"back-button",title:L(d)("modal.backButtonTitle"),onClick:p[1]||(p[1]=k=>m.$emit("close"))},p[8]||(p[8]=[_("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,ns)]),Ut(_("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":p[2]||(p[2]=k=>Ht(h)?h.value=k:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(F=w.value)!=null&&F.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:x.value,spellcheck:"false",type:"search"},null,8,ss),[[Gt,L(h)]]),_("div",is,[y.value?Se("",!0):(H(),Z("button",{key:0,class:it(["toggle-layout-button",{"detailed-list":L(b)}]),type:"button",title:L(d)("modal.displayDetails"),onClick:p[3]||(p[3]=k=>M.value>-1&&(b.value=!L(b)))},p[9]||(p[9]=[_("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,rs)),_("button",{class:"clear-button",type:"reset",disabled:V.value,title:L(d)("modal.resetButtonTitle"),onClick:E},p[10]||(p[10]=[_("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,as)])],32),_("ul",{ref_key:"resultsEl",ref:s,id:(z=w.value)!=null&&z.length?"localsearch-list":void 0,role:(P=w.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=w.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:O},[(H(!0),Z(at,null,rt(w.value,(k,K)=>(H(),Z("li",{key:k.id,id:"localsearch-item-"+K,"aria-selected":M.value===K?"true":"false",role:"option"},[_("a",{href:k.id,class:it(["result",{selected:M.value===K}]),"aria-label":[...k.titles,k.title].join(" > "),onMouseenter:ee=>!q.value&&(M.value=K),onFocusin:ee=>M.value=K,onClick:p[6]||(p[6]=ee=>m.$emit("close")),"data-index":K},[_("div",null,[_("div",us,[p[12]||(p[12]=_("span",{class:"title-icon"},"#",-1)),(H(!0),Z(at,null,rt(k.titles,(ee,ye)=>(H(),Z("span",{key:ye,class:"title"},[_("span",{class:"text",innerHTML:ee},null,8,ds),p[11]||(p[11]=_("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),_("span",fs,[_("span",{class:"text",innerHTML:k.title},null,8,hs)])]),L(b)?(H(),Z("div",ps,[k.text?(H(),Z("div",ms,[_("div",{class:"vp-doc",innerHTML:k.text},null,8,gs)])):Se("",!0),p[13]||(p[13]=_("div",{class:"excerpt-gradient-bottom"},null,-1)),p[14]||(p[14]=_("div",{class:"excerpt-gradient-top"},null,-1))])):Se("",!0)])],42,cs)],8,ls))),128)),L(h)&&!w.value.length&&C.value?(H(),Z("li",vs,[he(pe(L(d)("modal.noResultsText"))+' "',1),_("strong",null,pe(L(h)),1),p[15]||(p[15]=he('" '))])):Se("",!0)],40,os),_("div",bs,[_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.navigateUpKeyAriaLabel")},p[16]||(p[16]=[_("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,ys),_("kbd",{"aria-label":L(d)("modal.footer.navigateDownKeyAriaLabel")},p[17]||(p[17]=[_("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,ws),he(" "+pe(L(d)("modal.footer.navigateText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.selectKeyAriaLabel")},p[18]||(p[18]=[_("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,xs),he(" "+pe(L(d)("modal.footer.selectText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.closeKeyAriaLabel")},"esc",8,_s),he(" "+pe(L(d)("modal.footer.closeText")),1)])])])],8,Zn)])}}}),Os=tn(Ss,[["__scopeId","data-v-f617de87"]]);export{Os as default}; diff --git a/assets/chunks/framework.BUxnStXl.js b/assets/chunks/framework.BUxnStXl.js new file mode 100644 index 00000000..0571b8f9 --- /dev/null +++ b/assets/chunks/framework.BUxnStXl.js @@ -0,0 +1,18 @@ +/** +* @vue/shared v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function $s(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ee={},Mt=[],We=()=>{},zo=()=>!1,nn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),js=e=>e.startsWith("onUpdate:"),he=Object.assign,Vs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Qo=Object.prototype.hasOwnProperty,Q=(e,t)=>Qo.call(e,t),K=Array.isArray,Ot=e=>Hn(e)==="[object Map]",ai=e=>Hn(e)==="[object Set]",q=e=>typeof e=="function",oe=e=>typeof e=="string",ze=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",fi=e=>(se(e)||q(e))&&q(e.then)&&q(e.catch),ui=Object.prototype.toString,Hn=e=>ui.call(e),Zo=e=>Hn(e).slice(8,-1),di=e=>Hn(e)==="[object Object]",ks=e=>oe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Pt=$s(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Dn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},el=/-(\w)/g,Ne=Dn(e=>e.replace(el,(t,n)=>n?n.toUpperCase():"")),tl=/\B([A-Z])/g,ot=Dn(e=>e.replace(tl,"-$1").toLowerCase()),$n=Dn(e=>e.charAt(0).toUpperCase()+e.slice(1)),Sn=Dn(e=>e?`on${$n(e)}`:""),st=(e,t)=>!Object.is(e,t),Tn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Ss=e=>{const t=parseFloat(e);return isNaN(t)?e:t},nl=e=>{const t=oe(e)?Number(e):NaN;return isNaN(t)?e:t};let dr;const jn=()=>dr||(dr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Us(e){if(K(e)){const t={};for(let n=0;n{if(n){const s=n.split(rl);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ws(e){let t="";if(oe(e))t=e;else if(K(e))for(let n=0;n!!(e&&e.__v_isRef===!0),al=e=>oe(e)?e:e==null?"":K(e)||se(e)&&(e.toString===ui||!q(e.toString))?gi(e)?al(e.value):JSON.stringify(e,mi,2):String(e),mi=(e,t)=>gi(t)?mi(e,t.value):Ot(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[Zn(s,i)+" =>"]=r,n),{})}:ai(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Zn(n))}:ze(t)?Zn(t):se(t)&&!K(t)&&!di(t)?String(t):t,Zn=(e,t="")=>{var n;return ze(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let we;class fl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(Ut){let t=Ut;for(Ut=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;kt;){let t=kt;for(kt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function wi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Si(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),qs(s),dl(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Ts(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ti(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ti(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Xt))return;e.globalVersion=Xt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Ts(e)){e.flags&=-3;return}const n=ne,s=He;ne=e,He=!0;try{wi(e);const r=e.fn(e._value);(t.version===0||st(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ne=n,He=s,Si(e),e.flags&=-3}}function qs(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)qs(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function dl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let He=!0;const xi=[];function lt(){xi.push(He),He=!1}function ct(){const e=xi.pop();He=e===void 0?!0:e}function hr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ne;ne=void 0;try{t()}finally{ne=n}}}let Xt=0;class hl{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Vn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!ne||!He||ne===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ne)n=this.activeLink=new hl(ne,this),ne.deps?(n.prevDep=ne.depsTail,ne.depsTail.nextDep=n,ne.depsTail=n):ne.deps=ne.depsTail=n,Ei(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ne.depsTail,n.nextDep=void 0,ne.depsTail.nextDep=n,ne.depsTail=n,ne.deps===n&&(ne.deps=s)}return n}trigger(t){this.version++,Xt++,this.notify(t)}notify(t){Bs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ks()}}}function Ei(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Ei(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Mn=new WeakMap,gt=Symbol(""),xs=Symbol(""),Yt=Symbol("");function me(e,t,n){if(He&&ne){let s=Mn.get(e);s||Mn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Vn),r.map=s,r.key=n),r.track()}}function Xe(e,t,n,s,r,i){const o=Mn.get(e);if(!o){Xt++;return}const l=c=>{c&&c.trigger()};if(Bs(),t==="clear")o.forEach(l);else{const c=K(e),f=c&&ks(n);if(c&&n==="length"){const a=Number(s);o.forEach((d,m)=>{(m==="length"||m===Yt||!ze(m)&&m>=a)&&l(d)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),f&&l(o.get(Yt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(gt)),Ot(e)&&l(o.get(xs)));break;case"delete":c||(l(o.get(gt)),Ot(e)&&l(o.get(xs)));break;case"set":Ot(e)&&l(o.get(gt));break}}Ks()}function pl(e,t){const n=Mn.get(e);return n&&n.get(t)}function xt(e){const t=z(e);return t===e?t:(me(t,"iterate",Yt),Le(e)?t:t.map(ve))}function kn(e){return me(e=z(e),"iterate",Yt),e}const gl={__proto__:null,[Symbol.iterator](){return ts(this,Symbol.iterator,ve)},concat(...e){return xt(this).concat(...e.map(t=>K(t)?xt(t):t))},entries(){return ts(this,"entries",e=>(e[1]=ve(e[1]),e))},every(e,t){return Ke(this,"every",e,t,void 0,arguments)},filter(e,t){return Ke(this,"filter",e,t,n=>n.map(ve),arguments)},find(e,t){return Ke(this,"find",e,t,ve,arguments)},findIndex(e,t){return Ke(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ke(this,"findLast",e,t,ve,arguments)},findLastIndex(e,t){return Ke(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ke(this,"forEach",e,t,void 0,arguments)},includes(...e){return ns(this,"includes",e)},indexOf(...e){return ns(this,"indexOf",e)},join(e){return xt(this).join(e)},lastIndexOf(...e){return ns(this,"lastIndexOf",e)},map(e,t){return Ke(this,"map",e,t,void 0,arguments)},pop(){return $t(this,"pop")},push(...e){return $t(this,"push",e)},reduce(e,...t){return pr(this,"reduce",e,t)},reduceRight(e,...t){return pr(this,"reduceRight",e,t)},shift(){return $t(this,"shift")},some(e,t){return Ke(this,"some",e,t,void 0,arguments)},splice(...e){return $t(this,"splice",e)},toReversed(){return xt(this).toReversed()},toSorted(e){return xt(this).toSorted(e)},toSpliced(...e){return xt(this).toSpliced(...e)},unshift(...e){return $t(this,"unshift",e)},values(){return ts(this,"values",ve)}};function ts(e,t,n){const s=kn(e),r=s[t]();return s!==e&&!Le(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const ml=Array.prototype;function Ke(e,t,n,s,r,i){const o=kn(e),l=o!==e&&!Le(e),c=o[t];if(c!==ml[t]){const d=c.apply(e,i);return l?ve(d):d}let f=n;o!==e&&(l?f=function(d,m){return n.call(this,ve(d),m,e)}:n.length>2&&(f=function(d,m){return n.call(this,d,m,e)}));const a=c.call(o,f,s);return l&&r?r(a):a}function pr(e,t,n,s){const r=kn(e);let i=n;return r!==e&&(Le(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,ve(l),c,e)}),r[t](i,...s)}function ns(e,t,n){const s=z(e);me(s,"iterate",Yt);const r=s[t](...n);return(r===-1||r===!1)&&Ys(n[0])?(n[0]=z(n[0]),s[t](...n)):r}function $t(e,t,n=[]){lt(),Bs();const s=z(e)[t].apply(e,n);return Ks(),ct(),s}const vl=$s("__proto__,__v_isRef,__isVue"),Ci=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ze));function yl(e){ze(e)||(e=String(e));const t=z(this);return me(t,"has",e),t.hasOwnProperty(e)}class Ai{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Rl:Pi:i?Oi:Mi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=K(t);if(!r){let c;if(o&&(c=gl[n]))return c;if(n==="hasOwnProperty")return yl}const l=Reflect.get(t,n,fe(t)?t:s);return(ze(n)?Ci.has(n):vl(n))||(r||me(t,"get",n),i)?l:fe(l)?o&&ks(n)?l:l.value:se(l)?r?Un(l):It(l):l}}class Ri extends Ai{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=St(i);if(!Le(s)&&!St(s)&&(i=z(i),s=z(s)),!K(t)&&fe(i)&&!fe(s))return c?!1:(i.value=s,!0)}const o=K(t)&&ks(n)?Number(n)e,un=e=>Reflect.getPrototypeOf(e);function Tl(e,t,n){return function(...s){const r=this.__v_raw,i=z(r),o=Ot(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),a=n?Es:t?Cs:ve;return!t&&me(i,"iterate",c?xs:gt),{next(){const{value:d,done:m}=f.next();return m?{value:d,done:m}:{value:l?[a(d[0]),a(d[1])]:a(d),done:m}},[Symbol.iterator](){return this}}}}function dn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function xl(e,t){const n={get(r){const i=this.__v_raw,o=z(i),l=z(r);e||(st(r,l)&&me(o,"get",r),me(o,"get",l));const{has:c}=un(o),f=t?Es:e?Cs:ve;if(c.call(o,r))return f(i.get(r));if(c.call(o,l))return f(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&me(z(r),"iterate",gt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=z(i),l=z(r);return e||(st(r,l)&&me(o,"has",r),me(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=z(l),f=t?Es:e?Cs:ve;return!e&&me(c,"iterate",gt),l.forEach((a,d)=>r.call(i,f(a),f(d),o))}};return he(n,e?{add:dn("add"),set:dn("set"),delete:dn("delete"),clear:dn("clear")}:{add(r){!t&&!Le(r)&&!St(r)&&(r=z(r));const i=z(this);return un(i).has.call(i,r)||(i.add(r),Xe(i,"add",r,r)),this},set(r,i){!t&&!Le(i)&&!St(i)&&(i=z(i));const o=z(this),{has:l,get:c}=un(o);let f=l.call(o,r);f||(r=z(r),f=l.call(o,r));const a=c.call(o,r);return o.set(r,i),f?st(i,a)&&Xe(o,"set",r,i):Xe(o,"add",r,i),this},delete(r){const i=z(this),{has:o,get:l}=un(i);let c=o.call(i,r);c||(r=z(r),c=o.call(i,r)),l&&l.call(i,r);const f=i.delete(r);return c&&Xe(i,"delete",r,void 0),f},clear(){const r=z(this),i=r.size!==0,o=r.clear();return i&&Xe(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=Tl(r,e,t)}),n}function Gs(e,t){const n=xl(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Q(n,r)&&r in s?n:s,r,i)}const El={get:Gs(!1,!1)},Cl={get:Gs(!1,!0)},Al={get:Gs(!0,!1)};const Mi=new WeakMap,Oi=new WeakMap,Pi=new WeakMap,Rl=new WeakMap;function Ml(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ol(e){return e.__v_skip||!Object.isExtensible(e)?0:Ml(Zo(e))}function It(e){return St(e)?e:Xs(e,!1,_l,El,Mi)}function Pl(e){return Xs(e,!1,Sl,Cl,Oi)}function Un(e){return Xs(e,!0,wl,Al,Pi)}function Xs(e,t,n,s,r){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=Ol(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function mt(e){return St(e)?mt(e.__v_raw):!!(e&&e.__v_isReactive)}function St(e){return!!(e&&e.__v_isReadonly)}function Le(e){return!!(e&&e.__v_isShallow)}function Ys(e){return e?!!e.__v_raw:!1}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function xn(e){return!Q(e,"__v_skip")&&Object.isExtensible(e)&&hi(e,"__v_skip",!0),e}const ve=e=>se(e)?It(e):e,Cs=e=>se(e)?Un(e):e;function fe(e){return e?e.__v_isRef===!0:!1}function xe(e){return Li(e,!1)}function Be(e){return Li(e,!0)}function Li(e,t){return fe(e)?e:new Ll(e,t)}class Ll{constructor(t,n){this.dep=new Vn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:z(t),this._value=n?t:ve(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Le(t)||St(t);t=s?t:z(t),st(t,n)&&(this._rawValue=t,this._value=s?t:ve(t),this.dep.trigger())}}function Js(e){return fe(e)?e.value:e}function le(e){return q(e)?e():Js(e)}const Il={get:(e,t,n)=>t==="__v_raw"?e:Js(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return fe(r)&&!fe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Ii(e){return mt(e)?e:new Proxy(e,Il)}class Nl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Vn,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Fl(e){return new Nl(e)}class Hl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return pl(z(this._object),this._key)}}class Dl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function $l(e,t,n){return fe(e)?e:q(e)?new Dl(e):se(e)&&arguments.length>1?jl(e,t,n):xe(e)}function jl(e,t,n){const s=e[t];return fe(s)?s:new Hl(e,t,n)}class Vl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Vn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Xt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ne!==this)return _i(this,!0),!0}get value(){const t=this.dep.track();return Ti(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function kl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new Vl(s,r,n)}const hn={},On=new WeakMap;let ht;function Ul(e,t=!1,n=ht){if(n){let s=On.get(n);s||On.set(n,s=[]),s.push(e)}}function Wl(e,t,n=ee){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,f=g=>r?g:Le(g)||r===!1||r===0?Ye(g,1):Ye(g);let a,d,m,v,_=!1,b=!1;if(fe(e)?(d=()=>e.value,_=Le(e)):mt(e)?(d=()=>f(e),_=!0):K(e)?(b=!0,_=e.some(g=>mt(g)||Le(g)),d=()=>e.map(g=>{if(fe(g))return g.value;if(mt(g))return f(g);if(q(g))return c?c(g,2):g()})):q(e)?t?d=c?()=>c(e,2):e:d=()=>{if(m){lt();try{m()}finally{ct()}}const g=ht;ht=a;try{return c?c(e,3,[v]):e(v)}finally{ht=g}}:d=We,t&&r){const g=d,O=r===!0?1/0:r;d=()=>Ye(g(),O)}const k=vi(),P=()=>{a.stop(),k&&k.active&&Vs(k.effects,a)};if(i&&t){const g=t;t=(...O)=>{g(...O),P()}}let D=b?new Array(e.length).fill(hn):hn;const p=g=>{if(!(!(a.flags&1)||!a.dirty&&!g))if(t){const O=a.run();if(r||_||(b?O.some(($,R)=>st($,D[R])):st(O,D))){m&&m();const $=ht;ht=a;try{const R=[O,D===hn?void 0:b&&D[0]===hn?[]:D,v];c?c(t,3,R):t(...R),D=O}finally{ht=$}}}else a.run()};return l&&l(p),a=new yi(d),a.scheduler=o?()=>o(p,!1):p,v=g=>Ul(g,!1,a),m=a.onStop=()=>{const g=On.get(a);if(g){if(c)c(g,4);else for(const O of g)O();On.delete(a)}},t?s?p(!0):D=a.run():o?o(p.bind(null,!0),!0):a.run(),P.pause=a.pause.bind(a),P.resume=a.resume.bind(a),P.stop=P,P}function Ye(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,fe(e))Ye(e.value,t,n);else if(K(e))for(let s=0;s{Ye(s,t,n)});else if(di(e)){for(const s in e)Ye(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ye(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function sn(e,t,n,s){try{return s?e(...s):e()}catch(r){rn(r,t,n)}}function De(e,t,n,s){if(q(e)){const r=sn(e,t,n,s);return r&&fi(r)&&r.catch(i=>{rn(i,t,n)}),r}if(K(e)){const r=[];for(let i=0;i>>1,r=Se[s],i=Jt(r);i=Jt(n)?Se.push(e):Se.splice(Kl(t),0,e),e.flags|=1,Fi()}}function Fi(){Pn||(Pn=Ni.then(Hi))}function ql(e){K(e)?Lt.push(...e):et&&e.id===-1?et.splice(Ct+1,0,e):e.flags&1||(Lt.push(e),e.flags|=1),Fi()}function gr(e,t,n=ke+1){for(;nJt(n)-Jt(s));if(Lt.length=0,et){et.push(...t);return}for(et=t,Ct=0;Cte.id==null?e.flags&2?-1:1/0:e.id;function Hi(e){try{for(ke=0;ke{s._d&&Or(-1);const i=In(t);let o;try{o=e(...r)}finally{In(i),s._d&&Or(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Pf(e,t){if(de===null)return e;const n=Xn(de),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Wt=e=>e&&(e.disabled||e.disabled===""),mr=e=>e&&(e.defer||e.defer===""),vr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,yr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,As=(e,t)=>{const n=e&&e.to;return oe(n)?t?t(n):null:n},Vi={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:a,pc:d,pbc:m,o:{insert:v,querySelector:_,createText:b,createComment:k}}=f,P=Wt(t.props);let{shapeFlag:D,children:p,dynamicChildren:g}=t;if(e==null){const O=t.el=b(""),$=t.anchor=b("");v(O,n,s),v($,n,s);const R=(T,M)=>{D&16&&(r&&r.isCE&&(r.ce._teleportTarget=T),a(p,T,M,r,i,o,l,c))},j=()=>{const T=t.target=As(t.props,_),M=ki(T,t,b,v);T&&(o!=="svg"&&vr(T)?o="svg":o!=="mathml"&&yr(T)&&(o="mathml"),P||(R(T,M),En(t,!1)))};P&&(R(n,$),En(t,!0)),mr(t.props)?_e(()=>{j(),t.el.__isMounted=!0},i):j()}else{if(mr(t.props)&&!e.el.__isMounted){_e(()=>{Vi.process(e,t,n,s,r,i,o,l,c,f),delete e.el.__isMounted},i);return}t.el=e.el,t.targetStart=e.targetStart;const O=t.anchor=e.anchor,$=t.target=e.target,R=t.targetAnchor=e.targetAnchor,j=Wt(e.props),T=j?n:$,M=j?O:R;if(o==="svg"||vr($)?o="svg":(o==="mathml"||yr($))&&(o="mathml"),g?(m(e.dynamicChildren,g,T,r,i,o,l),tr(e,t,!0)):c||d(e,t,T,M,r,i,o,l,!1),P)j?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):pn(t,n,O,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const A=t.target=As(t.props,_);A&&pn(t,A,null,f,0)}else j&&pn(t,$,R,f,1);En(t,P)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:d,props:m}=e;if(d&&(r(f),r(a)),i&&r(c),o&16){const v=i||!Wt(m);for(let _=0;_{e.isMounted=!0}),Xi(()=>{e.isUnmounting=!0}),e}const Me=[Function,Array],Ui={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Me,onEnter:Me,onAfterEnter:Me,onEnterCancelled:Me,onBeforeLeave:Me,onLeave:Me,onAfterLeave:Me,onLeaveCancelled:Me,onBeforeAppear:Me,onAppear:Me,onAfterAppear:Me,onAppearCancelled:Me},Wi=e=>{const t=e.subTree;return t.component?Wi(t.component):t},Jl={name:"BaseTransition",props:Ui,setup(e,{slots:t}){const n=ln(),s=Yl();return()=>{const r=t.default&&qi(t.default(),!0);if(!r||!r.length)return;const i=Bi(r),o=z(e),{mode:l}=o;if(s.isLeaving)return ss(i);const c=br(i);if(!c)return ss(i);let f=Rs(c,o,s,n,d=>f=d);c.type!==ye&&zt(c,f);let a=n.subTree&&br(n.subTree);if(a&&a.type!==ye&&!pt(c,a)&&Wi(n).type!==ye){let d=Rs(a,o,s,n);if(zt(a,d),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,d.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete d.afterLeave,a=void 0},ss(i);l==="in-out"&&c.type!==ye?d.delayLeave=(m,v,_)=>{const b=Ki(s,a);b[String(a.key)]=a,m[tt]=()=>{v(),m[tt]=void 0,delete f.delayedLeave,a=void 0},f.delayedLeave=()=>{_(),delete f.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return i}}};function Bi(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ye){t=n;break}}return t}const zl=Jl;function Ki(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Rs(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:d,onBeforeLeave:m,onLeave:v,onAfterLeave:_,onLeaveCancelled:b,onBeforeAppear:k,onAppear:P,onAfterAppear:D,onAppearCancelled:p}=t,g=String(e.key),O=Ki(n,e),$=(T,M)=>{T&&De(T,s,9,M)},R=(T,M)=>{const A=M[1];$(T,M),K(T)?T.every(w=>w.length<=1)&&A():T.length<=1&&A()},j={mode:o,persisted:l,beforeEnter(T){let M=c;if(!n.isMounted)if(i)M=k||c;else return;T[tt]&&T[tt](!0);const A=O[g];A&&pt(e,A)&&A.el[tt]&&A.el[tt](),$(M,[T])},enter(T){let M=f,A=a,w=d;if(!n.isMounted)if(i)M=P||f,A=D||a,w=p||d;else return;let F=!1;const Y=T[gn]=ie=>{F||(F=!0,ie?$(w,[T]):$(A,[T]),j.delayedLeave&&j.delayedLeave(),T[gn]=void 0)};M?R(M,[T,Y]):Y()},leave(T,M){const A=String(e.key);if(T[gn]&&T[gn](!0),n.isUnmounting)return M();$(m,[T]);let w=!1;const F=T[tt]=Y=>{w||(w=!0,M(),Y?$(b,[T]):$(_,[T]),T[tt]=void 0,O[A]===e&&delete O[A])};O[A]=e,v?R(v,[T,F]):F()},clone(T){const M=Rs(T,t,n,s,r);return r&&r(M),M}};return j}function ss(e){if(on(e))return e=rt(e),e.children=null,e}function br(e){if(!on(e))return ji(e.type)&&e.children?Bi(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function zt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,zt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function qi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iQt(_,t&&(K(t)?t[b]:t),n,s,r));return}if(vt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Qt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Xn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===ee?l.refs={}:l.refs,d=l.setupState,m=z(d),v=d===ee?()=>!1:_=>Q(m,_);if(f!=null&&f!==c&&(oe(f)?(a[f]=null,v(f)&&(d[f]=null)):fe(f)&&(f.value=null)),q(c))sn(c,l,12,[o,a]);else{const _=oe(c),b=fe(c);if(_||b){const k=()=>{if(e.f){const P=_?v(c)?d[c]:a[c]:c.value;r?K(P)&&Vs(P,i):K(P)?P.includes(i)||P.push(i):_?(a[c]=[i],v(c)&&(d[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else _?(a[c]=o,v(c)&&(d[c]=o)):b&&(c.value=o,e.k&&(a[e.k]=o))};o?(k.id=-1,_e(k,n)):k()}}}let _r=!1;const Et=()=>{_r||(console.error("Hydration completed but contains mismatches."),_r=!0)},Ql=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Zl=e=>e.namespaceURI.includes("MathML"),mn=e=>{if(e.nodeType===1){if(Ql(e))return"svg";if(Zl(e))return"mathml"}},Rt=e=>e.nodeType===8;function ec(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,g)=>{if(!g.hasChildNodes()){n(null,p,g),Ln(),g._vnode=p;return}d(g.firstChild,p,null,null,null),Ln(),g._vnode=p},d=(p,g,O,$,R,j=!1)=>{j=j||!!g.dynamicChildren;const T=Rt(p)&&p.data==="[",M=()=>b(p,g,O,$,R,T),{type:A,ref:w,shapeFlag:F,patchFlag:Y}=g;let ie=p.nodeType;g.el=p,Y===-2&&(j=!1,g.dynamicChildren=null);let U=null;switch(A){case _t:ie!==3?g.children===""?(c(g.el=r(""),o(p),p),U=p):U=M():(p.data!==g.children&&(Et(),p.data=g.children),U=i(p));break;case ye:D(p)?(U=i(p),P(g.el=p.content.firstChild,p,O)):ie!==8||T?U=M():U=i(p);break;case Kt:if(T&&(p=i(p),ie=p.nodeType),ie===1||ie===3){U=p;const X=!g.children.length;for(let V=0;V{j=j||!!g.dynamicChildren;const{type:T,props:M,patchFlag:A,shapeFlag:w,dirs:F,transition:Y}=g,ie=T==="input"||T==="option";if(ie||A!==-1){F&&Ue(g,null,O,"created");let U=!1;if(D(p)){U=po(null,Y)&&O&&O.vnode.props&&O.vnode.props.appear;const V=p.content.firstChild;U&&Y.beforeEnter(V),P(V,p,O),g.el=p=V}if(w&16&&!(M&&(M.innerHTML||M.textContent))){let V=v(p.firstChild,g,p,O,$,R,j);for(;V;){vn(p,1)||Et();const ae=V;V=V.nextSibling,l(ae)}}else if(w&8){let V=g.children;V[0]===` +`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(V=V.slice(1)),p.textContent!==V&&(vn(p,0)||Et(),p.textContent=g.children)}if(M){if(ie||!j||A&48){const V=p.tagName.includes("-");for(const ae in M)(ie&&(ae.endsWith("value")||ae==="indeterminate")||nn(ae)&&!Pt(ae)||ae[0]==="."||V)&&s(p,ae,null,M[ae],void 0,O)}else if(M.onClick)s(p,"onClick",null,M.onClick,void 0,O);else if(A&4&&mt(M.style))for(const V in M.style)M.style[V]}let X;(X=M&&M.onVnodeBeforeMount)&&Oe(X,O,g),F&&Ue(g,null,O,"beforeMount"),((X=M&&M.onVnodeMounted)||F||U)&&_o(()=>{X&&Oe(X,O,g),U&&Y.enter(p),F&&Ue(g,null,O,"mounted")},$)}return p.nextSibling},v=(p,g,O,$,R,j,T)=>{T=T||!!g.dynamicChildren;const M=g.children,A=M.length;for(let w=0;w{const{slotScopeIds:T}=g;T&&(R=R?R.concat(T):T);const M=o(p),A=v(i(p),g,M,O,$,R,j);return A&&Rt(A)&&A.data==="]"?i(g.anchor=A):(Et(),c(g.anchor=f("]"),M,A),A)},b=(p,g,O,$,R,j)=>{if(vn(p.parentElement,1)||Et(),g.el=null,j){const A=k(p);for(;;){const w=i(p);if(w&&w!==A)l(w);else break}}const T=i(p),M=o(p);return l(p),n(null,g,M,T,O,$,mn(M),R),O&&(O.vnode.el=g.el,yo(O,g.el)),T},k=(p,g="[",O="]")=>{let $=0;for(;p;)if(p=i(p),p&&Rt(p)&&(p.data===g&&$++,p.data===O)){if($===0)return i(p);$--}return p},P=(p,g,O)=>{const $=g.parentNode;$&&$.replaceChild(p,g);let R=O;for(;R;)R.vnode.el===g&&(R.vnode.el=R.subTree.el=p),R=R.parent},D=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,d]}const wr="data-allow-mismatch",tc={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function vn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(wr);)e=e.parentElement;const n=e&&e.getAttribute(wr);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(tc[t])}}jn().requestIdleCallback;jn().cancelIdleCallback;function nc(e,t){if(Rt(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(Rt(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const vt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function If(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,d=0;const m=()=>(d++,f=null,v()),v=()=>{let _;return f||(_=f=t().catch(b=>{if(b=b instanceof Error?b:new Error(String(b)),c)return new Promise((k,P)=>{c(b,()=>k(m()),()=>P(b),d+1)});throw b}).then(b=>_!==f&&f?f:(b&&(b.__esModule||b[Symbol.toStringTag]==="Module")&&(b=b.default),a=b,b)))};return Qs({name:"AsyncComponentWrapper",__asyncLoader:v,__asyncHydrate(_,b,k){const P=i?()=>{const D=i(k,p=>nc(_,p));D&&(b.bum||(b.bum=[])).push(D)}:k;a?P():v().then(()=>!b.isUnmounted&&P())},get __asyncResolved(){return a},setup(){const _=ue;if(Zs(_),a)return()=>rs(a,_);const b=p=>{f=null,rn(p,_,13,!s)};if(l&&_.suspense||Nt)return v().then(p=>()=>rs(p,_)).catch(p=>(b(p),()=>s?ce(s,{error:p}):null));const k=xe(!1),P=xe(),D=xe(!!r);return r&&setTimeout(()=>{D.value=!1},r),o!=null&&setTimeout(()=>{if(!k.value&&!P.value){const p=new Error(`Async component timed out after ${o}ms.`);b(p),P.value=p}},o),v().then(()=>{k.value=!0,_.parent&&on(_.parent.vnode)&&_.parent.update()}).catch(p=>{b(p),P.value=p}),()=>{if(k.value&&a)return rs(a,_);if(P.value&&s)return ce(s,{error:P.value});if(n&&!D.value)return ce(n)}}})}function rs(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=ce(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const on=e=>e.type.__isKeepAlive;function sc(e,t){Gi(e,"a",t)}function rc(e,t){Gi(e,"da",t)}function Gi(e,t,n=ue){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Bn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)on(r.parent.vnode)&&ic(s,t,n,r),r=r.parent}}function ic(e,t,n,s){const r=Bn(t,e,s,!0);Kn(()=>{Vs(s[t],r)},n)}function Bn(e,t,n=ue,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{lt();const l=cn(n),c=De(t,n,e,o);return l(),ct(),c});return s?r.unshift(i):r.push(i),i}}const Qe=e=>(t,n=ue)=>{(!Nt||e==="sp")&&Bn(e,(...s)=>t(...s),n)},oc=Qe("bm"),Ft=Qe("m"),lc=Qe("bu"),cc=Qe("u"),Xi=Qe("bum"),Kn=Qe("um"),ac=Qe("sp"),fc=Qe("rtg"),uc=Qe("rtc");function dc(e,t=ue){Bn("ec",e,t)}const Yi="components";function Nf(e,t){return zi(Yi,e,!0,t)||e}const Ji=Symbol.for("v-ndc");function Ff(e){return oe(e)?zi(Yi,e,!1)||e:e||Ji}function zi(e,t,n=!0,s=!1){const r=de||ue;if(r){const i=r.type;{const l=Jc(i,!1);if(l&&(l===t||l===Ne(t)||l===$n(Ne(t))))return i}const o=Sr(r[e]||i[e],t)||Sr(r.appContext[e],t);return!o&&s?i:o}}function Sr(e,t){return e&&(e[t]||e[Ne(t)]||e[$n(Ne(t))])}function Hf(e,t,n,s){let r;const i=n,o=K(e);if(o||oe(e)){const l=o&&mt(e);let c=!1;l&&(c=!Le(e),e=kn(e)),r=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;cen(t)?!(t.type===ye||t.type===Te&&!Qi(t.children)):!0)?e:null}function $f(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:Sn(s)]=e[s];return n}const Ms=e=>e?Eo(e)?Xn(e):Ms(e.parent):null,Bt=he(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ms(e.parent),$root:e=>Ms(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>eo(e),$forceUpdate:e=>e.f||(e.f=()=>{zs(e.update)}),$nextTick:e=>e.n||(e.n=Wn.bind(e.proxy)),$watch:e=>Nc.bind(e)}),is=(e,t)=>e!==ee&&!e.__isScriptSetup&&Q(e,t),hc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(is(s,t))return o[t]=1,s[t];if(r!==ee&&Q(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&Q(f,t))return o[t]=3,i[t];if(n!==ee&&Q(n,t))return o[t]=4,n[t];Os&&(o[t]=0)}}const a=Bt[t];let d,m;if(a)return t==="$attrs"&&me(e.attrs,"get",""),a(e);if((d=l.__cssModules)&&(d=d[t]))return d;if(n!==ee&&Q(n,t))return o[t]=4,n[t];if(m=c.config.globalProperties,Q(m,t))return m[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return is(r,t)?(r[t]=n,!0):s!==ee&&Q(s,t)?(s[t]=n,!0):Q(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==ee&&Q(e,o)||is(t,o)||(l=i[0])&&Q(l,o)||Q(s,o)||Q(Bt,o)||Q(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Q(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function jf(){return pc().slots}function pc(){const e=ln();return e.setupContext||(e.setupContext=Ao(e))}function Tr(e){return K(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Os=!0;function gc(e){const t=eo(e),n=e.proxy,s=e.ctx;Os=!1,t.beforeCreate&&xr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:d,mounted:m,beforeUpdate:v,updated:_,activated:b,deactivated:k,beforeDestroy:P,beforeUnmount:D,destroyed:p,unmounted:g,render:O,renderTracked:$,renderTriggered:R,errorCaptured:j,serverPrefetch:T,expose:M,inheritAttrs:A,components:w,directives:F,filters:Y}=t;if(f&&mc(f,s,null),o)for(const X in o){const V=o[X];q(V)&&(s[X]=V.bind(n))}if(r){const X=r.call(n,n);se(X)&&(e.data=It(X))}if(Os=!0,i)for(const X in i){const V=i[X],ae=q(V)?V.bind(n,n):q(V.get)?V.get.bind(n,n):We,an=!q(V)&&q(V.set)?V.set.bind(n):We,at=re({get:ae,set:an});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>at.value,set:je=>at.value=je})}if(l)for(const X in l)Zi(l[X],s,n,X);if(c){const X=q(c)?c.call(n):c;Reflect.ownKeys(X).forEach(V=>{Sc(V,X[V])})}a&&xr(a,e,"c");function U(X,V){K(V)?V.forEach(ae=>X(ae.bind(n))):V&&X(V.bind(n))}if(U(oc,d),U(Ft,m),U(lc,v),U(cc,_),U(sc,b),U(rc,k),U(dc,j),U(uc,$),U(fc,R),U(Xi,D),U(Kn,g),U(ac,T),K(M))if(M.length){const X=e.exposed||(e.exposed={});M.forEach(V=>{Object.defineProperty(X,V,{get:()=>n[V],set:ae=>n[V]=ae})})}else e.exposed||(e.exposed={});O&&e.render===We&&(e.render=O),A!=null&&(e.inheritAttrs=A),w&&(e.components=w),F&&(e.directives=F),T&&Zs(e)}function mc(e,t,n=We){K(e)&&(e=Ps(e));for(const s in e){const r=e[s];let i;se(r)?"default"in r?i=bt(r.from||s,r.default,!0):i=bt(r.from||s):i=bt(r),fe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function xr(e,t,n){De(K(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Zi(e,t,n,s){let r=s.includes(".")?mo(n,s):()=>n[s];if(oe(e)){const i=t[e];q(i)&&Ie(r,i)}else if(q(e))Ie(r,e.bind(n));else if(se(e))if(K(e))e.forEach(i=>Zi(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Ie(r,i,e)}}function eo(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>Nn(c,f,o,!0)),Nn(c,t,o)),se(t)&&i.set(t,c),c}function Nn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Nn(e,i,n,!0),r&&r.forEach(o=>Nn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=vc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const vc={data:Er,props:Cr,emits:Cr,methods:Vt,computed:Vt,beforeCreate:be,created:be,beforeMount:be,mounted:be,beforeUpdate:be,updated:be,beforeDestroy:be,beforeUnmount:be,destroyed:be,unmounted:be,activated:be,deactivated:be,errorCaptured:be,serverPrefetch:be,components:Vt,directives:Vt,watch:bc,provide:Er,inject:yc};function Er(e,t){return t?e?function(){return he(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function yc(e,t){return Vt(Ps(e),Ps(t))}function Ps(e){if(K(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}function no(){return!!(ue||de||yt)}const so={},ro=()=>Object.create(so),io=e=>Object.getPrototypeOf(e)===so;function Tc(e,t,n,s=!1){const r={},i=ro();e.propsDefaults=Object.create(null),oo(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Pl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function xc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=z(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let d=0;d{c=!0;const[m,v]=lo(d,t,!0);he(o,m),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return se(e)&&s.set(e,Mt),Mt;if(K(i))for(let a=0;ae[0]==="_"||e==="$stable",er=e=>K(e)?e.map(Pe):[Pe(e)],Cc=(e,t,n)=>{if(t._n)return t;const s=Gl((...r)=>er(t(...r)),n);return s._c=!1,s},ao=(e,t,n)=>{const s=e._ctx;for(const r in e){if(co(r))continue;const i=e[r];if(q(i))t[r]=Cc(r,i,s);else if(i!=null){const o=er(i);t[r]=()=>o}}},fo=(e,t)=>{const n=er(t);e.slots.default=()=>n},uo=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},Ac=(e,t,n)=>{const s=e.slots=ro();if(e.vnode.shapeFlag&32){const r=t._;r?(uo(s,t,n),n&&hi(s,"_",r,!0)):ao(t,s)}else t&&fo(e,t)},Rc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=ee;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:uo(r,t,n):(i=!t.$stable,ao(t,r)),o=t}else t&&(fo(e,t),o={default:1});if(i)for(const l in r)!co(l)&&o[l]==null&&delete r[l]},_e=_o;function Mc(e){return ho(e)}function Oc(e){return ho(e,ec)}function ho(e,t){const n=jn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:d,nextSibling:m,setScopeId:v=We,insertStaticContent:_}=e,b=(u,h,y,E=null,S=null,x=null,N=void 0,I=null,L=!!h.dynamicChildren)=>{if(u===h)return;u&&!pt(u,h)&&(E=fn(u),je(u,S,x,!0),u=null),h.patchFlag===-2&&(L=!1,h.dynamicChildren=null);const{type:C,ref:B,shapeFlag:H}=h;switch(C){case _t:k(u,h,y,E);break;case ye:P(u,h,y,E);break;case Kt:u==null&&D(h,y,E,N);break;case Te:w(u,h,y,E,S,x,N,I,L);break;default:H&1?O(u,h,y,E,S,x,N,I,L):H&6?F(u,h,y,E,S,x,N,I,L):(H&64||H&128)&&C.process(u,h,y,E,S,x,N,I,L,Tt)}B!=null&&S&&Qt(B,u&&u.ref,x,h||u,!h)},k=(u,h,y,E)=>{if(u==null)s(h.el=l(h.children),y,E);else{const S=h.el=u.el;h.children!==u.children&&f(S,h.children)}},P=(u,h,y,E)=>{u==null?s(h.el=c(h.children||""),y,E):h.el=u.el},D=(u,h,y,E)=>{[u.el,u.anchor]=_(u.children,h,y,E,u.el,u.anchor)},p=({el:u,anchor:h},y,E)=>{let S;for(;u&&u!==h;)S=m(u),s(u,y,E),u=S;s(h,y,E)},g=({el:u,anchor:h})=>{let y;for(;u&&u!==h;)y=m(u),r(u),u=y;r(h)},O=(u,h,y,E,S,x,N,I,L)=>{h.type==="svg"?N="svg":h.type==="math"&&(N="mathml"),u==null?$(h,y,E,S,x,N,I,L):T(u,h,S,x,N,I,L)},$=(u,h,y,E,S,x,N,I)=>{let L,C;const{props:B,shapeFlag:H,transition:W,dirs:G}=u;if(L=u.el=o(u.type,x,B&&B.is,B),H&8?a(L,u.children):H&16&&j(u.children,L,null,E,S,os(u,x),N,I),G&&Ue(u,null,E,"created"),R(L,u,u.scopeId,N,E),B){for(const te in B)te!=="value"&&!Pt(te)&&i(L,te,null,B[te],x,E);"value"in B&&i(L,"value",null,B.value,x),(C=B.onVnodeBeforeMount)&&Oe(C,E,u)}G&&Ue(u,null,E,"beforeMount");const J=po(S,W);J&&W.beforeEnter(L),s(L,h,y),((C=B&&B.onVnodeMounted)||J||G)&&_e(()=>{C&&Oe(C,E,u),J&&W.enter(L),G&&Ue(u,null,E,"mounted")},S)},R=(u,h,y,E,S)=>{if(y&&v(u,y),E)for(let x=0;x{for(let C=L;C{const I=h.el=u.el;let{patchFlag:L,dynamicChildren:C,dirs:B}=h;L|=u.patchFlag&16;const H=u.props||ee,W=h.props||ee;let G;if(y&&ft(y,!1),(G=W.onVnodeBeforeUpdate)&&Oe(G,y,h,u),B&&Ue(h,u,y,"beforeUpdate"),y&&ft(y,!0),(H.innerHTML&&W.innerHTML==null||H.textContent&&W.textContent==null)&&a(I,""),C?M(u.dynamicChildren,C,I,y,E,os(h,S),x):N||V(u,h,I,null,y,E,os(h,S),x,!1),L>0){if(L&16)A(I,H,W,y,S);else if(L&2&&H.class!==W.class&&i(I,"class",null,W.class,S),L&4&&i(I,"style",H.style,W.style,S),L&8){const J=h.dynamicProps;for(let te=0;te{G&&Oe(G,y,h,u),B&&Ue(h,u,y,"updated")},E)},M=(u,h,y,E,S,x,N)=>{for(let I=0;I{if(h!==y){if(h!==ee)for(const x in h)!Pt(x)&&!(x in y)&&i(u,x,h[x],null,S,E);for(const x in y){if(Pt(x))continue;const N=y[x],I=h[x];N!==I&&x!=="value"&&i(u,x,I,N,S,E)}"value"in y&&i(u,"value",h.value,y.value,S)}},w=(u,h,y,E,S,x,N,I,L)=>{const C=h.el=u?u.el:l(""),B=h.anchor=u?u.anchor:l("");let{patchFlag:H,dynamicChildren:W,slotScopeIds:G}=h;G&&(I=I?I.concat(G):G),u==null?(s(C,y,E),s(B,y,E),j(h.children||[],y,B,S,x,N,I,L)):H>0&&H&64&&W&&u.dynamicChildren?(M(u.dynamicChildren,W,y,S,x,N,I),(h.key!=null||S&&h===S.subTree)&&tr(u,h,!0)):V(u,h,y,B,S,x,N,I,L)},F=(u,h,y,E,S,x,N,I,L)=>{h.slotScopeIds=I,u==null?h.shapeFlag&512?S.ctx.activate(h,y,E,N,L):Y(h,y,E,S,x,N,L):ie(u,h,L)},Y=(u,h,y,E,S,x,N)=>{const I=u.component=qc(u,E,S);if(on(u)&&(I.ctx.renderer=Tt),Gc(I,!1,N),I.asyncDep){if(S&&S.registerDep(I,U,N),!u.el){const L=I.subTree=ce(ye);P(null,L,h,y)}}else U(I,u,h,y,S,x,N)},ie=(u,h,y)=>{const E=h.component=u.component;if(jc(u,h,y))if(E.asyncDep&&!E.asyncResolved){X(E,h,y);return}else E.next=h,E.update();else h.el=u.el,E.vnode=h},U=(u,h,y,E,S,x,N)=>{const I=()=>{if(u.isMounted){let{next:H,bu:W,u:G,parent:J,vnode:te}=u;{const Ce=go(u);if(Ce){H&&(H.el=te.el,X(u,H,N)),Ce.asyncDep.then(()=>{u.isUnmounted||I()});return}}let Z=H,Ee;ft(u,!1),H?(H.el=te.el,X(u,H,N)):H=te,W&&Tn(W),(Ee=H.props&&H.props.onVnodeBeforeUpdate)&&Oe(Ee,J,H,te),ft(u,!0);const pe=ls(u),Fe=u.subTree;u.subTree=pe,b(Fe,pe,d(Fe.el),fn(Fe),u,S,x),H.el=pe.el,Z===null&&yo(u,pe.el),G&&_e(G,S),(Ee=H.props&&H.props.onVnodeUpdated)&&_e(()=>Oe(Ee,J,H,te),S)}else{let H;const{el:W,props:G}=h,{bm:J,m:te,parent:Z,root:Ee,type:pe}=u,Fe=vt(h);if(ft(u,!1),J&&Tn(J),!Fe&&(H=G&&G.onVnodeBeforeMount)&&Oe(H,Z,h),ft(u,!0),W&&Qn){const Ce=()=>{u.subTree=ls(u),Qn(W,u.subTree,u,S,null)};Fe&&pe.__asyncHydrate?pe.__asyncHydrate(W,u,Ce):Ce()}else{Ee.ce&&Ee.ce._injectChildStyle(pe);const Ce=u.subTree=ls(u);b(null,Ce,y,E,u,S,x),h.el=Ce.el}if(te&&_e(te,S),!Fe&&(H=G&&G.onVnodeMounted)){const Ce=h;_e(()=>Oe(H,Z,Ce),S)}(h.shapeFlag&256||Z&&vt(Z.vnode)&&Z.vnode.shapeFlag&256)&&u.a&&_e(u.a,S),u.isMounted=!0,h=y=E=null}};u.scope.on();const L=u.effect=new yi(I);u.scope.off();const C=u.update=L.run.bind(L),B=u.job=L.runIfDirty.bind(L);B.i=u,B.id=u.uid,L.scheduler=()=>zs(B),ft(u,!0),C()},X=(u,h,y)=>{h.component=u;const E=u.vnode.props;u.vnode=h,u.next=null,xc(u,h.props,E,y),Rc(u,h.children,y),lt(),gr(u),ct()},V=(u,h,y,E,S,x,N,I,L=!1)=>{const C=u&&u.children,B=u?u.shapeFlag:0,H=h.children,{patchFlag:W,shapeFlag:G}=h;if(W>0){if(W&128){an(C,H,y,E,S,x,N,I,L);return}else if(W&256){ae(C,H,y,E,S,x,N,I,L);return}}G&8?(B&16&&Ht(C,S,x),H!==C&&a(y,H)):B&16?G&16?an(C,H,y,E,S,x,N,I,L):Ht(C,S,x,!0):(B&8&&a(y,""),G&16&&j(H,y,E,S,x,N,I,L))},ae=(u,h,y,E,S,x,N,I,L)=>{u=u||Mt,h=h||Mt;const C=u.length,B=h.length,H=Math.min(C,B);let W;for(W=0;WB?Ht(u,S,x,!0,!1,H):j(h,y,E,S,x,N,I,L,H)},an=(u,h,y,E,S,x,N,I,L)=>{let C=0;const B=h.length;let H=u.length-1,W=B-1;for(;C<=H&&C<=W;){const G=u[C],J=h[C]=L?nt(h[C]):Pe(h[C]);if(pt(G,J))b(G,J,y,null,S,x,N,I,L);else break;C++}for(;C<=H&&C<=W;){const G=u[H],J=h[W]=L?nt(h[W]):Pe(h[W]);if(pt(G,J))b(G,J,y,null,S,x,N,I,L);else break;H--,W--}if(C>H){if(C<=W){const G=W+1,J=GW)for(;C<=H;)je(u[C],S,x,!0),C++;else{const G=C,J=C,te=new Map;for(C=J;C<=W;C++){const Ae=h[C]=L?nt(h[C]):Pe(h[C]);Ae.key!=null&&te.set(Ae.key,C)}let Z,Ee=0;const pe=W-J+1;let Fe=!1,Ce=0;const Dt=new Array(pe);for(C=0;C=pe){je(Ae,S,x,!0);continue}let Ve;if(Ae.key!=null)Ve=te.get(Ae.key);else for(Z=J;Z<=W;Z++)if(Dt[Z-J]===0&&pt(Ae,h[Z])){Ve=Z;break}Ve===void 0?je(Ae,S,x,!0):(Dt[Ve-J]=C+1,Ve>=Ce?Ce=Ve:Fe=!0,b(Ae,h[Ve],y,null,S,x,N,I,L),Ee++)}const fr=Fe?Pc(Dt):Mt;for(Z=fr.length-1,C=pe-1;C>=0;C--){const Ae=J+C,Ve=h[Ae],ur=Ae+1{const{el:x,type:N,transition:I,children:L,shapeFlag:C}=u;if(C&6){at(u.component.subTree,h,y,E);return}if(C&128){u.suspense.move(h,y,E);return}if(C&64){N.move(u,h,y,Tt);return}if(N===Te){s(x,h,y);for(let H=0;HI.enter(x),S);else{const{leave:H,delayLeave:W,afterLeave:G}=I,J=()=>s(x,h,y),te=()=>{H(x,()=>{J(),G&&G()})};W?W(x,J,te):te()}else s(x,h,y)},je=(u,h,y,E=!1,S=!1)=>{const{type:x,props:N,ref:I,children:L,dynamicChildren:C,shapeFlag:B,patchFlag:H,dirs:W,cacheIndex:G}=u;if(H===-2&&(S=!1),I!=null&&Qt(I,null,y,u,!0),G!=null&&(h.renderCache[G]=void 0),B&256){h.ctx.deactivate(u);return}const J=B&1&&W,te=!vt(u);let Z;if(te&&(Z=N&&N.onVnodeBeforeUnmount)&&Oe(Z,h,u),B&6)Jo(u.component,y,E);else{if(B&128){u.suspense.unmount(y,E);return}J&&Ue(u,null,h,"beforeUnmount"),B&64?u.type.remove(u,h,y,Tt,E):C&&!C.hasOnce&&(x!==Te||H>0&&H&64)?Ht(C,h,y,!1,!0):(x===Te&&H&384||!S&&B&16)&&Ht(L,h,y),E&&cr(u)}(te&&(Z=N&&N.onVnodeUnmounted)||J)&&_e(()=>{Z&&Oe(Z,h,u),J&&Ue(u,null,h,"unmounted")},y)},cr=u=>{const{type:h,el:y,anchor:E,transition:S}=u;if(h===Te){Yo(y,E);return}if(h===Kt){g(u);return}const x=()=>{r(y),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(u.shapeFlag&1&&S&&!S.persisted){const{leave:N,delayLeave:I}=S,L=()=>N(y,x);I?I(u.el,x,L):L()}else x()},Yo=(u,h)=>{let y;for(;u!==h;)y=m(u),r(u),u=y;r(h)},Jo=(u,h,y)=>{const{bum:E,scope:S,job:x,subTree:N,um:I,m:L,a:C}=u;Rr(L),Rr(C),E&&Tn(E),S.stop(),x&&(x.flags|=8,je(N,u,h,y)),I&&_e(I,h),_e(()=>{u.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},Ht=(u,h,y,E=!1,S=!1,x=0)=>{for(let N=x;N{if(u.shapeFlag&6)return fn(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const h=m(u.anchor||u.el),y=h&&h[$i];return y?m(y):h};let Jn=!1;const ar=(u,h,y)=>{u==null?h._vnode&&je(h._vnode,null,null,!0):b(h._vnode||null,u,h,null,null,null,y),h._vnode=u,Jn||(Jn=!0,gr(),Ln(),Jn=!1)},Tt={p:b,um:je,m:at,r:cr,mt:Y,mc:j,pc:V,pbc:M,n:fn,o:e};let zn,Qn;return t&&([zn,Qn]=t(Tt)),{render:ar,hydrate:zn,createApp:wc(ar,zn)}}function os({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function ft({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function po(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function tr(e,t,n=!1){const s=e.children,r=t.children;if(K(s)&&K(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function go(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:go(t)}function Rr(e){if(e)for(let t=0;tbt(Lc);function nr(e,t){return qn(e,null,t)}function Vf(e,t){return qn(e,null,{flush:"post"})}function Ie(e,t,n){return qn(e,t,n)}function qn(e,t,n=ee){const{immediate:s,deep:r,flush:i,once:o}=n,l=he({},n),c=t&&s||!t&&i!=="post";let f;if(Nt){if(i==="sync"){const v=Ic();f=v.__watcherHandles||(v.__watcherHandles=[])}else if(!c){const v=()=>{};return v.stop=We,v.resume=We,v.pause=We,v}}const a=ue;l.call=(v,_,b)=>De(v,a,_,b);let d=!1;i==="post"?l.scheduler=v=>{_e(v,a&&a.suspense)}:i!=="sync"&&(d=!0,l.scheduler=(v,_)=>{_?v():zs(v)}),l.augmentJob=v=>{t&&(v.flags|=4),d&&(v.flags|=2,a&&(v.id=a.uid,v.i=a))};const m=Wl(e,t,l);return Nt&&(f?f.push(m):c&&m()),m}function Nc(e,t,n){const s=this.proxy,r=oe(e)?e.includes(".")?mo(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=cn(this),l=qn(r,i.bind(s),n);return o(),l}function mo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ne(t)}Modifiers`]||e[`${ot(t)}Modifiers`];function Hc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ee;let r=n;const i=t.startsWith("update:"),o=i&&Fc(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>oe(a)?a.trim():a)),o.number&&(r=n.map(Ss)));let l,c=s[l=Sn(t)]||s[l=Sn(Ne(t))];!c&&i&&(c=s[l=Sn(ot(t))]),c&&De(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,De(f,e,6,r)}}function vo(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=vo(f,t,!0);a&&(l=!0,he(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(se(e)&&s.set(e,null),null):(K(i)?i.forEach(c=>o[c]=null):he(o,i),se(e)&&s.set(e,o),o)}function Gn(e,t){return!e||!nn(t)?!1:(t=t.slice(2).replace(/Once$/,""),Q(e,t[0].toLowerCase()+t.slice(1))||Q(e,ot(t))||Q(e,t))}function ls(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:d,data:m,setupState:v,ctx:_,inheritAttrs:b}=e,k=In(e);let P,D;try{if(n.shapeFlag&4){const g=r||s,O=g;P=Pe(f.call(O,g,a,d,v,m,_)),D=l}else{const g=t;P=Pe(g.length>1?g(d,{attrs:l,slots:o,emit:c}):g(d,null)),D=t.props?l:Dc(l)}}catch(g){qt.length=0,rn(g,e,1),P=ce(ye)}let p=P;if(D&&b!==!1){const g=Object.keys(D),{shapeFlag:O}=p;g.length&&O&7&&(i&&g.some(js)&&(D=$c(D,i)),p=rt(p,D,!1,!0))}return n.dirs&&(p=rt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&zt(p,n.transition),P=p,In(k),P}const Dc=e=>{let t;for(const n in e)(n==="class"||n==="style"||nn(n))&&((t||(t={}))[n]=e[n]);return t},$c=(e,t)=>{const n={};for(const s in e)(!js(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function jc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Mr(s,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let d=0;de.__isSuspense;function _o(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):ql(e)}const Te=Symbol.for("v-fgt"),_t=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Kt=Symbol.for("v-stc"),qt=[];let Re=null;function Is(e=!1){qt.push(Re=e?null:[])}function Vc(){qt.pop(),Re=qt[qt.length-1]||null}let Zt=1;function Or(e,t=!1){Zt+=e,e<0&&Re&&t&&(Re.hasOnce=!0)}function wo(e){return e.dynamicChildren=Zt>0?Re||Mt:null,Vc(),Zt>0&&Re&&Re.push(e),e}function kf(e,t,n,s,r,i){return wo(To(e,t,n,s,r,i,!0))}function Ns(e,t,n,s,r){return wo(ce(e,t,n,s,r,!0))}function en(e){return e?e.__v_isVNode===!0:!1}function pt(e,t){return e.type===t.type&&e.key===t.key}const So=({key:e})=>e??null,Cn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?oe(e)||fe(e)||q(e)?{i:de,r:e,k:t,f:!!n}:e:null);function To(e,t=null,n=null,s=0,r=null,i=e===Te?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&So(t),ref:t&&Cn(t),scopeId:Di,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:de};return l?(sr(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=oe(n)?8:16),Zt>0&&!o&&Re&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Re.push(c),c}const ce=kc;function kc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Ji)&&(e=ye),en(e)){const l=rt(e,t,!0);return n&&sr(l,n),Zt>0&&!i&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag=-2,l}if(zc(e)&&(e=e.__vccOpts),t){t=Uc(t);let{class:l,style:c}=t;l&&!oe(l)&&(t.class=Ws(l)),se(c)&&(Ys(c)&&!K(c)&&(c=he({},c)),t.style=Us(c))}const o=oe(e)?1:bo(e)?128:ji(e)?64:se(e)?4:q(e)?2:0;return To(e,t,n,s,r,o,i,!0)}function Uc(e){return e?Ys(e)||io(e)?he({},e):e:null}function rt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?Wc(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&So(f),ref:t&&t.ref?n&&i?K(i)?i.concat(Cn(t)):[i,Cn(t)]:Cn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Te?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&rt(e.ssContent),ssFallback:e.ssFallback&&rt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&zt(a,c.clone(a)),a}function xo(e=" ",t=0){return ce(_t,null,e,t)}function Uf(e,t){const n=ce(Kt,null,e);return n.staticCount=t,n}function Wf(e="",t=!1){return t?(Is(),Ns(ye,null,e)):ce(ye,null,e)}function Pe(e){return e==null||typeof e=="boolean"?ce(ye):K(e)?ce(Te,null,e.slice()):en(e)?nt(e):ce(_t,null,String(e))}function nt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:rt(e)}function sr(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(K(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),sr(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!io(t)?t._ctx=de:r===3&&de&&(de.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:de},n=32):(t=String(t),s&64?(n=16,t=[xo(t)]):n=8);e.children=t,e.shapeFlag|=n}function Wc(...e){const t={};for(let n=0;nue||de;let Fn,Fs;{const e=jn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Fn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Fs=t("__VUE_SSR_SETTERS__",n=>Nt=n)}const cn=e=>{const t=ue;return Fn(e),e.scope.on(),()=>{e.scope.off(),Fn(t)}},Pr=()=>{ue&&ue.scope.off(),Fn(null)};function Eo(e){return e.vnode.shapeFlag&4}let Nt=!1;function Gc(e,t=!1,n=!1){t&&Fs(t);const{props:s,children:r}=e.vnode,i=Eo(e);Tc(e,s,i,t),Ac(e,r,n);const o=i?Xc(e,t):void 0;return t&&Fs(!1),o}function Xc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,hc);const{setup:s}=n;if(s){lt();const r=e.setupContext=s.length>1?Ao(e):null,i=cn(e),o=sn(s,e,0,[e.props,r]),l=fi(o);if(ct(),i(),(l||e.sp)&&!vt(e)&&Zs(e),l){if(o.then(Pr,Pr),t)return o.then(c=>{Lr(e,c)}).catch(c=>{rn(c,e,0)});e.asyncDep=o}else Lr(e,o)}else Co(e)}function Lr(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=Ii(t)),Co(e)}function Co(e,t,n){const s=e.type;e.render||(e.render=s.render||We);{const r=cn(e);lt();try{gc(e)}finally{ct(),r()}}}const Yc={get(e,t){return me(e,"get",""),e[t]}};function Ao(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Yc),slots:e.slots,emit:e.emit,expose:t}}function Xn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ii(xn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Bt)return Bt[n](e)},has(t,n){return n in t||n in Bt}})):e.proxy}function Jc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function zc(e){return q(e)&&"__vccOpts"in e}const re=(e,t)=>kl(e,t,Nt);function Hs(e,t,n){const s=arguments.length;return s===2?se(t)&&!K(t)?en(t)?ce(e,null,[t]):ce(e,t):ce(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&en(n)&&(n=[n]),ce(e,t,n))}const Qc="3.5.13";/** +* @vue/runtime-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ds;const Ir=typeof window<"u"&&window.trustedTypes;if(Ir)try{Ds=Ir.createPolicy("vue",{createHTML:e=>e})}catch{}const Ro=Ds?e=>Ds.createHTML(e):e=>e,Zc="http://www.w3.org/2000/svg",ea="http://www.w3.org/1998/Math/MathML",Ge=typeof document<"u"?document:null,Nr=Ge&&Ge.createElement("template"),ta={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Ge.createElementNS(Zc,e):t==="mathml"?Ge.createElementNS(ea,e):n?Ge.createElement(e,{is:n}):Ge.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ge.createTextNode(e),createComment:e=>Ge.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ge.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Nr.innerHTML=Ro(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Nr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ze="transition",jt="animation",tn=Symbol("_vtc"),Mo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},na=he({},Ui,Mo),sa=e=>(e.displayName="Transition",e.props=na,e),Bf=sa((e,{slots:t})=>Hs(zl,ra(e),t)),ut=(e,t=[])=>{K(e)?e.forEach(n=>n(...t)):e&&e(...t)},Fr=e=>e?K(e)?e.some(t=>t.length>1):e.length>1:!1;function ra(e){const t={};for(const w in e)w in Mo||(t[w]=e[w]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,_=ia(r),b=_&&_[0],k=_&&_[1],{onBeforeEnter:P,onEnter:D,onEnterCancelled:p,onLeave:g,onLeaveCancelled:O,onBeforeAppear:$=P,onAppear:R=D,onAppearCancelled:j=p}=t,T=(w,F,Y,ie)=>{w._enterCancelled=ie,dt(w,F?a:l),dt(w,F?f:o),Y&&Y()},M=(w,F)=>{w._isLeaving=!1,dt(w,d),dt(w,v),dt(w,m),F&&F()},A=w=>(F,Y)=>{const ie=w?R:D,U=()=>T(F,w,Y);ut(ie,[F,U]),Hr(()=>{dt(F,w?c:i),qe(F,w?a:l),Fr(ie)||Dr(F,s,b,U)})};return he(t,{onBeforeEnter(w){ut(P,[w]),qe(w,i),qe(w,o)},onBeforeAppear(w){ut($,[w]),qe(w,c),qe(w,f)},onEnter:A(!1),onAppear:A(!0),onLeave(w,F){w._isLeaving=!0;const Y=()=>M(w,F);qe(w,d),w._enterCancelled?(qe(w,m),Vr()):(Vr(),qe(w,m)),Hr(()=>{w._isLeaving&&(dt(w,d),qe(w,v),Fr(g)||Dr(w,s,k,Y))}),ut(g,[w,Y])},onEnterCancelled(w){T(w,!1,void 0,!0),ut(p,[w])},onAppearCancelled(w){T(w,!0,void 0,!0),ut(j,[w])},onLeaveCancelled(w){M(w),ut(O,[w])}})}function ia(e){if(e==null)return null;if(se(e))return[cs(e.enter),cs(e.leave)];{const t=cs(e);return[t,t]}}function cs(e){return nl(e)}function qe(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[tn]||(e[tn]=new Set)).add(t)}function dt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[tn];n&&(n.delete(t),n.size||(e[tn]=void 0))}function Hr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let oa=0;function Dr(e,t,n,s){const r=e._endId=++oa,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=la(e,t);if(!o)return s();const f=o+"end";let a=0;const d=()=>{e.removeEventListener(f,m),i()},m=v=>{v.target===e&&++a>=c&&d()};setTimeout(()=>{a(n[_]||"").split(", "),r=s(`${Ze}Delay`),i=s(`${Ze}Duration`),o=$r(r,i),l=s(`${jt}Delay`),c=s(`${jt}Duration`),f=$r(l,c);let a=null,d=0,m=0;t===Ze?o>0&&(a=Ze,d=o,m=i.length):t===jt?f>0&&(a=jt,d=f,m=c.length):(d=Math.max(o,f),a=d>0?o>f?Ze:jt:null,m=a?a===Ze?i.length:c.length:0);const v=a===Ze&&/\b(transform|all)(,|$)/.test(s(`${Ze}Property`).toString());return{type:a,timeout:d,propCount:m,hasTransform:v}}function $r(e,t){for(;e.lengthjr(n)+jr(e[s])))}function jr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Vr(){return document.body.offsetHeight}function ca(e,t,n){const s=e[tn];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const kr=Symbol("_vod"),aa=Symbol("_vsh"),fa=Symbol(""),ua=/(^|;)\s*display\s*:/;function da(e,t,n){const s=e.style,r=oe(n);let i=!1;if(n&&!r){if(t)if(oe(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&An(s,l,"")}else for(const o in t)n[o]==null&&An(s,o,"");for(const o in n)o==="display"&&(i=!0),An(s,o,n[o])}else if(r){if(t!==n){const o=s[fa];o&&(n+=";"+o),s.cssText=n,i=ua.test(n)}}else t&&e.removeAttribute("style");kr in e&&(e[kr]=i?s.display:"",e[aa]&&(s.display="none"))}const Ur=/\s*!important$/;function An(e,t,n){if(K(n))n.forEach(s=>An(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=ha(e,t);Ur.test(n)?e.setProperty(ot(s),n.replace(Ur,""),"important"):e[s]=n}}const Wr=["Webkit","Moz","ms"],as={};function ha(e,t){const n=as[t];if(n)return n;let s=Ne(t);if(s!=="filter"&&s in e)return as[t]=s;s=$n(s);for(let r=0;rfs||(va.then(()=>fs=0),fs=Date.now());function ba(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;De(_a(s,n.value),t,5,[s])};return n.value=e,n.attached=ya(),n}function _a(e,t){if(K(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Yr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,wa=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?ca(e,s,o):t==="style"?da(e,n,s):nn(t)?js(t)||ga(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Sa(e,t,s,o))?(qr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Kr(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!oe(s))?qr(e,Ne(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Kr(e,t,s,o))};function Sa(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Yr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Yr(t)&&oe(n)?!1:t in e}const Jr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return K(t)?n=>Tn(t,n):t};function Ta(e){e.target.composing=!0}function zr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const us=Symbol("_assign"),Kf={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[us]=Jr(r);const i=s||r.props&&r.props.type==="number";At(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=Ss(l)),e[us](l)}),n&&At(e,"change",()=>{e.value=e.value.trim()}),t||(At(e,"compositionstart",Ta),At(e,"compositionend",zr),At(e,"change",zr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[us]=Jr(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Ss(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},xa=["ctrl","shift","alt","meta"],Ea={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>xa.some(n=>e[`${n}Key`]&&!t.includes(n))},qf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=ot(r.key);if(t.some(o=>o===i||Ca[o]===i))return e(r)})},Oo=he({patchProp:wa},ta);let Gt,Qr=!1;function Aa(){return Gt||(Gt=Mc(Oo))}function Ra(){return Gt=Qr?Gt:Oc(Oo),Qr=!0,Gt}const Xf=(...e)=>{const t=Aa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Lo(s);if(!r)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Po(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},Yf=(...e)=>{const t=Ra().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Lo(s);if(r)return n(r,!0,Po(r))},t};function Po(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Lo(e){return oe(e)?document.querySelector(e):e}const Ma=window.__VP_SITE_DATA__;function Io(e){return vi()?(ul(e),!0):!1}const ds=new WeakMap,Oa=(...e)=>{var t;const n=e[0],s=(t=ln())==null?void 0:t.proxy;if(s==null&&!no())throw new Error("injectLocal must be called in setup");return s&&ds.has(s)&&n in ds.get(s)?ds.get(s)[n]:bt(...e)},No=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Jf=e=>e!=null,Pa=Object.prototype.toString,La=e=>Pa.call(e)==="[object Object]",it=()=>{},Zr=Ia();function Ia(){var e,t;return No&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function rr(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Fo=e=>e();function Ho(e,t={}){let n,s,r=it;const i=c=>{clearTimeout(c),r(),r=it};let o;return c=>{const f=le(e),a=le(t.maxWait);return n&&i(n),f<=0||a!==void 0&&a<=0?(s&&(i(s),s=null),Promise.resolve(c())):new Promise((d,m)=>{r=t.rejectOnCancel?m:d,o=c,a&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,d(o())},a)),n=setTimeout(()=>{s&&i(s),s=null,d(c())},f)})}}function Na(...e){let t=0,n,s=!0,r=it,i,o,l,c,f;!fe(e[0])&&typeof e[0]=="object"?{delay:o,trailing:l=!0,leading:c=!0,rejectOnCancel:f=!1}=e[0]:[o,l=!0,c=!0,f=!1]=e;const a=()=>{n&&(clearTimeout(n),n=void 0,r(),r=it)};return m=>{const v=le(o),_=Date.now()-t,b=()=>i=m();return a(),v<=0?(t=Date.now(),b()):(_>v&&(c||!s)?(t=Date.now(),b()):l&&(i=new Promise((k,P)=>{r=f?P:k,n=setTimeout(()=>{t=Date.now(),s=!0,k(b()),a()},Math.max(0,v-_))})),!c&&!n&&(n=setTimeout(()=>s=!0,v)),s=!1,i)}}function Fa(e=Fo,t={}){const{initialState:n="active"}=t,s=ir(n==="active");function r(){s.value=!1}function i(){s.value=!0}const o=(...l)=>{s.value&&e(...l)};return{isActive:Un(s),pause:r,resume:i,eventFilter:o}}function ei(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function Ha(e){return ln()}function hs(e){return Array.isArray(e)?e:[e]}function ir(...e){if(e.length!==1)return $l(...e);const t=e[0];return typeof t=="function"?Un(Fl(()=>({get:t,set:it}))):xe(t)}function Da(e,t=200,n={}){return rr(Ho(t,n),e)}function $a(e,t=200,n=!1,s=!0,r=!1){return rr(Na(t,n,s,r),e)}function Do(e,t,n={}){const{eventFilter:s=Fo,...r}=n;return Ie(e,rr(s,t),r)}function ja(e,t,n={}){const{eventFilter:s,initialState:r="active",...i}=n,{eventFilter:o,pause:l,resume:c,isActive:f}=Fa(s,{initialState:r});return{stop:Do(e,t,{...i,eventFilter:o}),pause:l,resume:c,isActive:f}}function Yn(e,t=!0,n){Ha()?Ft(e,n):t?e():Wn(e)}function zf(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return Do(e,t,{...i,eventFilter:Ho(s,{maxWait:r})})}function Va(e,t,n){return Ie(e,t,{...n,immediate:!0})}function Qf(e,t,n){let s;fe(n)?s={evaluating:n}:s={};const{lazy:r=!1,evaluating:i=void 0,shallow:o=!0,onError:l=it}=s,c=Be(!r),f=o?Be(t):xe(t);let a=0;return nr(async d=>{if(!c.value)return;a++;const m=a;let v=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const _=await e(b=>{d(()=>{i&&(i.value=!1),v||b()})});m===a&&(f.value=_)}catch(_){l(_)}finally{i&&m===a&&(i.value=!1),v=!0}}),r?re(()=>(c.value=!0,f.value)):f}const $e=No?window:void 0;function or(e){var t;const n=le(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Je(...e){const t=[],n=()=>{t.forEach(l=>l()),t.length=0},s=(l,c,f,a)=>(l.addEventListener(c,f,a),()=>l.removeEventListener(c,f,a)),r=re(()=>{const l=hs(le(e[0])).filter(c=>c!=null);return l.every(c=>typeof c!="string")?l:void 0}),i=Va(()=>{var l,c;return[(c=(l=r.value)==null?void 0:l.map(f=>or(f)))!=null?c:[$e].filter(f=>f!=null),hs(le(r.value?e[1]:e[0])),hs(Js(r.value?e[2]:e[1])),le(r.value?e[3]:e[2])]},([l,c,f,a])=>{if(n(),!(l!=null&&l.length)||!(c!=null&&c.length)||!(f!=null&&f.length))return;const d=La(a)?{...a}:a;t.push(...l.flatMap(m=>c.flatMap(v=>f.map(_=>s(m,v,_,d)))))},{flush:"post"}),o=()=>{i(),n()};return Io(n),o}function ka(){const e=Be(!1),t=ln();return t&&Ft(()=>{e.value=!0},t),e}function Ua(e){const t=ka();return re(()=>(t.value,!!e()))}function Wa(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Zf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=$e,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=Wa(t);return Je(r,i,a=>{a.repeat&&le(l)||c(a)&&n(a)},o)}const Ba=Symbol("vueuse-ssr-width");function Ka(){const e=no()?Oa(Ba,null):null;return typeof e=="number"?e:void 0}function $o(e,t={}){const{window:n=$e,ssrWidth:s=Ka()}=t,r=Ua(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function"),i=xe(typeof s=="number"),o=Be(),l=Be(!1),c=f=>{l.value=f.matches};return nr(()=>{if(i.value){i.value=!r.value;const f=le(e).split(",");l.value=f.some(a=>{const d=a.includes("not all"),m=a.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),v=a.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let _=!!(m||v);return m&&_&&(_=s>=ei(m[1])),v&&_&&(_=s<=ei(v[1])),d?!_:_});return}r.value&&(o.value=n.matchMedia(le(e)),l.value=o.value.matches)}),Je(o,"change",c,{passive:!0}),re(()=>l.value)}const yn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},bn="__vueuse_ssr_handlers__",qa=Ga();function Ga(){return bn in yn||(yn[bn]=yn[bn]||{}),yn[bn]}function jo(e,t){return qa[e]||t}function Vo(e){return $o("(prefers-color-scheme: dark)",e)}function Xa(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Ya={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},ti="vueuse-storage";function lr(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:d=$e,eventFilter:m,onError:v=A=>{console.error(A)},initOnMounted:_}=s,b=(a?Be:xe)(typeof t=="function"?t():t),k=re(()=>le(e));if(!n)try{n=jo("getDefaultStorage",()=>{var A;return(A=$e)==null?void 0:A.localStorage})()}catch(A){v(A)}if(!n)return b;const P=le(t),D=Xa(P),p=(r=s.serializer)!=null?r:Ya[D],{pause:g,resume:O}=ja(b,()=>R(b.value),{flush:i,deep:o,eventFilter:m});Ie(k,()=>T(),{flush:i}),d&&l&&Yn(()=>{n instanceof Storage?Je(d,"storage",T,{passive:!0}):Je(d,ti,M),_&&T()}),_||T();function $(A,w){if(d){const F={key:k.value,oldValue:A,newValue:w,storageArea:n};d.dispatchEvent(n instanceof Storage?new StorageEvent("storage",F):new CustomEvent(ti,{detail:F}))}}function R(A){try{const w=n.getItem(k.value);if(A==null)$(w,null),n.removeItem(k.value);else{const F=p.write(A);w!==F&&(n.setItem(k.value,F),$(w,F))}}catch(w){v(w)}}function j(A){const w=A?A.newValue:n.getItem(k.value);if(w==null)return c&&P!=null&&n.setItem(k.value,p.write(P)),P;if(!A&&f){const F=p.read(w);return typeof f=="function"?f(F,P):D==="object"&&!Array.isArray(F)?{...P,...F}:F}else return typeof w!="string"?w:p.read(w)}function T(A){if(!(A&&A.storageArea!==n)){if(A&&A.key==null){b.value=P;return}if(!(A&&A.key!==k.value)){g();try{(A==null?void 0:A.newValue)!==p.write(b.value)&&(b.value=j(A))}catch(w){v(w)}finally{A?Wn(O):O()}}}}function M(A){T(A.detail)}return b}const Ja="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function za(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=$e,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,d={auto:"",light:"light",dark:"dark",...e.modes||{}},m=Vo({window:r}),v=re(()=>m.value?"dark":"light"),_=c||(o==null?ir(s):lr(o,s,i,{window:r,listenToStorageChanges:l})),b=re(()=>_.value==="auto"?v.value:_.value),k=jo("updateHTMLAttrs",(g,O,$)=>{const R=typeof g=="string"?r==null?void 0:r.document.querySelector(g):or(g);if(!R)return;const j=new Set,T=new Set;let M=null;if(O==="class"){const w=$.split(/\s/g);Object.values(d).flatMap(F=>(F||"").split(/\s/g)).filter(Boolean).forEach(F=>{w.includes(F)?j.add(F):T.add(F)})}else M={key:O,value:$};if(j.size===0&&T.size===0&&M===null)return;let A;a&&(A=r.document.createElement("style"),A.appendChild(document.createTextNode(Ja)),r.document.head.appendChild(A));for(const w of j)R.classList.add(w);for(const w of T)R.classList.remove(w);M&&R.setAttribute(M.key,M.value),a&&(r.getComputedStyle(A).opacity,document.head.removeChild(A))});function P(g){var O;k(t,n,(O=d[g])!=null?O:g)}function D(g){e.onChanged?e.onChanged(g,P):P(g)}Ie(b,D,{flush:"post",immediate:!0}),Yn(()=>D(b.value));const p=re({get(){return f?_.value:b.value},set(g){_.value=g}});return Object.assign(p,{store:_,system:v,state:b})}function Qa(e={}){const{valueDark:t="dark",valueLight:n=""}=e,s=za({...e,onChanged:(o,l)=>{var c;e.onChanged?(c=e.onChanged)==null||c.call(e,o==="dark",l,o):l(o)},modes:{dark:t,light:n}}),r=re(()=>s.system.value);return re({get(){return s.value==="dark"},set(o){const l=o?"dark":"light";r.value===l?s.value="auto":s.value=l}})}function ps(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}const ni=1;function Za(e,t={}){const{throttle:n=0,idle:s=200,onStop:r=it,onScroll:i=it,offset:o={left:0,right:0,top:0,bottom:0},eventListenerOptions:l={capture:!1,passive:!0},behavior:c="auto",window:f=$e,onError:a=R=>{console.error(R)}}=t,d=Be(0),m=Be(0),v=re({get(){return d.value},set(R){b(R,void 0)}}),_=re({get(){return m.value},set(R){b(void 0,R)}});function b(R,j){var T,M,A,w;if(!f)return;const F=le(e);if(!F)return;(A=F instanceof Document?f.document.body:F)==null||A.scrollTo({top:(T=le(j))!=null?T:_.value,left:(M=le(R))!=null?M:v.value,behavior:le(c)});const Y=((w=F==null?void 0:F.document)==null?void 0:w.documentElement)||(F==null?void 0:F.documentElement)||F;v!=null&&(d.value=Y.scrollLeft),_!=null&&(m.value=Y.scrollTop)}const k=Be(!1),P=It({left:!0,right:!1,top:!0,bottom:!1}),D=It({left:!1,right:!1,top:!1,bottom:!1}),p=R=>{k.value&&(k.value=!1,D.left=!1,D.right=!1,D.top=!1,D.bottom=!1,r(R))},g=Da(p,n+s),O=R=>{var j;if(!f)return;const T=((j=R==null?void 0:R.document)==null?void 0:j.documentElement)||(R==null?void 0:R.documentElement)||or(R),{display:M,flexDirection:A,direction:w}=getComputedStyle(T),F=w==="rtl"?-1:1,Y=T.scrollLeft;D.left=Yd.value;const ie=Y*F<=(o.left||0),U=Y*F+T.clientWidth>=T.scrollWidth-(o.right||0)-ni;M==="flex"&&A==="row-reverse"?(P.left=U,P.right=ie):(P.left=ie,P.right=U),d.value=Y;let X=T.scrollTop;R===f.document&&!X&&(X=f.document.body.scrollTop),D.top=Xm.value;const V=X<=(o.top||0),ae=X+T.clientHeight>=T.scrollHeight-(o.bottom||0)-ni;M==="flex"&&A==="column-reverse"?(P.top=ae,P.bottom=V):(P.top=V,P.bottom=ae),m.value=X},$=R=>{var j;if(!f)return;const T=(j=R.target.documentElement)!=null?j:R.target;O(T),k.value=!0,g(R),i(R)};return Je(e,"scroll",n?$a($,n,!0,!1):$,l),Yn(()=>{try{const R=le(e);if(!R)return;O(R)}catch(R){a(R)}}),Je(e,"scrollend",p,l),{x:v,y:_,isScrolling:k,arrivedState:P,directions:D,measure(){const R=le(e);f&&R&&O(R)}}}function eu(e,t,n={}){const{window:s=$e}=n;return lr(e,t,s==null?void 0:s.localStorage,n)}function ko(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const gs=new WeakMap;function tu(e,t=!1){const n=xe(t);let s=null,r="";Ie(ir(e),l=>{const c=ps(le(l));if(c){const f=c;if(gs.get(f)||gs.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=ps(le(e));!l||n.value||(Zr&&(s=Je(l,"touchmove",c=>{ef(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=ps(le(e));!l||!n.value||(Zr&&(s==null||s()),l.style.overflow=r,gs.delete(l),n.value=!1)};return Io(o),re({get(){return n.value},set(l){l?i():o()}})}function nu(e,t,n={}){const{window:s=$e}=n;return lr(e,t,s==null?void 0:s.sessionStorage,n)}function su(e={}){const{window:t=$e,...n}=e;return Za(t,n)}function ru(e={}){const{window:t=$e,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=xe(n),c=xe(s),f=()=>{if(t)if(o==="outer")l.value=t.outerWidth,c.value=t.outerHeight;else if(o==="visual"&&t.visualViewport){const{width:d,height:m,scale:v}=t.visualViewport;l.value=Math.round(d*v),c.value=Math.round(m*v)}else i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight)};f(),Yn(f);const a={passive:!0};if(Je("resize",f,a),t&&o==="visual"&&t.visualViewport&&Je(t.visualViewport,"resize",f,a),r){const d=$o("(orientation: portrait)");Ie(d,()=>f())}return{width:l,height:c}}const ms={};var vs={};const Uo=/^(?:[a-z]+:|\/\/)/i,tf="vitepress-theme-appearance",nf=/#.*$/,sf=/[?#].*$/,rf=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",Wo={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function of(e,t,n=!1){if(t===void 0)return!1;if(e=si(`/${e}`),n)return new RegExp(t).test(e);if(si(t)!==e)return!1;const s=t.match(nf);return s?(ge?location.hash:"")===s[0]:!0}function si(e){return decodeURI(e).replace(sf,"").replace(rf,"$1")}function lf(e){return Uo.test(e)}function cf(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!lf(n)&&of(t,`/${n}/`,!0))||"root"}function af(e,t){var s,r,i,o,l,c,f;const n=cf(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Ko(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function Bo(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=ff(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function ff(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function uf(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function Ko(e,t){return[...e.filter(n=>!uf(t,n)),...t]}const df=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,hf=/^[a-z]:/i;function ri(e){const t=hf.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(df,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ys=new Set;function pf(e){if(ys.size===0){const n=typeof process=="object"&&(vs==null?void 0:vs.VITE_EXTRA_EXTENSIONS)||(ms==null?void 0:ms.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>ys.add(s))}const t=e.split(".").pop();return t==null||!ys.has(t.toLowerCase())}function iu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const gf=Symbol(),wt=Be(Ma);function ou(e){const t=re(()=>af(wt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?xe(!0):n==="force-auto"?Vo():n?Qa({storageKey:tf,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):xe(!1),r=xe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Ie(()=>e.data,()=>{r.value=ge?location.hash:""}),{site:t,theme:re(()=>t.value.themeConfig),page:re(()=>e.data),frontmatter:re(()=>e.data.frontmatter),params:re(()=>e.data.params),lang:re(()=>t.value.lang),dir:re(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:re(()=>t.value.localeIndex||"root"),title:re(()=>Bo(t.value,e.data)),description:re(()=>e.data.description||t.value.description),isDark:s,hash:re(()=>r.value)}}function mf(){const e=bt(gf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function vf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function ii(e){return Uo.test(e)||!e.startsWith("/")?e:vf(wt.value.base,e)}function yf(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/";t=ri(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${ri(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Rn=[];function lu(e){Rn.push(e),Kn(()=>{Rn=Rn.filter(t=>t!==e)})}function bf(){let e=wt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=oi(e,n);else if(Array.isArray(e))for(const s of e){const r=oi(s,n);if(r){t=r;break}}return t}function oi(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const _f=Symbol(),qo="http://a.com",wf=()=>({path:"/",component:null,data:Wo});function cu(e,t){const n=It(wf()),s={route:n,go:r};async function r(l=ge?location.href:"/"){var c,f;l=bs(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(ge&&l!==bs(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChange??s.onAfterRouteChanged)==null?void 0:f(l)))}let i=null;async function o(l,c=0,f=!1){var m,v;if(await((m=s.onBeforePageLoad)==null?void 0:m.call(s,l))===!1)return;const a=new URL(l,qo),d=i=a.pathname;try{let _=await e(d);if(!_)throw new Error(`Page not found: ${d}`);if(i===d){i=null;const{default:b,__pageData:k}=_;if(!b)throw new Error(`Invalid route component: ${b}`);await((v=s.onAfterPageLoad)==null?void 0:v.call(s,l)),n.path=ge?d:ii(d),n.component=xn(b),n.data=xn(k),ge&&Wn(()=>{let P=wt.value.base+k.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!wt.value.cleanUrls&&!P.endsWith("/")&&(P+=".html"),P!==a.pathname&&(a.pathname=P,l=P+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let D=null;try{D=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if(D){li(D,a.hash);return}}window.scrollTo(0,c)})}}catch(_){if(!/fetch|Page not found/.test(_.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(_),!f)try{const b=await fetch(wt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await b.json(),await o(l,c,!0);return}catch{}if(i===d){i=null,n.path=ge?d:ii(d),n.component=t?xn(t):null;const b=ge?d.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Wo,relativePath:b}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:d,pathname:m,hash:v,search:_}=new URL(f,c.baseURI),b=new URL(location.href);d===b.origin&&pf(m)&&(l.preventDefault(),m===b.pathname&&_===b.search?(v!==b.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:b.href,newURL:a}))),v?li(c,v,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var f;if(l.state===null)return;const c=bs(location.href);await o(c,l.state&&l.state.scrollPosition||0),await((f=s.onAfterRouteChange??s.onAfterRouteChanged)==null?void 0:f(c))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Sf(){const e=bt(_f);if(!e)throw new Error("useRouter() is called without provider.");return e}function Go(){return Sf().route}function li(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-bf()+i;requestAnimationFrame(r)}}function bs(e){const t=new URL(e,qo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),wt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const _n=()=>Rn.forEach(e=>e()),au=Qs({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Go(),{frontmatter:n,site:s}=mf();return Ie(n,_n,{deep:!0,flush:"post"}),()=>Hs(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Hs(t.component,{onVnodeMounted:_n,onVnodeUpdated:_n,onVnodeUnmounted:_n}):"404 Page Not Found"])}}),fu=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Tf="modulepreload",xf=function(e){return"/"+e},ci={},uu=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=xf(c),c in ci)return;ci[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const d=document.createElement("link");if(d.rel=f?"stylesheet":Tf,f||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),f)return new Promise((m,v)=>{d.addEventListener("load",m),d.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},du=Qs({setup(e,{slots:t}){const n=xe(!1);return Ft(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function hu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function pu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),Ef(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function Ef(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function gu(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=_s(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(_s);s.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};nr(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=Bo(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let d=document.querySelector("meta[name=description]");d?d.getAttribute("content")!==a&&d.setAttribute("content",a):_s(["meta",{name:"description",content:a}]),r(Ko(o.head,Af(c)))})}function _s([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function Cf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Af(e){return e.filter(t=>!Cf(t))}const ws=new Set,Xo=()=>document.createElement("link"),Rf=e=>{const t=Xo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Mf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let wn;const Of=ge&&(wn=Xo())&&wn.relList&&wn.relList.supports&&wn.relList.supports("prefetch")?Rf:Mf;function mu(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!ws.has(c)){ws.add(c);const f=yf(c);f&&Of(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):ws.add(l))})})};Ft(s);const r=Go();Ie(()=>r.path,s),Kn(()=>{n&&n.disconnect()})}export{Xi as $,bf as A,Hf as B,Nf as C,Be as D,lu as E,Te as F,ce as G,Ff as H,Uo as I,Go as J,Wc as K,bt as L,ru as M,Us as N,Zf as O,Wn as P,su as Q,ge as R,Un as S,Bf as T,If as U,uu as V,tu as W,Sc as X,$f as Y,Gf as Z,fu as _,xo as a,qf as a0,jf as a1,rc as a2,sc as a3,Pf as a4,Kf as a5,fe as a6,gu as a7,_f as a8,ou as a9,iu as aA,gf as aa,au as ab,du as ac,wt as ad,cu as ae,yf as af,Yf as ag,mu as ah,pu as ai,hu as aj,Hs as ak,Uf as al,le as am,hs as an,or as ao,Jf as ap,Io as aq,Qf as ar,nu as as,eu as at,zf as au,Sf as av,Je as aw,Lf as ax,xn as ay,Xf as az,Ns as b,kf as c,Qs as d,Wf as e,pf as f,ii as g,re as h,lf as i,To as j,Js as k,of as l,$o as m,Ws as n,Is as o,xe as p,Ie as q,Df as r,nr as s,al as t,mf as u,Ft as v,Gl as w,Kn as x,Vf as y,cc as z}; diff --git a/assets/chunks/framework.v7PlT0Wt.js b/assets/chunks/framework.v7PlT0Wt.js deleted file mode 100644 index 3d2dba06..00000000 --- a/assets/chunks/framework.v7PlT0Wt.js +++ /dev/null @@ -1,18 +0,0 @@ -/** -* @vue/shared v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function Ns(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Z={},Et=[],ke=()=>{},Wo=()=>!1,en=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Fs=e=>e.startsWith("onUpdate:"),de=Object.assign,Hs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ko=Object.prototype.hasOwnProperty,z=(e,t)=>Ko.call(e,t),W=Array.isArray,Tt=e=>In(e)==="[object Map]",si=e=>In(e)==="[object Set]",q=e=>typeof e=="function",re=e=>typeof e=="string",Xe=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",ri=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),ii=Object.prototype.toString,In=e=>ii.call(e),qo=e=>In(e).slice(8,-1),oi=e=>In(e)==="[object Object]",$s=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=Ns(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Nn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Go=/-(\w)/g,Le=Nn(e=>e.replace(Go,(t,n)=>n?n.toUpperCase():"")),Yo=/\B([A-Z])/g,st=Nn(e=>e.replace(Yo,"-$1").toLowerCase()),Fn=Nn(e=>e.charAt(0).toUpperCase()+e.slice(1)),bn=Nn(e=>e?`on${Fn(e)}`:""),tt=(e,t)=>!Object.is(e,t),wn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},_s=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Xo=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let cr;const Hn=()=>cr||(cr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ds(e){if(W(e)){const t={};for(let n=0;n{if(n){const s=n.split(zo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function js(e){let t="";if(re(e))t=e;else if(W(e))for(let n=0;n!!(e&&e.__v_isRef===!0),nl=e=>re(e)?e:e==null?"":W(e)||ne(e)&&(e.toString===ii||!q(e.toString))?ai(e)?nl(e.value):JSON.stringify(e,fi,2):String(e),fi=(e,t)=>ai(t)?fi(e,t.value):Tt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[zn(s,i)+" =>"]=r,n),{})}:si(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>zn(n))}:Xe(t)?zn(t):ne(t)&&!W(t)&&!oi(t)?String(t):t,zn=(e,t="")=>{var n;return Xe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let ve;class sl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=ve,!t&&ve&&(this.index=(ve.scopes||(ve.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(jt){let t=jt;for(jt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Dt;){let t=Dt;for(Dt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function gi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function mi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),ks(s),il(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function bs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(yi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function yi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Kt))return;e.globalVersion=Kt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!bs(e)){e.flags&=-3;return}const n=te,s=Ne;te=e,Ne=!0;try{gi(e);const r=e.fn(e._value);(t.version===0||tt(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{te=n,Ne=s,mi(e),e.flags&=-3}}function ks(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)ks(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function il(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ne=!0;const _i=[];function rt(){_i.push(Ne),Ne=!1}function it(){const e=_i.pop();Ne=e===void 0?!0:e}function ar(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=te;te=void 0;try{t()}finally{te=n}}}let Kt=0;class ol{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class $n{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!te||!Ne||te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==te)n=this.activeLink=new ol(te,this),te.deps?(n.prevDep=te.depsTail,te.depsTail.nextDep=n,te.depsTail=n):te.deps=te.depsTail=n,bi(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=te.depsTail,n.nextDep=void 0,te.depsTail.nextDep=n,te.depsTail=n,te.deps===n&&(te.deps=s)}return n}trigger(t){this.version++,Kt++,this.notify(t)}notify(t){Vs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Us()}}}function bi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)bi(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Cn=new WeakMap,dt=Symbol(""),ws=Symbol(""),qt=Symbol("");function me(e,t,n){if(Ne&&te){let s=Cn.get(e);s||Cn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new $n),r.map=s,r.key=n),r.track()}}function Ge(e,t,n,s,r,i){const o=Cn.get(e);if(!o){Kt++;return}const l=c=>{c&&c.trigger()};if(Vs(),t==="clear")o.forEach(l);else{const c=W(e),f=c&&$s(n);if(c&&n==="length"){const a=Number(s);o.forEach((h,y)=>{(y==="length"||y===qt||!Xe(y)&&y>=a)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),f&&l(o.get(qt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(dt)),Tt(e)&&l(o.get(ws)));break;case"delete":c||(l(o.get(dt)),Tt(e)&&l(o.get(ws)));break;case"set":Tt(e)&&l(o.get(dt));break}}Us()}function ll(e,t){const n=Cn.get(e);return n&&n.get(t)}function bt(e){const t=J(e);return t===e?t:(me(t,"iterate",qt),Pe(e)?t:t.map(ye))}function Dn(e){return me(e=J(e),"iterate",qt),e}const cl={__proto__:null,[Symbol.iterator](){return Zn(this,Symbol.iterator,ye)},concat(...e){return bt(this).concat(...e.map(t=>W(t)?bt(t):t))},entries(){return Zn(this,"entries",e=>(e[1]=ye(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(ye),arguments)},find(e,t){return We(this,"find",e,t,ye,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,ye,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return es(this,"includes",e)},indexOf(...e){return es(this,"indexOf",e)},join(e){return bt(this).join(e)},lastIndexOf(...e){return es(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return fr(this,"reduce",e,t)},reduceRight(e,...t){return fr(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(this,"splice",e)},toReversed(){return bt(this).toReversed()},toSorted(e){return bt(this).toSorted(e)},toSpliced(...e){return bt(this).toSpliced(...e)},unshift(...e){return Ft(this,"unshift",e)},values(){return Zn(this,"values",ye)}};function Zn(e,t,n){const s=Dn(e),r=s[t]();return s!==e&&!Pe(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const al=Array.prototype;function We(e,t,n,s,r,i){const o=Dn(e),l=o!==e&&!Pe(e),c=o[t];if(c!==al[t]){const h=c.apply(e,i);return l?ye(h):h}let f=n;o!==e&&(l?f=function(h,y){return n.call(this,ye(h),y,e)}:n.length>2&&(f=function(h,y){return n.call(this,h,y,e)}));const a=c.call(o,f,s);return l&&r?r(a):a}function fr(e,t,n,s){const r=Dn(e);let i=n;return r!==e&&(Pe(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,ye(l),c,e)}),r[t](i,...s)}function es(e,t,n){const s=J(e);me(s,"iterate",qt);const r=s[t](...n);return(r===-1||r===!1)&&Ks(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Ft(e,t,n=[]){rt(),Vs();const s=J(e)[t].apply(e,n);return Us(),it(),s}const fl=Ns("__proto__,__v_isRef,__isVue"),wi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Xe));function ul(e){Xe(e)||(e=String(e));const t=J(this);return me(t,"has",e),t.hasOwnProperty(e)}class vi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?vl:Ti:i?Ei:xi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=W(t);if(!r){let c;if(o&&(c=cl[n]))return c;if(n==="hasOwnProperty")return ul}const l=Reflect.get(t,n,ae(t)?t:s);return(Xe(n)?wi.has(n):fl(n))||(r||me(t,"get",n),i)?l:ae(l)?o&&$s(n)?l:l.value:ne(l)?r?Vn(l):jn(l):l}}class Si extends vi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=yt(i);if(!Pe(s)&&!yt(s)&&(i=J(i),s=J(s)),!W(t)&&ae(i)&&!ae(s))return c?!1:(i.value=s,!0)}const o=W(t)&&$s(n)?Number(n)e,cn=e=>Reflect.getPrototypeOf(e);function ml(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=Tt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),a=n?vs:t?Ss:ye;return!t&&me(i,"iterate",c?ws:dt),{next(){const{value:h,done:y}=f.next();return y?{value:h,done:y}:{value:l?[a(h[0]),a(h[1])]:a(h),done:y}},[Symbol.iterator](){return this}}}}function an(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function yl(e,t){const n={get(r){const i=this.__v_raw,o=J(i),l=J(r);e||(tt(r,l)&&me(o,"get",r),me(o,"get",l));const{has:c}=cn(o),f=t?vs:e?Ss:ye;if(c.call(o,r))return f(i.get(r));if(c.call(o,l))return f(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&me(J(r),"iterate",dt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=J(i),l=J(r);return e||(tt(r,l)&&me(o,"has",r),me(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=J(l),f=t?vs:e?Ss:ye;return!e&&me(c,"iterate",dt),l.forEach((a,h)=>r.call(i,f(a),f(h),o))}};return de(n,e?{add:an("add"),set:an("set"),delete:an("delete"),clear:an("clear")}:{add(r){!t&&!Pe(r)&&!yt(r)&&(r=J(r));const i=J(this);return cn(i).has.call(i,r)||(i.add(r),Ge(i,"add",r,r)),this},set(r,i){!t&&!Pe(i)&&!yt(i)&&(i=J(i));const o=J(this),{has:l,get:c}=cn(o);let f=l.call(o,r);f||(r=J(r),f=l.call(o,r));const a=c.call(o,r);return o.set(r,i),f?tt(i,a)&&Ge(o,"set",r,i):Ge(o,"add",r,i),this},delete(r){const i=J(this),{has:o,get:l}=cn(i);let c=o.call(i,r);c||(r=J(r),c=o.call(i,r)),l&&l.call(i,r);const f=i.delete(r);return c&&Ge(i,"delete",r,void 0),f},clear(){const r=J(this),i=r.size!==0,o=r.clear();return i&&Ge(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=ml(r,e,t)}),n}function Bs(e,t){const n=yl(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const _l={get:Bs(!1,!1)},bl={get:Bs(!1,!0)},wl={get:Bs(!0,!1)};const xi=new WeakMap,Ei=new WeakMap,Ti=new WeakMap,vl=new WeakMap;function Sl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function xl(e){return e.__v_skip||!Object.isExtensible(e)?0:Sl(qo(e))}function jn(e){return yt(e)?e:Ws(e,!1,hl,_l,xi)}function El(e){return Ws(e,!1,gl,bl,Ei)}function Vn(e){return Ws(e,!0,pl,wl,Ti)}function Ws(e,t,n,s,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=xl(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function ht(e){return yt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function Ks(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function vn(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&li(e,"__v_skip",!0),e}const ye=e=>ne(e)?jn(e):e,Ss=e=>ne(e)?Vn(e):e;function ae(e){return e?e.__v_isRef===!0:!1}function oe(e){return Ci(e,!1)}function qs(e){return Ci(e,!0)}function Ci(e,t){return ae(e)?e:new Tl(e,t)}class Tl{constructor(t,n){this.dep=new $n,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:ye(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Pe(t)||yt(t);t=s?t:J(t),tt(t,n)&&(this._rawValue=t,this._value=s?t:ye(t),this.dep.trigger())}}function Ai(e){return ae(e)?e.value:e}const Cl={get:(e,t,n)=>t==="__v_raw"?e:Ai(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ae(r)&&!ae(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Ri(e){return ht(e)?e:new Proxy(e,Cl)}class Al{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new $n,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Rl(e){return new Al(e)}class Ol{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return ll(J(this._object),this._key)}}class Ml{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Pl(e,t,n){return ae(e)?e:q(e)?new Ml(e):ne(e)&&arguments.length>1?Ll(e,t,n):oe(e)}function Ll(e,t,n){const s=e[t];return ae(s)?s:new Ol(e,t,n)}class Il{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new $n(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Kt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&te!==this)return pi(this,!0),!0}get value(){const t=this.dep.track();return yi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Nl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new Il(s,r,n)}const fn={},An=new WeakMap;let ft;function Fl(e,t=!1,n=ft){if(n){let s=An.get(n);s||An.set(n,s=[]),s.push(e)}}function Hl(e,t,n=Z){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,f=g=>r?g:Pe(g)||r===!1||r===0?Ye(g,1):Ye(g);let a,h,y,_,S=!1,b=!1;if(ae(e)?(h=()=>e.value,S=Pe(e)):ht(e)?(h=()=>f(e),S=!0):W(e)?(b=!0,S=e.some(g=>ht(g)||Pe(g)),h=()=>e.map(g=>{if(ae(g))return g.value;if(ht(g))return f(g);if(q(g))return c?c(g,2):g()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(y){rt();try{y()}finally{it()}}const g=ft;ft=a;try{return c?c(e,3,[_]):e(_)}finally{ft=g}}:h=ke,t&&r){const g=h,O=r===!0?1/0:r;h=()=>Ye(g(),O)}const K=ui(),N=()=>{a.stop(),K&&K.active&&Hs(K.effects,a)};if(i&&t){const g=t;t=(...O)=>{g(...O),N()}}let j=b?new Array(e.length).fill(fn):fn;const p=g=>{if(!(!(a.flags&1)||!a.dirty&&!g))if(t){const O=a.run();if(r||S||(b?O.some((F,$)=>tt(F,j[$])):tt(O,j))){y&&y();const F=ft;ft=a;try{const $=[O,j===fn?void 0:b&&j[0]===fn?[]:j,_];c?c(t,3,$):t(...$),j=O}finally{ft=F}}}else a.run()};return l&&l(p),a=new di(h),a.scheduler=o?()=>o(p,!1):p,_=g=>Fl(g,!1,a),y=a.onStop=()=>{const g=An.get(a);if(g){if(c)c(g,4);else for(const O of g)O();An.delete(a)}},t?s?p(!0):j=a.run():o?o(p.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function Ye(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ae(e))Ye(e.value,t,n);else if(W(e))for(let s=0;s{Ye(s,t,n)});else if(oi(e)){for(const s in e)Ye(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ye(e[s],t,n)}return e}/** -* @vue/runtime-core v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function tn(e,t,n,s){try{return s?e(...s):e()}catch(r){nn(r,t,n)}}function He(e,t,n,s){if(q(e)){const r=tn(e,t,n,s);return r&&ri(r)&&r.catch(i=>{nn(i,t,n)}),r}if(W(e)){const r=[];for(let i=0;i>>1,r=Se[s],i=Gt(r);i=Gt(n)?Se.push(e):Se.splice(Dl(t),0,e),e.flags|=1,Mi()}}function Mi(){Rn||(Rn=Oi.then(Pi))}function jl(e){W(e)?At.push(...e):Qe&&e.id===-1?Qe.splice(vt+1,0,e):e.flags&1||(At.push(e),e.flags|=1),Mi()}function ur(e,t,n=Ve+1){for(;nGt(n)-Gt(s));if(At.length=0,Qe){Qe.push(...t);return}for(Qe=t,vt=0;vte.id==null?e.flags&2?-1:1/0:e.id;function Pi(e){try{for(Ve=0;Ve{s._d&&Cr(-1);const i=Mn(t);let o;try{o=e(...r)}finally{Mn(i),s._d&&Cr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function _f(e,t){if(ue===null)return e;const n=Gn(ue),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Vt=e=>e&&(e.disabled||e.disabled===""),dr=e=>e&&(e.defer||e.defer===""),hr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,pr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,xs=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},Fi={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:a,pc:h,pbc:y,o:{insert:_,querySelector:S,createText:b,createComment:K}}=f,N=Vt(t.props);let{shapeFlag:j,children:p,dynamicChildren:g}=t;if(e==null){const O=t.el=b(""),F=t.anchor=b("");_(O,n,s),_(F,n,s);const $=(R,w)=>{j&16&&(r&&r.isCE&&(r.ce._teleportTarget=R),a(p,R,w,r,i,o,l,c))},V=()=>{const R=t.target=xs(t.props,S),w=Hi(R,t,b,_);R&&(o!=="svg"&&hr(R)?o="svg":o!=="mathml"&&pr(R)&&(o="mathml"),N||($(R,w),Sn(t,!1)))};N&&($(n,F),Sn(t,!0)),dr(t.props)?we(()=>{V(),t.el.__isMounted=!0},i):V()}else{if(dr(t.props)&&!e.el.__isMounted){we(()=>{Fi.process(e,t,n,s,r,i,o,l,c,f),delete e.el.__isMounted},i);return}t.el=e.el,t.targetStart=e.targetStart;const O=t.anchor=e.anchor,F=t.target=e.target,$=t.targetAnchor=e.targetAnchor,V=Vt(e.props),R=V?n:F,w=V?O:$;if(o==="svg"||hr(F)?o="svg":(o==="mathml"||pr(F))&&(o="mathml"),g?(y(e.dynamicChildren,g,R,r,i,o,l),zs(e,t,!0)):c||h(e,t,R,w,r,i,o,l,!1),N)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):un(t,n,O,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const I=t.target=xs(t.props,S);I&&un(t,I,null,f,0)}else V&&un(t,F,$,f,1);Sn(t,N)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:h,props:y}=e;if(h&&(r(f),r(a)),i&&r(c),o&16){const _=i||!Vt(y);for(let S=0;S{e.isMounted=!0}),Bi(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],$i={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},Di=e=>{const t=e.subTree;return t.component?Di(t.component):t},Bl={name:"BaseTransition",props:$i,setup(e,{slots:t}){const n=qn(),s=kl();return()=>{const r=t.default&&Ui(t.default(),!0);if(!r||!r.length)return;const i=ji(r),o=J(e),{mode:l}=o;if(s.isLeaving)return ts(i);const c=gr(i);if(!c)return ts(i);let f=Es(c,o,s,n,h=>f=h);c.type!==_e&&Yt(c,f);let a=n.subTree&&gr(n.subTree);if(a&&a.type!==_e&&!ut(c,a)&&Di(n).type!==_e){let h=Es(a,o,s,n);if(Yt(a,h),l==="out-in"&&c.type!==_e)return s.isLeaving=!0,h.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave,a=void 0},ts(i);l==="in-out"&&c.type!==_e?h.delayLeave=(y,_,S)=>{const b=Vi(s,a);b[String(a.key)]=a,y[Ze]=()=>{_(),y[Ze]=void 0,delete f.delayedLeave,a=void 0},f.delayedLeave=()=>{S(),delete f.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return i}}};function ji(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==_e){t=n;break}}return t}const Wl=Bl;function Vi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Es(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:y,onLeave:_,onAfterLeave:S,onLeaveCancelled:b,onBeforeAppear:K,onAppear:N,onAfterAppear:j,onAppearCancelled:p}=t,g=String(e.key),O=Vi(n,e),F=(R,w)=>{R&&He(R,s,9,w)},$=(R,w)=>{const I=w[1];F(R,w),W(R)?R.every(x=>x.length<=1)&&I():R.length<=1&&I()},V={mode:o,persisted:l,beforeEnter(R){let w=c;if(!n.isMounted)if(i)w=K||c;else return;R[Ze]&&R[Ze](!0);const I=O[g];I&&ut(e,I)&&I.el[Ze]&&I.el[Ze](),F(w,[R])},enter(R){let w=f,I=a,x=h;if(!n.isMounted)if(i)w=N||f,I=j||a,x=p||h;else return;let B=!1;const se=R[dn]=le=>{B||(B=!0,le?F(x,[R]):F(I,[R]),V.delayedLeave&&V.delayedLeave(),R[dn]=void 0)};w?$(w,[R,se]):se()},leave(R,w){const I=String(e.key);if(R[dn]&&R[dn](!0),n.isUnmounting)return w();F(y,[R]);let x=!1;const B=R[Ze]=se=>{x||(x=!0,w(),se?F(b,[R]):F(S,[R]),R[Ze]=void 0,O[I]===e&&delete O[I])};O[I]=e,_?$(_,[R,B]):B()},clone(R){const w=Es(R,t,n,s,r);return r&&r(w),w}};return V}function ts(e){if(sn(e))return e=nt(e),e.children=null,e}function gr(e){if(!sn(e))return Ni(e.type)&&e.children?ji(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Yt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ui(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iXt(S,t&&(W(t)?t[b]:t),n,s,r));return}if(pt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Xt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Gn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===Z?l.refs={}:l.refs,h=l.setupState,y=J(h),_=h===Z?()=>!1:S=>z(y,S);if(f!=null&&f!==c&&(re(f)?(a[f]=null,_(f)&&(h[f]=null)):ae(f)&&(f.value=null)),q(c))tn(c,l,12,[o,a]);else{const S=re(c),b=ae(c);if(S||b){const K=()=>{if(e.f){const N=S?_(c)?h[c]:a[c]:c.value;r?W(N)&&Hs(N,i):W(N)?N.includes(i)||N.push(i):S?(a[c]=[i],_(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else S?(a[c]=o,_(c)&&(h[c]=o)):b&&(c.value=o,e.k&&(a[e.k]=o))};o?(K.id=-1,we(K,n)):K()}}}let mr=!1;const wt=()=>{mr||(console.error("Hydration completed but contains mismatches."),mr=!0)},Kl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",ql=e=>e.namespaceURI.includes("MathML"),hn=e=>{if(e.nodeType===1){if(Kl(e))return"svg";if(ql(e))return"mathml"}},xt=e=>e.nodeType===8;function Gl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,g)=>{if(!g.hasChildNodes()){n(null,p,g),On(),g._vnode=p;return}h(g.firstChild,p,null,null,null),On(),g._vnode=p},h=(p,g,O,F,$,V=!1)=>{V=V||!!g.dynamicChildren;const R=xt(p)&&p.data==="[",w=()=>b(p,g,O,F,$,R),{type:I,ref:x,shapeFlag:B,patchFlag:se}=g;let le=p.nodeType;g.el=p,se===-2&&(V=!1,g.dynamicChildren=null);let U=null;switch(I){case gt:le!==3?g.children===""?(c(g.el=r(""),o(p),p),U=p):U=w():(p.data!==g.children&&(wt(),p.data=g.children),U=i(p));break;case _e:j(p)?(U=i(p),N(g.el=p.content.firstChild,p,O)):le!==8||R?U=w():U=i(p);break;case kt:if(R&&(p=i(p),le=p.nodeType),le===1||le===3){U=p;const Y=!g.children.length;for(let D=0;D{V=V||!!g.dynamicChildren;const{type:R,props:w,patchFlag:I,shapeFlag:x,dirs:B,transition:se}=g,le=R==="input"||R==="option";if(le||I!==-1){B&&Ue(g,null,O,"created");let U=!1;if(j(p)){U=lo(null,se)&&O&&O.vnode.props&&O.vnode.props.appear;const D=p.content.firstChild;U&&se.beforeEnter(D),N(D,p,O),g.el=p=D}if(x&16&&!(w&&(w.innerHTML||w.textContent))){let D=_(p.firstChild,g,p,O,F,$,V);for(;D;){pn(p,1)||wt();const he=D;D=D.nextSibling,l(he)}}else if(x&8){let D=g.children;D[0]===` -`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(D=D.slice(1)),p.textContent!==D&&(pn(p,0)||wt(),p.textContent=g.children)}if(w){if(le||!V||I&48){const D=p.tagName.includes("-");for(const he in w)(le&&(he.endsWith("value")||he==="indeterminate")||en(he)&&!Ct(he)||he[0]==="."||D)&&s(p,he,null,w[he],void 0,O)}else if(w.onClick)s(p,"onClick",null,w.onClick,void 0,O);else if(I&4&&ht(w.style))for(const D in w.style)w.style[D]}let Y;(Y=w&&w.onVnodeBeforeMount)&&Oe(Y,O,g),B&&Ue(g,null,O,"beforeMount"),((Y=w&&w.onVnodeMounted)||B||U)&&po(()=>{Y&&Oe(Y,O,g),U&&se.enter(p),B&&Ue(g,null,O,"mounted")},F)}return p.nextSibling},_=(p,g,O,F,$,V,R)=>{R=R||!!g.dynamicChildren;const w=g.children,I=w.length;for(let x=0;x{const{slotScopeIds:R}=g;R&&($=$?$.concat(R):R);const w=o(p),I=_(i(p),g,w,O,F,$,V);return I&&xt(I)&&I.data==="]"?i(g.anchor=I):(wt(),c(g.anchor=f("]"),w,I),I)},b=(p,g,O,F,$,V)=>{if(pn(p.parentElement,1)||wt(),g.el=null,V){const I=K(p);for(;;){const x=i(p);if(x&&x!==I)l(x);else break}}const R=i(p),w=o(p);return l(p),n(null,g,w,R,O,F,hn(w),$),O&&(O.vnode.el=g.el,uo(O,g.el)),R},K=(p,g="[",O="]")=>{let F=0;for(;p;)if(p=i(p),p&&xt(p)&&(p.data===g&&F++,p.data===O)){if(F===0)return i(p);F--}return p},N=(p,g,O)=>{const F=g.parentNode;F&&F.replaceChild(p,g);let $=O;for(;$;)$.vnode.el===g&&($.vnode.el=$.subTree.el=p),$=$.parent},j=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,h]}const yr="data-allow-mismatch",Yl={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function pn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(yr);)e=e.parentElement;const n=e&&e.getAttribute(yr);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(Yl[t])}}Hn().requestIdleCallback;Hn().cancelIdleCallback;function Xl(e,t){if(xt(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(xt(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const pt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function wf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,h=0;const y=()=>(h++,f=null,_()),_=()=>{let S;return f||(S=f=t().catch(b=>{if(b=b instanceof Error?b:new Error(String(b)),c)return new Promise((K,N)=>{c(b,()=>K(y()),()=>N(b),h+1)});throw b}).then(b=>S!==f&&f?f:(b&&(b.__esModule||b[Symbol.toStringTag]==="Module")&&(b=b.default),a=b,b)))};return Ys({name:"AsyncComponentWrapper",__asyncLoader:_,__asyncHydrate(S,b,K){const N=i?()=>{const j=i(K,p=>Xl(S,p));j&&(b.bum||(b.bum=[])).push(j)}:K;a?N():_().then(()=>!b.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const S=fe;if(Xs(S),a)return()=>ns(a,S);const b=p=>{f=null,nn(p,S,13,!s)};if(l&&S.suspense||Mt)return _().then(p=>()=>ns(p,S)).catch(p=>(b(p),()=>s?ce(s,{error:p}):null));const K=oe(!1),N=oe(),j=oe(!!r);return r&&setTimeout(()=>{j.value=!1},r),o!=null&&setTimeout(()=>{if(!K.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);b(p),N.value=p}},o),_().then(()=>{K.value=!0,S.parent&&sn(S.parent.vnode)&&S.parent.update()}).catch(p=>{b(p),N.value=p}),()=>{if(K.value&&a)return ns(a,S);if(N.value&&s)return ce(s,{error:N.value});if(n&&!j.value)return ce(n)}}})}function ns(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=ce(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const sn=e=>e.type.__isKeepAlive;function Jl(e,t){ki(e,"a",t)}function zl(e,t){ki(e,"da",t)}function ki(e,t,n=fe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(kn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)sn(r.parent.vnode)&&Ql(s,t,n,r),r=r.parent}}function Ql(e,t,n,s){const r=kn(t,e,s,!0);Bn(()=>{Hs(s[t],r)},n)}function kn(e,t,n=fe,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{rt();const l=rn(n),c=He(t,n,e,o);return l(),it(),c});return s?r.unshift(i):r.push(i),i}}const Je=e=>(t,n=fe)=>{(!Mt||e==="sp")&&kn(e,(...s)=>t(...s),n)},Zl=Je("bm"),Lt=Je("m"),ec=Je("bu"),tc=Je("u"),Bi=Je("bum"),Bn=Je("um"),nc=Je("sp"),sc=Je("rtg"),rc=Je("rtc");function ic(e,t=fe){kn("ec",e,t)}const Wi="components";function vf(e,t){return qi(Wi,e,!0,t)||e}const Ki=Symbol.for("v-ndc");function Sf(e){return re(e)?qi(Wi,e,!1)||e:e||Ki}function qi(e,t,n=!0,s=!1){const r=ue||fe;if(r){const i=r.type;{const l=Bc(i,!1);if(l&&(l===t||l===Le(t)||l===Fn(Le(t))))return i}const o=_r(r[e]||i[e],t)||_r(r.appContext[e],t);return!o&&s?i:o}}function _r(e,t){return e&&(e[t]||e[Le(t)]||e[Fn(Le(t))])}function xf(e,t,n,s){let r;const i=n,o=W(e);if(o||re(e)){const l=o&&ht(e);let c=!1;l&&(c=!Pe(e),e=Dn(e)),r=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;czt(t)?!(t.type===_e||t.type===xe&&!Gi(t.children)):!0)?e:null}function Tf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:bn(s)]=e[s];return n}const Ts=e=>e?bo(e)?Gn(e):Ts(e.parent):null,Ut=de(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ts(e.parent),$root:e=>Ts(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Xi(e),$forceUpdate:e=>e.f||(e.f=()=>{Gs(e.update)}),$nextTick:e=>e.n||(e.n=Un.bind(e.proxy)),$watch:e=>Ac.bind(e)}),ss=(e,t)=>e!==Z&&!e.__isScriptSetup&&z(e,t),oc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const _=o[t];if(_!==void 0)switch(_){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(ss(s,t))return o[t]=1,s[t];if(r!==Z&&z(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&z(f,t))return o[t]=3,i[t];if(n!==Z&&z(n,t))return o[t]=4,n[t];Cs&&(o[t]=0)}}const a=Ut[t];let h,y;if(a)return t==="$attrs"&&me(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==Z&&z(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,z(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return ss(r,t)?(r[t]=n,!0):s!==Z&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==Z&&z(e,o)||ss(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(Ut,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Cf(){return lc().slots}function lc(){const e=qn();return e.setupContext||(e.setupContext=vo(e))}function br(e){return W(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Cs=!0;function cc(e){const t=Xi(e),n=e.proxy,s=e.ctx;Cs=!1,t.beforeCreate&&wr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:h,mounted:y,beforeUpdate:_,updated:S,activated:b,deactivated:K,beforeDestroy:N,beforeUnmount:j,destroyed:p,unmounted:g,render:O,renderTracked:F,renderTriggered:$,errorCaptured:V,serverPrefetch:R,expose:w,inheritAttrs:I,components:x,directives:B,filters:se}=t;if(f&&ac(f,s,null),o)for(const Y in o){const D=o[Y];q(D)&&(s[Y]=D.bind(n))}if(r){const Y=r.call(n,n);ne(Y)&&(e.data=jn(Y))}if(Cs=!0,i)for(const Y in i){const D=i[Y],he=q(D)?D.bind(n,n):q(D.get)?D.get.bind(n,n):ke,on=!q(D)&&q(D.set)?D.set.bind(n):ke,ot=ie({get:he,set:on});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>ot.value,set:De=>ot.value=De})}if(l)for(const Y in l)Yi(l[Y],s,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(D=>{gc(D,Y[D])})}a&&wr(a,e,"c");function U(Y,D){W(D)?D.forEach(he=>Y(he.bind(n))):D&&Y(D.bind(n))}if(U(Zl,h),U(Lt,y),U(ec,_),U(tc,S),U(Jl,b),U(zl,K),U(ic,V),U(rc,F),U(sc,$),U(Bi,j),U(Bn,g),U(nc,R),W(w))if(w.length){const Y=e.exposed||(e.exposed={});w.forEach(D=>{Object.defineProperty(Y,D,{get:()=>n[D],set:he=>n[D]=he})})}else e.exposed||(e.exposed={});O&&e.render===ke&&(e.render=O),I!=null&&(e.inheritAttrs=I),x&&(e.components=x),B&&(e.directives=B),R&&Xs(e)}function ac(e,t,n=ke){W(e)&&(e=As(e));for(const s in e){const r=e[s];let i;ne(r)?"default"in r?i=Ot(r.from||s,r.default,!0):i=Ot(r.from||s):i=Ot(r),ae(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function wr(e,t,n){He(W(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Yi(e,t,n,s){let r=s.includes(".")?ao(n,s):()=>n[s];if(re(e)){const i=t[e];q(i)&&Fe(r,i)}else if(q(e))Fe(r,e.bind(n));else if(ne(e))if(W(e))e.forEach(i=>Yi(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Fe(r,i,e)}}function Xi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>Pn(c,f,o,!0)),Pn(c,t,o)),ne(t)&&i.set(t,c),c}function Pn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Pn(e,i,n,!0),r&&r.forEach(o=>Pn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=fc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const fc={data:vr,props:Sr,emits:Sr,methods:$t,computed:$t,beforeCreate:be,created:be,beforeMount:be,mounted:be,beforeUpdate:be,updated:be,beforeDestroy:be,beforeUnmount:be,destroyed:be,unmounted:be,activated:be,deactivated:be,errorCaptured:be,serverPrefetch:be,components:$t,directives:$t,watch:dc,provide:vr,inject:uc};function vr(e,t){return t?e?function(){return de(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function uc(e,t){return $t(As(e),As(t))}function As(e){if(W(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}const zi={},Qi=()=>Object.create(zi),Zi=e=>Object.getPrototypeOf(e)===zi;function mc(e,t,n,s=!1){const r={},i=Qi();e.propsDefaults=Object.create(null),eo(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:El(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function yc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[y,_]=to(h,t,!0);de(o,y),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&s.set(e,Et),Et;if(W(i))for(let a=0;ae[0]==="_"||e==="$stable",Js=e=>W(e)?e.map(Me):[Me(e)],bc=(e,t,n)=>{if(t._n)return t;const s=Vl((...r)=>Js(t(...r)),n);return s._c=!1,s},so=(e,t,n)=>{const s=e._ctx;for(const r in e){if(no(r))continue;const i=e[r];if(q(i))t[r]=bc(r,i,s);else if(i!=null){const o=Js(i);t[r]=()=>o}}},ro=(e,t)=>{const n=Js(t);e.slots.default=()=>n},io=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},wc=(e,t,n)=>{const s=e.slots=Qi();if(e.vnode.shapeFlag&32){const r=t._;r?(io(s,t,n),n&&li(s,"_",r,!0)):so(t,s)}else t&&ro(e,t)},vc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:io(r,t,n):(i=!t.$stable,so(t,r)),o=t}else t&&(ro(e,t),o={default:1});if(i)for(const l in r)!no(l)&&o[l]==null&&delete r[l]},we=po;function Sc(e){return oo(e)}function xc(e){return oo(e,Gl)}function oo(e,t){const n=Hn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:h,nextSibling:y,setScopeId:_=ke,insertStaticContent:S}=e,b=(u,d,m,T=null,v=null,E=null,P=void 0,M=null,A=!!d.dynamicChildren)=>{if(u===d)return;u&&!ut(u,d)&&(T=ln(u),De(u,v,E,!0),u=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:C,ref:k,shapeFlag:L}=d;switch(C){case gt:K(u,d,m,T);break;case _e:N(u,d,m,T);break;case kt:u==null&&j(d,m,T,P);break;case xe:x(u,d,m,T,v,E,P,M,A);break;default:L&1?O(u,d,m,T,v,E,P,M,A):L&6?B(u,d,m,T,v,E,P,M,A):(L&64||L&128)&&C.process(u,d,m,T,v,E,P,M,A,_t)}k!=null&&v&&Xt(k,u&&u.ref,E,d||u,!d)},K=(u,d,m,T)=>{if(u==null)s(d.el=l(d.children),m,T);else{const v=d.el=u.el;d.children!==u.children&&f(v,d.children)}},N=(u,d,m,T)=>{u==null?s(d.el=c(d.children||""),m,T):d.el=u.el},j=(u,d,m,T)=>{[u.el,u.anchor]=S(u.children,d,m,T,u.el,u.anchor)},p=({el:u,anchor:d},m,T)=>{let v;for(;u&&u!==d;)v=y(u),s(u,m,T),u=v;s(d,m,T)},g=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=y(u),r(u),u=m;r(d)},O=(u,d,m,T,v,E,P,M,A)=>{d.type==="svg"?P="svg":d.type==="math"&&(P="mathml"),u==null?F(d,m,T,v,E,P,M,A):R(u,d,v,E,P,M,A)},F=(u,d,m,T,v,E,P,M)=>{let A,C;const{props:k,shapeFlag:L,transition:H,dirs:G}=u;if(A=u.el=o(u.type,E,k&&k.is,k),L&8?a(A,u.children):L&16&&V(u.children,A,null,T,v,rs(u,E),P,M),G&&Ue(u,null,T,"created"),$(A,u,u.scopeId,P,T),k){for(const ee in k)ee!=="value"&&!Ct(ee)&&i(A,ee,null,k[ee],E,T);"value"in k&&i(A,"value",null,k.value,E),(C=k.onVnodeBeforeMount)&&Oe(C,T,u)}G&&Ue(u,null,T,"beforeMount");const X=lo(v,H);X&&H.beforeEnter(A),s(A,d,m),((C=k&&k.onVnodeMounted)||X||G)&&we(()=>{C&&Oe(C,T,u),X&&H.enter(A),G&&Ue(u,null,T,"mounted")},v)},$=(u,d,m,T,v)=>{if(m&&_(u,m),T)for(let E=0;E{for(let C=A;C{const M=d.el=u.el;let{patchFlag:A,dynamicChildren:C,dirs:k}=d;A|=u.patchFlag&16;const L=u.props||Z,H=d.props||Z;let G;if(m&<(m,!1),(G=H.onVnodeBeforeUpdate)&&Oe(G,m,d,u),k&&Ue(d,u,m,"beforeUpdate"),m&<(m,!0),(L.innerHTML&&H.innerHTML==null||L.textContent&&H.textContent==null)&&a(M,""),C?w(u.dynamicChildren,C,M,m,T,rs(d,v),E):P||D(u,d,M,null,m,T,rs(d,v),E,!1),A>0){if(A&16)I(M,L,H,m,v);else if(A&2&&L.class!==H.class&&i(M,"class",null,H.class,v),A&4&&i(M,"style",L.style,H.style,v),A&8){const X=d.dynamicProps;for(let ee=0;ee{G&&Oe(G,m,d,u),k&&Ue(d,u,m,"updated")},T)},w=(u,d,m,T,v,E,P)=>{for(let M=0;M{if(d!==m){if(d!==Z)for(const E in d)!Ct(E)&&!(E in m)&&i(u,E,d[E],null,v,T);for(const E in m){if(Ct(E))continue;const P=m[E],M=d[E];P!==M&&E!=="value"&&i(u,E,M,P,v,T)}"value"in m&&i(u,"value",d.value,m.value,v)}},x=(u,d,m,T,v,E,P,M,A)=>{const C=d.el=u?u.el:l(""),k=d.anchor=u?u.anchor:l("");let{patchFlag:L,dynamicChildren:H,slotScopeIds:G}=d;G&&(M=M?M.concat(G):G),u==null?(s(C,m,T),s(k,m,T),V(d.children||[],m,k,v,E,P,M,A)):L>0&&L&64&&H&&u.dynamicChildren?(w(u.dynamicChildren,H,m,v,E,P,M),(d.key!=null||v&&d===v.subTree)&&zs(u,d,!0)):D(u,d,m,k,v,E,P,M,A)},B=(u,d,m,T,v,E,P,M,A)=>{d.slotScopeIds=M,u==null?d.shapeFlag&512?v.ctx.activate(d,m,T,P,A):se(d,m,T,v,E,P,A):le(u,d,A)},se=(u,d,m,T,v,E,P)=>{const M=u.component=jc(u,T,v);if(sn(u)&&(M.ctx.renderer=_t),Vc(M,!1,P),M.asyncDep){if(v&&v.registerDep(M,U,P),!u.el){const A=M.subTree=ce(_e);N(null,A,d,m)}}else U(M,u,d,m,v,E,P)},le=(u,d,m)=>{const T=d.component=u.component;if(Lc(u,d,m))if(T.asyncDep&&!T.asyncResolved){Y(T,d,m);return}else T.next=d,T.update();else d.el=u.el,T.vnode=d},U=(u,d,m,T,v,E,P)=>{const M=()=>{if(u.isMounted){let{next:L,bu:H,u:G,parent:X,vnode:ee}=u;{const Te=co(u);if(Te){L&&(L.el=ee.el,Y(u,L,P)),Te.asyncDep.then(()=>{u.isUnmounted||M()});return}}let Q=L,Ee;lt(u,!1),L?(L.el=ee.el,Y(u,L,P)):L=ee,H&&wn(H),(Ee=L.props&&L.props.onVnodeBeforeUpdate)&&Oe(Ee,X,L,ee),lt(u,!0);const pe=is(u),Ie=u.subTree;u.subTree=pe,b(Ie,pe,h(Ie.el),ln(Ie),u,v,E),L.el=pe.el,Q===null&&uo(u,pe.el),G&&we(G,v),(Ee=L.props&&L.props.onVnodeUpdated)&&we(()=>Oe(Ee,X,L,ee),v)}else{let L;const{el:H,props:G}=d,{bm:X,m:ee,parent:Q,root:Ee,type:pe}=u,Ie=pt(d);if(lt(u,!1),X&&wn(X),!Ie&&(L=G&&G.onVnodeBeforeMount)&&Oe(L,Q,d),lt(u,!0),H&&Jn){const Te=()=>{u.subTree=is(u),Jn(H,u.subTree,u,v,null)};Ie&&pe.__asyncHydrate?pe.__asyncHydrate(H,u,Te):Te()}else{Ee.ce&&Ee.ce._injectChildStyle(pe);const Te=u.subTree=is(u);b(null,Te,m,T,u,v,E),d.el=Te.el}if(ee&&we(ee,v),!Ie&&(L=G&&G.onVnodeMounted)){const Te=d;we(()=>Oe(L,Q,Te),v)}(d.shapeFlag&256||Q&&pt(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&we(u.a,v),u.isMounted=!0,d=m=T=null}};u.scope.on();const A=u.effect=new di(M);u.scope.off();const C=u.update=A.run.bind(A),k=u.job=A.runIfDirty.bind(A);k.i=u,k.id=u.uid,A.scheduler=()=>Gs(k),lt(u,!0),C()},Y=(u,d,m)=>{d.component=u;const T=u.vnode.props;u.vnode=d,u.next=null,yc(u,d.props,T,m),vc(u,d.children,m),rt(),ur(u),it()},D=(u,d,m,T,v,E,P,M,A=!1)=>{const C=u&&u.children,k=u?u.shapeFlag:0,L=d.children,{patchFlag:H,shapeFlag:G}=d;if(H>0){if(H&128){on(C,L,m,T,v,E,P,M,A);return}else if(H&256){he(C,L,m,T,v,E,P,M,A);return}}G&8?(k&16&&It(C,v,E),L!==C&&a(m,L)):k&16?G&16?on(C,L,m,T,v,E,P,M,A):It(C,v,E,!0):(k&8&&a(m,""),G&16&&V(L,m,T,v,E,P,M,A))},he=(u,d,m,T,v,E,P,M,A)=>{u=u||Et,d=d||Et;const C=u.length,k=d.length,L=Math.min(C,k);let H;for(H=0;Hk?It(u,v,E,!0,!1,L):V(d,m,T,v,E,P,M,A,L)},on=(u,d,m,T,v,E,P,M,A)=>{let C=0;const k=d.length;let L=u.length-1,H=k-1;for(;C<=L&&C<=H;){const G=u[C],X=d[C]=A?et(d[C]):Me(d[C]);if(ut(G,X))b(G,X,m,null,v,E,P,M,A);else break;C++}for(;C<=L&&C<=H;){const G=u[L],X=d[H]=A?et(d[H]):Me(d[H]);if(ut(G,X))b(G,X,m,null,v,E,P,M,A);else break;L--,H--}if(C>L){if(C<=H){const G=H+1,X=GH)for(;C<=L;)De(u[C],v,E,!0),C++;else{const G=C,X=C,ee=new Map;for(C=X;C<=H;C++){const Ce=d[C]=A?et(d[C]):Me(d[C]);Ce.key!=null&&ee.set(Ce.key,C)}let Q,Ee=0;const pe=H-X+1;let Ie=!1,Te=0;const Nt=new Array(pe);for(C=0;C=pe){De(Ce,v,E,!0);continue}let je;if(Ce.key!=null)je=ee.get(Ce.key);else for(Q=X;Q<=H;Q++)if(Nt[Q-X]===0&&ut(Ce,d[Q])){je=Q;break}je===void 0?De(Ce,v,E,!0):(Nt[je-X]=C+1,je>=Te?Te=je:Ie=!0,b(Ce,d[je],m,null,v,E,P,M,A),Ee++)}const or=Ie?Ec(Nt):Et;for(Q=or.length-1,C=pe-1;C>=0;C--){const Ce=X+C,je=d[Ce],lr=Ce+1{const{el:E,type:P,transition:M,children:A,shapeFlag:C}=u;if(C&6){ot(u.component.subTree,d,m,T);return}if(C&128){u.suspense.move(d,m,T);return}if(C&64){P.move(u,d,m,_t);return}if(P===xe){s(E,d,m);for(let L=0;LM.enter(E),v);else{const{leave:L,delayLeave:H,afterLeave:G}=M,X=()=>s(E,d,m),ee=()=>{L(E,()=>{X(),G&&G()})};H?H(E,X,ee):ee()}else s(E,d,m)},De=(u,d,m,T=!1,v=!1)=>{const{type:E,props:P,ref:M,children:A,dynamicChildren:C,shapeFlag:k,patchFlag:L,dirs:H,cacheIndex:G}=u;if(L===-2&&(v=!1),M!=null&&Xt(M,null,m,u,!0),G!=null&&(d.renderCache[G]=void 0),k&256){d.ctx.deactivate(u);return}const X=k&1&&H,ee=!pt(u);let Q;if(ee&&(Q=P&&P.onVnodeBeforeUnmount)&&Oe(Q,d,u),k&6)Bo(u.component,m,T);else{if(k&128){u.suspense.unmount(m,T);return}X&&Ue(u,null,d,"beforeUnmount"),k&64?u.type.remove(u,d,m,_t,T):C&&!C.hasOnce&&(E!==xe||L>0&&L&64)?It(C,d,m,!1,!0):(E===xe&&L&384||!v&&k&16)&&It(A,d,m),T&&rr(u)}(ee&&(Q=P&&P.onVnodeUnmounted)||X)&&we(()=>{Q&&Oe(Q,d,u),X&&Ue(u,null,d,"unmounted")},m)},rr=u=>{const{type:d,el:m,anchor:T,transition:v}=u;if(d===xe){ko(m,T);return}if(d===kt){g(u);return}const E=()=>{r(m),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(u.shapeFlag&1&&v&&!v.persisted){const{leave:P,delayLeave:M}=v,A=()=>P(m,E);M?M(u.el,E,A):A()}else E()},ko=(u,d)=>{let m;for(;u!==d;)m=y(u),r(u),u=m;r(d)},Bo=(u,d,m)=>{const{bum:T,scope:v,job:E,subTree:P,um:M,m:A,a:C}=u;Er(A),Er(C),T&&wn(T),v.stop(),E&&(E.flags|=8,De(P,u,d,m)),M&&we(M,d),we(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},It=(u,d,m,T=!1,v=!1,E=0)=>{for(let P=E;P{if(u.shapeFlag&6)return ln(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=y(u.anchor||u.el),m=d&&d[Ii];return m?y(m):d};let Yn=!1;const ir=(u,d,m)=>{u==null?d._vnode&&De(d._vnode,null,null,!0):b(d._vnode||null,u,d,null,null,null,m),d._vnode=u,Yn||(Yn=!0,ur(),On(),Yn=!1)},_t={p:b,um:De,m:ot,r:rr,mt:se,mc:V,pc:D,pbc:w,n:ln,o:e};let Xn,Jn;return t&&([Xn,Jn]=t(_t)),{render:ir,hydrate:Xn,createApp:pc(ir,Xn)}}function rs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function lt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function lo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function zs(e,t,n=!1){const s=e.children,r=t.children;if(W(s)&&W(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function co(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:co(t)}function Er(e){if(e)for(let t=0;tOt(Tc);function Qs(e,t){return Wn(e,null,t)}function Af(e,t){return Wn(e,null,{flush:"post"})}function Fe(e,t,n){return Wn(e,t,n)}function Wn(e,t,n=Z){const{immediate:s,deep:r,flush:i,once:o}=n,l=de({},n),c=t&&s||!t&&i!=="post";let f;if(Mt){if(i==="sync"){const _=Cc();f=_.__watcherHandles||(_.__watcherHandles=[])}else if(!c){const _=()=>{};return _.stop=ke,_.resume=ke,_.pause=ke,_}}const a=fe;l.call=(_,S,b)=>He(_,a,S,b);let h=!1;i==="post"?l.scheduler=_=>{we(_,a&&a.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(_,S)=>{S?_():Gs(_)}),l.augmentJob=_=>{t&&(_.flags|=4),h&&(_.flags|=2,a&&(_.id=a.uid,_.i=a))};const y=Hl(e,t,l);return Mt&&(f?f.push(y):c&&y()),y}function Ac(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?ao(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=rn(this),l=Wn(r,i.bind(s),n);return o(),l}function ao(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${st(t)}Modifiers`];function Oc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Z;let r=n;const i=t.startsWith("update:"),o=i&&Rc(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>re(a)?a.trim():a)),o.number&&(r=n.map(_s)));let l,c=s[l=bn(t)]||s[l=bn(Le(t))];!c&&i&&(c=s[l=bn(st(t))]),c&&He(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,He(f,e,6,r)}}function fo(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=fo(f,t,!0);a&&(l=!0,de(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&s.set(e,null),null):(W(i)?i.forEach(c=>o[c]=null):de(o,i),ne(e)&&s.set(e,o),o)}function Kn(e,t){return!e||!en(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,st(t))||z(e,t))}function is(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:h,data:y,setupState:_,ctx:S,inheritAttrs:b}=e,K=Mn(e);let N,j;try{if(n.shapeFlag&4){const g=r||s,O=g;N=Me(f.call(O,g,a,h,_,y,S)),j=l}else{const g=t;N=Me(g.length>1?g(h,{attrs:l,slots:o,emit:c}):g(h,null)),j=t.props?l:Mc(l)}}catch(g){Bt.length=0,nn(g,e,1),N=ce(_e)}let p=N;if(j&&b!==!1){const g=Object.keys(j),{shapeFlag:O}=p;g.length&&O&7&&(i&&g.some(Fs)&&(j=Pc(j,i)),p=nt(p,j,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Yt(p,n.transition),N=p,Mn(K),N}const Mc=e=>{let t;for(const n in e)(n==="class"||n==="style"||en(n))&&((t||(t={}))[n]=e[n]);return t},Pc=(e,t)=>{const n={};for(const s in e)(!Fs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Lc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Tr(s,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function po(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):jl(e)}const xe=Symbol.for("v-fgt"),gt=Symbol.for("v-txt"),_e=Symbol.for("v-cmt"),kt=Symbol.for("v-stc"),Bt=[];let Ae=null;function Os(e=!1){Bt.push(Ae=e?null:[])}function Ic(){Bt.pop(),Ae=Bt[Bt.length-1]||null}let Jt=1;function Cr(e,t=!1){Jt+=e,e<0&&Ae&&t&&(Ae.hasOnce=!0)}function go(e){return e.dynamicChildren=Jt>0?Ae||Et:null,Ic(),Jt>0&&Ae&&Ae.push(e),e}function Rf(e,t,n,s,r,i){return go(yo(e,t,n,s,r,i,!0))}function Ms(e,t,n,s,r){return go(ce(e,t,n,s,r,!0))}function zt(e){return e?e.__v_isVNode===!0:!1}function ut(e,t){return e.type===t.type&&e.key===t.key}const mo=({key:e})=>e??null,xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||ae(e)||q(e)?{i:ue,r:e,k:t,f:!!n}:e:null);function yo(e,t=null,n=null,s=0,r=null,i=e===xe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&mo(t),ref:t&&xn(t),scopeId:Li,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ue};return l?(Zs(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Jt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const ce=Nc;function Nc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Ki)&&(e=_e),zt(e)){const l=nt(e,t,!0);return n&&Zs(l,n),Jt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(Wc(e)&&(e=e.__vccOpts),t){t=Fc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=js(l)),ne(c)&&(Ks(c)&&!W(c)&&(c=de({},c)),t.style=Ds(c))}const o=re(e)?1:ho(e)?128:Ni(e)?64:ne(e)?4:q(e)?2:0;return yo(e,t,n,s,r,o,i,!0)}function Fc(e){return e?Ks(e)||Zi(e)?de({},e):e:null}function nt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?Hc(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&mo(f),ref:t&&t.ref?n&&i?W(i)?i.concat(xn(t)):[i,xn(t)]:xn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==xe?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Yt(a,c.clone(a)),a}function _o(e=" ",t=0){return ce(gt,null,e,t)}function Of(e,t){const n=ce(kt,null,e);return n.staticCount=t,n}function Mf(e="",t=!1){return t?(Os(),Ms(_e,null,e)):ce(_e,null,e)}function Me(e){return e==null||typeof e=="boolean"?ce(_e):W(e)?ce(xe,null,e.slice()):zt(e)?et(e):ce(gt,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function Zs(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Zs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Zi(t)?t._ctx=ue:r===3&&ue&&(ue.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:ue},n=32):(t=String(t),s&64?(n=16,t=[_o(t)]):n=8);e.children=t,e.shapeFlag|=n}function Hc(...e){const t={};for(let n=0;nfe||ue;let Ln,Ps;{const e=Hn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Ln=t("__VUE_INSTANCE_SETTERS__",n=>fe=n),Ps=t("__VUE_SSR_SETTERS__",n=>Mt=n)}const rn=e=>{const t=fe;return Ln(e),e.scope.on(),()=>{e.scope.off(),Ln(t)}},Ar=()=>{fe&&fe.scope.off(),Ln(null)};function bo(e){return e.vnode.shapeFlag&4}let Mt=!1;function Vc(e,t=!1,n=!1){t&&Ps(t);const{props:s,children:r}=e.vnode,i=bo(e);mc(e,s,i,t),wc(e,r,n);const o=i?Uc(e,t):void 0;return t&&Ps(!1),o}function Uc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,oc);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?vo(e):null,i=rn(e),o=tn(s,e,0,[e.props,r]),l=ri(o);if(it(),i(),(l||e.sp)&&!pt(e)&&Xs(e),l){if(o.then(Ar,Ar),t)return o.then(c=>{Rr(e,c)}).catch(c=>{nn(c,e,0)});e.asyncDep=o}else Rr(e,o)}else wo(e)}function Rr(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=Ri(t)),wo(e)}function wo(e,t,n){const s=e.type;e.render||(e.render=s.render||ke);{const r=rn(e);rt();try{cc(e)}finally{it(),r()}}}const kc={get(e,t){return me(e,"get",""),e[t]}};function vo(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,kc),slots:e.slots,emit:e.emit,expose:t}}function Gn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ri(vn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ut)return Ut[n](e)},has(t,n){return n in t||n in Ut}})):e.proxy}function Bc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Wc(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>Nl(e,t,Mt);function Ls(e,t,n){const s=arguments.length;return s===2?ne(t)&&!W(t)?zt(t)?ce(e,null,[t]):ce(e,t):ce(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&zt(n)&&(n=[n]),ce(e,t,n))}const Kc="3.5.13";/** -* @vue/runtime-dom v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Is;const Or=typeof window<"u"&&window.trustedTypes;if(Or)try{Is=Or.createPolicy("vue",{createHTML:e=>e})}catch{}const So=Is?e=>Is.createHTML(e):e=>e,qc="http://www.w3.org/2000/svg",Gc="http://www.w3.org/1998/Math/MathML",qe=typeof document<"u"?document:null,Mr=qe&&qe.createElement("template"),Yc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?qe.createElementNS(qc,e):t==="mathml"?qe.createElementNS(Gc,e):n?qe.createElement(e,{is:n}):qe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>qe.createTextNode(e),createComment:e=>qe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>qe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Mr.innerHTML=So(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Mr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ze="transition",Ht="animation",Qt=Symbol("_vtc"),xo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Xc=de({},$i,xo),Jc=e=>(e.displayName="Transition",e.props=Xc,e),Pf=Jc((e,{slots:t})=>Ls(Wl,zc(e),t)),ct=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},Pr=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function zc(e){const t={};for(const x in e)x in xo||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:y=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,S=Qc(r),b=S&&S[0],K=S&&S[1],{onBeforeEnter:N,onEnter:j,onEnterCancelled:p,onLeave:g,onLeaveCancelled:O,onBeforeAppear:F=N,onAppear:$=j,onAppearCancelled:V=p}=t,R=(x,B,se,le)=>{x._enterCancelled=le,at(x,B?a:l),at(x,B?f:o),se&&se()},w=(x,B)=>{x._isLeaving=!1,at(x,h),at(x,_),at(x,y),B&&B()},I=x=>(B,se)=>{const le=x?$:j,U=()=>R(B,x,se);ct(le,[B,U]),Lr(()=>{at(B,x?c:i),Ke(B,x?a:l),Pr(le)||Ir(B,s,b,U)})};return de(t,{onBeforeEnter(x){ct(N,[x]),Ke(x,i),Ke(x,o)},onBeforeAppear(x){ct(F,[x]),Ke(x,c),Ke(x,f)},onEnter:I(!1),onAppear:I(!0),onLeave(x,B){x._isLeaving=!0;const se=()=>w(x,B);Ke(x,h),x._enterCancelled?(Ke(x,y),Hr()):(Hr(),Ke(x,y)),Lr(()=>{x._isLeaving&&(at(x,h),Ke(x,_),Pr(g)||Ir(x,s,K,se))}),ct(g,[x,se])},onEnterCancelled(x){R(x,!1,void 0,!0),ct(p,[x])},onAppearCancelled(x){R(x,!0,void 0,!0),ct(V,[x])},onLeaveCancelled(x){w(x),ct(O,[x])}})}function Qc(e){if(e==null)return null;if(ne(e))return[os(e.enter),os(e.leave)];{const t=os(e);return[t,t]}}function os(e){return Xo(e)}function Ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Qt]||(e[Qt]=new Set)).add(t)}function at(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Qt];n&&(n.delete(t),n.size||(e[Qt]=void 0))}function Lr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Zc=0;function Ir(e,t,n,s){const r=e._endId=++Zc,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=ea(e,t);if(!o)return s();const f=o+"end";let a=0;const h=()=>{e.removeEventListener(f,y),i()},y=_=>{_.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[S]||"").split(", "),r=s(`${ze}Delay`),i=s(`${ze}Duration`),o=Nr(r,i),l=s(`${Ht}Delay`),c=s(`${Ht}Duration`),f=Nr(l,c);let a=null,h=0,y=0;t===ze?o>0&&(a=ze,h=o,y=i.length):t===Ht?f>0&&(a=Ht,h=f,y=c.length):(h=Math.max(o,f),a=h>0?o>f?ze:Ht:null,y=a?a===ze?i.length:c.length:0);const _=a===ze&&/\b(transform|all)(,|$)/.test(s(`${ze}Property`).toString());return{type:a,timeout:h,propCount:y,hasTransform:_}}function Nr(e,t){for(;e.lengthFr(n)+Fr(e[s])))}function Fr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Hr(){return document.body.offsetHeight}function ta(e,t,n){const s=e[Qt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const $r=Symbol("_vod"),na=Symbol("_vsh"),sa=Symbol(""),ra=/(^|;)\s*display\s*:/;function ia(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&En(s,l,"")}else for(const o in t)n[o]==null&&En(s,o,"");for(const o in n)o==="display"&&(i=!0),En(s,o,n[o])}else if(r){if(t!==n){const o=s[sa];o&&(n+=";"+o),s.cssText=n,i=ra.test(n)}}else t&&e.removeAttribute("style");$r in e&&(e[$r]=i?s.display:"",e[na]&&(s.display="none"))}const Dr=/\s*!important$/;function En(e,t,n){if(W(n))n.forEach(s=>En(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=oa(e,t);Dr.test(n)?e.setProperty(st(s),n.replace(Dr,""),"important"):e[s]=n}}const jr=["Webkit","Moz","ms"],ls={};function oa(e,t){const n=ls[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return ls[t]=s;s=Fn(s);for(let r=0;rcs||(fa.then(()=>cs=0),cs=Date.now());function da(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;He(ha(s,n.value),t,5,[s])};return n.value=e,n.attached=ua(),n}function ha(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Kr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,pa=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?ta(e,s,o):t==="style"?ia(e,n,s):en(t)?Fs(t)||ca(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ga(e,t,s,o))?(kr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ur(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?kr(e,Le(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Ur(e,t,s,o))};function ga(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Kr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Kr(t)&&re(n)?!1:t in e}const qr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return W(t)?n=>wn(t,n):t};function ma(e){e.target.composing=!0}function Gr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const as=Symbol("_assign"),Lf={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[as]=qr(r);const i=s||r.props&&r.props.type==="number";St(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=_s(l)),e[as](l)}),n&&St(e,"change",()=>{e.value=e.value.trim()}),t||(St(e,"compositionstart",ma),St(e,"compositionend",Gr),St(e,"change",Gr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[as]=qr(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?_s(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},ya=["ctrl","shift","alt","meta"],_a={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ya.some(n=>e[`${n}Key`]&&!t.includes(n))},If=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=st(r.key);if(t.some(o=>o===i||ba[o]===i))return e(r)})},Eo=de({patchProp:pa},Yc);let Wt,Yr=!1;function wa(){return Wt||(Wt=Sc(Eo))}function va(){return Wt=Yr?Wt:xc(Eo),Yr=!0,Wt}const Ff=(...e)=>{const t=wa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Co(s);if(!r)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,To(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},Hf=(...e)=>{const t=va().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Co(s);if(r)return n(r,!0,To(r))},t};function To(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Co(e){return re(e)?document.querySelector(e):e}const $f=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Sa=window.__VP_SITE_DATA__;function er(e){return ui()?(rl(e),!0):!1}function Be(e){return typeof e=="function"?e():Ai(e)}const Ao=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Df=e=>e!=null,xa=Object.prototype.toString,Ea=e=>xa.call(e)==="[object Object]",Zt=()=>{},Xr=Ta();function Ta(){var e,t;return Ao&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Ca(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Ro=e=>e();function Aa(e,t={}){let n,s,r=Zt;const i=l=>{clearTimeout(l),r(),r=Zt};return l=>{const c=Be(e),f=Be(t.maxWait);return n&&i(n),c<=0||f!==void 0&&f<=0?(s&&(i(s),s=null),Promise.resolve(l())):new Promise((a,h)=>{r=t.rejectOnCancel?h:a,f&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,a(l())},f)),n=setTimeout(()=>{s&&i(s),s=null,a(l())},c)})}}function Ra(e=Ro){const t=oe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Vn(t),pause:n,resume:s,eventFilter:r}}function Oa(e){return qn()}function Oo(...e){if(e.length!==1)return Pl(...e);const t=e[0];return typeof t=="function"?Vn(Rl(()=>({get:t,set:Zt}))):oe(t)}function Mo(e,t,n={}){const{eventFilter:s=Ro,...r}=n;return Fe(e,Ca(s,t),r)}function Ma(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Ra(s);return{stop:Mo(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function tr(e,t=!0,n){Oa()?Lt(e,n):t?e():Un(e)}function jf(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return Mo(e,t,{...i,eventFilter:Aa(s,{maxWait:r})})}function Vf(e,t,n){let s;ae(n)?s={evaluating:n}:s={};const{lazy:r=!1,evaluating:i=void 0,shallow:o=!0,onError:l=Zt}=s,c=oe(!r),f=o?qs(t):oe(t);let a=0;return Qs(async h=>{if(!c.value)return;a++;const y=a;let _=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const S=await e(b=>{h(()=>{i&&(i.value=!1),_||b()})});y===a&&(f.value=S)}catch(S){l(S)}finally{i&&y===a&&(i.value=!1),_=!0}}),r?ie(()=>(c.value=!0,f.value)):f}const $e=Ao?window:void 0;function Po(e){var t;const n=Be(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Pt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=$e):[t,n,s,r]=e,!t)return Zt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,y,_)=>(a.addEventListener(h,y,_),()=>a.removeEventListener(h,y,_)),c=Fe(()=>[Po(t),Be(r)],([a,h])=>{if(o(),!a)return;const y=Ea(h)?{...h}:h;i.push(...n.flatMap(_=>s.map(S=>l(a,_,S,y))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return er(f),f}function Pa(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Uf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=$e,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=Pa(t);return Pt(r,i,a=>{a.repeat&&Be(l)||c(a)&&n(a)},o)}function La(){const e=oe(!1),t=qn();return t&&Lt(()=>{e.value=!0},t),e}function Ia(e){const t=La();return ie(()=>(t.value,!!e()))}function Lo(e,t={}){const{window:n=$e}=t,s=Ia(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=oe(!1),o=f=>{i.value=f.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Qs(()=>{s.value&&(l(),r=n.matchMedia(Be(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return er(()=>{c(),l(),r=void 0}),i}const gn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},mn="__vueuse_ssr_handlers__",Na=Fa();function Fa(){return mn in gn||(gn[mn]=gn[mn]||{}),gn[mn]}function Io(e,t){return Na[e]||t}function nr(e){return Lo("(prefers-color-scheme: dark)",e)}function Ha(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const $a={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Jr="vueuse-storage";function sr(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:h=$e,eventFilter:y,onError:_=w=>{console.error(w)},initOnMounted:S}=s,b=(a?qs:oe)(typeof t=="function"?t():t);if(!n)try{n=Io("getDefaultStorage",()=>{var w;return(w=$e)==null?void 0:w.localStorage})()}catch(w){_(w)}if(!n)return b;const K=Be(t),N=Ha(K),j=(r=s.serializer)!=null?r:$a[N],{pause:p,resume:g}=Ma(b,()=>F(b.value),{flush:i,deep:o,eventFilter:y});h&&l&&tr(()=>{n instanceof Storage?Pt(h,"storage",V):Pt(h,Jr,R),S&&V()}),S||V();function O(w,I){if(h){const x={key:e,oldValue:w,newValue:I,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(Jr,{detail:x}))}}function F(w){try{const I=n.getItem(e);if(w==null)O(I,null),n.removeItem(e);else{const x=j.write(w);I!==x&&(n.setItem(e,x),O(I,x))}}catch(I){_(I)}}function $(w){const I=w?w.newValue:n.getItem(e);if(I==null)return c&&K!=null&&n.setItem(e,j.write(K)),K;if(!w&&f){const x=j.read(I);return typeof f=="function"?f(x,K):N==="object"&&!Array.isArray(x)?{...K,...x}:x}else return typeof I!="string"?I:j.read(I)}function V(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){b.value=K;return}if(!(w&&w.key!==e)){p();try{(w==null?void 0:w.newValue)!==j.write(b.value)&&(b.value=$(w))}catch(I){_(I)}finally{w?Un(g):g()}}}}function R(w){V(w.detail)}return b}const Da="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function ja(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=$e,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},y=nr({window:r}),_=ie(()=>y.value?"dark":"light"),S=c||(o==null?Oo(s):sr(o,s,i,{window:r,listenToStorageChanges:l})),b=ie(()=>S.value==="auto"?_.value:S.value),K=Io("updateHTMLAttrs",(g,O,F)=>{const $=typeof g=="string"?r==null?void 0:r.document.querySelector(g):Po(g);if(!$)return;const V=new Set,R=new Set;let w=null;if(O==="class"){const x=F.split(/\s/g);Object.values(h).flatMap(B=>(B||"").split(/\s/g)).filter(Boolean).forEach(B=>{x.includes(B)?V.add(B):R.add(B)})}else w={key:O,value:F};if(V.size===0&&R.size===0&&w===null)return;let I;a&&(I=r.document.createElement("style"),I.appendChild(document.createTextNode(Da)),r.document.head.appendChild(I));for(const x of V)$.classList.add(x);for(const x of R)$.classList.remove(x);w&&$.setAttribute(w.key,w.value),a&&(r.getComputedStyle(I).opacity,document.head.removeChild(I))});function N(g){var O;K(t,n,(O=h[g])!=null?O:g)}function j(g){e.onChanged?e.onChanged(g,N):N(g)}Fe(b,j,{flush:"post",immediate:!0}),tr(()=>j(b.value));const p=ie({get(){return f?S.value:b.value},set(g){S.value=g}});try{return Object.assign(p,{store:S,system:_,state:b})}catch{return p}}function Va(e={}){const{valueDark:t="dark",valueLight:n="",window:s=$e}=e,r=ja({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:nr({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function fs(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function kf(e,t,n={}){const{window:s=$e}=n;return sr(e,t,s==null?void 0:s.localStorage,n)}function No(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const us=new WeakMap;function Bf(e,t=!1){const n=oe(t);let s=null,r="";Fe(Oo(e),l=>{const c=fs(Be(l));if(c){const f=c;if(us.get(f)||us.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=fs(Be(e));!l||n.value||(Xr&&(s=Pt(l,"touchmove",c=>{Ua(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=fs(Be(e));!l||!n.value||(Xr&&(s==null||s()),l.style.overflow=r,us.delete(l),n.value=!1)};return er(o),ie({get(){return n.value},set(l){l?i():o()}})}function Wf(e,t,n={}){const{window:s=$e}=n;return sr(e,t,s==null?void 0:s.sessionStorage,n)}function Kf(e={}){const{window:t=$e,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const s=oe(t.scrollX),r=oe(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Pt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function qf(e={}){const{window:t=$e,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=oe(n),c=oe(s),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),tr(f),Pt("resize",f,{passive:!0}),r){const a=Lo("(orientation: portrait)");Fe(a,()=>f())}return{width:l,height:c}}const ds={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var hs={};const Fo=/^(?:[a-z]+:|\/\/)/i,ka="vitepress-theme-appearance",Ba=/#.*$/,Wa=/[?#].*$/,Ka=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",Ho={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function qa(e,t,n=!1){if(t===void 0)return!1;if(e=zr(`/${e}`),n)return new RegExp(t).test(e);if(zr(t)!==e)return!1;const s=t.match(Ba);return s?(ge?location.hash:"")===s[0]:!0}function zr(e){return decodeURI(e).replace(Wa,"").replace(Ka,"$1")}function Ga(e){return Fo.test(e)}function Ya(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ga(n)&&qa(t,`/${n}/`,!0))||"root"}function Xa(e,t){var s,r,i,o,l,c,f;const n=Ya(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Do(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function $o(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Ja(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function Ja(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function za(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function Do(e,t){return[...e.filter(n=>!za(t,n)),...t]}const Qa=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Za=/^[a-z]:/i;function Qr(e){const t=Za.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Qa,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ps=new Set;function ef(e){if(ps.size===0){const n=typeof process=="object"&&(hs==null?void 0:hs.VITE_EXTRA_EXTENSIONS)||(ds==null?void 0:ds.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>ps.add(s))}const t=e.split(".").pop();return t==null||!ps.has(t.toLowerCase())}function Gf(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const tf=Symbol(),mt=qs(Sa);function Yf(e){const t=ie(()=>Xa(mt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?oe(!0):n==="force-auto"?nr():n?Va({storageKey:ka,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),r=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=ge?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>$o(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function nf(){const e=Ot(tf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function sf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Zr(e){return Fo.test(e)||!e.startsWith("/")?e:sf(mt.value.base,e)}function rf(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/";t=Qr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Qr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Tn=[];function Xf(e){Tn.push(e),Bn(()=>{Tn=Tn.filter(t=>t!==e)})}function of(){let e=mt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=ei(e,n);else if(Array.isArray(e))for(const s of e){const r=ei(s,n);if(r){t=r;break}}return t}function ei(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const lf=Symbol(),jo="http://a.com",cf=()=>({path:"/",component:null,data:Ho});function Jf(e,t){const n=jn(cf()),s={route:n,go:r};async function r(l=ge?location.href:"/"){var c,f;l=gs(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(ge&&l!==gs(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,l)))}let i=null;async function o(l,c=0,f=!1){var y,_;if(await((y=s.onBeforePageLoad)==null?void 0:y.call(s,l))===!1)return;const a=new URL(l,jo),h=i=a.pathname;try{let S=await e(h);if(!S)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:b,__pageData:K}=S;if(!b)throw new Error(`Invalid route component: ${b}`);await((_=s.onAfterPageLoad)==null?void 0:_.call(s,l)),n.path=ge?h:Zr(h),n.component=vn(b),n.data=vn(K),ge&&Un(()=>{let N=mt.value.base+K.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!mt.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==a.pathname&&(a.pathname=N,l=N+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let j=null;try{j=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if(j){ti(j,a.hash);return}}window.scrollTo(0,c)})}}catch(S){if(!/fetch|Page not found/.test(S.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(S),!f)try{const b=await fetch(mt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await b.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=ge?h:Zr(h),n.component=t?vn(t):null;const b=ge?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Ho,relativePath:b}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:h,pathname:y,hash:_,search:S}=new URL(f,c.baseURI),b=new URL(location.href);h===b.origin&&ef(y)&&(l.preventDefault(),y===b.pathname&&S===b.search?(_!==b.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:b.href,newURL:a}))),_?ti(c,_,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(gs(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function af(){const e=Ot(lf);if(!e)throw new Error("useRouter() is called without provider.");return e}function Vo(){return af().route}function ti(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-of()+i;requestAnimationFrame(r)}}function gs(e){const t=new URL(e,jo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),mt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const yn=()=>Tn.forEach(e=>e()),zf=Ys({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Vo(),{frontmatter:n,site:s}=nf();return Fe(n,yn,{deep:!0,flush:"post"}),()=>Ls(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Ls(t.component,{onVnodeMounted:yn,onVnodeUpdated:yn,onVnodeUnmounted:yn}):"404 Page Not Found"])}}),ff="modulepreload",uf=function(e){return"/"+e},ni={},Qf=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=uf(c),c in ni)return;ni[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const h=document.createElement("link");if(h.rel=f?"stylesheet":ff,f||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),f)return new Promise((y,_)=>{h.addEventListener("load",y),h.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},Zf=Ys({setup(e,{slots:t}){const n=oe(!1);return Lt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function eu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function tu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),df(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function df(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function nu(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=ms(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(ms);s.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Qs(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=$o(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):ms(["meta",{name:"description",content:a}]),r(Do(o.head,pf(c)))})}function ms([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function hf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function pf(e){return e.filter(t=>!hf(t))}const ys=new Set,Uo=()=>document.createElement("link"),gf=e=>{const t=Uo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},mf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let _n;const yf=ge&&(_n=Uo())&&_n.relList&&_n.relList.supports&&_n.relList.supports("prefetch")?gf:mf;function su(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!ys.has(c)){ys.add(c);const f=rf(c);f&&yf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):ys.add(l))})})};Lt(s);const r=Vo();Fe(()=>r.path,s),Bn(()=>{n&&n.disconnect()})}export{Bi as $,of as A,vf as B,xf as C,qs as D,Xf as E,xe as F,ce as G,Sf as H,Fo as I,Vo as J,Hc as K,Ot as L,qf as M,Ds as N,Uf as O,Un as P,Kf as Q,ge as R,Vn as S,Pf as T,wf as U,Qf as V,Bf as W,gc as X,Tf as Y,Nf as Z,$f as _,_o as a,If as a0,Cf as a1,zl as a2,Jl as a3,_f as a4,Lf as a5,ae as a6,Of as a7,nu as a8,lf as a9,Yf as aa,tf as ab,zf as ac,Zf as ad,mt as ae,Hf as af,Jf as ag,rf as ah,su as ai,tu as aj,eu as ak,Ls as al,Be as am,Po as an,Df as ao,er as ap,Vf as aq,Wf as ar,kf as as,jf as at,af as au,Pt as av,bf as aw,vn as ax,Ff as ay,Gf as az,Ms as b,Rf as c,Ys as d,Mf as e,ef as f,Zr as g,ie as h,Ga as i,yo as j,Ai as k,qa as l,Lo as m,js as n,Os as o,oe as p,Fe as q,Ef as r,Qs as s,nl as t,nf as u,Lt as v,Vl as w,Bn as x,Af as y,tc as z}; diff --git a/assets/chunks/theme.2w8Mz6uA.js b/assets/chunks/theme.2w8Mz6uA.js deleted file mode 100644 index ff797a66..00000000 --- a/assets/chunks/theme.2w8Mz6uA.js +++ /dev/null @@ -1,18 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.hkHdYWwT.js","assets/chunks/framework.v7PlT0Wt.js"])))=>i.map(i=>d[i]); -import{u as ve,d as b,o as i,c as p,r as f,n as x,a as Z,t as C,b as P,w as v,e as k,T as Ae,_ as $,i as Pt,f as wt,g as Ee,h as T,j as c,k as u,l as te,m as we,p as N,q as W,s as he,v as q,x as re,y as Be,z as Lt,A as Vt,B as ne,F as D,C as R,D as Xe,E as me,G as S,H as G,I as Qe,J as _e,K as Q,L as ie,M as Tt,N as ge,O as Le,P as Ze,Q as et,R as be,S as Nt,U as Ct,V as It,W as tt,X as nt,Y as Mt,Z as At,$ as Et,a0 as ot,a1 as Bt,a2 as Ht,a3 as Ot,a4 as Ve,a5 as Te,a6 as Ne}from"./framework.v7PlT0Wt.js";const Dt={en:{stats:"Stats",online:"Online",offline:"Offline",total:"Total",fetching:"Fetching",stars:"Stars",forks:"Forks",issues:"Issues",prs:"Pull Requests",visitors:"Visitors",size:"Size",plugins:"Plugins",resources:"Resources",pluginStore:"Plugin Store",pluginStoreDesc:"Content from the LightSnow Plugin Store, LightSnow supports NoneBot through the lpnonebot plugin, and references some NoneBot plugins",liteyukiOnly:"Liteyuki Only",search:"Search",resourceStore:"Resources Store",thx_contributors:"Thanks the following contributors!",easterEgg:"Congratulations on finding the Easter egg!",publishPlugin:"Publish Plugin",publishRes:"Publish Resource",closeButtonText:"Close",submitButtonText:"Submit",resName:"Name",resDesc:"Description",resAuthor:"Author",resLink:"Download Link",resHomepage:"Homepage",resNameText:"Example: Kawaii Style Theme",resDescText:"Example: A kawaii style and color theme",resAuthorText:"Usually the github username, Example: yanyongyu",resLinkText:"Direct download link, usually zip package link",resHomepageText:'Optional, can be the name of the git platform repository"'},zh:{stats:"统计信息",online:"在线",offline:"离线",total:"实例",fetching:"获取中",stars:"星星",forks:"分叉",issues:"议题",prs:"拉取请求",visitors:"访客",size:"大小",plugins:"插件",resources:"主题资源",store:"商店",pluginStore:"插件商店",pluginStoreDesc:"内容来自轻雪插件商店,轻雪通过lpnonebot插件对NoneBot实现支持,引用了部分NoneBot插件",liteyukiOnly:"仅轻雪",search:"搜索",resourceStore:"资源商店",thx_contributors:"感谢以下贡献者!",easterEgg:"恭喜你发现了彩蛋!",publishPlugin:"发布插件",publishRes:"发布资源",closeButtonText:"关闭",submitButtonText:"提交",resName:"名称",resDesc:"描述",resAuthor:"作者",resLink:"下载链接",resHomepage:"主页",resNameText:"示例:可爱风格主题",resDescText:"示例:一个可爱风格和配色的主题",resAuthorText:"通常为github用户名,示例:yanyongyu",resLinkText:"直接下载链接,通常为zip包链接",resHomepageText:"可选,可为git平台仓库名"}};let pe={};function st(o,e){return o=ke(o),Dt[o][e]}function ke(o){return o.includes("-")?o.split("-")[0]:o}function xt(){const o=ke(ve().site.value.lang);for(let e in pe)pe[e].value=st(o,e)}function j(o){const e=ke(ve().site.value.lang);return pe[o]=st(e,o),pe[o]||o}const Ft=b({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(i(),p("span",{class:x(["VPBadge",e.type])},[f(e.$slots,"default",{},()=>[Z(C(e.text),1)])],2))}}),Rt={key:0,class:"VPBackdrop"},jt=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(i(),P(Ae,{name:"fade"},{default:v(()=>[e.show?(i(),p("div",Rt)):k("",!0)]),_:1}))}}),zt=$(jt,[["__scopeId","data-v-ca791a6c"]]),H=ve;function Ut(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 He(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(Pt(o)||o.startsWith("#")||!n.startsWith("http")||!wt(e))return o;const{site:a}=H(),l=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,a.value.cleanUrls?"":".html")}${t}${s}`);return Ee(l)}function le({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:a}=H(),l=T(()=>{var d,h;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:((h=e.value.locales[t.value])==null?void 0:h.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:T(()=>Object.entries(e.value.locales).flatMap(([d,h])=>l.value.label===h.label?[]:{text:h.label,link:Gt(h.link||(d==="root"?"/":`/${d}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+a.value})),currentLang:l}}function Gt(o,e,t,s){return e?o.replace(/\/$/,"")+Ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const Kt={class:"NotFound"},Wt={class:"code"},qt={class:"title"},Jt={class:"quote"},Yt={class:"action"},Xt=["href","aria-label"],Qt=b({__name:"NotFound",setup(o){const{theme:e}=H(),{currentLang:t}=le();return(s,n)=>{var a,l,r,d,h;return i(),p("div",Kt,[c("p",Wt,C(((a=u(e).notFound)==null?void 0:a.code)??"404"),1),c("h1",qt,C(((l=u(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=c("div",{class:"divider"},null,-1)),c("blockquote",Jt,C(((r=u(e).notFound)==null?void 0:r.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),c("div",Yt,[c("a",{class:"link",href:u(Ee)(u(t).link),"aria-label":((d=u(e).notFound)==null?void 0:d.linkLabel)??"go to home"},C(((h=u(e).notFound)==null?void 0:h.linkText)??"Take me home"),9,Xt)])])}}}),Zt=$(Qt,[["__scopeId","data-v-dbad2f1f"]]);function at(o,e){if(Array.isArray(o))return de(o);if(o==null)return[];e=Ce(e);const t=Object.keys(o).sort((n,a)=>a.split("/").length-n.split("/").length).find(n=>e.startsWith(Ce(n))),s=t?o[t]:[];return Array.isArray(s)?de(s):de(s.items,s.base)}function en(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 tn(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 Ie(o,e){return Array.isArray(e)?e.some(t=>Ie(o,t)):te(o,e.link)?!0:e.items?Ie(o,e.items):!1}function de(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=de(s.items,n)),s})}function J(){const{frontmatter:o,page:e,theme:t}=H(),s=we("(min-width: 960px)"),n=N(!1),a=T(()=>{const A=t.value.sidebar,y=e.value.relativePath;return A?at(A,y):[]}),l=N(a.value);W(a,(A,y)=>{JSON.stringify(A)!==JSON.stringify(y)&&(l.value=a.value)});const r=T(()=>o.value.sidebar!==!1&&l.value.length>0&&o.value.layout!=="home"),d=T(()=>h?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),h=T(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),_=T(()=>r.value&&s.value),m=T(()=>r.value?en(l.value):[]);function g(){n.value=!0}function I(){n.value=!1}function V(){n.value?I():g()}return{isOpen:n,sidebar:l,sidebarGroups:m,hasSidebar:r,hasAside:h,leftAside:d,isSidebarEnabled:_,open:g,close:I,toggle:V}}function nn(o,e){let t;he(()=>{t=o.value?document.activeElement:void 0}),q(()=>{window.addEventListener("keyup",s)}),re(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function on(o){const{page:e,hash:t}=H(),s=N(!1),n=T(()=>o.value.collapsed!=null),a=T(()=>!!o.value.link),l=N(!1),r=()=>{l.value=te(e.value.relativePath,o.value.link)};W([e,o,t],r),q(r);const d=T(()=>l.value?!0:o.value.items?Ie(e.value.relativePath,o.value.items):!1),h=T(()=>!!(o.value.items&&o.value.items.length));he(()=>{s.value=!!(n.value&&o.value.collapsed)}),Be(()=>{(l.value||d.value)&&(s.value=!1)});function _(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:a,isActiveLink:l,hasActiveLink:d,hasChildren:h,toggle:_}}function sn(){const{hasSidebar:o}=J(),e=we("(min-width: 960px)"),t=we("(min-width: 1280px)");return{isAsideEnabled:T(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const Me=[];function rt(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function Oe(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:an(t),link:"#"+t.id,level:s}});return rn(e,o)}function an(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 rn(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;return cn(o,s,n)}function ln(o,e){const{isAsideEnabled:t}=sn(),s=Ut(a,100);let n=null;q(()=>{requestAnimationFrame(a),window.addEventListener("scroll",s)}),Lt(()=>{l(location.hash)}),re(()=>{window.removeEventListener("scroll",s)});function a(){if(!t.value)return;const r=window.scrollY,d=window.innerHeight,h=document.body.offsetHeight,_=Math.abs(r+d-h)<1,m=Me.map(({element:I,link:V})=>({link:V,top:un(I)})).filter(({top:I})=>!Number.isNaN(I)).sort((I,V)=>I.top-V.top);if(!m.length){l(null);return}if(r<1){l(null);return}if(_){l(m[m.length-1].link);return}let g=null;for(const{link:I,top:V}of m){if(V>r+Vt()+4)break;g=I}l(g)}function l(r){n&&n.classList.remove("active"),r==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(r)}"]`);const d=n;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function un(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}function cn(o,e,t){Me.length=0;const s=[],n=[];return o.forEach(a=>{const l={...a,children:[]};let r=n[n.length-1];for(;r&&r.level>=l.level;)n.pop(),r=n[n.length-1];if(l.element.classList.contains("ignore-header")||r&&"shouldIgnore"in r){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=ne("VPDocOutlineItem",!0);return i(),p("ul",{class:x(["VPDocOutlineItem",t.root?"root":"nested"])},[(i(!0),p(D,null,R(t.headers,({children:a,link:l,title:r})=>(i(),p("li",null,[c("a",{class:"outline-link",href:l,onClick:e,title:r},C(r),9,dn),a!=null&&a.length?(i(),P(n,{key:0,headers:a},null,8,["headers"])):k("",!0)]))),256))],2)}}}),it=$(pn,[["__scopeId","data-v-6c6f9d7d"]]),fn={class:"content"},vn={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},hn=b({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=H(),s=Xe([]);me(()=>{s.value=Oe(e.value.outline??t.value.outline)});const n=N(),a=N();return ln(n,a),(l,r)=>(i(),p("nav",{"aria-labelledby":"doc-outline-aria-label",class:x(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[c("div",fn,[c("div",{class:"outline-marker",ref_key:"marker",ref:a},null,512),c("div",vn,C(u(rt)(u(t))),1),S(it,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),mn=$(hn,[["__scopeId","data-v-529e6536"]]),_n={class:"VPDocAsideCarbonAds"},gn=b({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(i(),p("div",_n,[S(u(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),bn={class:"VPDocAside"},kn=b({__name:"VPDocAside",setup(o){const{theme:e}=H();return(t,s)=>(i(),p("div",bn,[f(t.$slots,"aside-top",{},void 0,!0),f(t.$slots,"aside-outline-before",{},void 0,!0),S(mn),f(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=c("div",{class:"spacer"},null,-1)),f(t.$slots,"aside-ads-before",{},void 0,!0),u(e).carbonAds?(i(),P(gn,{key:0,"carbon-ads":u(e).carbonAds},null,8,["carbon-ads"])):k("",!0),f(t.$slots,"aside-ads-after",{},void 0,!0),f(t.$slots,"aside-bottom",{},void 0,!0)]))}}),yn=$(kn,[["__scopeId","data-v-d61d2198"]]);function $n(){const{theme:o,page:e}=H();return T(()=>{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 Sn(){const{page:o,theme:e,frontmatter:t}=H();return T(()=>{var h,_,m,g,I,V,A,y;const s=at(e.value.sidebar,o.value.relativePath),n=tn(s),a=Pn(n,F=>F.link.replace(/[?#].*$/,"")),l=a.findIndex(F=>te(o.value.relativePath,F.link)),r=((h=e.value.docFooter)==null?void 0:h.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((_=e.value.docFooter)==null?void 0:_.next)===!1&&!t.value.next||t.value.next===!1;return{prev:r?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((m=a[l-1])==null?void 0:m.docFooterText)??((g=a[l-1])==null?void 0:g.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((I=a[l-1])==null?void 0:I.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((V=a[l+1])==null?void 0:V.docFooterText)??((A=a[l+1])==null?void 0:A.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((y=a[l+1])==null?void 0:y.link)}}})}function Pn(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const K=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=T(()=>e.tag??(e.href?"a":"span")),s=T(()=>e.href&&Qe.test(e.href)||e.target==="_blank");return(n,a)=>(i(),P(G(t.value),{class:x(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?u(He)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:v(()=>[f(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),wn={class:"VPLastUpdated"},Ln=["datetime"],Vn=b({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=H(),n=T(()=>new Date(t.value.lastUpdated)),a=T(()=>n.value.toISOString()),l=N("");return q(()=>{he(()=>{var r,d,h;l.value=new Intl.DateTimeFormat((d=(r=e.value.lastUpdated)==null?void 0:r.formatOptions)!=null&&d.forceLocale?s.value:void 0,((h=e.value.lastUpdated)==null?void 0:h.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(r,d)=>{var h;return i(),p("p",wn,[Z(C(((h=u(e).lastUpdated)==null?void 0:h.text)||u(e).lastUpdatedText||"Last updated")+": ",1),c("time",{datetime:a.value},C(l.value),9,Ln)])}}}),Tn=$(Vn,[["__scopeId","data-v-5b7201fe"]]),Nn={key:0,class:"VPDocFooter"},Cn={key:0,class:"edit-info"},In={key:0,class:"edit-link"},Mn={key:1,class:"last-updated"},An={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},En={class:"pager"},Bn=["innerHTML"],Hn=["innerHTML"],On={class:"pager"},Dn=["innerHTML"],xn=["innerHTML"],Fn=b({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=H(),n=$n(),a=Sn(),l=T(()=>e.value.editLink&&s.value.editLink!==!1),r=T(()=>t.value.lastUpdated),d=T(()=>l.value||r.value||a.value.prev||a.value.next);return(h,_)=>{var m,g,I,V;return d.value?(i(),p("footer",Nn,[f(h.$slots,"doc-footer-before",{},void 0,!0),l.value||r.value?(i(),p("div",Cn,[l.value?(i(),p("div",In,[S(K,{class:"edit-link-button",href:u(n).url,"no-icon":!0},{default:v(()=>[_[0]||(_[0]=c("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Z(" "+C(u(n).text),1)]),_:1},8,["href"])])):k("",!0),r.value?(i(),p("div",Mn,[S(Tn)])):k("",!0)])):k("",!0),(m=u(a).prev)!=null&&m.link||(g=u(a).next)!=null&&g.link?(i(),p("nav",An,[_[1]||(_[1]=c("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),c("div",En,[(I=u(a).prev)!=null&&I.link?(i(),P(K,{key:0,class:"pager-link prev",href:u(a).prev.link},{default:v(()=>{var A;return[c("span",{class:"desc",innerHTML:((A=u(e).docFooter)==null?void 0:A.prev)||"Previous page"},null,8,Bn),c("span",{class:"title",innerHTML:u(a).prev.text},null,8,Hn)]}),_:1},8,["href"])):k("",!0)]),c("div",On,[(V=u(a).next)!=null&&V.link?(i(),P(K,{key:0,class:"pager-link next",href:u(a).next.link},{default:v(()=>{var A;return[c("span",{class:"desc",innerHTML:((A=u(e).docFooter)==null?void 0:A.next)||"Next page"},null,8,Dn),c("span",{class:"title",innerHTML:u(a).next.text},null,8,xn)]}),_:1},8,["href"])):k("",!0)])])):k("",!0)])):k("",!0)}}}),Rn=$(Fn,[["__scopeId","data-v-75fd5d7f"]]),jn={class:"container"},zn={class:"aside-container"},Un={class:"aside-content"},Gn={class:"content"},Kn={class:"content-container"},Wn={class:"main"},qn=b({__name:"VPDoc",setup(o){const{theme:e}=H(),t=_e(),{hasSidebar:s,hasAside:n,leftAside:a}=J(),l=T(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(r,d)=>{const h=ne("Content");return i(),p("div",{class:x(["VPDoc",{"has-sidebar":u(s),"has-aside":u(n)}])},[f(r.$slots,"doc-top",{},void 0,!0),c("div",jn,[u(n)?(i(),p("div",{key:0,class:x(["aside",{"left-aside":u(a)}])},[d[0]||(d[0]=c("div",{class:"aside-curtain"},null,-1)),c("div",zn,[c("div",Un,[S(yn,null,{"aside-top":v(()=>[f(r.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[f(r.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[f(r.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[f(r.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[f(r.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[f(r.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):k("",!0),c("div",Gn,[c("div",Kn,[f(r.$slots,"doc-before",{},void 0,!0),c("main",Wn,[S(h,{class:x(["vp-doc",[l.value,u(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),S(Rn,null,{"doc-footer-before":v(()=>[f(r.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),f(r.$slots,"doc-after",{},void 0,!0)])])]),f(r.$slots,"doc-bottom",{},void 0,!0)],2)}}}),Jn=$(qn,[["__scopeId","data-v-52574d27"]]),Yn=b({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=T(()=>e.href&&Qe.test(e.href)),s=T(()=>e.tag||(e.href?"a":"button"));return(n,a)=>(i(),P(G(s.value),{class:x(["VPButton",[n.size,n.theme]]),href:n.href?u(He)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[Z(C(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),Xn=$(Yn,[["__scopeId","data-v-7c3d5c3e"]]),Qn=["src","alt"],Zn=b({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=ne("VPImage",!0);return e.image?(i(),p(D,{key:0},[typeof e.image=="string"||"src"in e.image?(i(),p("img",Q({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:u(Ee)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Qn)):(i(),p(D,{key:1},[S(s,Q({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),S(s,Q({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):k("",!0)}}}),fe=$(Zn,[["__scopeId","data-v-5b34c2b4"]]),eo={class:"container"},to={class:"main"},no={key:0,class:"name"},oo=["innerHTML"],so=["innerHTML"],ao=["innerHTML"],ro={key:0,class:"actions"},io={key:0,class:"image"},lo={class:"image-container"},uo=b({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=ie("hero-image-slot-exists");return(t,s)=>(i(),p("div",{class:x(["VPHero",{"has-image":t.image||u(e)}])},[c("div",eo,[c("div",to,[f(t.$slots,"home-hero-info-before",{},void 0,!0),f(t.$slots,"home-hero-info",{},()=>[t.name?(i(),p("h1",no,[c("span",{innerHTML:t.name,class:"clip"},null,8,oo)])):k("",!0),t.text?(i(),p("p",{key:1,innerHTML:t.text,class:"text"},null,8,so)):k("",!0),t.tagline?(i(),p("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,ao)):k("",!0)],!0),f(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(i(),p("div",ro,[(i(!0),p(D,null,R(t.actions,n=>(i(),p("div",{key:n.link,class:"action"},[S(Xn,{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))])):k("",!0),f(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||u(e)?(i(),p("div",io,[c("div",lo,[s[0]||(s[0]=c("div",{class:"image-bg"},null,-1)),f(t.$slots,"home-hero-image",{},()=>[t.image?(i(),P(fe,{key:0,class:"image-src",image:t.image},null,8,["image"])):k("",!0)],!0)])])):k("",!0)])],2))}}),co=$(uo,[["__scopeId","data-v-3a4eac35"]]),po=b({__name:"VPHomeHero",setup(o){const{frontmatter:e}=H();return(t,s)=>u(e).hero?(i(),P(co,{key:0,class:"VPHomeHero",name:u(e).hero.name,text:u(e).hero.text,tagline:u(e).hero.tagline,image:u(e).hero.image,actions:u(e).hero.actions},{"home-hero-info-before":v(()=>[f(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[f(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[f(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[f(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[f(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):k("",!0)}}),fo={class:"box"},vo={key:0,class:"icon"},ho=["innerHTML"],mo=["innerHTML"],_o=["innerHTML"],go={key:4,class:"link-text"},bo={class:"link-text-value"},ko=b({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(i(),P(K,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[c("article",fo,[typeof e.icon=="object"&&e.icon.wrap?(i(),p("div",vo,[S(fe,{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"?(i(),P(fe,{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?(i(),p("div",{key:2,class:"icon",innerHTML:e.icon},null,8,ho)):k("",!0),c("h2",{class:"title",innerHTML:e.title},null,8,mo),e.details?(i(),p("p",{key:3,class:"details",innerHTML:e.details},null,8,_o)):k("",!0),e.linkText?(i(),p("div",go,[c("p",bo,[Z(C(e.linkText)+" ",1),t[0]||(t[0]=c("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):k("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),yo=$(ko,[["__scopeId","data-v-8d841ca9"]]),$o={key:0,class:"VPFeatures"},So={class:"container"},Po={class:"items"},wo=b({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=T(()=>{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?(i(),p("div",$o,[c("div",So,[c("div",Po,[(i(!0),p(D,null,R(s.features,a=>(i(),p("div",{key:a.title,class:x(["item",[t.value]])},[S(yo,{icon:a.icon,title:a.title,details:a.details,link:a.link,"link-text":a.linkText,rel:a.rel,target:a.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):k("",!0)}}),Lo=$(wo,[["__scopeId","data-v-052a171e"]]),Vo=b({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=H();return(t,s)=>u(e).features?(i(),P(Lo,{key:0,class:"VPHomeFeatures",features:u(e).features},null,8,["features"])):k("",!0)}}),To=b({__name:"VPHomeContent",setup(o){const{width:e}=Tt({initialWidth:0,includeScrollbar:!1});return(t,s)=>(i(),p("div",{class:"vp-doc container",style:ge(u(e)?{"--vp-offset":`calc(50% - ${u(e)/2}px)`}:{})},[f(t.$slots,"default",{},void 0,!0)],4))}}),No=$(To,[["__scopeId","data-v-e7738246"]]),Co={class:"VPHome"},Io=b({__name:"VPHome",setup(o){const{frontmatter:e}=H();return(t,s)=>{const n=ne("Content");return i(),p("div",Co,[f(t.$slots,"home-hero-before",{},void 0,!0),S(po,null,{"home-hero-info-before":v(()=>[f(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[f(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[f(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[f(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[f(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),f(t.$slots,"home-hero-after",{},void 0,!0),f(t.$slots,"home-features-before",{},void 0,!0),S(Vo),f(t.$slots,"home-features-after",{},void 0,!0),u(e).markdownStyles!==!1?(i(),P(No,{key:0},{default:v(()=>[S(n)]),_:1})):(i(),P(n,{key:1}))])}}}),Mo=$(Io,[["__scopeId","data-v-7fa14d2c"]]),Ao={},Eo={class:"VPPage"};function Bo(o,e){const t=ne("Content");return i(),p("div",Eo,[f(o.$slots,"page-top"),S(t),f(o.$slots,"page-bottom")])}const Ho=$(Ao,[["render",Bo]]),Oo=b({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=H(),{hasSidebar:s}=J();return(n,a)=>(i(),p("div",{class:x(["VPContent",{"has-sidebar":u(s),"is-home":u(t).layout==="home"}]),id:"VPContent"},[u(e).isNotFound?f(n.$slots,"not-found",{key:0},()=>[S(Zt)],!0):u(t).layout==="page"?(i(),P(Ho,{key:1},{"page-top":v(()=>[f(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[f(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):u(t).layout==="home"?(i(),P(Mo,{key:2},{"home-hero-before":v(()=>[f(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[f(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[f(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[f(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[f(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[f(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[f(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[f(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[f(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):u(t).layout&&u(t).layout!=="doc"?(i(),P(G(u(t).layout),{key:3})):(i(),P(Jn,{key:4},{"doc-top":v(()=>[f(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[f(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[f(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[f(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[f(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[f(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[f(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[f(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[f(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[f(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[f(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Do=$(Oo,[["__scopeId","data-v-4cd34923"]]),xo={class:"container"},Fo=["innerHTML"],Ro=["innerHTML"],jo=b({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=H(),{hasSidebar:s}=J();return(n,a)=>u(e).footer&&u(t).footer!==!1?(i(),p("footer",{key:0,class:x(["VPFooter",{"has-sidebar":u(s)}])},[c("div",xo,[u(e).footer.message?(i(),p("p",{key:0,class:"message",innerHTML:u(e).footer.message},null,8,Fo)):k("",!0),u(e).footer.copyright?(i(),p("p",{key:1,class:"copyright",innerHTML:u(e).footer.copyright},null,8,Ro)):k("",!0)])],2)):k("",!0)}}),zo=$(jo,[["__scopeId","data-v-b496b83f"]]);function Uo(){const{theme:o,frontmatter:e}=H(),t=Xe([]),s=T(()=>t.value.length>0);return me(()=>{t.value=Oe(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const Go={class:"menu-text"},Ko={class:"header"},Wo={class:"outline"},qo=b({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=H(),s=N(!1),n=N(0),a=N(),l=N();function r(m){var g;(g=a.value)!=null&&g.contains(m.target)||(s.value=!1)}W(s,m=>{if(m){document.addEventListener("click",r);return}document.removeEventListener("click",r)}),Le("Escape",()=>{s.value=!1}),me(()=>{s.value=!1});function d(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function h(m){m.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ze(()=>{s.value=!1}))}function _(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(m,g)=>(i(),p("div",{class:"VPLocalNavOutlineDropdown",style:ge({"--vp-vh":n.value+"px"}),ref_key:"main",ref:a},[m.headers.length>0?(i(),p("button",{key:0,onClick:d,class:x({open:s.value})},[c("span",Go,C(u(rt)(u(t))),1),g[0]||(g[0]=c("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(i(),p("button",{key:1,onClick:_},C(u(t).returnToTopLabel||"Return to top"),1)),S(Ae,{name:"flyout"},{default:v(()=>[s.value?(i(),p("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:h},[c("div",Ko,[c("a",{class:"top-link",href:"#",onClick:_},C(u(t).returnToTopLabel||"Return to top"),1)]),c("div",Wo,[S(it,{headers:m.headers},null,8,["headers"])])],512)):k("",!0)]),_:1})],4))}}),Jo=$(qo,[["__scopeId","data-v-9d69baf6"]]),Yo={class:"container"},Xo=["aria-expanded"],Qo={class:"menu-text"},Zo=b({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=H(),{hasSidebar:s}=J(),{headers:n}=Uo(),{y:a}=et(),l=N(0);q(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),me(()=>{n.value=Oe(t.value.outline??e.value.outline)});const r=T(()=>n.value.length===0),d=T(()=>r.value&&!s.value),h=T(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:r.value,fixed:d.value}));return(_,m)=>u(t).layout!=="home"&&(!d.value||u(a)>=l.value)?(i(),p("div",{key:0,class:x(h.value)},[c("div",Yo,[u(s)?(i(),p("button",{key:0,class:"menu","aria-expanded":_.open,"aria-controls":"VPSidebarNav",onClick:m[0]||(m[0]=g=>_.$emit("open-menu"))},[m[1]||(m[1]=c("span",{class:"vpi-align-left menu-icon"},null,-1)),c("span",Qo,C(u(e).sidebarMenuLabel||"Menu"),1)],8,Xo)):k("",!0),S(Jo,{headers:u(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):k("",!0)}}),es=$(Zo,[["__scopeId","data-v-a9a50499"]]);function ts(){const o=N(!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 a=_e();return W(()=>a.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const ns={},os={class:"VPSwitch",type:"button",role:"switch"},ss={class:"check"},as={key:0,class:"icon"};function rs(o,e){return i(),p("button",os,[c("span",ss,[o.$slots.default?(i(),p("span",as,[f(o.$slots,"default",{},void 0,!0)])):k("",!0)])])}const is=$(ns,[["render",rs],["__scopeId","data-v-5ab7c8f3"]]),ls=b({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=H(),s=ie("toggle-appearance",()=>{e.value=!e.value}),n=N("");return Be(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(a,l)=>(i(),P(is,{title:n.value,class:"VPSwitchAppearance","aria-checked":u(e),onClick:u(s)},{default:v(()=>l[0]||(l[0]=[c("span",{class:"vpi-sun sun"},null,-1),c("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),De=$(ls,[["__scopeId","data-v-d0596168"]]),us={key:0,class:"VPNavBarAppearance"},cs=b({__name:"VPNavBarAppearance",setup(o){const{site:e}=H();return(t,s)=>u(e).appearance&&u(e).appearance!=="force-dark"&&u(e).appearance!=="force-auto"?(i(),p("div",us,[S(De)])):k("",!0)}}),ds=$(cs,[["__scopeId","data-v-86f775dc"]]),xe=N();let lt=!1,Pe=0;function ps(o){const e=N(!1);if(be){!lt&&fs(),Pe++;const t=W(xe,s=>{var n,a,l;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(a=o.onFocus)==null||a.call(o)):(e.value=!1,(l=o.onBlur)==null||l.call(o))});re(()=>{t(),Pe--,Pe||vs()})}return Nt(e)}function fs(){document.addEventListener("focusin",ut),lt=!0,xe.value=document.activeElement}function vs(){document.removeEventListener("focusin",ut)}function ut(){xe.value=document.activeElement}const hs={class:"VPMenuLink"},ms=["innerHTML"],_s=b({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=H();return(t,s)=>(i(),p("div",hs,[S(K,{class:x({active:u(te)(u(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,ms)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ye=$(_s,[["__scopeId","data-v-3ec6a25f"]]),gs={class:"VPMenuGroup"},bs={key:0,class:"title"},ks=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(i(),p("div",gs,[e.text?(i(),p("p",bs,C(e.text),1)):k("",!0),(i(!0),p(D,null,R(e.items,s=>(i(),p(D,null,["link"in s?(i(),P(ye,{key:0,item:s},null,8,["item"])):k("",!0)],64))),256))]))}}),ys=$(ks,[["__scopeId","data-v-5d03f77f"]]),$s={class:"VPMenu"},Ss={key:0,class:"items"},Ps=b({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(i(),p("div",$s,[e.items?(i(),p("div",Ss,[(i(!0),p(D,null,R(e.items,s=>(i(),p(D,{key:JSON.stringify(s)},["link"in s?(i(),P(ye,{key:0,item:s},null,8,["item"])):"component"in s?(i(),P(G(s.component),Q({key:1,ref_for:!0},s.props),null,16)):(i(),P(ys,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):k("",!0),f(e.$slots,"default",{},void 0,!0)]))}}),ws=$(Ps,[["__scopeId","data-v-dc051c19"]]),Ls=["aria-expanded","aria-label"],Vs={key:0,class:"text"},Ts=["innerHTML"],Ns={key:1,class:"vpi-more-horizontal icon"},Cs={class:"menu"},Is=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=N(!1),t=N();ps({el:t,onBlur:s});function s(){e.value=!1}return(n,a)=>(i(),p("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:a[1]||(a[1]=l=>e.value=!0),onMouseleave:a[2]||(a[2]=l=>e.value=!1)},[c("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:a[0]||(a[0]=l=>e.value=!e.value)},[n.button||n.icon?(i(),p("span",Vs,[n.icon?(i(),p("span",{key:0,class:x([n.icon,"option-icon"])},null,2)):k("",!0),n.button?(i(),p("span",{key:1,innerHTML:n.button},null,8,Ts)):k("",!0),a[3]||(a[3]=c("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(i(),p("span",Ns))],8,Ls),c("div",Cs,[S(ws,{items:n.items},{default:v(()=>[f(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),Fe=$(Is,[["__scopeId","data-v-4f75aef5"]]),Ms=["href","aria-label","innerHTML"],As=b({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=N();q(async()=>{var a;await Ze();const n=(a=t.value)==null?void 0:a.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const s=T(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,a)=>(i(),p("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,Ms))}}),Es=$(As,[["__scopeId","data-v-7db98690"]]),Bs={class:"VPSocialLinks"},Hs=b({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(i(),p("div",Bs,[(i(!0),p(D,null,R(e.links,({link:s,icon:n,ariaLabel:a})=>(i(),P(Es,{key:s,icon:n,link:s,ariaLabel:a},null,8,["icon","link","ariaLabel"]))),128))]))}}),Re=$(Hs,[["__scopeId","data-v-7b9e441c"]]),Os={key:0,class:"group translations"},Ds={class:"trans-title"},xs={key:1,class:"group"},Fs={class:"item appearance"},Rs={class:"label"},js={class:"appearance-action"},zs={key:2,class:"group"},Us={class:"item social-links"},Gs=b({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=H(),{localeLinks:s,currentLang:n}=le({correspondingLink:!0}),a=T(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,r)=>a.value?(i(),P(Fe,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[u(s).length&&u(n).label?(i(),p("div",Os,[c("p",Ds,C(u(n).label),1),(i(!0),p(D,null,R(u(s),d=>(i(),P(ye,{key:d.link,item:d},null,8,["item"]))),128))])):k("",!0),u(e).appearance&&u(e).appearance!=="force-dark"&&u(e).appearance!=="force-auto"?(i(),p("div",xs,[c("div",Fs,[c("p",Rs,C(u(t).darkModeSwitchLabel||"Appearance"),1),c("div",js,[S(De)])])])):k("",!0),u(t).socialLinks?(i(),p("div",zs,[c("div",Us,[S(Re,{class:"social-links-list",links:u(t).socialLinks},null,8,["links"])])])):k("",!0)]),_:1})):k("",!0)}}),Ks=$(Gs,[["__scopeId","data-v-b86a5348"]]),Ws=["aria-expanded"],qs=b({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(i(),p("button",{type:"button",class:x(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[c("span",{class:"container"},[c("span",{class:"top"}),c("span",{class:"middle"}),c("span",{class:"bottom"})],-1)]),10,Ws))}}),Js=$(qs,[["__scopeId","data-v-9fa400a2"]]),Ys=["innerHTML"],Xs=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=H();return(t,s)=>(i(),P(K,{class:x({VPNavBarMenuLink:!0,active:u(te)(u(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,Ys)]),_:1},8,["class","href","target","rel","no-icon"]))}}),Qs=$(Xs,[["__scopeId","data-v-8c15372d"]]),Zs=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=H(),s=a=>"component"in a?!1:"link"in a?te(t.value.relativePath,a.link,!!e.item.activeMatch):a.items.some(s),n=T(()=>s(e.item));return(a,l)=>(i(),P(Fe,{class:x({VPNavBarMenuGroup:!0,active:u(te)(u(t).relativePath,a.item.activeMatch,!!a.item.activeMatch)||n.value}),button:a.item.text,items:a.item.items},null,8,["class","button","items"]))}}),ea={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ta=b({__name:"VPNavBarMenu",setup(o){const{theme:e}=H();return(t,s)=>u(e).nav?(i(),p("nav",ea,[s[0]||(s[0]=c("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(i(!0),p(D,null,R(u(e).nav,n=>(i(),p(D,{key:JSON.stringify(n)},["link"in n?(i(),P(Qs,{key:0,item:n},null,8,["item"])):"component"in n?(i(),P(G(n.component),Q({key:1,ref_for:!0},n.props),null,16)):(i(),P(Zs,{key:2,item:n},null,8,["item"]))],64))),128))])):k("",!0)}}),na=$(ta,[["__scopeId","data-v-44639ed0"]]);function oa(o){const{localeIndex:e,theme:t}=H();function s(n){var V,A,y;const a=n.split("."),l=(V=t.value.search)==null?void 0:V.options,r=l&&typeof l=="object",d=r&&((y=(A=l.locales)==null?void 0:A[e.value])==null?void 0:y.translations)||null,h=r&&l.translations||null;let _=d,m=h,g=o;const I=a.pop();for(const F of a){let z=null;const Y=g==null?void 0:g[F];Y&&(z=g=Y);const ee=m==null?void 0:m[F];ee&&(z=m=ee);const X=_==null?void 0:_[F];X&&(z=_=X),Y||(g=z),ee||(m=z),X||(_=z)}return(_==null?void 0:_[I])??(m==null?void 0:m[I])??(g==null?void 0:g[I])??""}return s}const sa=["aria-label"],aa={class:"DocSearch-Button-Container"},ra={class:"DocSearch-Button-Placeholder"},Ge=b({__name:"VPNavBarSearchButton",setup(o){const t=oa({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(i(),p("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":u(t)("button.buttonAriaLabel")},[c("span",aa,[n[0]||(n[0]=c("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),c("span",ra,C(u(t)("button.buttonText")),1)]),n[1]||(n[1]=c("span",{class:"DocSearch-Button-Keys"},[c("kbd",{class:"DocSearch-Button-Key"}),c("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,sa))}}),ia={class:"VPNavBarSearch"},la={id:"local-search"},ua={key:1,id:"docsearch"},ca=b({__name:"VPNavBarSearch",setup(o){const e=Ct(()=>It(()=>import("./VPLocalSearchBox.hkHdYWwT.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=H(),n=N(!1),a=N(!1);q(()=>{});function l(){n.value||(n.value=!0,setTimeout(r,16))}function r(){const m=new Event("keydown");m.key="k",m.metaKey=!0,window.dispatchEvent(m),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||r()},16)}function d(m){const g=m.target,I=g.tagName;return g.isContentEditable||I==="INPUT"||I==="SELECT"||I==="TEXTAREA"}const h=N(!1);Le("k",m=>{(m.ctrlKey||m.metaKey)&&(m.preventDefault(),h.value=!0)}),Le("/",m=>{d(m)||(m.preventDefault(),h.value=!0)});const _="local";return(m,g)=>{var I;return i(),p("div",ia,[u(_)==="local"?(i(),p(D,{key:0},[h.value?(i(),P(u(e),{key:0,onClose:g[0]||(g[0]=V=>h.value=!1)})):k("",!0),c("div",la,[S(Ge,{onClick:g[1]||(g[1]=V=>h.value=!0)})])],64)):u(_)==="algolia"?(i(),p(D,{key:1},[n.value?(i(),P(u(t),{key:0,algolia:((I=u(s).search)==null?void 0:I.options)??u(s).algolia,onVnodeBeforeMount:g[2]||(g[2]=V=>a.value=!0)},null,8,["algolia"])):k("",!0),a.value?k("",!0):(i(),p("div",ua,[S(Ge,{onClick:l})]))],64)):k("",!0)])}}}),da=b({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=H();return(t,s)=>u(e).socialLinks?(i(),P(Re,{key:0,class:"VPNavBarSocialLinks",links:u(e).socialLinks},null,8,["links"])):k("",!0)}}),pa=$(da,[["__scopeId","data-v-c3ba6796"]]),fa=["href","rel","target"],va=["innerHTML"],ha={key:2},ma=b({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=H(),{hasSidebar:s}=J(),{currentLang:n}=le(),a=T(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),l=T(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),r=T(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,h)=>(i(),p("div",{class:x(["VPNavBarTitle",{"has-sidebar":u(s)}])},[c("a",{class:"title",href:a.value??u(He)(u(n).link),rel:l.value,target:r.value},[f(d.$slots,"nav-bar-title-before",{},void 0,!0),u(t).logo?(i(),P(fe,{key:0,class:"logo",image:u(t).logo},null,8,["image"])):k("",!0),u(t).siteTitle?(i(),p("span",{key:1,innerHTML:u(t).siteTitle},null,8,va)):u(t).siteTitle===void 0?(i(),p("span",ha,C(u(e).title),1)):k("",!0),f(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,fa)],2))}}),_a=$(ma,[["__scopeId","data-v-0c3e78d8"]]),ga={class:"items"},ba={class:"title"},ka=b({__name:"VPNavBarTranslations",setup(o){const{theme:e}=H(),{localeLinks:t,currentLang:s}=le({correspondingLink:!0});return(n,a)=>u(t).length&&u(s).label?(i(),P(Fe,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:u(e).langMenuLabel||"Change language"},{default:v(()=>[c("div",ga,[c("p",ba,C(u(s).label),1),(i(!0),p(D,null,R(u(t),l=>(i(),P(ye,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):k("",!0)}}),ya=$(ka,[["__scopeId","data-v-c134d1c9"]]),$a={class:"wrapper"},Sa={class:"container"},Pa={class:"title"},wa={class:"content"},La={class:"content-body"},Va=b({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=et(),{hasSidebar:s}=J(),{frontmatter:n}=H(),a=N({});return Be(()=>{a.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,r)=>(i(),p("div",{class:x(["VPNavBar",a.value])},[c("div",$a,[c("div",Sa,[c("div",Pa,[S(_a,null,{"nav-bar-title-before":v(()=>[f(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[f(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),c("div",wa,[c("div",La,[f(l.$slots,"nav-bar-content-before",{},void 0,!0),S(ca,{class:"search"}),S(na,{class:"menu"}),S(ya,{class:"translations"}),S(ds,{class:"appearance"}),S(pa,{class:"social-links"}),S(Ks,{class:"extra"}),f(l.$slots,"nav-bar-content-after",{},void 0,!0),S(Js,{class:"hamburger",active:l.isScreenOpen,onClick:r[0]||(r[0]=d=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),r[1]||(r[1]=c("div",{class:"divider"},[c("div",{class:"divider-line"})],-1))],2))}}),Ta=$(Va,[["__scopeId","data-v-317c9d8e"]]),Na={key:0,class:"VPNavScreenAppearance"},Ca={class:"text"},Ia=b({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=H();return(s,n)=>u(e).appearance&&u(e).appearance!=="force-dark"&&u(e).appearance!=="force-auto"?(i(),p("div",Na,[c("p",Ca,C(u(t).darkModeSwitchLabel||"Appearance"),1),S(De)])):k("",!0)}}),Ma=$(Ia,[["__scopeId","data-v-1b128341"]]),Aa=["innerHTML"],Ea=b({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=ie("close-screen");return(t,s)=>(i(),P(K,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:u(e)},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,Aa)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Ba=$(Ea,[["__scopeId","data-v-43bcb093"]]),Ha=["innerHTML"],Oa=b({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=ie("close-screen");return(t,s)=>(i(),P(K,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:u(e)},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,Ha)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),ct=$(Oa,[["__scopeId","data-v-f55d6f2b"]]),Da={class:"VPNavScreenMenuGroupSection"},xa={key:0,class:"title"},Fa=b({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(i(),p("div",Da,[e.text?(i(),p("p",xa,C(e.text),1)):k("",!0),(i(!0),p(D,null,R(e.items,s=>(i(),P(ct,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Ra=$(Fa,[["__scopeId","data-v-e1165598"]]),ja=["aria-controls","aria-expanded"],za=["innerHTML"],Ua=["id"],Ga={key:0,class:"item"},Ka={key:1,class:"item"},Wa={key:2,class:"group"},qa=b({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=N(!1),s=T(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(a,l)=>(i(),p("div",{class:x(["VPNavScreenMenuGroup",{open:t.value}])},[c("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[c("span",{class:"button-text",innerHTML:a.text},null,8,za),l[0]||(l[0]=c("span",{class:"vpi-plus button-icon"},null,-1))],8,ja),c("div",{id:s.value,class:"items"},[(i(!0),p(D,null,R(a.items,r=>(i(),p(D,{key:JSON.stringify(r)},["link"in r?(i(),p("div",Ga,[S(ct,{item:r},null,8,["item"])])):"component"in r?(i(),p("div",Ka,[(i(),P(G(r.component),Q({ref_for:!0},r.props,{"screen-menu":""}),null,16))])):(i(),p("div",Wa,[S(Ra,{text:r.text,items:r.items},null,8,["text","items"])]))],64))),128))],8,Ua)],2))}}),Ja=$(qa,[["__scopeId","data-v-3c5f0adf"]]),Ya={key:0,class:"VPNavScreenMenu"},Xa=b({__name:"VPNavScreenMenu",setup(o){const{theme:e}=H();return(t,s)=>u(e).nav?(i(),p("nav",Ya,[(i(!0),p(D,null,R(u(e).nav,n=>(i(),p(D,{key:JSON.stringify(n)},["link"in n?(i(),P(Ba,{key:0,item:n},null,8,["item"])):"component"in n?(i(),P(G(n.component),Q({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(i(),P(Ja,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):k("",!0)}}),Qa=b({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=H();return(t,s)=>u(e).socialLinks?(i(),P(Re,{key:0,class:"VPNavScreenSocialLinks",links:u(e).socialLinks},null,8,["links"])):k("",!0)}}),Za={class:"list"},er=b({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=le({correspondingLink:!0}),s=N(!1);function n(){s.value=!s.value}return(a,l)=>u(e).length&&u(t).label?(i(),p("div",{key:0,class:x(["VPNavScreenTranslations",{open:s.value}])},[c("button",{class:"title",onClick:n},[l[0]||(l[0]=c("span",{class:"vpi-languages icon lang"},null,-1)),Z(" "+C(u(t).label)+" ",1),l[1]||(l[1]=c("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),c("ul",Za,[(i(!0),p(D,null,R(u(e),r=>(i(),p("li",{key:r.link,class:"item"},[S(K,{class:"link",href:r.link},{default:v(()=>[Z(C(r.text),1)]),_:2},1032,["href"])]))),128))])],2)):k("",!0)}}),tr=$(er,[["__scopeId","data-v-d9db7cd9"]]),nr={class:"container"},or=b({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=N(null),t=tt(be?document.body:null);return(s,n)=>(i(),P(Ae,{name:"fade",onEnter:n[0]||(n[0]=a=>t.value=!0),onAfterLeave:n[1]||(n[1]=a=>t.value=!1)},{default:v(()=>[s.open?(i(),p("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[c("div",nr,[f(s.$slots,"nav-screen-content-before",{},void 0,!0),S(Xa,{class:"menu"}),S(tr,{class:"translations"}),S(Ma,{class:"appearance"}),S(Qa,{class:"social-links"}),f(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):k("",!0)]),_:3}))}}),sr=$(or,[["__scopeId","data-v-07944e28"]]),ar={key:0,class:"VPNav"},rr=b({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=ts(),{frontmatter:n}=H(),a=T(()=>n.value.navbar!==!1);return nt("close-screen",t),he(()=>{be&&document.documentElement.classList.toggle("hide-nav",!a.value)}),(l,r)=>a.value?(i(),p("header",ar,[S(Ta,{"is-screen-open":u(e),onToggleScreen:u(s)},{"nav-bar-title-before":v(()=>[f(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[f(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[f(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[f(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),S(sr,{open:u(e)},{"nav-screen-content-before":v(()=>[f(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[f(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):k("",!0)}}),ir=$(rr,[["__scopeId","data-v-e5ed4446"]]),lr=["role","tabindex"],ur={key:1,class:"items"},cr=b({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:a,hasActiveLink:l,hasChildren:r,toggle:d}=on(T(()=>e.item)),h=T(()=>r.value?"section":"div"),_=T(()=>n.value?"a":"div"),m=T(()=>r.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),g=T(()=>n.value?void 0:"button"),I=T(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":a.value},{"has-active":l.value}]);function V(y){"key"in y&&y.key!=="Enter"||!e.item.link&&d()}function A(){e.item.link&&d()}return(y,F)=>{const z=ne("VPSidebarItem",!0);return i(),P(G(h.value),{class:x(["VPSidebarItem",I.value])},{default:v(()=>[y.item.text?(i(),p("div",Q({key:0,class:"item",role:g.value},Mt(y.item.items?{click:V,keydown:V}:{},!0),{tabindex:y.item.items&&0}),[F[1]||(F[1]=c("div",{class:"indicator"},null,-1)),y.item.link?(i(),P(K,{key:0,tag:_.value,class:"link",href:y.item.link,rel:y.item.rel,target:y.item.target},{default:v(()=>[(i(),P(G(m.value),{class:"text",innerHTML:y.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(i(),P(G(m.value),{key:1,class:"text",innerHTML:y.item.text},null,8,["innerHTML"])),y.item.collapsed!=null&&y.item.items&&y.item.items.length?(i(),p("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:A,onKeydown:At(A,["enter"]),tabindex:"0"},F[0]||(F[0]=[c("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):k("",!0)],16,lr)):k("",!0),y.item.items&&y.item.items.length?(i(),p("div",ur,[y.depth<5?(i(!0),p(D,{key:0},R(y.item.items,Y=>(i(),P(z,{key:Y.text,item:Y,depth:y.depth+1},null,8,["item","depth"]))),128)):k("",!0)])):k("",!0)]),_:1},8,["class"])}}}),dr=$(cr,[["__scopeId","data-v-fe865a8c"]]),pr=b({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=N(!0);let t=null;return q(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Et(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(i(!0),p(D,null,R(s.items,a=>(i(),p("div",{key:a.text,class:x(["group",{"no-transition":e.value}])},[S(dr,{item:a,depth:0},null,8,["item"])],2))),128))}}),fr=$(pr,[["__scopeId","data-v-60f8ce21"]]),vr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},hr=b({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=J(),s=o,n=N(null),a=tt(be?document.body:null);W([s,n],()=>{var r;s.open?(a.value=!0,(r=n.value)==null||r.focus()):a.value=!1},{immediate:!0,flush:"post"});const l=N(0);return W(e,()=>{l.value+=1},{deep:!0}),(r,d)=>u(t)?(i(),p("aside",{key:0,class:x(["VPSidebar",{open:r.open}]),ref_key:"navEl",ref:n,onClick:d[0]||(d[0]=ot(()=>{},["stop"]))},[d[2]||(d[2]=c("div",{class:"curtain"},null,-1)),c("nav",vr,[d[1]||(d[1]=c("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),f(r.$slots,"sidebar-nav-before",{},void 0,!0),(i(),P(fr,{items:u(e),key:l.value},null,8,["items"])),f(r.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):k("",!0)}}),mr=$(hr,[["__scopeId","data-v-bb8a5fb0"]]),_r=b({__name:"VPSkipLink",setup(o){const e=_e(),t=N();W(()=>e.path,()=>t.value.focus());function s({target:n}){const a=document.getElementById(decodeURIComponent(n.hash).slice(1));if(a){const l=()=>{a.removeAttribute("tabindex"),a.removeEventListener("blur",l)};a.setAttribute("tabindex","-1"),a.addEventListener("blur",l),a.focus(),window.scrollTo(0,0)}}return(n,a)=>(i(),p(D,null,[c("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),c("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),gr=$(_r,[["__scopeId","data-v-b41cbf02"]]),br=b({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=J(),n=_e();W(()=>n.path,s),nn(e,s);const{frontmatter:a}=H(),l=Bt(),r=T(()=>!!l["home-hero-image"]);return nt("hero-image-slot-exists",r),(d,h)=>{const _=ne("Content");return u(a).layout!==!1?(i(),p("div",{key:0,class:x(["Layout",u(a).pageClass])},[f(d.$slots,"layout-top",{},void 0,!0),S(gr),S(zt,{class:"backdrop",show:u(e),onClick:u(s)},null,8,["show","onClick"]),S(ir,null,{"nav-bar-title-before":v(()=>[f(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[f(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[f(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[f(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[f(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[f(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),S(es,{open:u(e),onOpenMenu:u(t)},null,8,["open","onOpenMenu"]),S(mr,{open:u(e)},{"sidebar-nav-before":v(()=>[f(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[f(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),S(Do,null,{"page-top":v(()=>[f(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[f(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[f(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[f(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[f(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[f(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[f(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[f(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[f(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[f(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[f(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[f(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[f(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[f(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[f(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[f(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[f(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[f(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[f(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[f(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[f(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[f(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[f(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),S(zo),f(d.$slots,"layout-bottom",{},void 0,!0)],2)):(i(),P(_,{key:1}))}}}),kr=$(br,[["__scopeId","data-v-63ade785"]]),dt={Layout:kr,enhanceApp:({app:o})=>{o.component("Badge",Ft)}},je="LiteyukiStudio",ze="LiteyukiBot",yr="https://api.github.com",$r="https://git.liteyuki.icu/api/v1",Sr="https://api.liteyuki.icu/online",Pr="https://api.liteyuki.icu/count",wr="https://api.liteyuki.icu/visit",Lr="https://api.liteyuki.icu/visit_count",se=`https://github.com/${je}/${ze}`,Ke="https://starmap.liteyuki.icu";async function Vr(){try{const o=`${$r}/repos/${je}/${ze}`;console.log(o);const t=await(await fetch(o)).json();return{stars:t.stars_count,forks:t.forks_count,watchers:t.watchers_count,issues:0,prs:0,size:t.size}}catch{return{stars:-1,forks:-1,watchers:-1,issues:-1,prs:-1,size:-1}}}async function Tr(){try{const e=await(await fetch(`${yr}/repos/${je}/${ze}`)).json();return{stars:e.stargazers_count,forks:e.forks_count,watchers:e.watchers_count,issues:e.open_issues_count,prs:e.open_issues_count,size:e.size}}catch{return{stars:-1,forks:-1,watchers:-1,issues:-1,prs:-1,size:-1}}}async function Nr(){const o=await Tr(),e=await Vr();return{stars:o.stars+e.stars,forks:o.forks+e.forks,watchers:o.watchers+e.watchers,issues:o.issues+e.issues,prs:o.prs+e.prs,size:o.size+e.size}}const oe={getTotal:async()=>{try{return(await(await fetch(Pr)).json()).register}catch{return-1}},getOnline:async()=>{try{return(await(await fetch(Sr)).json()).online}catch{return-1}},getGithubStats:Nr,getPluginNum:async()=>{try{return(await(await fetch("/plugins.json")).json()).length}catch{return-1}},getResourceNum:async()=>{try{return(await(await fetch("/resources.json")).json()).length}catch{return-1}},getVisitCount:async()=>{try{return(await(await fetch(Lr)).json()).count}catch{return-1}}};function Cr(){const o="deviceId";let e=localStorage.getItem(o);return e||(e=Mr(),localStorage.setItem(o,e)),e}async function Ir(){const o=Cr();try{await fetch(wr,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({device_id:o}).toString()})}catch(e){console.error("Failed to upload visit record:",e)}}function Mr(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(o){var e=Math.random()*16|0,t=o==="x"?e:e&3|8;return t.toString(16)})}/*! - * vue-router v4.5.0 - * (c) 2024 Eduardo San Martin Morote - * @license MIT - */var We;(function(o){o.pop="pop",o.push="push"})(We||(We={}));var qe;(function(o){o.back="back",o.forward="forward",o.unknown=""})(qe||(qe={}));var Je;(function(o){o[o.aborted=4]="aborted",o[o.cancelled=8]="cancelled",o[o.duplicated=16]="duplicated"})(Je||(Je={}));const Ar=Symbol("");function Er(o,e,t){const s=()=>{o[e].delete(t)};re(s),Ht(s),Ot(()=>{o[e].add(t)}),o[e].add(t)}function Br(o){const e=ie(Ar,{}).value;e&&Er(e,"updateGuards",o)}const Hr={class:"stats-bar-content"},Or={class:"stats-bar"},Dr={class:"stats-info"},xr={class:"stats-title"},Fr={class:"sections"},Rr=["href"],jr={class:"section-tab"},zr={class:"text"},Ur={class:"number"},Gr=b({__name:"StatsBar",setup(o){const{Layout:e}=dt;let t=null;const s={total:{name:"total",color:"#00a6ff",value:N(-1),link:Ke},online:{name:"online",color:"#7eff7e",value:N(-1),link:Ke},stars:{name:"stars",color:"#ffcc00",value:N(-1),link:`${se}/stargazers`},forks:{name:"forks",color:"#ff6600",value:N(-1),link:`${se}/forks`},issues:{name:"issues",color:"#ff0000",value:N(-1),link:`${se}/issues`},prs:{name:"prs",color:"#f15df1",value:N(-1),link:`${se}/pulls`},plugins:{name:"plugins",color:"#a766ff",value:N(-1),link:"./store/plugin"},resources:{name:"resources",color:"#5a54fa",value:N(-1),link:"./store/resource"},visitors:{name:"visitors",color:"#00a6ff",value:N(-1),link:se}};async function n(){[s.online.value.value,s.total.value.value,s.plugins.value.value,s.resources.value.value,s.visitors.value.value,t]=await Promise.all([oe.getOnline(),oe.getTotal(),oe.getPluginNum(),oe.getResourceNum(),oe.getVisitCount(),oe.getGithubStats()]),s.stars.value.value=(t==null?void 0:t.stars)||0,s.forks.value.value=(t==null?void 0:t.forks)||0,s.issues.value.value=(t==null?void 0:t.issues)||0,s.prs.value.value=(t==null?void 0:t.prs)||0}function a(l){return l.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}return q(()=>{const l=setInterval(n,1e4);n(),Ir(),re(()=>{clearInterval(l)})}),Br(()=>{xt()}),console.log(` _ _ _ _ _ ____ _ - | | (_) | | | (_) _ \\ | | - | | _| |_ ___ _ _ _ _| | ___| |_) | ___ | |_ - | | | | __/ _ \\ | | | | | | |/ / | _ < / _ \\| __| - | |____| | || __/ |_| | |_| | <| | |_) | (_) | |_ - |______|_|\\__\\___|\\__, |\\__,_|_|\\_\\_|____/ \\___/ \\__| - __/ | - |___/ `),console.log(j("easterEgg")),(l,r)=>(i(),P(u(e),null,{"home-features-before":v(()=>[c("div",Hr,[c("div",Or,[c("div",Dr,[c("div",xr,C(u(j)("stats")),1),c("div",Fr,[(i(!0),p(D,null,R(Object.values(s),d=>(i(),p("div",{key:d.name,class:"section"},[c("a",{href:d.link,target:"_blank"},[c("div",jr,[c("span",{class:"dot",style:ge({backgroundColor:d.color})},null,4),c("span",zr,C(u(j)(d.name)),1)]),c("div",Ur,C(a(d.value)),1)],8,Rr)]))),128))])]),r[0]||(r[0]=c("div",{class:"starmap"},[c("iframe",{src:"https://starmap.liteyuki.icu/",width:"100%",height:"300px",class:"gamma"})],-1))])])]),_:1}))}}),Ye=$(Gr,[["__scopeId","data-v-2391887b"]]);var Kr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Wr(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}var pt={exports:{}};/*! - * clipboard.js v2.0.11 - * https://clipboardjs.com/ - * - * Licensed MIT © Zeno Rocha - */(function(o,e){(function(s,n){o.exports=n()})(Kr,function(){return function(){var t={686:function(a,l,r){r.d(l,{default:function(){return St}});var d=r(279),h=r.n(d),_=r(370),m=r.n(_),g=r(817),I=r.n(g);function V(B){try{return document.execCommand(B)}catch{return!1}}var A=function(L){var w=I()(L);return V("cut"),w},y=A;function F(B){var L=document.documentElement.getAttribute("dir")==="rtl",w=document.createElement("textarea");w.style.fontSize="12pt",w.style.border="0",w.style.padding="0",w.style.margin="0",w.style.position="absolute",w.style[L?"right":"left"]="-9999px";var M=window.pageYOffset||document.documentElement.scrollTop;return w.style.top="".concat(M,"px"),w.setAttribute("readonly",""),w.value=B,w}var z=function(L,w){var M=F(L);w.container.appendChild(M);var E=I()(M);return V("copy"),M.remove(),E},Y=function(L){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},M="";return typeof L=="string"?M=z(L,w):L instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(L==null?void 0:L.type)?M=z(L.value,w):(M=I()(L),V("copy")),M},ee=Y;function X(B){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?X=function(w){return typeof w}:X=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},X(B)}var ft=function(){var L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=L.action,M=w===void 0?"copy":w,E=L.container,O=L.target,U=L.text;if(M!=="copy"&&M!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(O!==void 0)if(O&&X(O)==="object"&&O.nodeType===1){if(M==="copy"&&O.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(M==="cut"&&(O.hasAttribute("readonly")||O.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(U)return ee(U,{container:E});if(O)return M==="cut"?y(O):ee(O,{container:E})},vt=ft;function ae(B){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ae=function(w){return typeof w}:ae=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},ae(B)}function ht(B,L){if(!(B instanceof L))throw new TypeError("Cannot call a class as a function")}function Ue(B,L){for(var w=0;w"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function ue(B){return ue=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},ue(B)}function Se(B,L){var w="data-clipboard-".concat(B);if(L.hasAttribute(w))return L.getAttribute(w)}var $t=function(B){_t(w,B);var L=gt(w);function w(M,E){var O;return ht(this,w),O=L.call(this),O.resolveOptions(E),O.listenClick(M),O}return mt(w,[{key:"resolveOptions",value:function(){var E=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof E.action=="function"?E.action:this.defaultAction,this.target=typeof E.target=="function"?E.target:this.defaultTarget,this.text=typeof E.text=="function"?E.text:this.defaultText,this.container=ae(E.container)==="object"?E.container:document.body}},{key:"listenClick",value:function(E){var O=this;this.listener=m()(E,"click",function(U){return O.onClick(U)})}},{key:"onClick",value:function(E){var O=E.delegateTarget||E.currentTarget,U=this.action(O)||"copy",ce=vt({action:U,container:this.container,target:this.target(O),text:this.text(O)});this.emit(ce?"success":"error",{action:U,text:ce,trigger:O,clearSelection:function(){O&&O.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(E){return Se("action",E)}},{key:"defaultTarget",value:function(E){var O=Se("target",E);if(O)return document.querySelector(O)}},{key:"defaultText",value:function(E){return Se("text",E)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(E){var O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return ee(E,O)}},{key:"cut",value:function(E){return y(E)}},{key:"isSupported",value:function(){var E=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],O=typeof E=="string"?[E]:E,U=!!document.queryCommandSupported;return O.forEach(function(ce){U=U&&!!document.queryCommandSupported(ce)}),U}}]),w}(h()),St=$t},828:function(a){var l=9;if(typeof Element<"u"&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}function d(h,_){for(;h&&h.nodeType!==l;){if(typeof h.matches=="function"&&h.matches(_))return h;h=h.parentNode}}a.exports=d},438:function(a,l,r){var d=r(828);function h(g,I,V,A,y){var F=m.apply(this,arguments);return g.addEventListener(V,F,y),{destroy:function(){g.removeEventListener(V,F,y)}}}function _(g,I,V,A,y){return typeof g.addEventListener=="function"?h.apply(null,arguments):typeof V=="function"?h.bind(null,document).apply(null,arguments):(typeof g=="string"&&(g=document.querySelectorAll(g)),Array.prototype.map.call(g,function(F){return h(F,I,V,A,y)}))}function m(g,I,V,A){return function(y){y.delegateTarget=d(y.target,I),y.delegateTarget&&A.call(g,y)}}a.exports=_},879:function(a,l){l.node=function(r){return r!==void 0&&r instanceof HTMLElement&&r.nodeType===1},l.nodeList=function(r){var d=Object.prototype.toString.call(r);return r!==void 0&&(d==="[object NodeList]"||d==="[object HTMLCollection]")&&"length"in r&&(r.length===0||l.node(r[0]))},l.string=function(r){return typeof r=="string"||r instanceof String},l.fn=function(r){var d=Object.prototype.toString.call(r);return d==="[object Function]"}},370:function(a,l,r){var d=r(879),h=r(438);function _(V,A,y){if(!V&&!A&&!y)throw new Error("Missing required arguments");if(!d.string(A))throw new TypeError("Second argument must be a String");if(!d.fn(y))throw new TypeError("Third argument must be a Function");if(d.node(V))return m(V,A,y);if(d.nodeList(V))return g(V,A,y);if(d.string(V))return I(V,A,y);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function m(V,A,y){return V.addEventListener(A,y),{destroy:function(){V.removeEventListener(A,y)}}}function g(V,A,y){return Array.prototype.forEach.call(V,function(F){F.addEventListener(A,y)}),{destroy:function(){Array.prototype.forEach.call(V,function(F){F.removeEventListener(A,y)})}}}function I(V,A,y){return h(document.body,V,A,y)}a.exports=_},817:function(a){function l(r){var d;if(r.nodeName==="SELECT")r.focus(),d=r.value;else if(r.nodeName==="INPUT"||r.nodeName==="TEXTAREA"){var h=r.hasAttribute("readonly");h||r.setAttribute("readonly",""),r.select(),r.setSelectionRange(0,r.value.length),h||r.removeAttribute("readonly"),d=r.value}else{r.hasAttribute("contenteditable")&&r.focus();var _=window.getSelection(),m=document.createRange();m.selectNodeContents(r),_.removeAllRanges(),_.addRange(m),d=_.toString()}return d}a.exports=l},279:function(a){function l(){}l.prototype={on:function(r,d,h){var _=this.e||(this.e={});return(_[r]||(_[r]=[])).push({fn:d,ctx:h}),this},once:function(r,d,h){var _=this;function m(){_.off(r,m),d.apply(h,arguments)}return m._=d,this.on(r,m,h)},emit:function(r){var d=[].slice.call(arguments,1),h=((this.e||(this.e={}))[r]||[]).slice(),_=0,m=h.length;for(_;_{const n=new Jr(".copy-btn",{text:()=>`npm install ${e.item.module_name}`});n.on("success",()=>{}),n.on("error",()=>{})},s=n=>{const a=n.replace(/^#/,""),[l,r,d]=a.match(/.{2}/g).map(_=>parseInt(_,16)),h=(l*299+r*587+d*114)/1e3;return{backgroundColor:n,color:h>128?"#000":"#fff"}};return(n,a)=>(i(),p("div",Yr,[c("div",Xr,C(e.item.name),1),c("div",Qr,C(e.item.desc),1),c("div",Zr,[(i(!0),p(D,null,R(e.item.tags,l=>(i(),p("span",{class:"tag",key:l,style:ge(s(l.color))},C(l.label),5))),128))]),c("div",ei,[c("a",{href:e.item.homepage,class:"btn",target:"_blank"},a[0]||(a[0]=[c("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 16 16"},[c("path",{fill:"currentColor",d:"m7.775 3.275l1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0a.751.751 0 0 1 .018-1.042a.751.751 0 0 1 1.042-.018a1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018a.751.751 0 0 1-.018-1.042m-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018a.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0a.751.751 0 0 1-.018 1.042a.751.751 0 0 1-1.042.018a1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83"})],-1)]),8,ti),c("button",{class:"btn copy-btn",onClick:t},"复制安装命令"),c("div",ni,[c("a",{class:"author-info",href:`https://github.com/${e.item.author}`},[c("img",{class:"icon avatar",src:`https://github.com/${e.item.author}.png?size=80`,alt:""},null,8,si),c("div",ai,C(e.item.author),1)],8,oi)])])]))}}),ii=$(ri,[["__scopeId","data-v-a8e3f329"]]),li={class:"switch"},ui=["checked"],ci=b({__name:"ToggleSwitch",props:{modelValue:Boolean},emits:["update:modelValue"],setup(o,{emit:e}){const t=e,s=n=>{t("update:modelValue",n)};return(n,a)=>(i(),p("label",li,[c("input",{type:"checkbox",checked:o.modelValue,onChange:a[0]||(a[0]=l=>s(l.target.checked))},null,40,ui),a[1]||(a[1]=c("span",{class:"slider round"},null,-1))]))}}),di=$(ci,[["__scopeId","data-v-b3db11d1"]]),pi=[{module_name:"liteyukibot-plugin-nonebot",project_link:"liteyukibot-plugin-nonebot",name:"NoneBot插件",desc:"在轻雪中使用NoneBot,内置轻雪--NoneBot会话控制器插件,为NoneBot开发者提供了更多便捷功能(已内置)",author:"snowykami",homepage:"https://github.com/LiteyukiStudio/liteyukibot-plugin-nonebot",tags:[{label:"app",color:"#aeeaa8"}],is_official:!0,type:"application",valid:!0,version:"rolling"},{module_name:"liteyukibot-plugin-antidislink",project_link:"liteyukibot-plugin-antidislink",name:"防断联插件",desc:"防止你的群友断联化",author:"snowykami",homepage:"https://github.com/snowykami/liteyukibot-plugin-antidislink",tags:[{label:"app",color:"#aeeaa8"},{label:"dislink",color:"#d0e9ff"}],is_official:!0,type:"application",valid:!0,version:"rolling"},{module_name:"liteyukibot-plugin-lagrange",project_link:"liteyukibot-plugin-lagrange",name:"LagrangePlugin",desc:"在轻雪中使用lagrange-python!",author:"snowykami",homepage:"https://github.com/snowykami/liteyukibot-plugin-lagrange",tags:[{label:"app",color:"#aeeaa8"},{label:"lagrange",color:"#ff89f7"}],is_official:!0,type:"application",valid:!0,version:"rolling"},{module_name:"liteyukibot-plugin-htmlrender",project_link:"liteyukibot-plugin-htmlrender",name:"htmlrender",desc:"使用系统中的浏览器对网页进行渲染,便于其他插件使用",author:"EillesWan",homepage:"https://github.com/LiteyukiStudio/liteyukibot-plugin-htmlrender",tags:[{label:"ch",color:"#4285f4"},{label:"ro",color:"#db4437"},{label:"mi",color:"#f4b400"},{label:"um",color:"#0f9d58"}],is_official:!0,type:"application",valid:!0,version:"rolling"}],fi={class:"market"},vi={class:"search-box-div"},hi=["placeholder"],mi={class:"items"},_i=b({__name:"PluginStore",setup(o){let e=N(!1),t=T(()=>{let a=s.value;return n.value&&(a=a.filter(l=>l.name.toLowerCase().includes(n.value.toLowerCase())||l.desc.toLowerCase().includes(n.value.toLowerCase())||l.author.toLowerCase().includes(n.value.toLowerCase())||l.module_name.toLowerCase().includes(n.value.toLowerCase()))),e.value&&(a=a.filter(l=>l.is_liteyuki_plugin)),a}),s=N([]),n=N("");return s.value=pi,s.value.forEach(a=>{a.is_liteyuki_plugin=!0}),fetch("https://registry.nonebot.dev/plugins.json").then(a=>a.json()).then(a=>{a.forEach(l=>{l.is_official=!1}),s.value=s.value.concat(a)}),(a,l)=>(i(),p("div",fi,[c("h1",null,C(u(j)("pluginStore")),1),c("p",null,C(u(j)("pluginStoreDesc")),1),c("div",vi,[Ve(c("input",{class:"item-search-box",type:"text","onUpdate:modelValue":l[0]||(l[0]=r=>Ne(n)?n.value=r:n=r),placeholder:u(j)("search")},null,8,hi),[[Te,u(n)]]),S(di,{modelValue:u(e),"onUpdate:modelValue":l[1]||(l[1]=r=>Ne(e)?e.value=r:e=r)},null,8,["modelValue"]),Z(" "+C(u(j)("liteyukiOnly")),1)]),c("div",mi,[(i(!0),p(D,null,R(u(t),r=>(i(),P(ii,{key:r.id,item:r},null,8,["item"]))),128))])]))}}),gi=$(_i,[["__scopeId","data-v-671446c8"]]),bi={class:"item-card"},ki={class:"item-name"},yi={class:"item-description"},$i={class:"item-bar"},Si=["href"],Pi=["href"],wi=["src"],Li={class:"author-name"},Vi=b({__name:"ResItemCard",props:{item:Object},setup(o){const e=o;return(t,s)=>(i(),p("div",bi,[c("div",ki,C(e.item.name),1),c("div",yi,C(e.item.description),1),c("div",$i,[c("a",{href:e.item.link,class:"",target:"_blank"},s[0]||(s[0]=[c("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 16 16"},[c("path",{fill:"currentColor",d:"m7.775 3.275l1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0a.751.751 0 0 1 .018-1.042a.751.751 0 0 1 1.042-.018a1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018a.751.751 0 0 1-.018-1.042m-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018a.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0a.751.751 0 0 1-.018 1.042a.751.751 0 0 1-1.042.018a1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83"})],-1)]),8,Si),c("div",null,[c("a",{class:"author-info",href:`https://github.com/${e.item.author}`},[c("img",{class:"icon avatar",src:`https://github.com/${e.item.author}.png?size=80`,alt:""},null,8,wi),c("div",Li,C(e.item.author),1)],8,Pi)])])]))}}),Ti=$(Vi,[["__scopeId","data-v-22cbd1fa"]]),Ni={key:0,class:"floating-window"},Ci={class:"window-content"},Ii=b({__name:"ResPubWindow",props:{isVisible:Boolean},setup(o){return(e,t)=>o.isVisible?(i(),p("div",Ni,[c("div",Ci,[f(e.$slots,"default",{},void 0,!0)])])):k("",!0)}}),Mi=$(Ii,[["__scopeId","data-v-8b5829b6"]]),Ai=[{name:"KawaiiStatus",author:"SnowyKami",description:"可爱的状态卡片,仿照koishi的制作",link:"https://cdn.liteyuki.icu/static/lrp/KawaiiStatus.zip"},{name:"MiSans字体包",author:"SnowyKami",description:"小米官方字体MiSans",link:"https://cdn.liteyuki.icu/static/lrp/MiSansFonts.zip"},{name:"MapleMono字体包",author:"SnowyKami",description:"适用于字母的字体包",link:"https://cdn.liteyuki.icu/static/lrp/MapleMonoFonts.zip"},{name:"野兽先辈主题HomoTheme",author:"SnowyKami",description:"野兽先辈主题包,114514!",link:"https://cdn.liteyuki.icu/static/lrp/HomoTheme.zip"},{name:"自定义设备信息",author:"SnowyKami",description:"自定义服务端的设备信息,自行修改使用",link:"https://cdn.liteyuki.icu/static/lrp/custom-device.zip"},{name:"轻雪傲娇系词库",author:"SnowyKami",description:"使用https://github.com/Kyomotoi/AnimeThesaurus的词库",link:"https://cdn.liteyuki.icu/static/lrp/liteyuki_words_aojiao.zip"},{name:"轻雪可爱系词库",author:"SnowyKami",description:"使用https://github.com/Kyomotoi/AnimeThesaurus的词库",link:"https://cdn.liteyuki.icu/static/lrp/liteyuki_words_kawaii.zip"},{name:"轻雪Kakyo语言包",author:"Nanaloveyuki",description:"Liteyuki Bot的语言包,用于提供多种语言的翻译。",link:"https://github.com/Nanaloveyuki/liteyuki-langpack/releases/download/KakyoVer/Kakyo-pack.zip"},{name:"更多背景模板包",author:"snowykami",description:"自定义各种卡片的背景",link:"https://cdn.liteyuki.icu/static/lrp/morebg.zip"},{name:"测试资源包",desc:"test",link:"https://cdn.liteyuki.icu/static/lrp/liteyuki_words_aojiao.zip",homepage:"",author:"snowykami"},{name:"轻雪Kakyo语言包 稳定版",description:"Liteyuki Bot的语言包,用于提供多种语言的翻译。",link:"https://cdn.liteyuki.icu/static/lrp/kakyo.zip",homepage:"https://github.com/Nanaloveyuki/liteyuki-langpack",author:"Nanaloveyuki"},{name:"测试资源包2",description:"test",link:"https://cdn.liteyuki.icu/static/lrp/liteyuki_words_aojiao.zip",homepage:"",author:"snowykami"}],Ei={class:"market"},Bi={class:"search-box-div"},Hi=["placeholder"],Oi={class:"store-tabs",style:{display:"flex"}},Di={class:"items"},xi={for:"name"},Fi=["placeholder"],Ri={class:"pub-options",style:{display:"flex","justify-content":"center"}},ji=b({__name:"ResStore",setup(o){let e=T(()=>s.value?t.value.filter(_=>_.name.toLowerCase().includes(s.value.toLowerCase())||_.description.toLowerCase().includes(s.value.toLowerCase())||_.author.toLowerCase().includes(s.value.toLowerCase())).reverse():t.value.reverse()),t=N([]),s=N("");t.value=Ai;const n=N(!1);let a=N({name:""});function l(){n.value=!0}function r(){n.value=!1}let d="";ke(ve().site.value.lang)==="zh"?d="zh":d="en";function h(){const _=encodeURI(`Resource: ${a.value.name}`),m=`${se}/issues/new?assignees=&labels=Resource&template=resource_publish_${d}.yml&title=${_}`;console.log(m),window.open(m,"_blank")}return(_,m)=>(i(),p("div",Ei,[c("h1",null,C(u(j)("resourceStore")),1),c("div",Bi,[Ve(c("input",{class:"item-search-box",type:"text",placeholder:u(j)("search"),"onUpdate:modelValue":m[0]||(m[0]=g=>Ne(s)?s.value=g:s=g)},null,8,Hi),[[Te,u(s)]])]),c("div",Oi,[c("button",{class:"store-button publish-button",onClick:l},C(u(j)("publishRes")),1)]),c("div",Di,[(i(!0),p(D,null,R(u(e),g=>(i(),P(Ti,{key:g.id,item:g},null,8,["item"]))),128))]),S(Mi,{class:"pub-window","is-visible":n.value},{default:v(()=>[c("h2",null,C(u(j)("publishRes")),1),c("form",{onSubmit:ot(h,["prevent"])},[c("label",xi,C(u(j)("resName")),1),Ve(c("input",{type:"text",id:"name","onUpdate:modelValue":m[1]||(m[1]=g=>u(a).name=g),placeholder:u(j)("resNameText")},null,8,Fi),[[Te,u(a).name]]),c("div",Ri,[c("button",{class:"pub-option close",type:"button",onClick:r},C(u(j)("closeButtonText")),1),c("button",{class:"pub-option submit",type:"submit",onClick:h},C(u(j)("submitButtonText")),1)])],32)]),_:1},8,["is-visible"])]))}}),zi=$(ji,[["__scopeId","data-v-83d58003"]]),Ki={extends:dt,enhanceApp({app:o}){o.component("StatsBar",Ye),o.component("PluginStore",gi),o.component("ResStore",zi)},Layout:Ye};export{Ki as R,oa as c,j as g,H as u}; diff --git a/assets/chunks/theme.DegCgHop.js b/assets/chunks/theme.DegCgHop.js new file mode 100644 index 00000000..f154cd4e --- /dev/null +++ b/assets/chunks/theme.DegCgHop.js @@ -0,0 +1,18 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.CgStO0jX.js","assets/chunks/framework.BUxnStXl.js"])))=>i.map(i=>d[i]); +import{d as b,c as p,r as f,n as D,o as l,a as Z,t as C,b as w,w as v,T as Ae,e as k,_ as $,u as ve,i as wt,f as Pt,g as Ee,h as T,j as c,k as u,l as te,m as Pe,p as N,q as W,s as he,v as q,x as re,y as Be,z as Lt,A as Vt,F as x,B as R,C as ne,D as Xe,E as me,G as S,H as G,I as Qe,J as _e,K as Q,L as ie,M as Tt,N as ge,O as Le,P as Ze,Q as et,R as be,S as Nt,U as Ct,V as It,W as tt,X as nt,Y as Mt,Z as At,$ as Et,a0 as ot,a1 as Bt,a2 as Ht,a3 as Ot,a4 as Ve,a5 as Te,a6 as Ne}from"./framework.BUxnStXl.js";const xt=b({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(l(),p("span",{class:D(["VPBadge",e.type])},[f(e.$slots,"default",{},()=>[Z(C(e.text),1)])],2))}}),Dt={key:0,class:"VPBackdrop"},Ft=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(l(),w(Ae,{name:"fade"},{default:v(()=>[e.show?(l(),p("div",Dt)):k("",!0)]),_:1}))}}),Rt=$(Ft,[["__scopeId","data-v-399e5df4"]]),H=ve;function jt(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 o.startsWith("/")?o:`/${o}`}function He(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(wt(o)||o.startsWith("#")||!n.startsWith("http")||!Pt(e))return o;const{site:a}=H(),i=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,a.value.cleanUrls?"":".html")}${t}${s}`);return Ee(i)}function le({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:a}=H(),i=T(()=>{var d,h;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:((h=e.value.locales[t.value])==null?void 0:h.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:T(()=>Object.entries(e.value.locales).flatMap(([d,h])=>i.value.label===h.label?[]:{text:h.label,link:zt(h.link||(d==="root"?"/":`/${d}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(i.value.link.length-1),!e.value.cleanUrls)+a.value})),currentLang:i}}function zt(o,e,t,s){return e?o.replace(/\/$/,"")+Ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const Ut={class:"NotFound"},Gt={class:"code"},Kt={class:"title"},Wt={class:"quote"},qt={class:"action"},Jt=["href","aria-label"],Yt=b({__name:"NotFound",setup(o){const{theme:e}=H(),{currentLang:t}=le();return(s,n)=>{var a,i,r,d,h;return l(),p("div",Ut,[c("p",Gt,C(((a=u(e).notFound)==null?void 0:a.code)??"404"),1),c("h1",Kt,C(((i=u(e).notFound)==null?void 0:i.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=c("div",{class:"divider"},null,-1)),c("blockquote",Wt,C(((r=u(e).notFound)==null?void 0:r.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),c("div",qt,[c("a",{class:"link",href:u(Ee)(u(t).link),"aria-label":((d=u(e).notFound)==null?void 0:d.linkLabel)??"go to home"},C(((h=u(e).notFound)==null?void 0:h.linkText)??"Take me home"),9,Jt)])])}}}),Xt=$(Yt,[["__scopeId","data-v-12d2d4a1"]]);function st(o,e){if(Array.isArray(o))return de(o);if(o==null)return[];e=Ce(e);const t=Object.keys(o).sort((n,a)=>a.split("/").length-n.split("/").length).find(n=>e.startsWith(Ce(n))),s=t?o[t]:[];return Array.isArray(s)?de(s):de(s.items,s.base)}function Qt(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 Zt(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 Ie(o,e){return Array.isArray(e)?e.some(t=>Ie(o,t)):te(o,e.link)?!0:e.items?Ie(o,e.items):!1}function de(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=de(s.items,n)),s})}function J(){const{frontmatter:o,page:e,theme:t}=H(),s=Pe("(min-width: 960px)"),n=N(!1),a=T(()=>{const A=t.value.sidebar,y=e.value.relativePath;return A?st(A,y):[]}),i=N(a.value);W(a,(A,y)=>{JSON.stringify(A)!==JSON.stringify(y)&&(i.value=a.value)});const r=T(()=>o.value.sidebar!==!1&&i.value.length>0&&o.value.layout!=="home"),d=T(()=>h?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),h=T(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),_=T(()=>r.value&&s.value),m=T(()=>r.value?Qt(i.value):[]);function g(){n.value=!0}function I(){n.value=!1}function V(){n.value?I():g()}return{isOpen:n,sidebar:i,sidebarGroups:m,hasSidebar:r,hasAside:h,leftAside:d,isSidebarEnabled:_,open:g,close:I,toggle:V}}function en(o,e){let t;he(()=>{t=o.value?document.activeElement:void 0}),q(()=>{window.addEventListener("keyup",s)}),re(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function tn(o){const{page:e,hash:t}=H(),s=N(!1),n=T(()=>o.value.collapsed!=null),a=T(()=>!!o.value.link),i=N(!1),r=()=>{i.value=te(e.value.relativePath,o.value.link)};W([e,o,t],r),q(r);const d=T(()=>i.value?!0:o.value.items?Ie(e.value.relativePath,o.value.items):!1),h=T(()=>!!(o.value.items&&o.value.items.length));he(()=>{s.value=!!(n.value&&o.value.collapsed)}),Be(()=>{(i.value||d.value)&&(s.value=!1)});function _(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:a,isActiveLink:i,hasActiveLink:d,hasChildren:h,toggle:_}}function nn(){const{hasSidebar:o}=J(),e=Pe("(min-width: 960px)"),t=Pe("(min-width: 1280px)");return{isAsideEnabled:T(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const on=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,Me=[];function at(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function Oe(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:sn(t),link:"#"+t.id,level:s}});return an(e,o)}function sn(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(on.test(t.className))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function an(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;return un(o,s,n)}function rn(o,e){const{isAsideEnabled:t}=nn(),s=jt(a,100);let n=null;q(()=>{requestAnimationFrame(a),window.addEventListener("scroll",s)}),Lt(()=>{i(location.hash)}),re(()=>{window.removeEventListener("scroll",s)});function a(){if(!t.value)return;const r=window.scrollY,d=window.innerHeight,h=document.body.offsetHeight,_=Math.abs(r+d-h)<1,m=Me.map(({element:I,link:V})=>({link:V,top:ln(I)})).filter(({top:I})=>!Number.isNaN(I)).sort((I,V)=>I.top-V.top);if(!m.length){i(null);return}if(r<1){i(null);return}if(_){i(m[m.length-1].link);return}let g=null;for(const{link:I,top:V}of m){if(V>r+Vt()+4)break;g=I}i(g)}function i(r){n&&n.classList.remove("active"),r==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(r)}"]`);const d=n;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function ln(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}function un(o,e,t){Me.length=0;const s=[],n=[];return o.forEach(a=>{const i={...a,children:[]};let r=n[n.length-1];for(;r&&r.level>=i.level;)n.pop(),r=n[n.length-1];if(i.element.classList.contains("ignore-header")||r&&"shouldIgnore"in r){n.push({level:i.level,shouldIgnore:!0});return}i.level>t||i.level{const n=ne("VPDocOutlineItem",!0);return l(),p("ul",{class:D(["VPDocOutlineItem",t.root?"root":"nested"])},[(l(!0),p(x,null,R(t.headers,({children:a,link:i,title:r})=>(l(),p("li",null,[c("a",{class:"outline-link",href:i,onClick:e,title:r},C(r),9,cn),a!=null&&a.length?(l(),w(n,{key:0,headers:a},null,8,["headers"])):k("",!0)]))),256))],2)}}}),rt=$(dn,[["__scopeId","data-v-551b952d"]]),pn={class:"content"},fn={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},vn=b({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=H(),s=Xe([]);me(()=>{s.value=Oe(e.value.outline??t.value.outline)});const n=N(),a=N();return rn(n,a),(i,r)=>(l(),p("nav",{"aria-labelledby":"doc-outline-aria-label",class:D(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[c("div",pn,[c("div",{class:"outline-marker",ref_key:"marker",ref:a},null,512),c("div",fn,C(u(at)(u(t))),1),S(rt,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),hn=$(vn,[["__scopeId","data-v-8f7170a7"]]),mn={class:"VPDocAsideCarbonAds"},_n=b({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(l(),p("div",mn,[S(u(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),gn={class:"VPDocAside"},bn=b({__name:"VPDocAside",setup(o){const{theme:e}=H();return(t,s)=>(l(),p("div",gn,[f(t.$slots,"aside-top",{},void 0,!0),f(t.$slots,"aside-outline-before",{},void 0,!0),S(hn),f(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=c("div",{class:"spacer"},null,-1)),f(t.$slots,"aside-ads-before",{},void 0,!0),u(e).carbonAds?(l(),w(_n,{key:0,"carbon-ads":u(e).carbonAds},null,8,["carbon-ads"])):k("",!0),f(t.$slots,"aside-ads-after",{},void 0,!0),f(t.$slots,"aside-bottom",{},void 0,!0)]))}}),kn=$(bn,[["__scopeId","data-v-54834fbb"]]);function yn(){const{theme:o,page:e}=H();return T(()=>{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 $n(){const{page:o,theme:e,frontmatter:t}=H();return T(()=>{var h,_,m,g,I,V,A,y;const s=st(e.value.sidebar,o.value.relativePath),n=Zt(s),a=Sn(n,F=>F.link.replace(/[?#].*$/,"")),i=a.findIndex(F=>te(o.value.relativePath,F.link)),r=((h=e.value.docFooter)==null?void 0:h.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((_=e.value.docFooter)==null?void 0:_.next)===!1&&!t.value.next||t.value.next===!1;return{prev:r?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((m=a[i-1])==null?void 0:m.docFooterText)??((g=a[i-1])==null?void 0:g.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((I=a[i-1])==null?void 0:I.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((V=a[i+1])==null?void 0:V.docFooterText)??((A=a[i+1])==null?void 0:A.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((y=a[i+1])==null?void 0:y.link)}}})}function Sn(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const K=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=T(()=>e.tag??(e.href?"a":"span")),s=T(()=>e.href&&Qe.test(e.href)||e.target==="_blank");return(n,a)=>(l(),w(G(t.value),{class:D(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?u(He)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:v(()=>[f(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),wn={class:"VPLastUpdated"},Pn=["datetime"],Ln=b({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=H(),n=T(()=>new Date(t.value.lastUpdated)),a=T(()=>n.value.toISOString()),i=N("");return q(()=>{he(()=>{var r,d,h;i.value=new Intl.DateTimeFormat((d=(r=e.value.lastUpdated)==null?void 0:r.formatOptions)!=null&&d.forceLocale?s.value:void 0,((h=e.value.lastUpdated)==null?void 0:h.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(r,d)=>{var h;return l(),p("p",wn,[Z(C(((h=u(e).lastUpdated)==null?void 0:h.text)||u(e).lastUpdatedText||"Last updated")+": ",1),c("time",{datetime:a.value},C(i.value),9,Pn)])}}}),Vn=$(Ln,[["__scopeId","data-v-ff85f3e5"]]),Tn={key:0,class:"VPDocFooter"},Nn={key:0,class:"edit-info"},Cn={key:0,class:"edit-link"},In={key:1,class:"last-updated"},Mn={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},An={class:"pager"},En=["innerHTML"],Bn=["innerHTML"],Hn={class:"pager"},On=["innerHTML"],xn=["innerHTML"],Dn=b({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=H(),n=yn(),a=$n(),i=T(()=>e.value.editLink&&s.value.editLink!==!1),r=T(()=>t.value.lastUpdated),d=T(()=>i.value||r.value||a.value.prev||a.value.next);return(h,_)=>{var m,g,I,V;return d.value?(l(),p("footer",Tn,[f(h.$slots,"doc-footer-before",{},void 0,!0),i.value||r.value?(l(),p("div",Nn,[i.value?(l(),p("div",Cn,[S(K,{class:"edit-link-button",href:u(n).url,"no-icon":!0},{default:v(()=>[_[0]||(_[0]=c("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Z(" "+C(u(n).text),1)]),_:1},8,["href"])])):k("",!0),r.value?(l(),p("div",In,[S(Vn)])):k("",!0)])):k("",!0),(m=u(a).prev)!=null&&m.link||(g=u(a).next)!=null&&g.link?(l(),p("nav",Mn,[_[1]||(_[1]=c("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),c("div",An,[(I=u(a).prev)!=null&&I.link?(l(),w(K,{key:0,class:"pager-link prev",href:u(a).prev.link},{default:v(()=>{var A;return[c("span",{class:"desc",innerHTML:((A=u(e).docFooter)==null?void 0:A.prev)||"Previous page"},null,8,En),c("span",{class:"title",innerHTML:u(a).prev.text},null,8,Bn)]}),_:1},8,["href"])):k("",!0)]),c("div",Hn,[(V=u(a).next)!=null&&V.link?(l(),w(K,{key:0,class:"pager-link next",href:u(a).next.link},{default:v(()=>{var A;return[c("span",{class:"desc",innerHTML:((A=u(e).docFooter)==null?void 0:A.next)||"Next page"},null,8,On),c("span",{class:"title",innerHTML:u(a).next.text},null,8,xn)]}),_:1},8,["href"])):k("",!0)])])):k("",!0)])):k("",!0)}}}),Fn=$(Dn,[["__scopeId","data-v-fe2bf717"]]),Rn={class:"container"},jn={class:"aside-container"},zn={class:"aside-content"},Un={class:"content"},Gn={class:"content-container"},Kn={class:"main"},Wn=b({__name:"VPDoc",setup(o){const{theme:e}=H(),t=_e(),{hasSidebar:s,hasAside:n,leftAside:a}=J(),i=T(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(r,d)=>{const h=ne("Content");return l(),p("div",{class:D(["VPDoc",{"has-sidebar":u(s),"has-aside":u(n)}])},[f(r.$slots,"doc-top",{},void 0,!0),c("div",Rn,[u(n)?(l(),p("div",{key:0,class:D(["aside",{"left-aside":u(a)}])},[d[0]||(d[0]=c("div",{class:"aside-curtain"},null,-1)),c("div",jn,[c("div",zn,[S(kn,null,{"aside-top":v(()=>[f(r.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[f(r.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[f(r.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[f(r.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[f(r.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[f(r.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):k("",!0),c("div",Un,[c("div",Gn,[f(r.$slots,"doc-before",{},void 0,!0),c("main",Kn,[S(h,{class:D(["vp-doc",[i.value,u(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),S(Fn,null,{"doc-footer-before":v(()=>[f(r.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),f(r.$slots,"doc-after",{},void 0,!0)])])]),f(r.$slots,"doc-bottom",{},void 0,!0)],2)}}}),qn=$(Wn,[["__scopeId","data-v-23427141"]]),Jn=b({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=T(()=>e.href&&Qe.test(e.href)),s=T(()=>e.tag||(e.href?"a":"button"));return(n,a)=>(l(),w(G(s.value),{class:D(["VPButton",[n.size,n.theme]]),href:n.href?u(He)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[Z(C(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),Yn=$(Jn,[["__scopeId","data-v-47e38cd6"]]),Xn=["src","alt"],Qn=b({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=ne("VPImage",!0);return e.image?(l(),p(x,{key:0},[typeof e.image=="string"||"src"in e.image?(l(),p("img",Q({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:u(Ee)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Xn)):(l(),p(x,{key:1},[S(s,Q({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),S(s,Q({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):k("",!0)}}}),pe=$(Qn,[["__scopeId","data-v-d44fd26d"]]),Zn={class:"container"},eo={class:"main"},to={class:"heading"},no=["innerHTML"],oo=["innerHTML"],so=["innerHTML"],ao={key:0,class:"actions"},ro={key:0,class:"image"},io={class:"image-container"},lo=b({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=ie("hero-image-slot-exists");return(t,s)=>(l(),p("div",{class:D(["VPHero",{"has-image":t.image||u(e)}])},[c("div",Zn,[c("div",eo,[f(t.$slots,"home-hero-info-before",{},void 0,!0),f(t.$slots,"home-hero-info",{},()=>[c("h1",to,[t.name?(l(),p("span",{key:0,innerHTML:t.name,class:"name clip"},null,8,no)):k("",!0),t.text?(l(),p("span",{key:1,innerHTML:t.text,class:"text"},null,8,oo)):k("",!0)]),t.tagline?(l(),p("p",{key:0,innerHTML:t.tagline,class:"tagline"},null,8,so)):k("",!0)],!0),f(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(l(),p("div",ao,[(l(!0),p(x,null,R(t.actions,n=>(l(),p("div",{key:n.link,class:"action"},[S(Yn,{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))])):k("",!0),f(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||u(e)?(l(),p("div",ro,[c("div",io,[s[0]||(s[0]=c("div",{class:"image-bg"},null,-1)),f(t.$slots,"home-hero-image",{},()=>[t.image?(l(),w(pe,{key:0,class:"image-src",image:t.image},null,8,["image"])):k("",!0)],!0)])])):k("",!0)])],2))}}),uo=$(lo,[["__scopeId","data-v-b681ebc2"]]),co=b({__name:"VPHomeHero",setup(o){const{frontmatter:e}=H();return(t,s)=>u(e).hero?(l(),w(uo,{key:0,class:"VPHomeHero",name:u(e).hero.name,text:u(e).hero.text,tagline:u(e).hero.tagline,image:u(e).hero.image,actions:u(e).hero.actions},{"home-hero-info-before":v(()=>[f(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[f(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[f(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[f(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[f(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):k("",!0)}}),po={class:"box"},fo={key:0,class:"icon"},vo=["innerHTML"],ho=["innerHTML"],mo=["innerHTML"],_o={key:4,class:"link-text"},go={class:"link-text-value"},bo=b({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(l(),w(K,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[c("article",po,[typeof e.icon=="object"&&e.icon.wrap?(l(),p("div",fo,[S(pe,{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"?(l(),w(pe,{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?(l(),p("div",{key:2,class:"icon",innerHTML:e.icon},null,8,vo)):k("",!0),c("h2",{class:"title",innerHTML:e.title},null,8,ho),e.details?(l(),p("p",{key:3,class:"details",innerHTML:e.details},null,8,mo)):k("",!0),e.linkText?(l(),p("div",_o,[c("p",go,[Z(C(e.linkText)+" ",1),t[0]||(t[0]=c("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):k("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),ko=$(bo,[["__scopeId","data-v-d2a6ac03"]]),yo={key:0,class:"VPFeatures"},$o={class:"container"},So={class:"items"},wo=b({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=T(()=>{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?(l(),p("div",yo,[c("div",$o,[c("div",So,[(l(!0),p(x,null,R(s.features,a=>(l(),p("div",{key:a.title,class:D(["item",[t.value]])},[S(ko,{icon:a.icon,title:a.title,details:a.details,link:a.link,"link-text":a.linkText,rel:a.rel,target:a.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):k("",!0)}}),Po=$(wo,[["__scopeId","data-v-37b1728d"]]),Lo=b({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=H();return(t,s)=>u(e).features?(l(),w(Po,{key:0,class:"VPHomeFeatures",features:u(e).features},null,8,["features"])):k("",!0)}}),Vo=b({__name:"VPHomeContent",setup(o){const{width:e}=Tt({initialWidth:0,includeScrollbar:!1});return(t,s)=>(l(),p("div",{class:"vp-doc container",style:ge(u(e)?{"--vp-offset":`calc(50% - ${u(e)/2}px)`}:{})},[f(t.$slots,"default",{},void 0,!0)],4))}}),To=$(Vo,[["__scopeId","data-v-f51b4ca4"]]),No=b({__name:"VPHome",setup(o){const{frontmatter:e,theme:t}=H();return(s,n)=>{const a=ne("Content");return l(),p("div",{class:D(["VPHome",{"external-link-icon-enabled":u(t).externalLinkIcon}])},[f(s.$slots,"home-hero-before",{},void 0,!0),S(co,null,{"home-hero-info-before":v(()=>[f(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[f(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[f(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[f(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[f(s.$slots,"home-hero-image",{},void 0,!0)]),_:3}),f(s.$slots,"home-hero-after",{},void 0,!0),f(s.$slots,"home-features-before",{},void 0,!0),S(Lo),f(s.$slots,"home-features-after",{},void 0,!0),u(e).markdownStyles!==!1?(l(),w(To,{key:0},{default:v(()=>[S(a)]),_:1})):(l(),w(a,{key:1}))],2)}}}),Co=$(No,[["__scopeId","data-v-208c9741"]]),Io={},Mo={class:"VPPage"};function Ao(o,e){const t=ne("Content");return l(),p("div",Mo,[f(o.$slots,"page-top"),S(t),f(o.$slots,"page-bottom")])}const Eo=$(Io,[["render",Ao]]),Bo=b({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=H(),{hasSidebar:s}=J();return(n,a)=>(l(),p("div",{class:D(["VPContent",{"has-sidebar":u(s),"is-home":u(t).layout==="home"}]),id:"VPContent"},[u(e).isNotFound?f(n.$slots,"not-found",{key:0},()=>[S(Xt)],!0):u(t).layout==="page"?(l(),w(Eo,{key:1},{"page-top":v(()=>[f(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[f(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):u(t).layout==="home"?(l(),w(Co,{key:2},{"home-hero-before":v(()=>[f(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[f(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[f(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[f(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[f(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[f(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[f(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[f(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[f(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):u(t).layout&&u(t).layout!=="doc"?(l(),w(G(u(t).layout),{key:3})):(l(),w(qn,{key:4},{"doc-top":v(()=>[f(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[f(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[f(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[f(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[f(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[f(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[f(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[f(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[f(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[f(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[f(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Ho=$(Bo,[["__scopeId","data-v-0f6d1bb7"]]),Oo={class:"container"},xo=["innerHTML"],Do=["innerHTML"],Fo=b({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=H(),{hasSidebar:s}=J();return(n,a)=>u(e).footer&&u(t).footer!==!1?(l(),p("footer",{key:0,class:D(["VPFooter",{"has-sidebar":u(s)}])},[c("div",Oo,[u(e).footer.message?(l(),p("p",{key:0,class:"message",innerHTML:u(e).footer.message},null,8,xo)):k("",!0),u(e).footer.copyright?(l(),p("p",{key:1,class:"copyright",innerHTML:u(e).footer.copyright},null,8,Do)):k("",!0)])],2)):k("",!0)}}),Ro=$(Fo,[["__scopeId","data-v-f550fe9d"]]);function jo(){const{theme:o,frontmatter:e}=H(),t=Xe([]),s=T(()=>t.value.length>0);return me(()=>{t.value=Oe(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const zo={class:"menu-text"},Uo={class:"header"},Go={class:"outline"},Ko=b({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=H(),s=N(!1),n=N(0),a=N(),i=N();function r(m){var g;(g=a.value)!=null&&g.contains(m.target)||(s.value=!1)}W(s,m=>{if(m){document.addEventListener("click",r);return}document.removeEventListener("click",r)}),Le("Escape",()=>{s.value=!1}),me(()=>{s.value=!1});function d(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function h(m){m.target.classList.contains("outline-link")&&(i.value&&(i.value.style.transition="none"),Ze(()=>{s.value=!1}))}function _(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(m,g)=>(l(),p("div",{class:"VPLocalNavOutlineDropdown",style:ge({"--vp-vh":n.value+"px"}),ref_key:"main",ref:a},[m.headers.length>0?(l(),p("button",{key:0,onClick:d,class:D({open:s.value})},[c("span",zo,C(u(at)(u(t))),1),g[0]||(g[0]=c("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(l(),p("button",{key:1,onClick:_},C(u(t).returnToTopLabel||"Return to top"),1)),S(Ae,{name:"flyout"},{default:v(()=>[s.value?(l(),p("div",{key:0,ref_key:"items",ref:i,class:"items",onClick:h},[c("div",Uo,[c("a",{class:"top-link",href:"#",onClick:_},C(u(t).returnToTopLabel||"Return to top"),1)]),c("div",Go,[S(rt,{headers:m.headers},null,8,["headers"])])],512)):k("",!0)]),_:1})],4))}}),Wo=$(Ko,[["__scopeId","data-v-140f21e1"]]),qo={class:"container"},Jo=["aria-expanded"],Yo={class:"menu-text"},Xo=b({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=H(),{hasSidebar:s}=J(),{headers:n}=jo(),{y:a}=et(),i=N(0);q(()=>{i.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),me(()=>{n.value=Oe(t.value.outline??e.value.outline)});const r=T(()=>n.value.length===0),d=T(()=>r.value&&!s.value),h=T(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:r.value,fixed:d.value}));return(_,m)=>u(t).layout!=="home"&&(!d.value||u(a)>=i.value)?(l(),p("div",{key:0,class:D(h.value)},[c("div",qo,[u(s)?(l(),p("button",{key:0,class:"menu","aria-expanded":_.open,"aria-controls":"VPSidebarNav",onClick:m[0]||(m[0]=g=>_.$emit("open-menu"))},[m[1]||(m[1]=c("span",{class:"vpi-align-left menu-icon"},null,-1)),c("span",Yo,C(u(e).sidebarMenuLabel||"Menu"),1)],8,Jo)):k("",!0),S(Wo,{headers:u(n),navHeight:i.value},null,8,["headers","navHeight"])])],2)):k("",!0)}}),Qo=$(Xo,[["__scopeId","data-v-24c995ed"]]);function Zo(){const o=N(!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 a=_e();return W(()=>a.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const es={},ts={class:"VPSwitch",type:"button",role:"switch"},ns={class:"check"},os={key:0,class:"icon"};function ss(o,e){return l(),p("button",ts,[c("span",ns,[o.$slots.default?(l(),p("span",os,[f(o.$slots,"default",{},void 0,!0)])):k("",!0)])])}const as=$(es,[["render",ss],["__scopeId","data-v-f51eebef"]]),rs=b({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=H(),s=ie("toggle-appearance",()=>{e.value=!e.value}),n=N("");return Be(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(a,i)=>(l(),w(as,{title:n.value,class:"VPSwitchAppearance","aria-checked":u(e),onClick:u(s)},{default:v(()=>i[0]||(i[0]=[c("span",{class:"vpi-sun sun"},null,-1),c("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),xe=$(rs,[["__scopeId","data-v-18423111"]]),is={key:0,class:"VPNavBarAppearance"},ls=b({__name:"VPNavBarAppearance",setup(o){const{site:e}=H();return(t,s)=>u(e).appearance&&u(e).appearance!=="force-dark"&&u(e).appearance!=="force-auto"?(l(),p("div",is,[S(xe)])):k("",!0)}}),us=$(ls,[["__scopeId","data-v-21836fc6"]]),De=N();let it=!1,we=0;function cs(o){const e=N(!1);if(be){!it&&ds(),we++;const t=W(De,s=>{var n,a,i;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(a=o.onFocus)==null||a.call(o)):(e.value=!1,(i=o.onBlur)==null||i.call(o))});re(()=>{t(),we--,we||ps()})}return Nt(e)}function ds(){document.addEventListener("focusin",lt),it=!0,De.value=document.activeElement}function ps(){document.removeEventListener("focusin",lt)}function lt(){De.value=document.activeElement}const fs={class:"VPMenuLink"},vs=["innerHTML"],hs=b({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=H();return(t,s)=>(l(),p("div",fs,[S(K,{class:D({active:u(te)(u(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,vs)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ke=$(hs,[["__scopeId","data-v-e7e2f3e3"]]),ms={class:"VPMenuGroup"},_s={key:0,class:"title"},gs=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(l(),p("div",ms,[e.text?(l(),p("p",_s,C(e.text),1)):k("",!0),(l(!0),p(x,null,R(e.items,s=>(l(),p(x,null,["link"in s?(l(),w(ke,{key:0,item:s},null,8,["item"])):k("",!0)],64))),256))]))}}),bs=$(gs,[["__scopeId","data-v-44da396a"]]),ks={class:"VPMenu"},ys={key:0,class:"items"},$s=b({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(l(),p("div",ks,[e.items?(l(),p("div",ys,[(l(!0),p(x,null,R(e.items,s=>(l(),p(x,{key:JSON.stringify(s)},["link"in s?(l(),w(ke,{key:0,item:s},null,8,["item"])):"component"in s?(l(),w(G(s.component),Q({key:1,ref_for:!0},s.props),null,16)):(l(),w(bs,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):k("",!0),f(e.$slots,"default",{},void 0,!0)]))}}),Ss=$($s,[["__scopeId","data-v-71dd6e79"]]),ws=["aria-expanded","aria-label"],Ps={key:0,class:"text"},Ls=["innerHTML"],Vs={key:1,class:"vpi-more-horizontal icon"},Ts={class:"menu"},Ns=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=N(!1),t=N();cs({el:t,onBlur:s});function s(){e.value=!1}return(n,a)=>(l(),p("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:a[1]||(a[1]=i=>e.value=!0),onMouseleave:a[2]||(a[2]=i=>e.value=!1)},[c("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:a[0]||(a[0]=i=>e.value=!e.value)},[n.button||n.icon?(l(),p("span",Ps,[n.icon?(l(),p("span",{key:0,class:D([n.icon,"option-icon"])},null,2)):k("",!0),n.button?(l(),p("span",{key:1,innerHTML:n.button},null,8,Ls)):k("",!0),a[3]||(a[3]=c("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(l(),p("span",Vs))],8,ws),c("div",Ts,[S(Ss,{items:n.items},{default:v(()=>[f(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),Fe=$(Ns,[["__scopeId","data-v-18f12893"]]),Cs=["href","aria-label","innerHTML"],Is=b({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=N();q(async()=>{var a;await Ze();const n=(a=t.value)==null?void 0:a.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const s=T(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,a)=>(l(),p("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,Cs))}}),Ms=$(Is,[["__scopeId","data-v-93f0a517"]]),As={class:"VPSocialLinks"},Es=b({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(l(),p("div",As,[(l(!0),p(x,null,R(e.links,({link:s,icon:n,ariaLabel:a})=>(l(),w(Ms,{key:s,icon:n,link:s,ariaLabel:a},null,8,["icon","link","ariaLabel"]))),128))]))}}),Re=$(Es,[["__scopeId","data-v-5da922f8"]]),Bs={key:0,class:"group translations"},Hs={class:"trans-title"},Os={key:1,class:"group"},xs={class:"item appearance"},Ds={class:"label"},Fs={class:"appearance-action"},Rs={key:2,class:"group"},js={class:"item social-links"},zs=b({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=H(),{localeLinks:s,currentLang:n}=le({correspondingLink:!0}),a=T(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(i,r)=>a.value?(l(),w(Fe,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[u(s).length&&u(n).label?(l(),p("div",Bs,[c("p",Hs,C(u(n).label),1),(l(!0),p(x,null,R(u(s),d=>(l(),w(ke,{key:d.link,item:d},null,8,["item"]))),128))])):k("",!0),u(e).appearance&&u(e).appearance!=="force-dark"&&u(e).appearance!=="force-auto"?(l(),p("div",Os,[c("div",xs,[c("p",Ds,C(u(t).darkModeSwitchLabel||"Appearance"),1),c("div",Fs,[S(xe)])])])):k("",!0),u(t).socialLinks?(l(),p("div",Rs,[c("div",js,[S(Re,{class:"social-links-list",links:u(t).socialLinks},null,8,["links"])])])):k("",!0)]),_:1})):k("",!0)}}),Us=$(zs,[["__scopeId","data-v-5aa83d67"]]),Gs=["aria-expanded"],Ks=b({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(l(),p("button",{type:"button",class:D(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[c("span",{class:"container"},[c("span",{class:"top"}),c("span",{class:"middle"}),c("span",{class:"bottom"})],-1)]),10,Gs))}}),Ws=$(Ks,[["__scopeId","data-v-9defe3ba"]]),qs=["innerHTML"],Js=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=H();return(t,s)=>(l(),w(K,{class:D({VPNavBarMenuLink:!0,active:u(te)(u(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,qs)]),_:1},8,["class","href","target","rel","no-icon"]))}}),Ys=$(Js,[["__scopeId","data-v-0bd8ee6c"]]),Xs=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=H(),s=a=>"component"in a?!1:"link"in a?te(t.value.relativePath,a.link,!!e.item.activeMatch):a.items.some(s),n=T(()=>s(e.item));return(a,i)=>(l(),w(Fe,{class:D({VPNavBarMenuGroup:!0,active:u(te)(u(t).relativePath,a.item.activeMatch,!!a.item.activeMatch)||n.value}),button:a.item.text,items:a.item.items},null,8,["class","button","items"]))}}),Qs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Zs=b({__name:"VPNavBarMenu",setup(o){const{theme:e}=H();return(t,s)=>u(e).nav?(l(),p("nav",Qs,[s[0]||(s[0]=c("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(l(!0),p(x,null,R(u(e).nav,n=>(l(),p(x,{key:JSON.stringify(n)},["link"in n?(l(),w(Ys,{key:0,item:n},null,8,["item"])):"component"in n?(l(),w(G(n.component),Q({key:1,ref_for:!0},n.props),null,16)):(l(),w(Xs,{key:2,item:n},null,8,["item"]))],64))),128))])):k("",!0)}}),ea=$(Zs,[["__scopeId","data-v-706ed117"]]);function ta(o){const{localeIndex:e,theme:t}=H();function s(n){var V,A,y;const a=n.split("."),i=(V=t.value.search)==null?void 0:V.options,r=i&&typeof i=="object",d=r&&((y=(A=i.locales)==null?void 0:A[e.value])==null?void 0:y.translations)||null,h=r&&i.translations||null;let _=d,m=h,g=o;const I=a.pop();for(const F of a){let z=null;const Y=g==null?void 0:g[F];Y&&(z=g=Y);const ee=m==null?void 0:m[F];ee&&(z=m=ee);const X=_==null?void 0:_[F];X&&(z=_=X),Y||(g=z),ee||(m=z),X||(_=z)}return(_==null?void 0:_[I])??(m==null?void 0:m[I])??(g==null?void 0:g[I])??""}return s}const na=["aria-label"],oa={class:"DocSearch-Button-Container"},sa={class:"DocSearch-Button-Placeholder"},Ge=b({__name:"VPNavBarSearchButton",setup(o){const t=ta({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(l(),p("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":u(t)("button.buttonAriaLabel")},[c("span",oa,[n[0]||(n[0]=c("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),c("span",sa,C(u(t)("button.buttonText")),1)]),n[1]||(n[1]=c("span",{class:"DocSearch-Button-Keys"},[c("kbd",{class:"DocSearch-Button-Key"}),c("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,na))}}),aa={class:"VPNavBarSearch"},ra={id:"local-search"},ia={key:1,id:"docsearch"},la=b({__name:"VPNavBarSearch",setup(o){const e=Ct(()=>It(()=>import("./VPLocalSearchBox.CgStO0jX.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=H(),n=N(!1),a=N(!1);q(()=>{});function i(){n.value||(n.value=!0,setTimeout(r,16))}function r(){const m=new Event("keydown");m.key="k",m.metaKey=!0,window.dispatchEvent(m),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||r()},16)}function d(m){const g=m.target,I=g.tagName;return g.isContentEditable||I==="INPUT"||I==="SELECT"||I==="TEXTAREA"}const h=N(!1);Le("k",m=>{(m.ctrlKey||m.metaKey)&&(m.preventDefault(),h.value=!0)}),Le("/",m=>{d(m)||(m.preventDefault(),h.value=!0)});const _="local";return(m,g)=>{var I;return l(),p("div",aa,[u(_)==="local"?(l(),p(x,{key:0},[h.value?(l(),w(u(e),{key:0,onClose:g[0]||(g[0]=V=>h.value=!1)})):k("",!0),c("div",ra,[S(Ge,{onClick:g[1]||(g[1]=V=>h.value=!0)})])],64)):u(_)==="algolia"?(l(),p(x,{key:1},[n.value?(l(),w(u(t),{key:0,algolia:((I=u(s).search)==null?void 0:I.options)??u(s).algolia,onVnodeBeforeMount:g[2]||(g[2]=V=>a.value=!0)},null,8,["algolia"])):k("",!0),a.value?k("",!0):(l(),p("div",ia,[S(Ge,{onClick:i})]))],64)):k("",!0)])}}}),ua=b({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=H();return(t,s)=>u(e).socialLinks?(l(),w(Re,{key:0,class:"VPNavBarSocialLinks",links:u(e).socialLinks},null,8,["links"])):k("",!0)}}),ca=$(ua,[["__scopeId","data-v-a71bb10c"]]),da=["href","rel","target"],pa=["innerHTML"],fa={key:2},va=b({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=H(),{hasSidebar:s}=J(),{currentLang:n}=le(),a=T(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),i=T(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),r=T(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,h)=>(l(),p("div",{class:D(["VPNavBarTitle",{"has-sidebar":u(s)}])},[c("a",{class:"title",href:a.value??u(He)(u(n).link),rel:i.value,target:r.value},[f(d.$slots,"nav-bar-title-before",{},void 0,!0),u(t).logo?(l(),w(pe,{key:0,class:"logo",image:u(t).logo},null,8,["image"])):k("",!0),u(t).siteTitle?(l(),p("span",{key:1,innerHTML:u(t).siteTitle},null,8,pa)):u(t).siteTitle===void 0?(l(),p("span",fa,C(u(e).title),1)):k("",!0),f(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,da)],2))}}),ha=$(va,[["__scopeId","data-v-44783481"]]),ma={class:"items"},_a={class:"title"},ga=b({__name:"VPNavBarTranslations",setup(o){const{theme:e}=H(),{localeLinks:t,currentLang:s}=le({correspondingLink:!0});return(n,a)=>u(t).length&&u(s).label?(l(),w(Fe,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:u(e).langMenuLabel||"Change language"},{default:v(()=>[c("div",ma,[c("p",_a,C(u(s).label),1),(l(!0),p(x,null,R(u(t),i=>(l(),w(ke,{key:i.link,item:i},null,8,["item"]))),128))])]),_:1},8,["label"])):k("",!0)}}),ba=$(ga,[["__scopeId","data-v-5b37c79d"]]),ka={class:"wrapper"},ya={class:"container"},$a={class:"title"},Sa={class:"content"},wa={class:"content-body"},Pa=b({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=et(),{hasSidebar:s}=J(),{frontmatter:n}=H(),a=N({});return Be(()=>{a.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(i,r)=>(l(),p("div",{class:D(["VPNavBar",a.value])},[c("div",ka,[c("div",ya,[c("div",$a,[S(ha,null,{"nav-bar-title-before":v(()=>[f(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[f(i.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),c("div",Sa,[c("div",wa,[f(i.$slots,"nav-bar-content-before",{},void 0,!0),S(la,{class:"search"}),S(ea,{class:"menu"}),S(ba,{class:"translations"}),S(us,{class:"appearance"}),S(ca,{class:"social-links"}),S(Us,{class:"extra"}),f(i.$slots,"nav-bar-content-after",{},void 0,!0),S(Ws,{class:"hamburger",active:i.isScreenOpen,onClick:r[0]||(r[0]=d=>i.$emit("toggle-screen"))},null,8,["active"])])])])]),r[1]||(r[1]=c("div",{class:"divider"},[c("div",{class:"divider-line"})],-1))],2))}}),La=$(Pa,[["__scopeId","data-v-344c8545"]]),Va={key:0,class:"VPNavScreenAppearance"},Ta={class:"text"},Na=b({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=H();return(s,n)=>u(e).appearance&&u(e).appearance!=="force-dark"&&u(e).appearance!=="force-auto"?(l(),p("div",Va,[c("p",Ta,C(u(t).darkModeSwitchLabel||"Appearance"),1),S(xe)])):k("",!0)}}),Ca=$(Na,[["__scopeId","data-v-0d1832dc"]]),Ia=["innerHTML"],Ma=b({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=ie("close-screen");return(t,s)=>(l(),w(K,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:u(e)},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,Ia)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Aa=$(Ma,[["__scopeId","data-v-86103079"]]),Ea=["innerHTML"],Ba=b({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=ie("close-screen");return(t,s)=>(l(),w(K,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:u(e)},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,Ea)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),ut=$(Ba,[["__scopeId","data-v-6878bca6"]]),Ha={class:"VPNavScreenMenuGroupSection"},Oa={key:0,class:"title"},xa=b({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(l(),p("div",Ha,[e.text?(l(),p("p",Oa,C(e.text),1)):k("",!0),(l(!0),p(x,null,R(e.items,s=>(l(),w(ut,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Da=$(xa,[["__scopeId","data-v-58635d43"]]),Fa=["aria-controls","aria-expanded"],Ra=["innerHTML"],ja=["id"],za={key:0,class:"item"},Ua={key:1,class:"item"},Ga={key:2,class:"group"},Ka=b({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=N(!1),s=T(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(a,i)=>(l(),p("div",{class:D(["VPNavScreenMenuGroup",{open:t.value}])},[c("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[c("span",{class:"button-text",innerHTML:a.text},null,8,Ra),i[0]||(i[0]=c("span",{class:"vpi-plus button-icon"},null,-1))],8,Fa),c("div",{id:s.value,class:"items"},[(l(!0),p(x,null,R(a.items,r=>(l(),p(x,{key:JSON.stringify(r)},["link"in r?(l(),p("div",za,[S(ut,{item:r},null,8,["item"])])):"component"in r?(l(),p("div",Ua,[(l(),w(G(r.component),Q({ref_for:!0},r.props,{"screen-menu":""}),null,16))])):(l(),p("div",Ga,[S(Da,{text:r.text,items:r.items},null,8,["text","items"])]))],64))),128))],8,ja)],2))}}),Wa=$(Ka,[["__scopeId","data-v-2a0a7ded"]]),qa={key:0,class:"VPNavScreenMenu"},Ja=b({__name:"VPNavScreenMenu",setup(o){const{theme:e}=H();return(t,s)=>u(e).nav?(l(),p("nav",qa,[(l(!0),p(x,null,R(u(e).nav,n=>(l(),p(x,{key:JSON.stringify(n)},["link"in n?(l(),w(Aa,{key:0,item:n},null,8,["item"])):"component"in n?(l(),w(G(n.component),Q({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(l(),w(Wa,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):k("",!0)}}),Ya=b({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=H();return(t,s)=>u(e).socialLinks?(l(),w(Re,{key:0,class:"VPNavScreenSocialLinks",links:u(e).socialLinks},null,8,["links"])):k("",!0)}}),Xa={class:"list"},Qa=b({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=le({correspondingLink:!0}),s=N(!1);function n(){s.value=!s.value}return(a,i)=>u(e).length&&u(t).label?(l(),p("div",{key:0,class:D(["VPNavScreenTranslations",{open:s.value}])},[c("button",{class:"title",onClick:n},[i[0]||(i[0]=c("span",{class:"vpi-languages icon lang"},null,-1)),Z(" "+C(u(t).label)+" ",1),i[1]||(i[1]=c("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),c("ul",Xa,[(l(!0),p(x,null,R(u(e),r=>(l(),p("li",{key:r.link,class:"item"},[S(K,{class:"link",href:r.link},{default:v(()=>[Z(C(r.text),1)]),_:2},1032,["href"])]))),128))])],2)):k("",!0)}}),Za=$(Qa,[["__scopeId","data-v-676cdaa7"]]),er={class:"container"},tr=b({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=N(null),t=tt(be?document.body:null);return(s,n)=>(l(),w(Ae,{name:"fade",onEnter:n[0]||(n[0]=a=>t.value=!0),onAfterLeave:n[1]||(n[1]=a=>t.value=!1)},{default:v(()=>[s.open?(l(),p("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[c("div",er,[f(s.$slots,"nav-screen-content-before",{},void 0,!0),S(Ja,{class:"menu"}),S(Za,{class:"translations"}),S(Ca,{class:"appearance"}),S(Ya,{class:"social-links"}),f(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):k("",!0)]),_:3}))}}),nr=$(tr,[["__scopeId","data-v-59e5f43f"]]),or={key:0,class:"VPNav"},sr=b({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=Zo(),{frontmatter:n}=H(),a=T(()=>n.value.navbar!==!1);return nt("close-screen",t),he(()=>{be&&document.documentElement.classList.toggle("hide-nav",!a.value)}),(i,r)=>a.value?(l(),p("header",or,[S(La,{"is-screen-open":u(e),onToggleScreen:u(s)},{"nav-bar-title-before":v(()=>[f(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[f(i.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[f(i.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[f(i.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),S(nr,{open:u(e)},{"nav-screen-content-before":v(()=>[f(i.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[f(i.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):k("",!0)}}),ar=$(sr,[["__scopeId","data-v-22178e0d"]]),rr=["role","tabindex"],ir={key:1,class:"items"},lr=b({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:a,hasActiveLink:i,hasChildren:r,toggle:d}=tn(T(()=>e.item)),h=T(()=>r.value?"section":"div"),_=T(()=>n.value?"a":"div"),m=T(()=>r.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),g=T(()=>n.value?void 0:"button"),I=T(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":a.value},{"has-active":i.value}]);function V(y){"key"in y&&y.key!=="Enter"||!e.item.link&&d()}function A(){e.item.link&&d()}return(y,F)=>{const z=ne("VPSidebarItem",!0);return l(),w(G(h.value),{class:D(["VPSidebarItem",I.value])},{default:v(()=>[y.item.text?(l(),p("div",Q({key:0,class:"item",role:g.value},Mt(y.item.items?{click:V,keydown:V}:{},!0),{tabindex:y.item.items&&0}),[F[1]||(F[1]=c("div",{class:"indicator"},null,-1)),y.item.link?(l(),w(K,{key:0,tag:_.value,class:"link",href:y.item.link,rel:y.item.rel,target:y.item.target},{default:v(()=>[(l(),w(G(m.value),{class:"text",innerHTML:y.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(l(),w(G(m.value),{key:1,class:"text",innerHTML:y.item.text},null,8,["innerHTML"])),y.item.collapsed!=null&&y.item.items&&y.item.items.length?(l(),p("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:A,onKeydown:At(A,["enter"]),tabindex:"0"},F[0]||(F[0]=[c("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):k("",!0)],16,rr)):k("",!0),y.item.items&&y.item.items.length?(l(),p("div",ir,[y.depth<5?(l(!0),p(x,{key:0},R(y.item.items,Y=>(l(),w(z,{key:Y.text,item:Y,depth:y.depth+1},null,8,["item","depth"]))),128)):k("",!0)])):k("",!0)]),_:1},8,["class"])}}}),ur=$(lr,[["__scopeId","data-v-dd5d1ddc"]]),cr=b({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=N(!0);let t=null;return q(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Et(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(l(!0),p(x,null,R(s.items,a=>(l(),p("div",{key:a.text,class:D(["group",{"no-transition":e.value}])},[S(ur,{item:a,depth:0},null,8,["item"])],2))),128))}}),dr=$(cr,[["__scopeId","data-v-ea7c95c2"]]),pr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},fr=b({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=J(),s=o,n=N(null),a=tt(be?document.body:null);W([s,n],()=>{var r;s.open?(a.value=!0,(r=n.value)==null||r.focus()):a.value=!1},{immediate:!0,flush:"post"});const i=N(0);return W(e,()=>{i.value+=1},{deep:!0}),(r,d)=>u(t)?(l(),p("aside",{key:0,class:D(["VPSidebar",{open:r.open}]),ref_key:"navEl",ref:n,onClick:d[0]||(d[0]=ot(()=>{},["stop"]))},[d[2]||(d[2]=c("div",{class:"curtain"},null,-1)),c("nav",pr,[d[1]||(d[1]=c("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),f(r.$slots,"sidebar-nav-before",{},void 0,!0),(l(),w(dr,{items:u(e),key:i.value},null,8,["items"])),f(r.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):k("",!0)}}),vr=$(fr,[["__scopeId","data-v-1e4b7d65"]]),hr=b({__name:"VPSkipLink",setup(o){const{theme:e}=H(),t=_e(),s=N();W(()=>t.path,()=>s.value.focus());function n({target:a}){const i=document.getElementById(decodeURIComponent(a.hash).slice(1));if(i){const r=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",r)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",r),i.focus(),window.scrollTo(0,0)}}return(a,i)=>(l(),p(x,null,[c("span",{ref_key:"backToTop",ref:s,tabindex:"-1"},null,512),c("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n},C(u(e).skipToContentLabel||"Skip to content"),1)],64))}}),mr=$(hr,[["__scopeId","data-v-d3d8a623"]]),_r=b({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=J(),n=_e();W(()=>n.path,s),en(e,s);const{frontmatter:a}=H(),i=Bt(),r=T(()=>!!i["home-hero-image"]);return nt("hero-image-slot-exists",r),(d,h)=>{const _=ne("Content");return u(a).layout!==!1?(l(),p("div",{key:0,class:D(["Layout",u(a).pageClass])},[f(d.$slots,"layout-top",{},void 0,!0),S(mr),S(Rt,{class:"backdrop",show:u(e),onClick:u(s)},null,8,["show","onClick"]),S(ar,null,{"nav-bar-title-before":v(()=>[f(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[f(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[f(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[f(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[f(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[f(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),S(Qo,{open:u(e),onOpenMenu:u(t)},null,8,["open","onOpenMenu"]),S(vr,{open:u(e)},{"sidebar-nav-before":v(()=>[f(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[f(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),S(Ho,null,{"page-top":v(()=>[f(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[f(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[f(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[f(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[f(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[f(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[f(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[f(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[f(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[f(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[f(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[f(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[f(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[f(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[f(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[f(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[f(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[f(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[f(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[f(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[f(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[f(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[f(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),S(Ro),f(d.$slots,"layout-bottom",{},void 0,!0)],2)):(l(),w(_,{key:1}))}}}),gr=$(_r,[["__scopeId","data-v-4078b11f"]]),ct={Layout:gr,enhanceApp:({app:o})=>{o.component("Badge",xt)}},je="LiteyukiStudio",ze="LiteyukiBot",br="https://api.github.com",kr="https://git.liteyuki.icu/api/v1",yr="https://api.liteyuki.icu/online",$r="https://api.liteyuki.icu/count",Sr="https://api.liteyuki.icu/visit",wr="https://api.liteyuki.icu/visit_count",se=`https://github.com/${je}/${ze}`,Ke="https://starmap.liteyuki.icu";async function Pr(){try{const o=`${kr}/repos/${je}/${ze}`;console.log(o);const t=await(await fetch(o)).json();return{stars:t.stars_count,forks:t.forks_count,watchers:t.watchers_count,issues:0,prs:0,size:t.size}}catch{return{stars:-1,forks:-1,watchers:-1,issues:-1,prs:-1,size:-1}}}async function Lr(){try{const e=await(await fetch(`${br}/repos/${je}/${ze}`)).json();return{stars:e.stargazers_count,forks:e.forks_count,watchers:e.watchers_count,issues:e.open_issues_count,prs:e.open_issues_count,size:e.size}}catch{return{stars:-1,forks:-1,watchers:-1,issues:-1,prs:-1,size:-1}}}async function Vr(){const o=await Lr(),e=await Pr();return{stars:o.stars+e.stars,forks:o.forks+e.forks,watchers:o.watchers+e.watchers,issues:o.issues+e.issues,prs:o.prs+e.prs,size:o.size+e.size}}const oe={getTotal:async()=>{try{return(await(await fetch($r)).json()).register}catch{return-1}},getOnline:async()=>{try{return(await(await fetch(yr)).json()).online}catch{return-1}},getGithubStats:Vr,getPluginNum:async()=>{try{return(await(await fetch("/plugins.json")).json()).length}catch{return-1}},getResourceNum:async()=>{try{return(await(await fetch("/resources.json")).json()).length}catch{return-1}},getVisitCount:async()=>{try{return(await(await fetch(wr)).json()).count}catch{return-1}}};function Tr(){const o="deviceId";let e=localStorage.getItem(o);return e||(e=Cr(),localStorage.setItem(o,e)),e}async function Nr(){const o=Tr();try{await fetch(Sr,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({device_id:o}).toString()})}catch(e){console.error("Failed to upload visit record:",e)}}function Cr(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(o){var e=Math.random()*16|0,t=o==="x"?e:e&3|8;return t.toString(16)})}const Ir={en:{stats:"Stats",online:"Online",offline:"Offline",total:"Total",fetching:"Fetching",stars:"Stars",forks:"Forks",issues:"Issues",prs:"Pull Requests",visitors:"Visitors",size:"Size",plugins:"Plugins",resources:"Resources",pluginStore:"Plugin Store",pluginStoreDesc:"Content from the LightSnow Plugin Store, LightSnow supports NoneBot through the lpnonebot plugin, and references some NoneBot plugins",liteyukiOnly:"Liteyuki Only",search:"Search",resourceStore:"Resources Store",thx_contributors:"Thanks the following contributors!",easterEgg:"Congratulations on finding the Easter egg!",publishPlugin:"Publish Plugin",publishRes:"Publish Resource",closeButtonText:"Close",submitButtonText:"Submit",resName:"Name",resDesc:"Description",resAuthor:"Author",resLink:"Download Link",resHomepage:"Homepage",resNameText:"Example: Kawaii Style Theme",resDescText:"Example: A kawaii style and color theme",resAuthorText:"Usually the github username, Example: yanyongyu",resLinkText:"Direct download link, usually zip package link",resHomepageText:'Optional, can be the name of the git platform repository"'},zh:{stats:"统计信息",online:"在线",offline:"离线",total:"实例",fetching:"获取中",stars:"星星",forks:"分叉",issues:"议题",prs:"拉取请求",visitors:"访客",size:"大小",plugins:"插件",resources:"主题资源",store:"商店",pluginStore:"插件商店",pluginStoreDesc:"内容来自轻雪插件商店,轻雪通过lpnonebot插件对NoneBot实现支持,引用了部分NoneBot插件",liteyukiOnly:"仅轻雪",search:"搜索",resourceStore:"资源商店",thx_contributors:"感谢以下贡献者!",easterEgg:"恭喜你发现了彩蛋!",publishPlugin:"发布插件",publishRes:"发布资源",closeButtonText:"关闭",submitButtonText:"提交",resName:"名称",resDesc:"描述",resAuthor:"作者",resLink:"下载链接",resHomepage:"主页",resNameText:"示例:可爱风格主题",resDescText:"示例:一个可爱风格和配色的主题",resAuthorText:"通常为github用户名,示例:yanyongyu",resLinkText:"直接下载链接,通常为zip包链接",resHomepageText:"可选,可为git平台仓库名"}};let fe={};function dt(o,e){return o=ye(o),Ir[o][e]}function ye(o){return o.includes("-")?o.split("-")[0]:o}function Mr(){const o=ye(ve().site.value.lang);for(let e in fe)fe[e].value=dt(o,e)}function j(o){const e=ye(ve().site.value.lang);return fe[o]=dt(e,o),fe[o]||o}/*! + * vue-router v4.5.0 + * (c) 2024 Eduardo San Martin Morote + * @license MIT + */var We;(function(o){o.pop="pop",o.push="push"})(We||(We={}));var qe;(function(o){o.back="back",o.forward="forward",o.unknown=""})(qe||(qe={}));var Je;(function(o){o[o.aborted=4]="aborted",o[o.cancelled=8]="cancelled",o[o.duplicated=16]="duplicated"})(Je||(Je={}));const Ar=Symbol("");function Er(o,e,t){const s=()=>{o[e].delete(t)};re(s),Ht(s),Ot(()=>{o[e].add(t)}),o[e].add(t)}function Br(o){const e=ie(Ar,{}).value;e&&Er(e,"updateGuards",o)}const Hr={class:"stats-bar-content"},Or={class:"stats-bar"},xr={class:"stats-info"},Dr={class:"stats-title"},Fr={class:"sections"},Rr=["href"],jr={class:"section-tab"},zr={class:"text"},Ur={class:"number"},Gr=b({__name:"StatsBar",setup(o){const{Layout:e}=ct;let t=null;const s={total:{name:"total",color:"#00a6ff",value:N(-1),link:Ke},online:{name:"online",color:"#7eff7e",value:N(-1),link:Ke},stars:{name:"stars",color:"#ffcc00",value:N(-1),link:`${se}/stargazers`},forks:{name:"forks",color:"#ff6600",value:N(-1),link:`${se}/forks`},issues:{name:"issues",color:"#ff0000",value:N(-1),link:`${se}/issues`},prs:{name:"prs",color:"#f15df1",value:N(-1),link:`${se}/pulls`},plugins:{name:"plugins",color:"#a766ff",value:N(-1),link:"./store/plugin"},resources:{name:"resources",color:"#5a54fa",value:N(-1),link:"./store/resource"},visitors:{name:"visitors",color:"#00a6ff",value:N(-1),link:se}};async function n(){[s.online.value.value,s.total.value.value,s.plugins.value.value,s.resources.value.value,s.visitors.value.value,t]=await Promise.all([oe.getOnline(),oe.getTotal(),oe.getPluginNum(),oe.getResourceNum(),oe.getVisitCount(),oe.getGithubStats()]),s.stars.value.value=(t==null?void 0:t.stars)||0,s.forks.value.value=(t==null?void 0:t.forks)||0,s.issues.value.value=(t==null?void 0:t.issues)||0,s.prs.value.value=(t==null?void 0:t.prs)||0}function a(i){return i.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}return q(()=>{const i=setInterval(n,1e4);n(),Nr(),re(()=>{clearInterval(i)})}),Br(()=>{Mr()}),console.log(` _ _ _ _ _ ____ _ + | | (_) | | | (_) _ \\ | | + | | _| |_ ___ _ _ _ _| | ___| |_) | ___ | |_ + | | | | __/ _ \\ | | | | | | |/ / | _ < / _ \\| __| + | |____| | || __/ |_| | |_| | <| | |_) | (_) | |_ + |______|_|\\__\\___|\\__, |\\__,_|_|\\_\\_|____/ \\___/ \\__| + __/ | + |___/ `),console.log(j("easterEgg")),(i,r)=>(l(),w(u(e),null,{"home-features-before":v(()=>[c("div",Hr,[c("div",Or,[c("div",xr,[c("div",Dr,C(u(j)("stats")),1),c("div",Fr,[(l(!0),p(x,null,R(Object.values(s),d=>(l(),p("div",{key:d.name,class:"section"},[c("a",{href:d.link,target:"_blank"},[c("div",jr,[c("span",{class:"dot",style:ge({backgroundColor:d.color})},null,4),c("span",zr,C(u(j)(d.name)),1)]),c("div",Ur,C(a(d.value)),1)],8,Rr)]))),128))])]),r[0]||(r[0]=c("div",{class:"starmap"},[c("iframe",{src:"https://starmap.liteyuki.icu/",width:"100%",height:"300px",class:"gamma"})],-1))])])]),_:1}))}}),Ye=$(Gr,[["__scopeId","data-v-2391887b"]]);var Kr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Wr(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}var pt={exports:{}};/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(o,e){(function(s,n){o.exports=n()})(Kr,function(){return function(){var t={686:function(a,i,r){r.d(i,{default:function(){return St}});var d=r(279),h=r.n(d),_=r(370),m=r.n(_),g=r(817),I=r.n(g);function V(B){try{return document.execCommand(B)}catch{return!1}}var A=function(L){var P=I()(L);return V("cut"),P},y=A;function F(B){var L=document.documentElement.getAttribute("dir")==="rtl",P=document.createElement("textarea");P.style.fontSize="12pt",P.style.border="0",P.style.padding="0",P.style.margin="0",P.style.position="absolute",P.style[L?"right":"left"]="-9999px";var M=window.pageYOffset||document.documentElement.scrollTop;return P.style.top="".concat(M,"px"),P.setAttribute("readonly",""),P.value=B,P}var z=function(L,P){var M=F(L);P.container.appendChild(M);var E=I()(M);return V("copy"),M.remove(),E},Y=function(L){var P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},M="";return typeof L=="string"?M=z(L,P):L instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(L==null?void 0:L.type)?M=z(L.value,P):(M=I()(L),V("copy")),M},ee=Y;function X(B){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?X=function(P){return typeof P}:X=function(P){return P&&typeof Symbol=="function"&&P.constructor===Symbol&&P!==Symbol.prototype?"symbol":typeof P},X(B)}var ft=function(){var L=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},P=L.action,M=P===void 0?"copy":P,E=L.container,O=L.target,U=L.text;if(M!=="copy"&&M!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(O!==void 0)if(O&&X(O)==="object"&&O.nodeType===1){if(M==="copy"&&O.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(M==="cut"&&(O.hasAttribute("readonly")||O.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(U)return ee(U,{container:E});if(O)return M==="cut"?y(O):ee(O,{container:E})},vt=ft;function ae(B){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ae=function(P){return typeof P}:ae=function(P){return P&&typeof Symbol=="function"&&P.constructor===Symbol&&P!==Symbol.prototype?"symbol":typeof P},ae(B)}function ht(B,L){if(!(B instanceof L))throw new TypeError("Cannot call a class as a function")}function Ue(B,L){for(var P=0;P"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function ue(B){return ue=Object.setPrototypeOf?Object.getPrototypeOf:function(P){return P.__proto__||Object.getPrototypeOf(P)},ue(B)}function Se(B,L){var P="data-clipboard-".concat(B);if(L.hasAttribute(P))return L.getAttribute(P)}var $t=function(B){_t(P,B);var L=gt(P);function P(M,E){var O;return ht(this,P),O=L.call(this),O.resolveOptions(E),O.listenClick(M),O}return mt(P,[{key:"resolveOptions",value:function(){var E=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof E.action=="function"?E.action:this.defaultAction,this.target=typeof E.target=="function"?E.target:this.defaultTarget,this.text=typeof E.text=="function"?E.text:this.defaultText,this.container=ae(E.container)==="object"?E.container:document.body}},{key:"listenClick",value:function(E){var O=this;this.listener=m()(E,"click",function(U){return O.onClick(U)})}},{key:"onClick",value:function(E){var O=E.delegateTarget||E.currentTarget,U=this.action(O)||"copy",ce=vt({action:U,container:this.container,target:this.target(O),text:this.text(O)});this.emit(ce?"success":"error",{action:U,text:ce,trigger:O,clearSelection:function(){O&&O.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(E){return Se("action",E)}},{key:"defaultTarget",value:function(E){var O=Se("target",E);if(O)return document.querySelector(O)}},{key:"defaultText",value:function(E){return Se("text",E)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(E){var O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return ee(E,O)}},{key:"cut",value:function(E){return y(E)}},{key:"isSupported",value:function(){var E=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],O=typeof E=="string"?[E]:E,U=!!document.queryCommandSupported;return O.forEach(function(ce){U=U&&!!document.queryCommandSupported(ce)}),U}}]),P}(h()),St=$t},828:function(a){var i=9;if(typeof Element<"u"&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}function d(h,_){for(;h&&h.nodeType!==i;){if(typeof h.matches=="function"&&h.matches(_))return h;h=h.parentNode}}a.exports=d},438:function(a,i,r){var d=r(828);function h(g,I,V,A,y){var F=m.apply(this,arguments);return g.addEventListener(V,F,y),{destroy:function(){g.removeEventListener(V,F,y)}}}function _(g,I,V,A,y){return typeof g.addEventListener=="function"?h.apply(null,arguments):typeof V=="function"?h.bind(null,document).apply(null,arguments):(typeof g=="string"&&(g=document.querySelectorAll(g)),Array.prototype.map.call(g,function(F){return h(F,I,V,A,y)}))}function m(g,I,V,A){return function(y){y.delegateTarget=d(y.target,I),y.delegateTarget&&A.call(g,y)}}a.exports=_},879:function(a,i){i.node=function(r){return r!==void 0&&r instanceof HTMLElement&&r.nodeType===1},i.nodeList=function(r){var d=Object.prototype.toString.call(r);return r!==void 0&&(d==="[object NodeList]"||d==="[object HTMLCollection]")&&"length"in r&&(r.length===0||i.node(r[0]))},i.string=function(r){return typeof r=="string"||r instanceof String},i.fn=function(r){var d=Object.prototype.toString.call(r);return d==="[object Function]"}},370:function(a,i,r){var d=r(879),h=r(438);function _(V,A,y){if(!V&&!A&&!y)throw new Error("Missing required arguments");if(!d.string(A))throw new TypeError("Second argument must be a String");if(!d.fn(y))throw new TypeError("Third argument must be a Function");if(d.node(V))return m(V,A,y);if(d.nodeList(V))return g(V,A,y);if(d.string(V))return I(V,A,y);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function m(V,A,y){return V.addEventListener(A,y),{destroy:function(){V.removeEventListener(A,y)}}}function g(V,A,y){return Array.prototype.forEach.call(V,function(F){F.addEventListener(A,y)}),{destroy:function(){Array.prototype.forEach.call(V,function(F){F.removeEventListener(A,y)})}}}function I(V,A,y){return h(document.body,V,A,y)}a.exports=_},817:function(a){function i(r){var d;if(r.nodeName==="SELECT")r.focus(),d=r.value;else if(r.nodeName==="INPUT"||r.nodeName==="TEXTAREA"){var h=r.hasAttribute("readonly");h||r.setAttribute("readonly",""),r.select(),r.setSelectionRange(0,r.value.length),h||r.removeAttribute("readonly"),d=r.value}else{r.hasAttribute("contenteditable")&&r.focus();var _=window.getSelection(),m=document.createRange();m.selectNodeContents(r),_.removeAllRanges(),_.addRange(m),d=_.toString()}return d}a.exports=i},279:function(a){function i(){}i.prototype={on:function(r,d,h){var _=this.e||(this.e={});return(_[r]||(_[r]=[])).push({fn:d,ctx:h}),this},once:function(r,d,h){var _=this;function m(){_.off(r,m),d.apply(h,arguments)}return m._=d,this.on(r,m,h)},emit:function(r){var d=[].slice.call(arguments,1),h=((this.e||(this.e={}))[r]||[]).slice(),_=0,m=h.length;for(_;_{const n=new Jr(".copy-btn",{text:()=>`npm install ${e.item.module_name}`});n.on("success",()=>{}),n.on("error",()=>{})},s=n=>{const a=n.replace(/^#/,""),[i,r,d]=a.match(/.{2}/g).map(_=>parseInt(_,16)),h=(i*299+r*587+d*114)/1e3;return{backgroundColor:n,color:h>128?"#000":"#fff"}};return(n,a)=>(l(),p("div",Yr,[c("div",Xr,C(e.item.name),1),c("div",Qr,C(e.item.desc),1),c("div",Zr,[(l(!0),p(x,null,R(e.item.tags,i=>(l(),p("span",{class:"tag",key:i,style:ge(s(i.color))},C(i.label),5))),128))]),c("div",ei,[c("a",{href:e.item.homepage,class:"btn",target:"_blank"},a[0]||(a[0]=[c("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 16 16"},[c("path",{fill:"currentColor",d:"m7.775 3.275l1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0a.751.751 0 0 1 .018-1.042a.751.751 0 0 1 1.042-.018a1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018a.751.751 0 0 1-.018-1.042m-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018a.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0a.751.751 0 0 1-.018 1.042a.751.751 0 0 1-1.042.018a1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83"})],-1)]),8,ti),c("button",{class:"btn copy-btn",onClick:t},"复制安装命令"),c("div",ni,[c("a",{class:"author-info",href:`https://github.com/${e.item.author}`},[c("img",{class:"icon avatar",src:`https://github.com/${e.item.author}.png?size=80`,alt:""},null,8,si),c("div",ai,C(e.item.author),1)],8,oi)])])]))}}),ii=$(ri,[["__scopeId","data-v-a8e3f329"]]),li={class:"switch"},ui=["checked"],ci=b({__name:"ToggleSwitch",props:{modelValue:Boolean},emits:["update:modelValue"],setup(o,{emit:e}){const t=e,s=n=>{t("update:modelValue",n)};return(n,a)=>(l(),p("label",li,[c("input",{type:"checkbox",checked:o.modelValue,onChange:a[0]||(a[0]=i=>s(i.target.checked))},null,40,ui),a[1]||(a[1]=c("span",{class:"slider round"},null,-1))]))}}),di=$(ci,[["__scopeId","data-v-b3db11d1"]]),pi=[{module_name:"liteyukibot-plugin-nonebot",project_link:"liteyukibot-plugin-nonebot",name:"NoneBot插件",desc:"在轻雪中使用NoneBot,内置轻雪--NoneBot会话控制器插件,为NoneBot开发者提供了更多便捷功能(已内置)",author:"snowykami",homepage:"https://github.com/LiteyukiStudio/liteyukibot-plugin-nonebot",tags:[{label:"app",color:"#aeeaa8"}],is_official:!0,type:"application",valid:!0,version:"rolling"},{module_name:"liteyukibot-plugin-antidislink",project_link:"liteyukibot-plugin-antidislink",name:"防断联插件",desc:"防止你的群友断联化",author:"snowykami",homepage:"https://github.com/snowykami/liteyukibot-plugin-antidislink",tags:[{label:"app",color:"#aeeaa8"},{label:"dislink",color:"#d0e9ff"}],is_official:!0,type:"application",valid:!0,version:"rolling"},{module_name:"liteyukibot-plugin-lagrange",project_link:"liteyukibot-plugin-lagrange",name:"LagrangePlugin",desc:"在轻雪中使用lagrange-python!",author:"snowykami",homepage:"https://github.com/snowykami/liteyukibot-plugin-lagrange",tags:[{label:"app",color:"#aeeaa8"},{label:"lagrange",color:"#ff89f7"}],is_official:!0,type:"application",valid:!0,version:"rolling"},{module_name:"liteyukibot-plugin-htmlrender",project_link:"liteyukibot-plugin-htmlrender",name:"htmlrender",desc:"使用系统中的浏览器对网页进行渲染,便于其他插件使用",author:"EillesWan",homepage:"https://github.com/LiteyukiStudio/liteyukibot-plugin-htmlrender",tags:[{label:"ch",color:"#4285f4"},{label:"ro",color:"#db4437"},{label:"mi",color:"#f4b400"},{label:"um",color:"#0f9d58"}],is_official:!0,type:"application",valid:!0,version:"rolling"}],fi={class:"market"},vi={class:"search-box-div"},hi=["placeholder"],mi={class:"items"},_i=b({__name:"PluginStore",setup(o){let e=N(!1),t=T(()=>{let a=s.value;return n.value&&(a=a.filter(i=>i.name.toLowerCase().includes(n.value.toLowerCase())||i.desc.toLowerCase().includes(n.value.toLowerCase())||i.author.toLowerCase().includes(n.value.toLowerCase())||i.module_name.toLowerCase().includes(n.value.toLowerCase()))),e.value&&(a=a.filter(i=>i.is_liteyuki_plugin)),a}),s=N([]),n=N("");return s.value=pi,s.value.forEach(a=>{a.is_liteyuki_plugin=!0}),fetch("https://registry.nonebot.dev/plugins.json").then(a=>a.json()).then(a=>{a.forEach(i=>{i.is_official=!1}),s.value=s.value.concat(a)}),(a,i)=>(l(),p("div",fi,[c("h1",null,C(u(j)("pluginStore")),1),c("p",null,C(u(j)("pluginStoreDesc")),1),c("div",vi,[Ve(c("input",{class:"item-search-box",type:"text","onUpdate:modelValue":i[0]||(i[0]=r=>Ne(n)?n.value=r:n=r),placeholder:u(j)("search")},null,8,hi),[[Te,u(n)]]),S(di,{modelValue:u(e),"onUpdate:modelValue":i[1]||(i[1]=r=>Ne(e)?e.value=r:e=r)},null,8,["modelValue"]),Z(" "+C(u(j)("liteyukiOnly")),1)]),c("div",mi,[(l(!0),p(x,null,R(u(t),r=>(l(),w(ii,{key:r.id,item:r},null,8,["item"]))),128))])]))}}),gi=$(_i,[["__scopeId","data-v-671446c8"]]),bi={class:"item-card"},ki={class:"item-name"},yi={class:"item-description"},$i={class:"item-bar"},Si=["href"],wi=["href"],Pi=["src"],Li={class:"author-name"},Vi=b({__name:"ResItemCard",props:{item:Object},setup(o){const e=o;return(t,s)=>(l(),p("div",bi,[c("div",ki,C(e.item.name),1),c("div",yi,C(e.item.description),1),c("div",$i,[c("a",{href:e.item.link,class:"",target:"_blank"},s[0]||(s[0]=[c("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 16 16"},[c("path",{fill:"currentColor",d:"m7.775 3.275l1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0a.751.751 0 0 1 .018-1.042a.751.751 0 0 1 1.042-.018a1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018a.751.751 0 0 1-.018-1.042m-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018a.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0a.751.751 0 0 1-.018 1.042a.751.751 0 0 1-1.042.018a1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83"})],-1)]),8,Si),c("div",null,[c("a",{class:"author-info",href:`https://github.com/${e.item.author}`},[c("img",{class:"icon avatar",src:`https://github.com/${e.item.author}.png?size=80`,alt:""},null,8,Pi),c("div",Li,C(e.item.author),1)],8,wi)])])]))}}),Ti=$(Vi,[["__scopeId","data-v-22cbd1fa"]]),Ni={key:0,class:"floating-window"},Ci={class:"window-content"},Ii=b({__name:"ResPubWindow",props:{isVisible:Boolean},setup(o){return(e,t)=>o.isVisible?(l(),p("div",Ni,[c("div",Ci,[f(e.$slots,"default",{},void 0,!0)])])):k("",!0)}}),Mi=$(Ii,[["__scopeId","data-v-8b5829b6"]]),Ai=[{name:"KawaiiStatus",author:"SnowyKami",description:"可爱的状态卡片,仿照koishi的制作",link:"https://cdn.liteyuki.icu/static/lrp/KawaiiStatus.zip"},{name:"MiSans字体包",author:"SnowyKami",description:"小米官方字体MiSans",link:"https://cdn.liteyuki.icu/static/lrp/MiSansFonts.zip"},{name:"MapleMono字体包",author:"SnowyKami",description:"适用于字母的字体包",link:"https://cdn.liteyuki.icu/static/lrp/MapleMonoFonts.zip"},{name:"野兽先辈主题HomoTheme",author:"SnowyKami",description:"野兽先辈主题包,114514!",link:"https://cdn.liteyuki.icu/static/lrp/HomoTheme.zip"},{name:"自定义设备信息",author:"SnowyKami",description:"自定义服务端的设备信息,自行修改使用",link:"https://cdn.liteyuki.icu/static/lrp/custom-device.zip"},{name:"轻雪傲娇系词库",author:"SnowyKami",description:"使用https://github.com/Kyomotoi/AnimeThesaurus的词库",link:"https://cdn.liteyuki.icu/static/lrp/liteyuki_words_aojiao.zip"},{name:"轻雪可爱系词库",author:"SnowyKami",description:"使用https://github.com/Kyomotoi/AnimeThesaurus的词库",link:"https://cdn.liteyuki.icu/static/lrp/liteyuki_words_kawaii.zip"},{name:"轻雪Kakyo语言包",author:"Nanaloveyuki",description:"Liteyuki Bot的语言包,用于提供多种语言的翻译。",link:"https://github.com/Nanaloveyuki/liteyuki-langpack/releases/download/KakyoVer/Kakyo-pack.zip"},{name:"更多背景模板包",author:"snowykami",description:"自定义各种卡片的背景",link:"https://cdn.liteyuki.icu/static/lrp/morebg.zip"},{name:"测试资源包",desc:"test",link:"https://cdn.liteyuki.icu/static/lrp/liteyuki_words_aojiao.zip",homepage:"",author:"snowykami"},{name:"轻雪Kakyo语言包 稳定版",description:"Liteyuki Bot的语言包,用于提供多种语言的翻译。",link:"https://cdn.liteyuki.icu/static/lrp/kakyo.zip",homepage:"https://github.com/Nanaloveyuki/liteyuki-langpack",author:"Nanaloveyuki"},{name:"测试资源包2",description:"test",link:"https://cdn.liteyuki.icu/static/lrp/liteyuki_words_aojiao.zip",homepage:"",author:"snowykami"}],Ei={class:"market"},Bi={class:"search-box-div"},Hi=["placeholder"],Oi={class:"store-tabs",style:{display:"flex"}},xi={class:"items"},Di={for:"name"},Fi=["placeholder"],Ri={class:"pub-options",style:{display:"flex","justify-content":"center"}},ji=b({__name:"ResStore",setup(o){let e=T(()=>s.value?t.value.filter(_=>_.name.toLowerCase().includes(s.value.toLowerCase())||_.description.toLowerCase().includes(s.value.toLowerCase())||_.author.toLowerCase().includes(s.value.toLowerCase())).reverse():t.value.reverse()),t=N([]),s=N("");t.value=Ai;const n=N(!1);let a=N({name:""});function i(){n.value=!0}function r(){n.value=!1}let d="";ye(ve().site.value.lang)==="zh"?d="zh":d="en";function h(){const _=encodeURI(`Resource: ${a.value.name}`),m=`${se}/issues/new?assignees=&labels=Resource&template=resource_publish_${d}.yml&title=${_}`;console.log(m),window.open(m,"_blank")}return(_,m)=>(l(),p("div",Ei,[c("h1",null,C(u(j)("resourceStore")),1),c("div",Bi,[Ve(c("input",{class:"item-search-box",type:"text",placeholder:u(j)("search"),"onUpdate:modelValue":m[0]||(m[0]=g=>Ne(s)?s.value=g:s=g)},null,8,Hi),[[Te,u(s)]])]),c("div",Oi,[c("button",{class:"store-button publish-button",onClick:i},C(u(j)("publishRes")),1)]),c("div",xi,[(l(!0),p(x,null,R(u(e),g=>(l(),w(Ti,{key:g.id,item:g},null,8,["item"]))),128))]),S(Mi,{class:"pub-window","is-visible":n.value},{default:v(()=>[c("h2",null,C(u(j)("publishRes")),1),c("form",{onSubmit:ot(h,["prevent"])},[c("label",Di,C(u(j)("resName")),1),Ve(c("input",{type:"text",id:"name","onUpdate:modelValue":m[1]||(m[1]=g=>u(a).name=g),placeholder:u(j)("resNameText")},null,8,Fi),[[Te,u(a).name]]),c("div",Ri,[c("button",{class:"pub-option close",type:"button",onClick:r},C(u(j)("closeButtonText")),1),c("button",{class:"pub-option submit",type:"submit",onClick:h},C(u(j)("submitButtonText")),1)])],32)]),_:1},8,["is-visible"])]))}}),zi=$(ji,[["__scopeId","data-v-83d58003"]]),Ki={extends:ct,enhanceApp({app:o}){o.component("StatsBar",Ye),o.component("PluginStore",gi),o.component("ResStore",zi)},Layout:Ye};export{Ki as R,ta as c,j as g,H as u}; diff --git a/assets/deploy_config.md.kGYrTELl.js b/assets/deploy_config.md.fpf-x4oF.js similarity index 98% rename from assets/deploy_config.md.kGYrTELl.js rename to assets/deploy_config.md.fpf-x4oF.js index 0868cc10..f11ccd81 100644 --- a/assets/deploy_config.md.kGYrTELl.js +++ b/assets/deploy_config.md.fpf-x4oF.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const E=JSON.parse('{"title":"配置","description":"","frontmatter":{"title":"配置","order":2},"headers":[],"relativePath":"deploy/config.md","filePath":"zh/deploy/config.md","lastUpdated":1734116271000}'),l={name:"deploy/config.md"};function h(e,s,k,p,d,o){return t(),a("div",null,s[0]||(s[0]=[n(`

配置

轻雪支持yamljsontoml作为配置文件,取决于你个人的喜好

首次运行后生成config.ymlconfig目录,你可修改配置项后重启轻雪,绝大多数情况下,你只需要修改superusersnickname字段即可

启动时会加载项目目录下config.yml/yaml/json/tomlconfig目录下的所有配置文件,你可在config目录下创建多个配置文件,轻雪会自动合并这些配置文件

基础配置项

yaml
nonebot:
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const E=JSON.parse('{"title":"配置","description":"","frontmatter":{"title":"配置","order":2},"headers":[],"relativePath":"deploy/config.md","filePath":"zh/deploy/config.md","lastUpdated":1734116271000}'),l={name:"deploy/config.md"};function h(e,s,k,p,d,o){return n(),a("div",null,s[0]||(s[0]=[t(`

配置

轻雪支持yamljsontoml作为配置文件,取决于你个人的喜好

首次运行后生成config.ymlconfig目录,你可修改配置项后重启轻雪,绝大多数情况下,你只需要修改superusersnickname字段即可

启动时会加载项目目录下config.yml/yaml/json/tomlconfig目录下的所有配置文件,你可在config目录下创建多个配置文件,轻雪会自动合并这些配置文件

基础配置项

yaml
nonebot:
   # Nonebot机器人的配置,6.3.10版本后,NoneBot下配置已迁移至nonebot键下,不再使用外层配置,但是部分内容会被覆盖,请尽快迁移
   command_start: [ "/", "" ] # 指令前缀,若没有""空命令头,请开启alconna_use_command_start保证alconna解析正常
   host: 127.0.0.1 # 监听地址,默认为本机,若要接收外部请求请填写0.0.0.0
diff --git a/assets/deploy_config.md.fpf-x4oF.lean.js b/assets/deploy_config.md.fpf-x4oF.lean.js
new file mode 100644
index 00000000..e48de99b
--- /dev/null
+++ b/assets/deploy_config.md.fpf-x4oF.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const E=JSON.parse('{"title":"配置","description":"","frontmatter":{"title":"配置","order":2},"headers":[],"relativePath":"deploy/config.md","filePath":"zh/deploy/config.md","lastUpdated":1734116271000}'),l={name:"deploy/config.md"};function h(e,s,k,p,d,o){return n(),a("div",null,s[0]||(s[0]=[t("",15)]))}const g=i(l,[["render",h]]);export{E as __pageData,g as default};
diff --git a/assets/deploy_config.md.kGYrTELl.lean.js b/assets/deploy_config.md.kGYrTELl.lean.js
deleted file mode 100644
index 0868cc10..00000000
--- a/assets/deploy_config.md.kGYrTELl.lean.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const E=JSON.parse('{"title":"配置","description":"","frontmatter":{"title":"配置","order":2},"headers":[],"relativePath":"deploy/config.md","filePath":"zh/deploy/config.md","lastUpdated":1734116271000}'),l={name:"deploy/config.md"};function h(e,s,k,p,d,o){return t(),a("div",null,s[0]||(s[0]=[n(`

配置

轻雪支持yamljsontoml作为配置文件,取决于你个人的喜好

首次运行后生成config.ymlconfig目录,你可修改配置项后重启轻雪,绝大多数情况下,你只需要修改superusersnickname字段即可

启动时会加载项目目录下config.yml/yaml/json/tomlconfig目录下的所有配置文件,你可在config目录下创建多个配置文件,轻雪会自动合并这些配置文件

基础配置项

yaml
nonebot:
-  # Nonebot机器人的配置,6.3.10版本后,NoneBot下配置已迁移至nonebot键下,不再使用外层配置,但是部分内容会被覆盖,请尽快迁移
-  command_start: [ "/", "" ] # 指令前缀,若没有""空命令头,请开启alconna_use_command_start保证alconna解析正常
-  host: 127.0.0.1 # 监听地址,默认为本机,若要接收外部请求请填写0.0.0.0
-  port: 20216 # 绑定端口
-  nickname: [ "liteyuki" ]  # 机器人昵称列表
-  superusers: [ "1919810" ]  # 超级用户列表
-liteyuki:
-  # 写在外层的配置项将会被覆盖,建议迁移到liteyuki下
-  log_level: "INFO" # 日志等级
-  log_icon: true # 是否显示日志等级图标(某些控制台字体不可用)
-  auto_report: true # 是否自动上报问题给轻雪服务器
-  auto_update: true # 是否自动更新轻雪,每天4点检查更新
-  plugins: [ ] # 轻雪插件列表
-  plugin_dirs: [ ] # 轻雪插件目录列表

其他配置

以下为默认值,如需自定义请手动添加

yaml
# 高级NoneBot配置
-nonebot:
-  onebot_access_token: "" # 访问令牌,对公开放时建议设置
-  default_language: "zh-CN" # 默认语言
-  alconna_auto_completion: false # alconna是否自动补全指令,默认false,建议开启
-  safe_mode: false # 安全模式,开启后将不会加载任何第三方NoneBot插件
-  # 其他Nonebot插件的配置项
-  custom_config_1: "custom_value1"
-  custom_config_2: "custom_value2"
-
-# 开发者选项
-liteyuki:
-  allow_update: true # 是否允许更新
-  debug: false  # 轻雪调试,开启会自动重载Bot或者资源,其他插件自带的调试功能也将开启
-  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支持的任何适配器或使用轻雪讯息传递插件
`,15)]))}const g=i(l,[["render",h]]);export{E as __pageData,g as default}; diff --git a/assets/deploy_fandq.md.2fl_Ypjk.lean.js b/assets/deploy_fandq.md.2fl_Ypjk.lean.js deleted file mode 100644 index 257d3e91..00000000 --- a/assets/deploy_fandq.md.2fl_Ypjk.lean.js +++ /dev/null @@ -1,3 +0,0 @@ -import{_ as o,c as t,a7 as a,o as l}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"答疑","description":"","frontmatter":{"title":"答疑","order":3},"headers":[],"relativePath":"deploy/fandq.md","filePath":"zh/deploy/fandq.md","lastUpdated":1734116271000}'),i={name:"deploy/fandq.md"};function d(n,e,r,p,c,s){return l(),t("div",null,e[0]||(e[0]=[a(`

答疑

常见问题

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

    • 请使用/path/to/python -m pip install -r requirements.txt来安装依赖, 然后用/path/to/python main.py来启动Bot, 其中/path/to/python是你要用来运行Bot的可执行文件
  • 更新轻雪失败,报错InvalidGitRepositoryError

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

    • Bot部分插件提供了对接特定平台的能力,例如使用NoneBot插件可对接支持的适配器平台
  • Playwright安装失败

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

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

其他问题

-
-加入QQ群[775840726](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=SzmDYbfR6jY94o9KFNon7AwelRyI6M_u&authKey=ygeBdEmdFNyCWuNR4w0M1M8%2B5oDg7k%2FDfN0tzBkYcnbB%2FGHNnlVEnCIGbdftsnn7&noverify=0&group_code=775840726)
-
`,5)]))}const m=o(i,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/deploy_fandq.md.2fl_Ypjk.js b/assets/deploy_fandq.md.Cy8gyJaY.js similarity index 91% rename from assets/deploy_fandq.md.2fl_Ypjk.js rename to assets/deploy_fandq.md.Cy8gyJaY.js index 257d3e91..4ca6339f 100644 --- a/assets/deploy_fandq.md.2fl_Ypjk.js +++ b/assets/deploy_fandq.md.Cy8gyJaY.js @@ -1,3 +1,3 @@ -import{_ as o,c as t,a7 as a,o as l}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"答疑","description":"","frontmatter":{"title":"答疑","order":3},"headers":[],"relativePath":"deploy/fandq.md","filePath":"zh/deploy/fandq.md","lastUpdated":1734116271000}'),i={name:"deploy/fandq.md"};function d(n,e,r,p,c,s){return l(),t("div",null,e[0]||(e[0]=[a(`

答疑

常见问题

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

    • 请使用/path/to/python -m pip install -r requirements.txt来安装依赖, 然后用/path/to/python main.py来启动Bot, 其中/path/to/python是你要用来运行Bot的可执行文件
  • 更新轻雪失败,报错InvalidGitRepositoryError

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

    • Bot部分插件提供了对接特定平台的能力,例如使用NoneBot插件可对接支持的适配器平台
  • Playwright安装失败

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

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

其他问题

-
+import{_ as o,c as t,o as a,al as l}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"答疑","description":"","frontmatter":{"title":"答疑","order":3},"headers":[],"relativePath":"deploy/fandq.md","filePath":"zh/deploy/fandq.md","lastUpdated":1734116271000}'),i={name:"deploy/fandq.md"};function d(n,e,r,p,c,s){return a(),t("div",null,e[0]||(e[0]=[l(`

答疑

常见问题

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

    • 请使用/path/to/python -m pip install -r requirements.txt来安装依赖, 然后用/path/to/python main.py来启动Bot, 其中/path/to/python是你要用来运行Bot的可执行文件
  • 更新轻雪失败,报错InvalidGitRepositoryError

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

    • Bot部分插件提供了对接特定平台的能力,例如使用NoneBot插件可对接支持的适配器平台
  • Playwright安装失败

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

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

其他问题

-
 加入QQ群[775840726](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=SzmDYbfR6jY94o9KFNon7AwelRyI6M_u&authKey=ygeBdEmdFNyCWuNR4w0M1M8%2B5oDg7k%2FDfN0tzBkYcnbB%2FGHNnlVEnCIGbdftsnn7&noverify=0&group_code=775840726)
 
`,5)]))}const m=o(i,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/deploy_fandq.md.Cy8gyJaY.lean.js b/assets/deploy_fandq.md.Cy8gyJaY.lean.js new file mode 100644 index 00000000..900a7595 --- /dev/null +++ b/assets/deploy_fandq.md.Cy8gyJaY.lean.js @@ -0,0 +1 @@ +import{_ as o,c as t,o as a,al as l}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"答疑","description":"","frontmatter":{"title":"答疑","order":3},"headers":[],"relativePath":"deploy/fandq.md","filePath":"zh/deploy/fandq.md","lastUpdated":1734116271000}'),i={name:"deploy/fandq.md"};function d(n,e,r,p,c,s){return a(),t("div",null,e[0]||(e[0]=[l("",5)]))}const m=o(i,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/deploy_install.md.c-fJcXz8.js b/assets/deploy_install.md.BKGuxzeN.js similarity index 97% rename from assets/deploy_install.md.c-fJcXz8.js rename to assets/deploy_install.md.BKGuxzeN.js index 0b1d8f4b..d2f75fd3 100644 --- a/assets/deploy_install.md.c-fJcXz8.js +++ b/assets/deploy_install.md.BKGuxzeN.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as t,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"安装","description":"","frontmatter":{"title":"安装","order":1},"headers":[],"relativePath":"deploy/install.md","filePath":"zh/deploy/install.md","lastUpdated":1734116271000}'),e={name:"deploy/install.md"};function l(h,s,p,o,d,k){return n(),a("div",null,s[0]||(s[0]=[t(`

安装

常规部署

  1. 安装 GitPython3.10+ 环境
bash
# 克隆项目到本地,轻雪使用Git进行版本管理,该步骤为必要项
+import{_ as i,c as a,o as t,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"安装","description":"","frontmatter":{"title":"安装","order":1},"headers":[],"relativePath":"deploy/install.md","filePath":"zh/deploy/install.md","lastUpdated":1734116271000}'),e={name:"deploy/install.md"};function l(h,s,p,o,d,k){return t(),a("div",null,s[0]||(s[0]=[n(`

安装

常规部署

  1. 安装 GitPython3.10+ 环境
bash
# 克隆项目到本地,轻雪使用Git进行版本管理,该步骤为必要项
 git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1 # 若你不能访问Github,可以使用Liteyuki镜像:https://git.liteyuki.icu/bot/app
 
 # 切换到Bot目录下
diff --git a/assets/deploy_install.md.BKGuxzeN.lean.js b/assets/deploy_install.md.BKGuxzeN.lean.js
new file mode 100644
index 00000000..6d1726ce
--- /dev/null
+++ b/assets/deploy_install.md.BKGuxzeN.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as t,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"安装","description":"","frontmatter":{"title":"安装","order":1},"headers":[],"relativePath":"deploy/install.md","filePath":"zh/deploy/install.md","lastUpdated":1734116271000}'),e={name:"deploy/install.md"};function l(h,s,p,o,d,k){return t(),a("div",null,s[0]||(s[0]=[n("",12)]))}const g=i(e,[["render",l]]);export{c as __pageData,g as default};
diff --git a/assets/deploy_install.md.c-fJcXz8.lean.js b/assets/deploy_install.md.c-fJcXz8.lean.js
deleted file mode 100644
index 0b1d8f4b..00000000
--- a/assets/deploy_install.md.c-fJcXz8.lean.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import{_ as i,c as a,a7 as t,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"安装","description":"","frontmatter":{"title":"安装","order":1},"headers":[],"relativePath":"deploy/install.md","filePath":"zh/deploy/install.md","lastUpdated":1734116271000}'),e={name:"deploy/install.md"};function l(h,s,p,o,d,k){return n(),a("div",null,s[0]||(s[0]=[t(`

安装

常规部署

  1. 安装 GitPython3.10+ 环境
bash
# 克隆项目到本地,轻雪使用Git进行版本管理,该步骤为必要项
-git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1 # 若你不能访问Github,可以使用Liteyuki镜像:https://git.liteyuki.icu/bot/app
-
-# 切换到Bot目录下
-cd LiteyukiBot
-
-# 创建虚拟环境
-python -m venv venv
-
-# 激活虚拟环境
-.\\venv\\Scripts\\activate # Windows
-source venv/bin/activate # Linux
-
-# 安装依赖
-pip install -r requirements.txt
-
-# 启动Bot
-python main.py

使用Docker构建

bash
docker pull git.liteyuki.icu/bot/app:latest  # 每夜版镜像

TIP

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

装置要求

  • 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直接下载源代码运行,你将无法使用更新功能

其他问题请移步至答疑

`,12)]))}const g=i(e,[["render",l]]);export{c as __pageData,g as default}; diff --git a/assets/dev_api_bot_index.md.Df_BdheA.js b/assets/dev_api_bot_index.md.960PcKQi.js similarity index 99% rename from assets/dev_api_bot_index.md.Df_BdheA.js rename to assets/dev_api_bot_index.md.960PcKQi.js index d48cf22e..6e80ade9 100644 --- a/assets/dev_api_bot_index.md.Df_BdheA.js +++ b/assets/dev_api_bot_index.md.960PcKQi.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as t,o as n}from"./chunks/framework.v7PlT0Wt.js";const g=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}'),e={name:"dev/api/bot/index.md"};function l(h,s,p,k,r,o){return n(),a("div",null,s[0]||(s[0]=[t(`

模块 liteyuki.bot

class LiteyukiBot


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

说明: 初始化轻雪实例

参数:

  • **kwargs: 配置
源代码在GitHub上查看
python
def __init__(self, **kwargs) -> None:
+import{_ as i,c as a,o as t,al as n}from"./chunks/framework.BUxnStXl.js";const g=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}'),e={name:"dev/api/bot/index.md"};function l(h,s,p,k,r,o){return t(),a("div",null,s[0]||(s[0]=[n(`

模块 liteyuki.bot

class LiteyukiBot


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

说明: 初始化轻雪实例

参数:

  • **kwargs: 配置
源代码在GitHub上查看
python
def __init__(self, **kwargs) -> None:
     """总通道"""
     self.i_chan = Chan[Any]()
     self.o_chan = Chan[Any]()
diff --git a/assets/dev_api_bot_index.md.960PcKQi.lean.js b/assets/dev_api_bot_index.md.960PcKQi.lean.js
new file mode 100644
index 00000000..7007d12d
--- /dev/null
+++ b/assets/dev_api_bot_index.md.960PcKQi.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as t,al as n}from"./chunks/framework.BUxnStXl.js";const g=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}'),e={name:"dev/api/bot/index.md"};function l(h,s,p,k,r,o){return t(),a("div",null,s[0]||(s[0]=[n("",99)]))}const E=i(e,[["render",l]]);export{g as __pageData,E as default};
diff --git a/assets/dev_api_bot_index.md.Df_BdheA.lean.js b/assets/dev_api_bot_index.md.Df_BdheA.lean.js
deleted file mode 100644
index d48cf22e..00000000
--- a/assets/dev_api_bot_index.md.Df_BdheA.lean.js
+++ /dev/null
@@ -1,78 +0,0 @@
-import{_ as i,c as a,a7 as t,o as n}from"./chunks/framework.v7PlT0Wt.js";const g=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}'),e={name:"dev/api/bot/index.md"};function l(h,s,p,k,r,o){return n(),a("div",null,s[0]||(s[0]=[t(`

模块 liteyuki.bot

class LiteyukiBot


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

说明: 初始化轻雪实例

参数:

  • **kwargs: 配置
源代码在GitHub上查看
python
def __init__(self, **kwargs) -> None:
-    """总通道"""
-    self.i_chan = Chan[Any]()
-    self.o_chan = Chan[Any]()
-    '常规操作'
-    print_logo()
-    global _BOT_INSTANCE
-    _BOT_INSTANCE = self
-    '配置'
-    self.config: dict[str, Any] = kwargs
-    '初始化'
-    self.init(**self.config)
-    logger.info('Liteyuki is initializing...')
-    '生命周期管理'
-    self.lifespan = Lifespan()
-    self.process_manager: ProcessManager = ProcessManager(lifespan=self.lifespan)
-    '事件循环'
-    self.loop = asyncio.new_event_loop()
-    asyncio.set_event_loop(self.loop)
-    self.stop_event = threading.Event()
-    self.call_restart_count = 0
-    '加载插件加载器'
-    load_plugin('liteyuki.plugins.plugin_loader')

func run(self)

说明: 外部启动接口

源代码在GitHub上查看
python
def run(self):
-    self.process_manager.start_all()
-    try:
-        asyncio.run(self._run())
-    except KeyboardInterrupt:
-        logger.opt(colors=True).info('<y>Liteyuki is stopping...</y>')
-        self.stop()
-    logger.opt(colors=True).info('<y>Liteyuki is stopped !</y>')

func restart(self, delay: int = 0)

说明: 重启轻雪本体

参数:

  • delay (int, optional): 延迟重启时间. Defaults to 0.
源代码在GitHub上查看
python
def restart(self, delay: int=0):
-    if self.call_restart_count < 1:
-        executable = sys.executable
-        args = sys.argv
-        logger.info('Restarting LiteyukiBot...')
-        time.sleep(delay)
-        if platform.system() == 'Windows':
-            cmd = 'start'
-        elif platform.system() == 'Linux':
-            cmd = 'nohup'
-        elif platform.system() == 'Darwin':
-            cmd = 'open'
-        else:
-            cmd = 'nohup'
-        self.process_manager.terminate_all()
-        threading.Thread(target=os.system, args=(f"{cmd} {executable} {' '.join(args)}",), daemon=True).start()
-        sys.exit(0)
-    self.call_restart_count += 1

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

说明: 停止轻雪

参数:

源代码在GitHub上查看
python
def restart_process(self, name: Optional[str]=None):
-    if name is not None:
-        chan_active = get_channel(f'{name}-active')
-        chan_active.send(1)
-    else:
-        for process_name in self.process_manager.processes:
-            chan_active = get_channel(f'{process_name}-active')
-            chan_active.send(1)

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

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

参数:

  • *args: 参数
  • **kwargs: 关键字参数
源代码在GitHub上查看
python
def init(self, *args, **kwargs):
-    self.init_logger()

func init_logger(self)

说明: 初始化日志

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

func stop(self)

说明: 停止轻雪

源代码在GitHub上查看
python
def stop(self):
-    self.process_manager.terminate_all()
-    self.stop_event.set()

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

说明: 注册启动前的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

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

func on_after_start(self, func: LIFESPAN_FUNC)

说明: 注册启动后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

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

func on_after_shutdown(self, func: LIFESPAN_FUNC)

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

参数:

返回: LIFESPAN_FUNC: 生命周期函数

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

func on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC)

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

参数:

返回: PROCESS_LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_process_shutdown(self, func: PROCESS_LIFESPAN_FUNC):
-    return self.lifespan.on_before_process_shutdown(func)

func 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:
-    return self.lifespan.on_before_process_restart(func)

func on_after_restart(self, func: LIFESPAN_FUNC)

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

参数:

返回: LIFESPAN_FUNC: 生命周期函数

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

func get_bot() -> LiteyukiBot

说明: 获取轻雪实例

返回: LiteyukiBot: 轻雪实例

源代码在GitHub上查看
python
def get_bot() -> 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.")

func 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:
-    return get_bot().config.get(key, default)

func 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:
-    if key in get_bot().config:
-        return get_bot().config[key]
-    for compat_key in compat_keys:
-        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
`,99)]))}const E=i(e,[["render",l]]);export{g as __pageData,E as default}; diff --git a/assets/dev_api_bot_lifespan.md.QwkSyd4_.lean.js b/assets/dev_api_bot_lifespan.md.BDitEzkK.js similarity index 99% rename from assets/dev_api_bot_lifespan.md.QwkSyd4_.lean.js rename to assets/dev_api_bot_lifespan.md.BDitEzkK.js index 7e4cfeb5..98d73872 100644 --- a/assets/dev_api_bot_lifespan.md.QwkSyd4_.lean.js +++ b/assets/dev_api_bot_lifespan.md.BDitEzkK.js @@ -1 +1 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const d=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}'),e={name:"dev/api/bot/lifespan.md"};function l(h,s,p,r,k,o){return t(),a("div",null,s[0]||(s[0]=[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


func __init__(self) -> None

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

源代码在GitHub上查看
python
def __init__(self) -> None:\n    self.life_flag: int = 0\n    self._before_start_funcs: list[LIFESPAN_FUNC] = []\n    self._after_start_funcs: list[LIFESPAN_FUNC] = []\n    self._before_process_shutdown_funcs: list[PROCESS_LIFESPAN_FUNC] = []\n    self._after_shutdown_funcs: list[LIFESPAN_FUNC] = []\n    self._before_process_restart_funcs: list[PROCESS_LIFESPAN_FUNC] = []\n    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

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

说明: 并发运行异步函数

参数:

源代码在GitHub上查看
python
@staticmethod\nasync def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:\n    tasks = [func(*args, **kwargs) if is_coroutine_callable(func) else async_wrapper(func)(*args, **kwargs) for func in funcs]\n    await asyncio.gather(*tasks)

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

说明: 注册启动时的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:\n    self._before_start_funcs.append(func)\n    return func

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

说明: 注册启动时的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:\n    self._after_start_funcs.append(func)\n    return func

func 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:\n    self._before_process_shutdown_funcs.append(func)\n    return func

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

说明: 注册停止后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:\n    self._after_shutdown_funcs.append(func)\n    return func

func 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:\n    self._before_process_restart_funcs.append(func)\n    return func

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

说明: 注册重启后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:\n    self._after_restart_funcs.append(func)\n    return func

async func before_start(self) -> None

说明: 启动前钩子

源代码在GitHub上查看
python
async def before_start(self) -> None:\n    logger.debug('Running before_start functions')\n    await self.run_funcs(self._before_start_funcs)

async func after_start(self) -> None

说明: 启动后钩子

源代码在GitHub上查看
python
async def after_start(self) -> None:\n    logger.debug('Running after_start functions')\n    await self.run_funcs(self._after_start_funcs)

async func before_process_shutdown(self, *args, **kwargs) -> None

说明: 停止前钩子

源代码在GitHub上查看
python
async def before_process_shutdown(self, *args, **kwargs) -> None:\n    logger.debug('Running before_shutdown functions')\n    await self.run_funcs(self._before_process_shutdown_funcs, *args, **kwargs)

async func after_shutdown(self) -> None

说明: 停止后钩子 未实现

源代码在GitHub上查看
python
async def after_shutdown(self) -> None:\n    logger.debug('Running after_shutdown functions')\n    await self.run_funcs(self._after_shutdown_funcs)

async func before_process_restart(self, *args, **kwargs) -> None

说明: 重启前钩子

源代码在GitHub上查看
python
async def before_process_restart(self, *args, **kwargs) -> None:\n    logger.debug('Running before_restart functions')\n    await self.run_funcs(self._before_process_restart_funcs, *args, **kwargs)

async func after_restart(self) -> None

说明: 重启后钩子 未实现

源代码在GitHub上查看
python
async def after_restart(self) -> None:\n    logger.debug('Running after_restart functions')\n    await self.run_funcs(self._after_restart_funcs)
',93)]))}const g=i(e,[["render",l]]);export{d as __pageData,g as default}; +import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const d=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}'),e={name:"dev/api/bot/lifespan.md"};function l(h,s,p,r,k,o){return n(),a("div",null,s[0]||(s[0]=[t('

模块 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


func __init__(self) -> None

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

源代码在GitHub上查看
python
def __init__(self) -> None:\n    self.life_flag: int = 0\n    self._before_start_funcs: list[LIFESPAN_FUNC] = []\n    self._after_start_funcs: list[LIFESPAN_FUNC] = []\n    self._before_process_shutdown_funcs: list[PROCESS_LIFESPAN_FUNC] = []\n    self._after_shutdown_funcs: list[LIFESPAN_FUNC] = []\n    self._before_process_restart_funcs: list[PROCESS_LIFESPAN_FUNC] = []\n    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

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

说明: 并发运行异步函数

参数:

源代码在GitHub上查看
python
@staticmethod\nasync def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:\n    tasks = [func(*args, **kwargs) if is_coroutine_callable(func) else async_wrapper(func)(*args, **kwargs) for func in funcs]\n    await asyncio.gather(*tasks)

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

说明: 注册启动时的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:\n    self._before_start_funcs.append(func)\n    return func

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

说明: 注册启动时的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:\n    self._after_start_funcs.append(func)\n    return func

func 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:\n    self._before_process_shutdown_funcs.append(func)\n    return func

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

说明: 注册停止后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:\n    self._after_shutdown_funcs.append(func)\n    return func

func 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:\n    self._before_process_restart_funcs.append(func)\n    return func

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

说明: 注册重启后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:\n    self._after_restart_funcs.append(func)\n    return func

async func before_start(self) -> None

说明: 启动前钩子

源代码在GitHub上查看
python
async def before_start(self) -> None:\n    logger.debug('Running before_start functions')\n    await self.run_funcs(self._before_start_funcs)

async func after_start(self) -> None

说明: 启动后钩子

源代码在GitHub上查看
python
async def after_start(self) -> None:\n    logger.debug('Running after_start functions')\n    await self.run_funcs(self._after_start_funcs)

async func before_process_shutdown(self, *args, **kwargs) -> None

说明: 停止前钩子

源代码在GitHub上查看
python
async def before_process_shutdown(self, *args, **kwargs) -> None:\n    logger.debug('Running before_shutdown functions')\n    await self.run_funcs(self._before_process_shutdown_funcs, *args, **kwargs)

async func after_shutdown(self) -> None

说明: 停止后钩子 未实现

源代码在GitHub上查看
python
async def after_shutdown(self) -> None:\n    logger.debug('Running after_shutdown functions')\n    await self.run_funcs(self._after_shutdown_funcs)

async func before_process_restart(self, *args, **kwargs) -> None

说明: 重启前钩子

源代码在GitHub上查看
python
async def before_process_restart(self, *args, **kwargs) -> None:\n    logger.debug('Running before_restart functions')\n    await self.run_funcs(self._before_process_restart_funcs, *args, **kwargs)

async func after_restart(self) -> None

说明: 重启后钩子 未实现

源代码在GitHub上查看
python
async def after_restart(self) -> None:\n    logger.debug('Running after_restart functions')\n    await self.run_funcs(self._after_restart_funcs)
',93)]))}const g=i(e,[["render",l]]);export{d as __pageData,g as default}; diff --git a/assets/dev_api_bot_lifespan.md.BDitEzkK.lean.js b/assets/dev_api_bot_lifespan.md.BDitEzkK.lean.js new file mode 100644 index 00000000..61fc6df7 --- /dev/null +++ b/assets/dev_api_bot_lifespan.md.BDitEzkK.lean.js @@ -0,0 +1 @@ +import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const d=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}'),e={name:"dev/api/bot/lifespan.md"};function l(h,s,p,r,k,o){return n(),a("div",null,s[0]||(s[0]=[t("",93)]))}const g=i(e,[["render",l]]);export{d as __pageData,g as default}; diff --git a/assets/dev_api_bot_lifespan.md.QwkSyd4_.js b/assets/dev_api_bot_lifespan.md.QwkSyd4_.js deleted file mode 100644 index 7e4cfeb5..00000000 --- a/assets/dev_api_bot_lifespan.md.QwkSyd4_.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const d=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}'),e={name:"dev/api/bot/lifespan.md"};function l(h,s,p,r,k,o){return t(),a("div",null,s[0]||(s[0]=[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


func __init__(self) -> None

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

源代码在GitHub上查看
python
def __init__(self) -> None:\n    self.life_flag: int = 0\n    self._before_start_funcs: list[LIFESPAN_FUNC] = []\n    self._after_start_funcs: list[LIFESPAN_FUNC] = []\n    self._before_process_shutdown_funcs: list[PROCESS_LIFESPAN_FUNC] = []\n    self._after_shutdown_funcs: list[LIFESPAN_FUNC] = []\n    self._before_process_restart_funcs: list[PROCESS_LIFESPAN_FUNC] = []\n    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

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

说明: 并发运行异步函数

参数:

源代码在GitHub上查看
python
@staticmethod\nasync def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:\n    tasks = [func(*args, **kwargs) if is_coroutine_callable(func) else async_wrapper(func)(*args, **kwargs) for func in funcs]\n    await asyncio.gather(*tasks)

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

说明: 注册启动时的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_before_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:\n    self._before_start_funcs.append(func)\n    return func

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

说明: 注册启动时的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_start(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:\n    self._after_start_funcs.append(func)\n    return func

func 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:\n    self._before_process_shutdown_funcs.append(func)\n    return func

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

说明: 注册停止后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_shutdown(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:\n    self._after_shutdown_funcs.append(func)\n    return func

func 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:\n    self._before_process_restart_funcs.append(func)\n    return func

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

说明: 注册重启后的函数

参数:

返回: LIFESPAN_FUNC: 生命周期函数

源代码在GitHub上查看
python
def on_after_restart(self, func: LIFESPAN_FUNC) -> LIFESPAN_FUNC:\n    self._after_restart_funcs.append(func)\n    return func

async func before_start(self) -> None

说明: 启动前钩子

源代码在GitHub上查看
python
async def before_start(self) -> None:\n    logger.debug('Running before_start functions')\n    await self.run_funcs(self._before_start_funcs)

async func after_start(self) -> None

说明: 启动后钩子

源代码在GitHub上查看
python
async def after_start(self) -> None:\n    logger.debug('Running after_start functions')\n    await self.run_funcs(self._after_start_funcs)

async func before_process_shutdown(self, *args, **kwargs) -> None

说明: 停止前钩子

源代码在GitHub上查看
python
async def before_process_shutdown(self, *args, **kwargs) -> None:\n    logger.debug('Running before_shutdown functions')\n    await self.run_funcs(self._before_process_shutdown_funcs, *args, **kwargs)

async func after_shutdown(self) -> None

说明: 停止后钩子 未实现

源代码在GitHub上查看
python
async def after_shutdown(self) -> None:\n    logger.debug('Running after_shutdown functions')\n    await self.run_funcs(self._after_shutdown_funcs)

async func before_process_restart(self, *args, **kwargs) -> None

说明: 重启前钩子

源代码在GitHub上查看
python
async def before_process_restart(self, *args, **kwargs) -> None:\n    logger.debug('Running before_restart functions')\n    await self.run_funcs(self._before_process_restart_funcs, *args, **kwargs)

async func after_restart(self) -> None

说明: 重启后钩子 未实现

源代码在GitHub上查看
python
async def after_restart(self) -> None:\n    logger.debug('Running after_restart functions')\n    await self.run_funcs(self._after_restart_funcs)
',93)]))}const g=i(e,[["render",l]]);export{d as __pageData,g as default}; diff --git a/assets/dev_api_comm_channel.md.BJ51vfDY.lean.js b/assets/dev_api_comm_channel.md.BJ51vfDY.lean.js deleted file mode 100644 index 3769c214..00000000 --- a/assets/dev_api_comm_channel.md.BJ51vfDY.lean.js +++ /dev/null @@ -1,91 +0,0 @@ -import{_ as i,c as a,a7 as n,o as e}from"./chunks/framework.v7PlT0Wt.js";const E=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"};function t(h,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

模块 liteyuki.comm.channel

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

var SYNC_ON_RECEIVE_FUNC

  • 说明: 同步接收函数

  • 类型: TypeAlias

  • 默认值: Callable[[T], 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])


func __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):
-    self.conn_send, self.conn_recv = Pipe()
-    self._conn_send_inner, self._conn_recv_inner = Pipe()
-    self._closed = False
-    self._on_main_receive_func_ids: list[int] = []
-    self._on_sub_receive_func_ids: list[int] = []
-    self.name: str = name
-    self.is_receive_loop_running = False
-    if type_check is None:
-        type_check = self._get_generic_type() is not None
-    elif type_check:
-        if self._get_generic_type() is None:
-            raise TypeError('Type hint is required for enforcing type check.')
-    self.type_check = type_check
-    if name in _channel:
-        raise ValueError(f'Channel {name} already exists')
-    if IS_MAIN_PROCESS:
-        if name in _channel:
-            raise ValueError(f'Channel {name} already exists')
-        _channel[name] = self

func send(self, data: T)

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

参数:

  • data (T): 数据
源代码在GitHub上查看
python
def send(self, data: T):
-    if self.type_check:
-        _type = self._get_generic_type()
-        if _type is not None and (not self._validate_structure(data, _type)):
-            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)

func receive(self) -> T

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

返回: T: 数据

源代码在GitHub上查看
python
def receive(self) -> T:
-    if self._closed:
-        raise RuntimeError('Cannot receive from a closed channel')
-    while True:
-        data = self.conn_recv.recv()
-        return data

async func async_receive(self) -> T

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

返回: T: 数据

源代码在GitHub上查看
python
async def async_receive(self) -> T:
-    loop = asyncio.get_running_loop()
-    data = await loop.run_in_executor(None, self.receive)
-    return data

func 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]]:
-    if not IS_MAIN_PROCESS:
-        raise RuntimeError('on_receive can only be used in main process')
-
-    def decorator(func: Callable[[T], Any]) -> Callable[[T], Any]:
-        global _func_id
-
-        async def wrapper(data: T) -> Any:
-            if filter_func is not None:
-                if is_coroutine_callable(filter_func):
-                    if not await filter_func(data):
-                        return
-                elif not filter_func(data):
-                    return
-            if is_coroutine_callable(func):
-                return await func(data)
-            else:
-                return func(data)
-        _callback_funcs[_func_id] = wrapper
-        if IS_MAIN_PROCESS:
-            self._on_main_receive_func_ids.append(_func_id)
-        else:
-            self._on_sub_receive_func_ids.append(_func_id)
-        _func_id += 1
-        return func
-    return decorator

var active_channel

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

  • 类型: Channel

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

var passive_channel

  • 说明: 被动通道

  • 类型: Channel

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

var channel_deliver_active_channel

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

  • 类型: Channel[Channel[Any]]

  • 默认值: NO_DEFAULT

var channel_deliver_passive_channel

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

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

  • 默认值: NO_DEFAULT


func set_channel(name: str, channel: Channel)

说明: 设置通道实例

参数:

  • name (str): 通道名称
  • channel (Channel): 通道实例
源代码在GitHub上查看
python
def set_channel(name: str, channel: 'Channel'):
-    if not isinstance(channel, Channel):
-        raise TypeError(f'channel_ must be an instance of Channel, {type(channel)} found')
-    if IS_MAIN_PROCESS:
-        if name in _channel:
-            raise ValueError(f'Channel {name} already exists')
-        _channel[name] = channel
-    else:
-        channel_deliver_passive_channel.send(('set_channel', {'name': name, 'channel_': channel}))

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

说明: 设置通道实例

参数:

源代码在GitHub上查看
python
def set_channels(channels: dict[str, 'Channel']):
-    for name, channel in channels.items():
-        set_channel(name, channel)

func get_channel(name: str) -> Channel

说明: 获取通道实例

参数:

  • name (str): 通道名称

返回: Channel: 通道实例

源代码在GitHub上查看
python
def get_channel(name: str) -> 'Channel':
-    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()

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

说明: 获取通道实例们

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

源代码在GitHub上查看
python
def get_channels() -> dict[str, 'Channel']:
-    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')

func 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')

func 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')

func 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())
`,86)]))}const g=i(l,[["render",t]]);export{E as __pageData,g as default}; diff --git a/assets/dev_api_comm_channel.md.BJ51vfDY.js b/assets/dev_api_comm_channel.md.DEuJMgaR.js similarity index 99% rename from assets/dev_api_comm_channel.md.BJ51vfDY.js rename to assets/dev_api_comm_channel.md.DEuJMgaR.js index 3769c214..1060749f 100644 --- a/assets/dev_api_comm_channel.md.BJ51vfDY.js +++ b/assets/dev_api_comm_channel.md.DEuJMgaR.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as e}from"./chunks/framework.v7PlT0Wt.js";const E=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"};function t(h,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

模块 liteyuki.comm.channel

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

var SYNC_ON_RECEIVE_FUNC

  • 说明: 同步接收函数

  • 类型: TypeAlias

  • 默认值: Callable[[T], 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])


func __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 i,c as a,o as n,al as e}from"./chunks/framework.BUxnStXl.js";const E=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"};function t(h,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[e(`

模块 liteyuki.comm.channel

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

var SYNC_ON_RECEIVE_FUNC

  • 说明: 同步接收函数

  • 类型: TypeAlias

  • 默认值: Callable[[T], 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])


func __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):
     self.conn_send, self.conn_recv = Pipe()
     self._conn_send_inner, self._conn_recv_inner = Pipe()
     self._closed = False
diff --git a/assets/dev_api_comm_channel.md.DEuJMgaR.lean.js b/assets/dev_api_comm_channel.md.DEuJMgaR.lean.js
new file mode 100644
index 00000000..b28b21f5
--- /dev/null
+++ b/assets/dev_api_comm_channel.md.DEuJMgaR.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as e}from"./chunks/framework.BUxnStXl.js";const E=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"};function t(h,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[e("",86)]))}const g=i(l,[["render",t]]);export{E as __pageData,g as default};
diff --git a/assets/dev_api_comm_event.md.BjGFyCyy.lean.js b/assets/dev_api_comm_event.md.BjGFyCyy.lean.js
deleted file mode 100644
index da002256..00000000
--- a/assets/dev_api_comm_event.md.BjGFyCyy.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as s,c as t,a7 as i,o as e}from"./chunks/framework.v7PlT0Wt.js";const c=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}'),n={name:"dev/api/comm/event.md"};function l(h,a,r,d,p,o){return e(),t("div",null,a[0]||(a[0]=[i('

模块 liteyuki.comm.event

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

class Event


func __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)]))}const m=s(n,[["render",l]]);export{c as __pageData,m as default}; diff --git a/assets/dev_api_comm_event.md.BjGFyCyy.js b/assets/dev_api_comm_event.md.C8x_KhiZ.js similarity index 91% rename from assets/dev_api_comm_event.md.BjGFyCyy.js rename to assets/dev_api_comm_event.md.C8x_KhiZ.js index da002256..162ae344 100644 --- a/assets/dev_api_comm_event.md.BjGFyCyy.js +++ b/assets/dev_api_comm_event.md.C8x_KhiZ.js @@ -1 +1 @@ -import{_ as s,c as t,a7 as i,o as e}from"./chunks/framework.v7PlT0Wt.js";const c=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}'),n={name:"dev/api/comm/event.md"};function l(h,a,r,d,p,o){return e(),t("div",null,a[0]||(a[0]=[i('

模块 liteyuki.comm.event

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

class Event


func __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)]))}const m=s(n,[["render",l]]);export{c as __pageData,m as default}; +import{_ as s,c as t,o as i,al as e}from"./chunks/framework.BUxnStXl.js";const c=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}'),n={name:"dev/api/comm/event.md"};function l(h,a,r,d,p,o){return i(),t("div",null,a[0]||(a[0]=[e('

模块 liteyuki.comm.event

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

class Event


func __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)]))}const m=s(n,[["render",l]]);export{c as __pageData,m as default}; diff --git a/assets/dev_api_comm_event.md.C8x_KhiZ.lean.js b/assets/dev_api_comm_event.md.C8x_KhiZ.lean.js new file mode 100644 index 00000000..7c17fb12 --- /dev/null +++ b/assets/dev_api_comm_event.md.C8x_KhiZ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as t,o as i,al as e}from"./chunks/framework.BUxnStXl.js";const c=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}'),n={name:"dev/api/comm/event.md"};function l(h,a,r,d,p,o){return i(),t("div",null,a[0]||(a[0]=[e("",6)]))}const m=s(n,[["render",l]]);export{c as __pageData,m as default}; diff --git a/assets/dev_api_comm_index.md.BFFUol4Q.js b/assets/dev_api_comm_index.md.DpZuXB4y.js similarity index 85% rename from assets/dev_api_comm_index.md.BFFUol4Q.js rename to assets/dev_api_comm_index.md.DpZuXB4y.js index 3198a3d7..5b774125 100644 --- a/assets/dev_api_comm_index.md.BFFUol4Q.js +++ b/assets/dev_api_comm_index.md.DpZuXB4y.js @@ -1 +1 @@ -import{_ as o,c as i,j as e,a,o as n}from"./chunks/framework.v7PlT0Wt.js";const _=JSON.parse('{"title":"liteyuki.comm","description":"","frontmatter":{"title":"liteyuki.comm","collapsed":true},"headers":[],"relativePath":"dev/api/comm/index.md","filePath":"zh/dev/api/comm/index.md","lastUpdated":null}'),l={name:"dev/api/comm/index.md"};function r(c,t,m,d,s,p){return n(),i("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-comm",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.comm"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-comm","aria-label":'Permalink to "**模块** `liteyuki.comm`"'},"​")],-1),e("p",null,"该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage",-1)]))}const f=o(l,[["render",r]]);export{_ as __pageData,f as default}; +import{_ as o,c as i,o as n,j as e,a}from"./chunks/framework.BUxnStXl.js";const _=JSON.parse('{"title":"liteyuki.comm","description":"","frontmatter":{"title":"liteyuki.comm","collapsed":true},"headers":[],"relativePath":"dev/api/comm/index.md","filePath":"zh/dev/api/comm/index.md","lastUpdated":null}'),l={name:"dev/api/comm/index.md"};function r(c,t,m,d,s,p){return n(),i("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-comm",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.comm"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-comm","aria-label":'Permalink to "**模块** `liteyuki.comm`"'},"​")],-1),e("p",null,"该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage",-1)]))}const f=o(l,[["render",r]]);export{_ as __pageData,f as default}; diff --git a/assets/dev_api_comm_index.md.BFFUol4Q.lean.js b/assets/dev_api_comm_index.md.DpZuXB4y.lean.js similarity index 85% rename from assets/dev_api_comm_index.md.BFFUol4Q.lean.js rename to assets/dev_api_comm_index.md.DpZuXB4y.lean.js index 3198a3d7..5b774125 100644 --- a/assets/dev_api_comm_index.md.BFFUol4Q.lean.js +++ b/assets/dev_api_comm_index.md.DpZuXB4y.lean.js @@ -1 +1 @@ -import{_ as o,c as i,j as e,a,o as n}from"./chunks/framework.v7PlT0Wt.js";const _=JSON.parse('{"title":"liteyuki.comm","description":"","frontmatter":{"title":"liteyuki.comm","collapsed":true},"headers":[],"relativePath":"dev/api/comm/index.md","filePath":"zh/dev/api/comm/index.md","lastUpdated":null}'),l={name:"dev/api/comm/index.md"};function r(c,t,m,d,s,p){return n(),i("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-comm",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.comm"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-comm","aria-label":'Permalink to "**模块** `liteyuki.comm`"'},"​")],-1),e("p",null,"该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage",-1)]))}const f=o(l,[["render",r]]);export{_ as __pageData,f as default}; +import{_ as o,c as i,o as n,j as e,a}from"./chunks/framework.BUxnStXl.js";const _=JSON.parse('{"title":"liteyuki.comm","description":"","frontmatter":{"title":"liteyuki.comm","collapsed":true},"headers":[],"relativePath":"dev/api/comm/index.md","filePath":"zh/dev/api/comm/index.md","lastUpdated":null}'),l={name:"dev/api/comm/index.md"};function r(c,t,m,d,s,p){return n(),i("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-comm",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.comm"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-comm","aria-label":'Permalink to "**模块** `liteyuki.comm`"'},"​")],-1),e("p",null,"该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage",-1)]))}const f=o(l,[["render",r]]);export{_ as __pageData,f as default}; diff --git a/assets/dev_api_comm_storage.md.C4GYMY_x.lean.js b/assets/dev_api_comm_storage.md.C4GYMY_x.lean.js deleted file mode 100644 index 1d47e94d..00000000 --- a/assets/dev_api_comm_storage.md.C4GYMY_x.lean.js +++ /dev/null @@ -1,90 +0,0 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const g=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}'),e={name:"dev/api/comm/storage.md"};function h(l,s,k,p,r,d){return t(),a("div",null,s[0]||(s[0]=[n(`

模块 liteyuki.comm.storage

共享内存模块。类似于redis,但是更加轻量级并且线程安全

var _on_main_subscriber_receive_funcs

  • 说明: 主进程订阅者接收函数

  • 类型: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • 默认值: {}

var _on_sub_subscriber_receive_funcs

  • 说明: 子进程订阅者接收函数

  • 类型: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • 默认值: {}

class KeyValueStore


func __init__(self)

源代码在GitHub上查看
python
def __init__(self):
-    self._store = {}
-    self.active_chan = Channel[tuple[str, Optional[dict[str, Any]]]](name='shared_memory-active')
-    self.passive_chan = Channel[tuple[str, Optional[dict[str, Any]]]](name='shared_memory-passive')
-    self.publish_channel = Channel[tuple[str, Any]](name='shared_memory-publish')
-    self.is_main_receive_loop_running = False
-    self.is_sub_receive_loop_running = False

func set(self, key: str, value: Any) -> None

说明: 设置键值对

参数:

  • key: 键
  • value: 值
源代码在GitHub上查看
python
def set(self, key: str, value: Any) -> None:
-    if IS_MAIN_PROCESS:
-        lock = _get_lock(key)
-        with lock:
-            self._store[key] = value
-    else:
-        self.passive_chan.send(('set', {'key': key, 'value': value}))

func get(self, key: str, default: Optional[Any] = None) -> Optional[Any]

说明: 获取键值对

参数:

  • key: 键
  • default: 默认值

返回: Any: 值

源代码在GitHub上查看
python
def get(self, key: str, default: Optional[Any]=None) -> Optional[Any]:
-    if IS_MAIN_PROCESS:
-        lock = _get_lock(key)
-        with lock:
-            return self._store.get(key, default)
-    else:
-        recv_chan = Channel[Optional[Any]]('recv_chan')
-        self.passive_chan.send(('get', {'key': key, 'default': default, 'recv_chan': recv_chan}))
-        return recv_chan.receive()

func delete(self, key: str, ignore_key_error: bool = True) -> None

说明: 删除键值对

参数:

  • key: 键
  • ignore_key_error: 是否忽略键不存在的错误
源代码在GitHub上查看
python
def delete(self, key: str, ignore_key_error: bool=True) -> None:
-    if IS_MAIN_PROCESS:
-        lock = _get_lock(key)
-        with lock:
-            if key in self._store:
-                try:
-                    del self._store[key]
-                    del _locks[key]
-                except KeyError as e:
-                    if not ignore_key_error:
-                        raise e
-    else:
-        self.passive_chan.send(('delete', {'key': key}))

func get_all(self) -> dict[str, Any]

说明: 获取所有键值对

返回: dict[str, Any]: 键值对

源代码在GitHub上查看
python
def get_all(self) -> dict[str, Any]:
-    if IS_MAIN_PROCESS:
-        return self._store
-    else:
-        recv_chan = Channel[dict[str, Any]]('recv_chan')
-        self.passive_chan.send(('get_all', {'recv_chan': recv_chan}))
-        return recv_chan.receive()

func publish(self, channel_: str, data: Any) -> None

说明: 发布消息

参数:

  • channel_: 频道
  • data: 数据
源代码在GitHub上查看
python
def publish(self, channel_: str, data: Any) -> None:
-    self.active_chan.send(('publish', {'channel': channel_, 'data': data}))

func on_subscriber_receive(self, channel_: str) -> Callable[[ON_RECEIVE_FUNC], ON_RECEIVE_FUNC]

说明: 订阅者接收消息时的回调

参数:

  • channel_: 频道

返回: 装饰器

源代码在GitHub上查看
python
def on_subscriber_receive(self, channel_: str) -> Callable[[ON_RECEIVE_FUNC], ON_RECEIVE_FUNC]:
-    if not IS_MAIN_PROCESS:
-        raise RuntimeError('Cannot subscribe in sub process.')
-
-    def decorator(func: ON_RECEIVE_FUNC) -> ON_RECEIVE_FUNC:
-
-        async def wrapper(data: Any):
-            if is_coroutine_callable(func):
-                await func(data)
-            else:
-                func(data)
-        if IS_MAIN_PROCESS:
-            if channel_ not in _on_main_subscriber_receive_funcs:
-                _on_main_subscriber_receive_funcs[channel_] = []
-            _on_main_subscriber_receive_funcs[channel_].append(wrapper)
-        else:
-            if channel_ not in _on_sub_subscriber_receive_funcs:
-                _on_sub_subscriber_receive_funcs[channel_] = []
-            _on_sub_subscriber_receive_funcs[channel_].append(wrapper)
-        return wrapper
-    return decorator

@staticmethod

async func run_subscriber_receive_funcs(channel_: str, data: Any)

说明: 运行订阅者接收函数

参数:

  • channel_: 频道
  • data: 数据
源代码在GitHub上查看
python
@staticmethod
-async def run_subscriber_receive_funcs(channel_: str, data: Any):
-    [asyncio.create_task(func(data)) for func in _on_main_subscriber_receive_funcs[channel_]]

async func start_receive_loop(self)

说明: 启动发布订阅接收器循环,在主进程中运行,若有子进程订阅则推送给子进程

源代码在GitHub上查看
python
async def start_receive_loop(self):
-    if not IS_MAIN_PROCESS:
-        raise RuntimeError('Cannot start receive loop in sub process.')
-    while True:
-        data = await self.active_chan.async_receive()
-        if data[0] == 'publish':
-            await self.run_subscriber_receive_funcs(data[1]['channel'], data[1]['data'])
-            self.publish_channel.send(data)

class GlobalKeyValueStore


@classmethod

func get_instance(cls)

源代码在GitHub上查看
python
@classmethod
-def get_instance(cls):
-    if cls._instance is None:
-        with cls._lock:
-            if cls._instance is None:
-                cls._instance = KeyValueStore()
-    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')

func 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']
-    recv_chan = data[1]['recv_chan']
-    recv_chan.send(shared_memory.get(key, default))

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

func on_set(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'set')
-def on_set(data: tuple[str, dict[str, Any]]):
-    key = data[1]['key']
-    value = data[1]['value']
-    shared_memory.set(key, value)

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

func on_delete(data: tuple[str, dict[str, Any]])

源代码在GitHub上查看
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'delete')
-def on_delete(data: tuple[str, dict[str, Any]]):
-    key = data[1]['key']
-    shared_memory.delete(key)

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

func 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())
`,85)]))}const y=i(e,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/dev_api_comm_storage.md.C4GYMY_x.js b/assets/dev_api_comm_storage.md.CAq3N5ZQ.js similarity index 99% rename from assets/dev_api_comm_storage.md.C4GYMY_x.js rename to assets/dev_api_comm_storage.md.CAq3N5ZQ.js index 1d47e94d..49f05949 100644 --- a/assets/dev_api_comm_storage.md.C4GYMY_x.js +++ b/assets/dev_api_comm_storage.md.CAq3N5ZQ.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const g=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}'),e={name:"dev/api/comm/storage.md"};function h(l,s,k,p,r,d){return t(),a("div",null,s[0]||(s[0]=[n(`

模块 liteyuki.comm.storage

共享内存模块。类似于redis,但是更加轻量级并且线程安全

var _on_main_subscriber_receive_funcs

  • 说明: 主进程订阅者接收函数

  • 类型: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • 默认值: {}

var _on_sub_subscriber_receive_funcs

  • 说明: 子进程订阅者接收函数

  • 类型: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • 默认值: {}

class KeyValueStore


func __init__(self)

源代码在GitHub上查看
python
def __init__(self):
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const g=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}'),e={name:"dev/api/comm/storage.md"};function h(l,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[t(`

模块 liteyuki.comm.storage

共享内存模块。类似于redis,但是更加轻量级并且线程安全

var _on_main_subscriber_receive_funcs

  • 说明: 主进程订阅者接收函数

  • 类型: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • 默认值: {}

var _on_sub_subscriber_receive_funcs

  • 说明: 子进程订阅者接收函数

  • 类型: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • 默认值: {}

class KeyValueStore


func __init__(self)

源代码在GitHub上查看
python
def __init__(self):
     self._store = {}
     self.active_chan = Channel[tuple[str, Optional[dict[str, Any]]]](name='shared_memory-active')
     self.passive_chan = Channel[tuple[str, Optional[dict[str, Any]]]](name='shared_memory-passive')
diff --git a/assets/dev_api_comm_storage.md.CAq3N5ZQ.lean.js b/assets/dev_api_comm_storage.md.CAq3N5ZQ.lean.js
new file mode 100644
index 00000000..e55a68a7
--- /dev/null
+++ b/assets/dev_api_comm_storage.md.CAq3N5ZQ.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const g=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}'),e={name:"dev/api/comm/storage.md"};function h(l,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[t("",85)]))}const y=i(e,[["render",h]]);export{g as __pageData,y as default};
diff --git a/assets/dev_api_config.md.CQFvBqcK.lean.js b/assets/dev_api_config.md.CQFvBqcK.lean.js
deleted file mode 100644
index ed610d2d..00000000
--- a/assets/dev_api_config.md.CQFvBqcK.lean.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import{_ as a,c as n,a7 as i,j as t,o as l}from"./chunks/framework.v7PlT0Wt.js";const E=JSON.parse('{"title":"liteyuki.config","description":"","frontmatter":{"title":"liteyuki.config"},"headers":[],"relativePath":"dev/api/config.md","filePath":"zh/dev/api/config.md","lastUpdated":null}'),h={name:"dev/api/config.md"};function k(e,s,p,r,d,o){return l(),n("div",null,s[0]||(s[0]=[i('

模块 liteyuki.config

该模块用于常用配置文件的加载 多配置文件编写原则:

  1. 尽量不要冲突: 一个键不要多次出现
  2. 分工明确: 每个配置文件给一个或一类服务提供配置
  3. 扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套
  4. 注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件
  5. 请不要将需要动态加载的内容写入配置文件,你应该使用其他储存方式

func flat_config(config: dict[str, Any]) -> dict[str, Any]

说明: 扁平化配置文件

',6),t("p",{"a.b.c:":"",1:""},"{a:{b:{c:1}}} ->",-1),i(`

参数:

  • config: 配置项目

返回: 扁平化后的配置文件,但也包含原有的键值对

源代码在GitHub上查看
python
def flat_config(config: dict[str, Any]) -> dict[str, Any]:
-    new_config = copy.deepcopy(config)
-    for key, value in config.items():
-        if isinstance(value, dict):
-            for k, v in flat_config(value).items():
-                new_config[f'{key}.{k}'] = v
-    return new_config

func load_from_yaml(file_: str) -> dict[str, Any]

说明: Load config from yaml file

源代码在GitHub上查看
python
def load_from_yaml(file_: str) -> dict[str, Any]:
-    logger.debug(f'Loading YAML config from {file_}')
-    config = yaml.safe_load(open(file_, 'r', encoding='utf-8'))
-    return flat_config(config if config is not None else {})

func load_from_json(file_: str) -> dict[str, Any]

说明: Load config from json file

源代码在GitHub上查看
python
def load_from_json(file_: str) -> dict[str, Any]:
-    logger.debug(f'Loading JSON config from {file_}')
-    config = json.load(open(file_, 'r', encoding='utf-8'))
-    return flat_config(config if config is not None else {})

func load_from_toml(file_: str) -> dict[str, Any]

说明: Load config from toml file

源代码在GitHub上查看
python
def load_from_toml(file_: str) -> dict[str, Any]:
-    logger.debug(f'Loading TOML config from {file_}')
-    config = toml.load(open(file_, 'r', encoding='utf-8'))
-    return flat_config(config if config is not None else {})

func load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]

说明: 从指定文件加载配置项,会自动识别文件格式 默认执行扁平化选项

源代码在GitHub上查看
python
def load_from_files(*files: str, no_warning: bool=False) -> dict[str, Any]:
-    config = {}
-    for file in files:
-        if os.path.exists(file):
-            if file.endswith(('.yaml', 'yml')):
-                config.update(load_from_yaml(file))
-            elif file.endswith('.json'):
-                config.update(load_from_json(file))
-            elif file.endswith('.toml'):
-                config.update(load_from_toml(file))
-            elif not no_warning:
-                logger.warning(f'Unsupported config file format: {file}')
-        elif not no_warning:
-            logger.warning(f'Config file not found: {file}')
-    return config

func load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]

说明: 从目录下加载配置文件,不递归 按照读取文件的优先级反向覆盖 默认执行扁平化选项

源代码在GitHub上查看
python
def load_configs_from_dirs(*directories: str, no_waring: bool=False) -> dict[str, Any]:
-    config = {}
-    for directory in directories:
-        if not os.path.exists(directory):
-            if not no_waring:
-                logger.warning(f'Directory not found: {directory}')
-            continue
-        for file in os.listdir(directory):
-            if file.endswith(_SUPPORTED_CONFIG_FORMATS):
-                config.update(load_from_files(os.path.join(directory, file), no_warning=no_waring))
-    return config

func load_config_in_default(no_waring: bool = False) -> dict[str, Any]

说明: 从一个标准的轻雪项目加载配置文件 项目目录下的config.*和config目录下的所有配置文件 项目目录下的配置文件优先

参数:

  • no_waring: 是否关闭警告
源代码在GitHub上查看
python
def load_config_in_default(no_waring: bool=False) -> dict[str, Any]:
-    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

class Loader


func __init__(self)

源代码在GitHub上查看
python
def __init__(self):
-    self.config = {}

func load_from_yaml(self, fp: str) -> Loader

说明: 从yaml文件加载配置

参数:

  • fp:
源代码在GitHub上查看
python
def load_from_yaml(self, fp: str) -> 'Loader':
-    with open(fp, 'r') as file:
-        self.config.update(yaml.safe_load(file))
-    return self

func load_from_toml(self, fp: str) -> Loader

说明: 从toml文件加载配置

源代码在GitHub上查看
python
def load_from_toml(self, fp: str) -> 'Loader':
-    with open(fp, 'r') as file:
-        self.config.update(toml.load(file))
-    return self

func load_from_json(self, fp: str) -> Loader

说明: 从json文件加载配置

源代码在GitHub上查看
python
def load_from_json(self, fp: str) -> 'Loader':
-    with open(fp, 'r') as file:
-        self.config.update(json.load(file))
-    return self

func load_from_env(self, prefix: str = '') -> Loader

说明: 从环境变量加载配置

源代码在GitHub上查看
python
def load_from_env(self, prefix: str='') -> 'Loader':
-    for key, value in os.environ.items():
-        if key.startswith(prefix):
-            self.config[key[len(prefix):]] = value
-    return self

func merge(self, loader: Loader) -> Loader

说明: 合并两个Loader键值对树

源代码在GitHub上查看
python
def merge(self, loader: 'Loader') -> 'Loader':
-    self.config.update(loader.config)
-    return self

func get(self, key: str, default: Any = None) -> Any

说明: 获取配置值

源代码在GitHub上查看
python
def get(self, key: str, default: Any=None) -> Any:
-    return self.config.get(key, default)
`,60)]))}const y=a(h,[["render",k]]);export{E as __pageData,y as default}; diff --git a/assets/dev_api_config.md.CQFvBqcK.js b/assets/dev_api_config.md.DWW7CpGb.js similarity index 99% rename from assets/dev_api_config.md.CQFvBqcK.js rename to assets/dev_api_config.md.DWW7CpGb.js index ed610d2d..5e36a9fa 100644 --- a/assets/dev_api_config.md.CQFvBqcK.js +++ b/assets/dev_api_config.md.DWW7CpGb.js @@ -1,4 +1,4 @@ -import{_ as a,c as n,a7 as i,j as t,o as l}from"./chunks/framework.v7PlT0Wt.js";const E=JSON.parse('{"title":"liteyuki.config","description":"","frontmatter":{"title":"liteyuki.config"},"headers":[],"relativePath":"dev/api/config.md","filePath":"zh/dev/api/config.md","lastUpdated":null}'),h={name:"dev/api/config.md"};function k(e,s,p,r,d,o){return l(),n("div",null,s[0]||(s[0]=[i('

模块 liteyuki.config

该模块用于常用配置文件的加载 多配置文件编写原则:

  1. 尽量不要冲突: 一个键不要多次出现
  2. 分工明确: 每个配置文件给一个或一类服务提供配置
  3. 扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套
  4. 注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件
  5. 请不要将需要动态加载的内容写入配置文件,你应该使用其他储存方式

func flat_config(config: dict[str, Any]) -> dict[str, Any]

说明: 扁平化配置文件

',6),t("p",{"a.b.c:":"",1:""},"{a:{b:{c:1}}} ->",-1),i(`

参数:

  • config: 配置项目

返回: 扁平化后的配置文件,但也包含原有的键值对

源代码在GitHub上查看
python
def flat_config(config: dict[str, Any]) -> dict[str, Any]:
+import{_ as a,c as n,o as t,al as i,j as l}from"./chunks/framework.BUxnStXl.js";const E=JSON.parse('{"title":"liteyuki.config","description":"","frontmatter":{"title":"liteyuki.config"},"headers":[],"relativePath":"dev/api/config.md","filePath":"zh/dev/api/config.md","lastUpdated":null}'),h={name:"dev/api/config.md"};function k(e,s,p,r,d,o){return t(),n("div",null,s[0]||(s[0]=[i('

模块 liteyuki.config

该模块用于常用配置文件的加载 多配置文件编写原则:

  1. 尽量不要冲突: 一个键不要多次出现
  2. 分工明确: 每个配置文件给一个或一类服务提供配置
  3. 扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套
  4. 注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件
  5. 请不要将需要动态加载的内容写入配置文件,你应该使用其他储存方式

func flat_config(config: dict[str, Any]) -> dict[str, Any]

说明: 扁平化配置文件

',6),l("p",{"a.b.c:":"",1:""},"{a:{b:{c:1}}} ->",-1),i(`

参数:

  • config: 配置项目

返回: 扁平化后的配置文件,但也包含原有的键值对

源代码在GitHub上查看
python
def flat_config(config: dict[str, Any]) -> dict[str, Any]:
     new_config = copy.deepcopy(config)
     for key, value in config.items():
         if isinstance(value, dict):
diff --git a/assets/dev_api_config.md.DWW7CpGb.lean.js b/assets/dev_api_config.md.DWW7CpGb.lean.js
new file mode 100644
index 00000000..24071f98
--- /dev/null
+++ b/assets/dev_api_config.md.DWW7CpGb.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as n,o as t,al as i,j as l}from"./chunks/framework.BUxnStXl.js";const E=JSON.parse('{"title":"liteyuki.config","description":"","frontmatter":{"title":"liteyuki.config"},"headers":[],"relativePath":"dev/api/config.md","filePath":"zh/dev/api/config.md","lastUpdated":null}'),h={name:"dev/api/config.md"};function k(e,s,p,r,d,o){return t(),n("div",null,s[0]||(s[0]=[i("",6),l("p",{"a.b.c:":"",1:""},"{a:{b:{c:1}}} ->",-1),i("",60)]))}const y=a(h,[["render",k]]);export{E as __pageData,y as default};
diff --git a/assets/dev_api_core_index.md.SLqcvS5w.js b/assets/dev_api_core_index.md.BkWargRp.js
similarity index 90%
rename from assets/dev_api_core_index.md.SLqcvS5w.js
rename to assets/dev_api_core_index.md.BkWargRp.js
index 9fcc157e..d5aa8a71 100644
--- a/assets/dev_api_core_index.md.SLqcvS5w.js
+++ b/assets/dev_api_core_index.md.BkWargRp.js
@@ -1 +1 @@
-import{_ as r,c as i,j as e,a,o}from"./chunks/framework.v7PlT0Wt.js";const f=JSON.parse('{"title":"liteyuki.core","description":"","frontmatter":{"title":"liteyuki.core","collapsed":true},"headers":[],"relativePath":"dev/api/core/index.md","filePath":"zh/dev/api/core/index.md","lastUpdated":null}'),l={name:"dev/api/core/index.md"};function n(c,t,d,s,p,u){return o(),i("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-core",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.core"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-core","aria-label":'Permalink to "**模块** `liteyuki.core`"'},"​")],-1)]))}const k=r(l,[["render",n]]);export{f as __pageData,k as default};
+import{_ as r,c as i,o,j as e,a}from"./chunks/framework.BUxnStXl.js";const f=JSON.parse('{"title":"liteyuki.core","description":"","frontmatter":{"title":"liteyuki.core","collapsed":true},"headers":[],"relativePath":"dev/api/core/index.md","filePath":"zh/dev/api/core/index.md","lastUpdated":null}'),l={name:"dev/api/core/index.md"};function n(c,t,d,s,p,u){return o(),i("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-core",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.core"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-core","aria-label":'Permalink to "**模块** `liteyuki.core`"'},"​")],-1)]))}const k=r(l,[["render",n]]);export{f as __pageData,k as default};
diff --git a/assets/dev_api_core_index.md.SLqcvS5w.lean.js b/assets/dev_api_core_index.md.BkWargRp.lean.js
similarity index 90%
rename from assets/dev_api_core_index.md.SLqcvS5w.lean.js
rename to assets/dev_api_core_index.md.BkWargRp.lean.js
index 9fcc157e..d5aa8a71 100644
--- a/assets/dev_api_core_index.md.SLqcvS5w.lean.js
+++ b/assets/dev_api_core_index.md.BkWargRp.lean.js
@@ -1 +1 @@
-import{_ as r,c as i,j as e,a,o}from"./chunks/framework.v7PlT0Wt.js";const f=JSON.parse('{"title":"liteyuki.core","description":"","frontmatter":{"title":"liteyuki.core","collapsed":true},"headers":[],"relativePath":"dev/api/core/index.md","filePath":"zh/dev/api/core/index.md","lastUpdated":null}'),l={name:"dev/api/core/index.md"};function n(c,t,d,s,p,u){return o(),i("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-core",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.core"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-core","aria-label":'Permalink to "**模块** `liteyuki.core`"'},"​")],-1)]))}const k=r(l,[["render",n]]);export{f as __pageData,k as default};
+import{_ as r,c as i,o,j as e,a}from"./chunks/framework.BUxnStXl.js";const f=JSON.parse('{"title":"liteyuki.core","description":"","frontmatter":{"title":"liteyuki.core","collapsed":true},"headers":[],"relativePath":"dev/api/core/index.md","filePath":"zh/dev/api/core/index.md","lastUpdated":null}'),l={name:"dev/api/core/index.md"};function n(c,t,d,s,p,u){return o(),i("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-core",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.core"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-core","aria-label":'Permalink to "**模块** `liteyuki.core`"'},"​")],-1)]))}const k=r(l,[["render",n]]);export{f as __pageData,k as default};
diff --git a/assets/dev_api_core_manager.md.CvJAObrs.js b/assets/dev_api_core_manager.md.CppxG0bb.js
similarity index 99%
rename from assets/dev_api_core_manager.md.CvJAObrs.js
rename to assets/dev_api_core_manager.md.CppxG0bb.js
index e5486892..69f43a69 100644
--- a/assets/dev_api_core_manager.md.CvJAObrs.js
+++ b/assets/dev_api_core_manager.md.CppxG0bb.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a7 as n,o as e}from"./chunks/framework.v7PlT0Wt.js";const E=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}'),t={name:"dev/api/core/manager.md"};function l(h,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[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


func __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 i,c as a,o as n,al as e}from"./chunks/framework.BUxnStXl.js";const E=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}'),t={name:"dev/api/core/manager.md"};function l(h,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[e(`

模块 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


func __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
diff --git a/assets/dev_api_core_manager.md.CppxG0bb.lean.js b/assets/dev_api_core_manager.md.CppxG0bb.lean.js
new file mode 100644
index 00000000..12db7b59
--- /dev/null
+++ b/assets/dev_api_core_manager.md.CppxG0bb.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as e}from"./chunks/framework.BUxnStXl.js";const E=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}'),t={name:"dev/api/core/manager.md"};function l(h,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[e("",75)]))}const o=i(t,[["render",l]]);export{E as __pageData,o as default};
diff --git a/assets/dev_api_core_manager.md.CvJAObrs.lean.js b/assets/dev_api_core_manager.md.CvJAObrs.lean.js
deleted file mode 100644
index e5486892..00000000
--- a/assets/dev_api_core_manager.md.CvJAObrs.lean.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import{_ as i,c as a,a7 as n,o as e}from"./chunks/framework.v7PlT0Wt.js";const E=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}'),t={name:"dev/api/core/manager.md"};function l(h,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[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


func __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
-    self.channel_deliver_passive = channel_deliver_passive
-    self.publish = publish

class ProcessManager


func __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] = {}

func start_all(self)

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

源代码在GitHub上查看
python
def start_all(self):
-    for name in self.targets:
-        logger.debug(f'Starting process {name}')
-        threading.Thread(target=self._run_process, args=(name,), daemon=True).start()

func add_target(self, name: str, target: TARGET_FUNC, args: tuple = (), kwargs = None)

说明: 添加进程

参数:

  • name: 进程名,用于获取和唯一标识
  • target: 进程函数
  • args: 进程函数参数
  • kwargs: 进程函数关键字参数,通常会默认传入chan_active和chan_passive
源代码在GitHub上查看
python
def add_target(self, name: str, target: TARGET_FUNC, args: tuple=(), kwargs=None):
-    if kwargs is None:
-        kwargs = {}
-    chan_active: Channel = Channel(name=f'{name}-active')
-    chan_passive: Channel = Channel(name=f'{name}-passive')
-    channel_deliver = ChannelDeliver(active=chan_active, passive=chan_passive, channel_deliver_active=channel_deliver_active_channel, channel_deliver_passive=channel_deliver_passive_channel, publish=publish_channel)
-    self.targets[name] = (_delivery_channel_wrapper, (target, channel_deliver, shared_memory, *args), kwargs)

func join_all(self)

源代码在GitHub上查看
python
def join_all(self):
-    for name, process in self.targets:
-        process.join()

func terminate(self, name: str)

说明: 终止进程并从进程字典中删除

参数:

  • name:
源代码在GitHub上查看
python
def terminate(self, name: str):
-    if name not in self.processes:
-        logger.warning(f'Process {name} not found.')
-        return
-    process = self.processes[name]
-    process.terminate()
-    process.join(TIMEOUT)
-    if process.is_alive():
-        process.kill()
-    logger.success(f'Process {name} terminated.')

func terminate_all(self)

源代码在GitHub上查看
python
def terminate_all(self):
-    for name in self.targets:
-        self.terminate(name)

func is_process_alive(self, name: str) -> bool

说明: 检查进程是否存活

参数:

  • name:
源代码在GitHub上查看
python
def is_process_alive(self, name: str) -> bool:
-    if name not in self.targets:
-        logger.warning(f'Process {name} not found.')
-    return self.processes[name].is_alive()

class _SubProcessManager


func __init__(self)

源代码在GitHub上查看
python
def __init__(self):
-    self.processes: dict[str, SubProcess] = {}

func add(self, name: str, func: ProcessFuncType, *args, **kwargs)

说明: 添加子进程

参数:

  • func: 子进程函数
  • name: 子进程名称
  • args: 子进程函数参数
  • kwargs: 子进程函数关键字参数
源代码在GitHub上查看
python
def add(self, name: str, func: ProcessFuncType, *args, **kwargs):
-    self.processes[name] = SubProcess(name, func, *args, **kwargs)

func start(self, name: str)

说明: 启动指定子进程

参数:

  • name: 子进程名称
源代码在GitHub上查看
python
def start(self, name: str):
-    if name not in self.processes:
-        raise KeyError(f'Process {name} not found.')
-    self.processes[name].start()

func start_all(self)

说明: 启动所有子进程

源代码在GitHub上查看
python
def start_all(self):
-    for name, process in self.processes.items():
-        process.start()
-        logger.debug(f'Starting process {name}')

func terminate(self, name: str)

说明: 终止指定子进程

参数:

  • name: 子进程名称
源代码在GitHub上查看
python
def terminate(self, name: str):
-    if name not in self.processes:
-        raise KeyError(f'Process {name} not found.')
-    self.processes[name].terminate()

func terminate_all(self)

说明: 终止所有子进程

源代码在GitHub上查看
python
def terminate_all(self):
-    for name, process in self.processes.items():
-        process.terminate()
-        logger.debug(f'Terminating process {name}')

func get_process(self, name: str) -> SubProcess | None

说明: 获取指定子进程

参数:

  • name: 子进程名称
源代码在GitHub上查看
python
def get_process(self, name: str) -> SubProcess | None:
-    return self.processes.get(name, None)
`,75)]))}const o=i(t,[["render",l]]);export{E as __pageData,o as default}; diff --git a/assets/dev_api_dev_index.md.BOIXWKHc.js b/assets/dev_api_dev_index.md.D1AkW7NO.js similarity index 83% rename from assets/dev_api_dev_index.md.BOIXWKHc.js rename to assets/dev_api_dev_index.md.D1AkW7NO.js index 03391052..7bf09830 100644 --- a/assets/dev_api_dev_index.md.BOIXWKHc.js +++ b/assets/dev_api_dev_index.md.D1AkW7NO.js @@ -1 +1 @@ -import{_ as d,c as i,j as e,a,o as l}from"./chunks/framework.v7PlT0Wt.js";const m=JSON.parse('{"title":"liteyuki.dev","description":"","frontmatter":{"title":"liteyuki.dev","collapsed":true},"headers":[],"relativePath":"dev/api/dev/index.md","filePath":"zh/dev/api/dev/index.md","lastUpdated":null}'),n={name:"dev/api/dev/index.md"};function r(o,t,s,c,p,u){return l(),i("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-dev",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.dev"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-dev","aria-label":'Permalink to "**模块** `liteyuki.dev`"'},"​")],-1),e("p",null,"该模块用于存放一些开发工具",-1)]))}const f=d(n,[["render",r]]);export{m as __pageData,f as default}; +import{_ as d,c as i,o as l,j as e,a}from"./chunks/framework.BUxnStXl.js";const m=JSON.parse('{"title":"liteyuki.dev","description":"","frontmatter":{"title":"liteyuki.dev","collapsed":true},"headers":[],"relativePath":"dev/api/dev/index.md","filePath":"zh/dev/api/dev/index.md","lastUpdated":null}'),n={name:"dev/api/dev/index.md"};function r(o,t,s,c,p,u){return l(),i("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-dev",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.dev"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-dev","aria-label":'Permalink to "**模块** `liteyuki.dev`"'},"​")],-1),e("p",null,"该模块用于存放一些开发工具",-1)]))}const f=d(n,[["render",r]]);export{m as __pageData,f as default}; diff --git a/assets/dev_api_dev_index.md.BOIXWKHc.lean.js b/assets/dev_api_dev_index.md.D1AkW7NO.lean.js similarity index 83% rename from assets/dev_api_dev_index.md.BOIXWKHc.lean.js rename to assets/dev_api_dev_index.md.D1AkW7NO.lean.js index 03391052..7bf09830 100644 --- a/assets/dev_api_dev_index.md.BOIXWKHc.lean.js +++ b/assets/dev_api_dev_index.md.D1AkW7NO.lean.js @@ -1 +1 @@ -import{_ as d,c as i,j as e,a,o as l}from"./chunks/framework.v7PlT0Wt.js";const m=JSON.parse('{"title":"liteyuki.dev","description":"","frontmatter":{"title":"liteyuki.dev","collapsed":true},"headers":[],"relativePath":"dev/api/dev/index.md","filePath":"zh/dev/api/dev/index.md","lastUpdated":null}'),n={name:"dev/api/dev/index.md"};function r(o,t,s,c,p,u){return l(),i("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-dev",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.dev"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-dev","aria-label":'Permalink to "**模块** `liteyuki.dev`"'},"​")],-1),e("p",null,"该模块用于存放一些开发工具",-1)]))}const f=d(n,[["render",r]]);export{m as __pageData,f as default}; +import{_ as d,c as i,o as l,j as e,a}from"./chunks/framework.BUxnStXl.js";const m=JSON.parse('{"title":"liteyuki.dev","description":"","frontmatter":{"title":"liteyuki.dev","collapsed":true},"headers":[],"relativePath":"dev/api/dev/index.md","filePath":"zh/dev/api/dev/index.md","lastUpdated":null}'),n={name:"dev/api/dev/index.md"};function r(o,t,s,c,p,u){return l(),i("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-dev",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.dev"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-dev","aria-label":'Permalink to "**模块** `liteyuki.dev`"'},"​")],-1),e("p",null,"该模块用于存放一些开发工具",-1)]))}const f=d(n,[["render",r]]);export{m as __pageData,f as default}; diff --git a/assets/dev_api_dev_observer.md.C9FG6EHy.js b/assets/dev_api_dev_observer.md.C7yKDmOq.js similarity index 98% rename from assets/dev_api_dev_observer.md.C9FG6EHy.js rename to assets/dev_api_dev_observer.md.C7yKDmOq.js index 5a748303..9eed47d7 100644 --- a/assets/dev_api_dev_observer.md.C9FG6EHy.js +++ b/assets/dev_api_dev_observer.md.C7yKDmOq.js @@ -1,4 +1,4 @@ -import{_ as i,c as e,a7 as a,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.dev.observer","description":"","frontmatter":{"title":"liteyuki.dev.observer"},"headers":[],"relativePath":"dev/api/dev/observer.md","filePath":"zh/dev/api/dev/observer.md","lastUpdated":null}'),t={name:"dev/api/dev/observer.md"};function l(h,s,p,r,k,d){return n(),e("div",null,s[0]||(s[0]=[a(`

模块 liteyuki.dev.observer

此模块用于注册观察者函数,使用watchdog监控文件变化并重启bot 启用该模块需要在配置文件中设置dev_mode为True

var CALLBACK_FUNC

  • 说明: 位置1为FileSystemEvent

  • 类型: TypeAlias

  • 默认值: Callable[[FileSystemEvent], None]

var FILTER_FUNC

  • 说明: 位置1为FileSystemEvent

  • 类型: TypeAlias

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


func debounce(wait)

说明: 防抖函数

源代码在GitHub上查看
python
def debounce(wait):
+import{_ as i,c as e,o as a,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.dev.observer","description":"","frontmatter":{"title":"liteyuki.dev.observer"},"headers":[],"relativePath":"dev/api/dev/observer.md","filePath":"zh/dev/api/dev/observer.md","lastUpdated":null}'),t={name:"dev/api/dev/observer.md"};function l(h,s,p,r,k,d){return a(),e("div",null,s[0]||(s[0]=[n(`

模块 liteyuki.dev.observer

此模块用于注册观察者函数,使用watchdog监控文件变化并重启bot 启用该模块需要在配置文件中设置dev_mode为True

var CALLBACK_FUNC

  • 说明: 位置1为FileSystemEvent

  • 类型: TypeAlias

  • 默认值: Callable[[FileSystemEvent], None]

var FILTER_FUNC

  • 说明: 位置1为FileSystemEvent

  • 类型: TypeAlias

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


func debounce(wait)

说明: 防抖函数

源代码在GitHub上查看
python
def debounce(wait):
 
     def decorator(func):
 
diff --git a/assets/dev_api_dev_observer.md.C7yKDmOq.lean.js b/assets/dev_api_dev_observer.md.C7yKDmOq.lean.js
new file mode 100644
index 00000000..b7f99b89
--- /dev/null
+++ b/assets/dev_api_dev_observer.md.C7yKDmOq.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as e,o as a,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.dev.observer","description":"","frontmatter":{"title":"liteyuki.dev.observer"},"headers":[],"relativePath":"dev/api/dev/observer.md","filePath":"zh/dev/api/dev/observer.md","lastUpdated":null}'),t={name:"dev/api/dev/observer.md"};function l(h,s,p,r,k,d){return a(),e("div",null,s[0]||(s[0]=[n("",34)]))}const E=i(t,[["render",l]]);export{c as __pageData,E as default};
diff --git a/assets/dev_api_dev_observer.md.C9FG6EHy.lean.js b/assets/dev_api_dev_observer.md.C9FG6EHy.lean.js
deleted file mode 100644
index 5a748303..00000000
--- a/assets/dev_api_dev_observer.md.C9FG6EHy.lean.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import{_ as i,c as e,a7 as a,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.dev.observer","description":"","frontmatter":{"title":"liteyuki.dev.observer"},"headers":[],"relativePath":"dev/api/dev/observer.md","filePath":"zh/dev/api/dev/observer.md","lastUpdated":null}'),t={name:"dev/api/dev/observer.md"};function l(h,s,p,r,k,d){return n(),e("div",null,s[0]||(s[0]=[a(`

模块 liteyuki.dev.observer

此模块用于注册观察者函数,使用watchdog监控文件变化并重启bot 启用该模块需要在配置文件中设置dev_mode为True

var CALLBACK_FUNC

  • 说明: 位置1为FileSystemEvent

  • 类型: TypeAlias

  • 默认值: Callable[[FileSystemEvent], None]

var FILTER_FUNC

  • 说明: 位置1为FileSystemEvent

  • 类型: TypeAlias

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


func debounce(wait)

说明: 防抖函数

源代码在GitHub上查看
python
def debounce(wait):
-
-    def decorator(func):
-
-        def wrapper(*args, **kwargs):
-            nonlocal last_call_time
-            current_time = time.time()
-            if current_time - last_call_time > wait:
-                last_call_time = current_time
-                return func(*args, **kwargs)
-        last_call_time = None
-        return wrapper
-    return decorator

class CodeModifiedHandler(FileSystemEventHandler)


@debounce(1)

func on_modified(self, event)

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

func on_created(self, event)

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

func on_deleted(self, event)

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

func on_moved(self, event)

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

func on_any_event(self, event)

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

func 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]:
-
-    def decorator(func: CALLBACK_FUNC) -> CALLBACK_FUNC:
-
-        def wrapper(event: FileSystemEvent):
-            if event_filter is not None and (not event_filter(event)):
-                return
-            func(event)
-        code_modified_handler = CodeModifiedHandler()
-        code_modified_handler.on_modified = wrapper
-        for directory in directories:
-            observer.schedule(code_modified_handler, directory, recursive=recursive)
-        return func
-    return decorator
`,34)]))}const E=i(t,[["render",l]]);export{c as __pageData,E as default}; diff --git a/assets/dev_api_dev_plugin.md.DaD0588E.js b/assets/dev_api_dev_plugin.md.BHG9egtN.js similarity index 93% rename from assets/dev_api_dev_plugin.md.DaD0588E.js rename to assets/dev_api_dev_plugin.md.BHG9egtN.js index cdd0ee0d..265b66f8 100644 --- a/assets/dev_api_dev_plugin.md.DaD0588E.js +++ b/assets/dev_api_dev_plugin.md.BHG9egtN.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,a7 as t,o as n}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"liteyuki.dev.plugin","description":"","frontmatter":{"title":"liteyuki.dev.plugin"},"headers":[],"relativePath":"dev/api/dev/plugin.md","filePath":"zh/dev/api/dev/plugin.md","lastUpdated":null}'),l={name:"dev/api/dev/plugin.md"};function e(p,i,h,k,r,d){return n(),a("div",null,i[0]||(i[0]=[t(`

模块 liteyuki.dev.plugin

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

@Time : 2024/8/18 上午5:04 @Author : snowykami @Email : snowykami@outlook.com @File : plugin.py @Software: PyCharm


func run_plugins(*module_path: str | Path)

说明: 运行插件,无需手动初始化bot

参数:

  • module_path: 插件路径,参考liteyuki.load_plugin的函数签名
源代码在GitHub上查看
python
def run_plugins(*module_path: str | Path):
+import{_ as s,c as a,o as t,al as n}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki.dev.plugin","description":"","frontmatter":{"title":"liteyuki.dev.plugin"},"headers":[],"relativePath":"dev/api/dev/plugin.md","filePath":"zh/dev/api/dev/plugin.md","lastUpdated":null}'),l={name:"dev/api/dev/plugin.md"};function e(p,i,h,k,r,d){return t(),a("div",null,i[0]||(i[0]=[n(`

模块 liteyuki.dev.plugin

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

@Time : 2024/8/18 上午5:04 @Author : snowykami @Email : snowykami@outlook.com @File : plugin.py @Software: PyCharm


func run_plugins(*module_path: str | Path)

说明: 运行插件,无需手动初始化bot

参数:

  • module_path: 插件路径,参考liteyuki.load_plugin的函数签名
源代码在GitHub上查看
python
def run_plugins(*module_path: str | Path):
     cfg = load_config_in_default()
     plugins = cfg.get('liteyuki.plugins', [])
     plugins.extend(module_path)
diff --git a/assets/dev_api_dev_plugin.md.BHG9egtN.lean.js b/assets/dev_api_dev_plugin.md.BHG9egtN.lean.js
new file mode 100644
index 00000000..fc90d0bb
--- /dev/null
+++ b/assets/dev_api_dev_plugin.md.BHG9egtN.lean.js
@@ -0,0 +1 @@
+import{_ as s,c as a,o as t,al as n}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki.dev.plugin","description":"","frontmatter":{"title":"liteyuki.dev.plugin"},"headers":[],"relativePath":"dev/api/dev/plugin.md","filePath":"zh/dev/api/dev/plugin.md","lastUpdated":null}'),l={name:"dev/api/dev/plugin.md"};function e(p,i,h,k,r,d){return t(),a("div",null,i[0]||(i[0]=[n("",9)]))}const g=s(l,[["render",e]]);export{u as __pageData,g as default};
diff --git a/assets/dev_api_dev_plugin.md.DaD0588E.lean.js b/assets/dev_api_dev_plugin.md.DaD0588E.lean.js
deleted file mode 100644
index cdd0ee0d..00000000
--- a/assets/dev_api_dev_plugin.md.DaD0588E.lean.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import{_ as s,c as a,a7 as t,o as n}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"liteyuki.dev.plugin","description":"","frontmatter":{"title":"liteyuki.dev.plugin"},"headers":[],"relativePath":"dev/api/dev/plugin.md","filePath":"zh/dev/api/dev/plugin.md","lastUpdated":null}'),l={name:"dev/api/dev/plugin.md"};function e(p,i,h,k,r,d){return n(),a("div",null,i[0]||(i[0]=[t(`

模块 liteyuki.dev.plugin

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

@Time : 2024/8/18 上午5:04 @Author : snowykami @Email : snowykami@outlook.com @File : plugin.py @Software: PyCharm


func run_plugins(*module_path: str | Path)

说明: 运行插件,无需手动初始化bot

参数:

  • module_path: 插件路径,参考liteyuki.load_plugin的函数签名
源代码在GitHub上查看
python
def run_plugins(*module_path: str | Path):
-    cfg = load_config_in_default()
-    plugins = cfg.get('liteyuki.plugins', [])
-    plugins.extend(module_path)
-    cfg['liteyuki.plugins'] = plugins
-    bot = LiteyukiBot(**cfg)
-    bot.run()
`,9)]))}const g=s(l,[["render",e]]);export{u as __pageData,g as default}; diff --git a/assets/dev_api_exception.md.CDDNIVPy.js b/assets/dev_api_exception.md.CDDNIVPy.js new file mode 100644 index 00000000..702243df --- /dev/null +++ b/assets/dev_api_exception.md.CDDNIVPy.js @@ -0,0 +1 @@ +import{_ as t,c as i,o as a,al as o}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki.exception","description":"","frontmatter":{"title":"liteyuki.exception"},"headers":[],"relativePath":"dev/api/exception.md","filePath":"zh/dev/api/exception.md","lastUpdated":null}'),n={name:"dev/api/exception.md"};function c(s,e,p,l,r,d){return a(),i("div",null,e[0]||(e[0]=[o('

模块 liteyuki.exception

exception模块包含了liteyuki运行中的所有错误

class LiteyukiException(BaseException)

',3)]))}const _=t(n,[["render",c]]);export{u as __pageData,_ as default}; diff --git a/assets/dev_api_exception.md.CDDNIVPy.lean.js b/assets/dev_api_exception.md.CDDNIVPy.lean.js new file mode 100644 index 00000000..a9e1a242 --- /dev/null +++ b/assets/dev_api_exception.md.CDDNIVPy.lean.js @@ -0,0 +1 @@ +import{_ as t,c as i,o as a,al as o}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki.exception","description":"","frontmatter":{"title":"liteyuki.exception"},"headers":[],"relativePath":"dev/api/exception.md","filePath":"zh/dev/api/exception.md","lastUpdated":null}'),n={name:"dev/api/exception.md"};function c(s,e,p,l,r,d){return a(),i("div",null,e[0]||(e[0]=[o("",3)]))}const _=t(n,[["render",c]]);export{u as __pageData,_ as default}; diff --git a/assets/dev_api_exception.md.D3YlD-fL.js b/assets/dev_api_exception.md.D3YlD-fL.js deleted file mode 100644 index b20367c4..00000000 --- a/assets/dev_api_exception.md.D3YlD-fL.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as i,a7 as a,o}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"liteyuki.exception","description":"","frontmatter":{"title":"liteyuki.exception"},"headers":[],"relativePath":"dev/api/exception.md","filePath":"zh/dev/api/exception.md","lastUpdated":null}'),n={name:"dev/api/exception.md"};function c(s,e,p,l,r,d){return o(),i("div",null,e[0]||(e[0]=[a('

模块 liteyuki.exception

exception模块包含了liteyuki运行中的所有错误

class LiteyukiException(BaseException)

',3)]))}const k=t(n,[["render",c]]);export{u as __pageData,k as default}; diff --git a/assets/dev_api_exception.md.D3YlD-fL.lean.js b/assets/dev_api_exception.md.D3YlD-fL.lean.js deleted file mode 100644 index b20367c4..00000000 --- a/assets/dev_api_exception.md.D3YlD-fL.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as i,a7 as a,o}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"liteyuki.exception","description":"","frontmatter":{"title":"liteyuki.exception"},"headers":[],"relativePath":"dev/api/exception.md","filePath":"zh/dev/api/exception.md","lastUpdated":null}'),n={name:"dev/api/exception.md"};function c(s,e,p,l,r,d){return o(),i("div",null,e[0]||(e[0]=[a('

模块 liteyuki.exception

exception模块包含了liteyuki运行中的所有错误

class LiteyukiException(BaseException)

',3)]))}const k=t(n,[["render",c]]);export{u as __pageData,k as default}; diff --git a/assets/dev_api_index.md.BMzmnGkf.js b/assets/dev_api_index.md.BHlKQdO1.js similarity index 70% rename from assets/dev_api_index.md.BMzmnGkf.js rename to assets/dev_api_index.md.BHlKQdO1.js index 1f751eae..21a27380 100644 --- a/assets/dev_api_index.md.BMzmnGkf.js +++ b/assets/dev_api_index.md.BHlKQdO1.js @@ -1 +1 @@ -import{_ as t,c as a,a7 as i,o as r}from"./chunks/framework.v7PlT0Wt.js";const _=JSON.parse('{"title":"liteyuki API","description":"","frontmatter":{"title":"liteyuki API","collapsed":true,"order":100},"headers":[],"relativePath":"dev/api/index.md","filePath":"zh/dev/api/index.md","lastUpdated":null}'),o={name:"dev/api/index.md"};function l(n,e,d,s,c,p){return r(),a("div",null,e[0]||(e[0]=[i('

模块 liteyuki

此模块为liteyuki的框架整体

This module is the overall framework of liteyuki.

var __version__

  • 说明: 测试版本号

  • 默认值: '6.3.10'

',5)]))}const h=t(o,[["render",l]]);export{_ as __pageData,h as default}; +import{_ as t,c as a,o as i,al as r}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki API","description":"","frontmatter":{"title":"liteyuki API","collapsed":true,"order":100},"headers":[],"relativePath":"dev/api/index.md","filePath":"zh/dev/api/index.md","lastUpdated":null}'),o={name:"dev/api/index.md"};function l(n,e,d,s,_,c){return i(),a("div",null,e[0]||(e[0]=[r('

模块 liteyuki

此模块为liteyuki的框架整体

This module is the overall framework of liteyuki.

var __version__

  • 说明: 测试版本号

  • 默认值: '6.3.10'

',5)]))}const h=t(o,[["render",l]]);export{u as __pageData,h as default}; diff --git a/assets/dev_api_index.md.BHlKQdO1.lean.js b/assets/dev_api_index.md.BHlKQdO1.lean.js new file mode 100644 index 00000000..d40dff6e --- /dev/null +++ b/assets/dev_api_index.md.BHlKQdO1.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as i,al as r}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki API","description":"","frontmatter":{"title":"liteyuki API","collapsed":true,"order":100},"headers":[],"relativePath":"dev/api/index.md","filePath":"zh/dev/api/index.md","lastUpdated":null}'),o={name:"dev/api/index.md"};function l(n,e,d,s,_,c){return i(),a("div",null,e[0]||(e[0]=[r("",5)]))}const h=t(o,[["render",l]]);export{u as __pageData,h as default}; diff --git a/assets/dev_api_index.md.BMzmnGkf.lean.js b/assets/dev_api_index.md.BMzmnGkf.lean.js deleted file mode 100644 index 1f751eae..00000000 --- a/assets/dev_api_index.md.BMzmnGkf.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,a7 as i,o as r}from"./chunks/framework.v7PlT0Wt.js";const _=JSON.parse('{"title":"liteyuki API","description":"","frontmatter":{"title":"liteyuki API","collapsed":true,"order":100},"headers":[],"relativePath":"dev/api/index.md","filePath":"zh/dev/api/index.md","lastUpdated":null}'),o={name:"dev/api/index.md"};function l(n,e,d,s,c,p){return r(),a("div",null,e[0]||(e[0]=[i('

模块 liteyuki

此模块为liteyuki的框架整体

This module is the overall framework of liteyuki.

var __version__

  • 说明: 测试版本号

  • 默认值: '6.3.10'

',5)]))}const h=t(o,[["render",l]]);export{_ as __pageData,h as default}; diff --git a/assets/dev_api_log.md.BQCmlUGd.lean.js b/assets/dev_api_log.md.BQCmlUGd.lean.js deleted file mode 100644 index bdf420f6..00000000 --- a/assets/dev_api_log.md.BQCmlUGd.lean.js +++ /dev/null @@ -1,18 +0,0 @@ -import{_ as i,c as a,a7 as h,o as k}from"./chunks/framework.v7PlT0Wt.js";const d=JSON.parse('{"title":"liteyuki.log","description":"","frontmatter":{"title":"liteyuki.log"},"headers":[],"relativePath":"dev/api/log.md","filePath":"zh/dev/api/log.md","lastUpdated":null}'),l={name:"dev/api/log.md"};function t(n,s,p,e,E,r){return k(),a("div",null,s[0]||(s[0]=[h(`

模块 liteyuki.log

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

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


func get_format(level: str) -> str

说明: 获取日志格式

参数:

  • level: 日志等级
源代码在GitHub上查看
python
def get_format(level: str) -> str:
-    if level == 'DEBUG':
-        return debug_format
-    else:
-        return default_format

func init_log(config: dict)

说明: 在语言加载完成后执行

参数:

  • config: 配置
源代码在GitHub上查看
python
def init_log(config: dict):
-    global logger
-    level = config.get('log_level', 'DEBUG')
-    logger.remove()
-    logger.add(sys.stdout, level=level, diagnose=False, format=get_format(level))
-    show_icon = config.get('log_icon', True)
-    logger.level('DEBUG', color='<blue>', icon=f"{('🐛' if show_icon else '')}")
-    logger.level('INFO', color='<normal>', icon=f"{('ℹ️' if show_icon else '')}")
-    logger.level('SUCCESS', color='<green>', icon=f"{('✅' if show_icon else '')}")
-    logger.level('WARNING', color='<yellow>', icon=f"{('⚠️' if show_icon else '')}")
-    logger.level('ERROR', color='<red>', icon=f"{('⭕' if show_icon else '')}")
-    logger.level('CRITICAL', color='<red>', icon=f"{('❌' if show_icon else '')}")
-    logger.level('TRACE', color='<cyan>', icon=f"{('🔍' if show_icon else '')}")
-    logger.bind()
`,15)]))}const F=i(l,[["render",t]]);export{d as __pageData,F as default}; diff --git a/assets/dev_api_log.md.BQCmlUGd.js b/assets/dev_api_log.md.DZftM0hz.js similarity index 98% rename from assets/dev_api_log.md.BQCmlUGd.js rename to assets/dev_api_log.md.DZftM0hz.js index bdf420f6..f8c7fb42 100644 --- a/assets/dev_api_log.md.BQCmlUGd.js +++ b/assets/dev_api_log.md.DZftM0hz.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as h,o as k}from"./chunks/framework.v7PlT0Wt.js";const d=JSON.parse('{"title":"liteyuki.log","description":"","frontmatter":{"title":"liteyuki.log"},"headers":[],"relativePath":"dev/api/log.md","filePath":"zh/dev/api/log.md","lastUpdated":null}'),l={name:"dev/api/log.md"};function t(n,s,p,e,E,r){return k(),a("div",null,s[0]||(s[0]=[h(`

模块 liteyuki.log

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

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


func get_format(level: str) -> str

说明: 获取日志格式

参数:

  • level: 日志等级
源代码在GitHub上查看
python
def get_format(level: str) -> str:
+import{_ as i,c as a,o as h,al as k}from"./chunks/framework.BUxnStXl.js";const d=JSON.parse('{"title":"liteyuki.log","description":"","frontmatter":{"title":"liteyuki.log"},"headers":[],"relativePath":"dev/api/log.md","filePath":"zh/dev/api/log.md","lastUpdated":null}'),l={name:"dev/api/log.md"};function t(n,s,p,e,E,r){return h(),a("div",null,s[0]||(s[0]=[k(`

模块 liteyuki.log

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

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


func get_format(level: str) -> str

说明: 获取日志格式

参数:

  • level: 日志等级
源代码在GitHub上查看
python
def get_format(level: str) -> str:
     if level == 'DEBUG':
         return debug_format
     else:
diff --git a/assets/dev_api_log.md.DZftM0hz.lean.js b/assets/dev_api_log.md.DZftM0hz.lean.js
new file mode 100644
index 00000000..d445a17a
--- /dev/null
+++ b/assets/dev_api_log.md.DZftM0hz.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as h,al as k}from"./chunks/framework.BUxnStXl.js";const d=JSON.parse('{"title":"liteyuki.log","description":"","frontmatter":{"title":"liteyuki.log"},"headers":[],"relativePath":"dev/api/log.md","filePath":"zh/dev/api/log.md","lastUpdated":null}'),l={name:"dev/api/log.md"};function t(n,s,p,e,E,r){return h(),a("div",null,s[0]||(s[0]=[k("",15)]))}const F=i(l,[["render",t]]);export{d as __pageData,F as default};
diff --git a/assets/dev_api_plugin_index.md.DmA7SgX7.js b/assets/dev_api_plugin_index.md.DHABZfdI.js
similarity index 88%
rename from assets/dev_api_plugin_index.md.DmA7SgX7.js
rename to assets/dev_api_plugin_index.md.DHABZfdI.js
index 9b1cd574..afb74c8b 100644
--- a/assets/dev_api_plugin_index.md.DmA7SgX7.js
+++ b/assets/dev_api_plugin_index.md.DHABZfdI.js
@@ -1 +1 @@
-import{_ as t,c as e,a7 as s,o as a}from"./chunks/framework.v7PlT0Wt.js";const h=JSON.parse('{"title":"liteyuki.plugin","description":"","frontmatter":{"title":"liteyuki.plugin","collapsed":true},"headers":[],"relativePath":"dev/api/plugin/index.md","filePath":"zh/dev/api/plugin/index.md","lastUpdated":null}'),n={name:"dev/api/plugin/index.md"};function l(p,i,d,r,o,u){return a(),e("div",null,i[0]||(i[0]=[s('

模块 liteyuki.plugin


func get_loaded_plugins() -> dict[str, Plugin]

说明: 获取已加载的插件

返回: dict[str, Plugin]: 插件字典

源代码在GitHub上查看
python
def get_loaded_plugins() -> dict[str, Plugin]:\n    return _plugins
',6)]))}const c=t(n,[["render",l]]);export{h as __pageData,c as default}; +import{_ as t,c as e,o as s,al as a}from"./chunks/framework.BUxnStXl.js";const h=JSON.parse('{"title":"liteyuki.plugin","description":"","frontmatter":{"title":"liteyuki.plugin","collapsed":true},"headers":[],"relativePath":"dev/api/plugin/index.md","filePath":"zh/dev/api/plugin/index.md","lastUpdated":null}'),n={name:"dev/api/plugin/index.md"};function l(p,i,d,r,o,u){return s(),e("div",null,i[0]||(i[0]=[a('

模块 liteyuki.plugin


func get_loaded_plugins() -> dict[str, Plugin]

说明: 获取已加载的插件

返回: dict[str, Plugin]: 插件字典

源代码在GitHub上查看
python
def get_loaded_plugins() -> dict[str, Plugin]:\n    return _plugins
',6)]))}const c=t(n,[["render",l]]);export{h as __pageData,c as default}; diff --git a/assets/dev_api_plugin_index.md.DHABZfdI.lean.js b/assets/dev_api_plugin_index.md.DHABZfdI.lean.js new file mode 100644 index 00000000..19cdb88b --- /dev/null +++ b/assets/dev_api_plugin_index.md.DHABZfdI.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as s,al as a}from"./chunks/framework.BUxnStXl.js";const h=JSON.parse('{"title":"liteyuki.plugin","description":"","frontmatter":{"title":"liteyuki.plugin","collapsed":true},"headers":[],"relativePath":"dev/api/plugin/index.md","filePath":"zh/dev/api/plugin/index.md","lastUpdated":null}'),n={name:"dev/api/plugin/index.md"};function l(p,i,d,r,o,u){return s(),e("div",null,i[0]||(i[0]=[a("",6)]))}const c=t(n,[["render",l]]);export{h as __pageData,c as default}; diff --git a/assets/dev_api_plugin_index.md.DmA7SgX7.lean.js b/assets/dev_api_plugin_index.md.DmA7SgX7.lean.js deleted file mode 100644 index 9b1cd574..00000000 --- a/assets/dev_api_plugin_index.md.DmA7SgX7.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,a7 as s,o as a}from"./chunks/framework.v7PlT0Wt.js";const h=JSON.parse('{"title":"liteyuki.plugin","description":"","frontmatter":{"title":"liteyuki.plugin","collapsed":true},"headers":[],"relativePath":"dev/api/plugin/index.md","filePath":"zh/dev/api/plugin/index.md","lastUpdated":null}'),n={name:"dev/api/plugin/index.md"};function l(p,i,d,r,o,u){return a(),e("div",null,i[0]||(i[0]=[s('

模块 liteyuki.plugin


func get_loaded_plugins() -> dict[str, Plugin]

说明: 获取已加载的插件

返回: dict[str, Plugin]: 插件字典

源代码在GitHub上查看
python
def get_loaded_plugins() -> dict[str, Plugin]:\n    return _plugins
',6)]))}const c=t(n,[["render",l]]);export{h as __pageData,c as default}; diff --git a/assets/dev_api_plugin_load.md.CGZBTpK5.js b/assets/dev_api_plugin_load.md.1Dz_ezge.js similarity index 99% rename from assets/dev_api_plugin_load.md.CGZBTpK5.js rename to assets/dev_api_plugin_load.md.1Dz_ezge.js index 875573ce..0dbd1d08 100644 --- a/assets/dev_api_plugin_load.md.CGZBTpK5.js +++ b/assets/dev_api_plugin_load.md.1Dz_ezge.js @@ -1,4 +1,4 @@ -import{_ as l,c as k,a7 as i,j as a,a as n,G as t,w as p,B as e,o as E}from"./chunks/framework.v7PlT0Wt.js";const _=JSON.parse('{"title":"liteyuki.plugin.load","description":"","frontmatter":{"title":"liteyuki.plugin.load"},"headers":[],"relativePath":"dev/api/plugin/load.md","filePath":"zh/dev/api/plugin/load.md","lastUpdated":null}'),d={name:"dev/api/plugin/load.md"};function r(g,s,y,F,o,u){const h=e("y");return E(),k("div",null,[s[3]||(s[3]=i(`

模块 liteyuki.plugin.load

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

@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py @Software: PyCharm


func load_plugin(module_path: str | Path) -> Optional[Plugin]

说明: 加载单个插件,可以是本地插件或是通过 pip 安装的插件。

参数:

  • module_path: 插件名称 path.to.your.plugin
  • 或插件路径 pathlib.Path(path/to/your/plugin):
源代码在GitHub上查看
python
def load_plugin(module_path: str | Path) -> Optional[Plugin]:
+import{_ as l,C as k,c as t,o as p,al as i,j as a,a as n,G as e,w as E}from"./chunks/framework.BUxnStXl.js";const C=JSON.parse('{"title":"liteyuki.plugin.load","description":"","frontmatter":{"title":"liteyuki.plugin.load"},"headers":[],"relativePath":"dev/api/plugin/load.md","filePath":"zh/dev/api/plugin/load.md","lastUpdated":null}'),d={name:"dev/api/plugin/load.md"};function r(g,s,y,F,o,u){const h=k("y");return p(),t("div",null,[s[3]||(s[3]=i(`

模块 liteyuki.plugin.load

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

@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py @Software: PyCharm


func load_plugin(module_path: str | Path) -> Optional[Plugin]

说明: 加载单个插件,可以是本地插件或是通过 pip 安装的插件。

参数:

  • module_path: 插件名称 path.to.your.plugin
  • 或插件路径 pathlib.Path(path/to/your/plugin):
源代码在GitHub上查看
python
def load_plugin(module_path: str | Path) -> Optional[Plugin]:
     module_path = path_to_module_name(Path(module_path)) if isinstance(module_path, Path) else module_path
     try:
         module = import_module(module_path)
@@ -48,7 +48,7 @@ import{_ as l,c as k,a7 as i,j as a,a as n,G as t,w as p,B as e,o as E}from"./ch
                 load_plugin(module_name)
                 if _plugins.get(module_name):
                     plugins.add(_plugins[module_name])
-    return plugins

func format_display_name(display_name: str, plugin_type: PluginType) -> str

说明: 设置插件名称颜色,根据不同类型插件设置颜色

参数:

  • display_name: 插件名称
  • plugin_type: 插件类型
`,20)),a("p",null,[s[1]||(s[1]=a("strong",null,"返回",-1)),s[2]||(s[2]=n(": str: 设置后的插件名称 ")),t(h,null,{default:p(()=>s[0]||(s[0]=[n("name")])),_:1})]),s[4]||(s[4]=i(`
源代码在GitHub上查看
python
def format_display_name(display_name: str, plugin_type: PluginType) -> str:
+    return plugins

func format_display_name(display_name: str, plugin_type: PluginType) -> str

说明: 设置插件名称颜色,根据不同类型插件设置颜色

参数:

  • display_name: 插件名称
  • plugin_type: 插件类型
`,20)),a("p",null,[s[1]||(s[1]=a("strong",null,"返回",-1)),s[2]||(s[2]=n(": str: 设置后的插件名称 ")),e(h,null,{default:E(()=>s[0]||(s[0]=[n("name")])),_:1})]),s[4]||(s[4]=i(`
源代码在GitHub上查看
python
def format_display_name(display_name: str, plugin_type: PluginType) -> str:
     color = 'y'
     match plugin_type:
         case PluginType.APPLICATION:
@@ -59,4 +59,4 @@ import{_ as l,c as k,a7 as i,j as a,a as n,G as t,w as p,B as e,o as E}from"./ch
             color = 'e'
         case PluginType.SERVICE:
             color = 'c'
-    return f'<{color}>{display_name} [{plugin_type.name}]</{color}>'
`,1))])}const c=l(d,[["render",r]]);export{_ as __pageData,c as default}; + return f'<{color}>{display_name} [{plugin_type.name}]</{color}>'
`,1))])}const c=l(d,[["render",r]]);export{C as __pageData,c as default}; diff --git a/assets/dev_api_plugin_load.md.1Dz_ezge.lean.js b/assets/dev_api_plugin_load.md.1Dz_ezge.lean.js new file mode 100644 index 00000000..acb53a32 --- /dev/null +++ b/assets/dev_api_plugin_load.md.1Dz_ezge.lean.js @@ -0,0 +1 @@ +import{_ as l,C as k,c as t,o as p,al as i,j as a,a as n,G as e,w as E}from"./chunks/framework.BUxnStXl.js";const C=JSON.parse('{"title":"liteyuki.plugin.load","description":"","frontmatter":{"title":"liteyuki.plugin.load"},"headers":[],"relativePath":"dev/api/plugin/load.md","filePath":"zh/dev/api/plugin/load.md","lastUpdated":null}'),d={name:"dev/api/plugin/load.md"};function r(g,s,y,F,o,u){const h=k("y");return p(),t("div",null,[s[3]||(s[3]=i("",20)),a("p",null,[s[1]||(s[1]=a("strong",null,"返回",-1)),s[2]||(s[2]=n(": str: 设置后的插件名称 ")),e(h,null,{default:E(()=>s[0]||(s[0]=[n("name")])),_:1})]),s[4]||(s[4]=i("",1))])}const c=l(d,[["render",r]]);export{C as __pageData,c as default}; diff --git a/assets/dev_api_plugin_load.md.CGZBTpK5.lean.js b/assets/dev_api_plugin_load.md.CGZBTpK5.lean.js deleted file mode 100644 index 875573ce..00000000 --- a/assets/dev_api_plugin_load.md.CGZBTpK5.lean.js +++ /dev/null @@ -1,62 +0,0 @@ -import{_ as l,c as k,a7 as i,j as a,a as n,G as t,w as p,B as e,o as E}from"./chunks/framework.v7PlT0Wt.js";const _=JSON.parse('{"title":"liteyuki.plugin.load","description":"","frontmatter":{"title":"liteyuki.plugin.load"},"headers":[],"relativePath":"dev/api/plugin/load.md","filePath":"zh/dev/api/plugin/load.md","lastUpdated":null}'),d={name:"dev/api/plugin/load.md"};function r(g,s,y,F,o,u){const h=e("y");return E(),k("div",null,[s[3]||(s[3]=i(`

模块 liteyuki.plugin.load

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

@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py @Software: PyCharm


func load_plugin(module_path: str | Path) -> Optional[Plugin]

说明: 加载单个插件,可以是本地插件或是通过 pip 安装的插件。

参数:

  • module_path: 插件名称 path.to.your.plugin
  • 或插件路径 pathlib.Path(path/to/your/plugin):
源代码在GitHub上查看
python
def load_plugin(module_path: str | Path) -> Optional[Plugin]:
-    module_path = path_to_module_name(Path(module_path)) if isinstance(module_path, Path) else module_path
-    try:
-        module = import_module(module_path)
-        _plugins[module.__name__] = Plugin(name=module.__name__, module=module, module_name=module_path)
-        if module.__dict__.get('__plugin_metadata__', None):
-            metadata: 'PluginMetadata' = module.__dict__['__plugin_metadata__']
-            display_name = module.__name__.split('.')[-1]
-        elif module.__dict__.get('__liteyuki_plugin_meta__', None):
-            metadata: 'PluginMetadata' = module.__dict__['__liteyuki_plugin_meta__']
-            display_name = format_display_name(f"{metadata.name}({module.__name__.split('.')[-1]})", metadata.type)
-        elif module.__dict__.get('__plugin_meta__', None):
-            metadata: 'PluginMetadata' = module.__dict__['__plugin_meta__']
-            display_name = format_display_name(f"{metadata.name}({module.__name__.split('.')[-1]})", metadata.type)
-        else:
-            logger.opt(colors=True).warning(f'The metadata of Liteyuki plugin "{module.__name__}" is not specified, use empty.')
-            metadata = PluginMetadata(name=module.__name__)
-            display_name = module.__name__.split('.')[-1]
-        _plugins[module.__name__].metadata = metadata
-        logger.opt(colors=True).success(f'Succeeded to load liteyuki plugin "{display_name}"')
-        return _plugins[module.__name__]
-    except Exception as e:
-        logger.opt(colors=True).success(f'Failed to load liteyuki plugin "<r>{module_path}</r>"')
-        traceback.print_exc()
-        return None

func load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]

说明: 导入文件夹下多个插件

参数:

  • plugin_dir: 文件夹路径
  • ignore_warning: 是否忽略警告,通常是目录不存在或目录为空
源代码在GitHub上查看
python
def load_plugins(*plugin_dir: str, ignore_warning: bool=True) -> set[Plugin]:
-    plugins = set()
-    for dir_path in plugin_dir:
-        if not os.path.exists(dir_path):
-            if not ignore_warning:
-                logger.warning(f"Plugins dir '{dir_path}' does not exist.")
-            continue
-        if not os.listdir(dir_path):
-            if not ignore_warning:
-                logger.warning(f"Plugins dir '{dir_path}' is empty.")
-            continue
-        if not os.path.isdir(dir_path):
-            if not ignore_warning:
-                logger.warning(f"Plugins dir '{dir_path}' is not a directory.")
-            continue
-        for f in os.listdir(dir_path):
-            path = Path(os.path.join(dir_path, f))
-            module_name = None
-            if os.path.isfile(path) and f.endswith('.py') and (f != '__init__.py'):
-                module_name = f'{path_to_module_name(Path(dir_path))}.{f[:-3]}'
-            elif os.path.isdir(path) and os.path.exists(os.path.join(path, '__init__.py')):
-                module_name = path_to_module_name(path)
-            if module_name:
-                load_plugin(module_name)
-                if _plugins.get(module_name):
-                    plugins.add(_plugins[module_name])
-    return plugins

func format_display_name(display_name: str, plugin_type: PluginType) -> str

说明: 设置插件名称颜色,根据不同类型插件设置颜色

参数:

  • display_name: 插件名称
  • plugin_type: 插件类型
`,20)),a("p",null,[s[1]||(s[1]=a("strong",null,"返回",-1)),s[2]||(s[2]=n(": str: 设置后的插件名称 ")),t(h,null,{default:p(()=>s[0]||(s[0]=[n("name")])),_:1})]),s[4]||(s[4]=i(`
源代码在GitHub上查看
python
def format_display_name(display_name: str, plugin_type: PluginType) -> str:
-    color = 'y'
-    match plugin_type:
-        case PluginType.APPLICATION:
-            color = 'm'
-        case PluginType.TEST:
-            color = 'g'
-        case PluginType.MODULE:
-            color = 'e'
-        case PluginType.SERVICE:
-            color = 'c'
-    return f'<{color}>{display_name} [{plugin_type.name}]</{color}>'
`,1))])}const c=l(d,[["render",r]]);export{_ as __pageData,c as default}; diff --git a/assets/dev_api_plugin_manager.md.bQiuqZoy.js b/assets/dev_api_plugin_manager.md.TWTXnW7t.js similarity index 88% rename from assets/dev_api_plugin_manager.md.bQiuqZoy.js rename to assets/dev_api_plugin_manager.md.TWTXnW7t.js index ded33b7a..8aa707e0 100644 --- a/assets/dev_api_plugin_manager.md.bQiuqZoy.js +++ b/assets/dev_api_plugin_manager.md.TWTXnW7t.js @@ -1 +1 @@ -import{_ as i,c as n,j as e,a,o as l}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.plugin.manager","description":"","frontmatter":{"title":"liteyuki.plugin.manager"},"headers":[],"relativePath":"dev/api/plugin/manager.md","filePath":"zh/dev/api/plugin/manager.md","lastUpdated":null}'),r={name:"dev/api/plugin/manager.md"};function o(m,t,u,p,s,g){return l(),n("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-plugin-manager",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.plugin.manager"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-plugin-manager","aria-label":'Permalink to "**模块** `liteyuki.plugin.manager`"'},"​")],-1),e("p",null,"Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved",-1),e("p",null,[a("@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : "),e("a",{href:"mailto:snowykami@outlook.com",target:"_blank",rel:"noreferrer"},"snowykami@outlook.com"),a(" @File : manager.py @Software: PyCharm")],-1)]))}const k=i(r,[["render",o]]);export{c as __pageData,k as default}; +import{_ as i,c as n,o as l,j as e,a}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.plugin.manager","description":"","frontmatter":{"title":"liteyuki.plugin.manager"},"headers":[],"relativePath":"dev/api/plugin/manager.md","filePath":"zh/dev/api/plugin/manager.md","lastUpdated":null}'),r={name:"dev/api/plugin/manager.md"};function o(m,t,u,p,s,g){return l(),n("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-plugin-manager",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.plugin.manager"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-plugin-manager","aria-label":'Permalink to "**模块** `liteyuki.plugin.manager`"'},"​")],-1),e("p",null,"Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved",-1),e("p",null,[a("@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : "),e("a",{href:"mailto:snowykami@outlook.com",target:"_blank",rel:"noreferrer"},"snowykami@outlook.com"),a(" @File : manager.py @Software: PyCharm")],-1)]))}const k=i(r,[["render",o]]);export{c as __pageData,k as default}; diff --git a/assets/dev_api_plugin_manager.md.bQiuqZoy.lean.js b/assets/dev_api_plugin_manager.md.TWTXnW7t.lean.js similarity index 88% rename from assets/dev_api_plugin_manager.md.bQiuqZoy.lean.js rename to assets/dev_api_plugin_manager.md.TWTXnW7t.lean.js index ded33b7a..8aa707e0 100644 --- a/assets/dev_api_plugin_manager.md.bQiuqZoy.lean.js +++ b/assets/dev_api_plugin_manager.md.TWTXnW7t.lean.js @@ -1 +1 @@ -import{_ as i,c as n,j as e,a,o as l}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.plugin.manager","description":"","frontmatter":{"title":"liteyuki.plugin.manager"},"headers":[],"relativePath":"dev/api/plugin/manager.md","filePath":"zh/dev/api/plugin/manager.md","lastUpdated":null}'),r={name:"dev/api/plugin/manager.md"};function o(m,t,u,p,s,g){return l(),n("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-plugin-manager",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.plugin.manager"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-plugin-manager","aria-label":'Permalink to "**模块** `liteyuki.plugin.manager`"'},"​")],-1),e("p",null,"Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved",-1),e("p",null,[a("@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : "),e("a",{href:"mailto:snowykami@outlook.com",target:"_blank",rel:"noreferrer"},"snowykami@outlook.com"),a(" @File : manager.py @Software: PyCharm")],-1)]))}const k=i(r,[["render",o]]);export{c as __pageData,k as default}; +import{_ as i,c as n,o as l,j as e,a}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.plugin.manager","description":"","frontmatter":{"title":"liteyuki.plugin.manager"},"headers":[],"relativePath":"dev/api/plugin/manager.md","filePath":"zh/dev/api/plugin/manager.md","lastUpdated":null}'),r={name:"dev/api/plugin/manager.md"};function o(m,t,u,p,s,g){return l(),n("div",null,t[0]||(t[0]=[e("h1",{id:"模块-liteyuki-plugin-manager",tabindex:"-1"},[e("strong",null,"模块"),a(),e("code",null,"liteyuki.plugin.manager"),a(),e("a",{class:"header-anchor",href:"#模块-liteyuki-plugin-manager","aria-label":'Permalink to "**模块** `liteyuki.plugin.manager`"'},"​")],-1),e("p",null,"Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved",-1),e("p",null,[a("@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : "),e("a",{href:"mailto:snowykami@outlook.com",target:"_blank",rel:"noreferrer"},"snowykami@outlook.com"),a(" @File : manager.py @Software: PyCharm")],-1)]))}const k=i(r,[["render",o]]);export{c as __pageData,k as default}; diff --git a/assets/dev_api_plugin_model.md.DAxgz8GX.js b/assets/dev_api_plugin_model.md.DAxgz8GX.js deleted file mode 100644 index d684f069..00000000 --- a/assets/dev_api_plugin_model.md.DAxgz8GX.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,a7 as r,o}from"./chunks/framework.v7PlT0Wt.js";const m=JSON.parse('{"title":"liteyuki.plugin.model","description":"","frontmatter":{"title":"liteyuki.plugin.model"},"headers":[],"relativePath":"dev/api/plugin/model.md","filePath":"zh/dev/api/plugin/model.md","lastUpdated":null}'),s={name:"dev/api/plugin/model.md"};function i(l,a,n,d,h,u){return o(),e("div",null,a[0]||(a[0]=[r('

模块 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)


func hash self

源代码在GitHub上查看
python
def __hash__(self):\n    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

',26)]))}const p=t(s,[["render",i]]);export{m as __pageData,p as default}; diff --git a/assets/dev_api_plugin_model.md.DAxgz8GX.lean.js b/assets/dev_api_plugin_model.md.DAxgz8GX.lean.js deleted file mode 100644 index d684f069..00000000 --- a/assets/dev_api_plugin_model.md.DAxgz8GX.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,a7 as r,o}from"./chunks/framework.v7PlT0Wt.js";const m=JSON.parse('{"title":"liteyuki.plugin.model","description":"","frontmatter":{"title":"liteyuki.plugin.model"},"headers":[],"relativePath":"dev/api/plugin/model.md","filePath":"zh/dev/api/plugin/model.md","lastUpdated":null}'),s={name:"dev/api/plugin/model.md"};function i(l,a,n,d,h,u){return o(),e("div",null,a[0]||(a[0]=[r('

模块 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)


func hash self

源代码在GitHub上查看
python
def __hash__(self):\n    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

',26)]))}const p=t(s,[["render",i]]);export{m as __pageData,p as default}; diff --git a/assets/dev_api_plugin_model.md.TQv7nVxA.js b/assets/dev_api_plugin_model.md.TQv7nVxA.js new file mode 100644 index 00000000..2f93025b --- /dev/null +++ b/assets/dev_api_plugin_model.md.TQv7nVxA.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as r,al as o}from"./chunks/framework.BUxnStXl.js";const m=JSON.parse('{"title":"liteyuki.plugin.model","description":"","frontmatter":{"title":"liteyuki.plugin.model"},"headers":[],"relativePath":"dev/api/plugin/model.md","filePath":"zh/dev/api/plugin/model.md","lastUpdated":null}'),s={name:"dev/api/plugin/model.md"};function i(l,a,n,d,h,u){return r(),e("div",null,a[0]||(a[0]=[o('

模块 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)


func hash self

源代码在GitHub上查看
python
def __hash__(self):\n    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

',26)]))}const p=t(s,[["render",i]]);export{m as __pageData,p as default}; diff --git a/assets/dev_api_plugin_model.md.TQv7nVxA.lean.js b/assets/dev_api_plugin_model.md.TQv7nVxA.lean.js new file mode 100644 index 00000000..d13e1431 --- /dev/null +++ b/assets/dev_api_plugin_model.md.TQv7nVxA.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as r,al as o}from"./chunks/framework.BUxnStXl.js";const m=JSON.parse('{"title":"liteyuki.plugin.model","description":"","frontmatter":{"title":"liteyuki.plugin.model"},"headers":[],"relativePath":"dev/api/plugin/model.md","filePath":"zh/dev/api/plugin/model.md","lastUpdated":null}'),s={name:"dev/api/plugin/model.md"};function i(l,a,n,d,h,u){return r(),e("div",null,a[0]||(a[0]=[o("",26)]))}const p=t(s,[["render",i]]);export{m as __pageData,p as default}; diff --git a/assets/dev_api_plugins_index.md.Upe_Wimu.js b/assets/dev_api_plugins_index.md.hrT7rK25.js similarity index 85% rename from assets/dev_api_plugins_index.md.Upe_Wimu.js rename to assets/dev_api_plugins_index.md.hrT7rK25.js index dd97f27b..7e616630 100644 --- a/assets/dev_api_plugins_index.md.Upe_Wimu.js +++ b/assets/dev_api_plugins_index.md.hrT7rK25.js @@ -1 +1 @@ -import{_ as l,c as n,j as e,a as t,o as a}from"./chunks/framework.v7PlT0Wt.js";const m=JSON.parse('{"title":"liteyuki.plugins","description":"","frontmatter":{"title":"liteyuki.plugins","collapsed":true},"headers":[],"relativePath":"dev/api/plugins/index.md","filePath":"zh/dev/api/plugins/index.md","lastUpdated":null}'),s={name:"dev/api/plugins/index.md"};function u(d,i,r,o,p,c){return a(),n("div",null,i[0]||(i[0]=[e("h1",{id:"模块-liteyuki-plugins",tabindex:"-1"},[e("strong",null,"模块"),t(),e("code",null,"liteyuki.plugins"),t(),e("a",{class:"header-anchor",href:"#模块-liteyuki-plugins","aria-label":'Permalink to "**模块** `liteyuki.plugins`"'},"​")],-1),e("p",null,"此模块为内置插件文件夹,用于存放内置插件。 This module is the built-in plugin folder, used to store built-in plugins.",-1)]))}const f=l(s,[["render",u]]);export{m as __pageData,f as default}; +import{_ as l,c as n,o as a,j as e,a as t}from"./chunks/framework.BUxnStXl.js";const m=JSON.parse('{"title":"liteyuki.plugins","description":"","frontmatter":{"title":"liteyuki.plugins","collapsed":true},"headers":[],"relativePath":"dev/api/plugins/index.md","filePath":"zh/dev/api/plugins/index.md","lastUpdated":null}'),s={name:"dev/api/plugins/index.md"};function u(d,i,r,o,p,c){return a(),n("div",null,i[0]||(i[0]=[e("h1",{id:"模块-liteyuki-plugins",tabindex:"-1"},[e("strong",null,"模块"),t(),e("code",null,"liteyuki.plugins"),t(),e("a",{class:"header-anchor",href:"#模块-liteyuki-plugins","aria-label":'Permalink to "**模块** `liteyuki.plugins`"'},"​")],-1),e("p",null,"此模块为内置插件文件夹,用于存放内置插件。 This module is the built-in plugin folder, used to store built-in plugins.",-1)]))}const f=l(s,[["render",u]]);export{m as __pageData,f as default}; diff --git a/assets/dev_api_plugins_index.md.Upe_Wimu.lean.js b/assets/dev_api_plugins_index.md.hrT7rK25.lean.js similarity index 85% rename from assets/dev_api_plugins_index.md.Upe_Wimu.lean.js rename to assets/dev_api_plugins_index.md.hrT7rK25.lean.js index dd97f27b..7e616630 100644 --- a/assets/dev_api_plugins_index.md.Upe_Wimu.lean.js +++ b/assets/dev_api_plugins_index.md.hrT7rK25.lean.js @@ -1 +1 @@ -import{_ as l,c as n,j as e,a as t,o as a}from"./chunks/framework.v7PlT0Wt.js";const m=JSON.parse('{"title":"liteyuki.plugins","description":"","frontmatter":{"title":"liteyuki.plugins","collapsed":true},"headers":[],"relativePath":"dev/api/plugins/index.md","filePath":"zh/dev/api/plugins/index.md","lastUpdated":null}'),s={name:"dev/api/plugins/index.md"};function u(d,i,r,o,p,c){return a(),n("div",null,i[0]||(i[0]=[e("h1",{id:"模块-liteyuki-plugins",tabindex:"-1"},[e("strong",null,"模块"),t(),e("code",null,"liteyuki.plugins"),t(),e("a",{class:"header-anchor",href:"#模块-liteyuki-plugins","aria-label":'Permalink to "**模块** `liteyuki.plugins`"'},"​")],-1),e("p",null,"此模块为内置插件文件夹,用于存放内置插件。 This module is the built-in plugin folder, used to store built-in plugins.",-1)]))}const f=l(s,[["render",u]]);export{m as __pageData,f as default}; +import{_ as l,c as n,o as a,j as e,a as t}from"./chunks/framework.BUxnStXl.js";const m=JSON.parse('{"title":"liteyuki.plugins","description":"","frontmatter":{"title":"liteyuki.plugins","collapsed":true},"headers":[],"relativePath":"dev/api/plugins/index.md","filePath":"zh/dev/api/plugins/index.md","lastUpdated":null}'),s={name:"dev/api/plugins/index.md"};function u(d,i,r,o,p,c){return a(),n("div",null,i[0]||(i[0]=[e("h1",{id:"模块-liteyuki-plugins",tabindex:"-1"},[e("strong",null,"模块"),t(),e("code",null,"liteyuki.plugins"),t(),e("a",{class:"header-anchor",href:"#模块-liteyuki-plugins","aria-label":'Permalink to "**模块** `liteyuki.plugins`"'},"​")],-1),e("p",null,"此模块为内置插件文件夹,用于存放内置插件。 This module is the built-in plugin folder, used to store built-in plugins.",-1)]))}const f=l(s,[["render",u]]);export{m as __pageData,f as default}; diff --git a/assets/dev_api_plugins_liteecho.md.DBpO6gRP.js b/assets/dev_api_plugins_liteecho.md.B8syLDLV.js similarity index 93% rename from assets/dev_api_plugins_liteecho.md.DBpO6gRP.js rename to assets/dev_api_plugins_liteecho.md.B8syLDLV.js index 05962faf..909cca17 100644 --- a/assets/dev_api_plugins_liteecho.md.DBpO6gRP.js +++ b/assets/dev_api_plugins_liteecho.md.B8syLDLV.js @@ -1 +1 @@ -import{_ as i,c as s,a7 as t,o as a}from"./chunks/framework.v7PlT0Wt.js";const d=JSON.parse('{"title":"liteyuki.plugins.liteecho","description":"","frontmatter":{"title":"liteyuki.plugins.liteecho"},"headers":[],"relativePath":"dev/api/plugins/liteecho.md","filePath":"zh/dev/api/plugins/liteecho.md","lastUpdated":null}'),l={name:"dev/api/plugins/liteecho.md"};function n(h,e,o,p,r,k){return a(),s("div",null,e[0]||(e[0]=[t('

模块 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 func liteecho(event: MessageEvent)

源代码在GitHub上查看
python
@on_startswith(['liteecho'], rule=is_su_rule).handle()\nasync def liteecho(event: MessageEvent):\n    event.reply(event.raw_message.strip()[8:].strip())
',7)]))}const u=i(l,[["render",n]]);export{d as __pageData,u as default}; +import{_ as i,c as s,o as t,al as a}from"./chunks/framework.BUxnStXl.js";const d=JSON.parse('{"title":"liteyuki.plugins.liteecho","description":"","frontmatter":{"title":"liteyuki.plugins.liteecho"},"headers":[],"relativePath":"dev/api/plugins/liteecho.md","filePath":"zh/dev/api/plugins/liteecho.md","lastUpdated":null}'),l={name:"dev/api/plugins/liteecho.md"};function n(h,e,o,p,r,k){return t(),s("div",null,e[0]||(e[0]=[a('

模块 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 func liteecho(event: MessageEvent)

源代码在GitHub上查看
python
@on_startswith(['liteecho'], rule=is_su_rule).handle()\nasync def liteecho(event: MessageEvent):\n    event.reply(event.raw_message.strip()[8:].strip())
',7)]))}const u=i(l,[["render",n]]);export{d as __pageData,u as default}; diff --git a/assets/dev_api_plugins_liteecho.md.B8syLDLV.lean.js b/assets/dev_api_plugins_liteecho.md.B8syLDLV.lean.js new file mode 100644 index 00000000..88e76fa3 --- /dev/null +++ b/assets/dev_api_plugins_liteecho.md.B8syLDLV.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as t,al as a}from"./chunks/framework.BUxnStXl.js";const d=JSON.parse('{"title":"liteyuki.plugins.liteecho","description":"","frontmatter":{"title":"liteyuki.plugins.liteecho"},"headers":[],"relativePath":"dev/api/plugins/liteecho.md","filePath":"zh/dev/api/plugins/liteecho.md","lastUpdated":null}'),l={name:"dev/api/plugins/liteecho.md"};function n(h,e,o,p,r,k){return t(),s("div",null,e[0]||(e[0]=[a("",7)]))}const u=i(l,[["render",n]]);export{d as __pageData,u as default}; diff --git a/assets/dev_api_plugins_liteecho.md.DBpO6gRP.lean.js b/assets/dev_api_plugins_liteecho.md.DBpO6gRP.lean.js deleted file mode 100644 index 05962faf..00000000 --- a/assets/dev_api_plugins_liteecho.md.DBpO6gRP.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as s,a7 as t,o as a}from"./chunks/framework.v7PlT0Wt.js";const d=JSON.parse('{"title":"liteyuki.plugins.liteecho","description":"","frontmatter":{"title":"liteyuki.plugins.liteecho"},"headers":[],"relativePath":"dev/api/plugins/liteecho.md","filePath":"zh/dev/api/plugins/liteecho.md","lastUpdated":null}'),l={name:"dev/api/plugins/liteecho.md"};function n(h,e,o,p,r,k){return a(),s("div",null,e[0]||(e[0]=[t('

模块 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 func liteecho(event: MessageEvent)

源代码在GitHub上查看
python
@on_startswith(['liteecho'], rule=is_su_rule).handle()\nasync def liteecho(event: MessageEvent):\n    event.reply(event.raw_message.strip()[8:].strip())
',7)]))}const u=i(l,[["render",n]]);export{d as __pageData,u as default}; diff --git a/assets/dev_api_plugins_plugin_loader_index.md.DKMgHA3A.js b/assets/dev_api_plugins_plugin_loader_index.md.BdRu1FeG.js similarity index 94% rename from assets/dev_api_plugins_plugin_loader_index.md.DKMgHA3A.js rename to assets/dev_api_plugins_plugin_loader_index.md.BdRu1FeG.js index 07f5f395..229941a5 100644 --- a/assets/dev_api_plugins_plugin_loader_index.md.DKMgHA3A.js +++ b/assets/dev_api_plugins_plugin_loader_index.md.BdRu1FeG.js @@ -1 +1 @@ -import{_ as s,c as a,a7 as l,o as n}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"liteyuki.plugins.plugin_loader","description":"","frontmatter":{"title":"liteyuki.plugins.plugin_loader","collapsed":true},"headers":[],"relativePath":"dev/api/plugins/plugin_loader/index.md","filePath":"zh/dev/api/plugins/plugin_loader/index.md","lastUpdated":null}'),e={name:"dev/api/plugins/plugin_loader/index.md"};function t(p,i,r,d,o,h){return n(),a("div",null,i[0]||(i[0]=[l('

模块 liteyuki.plugins.plugin_loader

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

@Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File : init.py.py @Software: PyCharm


func default_plugins_loader()

说明: 默认插件加载器,应在初始化时调用

源代码在GitHub上查看
python
def default_plugins_loader():\n    for plugin in get_config('liteyuki.plugins', []):\n        load_plugin(plugin)\n    for plugin_dir in get_config('liteyuki.plugin_dirs', ['src/liteyuki_plugins']):\n        load_plugins(plugin_dir)
',7)]))}const g=s(e,[["render",t]]);export{u as __pageData,g as default}; +import{_ as s,c as a,o as l,al as n}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki.plugins.plugin_loader","description":"","frontmatter":{"title":"liteyuki.plugins.plugin_loader","collapsed":true},"headers":[],"relativePath":"dev/api/plugins/plugin_loader/index.md","filePath":"zh/dev/api/plugins/plugin_loader/index.md","lastUpdated":null}'),e={name:"dev/api/plugins/plugin_loader/index.md"};function t(p,i,r,d,o,h){return l(),a("div",null,i[0]||(i[0]=[n('

模块 liteyuki.plugins.plugin_loader

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

@Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File : init.py.py @Software: PyCharm


func default_plugins_loader()

说明: 默认插件加载器,应在初始化时调用

源代码在GitHub上查看
python
def default_plugins_loader():\n    for plugin in get_config('liteyuki.plugins', []):\n        load_plugin(plugin)\n    for plugin_dir in get_config('liteyuki.plugin_dirs', ['src/liteyuki_plugins']):\n        load_plugins(plugin_dir)
',7)]))}const g=s(e,[["render",t]]);export{u as __pageData,g as default}; diff --git a/assets/dev_api_plugins_plugin_loader_index.md.BdRu1FeG.lean.js b/assets/dev_api_plugins_plugin_loader_index.md.BdRu1FeG.lean.js new file mode 100644 index 00000000..51ecc4a8 --- /dev/null +++ b/assets/dev_api_plugins_plugin_loader_index.md.BdRu1FeG.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as l,al as n}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki.plugins.plugin_loader","description":"","frontmatter":{"title":"liteyuki.plugins.plugin_loader","collapsed":true},"headers":[],"relativePath":"dev/api/plugins/plugin_loader/index.md","filePath":"zh/dev/api/plugins/plugin_loader/index.md","lastUpdated":null}'),e={name:"dev/api/plugins/plugin_loader/index.md"};function t(p,i,r,d,o,h){return l(),a("div",null,i[0]||(i[0]=[n("",7)]))}const g=s(e,[["render",t]]);export{u as __pageData,g as default}; diff --git a/assets/dev_api_plugins_plugin_loader_index.md.DKMgHA3A.lean.js b/assets/dev_api_plugins_plugin_loader_index.md.DKMgHA3A.lean.js deleted file mode 100644 index 07f5f395..00000000 --- a/assets/dev_api_plugins_plugin_loader_index.md.DKMgHA3A.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,a7 as l,o as n}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"liteyuki.plugins.plugin_loader","description":"","frontmatter":{"title":"liteyuki.plugins.plugin_loader","collapsed":true},"headers":[],"relativePath":"dev/api/plugins/plugin_loader/index.md","filePath":"zh/dev/api/plugins/plugin_loader/index.md","lastUpdated":null}'),e={name:"dev/api/plugins/plugin_loader/index.md"};function t(p,i,r,d,o,h){return n(),a("div",null,i[0]||(i[0]=[l('

模块 liteyuki.plugins.plugin_loader

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

@Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File : init.py.py @Software: PyCharm


func default_plugins_loader()

说明: 默认插件加载器,应在初始化时调用

源代码在GitHub上查看
python
def default_plugins_loader():\n    for plugin in get_config('liteyuki.plugins', []):\n        load_plugin(plugin)\n    for plugin_dir in get_config('liteyuki.plugin_dirs', ['src/liteyuki_plugins']):\n        load_plugins(plugin_dir)
',7)]))}const g=s(e,[["render",t]]);export{u as __pageData,g as default}; diff --git a/assets/dev_api_session_event.md.CKmLyT0n.js b/assets/dev_api_session_event.md.B6MK29_S.js similarity index 98% rename from assets/dev_api_session_event.md.CKmLyT0n.js rename to assets/dev_api_session_event.md.B6MK29_S.js index 5b9b68f3..2307bea0 100644 --- a/assets/dev_api_session_event.md.CKmLyT0n.js +++ b/assets/dev_api_session_event.md.B6MK29_S.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as e,o as t}from"./chunks/framework.v7PlT0Wt.js";const g=JSON.parse('{"title":"liteyuki.session.event","description":"","frontmatter":{"title":"liteyuki.session.event"},"headers":[],"relativePath":"dev/api/session/event.md","filePath":"zh/dev/api/session/event.md","lastUpdated":null}'),n={name:"dev/api/session/event.md"};function h(l,s,k,p,r,d){return t(),a("div",null,s[0]||(s[0]=[e(`

模块 liteyuki.session.event

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

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

class MessageEvent


func __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)

说明: 轻雪抽象消息事件

源代码在GitHub上查看
python
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):
+import{_ as i,c as a,o as e,al as t}from"./chunks/framework.BUxnStXl.js";const g=JSON.parse('{"title":"liteyuki.session.event","description":"","frontmatter":{"title":"liteyuki.session.event"},"headers":[],"relativePath":"dev/api/session/event.md","filePath":"zh/dev/api/session/event.md","lastUpdated":null}'),n={name:"dev/api/session/event.md"};function h(l,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[t(`

模块 liteyuki.session.event

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

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

class MessageEvent


func __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)

说明: 轻雪抽象消息事件

源代码在GitHub上查看
python
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):
     if data is None:
         data = {}
     self.message_type = message_type
diff --git a/assets/dev_api_session_event.md.B6MK29_S.lean.js b/assets/dev_api_session_event.md.B6MK29_S.lean.js
new file mode 100644
index 00000000..9b553cd0
--- /dev/null
+++ b/assets/dev_api_session_event.md.B6MK29_S.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as e,al as t}from"./chunks/framework.BUxnStXl.js";const g=JSON.parse('{"title":"liteyuki.session.event","description":"","frontmatter":{"title":"liteyuki.session.event"},"headers":[],"relativePath":"dev/api/session/event.md","filePath":"zh/dev/api/session/event.md","lastUpdated":null}'),n={name:"dev/api/session/event.md"};function h(l,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[t("",14)]))}const y=i(n,[["render",h]]);export{g as __pageData,y as default};
diff --git a/assets/dev_api_session_event.md.CKmLyT0n.lean.js b/assets/dev_api_session_event.md.CKmLyT0n.lean.js
deleted file mode 100644
index 5b9b68f3..00000000
--- a/assets/dev_api_session_event.md.CKmLyT0n.lean.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import{_ as i,c as a,a7 as e,o as t}from"./chunks/framework.v7PlT0Wt.js";const g=JSON.parse('{"title":"liteyuki.session.event","description":"","frontmatter":{"title":"liteyuki.session.event"},"headers":[],"relativePath":"dev/api/session/event.md","filePath":"zh/dev/api/session/event.md","lastUpdated":null}'),n={name:"dev/api/session/event.md"};function h(l,s,k,p,r,d){return t(),a("div",null,s[0]||(s[0]=[e(`

模块 liteyuki.session.event

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

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

class MessageEvent


func __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)

说明: 轻雪抽象消息事件

源代码在GitHub上查看
python
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):
-    if data is None:
-        data = {}
-    self.message_type = message_type
-    self.data = data
-    self.bot_id = bot_id
-    self.message = message
-    self.raw_message = raw_message
-    self.session_id = session_id
-    self.session_type = session_type
-    self.user_id = user_id
-    self.receive_channel = receive_channel

func reply(self, message: str | dict[str, Any])

说明: 回复消息

参数:

  • message:
源代码在GitHub上查看
python
def reply(self, message: str | dict[str, Any]):
-    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)
`,14)]))}const y=i(n,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/dev_api_session_index.md.CFALBYZK.lean.js b/assets/dev_api_session_index.md.CFALBYZK.lean.js deleted file mode 100644 index b9714a67..00000000 --- a/assets/dev_api_session_index.md.CFALBYZK.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as a,a7 as e,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.session","description":"","frontmatter":{"title":"liteyuki.session","collapsed":true},"headers":[],"relativePath":"dev/api/session/index.md","filePath":"zh/dev/api/session/index.md","lastUpdated":null}'),t={name:"dev/api/session/index.md"};function h(l,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[e('

模块 liteyuki.session

该模块参考并引用了nonebot-plugin-alconna的消息段定义


func message_handler_thread(i_chans: Iterable[Chan[Any]])

参数:

  • i_chans: 多路输入管道组
源代码在GitHub上查看
python
def message_handler_thread(i_chans: Iterable[Chan[Any]]):\n    for msg in select(*i_chans):\n        logger.debug(f'Recv from anybot {msg}')\n        logger.info(f'Recv from anybot {msg}')\n    pass
',7)]))}const g=i(t,[["render",h]]);export{c as __pageData,g as default}; diff --git a/assets/dev_api_session_index.md.CFALBYZK.js b/assets/dev_api_session_index.md.ZEoJ9e0W.js similarity index 93% rename from assets/dev_api_session_index.md.CFALBYZK.js rename to assets/dev_api_session_index.md.ZEoJ9e0W.js index b9714a67..2f89c619 100644 --- a/assets/dev_api_session_index.md.CFALBYZK.js +++ b/assets/dev_api_session_index.md.ZEoJ9e0W.js @@ -1 +1 @@ -import{_ as i,c as a,a7 as e,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.session","description":"","frontmatter":{"title":"liteyuki.session","collapsed":true},"headers":[],"relativePath":"dev/api/session/index.md","filePath":"zh/dev/api/session/index.md","lastUpdated":null}'),t={name:"dev/api/session/index.md"};function h(l,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[e('

模块 liteyuki.session

该模块参考并引用了nonebot-plugin-alconna的消息段定义


func message_handler_thread(i_chans: Iterable[Chan[Any]])

参数:

  • i_chans: 多路输入管道组
源代码在GitHub上查看
python
def message_handler_thread(i_chans: Iterable[Chan[Any]]):\n    for msg in select(*i_chans):\n        logger.debug(f'Recv from anybot {msg}')\n        logger.info(f'Recv from anybot {msg}')\n    pass
',7)]))}const g=i(t,[["render",h]]);export{c as __pageData,g as default}; +import{_ as i,c as a,o as e,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.session","description":"","frontmatter":{"title":"liteyuki.session","collapsed":true},"headers":[],"relativePath":"dev/api/session/index.md","filePath":"zh/dev/api/session/index.md","lastUpdated":null}'),t={name:"dev/api/session/index.md"};function h(l,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[n('

模块 liteyuki.session

该模块参考并引用了nonebot-plugin-alconna的消息段定义


func message_handler_thread(i_chans: Iterable[Chan[Any]])

参数:

  • i_chans: 多路输入管道组
源代码在GitHub上查看
python
def message_handler_thread(i_chans: Iterable[Chan[Any]]):\n    for msg in select(*i_chans):\n        logger.debug(f'Recv from anybot {msg}')\n        logger.info(f'Recv from anybot {msg}')\n    pass
',7)]))}const g=i(t,[["render",h]]);export{c as __pageData,g as default}; diff --git a/assets/dev_api_session_index.md.ZEoJ9e0W.lean.js b/assets/dev_api_session_index.md.ZEoJ9e0W.lean.js new file mode 100644 index 00000000..579380ca --- /dev/null +++ b/assets/dev_api_session_index.md.ZEoJ9e0W.lean.js @@ -0,0 +1 @@ +import{_ as i,c as a,o as e,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.session","description":"","frontmatter":{"title":"liteyuki.session","collapsed":true},"headers":[],"relativePath":"dev/api/session/index.md","filePath":"zh/dev/api/session/index.md","lastUpdated":null}'),t={name:"dev/api/session/index.md"};function h(l,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[n("",7)]))}const g=i(t,[["render",h]]);export{c as __pageData,g as default}; diff --git a/assets/dev_api_session_matcher.md.B5yMvU4D.lean.js b/assets/dev_api_session_matcher.md.B5yMvU4D.lean.js deleted file mode 100644 index d8f3fac7..00000000 --- a/assets/dev_api_session_matcher.md.B5yMvU4D.lean.js +++ /dev/null @@ -1,17 +0,0 @@ -import{_ as i,c as a,a7 as e,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.session.matcher","description":"","frontmatter":{"title":"liteyuki.session.matcher"},"headers":[],"relativePath":"dev/api/session/matcher.md","filePath":"zh/dev/api/session/matcher.md","lastUpdated":null}'),t={name:"dev/api/session/matcher.md"};function l(h,s,r,p,k,o){return n(),a("div",null,s[0]||(s[0]=[e(`

模块 liteyuki.session.matcher

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

@Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : matcher.py @Software: PyCharm

class Matcher


func __init__(self, rule: Rule, priority: int, block: bool)

说明: 匹配器

参数:

  • rule: 规则
  • priority: 优先级 >= 0
  • block: 是否阻断后续优先级更低的匹配器
源代码在GitHub上查看
python
def __init__(self, rule: Rule, priority: int, block: bool):
-    self.rule = rule
-    self.priority = priority
-    self.block = block
-    self.handlers: list[EventHandler] = []

func handle(self) -> Callable[[EventHandler], EventHandler]

说明: 添加处理函数,装饰器

返回: 装饰器 handler

源代码在GitHub上查看
python
def handle(self) -> Callable[[EventHandler], EventHandler]:
-
-    def decorator(handler: EventHandler) -> EventHandler:
-        self.handlers.append(handler)
-        return handler
-    return decorator

async func run(self, event: MessageEvent) -> None

说明: 运行处理函数

参数:

  • event:
源代码在GitHub上查看
python
async def run(self, event: MessageEvent) -> None:
-    if not await self.rule(event):
-        return
-    for handler in self.handlers:
-        try:
-            await handler(event)
-        except Exception:
-            traceback.print_exc()
`,21)]))}const g=i(t,[["render",l]]);export{c as __pageData,g as default}; diff --git a/assets/dev_api_session_matcher.md.B5yMvU4D.js b/assets/dev_api_session_matcher.md.DSvh-SVh.js similarity index 97% rename from assets/dev_api_session_matcher.md.B5yMvU4D.js rename to assets/dev_api_session_matcher.md.DSvh-SVh.js index d8f3fac7..86799441 100644 --- a/assets/dev_api_session_matcher.md.B5yMvU4D.js +++ b/assets/dev_api_session_matcher.md.DSvh-SVh.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as e,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.session.matcher","description":"","frontmatter":{"title":"liteyuki.session.matcher"},"headers":[],"relativePath":"dev/api/session/matcher.md","filePath":"zh/dev/api/session/matcher.md","lastUpdated":null}'),t={name:"dev/api/session/matcher.md"};function l(h,s,r,p,k,o){return n(),a("div",null,s[0]||(s[0]=[e(`

模块 liteyuki.session.matcher

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

@Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : matcher.py @Software: PyCharm

class Matcher


func __init__(self, rule: Rule, priority: int, block: bool)

说明: 匹配器

参数:

  • rule: 规则
  • priority: 优先级 >= 0
  • block: 是否阻断后续优先级更低的匹配器
源代码在GitHub上查看
python
def __init__(self, rule: Rule, priority: int, block: bool):
+import{_ as i,c as a,o as e,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.session.matcher","description":"","frontmatter":{"title":"liteyuki.session.matcher"},"headers":[],"relativePath":"dev/api/session/matcher.md","filePath":"zh/dev/api/session/matcher.md","lastUpdated":null}'),t={name:"dev/api/session/matcher.md"};function l(h,s,r,p,k,o){return e(),a("div",null,s[0]||(s[0]=[n(`

模块 liteyuki.session.matcher

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

@Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : matcher.py @Software: PyCharm

class Matcher


func __init__(self, rule: Rule, priority: int, block: bool)

说明: 匹配器

参数:

  • rule: 规则
  • priority: 优先级 >= 0
  • block: 是否阻断后续优先级更低的匹配器
源代码在GitHub上查看
python
def __init__(self, rule: Rule, priority: int, block: bool):
     self.rule = rule
     self.priority = priority
     self.block = block
diff --git a/assets/dev_api_session_matcher.md.DSvh-SVh.lean.js b/assets/dev_api_session_matcher.md.DSvh-SVh.lean.js
new file mode 100644
index 00000000..1f2c20c8
--- /dev/null
+++ b/assets/dev_api_session_matcher.md.DSvh-SVh.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as e,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.session.matcher","description":"","frontmatter":{"title":"liteyuki.session.matcher"},"headers":[],"relativePath":"dev/api/session/matcher.md","filePath":"zh/dev/api/session/matcher.md","lastUpdated":null}'),t={name:"dev/api/session/matcher.md"};function l(h,s,r,p,k,o){return e(),a("div",null,s[0]||(s[0]=[n("",21)]))}const g=i(t,[["render",l]]);export{c as __pageData,g as default};
diff --git a/assets/dev_api_session_message_segments.md.CREZ0kMU.js b/assets/dev_api_session_message_segments.md.COoexy54.js
similarity index 90%
rename from assets/dev_api_session_message_segments.md.CREZ0kMU.js
rename to assets/dev_api_session_message_segments.md.COoexy54.js
index 9b593dfd..7c0367fd 100644
--- a/assets/dev_api_session_message_segments.md.CREZ0kMU.js
+++ b/assets/dev_api_session_message_segments.md.COoexy54.js
@@ -1 +1 @@
-import{_ as a,c as t,a7 as s,o as r}from"./chunks/framework.v7PlT0Wt.js";const h=JSON.parse('{"title":"liteyuki.session.message.segments","description":"","frontmatter":{"title":"liteyuki.session.message.segments"},"headers":[],"relativePath":"dev/api/session/message/segments.md","filePath":"zh/dev/api/session/message/segments.md","lastUpdated":null}'),o={name:"dev/api/session/message/segments.md"};function n(l,e,d,i,c,m){return r(),t("div",null,e[0]||(e[0]=[s('

模块 liteyuki.session.message.segments

class BaseSeg(BaseModel)

attr type: str = 'Segment'

attr data: dict[str, Any] = NO_DEFAULT

class Text(BaseSeg)

attr content: str = NO_DEFAULT

class Image(BaseSeg)

attr url: str = NO_DEFAULT

',8)]))}const u=a(o,[["render",n]]);export{h as __pageData,u as default}; +import{_ as a,c as t,o as s,al as r}from"./chunks/framework.BUxnStXl.js";const h=JSON.parse('{"title":"liteyuki.session.message.segments","description":"","frontmatter":{"title":"liteyuki.session.message.segments"},"headers":[],"relativePath":"dev/api/session/message/segments.md","filePath":"zh/dev/api/session/message/segments.md","lastUpdated":null}'),o={name:"dev/api/session/message/segments.md"};function n(l,e,d,i,c,m){return s(),t("div",null,e[0]||(e[0]=[r('

模块 liteyuki.session.message.segments

class BaseSeg(BaseModel)

attr type: str = 'Segment'

attr data: dict[str, Any] = NO_DEFAULT

class Text(BaseSeg)

attr content: str = NO_DEFAULT

class Image(BaseSeg)

attr url: str = NO_DEFAULT

',8)]))}const u=a(o,[["render",n]]);export{h as __pageData,u as default}; diff --git a/assets/dev_api_session_message_segments.md.COoexy54.lean.js b/assets/dev_api_session_message_segments.md.COoexy54.lean.js new file mode 100644 index 00000000..411698b2 --- /dev/null +++ b/assets/dev_api_session_message_segments.md.COoexy54.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as s,al as r}from"./chunks/framework.BUxnStXl.js";const h=JSON.parse('{"title":"liteyuki.session.message.segments","description":"","frontmatter":{"title":"liteyuki.session.message.segments"},"headers":[],"relativePath":"dev/api/session/message/segments.md","filePath":"zh/dev/api/session/message/segments.md","lastUpdated":null}'),o={name:"dev/api/session/message/segments.md"};function n(l,e,d,i,c,m){return s(),t("div",null,e[0]||(e[0]=[r("",8)]))}const u=a(o,[["render",n]]);export{h as __pageData,u as default}; diff --git a/assets/dev_api_session_message_segments.md.CREZ0kMU.lean.js b/assets/dev_api_session_message_segments.md.CREZ0kMU.lean.js deleted file mode 100644 index 9b593dfd..00000000 --- a/assets/dev_api_session_message_segments.md.CREZ0kMU.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as t,a7 as s,o as r}from"./chunks/framework.v7PlT0Wt.js";const h=JSON.parse('{"title":"liteyuki.session.message.segments","description":"","frontmatter":{"title":"liteyuki.session.message.segments"},"headers":[],"relativePath":"dev/api/session/message/segments.md","filePath":"zh/dev/api/session/message/segments.md","lastUpdated":null}'),o={name:"dev/api/session/message/segments.md"};function n(l,e,d,i,c,m){return r(),t("div",null,e[0]||(e[0]=[s('

模块 liteyuki.session.message.segments

class BaseSeg(BaseModel)

attr type: str = 'Segment'

attr data: dict[str, Any] = NO_DEFAULT

class Text(BaseSeg)

attr content: str = NO_DEFAULT

class Image(BaseSeg)

attr url: str = NO_DEFAULT

',8)]))}const u=a(o,[["render",n]]);export{h as __pageData,u as default}; diff --git a/assets/dev_api_session_models.md.ChyQE0cI.lean.js b/assets/dev_api_session_models.md.ChyQE0cI.lean.js deleted file mode 100644 index ce676f0b..00000000 --- a/assets/dev_api_session_models.md.ChyQE0cI.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as s,a7 as t,o as i}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.session.models","description":"","frontmatter":{"title":"liteyuki.session.models"},"headers":[],"relativePath":"dev/api/session/models.md","filePath":"zh/dev/api/session/models.md","lastUpdated":null}'),n={name:"dev/api/session/models.md"};function r(o,e,l,h,d,k){return i(),s("div",null,e[0]||(e[0]=[t('

模块 liteyuki.session.models

本模块使用了nonebot-plugin-uninfo的部分模型定义 MIT License

Copyright (c) 2024 RF-Tar-Railt

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

class SceneType(int, Enum)

attr PRIVATE = 0

attr GROUP = 1

attr GUILD = 2

attr CHANNEL_TEXT = 3

attr CHANNEL_CATEGORY = 4

attr CHANNEL_VOICE = 5

class User(BaseModel)

attr id: str = NO_DEFAULT

attr name: str | None = None

attr nick: str | None = None

attr avatar: str | None = None

attr gender: str | None = None

class Scene(BaseModel)

attr id: str = NO_DEFAULT

attr type: SceneType = NO_DEFAULT

attr name: str | None = None

attr avatar: str | None = None

attr parent: 'Scene | None' = None

class Role(BaseModel)

attr id: str = NO_DEFAULT

attr level: int | None = None

attr name: str | None = None

class Member(BaseModel)

attr user: User = NO_DEFAULT

attr nickname: str | None = None

attr role: Role | None = None

attr mute: bool | None = None

attr joined_at: datetime | None = None

class Session(BaseModel)


@property

func session_id(self)

源代码在GitHub上查看
python
@property\ndef session_id(self):\n    if self.scope == SceneType.PRIVATE:\n        return f'{self.scope}:{self.user.id}'\n    elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):\n        return f'{self.scope}:{self.scene.id}'\n    else:\n        raise ValueError('Invalid SceneType')

@property

func target_id(self)

源代码在GitHub上查看
python
@property\ndef target_id(self):\n    if self.scope == SceneType.PRIVATE:\n        return f'{self.scope}:{self.user.id}'\n    elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):\n        return f'{self.scope}:{self.scene.id}:{self.user.id}'

attr self_id: str = NO_DEFAULT

attr adapter: str = NO_DEFAULT

attr scope: str = NO_DEFAULT

attr scene: Scene = NO_DEFAULT

attr user: User = NO_DEFAULT

attr member: 'Member | None' = None

attr operator: 'Member | None' = None

',51)]))}const g=a(n,[["render",r]]);export{c as __pageData,g as default}; diff --git a/assets/dev_api_session_models.md.ChyQE0cI.js b/assets/dev_api_session_models.md.DW1qGehT.js similarity index 98% rename from assets/dev_api_session_models.md.ChyQE0cI.js rename to assets/dev_api_session_models.md.DW1qGehT.js index ce676f0b..0c330940 100644 --- a/assets/dev_api_session_models.md.ChyQE0cI.js +++ b/assets/dev_api_session_models.md.DW1qGehT.js @@ -1 +1 @@ -import{_ as a,c as s,a7 as t,o as i}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.session.models","description":"","frontmatter":{"title":"liteyuki.session.models"},"headers":[],"relativePath":"dev/api/session/models.md","filePath":"zh/dev/api/session/models.md","lastUpdated":null}'),n={name:"dev/api/session/models.md"};function r(o,e,l,h,d,k){return i(),s("div",null,e[0]||(e[0]=[t('

模块 liteyuki.session.models

本模块使用了nonebot-plugin-uninfo的部分模型定义 MIT License

Copyright (c) 2024 RF-Tar-Railt

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

class SceneType(int, Enum)

attr PRIVATE = 0

attr GROUP = 1

attr GUILD = 2

attr CHANNEL_TEXT = 3

attr CHANNEL_CATEGORY = 4

attr CHANNEL_VOICE = 5

class User(BaseModel)

attr id: str = NO_DEFAULT

attr name: str | None = None

attr nick: str | None = None

attr avatar: str | None = None

attr gender: str | None = None

class Scene(BaseModel)

attr id: str = NO_DEFAULT

attr type: SceneType = NO_DEFAULT

attr name: str | None = None

attr avatar: str | None = None

attr parent: 'Scene | None' = None

class Role(BaseModel)

attr id: str = NO_DEFAULT

attr level: int | None = None

attr name: str | None = None

class Member(BaseModel)

attr user: User = NO_DEFAULT

attr nickname: str | None = None

attr role: Role | None = None

attr mute: bool | None = None

attr joined_at: datetime | None = None

class Session(BaseModel)


@property

func session_id(self)

源代码在GitHub上查看
python
@property\ndef session_id(self):\n    if self.scope == SceneType.PRIVATE:\n        return f'{self.scope}:{self.user.id}'\n    elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):\n        return f'{self.scope}:{self.scene.id}'\n    else:\n        raise ValueError('Invalid SceneType')

@property

func target_id(self)

源代码在GitHub上查看
python
@property\ndef target_id(self):\n    if self.scope == SceneType.PRIVATE:\n        return f'{self.scope}:{self.user.id}'\n    elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):\n        return f'{self.scope}:{self.scene.id}:{self.user.id}'

attr self_id: str = NO_DEFAULT

attr adapter: str = NO_DEFAULT

attr scope: str = NO_DEFAULT

attr scene: Scene = NO_DEFAULT

attr user: User = NO_DEFAULT

attr member: 'Member | None' = None

attr operator: 'Member | None' = None

',51)]))}const g=a(n,[["render",r]]);export{c as __pageData,g as default}; +import{_ as a,c as s,o as t,al as i}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.session.models","description":"","frontmatter":{"title":"liteyuki.session.models"},"headers":[],"relativePath":"dev/api/session/models.md","filePath":"zh/dev/api/session/models.md","lastUpdated":null}'),n={name:"dev/api/session/models.md"};function r(o,e,l,h,d,k){return t(),s("div",null,e[0]||(e[0]=[i('

模块 liteyuki.session.models

本模块使用了nonebot-plugin-uninfo的部分模型定义 MIT License

Copyright (c) 2024 RF-Tar-Railt

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

class SceneType(int, Enum)

attr PRIVATE = 0

attr GROUP = 1

attr GUILD = 2

attr CHANNEL_TEXT = 3

attr CHANNEL_CATEGORY = 4

attr CHANNEL_VOICE = 5

class User(BaseModel)

attr id: str = NO_DEFAULT

attr name: str | None = None

attr nick: str | None = None

attr avatar: str | None = None

attr gender: str | None = None

class Scene(BaseModel)

attr id: str = NO_DEFAULT

attr type: SceneType = NO_DEFAULT

attr name: str | None = None

attr avatar: str | None = None

attr parent: 'Scene | None' = None

class Role(BaseModel)

attr id: str = NO_DEFAULT

attr level: int | None = None

attr name: str | None = None

class Member(BaseModel)

attr user: User = NO_DEFAULT

attr nickname: str | None = None

attr role: Role | None = None

attr mute: bool | None = None

attr joined_at: datetime | None = None

class Session(BaseModel)


@property

func session_id(self)

源代码在GitHub上查看
python
@property\ndef session_id(self):\n    if self.scope == SceneType.PRIVATE:\n        return f'{self.scope}:{self.user.id}'\n    elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):\n        return f'{self.scope}:{self.scene.id}'\n    else:\n        raise ValueError('Invalid SceneType')

@property

func target_id(self)

源代码在GitHub上查看
python
@property\ndef target_id(self):\n    if self.scope == SceneType.PRIVATE:\n        return f'{self.scope}:{self.user.id}'\n    elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):\n        return f'{self.scope}:{self.scene.id}:{self.user.id}'

attr self_id: str = NO_DEFAULT

attr adapter: str = NO_DEFAULT

attr scope: str = NO_DEFAULT

attr scene: Scene = NO_DEFAULT

attr user: User = NO_DEFAULT

attr member: 'Member | None' = None

attr operator: 'Member | None' = None

',51)]))}const g=a(n,[["render",r]]);export{c as __pageData,g as default}; diff --git a/assets/dev_api_session_models.md.DW1qGehT.lean.js b/assets/dev_api_session_models.md.DW1qGehT.lean.js new file mode 100644 index 00000000..6c58e4ca --- /dev/null +++ b/assets/dev_api_session_models.md.DW1qGehT.lean.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as t,al as i}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.session.models","description":"","frontmatter":{"title":"liteyuki.session.models"},"headers":[],"relativePath":"dev/api/session/models.md","filePath":"zh/dev/api/session/models.md","lastUpdated":null}'),n={name:"dev/api/session/models.md"};function r(o,e,l,h,d,k){return t(),s("div",null,e[0]||(e[0]=[i("",51)]))}const g=a(n,[["render",r]]);export{c as __pageData,g as default}; diff --git a/assets/dev_api_session_on.md.DAHZ1Mfh.js b/assets/dev_api_session_on.md.BCUmbb7c.js similarity index 97% rename from assets/dev_api_session_on.md.DAHZ1Mfh.js rename to assets/dev_api_session_on.md.BCUmbb7c.js index 61d7eb70..9e1938a4 100644 --- a/assets/dev_api_session_on.md.DAHZ1Mfh.js +++ b/assets/dev_api_session_on.md.BCUmbb7c.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as t,o as e}from"./chunks/framework.v7PlT0Wt.js";const y=JSON.parse('{"title":"liteyuki.session.on","description":"","frontmatter":{"title":"liteyuki.session.on"},"headers":[],"relativePath":"dev/api/session/on.md","filePath":"zh/dev/api/session/on.md","lastUpdated":null}'),n={name:"dev/api/session/on.md"};function l(h,s,r,k,p,o){return e(),a("div",null,s[0]||(s[0]=[t(`

模块 liteyuki.session.on

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

@Time : 2024/8/19 下午10:52 @Author : snowykami @Email : snowykami@outlook.com @File : on.py @Software: PyCharm


func add_matcher(matcher: Matcher)

源代码在GitHub上查看
python
def add_matcher(matcher: Matcher):
+import{_ as i,c as a,o as t,al as e}from"./chunks/framework.BUxnStXl.js";const y=JSON.parse('{"title":"liteyuki.session.on","description":"","frontmatter":{"title":"liteyuki.session.on"},"headers":[],"relativePath":"dev/api/session/on.md","filePath":"zh/dev/api/session/on.md","lastUpdated":null}'),n={name:"dev/api/session/on.md"};function l(h,s,r,k,p,o){return t(),a("div",null,s[0]||(s[0]=[e(`

模块 liteyuki.session.on

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

@Time : 2024/8/19 下午10:52 @Author : snowykami @Email : snowykami@outlook.com @File : on.py @Software: PyCharm


func add_matcher(matcher: Matcher)

源代码在GitHub上查看
python
def add_matcher(matcher: Matcher):
     for i, m in enumerate(_matcher_list):
         if m.priority < matcher.priority:
             _matcher_list.insert(i, matcher)
diff --git a/assets/dev_api_session_on.md.BCUmbb7c.lean.js b/assets/dev_api_session_on.md.BCUmbb7c.lean.js
new file mode 100644
index 00000000..de3a52b0
--- /dev/null
+++ b/assets/dev_api_session_on.md.BCUmbb7c.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as t,al as e}from"./chunks/framework.BUxnStXl.js";const y=JSON.parse('{"title":"liteyuki.session.on","description":"","frontmatter":{"title":"liteyuki.session.on"},"headers":[],"relativePath":"dev/api/session/on.md","filePath":"zh/dev/api/session/on.md","lastUpdated":null}'),n={name:"dev/api/session/on.md"};function l(h,s,r,k,p,o){return t(),a("div",null,s[0]||(s[0]=[e("",12)]))}const c=i(n,[["render",l]]);export{y as __pageData,c as default};
diff --git a/assets/dev_api_session_on.md.DAHZ1Mfh.lean.js b/assets/dev_api_session_on.md.DAHZ1Mfh.lean.js
deleted file mode 100644
index 61d7eb70..00000000
--- a/assets/dev_api_session_on.md.DAHZ1Mfh.lean.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import{_ as i,c as a,a7 as t,o as e}from"./chunks/framework.v7PlT0Wt.js";const y=JSON.parse('{"title":"liteyuki.session.on","description":"","frontmatter":{"title":"liteyuki.session.on"},"headers":[],"relativePath":"dev/api/session/on.md","filePath":"zh/dev/api/session/on.md","lastUpdated":null}'),n={name:"dev/api/session/on.md"};function l(h,s,r,k,p,o){return e(),a("div",null,s[0]||(s[0]=[t(`

模块 liteyuki.session.on

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

@Time : 2024/8/19 下午10:52 @Author : snowykami @Email : snowykami@outlook.com @File : on.py @Software: PyCharm


func add_matcher(matcher: Matcher)

源代码在GitHub上查看
python
def add_matcher(matcher: Matcher):
-    for i, m in enumerate(_matcher_list):
-        if m.priority < matcher.priority:
-            _matcher_list.insert(i, matcher)
-            break
-    else:
-        _matcher_list.append(matcher)

func on_message(rule: Rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher

源代码在GitHub上查看
python
def on_message(rule: Rule=empty_rule, priority: int=0, block: bool=False) -> Matcher:
-    matcher = Matcher(rule, priority, block)
-    add_matcher(matcher)
-    return matcher

func on_keywords(keywords: list[str], rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher

源代码在GitHub上查看
python
def on_keywords(keywords: list[str], rule=empty_rule, priority: int=0, block: bool=False) -> Matcher:
-
-    @Rule
-    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)
`,12)]))}const c=i(n,[["render",l]]);export{y as __pageData,c as default}; diff --git a/assets/dev_api_session_rule.md.DMa6RDEX.lean.js b/assets/dev_api_session_rule.md.DMa6RDEX.lean.js deleted file mode 100644 index d1502560..00000000 --- a/assets/dev_api_session_rule.md.DMa6RDEX.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as a,a7 as e,o as t}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"liteyuki.session.rule","description":"","frontmatter":{"title":"liteyuki.session.rule"},"headers":[],"relativePath":"dev/api/session/rule.md","filePath":"zh/dev/api/session/rule.md","lastUpdated":null}'),n={name:"dev/api/session/rule.md"};function l(h,s,r,p,k,d){return t(),a("div",null,s[0]||(s[0]=[e('

模块 liteyuki.session.rule

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

@Time : 2024/8/19 下午10:55 @Author : snowykami @Email : snowykami@outlook.com @File : rule.py @Software: PyCharm

var RuleHandlerFunc

  • 说明: 规则函数签名

  • 类型: TypeAlias

  • 默认值: Callable[[MessageEvent], Coroutine[None, None, bool]]

class Rule


func __init__(self, handler: RuleHandlerFunc)

源代码在GitHub上查看
python
def __init__(self, handler: RuleHandlerFunc):\n    self.handler = handler

func self | other: Rule => Rule

源代码在GitHub上查看
python
def __or__(self, other: 'Rule') -> 'Rule':\n\n    async def combined_handler(event: MessageEvent) -> bool:\n        return await self.handler(event) or await other.handler(event)\n    return Rule(combined_handler)

func self & other: Rule => Rule

源代码在GitHub上查看
python
def __and__(self, other: 'Rule') -> 'Rule':\n\n    async def combined_handler(event: MessageEvent) -> bool:\n        return await self.handler(event) and await other.handler(event)\n    return Rule(combined_handler)

async func self () event: MessageEvent => bool

源代码在GitHub上查看
python
async def __call__(self, event: MessageEvent) -> bool:\n    if self.handler is None:\n        return True\n    return await self.handler(event)

@Rule

async func empty_rule(event: MessageEvent) -> bool

源代码在GitHub上查看
python
@Rule\nasync def empty_rule(event: MessageEvent) -> bool:\n    return True

@Rule

async func is_su_rule(event: MessageEvent) -> bool

源代码在GitHub上查看
python
@Rule\nasync def is_su_rule(event: MessageEvent) -> bool:\n    return str(event.user_id) in _superusers
',26)]))}const g=i(n,[["render",l]]);export{u as __pageData,g as default}; diff --git a/assets/dev_api_session_rule.md.DMa6RDEX.js b/assets/dev_api_session_rule.md.DNlFf93W.js similarity index 98% rename from assets/dev_api_session_rule.md.DMa6RDEX.js rename to assets/dev_api_session_rule.md.DNlFf93W.js index d1502560..2f1d1f85 100644 --- a/assets/dev_api_session_rule.md.DMa6RDEX.js +++ b/assets/dev_api_session_rule.md.DNlFf93W.js @@ -1 +1 @@ -import{_ as i,c as a,a7 as e,o as t}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"liteyuki.session.rule","description":"","frontmatter":{"title":"liteyuki.session.rule"},"headers":[],"relativePath":"dev/api/session/rule.md","filePath":"zh/dev/api/session/rule.md","lastUpdated":null}'),n={name:"dev/api/session/rule.md"};function l(h,s,r,p,k,d){return t(),a("div",null,s[0]||(s[0]=[e('

模块 liteyuki.session.rule

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

@Time : 2024/8/19 下午10:55 @Author : snowykami @Email : snowykami@outlook.com @File : rule.py @Software: PyCharm

var RuleHandlerFunc

  • 说明: 规则函数签名

  • 类型: TypeAlias

  • 默认值: Callable[[MessageEvent], Coroutine[None, None, bool]]

class Rule


func __init__(self, handler: RuleHandlerFunc)

源代码在GitHub上查看
python
def __init__(self, handler: RuleHandlerFunc):\n    self.handler = handler

func self | other: Rule => Rule

源代码在GitHub上查看
python
def __or__(self, other: 'Rule') -> 'Rule':\n\n    async def combined_handler(event: MessageEvent) -> bool:\n        return await self.handler(event) or await other.handler(event)\n    return Rule(combined_handler)

func self & other: Rule => Rule

源代码在GitHub上查看
python
def __and__(self, other: 'Rule') -> 'Rule':\n\n    async def combined_handler(event: MessageEvent) -> bool:\n        return await self.handler(event) and await other.handler(event)\n    return Rule(combined_handler)

async func self () event: MessageEvent => bool

源代码在GitHub上查看
python
async def __call__(self, event: MessageEvent) -> bool:\n    if self.handler is None:\n        return True\n    return await self.handler(event)

@Rule

async func empty_rule(event: MessageEvent) -> bool

源代码在GitHub上查看
python
@Rule\nasync def empty_rule(event: MessageEvent) -> bool:\n    return True

@Rule

async func is_su_rule(event: MessageEvent) -> bool

源代码在GitHub上查看
python
@Rule\nasync def is_su_rule(event: MessageEvent) -> bool:\n    return str(event.user_id) in _superusers
',26)]))}const g=i(n,[["render",l]]);export{u as __pageData,g as default}; +import{_ as i,c as a,o as e,al as t}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki.session.rule","description":"","frontmatter":{"title":"liteyuki.session.rule"},"headers":[],"relativePath":"dev/api/session/rule.md","filePath":"zh/dev/api/session/rule.md","lastUpdated":null}'),n={name:"dev/api/session/rule.md"};function l(h,s,r,p,k,d){return e(),a("div",null,s[0]||(s[0]=[t('

模块 liteyuki.session.rule

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

@Time : 2024/8/19 下午10:55 @Author : snowykami @Email : snowykami@outlook.com @File : rule.py @Software: PyCharm

var RuleHandlerFunc

  • 说明: 规则函数签名

  • 类型: TypeAlias

  • 默认值: Callable[[MessageEvent], Coroutine[None, None, bool]]

class Rule


func __init__(self, handler: RuleHandlerFunc)

源代码在GitHub上查看
python
def __init__(self, handler: RuleHandlerFunc):\n    self.handler = handler

func self | other: Rule => Rule

源代码在GitHub上查看
python
def __or__(self, other: 'Rule') -> 'Rule':\n\n    async def combined_handler(event: MessageEvent) -> bool:\n        return await self.handler(event) or await other.handler(event)\n    return Rule(combined_handler)

func self & other: Rule => Rule

源代码在GitHub上查看
python
def __and__(self, other: 'Rule') -> 'Rule':\n\n    async def combined_handler(event: MessageEvent) -> bool:\n        return await self.handler(event) and await other.handler(event)\n    return Rule(combined_handler)

async func self () event: MessageEvent => bool

源代码在GitHub上查看
python
async def __call__(self, event: MessageEvent) -> bool:\n    if self.handler is None:\n        return True\n    return await self.handler(event)

@Rule

async func empty_rule(event: MessageEvent) -> bool

源代码在GitHub上查看
python
@Rule\nasync def empty_rule(event: MessageEvent) -> bool:\n    return True

@Rule

async func is_su_rule(event: MessageEvent) -> bool

源代码在GitHub上查看
python
@Rule\nasync def is_su_rule(event: MessageEvent) -> bool:\n    return str(event.user_id) in _superusers
',26)]))}const g=i(n,[["render",l]]);export{u as __pageData,g as default}; diff --git a/assets/dev_api_session_rule.md.DNlFf93W.lean.js b/assets/dev_api_session_rule.md.DNlFf93W.lean.js new file mode 100644 index 00000000..63631ac0 --- /dev/null +++ b/assets/dev_api_session_rule.md.DNlFf93W.lean.js @@ -0,0 +1 @@ +import{_ as i,c as a,o as e,al as t}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki.session.rule","description":"","frontmatter":{"title":"liteyuki.session.rule"},"headers":[],"relativePath":"dev/api/session/rule.md","filePath":"zh/dev/api/session/rule.md","lastUpdated":null}'),n={name:"dev/api/session/rule.md"};function l(h,s,r,p,k,d){return e(),a("div",null,s[0]||(s[0]=[t("",26)]))}const g=i(n,[["render",l]]);export{u as __pageData,g as default}; diff --git a/assets/dev_api_utils.md.DdxcDH2V.js b/assets/dev_api_utils.md.CT-KVtuC.js similarity index 98% rename from assets/dev_api_utils.md.DdxcDH2V.js rename to assets/dev_api_utils.md.CT-KVtuC.js index 31e62a9b..a8a763f2 100644 --- a/assets/dev_api_utils.md.DdxcDH2V.js +++ b/assets/dev_api_utils.md.CT-KVtuC.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const E=JSON.parse('{"title":"liteyuki.utils","description":"","frontmatter":{"title":"liteyuki.utils"},"headers":[],"relativePath":"dev/api/utils.md","filePath":"zh/dev/api/utils.md","lastUpdated":null}'),l={name:"dev/api/utils.md"};function h(e,s,p,k,r,o){return t(),a("div",null,s[0]||(s[0]=[n(`

模块 liteyuki.utils

一些常用的工具类,部分来源于 nonebot 并遵循其许可进行修改


func is_coroutine_callable(call: Callable[..., Any]) -> bool

说明: 判断是否为协程可调用对象

参数:

  • call: 可调用对象

返回: bool: 是否为协程可调用对象

源代码在GitHub上查看
python
def is_coroutine_callable(call: Callable[..., Any]) -> bool:
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const d=JSON.parse('{"title":"liteyuki.utils","description":"","frontmatter":{"title":"liteyuki.utils"},"headers":[],"relativePath":"dev/api/utils.md","filePath":"zh/dev/api/utils.md","lastUpdated":null}'),l={name:"dev/api/utils.md"};function h(e,s,p,k,r,o){return n(),a("div",null,s[0]||(s[0]=[t(`

模块 liteyuki.utils

一些常用的工具类,部分来源于 nonebot 并遵循其许可进行修改


func is_coroutine_callable(call: Callable[..., Any]) -> bool

说明: 判断是否为协程可调用对象

参数:

  • call: 可调用对象

返回: bool: 是否为协程可调用对象

源代码在GitHub上查看
python
def is_coroutine_callable(call: Callable[..., Any]) -> bool:
     if inspect.isroutine(call):
         return inspect.iscoroutinefunction(call)
     if inspect.isclass(call):
@@ -30,4 +30,4 @@ import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const E
     async def wrapper(*args, **kwargs):
         return func(*args, **kwargs)
     wrapper.__signature__ = inspect.signature(func)
-    return wrapper
`,35)]))}const c=i(l,[["render",h]]);export{E as __pageData,c as default}; + return wrapper
`,35)]))}const c=i(l,[["render",h]]);export{d as __pageData,c as default}; diff --git a/assets/dev_api_utils.md.CT-KVtuC.lean.js b/assets/dev_api_utils.md.CT-KVtuC.lean.js new file mode 100644 index 00000000..e1c2a050 --- /dev/null +++ b/assets/dev_api_utils.md.CT-KVtuC.lean.js @@ -0,0 +1 @@ +import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const d=JSON.parse('{"title":"liteyuki.utils","description":"","frontmatter":{"title":"liteyuki.utils"},"headers":[],"relativePath":"dev/api/utils.md","filePath":"zh/dev/api/utils.md","lastUpdated":null}'),l={name:"dev/api/utils.md"};function h(e,s,p,k,r,o){return n(),a("div",null,s[0]||(s[0]=[t("",35)]))}const c=i(l,[["render",h]]);export{d as __pageData,c as default}; diff --git a/assets/dev_api_utils.md.DdxcDH2V.lean.js b/assets/dev_api_utils.md.DdxcDH2V.lean.js deleted file mode 100644 index 31e62a9b..00000000 --- a/assets/dev_api_utils.md.DdxcDH2V.lean.js +++ /dev/null @@ -1,33 +0,0 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const E=JSON.parse('{"title":"liteyuki.utils","description":"","frontmatter":{"title":"liteyuki.utils"},"headers":[],"relativePath":"dev/api/utils.md","filePath":"zh/dev/api/utils.md","lastUpdated":null}'),l={name:"dev/api/utils.md"};function h(e,s,p,k,r,o){return t(),a("div",null,s[0]||(s[0]=[n(`

模块 liteyuki.utils

一些常用的工具类,部分来源于 nonebot 并遵循其许可进行修改


func is_coroutine_callable(call: Callable[..., Any]) -> bool

说明: 判断是否为协程可调用对象

参数:

  • call: 可调用对象

返回: bool: 是否为协程可调用对象

源代码在GitHub上查看
python
def is_coroutine_callable(call: Callable[..., Any]) -> bool:
-    if inspect.isroutine(call):
-        return inspect.iscoroutinefunction(call)
-    if inspect.isclass(call):
-        return False
-    func_ = getattr(call, '__call__', None)
-    return inspect.iscoroutinefunction(func_)

func run_coroutine(*coro: Coroutine)

说明: 运行协程

参数:

  • coro:
源代码在GitHub上查看
python
def run_coroutine(*coro: Coroutine):
-    try:
-        loop = asyncio.get_running_loop()
-        if loop.is_running():
-            for c in coro:
-                asyncio.ensure_future(c)
-        else:
-            for c in coro:
-                loop.run_until_complete(c)
-    except RuntimeError:
-        loop = asyncio.new_event_loop()
-        asyncio.set_event_loop(loop)
-        loop.run_until_complete(asyncio.gather(*coro))
-        loop.close()
-    except Exception as e:
-        logger.error(f'Exception occurred: {e}')

func run_coroutine_in_thread(*coro: Coroutine)

说明: 在新线程中运行协程

参数:

  • coro:
源代码在GitHub上查看
python
def run_coroutine_in_thread(*coro: Coroutine):
-    threading.Thread(target=run_coroutine, args=coro, daemon=True).start()

func path_to_module_name(path: Path) -> str

说明: 转换路径为模块名

参数:

  • path: 路径a/b/c/d -> a.b.c.d

返回: str: 模块名

源代码在GitHub上查看
python
def path_to_module_name(path: Path) -> str:
-    rel_path = path.resolve().relative_to(Path.cwd().resolve())
-    if rel_path.stem == '__init__':
-        return '.'.join(rel_path.parts[:-1])
-    else:
-        return '.'.join(rel_path.parts[:-1] + (rel_path.stem,))

func async_wrapper(func: Callable[..., Any]) -> Callable[..., Coroutine]

说明: 异步包装器

参数:

  • func: Sync Callable

返回: Coroutine: Asynchronous Callable

源代码在GitHub上查看
python
def async_wrapper(func: Callable[..., Any]) -> Callable[..., Coroutine]:
-
-    async def wrapper(*args, **kwargs):
-        return func(*args, **kwargs)
-    wrapper.__signature__ = inspect.signature(func)
-    return wrapper
`,35)]))}const c=i(l,[["render",h]]);export{E as __pageData,c as default}; diff --git a/assets/dev_best_practices.md.4fD5nTaf.lean.js b/assets/dev_best_practices.md.4fD5nTaf.lean.js deleted file mode 100644 index 6a187b3a..00000000 --- a/assets/dev_best_practices.md.4fD5nTaf.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as i,a7 as a,o as r}from"./chunks/framework.v7PlT0Wt.js";const b=JSON.parse('{"title":"最佳实践","description":"","frontmatter":{"title":"最佳实践","order":10},"headers":[],"relativePath":"dev/best_practices.md","filePath":"zh/dev/best_practices.md","lastUpdated":1734116271000}'),o={name:"dev/best_practices.md"};function l(n,t,u,h,s,c){return r(),i("div",null,t[0]||(t[0]=[a('

最佳实践

机器人应用

插件

其他

  • liteyuki starmap:轻雪官方星图,展示轻雪的所有实例及其位置分布
  • TRSS_Liteyuki:TRSS LiteyukiBot 管理脚本
  • litedoc:轻雪API文档生成器
  • liteyukibot-api (闭源):轻雪机器人统计接口
',7)]))}const k=e(o,[["render",l]]);export{b as __pageData,k as default}; diff --git a/assets/dev_best_practices.md.4fD5nTaf.js b/assets/dev_best_practices.md.DdVeSj3v.js similarity index 89% rename from assets/dev_best_practices.md.4fD5nTaf.js rename to assets/dev_best_practices.md.DdVeSj3v.js index 6a187b3a..795891a1 100644 --- a/assets/dev_best_practices.md.4fD5nTaf.js +++ b/assets/dev_best_practices.md.DdVeSj3v.js @@ -1 +1 @@ -import{_ as e,c as i,a7 as a,o as r}from"./chunks/framework.v7PlT0Wt.js";const b=JSON.parse('{"title":"最佳实践","description":"","frontmatter":{"title":"最佳实践","order":10},"headers":[],"relativePath":"dev/best_practices.md","filePath":"zh/dev/best_practices.md","lastUpdated":1734116271000}'),o={name:"dev/best_practices.md"};function l(n,t,u,h,s,c){return r(),i("div",null,t[0]||(t[0]=[a('

最佳实践

机器人应用

插件

其他

  • liteyuki starmap:轻雪官方星图,展示轻雪的所有实例及其位置分布
  • TRSS_Liteyuki:TRSS LiteyukiBot 管理脚本
  • litedoc:轻雪API文档生成器
  • liteyukibot-api (闭源):轻雪机器人统计接口
',7)]))}const k=e(o,[["render",l]]);export{b as __pageData,k as default}; +import{_ as e,c as i,o as a,al as r}from"./chunks/framework.BUxnStXl.js";const b=JSON.parse('{"title":"最佳实践","description":"","frontmatter":{"title":"最佳实践","order":10},"headers":[],"relativePath":"dev/best_practices.md","filePath":"zh/dev/best_practices.md","lastUpdated":1734116271000}'),o={name:"dev/best_practices.md"};function l(n,t,u,h,s,c){return a(),i("div",null,t[0]||(t[0]=[r('

最佳实践

机器人应用

插件

其他

  • liteyuki starmap:轻雪官方星图,展示轻雪的所有实例及其位置分布
  • TRSS_Liteyuki:TRSS LiteyukiBot 管理脚本
  • litedoc:轻雪API文档生成器
  • liteyukibot-api (闭源):轻雪机器人统计接口
',7)]))}const k=e(o,[["render",l]]);export{b as __pageData,k as default}; diff --git a/assets/dev_best_practices.md.DdVeSj3v.lean.js b/assets/dev_best_practices.md.DdVeSj3v.lean.js new file mode 100644 index 00000000..739e495b --- /dev/null +++ b/assets/dev_best_practices.md.DdVeSj3v.lean.js @@ -0,0 +1 @@ +import{_ as e,c as i,o as a,al as r}from"./chunks/framework.BUxnStXl.js";const b=JSON.parse('{"title":"最佳实践","description":"","frontmatter":{"title":"最佳实践","order":10},"headers":[],"relativePath":"dev/best_practices.md","filePath":"zh/dev/best_practices.md","lastUpdated":1734116271000}'),o={name:"dev/best_practices.md"};function l(n,t,u,h,s,c){return a(),i("div",null,t[0]||(t[0]=[r("",7)]))}const k=e(o,[["render",l]]);export{b as __pageData,k as default}; diff --git a/assets/dev_comm.md.C0QAxeah.lean.js b/assets/dev_comm.md.C0QAxeah.lean.js deleted file mode 100644 index 8d1080e1..00000000 --- a/assets/dev_comm.md.C0QAxeah.lean.js +++ /dev/null @@ -1,43 +0,0 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const o=JSON.parse('{"title":"进程通信","description":"","frontmatter":{"title":"进程通信","order":4},"headers":[],"relativePath":"dev/comm.md","filePath":"zh/dev/comm.md","lastUpdated":1734116271000}'),l={name:"dev/comm.md"};function e(h,s,p,k,r,d){return t(),a("div",null,s[0]||(s[0]=[n(`

通道通信

简介

轻雪运行在主进程 MainProcess 里,有部分实现插件为了一些功能在子进程中运行,这样两个进程上下文是不会互相干扰的,因此无法通过共享内存和直接对象传递进行通信。

例如子进程接收到用户信息需要重启机器人,这时可以通过通道对主进程发送消息,主进程接收到消息后重启对应子进程。

示例

通道是全双工的,有两种接收模式,但一个通道只能使用一种,即被动模式和主动模式,被动模式由chan.on_receive()装饰回调函数实现,主动模式需调用chan.receive()实现

  • 创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为{process_name}-active{process_name}-passive
  • 主进程中通过get_channel函数获取通道对象
  • 子进程中导入单例active_channelpassive_channel即可

在轻雪插件中(主进程中)

python
import asyncio
-
-from liteyuki.comm import get_channel, Channel
-from liteyuki import get_bot
-
-# get_channel函数获取通道对象,参数为调用set_channel时的通道标识
-channel_passive = get_channel("nonebot-passive")  # 获取被动通道
-channel_active = get_channel("nonebot-active")  # 获取主动通道
-liteyuki_bot = get_bot()
-
-
-# 注册一个函数在轻雪启动后运行
-@liteyuki_bot.on_after_start
-async def send_data():
-    while True:
-        channel_passive.send("I am liteyuki main process passive")
-        channel_active.send("I am liteyuki main process active")
-        await asyncio.sleep(3)  # 每3秒发送一次消息

在子进程中(例如NoneBot插件中)

python
from nonebot import get_driver
-from liteyuki.comm import active_channel, passive_channel  # 子进程中获取通道直接导入进程全局单例即可
-from liteyuki.log import logger
-
-driver = get_driver()
-
-
-# 被动模式,通过装饰器注册一个函数在接收到消息时运行,每次接收到字符串数据时都会运行
-@passive_channel.on_receive(filter_func=lambda data: isinstance(data, str))
-async def on_passive_receive(data):
-    logger.info(f"Passive receive: {data}")
-
-
-# 注册一个函数在NoneBot启动后运行
-@driver.on_startup
-def on_startup():
-    while True:
-        data = active_channel.receive()
-        logger.info(f"Active receive: {data}")

启动后控制台输出

log
0000-00-00 00:00:00 [ℹ️信息] Passive receive: I am liteyuki main process passive
-0000-00-00 00:00:00 [ℹ️信息] Active receive: I am liteyuki main process active
-0000-00-00 00:00:03 [ℹ️信息] Passive receive: I am liteyuki main process passive
-0000-00-00 00:00:03 [ℹ️信息] Active receive: I am liteyuki main process active
-...

共享内存通信

简介

  • 相比于普通进程通信,内存共享使得代码编写更加简洁,轻雪框架提供了一个内存共享通信的接口,你可以通过storage模块实现内存共享通信,该模块封装通道实现
  • 内存共享是线程安全的,你可以在多个线程中读写共享内存,线程锁会自动保护共享内存的读写操作

示例

在任意进程中均可使用

python
from liteyuki.comm.storage import shared_memory
-
-shared_memory.set("key", "value")  # 设置共享内存
-value = shared_memory.get("key")  # 获取共享内存

源代码:liteyuki/comm/storage.py

`,20)]))}const c=i(l,[["render",e]]);export{o as __pageData,c as default}; diff --git a/assets/dev_comm.md.C0QAxeah.js b/assets/dev_comm.md.DqHPEgmD.js similarity index 98% rename from assets/dev_comm.md.C0QAxeah.js rename to assets/dev_comm.md.DqHPEgmD.js index 8d1080e1..22dc3080 100644 --- a/assets/dev_comm.md.C0QAxeah.js +++ b/assets/dev_comm.md.DqHPEgmD.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const o=JSON.parse('{"title":"进程通信","description":"","frontmatter":{"title":"进程通信","order":4},"headers":[],"relativePath":"dev/comm.md","filePath":"zh/dev/comm.md","lastUpdated":1734116271000}'),l={name:"dev/comm.md"};function e(h,s,p,k,r,d){return t(),a("div",null,s[0]||(s[0]=[n(`

通道通信

简介

轻雪运行在主进程 MainProcess 里,有部分实现插件为了一些功能在子进程中运行,这样两个进程上下文是不会互相干扰的,因此无法通过共享内存和直接对象传递进行通信。

例如子进程接收到用户信息需要重启机器人,这时可以通过通道对主进程发送消息,主进程接收到消息后重启对应子进程。

示例

通道是全双工的,有两种接收模式,但一个通道只能使用一种,即被动模式和主动模式,被动模式由chan.on_receive()装饰回调函数实现,主动模式需调用chan.receive()实现

  • 创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为{process_name}-active{process_name}-passive
  • 主进程中通过get_channel函数获取通道对象
  • 子进程中导入单例active_channelpassive_channel即可

在轻雪插件中(主进程中)

python
import asyncio
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const o=JSON.parse('{"title":"进程通信","description":"","frontmatter":{"title":"进程通信","order":4},"headers":[],"relativePath":"dev/comm.md","filePath":"zh/dev/comm.md","lastUpdated":1734116271000}'),l={name:"dev/comm.md"};function e(h,s,p,k,r,E){return n(),a("div",null,s[0]||(s[0]=[t(`

通道通信

简介

轻雪运行在主进程 MainProcess 里,有部分实现插件为了一些功能在子进程中运行,这样两个进程上下文是不会互相干扰的,因此无法通过共享内存和直接对象传递进行通信。

例如子进程接收到用户信息需要重启机器人,这时可以通过通道对主进程发送消息,主进程接收到消息后重启对应子进程。

示例

通道是全双工的,有两种接收模式,但一个通道只能使用一种,即被动模式和主动模式,被动模式由chan.on_receive()装饰回调函数实现,主动模式需调用chan.receive()实现

  • 创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为{process_name}-active{process_name}-passive
  • 主进程中通过get_channel函数获取通道对象
  • 子进程中导入单例active_channelpassive_channel即可

在轻雪插件中(主进程中)

python
import asyncio
 
 from liteyuki.comm import get_channel, Channel
 from liteyuki import get_bot
diff --git a/assets/dev_comm.md.DqHPEgmD.lean.js b/assets/dev_comm.md.DqHPEgmD.lean.js
new file mode 100644
index 00000000..442b570e
--- /dev/null
+++ b/assets/dev_comm.md.DqHPEgmD.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const o=JSON.parse('{"title":"进程通信","description":"","frontmatter":{"title":"进程通信","order":4},"headers":[],"relativePath":"dev/comm.md","filePath":"zh/dev/comm.md","lastUpdated":1734116271000}'),l={name:"dev/comm.md"};function e(h,s,p,k,r,E){return n(),a("div",null,s[0]||(s[0]=[t("",20)]))}const c=i(l,[["render",e]]);export{o as __pageData,c as default};
diff --git a/assets/dev_guide.md.Gx0rbrqP.js b/assets/dev_guide.md.CmdhXyNq.js
similarity index 93%
rename from assets/dev_guide.md.Gx0rbrqP.js
rename to assets/dev_guide.md.CmdhXyNq.js
index 5a05d138..1eaeda22 100644
--- a/assets/dev_guide.md.Gx0rbrqP.js
+++ b/assets/dev_guide.md.CmdhXyNq.js
@@ -1 +1 @@
-import{C as o}from"./chunks/ContributorBar.DumWpLf_.js";import{c as i,a7 as l,G as t,o as a}from"./chunks/framework.v7PlT0Wt.js";import"./chunks/theme.2w8Mz6uA.js";const h=JSON.parse('{"title":"开发指南","description":"","frontmatter":{"title":"开发指南","order":0},"headers":[],"relativePath":"dev/guide.md","filePath":"zh/dev/guide.md","lastUpdated":1734116271000}'),r={name:"dev/guide.md"},g=Object.assign(r,{setup(d){return(c,e)=>(a(),i("div",null,[e[0]||(e[0]=l('

开发指南

如何开发

插件开发无需阅读本文档,请阅读插件开发文档API 引用

如需往轻雪仓库提交代码,请阅读以下内容:

  1. 首先fork一份轻雪仓库到你的个人/组织账户下。
  2. 在你的仓库中进行开发。
  3. 在你的仓库中创建一个新的分支,将你的代码提交到这个分支。
  4. 在你的仓库中创建一个Pull Request,将你的分支合并到轻雪仓库的main分支。

参与开发默认你已经了解Python语言和轻雪框架的基本使用方法,如果是文档相关的开发,请确保你了解Markdown语法和基本前端知识。 出现冲突请与仓库维护者联系。

建议

  • 开发过程中可以使用mypy, flake8, black等工具进行代码检查和格式化。
  • 启用开发者模式,可以在config.yml中设置dev_mode: true,这样可以在控制台看到更多的调试信息。

项目结构

  • main.py: 机器人入口文件
  • liteyuki: 框架目录(liteyukibot)
  • src: 机器人源码目录
    • liteyuki_plugins: 轻雪插件目录
    • nonebot_plugins: Nonebot插件目录
    • resources: 内置资源包目录
    • utils: 工具目录
  • tests: 单元测试目录
  • docs: 文档目录
    • en: 英文文档
    • zh: 中文文档
  • docker: Docker相关内容目录

其中,liteyuki框架是包含在LiteyukiBot应用中的,所以此项目既是LiteyukiBot应用仓库,同时也是liteyuki框架的仓库

src目录下为应用程序部分,业务逻辑请在此目录下进行开发,liteyuki_pluginsnonebot_plugins目录下为插件目录,插件开发请在此目录下进行开发。

规范化

  • 代码请遵循PEP8Google Python Style Guide
  • 提交到轻雪仓库的代码,请遵循以下规范:
    • 请确保代码是可运行的,没有危害的。
    • 请确保代码的类型提示是正确的。
    • 请确保注释风格为Google DocstringLiteyuki Docstring(推荐)以保证Litedoc能够正确解析并生成文档。
    • 字符串请使用双引号",尽量避免使用单引号',但在嵌套字符串时可以使用单引号。
    • 若有面向普通用户部分,请确保文档是完善的(每种语言都有对应的文档)。
  • commit message请遵循以下规范:
    • 应在每次完成一个功能或修复一个bug后提交代码,不要将多个功能或多个bug的代码混在一起提交。
    • 我们使用gitmoji来标记commit的类型,如:sparkles:表示引入新功能,:bug:表示修复bug等,具体请参考gitmoji
    • commit message的格式为<emoji> [type:] <message>,如:sparkles: feat: 给event添加新字段, 其中type字段为commit类型且可选,message字段为简短的描述,总结来说就是你干了什么。
    • 不限制commit message的语言,有条件可以使用中英双语。
  • 文档请遵循Markdown语法,并且支持vitepress相关内容:
    • 修订文档时,每个语言的文档都要修订。
    • 请确保文档内的链接是正确的,不要出现无法访问的死链接。
    • 请确保用户文档是通俗易懂的,开发文档是详细的。

最后

  • 本项目是一个非盈利的开源项目,我们欢迎任何人参与开发,你的贡献将会使轻雪变得更好。
',16)),t(o)]))}});export{h as __pageData,g as default}; +import{C as o}from"./chunks/ContributorBar.BEMv3ZFt.js";import{c as i,o as l,al as t,G as a}from"./chunks/framework.BUxnStXl.js";import"./chunks/theme.DegCgHop.js";const h=JSON.parse('{"title":"开发指南","description":"","frontmatter":{"title":"开发指南","order":0},"headers":[],"relativePath":"dev/guide.md","filePath":"zh/dev/guide.md","lastUpdated":1734116271000}'),r={name:"dev/guide.md"},g=Object.assign(r,{setup(d){return(c,e)=>(l(),i("div",null,[e[0]||(e[0]=t('

开发指南

如何开发

插件开发无需阅读本文档,请阅读插件开发文档API 引用

如需往轻雪仓库提交代码,请阅读以下内容:

  1. 首先fork一份轻雪仓库到你的个人/组织账户下。
  2. 在你的仓库中进行开发。
  3. 在你的仓库中创建一个新的分支,将你的代码提交到这个分支。
  4. 在你的仓库中创建一个Pull Request,将你的分支合并到轻雪仓库的main分支。

参与开发默认你已经了解Python语言和轻雪框架的基本使用方法,如果是文档相关的开发,请确保你了解Markdown语法和基本前端知识。 出现冲突请与仓库维护者联系。

建议

  • 开发过程中可以使用mypy, flake8, black等工具进行代码检查和格式化。
  • 启用开发者模式,可以在config.yml中设置dev_mode: true,这样可以在控制台看到更多的调试信息。

项目结构

  • main.py: 机器人入口文件
  • liteyuki: 框架目录(liteyukibot)
  • src: 机器人源码目录
    • liteyuki_plugins: 轻雪插件目录
    • nonebot_plugins: Nonebot插件目录
    • resources: 内置资源包目录
    • utils: 工具目录
  • tests: 单元测试目录
  • docs: 文档目录
    • en: 英文文档
    • zh: 中文文档
  • docker: Docker相关内容目录

其中,liteyuki框架是包含在LiteyukiBot应用中的,所以此项目既是LiteyukiBot应用仓库,同时也是liteyuki框架的仓库

src目录下为应用程序部分,业务逻辑请在此目录下进行开发,liteyuki_pluginsnonebot_plugins目录下为插件目录,插件开发请在此目录下进行开发。

规范化

  • 代码请遵循PEP8Google Python Style Guide
  • 提交到轻雪仓库的代码,请遵循以下规范:
    • 请确保代码是可运行的,没有危害的。
    • 请确保代码的类型提示是正确的。
    • 请确保注释风格为Google DocstringLiteyuki Docstring(推荐)以保证Litedoc能够正确解析并生成文档。
    • 字符串请使用双引号",尽量避免使用单引号',但在嵌套字符串时可以使用单引号。
    • 若有面向普通用户部分,请确保文档是完善的(每种语言都有对应的文档)。
  • commit message请遵循以下规范:
    • 应在每次完成一个功能或修复一个bug后提交代码,不要将多个功能或多个bug的代码混在一起提交。
    • 我们使用gitmoji来标记commit的类型,如:sparkles:表示引入新功能,:bug:表示修复bug等,具体请参考gitmoji
    • commit message的格式为<emoji> [type:] <message>,如:sparkles: feat: 给event添加新字段, 其中type字段为commit类型且可选,message字段为简短的描述,总结来说就是你干了什么。
    • 不限制commit message的语言,有条件可以使用中英双语。
  • 文档请遵循Markdown语法,并且支持vitepress相关内容:
    • 修订文档时,每个语言的文档都要修订。
    • 请确保文档内的链接是正确的,不要出现无法访问的死链接。
    • 请确保用户文档是通俗易懂的,开发文档是详细的。

最后

  • 本项目是一个非盈利的开源项目,我们欢迎任何人参与开发,你的贡献将会使轻雪变得更好。
',16)),a(o)]))}});export{h as __pageData,g as default}; diff --git a/assets/dev_guide.md.CmdhXyNq.lean.js b/assets/dev_guide.md.CmdhXyNq.lean.js new file mode 100644 index 00000000..54e15233 --- /dev/null +++ b/assets/dev_guide.md.CmdhXyNq.lean.js @@ -0,0 +1 @@ +import{C as o}from"./chunks/ContributorBar.BEMv3ZFt.js";import{c as i,o as l,al as t,G as a}from"./chunks/framework.BUxnStXl.js";import"./chunks/theme.DegCgHop.js";const h=JSON.parse('{"title":"开发指南","description":"","frontmatter":{"title":"开发指南","order":0},"headers":[],"relativePath":"dev/guide.md","filePath":"zh/dev/guide.md","lastUpdated":1734116271000}'),r={name:"dev/guide.md"},g=Object.assign(r,{setup(d){return(c,e)=>(l(),i("div",null,[e[0]||(e[0]=t("",16)),a(o)]))}});export{h as __pageData,g as default}; diff --git a/assets/dev_guide.md.Gx0rbrqP.lean.js b/assets/dev_guide.md.Gx0rbrqP.lean.js deleted file mode 100644 index 5a05d138..00000000 --- a/assets/dev_guide.md.Gx0rbrqP.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{C as o}from"./chunks/ContributorBar.DumWpLf_.js";import{c as i,a7 as l,G as t,o as a}from"./chunks/framework.v7PlT0Wt.js";import"./chunks/theme.2w8Mz6uA.js";const h=JSON.parse('{"title":"开发指南","description":"","frontmatter":{"title":"开发指南","order":0},"headers":[],"relativePath":"dev/guide.md","filePath":"zh/dev/guide.md","lastUpdated":1734116271000}'),r={name:"dev/guide.md"},g=Object.assign(r,{setup(d){return(c,e)=>(a(),i("div",null,[e[0]||(e[0]=l('

开发指南

如何开发

插件开发无需阅读本文档,请阅读插件开发文档API 引用

如需往轻雪仓库提交代码,请阅读以下内容:

  1. 首先fork一份轻雪仓库到你的个人/组织账户下。
  2. 在你的仓库中进行开发。
  3. 在你的仓库中创建一个新的分支,将你的代码提交到这个分支。
  4. 在你的仓库中创建一个Pull Request,将你的分支合并到轻雪仓库的main分支。

参与开发默认你已经了解Python语言和轻雪框架的基本使用方法,如果是文档相关的开发,请确保你了解Markdown语法和基本前端知识。 出现冲突请与仓库维护者联系。

建议

  • 开发过程中可以使用mypy, flake8, black等工具进行代码检查和格式化。
  • 启用开发者模式,可以在config.yml中设置dev_mode: true,这样可以在控制台看到更多的调试信息。

项目结构

  • main.py: 机器人入口文件
  • liteyuki: 框架目录(liteyukibot)
  • src: 机器人源码目录
    • liteyuki_plugins: 轻雪插件目录
    • nonebot_plugins: Nonebot插件目录
    • resources: 内置资源包目录
    • utils: 工具目录
  • tests: 单元测试目录
  • docs: 文档目录
    • en: 英文文档
    • zh: 中文文档
  • docker: Docker相关内容目录

其中,liteyuki框架是包含在LiteyukiBot应用中的,所以此项目既是LiteyukiBot应用仓库,同时也是liteyuki框架的仓库

src目录下为应用程序部分,业务逻辑请在此目录下进行开发,liteyuki_pluginsnonebot_plugins目录下为插件目录,插件开发请在此目录下进行开发。

规范化

  • 代码请遵循PEP8Google Python Style Guide
  • 提交到轻雪仓库的代码,请遵循以下规范:
    • 请确保代码是可运行的,没有危害的。
    • 请确保代码的类型提示是正确的。
    • 请确保注释风格为Google DocstringLiteyuki Docstring(推荐)以保证Litedoc能够正确解析并生成文档。
    • 字符串请使用双引号",尽量避免使用单引号',但在嵌套字符串时可以使用单引号。
    • 若有面向普通用户部分,请确保文档是完善的(每种语言都有对应的文档)。
  • commit message请遵循以下规范:
    • 应在每次完成一个功能或修复一个bug后提交代码,不要将多个功能或多个bug的代码混在一起提交。
    • 我们使用gitmoji来标记commit的类型,如:sparkles:表示引入新功能,:bug:表示修复bug等,具体请参考gitmoji
    • commit message的格式为<emoji> [type:] <message>,如:sparkles: feat: 给event添加新字段, 其中type字段为commit类型且可选,message字段为简短的描述,总结来说就是你干了什么。
    • 不限制commit message的语言,有条件可以使用中英双语。
  • 文档请遵循Markdown语法,并且支持vitepress相关内容:
    • 修订文档时,每个语言的文档都要修订。
    • 请确保文档内的链接是正确的,不要出现无法访问的死链接。
    • 请确保用户文档是通俗易懂的,开发文档是详细的。

最后

  • 本项目是一个非盈利的开源项目,我们欢迎任何人参与开发,你的贡献将会使轻雪变得更好。
',16)),t(o)]))}});export{h as __pageData,g as default}; diff --git a/assets/dev_lyfunc.md.CZ1MrXwp.lean.js b/assets/dev_lyfunc.md.CZ1MrXwp.lean.js deleted file mode 100644 index 72b35b2c..00000000 --- a/assets/dev_lyfunc.md.CZ1MrXwp.lean.js +++ /dev/null @@ -1,20 +0,0 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"轻雪函数","description":"","frontmatter":{"title":"轻雪函数","order":2},"headers":[],"relativePath":"dev/lyfunc.md","filePath":"zh/dev/lyfunc.md","lastUpdated":1734116271000}'),l={name:"dev/lyfunc.md"};function e(h,s,p,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

轻雪函数

轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.

函数文件

函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mcfunction,文件内容为一系列的命令,每行一个命令,支持单行注释#(编辑时的语法高亮可采取shell格式),例如:

shell
# 在发信器输出"hello world"
-cmd echo hello world
-
-# 如果你想同时输出多行内容可以尝试换行符(Python格式)
-cmd echo hello world\\nLiteyuki bot

也支持句末注释,例如:

shell
cmd echo hello world # 输出"hello world"

命令文档

shell
var <var1=value1> [var2=value2] ...  # 定义变量
-cmd <command>  # 在设备上执行命令
-api <api_name> [var=value...]  # 调用Bot API
-function <func_name> # 调用函数,可递归
-sleep <time>  # 异步等待,单位s
-nohup <command>  # 使用新的task执行命令,即不等待
-end # 结束函数关键字,包括子task
-await # 等待所有异步任务结束,若函数中启动了其他task,需要在最后调用,否则task对象会被销毁

示例

shell
# 疯狂戳好友
-# 使用 /function poke user_id=123456 执行
-# 每隔0.2s戳两次,无限戳,会触发最大递归深度限制
-# 若要戳20s后停止,则需要删除await,添加sleep 20和end
-api friend_poke user_id=user_id
-api friend_poke user_id=user_id
-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实现语法高亮

`,19)]))}const g=i(l,[["render",e]]);export{c as __pageData,g as default}; diff --git a/assets/dev_lyfunc.md.CZ1MrXwp.js b/assets/dev_lyfunc.md.DJB4jOoE.js similarity index 98% rename from assets/dev_lyfunc.md.CZ1MrXwp.js rename to assets/dev_lyfunc.md.DJB4jOoE.js index 72b35b2c..a4cdae7f 100644 --- a/assets/dev_lyfunc.md.CZ1MrXwp.js +++ b/assets/dev_lyfunc.md.DJB4jOoE.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"轻雪函数","description":"","frontmatter":{"title":"轻雪函数","order":2},"headers":[],"relativePath":"dev/lyfunc.md","filePath":"zh/dev/lyfunc.md","lastUpdated":1734116271000}'),l={name:"dev/lyfunc.md"};function e(h,s,p,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

轻雪函数

轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.

函数文件

函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mcfunction,文件内容为一系列的命令,每行一个命令,支持单行注释#(编辑时的语法高亮可采取shell格式),例如:

shell
# 在发信器输出"hello world"
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"轻雪函数","description":"","frontmatter":{"title":"轻雪函数","order":2},"headers":[],"relativePath":"dev/lyfunc.md","filePath":"zh/dev/lyfunc.md","lastUpdated":1734116271000}'),l={name:"dev/lyfunc.md"};function e(h,s,p,k,d,r){return n(),a("div",null,s[0]||(s[0]=[t(`

轻雪函数

轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.

函数文件

函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mcfunction,文件内容为一系列的命令,每行一个命令,支持单行注释#(编辑时的语法高亮可采取shell格式),例如:

shell
# 在发信器输出"hello world"
 cmd echo hello world
 
 # 如果你想同时输出多行内容可以尝试换行符(Python格式)
diff --git a/assets/dev_lyfunc.md.DJB4jOoE.lean.js b/assets/dev_lyfunc.md.DJB4jOoE.lean.js
new file mode 100644
index 00000000..31f987d6
--- /dev/null
+++ b/assets/dev_lyfunc.md.DJB4jOoE.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"轻雪函数","description":"","frontmatter":{"title":"轻雪函数","order":2},"headers":[],"relativePath":"dev/lyfunc.md","filePath":"zh/dev/lyfunc.md","lastUpdated":1734116271000}'),l={name:"dev/lyfunc.md"};function e(h,s,p,k,d,r){return n(),a("div",null,s[0]||(s[0]=[t("",19)]))}const g=i(l,[["render",e]]);export{c as __pageData,g as default};
diff --git a/assets/dev_plugin.md.Cu9RFJSc.js b/assets/dev_plugin.md.C0nKWwk2.js
similarity index 98%
rename from assets/dev_plugin.md.Cu9RFJSc.js
rename to assets/dev_plugin.md.C0nKWwk2.js
index 9632e1ce..b6db7e99 100644
--- a/assets/dev_plugin.md.Cu9RFJSc.js
+++ b/assets/dev_plugin.md.C0nKWwk2.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const E=JSON.parse('{"title":"插件开发","description":"","frontmatter":{"title":"插件开发","order":3},"headers":[],"relativePath":"dev/plugin.md","filePath":"zh/dev/plugin.md","lastUpdated":1734116271000}'),h={name:"dev/plugin.md"};function p(l,s,e,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

简介

轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能

插件大致可分为应用(Application)、实现(Implementation)及服务(Service)等几种类型,大部分情况下一个插件通常承担着多个责任,可按需调整

应用:从总线通道接收到消息后进行处理,响应,以实现某些功能,例如echo

实现:对接特定平台,把平台的消息转换为轻雪消息格式传入总线通道

服务:提供一系列对外的ipc/rpc/http等服务,供其他插件调用

我们鼓励使用magicoca进行对象传递来进行插件间通信而不是依赖关系,这样可以避免很多潜在的问题。

开始

创建插件

一个.py文件或一个包含__init__.py的文件夹即可被识别为插件

首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件

__init__.py

python
from liteyuki.plugin import PluginMetadata, PluginType
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const E=JSON.parse('{"title":"插件开发","description":"","frontmatter":{"title":"插件开发","order":3},"headers":[],"relativePath":"dev/plugin.md","filePath":"zh/dev/plugin.md","lastUpdated":1734116271000}'),h={name:"dev/plugin.md"};function p(l,s,e,k,d,r){return n(),a("div",null,s[0]||(s[0]=[t(`

简介

轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能

插件大致可分为应用(Application)、实现(Implementation)及服务(Service)等几种类型,大部分情况下一个插件通常承担着多个责任,可按需调整

应用:从总线通道接收到消息后进行处理,响应,以实现某些功能,例如echo

实现:对接特定平台,把平台的消息转换为轻雪消息格式传入总线通道

服务:提供一系列对外的ipc/rpc/http等服务,供其他插件调用

我们鼓励使用magicoca进行对象传递来进行插件间通信而不是依赖关系,这样可以避免很多潜在的问题。

开始

创建插件

一个.py文件或一个包含__init__.py的文件夹即可被识别为插件

首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件

__init__.py

python
from liteyuki.plugin import PluginMetadata, PluginType
 from .watch_dog import *    # 导入逻辑部分
 
 # 定义插件元数据
diff --git a/assets/dev_plugin.md.C0nKWwk2.lean.js b/assets/dev_plugin.md.C0nKWwk2.lean.js
new file mode 100644
index 00000000..ff2c12fe
--- /dev/null
+++ b/assets/dev_plugin.md.C0nKWwk2.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const E=JSON.parse('{"title":"插件开发","description":"","frontmatter":{"title":"插件开发","order":3},"headers":[],"relativePath":"dev/plugin.md","filePath":"zh/dev/plugin.md","lastUpdated":1734116271000}'),h={name:"dev/plugin.md"};function p(l,s,e,k,d,r){return n(),a("div",null,s[0]||(s[0]=[t("",24)]))}const g=i(h,[["render",p]]);export{E as __pageData,g as default};
diff --git a/assets/dev_plugin.md.Cu9RFJSc.lean.js b/assets/dev_plugin.md.Cu9RFJSc.lean.js
deleted file mode 100644
index 9632e1ce..00000000
--- a/assets/dev_plugin.md.Cu9RFJSc.lean.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const E=JSON.parse('{"title":"插件开发","description":"","frontmatter":{"title":"插件开发","order":3},"headers":[],"relativePath":"dev/plugin.md","filePath":"zh/dev/plugin.md","lastUpdated":1734116271000}'),h={name:"dev/plugin.md"};function p(l,s,e,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

简介

轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能

插件大致可分为应用(Application)、实现(Implementation)及服务(Service)等几种类型,大部分情况下一个插件通常承担着多个责任,可按需调整

应用:从总线通道接收到消息后进行处理,响应,以实现某些功能,例如echo

实现:对接特定平台,把平台的消息转换为轻雪消息格式传入总线通道

服务:提供一系列对外的ipc/rpc/http等服务,供其他插件调用

我们鼓励使用magicoca进行对象传递来进行插件间通信而不是依赖关系,这样可以避免很多潜在的问题。

开始

创建插件

一个.py文件或一个包含__init__.py的文件夹即可被识别为插件

首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件

__init__.py

python
from liteyuki.plugin import PluginMetadata, PluginType
-from .watch_dog import *    # 导入逻辑部分
-
-# 定义插件元数据
-__plugin_meta__ = PluginMetadata(
-    name="NoneDog",  # 插件名称
-    version="1.0.0",  # 插件版本
-    description="A simple plugin for nonebot developer",  # 插件描述
-    type=PluginType.SERVICE  # 插件类型
-)
-
-# 你的插件代码
-...

编写逻辑部分

轻雪主进程不涉及聊天部分,因此插件主要是一些后台任务或者与聊天机器人的通信 以下我们会编写一个简单的插件,用于开发NoneBot时进行文件系统变更重载 watch_dog.py

python
import os
-from liteyuki.dev import observer  # 导入文件系统观察器
-from liteyuki import get_bot, logger  # 导入轻雪Bot和日志
-from watchdog.events import FileSystemEvent  # 导入文件系统事件
-
-liteyuki = get_bot()  # 获取唯一的轻雪Bot实例
-
-exclude_extensions = (".pyc", ".pyo")  # 排除的文件扩展名
-
-
-# 用observer的on_file_system_event装饰器监听文件系统事件
-@observer.on_file_system_event(
-    directories=("src/nonebot_plugins",),
-    event_filter=lambda event: not event.src_path.endswith(exclude_extensions) and ("__pycache__" not in event.src_path) and os.path.isfile(event.src_path)
-)
-def restart_nonebot_process(event: FileSystemEvent):
-    logger.debug(f"File {event.src_path} changed, reloading nonebot...")
-    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进程

`,24)]))}const g=i(h,[["render",p]]);export{E as __pageData,g as default}; diff --git a/assets/dev_resource.md.Vz1Qqb9X.js b/assets/dev_resource.md.BMo61atA.js similarity index 95% rename from assets/dev_resource.md.Vz1Qqb9X.js rename to assets/dev_resource.md.BMo61atA.js index 8b3af345..f32640fa 100644 --- a/assets/dev_resource.md.Vz1Qqb9X.js +++ b/assets/dev_resource.md.BMo61atA.js @@ -1,4 +1,4 @@ -import{_ as a,c as i,a7 as e,o as l}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"资源包开发","description":"","frontmatter":{"title":"资源包开发","order":1},"headers":[],"relativePath":"dev/resource.md","filePath":"zh/dev/resource.md","lastUpdated":1734116271000}'),t={name:"dev/resource.md"};function n(p,s,d,h,c,o){return l(),i("div",null,s[0]||(s[0]=[e(`

简介

资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码

  • 资源/主题商店提供了一些资源包供你选择,你也可以自己制作资源包
  • 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。
  • 部分内容制作需要一点点前端基础,例如htmlcss
  • 轻雪原版资源包请查看LiteyukiBot/liteyuki/resources,可以在此基础上进行修改
  • 欢迎各位投稿资源包到轻雪资源商店

请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。


加载资源包

  • 资源包通常是以.zip格式压缩的,只需要将其解压到根目录resources目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的
shell
main.py
+import{_ as a,c as i,o as e,al as l}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"资源包开发","description":"","frontmatter":{"title":"资源包开发","order":1},"headers":[],"relativePath":"dev/resource.md","filePath":"zh/dev/resource.md","lastUpdated":1734116271000}'),t={name:"dev/resource.md"};function n(p,s,d,h,c,o){return e(),i("div",null,s[0]||(s[0]=[l(`

简介

资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码

  • 资源/主题商店提供了一些资源包供你选择,你也可以自己制作资源包
  • 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。
  • 部分内容制作需要一点点前端基础,例如htmlcss
  • 轻雪原版资源包请查看LiteyukiBot/liteyuki/resources,可以在此基础上进行修改
  • 欢迎各位投稿资源包到轻雪资源商店

请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。


加载资源包

  • 资源包通常是以.zip格式压缩的,只需要将其解压到根目录resources目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的
shell
main.py
 resources
 └─resource_pack_1
     ├─metadata.yml
diff --git a/assets/dev_resource.md.BMo61atA.lean.js b/assets/dev_resource.md.BMo61atA.lean.js
new file mode 100644
index 00000000..6e0ab03e
--- /dev/null
+++ b/assets/dev_resource.md.BMo61atA.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as i,o as e,al as l}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"资源包开发","description":"","frontmatter":{"title":"资源包开发","order":1},"headers":[],"relativePath":"dev/resource.md","filePath":"zh/dev/resource.md","lastUpdated":1734116271000}'),t={name:"dev/resource.md"};function n(p,s,d,h,c,o){return e(),i("div",null,s[0]||(s[0]=[l("",12)]))}const u=a(t,[["render",n]]);export{k as __pageData,u as default};
diff --git a/assets/dev_resource.md.Vz1Qqb9X.lean.js b/assets/dev_resource.md.Vz1Qqb9X.lean.js
deleted file mode 100644
index 8b3af345..00000000
--- a/assets/dev_resource.md.Vz1Qqb9X.lean.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import{_ as a,c as i,a7 as e,o as l}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"资源包开发","description":"","frontmatter":{"title":"资源包开发","order":1},"headers":[],"relativePath":"dev/resource.md","filePath":"zh/dev/resource.md","lastUpdated":1734116271000}'),t={name:"dev/resource.md"};function n(p,s,d,h,c,o){return l(),i("div",null,s[0]||(s[0]=[e(`

简介

资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码

  • 资源/主题商店提供了一些资源包供你选择,你也可以自己制作资源包
  • 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。
  • 部分内容制作需要一点点前端基础,例如htmlcss
  • 轻雪原版资源包请查看LiteyukiBot/liteyuki/resources,可以在此基础上进行修改
  • 欢迎各位投稿资源包到轻雪资源商店

请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。


加载资源包

  • 资源包通常是以.zip格式压缩的,只需要将其解压到根目录resources目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的
shell
main.py
-resources
-└─resource_pack_1
-    ├─metadata.yml
-    ├─templates
-    └───...
-└─resource_pack_2
-    ├─metadata.yml
-    └─...
  • 你自己制作的资源包也应该遵循这个规则,并且应该在metadata.yml中填写一些信息
  • 若没有metadata.yml文件,则该文件夹不会被识别为资源包
yaml
name: "资源包名称"
-version: "1.0.0"
-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

资源包的结构会随着轻雪的更新而有变动,第三方资源包开发者需要注意版本兼容性,同时用户也应该自行选择可用的资源包

`,12)]))}const u=a(t,[["render",n]]);export{k as __pageData,u as default}; diff --git a/assets/en_deploy_config.md.WUiVAoWa.js b/assets/en_deploy_config.md.Bn6meDsx.js similarity index 97% rename from assets/en_deploy_config.md.WUiVAoWa.js rename to assets/en_deploy_config.md.Bn6meDsx.js index f071b1ef..b7e5779d 100644 --- a/assets/en_deploy_config.md.WUiVAoWa.js +++ b/assets/en_deploy_config.md.Bn6meDsx.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as t,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"Configurations","description":"","frontmatter":{"title":"Configurations","order":2},"headers":[],"relativePath":"en/deploy/config.md","filePath":"en/deploy/config.md","lastUpdated":1734116271000}'),e={name:"en/deploy/config.md"};function l(o,s,h,p,k,r){return n(),a("div",null,s[0]||(s[0]=[t(`

Configurations

LiteyukiBot supports yaml, json, and toml as configuration files, depending on your personal preference.

When you first run LiteyukiBot, it will generate config.yml and the config directory. You can modify the configuration items and restart LiteyukiBot. In most cases, you only need to modify the superusers and nickname fields.

When starting, LiteyukiBot will load all configuration files in the project directory config.yml/yaml/json/toml and the config directory. You can create multiple configuration files in the config directory, and LiteyukiBot will automatically merge these configuration files.

Basic Configuration

yaml
# NoneBot configuration
+import{_ as i,c as a,o as t,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"Configurations","description":"","frontmatter":{"title":"Configurations","order":2},"headers":[],"relativePath":"en/deploy/config.md","filePath":"en/deploy/config.md","lastUpdated":1734116271000}'),e={name:"en/deploy/config.md"};function l(o,s,h,p,k,r){return t(),a("div",null,s[0]||(s[0]=[n(`

Configurations

LiteyukiBot supports yaml, json, and toml as configuration files, depending on your personal preference.

When you first run LiteyukiBot, it will generate config.yml and the config directory. You can modify the configuration items and restart LiteyukiBot. In most cases, you only need to modify the superusers and nickname fields.

When starting, LiteyukiBot will load all configuration files in the project directory config.yml/yaml/json/toml and the config directory. You can create multiple configuration files in the config directory, and LiteyukiBot will automatically merge these configuration files.

Basic Configuration

yaml
# NoneBot configuration
 nonebot:
   command_start: [ "/", "" ] # Command prefix, if there is no "" empty command header, please enable alconna_use_command_start to ensure alconna parsing is normal
   host: 127.0.0.1 # Listening address, default is local, if you want to receive external requests, please fill in
diff --git a/assets/en_deploy_config.md.Bn6meDsx.lean.js b/assets/en_deploy_config.md.Bn6meDsx.lean.js
new file mode 100644
index 00000000..c6a154e7
--- /dev/null
+++ b/assets/en_deploy_config.md.Bn6meDsx.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as t,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"Configurations","description":"","frontmatter":{"title":"Configurations","order":2},"headers":[],"relativePath":"en/deploy/config.md","filePath":"en/deploy/config.md","lastUpdated":1734116271000}'),e={name:"en/deploy/config.md"};function l(o,s,h,p,k,r){return t(),a("div",null,s[0]||(s[0]=[n("",16)]))}const g=i(e,[["render",l]]);export{c as __pageData,g as default};
diff --git a/assets/en_deploy_config.md.WUiVAoWa.lean.js b/assets/en_deploy_config.md.WUiVAoWa.lean.js
deleted file mode 100644
index f071b1ef..00000000
--- a/assets/en_deploy_config.md.WUiVAoWa.lean.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import{_ as i,c as a,a7 as t,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"Configurations","description":"","frontmatter":{"title":"Configurations","order":2},"headers":[],"relativePath":"en/deploy/config.md","filePath":"en/deploy/config.md","lastUpdated":1734116271000}'),e={name:"en/deploy/config.md"};function l(o,s,h,p,k,r){return n(),a("div",null,s[0]||(s[0]=[t(`

Configurations

LiteyukiBot supports yaml, json, and toml as configuration files, depending on your personal preference.

When you first run LiteyukiBot, it will generate config.yml and the config directory. You can modify the configuration items and restart LiteyukiBot. In most cases, you only need to modify the superusers and nickname fields.

When starting, LiteyukiBot will load all configuration files in the project directory config.yml/yaml/json/toml and the config directory. You can create multiple configuration files in the config directory, and LiteyukiBot will automatically merge these configuration files.

Basic Configuration

yaml
# NoneBot configuration
-nonebot:
-  command_start: [ "/", "" ] # Command prefix, if there is no "" empty command header, please enable alconna_use_command_start to ensure alconna parsing is normal
-  host: 127.0.0.1 # Listening address, default is local, if you want to receive external requests, please fill in
-  port: 20216 # Binding port
-  nickname: [ "liteyuki" ]  # Bot nickname list
-  superusers: [ "1919810" ]  # Superuser list
-liteyuki:
-  log_level: "INFO" # Log level
-  log_icon: true # Whether to display the log level icon (some console fonts are not available)
-  auto_report: true # Whether to automatically report problems to Liteyuki server
-  auto_update: true # Whether to automatically update Liteyuki, check for updates at 4 am every day
-  plugins: [ ] # Liteyuki plugin list
-  plugin_dirs: [ ] # Liteyuki plugin directory list

Other configurations

The following is the default value. If you need to customize it, please add it manually

yaml
# Advanced configuration
-nonebot:
-  onebot_access_token: "" # OneBot access token
-  default_language: "zh-CN" # Default language
-  alconna_auto_completion: false # alconna auto completion
-  safe_mode: false # Safe mode, if true, the bot will not load any plugins
-  # other nonebot configurations
-  custom_config_1: "custom_value1"
-  custom_config_2: "custom_value2"
-
-# development configuration
-liteyuki:
-  allow_update: true # Whether to allow Liteyuki to update
-  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
`,16)]))}const g=i(e,[["render",l]]);export{c as __pageData,g as default}; diff --git a/assets/en_deploy_fandq.md.D9-ETg2E.js b/assets/en_deploy_fandq.md.BmuhdVWC.js similarity index 93% rename from assets/en_deploy_fandq.md.D9-ETg2E.js rename to assets/en_deploy_fandq.md.BmuhdVWC.js index 8baf0051..37cefcde 100644 --- a/assets/en_deploy_fandq.md.D9-ETg2E.js +++ b/assets/en_deploy_fandq.md.BmuhdVWC.js @@ -1 +1 @@ -import{_ as t,c as o,a7 as a,o as i}from"./chunks/framework.v7PlT0Wt.js";const h=JSON.parse('{"title":"FAQ","description":"","frontmatter":{"title":"FAQ","order":3},"headers":[],"relativePath":"en/deploy/fandq.md","filePath":"en/deploy/fandq.md","lastUpdated":1734116271000}'),n={name:"en/deploy/fandq.md"};function l(r,e,s,u,p,d){return i(),o("div",null,e[0]||(e[0]=[a('

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
  • 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?

    • Some plugins provide the ability to log in to specific platforms, for example, using the NoneBot plugin to log in to supported adapter platforms
  • 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

',5)]))}const f=t(n,[["render",l]]);export{h as __pageData,f as default}; +import{_ as t,c as o,o as a,al as i}from"./chunks/framework.BUxnStXl.js";const h=JSON.parse('{"title":"FAQ","description":"","frontmatter":{"title":"FAQ","order":3},"headers":[],"relativePath":"en/deploy/fandq.md","filePath":"en/deploy/fandq.md","lastUpdated":1734116271000}'),n={name:"en/deploy/fandq.md"};function l(r,e,s,u,p,d){return a(),o("div",null,e[0]||(e[0]=[i('

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
  • 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?

    • Some plugins provide the ability to log in to specific platforms, for example, using the NoneBot plugin to log in to supported adapter platforms
  • 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

',5)]))}const f=t(n,[["render",l]]);export{h as __pageData,f as default}; diff --git a/assets/en_deploy_fandq.md.BmuhdVWC.lean.js b/assets/en_deploy_fandq.md.BmuhdVWC.lean.js new file mode 100644 index 00000000..a7dad2d7 --- /dev/null +++ b/assets/en_deploy_fandq.md.BmuhdVWC.lean.js @@ -0,0 +1 @@ +import{_ as t,c as o,o as a,al as i}from"./chunks/framework.BUxnStXl.js";const h=JSON.parse('{"title":"FAQ","description":"","frontmatter":{"title":"FAQ","order":3},"headers":[],"relativePath":"en/deploy/fandq.md","filePath":"en/deploy/fandq.md","lastUpdated":1734116271000}'),n={name:"en/deploy/fandq.md"};function l(r,e,s,u,p,d){return a(),o("div",null,e[0]||(e[0]=[i("",5)]))}const f=t(n,[["render",l]]);export{h as __pageData,f as default}; diff --git a/assets/en_deploy_fandq.md.D9-ETg2E.lean.js b/assets/en_deploy_fandq.md.D9-ETg2E.lean.js deleted file mode 100644 index 8baf0051..00000000 --- a/assets/en_deploy_fandq.md.D9-ETg2E.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as o,a7 as a,o as i}from"./chunks/framework.v7PlT0Wt.js";const h=JSON.parse('{"title":"FAQ","description":"","frontmatter":{"title":"FAQ","order":3},"headers":[],"relativePath":"en/deploy/fandq.md","filePath":"en/deploy/fandq.md","lastUpdated":1734116271000}'),n={name:"en/deploy/fandq.md"};function l(r,e,s,u,p,d){return i(),o("div",null,e[0]||(e[0]=[a('

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
  • 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?

    • Some plugins provide the ability to log in to specific platforms, for example, using the NoneBot plugin to log in to supported adapter platforms
  • 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

',5)]))}const f=t(n,[["render",l]]);export{h as __pageData,f as default}; diff --git a/assets/en_deploy_install.md.BKgEviaQ.js b/assets/en_deploy_install.md.BC4wsBsE.js similarity index 97% rename from assets/en_deploy_install.md.BKgEviaQ.js rename to assets/en_deploy_install.md.BC4wsBsE.js index a55c9d37..5fe4c229 100644 --- a/assets/en_deploy_install.md.BKgEviaQ.js +++ b/assets/en_deploy_install.md.BC4wsBsE.js @@ -1,4 +1,4 @@ -import{_ as i,c as e,a7 as a,o as t}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"Install","description":"","frontmatter":{"title":"Install","order":1},"headers":[],"relativePath":"en/deploy/install.md","filePath":"en/deploy/install.md","lastUpdated":1734116271000}'),n={name:"en/deploy/install.md"};function l(o,s,p,r,h,d){return t(),e("div",null,s[0]||(s[0]=[a(`

Install

Normal Installation

  1. Install Git and Python3.10+ Environment.
bash
# Clone Repo
+import{_ as i,c as e,o as a,al as t}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"Install","description":"","frontmatter":{"title":"Install","order":1},"headers":[],"relativePath":"en/deploy/install.md","filePath":"en/deploy/install.md","lastUpdated":1734116271000}'),n={name:"en/deploy/install.md"};function l(o,s,p,r,h,d){return a(),e("div",null,s[0]||(s[0]=[t(`

Install

Normal Installation

  1. Install Git and Python3.10+ Environment.
bash
# Clone Repo
 git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1
 
 # Change directory
diff --git a/assets/en_deploy_install.md.BC4wsBsE.lean.js b/assets/en_deploy_install.md.BC4wsBsE.lean.js
new file mode 100644
index 00000000..7e784f5c
--- /dev/null
+++ b/assets/en_deploy_install.md.BC4wsBsE.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as e,o as a,al as t}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"Install","description":"","frontmatter":{"title":"Install","order":1},"headers":[],"relativePath":"en/deploy/install.md","filePath":"en/deploy/install.md","lastUpdated":1734116271000}'),n={name:"en/deploy/install.md"};function l(o,s,p,r,h,d){return a(),e("div",null,s[0]||(s[0]=[t("",13)]))}const u=i(n,[["render",l]]);export{k as __pageData,u as default};
diff --git a/assets/en_deploy_install.md.BKgEviaQ.lean.js b/assets/en_deploy_install.md.BKgEviaQ.lean.js
deleted file mode 100644
index a55c9d37..00000000
--- a/assets/en_deploy_install.md.BKgEviaQ.lean.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import{_ as i,c as e,a7 as a,o as t}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"Install","description":"","frontmatter":{"title":"Install","order":1},"headers":[],"relativePath":"en/deploy/install.md","filePath":"en/deploy/install.md","lastUpdated":1734116271000}'),n={name:"en/deploy/install.md"};function l(o,s,p,r,h,d){return t(),e("div",null,s[0]||(s[0]=[a(`

Install

Normal Installation

  1. Install Git and Python3.10+ Environment.
bash
# Clone Repo
-git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1
-
-# Change directory
-cd LiteyukiBot
-
-# Create virtual environment
-python -m venv venv
-
-# Activate virtual environment
-.\\venv\\Scripts\\activate # Windows
-source venv/bin/activate # Linux
-
-# Install dependencies
-pip install -r requirements.txt
-
-# Run Liteyuki
-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

bash
docker pull git.liteyuki.icu/bot/app:latest  # Nightly build

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

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

`,13)]))}const u=i(n,[["render",l]]);export{k as __pageData,u as default}; diff --git a/assets/en_dev_api_bot_index.md.eKUrYXBP.js b/assets/en_dev_api_bot_index.md.DdGmgfBu.js similarity index 99% rename from assets/en_dev_api_bot_index.md.eKUrYXBP.js rename to assets/en_dev_api_bot_index.md.DdGmgfBu.js index 9f71e158..8b4905e8 100644 --- a/assets/en_dev_api_bot_index.md.eKUrYXBP.js +++ b/assets/en_dev_api_bot_index.md.DdGmgfBu.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const g=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}'),e={name:"en/dev/api/bot/index.md"};function l(h,s,p,k,r,o){return t(),a("div",null,s[0]||(s[0]=[n(`

Module liteyuki.bot

class LiteyukiBot


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

Description: 初始化轻雪实例

Arguments:

  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, **kwargs) -> None:
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const g=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}'),e={name:"en/dev/api/bot/index.md"};function l(h,s,p,k,r,o){return n(),a("div",null,s[0]||(s[0]=[t(`

Module liteyuki.bot

class LiteyukiBot


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

Description: 初始化轻雪实例

Arguments:

  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, **kwargs) -> None:
     """总通道"""
     self.i_chan = Chan[Any]()
     self.o_chan = Chan[Any]()
diff --git a/assets/en_dev_api_bot_index.md.DdGmgfBu.lean.js b/assets/en_dev_api_bot_index.md.DdGmgfBu.lean.js
new file mode 100644
index 00000000..40b1744e
--- /dev/null
+++ b/assets/en_dev_api_bot_index.md.DdGmgfBu.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const g=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}'),e={name:"en/dev/api/bot/index.md"};function l(h,s,p,k,r,o){return n(),a("div",null,s[0]||(s[0]=[t("",99)]))}const E=i(e,[["render",l]]);export{g as __pageData,E as default};
diff --git a/assets/en_dev_api_bot_index.md.eKUrYXBP.lean.js b/assets/en_dev_api_bot_index.md.eKUrYXBP.lean.js
deleted file mode 100644
index 9f71e158..00000000
--- a/assets/en_dev_api_bot_index.md.eKUrYXBP.lean.js
+++ /dev/null
@@ -1,78 +0,0 @@
-import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const g=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}'),e={name:"en/dev/api/bot/index.md"};function l(h,s,p,k,r,o){return t(),a("div",null,s[0]||(s[0]=[n(`

Module liteyuki.bot

class LiteyukiBot


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

Description: 初始化轻雪实例

Arguments:

  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, **kwargs) -> None:
-    """总通道"""
-    self.i_chan = Chan[Any]()
-    self.o_chan = Chan[Any]()
-    '常规操作'
-    print_logo()
-    global _BOT_INSTANCE
-    _BOT_INSTANCE = self
-    '配置'
-    self.config: dict[str, Any] = kwargs
-    '初始化'
-    self.init(**self.config)
-    logger.info('Liteyuki is initializing...')
-    '生命周期管理'
-    self.lifespan = Lifespan()
-    self.process_manager: ProcessManager = ProcessManager(lifespan=self.lifespan)
-    '事件循环'
-    self.loop = asyncio.new_event_loop()
-    asyncio.set_event_loop(self.loop)
-    self.stop_event = threading.Event()
-    self.call_restart_count = 0
-    '加载插件加载器'
-    load_plugin('liteyuki.plugins.plugin_loader')

func run(self)

Description: 外部启动接口

Source code or View on GitHub
python
def run(self):
-    self.process_manager.start_all()
-    try:
-        asyncio.run(self._run())
-    except KeyboardInterrupt:
-        logger.opt(colors=True).info('<y>Liteyuki is stopping...</y>')
-        self.stop()
-    logger.opt(colors=True).info('<y>Liteyuki is stopped !</y>')

func 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):
-    if self.call_restart_count < 1:
-        executable = sys.executable
-        args = sys.argv
-        logger.info('Restarting LiteyukiBot...')
-        time.sleep(delay)
-        if platform.system() == 'Windows':
-            cmd = 'start'
-        elif platform.system() == 'Linux':
-            cmd = 'nohup'
-        elif platform.system() == 'Darwin':
-            cmd = 'open'
-        else:
-            cmd = 'nohup'
-        self.process_manager.terminate_all()
-        threading.Thread(target=os.system, args=(f"{cmd} {executable} {' '.join(args)}",), daemon=True).start()
-        sys.exit(0)
-    self.call_restart_count += 1

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

Description: 停止轻雪

Arguments:

Source code or View on GitHub
python
def restart_process(self, name: Optional[str]=None):
-    if name is not None:
-        chan_active = get_channel(f'{name}-active')
-        chan_active.send(1)
-    else:
-        for process_name in self.process_manager.processes:
-            chan_active = get_channel(f'{process_name}-active')
-            chan_active.send(1)

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

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

Arguments:

  • *args: 参数
  • **kwargs: 关键字参数
Source code or View on GitHub
python
def init(self, *args, **kwargs):
-    self.init_logger()

func init_logger(self)

Description: 初始化日志

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

func stop(self)

Description: 停止轻雪

Source code or View on GitHub
python
def stop(self):
-    self.process_manager.terminate_all()
-    self.stop_event.set()

func 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:
-    return self.lifespan.on_before_start(func)

func 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):
-    return self.lifespan.on_after_start(func)

func 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):
-    return self.lifespan.on_after_shutdown(func)

func 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):
-    return self.lifespan.on_before_process_shutdown(func)

func 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:
-    return self.lifespan.on_before_process_restart(func)

func 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):
-    return self.lifespan.on_after_restart(func)

func get_bot() -> LiteyukiBot

Description: 获取轻雪实例

Return: LiteyukiBot: 轻雪实例

Source code or View on GitHub
python
def get_bot() -> 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.")

func 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:
-    return get_bot().config.get(key, default)

func 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:
-    if key in get_bot().config:
-        return get_bot().config[key]
-    for compat_key in compat_keys:
-        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
`,99)]))}const E=i(e,[["render",l]]);export{g as __pageData,E as default}; diff --git a/assets/en_dev_api_bot_lifespan.md.IGcJ9jb_.lean.js b/assets/en_dev_api_bot_lifespan.md.IGcJ9jb_.lean.js deleted file mode 100644 index 72ce8480..00000000 --- a/assets/en_dev_api_bot_lifespan.md.IGcJ9jb_.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as a,a7 as n,o as e}from"./chunks/framework.v7PlT0Wt.js";const d=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"};function l(h,s,p,r,k,o){return e(),a("div",null,s[0]||(s[0]=[n('

Module 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

  • 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


func __init__(self) -> None

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

Source code or View on GitHub
python
def __init__(self) -> None:\n    self.life_flag: int = 0\n    self._before_start_funcs: list[LIFESPAN_FUNC] = []\n    self._after_start_funcs: list[LIFESPAN_FUNC] = []\n    self._before_process_shutdown_funcs: list[PROCESS_LIFESPAN_FUNC] = []\n    self._after_shutdown_funcs: list[LIFESPAN_FUNC] = []\n    self._before_process_restart_funcs: list[PROCESS_LIFESPAN_FUNC] = []\n    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

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

Description: 并发运行异步函数

Arguments:

Source code or View on GitHub
python
@staticmethod\nasync def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:\n    tasks = [func(*args, **kwargs) if is_coroutine_callable(func) else async_wrapper(func)(*args, **kwargs) for func in funcs]\n    await asyncio.gather(*tasks)

func 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:\n    self._before_start_funcs.append(func)\n    return func

func 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:\n    self._after_start_funcs.append(func)\n    return func

func 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:\n    self._before_process_shutdown_funcs.append(func)\n    return func

func 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:\n    self._after_shutdown_funcs.append(func)\n    return func

func 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:\n    self._before_process_restart_funcs.append(func)\n    return func

func 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:\n    self._after_restart_funcs.append(func)\n    return func

async func before_start(self) -> None

Description: 启动前钩子

Source code or View on GitHub
python
async def before_start(self) -> None:\n    logger.debug('Running before_start functions')\n    await self.run_funcs(self._before_start_funcs)

async func after_start(self) -> None

Description: 启动后钩子

Source code or View on GitHub
python
async def after_start(self) -> None:\n    logger.debug('Running after_start functions')\n    await self.run_funcs(self._after_start_funcs)

async func before_process_shutdown(self, *args, **kwargs) -> None

Description: 停止前钩子

Source code or View on GitHub
python
async def before_process_shutdown(self, *args, **kwargs) -> None:\n    logger.debug('Running before_shutdown functions')\n    await self.run_funcs(self._before_process_shutdown_funcs, *args, **kwargs)

async func after_shutdown(self) -> None

Description: 停止后钩子 未实现

Source code or View on GitHub
python
async def after_shutdown(self) -> None:\n    logger.debug('Running after_shutdown functions')\n    await self.run_funcs(self._after_shutdown_funcs)

async func before_process_restart(self, *args, **kwargs) -> None

Description: 重启前钩子

Source code or View on GitHub
python
async def before_process_restart(self, *args, **kwargs) -> None:\n    logger.debug('Running before_restart functions')\n    await self.run_funcs(self._before_process_restart_funcs, *args, **kwargs)

async func after_restart(self) -> None

Description: 重启后钩子 未实现

Source code or View on GitHub
python
async def after_restart(self) -> None:\n    logger.debug('Running after_restart functions')\n    await self.run_funcs(self._after_restart_funcs)
',93)]))}const g=i(t,[["render",l]]);export{d as __pageData,g as default}; diff --git a/assets/en_dev_api_bot_lifespan.md.IGcJ9jb_.js b/assets/en_dev_api_bot_lifespan.md.ODF4Dl0l.js similarity index 99% rename from assets/en_dev_api_bot_lifespan.md.IGcJ9jb_.js rename to assets/en_dev_api_bot_lifespan.md.ODF4Dl0l.js index 72ce8480..36ad22a7 100644 --- a/assets/en_dev_api_bot_lifespan.md.IGcJ9jb_.js +++ b/assets/en_dev_api_bot_lifespan.md.ODF4Dl0l.js @@ -1 +1 @@ -import{_ as i,c as a,a7 as n,o as e}from"./chunks/framework.v7PlT0Wt.js";const d=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"};function l(h,s,p,r,k,o){return e(),a("div",null,s[0]||(s[0]=[n('

Module 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

  • 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


func __init__(self) -> None

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

Source code or View on GitHub
python
def __init__(self) -> None:\n    self.life_flag: int = 0\n    self._before_start_funcs: list[LIFESPAN_FUNC] = []\n    self._after_start_funcs: list[LIFESPAN_FUNC] = []\n    self._before_process_shutdown_funcs: list[PROCESS_LIFESPAN_FUNC] = []\n    self._after_shutdown_funcs: list[LIFESPAN_FUNC] = []\n    self._before_process_restart_funcs: list[PROCESS_LIFESPAN_FUNC] = []\n    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

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

Description: 并发运行异步函数

Arguments:

Source code or View on GitHub
python
@staticmethod\nasync def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:\n    tasks = [func(*args, **kwargs) if is_coroutine_callable(func) else async_wrapper(func)(*args, **kwargs) for func in funcs]\n    await asyncio.gather(*tasks)

func 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:\n    self._before_start_funcs.append(func)\n    return func

func 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:\n    self._after_start_funcs.append(func)\n    return func

func 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:\n    self._before_process_shutdown_funcs.append(func)\n    return func

func 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:\n    self._after_shutdown_funcs.append(func)\n    return func

func 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:\n    self._before_process_restart_funcs.append(func)\n    return func

func 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:\n    self._after_restart_funcs.append(func)\n    return func

async func before_start(self) -> None

Description: 启动前钩子

Source code or View on GitHub
python
async def before_start(self) -> None:\n    logger.debug('Running before_start functions')\n    await self.run_funcs(self._before_start_funcs)

async func after_start(self) -> None

Description: 启动后钩子

Source code or View on GitHub
python
async def after_start(self) -> None:\n    logger.debug('Running after_start functions')\n    await self.run_funcs(self._after_start_funcs)

async func before_process_shutdown(self, *args, **kwargs) -> None

Description: 停止前钩子

Source code or View on GitHub
python
async def before_process_shutdown(self, *args, **kwargs) -> None:\n    logger.debug('Running before_shutdown functions')\n    await self.run_funcs(self._before_process_shutdown_funcs, *args, **kwargs)

async func after_shutdown(self) -> None

Description: 停止后钩子 未实现

Source code or View on GitHub
python
async def after_shutdown(self) -> None:\n    logger.debug('Running after_shutdown functions')\n    await self.run_funcs(self._after_shutdown_funcs)

async func before_process_restart(self, *args, **kwargs) -> None

Description: 重启前钩子

Source code or View on GitHub
python
async def before_process_restart(self, *args, **kwargs) -> None:\n    logger.debug('Running before_restart functions')\n    await self.run_funcs(self._before_process_restart_funcs, *args, **kwargs)

async func after_restart(self) -> None

Description: 重启后钩子 未实现

Source code or View on GitHub
python
async def after_restart(self) -> None:\n    logger.debug('Running after_restart functions')\n    await self.run_funcs(self._after_restart_funcs)
',93)]))}const g=i(t,[["render",l]]);export{d as __pageData,g as default}; +import{_ as i,c as a,o as n,al as e}from"./chunks/framework.BUxnStXl.js";const d=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"};function l(h,s,p,r,k,o){return n(),a("div",null,s[0]||(s[0]=[e('

Module 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

  • 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


func __init__(self) -> None

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

Source code or View on GitHub
python
def __init__(self) -> None:\n    self.life_flag: int = 0\n    self._before_start_funcs: list[LIFESPAN_FUNC] = []\n    self._after_start_funcs: list[LIFESPAN_FUNC] = []\n    self._before_process_shutdown_funcs: list[PROCESS_LIFESPAN_FUNC] = []\n    self._after_shutdown_funcs: list[LIFESPAN_FUNC] = []\n    self._before_process_restart_funcs: list[PROCESS_LIFESPAN_FUNC] = []\n    self._after_restart_funcs: list[LIFESPAN_FUNC] = []

@staticmethod

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

Description: 并发运行异步函数

Arguments:

Source code or View on GitHub
python
@staticmethod\nasync def run_funcs(funcs: Sequence[LIFESPAN_FUNC | PROCESS_LIFESPAN_FUNC], *args, **kwargs) -> None:\n    tasks = [func(*args, **kwargs) if is_coroutine_callable(func) else async_wrapper(func)(*args, **kwargs) for func in funcs]\n    await asyncio.gather(*tasks)

func 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:\n    self._before_start_funcs.append(func)\n    return func

func 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:\n    self._after_start_funcs.append(func)\n    return func

func 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:\n    self._before_process_shutdown_funcs.append(func)\n    return func

func 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:\n    self._after_shutdown_funcs.append(func)\n    return func

func 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:\n    self._before_process_restart_funcs.append(func)\n    return func

func 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:\n    self._after_restart_funcs.append(func)\n    return func

async func before_start(self) -> None

Description: 启动前钩子

Source code or View on GitHub
python
async def before_start(self) -> None:\n    logger.debug('Running before_start functions')\n    await self.run_funcs(self._before_start_funcs)

async func after_start(self) -> None

Description: 启动后钩子

Source code or View on GitHub
python
async def after_start(self) -> None:\n    logger.debug('Running after_start functions')\n    await self.run_funcs(self._after_start_funcs)

async func before_process_shutdown(self, *args, **kwargs) -> None

Description: 停止前钩子

Source code or View on GitHub
python
async def before_process_shutdown(self, *args, **kwargs) -> None:\n    logger.debug('Running before_shutdown functions')\n    await self.run_funcs(self._before_process_shutdown_funcs, *args, **kwargs)

async func after_shutdown(self) -> None

Description: 停止后钩子 未实现

Source code or View on GitHub
python
async def after_shutdown(self) -> None:\n    logger.debug('Running after_shutdown functions')\n    await self.run_funcs(self._after_shutdown_funcs)

async func before_process_restart(self, *args, **kwargs) -> None

Description: 重启前钩子

Source code or View on GitHub
python
async def before_process_restart(self, *args, **kwargs) -> None:\n    logger.debug('Running before_restart functions')\n    await self.run_funcs(self._before_process_restart_funcs, *args, **kwargs)

async func after_restart(self) -> None

Description: 重启后钩子 未实现

Source code or View on GitHub
python
async def after_restart(self) -> None:\n    logger.debug('Running after_restart functions')\n    await self.run_funcs(self._after_restart_funcs)
',93)]))}const g=i(t,[["render",l]]);export{d as __pageData,g as default}; diff --git a/assets/en_dev_api_bot_lifespan.md.ODF4Dl0l.lean.js b/assets/en_dev_api_bot_lifespan.md.ODF4Dl0l.lean.js new file mode 100644 index 00000000..80ebc62e --- /dev/null +++ b/assets/en_dev_api_bot_lifespan.md.ODF4Dl0l.lean.js @@ -0,0 +1 @@ +import{_ as i,c as a,o as n,al as e}from"./chunks/framework.BUxnStXl.js";const d=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"};function l(h,s,p,r,k,o){return n(),a("div",null,s[0]||(s[0]=[e("",93)]))}const g=i(t,[["render",l]]);export{d as __pageData,g as default}; diff --git a/assets/en_dev_api_comm_channel.md.BliZgU7O.lean.js b/assets/en_dev_api_comm_channel.md.BliZgU7O.lean.js deleted file mode 100644 index cfde6693..00000000 --- a/assets/en_dev_api_comm_channel.md.BliZgU7O.lean.js +++ /dev/null @@ -1,91 +0,0 @@ -import{_ as i,c as a,a7 as n,o as e}from"./chunks/framework.v7PlT0Wt.js";const E=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"};function l(h,s,p,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

Module liteyuki.comm.channel

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

var SYNC_ON_RECEIVE_FUNC

  • Description: 同步接收函数

  • Type: TypeAlias

  • Default: Callable[[T], 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])


func __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):
-    self.conn_send, self.conn_recv = Pipe()
-    self._conn_send_inner, self._conn_recv_inner = Pipe()
-    self._closed = False
-    self._on_main_receive_func_ids: list[int] = []
-    self._on_sub_receive_func_ids: list[int] = []
-    self.name: str = name
-    self.is_receive_loop_running = False
-    if type_check is None:
-        type_check = self._get_generic_type() is not None
-    elif type_check:
-        if self._get_generic_type() is None:
-            raise TypeError('Type hint is required for enforcing type check.')
-    self.type_check = type_check
-    if name in _channel:
-        raise ValueError(f'Channel {name} already exists')
-    if IS_MAIN_PROCESS:
-        if name in _channel:
-            raise ValueError(f'Channel {name} already exists')
-        _channel[name] = self

func send(self, data: T)

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

Arguments:

  • data (T): 数据
Source code or View on GitHub
python
def send(self, data: T):
-    if self.type_check:
-        _type = self._get_generic_type()
-        if _type is not None and (not self._validate_structure(data, _type)):
-            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)

func receive(self) -> T

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

Return: T: 数据

Source code or View on GitHub
python
def receive(self) -> T:
-    if self._closed:
-        raise RuntimeError('Cannot receive from a closed channel')
-    while True:
-        data = self.conn_recv.recv()
-        return data

async func async_receive(self) -> T

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

Return: T: 数据

Source code or View on GitHub
python
async def async_receive(self) -> T:
-    loop = asyncio.get_running_loop()
-    data = await loop.run_in_executor(None, self.receive)
-    return data

func 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]]:
-    if not IS_MAIN_PROCESS:
-        raise RuntimeError('on_receive can only be used in main process')
-
-    def decorator(func: Callable[[T], Any]) -> Callable[[T], Any]:
-        global _func_id
-
-        async def wrapper(data: T) -> Any:
-            if filter_func is not None:
-                if is_coroutine_callable(filter_func):
-                    if not await filter_func(data):
-                        return
-                elif not filter_func(data):
-                    return
-            if is_coroutine_callable(func):
-                return await func(data)
-            else:
-                return func(data)
-        _callback_funcs[_func_id] = wrapper
-        if IS_MAIN_PROCESS:
-            self._on_main_receive_func_ids.append(_func_id)
-        else:
-            self._on_sub_receive_func_ids.append(_func_id)
-        _func_id += 1
-        return func
-    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 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


func 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'):
-    if not isinstance(channel, Channel):
-        raise TypeError(f'channel_ must be an instance of Channel, {type(channel)} found')
-    if IS_MAIN_PROCESS:
-        if name in _channel:
-            raise ValueError(f'Channel {name} already exists')
-        _channel[name] = channel
-    else:
-        channel_deliver_passive_channel.send(('set_channel', {'name': name, 'channel_': channel}))

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

Description: 设置通道实例

Arguments:

Source code or View on GitHub
python
def set_channels(channels: dict[str, 'Channel']):
-    for name, channel in channels.items():
-        set_channel(name, channel)

func get_channel(name: str) -> Channel

Description: 获取通道实例

Arguments:

  • name (str): 通道名称

Return: Channel: 通道实例

Source code or View on GitHub
python
def get_channel(name: str) -> 'Channel':
-    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()

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

Description: 获取通道实例们

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

Source code or View on GitHub
python
def get_channels() -> dict[str, 'Channel']:
-    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')

func 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')

func 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')

func 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())
`,86)]))}const o=i(t,[["render",l]]);export{E as __pageData,o as default}; diff --git a/assets/en_dev_api_comm_channel.md.BliZgU7O.js b/assets/en_dev_api_comm_channel.md.DN1tFluf.js similarity index 99% rename from assets/en_dev_api_comm_channel.md.BliZgU7O.js rename to assets/en_dev_api_comm_channel.md.DN1tFluf.js index cfde6693..51e475de 100644 --- a/assets/en_dev_api_comm_channel.md.BliZgU7O.js +++ b/assets/en_dev_api_comm_channel.md.DN1tFluf.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as e}from"./chunks/framework.v7PlT0Wt.js";const E=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"};function l(h,s,p,k,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

Module liteyuki.comm.channel

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

var SYNC_ON_RECEIVE_FUNC

  • Description: 同步接收函数

  • Type: TypeAlias

  • Default: Callable[[T], 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])


func __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 i,c as a,o as n,al as e}from"./chunks/framework.BUxnStXl.js";const E=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"};function l(h,s,p,k,r,d){return n(),a("div",null,s[0]||(s[0]=[e(`

Module liteyuki.comm.channel

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

var SYNC_ON_RECEIVE_FUNC

  • Description: 同步接收函数

  • Type: TypeAlias

  • Default: Callable[[T], 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])


func __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):
     self.conn_send, self.conn_recv = Pipe()
     self._conn_send_inner, self._conn_recv_inner = Pipe()
     self._closed = False
diff --git a/assets/en_dev_api_comm_channel.md.DN1tFluf.lean.js b/assets/en_dev_api_comm_channel.md.DN1tFluf.lean.js
new file mode 100644
index 00000000..15123394
--- /dev/null
+++ b/assets/en_dev_api_comm_channel.md.DN1tFluf.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as e}from"./chunks/framework.BUxnStXl.js";const E=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"};function l(h,s,p,k,r,d){return n(),a("div",null,s[0]||(s[0]=[e("",86)]))}const o=i(t,[["render",l]]);export{E as __pageData,o as default};
diff --git a/assets/en_dev_api_comm_event.md.BfkzHdR4.lean.js b/assets/en_dev_api_comm_event.md.BfkzHdR4.lean.js
deleted file mode 100644
index 4eb07550..00000000
--- a/assets/en_dev_api_comm_event.md.BfkzHdR4.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,c as s,a7 as i,o as t}from"./chunks/framework.v7PlT0Wt.js";const c=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}'),n={name:"en/dev/api/comm/event.md"};function l(d,a,r,h,o,p){return t(),s("div",null,a[0]||(a[0]=[i('

Module liteyuki.comm.event

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

class Event


func __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)]))}const m=e(n,[["render",l]]);export{c as __pageData,m as default}; diff --git a/assets/en_dev_api_comm_event.md.BfkzHdR4.js b/assets/en_dev_api_comm_event.md.C4C8DN0Q.js similarity index 91% rename from assets/en_dev_api_comm_event.md.BfkzHdR4.js rename to assets/en_dev_api_comm_event.md.C4C8DN0Q.js index 4eb07550..aaa7c777 100644 --- a/assets/en_dev_api_comm_event.md.BfkzHdR4.js +++ b/assets/en_dev_api_comm_event.md.C4C8DN0Q.js @@ -1 +1 @@ -import{_ as e,c as s,a7 as i,o as t}from"./chunks/framework.v7PlT0Wt.js";const c=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}'),n={name:"en/dev/api/comm/event.md"};function l(d,a,r,h,o,p){return t(),s("div",null,a[0]||(a[0]=[i('

Module liteyuki.comm.event

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

class Event


func __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)]))}const m=e(n,[["render",l]]);export{c as __pageData,m as default}; +import{_ as e,c as s,o as i,al as t}from"./chunks/framework.BUxnStXl.js";const c=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}'),n={name:"en/dev/api/comm/event.md"};function l(d,a,r,h,o,p){return i(),s("div",null,a[0]||(a[0]=[t('

Module liteyuki.comm.event

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

class Event


func __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)]))}const m=e(n,[["render",l]]);export{c as __pageData,m as default}; diff --git a/assets/en_dev_api_comm_event.md.C4C8DN0Q.lean.js b/assets/en_dev_api_comm_event.md.C4C8DN0Q.lean.js new file mode 100644 index 00000000..6c63f81a --- /dev/null +++ b/assets/en_dev_api_comm_event.md.C4C8DN0Q.lean.js @@ -0,0 +1 @@ +import{_ as e,c as s,o as i,al as t}from"./chunks/framework.BUxnStXl.js";const c=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}'),n={name:"en/dev/api/comm/event.md"};function l(d,a,r,h,o,p){return i(),s("div",null,a[0]||(a[0]=[t("",6)]))}const m=e(n,[["render",l]]);export{c as __pageData,m as default}; diff --git a/assets/en_dev_api_comm_index.md.BesCS7WV.js b/assets/en_dev_api_comm_index.md.C-Qbduar.js similarity index 85% rename from assets/en_dev_api_comm_index.md.BesCS7WV.js rename to assets/en_dev_api_comm_index.md.C-Qbduar.js index 8edf6229..30a82ece 100644 --- a/assets/en_dev_api_comm_index.md.BesCS7WV.js +++ b/assets/en_dev_api_comm_index.md.C-Qbduar.js @@ -1 +1 @@ -import{_ as o,c as l,j as e,a,o as n}from"./chunks/framework.v7PlT0Wt.js";const _=JSON.parse('{"title":"liteyuki.comm","description":"","frontmatter":{"title":"liteyuki.comm","collapsed":true},"headers":[],"relativePath":"en/dev/api/comm/index.md","filePath":"en/dev/api/comm/index.md","lastUpdated":null}'),i={name:"en/dev/api/comm/index.md"};function d(m,t,r,c,s,u){return n(),l("div",null,t[0]||(t[0]=[e("h1",{id:"module-liteyuki-comm",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.comm"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-comm","aria-label":'Permalink to "**Module** `liteyuki.comm`"'},"​")],-1),e("p",null,"该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage",-1)]))}const f=o(i,[["render",d]]);export{_ as __pageData,f as default}; +import{_ as o,c as l,o as n,j as e,a}from"./chunks/framework.BUxnStXl.js";const _=JSON.parse('{"title":"liteyuki.comm","description":"","frontmatter":{"title":"liteyuki.comm","collapsed":true},"headers":[],"relativePath":"en/dev/api/comm/index.md","filePath":"en/dev/api/comm/index.md","lastUpdated":null}'),i={name:"en/dev/api/comm/index.md"};function d(m,t,r,c,s,u){return n(),l("div",null,t[0]||(t[0]=[e("h1",{id:"module-liteyuki-comm",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.comm"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-comm","aria-label":'Permalink to "**Module** `liteyuki.comm`"'},"​")],-1),e("p",null,"该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage",-1)]))}const f=o(i,[["render",d]]);export{_ as __pageData,f as default}; diff --git a/assets/en_dev_api_comm_index.md.BesCS7WV.lean.js b/assets/en_dev_api_comm_index.md.C-Qbduar.lean.js similarity index 85% rename from assets/en_dev_api_comm_index.md.BesCS7WV.lean.js rename to assets/en_dev_api_comm_index.md.C-Qbduar.lean.js index 8edf6229..30a82ece 100644 --- a/assets/en_dev_api_comm_index.md.BesCS7WV.lean.js +++ b/assets/en_dev_api_comm_index.md.C-Qbduar.lean.js @@ -1 +1 @@ -import{_ as o,c as l,j as e,a,o as n}from"./chunks/framework.v7PlT0Wt.js";const _=JSON.parse('{"title":"liteyuki.comm","description":"","frontmatter":{"title":"liteyuki.comm","collapsed":true},"headers":[],"relativePath":"en/dev/api/comm/index.md","filePath":"en/dev/api/comm/index.md","lastUpdated":null}'),i={name:"en/dev/api/comm/index.md"};function d(m,t,r,c,s,u){return n(),l("div",null,t[0]||(t[0]=[e("h1",{id:"module-liteyuki-comm",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.comm"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-comm","aria-label":'Permalink to "**Module** `liteyuki.comm`"'},"​")],-1),e("p",null,"该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage",-1)]))}const f=o(i,[["render",d]]);export{_ as __pageData,f as default}; +import{_ as o,c as l,o as n,j as e,a}from"./chunks/framework.BUxnStXl.js";const _=JSON.parse('{"title":"liteyuki.comm","description":"","frontmatter":{"title":"liteyuki.comm","collapsed":true},"headers":[],"relativePath":"en/dev/api/comm/index.md","filePath":"en/dev/api/comm/index.md","lastUpdated":null}'),i={name:"en/dev/api/comm/index.md"};function d(m,t,r,c,s,u){return n(),l("div",null,t[0]||(t[0]=[e("h1",{id:"module-liteyuki-comm",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.comm"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-comm","aria-label":'Permalink to "**Module** `liteyuki.comm`"'},"​")],-1),e("p",null,"该模块用于轻雪主进程和Nonebot子进程之间的通信 依赖关系 event -> _ storage -> channel_ rpc -> channel_, storage",-1)]))}const f=o(i,[["render",d]]);export{_ as __pageData,f as default}; diff --git a/assets/en_dev_api_comm_storage.md.Ds5KWd_O.lean.js b/assets/en_dev_api_comm_storage.md.Ds5KWd_O.lean.js deleted file mode 100644 index eaa1a789..00000000 --- a/assets/en_dev_api_comm_storage.md.Ds5KWd_O.lean.js +++ /dev/null @@ -1,90 +0,0 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const o=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}'),e={name:"en/dev/api/comm/storage.md"};function l(h,s,k,p,r,d){return t(),a("div",null,s[0]||(s[0]=[n(`

Module liteyuki.comm.storage

共享内存模块。类似于redis,但是更加轻量级并且线程安全

var _on_main_subscriber_receive_funcs

  • Description: 主进程订阅者接收函数

  • Type: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • Default: {}

var _on_sub_subscriber_receive_funcs

  • Description: 子进程订阅者接收函数

  • Type: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • Default: {}

class KeyValueStore


func __init__(self)

Source code or View on GitHub
python
def __init__(self):
-    self._store = {}
-    self.active_chan = Channel[tuple[str, Optional[dict[str, Any]]]](name='shared_memory-active')
-    self.passive_chan = Channel[tuple[str, Optional[dict[str, Any]]]](name='shared_memory-passive')
-    self.publish_channel = Channel[tuple[str, Any]](name='shared_memory-publish')
-    self.is_main_receive_loop_running = False
-    self.is_sub_receive_loop_running = False

func set(self, key: str, value: Any) -> None

Description: 设置键值对

Arguments:

  • key: 键
  • value: 值
Source code or View on GitHub
python
def set(self, key: str, value: Any) -> None:
-    if IS_MAIN_PROCESS:
-        lock = _get_lock(key)
-        with lock:
-            self._store[key] = value
-    else:
-        self.passive_chan.send(('set', {'key': key, 'value': value}))

func get(self, key: str, default: Optional[Any] = None) -> Optional[Any]

Description: 获取键值对

Arguments:

  • key: 键
  • default: 默认值

Return: Any: 值

Source code or View on GitHub
python
def get(self, key: str, default: Optional[Any]=None) -> Optional[Any]:
-    if IS_MAIN_PROCESS:
-        lock = _get_lock(key)
-        with lock:
-            return self._store.get(key, default)
-    else:
-        recv_chan = Channel[Optional[Any]]('recv_chan')
-        self.passive_chan.send(('get', {'key': key, 'default': default, 'recv_chan': recv_chan}))
-        return recv_chan.receive()

func delete(self, key: str, ignore_key_error: bool = True) -> None

Description: 删除键值对

Arguments:

  • key: 键
  • ignore_key_error: 是否忽略键不存在的错误
Source code or View on GitHub
python
def delete(self, key: str, ignore_key_error: bool=True) -> None:
-    if IS_MAIN_PROCESS:
-        lock = _get_lock(key)
-        with lock:
-            if key in self._store:
-                try:
-                    del self._store[key]
-                    del _locks[key]
-                except KeyError as e:
-                    if not ignore_key_error:
-                        raise e
-    else:
-        self.passive_chan.send(('delete', {'key': key}))

func get_all(self) -> dict[str, Any]

Description: 获取所有键值对

Return: dict[str, Any]: 键值对

Source code or View on GitHub
python
def get_all(self) -> dict[str, Any]:
-    if IS_MAIN_PROCESS:
-        return self._store
-    else:
-        recv_chan = Channel[dict[str, Any]]('recv_chan')
-        self.passive_chan.send(('get_all', {'recv_chan': recv_chan}))
-        return recv_chan.receive()

func publish(self, channel_: str, data: Any) -> None

Description: 发布消息

Arguments:

  • channel_: 频道
  • data: 数据
Source code or View on GitHub
python
def publish(self, channel_: str, data: Any) -> None:
-    self.active_chan.send(('publish', {'channel': channel_, 'data': data}))

func on_subscriber_receive(self, channel_: str) -> Callable[[ON_RECEIVE_FUNC], ON_RECEIVE_FUNC]

Description: 订阅者接收消息时的回调

Arguments:

  • channel_: 频道

Return: 装饰器

Source code or View on GitHub
python
def on_subscriber_receive(self, channel_: str) -> Callable[[ON_RECEIVE_FUNC], ON_RECEIVE_FUNC]:
-    if not IS_MAIN_PROCESS:
-        raise RuntimeError('Cannot subscribe in sub process.')
-
-    def decorator(func: ON_RECEIVE_FUNC) -> ON_RECEIVE_FUNC:
-
-        async def wrapper(data: Any):
-            if is_coroutine_callable(func):
-                await func(data)
-            else:
-                func(data)
-        if IS_MAIN_PROCESS:
-            if channel_ not in _on_main_subscriber_receive_funcs:
-                _on_main_subscriber_receive_funcs[channel_] = []
-            _on_main_subscriber_receive_funcs[channel_].append(wrapper)
-        else:
-            if channel_ not in _on_sub_subscriber_receive_funcs:
-                _on_sub_subscriber_receive_funcs[channel_] = []
-            _on_sub_subscriber_receive_funcs[channel_].append(wrapper)
-        return wrapper
-    return decorator

@staticmethod

async func run_subscriber_receive_funcs(channel_: str, data: Any)

Description: 运行订阅者接收函数

Arguments:

  • channel_: 频道
  • data: 数据
Source code or View on GitHub
python
@staticmethod
-async def run_subscriber_receive_funcs(channel_: str, data: Any):
-    [asyncio.create_task(func(data)) for func in _on_main_subscriber_receive_funcs[channel_]]

async func start_receive_loop(self)

Description: 启动发布订阅接收器循环,在主进程中运行,若有子进程订阅则推送给子进程

Source code or View on GitHub
python
async def start_receive_loop(self):
-    if not IS_MAIN_PROCESS:
-        raise RuntimeError('Cannot start receive loop in sub process.')
-    while True:
-        data = await self.active_chan.async_receive()
-        if data[0] == 'publish':
-            await self.run_subscriber_receive_funcs(data[1]['channel'], data[1]['data'])
-            self.publish_channel.send(data)

class GlobalKeyValueStore


@classmethod

func get_instance(cls)

Source code or View on GitHub
python
@classmethod
-def get_instance(cls):
-    if cls._instance is None:
-        with cls._lock:
-            if cls._instance is None:
-                cls._instance = KeyValueStore()
-    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')

func 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']
-    recv_chan = data[1]['recv_chan']
-    recv_chan.send(shared_memory.get(key, default))

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

func on_set(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'set')
-def on_set(data: tuple[str, dict[str, Any]]):
-    key = data[1]['key']
-    value = data[1]['value']
-    shared_memory.set(key, value)

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

func on_delete(data: tuple[str, dict[str, Any]])

Source code or View on GitHub
python
@shared_memory.passive_chan.on_receive(lambda d: d[0] == 'delete')
-def on_delete(data: tuple[str, dict[str, Any]]):
-    key = data[1]['key']
-    shared_memory.delete(key)

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

func 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())
`,85)]))}const c=i(e,[["render",l]]);export{o as __pageData,c as default}; diff --git a/assets/en_dev_api_comm_storage.md.Ds5KWd_O.js b/assets/en_dev_api_comm_storage.md.EioevEYA.js similarity index 99% rename from assets/en_dev_api_comm_storage.md.Ds5KWd_O.js rename to assets/en_dev_api_comm_storage.md.EioevEYA.js index eaa1a789..bfda2fb1 100644 --- a/assets/en_dev_api_comm_storage.md.Ds5KWd_O.js +++ b/assets/en_dev_api_comm_storage.md.EioevEYA.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const o=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}'),e={name:"en/dev/api/comm/storage.md"};function l(h,s,k,p,r,d){return t(),a("div",null,s[0]||(s[0]=[n(`

Module liteyuki.comm.storage

共享内存模块。类似于redis,但是更加轻量级并且线程安全

var _on_main_subscriber_receive_funcs

  • Description: 主进程订阅者接收函数

  • Type: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • Default: {}

var _on_sub_subscriber_receive_funcs

  • Description: 子进程订阅者接收函数

  • Type: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • Default: {}

class KeyValueStore


func __init__(self)

Source code or View on GitHub
python
def __init__(self):
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const o=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}'),e={name:"en/dev/api/comm/storage.md"};function l(h,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[t(`

Module liteyuki.comm.storage

共享内存模块。类似于redis,但是更加轻量级并且线程安全

var _on_main_subscriber_receive_funcs

  • Description: 主进程订阅者接收函数

  • Type: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • Default: {}

var _on_sub_subscriber_receive_funcs

  • Description: 子进程订阅者接收函数

  • Type: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • Default: {}

class KeyValueStore


func __init__(self)

Source code or View on GitHub
python
def __init__(self):
     self._store = {}
     self.active_chan = Channel[tuple[str, Optional[dict[str, Any]]]](name='shared_memory-active')
     self.passive_chan = Channel[tuple[str, Optional[dict[str, Any]]]](name='shared_memory-passive')
diff --git a/assets/en_dev_api_comm_storage.md.EioevEYA.lean.js b/assets/en_dev_api_comm_storage.md.EioevEYA.lean.js
new file mode 100644
index 00000000..11e8359e
--- /dev/null
+++ b/assets/en_dev_api_comm_storage.md.EioevEYA.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const o=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}'),e={name:"en/dev/api/comm/storage.md"};function l(h,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[t("",85)]))}const c=i(e,[["render",l]]);export{o as __pageData,c as default};
diff --git a/assets/en_dev_api_config.md.BS-UkXWI.lean.js b/assets/en_dev_api_config.md.BS-UkXWI.lean.js
deleted file mode 100644
index 8f53974a..00000000
--- a/assets/en_dev_api_config.md.BS-UkXWI.lean.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import{_ as a,c as n,a7 as i,j as t,o as l}from"./chunks/framework.v7PlT0Wt.js";const E=JSON.parse('{"title":"liteyuki.config","description":"","frontmatter":{"title":"liteyuki.config"},"headers":[],"relativePath":"en/dev/api/config.md","filePath":"en/dev/api/config.md","lastUpdated":1725101868000}'),h={name:"en/dev/api/config.md"};function e(k,s,p,r,d,o){return l(),n("div",null,s[0]||(s[0]=[i('

Module liteyuki.config

该模块用于常用配置文件的加载 多配置文件编写原则:

  1. 尽量不要冲突: 一个键不要多次出现
  2. 分工明确: 每个配置文件给一个或一类服务提供配置
  3. 扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套
  4. 注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件
  5. 请不要将需要动态加载的内容写入配置文件,你应该使用其他储存方式

func flat_config(config: dict[str, Any]) -> dict[str, Any]

Description: 扁平化配置文件

',6),t("p",{"a.b.c:":"",1:""},"{a:{b:{c:1}}} ->",-1),i(`

Arguments:

  • config: 配置项目

Return: 扁平化后的配置文件,但也包含原有的键值对

Source code or View on GitHub
python
def flat_config(config: dict[str, Any]) -> dict[str, Any]:
-    new_config = copy.deepcopy(config)
-    for key, value in config.items():
-        if isinstance(value, dict):
-            for k, v in flat_config(value).items():
-                new_config[f'{key}.{k}'] = v
-    return new_config

func load_from_yaml(file_: str) -> dict[str, Any]

Description: Load config from yaml file

Source code or View on GitHub
python
def load_from_yaml(file_: str) -> dict[str, Any]:
-    logger.debug(f'Loading YAML config from {file_}')
-    config = yaml.safe_load(open(file_, 'r', encoding='utf-8'))
-    return flat_config(config if config is not None else {})

func load_from_json(file_: str) -> dict[str, Any]

Description: Load config from json file

Source code or View on GitHub
python
def load_from_json(file_: str) -> dict[str, Any]:
-    logger.debug(f'Loading JSON config from {file_}')
-    config = json.load(open(file_, 'r', encoding='utf-8'))
-    return flat_config(config if config is not None else {})

func load_from_toml(file_: str) -> dict[str, Any]

Description: Load config from toml file

Source code or View on GitHub
python
def load_from_toml(file_: str) -> dict[str, Any]:
-    logger.debug(f'Loading TOML config from {file_}')
-    config = toml.load(open(file_, 'r', encoding='utf-8'))
-    return flat_config(config if config is not None else {})

func load_from_files(*files: str, *, no_warning: bool = False) -> dict[str, Any]

Description: 从指定文件加载配置项,会自动识别文件格式 默认执行扁平化选项

Source code or View on GitHub
python
def load_from_files(*files: str, no_warning: bool=False) -> dict[str, Any]:
-    config = {}
-    for file in files:
-        if os.path.exists(file):
-            if file.endswith(('.yaml', 'yml')):
-                config.update(load_from_yaml(file))
-            elif file.endswith('.json'):
-                config.update(load_from_json(file))
-            elif file.endswith('.toml'):
-                config.update(load_from_toml(file))
-            elif not no_warning:
-                logger.warning(f'Unsupported config file format: {file}')
-        elif not no_warning:
-            logger.warning(f'Config file not found: {file}')
-    return config

func load_configs_from_dirs(*directories: str, *, no_waring: bool = False) -> dict[str, Any]

Description: 从目录下加载配置文件,不递归 按照读取文件的优先级反向覆盖 默认执行扁平化选项

Source code or View on GitHub
python
def load_configs_from_dirs(*directories: str, no_waring: bool=False) -> dict[str, Any]:
-    config = {}
-    for directory in directories:
-        if not os.path.exists(directory):
-            if not no_waring:
-                logger.warning(f'Directory not found: {directory}')
-            continue
-        for file in os.listdir(directory):
-            if file.endswith(_SUPPORTED_CONFIG_FORMATS):
-                config.update(load_from_files(os.path.join(directory, file), no_warning=no_waring))
-    return config

func load_config_in_default(no_waring: bool = False) -> dict[str, Any]

Description: 从一个标准的轻雪项目加载配置文件 项目目录下的config.*和config目录下的所有配置文件 项目目录下的配置文件优先

Arguments:

  • no_waring: 是否关闭警告
Source code or View on GitHub
python
def load_config_in_default(no_waring: bool=False) -> dict[str, Any]:
-    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

class Loader


func __init__(self)

Source code or View on GitHub
python
def __init__(self):
-    self.config = {}

func load_from_yaml(self, fp: str) -> Loader

Description: 从yaml文件加载配置

Arguments:

  • fp:
Source code or View on GitHub
python
def load_from_yaml(self, fp: str) -> 'Loader':
-    with open(fp, 'r') as file:
-        self.config.update(yaml.safe_load(file))
-    return self

func load_from_toml(self, fp: str) -> Loader

Description: 从toml文件加载配置

Source code or View on GitHub
python
def load_from_toml(self, fp: str) -> 'Loader':
-    with open(fp, 'r') as file:
-        self.config.update(toml.load(file))
-    return self

func load_from_json(self, fp: str) -> Loader

Description: 从json文件加载配置

Source code or View on GitHub
python
def load_from_json(self, fp: str) -> 'Loader':
-    with open(fp, 'r') as file:
-        self.config.update(json.load(file))
-    return self

func load_from_env(self, prefix: str = '') -> Loader

Description: 从环境变量加载配置

Source code or View on GitHub
python
def load_from_env(self, prefix: str='') -> 'Loader':
-    for key, value in os.environ.items():
-        if key.startswith(prefix):
-            self.config[key[len(prefix):]] = value
-    return self

func merge(self, loader: Loader) -> Loader

Description: 合并两个Loader键值对树

Source code or View on GitHub
python
def merge(self, loader: 'Loader') -> 'Loader':
-    self.config.update(loader.config)
-    return self

func get(self, key: str, default: Any = None) -> Any

Description: 获取配置值

Source code or View on GitHub
python
def get(self, key: str, default: Any=None) -> Any:
-    return self.config.get(key, default)
`,60)]))}const y=a(h,[["render",e]]);export{E as __pageData,y as default}; diff --git a/assets/en_dev_api_config.md.BS-UkXWI.js b/assets/en_dev_api_config.md.CjW8NwT2.js similarity index 99% rename from assets/en_dev_api_config.md.BS-UkXWI.js rename to assets/en_dev_api_config.md.CjW8NwT2.js index 8f53974a..3b1a47b6 100644 --- a/assets/en_dev_api_config.md.BS-UkXWI.js +++ b/assets/en_dev_api_config.md.CjW8NwT2.js @@ -1,4 +1,4 @@ -import{_ as a,c as n,a7 as i,j as t,o as l}from"./chunks/framework.v7PlT0Wt.js";const E=JSON.parse('{"title":"liteyuki.config","description":"","frontmatter":{"title":"liteyuki.config"},"headers":[],"relativePath":"en/dev/api/config.md","filePath":"en/dev/api/config.md","lastUpdated":1725101868000}'),h={name:"en/dev/api/config.md"};function e(k,s,p,r,d,o){return l(),n("div",null,s[0]||(s[0]=[i('

Module liteyuki.config

该模块用于常用配置文件的加载 多配置文件编写原则:

  1. 尽量不要冲突: 一个键不要多次出现
  2. 分工明确: 每个配置文件给一个或一类服务提供配置
  3. 扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套
  4. 注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件
  5. 请不要将需要动态加载的内容写入配置文件,你应该使用其他储存方式

func flat_config(config: dict[str, Any]) -> dict[str, Any]

Description: 扁平化配置文件

',6),t("p",{"a.b.c:":"",1:""},"{a:{b:{c:1}}} ->",-1),i(`

Arguments:

  • config: 配置项目

Return: 扁平化后的配置文件,但也包含原有的键值对

Source code or View on GitHub
python
def flat_config(config: dict[str, Any]) -> dict[str, Any]:
+import{_ as a,c as n,o as t,al as i,j as l}from"./chunks/framework.BUxnStXl.js";const E=JSON.parse('{"title":"liteyuki.config","description":"","frontmatter":{"title":"liteyuki.config"},"headers":[],"relativePath":"en/dev/api/config.md","filePath":"en/dev/api/config.md","lastUpdated":1725101868000}'),h={name:"en/dev/api/config.md"};function e(k,s,p,r,d,o){return t(),n("div",null,s[0]||(s[0]=[i('

Module liteyuki.config

该模块用于常用配置文件的加载 多配置文件编写原则:

  1. 尽量不要冲突: 一个键不要多次出现
  2. 分工明确: 每个配置文件给一个或一类服务提供配置
  3. 扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套
  4. 注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件
  5. 请不要将需要动态加载的内容写入配置文件,你应该使用其他储存方式

func flat_config(config: dict[str, Any]) -> dict[str, Any]

Description: 扁平化配置文件

',6),l("p",{"a.b.c:":"",1:""},"{a:{b:{c:1}}} ->",-1),i(`

Arguments:

  • config: 配置项目

Return: 扁平化后的配置文件,但也包含原有的键值对

Source code or View on GitHub
python
def flat_config(config: dict[str, Any]) -> dict[str, Any]:
     new_config = copy.deepcopy(config)
     for key, value in config.items():
         if isinstance(value, dict):
diff --git a/assets/en_dev_api_config.md.CjW8NwT2.lean.js b/assets/en_dev_api_config.md.CjW8NwT2.lean.js
new file mode 100644
index 00000000..e0bb8165
--- /dev/null
+++ b/assets/en_dev_api_config.md.CjW8NwT2.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as n,o as t,al as i,j as l}from"./chunks/framework.BUxnStXl.js";const E=JSON.parse('{"title":"liteyuki.config","description":"","frontmatter":{"title":"liteyuki.config"},"headers":[],"relativePath":"en/dev/api/config.md","filePath":"en/dev/api/config.md","lastUpdated":1725101868000}'),h={name:"en/dev/api/config.md"};function e(k,s,p,r,d,o){return t(),n("div",null,s[0]||(s[0]=[i("",6),l("p",{"a.b.c:":"",1:""},"{a:{b:{c:1}}} ->",-1),i("",60)]))}const y=a(h,[["render",e]]);export{E as __pageData,y as default};
diff --git a/assets/en_dev_api_core_index.md.CXc5eQIT.js b/assets/en_dev_api_core_index.md.CiLPSzAu.js
similarity index 82%
rename from assets/en_dev_api_core_index.md.CXc5eQIT.js
rename to assets/en_dev_api_core_index.md.CiLPSzAu.js
index e2401de9..30d66889 100644
--- a/assets/en_dev_api_core_index.md.CXc5eQIT.js
+++ b/assets/en_dev_api_core_index.md.CiLPSzAu.js
@@ -1 +1 @@
-import{_ as o,c as r,j as e,a,o as i}from"./chunks/framework.v7PlT0Wt.js";const f=JSON.parse('{"title":"liteyuki.core","description":"","frontmatter":{"title":"liteyuki.core","collapsed":true},"headers":[],"relativePath":"en/dev/api/core/index.md","filePath":"en/dev/api/core/index.md","lastUpdated":null}'),l={name:"en/dev/api/core/index.md"};function d(n,t,c,s,u,p){return i(),r("div",null,t[0]||(t[0]=[e("h1",{id:"module-liteyuki-core",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.core"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-core","aria-label":'Permalink to "**Module** `liteyuki.core`"'},"​")],-1)]))}const k=o(l,[["render",d]]);export{f as __pageData,k as default};
+import{_ as o,c as r,o as i,j as e,a}from"./chunks/framework.BUxnStXl.js";const f=JSON.parse('{"title":"liteyuki.core","description":"","frontmatter":{"title":"liteyuki.core","collapsed":true},"headers":[],"relativePath":"en/dev/api/core/index.md","filePath":"en/dev/api/core/index.md","lastUpdated":null}'),l={name:"en/dev/api/core/index.md"};function d(n,t,c,s,u,p){return i(),r("div",null,t[0]||(t[0]=[e("h1",{id:"module-liteyuki-core",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.core"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-core","aria-label":'Permalink to "**Module** `liteyuki.core`"'},"​")],-1)]))}const k=o(l,[["render",d]]);export{f as __pageData,k as default};
diff --git a/assets/en_dev_api_core_index.md.CXc5eQIT.lean.js b/assets/en_dev_api_core_index.md.CiLPSzAu.lean.js
similarity index 82%
rename from assets/en_dev_api_core_index.md.CXc5eQIT.lean.js
rename to assets/en_dev_api_core_index.md.CiLPSzAu.lean.js
index e2401de9..30d66889 100644
--- a/assets/en_dev_api_core_index.md.CXc5eQIT.lean.js
+++ b/assets/en_dev_api_core_index.md.CiLPSzAu.lean.js
@@ -1 +1 @@
-import{_ as o,c as r,j as e,a,o as i}from"./chunks/framework.v7PlT0Wt.js";const f=JSON.parse('{"title":"liteyuki.core","description":"","frontmatter":{"title":"liteyuki.core","collapsed":true},"headers":[],"relativePath":"en/dev/api/core/index.md","filePath":"en/dev/api/core/index.md","lastUpdated":null}'),l={name:"en/dev/api/core/index.md"};function d(n,t,c,s,u,p){return i(),r("div",null,t[0]||(t[0]=[e("h1",{id:"module-liteyuki-core",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.core"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-core","aria-label":'Permalink to "**Module** `liteyuki.core`"'},"​")],-1)]))}const k=o(l,[["render",d]]);export{f as __pageData,k as default};
+import{_ as o,c as r,o as i,j as e,a}from"./chunks/framework.BUxnStXl.js";const f=JSON.parse('{"title":"liteyuki.core","description":"","frontmatter":{"title":"liteyuki.core","collapsed":true},"headers":[],"relativePath":"en/dev/api/core/index.md","filePath":"en/dev/api/core/index.md","lastUpdated":null}'),l={name:"en/dev/api/core/index.md"};function d(n,t,c,s,u,p){return i(),r("div",null,t[0]||(t[0]=[e("h1",{id:"module-liteyuki-core",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.core"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-core","aria-label":'Permalink to "**Module** `liteyuki.core`"'},"​")],-1)]))}const k=o(l,[["render",d]]);export{f as __pageData,k as default};
diff --git a/assets/en_dev_api_core_manager.md.DlLZB3d5.js b/assets/en_dev_api_core_manager.md.BJ9nRG8V.js
similarity index 99%
rename from assets/en_dev_api_core_manager.md.DlLZB3d5.js
rename to assets/en_dev_api_core_manager.md.BJ9nRG8V.js
index 68ea896a..fca33210 100644
--- a/assets/en_dev_api_core_manager.md.DlLZB3d5.js
+++ b/assets/en_dev_api_core_manager.md.BJ9nRG8V.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a7 as n,o as e}from"./chunks/framework.v7PlT0Wt.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}'),t={name:"en/dev/api/core/manager.md"};function l(h,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

Module 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


func __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 i,c as a,o as n,al as e}from"./chunks/framework.BUxnStXl.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}'),t={name:"en/dev/api/core/manager.md"};function l(h,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[e(`

Module 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


func __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
diff --git a/assets/en_dev_api_core_manager.md.BJ9nRG8V.lean.js b/assets/en_dev_api_core_manager.md.BJ9nRG8V.lean.js
new file mode 100644
index 00000000..ef983a7b
--- /dev/null
+++ b/assets/en_dev_api_core_manager.md.BJ9nRG8V.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as e}from"./chunks/framework.BUxnStXl.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}'),t={name:"en/dev/api/core/manager.md"};function l(h,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[e("",75)]))}const E=i(t,[["render",l]]);export{o as __pageData,E as default};
diff --git a/assets/en_dev_api_core_manager.md.DlLZB3d5.lean.js b/assets/en_dev_api_core_manager.md.DlLZB3d5.lean.js
deleted file mode 100644
index 68ea896a..00000000
--- a/assets/en_dev_api_core_manager.md.DlLZB3d5.lean.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import{_ as i,c as a,a7 as n,o as e}from"./chunks/framework.v7PlT0Wt.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}'),t={name:"en/dev/api/core/manager.md"};function l(h,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[n(`

Module 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


func __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
-    self.channel_deliver_passive = channel_deliver_passive
-    self.publish = publish

class ProcessManager


func __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] = {}

func start_all(self)

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

Source code or View on GitHub
python
def start_all(self):
-    for name in self.targets:
-        logger.debug(f'Starting process {name}')
-        threading.Thread(target=self._run_process, args=(name,), daemon=True).start()

func add_target(self, name: str, target: TARGET_FUNC, args: tuple = (), kwargs = None)

Description: 添加进程

Arguments:

  • name: 进程名,用于获取和唯一标识
  • target: 进程函数
  • args: 进程函数参数
  • kwargs: 进程函数关键字参数,通常会默认传入chan_active和chan_passive
Source code or View on GitHub
python
def add_target(self, name: str, target: TARGET_FUNC, args: tuple=(), kwargs=None):
-    if kwargs is None:
-        kwargs = {}
-    chan_active: Channel = Channel(name=f'{name}-active')
-    chan_passive: Channel = Channel(name=f'{name}-passive')
-    channel_deliver = ChannelDeliver(active=chan_active, passive=chan_passive, channel_deliver_active=channel_deliver_active_channel, channel_deliver_passive=channel_deliver_passive_channel, publish=publish_channel)
-    self.targets[name] = (_delivery_channel_wrapper, (target, channel_deliver, shared_memory, *args), kwargs)

func join_all(self)

Source code or View on GitHub
python
def join_all(self):
-    for name, process in self.targets:
-        process.join()

func terminate(self, name: str)

Description: 终止进程并从进程字典中删除

Arguments:

  • name:
Source code or View on GitHub
python
def terminate(self, name: str):
-    if name not in self.processes:
-        logger.warning(f'Process {name} not found.')
-        return
-    process = self.processes[name]
-    process.terminate()
-    process.join(TIMEOUT)
-    if process.is_alive():
-        process.kill()
-    logger.success(f'Process {name} terminated.')

func terminate_all(self)

Source code or View on GitHub
python
def terminate_all(self):
-    for name in self.targets:
-        self.terminate(name)

func is_process_alive(self, name: str) -> bool

Description: 检查进程是否存活

Arguments:

  • name:
Source code or View on GitHub
python
def is_process_alive(self, name: str) -> bool:
-    if name not in self.targets:
-        logger.warning(f'Process {name} not found.')
-    return self.processes[name].is_alive()

class _SubProcessManager


func __init__(self)

Source code or View on GitHub
python
def __init__(self):
-    self.processes: dict[str, SubProcess] = {}

func add(self, name: str, func: ProcessFuncType, *args, **kwargs)

Description: 添加子进程

Arguments:

  • func: 子进程函数
  • name: 子进程名称
  • args: 子进程函数参数
  • kwargs: 子进程函数关键字参数
Source code or View on GitHub
python
def add(self, name: str, func: ProcessFuncType, *args, **kwargs):
-    self.processes[name] = SubProcess(name, func, *args, **kwargs)

func start(self, name: str)

Description: 启动指定子进程

Arguments:

  • name: 子进程名称
Source code or View on GitHub
python
def start(self, name: str):
-    if name not in self.processes:
-        raise KeyError(f'Process {name} not found.')
-    self.processes[name].start()

func start_all(self)

Description: 启动所有子进程

Source code or View on GitHub
python
def start_all(self):
-    for name, process in self.processes.items():
-        process.start()
-        logger.debug(f'Starting process {name}')

func terminate(self, name: str)

Description: 终止指定子进程

Arguments:

  • name: 子进程名称
Source code or View on GitHub
python
def terminate(self, name: str):
-    if name not in self.processes:
-        raise KeyError(f'Process {name} not found.')
-    self.processes[name].terminate()

func terminate_all(self)

Description: 终止所有子进程

Source code or View on GitHub
python
def terminate_all(self):
-    for name, process in self.processes.items():
-        process.terminate()
-        logger.debug(f'Terminating process {name}')

func get_process(self, name: str) -> SubProcess | None

Description: 获取指定子进程

Arguments:

  • name: 子进程名称
Source code or View on GitHub
python
def get_process(self, name: str) -> SubProcess | None:
-    return self.processes.get(name, None)
`,75)]))}const E=i(t,[["render",l]]);export{o as __pageData,E as default}; diff --git a/assets/en_dev_api_dev_index.md.CEZedfLv.js b/assets/en_dev_api_dev_index.md.HYeoPza5.js similarity index 83% rename from assets/en_dev_api_dev_index.md.CEZedfLv.js rename to assets/en_dev_api_dev_index.md.HYeoPza5.js index 6f02c5c7..a4bad83e 100644 --- a/assets/en_dev_api_dev_index.md.CEZedfLv.js +++ b/assets/en_dev_api_dev_index.md.HYeoPza5.js @@ -1 +1 @@ -import{_ as d,c as l,j as e,a,o as i}from"./chunks/framework.v7PlT0Wt.js";const m=JSON.parse('{"title":"liteyuki.dev","description":"","frontmatter":{"title":"liteyuki.dev","collapsed":true},"headers":[],"relativePath":"en/dev/api/dev/index.md","filePath":"en/dev/api/dev/index.md","lastUpdated":null}'),n={name:"en/dev/api/dev/index.md"};function o(r,t,s,u,c,p){return i(),l("div",null,t[0]||(t[0]=[e("h1",{id:"module-liteyuki-dev",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.dev"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-dev","aria-label":'Permalink to "**Module** `liteyuki.dev`"'},"​")],-1),e("p",null,"该模块用于存放一些开发工具",-1)]))}const f=d(n,[["render",o]]);export{m as __pageData,f as default}; +import{_ as d,c as l,o as i,j as e,a}from"./chunks/framework.BUxnStXl.js";const m=JSON.parse('{"title":"liteyuki.dev","description":"","frontmatter":{"title":"liteyuki.dev","collapsed":true},"headers":[],"relativePath":"en/dev/api/dev/index.md","filePath":"en/dev/api/dev/index.md","lastUpdated":null}'),n={name:"en/dev/api/dev/index.md"};function o(r,t,s,u,c,p){return i(),l("div",null,t[0]||(t[0]=[e("h1",{id:"module-liteyuki-dev",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.dev"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-dev","aria-label":'Permalink to "**Module** `liteyuki.dev`"'},"​")],-1),e("p",null,"该模块用于存放一些开发工具",-1)]))}const f=d(n,[["render",o]]);export{m as __pageData,f as default}; diff --git a/assets/en_dev_api_dev_index.md.CEZedfLv.lean.js b/assets/en_dev_api_dev_index.md.HYeoPza5.lean.js similarity index 83% rename from assets/en_dev_api_dev_index.md.CEZedfLv.lean.js rename to assets/en_dev_api_dev_index.md.HYeoPza5.lean.js index 6f02c5c7..a4bad83e 100644 --- a/assets/en_dev_api_dev_index.md.CEZedfLv.lean.js +++ b/assets/en_dev_api_dev_index.md.HYeoPza5.lean.js @@ -1 +1 @@ -import{_ as d,c as l,j as e,a,o as i}from"./chunks/framework.v7PlT0Wt.js";const m=JSON.parse('{"title":"liteyuki.dev","description":"","frontmatter":{"title":"liteyuki.dev","collapsed":true},"headers":[],"relativePath":"en/dev/api/dev/index.md","filePath":"en/dev/api/dev/index.md","lastUpdated":null}'),n={name:"en/dev/api/dev/index.md"};function o(r,t,s,u,c,p){return i(),l("div",null,t[0]||(t[0]=[e("h1",{id:"module-liteyuki-dev",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.dev"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-dev","aria-label":'Permalink to "**Module** `liteyuki.dev`"'},"​")],-1),e("p",null,"该模块用于存放一些开发工具",-1)]))}const f=d(n,[["render",o]]);export{m as __pageData,f as default}; +import{_ as d,c as l,o as i,j as e,a}from"./chunks/framework.BUxnStXl.js";const m=JSON.parse('{"title":"liteyuki.dev","description":"","frontmatter":{"title":"liteyuki.dev","collapsed":true},"headers":[],"relativePath":"en/dev/api/dev/index.md","filePath":"en/dev/api/dev/index.md","lastUpdated":null}'),n={name:"en/dev/api/dev/index.md"};function o(r,t,s,u,c,p){return i(),l("div",null,t[0]||(t[0]=[e("h1",{id:"module-liteyuki-dev",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.dev"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-dev","aria-label":'Permalink to "**Module** `liteyuki.dev`"'},"​")],-1),e("p",null,"该模块用于存放一些开发工具",-1)]))}const f=d(n,[["render",o]]);export{m as __pageData,f as default}; diff --git a/assets/en_dev_api_dev_observer.md.B3H3Iuyc.lean.js b/assets/en_dev_api_dev_observer.md.B3H3Iuyc.lean.js deleted file mode 100644 index 012b86ac..00000000 --- a/assets/en_dev_api_dev_observer.md.B3H3Iuyc.lean.js +++ /dev/null @@ -1,32 +0,0 @@ -import{_ as i,c as e,a7 as a,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.dev.observer","description":"","frontmatter":{"title":"liteyuki.dev.observer"},"headers":[],"relativePath":"en/dev/api/dev/observer.md","filePath":"en/dev/api/dev/observer.md","lastUpdated":1725101868000}'),t={name:"en/dev/api/dev/observer.md"};function l(h,s,p,r,k,d){return n(),e("div",null,s[0]||(s[0]=[a(`

Module liteyuki.dev.observer

此模块用于注册观察者函数,使用watchdog监控文件变化并重启bot 启用该模块需要在配置文件中设置dev_mode为True

var CALLBACK_FUNC

  • Description: 位置1为FileSystemEvent

  • Type: TypeAlias

  • Default: Callable[[FileSystemEvent], None]

var FILTER_FUNC

  • Description: 位置1为FileSystemEvent

  • Type: TypeAlias

  • Default: Callable[[FileSystemEvent], bool]


func debounce(wait)

Description: 防抖函数

Source code or View on GitHub
python
def debounce(wait):
-
-    def decorator(func):
-
-        def wrapper(*args, **kwargs):
-            nonlocal last_call_time
-            current_time = time.time()
-            if current_time - last_call_time > wait:
-                last_call_time = current_time
-                return func(*args, **kwargs)
-        last_call_time = None
-        return wrapper
-    return decorator

class CodeModifiedHandler(FileSystemEventHandler)


@debounce(1)

func 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')

func on_created(self, event)

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

func on_deleted(self, event)

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

func on_moved(self, event)

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

func on_any_event(self, event)

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

func 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]:
-
-    def decorator(func: CALLBACK_FUNC) -> CALLBACK_FUNC:
-
-        def wrapper(event: FileSystemEvent):
-            if event_filter is not None and (not event_filter(event)):
-                return
-            func(event)
-        code_modified_handler = CodeModifiedHandler()
-        code_modified_handler.on_modified = wrapper
-        for directory in directories:
-            observer.schedule(code_modified_handler, directory, recursive=recursive)
-        return func
-    return decorator
`,34)]))}const E=i(t,[["render",l]]);export{c as __pageData,E as default}; diff --git a/assets/en_dev_api_dev_observer.md.B3H3Iuyc.js b/assets/en_dev_api_dev_observer.md.BPkoTdDW.js similarity index 98% rename from assets/en_dev_api_dev_observer.md.B3H3Iuyc.js rename to assets/en_dev_api_dev_observer.md.BPkoTdDW.js index 012b86ac..d50ceda3 100644 --- a/assets/en_dev_api_dev_observer.md.B3H3Iuyc.js +++ b/assets/en_dev_api_dev_observer.md.BPkoTdDW.js @@ -1,4 +1,4 @@ -import{_ as i,c as e,a7 as a,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.dev.observer","description":"","frontmatter":{"title":"liteyuki.dev.observer"},"headers":[],"relativePath":"en/dev/api/dev/observer.md","filePath":"en/dev/api/dev/observer.md","lastUpdated":1725101868000}'),t={name:"en/dev/api/dev/observer.md"};function l(h,s,p,r,k,d){return n(),e("div",null,s[0]||(s[0]=[a(`

Module liteyuki.dev.observer

此模块用于注册观察者函数,使用watchdog监控文件变化并重启bot 启用该模块需要在配置文件中设置dev_mode为True

var CALLBACK_FUNC

  • Description: 位置1为FileSystemEvent

  • Type: TypeAlias

  • Default: Callable[[FileSystemEvent], None]

var FILTER_FUNC

  • Description: 位置1为FileSystemEvent

  • Type: TypeAlias

  • Default: Callable[[FileSystemEvent], bool]


func debounce(wait)

Description: 防抖函数

Source code or View on GitHub
python
def debounce(wait):
+import{_ as i,c as e,o as a,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.dev.observer","description":"","frontmatter":{"title":"liteyuki.dev.observer"},"headers":[],"relativePath":"en/dev/api/dev/observer.md","filePath":"en/dev/api/dev/observer.md","lastUpdated":1725101868000}'),t={name:"en/dev/api/dev/observer.md"};function l(h,s,p,r,k,d){return a(),e("div",null,s[0]||(s[0]=[n(`

Module liteyuki.dev.observer

此模块用于注册观察者函数,使用watchdog监控文件变化并重启bot 启用该模块需要在配置文件中设置dev_mode为True

var CALLBACK_FUNC

  • Description: 位置1为FileSystemEvent

  • Type: TypeAlias

  • Default: Callable[[FileSystemEvent], None]

var FILTER_FUNC

  • Description: 位置1为FileSystemEvent

  • Type: TypeAlias

  • Default: Callable[[FileSystemEvent], bool]


func debounce(wait)

Description: 防抖函数

Source code or View on GitHub
python
def debounce(wait):
 
     def decorator(func):
 
diff --git a/assets/en_dev_api_dev_observer.md.BPkoTdDW.lean.js b/assets/en_dev_api_dev_observer.md.BPkoTdDW.lean.js
new file mode 100644
index 00000000..ea50a6e9
--- /dev/null
+++ b/assets/en_dev_api_dev_observer.md.BPkoTdDW.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as e,o as a,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.dev.observer","description":"","frontmatter":{"title":"liteyuki.dev.observer"},"headers":[],"relativePath":"en/dev/api/dev/observer.md","filePath":"en/dev/api/dev/observer.md","lastUpdated":1725101868000}'),t={name:"en/dev/api/dev/observer.md"};function l(h,s,p,r,k,d){return a(),e("div",null,s[0]||(s[0]=[n("",34)]))}const E=i(t,[["render",l]]);export{c as __pageData,E as default};
diff --git a/assets/en_dev_api_dev_plugin.md.CqTdN1FN.lean.js b/assets/en_dev_api_dev_plugin.md.CqTdN1FN.lean.js
deleted file mode 100644
index 8ccbbf57..00000000
--- a/assets/en_dev_api_dev_plugin.md.CqTdN1FN.lean.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import{_ as s,c as a,a7 as t,o as n}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"liteyuki.dev.plugin","description":"","frontmatter":{"title":"liteyuki.dev.plugin"},"headers":[],"relativePath":"en/dev/api/dev/plugin.md","filePath":"en/dev/api/dev/plugin.md","lastUpdated":1725101868000}'),e={name:"en/dev/api/dev/plugin.md"};function l(p,i,h,k,r,d){return n(),a("div",null,i[0]||(i[0]=[t(`

Module liteyuki.dev.plugin

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

@Time : 2024/8/18 上午5:04 @Author : snowykami @Email : snowykami@outlook.com @File : plugin.py @Software: PyCharm


func run_plugins(*module_path: str | Path)

Description: 运行插件,无需手动初始化bot

Arguments:

  • module_path: 插件路径,参考liteyuki.load_plugin的函数签名
Source code or View on GitHub
python
def run_plugins(*module_path: str | Path):
-    cfg = load_config_in_default()
-    plugins = cfg.get('liteyuki.plugins', [])
-    plugins.extend(module_path)
-    cfg['liteyuki.plugins'] = plugins
-    bot = LiteyukiBot(**cfg)
-    bot.run()
`,9)]))}const g=s(e,[["render",l]]);export{u as __pageData,g as default}; diff --git a/assets/en_dev_api_dev_plugin.md.CqTdN1FN.js b/assets/en_dev_api_dev_plugin.md.D7InLJN7.js similarity index 93% rename from assets/en_dev_api_dev_plugin.md.CqTdN1FN.js rename to assets/en_dev_api_dev_plugin.md.D7InLJN7.js index 8ccbbf57..ff71be0b 100644 --- a/assets/en_dev_api_dev_plugin.md.CqTdN1FN.js +++ b/assets/en_dev_api_dev_plugin.md.D7InLJN7.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,a7 as t,o as n}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"liteyuki.dev.plugin","description":"","frontmatter":{"title":"liteyuki.dev.plugin"},"headers":[],"relativePath":"en/dev/api/dev/plugin.md","filePath":"en/dev/api/dev/plugin.md","lastUpdated":1725101868000}'),e={name:"en/dev/api/dev/plugin.md"};function l(p,i,h,k,r,d){return n(),a("div",null,i[0]||(i[0]=[t(`

Module liteyuki.dev.plugin

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

@Time : 2024/8/18 上午5:04 @Author : snowykami @Email : snowykami@outlook.com @File : plugin.py @Software: PyCharm


func run_plugins(*module_path: str | Path)

Description: 运行插件,无需手动初始化bot

Arguments:

  • module_path: 插件路径,参考liteyuki.load_plugin的函数签名
Source code or View on GitHub
python
def run_plugins(*module_path: str | Path):
+import{_ as s,c as a,o as t,al as n}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki.dev.plugin","description":"","frontmatter":{"title":"liteyuki.dev.plugin"},"headers":[],"relativePath":"en/dev/api/dev/plugin.md","filePath":"en/dev/api/dev/plugin.md","lastUpdated":1725101868000}'),e={name:"en/dev/api/dev/plugin.md"};function l(p,i,h,k,r,d){return t(),a("div",null,i[0]||(i[0]=[n(`

Module liteyuki.dev.plugin

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

@Time : 2024/8/18 上午5:04 @Author : snowykami @Email : snowykami@outlook.com @File : plugin.py @Software: PyCharm


func run_plugins(*module_path: str | Path)

Description: 运行插件,无需手动初始化bot

Arguments:

  • module_path: 插件路径,参考liteyuki.load_plugin的函数签名
Source code or View on GitHub
python
def run_plugins(*module_path: str | Path):
     cfg = load_config_in_default()
     plugins = cfg.get('liteyuki.plugins', [])
     plugins.extend(module_path)
diff --git a/assets/en_dev_api_dev_plugin.md.D7InLJN7.lean.js b/assets/en_dev_api_dev_plugin.md.D7InLJN7.lean.js
new file mode 100644
index 00000000..5bbe83d8
--- /dev/null
+++ b/assets/en_dev_api_dev_plugin.md.D7InLJN7.lean.js
@@ -0,0 +1 @@
+import{_ as s,c as a,o as t,al as n}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki.dev.plugin","description":"","frontmatter":{"title":"liteyuki.dev.plugin"},"headers":[],"relativePath":"en/dev/api/dev/plugin.md","filePath":"en/dev/api/dev/plugin.md","lastUpdated":1725101868000}'),e={name:"en/dev/api/dev/plugin.md"};function l(p,i,h,k,r,d){return t(),a("div",null,i[0]||(i[0]=[n("",9)]))}const g=s(e,[["render",l]]);export{u as __pageData,g as default};
diff --git a/assets/en_dev_api_exception.md.CFRRxHBG.js b/assets/en_dev_api_exception.md.CFRRxHBG.js
deleted file mode 100644
index e1b2d016..00000000
--- a/assets/en_dev_api_exception.md.CFRRxHBG.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as t,c as i,a7 as o,o as a}from"./chunks/framework.v7PlT0Wt.js";const x=JSON.parse('{"title":"liteyuki.exception","description":"","frontmatter":{"title":"liteyuki.exception"},"headers":[],"relativePath":"en/dev/api/exception.md","filePath":"en/dev/api/exception.md","lastUpdated":1725101868000}'),n={name:"en/dev/api/exception.md"};function c(s,e,l,p,r,d){return a(),i("div",null,e[0]||(e[0]=[o('

Module liteyuki.exception

exception模块包含了liteyuki运行中的所有错误

class LiteyukiException(BaseException)

',3)]))}const k=t(n,[["render",c]]);export{x as __pageData,k as default}; diff --git a/assets/en_dev_api_exception.md.CFRRxHBG.lean.js b/assets/en_dev_api_exception.md.CFRRxHBG.lean.js deleted file mode 100644 index e1b2d016..00000000 --- a/assets/en_dev_api_exception.md.CFRRxHBG.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as i,a7 as o,o as a}from"./chunks/framework.v7PlT0Wt.js";const x=JSON.parse('{"title":"liteyuki.exception","description":"","frontmatter":{"title":"liteyuki.exception"},"headers":[],"relativePath":"en/dev/api/exception.md","filePath":"en/dev/api/exception.md","lastUpdated":1725101868000}'),n={name:"en/dev/api/exception.md"};function c(s,e,l,p,r,d){return a(),i("div",null,e[0]||(e[0]=[o('

Module liteyuki.exception

exception模块包含了liteyuki运行中的所有错误

class LiteyukiException(BaseException)

',3)]))}const k=t(n,[["render",c]]);export{x as __pageData,k as default}; diff --git a/assets/en_dev_api_exception.md.Kd_X7tPn.js b/assets/en_dev_api_exception.md.Kd_X7tPn.js new file mode 100644 index 00000000..ced46fd6 --- /dev/null +++ b/assets/en_dev_api_exception.md.Kd_X7tPn.js @@ -0,0 +1 @@ +import{_ as t,c as i,o,al as a}from"./chunks/framework.BUxnStXl.js";const x=JSON.parse('{"title":"liteyuki.exception","description":"","frontmatter":{"title":"liteyuki.exception"},"headers":[],"relativePath":"en/dev/api/exception.md","filePath":"en/dev/api/exception.md","lastUpdated":1725101868000}'),n={name:"en/dev/api/exception.md"};function c(s,e,l,p,r,d){return o(),i("div",null,e[0]||(e[0]=[a('

Module liteyuki.exception

exception模块包含了liteyuki运行中的所有错误

class LiteyukiException(BaseException)

',3)]))}const _=t(n,[["render",c]]);export{x as __pageData,_ as default}; diff --git a/assets/en_dev_api_exception.md.Kd_X7tPn.lean.js b/assets/en_dev_api_exception.md.Kd_X7tPn.lean.js new file mode 100644 index 00000000..b09fbdb2 --- /dev/null +++ b/assets/en_dev_api_exception.md.Kd_X7tPn.lean.js @@ -0,0 +1 @@ +import{_ as t,c as i,o,al as a}from"./chunks/framework.BUxnStXl.js";const x=JSON.parse('{"title":"liteyuki.exception","description":"","frontmatter":{"title":"liteyuki.exception"},"headers":[],"relativePath":"en/dev/api/exception.md","filePath":"en/dev/api/exception.md","lastUpdated":1725101868000}'),n={name:"en/dev/api/exception.md"};function c(s,e,l,p,r,d){return o(),i("div",null,e[0]||(e[0]=[a("",3)]))}const _=t(n,[["render",c]]);export{x as __pageData,_ as default}; diff --git a/assets/en_dev_api_index.md.D0QqgH5J.js b/assets/en_dev_api_index.md.D0QqgH5J.js new file mode 100644 index 00000000..3de38f8f --- /dev/null +++ b/assets/en_dev_api_index.md.D0QqgH5J.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as i,al as o}from"./chunks/framework.BUxnStXl.js";const p=JSON.parse('{"title":"liteyuki API","description":"","frontmatter":{"title":"liteyuki API","collapsed":true,"order":100},"headers":[],"relativePath":"en/dev/api/index.md","filePath":"en/dev/api/index.md","lastUpdated":null}'),r={name:"en/dev/api/index.md"};function l(n,e,d,s,_,u){return i(),a("div",null,e[0]||(e[0]=[o('

Module liteyuki

此模块为liteyuki的框架整体

This module is the overall framework of liteyuki.

var __version__

  • Description: 测试版本号

  • Default: '6.3.10'

',5)]))}const m=t(r,[["render",l]]);export{p as __pageData,m as default}; diff --git a/assets/en_dev_api_index.md.D0QqgH5J.lean.js b/assets/en_dev_api_index.md.D0QqgH5J.lean.js new file mode 100644 index 00000000..f615462a --- /dev/null +++ b/assets/en_dev_api_index.md.D0QqgH5J.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as i,al as o}from"./chunks/framework.BUxnStXl.js";const p=JSON.parse('{"title":"liteyuki API","description":"","frontmatter":{"title":"liteyuki API","collapsed":true,"order":100},"headers":[],"relativePath":"en/dev/api/index.md","filePath":"en/dev/api/index.md","lastUpdated":null}'),r={name:"en/dev/api/index.md"};function l(n,e,d,s,_,u){return i(),a("div",null,e[0]||(e[0]=[o("",5)]))}const m=t(r,[["render",l]]);export{p as __pageData,m as default}; diff --git a/assets/en_dev_api_index.md.DjQyfBIN.js b/assets/en_dev_api_index.md.DjQyfBIN.js deleted file mode 100644 index d4dabae2..00000000 --- a/assets/en_dev_api_index.md.DjQyfBIN.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,a7 as i,o}from"./chunks/framework.v7PlT0Wt.js";const _=JSON.parse('{"title":"liteyuki API","description":"","frontmatter":{"title":"liteyuki API","collapsed":true,"order":100},"headers":[],"relativePath":"en/dev/api/index.md","filePath":"en/dev/api/index.md","lastUpdated":null}'),r={name:"en/dev/api/index.md"};function l(n,e,d,s,u,c){return o(),a("div",null,e[0]||(e[0]=[i('

Module liteyuki

此模块为liteyuki的框架整体

This module is the overall framework of liteyuki.

var __version__

  • Description: 测试版本号

  • Default: '6.3.10'

',5)]))}const m=t(r,[["render",l]]);export{_ as __pageData,m as default}; diff --git a/assets/en_dev_api_index.md.DjQyfBIN.lean.js b/assets/en_dev_api_index.md.DjQyfBIN.lean.js deleted file mode 100644 index d4dabae2..00000000 --- a/assets/en_dev_api_index.md.DjQyfBIN.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,a7 as i,o}from"./chunks/framework.v7PlT0Wt.js";const _=JSON.parse('{"title":"liteyuki API","description":"","frontmatter":{"title":"liteyuki API","collapsed":true,"order":100},"headers":[],"relativePath":"en/dev/api/index.md","filePath":"en/dev/api/index.md","lastUpdated":null}'),r={name:"en/dev/api/index.md"};function l(n,e,d,s,u,c){return o(),a("div",null,e[0]||(e[0]=[i('

Module liteyuki

此模块为liteyuki的框架整体

This module is the overall framework of liteyuki.

var __version__

  • Description: 测试版本号

  • Default: '6.3.10'

',5)]))}const m=t(r,[["render",l]]);export{_ as __pageData,m as default}; diff --git a/assets/en_dev_api_log.md.WqQqRTM2.js b/assets/en_dev_api_log.md.CvWACGo4.js similarity index 98% rename from assets/en_dev_api_log.md.WqQqRTM2.js rename to assets/en_dev_api_log.md.CvWACGo4.js index 1c9b76e1..8ad52671 100644 --- a/assets/en_dev_api_log.md.WqQqRTM2.js +++ b/assets/en_dev_api_log.md.CvWACGo4.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as h,o as k}from"./chunks/framework.v7PlT0Wt.js";const d=JSON.parse('{"title":"liteyuki.log","description":"","frontmatter":{"title":"liteyuki.log"},"headers":[],"relativePath":"en/dev/api/log.md","filePath":"en/dev/api/log.md","lastUpdated":1725101868000}'),l={name:"en/dev/api/log.md"};function t(n,s,p,e,E,r){return k(),a("div",null,s[0]||(s[0]=[h(`

Module liteyuki.log

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

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


func get_format(level: str) -> str

Description: 获取日志格式

Arguments:

  • level: 日志等级
Source code or View on GitHub
python
def get_format(level: str) -> str:
+import{_ as i,c as a,o as h,al as k}from"./chunks/framework.BUxnStXl.js";const d=JSON.parse('{"title":"liteyuki.log","description":"","frontmatter":{"title":"liteyuki.log"},"headers":[],"relativePath":"en/dev/api/log.md","filePath":"en/dev/api/log.md","lastUpdated":1725101868000}'),l={name:"en/dev/api/log.md"};function t(n,s,p,e,E,r){return h(),a("div",null,s[0]||(s[0]=[k(`

Module liteyuki.log

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

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


func get_format(level: str) -> str

Description: 获取日志格式

Arguments:

  • level: 日志等级
Source code or View on GitHub
python
def get_format(level: str) -> str:
     if level == 'DEBUG':
         return debug_format
     else:
diff --git a/assets/en_dev_api_log.md.CvWACGo4.lean.js b/assets/en_dev_api_log.md.CvWACGo4.lean.js
new file mode 100644
index 00000000..05c1dbc3
--- /dev/null
+++ b/assets/en_dev_api_log.md.CvWACGo4.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as h,al as k}from"./chunks/framework.BUxnStXl.js";const d=JSON.parse('{"title":"liteyuki.log","description":"","frontmatter":{"title":"liteyuki.log"},"headers":[],"relativePath":"en/dev/api/log.md","filePath":"en/dev/api/log.md","lastUpdated":1725101868000}'),l={name:"en/dev/api/log.md"};function t(n,s,p,e,E,r){return h(),a("div",null,s[0]||(s[0]=[k("",15)]))}const F=i(l,[["render",t]]);export{d as __pageData,F as default};
diff --git a/assets/en_dev_api_log.md.WqQqRTM2.lean.js b/assets/en_dev_api_log.md.WqQqRTM2.lean.js
deleted file mode 100644
index 1c9b76e1..00000000
--- a/assets/en_dev_api_log.md.WqQqRTM2.lean.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import{_ as i,c as a,a7 as h,o as k}from"./chunks/framework.v7PlT0Wt.js";const d=JSON.parse('{"title":"liteyuki.log","description":"","frontmatter":{"title":"liteyuki.log"},"headers":[],"relativePath":"en/dev/api/log.md","filePath":"en/dev/api/log.md","lastUpdated":1725101868000}'),l={name:"en/dev/api/log.md"};function t(n,s,p,e,E,r){return k(),a("div",null,s[0]||(s[0]=[h(`

Module liteyuki.log

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

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


func get_format(level: str) -> str

Description: 获取日志格式

Arguments:

  • level: 日志等级
Source code or View on GitHub
python
def get_format(level: str) -> str:
-    if level == 'DEBUG':
-        return debug_format
-    else:
-        return default_format

func init_log(config: dict)

Description: 在语言加载完成后执行

Arguments:

  • config: 配置
Source code or View on GitHub
python
def init_log(config: dict):
-    global logger
-    level = config.get('log_level', 'DEBUG')
-    logger.remove()
-    logger.add(sys.stdout, level=level, diagnose=False, format=get_format(level))
-    show_icon = config.get('log_icon', True)
-    logger.level('DEBUG', color='<blue>', icon=f"{('🐛' if show_icon else '')}")
-    logger.level('INFO', color='<normal>', icon=f"{('ℹ️' if show_icon else '')}")
-    logger.level('SUCCESS', color='<green>', icon=f"{('✅' if show_icon else '')}")
-    logger.level('WARNING', color='<yellow>', icon=f"{('⚠️' if show_icon else '')}")
-    logger.level('ERROR', color='<red>', icon=f"{('⭕' if show_icon else '')}")
-    logger.level('CRITICAL', color='<red>', icon=f"{('❌' if show_icon else '')}")
-    logger.level('TRACE', color='<cyan>', icon=f"{('🔍' if show_icon else '')}")
-    logger.bind()
`,15)]))}const F=i(l,[["render",t]]);export{d as __pageData,F as default}; diff --git a/assets/en_dev_api_plugin_index.md.C5QZdPTH.lean.js b/assets/en_dev_api_plugin_index.md.C5QZdPTH.lean.js deleted file mode 100644 index e9cade79..00000000 --- a/assets/en_dev_api_plugin_index.md.C5QZdPTH.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,a7 as s,o as a}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.plugin","description":"","frontmatter":{"title":"liteyuki.plugin","collapsed":true},"headers":[],"relativePath":"en/dev/api/plugin/index.md","filePath":"en/dev/api/plugin/index.md","lastUpdated":null}'),n={name:"en/dev/api/plugin/index.md"};function l(d,i,p,o,r,u){return a(),e("div",null,i[0]||(i[0]=[s('

Module liteyuki.plugin


func get_loaded_plugins() -> dict[str, Plugin]

Description: 获取已加载的插件

Return: dict[str, Plugin]: 插件字典

Source code or View on GitHub
python
def get_loaded_plugins() -> dict[str, Plugin]:\n    return _plugins
',6)]))}const h=t(n,[["render",l]]);export{c as __pageData,h as default}; diff --git a/assets/en_dev_api_plugin_index.md.C5QZdPTH.js b/assets/en_dev_api_plugin_index.md.CzkAgSLI.js similarity index 91% rename from assets/en_dev_api_plugin_index.md.C5QZdPTH.js rename to assets/en_dev_api_plugin_index.md.CzkAgSLI.js index e9cade79..b447f1e7 100644 --- a/assets/en_dev_api_plugin_index.md.C5QZdPTH.js +++ b/assets/en_dev_api_plugin_index.md.CzkAgSLI.js @@ -1 +1 @@ -import{_ as t,c as e,a7 as s,o as a}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.plugin","description":"","frontmatter":{"title":"liteyuki.plugin","collapsed":true},"headers":[],"relativePath":"en/dev/api/plugin/index.md","filePath":"en/dev/api/plugin/index.md","lastUpdated":null}'),n={name:"en/dev/api/plugin/index.md"};function l(d,i,p,o,r,u){return a(),e("div",null,i[0]||(i[0]=[s('

Module liteyuki.plugin


func get_loaded_plugins() -> dict[str, Plugin]

Description: 获取已加载的插件

Return: dict[str, Plugin]: 插件字典

Source code or View on GitHub
python
def get_loaded_plugins() -> dict[str, Plugin]:\n    return _plugins
',6)]))}const h=t(n,[["render",l]]);export{c as __pageData,h as default}; +import{_ as t,c as e,o as s,al as a}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.plugin","description":"","frontmatter":{"title":"liteyuki.plugin","collapsed":true},"headers":[],"relativePath":"en/dev/api/plugin/index.md","filePath":"en/dev/api/plugin/index.md","lastUpdated":null}'),n={name:"en/dev/api/plugin/index.md"};function l(d,i,p,o,r,u){return s(),e("div",null,i[0]||(i[0]=[a('

Module liteyuki.plugin


func get_loaded_plugins() -> dict[str, Plugin]

Description: 获取已加载的插件

Return: dict[str, Plugin]: 插件字典

Source code or View on GitHub
python
def get_loaded_plugins() -> dict[str, Plugin]:\n    return _plugins
',6)]))}const h=t(n,[["render",l]]);export{c as __pageData,h as default}; diff --git a/assets/en_dev_api_plugin_index.md.CzkAgSLI.lean.js b/assets/en_dev_api_plugin_index.md.CzkAgSLI.lean.js new file mode 100644 index 00000000..b8029921 --- /dev/null +++ b/assets/en_dev_api_plugin_index.md.CzkAgSLI.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as s,al as a}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.plugin","description":"","frontmatter":{"title":"liteyuki.plugin","collapsed":true},"headers":[],"relativePath":"en/dev/api/plugin/index.md","filePath":"en/dev/api/plugin/index.md","lastUpdated":null}'),n={name:"en/dev/api/plugin/index.md"};function l(d,i,p,o,r,u){return s(),e("div",null,i[0]||(i[0]=[a("",6)]))}const h=t(n,[["render",l]]);export{c as __pageData,h as default}; diff --git a/assets/en_dev_api_plugin_load.md.CUVhydQs.lean.js b/assets/en_dev_api_plugin_load.md.CUVhydQs.lean.js deleted file mode 100644 index 5150f004..00000000 --- a/assets/en_dev_api_plugin_load.md.CUVhydQs.lean.js +++ /dev/null @@ -1,62 +0,0 @@ -import{_ as l,c as k,a7 as i,j as a,a as n,G as t,w as p,B as e,o as E}from"./chunks/framework.v7PlT0Wt.js";const _=JSON.parse('{"title":"liteyuki.plugin.load","description":"","frontmatter":{"title":"liteyuki.plugin.load"},"headers":[],"relativePath":"en/dev/api/plugin/load.md","filePath":"en/dev/api/plugin/load.md","lastUpdated":1725101868000}'),d={name:"en/dev/api/plugin/load.md"};function r(g,s,y,F,o,u){const h=e("y");return E(),k("div",null,[s[3]||(s[3]=i(`

Module liteyuki.plugin.load

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

@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py @Software: PyCharm


func load_plugin(module_path: str | Path) -> Optional[Plugin]

Description: 加载单个插件,可以是本地插件或是通过 pip 安装的插件。

Arguments:

  • module_path: 插件名称 path.to.your.plugin
  • 或插件路径 pathlib.Path(path/to/your/plugin):
Source code or View on GitHub
python
def load_plugin(module_path: str | Path) -> Optional[Plugin]:
-    module_path = path_to_module_name(Path(module_path)) if isinstance(module_path, Path) else module_path
-    try:
-        module = import_module(module_path)
-        _plugins[module.__name__] = Plugin(name=module.__name__, module=module, module_name=module_path)
-        if module.__dict__.get('__plugin_metadata__', None):
-            metadata: 'PluginMetadata' = module.__dict__['__plugin_metadata__']
-            display_name = module.__name__.split('.')[-1]
-        elif module.__dict__.get('__liteyuki_plugin_meta__', None):
-            metadata: 'PluginMetadata' = module.__dict__['__liteyuki_plugin_meta__']
-            display_name = format_display_name(f"{metadata.name}({module.__name__.split('.')[-1]})", metadata.type)
-        elif module.__dict__.get('__plugin_meta__', None):
-            metadata: 'PluginMetadata' = module.__dict__['__plugin_meta__']
-            display_name = format_display_name(f"{metadata.name}({module.__name__.split('.')[-1]})", metadata.type)
-        else:
-            logger.opt(colors=True).warning(f'The metadata of Liteyuki plugin "{module.__name__}" is not specified, use empty.')
-            metadata = PluginMetadata(name=module.__name__)
-            display_name = module.__name__.split('.')[-1]
-        _plugins[module.__name__].metadata = metadata
-        logger.opt(colors=True).success(f'Succeeded to load liteyuki plugin "{display_name}"')
-        return _plugins[module.__name__]
-    except Exception as e:
-        logger.opt(colors=True).success(f'Failed to load liteyuki plugin "<r>{module_path}</r>"')
-        traceback.print_exc()
-        return None

func load_plugins(*plugin_dir: str, *, ignore_warning: bool = True) -> set[Plugin]

Description: 导入文件夹下多个插件

Arguments:

  • plugin_dir: 文件夹路径
  • ignore_warning: 是否忽略警告,通常是目录不存在或目录为空
Source code or View on GitHub
python
def load_plugins(*plugin_dir: str, ignore_warning: bool=True) -> set[Plugin]:
-    plugins = set()
-    for dir_path in plugin_dir:
-        if not os.path.exists(dir_path):
-            if not ignore_warning:
-                logger.warning(f"Plugins dir '{dir_path}' does not exist.")
-            continue
-        if not os.listdir(dir_path):
-            if not ignore_warning:
-                logger.warning(f"Plugins dir '{dir_path}' is empty.")
-            continue
-        if not os.path.isdir(dir_path):
-            if not ignore_warning:
-                logger.warning(f"Plugins dir '{dir_path}' is not a directory.")
-            continue
-        for f in os.listdir(dir_path):
-            path = Path(os.path.join(dir_path, f))
-            module_name = None
-            if os.path.isfile(path) and f.endswith('.py') and (f != '__init__.py'):
-                module_name = f'{path_to_module_name(Path(dir_path))}.{f[:-3]}'
-            elif os.path.isdir(path) and os.path.exists(os.path.join(path, '__init__.py')):
-                module_name = path_to_module_name(path)
-            if module_name:
-                load_plugin(module_name)
-                if _plugins.get(module_name):
-                    plugins.add(_plugins[module_name])
-    return plugins

func format_display_name(display_name: str, plugin_type: PluginType) -> str

Description: 设置插件名称颜色,根据不同类型插件设置颜色

Arguments:

  • display_name: 插件名称
  • plugin_type: 插件类型
`,20)),a("p",null,[s[1]||(s[1]=a("strong",null,"Return",-1)),s[2]||(s[2]=n(": str: 设置后的插件名称 ")),t(h,null,{default:p(()=>s[0]||(s[0]=[n("name")])),_:1})]),s[4]||(s[4]=i(`
Source code or View on GitHub
python
def format_display_name(display_name: str, plugin_type: PluginType) -> str:
-    color = 'y'
-    match plugin_type:
-        case PluginType.APPLICATION:
-            color = 'm'
-        case PluginType.TEST:
-            color = 'g'
-        case PluginType.MODULE:
-            color = 'e'
-        case PluginType.SERVICE:
-            color = 'c'
-    return f'<{color}>{display_name} [{plugin_type.name}]</{color}>'
`,1))])}const c=l(d,[["render",r]]);export{_ as __pageData,c as default}; diff --git a/assets/en_dev_api_plugin_load.md.CUVhydQs.js b/assets/en_dev_api_plugin_load.md.lnuEXY4W.js similarity index 98% rename from assets/en_dev_api_plugin_load.md.CUVhydQs.js rename to assets/en_dev_api_plugin_load.md.lnuEXY4W.js index 5150f004..c2652fde 100644 --- a/assets/en_dev_api_plugin_load.md.CUVhydQs.js +++ b/assets/en_dev_api_plugin_load.md.lnuEXY4W.js @@ -1,4 +1,4 @@ -import{_ as l,c as k,a7 as i,j as a,a as n,G as t,w as p,B as e,o as E}from"./chunks/framework.v7PlT0Wt.js";const _=JSON.parse('{"title":"liteyuki.plugin.load","description":"","frontmatter":{"title":"liteyuki.plugin.load"},"headers":[],"relativePath":"en/dev/api/plugin/load.md","filePath":"en/dev/api/plugin/load.md","lastUpdated":1725101868000}'),d={name:"en/dev/api/plugin/load.md"};function r(g,s,y,F,o,u){const h=e("y");return E(),k("div",null,[s[3]||(s[3]=i(`

Module liteyuki.plugin.load

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

@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py @Software: PyCharm


func load_plugin(module_path: str | Path) -> Optional[Plugin]

Description: 加载单个插件,可以是本地插件或是通过 pip 安装的插件。

Arguments:

  • module_path: 插件名称 path.to.your.plugin
  • 或插件路径 pathlib.Path(path/to/your/plugin):
Source code or View on GitHub
python
def load_plugin(module_path: str | Path) -> Optional[Plugin]:
+import{_ as l,C as k,c as t,o as p,al as i,j as a,a as n,G as e,w as E}from"./chunks/framework.BUxnStXl.js";const C=JSON.parse('{"title":"liteyuki.plugin.load","description":"","frontmatter":{"title":"liteyuki.plugin.load"},"headers":[],"relativePath":"en/dev/api/plugin/load.md","filePath":"en/dev/api/plugin/load.md","lastUpdated":1725101868000}'),d={name:"en/dev/api/plugin/load.md"};function r(g,s,y,F,o,u){const h=k("y");return p(),t("div",null,[s[3]||(s[3]=i(`

Module liteyuki.plugin.load

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

@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py @Software: PyCharm


func load_plugin(module_path: str | Path) -> Optional[Plugin]

Description: 加载单个插件,可以是本地插件或是通过 pip 安装的插件。

Arguments:

  • module_path: 插件名称 path.to.your.plugin
  • 或插件路径 pathlib.Path(path/to/your/plugin):
Source code or View on GitHub
python
def load_plugin(module_path: str | Path) -> Optional[Plugin]:
     module_path = path_to_module_name(Path(module_path)) if isinstance(module_path, Path) else module_path
     try:
         module = import_module(module_path)
@@ -48,7 +48,7 @@ import{_ as l,c as k,a7 as i,j as a,a as n,G as t,w as p,B as e,o as E}from"./ch
                 load_plugin(module_name)
                 if _plugins.get(module_name):
                     plugins.add(_plugins[module_name])
-    return plugins

func format_display_name(display_name: str, plugin_type: PluginType) -> str

Description: 设置插件名称颜色,根据不同类型插件设置颜色

Arguments:

  • display_name: 插件名称
  • plugin_type: 插件类型
`,20)),a("p",null,[s[1]||(s[1]=a("strong",null,"Return",-1)),s[2]||(s[2]=n(": str: 设置后的插件名称 ")),t(h,null,{default:p(()=>s[0]||(s[0]=[n("name")])),_:1})]),s[4]||(s[4]=i(`
Source code or View on GitHub
python
def format_display_name(display_name: str, plugin_type: PluginType) -> str:
+    return plugins

func format_display_name(display_name: str, plugin_type: PluginType) -> str

Description: 设置插件名称颜色,根据不同类型插件设置颜色

Arguments:

  • display_name: 插件名称
  • plugin_type: 插件类型
`,20)),a("p",null,[s[1]||(s[1]=a("strong",null,"Return",-1)),s[2]||(s[2]=n(": str: 设置后的插件名称 ")),e(h,null,{default:E(()=>s[0]||(s[0]=[n("name")])),_:1})]),s[4]||(s[4]=i(`
Source code or View on GitHub
python
def format_display_name(display_name: str, plugin_type: PluginType) -> str:
     color = 'y'
     match plugin_type:
         case PluginType.APPLICATION:
@@ -59,4 +59,4 @@ import{_ as l,c as k,a7 as i,j as a,a as n,G as t,w as p,B as e,o as E}from"./ch
             color = 'e'
         case PluginType.SERVICE:
             color = 'c'
-    return f'<{color}>{display_name} [{plugin_type.name}]</{color}>'
`,1))])}const c=l(d,[["render",r]]);export{_ as __pageData,c as default}; + return f'<{color}>{display_name} [{plugin_type.name}]</{color}>'
`,1))])}const c=l(d,[["render",r]]);export{C as __pageData,c as default}; diff --git a/assets/en_dev_api_plugin_load.md.lnuEXY4W.lean.js b/assets/en_dev_api_plugin_load.md.lnuEXY4W.lean.js new file mode 100644 index 00000000..a5b2c4e0 --- /dev/null +++ b/assets/en_dev_api_plugin_load.md.lnuEXY4W.lean.js @@ -0,0 +1 @@ +import{_ as l,C as k,c as t,o as p,al as i,j as a,a as n,G as e,w as E}from"./chunks/framework.BUxnStXl.js";const C=JSON.parse('{"title":"liteyuki.plugin.load","description":"","frontmatter":{"title":"liteyuki.plugin.load"},"headers":[],"relativePath":"en/dev/api/plugin/load.md","filePath":"en/dev/api/plugin/load.md","lastUpdated":1725101868000}'),d={name:"en/dev/api/plugin/load.md"};function r(g,s,y,F,o,u){const h=k("y");return p(),t("div",null,[s[3]||(s[3]=i("",20)),a("p",null,[s[1]||(s[1]=a("strong",null,"Return",-1)),s[2]||(s[2]=n(": str: 设置后的插件名称 ")),e(h,null,{default:E(()=>s[0]||(s[0]=[n("name")])),_:1})]),s[4]||(s[4]=i("",1))])}const c=l(d,[["render",r]]);export{C as __pageData,c as default}; diff --git a/assets/en_dev_api_plugin_manager.md.7EwFZ4RG.js b/assets/en_dev_api_plugin_manager.md.aR11rqTj.js similarity index 88% rename from assets/en_dev_api_plugin_manager.md.7EwFZ4RG.js rename to assets/en_dev_api_plugin_manager.md.aR11rqTj.js index 79068def..0aaec494 100644 --- a/assets/en_dev_api_plugin_manager.md.7EwFZ4RG.js +++ b/assets/en_dev_api_plugin_manager.md.aR11rqTj.js @@ -1 +1 @@ -import{_ as t,c as i,j as e,a,o as l}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.plugin.manager","description":"","frontmatter":{"title":"liteyuki.plugin.manager"},"headers":[],"relativePath":"en/dev/api/plugin/manager.md","filePath":"en/dev/api/plugin/manager.md","lastUpdated":1725101868000}'),r={name:"en/dev/api/plugin/manager.md"};function o(u,n,m,p,s,d){return l(),i("div",null,n[0]||(n[0]=[e("h1",{id:"module-liteyuki-plugin-manager",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.plugin.manager"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-plugin-manager","aria-label":'Permalink to "**Module** `liteyuki.plugin.manager`"'},"​")],-1),e("p",null,"Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved",-1),e("p",null,[a("@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : "),e("a",{href:"mailto:snowykami@outlook.com",target:"_blank",rel:"noreferrer"},"snowykami@outlook.com"),a(" @File : manager.py @Software: PyCharm")],-1)]))}const k=t(r,[["render",o]]);export{c as __pageData,k as default}; +import{_ as t,c as i,o as l,j as e,a}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.plugin.manager","description":"","frontmatter":{"title":"liteyuki.plugin.manager"},"headers":[],"relativePath":"en/dev/api/plugin/manager.md","filePath":"en/dev/api/plugin/manager.md","lastUpdated":1725101868000}'),r={name:"en/dev/api/plugin/manager.md"};function o(u,n,m,p,s,d){return l(),i("div",null,n[0]||(n[0]=[e("h1",{id:"module-liteyuki-plugin-manager",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.plugin.manager"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-plugin-manager","aria-label":'Permalink to "**Module** `liteyuki.plugin.manager`"'},"​")],-1),e("p",null,"Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved",-1),e("p",null,[a("@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : "),e("a",{href:"mailto:snowykami@outlook.com",target:"_blank",rel:"noreferrer"},"snowykami@outlook.com"),a(" @File : manager.py @Software: PyCharm")],-1)]))}const k=t(r,[["render",o]]);export{c as __pageData,k as default}; diff --git a/assets/en_dev_api_plugin_manager.md.7EwFZ4RG.lean.js b/assets/en_dev_api_plugin_manager.md.aR11rqTj.lean.js similarity index 88% rename from assets/en_dev_api_plugin_manager.md.7EwFZ4RG.lean.js rename to assets/en_dev_api_plugin_manager.md.aR11rqTj.lean.js index 79068def..0aaec494 100644 --- a/assets/en_dev_api_plugin_manager.md.7EwFZ4RG.lean.js +++ b/assets/en_dev_api_plugin_manager.md.aR11rqTj.lean.js @@ -1 +1 @@ -import{_ as t,c as i,j as e,a,o as l}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.plugin.manager","description":"","frontmatter":{"title":"liteyuki.plugin.manager"},"headers":[],"relativePath":"en/dev/api/plugin/manager.md","filePath":"en/dev/api/plugin/manager.md","lastUpdated":1725101868000}'),r={name:"en/dev/api/plugin/manager.md"};function o(u,n,m,p,s,d){return l(),i("div",null,n[0]||(n[0]=[e("h1",{id:"module-liteyuki-plugin-manager",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.plugin.manager"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-plugin-manager","aria-label":'Permalink to "**Module** `liteyuki.plugin.manager`"'},"​")],-1),e("p",null,"Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved",-1),e("p",null,[a("@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : "),e("a",{href:"mailto:snowykami@outlook.com",target:"_blank",rel:"noreferrer"},"snowykami@outlook.com"),a(" @File : manager.py @Software: PyCharm")],-1)]))}const k=t(r,[["render",o]]);export{c as __pageData,k as default}; +import{_ as t,c as i,o as l,j as e,a}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.plugin.manager","description":"","frontmatter":{"title":"liteyuki.plugin.manager"},"headers":[],"relativePath":"en/dev/api/plugin/manager.md","filePath":"en/dev/api/plugin/manager.md","lastUpdated":1725101868000}'),r={name:"en/dev/api/plugin/manager.md"};function o(u,n,m,p,s,d){return l(),i("div",null,n[0]||(n[0]=[e("h1",{id:"module-liteyuki-plugin-manager",tabindex:"-1"},[e("strong",null,"Module"),a(),e("code",null,"liteyuki.plugin.manager"),a(),e("a",{class:"header-anchor",href:"#module-liteyuki-plugin-manager","aria-label":'Permalink to "**Module** `liteyuki.plugin.manager`"'},"​")],-1),e("p",null,"Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved",-1),e("p",null,[a("@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : "),e("a",{href:"mailto:snowykami@outlook.com",target:"_blank",rel:"noreferrer"},"snowykami@outlook.com"),a(" @File : manager.py @Software: PyCharm")],-1)]))}const k=t(r,[["render",o]]);export{c as __pageData,k as default}; diff --git a/assets/en_dev_api_plugin_model.md.BtKMMEeQ.js b/assets/en_dev_api_plugin_model.md.BtKMMEeQ.js new file mode 100644 index 00000000..039696e5 --- /dev/null +++ b/assets/en_dev_api_plugin_model.md.BtKMMEeQ.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as r,al as o}from"./chunks/framework.BUxnStXl.js";const m=JSON.parse('{"title":"liteyuki.plugin.model","description":"","frontmatter":{"title":"liteyuki.plugin.model"},"headers":[],"relativePath":"en/dev/api/plugin/model.md","filePath":"en/dev/api/plugin/model.md","lastUpdated":1725101868000}'),s={name:"en/dev/api/plugin/model.md"};function i(l,a,n,d,h,u){return r(),t("div",null,a[0]||(a[0]=[o('

Module 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)


func hash self

Source code or View on GitHub
python
def __hash__(self):\n    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

',26)]))}const p=e(s,[["render",i]]);export{m as __pageData,p as default}; diff --git a/assets/en_dev_api_plugin_model.md.BtKMMEeQ.lean.js b/assets/en_dev_api_plugin_model.md.BtKMMEeQ.lean.js new file mode 100644 index 00000000..736d9b49 --- /dev/null +++ b/assets/en_dev_api_plugin_model.md.BtKMMEeQ.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as r,al as o}from"./chunks/framework.BUxnStXl.js";const m=JSON.parse('{"title":"liteyuki.plugin.model","description":"","frontmatter":{"title":"liteyuki.plugin.model"},"headers":[],"relativePath":"en/dev/api/plugin/model.md","filePath":"en/dev/api/plugin/model.md","lastUpdated":1725101868000}'),s={name:"en/dev/api/plugin/model.md"};function i(l,a,n,d,h,u){return r(),t("div",null,a[0]||(a[0]=[o("",26)]))}const p=e(s,[["render",i]]);export{m as __pageData,p as default}; diff --git a/assets/en_dev_api_plugin_model.md.DdvvcqBN.js b/assets/en_dev_api_plugin_model.md.DdvvcqBN.js deleted file mode 100644 index dbe27e92..00000000 --- a/assets/en_dev_api_plugin_model.md.DdvvcqBN.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,a7 as r,o}from"./chunks/framework.v7PlT0Wt.js";const m=JSON.parse('{"title":"liteyuki.plugin.model","description":"","frontmatter":{"title":"liteyuki.plugin.model"},"headers":[],"relativePath":"en/dev/api/plugin/model.md","filePath":"en/dev/api/plugin/model.md","lastUpdated":1725101868000}'),s={name:"en/dev/api/plugin/model.md"};function i(l,a,n,d,h,u){return o(),t("div",null,a[0]||(a[0]=[r('

Module 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)


func hash self

Source code or View on GitHub
python
def __hash__(self):\n    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

',26)]))}const p=e(s,[["render",i]]);export{m as __pageData,p as default}; diff --git a/assets/en_dev_api_plugin_model.md.DdvvcqBN.lean.js b/assets/en_dev_api_plugin_model.md.DdvvcqBN.lean.js deleted file mode 100644 index dbe27e92..00000000 --- a/assets/en_dev_api_plugin_model.md.DdvvcqBN.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,a7 as r,o}from"./chunks/framework.v7PlT0Wt.js";const m=JSON.parse('{"title":"liteyuki.plugin.model","description":"","frontmatter":{"title":"liteyuki.plugin.model"},"headers":[],"relativePath":"en/dev/api/plugin/model.md","filePath":"en/dev/api/plugin/model.md","lastUpdated":1725101868000}'),s={name:"en/dev/api/plugin/model.md"};function i(l,a,n,d,h,u){return o(),t("div",null,a[0]||(a[0]=[r('

Module 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)


func hash self

Source code or View on GitHub
python
def __hash__(self):\n    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

',26)]))}const p=e(s,[["render",i]]);export{m as __pageData,p as default}; diff --git a/assets/en_dev_api_plugins_index.md.D2Tiy6ZF.js b/assets/en_dev_api_plugins_index.md.mKXV75h2.js similarity index 85% rename from assets/en_dev_api_plugins_index.md.D2Tiy6ZF.js rename to assets/en_dev_api_plugins_index.md.mKXV75h2.js index fe83d8b5..3f959cbd 100644 --- a/assets/en_dev_api_plugins_index.md.D2Tiy6ZF.js +++ b/assets/en_dev_api_plugins_index.md.mKXV75h2.js @@ -1 +1 @@ -import{_ as t,c as n,j as e,a as l,o as a}from"./chunks/framework.v7PlT0Wt.js";const m=JSON.parse('{"title":"liteyuki.plugins","description":"","frontmatter":{"title":"liteyuki.plugins","collapsed":true},"headers":[],"relativePath":"en/dev/api/plugins/index.md","filePath":"en/dev/api/plugins/index.md","lastUpdated":null}'),s={name:"en/dev/api/plugins/index.md"};function u(d,i,o,r,p,c){return a(),n("div",null,i[0]||(i[0]=[e("h1",{id:"module-liteyuki-plugins",tabindex:"-1"},[e("strong",null,"Module"),l(),e("code",null,"liteyuki.plugins"),l(),e("a",{class:"header-anchor",href:"#module-liteyuki-plugins","aria-label":'Permalink to "**Module** `liteyuki.plugins`"'},"​")],-1),e("p",null,"此模块为内置插件文件夹,用于存放内置插件。 This module is the built-in plugin folder, used to store built-in plugins.",-1)]))}const f=t(s,[["render",u]]);export{m as __pageData,f as default}; +import{_ as t,c as n,o as a,j as e,a as l}from"./chunks/framework.BUxnStXl.js";const m=JSON.parse('{"title":"liteyuki.plugins","description":"","frontmatter":{"title":"liteyuki.plugins","collapsed":true},"headers":[],"relativePath":"en/dev/api/plugins/index.md","filePath":"en/dev/api/plugins/index.md","lastUpdated":null}'),s={name:"en/dev/api/plugins/index.md"};function u(d,i,o,r,p,c){return a(),n("div",null,i[0]||(i[0]=[e("h1",{id:"module-liteyuki-plugins",tabindex:"-1"},[e("strong",null,"Module"),l(),e("code",null,"liteyuki.plugins"),l(),e("a",{class:"header-anchor",href:"#module-liteyuki-plugins","aria-label":'Permalink to "**Module** `liteyuki.plugins`"'},"​")],-1),e("p",null,"此模块为内置插件文件夹,用于存放内置插件。 This module is the built-in plugin folder, used to store built-in plugins.",-1)]))}const f=t(s,[["render",u]]);export{m as __pageData,f as default}; diff --git a/assets/en_dev_api_plugins_index.md.D2Tiy6ZF.lean.js b/assets/en_dev_api_plugins_index.md.mKXV75h2.lean.js similarity index 85% rename from assets/en_dev_api_plugins_index.md.D2Tiy6ZF.lean.js rename to assets/en_dev_api_plugins_index.md.mKXV75h2.lean.js index fe83d8b5..3f959cbd 100644 --- a/assets/en_dev_api_plugins_index.md.D2Tiy6ZF.lean.js +++ b/assets/en_dev_api_plugins_index.md.mKXV75h2.lean.js @@ -1 +1 @@ -import{_ as t,c as n,j as e,a as l,o as a}from"./chunks/framework.v7PlT0Wt.js";const m=JSON.parse('{"title":"liteyuki.plugins","description":"","frontmatter":{"title":"liteyuki.plugins","collapsed":true},"headers":[],"relativePath":"en/dev/api/plugins/index.md","filePath":"en/dev/api/plugins/index.md","lastUpdated":null}'),s={name:"en/dev/api/plugins/index.md"};function u(d,i,o,r,p,c){return a(),n("div",null,i[0]||(i[0]=[e("h1",{id:"module-liteyuki-plugins",tabindex:"-1"},[e("strong",null,"Module"),l(),e("code",null,"liteyuki.plugins"),l(),e("a",{class:"header-anchor",href:"#module-liteyuki-plugins","aria-label":'Permalink to "**Module** `liteyuki.plugins`"'},"​")],-1),e("p",null,"此模块为内置插件文件夹,用于存放内置插件。 This module is the built-in plugin folder, used to store built-in plugins.",-1)]))}const f=t(s,[["render",u]]);export{m as __pageData,f as default}; +import{_ as t,c as n,o as a,j as e,a as l}from"./chunks/framework.BUxnStXl.js";const m=JSON.parse('{"title":"liteyuki.plugins","description":"","frontmatter":{"title":"liteyuki.plugins","collapsed":true},"headers":[],"relativePath":"en/dev/api/plugins/index.md","filePath":"en/dev/api/plugins/index.md","lastUpdated":null}'),s={name:"en/dev/api/plugins/index.md"};function u(d,i,o,r,p,c){return a(),n("div",null,i[0]||(i[0]=[e("h1",{id:"module-liteyuki-plugins",tabindex:"-1"},[e("strong",null,"Module"),l(),e("code",null,"liteyuki.plugins"),l(),e("a",{class:"header-anchor",href:"#module-liteyuki-plugins","aria-label":'Permalink to "**Module** `liteyuki.plugins`"'},"​")],-1),e("p",null,"此模块为内置插件文件夹,用于存放内置插件。 This module is the built-in plugin folder, used to store built-in plugins.",-1)]))}const f=t(s,[["render",u]]);export{m as __pageData,f as default}; diff --git a/assets/en_dev_api_plugins_liteecho.md.B8CO7WbT.lean.js b/assets/en_dev_api_plugins_liteecho.md.B8CO7WbT.lean.js deleted file mode 100644 index 82786534..00000000 --- a/assets/en_dev_api_plugins_liteecho.md.B8CO7WbT.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as s,a7 as t,o as a}from"./chunks/framework.v7PlT0Wt.js";const d=JSON.parse('{"title":"liteyuki.plugins.liteecho","description":"","frontmatter":{"title":"liteyuki.plugins.liteecho"},"headers":[],"relativePath":"en/dev/api/plugins/liteecho.md","filePath":"en/dev/api/plugins/liteecho.md","lastUpdated":1725101868000}'),l={name:"en/dev/api/plugins/liteecho.md"};function n(h,e,o,p,r,k){return a(),s("div",null,e[0]||(e[0]=[t('

Module 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 func liteecho(event: MessageEvent)

Source code or View on GitHub
python
@on_startswith(['liteecho'], rule=is_su_rule).handle()\nasync def liteecho(event: MessageEvent):\n    event.reply(event.raw_message.strip()[8:].strip())
',7)]))}const u=i(l,[["render",n]]);export{d as __pageData,u as default}; diff --git a/assets/en_dev_api_plugins_liteecho.md.B8CO7WbT.js b/assets/en_dev_api_plugins_liteecho.md.CbFj5eaD.js similarity index 93% rename from assets/en_dev_api_plugins_liteecho.md.B8CO7WbT.js rename to assets/en_dev_api_plugins_liteecho.md.CbFj5eaD.js index 82786534..1dae7d20 100644 --- a/assets/en_dev_api_plugins_liteecho.md.B8CO7WbT.js +++ b/assets/en_dev_api_plugins_liteecho.md.CbFj5eaD.js @@ -1 +1 @@ -import{_ as i,c as s,a7 as t,o as a}from"./chunks/framework.v7PlT0Wt.js";const d=JSON.parse('{"title":"liteyuki.plugins.liteecho","description":"","frontmatter":{"title":"liteyuki.plugins.liteecho"},"headers":[],"relativePath":"en/dev/api/plugins/liteecho.md","filePath":"en/dev/api/plugins/liteecho.md","lastUpdated":1725101868000}'),l={name:"en/dev/api/plugins/liteecho.md"};function n(h,e,o,p,r,k){return a(),s("div",null,e[0]||(e[0]=[t('

Module 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 func liteecho(event: MessageEvent)

Source code or View on GitHub
python
@on_startswith(['liteecho'], rule=is_su_rule).handle()\nasync def liteecho(event: MessageEvent):\n    event.reply(event.raw_message.strip()[8:].strip())
',7)]))}const u=i(l,[["render",n]]);export{d as __pageData,u as default}; +import{_ as i,c as s,o as t,al as a}from"./chunks/framework.BUxnStXl.js";const d=JSON.parse('{"title":"liteyuki.plugins.liteecho","description":"","frontmatter":{"title":"liteyuki.plugins.liteecho"},"headers":[],"relativePath":"en/dev/api/plugins/liteecho.md","filePath":"en/dev/api/plugins/liteecho.md","lastUpdated":1725101868000}'),l={name:"en/dev/api/plugins/liteecho.md"};function n(h,e,o,p,r,k){return t(),s("div",null,e[0]||(e[0]=[a('

Module 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 func liteecho(event: MessageEvent)

Source code or View on GitHub
python
@on_startswith(['liteecho'], rule=is_su_rule).handle()\nasync def liteecho(event: MessageEvent):\n    event.reply(event.raw_message.strip()[8:].strip())
',7)]))}const u=i(l,[["render",n]]);export{d as __pageData,u as default}; diff --git a/assets/en_dev_api_plugins_liteecho.md.CbFj5eaD.lean.js b/assets/en_dev_api_plugins_liteecho.md.CbFj5eaD.lean.js new file mode 100644 index 00000000..e3ec71cf --- /dev/null +++ b/assets/en_dev_api_plugins_liteecho.md.CbFj5eaD.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as t,al as a}from"./chunks/framework.BUxnStXl.js";const d=JSON.parse('{"title":"liteyuki.plugins.liteecho","description":"","frontmatter":{"title":"liteyuki.plugins.liteecho"},"headers":[],"relativePath":"en/dev/api/plugins/liteecho.md","filePath":"en/dev/api/plugins/liteecho.md","lastUpdated":1725101868000}'),l={name:"en/dev/api/plugins/liteecho.md"};function n(h,e,o,p,r,k){return t(),s("div",null,e[0]||(e[0]=[a("",7)]))}const u=i(l,[["render",n]]);export{d as __pageData,u as default}; diff --git a/assets/en_dev_api_plugins_plugin_loader_index.md.DvH6ajsD.js b/assets/en_dev_api_plugins_plugin_loader_index.md.Aahbq4rp.js similarity index 94% rename from assets/en_dev_api_plugins_plugin_loader_index.md.DvH6ajsD.js rename to assets/en_dev_api_plugins_plugin_loader_index.md.Aahbq4rp.js index a50ea5b6..b03ba25b 100644 --- a/assets/en_dev_api_plugins_plugin_loader_index.md.DvH6ajsD.js +++ b/assets/en_dev_api_plugins_plugin_loader_index.md.Aahbq4rp.js @@ -1 +1 @@ -import{_ as s,c as a,a7 as l,o as e}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"liteyuki.plugins.plugin_loader","description":"","frontmatter":{"title":"liteyuki.plugins.plugin_loader","collapsed":true},"headers":[],"relativePath":"en/dev/api/plugins/plugin_loader/index.md","filePath":"en/dev/api/plugins/plugin_loader/index.md","lastUpdated":null}'),n={name:"en/dev/api/plugins/plugin_loader/index.md"};function t(p,i,r,o,d,h){return e(),a("div",null,i[0]||(i[0]=[l('

Module liteyuki.plugins.plugin_loader

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

@Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File : init.py.py @Software: PyCharm


func default_plugins_loader()

Description: 默认插件加载器,应在初始化时调用

Source code or View on GitHub
python
def default_plugins_loader():\n    for plugin in get_config('liteyuki.plugins', []):\n        load_plugin(plugin)\n    for plugin_dir in get_config('liteyuki.plugin_dirs', ['src/liteyuki_plugins']):\n        load_plugins(plugin_dir)
',7)]))}const g=s(n,[["render",t]]);export{k as __pageData,g as default}; +import{_ as s,c as a,o as l,al as e}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"liteyuki.plugins.plugin_loader","description":"","frontmatter":{"title":"liteyuki.plugins.plugin_loader","collapsed":true},"headers":[],"relativePath":"en/dev/api/plugins/plugin_loader/index.md","filePath":"en/dev/api/plugins/plugin_loader/index.md","lastUpdated":null}'),n={name:"en/dev/api/plugins/plugin_loader/index.md"};function t(p,i,r,o,d,h){return l(),a("div",null,i[0]||(i[0]=[e('

Module liteyuki.plugins.plugin_loader

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

@Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File : init.py.py @Software: PyCharm


func default_plugins_loader()

Description: 默认插件加载器,应在初始化时调用

Source code or View on GitHub
python
def default_plugins_loader():\n    for plugin in get_config('liteyuki.plugins', []):\n        load_plugin(plugin)\n    for plugin_dir in get_config('liteyuki.plugin_dirs', ['src/liteyuki_plugins']):\n        load_plugins(plugin_dir)
',7)]))}const g=s(n,[["render",t]]);export{k as __pageData,g as default}; diff --git a/assets/en_dev_api_plugins_plugin_loader_index.md.Aahbq4rp.lean.js b/assets/en_dev_api_plugins_plugin_loader_index.md.Aahbq4rp.lean.js new file mode 100644 index 00000000..57724521 --- /dev/null +++ b/assets/en_dev_api_plugins_plugin_loader_index.md.Aahbq4rp.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as l,al as e}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"liteyuki.plugins.plugin_loader","description":"","frontmatter":{"title":"liteyuki.plugins.plugin_loader","collapsed":true},"headers":[],"relativePath":"en/dev/api/plugins/plugin_loader/index.md","filePath":"en/dev/api/plugins/plugin_loader/index.md","lastUpdated":null}'),n={name:"en/dev/api/plugins/plugin_loader/index.md"};function t(p,i,r,o,d,h){return l(),a("div",null,i[0]||(i[0]=[e("",7)]))}const g=s(n,[["render",t]]);export{k as __pageData,g as default}; diff --git a/assets/en_dev_api_plugins_plugin_loader_index.md.DvH6ajsD.lean.js b/assets/en_dev_api_plugins_plugin_loader_index.md.DvH6ajsD.lean.js deleted file mode 100644 index a50ea5b6..00000000 --- a/assets/en_dev_api_plugins_plugin_loader_index.md.DvH6ajsD.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,a7 as l,o as e}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"liteyuki.plugins.plugin_loader","description":"","frontmatter":{"title":"liteyuki.plugins.plugin_loader","collapsed":true},"headers":[],"relativePath":"en/dev/api/plugins/plugin_loader/index.md","filePath":"en/dev/api/plugins/plugin_loader/index.md","lastUpdated":null}'),n={name:"en/dev/api/plugins/plugin_loader/index.md"};function t(p,i,r,o,d,h){return e(),a("div",null,i[0]||(i[0]=[l('

Module liteyuki.plugins.plugin_loader

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

@Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File : init.py.py @Software: PyCharm


func default_plugins_loader()

Description: 默认插件加载器,应在初始化时调用

Source code or View on GitHub
python
def default_plugins_loader():\n    for plugin in get_config('liteyuki.plugins', []):\n        load_plugin(plugin)\n    for plugin_dir in get_config('liteyuki.plugin_dirs', ['src/liteyuki_plugins']):\n        load_plugins(plugin_dir)
',7)]))}const g=s(n,[["render",t]]);export{k as __pageData,g as default}; diff --git a/assets/en_dev_api_session_event.md.D3Th-LcY.js b/assets/en_dev_api_session_event.md.Cijk-LGh.js similarity index 98% rename from assets/en_dev_api_session_event.md.D3Th-LcY.js rename to assets/en_dev_api_session_event.md.Cijk-LGh.js index 1dc38b8b..54c0bf54 100644 --- a/assets/en_dev_api_session_event.md.D3Th-LcY.js +++ b/assets/en_dev_api_session_event.md.Cijk-LGh.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as e,o as t}from"./chunks/framework.v7PlT0Wt.js";const g=JSON.parse('{"title":"liteyuki.session.event","description":"","frontmatter":{"title":"liteyuki.session.event"},"headers":[],"relativePath":"en/dev/api/session/event.md","filePath":"en/dev/api/session/event.md","lastUpdated":null}'),n={name:"en/dev/api/session/event.md"};function h(l,s,k,p,r,d){return t(),a("div",null,s[0]||(s[0]=[e(`

Module liteyuki.session.event

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

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

class MessageEvent


func __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)

Description: 轻雪抽象消息事件

Source code or View on GitHub
python
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):
+import{_ as i,c as a,o as e,al as t}from"./chunks/framework.BUxnStXl.js";const g=JSON.parse('{"title":"liteyuki.session.event","description":"","frontmatter":{"title":"liteyuki.session.event"},"headers":[],"relativePath":"en/dev/api/session/event.md","filePath":"en/dev/api/session/event.md","lastUpdated":null}'),n={name:"en/dev/api/session/event.md"};function h(l,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[t(`

Module liteyuki.session.event

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

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

class MessageEvent


func __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)

Description: 轻雪抽象消息事件

Source code or View on GitHub
python
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):
     if data is None:
         data = {}
     self.message_type = message_type
diff --git a/assets/en_dev_api_session_event.md.Cijk-LGh.lean.js b/assets/en_dev_api_session_event.md.Cijk-LGh.lean.js
new file mode 100644
index 00000000..b1e00b4a
--- /dev/null
+++ b/assets/en_dev_api_session_event.md.Cijk-LGh.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as e,al as t}from"./chunks/framework.BUxnStXl.js";const g=JSON.parse('{"title":"liteyuki.session.event","description":"","frontmatter":{"title":"liteyuki.session.event"},"headers":[],"relativePath":"en/dev/api/session/event.md","filePath":"en/dev/api/session/event.md","lastUpdated":null}'),n={name:"en/dev/api/session/event.md"};function h(l,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[t("",14)]))}const y=i(n,[["render",h]]);export{g as __pageData,y as default};
diff --git a/assets/en_dev_api_session_event.md.D3Th-LcY.lean.js b/assets/en_dev_api_session_event.md.D3Th-LcY.lean.js
deleted file mode 100644
index 1dc38b8b..00000000
--- a/assets/en_dev_api_session_event.md.D3Th-LcY.lean.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import{_ as i,c as a,a7 as e,o as t}from"./chunks/framework.v7PlT0Wt.js";const g=JSON.parse('{"title":"liteyuki.session.event","description":"","frontmatter":{"title":"liteyuki.session.event"},"headers":[],"relativePath":"en/dev/api/session/event.md","filePath":"en/dev/api/session/event.md","lastUpdated":null}'),n={name:"en/dev/api/session/event.md"};function h(l,s,k,p,r,d){return t(),a("div",null,s[0]||(s[0]=[e(`

Module liteyuki.session.event

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

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

class MessageEvent


func __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)

Description: 轻雪抽象消息事件

Source code or View on GitHub
python
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):
-    if data is None:
-        data = {}
-    self.message_type = message_type
-    self.data = data
-    self.bot_id = bot_id
-    self.message = message
-    self.raw_message = raw_message
-    self.session_id = session_id
-    self.session_type = session_type
-    self.user_id = user_id
-    self.receive_channel = receive_channel

func reply(self, message: str | dict[str, Any])

Description: 回复消息

Arguments:

  • message:
Source code or View on GitHub
python
def reply(self, message: str | dict[str, Any]):
-    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)
`,14)]))}const y=i(n,[["render",h]]);export{g as __pageData,y as default}; diff --git a/assets/en_dev_api_session_index.md.DeXIcJ0I.js b/assets/en_dev_api_session_index.md.B0FePOxH.js similarity index 94% rename from assets/en_dev_api_session_index.md.DeXIcJ0I.js rename to assets/en_dev_api_session_index.md.B0FePOxH.js index dcc82288..34cbf88d 100644 --- a/assets/en_dev_api_session_index.md.DeXIcJ0I.js +++ b/assets/en_dev_api_session_index.md.B0FePOxH.js @@ -1 +1 @@ -import{_ as i,c as a,a7 as e,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.session","description":"","frontmatter":{"title":"liteyuki.session","collapsed":true},"headers":[],"relativePath":"en/dev/api/session/index.md","filePath":"en/dev/api/session/index.md","lastUpdated":null}'),t={name:"en/dev/api/session/index.md"};function l(h,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[e('

Module liteyuki.session

该模块参考并引用了nonebot-plugin-alconna的消息段定义


func message_handler_thread(i_chans: Iterable[Chan[Any]])

Arguments:

  • i_chans: 多路输入管道组
Source code or View on GitHub
python
def message_handler_thread(i_chans: Iterable[Chan[Any]]):\n    for msg in select(*i_chans):\n        logger.debug(f'Recv from anybot {msg}')\n        logger.info(f'Recv from anybot {msg}')\n    pass
',7)]))}const g=i(t,[["render",l]]);export{c as __pageData,g as default}; +import{_ as i,c as a,o as e,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.session","description":"","frontmatter":{"title":"liteyuki.session","collapsed":true},"headers":[],"relativePath":"en/dev/api/session/index.md","filePath":"en/dev/api/session/index.md","lastUpdated":null}'),t={name:"en/dev/api/session/index.md"};function l(h,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[n('

Module liteyuki.session

该模块参考并引用了nonebot-plugin-alconna的消息段定义


func message_handler_thread(i_chans: Iterable[Chan[Any]])

Arguments:

  • i_chans: 多路输入管道组
Source code or View on GitHub
python
def message_handler_thread(i_chans: Iterable[Chan[Any]]):\n    for msg in select(*i_chans):\n        logger.debug(f'Recv from anybot {msg}')\n        logger.info(f'Recv from anybot {msg}')\n    pass
',7)]))}const g=i(t,[["render",l]]);export{c as __pageData,g as default}; diff --git a/assets/en_dev_api_session_index.md.B0FePOxH.lean.js b/assets/en_dev_api_session_index.md.B0FePOxH.lean.js new file mode 100644 index 00000000..6f07763c --- /dev/null +++ b/assets/en_dev_api_session_index.md.B0FePOxH.lean.js @@ -0,0 +1 @@ +import{_ as i,c as a,o as e,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.session","description":"","frontmatter":{"title":"liteyuki.session","collapsed":true},"headers":[],"relativePath":"en/dev/api/session/index.md","filePath":"en/dev/api/session/index.md","lastUpdated":null}'),t={name:"en/dev/api/session/index.md"};function l(h,s,k,p,r,d){return e(),a("div",null,s[0]||(s[0]=[n("",7)]))}const g=i(t,[["render",l]]);export{c as __pageData,g as default}; diff --git a/assets/en_dev_api_session_index.md.DeXIcJ0I.lean.js b/assets/en_dev_api_session_index.md.DeXIcJ0I.lean.js deleted file mode 100644 index dcc82288..00000000 --- a/assets/en_dev_api_session_index.md.DeXIcJ0I.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as a,a7 as e,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.session","description":"","frontmatter":{"title":"liteyuki.session","collapsed":true},"headers":[],"relativePath":"en/dev/api/session/index.md","filePath":"en/dev/api/session/index.md","lastUpdated":null}'),t={name:"en/dev/api/session/index.md"};function l(h,s,k,p,r,d){return n(),a("div",null,s[0]||(s[0]=[e('

Module liteyuki.session

该模块参考并引用了nonebot-plugin-alconna的消息段定义


func message_handler_thread(i_chans: Iterable[Chan[Any]])

Arguments:

  • i_chans: 多路输入管道组
Source code or View on GitHub
python
def message_handler_thread(i_chans: Iterable[Chan[Any]]):\n    for msg in select(*i_chans):\n        logger.debug(f'Recv from anybot {msg}')\n        logger.info(f'Recv from anybot {msg}')\n    pass
',7)]))}const g=i(t,[["render",l]]);export{c as __pageData,g as default}; diff --git a/assets/en_dev_api_session_matcher.md.dQLmtmza.js b/assets/en_dev_api_session_matcher.md.BCKobbx7.js similarity index 97% rename from assets/en_dev_api_session_matcher.md.dQLmtmza.js rename to assets/en_dev_api_session_matcher.md.BCKobbx7.js index 7040d2a8..2adfcfd9 100644 --- a/assets/en_dev_api_session_matcher.md.dQLmtmza.js +++ b/assets/en_dev_api_session_matcher.md.BCKobbx7.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as e,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.session.matcher","description":"","frontmatter":{"title":"liteyuki.session.matcher"},"headers":[],"relativePath":"en/dev/api/session/matcher.md","filePath":"en/dev/api/session/matcher.md","lastUpdated":null}'),t={name:"en/dev/api/session/matcher.md"};function l(h,s,r,p,k,o){return n(),a("div",null,s[0]||(s[0]=[e(`

Module liteyuki.session.matcher

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

@Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : matcher.py @Software: PyCharm

class Matcher


func __init__(self, rule: Rule, priority: int, block: bool)

Description: 匹配器

Arguments:

  • rule: 规则
  • priority: 优先级 >= 0
  • block: 是否阻断后续优先级更低的匹配器
Source code or View on GitHub
python
def __init__(self, rule: Rule, priority: int, block: bool):
+import{_ as i,c as a,o as e,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.session.matcher","description":"","frontmatter":{"title":"liteyuki.session.matcher"},"headers":[],"relativePath":"en/dev/api/session/matcher.md","filePath":"en/dev/api/session/matcher.md","lastUpdated":null}'),t={name:"en/dev/api/session/matcher.md"};function l(h,s,r,p,k,o){return e(),a("div",null,s[0]||(s[0]=[n(`

Module liteyuki.session.matcher

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

@Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : matcher.py @Software: PyCharm

class Matcher


func __init__(self, rule: Rule, priority: int, block: bool)

Description: 匹配器

Arguments:

  • rule: 规则
  • priority: 优先级 >= 0
  • block: 是否阻断后续优先级更低的匹配器
Source code or View on GitHub
python
def __init__(self, rule: Rule, priority: int, block: bool):
     self.rule = rule
     self.priority = priority
     self.block = block
diff --git a/assets/en_dev_api_session_matcher.md.BCKobbx7.lean.js b/assets/en_dev_api_session_matcher.md.BCKobbx7.lean.js
new file mode 100644
index 00000000..1b149582
--- /dev/null
+++ b/assets/en_dev_api_session_matcher.md.BCKobbx7.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as e,al as n}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.session.matcher","description":"","frontmatter":{"title":"liteyuki.session.matcher"},"headers":[],"relativePath":"en/dev/api/session/matcher.md","filePath":"en/dev/api/session/matcher.md","lastUpdated":null}'),t={name:"en/dev/api/session/matcher.md"};function l(h,s,r,p,k,o){return e(),a("div",null,s[0]||(s[0]=[n("",21)]))}const g=i(t,[["render",l]]);export{c as __pageData,g as default};
diff --git a/assets/en_dev_api_session_matcher.md.dQLmtmza.lean.js b/assets/en_dev_api_session_matcher.md.dQLmtmza.lean.js
deleted file mode 100644
index 7040d2a8..00000000
--- a/assets/en_dev_api_session_matcher.md.dQLmtmza.lean.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import{_ as i,c as a,a7 as e,o as n}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.session.matcher","description":"","frontmatter":{"title":"liteyuki.session.matcher"},"headers":[],"relativePath":"en/dev/api/session/matcher.md","filePath":"en/dev/api/session/matcher.md","lastUpdated":null}'),t={name:"en/dev/api/session/matcher.md"};function l(h,s,r,p,k,o){return n(),a("div",null,s[0]||(s[0]=[e(`

Module liteyuki.session.matcher

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

@Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : matcher.py @Software: PyCharm

class Matcher


func __init__(self, rule: Rule, priority: int, block: bool)

Description: 匹配器

Arguments:

  • rule: 规则
  • priority: 优先级 >= 0
  • block: 是否阻断后续优先级更低的匹配器
Source code or View on GitHub
python
def __init__(self, rule: Rule, priority: int, block: bool):
-    self.rule = rule
-    self.priority = priority
-    self.block = block
-    self.handlers: list[EventHandler] = []

func handle(self) -> Callable[[EventHandler], EventHandler]

Description: 添加处理函数,装饰器

Return: 装饰器 handler

Source code or View on GitHub
python
def handle(self) -> Callable[[EventHandler], EventHandler]:
-
-    def decorator(handler: EventHandler) -> EventHandler:
-        self.handlers.append(handler)
-        return handler
-    return decorator

async func run(self, event: MessageEvent) -> None

Description: 运行处理函数

Arguments:

  • event:
Source code or View on GitHub
python
async def run(self, event: MessageEvent) -> None:
-    if not await self.rule(event):
-        return
-    for handler in self.handlers:
-        try:
-            await handler(event)
-        except Exception:
-            traceback.print_exc()
`,21)]))}const g=i(t,[["render",l]]);export{c as __pageData,g as default}; diff --git a/assets/en_dev_api_session_message_segments.md.Ds5UV5yu.js b/assets/en_dev_api_session_message_segments.md.B9GxysTy.js similarity index 90% rename from assets/en_dev_api_session_message_segments.md.Ds5UV5yu.js rename to assets/en_dev_api_session_message_segments.md.B9GxysTy.js index 94a5f1c7..7c2d07ac 100644 --- a/assets/en_dev_api_session_message_segments.md.Ds5UV5yu.js +++ b/assets/en_dev_api_session_message_segments.md.B9GxysTy.js @@ -1 +1 @@ -import{_ as a,c as t,a7 as s,o as r}from"./chunks/framework.v7PlT0Wt.js";const h=JSON.parse('{"title":"liteyuki.session.message.segments","description":"","frontmatter":{"title":"liteyuki.session.message.segments"},"headers":[],"relativePath":"en/dev/api/session/message/segments.md","filePath":"en/dev/api/session/message/segments.md","lastUpdated":null}'),o={name:"en/dev/api/session/message/segments.md"};function n(l,e,d,i,c,m){return r(),t("div",null,e[0]||(e[0]=[s('

Module liteyuki.session.message.segments

class BaseSeg(BaseModel)

attr type: str = 'Segment'

attr data: dict[str, Any] = NO_DEFAULT

class Text(BaseSeg)

attr content: str = NO_DEFAULT

class Image(BaseSeg)

attr url: str = NO_DEFAULT

',8)]))}const u=a(o,[["render",n]]);export{h as __pageData,u as default}; +import{_ as a,c as t,o as s,al as r}from"./chunks/framework.BUxnStXl.js";const h=JSON.parse('{"title":"liteyuki.session.message.segments","description":"","frontmatter":{"title":"liteyuki.session.message.segments"},"headers":[],"relativePath":"en/dev/api/session/message/segments.md","filePath":"en/dev/api/session/message/segments.md","lastUpdated":null}'),o={name:"en/dev/api/session/message/segments.md"};function n(l,e,d,i,c,m){return s(),t("div",null,e[0]||(e[0]=[r('

Module liteyuki.session.message.segments

class BaseSeg(BaseModel)

attr type: str = 'Segment'

attr data: dict[str, Any] = NO_DEFAULT

class Text(BaseSeg)

attr content: str = NO_DEFAULT

class Image(BaseSeg)

attr url: str = NO_DEFAULT

',8)]))}const u=a(o,[["render",n]]);export{h as __pageData,u as default}; diff --git a/assets/en_dev_api_session_message_segments.md.B9GxysTy.lean.js b/assets/en_dev_api_session_message_segments.md.B9GxysTy.lean.js new file mode 100644 index 00000000..8273ee75 --- /dev/null +++ b/assets/en_dev_api_session_message_segments.md.B9GxysTy.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as s,al as r}from"./chunks/framework.BUxnStXl.js";const h=JSON.parse('{"title":"liteyuki.session.message.segments","description":"","frontmatter":{"title":"liteyuki.session.message.segments"},"headers":[],"relativePath":"en/dev/api/session/message/segments.md","filePath":"en/dev/api/session/message/segments.md","lastUpdated":null}'),o={name:"en/dev/api/session/message/segments.md"};function n(l,e,d,i,c,m){return s(),t("div",null,e[0]||(e[0]=[r("",8)]))}const u=a(o,[["render",n]]);export{h as __pageData,u as default}; diff --git a/assets/en_dev_api_session_message_segments.md.Ds5UV5yu.lean.js b/assets/en_dev_api_session_message_segments.md.Ds5UV5yu.lean.js deleted file mode 100644 index 94a5f1c7..00000000 --- a/assets/en_dev_api_session_message_segments.md.Ds5UV5yu.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as t,a7 as s,o as r}from"./chunks/framework.v7PlT0Wt.js";const h=JSON.parse('{"title":"liteyuki.session.message.segments","description":"","frontmatter":{"title":"liteyuki.session.message.segments"},"headers":[],"relativePath":"en/dev/api/session/message/segments.md","filePath":"en/dev/api/session/message/segments.md","lastUpdated":null}'),o={name:"en/dev/api/session/message/segments.md"};function n(l,e,d,i,c,m){return r(),t("div",null,e[0]||(e[0]=[s('

Module liteyuki.session.message.segments

class BaseSeg(BaseModel)

attr type: str = 'Segment'

attr data: dict[str, Any] = NO_DEFAULT

class Text(BaseSeg)

attr content: str = NO_DEFAULT

class Image(BaseSeg)

attr url: str = NO_DEFAULT

',8)]))}const u=a(o,[["render",n]]);export{h as __pageData,u as default}; diff --git a/assets/en_dev_api_session_models.md.DBZyv5gt.lean.js b/assets/en_dev_api_session_models.md.DBZyv5gt.lean.js deleted file mode 100644 index f5624cb3..00000000 --- a/assets/en_dev_api_session_models.md.DBZyv5gt.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as s,a7 as t,o as i}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.session.models","description":"","frontmatter":{"title":"liteyuki.session.models"},"headers":[],"relativePath":"en/dev/api/session/models.md","filePath":"en/dev/api/session/models.md","lastUpdated":null}'),n={name:"en/dev/api/session/models.md"};function r(o,e,l,h,d,k){return i(),s("div",null,e[0]||(e[0]=[t('

Module liteyuki.session.models

本模块使用了nonebot-plugin-uninfo的部分模型定义 MIT License

Copyright (c) 2024 RF-Tar-Railt

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

class SceneType(int, Enum)

attr PRIVATE = 0

attr GROUP = 1

attr GUILD = 2

attr CHANNEL_TEXT = 3

attr CHANNEL_CATEGORY = 4

attr CHANNEL_VOICE = 5

class User(BaseModel)

attr id: str = NO_DEFAULT

attr name: str | None = None

attr nick: str | None = None

attr avatar: str | None = None

attr gender: str | None = None

class Scene(BaseModel)

attr id: str = NO_DEFAULT

attr type: SceneType = NO_DEFAULT

attr name: str | None = None

attr avatar: str | None = None

attr parent: 'Scene | None' = None

class Role(BaseModel)

attr id: str = NO_DEFAULT

attr level: int | None = None

attr name: str | None = None

class Member(BaseModel)

attr user: User = NO_DEFAULT

attr nickname: str | None = None

attr role: Role | None = None

attr mute: bool | None = None

attr joined_at: datetime | None = None

class Session(BaseModel)


@property

func session_id(self)

Source code or View on GitHub
python
@property\ndef session_id(self):\n    if self.scope == SceneType.PRIVATE:\n        return f'{self.scope}:{self.user.id}'\n    elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):\n        return f'{self.scope}:{self.scene.id}'\n    else:\n        raise ValueError('Invalid SceneType')

@property

func target_id(self)

Source code or View on GitHub
python
@property\ndef target_id(self):\n    if self.scope == SceneType.PRIVATE:\n        return f'{self.scope}:{self.user.id}'\n    elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):\n        return f'{self.scope}:{self.scene.id}:{self.user.id}'

attr self_id: str = NO_DEFAULT

attr adapter: str = NO_DEFAULT

attr scope: str = NO_DEFAULT

attr scene: Scene = NO_DEFAULT

attr user: User = NO_DEFAULT

attr member: 'Member | None' = None

attr operator: 'Member | None' = None

',51)]))}const g=a(n,[["render",r]]);export{c as __pageData,g as default}; diff --git a/assets/en_dev_api_session_models.md.DBZyv5gt.js b/assets/en_dev_api_session_models.md.YkoyxVnZ.js similarity index 99% rename from assets/en_dev_api_session_models.md.DBZyv5gt.js rename to assets/en_dev_api_session_models.md.YkoyxVnZ.js index f5624cb3..562e2137 100644 --- a/assets/en_dev_api_session_models.md.DBZyv5gt.js +++ b/assets/en_dev_api_session_models.md.YkoyxVnZ.js @@ -1 +1 @@ -import{_ as a,c as s,a7 as t,o as i}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.session.models","description":"","frontmatter":{"title":"liteyuki.session.models"},"headers":[],"relativePath":"en/dev/api/session/models.md","filePath":"en/dev/api/session/models.md","lastUpdated":null}'),n={name:"en/dev/api/session/models.md"};function r(o,e,l,h,d,k){return i(),s("div",null,e[0]||(e[0]=[t('

Module liteyuki.session.models

本模块使用了nonebot-plugin-uninfo的部分模型定义 MIT License

Copyright (c) 2024 RF-Tar-Railt

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

class SceneType(int, Enum)

attr PRIVATE = 0

attr GROUP = 1

attr GUILD = 2

attr CHANNEL_TEXT = 3

attr CHANNEL_CATEGORY = 4

attr CHANNEL_VOICE = 5

class User(BaseModel)

attr id: str = NO_DEFAULT

attr name: str | None = None

attr nick: str | None = None

attr avatar: str | None = None

attr gender: str | None = None

class Scene(BaseModel)

attr id: str = NO_DEFAULT

attr type: SceneType = NO_DEFAULT

attr name: str | None = None

attr avatar: str | None = None

attr parent: 'Scene | None' = None

class Role(BaseModel)

attr id: str = NO_DEFAULT

attr level: int | None = None

attr name: str | None = None

class Member(BaseModel)

attr user: User = NO_DEFAULT

attr nickname: str | None = None

attr role: Role | None = None

attr mute: bool | None = None

attr joined_at: datetime | None = None

class Session(BaseModel)


@property

func session_id(self)

Source code or View on GitHub
python
@property\ndef session_id(self):\n    if self.scope == SceneType.PRIVATE:\n        return f'{self.scope}:{self.user.id}'\n    elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):\n        return f'{self.scope}:{self.scene.id}'\n    else:\n        raise ValueError('Invalid SceneType')

@property

func target_id(self)

Source code or View on GitHub
python
@property\ndef target_id(self):\n    if self.scope == SceneType.PRIVATE:\n        return f'{self.scope}:{self.user.id}'\n    elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):\n        return f'{self.scope}:{self.scene.id}:{self.user.id}'

attr self_id: str = NO_DEFAULT

attr adapter: str = NO_DEFAULT

attr scope: str = NO_DEFAULT

attr scene: Scene = NO_DEFAULT

attr user: User = NO_DEFAULT

attr member: 'Member | None' = None

attr operator: 'Member | None' = None

',51)]))}const g=a(n,[["render",r]]);export{c as __pageData,g as default}; +import{_ as a,c as s,o as t,al as i}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.session.models","description":"","frontmatter":{"title":"liteyuki.session.models"},"headers":[],"relativePath":"en/dev/api/session/models.md","filePath":"en/dev/api/session/models.md","lastUpdated":null}'),n={name:"en/dev/api/session/models.md"};function r(o,e,l,h,d,k){return t(),s("div",null,e[0]||(e[0]=[i('

Module liteyuki.session.models

本模块使用了nonebot-plugin-uninfo的部分模型定义 MIT License

Copyright (c) 2024 RF-Tar-Railt

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

class SceneType(int, Enum)

attr PRIVATE = 0

attr GROUP = 1

attr GUILD = 2

attr CHANNEL_TEXT = 3

attr CHANNEL_CATEGORY = 4

attr CHANNEL_VOICE = 5

class User(BaseModel)

attr id: str = NO_DEFAULT

attr name: str | None = None

attr nick: str | None = None

attr avatar: str | None = None

attr gender: str | None = None

class Scene(BaseModel)

attr id: str = NO_DEFAULT

attr type: SceneType = NO_DEFAULT

attr name: str | None = None

attr avatar: str | None = None

attr parent: 'Scene | None' = None

class Role(BaseModel)

attr id: str = NO_DEFAULT

attr level: int | None = None

attr name: str | None = None

class Member(BaseModel)

attr user: User = NO_DEFAULT

attr nickname: str | None = None

attr role: Role | None = None

attr mute: bool | None = None

attr joined_at: datetime | None = None

class Session(BaseModel)


@property

func session_id(self)

Source code or View on GitHub
python
@property\ndef session_id(self):\n    if self.scope == SceneType.PRIVATE:\n        return f'{self.scope}:{self.user.id}'\n    elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):\n        return f'{self.scope}:{self.scene.id}'\n    else:\n        raise ValueError('Invalid SceneType')

@property

func target_id(self)

Source code or View on GitHub
python
@property\ndef target_id(self):\n    if self.scope == SceneType.PRIVATE:\n        return f'{self.scope}:{self.user.id}'\n    elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):\n        return f'{self.scope}:{self.scene.id}:{self.user.id}'

attr self_id: str = NO_DEFAULT

attr adapter: str = NO_DEFAULT

attr scope: str = NO_DEFAULT

attr scene: Scene = NO_DEFAULT

attr user: User = NO_DEFAULT

attr member: 'Member | None' = None

attr operator: 'Member | None' = None

',51)]))}const g=a(n,[["render",r]]);export{c as __pageData,g as default}; diff --git a/assets/en_dev_api_session_models.md.YkoyxVnZ.lean.js b/assets/en_dev_api_session_models.md.YkoyxVnZ.lean.js new file mode 100644 index 00000000..a7038926 --- /dev/null +++ b/assets/en_dev_api_session_models.md.YkoyxVnZ.lean.js @@ -0,0 +1 @@ +import{_ as a,c as s,o as t,al as i}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"liteyuki.session.models","description":"","frontmatter":{"title":"liteyuki.session.models"},"headers":[],"relativePath":"en/dev/api/session/models.md","filePath":"en/dev/api/session/models.md","lastUpdated":null}'),n={name:"en/dev/api/session/models.md"};function r(o,e,l,h,d,k){return t(),s("div",null,e[0]||(e[0]=[i("",51)]))}const g=a(n,[["render",r]]);export{c as __pageData,g as default}; diff --git a/assets/en_dev_api_session_on.md.CFv3Q2g4.js b/assets/en_dev_api_session_on.md.BkoUd1nY.js similarity index 97% rename from assets/en_dev_api_session_on.md.CFv3Q2g4.js rename to assets/en_dev_api_session_on.md.BkoUd1nY.js index 25ea77c2..7c74b36c 100644 --- a/assets/en_dev_api_session_on.md.CFv3Q2g4.js +++ b/assets/en_dev_api_session_on.md.BkoUd1nY.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as e,o as t}from"./chunks/framework.v7PlT0Wt.js";const y=JSON.parse('{"title":"liteyuki.session.on","description":"","frontmatter":{"title":"liteyuki.session.on"},"headers":[],"relativePath":"en/dev/api/session/on.md","filePath":"en/dev/api/session/on.md","lastUpdated":null}'),n={name:"en/dev/api/session/on.md"};function l(h,s,r,k,p,o){return t(),a("div",null,s[0]||(s[0]=[e(`

Module liteyuki.session.on

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

@Time : 2024/8/19 下午10:52 @Author : snowykami @Email : snowykami@outlook.com @File : on.py @Software: PyCharm


func add_matcher(matcher: Matcher)

Source code or View on GitHub
python
def add_matcher(matcher: Matcher):
+import{_ as i,c as a,o as e,al as t}from"./chunks/framework.BUxnStXl.js";const y=JSON.parse('{"title":"liteyuki.session.on","description":"","frontmatter":{"title":"liteyuki.session.on"},"headers":[],"relativePath":"en/dev/api/session/on.md","filePath":"en/dev/api/session/on.md","lastUpdated":null}'),n={name:"en/dev/api/session/on.md"};function l(h,s,r,k,p,o){return e(),a("div",null,s[0]||(s[0]=[t(`

Module liteyuki.session.on

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

@Time : 2024/8/19 下午10:52 @Author : snowykami @Email : snowykami@outlook.com @File : on.py @Software: PyCharm


func add_matcher(matcher: Matcher)

Source code or View on GitHub
python
def add_matcher(matcher: Matcher):
     for i, m in enumerate(_matcher_list):
         if m.priority < matcher.priority:
             _matcher_list.insert(i, matcher)
diff --git a/assets/en_dev_api_session_on.md.BkoUd1nY.lean.js b/assets/en_dev_api_session_on.md.BkoUd1nY.lean.js
new file mode 100644
index 00000000..9a2ddada
--- /dev/null
+++ b/assets/en_dev_api_session_on.md.BkoUd1nY.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as e,al as t}from"./chunks/framework.BUxnStXl.js";const y=JSON.parse('{"title":"liteyuki.session.on","description":"","frontmatter":{"title":"liteyuki.session.on"},"headers":[],"relativePath":"en/dev/api/session/on.md","filePath":"en/dev/api/session/on.md","lastUpdated":null}'),n={name:"en/dev/api/session/on.md"};function l(h,s,r,k,p,o){return e(),a("div",null,s[0]||(s[0]=[t("",12)]))}const c=i(n,[["render",l]]);export{y as __pageData,c as default};
diff --git a/assets/en_dev_api_session_on.md.CFv3Q2g4.lean.js b/assets/en_dev_api_session_on.md.CFv3Q2g4.lean.js
deleted file mode 100644
index 25ea77c2..00000000
--- a/assets/en_dev_api_session_on.md.CFv3Q2g4.lean.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import{_ as i,c as a,a7 as e,o as t}from"./chunks/framework.v7PlT0Wt.js";const y=JSON.parse('{"title":"liteyuki.session.on","description":"","frontmatter":{"title":"liteyuki.session.on"},"headers":[],"relativePath":"en/dev/api/session/on.md","filePath":"en/dev/api/session/on.md","lastUpdated":null}'),n={name:"en/dev/api/session/on.md"};function l(h,s,r,k,p,o){return t(),a("div",null,s[0]||(s[0]=[e(`

Module liteyuki.session.on

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

@Time : 2024/8/19 下午10:52 @Author : snowykami @Email : snowykami@outlook.com @File : on.py @Software: PyCharm


func add_matcher(matcher: Matcher)

Source code or View on GitHub
python
def add_matcher(matcher: Matcher):
-    for i, m in enumerate(_matcher_list):
-        if m.priority < matcher.priority:
-            _matcher_list.insert(i, matcher)
-            break
-    else:
-        _matcher_list.append(matcher)

func on_message(rule: Rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher

Source code or View on GitHub
python
def on_message(rule: Rule=empty_rule, priority: int=0, block: bool=False) -> Matcher:
-    matcher = Matcher(rule, priority, block)
-    add_matcher(matcher)
-    return matcher

func on_keywords(keywords: list[str], rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher

Source code or View on GitHub
python
def on_keywords(keywords: list[str], rule=empty_rule, priority: int=0, block: bool=False) -> Matcher:
-
-    @Rule
-    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)
`,12)]))}const c=i(n,[["render",l]]);export{y as __pageData,c as default}; diff --git a/assets/en_dev_api_session_rule.md.UNaf14Gk.js b/assets/en_dev_api_session_rule.md.BLGxPo-M.js similarity index 98% rename from assets/en_dev_api_session_rule.md.UNaf14Gk.js rename to assets/en_dev_api_session_rule.md.BLGxPo-M.js index 1815ed12..527c505f 100644 --- a/assets/en_dev_api_session_rule.md.UNaf14Gk.js +++ b/assets/en_dev_api_session_rule.md.BLGxPo-M.js @@ -1 +1 @@ -import{_ as i,c as e,a7 as a,o as n}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"liteyuki.session.rule","description":"","frontmatter":{"title":"liteyuki.session.rule"},"headers":[],"relativePath":"en/dev/api/session/rule.md","filePath":"en/dev/api/session/rule.md","lastUpdated":null}'),t={name:"en/dev/api/session/rule.md"};function l(h,s,r,p,k,o){return n(),e("div",null,s[0]||(s[0]=[a('

Module liteyuki.session.rule

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

@Time : 2024/8/19 下午10:55 @Author : snowykami @Email : snowykami@outlook.com @File : rule.py @Software: PyCharm

var RuleHandlerFunc

  • Description: 规则函数签名

  • Type: TypeAlias

  • Default: Callable[[MessageEvent], Coroutine[None, None, bool]]

class Rule


func __init__(self, handler: RuleHandlerFunc)

Source code or View on GitHub
python
def __init__(self, handler: RuleHandlerFunc):\n    self.handler = handler

func self | other: Rule => Rule

Source code or View on GitHub
python
def __or__(self, other: 'Rule') -> 'Rule':\n\n    async def combined_handler(event: MessageEvent) -> bool:\n        return await self.handler(event) or await other.handler(event)\n    return Rule(combined_handler)

func self & other: Rule => Rule

Source code or View on GitHub
python
def __and__(self, other: 'Rule') -> 'Rule':\n\n    async def combined_handler(event: MessageEvent) -> bool:\n        return await self.handler(event) and await other.handler(event)\n    return Rule(combined_handler)

async func self () event: MessageEvent => bool

Source code or View on GitHub
python
async def __call__(self, event: MessageEvent) -> bool:\n    if self.handler is None:\n        return True\n    return await self.handler(event)

@Rule

async func empty_rule(event: MessageEvent) -> bool

Source code or View on GitHub
python
@Rule\nasync def empty_rule(event: MessageEvent) -> bool:\n    return True

@Rule

async func is_su_rule(event: MessageEvent) -> bool

Source code or View on GitHub
python
@Rule\nasync def is_su_rule(event: MessageEvent) -> bool:\n    return str(event.user_id) in _superusers
',26)]))}const c=i(t,[["render",l]]);export{u as __pageData,c as default}; +import{_ as i,c as e,o as a,al as n}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki.session.rule","description":"","frontmatter":{"title":"liteyuki.session.rule"},"headers":[],"relativePath":"en/dev/api/session/rule.md","filePath":"en/dev/api/session/rule.md","lastUpdated":null}'),t={name:"en/dev/api/session/rule.md"};function l(h,s,r,p,k,o){return a(),e("div",null,s[0]||(s[0]=[n('

Module liteyuki.session.rule

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

@Time : 2024/8/19 下午10:55 @Author : snowykami @Email : snowykami@outlook.com @File : rule.py @Software: PyCharm

var RuleHandlerFunc

  • Description: 规则函数签名

  • Type: TypeAlias

  • Default: Callable[[MessageEvent], Coroutine[None, None, bool]]

class Rule


func __init__(self, handler: RuleHandlerFunc)

Source code or View on GitHub
python
def __init__(self, handler: RuleHandlerFunc):\n    self.handler = handler

func self | other: Rule => Rule

Source code or View on GitHub
python
def __or__(self, other: 'Rule') -> 'Rule':\n\n    async def combined_handler(event: MessageEvent) -> bool:\n        return await self.handler(event) or await other.handler(event)\n    return Rule(combined_handler)

func self & other: Rule => Rule

Source code or View on GitHub
python
def __and__(self, other: 'Rule') -> 'Rule':\n\n    async def combined_handler(event: MessageEvent) -> bool:\n        return await self.handler(event) and await other.handler(event)\n    return Rule(combined_handler)

async func self () event: MessageEvent => bool

Source code or View on GitHub
python
async def __call__(self, event: MessageEvent) -> bool:\n    if self.handler is None:\n        return True\n    return await self.handler(event)

@Rule

async func empty_rule(event: MessageEvent) -> bool

Source code or View on GitHub
python
@Rule\nasync def empty_rule(event: MessageEvent) -> bool:\n    return True

@Rule

async func is_su_rule(event: MessageEvent) -> bool

Source code or View on GitHub
python
@Rule\nasync def is_su_rule(event: MessageEvent) -> bool:\n    return str(event.user_id) in _superusers
',26)]))}const c=i(t,[["render",l]]);export{u as __pageData,c as default}; diff --git a/assets/en_dev_api_session_rule.md.BLGxPo-M.lean.js b/assets/en_dev_api_session_rule.md.BLGxPo-M.lean.js new file mode 100644 index 00000000..35a35f8f --- /dev/null +++ b/assets/en_dev_api_session_rule.md.BLGxPo-M.lean.js @@ -0,0 +1 @@ +import{_ as i,c as e,o as a,al as n}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"liteyuki.session.rule","description":"","frontmatter":{"title":"liteyuki.session.rule"},"headers":[],"relativePath":"en/dev/api/session/rule.md","filePath":"en/dev/api/session/rule.md","lastUpdated":null}'),t={name:"en/dev/api/session/rule.md"};function l(h,s,r,p,k,o){return a(),e("div",null,s[0]||(s[0]=[n("",26)]))}const c=i(t,[["render",l]]);export{u as __pageData,c as default}; diff --git a/assets/en_dev_api_session_rule.md.UNaf14Gk.lean.js b/assets/en_dev_api_session_rule.md.UNaf14Gk.lean.js deleted file mode 100644 index 1815ed12..00000000 --- a/assets/en_dev_api_session_rule.md.UNaf14Gk.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as e,a7 as a,o as n}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"liteyuki.session.rule","description":"","frontmatter":{"title":"liteyuki.session.rule"},"headers":[],"relativePath":"en/dev/api/session/rule.md","filePath":"en/dev/api/session/rule.md","lastUpdated":null}'),t={name:"en/dev/api/session/rule.md"};function l(h,s,r,p,k,o){return n(),e("div",null,s[0]||(s[0]=[a('

Module liteyuki.session.rule

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

@Time : 2024/8/19 下午10:55 @Author : snowykami @Email : snowykami@outlook.com @File : rule.py @Software: PyCharm

var RuleHandlerFunc

  • Description: 规则函数签名

  • Type: TypeAlias

  • Default: Callable[[MessageEvent], Coroutine[None, None, bool]]

class Rule


func __init__(self, handler: RuleHandlerFunc)

Source code or View on GitHub
python
def __init__(self, handler: RuleHandlerFunc):\n    self.handler = handler

func self | other: Rule => Rule

Source code or View on GitHub
python
def __or__(self, other: 'Rule') -> 'Rule':\n\n    async def combined_handler(event: MessageEvent) -> bool:\n        return await self.handler(event) or await other.handler(event)\n    return Rule(combined_handler)

func self & other: Rule => Rule

Source code or View on GitHub
python
def __and__(self, other: 'Rule') -> 'Rule':\n\n    async def combined_handler(event: MessageEvent) -> bool:\n        return await self.handler(event) and await other.handler(event)\n    return Rule(combined_handler)

async func self () event: MessageEvent => bool

Source code or View on GitHub
python
async def __call__(self, event: MessageEvent) -> bool:\n    if self.handler is None:\n        return True\n    return await self.handler(event)

@Rule

async func empty_rule(event: MessageEvent) -> bool

Source code or View on GitHub
python
@Rule\nasync def empty_rule(event: MessageEvent) -> bool:\n    return True

@Rule

async func is_su_rule(event: MessageEvent) -> bool

Source code or View on GitHub
python
@Rule\nasync def is_su_rule(event: MessageEvent) -> bool:\n    return str(event.user_id) in _superusers
',26)]))}const c=i(t,[["render",l]]);export{u as __pageData,c as default}; diff --git a/assets/en_dev_api_utils.md.QHC7sHGv.js b/assets/en_dev_api_utils.md.CL2uJQsZ.js similarity index 98% rename from assets/en_dev_api_utils.md.QHC7sHGv.js rename to assets/en_dev_api_utils.md.CL2uJQsZ.js index 5d0a5e1a..c46a2abc 100644 --- a/assets/en_dev_api_utils.md.QHC7sHGv.js +++ b/assets/en_dev_api_utils.md.CL2uJQsZ.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.utils","description":"","frontmatter":{"title":"liteyuki.utils"},"headers":[],"relativePath":"en/dev/api/utils.md","filePath":"en/dev/api/utils.md","lastUpdated":1725101868000}'),l={name:"en/dev/api/utils.md"};function e(h,s,p,k,r,o){return t(),a("div",null,s[0]||(s[0]=[n(`

Module liteyuki.utils

一些常用的工具类,部分来源于 nonebot 并遵循其许可进行修改


func is_coroutine_callable(call: Callable[..., Any]) -> bool

Description: 判断是否为协程可调用对象

Arguments:

  • call: 可调用对象

Return: bool: 是否为协程可调用对象

Source code or View on GitHub
python
def is_coroutine_callable(call: Callable[..., Any]) -> bool:
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const E=JSON.parse('{"title":"liteyuki.utils","description":"","frontmatter":{"title":"liteyuki.utils"},"headers":[],"relativePath":"en/dev/api/utils.md","filePath":"en/dev/api/utils.md","lastUpdated":1725101868000}'),l={name:"en/dev/api/utils.md"};function e(h,s,p,k,r,o){return n(),a("div",null,s[0]||(s[0]=[t(`

Module liteyuki.utils

一些常用的工具类,部分来源于 nonebot 并遵循其许可进行修改


func is_coroutine_callable(call: Callable[..., Any]) -> bool

Description: 判断是否为协程可调用对象

Arguments:

  • call: 可调用对象

Return: bool: 是否为协程可调用对象

Source code or View on GitHub
python
def is_coroutine_callable(call: Callable[..., Any]) -> bool:
     if inspect.isroutine(call):
         return inspect.iscoroutinefunction(call)
     if inspect.isclass(call):
@@ -30,4 +30,4 @@ import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const c
     async def wrapper(*args, **kwargs):
         return func(*args, **kwargs)
     wrapper.__signature__ = inspect.signature(func)
-    return wrapper
`,35)]))}const E=i(l,[["render",e]]);export{c as __pageData,E as default}; + return wrapper
`,35)]))}const c=i(l,[["render",e]]);export{E as __pageData,c as default}; diff --git a/assets/en_dev_api_utils.md.CL2uJQsZ.lean.js b/assets/en_dev_api_utils.md.CL2uJQsZ.lean.js new file mode 100644 index 00000000..b39f9674 --- /dev/null +++ b/assets/en_dev_api_utils.md.CL2uJQsZ.lean.js @@ -0,0 +1 @@ +import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const E=JSON.parse('{"title":"liteyuki.utils","description":"","frontmatter":{"title":"liteyuki.utils"},"headers":[],"relativePath":"en/dev/api/utils.md","filePath":"en/dev/api/utils.md","lastUpdated":1725101868000}'),l={name:"en/dev/api/utils.md"};function e(h,s,p,k,r,o){return n(),a("div",null,s[0]||(s[0]=[t("",35)]))}const c=i(l,[["render",e]]);export{E as __pageData,c as default}; diff --git a/assets/en_dev_api_utils.md.QHC7sHGv.lean.js b/assets/en_dev_api_utils.md.QHC7sHGv.lean.js deleted file mode 100644 index 5d0a5e1a..00000000 --- a/assets/en_dev_api_utils.md.QHC7sHGv.lean.js +++ /dev/null @@ -1,33 +0,0 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"liteyuki.utils","description":"","frontmatter":{"title":"liteyuki.utils"},"headers":[],"relativePath":"en/dev/api/utils.md","filePath":"en/dev/api/utils.md","lastUpdated":1725101868000}'),l={name:"en/dev/api/utils.md"};function e(h,s,p,k,r,o){return t(),a("div",null,s[0]||(s[0]=[n(`

Module liteyuki.utils

一些常用的工具类,部分来源于 nonebot 并遵循其许可进行修改


func is_coroutine_callable(call: Callable[..., Any]) -> bool

Description: 判断是否为协程可调用对象

Arguments:

  • call: 可调用对象

Return: bool: 是否为协程可调用对象

Source code or View on GitHub
python
def is_coroutine_callable(call: Callable[..., Any]) -> bool:
-    if inspect.isroutine(call):
-        return inspect.iscoroutinefunction(call)
-    if inspect.isclass(call):
-        return False
-    func_ = getattr(call, '__call__', None)
-    return inspect.iscoroutinefunction(func_)

func run_coroutine(*coro: Coroutine)

Description: 运行协程

Arguments:

  • coro:
Source code or View on GitHub
python
def run_coroutine(*coro: Coroutine):
-    try:
-        loop = asyncio.get_running_loop()
-        if loop.is_running():
-            for c in coro:
-                asyncio.ensure_future(c)
-        else:
-            for c in coro:
-                loop.run_until_complete(c)
-    except RuntimeError:
-        loop = asyncio.new_event_loop()
-        asyncio.set_event_loop(loop)
-        loop.run_until_complete(asyncio.gather(*coro))
-        loop.close()
-    except Exception as e:
-        logger.error(f'Exception occurred: {e}')

func run_coroutine_in_thread(*coro: Coroutine)

Description: 在新线程中运行协程

Arguments:

  • coro:
Source code or View on GitHub
python
def run_coroutine_in_thread(*coro: Coroutine):
-    threading.Thread(target=run_coroutine, args=coro, daemon=True).start()

func path_to_module_name(path: Path) -> str

Description: 转换路径为模块名

Arguments:

  • path: 路径a/b/c/d -> a.b.c.d

Return: str: 模块名

Source code or View on GitHub
python
def path_to_module_name(path: Path) -> str:
-    rel_path = path.resolve().relative_to(Path.cwd().resolve())
-    if rel_path.stem == '__init__':
-        return '.'.join(rel_path.parts[:-1])
-    else:
-        return '.'.join(rel_path.parts[:-1] + (rel_path.stem,))

func async_wrapper(func: Callable[..., Any]) -> Callable[..., Coroutine]

Description: 异步包装器

Arguments:

  • func: Sync Callable

Return: Coroutine: Asynchronous Callable

Source code or View on GitHub
python
def async_wrapper(func: Callable[..., Any]) -> Callable[..., Coroutine]:
-
-    async def wrapper(*args, **kwargs):
-        return func(*args, **kwargs)
-    wrapper.__signature__ = inspect.signature(func)
-    return wrapper
`,35)]))}const E=i(l,[["render",e]]);export{c as __pageData,E as default}; diff --git a/assets/en_dev_best_practices.md.oHVAAUps.js b/assets/en_dev_best_practices.md.DrgXHNx1.js similarity index 90% rename from assets/en_dev_best_practices.md.oHVAAUps.js rename to assets/en_dev_best_practices.md.DrgXHNx1.js index c7f9b44a..dfad79f2 100644 --- a/assets/en_dev_best_practices.md.oHVAAUps.js +++ b/assets/en_dev_best_practices.md.DrgXHNx1.js @@ -1 +1 @@ -import{_ as e,c as i,a7 as a,o as r}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"Best Practices","description":"","frontmatter":{"title":"Best Practices","order":10},"headers":[],"relativePath":"en/dev/best_practices.md","filePath":"en/dev/best_practices.md","lastUpdated":1734116271000}'),o={name:"en/dev/best_practices.md"};function l(n,t,s,u,c,h){return r(),i("div",null,t[0]||(t[0]=[a('

Best Practices

Bot applications

plugins

Others

  • liteyuki starmap: Liteyuki official star map, showing all instances of Liteyuki and their location distribution
  • TRSS_Liteyuki: LiteyukiBot management script
  • litedoc: Liteyuki API documentation generator
  • liteyukibot-api (closed source): Liteyuki Bot stat interface
',7)]))}const b=e(o,[["render",l]]);export{k as __pageData,b as default}; +import{_ as e,c as i,o as a,al as r}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"Best Practices","description":"","frontmatter":{"title":"Best Practices","order":10},"headers":[],"relativePath":"en/dev/best_practices.md","filePath":"en/dev/best_practices.md","lastUpdated":1734116271000}'),o={name:"en/dev/best_practices.md"};function l(n,t,s,u,c,h){return a(),i("div",null,t[0]||(t[0]=[r('

Best Practices

Bot applications

plugins

Others

  • liteyuki starmap: Liteyuki official star map, showing all instances of Liteyuki and their location distribution
  • TRSS_Liteyuki: LiteyukiBot management script
  • litedoc: Liteyuki API documentation generator
  • liteyukibot-api (closed source): Liteyuki Bot stat interface
',7)]))}const b=e(o,[["render",l]]);export{k as __pageData,b as default}; diff --git a/assets/en_dev_best_practices.md.DrgXHNx1.lean.js b/assets/en_dev_best_practices.md.DrgXHNx1.lean.js new file mode 100644 index 00000000..b5e7c44e --- /dev/null +++ b/assets/en_dev_best_practices.md.DrgXHNx1.lean.js @@ -0,0 +1 @@ +import{_ as e,c as i,o as a,al as r}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"Best Practices","description":"","frontmatter":{"title":"Best Practices","order":10},"headers":[],"relativePath":"en/dev/best_practices.md","filePath":"en/dev/best_practices.md","lastUpdated":1734116271000}'),o={name:"en/dev/best_practices.md"};function l(n,t,s,u,c,h){return a(),i("div",null,t[0]||(t[0]=[r("",7)]))}const b=e(o,[["render",l]]);export{k as __pageData,b as default}; diff --git a/assets/en_dev_best_practices.md.oHVAAUps.lean.js b/assets/en_dev_best_practices.md.oHVAAUps.lean.js deleted file mode 100644 index c7f9b44a..00000000 --- a/assets/en_dev_best_practices.md.oHVAAUps.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as i,a7 as a,o as r}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"Best Practices","description":"","frontmatter":{"title":"Best Practices","order":10},"headers":[],"relativePath":"en/dev/best_practices.md","filePath":"en/dev/best_practices.md","lastUpdated":1734116271000}'),o={name:"en/dev/best_practices.md"};function l(n,t,s,u,c,h){return r(),i("div",null,t[0]||(t[0]=[a('

Best Practices

Bot applications

plugins

Others

  • liteyuki starmap: Liteyuki official star map, showing all instances of Liteyuki and their location distribution
  • TRSS_Liteyuki: LiteyukiBot management script
  • litedoc: Liteyuki API documentation generator
  • liteyukibot-api (closed source): Liteyuki Bot stat interface
',7)]))}const b=e(o,[["render",l]]);export{k as __pageData,b as default}; diff --git a/assets/en_dev_comm.md.DJzbE7ud.lean.js b/assets/en_dev_comm.md.DJzbE7ud.lean.js deleted file mode 100644 index 4ffbdfbf..00000000 --- a/assets/en_dev_comm.md.DJzbE7ud.lean.js +++ /dev/null @@ -1,43 +0,0 @@ -import{_ as i,c as a,a7 as n,o as e}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"Process Communication","description":"","frontmatter":{"title":"Process Communication","order":4},"headers":[],"relativePath":"en/dev/comm.md","filePath":"en/dev/comm.md","lastUpdated":1734116271000}'),t={name:"en/dev/comm.md"};function l(h,s,p,k,r,o){return e(),a("div",null,s[0]||(s[0]=[n(`

Channel Communication

Introduction

LiteyukiBot is running in the main process MainProcess, and other plugin framework processes are child processes that come with it. Therefore, it is impossible to communicate through shared memory and direct object transfer. Liteyuki provides a channel Channel for inter-process communication like go. You can send messages to other processes through Channel and listen to messages from other processes.

Example

The channel is full-duplex, with two receiving modes, but only one mode can be used for a channel, that is, passive mode and active mode, passive mode is implemented by the chan.on_receive() decorator callback function, and active mode needs to call chan.receive() to implement

  • 创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为{process_name}-active{process_name}-passive
  • 主进程中通过get_channel函数获取通道对象
  • 子进程中导入单例active_channelpassive_channel即可

在轻雪插件中(主进程中)

python
import asyncio
-
-from liteyuki.comm import get_channel, Channel
-from liteyuki import get_bot
-
-# get_channel函数获取通道对象,参数为调用set_channel时的通道标识
-channel_passive = get_channel("nonebot-passive")  # 获取被动通道
-channel_active = get_channel("nonebot-active")  # 获取主动通道
-liteyuki_bot = get_bot()
-
-
-# 注册一个函数在轻雪启动后运行
-@liteyuki_bot.on_after_start
-async def send_data():
-    while True:
-        channel_passive.send("I am liteyuki main process passive")
-        channel_active.send("I am liteyuki main process active")
-        await asyncio.sleep(3)  # 每3秒发送一次消息

在子进程中(例如NoneBot插件中)

python
from nonebot import get_driver
-from liteyuki.comm import active_channel, passive_channel  # 子进程中获取通道直接导入进程全局单例即可
-from liteyuki.log import logger
-
-driver = get_driver()
-
-
-# 被动模式,通过装饰器注册一个函数在接收到消息时运行,每次接收到字符串数据时都会运行
-@passive_channel.on_receive(filter_func=lambda data: isinstance(data, str))
-async def on_passive_receive(data):
-    logger.info(f"Passive receive: {data}")
-
-
-# 注册一个函数在NoneBot启动后运行
-@driver.on_startup
-def on_startup():
-    while True:
-        data = active_channel.receive()
-        logger.info(f"Active receive: {data}")

启动后控制台输出

log
0000-00-00 00:00:00 [ℹ️信息] Passive receive: I am liteyuki main process passive
-0000-00-00 00:00:00 [ℹ️信息] Active receive: I am liteyuki main process active
-0000-00-00 00:00:03 [ℹ️信息] Passive receive: I am liteyuki main process passive
-0000-00-00 00:00:03 [ℹ️信息] Active receive: I am liteyuki main process active
-...

共享内存通信

简介

  • 相比于普通进程通信,内存共享使得代码编写更加简洁,轻雪框架提供了一个内存共享通信的接口,你可以通过storage模块实现内存共享通信,该模块封装通道实现
  • 内存共享是线程安全的,你可以在多个线程中读写共享内存,线程锁会自动保护共享内存的读写操作

示例

在任意进程中均可使用

python
from liteyuki.comm.storage import shared_memory
-
-shared_memory.set("key", "value")  # 设置共享内存
-value = shared_memory.get("key")  # 获取共享内存

源代码:liteyuki/comm/storage.py

`,19)]))}const E=i(t,[["render",l]]);export{c as __pageData,E as default}; diff --git a/assets/en_dev_comm.md.DJzbE7ud.js b/assets/en_dev_comm.md.y7M-uNn5.js similarity index 98% rename from assets/en_dev_comm.md.DJzbE7ud.js rename to assets/en_dev_comm.md.y7M-uNn5.js index 4ffbdfbf..99d526ff 100644 --- a/assets/en_dev_comm.md.DJzbE7ud.js +++ b/assets/en_dev_comm.md.y7M-uNn5.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as e}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"Process Communication","description":"","frontmatter":{"title":"Process Communication","order":4},"headers":[],"relativePath":"en/dev/comm.md","filePath":"en/dev/comm.md","lastUpdated":1734116271000}'),t={name:"en/dev/comm.md"};function l(h,s,p,k,r,o){return e(),a("div",null,s[0]||(s[0]=[n(`

Channel Communication

Introduction

LiteyukiBot is running in the main process MainProcess, and other plugin framework processes are child processes that come with it. Therefore, it is impossible to communicate through shared memory and direct object transfer. Liteyuki provides a channel Channel for inter-process communication like go. You can send messages to other processes through Channel and listen to messages from other processes.

Example

The channel is full-duplex, with two receiving modes, but only one mode can be used for a channel, that is, passive mode and active mode, passive mode is implemented by the chan.on_receive() decorator callback function, and active mode needs to call chan.receive() to implement

  • 创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为{process_name}-active{process_name}-passive
  • 主进程中通过get_channel函数获取通道对象
  • 子进程中导入单例active_channelpassive_channel即可

在轻雪插件中(主进程中)

python
import asyncio
+import{_ as i,c as a,o as n,al as e}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"Process Communication","description":"","frontmatter":{"title":"Process Communication","order":4},"headers":[],"relativePath":"en/dev/comm.md","filePath":"en/dev/comm.md","lastUpdated":1734116271000}'),t={name:"en/dev/comm.md"};function l(h,s,p,k,r,o){return n(),a("div",null,s[0]||(s[0]=[e(`

Channel Communication

Introduction

LiteyukiBot is running in the main process MainProcess, and other plugin framework processes are child processes that come with it. Therefore, it is impossible to communicate through shared memory and direct object transfer. Liteyuki provides a channel Channel for inter-process communication like go. You can send messages to other processes through Channel and listen to messages from other processes.

Example

The channel is full-duplex, with two receiving modes, but only one mode can be used for a channel, that is, passive mode and active mode, passive mode is implemented by the chan.on_receive() decorator callback function, and active mode needs to call chan.receive() to implement

  • 创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为{process_name}-active{process_name}-passive
  • 主进程中通过get_channel函数获取通道对象
  • 子进程中导入单例active_channelpassive_channel即可

在轻雪插件中(主进程中)

python
import asyncio
 
 from liteyuki.comm import get_channel, Channel
 from liteyuki import get_bot
diff --git a/assets/en_dev_comm.md.y7M-uNn5.lean.js b/assets/en_dev_comm.md.y7M-uNn5.lean.js
new file mode 100644
index 00000000..6bf61ee8
--- /dev/null
+++ b/assets/en_dev_comm.md.y7M-uNn5.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as e}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"Process Communication","description":"","frontmatter":{"title":"Process Communication","order":4},"headers":[],"relativePath":"en/dev/comm.md","filePath":"en/dev/comm.md","lastUpdated":1734116271000}'),t={name:"en/dev/comm.md"};function l(h,s,p,k,r,o){return n(),a("div",null,s[0]||(s[0]=[e("",19)]))}const E=i(t,[["render",l]]);export{c as __pageData,E as default};
diff --git a/assets/en_dev_guide.md.CYFLz8NF.js b/assets/en_dev_guide.md.CEI7UF-O.js
similarity index 95%
rename from assets/en_dev_guide.md.CYFLz8NF.js
rename to assets/en_dev_guide.md.CEI7UF-O.js
index c0f19864..526e6672 100644
--- a/assets/en_dev_guide.md.CYFLz8NF.js
+++ b/assets/en_dev_guide.md.CEI7UF-O.js
@@ -1 +1 @@
-import{C as o}from"./chunks/ContributorBar.DumWpLf_.js";import{c as t,a7 as i,G as r,o as a}from"./chunks/framework.v7PlT0Wt.js";import"./chunks/theme.2w8Mz6uA.js";const h=JSON.parse('{"title":"Development Guide","description":"","frontmatter":{"title":"Development Guide","order":0},"headers":[],"relativePath":"en/dev/guide.md","filePath":"en/dev/guide.md","lastUpdated":1734116271000}'),l={name:"en/dev/guide.md"},p=Object.assign(l,{setup(n){return(d,e)=>(a(),t("div",null,[e[0]||(e[0]=i('

Development Guide

How to Develop

Please read the Plugin Development and API Reference documents if you are developing a plugin.

If you need to submit code to the Liteyuki repository, please read the following:

  1. First fork a copy of the Liteyuki repository to your personal/organization account.
  2. Develop in your repository.
  3. Create a new branch in your repository and submit your code to this branch.
  4. Create a Pull Request in your repository to merge your branch into the main branch of the Liteyuki repository.
  • Participation in development assumes that you are already familiar with the basic usage of the Python language and the Liteyuki framework.
  • If you are developing documentation, please ensure that you are familiar with Markdown syntax and basic front-end knowledge.
  • Contact the repository maintainer in case of conflicts.

Suggestions

  • During development, you can use tools such as mypy, flake8, and black for code checking and formatting.
  • Enable developer mode by setting dev_mode: true in config.yml to see more debugging information in the console.

Project Structure

  • main.py: Bot entry file
  • liteyuki: Framework directory (liteyukibot)
  • src: Bot application source code directory
    • liteyuki_plugins: Liteyuki plugin directory
    • nonebot_plugins: Nonebot plugin directory
    • resources: Built-in resource packs directory
    • utils: Utility directory
  • tests: Unit test directory
  • docs: Documentation directory
    • en: English documentation
    • zh: Chinese documentation
  • docker: Docker related content directory

The liteyuki framework is included in the LiteyukiBot application, so this project is both the LiteyukiBot application repository and the liteyuki framework repository.

The src directory is the application part, please develop business logic in this directory. liteyuki_plugins and nonebot_plugins directories are plugin directories, please develop plugins in these directories.

Standardization

  • Code should follow PEP8 and Google Python Style Guide.
  • In addition, code submitted to the Liteyuki repository should follow the following guidelines:
    • Ensure that the code is runnable and harmless.
    • Ensure that the type hints in the code are correct.
    • Ensure that the comment style is Google Docstring or Liteyuki Docstring(recommended) to ensure that Litedoc can parse and generate documentation correctly.
    • Strings should be enclosed in double quotes " as much as possible, and single quotes ' should be used when nesting strings.
    • If there is a part for ordinary users, ensure that the documentation is complete (each language has corresponding documentation).
  • commit message should follow the following guidelines:
    • You should commit the code after completing a feature or fixing a bug, and not mix the code of multiple features or bugs together.
    • We use gitmoji to mark the type of commit, such as :sparkles: for introducing new features, :bug: for fixing bugs, etc., please refer to gitmoji for details.
    • The format of the commit message is <emoji> [type:] <message>, such as :sparkles: feat: add new field to event, where the type field is the type of commit, not much is required, but please fill in as much as possible; the message field is a brief description, in summary, what you did.
    • There is no restriction on the language of the commit message, and bilingual use is possible if conditions permit.
  • The documentation should follow Markdown syntax and support vitepress-related content:
    • Revise the documentation for each language when editing.
    • Ensure that the links in the document are correct and do not lead to inaccessible links.
    • Ensure that the User Documentation is easy to understand and the Development Documentation is detailed.

Finally

  • This project is a non-profit open-source project, and we welcome anyone to participate in development. Your contributions will make Liteyuki better.
',16)),r(o)]))}});export{h as __pageData,p as default}; +import{C as o}from"./chunks/ContributorBar.BEMv3ZFt.js";import{c as t,o as i,al as r,G as a}from"./chunks/framework.BUxnStXl.js";import"./chunks/theme.DegCgHop.js";const h=JSON.parse('{"title":"Development Guide","description":"","frontmatter":{"title":"Development Guide","order":0},"headers":[],"relativePath":"en/dev/guide.md","filePath":"en/dev/guide.md","lastUpdated":1734116271000}'),l={name:"en/dev/guide.md"},p=Object.assign(l,{setup(n){return(d,e)=>(i(),t("div",null,[e[0]||(e[0]=r('

Development Guide

How to Develop

Please read the Plugin Development and API Reference documents if you are developing a plugin.

If you need to submit code to the Liteyuki repository, please read the following:

  1. First fork a copy of the Liteyuki repository to your personal/organization account.
  2. Develop in your repository.
  3. Create a new branch in your repository and submit your code to this branch.
  4. Create a Pull Request in your repository to merge your branch into the main branch of the Liteyuki repository.
  • Participation in development assumes that you are already familiar with the basic usage of the Python language and the Liteyuki framework.
  • If you are developing documentation, please ensure that you are familiar with Markdown syntax and basic front-end knowledge.
  • Contact the repository maintainer in case of conflicts.

Suggestions

  • During development, you can use tools such as mypy, flake8, and black for code checking and formatting.
  • Enable developer mode by setting dev_mode: true in config.yml to see more debugging information in the console.

Project Structure

  • main.py: Bot entry file
  • liteyuki: Framework directory (liteyukibot)
  • src: Bot application source code directory
    • liteyuki_plugins: Liteyuki plugin directory
    • nonebot_plugins: Nonebot plugin directory
    • resources: Built-in resource packs directory
    • utils: Utility directory
  • tests: Unit test directory
  • docs: Documentation directory
    • en: English documentation
    • zh: Chinese documentation
  • docker: Docker related content directory

The liteyuki framework is included in the LiteyukiBot application, so this project is both the LiteyukiBot application repository and the liteyuki framework repository.

The src directory is the application part, please develop business logic in this directory. liteyuki_plugins and nonebot_plugins directories are plugin directories, please develop plugins in these directories.

Standardization

  • Code should follow PEP8 and Google Python Style Guide.
  • In addition, code submitted to the Liteyuki repository should follow the following guidelines:
    • Ensure that the code is runnable and harmless.
    • Ensure that the type hints in the code are correct.
    • Ensure that the comment style is Google Docstring or Liteyuki Docstring(recommended) to ensure that Litedoc can parse and generate documentation correctly.
    • Strings should be enclosed in double quotes " as much as possible, and single quotes ' should be used when nesting strings.
    • If there is a part for ordinary users, ensure that the documentation is complete (each language has corresponding documentation).
  • commit message should follow the following guidelines:
    • You should commit the code after completing a feature or fixing a bug, and not mix the code of multiple features or bugs together.
    • We use gitmoji to mark the type of commit, such as :sparkles: for introducing new features, :bug: for fixing bugs, etc., please refer to gitmoji for details.
    • The format of the commit message is <emoji> [type:] <message>, such as :sparkles: feat: add new field to event, where the type field is the type of commit, not much is required, but please fill in as much as possible; the message field is a brief description, in summary, what you did.
    • There is no restriction on the language of the commit message, and bilingual use is possible if conditions permit.
  • The documentation should follow Markdown syntax and support vitepress-related content:
    • Revise the documentation for each language when editing.
    • Ensure that the links in the document are correct and do not lead to inaccessible links.
    • Ensure that the User Documentation is easy to understand and the Development Documentation is detailed.

Finally

  • This project is a non-profit open-source project, and we welcome anyone to participate in development. Your contributions will make Liteyuki better.
',16)),a(o)]))}});export{h as __pageData,p as default}; diff --git a/assets/en_dev_guide.md.CEI7UF-O.lean.js b/assets/en_dev_guide.md.CEI7UF-O.lean.js new file mode 100644 index 00000000..f5c3d9c9 --- /dev/null +++ b/assets/en_dev_guide.md.CEI7UF-O.lean.js @@ -0,0 +1 @@ +import{C as o}from"./chunks/ContributorBar.BEMv3ZFt.js";import{c as t,o as i,al as r,G as a}from"./chunks/framework.BUxnStXl.js";import"./chunks/theme.DegCgHop.js";const h=JSON.parse('{"title":"Development Guide","description":"","frontmatter":{"title":"Development Guide","order":0},"headers":[],"relativePath":"en/dev/guide.md","filePath":"en/dev/guide.md","lastUpdated":1734116271000}'),l={name:"en/dev/guide.md"},p=Object.assign(l,{setup(n){return(d,e)=>(i(),t("div",null,[e[0]||(e[0]=r("",16)),a(o)]))}});export{h as __pageData,p as default}; diff --git a/assets/en_dev_guide.md.CYFLz8NF.lean.js b/assets/en_dev_guide.md.CYFLz8NF.lean.js deleted file mode 100644 index c0f19864..00000000 --- a/assets/en_dev_guide.md.CYFLz8NF.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{C as o}from"./chunks/ContributorBar.DumWpLf_.js";import{c as t,a7 as i,G as r,o as a}from"./chunks/framework.v7PlT0Wt.js";import"./chunks/theme.2w8Mz6uA.js";const h=JSON.parse('{"title":"Development Guide","description":"","frontmatter":{"title":"Development Guide","order":0},"headers":[],"relativePath":"en/dev/guide.md","filePath":"en/dev/guide.md","lastUpdated":1734116271000}'),l={name:"en/dev/guide.md"},p=Object.assign(l,{setup(n){return(d,e)=>(a(),t("div",null,[e[0]||(e[0]=i('

Development Guide

How to Develop

Please read the Plugin Development and API Reference documents if you are developing a plugin.

If you need to submit code to the Liteyuki repository, please read the following:

  1. First fork a copy of the Liteyuki repository to your personal/organization account.
  2. Develop in your repository.
  3. Create a new branch in your repository and submit your code to this branch.
  4. Create a Pull Request in your repository to merge your branch into the main branch of the Liteyuki repository.
  • Participation in development assumes that you are already familiar with the basic usage of the Python language and the Liteyuki framework.
  • If you are developing documentation, please ensure that you are familiar with Markdown syntax and basic front-end knowledge.
  • Contact the repository maintainer in case of conflicts.

Suggestions

  • During development, you can use tools such as mypy, flake8, and black for code checking and formatting.
  • Enable developer mode by setting dev_mode: true in config.yml to see more debugging information in the console.

Project Structure

  • main.py: Bot entry file
  • liteyuki: Framework directory (liteyukibot)
  • src: Bot application source code directory
    • liteyuki_plugins: Liteyuki plugin directory
    • nonebot_plugins: Nonebot plugin directory
    • resources: Built-in resource packs directory
    • utils: Utility directory
  • tests: Unit test directory
  • docs: Documentation directory
    • en: English documentation
    • zh: Chinese documentation
  • docker: Docker related content directory

The liteyuki framework is included in the LiteyukiBot application, so this project is both the LiteyukiBot application repository and the liteyuki framework repository.

The src directory is the application part, please develop business logic in this directory. liteyuki_plugins and nonebot_plugins directories are plugin directories, please develop plugins in these directories.

Standardization

  • Code should follow PEP8 and Google Python Style Guide.
  • In addition, code submitted to the Liteyuki repository should follow the following guidelines:
    • Ensure that the code is runnable and harmless.
    • Ensure that the type hints in the code are correct.
    • Ensure that the comment style is Google Docstring or Liteyuki Docstring(recommended) to ensure that Litedoc can parse and generate documentation correctly.
    • Strings should be enclosed in double quotes " as much as possible, and single quotes ' should be used when nesting strings.
    • If there is a part for ordinary users, ensure that the documentation is complete (each language has corresponding documentation).
  • commit message should follow the following guidelines:
    • You should commit the code after completing a feature or fixing a bug, and not mix the code of multiple features or bugs together.
    • We use gitmoji to mark the type of commit, such as :sparkles: for introducing new features, :bug: for fixing bugs, etc., please refer to gitmoji for details.
    • The format of the commit message is <emoji> [type:] <message>, such as :sparkles: feat: add new field to event, where the type field is the type of commit, not much is required, but please fill in as much as possible; the message field is a brief description, in summary, what you did.
    • There is no restriction on the language of the commit message, and bilingual use is possible if conditions permit.
  • The documentation should follow Markdown syntax and support vitepress-related content:
    • Revise the documentation for each language when editing.
    • Ensure that the links in the document are correct and do not lead to inaccessible links.
    • Ensure that the User Documentation is easy to understand and the Development Documentation is detailed.

Finally

  • This project is a non-profit open-source project, and we welcome anyone to participate in development. Your contributions will make Liteyuki better.
',16)),r(o)]))}});export{h as __pageData,p as default}; diff --git a/assets/en_dev_lyfunc.md.C95UXHu-.lean.js b/assets/en_dev_lyfunc.md.C95UXHu-.lean.js deleted file mode 100644 index 7007be1f..00000000 --- a/assets/en_dev_lyfunc.md.C95UXHu-.lean.js +++ /dev/null @@ -1,20 +0,0 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"Liteyuki Function","description":"","frontmatter":{"title":"Liteyuki Function","order":2},"headers":[],"relativePath":"en/dev/lyfunc.md","filePath":"en/dev/lyfunc.md","lastUpdated":1734116271000}'),l={name:"en/dev/lyfunc.md"};function e(h,s,p,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

轻雪函数

轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.

函数文件

函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mcfunction,文件内容为一系列的命令,每行一个命令,支持单行注释#(编辑时的语法高亮可采取shell格式),例如:

shell
# 在发信器输出"hello world"
-cmd echo hello world
-
-# 如果你想同时输出多行内容可以尝试换行符(Python格式)
-cmd echo hello world\\nLiteyuki bot

也支持句末注释,例如:

shell
cmd echo hello world # 输出"hello world"

命令文档

shell
var <var1=value1> [var2=value2] ...  # 定义变量
-cmd <command>  # 在设备上执行命令
-api <api_name> [var=value...]  # 调用Bot API
-function <func_name> # 调用函数,可递归
-sleep <time>  # 异步等待,单位s
-nohup <command>  # 使用新的task执行命令,即不等待
-end # 结束函数关键字,包括子task
-await # 等待所有异步任务结束,若函数中启动了其他task,需要在最后调用,否则task对象会被销毁

示例

shell
# 疯狂戳好友
-# 使用 /function poke user_id=123456 执行
-# 每隔0.2s戳两次,无限戳,会触发最大递归深度限制
-# 若要戳20s后停止,则需要删除await,添加sleep 20和end
-api friend_poke user_id=user_id
-api friend_poke user_id=user_id
-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实现语法高亮

`,19)]))}const g=i(l,[["render",e]]);export{c as __pageData,g as default}; diff --git a/assets/en_dev_lyfunc.md.C95UXHu-.js b/assets/en_dev_lyfunc.md.DVKdEQk1.js similarity index 97% rename from assets/en_dev_lyfunc.md.C95UXHu-.js rename to assets/en_dev_lyfunc.md.DVKdEQk1.js index 7007be1f..b1084d44 100644 --- a/assets/en_dev_lyfunc.md.C95UXHu-.js +++ b/assets/en_dev_lyfunc.md.DVKdEQk1.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const c=JSON.parse('{"title":"Liteyuki Function","description":"","frontmatter":{"title":"Liteyuki Function","order":2},"headers":[],"relativePath":"en/dev/lyfunc.md","filePath":"en/dev/lyfunc.md","lastUpdated":1734116271000}'),l={name:"en/dev/lyfunc.md"};function e(h,s,p,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

轻雪函数

轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.

函数文件

函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mcfunction,文件内容为一系列的命令,每行一个命令,支持单行注释#(编辑时的语法高亮可采取shell格式),例如:

shell
# 在发信器输出"hello world"
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"Liteyuki Function","description":"","frontmatter":{"title":"Liteyuki Function","order":2},"headers":[],"relativePath":"en/dev/lyfunc.md","filePath":"en/dev/lyfunc.md","lastUpdated":1734116271000}'),l={name:"en/dev/lyfunc.md"};function e(h,s,p,k,d,r){return n(),a("div",null,s[0]||(s[0]=[t(`

轻雪函数

轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.

函数文件

函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mcfunction,文件内容为一系列的命令,每行一个命令,支持单行注释#(编辑时的语法高亮可采取shell格式),例如:

shell
# 在发信器输出"hello world"
 cmd echo hello world
 
 # 如果你想同时输出多行内容可以尝试换行符(Python格式)
diff --git a/assets/en_dev_lyfunc.md.DVKdEQk1.lean.js b/assets/en_dev_lyfunc.md.DVKdEQk1.lean.js
new file mode 100644
index 00000000..754288e3
--- /dev/null
+++ b/assets/en_dev_lyfunc.md.DVKdEQk1.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const c=JSON.parse('{"title":"Liteyuki Function","description":"","frontmatter":{"title":"Liteyuki Function","order":2},"headers":[],"relativePath":"en/dev/lyfunc.md","filePath":"en/dev/lyfunc.md","lastUpdated":1734116271000}'),l={name:"en/dev/lyfunc.md"};function e(h,s,p,k,d,r){return n(),a("div",null,s[0]||(s[0]=[t("",19)]))}const g=i(l,[["render",e]]);export{c as __pageData,g as default};
diff --git a/assets/en_dev_plugin.md.BSEjcgQm.lean.js b/assets/en_dev_plugin.md.BSEjcgQm.lean.js
deleted file mode 100644
index e9c1c908..00000000
--- a/assets/en_dev_plugin.md.BSEjcgQm.lean.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const o=JSON.parse('{"title":"Plugin","description":"","frontmatter":{"title":"Plugin","order":3},"headers":[],"relativePath":"en/dev/plugin.md","filePath":"en/dev/plugin.md","lastUpdated":1734116271000}'),h={name:"en/dev/plugin.md"};function l(p,s,e,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

简介

轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能。

开始

创建插件

一个.py文件或一个包含__init__.py的文件夹即可被识别为插件

首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件

__init__.py

python
from liteyuki.plugin import PluginMetadata, PluginType
-from .watch_dog import *    # 导入逻辑部分
-
-# 定义插件元数据
-__plugin_meta__ = PluginMetadata(
-    name="NoneDog",  # 插件名称
-    version="1.0.0",  # 插件版本
-    description="A simple plugin for nonebot developer",  # 插件描述
-    type=PluginType.SERVICE  # 插件类型
-)
-
-# 你的插件代码
-...

编写逻辑部分

轻雪主进程不涉及聊天部分,因此插件主要是一些后台任务或者与聊天机器人的通信 以下我们会编写一个简单的插件,用于开发NoneBot时进行文件系统变更重载 watch_dog.py

python
import os
-from liteyuki.dev import observer  # 导入文件系统观察器
-from liteyuki import get_bot, logger  # 导入轻雪Bot和日志
-from watchdog.events import FileSystemEvent  # 导入文件系统事件
-
-liteyuki = get_bot()  # 获取唯一的轻雪Bot实例
-
-exclude_extensions = (".pyc", ".pyo")  # 排除的文件扩展名
-
-
-# 用observer的on_file_system_event装饰器监听文件系统事件
-@observer.on_file_system_event(
-    directories=("src/nonebot_plugins",),
-    event_filter=lambda event: not event.src_path.endswith(exclude_extensions) and ("__pycache__" not in event.src_path) and os.path.isfile(event.src_path)
-)
-def restart_nonebot_process(event: FileSystemEvent):
-    logger.debug(f"File {event.src_path} changed, reloading nonebot...")
-    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进程

`,19)]))}const g=i(h,[["render",l]]);export{o as __pageData,g as default}; diff --git a/assets/en_dev_plugin.md.BSEjcgQm.js b/assets/en_dev_plugin.md.CxsGn5di.js similarity index 98% rename from assets/en_dev_plugin.md.BSEjcgQm.js rename to assets/en_dev_plugin.md.CxsGn5di.js index e9c1c908..a1e651db 100644 --- a/assets/en_dev_plugin.md.BSEjcgQm.js +++ b/assets/en_dev_plugin.md.CxsGn5di.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a7 as n,o as t}from"./chunks/framework.v7PlT0Wt.js";const o=JSON.parse('{"title":"Plugin","description":"","frontmatter":{"title":"Plugin","order":3},"headers":[],"relativePath":"en/dev/plugin.md","filePath":"en/dev/plugin.md","lastUpdated":1734116271000}'),h={name:"en/dev/plugin.md"};function l(p,s,e,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

简介

轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能。

开始

创建插件

一个.py文件或一个包含__init__.py的文件夹即可被识别为插件

首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件

__init__.py

python
from liteyuki.plugin import PluginMetadata, PluginType
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const o=JSON.parse('{"title":"Plugin","description":"","frontmatter":{"title":"Plugin","order":3},"headers":[],"relativePath":"en/dev/plugin.md","filePath":"en/dev/plugin.md","lastUpdated":1734116271000}'),h={name:"en/dev/plugin.md"};function l(p,s,e,k,d,r){return n(),a("div",null,s[0]||(s[0]=[t(`

简介

轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能。

开始

创建插件

一个.py文件或一个包含__init__.py的文件夹即可被识别为插件

首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件

__init__.py

python
from liteyuki.plugin import PluginMetadata, PluginType
 from .watch_dog import *    # 导入逻辑部分
 
 # 定义插件元数据
diff --git a/assets/en_dev_plugin.md.CxsGn5di.lean.js b/assets/en_dev_plugin.md.CxsGn5di.lean.js
new file mode 100644
index 00000000..9a833a41
--- /dev/null
+++ b/assets/en_dev_plugin.md.CxsGn5di.lean.js
@@ -0,0 +1 @@
+import{_ as i,c as a,o as n,al as t}from"./chunks/framework.BUxnStXl.js";const o=JSON.parse('{"title":"Plugin","description":"","frontmatter":{"title":"Plugin","order":3},"headers":[],"relativePath":"en/dev/plugin.md","filePath":"en/dev/plugin.md","lastUpdated":1734116271000}'),h={name:"en/dev/plugin.md"};function l(p,s,e,k,d,r){return n(),a("div",null,s[0]||(s[0]=[t("",19)]))}const g=i(h,[["render",l]]);export{o as __pageData,g as default};
diff --git a/assets/en_dev_resource.md.LROtNDtb.js b/assets/en_dev_resource.md.D9Lv8e2n.js
similarity index 95%
rename from assets/en_dev_resource.md.LROtNDtb.js
rename to assets/en_dev_resource.md.D9Lv8e2n.js
index 2f051e73..1fcbdc99 100644
--- a/assets/en_dev_resource.md.LROtNDtb.js
+++ b/assets/en_dev_resource.md.D9Lv8e2n.js
@@ -1,4 +1,4 @@
-import{_ as a,c as i,a7 as e,o as l}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"Resource Pack","description":"","frontmatter":{"title":"Resource Pack","order":1},"headers":[],"relativePath":"en/dev/resource.md","filePath":"en/dev/resource.md","lastUpdated":1734116271000}'),t={name:"en/dev/resource.md"};function n(p,s,c,d,h,o){return l(),i("div",null,s[0]||(s[0]=[e(`

简介

资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码

  • 资源/主题商店提供了一些资源包供你选择,你也可以自己制作资源包
  • 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。
  • 部分内容制作需要一点点前端基础,例如htmlcss
  • 轻雪原版资源包请查看LiteyukiBot/liteyuki/resources,可以在此基础上进行修改
  • 欢迎各位投稿资源包到轻雪资源商店

请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。


加载资源包

  • 资源包通常是以.zip格式压缩的,只需要将其解压到根目录resources目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的
shell
main.py
+import{_ as a,c as i,o as e,al as l}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"Resource Pack","description":"","frontmatter":{"title":"Resource Pack","order":1},"headers":[],"relativePath":"en/dev/resource.md","filePath":"en/dev/resource.md","lastUpdated":1734116271000}'),t={name:"en/dev/resource.md"};function n(p,s,c,d,h,o){return e(),i("div",null,s[0]||(s[0]=[l(`

简介

资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码

  • 资源/主题商店提供了一些资源包供你选择,你也可以自己制作资源包
  • 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。
  • 部分内容制作需要一点点前端基础,例如htmlcss
  • 轻雪原版资源包请查看LiteyukiBot/liteyuki/resources,可以在此基础上进行修改
  • 欢迎各位投稿资源包到轻雪资源商店

请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。


加载资源包

  • 资源包通常是以.zip格式压缩的,只需要将其解压到根目录resources目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的
shell
main.py
 resources
 └─resource_pack_1
     ├─metadata.yml
diff --git a/assets/en_dev_resource.md.D9Lv8e2n.lean.js b/assets/en_dev_resource.md.D9Lv8e2n.lean.js
new file mode 100644
index 00000000..ad8c4a9e
--- /dev/null
+++ b/assets/en_dev_resource.md.D9Lv8e2n.lean.js
@@ -0,0 +1 @@
+import{_ as a,c as i,o as e,al as l}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"Resource Pack","description":"","frontmatter":{"title":"Resource Pack","order":1},"headers":[],"relativePath":"en/dev/resource.md","filePath":"en/dev/resource.md","lastUpdated":1734116271000}'),t={name:"en/dev/resource.md"};function n(p,s,c,d,h,o){return e(),i("div",null,s[0]||(s[0]=[l("",12)]))}const u=a(t,[["render",n]]);export{k as __pageData,u as default};
diff --git a/assets/en_dev_resource.md.LROtNDtb.lean.js b/assets/en_dev_resource.md.LROtNDtb.lean.js
deleted file mode 100644
index 2f051e73..00000000
--- a/assets/en_dev_resource.md.LROtNDtb.lean.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import{_ as a,c as i,a7 as e,o as l}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"Resource Pack","description":"","frontmatter":{"title":"Resource Pack","order":1},"headers":[],"relativePath":"en/dev/resource.md","filePath":"en/dev/resource.md","lastUpdated":1734116271000}'),t={name:"en/dev/resource.md"};function n(p,s,c,d,h,o){return l(),i("div",null,s[0]||(s[0]=[e(`

简介

资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码

  • 资源/主题商店提供了一些资源包供你选择,你也可以自己制作资源包
  • 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。
  • 部分内容制作需要一点点前端基础,例如htmlcss
  • 轻雪原版资源包请查看LiteyukiBot/liteyuki/resources,可以在此基础上进行修改
  • 欢迎各位投稿资源包到轻雪资源商店

请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。


加载资源包

  • 资源包通常是以.zip格式压缩的,只需要将其解压到根目录resources目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的
shell
main.py
-resources
-└─resource_pack_1
-    ├─metadata.yml
-    ├─templates
-    └───...
-└─resource_pack_2
-    ├─metadata.yml
-    └─...
  • 你自己制作的资源包也应该遵循这个规则,并且应该在metadata.yml中填写一些信息
  • 若没有metadata.yml文件,则该文件夹不会被识别为资源包
yaml
name: "资源包名称"
-version: "1.0.0"
-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

资源包的结构会随着轻雪的更新而有变动,第三方资源包开发者需要注意版本兼容性,同时用户也应该自行选择可用的资源包

`,12)]))}const u=a(t,[["render",n]]);export{k as __pageData,u as default}; diff --git a/assets/en_index.md.wjzMjZdd.js b/assets/en_index.md.C6RIk4Q2.js similarity index 96% rename from assets/en_index.md.wjzMjZdd.js rename to assets/en_index.md.C6RIk4Q2.js index e07bb8f1..dda727e2 100644 --- a/assets/en_index.md.wjzMjZdd.js +++ b/assets/en_index.md.C6RIk4Q2.js @@ -1 +1 @@ -import{_ as e,c as t,o as i}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"LiteyukiBot","tagline":"An integrated chat bot application and management framework","actions":[{"theme":"brand","text":"🚀 Get Started","link":"./deploy/install"},{"theme":"alt","text":"📖 Manual","link":"./usage/basic"},{"theme":"alt","text":"📦 Extensions","link":"./store/"},{"theme":"alt","text":"🛠️ Development","link":"./dev/guide"}],"image":{"light":"/liteyuki.svg","dark":"/liteyuki-dark.svg","alt":"Liteyuki Logo"}},"features":[{"title":"Ecological Diversity","icon":"🛠️","details":"Based on the liteyuki framework, compatible with any Python bot framework and application","link":"./dev/api"},{"title":"Pluggable","icon":"🧩","details":"Use package manager for convenient management of plugins and resource packs","link":"./store/plugin"},{"title":"Customizable","icon":"🎨","details":"Fully customize the appearance using resource packs","link":"./store/resource"},{"title":"Localization","icon":"🌐","details":"Support for multiple languages through resource packs","link":"https://baike.baidu.com/item/i18n/6771940"},{"title":"Easy to use","icon":"⚙️","details":"No complicated pre-process, ready to use out of the box","link":"./deploy/config"},{"title":"High Performance","icon":"🚀","details":"500 plugins, starts within 2 seconds"},{"title":"Rolling Updates","icon":"☁️","details":"Keep your robot up to date with the latest commits"},{"title":"Open Source","icon":"📄","details":"The project follows the LSO LICENSE and is open to contributions","link":"https://github.com/LiteyukiStudio/LiteyukiStudioOpensourceLICENSE"}]},"headers":[],"relativePath":"en/index.md","filePath":"en/index.md","lastUpdated":1734116271000}'),a={name:"en/index.md"};function o(n,l,s,r,c,d){return i(),t("div")}const m=e(a,[["render",o]]);export{u as __pageData,m as default}; +import{_ as e,c as t,o as i}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"LiteyukiBot","tagline":"An integrated chat bot application and management framework","actions":[{"theme":"brand","text":"🚀 Get Started","link":"./deploy/install"},{"theme":"alt","text":"📖 Manual","link":"./usage/basic"},{"theme":"alt","text":"📦 Extensions","link":"./store/"},{"theme":"alt","text":"🛠️ Development","link":"./dev/guide"}],"image":{"light":"/liteyuki.svg","dark":"/liteyuki-dark.svg","alt":"Liteyuki Logo"}},"features":[{"title":"Ecological Diversity","icon":"🛠️","details":"Based on the liteyuki framework, compatible with any Python bot framework and application","link":"./dev/api"},{"title":"Pluggable","icon":"🧩","details":"Use package manager for convenient management of plugins and resource packs","link":"./store/plugin"},{"title":"Customizable","icon":"🎨","details":"Fully customize the appearance using resource packs","link":"./store/resource"},{"title":"Localization","icon":"🌐","details":"Support for multiple languages through resource packs","link":"https://baike.baidu.com/item/i18n/6771940"},{"title":"Easy to use","icon":"⚙️","details":"No complicated pre-process, ready to use out of the box","link":"./deploy/config"},{"title":"High Performance","icon":"🚀","details":"500 plugins, starts within 2 seconds"},{"title":"Rolling Updates","icon":"☁️","details":"Keep your robot up to date with the latest commits"},{"title":"Open Source","icon":"📄","details":"The project follows the LSO LICENSE and is open to contributions","link":"https://github.com/LiteyukiStudio/LiteyukiStudioOpensourceLICENSE"}]},"headers":[],"relativePath":"en/index.md","filePath":"en/index.md","lastUpdated":1734116271000}'),a={name:"en/index.md"};function o(n,l,s,r,c,d){return i(),t("div")}const m=e(a,[["render",o]]);export{u as __pageData,m as default}; diff --git a/assets/en_index.md.wjzMjZdd.lean.js b/assets/en_index.md.C6RIk4Q2.lean.js similarity index 96% rename from assets/en_index.md.wjzMjZdd.lean.js rename to assets/en_index.md.C6RIk4Q2.lean.js index e07bb8f1..dda727e2 100644 --- a/assets/en_index.md.wjzMjZdd.lean.js +++ b/assets/en_index.md.C6RIk4Q2.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as i}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"LiteyukiBot","tagline":"An integrated chat bot application and management framework","actions":[{"theme":"brand","text":"🚀 Get Started","link":"./deploy/install"},{"theme":"alt","text":"📖 Manual","link":"./usage/basic"},{"theme":"alt","text":"📦 Extensions","link":"./store/"},{"theme":"alt","text":"🛠️ Development","link":"./dev/guide"}],"image":{"light":"/liteyuki.svg","dark":"/liteyuki-dark.svg","alt":"Liteyuki Logo"}},"features":[{"title":"Ecological Diversity","icon":"🛠️","details":"Based on the liteyuki framework, compatible with any Python bot framework and application","link":"./dev/api"},{"title":"Pluggable","icon":"🧩","details":"Use package manager for convenient management of plugins and resource packs","link":"./store/plugin"},{"title":"Customizable","icon":"🎨","details":"Fully customize the appearance using resource packs","link":"./store/resource"},{"title":"Localization","icon":"🌐","details":"Support for multiple languages through resource packs","link":"https://baike.baidu.com/item/i18n/6771940"},{"title":"Easy to use","icon":"⚙️","details":"No complicated pre-process, ready to use out of the box","link":"./deploy/config"},{"title":"High Performance","icon":"🚀","details":"500 plugins, starts within 2 seconds"},{"title":"Rolling Updates","icon":"☁️","details":"Keep your robot up to date with the latest commits"},{"title":"Open Source","icon":"📄","details":"The project follows the LSO LICENSE and is open to contributions","link":"https://github.com/LiteyukiStudio/LiteyukiStudioOpensourceLICENSE"}]},"headers":[],"relativePath":"en/index.md","filePath":"en/index.md","lastUpdated":1734116271000}'),a={name:"en/index.md"};function o(n,l,s,r,c,d){return i(),t("div")}const m=e(a,[["render",o]]);export{u as __pageData,m as default}; +import{_ as e,c as t,o as i}from"./chunks/framework.BUxnStXl.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"LiteyukiBot","tagline":"An integrated chat bot application and management framework","actions":[{"theme":"brand","text":"🚀 Get Started","link":"./deploy/install"},{"theme":"alt","text":"📖 Manual","link":"./usage/basic"},{"theme":"alt","text":"📦 Extensions","link":"./store/"},{"theme":"alt","text":"🛠️ Development","link":"./dev/guide"}],"image":{"light":"/liteyuki.svg","dark":"/liteyuki-dark.svg","alt":"Liteyuki Logo"}},"features":[{"title":"Ecological Diversity","icon":"🛠️","details":"Based on the liteyuki framework, compatible with any Python bot framework and application","link":"./dev/api"},{"title":"Pluggable","icon":"🧩","details":"Use package manager for convenient management of plugins and resource packs","link":"./store/plugin"},{"title":"Customizable","icon":"🎨","details":"Fully customize the appearance using resource packs","link":"./store/resource"},{"title":"Localization","icon":"🌐","details":"Support for multiple languages through resource packs","link":"https://baike.baidu.com/item/i18n/6771940"},{"title":"Easy to use","icon":"⚙️","details":"No complicated pre-process, ready to use out of the box","link":"./deploy/config"},{"title":"High Performance","icon":"🚀","details":"500 plugins, starts within 2 seconds"},{"title":"Rolling Updates","icon":"☁️","details":"Keep your robot up to date with the latest commits"},{"title":"Open Source","icon":"📄","details":"The project follows the LSO LICENSE and is open to contributions","link":"https://github.com/LiteyukiStudio/LiteyukiStudioOpensourceLICENSE"}]},"headers":[],"relativePath":"en/index.md","filePath":"en/index.md","lastUpdated":1734116271000}'),a={name:"en/index.md"};function o(n,l,s,r,c,d){return i(),t("div")}const m=e(a,[["render",o]]);export{u as __pageData,m as default}; diff --git a/assets/en_store_plugin.md.CZ_WhmmD.js b/assets/en_store_plugin.md.CZ_WhmmD.js new file mode 100644 index 00000000..1bb42e80 --- /dev/null +++ b/assets/en_store_plugin.md.CZ_WhmmD.js @@ -0,0 +1 @@ +import{_ as t,C as n,c as o,o as r,G as a}from"./chunks/framework.BUxnStXl.js";const g=JSON.parse('{"title":"Plugin Store","description":"","frontmatter":{"title":"Plugin Store","order":2},"headers":[],"relativePath":"en/store/plugin.md","filePath":"en/store/plugin.md","lastUpdated":1734116271000}'),s={name:"en/store/plugin.md"};function l(i,c,p,d,u,_){const e=n("PluginStore");return r(),o("div",null,[a(e)])}const f=t(s,[["render",l]]);export{g as __pageData,f as default}; diff --git a/assets/en_store_plugin.md.CZ_WhmmD.lean.js b/assets/en_store_plugin.md.CZ_WhmmD.lean.js new file mode 100644 index 00000000..1bb42e80 --- /dev/null +++ b/assets/en_store_plugin.md.CZ_WhmmD.lean.js @@ -0,0 +1 @@ +import{_ as t,C as n,c as o,o as r,G as a}from"./chunks/framework.BUxnStXl.js";const g=JSON.parse('{"title":"Plugin Store","description":"","frontmatter":{"title":"Plugin Store","order":2},"headers":[],"relativePath":"en/store/plugin.md","filePath":"en/store/plugin.md","lastUpdated":1734116271000}'),s={name:"en/store/plugin.md"};function l(i,c,p,d,u,_){const e=n("PluginStore");return r(),o("div",null,[a(e)])}const f=t(s,[["render",l]]);export{g as __pageData,f as default}; diff --git a/assets/en_store_plugin.md.DyVVfnXg.js b/assets/en_store_plugin.md.DyVVfnXg.js deleted file mode 100644 index 8631b94c..00000000 --- a/assets/en_store_plugin.md.DyVVfnXg.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as n,G as o,B as r,o as a}from"./chunks/framework.v7PlT0Wt.js";const g=JSON.parse('{"title":"Plugin Store","description":"","frontmatter":{"title":"Plugin Store","order":2},"headers":[],"relativePath":"en/store/plugin.md","filePath":"en/store/plugin.md","lastUpdated":1734116271000}'),s={name:"en/store/plugin.md"};function l(i,c,p,d,u,_){const e=r("PluginStore");return a(),n("div",null,[o(e)])}const f=t(s,[["render",l]]);export{g as __pageData,f as default}; diff --git a/assets/en_store_plugin.md.DyVVfnXg.lean.js b/assets/en_store_plugin.md.DyVVfnXg.lean.js deleted file mode 100644 index 8631b94c..00000000 --- a/assets/en_store_plugin.md.DyVVfnXg.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as n,G as o,B as r,o as a}from"./chunks/framework.v7PlT0Wt.js";const g=JSON.parse('{"title":"Plugin Store","description":"","frontmatter":{"title":"Plugin Store","order":2},"headers":[],"relativePath":"en/store/plugin.md","filePath":"en/store/plugin.md","lastUpdated":1734116271000}'),s={name:"en/store/plugin.md"};function l(i,c,p,d,u,_){const e=r("PluginStore");return a(),n("div",null,[o(e)])}const f=t(s,[["render",l]]);export{g as __pageData,f as default}; diff --git a/assets/en_store_resource.md.ClNfFpQd.js b/assets/en_store_resource.md.ClNfFpQd.js deleted file mode 100644 index d8d77224..00000000 --- a/assets/en_store_resource.md.ClNfFpQd.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as r,G as o,B as s,o as a}from"./chunks/framework.v7PlT0Wt.js";const f=JSON.parse('{"title":"Resource Store","description":"","frontmatter":{"title":"Resource Store","order":1},"headers":[],"relativePath":"en/store/resource.md","filePath":"en/store/resource.md","lastUpdated":1734116271000}'),c={name:"en/store/resource.md"};function n(d,p,_,l,i,m){const e=s("ResStore");return a(),r("div",null,[o(e)])}const S=t(c,[["render",n]]);export{f as __pageData,S as default}; diff --git a/assets/en_store_resource.md.ClNfFpQd.lean.js b/assets/en_store_resource.md.ClNfFpQd.lean.js deleted file mode 100644 index d8d77224..00000000 --- a/assets/en_store_resource.md.ClNfFpQd.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as r,G as o,B as s,o as a}from"./chunks/framework.v7PlT0Wt.js";const f=JSON.parse('{"title":"Resource Store","description":"","frontmatter":{"title":"Resource Store","order":1},"headers":[],"relativePath":"en/store/resource.md","filePath":"en/store/resource.md","lastUpdated":1734116271000}'),c={name:"en/store/resource.md"};function n(d,p,_,l,i,m){const e=s("ResStore");return a(),r("div",null,[o(e)])}const S=t(c,[["render",n]]);export{f as __pageData,S as default}; diff --git a/assets/en_store_resource.md.DizNjwji.js b/assets/en_store_resource.md.DizNjwji.js new file mode 100644 index 00000000..a9f6e050 --- /dev/null +++ b/assets/en_store_resource.md.DizNjwji.js @@ -0,0 +1 @@ +import{_ as t,C as r,c as o,o as s,G as a}from"./chunks/framework.BUxnStXl.js";const f=JSON.parse('{"title":"Resource Store","description":"","frontmatter":{"title":"Resource Store","order":1},"headers":[],"relativePath":"en/store/resource.md","filePath":"en/store/resource.md","lastUpdated":1734116271000}'),c={name:"en/store/resource.md"};function n(d,p,_,l,i,m){const e=r("ResStore");return s(),o("div",null,[a(e)])}const S=t(c,[["render",n]]);export{f as __pageData,S as default}; diff --git a/assets/en_store_resource.md.DizNjwji.lean.js b/assets/en_store_resource.md.DizNjwji.lean.js new file mode 100644 index 00000000..a9f6e050 --- /dev/null +++ b/assets/en_store_resource.md.DizNjwji.lean.js @@ -0,0 +1 @@ +import{_ as t,C as r,c as o,o as s,G as a}from"./chunks/framework.BUxnStXl.js";const f=JSON.parse('{"title":"Resource Store","description":"","frontmatter":{"title":"Resource Store","order":1},"headers":[],"relativePath":"en/store/resource.md","filePath":"en/store/resource.md","lastUpdated":1734116271000}'),c={name:"en/store/resource.md"};function n(d,p,_,l,i,m){const e=r("ResStore");return s(),o("div",null,[a(e)])}const S=t(c,[["render",n]]);export{f as __pageData,S as default}; diff --git a/assets/en_usage_agreement.md.BAeUOi9b.js b/assets/en_usage_agreement.md.BAeUOi9b.js deleted file mode 100644 index 4b4f5b54..00000000 --- a/assets/en_usage_agreement.md.BAeUOi9b.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,a7 as o,o as l}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"用户协议","description":"","frontmatter":{"title":"用户协议","order":3},"headers":[],"relativePath":"en/usage/agreement.md","filePath":"en/usage/agreement.md","lastUpdated":1734116271000}'),r={name:"en/usage/agreement.md"};function i(n,e,d,s,c,m){return l(),a("div",null,e[0]||(e[0]=[o('

用户协议

  1. 本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息
  2. 你可以选择开启auto_report(默认开启),轻雪会收集以下内容
    • 运行环境的设备信息:CPU,内存,系统信息及Python信息
    • 插件信息(不含插件数据)
    • 部分异常信息,
    • 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务器,若你不希望提供这些信息,可以在配置文件中把auto_report设定为false
  3. 本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性
  4. 使用此项目代表你已经同意以上协议
',2)]))}const _=t(r,[["render",i]]);export{u as __pageData,_ as default}; diff --git a/assets/en_usage_agreement.md.BAeUOi9b.lean.js b/assets/en_usage_agreement.md.BAeUOi9b.lean.js deleted file mode 100644 index 4b4f5b54..00000000 --- a/assets/en_usage_agreement.md.BAeUOi9b.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,a7 as o,o as l}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"用户协议","description":"","frontmatter":{"title":"用户协议","order":3},"headers":[],"relativePath":"en/usage/agreement.md","filePath":"en/usage/agreement.md","lastUpdated":1734116271000}'),r={name:"en/usage/agreement.md"};function i(n,e,d,s,c,m){return l(),a("div",null,e[0]||(e[0]=[o('

用户协议

  1. 本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息
  2. 你可以选择开启auto_report(默认开启),轻雪会收集以下内容
    • 运行环境的设备信息:CPU,内存,系统信息及Python信息
    • 插件信息(不含插件数据)
    • 部分异常信息,
    • 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务器,若你不希望提供这些信息,可以在配置文件中把auto_report设定为false
  3. 本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性
  4. 使用此项目代表你已经同意以上协议
',2)]))}const _=t(r,[["render",i]]);export{u as __pageData,_ as default}; diff --git a/assets/en_usage_agreement.md.BX7O0VXK.js b/assets/en_usage_agreement.md.BX7O0VXK.js new file mode 100644 index 00000000..c0ea3c94 --- /dev/null +++ b/assets/en_usage_agreement.md.BX7O0VXK.js @@ -0,0 +1 @@ +import{_ as t,c as a,o,al as l}from"./chunks/framework.BUxnStXl.js";const p=JSON.parse('{"title":"用户协议","description":"","frontmatter":{"title":"用户协议","order":3},"headers":[],"relativePath":"en/usage/agreement.md","filePath":"en/usage/agreement.md","lastUpdated":1734116271000}'),r={name:"en/usage/agreement.md"};function i(n,e,d,s,c,_){return o(),a("div",null,e[0]||(e[0]=[l('

用户协议

  1. 本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息
  2. 你可以选择开启auto_report(默认开启),轻雪会收集以下内容
    • 运行环境的设备信息:CPU,内存,系统信息及Python信息
    • 插件信息(不含插件数据)
    • 部分异常信息,
    • 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务器,若你不希望提供这些信息,可以在配置文件中把auto_report设定为false
  3. 本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性
  4. 使用此项目代表你已经同意以上协议
',2)]))}const u=t(r,[["render",i]]);export{p as __pageData,u as default}; diff --git a/assets/en_usage_agreement.md.BX7O0VXK.lean.js b/assets/en_usage_agreement.md.BX7O0VXK.lean.js new file mode 100644 index 00000000..e9d9c229 --- /dev/null +++ b/assets/en_usage_agreement.md.BX7O0VXK.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o,al as l}from"./chunks/framework.BUxnStXl.js";const p=JSON.parse('{"title":"用户协议","description":"","frontmatter":{"title":"用户协议","order":3},"headers":[],"relativePath":"en/usage/agreement.md","filePath":"en/usage/agreement.md","lastUpdated":1734116271000}'),r={name:"en/usage/agreement.md"};function i(n,e,d,s,c,_){return o(),a("div",null,e[0]||(e[0]=[l("",2)]))}const u=t(r,[["render",i]]);export{p as __pageData,u as default}; diff --git a/assets/en_usage_basic.md.bPKzNgL6.js b/assets/en_usage_basic.md.C4neBE65.js similarity index 98% rename from assets/en_usage_basic.md.bPKzNgL6.js rename to assets/en_usage_basic.md.C4neBE65.js index f7c318f9..7a102b58 100644 --- a/assets/en_usage_basic.md.bPKzNgL6.js +++ b/assets/en_usage_basic.md.C4neBE65.js @@ -1 +1 @@ -import{_ as e,c as d,a7 as l,o as n}from"./chunks/framework.v7PlT0Wt.js";const x=JSON.parse('{"title":"基础插件","description":"","frontmatter":{"title":"基础插件","order":1},"headers":[],"relativePath":"en/usage/basic.md","filePath":"en/usage/basic.md","lastUpdated":1734116271000}'),r={name:"en/usage/basic.md"};function a(c,t,i,s,o,g){return n(),d("div",null,t[0]||(t[0]=[l('

基础插件


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查询
',22)]))}const h=e(r,[["render",a]]);export{x as __pageData,h as default}; +import{_ as e,c as d,o as l,al as n}from"./chunks/framework.BUxnStXl.js";const x=JSON.parse('{"title":"基础插件","description":"","frontmatter":{"title":"基础插件","order":1},"headers":[],"relativePath":"en/usage/basic.md","filePath":"en/usage/basic.md","lastUpdated":1734116271000}'),r={name:"en/usage/basic.md"};function a(c,t,i,s,o,g){return l(),d("div",null,t[0]||(t[0]=[n('

基础插件


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查询
',22)]))}const h=e(r,[["render",a]]);export{x as __pageData,h as default}; diff --git a/assets/en_usage_basic.md.C4neBE65.lean.js b/assets/en_usage_basic.md.C4neBE65.lean.js new file mode 100644 index 00000000..d06363e9 --- /dev/null +++ b/assets/en_usage_basic.md.C4neBE65.lean.js @@ -0,0 +1 @@ +import{_ as e,c as d,o as l,al as n}from"./chunks/framework.BUxnStXl.js";const x=JSON.parse('{"title":"基础插件","description":"","frontmatter":{"title":"基础插件","order":1},"headers":[],"relativePath":"en/usage/basic.md","filePath":"en/usage/basic.md","lastUpdated":1734116271000}'),r={name:"en/usage/basic.md"};function a(c,t,i,s,o,g){return l(),d("div",null,t[0]||(t[0]=[n("",22)]))}const h=e(r,[["render",a]]);export{x as __pageData,h as default}; diff --git a/assets/en_usage_basic.md.bPKzNgL6.lean.js b/assets/en_usage_basic.md.bPKzNgL6.lean.js deleted file mode 100644 index f7c318f9..00000000 --- a/assets/en_usage_basic.md.bPKzNgL6.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as d,a7 as l,o as n}from"./chunks/framework.v7PlT0Wt.js";const x=JSON.parse('{"title":"基础插件","description":"","frontmatter":{"title":"基础插件","order":1},"headers":[],"relativePath":"en/usage/basic.md","filePath":"en/usage/basic.md","lastUpdated":1734116271000}'),r={name:"en/usage/basic.md"};function a(c,t,i,s,o,g){return n(),d("div",null,t[0]||(t[0]=[l('

基础插件


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查询
',22)]))}const h=e(r,[["render",a]]);export{x as __pageData,h as default}; diff --git a/assets/en_usage_extra.md.0jxEAWnx.lean.js b/assets/en_usage_extra.md.0jxEAWnx.lean.js deleted file mode 100644 index cfcd8bb5..00000000 --- a/assets/en_usage_extra.md.0jxEAWnx.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as s,a7 as i,o as a}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"功能命令","description":"","frontmatter":{"title":"功能命令","order":2},"headers":[],"relativePath":"en/usage/extra.md","filePath":"en/usage/extra.md","lastUpdated":1734116271000}'),l={name:"en/usage/extra.md"};function d(n,t,r,h,o,p){return a(),s("div",null,t[0]||(t[0]=[i('

功能插件命令

轻雪天气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
',20)]))}const g=e(l,[["render",d]]);export{k as __pageData,g as default}; diff --git a/assets/en_usage_extra.md.0jxEAWnx.js b/assets/en_usage_extra.md.DPI6MdLC.js similarity index 97% rename from assets/en_usage_extra.md.0jxEAWnx.js rename to assets/en_usage_extra.md.DPI6MdLC.js index cfcd8bb5..19b49d00 100644 --- a/assets/en_usage_extra.md.0jxEAWnx.js +++ b/assets/en_usage_extra.md.DPI6MdLC.js @@ -1 +1 @@ -import{_ as e,c as s,a7 as i,o as a}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"功能命令","description":"","frontmatter":{"title":"功能命令","order":2},"headers":[],"relativePath":"en/usage/extra.md","filePath":"en/usage/extra.md","lastUpdated":1734116271000}'),l={name:"en/usage/extra.md"};function d(n,t,r,h,o,p){return a(),s("div",null,t[0]||(t[0]=[i('

功能插件命令

轻雪天气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
',20)]))}const g=e(l,[["render",d]]);export{k as __pageData,g as default}; +import{_ as e,c as s,o as i,al as a}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"功能命令","description":"","frontmatter":{"title":"功能命令","order":2},"headers":[],"relativePath":"en/usage/extra.md","filePath":"en/usage/extra.md","lastUpdated":1734116271000}'),l={name:"en/usage/extra.md"};function d(n,t,r,h,o,p){return i(),s("div",null,t[0]||(t[0]=[a('

功能插件命令

轻雪天气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
',20)]))}const g=e(l,[["render",d]]);export{k as __pageData,g as default}; diff --git a/assets/en_usage_extra.md.DPI6MdLC.lean.js b/assets/en_usage_extra.md.DPI6MdLC.lean.js new file mode 100644 index 00000000..108c2823 --- /dev/null +++ b/assets/en_usage_extra.md.DPI6MdLC.lean.js @@ -0,0 +1 @@ +import{_ as e,c as s,o as i,al as a}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"功能命令","description":"","frontmatter":{"title":"功能命令","order":2},"headers":[],"relativePath":"en/usage/extra.md","filePath":"en/usage/extra.md","lastUpdated":1734116271000}'),l={name:"en/usage/extra.md"};function d(n,t,r,h,o,p){return i(),s("div",null,t[0]||(t[0]=[a("",20)]))}const g=e(l,[["render",d]]);export{k as __pageData,g as default}; diff --git a/assets/index.md.Di9XkcId.js b/assets/index.md.B3BfLzof.js similarity index 96% rename from assets/index.md.Di9XkcId.js rename to assets/index.md.B3BfLzof.js index 6106a83e..6da1d44c 100644 --- a/assets/index.md.Di9XkcId.js +++ b/assets/index.md.B3BfLzof.js @@ -1 +1 @@ -import{_ as t,c as e,o as i}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"轻雪机器人","tagline":"一个综合性的聊天机器人应用及管理框架","actions":[{"theme":"brand","text":"🚀 快速开始","link":"./deploy/install"},{"theme":"alt","text":"📖 使用手册","link":"./usage/basic"},{"theme":"alt","text":"📦 扩展","link":"./store/resource"},{"theme":"alt","text":"🛠️ 开发","link":"./dev/guide"}],"image":{"light":"./liteyuki.svg","dark":"./liteyuki-dark.svg","alt":"Liteyuki Logo"}},"features":[{"title":"生态良好","icon":"🛠️","details":"基于轻雪框架,原生支持任意Python Bot框架和应用程序","link":"./dev/api"},{"title":"插件管理","icon":"🧩","details":"使用包管理器,便捷管理插件及资源包","link":"./store/plugin"},{"title":"自由定制","icon":"🎨","details":"使用资源包对外观进行完全自定义","link":"./store/resource"},{"title":"国际化","icon":"🌐","details":"通过资源包支持多种语言","link":"https://baike.baidu.com/item/i18n/6771940"},{"title":"简易使用","icon":"⚙️","details":"无需繁琐前期过程,开箱即用","link":"./deploy/config"},{"title":"超高性能","icon":"🚀","details":"500个插件,2秒内启动"},{"title":"滚动更新","icon":"☁️","details":"让你的机器人保持最新提交"},{"title":"开源项目","icon":"📄","details":"项目遵循LSO LICENCE开源,欢迎各位的贡献","link":"https://github.com/LiteyukiStudio/LiteyukiStudioOpensourceLICENSE"}]},"headers":[],"relativePath":"index.md","filePath":"zh/index.md","lastUpdated":1734116271000}'),a={name:"index.md"};function l(n,o,s,d,c,r){return i(),e("div")}const m=t(a,[["render",l]]);export{k as __pageData,m as default}; +import{_ as t,c as e,o as i}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"轻雪机器人","tagline":"一个综合性的聊天机器人应用及管理框架","actions":[{"theme":"brand","text":"🚀 快速开始","link":"./deploy/install"},{"theme":"alt","text":"📖 使用手册","link":"./usage/basic"},{"theme":"alt","text":"📦 扩展","link":"./store/resource"},{"theme":"alt","text":"🛠️ 开发","link":"./dev/guide"}],"image":{"light":"./liteyuki.svg","dark":"./liteyuki-dark.svg","alt":"Liteyuki Logo"}},"features":[{"title":"生态良好","icon":"🛠️","details":"基于轻雪框架,原生支持任意Python Bot框架和应用程序","link":"./dev/api"},{"title":"插件管理","icon":"🧩","details":"使用包管理器,便捷管理插件及资源包","link":"./store/plugin"},{"title":"自由定制","icon":"🎨","details":"使用资源包对外观进行完全自定义","link":"./store/resource"},{"title":"国际化","icon":"🌐","details":"通过资源包支持多种语言","link":"https://baike.baidu.com/item/i18n/6771940"},{"title":"简易使用","icon":"⚙️","details":"无需繁琐前期过程,开箱即用","link":"./deploy/config"},{"title":"超高性能","icon":"🚀","details":"500个插件,2秒内启动"},{"title":"滚动更新","icon":"☁️","details":"让你的机器人保持最新提交"},{"title":"开源项目","icon":"📄","details":"项目遵循LSO LICENCE开源,欢迎各位的贡献","link":"https://github.com/LiteyukiStudio/LiteyukiStudioOpensourceLICENSE"}]},"headers":[],"relativePath":"index.md","filePath":"zh/index.md","lastUpdated":1734116271000}'),a={name:"index.md"};function l(n,o,s,d,c,r){return i(),e("div")}const m=t(a,[["render",l]]);export{k as __pageData,m as default}; diff --git a/assets/index.md.Di9XkcId.lean.js b/assets/index.md.B3BfLzof.lean.js similarity index 96% rename from assets/index.md.Di9XkcId.lean.js rename to assets/index.md.B3BfLzof.lean.js index 6106a83e..6da1d44c 100644 --- a/assets/index.md.Di9XkcId.lean.js +++ b/assets/index.md.B3BfLzof.lean.js @@ -1 +1 @@ -import{_ as t,c as e,o as i}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"轻雪机器人","tagline":"一个综合性的聊天机器人应用及管理框架","actions":[{"theme":"brand","text":"🚀 快速开始","link":"./deploy/install"},{"theme":"alt","text":"📖 使用手册","link":"./usage/basic"},{"theme":"alt","text":"📦 扩展","link":"./store/resource"},{"theme":"alt","text":"🛠️ 开发","link":"./dev/guide"}],"image":{"light":"./liteyuki.svg","dark":"./liteyuki-dark.svg","alt":"Liteyuki Logo"}},"features":[{"title":"生态良好","icon":"🛠️","details":"基于轻雪框架,原生支持任意Python Bot框架和应用程序","link":"./dev/api"},{"title":"插件管理","icon":"🧩","details":"使用包管理器,便捷管理插件及资源包","link":"./store/plugin"},{"title":"自由定制","icon":"🎨","details":"使用资源包对外观进行完全自定义","link":"./store/resource"},{"title":"国际化","icon":"🌐","details":"通过资源包支持多种语言","link":"https://baike.baidu.com/item/i18n/6771940"},{"title":"简易使用","icon":"⚙️","details":"无需繁琐前期过程,开箱即用","link":"./deploy/config"},{"title":"超高性能","icon":"🚀","details":"500个插件,2秒内启动"},{"title":"滚动更新","icon":"☁️","details":"让你的机器人保持最新提交"},{"title":"开源项目","icon":"📄","details":"项目遵循LSO LICENCE开源,欢迎各位的贡献","link":"https://github.com/LiteyukiStudio/LiteyukiStudioOpensourceLICENSE"}]},"headers":[],"relativePath":"index.md","filePath":"zh/index.md","lastUpdated":1734116271000}'),a={name:"index.md"};function l(n,o,s,d,c,r){return i(),e("div")}const m=t(a,[["render",l]]);export{k as __pageData,m as default}; +import{_ as t,c as e,o as i}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"轻雪机器人","tagline":"一个综合性的聊天机器人应用及管理框架","actions":[{"theme":"brand","text":"🚀 快速开始","link":"./deploy/install"},{"theme":"alt","text":"📖 使用手册","link":"./usage/basic"},{"theme":"alt","text":"📦 扩展","link":"./store/resource"},{"theme":"alt","text":"🛠️ 开发","link":"./dev/guide"}],"image":{"light":"./liteyuki.svg","dark":"./liteyuki-dark.svg","alt":"Liteyuki Logo"}},"features":[{"title":"生态良好","icon":"🛠️","details":"基于轻雪框架,原生支持任意Python Bot框架和应用程序","link":"./dev/api"},{"title":"插件管理","icon":"🧩","details":"使用包管理器,便捷管理插件及资源包","link":"./store/plugin"},{"title":"自由定制","icon":"🎨","details":"使用资源包对外观进行完全自定义","link":"./store/resource"},{"title":"国际化","icon":"🌐","details":"通过资源包支持多种语言","link":"https://baike.baidu.com/item/i18n/6771940"},{"title":"简易使用","icon":"⚙️","details":"无需繁琐前期过程,开箱即用","link":"./deploy/config"},{"title":"超高性能","icon":"🚀","details":"500个插件,2秒内启动"},{"title":"滚动更新","icon":"☁️","details":"让你的机器人保持最新提交"},{"title":"开源项目","icon":"📄","details":"项目遵循LSO LICENCE开源,欢迎各位的贡献","link":"https://github.com/LiteyukiStudio/LiteyukiStudioOpensourceLICENSE"}]},"headers":[],"relativePath":"index.md","filePath":"zh/index.md","lastUpdated":1734116271000}'),a={name:"index.md"};function l(n,o,s,d,c,r){return i(),e("div")}const m=t(a,[["render",l]]);export{k as __pageData,m as default}; diff --git a/assets/store_plugin.md.20BP8Xz5.js b/assets/store_plugin.md.20BP8Xz5.js deleted file mode 100644 index 83e21479..00000000 --- a/assets/store_plugin.md.20BP8Xz5.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as o,G as n,B as r,o as a}from"./chunks/framework.v7PlT0Wt.js";const f=JSON.parse('{"title":"插件商店","description":"","frontmatter":{"title":"插件商店","order":2},"headers":[],"relativePath":"store/plugin.md","filePath":"zh/store/plugin.md","lastUpdated":1734116271000}'),s={name:"store/plugin.md"};function c(l,p,i,d,_,m){const e=r("PluginStore");return a(),o("div",null,[n(e)])}const g=t(s,[["render",c]]);export{f as __pageData,g as default}; diff --git a/assets/store_plugin.md.20BP8Xz5.lean.js b/assets/store_plugin.md.20BP8Xz5.lean.js deleted file mode 100644 index 83e21479..00000000 --- a/assets/store_plugin.md.20BP8Xz5.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as o,G as n,B as r,o as a}from"./chunks/framework.v7PlT0Wt.js";const f=JSON.parse('{"title":"插件商店","description":"","frontmatter":{"title":"插件商店","order":2},"headers":[],"relativePath":"store/plugin.md","filePath":"zh/store/plugin.md","lastUpdated":1734116271000}'),s={name:"store/plugin.md"};function c(l,p,i,d,_,m){const e=r("PluginStore");return a(),o("div",null,[n(e)])}const g=t(s,[["render",c]]);export{f as __pageData,g as default}; diff --git a/assets/store_plugin.md.C6Kpa2EC.js b/assets/store_plugin.md.C6Kpa2EC.js new file mode 100644 index 00000000..33ff6856 --- /dev/null +++ b/assets/store_plugin.md.C6Kpa2EC.js @@ -0,0 +1 @@ +import{_ as t,C as o,c as n,o as r,G as a}from"./chunks/framework.BUxnStXl.js";const f=JSON.parse('{"title":"插件商店","description":"","frontmatter":{"title":"插件商店","order":2},"headers":[],"relativePath":"store/plugin.md","filePath":"zh/store/plugin.md","lastUpdated":1734116271000}'),s={name:"store/plugin.md"};function c(l,p,i,d,_,m){const e=o("PluginStore");return r(),n("div",null,[a(e)])}const g=t(s,[["render",c]]);export{f as __pageData,g as default}; diff --git a/assets/store_plugin.md.C6Kpa2EC.lean.js b/assets/store_plugin.md.C6Kpa2EC.lean.js new file mode 100644 index 00000000..33ff6856 --- /dev/null +++ b/assets/store_plugin.md.C6Kpa2EC.lean.js @@ -0,0 +1 @@ +import{_ as t,C as o,c as n,o as r,G as a}from"./chunks/framework.BUxnStXl.js";const f=JSON.parse('{"title":"插件商店","description":"","frontmatter":{"title":"插件商店","order":2},"headers":[],"relativePath":"store/plugin.md","filePath":"zh/store/plugin.md","lastUpdated":1734116271000}'),s={name:"store/plugin.md"};function c(l,p,i,d,_,m){const e=o("PluginStore");return r(),n("div",null,[a(e)])}const g=t(s,[["render",c]]);export{f as __pageData,g as default}; diff --git a/assets/store_resource.md.DN5P0drK.js b/assets/store_resource.md.DN5P0drK.js deleted file mode 100644 index aebb2b11..00000000 --- a/assets/store_resource.md.DN5P0drK.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as r,G as o,B as s,o as a}from"./chunks/framework.v7PlT0Wt.js";const f=JSON.parse('{"title":"资源商店","description":"","frontmatter":{"title":"资源商店","order":1},"headers":[],"relativePath":"store/resource.md","filePath":"zh/store/resource.md","lastUpdated":1734116271000}'),c={name:"store/resource.md"};function n(d,p,_,l,i,m){const e=s("ResStore");return a(),r("div",null,[o(e)])}const h=t(c,[["render",n]]);export{f as __pageData,h as default}; diff --git a/assets/store_resource.md.DN5P0drK.lean.js b/assets/store_resource.md.DN5P0drK.lean.js deleted file mode 100644 index aebb2b11..00000000 --- a/assets/store_resource.md.DN5P0drK.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as r,G as o,B as s,o as a}from"./chunks/framework.v7PlT0Wt.js";const f=JSON.parse('{"title":"资源商店","description":"","frontmatter":{"title":"资源商店","order":1},"headers":[],"relativePath":"store/resource.md","filePath":"zh/store/resource.md","lastUpdated":1734116271000}'),c={name:"store/resource.md"};function n(d,p,_,l,i,m){const e=s("ResStore");return a(),r("div",null,[o(e)])}const h=t(c,[["render",n]]);export{f as __pageData,h as default}; diff --git a/assets/store_resource.md.gIoXHMek.js b/assets/store_resource.md.gIoXHMek.js new file mode 100644 index 00000000..7351269a --- /dev/null +++ b/assets/store_resource.md.gIoXHMek.js @@ -0,0 +1 @@ +import{_ as t,C as r,c as o,o as s,G as a}from"./chunks/framework.BUxnStXl.js";const f=JSON.parse('{"title":"资源商店","description":"","frontmatter":{"title":"资源商店","order":1},"headers":[],"relativePath":"store/resource.md","filePath":"zh/store/resource.md","lastUpdated":1734116271000}'),c={name:"store/resource.md"};function n(d,p,_,l,i,m){const e=r("ResStore");return s(),o("div",null,[a(e)])}const h=t(c,[["render",n]]);export{f as __pageData,h as default}; diff --git a/assets/store_resource.md.gIoXHMek.lean.js b/assets/store_resource.md.gIoXHMek.lean.js new file mode 100644 index 00000000..7351269a --- /dev/null +++ b/assets/store_resource.md.gIoXHMek.lean.js @@ -0,0 +1 @@ +import{_ as t,C as r,c as o,o as s,G as a}from"./chunks/framework.BUxnStXl.js";const f=JSON.parse('{"title":"资源商店","description":"","frontmatter":{"title":"资源商店","order":1},"headers":[],"relativePath":"store/resource.md","filePath":"zh/store/resource.md","lastUpdated":1734116271000}'),c={name:"store/resource.md"};function n(d,p,_,l,i,m){const e=r("ResStore");return s(),o("div",null,[a(e)])}const h=t(c,[["render",n]]);export{f as __pageData,h as default}; diff --git a/assets/style.BJrA67q3.css b/assets/style.BJrA67q3.css new file mode 100644 index 00000000..d526eea8 --- /dev/null +++ b/assets/style.BJrA67q3.css @@ -0,0 +1 @@ +@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: #3c3c43;--vp-c-text-2: #67676c;--vp-c-text-3: #929295}.dark{--vp-c-text-1: #dfdfd6;--vp-c-text-2: #98989f;--vp-c-text-3: #6a6a71}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:lang(es),:lang(pt){--vp-code-copy-copied-text-content: "Copiado"}:lang(fa){--vp-code-copy-copied-text-content: "کپی شد"}:lang(ko){--vp-code-copy-copied-text-content: "복사됨"}:lang(ru){--vp-code-copy-copied-text-content: "Скопировано"}:lang(zh){--vp-code-copy-copied-text-content: "已复制"}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(:is(.no-icon,svg a,:has(img,svg))):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(:is(.no-icon,svg a,:has(img,svg))):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-399e5df4]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-399e5df4],.VPBackdrop.fade-leave-to[data-v-399e5df4]{opacity:0}.VPBackdrop.fade-leave-active[data-v-399e5df4]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-399e5df4]{display:none}}.NotFound[data-v-12d2d4a1]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-12d2d4a1]{padding:96px 32px 168px}}.code[data-v-12d2d4a1]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-12d2d4a1]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-12d2d4a1]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-12d2d4a1]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-12d2d4a1]{padding-top:20px}.link[data-v-12d2d4a1]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-12d2d4a1]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-551b952d]{position:relative;z-index:1}.nested[data-v-551b952d]{padding-right:16px;padding-left:16px}.outline-link[data-v-551b952d]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-551b952d]:hover,.outline-link.active[data-v-551b952d]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-551b952d]{padding-left:13px}.VPDocAsideOutline[data-v-8f7170a7]{display:none}.VPDocAsideOutline.has-outline[data-v-8f7170a7]{display:block}.content[data-v-8f7170a7]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-8f7170a7]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-8f7170a7]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-54834fbb]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-54834fbb]{flex-grow:1}.VPDocAside[data-v-54834fbb] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-54834fbb] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-54834fbb] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-ff85f3e5]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-ff85f3e5]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-fe2bf717]{margin-top:64px}.edit-info[data-v-fe2bf717]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-fe2bf717]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-fe2bf717]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-fe2bf717]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-fe2bf717]{margin-right:8px}.prev-next[data-v-fe2bf717]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-fe2bf717]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-fe2bf717]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-fe2bf717]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-fe2bf717]{margin-left:auto;text-align:right}.desc[data-v-fe2bf717]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-fe2bf717]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-23427141]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-23427141]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-23427141]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-23427141]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-23427141]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-23427141]{display:flex;justify-content:center}.VPDoc .aside[data-v-23427141]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-23427141]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-23427141]{max-width:1104px}}.container[data-v-23427141]{margin:0 auto;width:100%}.aside[data-v-23427141]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-23427141]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-23427141]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-23427141]::-webkit-scrollbar{display:none}.aside-curtain[data-v-23427141]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-23427141]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-23427141]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-23427141]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-23427141]{order:1;margin:0;min-width:640px}}.content-container[data-v-23427141]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-23427141]{max-width:688px}.VPButton[data-v-47e38cd6]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-47e38cd6]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-47e38cd6]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-47e38cd6]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-47e38cd6]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-47e38cd6]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-47e38cd6]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-47e38cd6]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-47e38cd6]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-47e38cd6]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-47e38cd6]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-47e38cd6]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-47e38cd6]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-d44fd26d]{display:none}.dark .VPImage.light[data-v-d44fd26d]{display:none}.VPHero[data-v-b681ebc2]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-b681ebc2]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-b681ebc2]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-b681ebc2]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-b681ebc2]{flex-direction:row}}.main[data-v-b681ebc2]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-b681ebc2]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-b681ebc2]{text-align:left}}@media (min-width: 960px){.main[data-v-b681ebc2]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-b681ebc2]{max-width:592px}}.heading[data-v-b681ebc2]{display:flex;flex-direction:column}.name[data-v-b681ebc2],.text[data-v-b681ebc2]{width:fit-content;max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-b681ebc2],.VPHero.has-image .text[data-v-b681ebc2]{margin:0 auto}.name[data-v-b681ebc2]{color:var(--vp-home-hero-name-color)}.clip[data-v-b681ebc2]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-b681ebc2],.text[data-v-b681ebc2]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-b681ebc2],.text[data-v-b681ebc2]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-b681ebc2],.VPHero.has-image .text[data-v-b681ebc2]{margin:0}}.tagline[data-v-b681ebc2]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-b681ebc2]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-b681ebc2]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-b681ebc2]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-b681ebc2]{margin:0}}.actions[data-v-b681ebc2]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-b681ebc2]{justify-content:center}@media (min-width: 640px){.actions[data-v-b681ebc2]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-b681ebc2]{justify-content:flex-start}}.action[data-v-b681ebc2]{flex-shrink:0;padding:6px}.image[data-v-b681ebc2]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-b681ebc2]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-b681ebc2]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-b681ebc2]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-b681ebc2]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-b681ebc2]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-b681ebc2]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-b681ebc2]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-b681ebc2]{width:320px;height:320px}}[data-v-b681ebc2] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-b681ebc2] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-b681ebc2] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-d2a6ac03]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-d2a6ac03]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-d2a6ac03]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-d2a6ac03]>.VPImage{margin-bottom:20px}.icon[data-v-d2a6ac03]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-d2a6ac03]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-d2a6ac03]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-d2a6ac03]{padding-top:8px}.link-text-value[data-v-d2a6ac03]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-d2a6ac03]{margin-left:6px}.VPFeatures[data-v-37b1728d]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-37b1728d]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-37b1728d]{padding:0 64px}}.container[data-v-37b1728d]{margin:0 auto;max-width:1152px}.items[data-v-37b1728d]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-37b1728d]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-37b1728d],.item.grid-4[data-v-37b1728d],.item.grid-6[data-v-37b1728d]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-37b1728d],.item.grid-4[data-v-37b1728d]{width:50%}.item.grid-3[data-v-37b1728d],.item.grid-6[data-v-37b1728d]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-37b1728d]{width:25%}}.container[data-v-f51b4ca4]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-f51b4ca4]{padding:0 48px}}@media (min-width: 960px){.container[data-v-f51b4ca4]{width:100%;padding:0 64px}}.vp-doc[data-v-f51b4ca4] .VPHomeSponsors,.vp-doc[data-v-f51b4ca4] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-f51b4ca4] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-f51b4ca4] .VPHomeSponsors a,.vp-doc[data-v-f51b4ca4] .VPTeamPage a{text-decoration:none}.VPHome[data-v-208c9741]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-208c9741]{margin-bottom:128px}}.VPContent[data-v-0f6d1bb7]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-0f6d1bb7]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-0f6d1bb7]{margin:0}@media (min-width: 960px){.VPContent[data-v-0f6d1bb7]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-0f6d1bb7]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-0f6d1bb7]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-f550fe9d]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-f550fe9d]{display:none}.VPFooter[data-v-f550fe9d] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-f550fe9d] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-f550fe9d]{padding:32px}}.container[data-v-f550fe9d]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-f550fe9d],.copyright[data-v-f550fe9d]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-140f21e1]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-140f21e1]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-140f21e1]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-140f21e1]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-140f21e1]{color:var(--vp-c-text-1)}.icon[data-v-140f21e1]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-140f21e1]{font-size:14px}.icon[data-v-140f21e1]{font-size:16px}}.open>.icon[data-v-140f21e1]{transform:rotate(90deg)}.items[data-v-140f21e1]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-140f21e1]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-140f21e1]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-140f21e1]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-140f21e1]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-140f21e1]{transition:all .2s ease-out}.flyout-leave-active[data-v-140f21e1]{transition:all .15s ease-in}.flyout-enter-from[data-v-140f21e1],.flyout-leave-to[data-v-140f21e1]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-24c995ed]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-24c995ed]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-24c995ed]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-24c995ed]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-24c995ed]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-24c995ed]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-24c995ed]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-24c995ed]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-24c995ed]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-24c995ed]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-24c995ed]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-24c995ed]{display:none}}.menu-icon[data-v-24c995ed]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-24c995ed]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-24c995ed]{padding:12px 32px 11px}}.VPSwitch[data-v-f51eebef]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-f51eebef]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-f51eebef]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-f51eebef]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-f51eebef] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-f51eebef] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-18423111]{opacity:1}.moon[data-v-18423111],.dark .sun[data-v-18423111]{opacity:0}.dark .moon[data-v-18423111]{opacity:1}.dark .VPSwitchAppearance[data-v-18423111] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-21836fc6]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-21836fc6]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-e7e2f3e3]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-e7e2f3e3]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-e7e2f3e3]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-e7e2f3e3]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-44da396a]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-44da396a]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-44da396a]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-44da396a]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-71dd6e79]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-71dd6e79] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-71dd6e79] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-71dd6e79] .group:last-child{padding-bottom:0}.VPMenu[data-v-71dd6e79] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-71dd6e79] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-71dd6e79] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-71dd6e79] .action{padding-left:24px}.VPFlyout[data-v-18f12893]{position:relative}.VPFlyout[data-v-18f12893]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-18f12893]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-18f12893]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-18f12893]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-18f12893]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-18f12893]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-18f12893],.button[aria-expanded=true]+.menu[data-v-18f12893]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-18f12893]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-18f12893]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-18f12893]{margin-right:0;font-size:16px}.text-icon[data-v-18f12893]{margin-left:4px;font-size:14px}.icon[data-v-18f12893]{font-size:20px;transition:fill .25s}.menu[data-v-18f12893]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-93f0a517]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-93f0a517]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-93f0a517]>svg,.VPSocialLink[data-v-93f0a517]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-5da922f8]{display:flex;justify-content:center}.VPNavBarExtra[data-v-5aa83d67]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-5aa83d67]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-5aa83d67]{display:none}}.trans-title[data-v-5aa83d67]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-5aa83d67],.item.social-links[data-v-5aa83d67]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-5aa83d67]{min-width:176px}.appearance-action[data-v-5aa83d67]{margin-right:-2px}.social-links-list[data-v-5aa83d67]{margin:-4px -8px}.VPNavBarHamburger[data-v-9defe3ba]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-9defe3ba]{display:none}}.container[data-v-9defe3ba]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-9defe3ba]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-9defe3ba]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-9defe3ba]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-9defe3ba]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-9defe3ba]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-9defe3ba]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-9defe3ba],.VPNavBarHamburger.active:hover .middle[data-v-9defe3ba],.VPNavBarHamburger.active:hover .bottom[data-v-9defe3ba]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-9defe3ba],.middle[data-v-9defe3ba],.bottom[data-v-9defe3ba]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-9defe3ba]{top:0;left:0;transform:translate(0)}.middle[data-v-9defe3ba]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-9defe3ba]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-0bd8ee6c]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-0bd8ee6c],.VPNavBarMenuLink[data-v-0bd8ee6c]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-706ed117]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-706ed117]{display:flex}}/*! @docsearch/css 3.8.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-a71bb10c]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-a71bb10c]{display:flex;align-items:center}}.title[data-v-44783481]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-44783481]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-44783481]{border-bottom-color:var(--vp-c-divider)}}[data-v-44783481] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-5b37c79d]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-5b37c79d]{display:flex;align-items:center}}.title[data-v-5b37c79d]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-344c8545]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-344c8545]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-344c8545]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-344c8545]:not(.home){background-color:transparent}.VPNavBar[data-v-344c8545]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-344c8545]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-344c8545]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-344c8545]{padding:0}}.container[data-v-344c8545]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-344c8545],.container>.content[data-v-344c8545]{pointer-events:none}.container[data-v-344c8545] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-344c8545]{max-width:100%}}.title[data-v-344c8545]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-344c8545]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-344c8545]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-344c8545]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-344c8545]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-344c8545]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-344c8545]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-344c8545]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-344c8545]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-344c8545]{column-gap:.5rem}}.menu+.translations[data-v-344c8545]:before,.menu+.appearance[data-v-344c8545]:before,.menu+.social-links[data-v-344c8545]:before,.translations+.appearance[data-v-344c8545]:before,.appearance+.social-links[data-v-344c8545]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-344c8545]:before,.translations+.appearance[data-v-344c8545]:before{margin-right:16px}.appearance+.social-links[data-v-344c8545]:before{margin-left:16px}.social-links[data-v-344c8545]{margin-right:-8px}.divider[data-v-344c8545]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-344c8545]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-344c8545]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-344c8545]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-344c8545]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-344c8545]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-344c8545]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-0d1832dc]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-0d1832dc]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-86103079]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-86103079]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-6878bca6]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-6878bca6]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-58635d43]{display:block}.title[data-v-58635d43]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-2a0a7ded]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-2a0a7ded]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-2a0a7ded]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-2a0a7ded]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-2a0a7ded]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-2a0a7ded]{transform:rotate(45deg)}.button[data-v-2a0a7ded]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-2a0a7ded]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-2a0a7ded]{transition:transform .25s}.group[data-v-2a0a7ded]:first-child{padding-top:0}.group+.group[data-v-2a0a7ded],.group+.item[data-v-2a0a7ded]{padding-top:4px}.VPNavScreenTranslations[data-v-676cdaa7]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-676cdaa7]{height:auto}.title[data-v-676cdaa7]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-676cdaa7]{font-size:16px}.icon.lang[data-v-676cdaa7]{margin-right:8px}.icon.chevron[data-v-676cdaa7]{margin-left:4px}.list[data-v-676cdaa7]{padding:4px 0 0 24px}.link[data-v-676cdaa7]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-59e5f43f]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-59e5f43f],.VPNavScreen.fade-leave-active[data-v-59e5f43f]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-59e5f43f],.VPNavScreen.fade-leave-active .container[data-v-59e5f43f]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-59e5f43f],.VPNavScreen.fade-leave-to[data-v-59e5f43f]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-59e5f43f],.VPNavScreen.fade-leave-to .container[data-v-59e5f43f]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-59e5f43f]{display:none}}.container[data-v-59e5f43f]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-59e5f43f],.menu+.appearance[data-v-59e5f43f],.translations+.appearance[data-v-59e5f43f]{margin-top:24px}.menu+.social-links[data-v-59e5f43f]{margin-top:16px}.appearance+.social-links[data-v-59e5f43f]{margin-top:16px}.VPNav[data-v-22178e0d]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-22178e0d]{position:fixed}}.VPSidebarItem.level-0[data-v-dd5d1ddc]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-dd5d1ddc]{padding-bottom:10px}.item[data-v-dd5d1ddc]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-dd5d1ddc]{cursor:pointer}.indicator[data-v-dd5d1ddc]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-dd5d1ddc],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-dd5d1ddc],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-dd5d1ddc],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-dd5d1ddc]{background-color:var(--vp-c-brand-1)}.link[data-v-dd5d1ddc]{display:flex;align-items:center;flex-grow:1}.text[data-v-dd5d1ddc]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-dd5d1ddc]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-dd5d1ddc],.VPSidebarItem.level-2 .text[data-v-dd5d1ddc],.VPSidebarItem.level-3 .text[data-v-dd5d1ddc],.VPSidebarItem.level-4 .text[data-v-dd5d1ddc],.VPSidebarItem.level-5 .text[data-v-dd5d1ddc]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-dd5d1ddc],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-dd5d1ddc],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-dd5d1ddc],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-dd5d1ddc],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-dd5d1ddc],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-dd5d1ddc]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-dd5d1ddc],.VPSidebarItem.level-1.has-active>.item>.text[data-v-dd5d1ddc],.VPSidebarItem.level-2.has-active>.item>.text[data-v-dd5d1ddc],.VPSidebarItem.level-3.has-active>.item>.text[data-v-dd5d1ddc],.VPSidebarItem.level-4.has-active>.item>.text[data-v-dd5d1ddc],.VPSidebarItem.level-5.has-active>.item>.text[data-v-dd5d1ddc],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-dd5d1ddc],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-dd5d1ddc],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-dd5d1ddc],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-dd5d1ddc],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-dd5d1ddc],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-dd5d1ddc]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-dd5d1ddc],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-dd5d1ddc],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-dd5d1ddc],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-dd5d1ddc],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-dd5d1ddc],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-dd5d1ddc]{color:var(--vp-c-brand-1)}.caret[data-v-dd5d1ddc]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-dd5d1ddc]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-dd5d1ddc]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-dd5d1ddc]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-dd5d1ddc]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-dd5d1ddc],.VPSidebarItem.level-2 .items[data-v-dd5d1ddc],.VPSidebarItem.level-3 .items[data-v-dd5d1ddc],.VPSidebarItem.level-4 .items[data-v-dd5d1ddc],.VPSidebarItem.level-5 .items[data-v-dd5d1ddc]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-dd5d1ddc]{display:none}.no-transition[data-v-ea7c95c2] .caret-icon{transition:none}.group+.group[data-v-ea7c95c2]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-ea7c95c2]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-1e4b7d65]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-1e4b7d65]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-1e4b7d65]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-1e4b7d65]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-1e4b7d65]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-1e4b7d65]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-1e4b7d65]{outline:0}.VPSkipLink[data-v-d3d8a623]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-d3d8a623]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-d3d8a623]{top:14px;left:16px}}.Layout[data-v-4078b11f]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-7c461c9b]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-7c461c9b]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-7c461c9b]{margin:128px 0}}.VPHomeSponsors[data-v-7c461c9b]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-7c461c9b]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-7c461c9b]{padding:0 64px}}.container[data-v-7c461c9b]{margin:0 auto;max-width:1152px}.love[data-v-7c461c9b]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-7c461c9b]{display:inline-block}.message[data-v-7c461c9b]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-7c461c9b]{padding-top:32px}.action[data-v-7c461c9b]{padding-top:40px;text-align:center}.VPTeamMembersItem[data-v-081d3ef9]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-081d3ef9]{padding:32px}.VPTeamMembersItem.small .data[data-v-081d3ef9]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-081d3ef9]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-081d3ef9]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-081d3ef9]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-081d3ef9]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-081d3ef9]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-081d3ef9]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-081d3ef9]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-081d3ef9]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-081d3ef9]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-081d3ef9]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-081d3ef9]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-081d3ef9]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-081d3ef9]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-081d3ef9]{text-align:center}.avatar[data-v-081d3ef9]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-081d3ef9]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-081d3ef9]{margin:0;font-weight:600}.affiliation[data-v-081d3ef9]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-081d3ef9]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-081d3ef9]:hover{color:var(--vp-c-brand-1)}.desc[data-v-081d3ef9]{margin:0 auto}.desc[data-v-081d3ef9] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-081d3ef9]{display:flex;justify-content:center;height:56px}.sp-link[data-v-081d3ef9]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-081d3ef9]:hover,.sp .sp-link.link[data-v-081d3ef9]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-081d3ef9]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-6c4c089a]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6c4c089a]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6c4c089a]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6c4c089a]{max-width:876px}.VPTeamMembers.medium .container[data-v-6c4c089a]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6c4c089a]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6c4c089a]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6c4c089a]{max-width:760px}.container[data-v-6c4c089a]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.VPTeamPage[data-v-6929de7a]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-6929de7a]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-6929de7a-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-6929de7a-s],.VPTeamMembers+.VPTeamPageSection[data-v-6929de7a-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-6929de7a-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-6929de7a-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-6929de7a-s],.VPTeamMembers+.VPTeamPageSection[data-v-6929de7a-s]{margin-top:96px}}.VPTeamMembers[data-v-6929de7a-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-6929de7a-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-6929de7a-s]{padding:0 64px}}.VPTeamPageSection[data-v-5898b879]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-5898b879]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-5898b879]{padding:0 64px}}.title[data-v-5898b879]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-5898b879]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-5898b879]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-5898b879]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-5898b879]{padding-top:40px}.VPTeamPageTitle[data-v-a0fd9bbd]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-a0fd9bbd]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-a0fd9bbd]{padding:80px 64px 48px}}.title[data-v-a0fd9bbd]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-a0fd9bbd]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-a0fd9bbd]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-a0fd9bbd]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}:root{--vp-c-brand-1: #149ef8;--vp-c-brand-2: #0434ad;--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #34a3fe 30%, #8d44ff);--vp-home-hero-image-background-image: linear-gradient(-45deg, #d0e9ff 50%, #a2d8f4 50%);--vp-home-hero-image-filter: blur(44px);--vp-c-gray-1: #eee;--vp-c-gray-2: #aaa;--border-radius-1: 10px;--border-radius-2: 20px;--border-radius-3: 40px;--vp-font-family-base: "Poppins", "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: "Cousine", monospace;--red: #ef4444;--liteyuki-color: #149ef8;--button-radius: 6px}.dark{--vp-home-hero-image-background-image: linear-gradient(-45deg, #004785 50%, #0374ad 50%);--vp-c-gray-1: #333;--vp-c-gray-2: #666}.tab-buttons{padding:7px;flex:1;display:flex;justify-content:flex-start;height:60%;align-items:center}.tab-title{text-align:center;justify-content:center;flex:1}.item-search-box{border-radius:100px;width:80%;padding:10px;margin:10px 0;border:1px solid #ccc}.search-box-div{display:flex;justify-content:space-around;margin:10px 0}.item-search-box{width:80%}.item-card{position:relative;border-radius:15px;background-color:var(--vp-c-gray-1);height:160px;padding:16px;margin:10px;box-sizing:border-box;transition:background .3s ease}.item-name{font-size:20px;margin-bottom:10px}.item-description{color:var(--vp-c-gray-2);font-size:13px;white-space:pre-wrap}.author-info{display:flex;justify-content:left;align-items:center}.author-name{font-size:15px;font-weight:400}.avatar{border-radius:50%;margin:0 10px}.store-tabs{display:flex;justify-content:flex-end;margin:10px 0}.publish-button{right:10px;bottom:10px;padding:5px 10px;border-radius:10px;background-color:var(--vp-c-brand-1);color:#fff;font-size:15px;cursor:pointer}.pub-window input{width:100%;padding:10px;margin:10px 0;border-radius:10px;border:1px solid #ccc}.pub-option{margin:10px;padding:5px;border:2px solid var(--vp-c-gray-1);border-radius:var(--button-radius);background-color:var(--vp-c-gray-1)}.pub-option.submit{background-color:var(--vp-c-brand-1)}.stats-bar-content[data-v-2391887b]{display:flex;justify-content:center;align-items:center;flex-direction:column}.gamma[data-v-2391887b]{filter:brightness(1.8)}.dark .gamma[data-v-2391887b]{filter:brightness(1)}.stats-bar[data-v-2391887b]{width:80%;max-width:1150px;display:flex;justify-content:space-between;padding:20px;margin:10px;border-radius:var(--border-radius-2);background-color:var(--vp-c-gray-1);flex-direction:column}.stats-info[data-v-2391887b]{margin-bottom:20px}.stats-title[data-v-2391887b]{font-size:20px;font-weight:700;margin-bottom:20px;text-align:center}.sections[data-v-2391887b]{height:100%;width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:15px;margin:10px}.section[data-v-2391887b]{display:flex;flex-direction:column;position:relative;border-radius:var(--border-radius-2)}.section[data-v-2391887b]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:0 solid transparent;transition:border .1s ease-in-out;border-radius:var(--border-radius-2);pointer-events:none}.section[data-v-2391887b]:hover:before{border:1px solid #00a6ff;border-radius:var(--border-radius-2)}.section-tab[data-v-2391887b]{margin-left:15px;display:flex;justify-content:flex-start;align-items:center}.dot[data-v-2391887b]{width:10px;height:10px;border-radius:50%;margin-right:5px}.text[data-v-2391887b]{font-size:14px;white-space:nowrap;align-items:center}.number[data-v-2391887b]{font-size:27px;font-weight:700;margin-top:5px;margin-left:15px}.starmap[data-v-2391887b]{position:relative;width:100%;height:200px;overflow:hidden;border-radius:var(--border-radius-2)}.starmap iframe[data-v-2391887b]{position:absolute;top:-150px;left:-40px;width:calc(100% + 80px);height:calc(100% + 300px)}@media (min-width: 768px){.stats-bar[data-v-2391887b]{flex-direction:row;margin:30px}.stats-info[data-v-2391887b]{width:40%;margin:10px 30px 30px}.starmap[data-v-2391887b]{width:60%;height:400px}.starmap iframe[data-v-2391887b]{position:absolute;top:-130px;left:-60px;width:calc(100% + 120px);height:calc(100% + 280px)}}.btn[data-v-a8e3f329]{margin-right:15px}button[data-v-a8e3f329]{background-color:#0000;border:none}.copy-btn[data-v-a8e3f329]{cursor:pointer;color:#666}.icon[data-v-a8e3f329]{width:20px;height:20px}.item-bar[data-v-a8e3f329]{position:absolute;bottom:0;height:50px;display:flex;align-items:center;box-sizing:border-box;justify-content:space-between;color:#0005}.tag[data-v-a8e3f329]{display:inline-block;padding:0 5px;margin-right:5px;border-radius:5px;font-size:12px}.switch[data-v-b3db11d1]{position:relative;display:inline-block;width:60px;height:34px}.switch input[data-v-b3db11d1]{opacity:0;width:0;height:0}.slider[data-v-b3db11d1]{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;transition:.4s;border-radius:34px}.slider[data-v-b3db11d1]:before{position:absolute;content:"";height:26px;width:26px;left:4px;bottom:4px;background-color:#fff;transition:.4s;border-radius:50%}input:checked+.slider[data-v-b3db11d1]{background-color:#2196f3}input:checked+.slider[data-v-b3db11d1]:before{transform:translate(26px)}h1[data-v-671446c8]{color:#00a6ff;text-align:center;font-weight:700}.items[data-v-671446c8]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.search-box-div[data-v-671446c8]{display:flex;justify-content:center;align-items:center;margin-bottom:10px}.search-box-div input[data-v-671446c8]{margin-right:10px}.icon[data-v-22cbd1fa]{width:20px;height:20px;color:$themeColor}.item-bar[data-v-22cbd1fa]{position:absolute;bottom:0;height:50px;display:flex;align-items:center;box-sizing:border-box;justify-content:space-between;color:#0005}.floating-window[data-v-8b5829b6]{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.window-content[data-v-8b5829b6]{background:var(--vp-c-gray-1);padding:20px;border-radius:5px;max-width:60%;box-shadow:0 2px 10px #0000001a}h1[data-v-83d58003]{color:#00a6ff;text-align:center;font-weight:700}.items[data-v-83d58003]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.contributor-bar[data-v-bc374713]{display:flex;flex-direction:column;align-items:center}.VPLocalSearchBox[data-v-5f27cea7]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-5f27cea7]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-5f27cea7]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-5f27cea7]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-5f27cea7]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-5f27cea7]{padding:0 8px}}.search-bar[data-v-5f27cea7]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-5f27cea7]{display:block;font-size:18px}.navigate-icon[data-v-5f27cea7]{display:block;font-size:14px}.search-icon[data-v-5f27cea7]{margin:8px}@media (max-width: 767px){.search-icon[data-v-5f27cea7]{display:none}}.search-input[data-v-5f27cea7]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-5f27cea7]{padding:6px 4px}}.search-actions[data-v-5f27cea7]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-5f27cea7]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-5f27cea7]{display:none}}.search-actions button[data-v-5f27cea7]{padding:8px}.search-actions button[data-v-5f27cea7]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-5f27cea7]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-5f27cea7]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-5f27cea7]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-5f27cea7]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-5f27cea7]{display:none}}.search-keyboard-shortcuts kbd[data-v-5f27cea7]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-5f27cea7]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-5f27cea7]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-5f27cea7]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-5f27cea7]{margin:8px}}.titles[data-v-5f27cea7]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-5f27cea7]{display:flex;align-items:center;gap:4px}.title.main[data-v-5f27cea7]{font-weight:500}.title-icon[data-v-5f27cea7]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-5f27cea7]{opacity:.5}.result.selected[data-v-5f27cea7]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-5f27cea7]{position:relative}.excerpt[data-v-5f27cea7]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-5f27cea7]{opacity:1}.excerpt[data-v-5f27cea7] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-5f27cea7] mark,.excerpt[data-v-5f27cea7] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-5f27cea7] .vp-code-group .tabs{display:none}.excerpt[data-v-5f27cea7] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-5f27cea7]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-5f27cea7]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-5f27cea7],.result.selected .title-icon[data-v-5f27cea7]{color:var(--vp-c-brand-1)!important}.no-results[data-v-5f27cea7]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-5f27cea7]{flex:none} diff --git a/assets/style.BVhTES01.css b/assets/style.BVhTES01.css deleted file mode 100644 index 73c0efe9..00000000 --- a/assets/style.BVhTES01.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-ca791a6c]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-ca791a6c],.VPBackdrop.fade-leave-to[data-v-ca791a6c]{opacity:0}.VPBackdrop.fade-leave-active[data-v-ca791a6c]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-ca791a6c]{display:none}}.NotFound[data-v-dbad2f1f]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-dbad2f1f]{padding:96px 32px 168px}}.code[data-v-dbad2f1f]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-dbad2f1f]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-dbad2f1f]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-dbad2f1f]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-dbad2f1f]{padding-top:20px}.link[data-v-dbad2f1f]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-dbad2f1f]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-6c6f9d7d]{position:relative;z-index:1}.nested[data-v-6c6f9d7d]{padding-right:16px;padding-left:16px}.outline-link[data-v-6c6f9d7d]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-6c6f9d7d]:hover,.outline-link.active[data-v-6c6f9d7d]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-6c6f9d7d]{padding-left:13px}.VPDocAsideOutline[data-v-529e6536]{display:none}.VPDocAsideOutline.has-outline[data-v-529e6536]{display:block}.content[data-v-529e6536]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-529e6536]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-529e6536]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-d61d2198]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-d61d2198]{flex-grow:1}.VPDocAside[data-v-d61d2198] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-d61d2198] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-d61d2198] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-5b7201fe]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-5b7201fe]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-75fd5d7f]{margin-top:64px}.edit-info[data-v-75fd5d7f]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-75fd5d7f]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-75fd5d7f]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-75fd5d7f]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-75fd5d7f]{margin-right:8px}.prev-next[data-v-75fd5d7f]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-75fd5d7f]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-75fd5d7f]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-75fd5d7f]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-75fd5d7f]{margin-left:auto;text-align:right}.desc[data-v-75fd5d7f]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-75fd5d7f]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-52574d27]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-52574d27]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-52574d27]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-52574d27]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-52574d27]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-52574d27]{display:flex;justify-content:center}.VPDoc .aside[data-v-52574d27]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-52574d27]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-52574d27]{max-width:1104px}}.container[data-v-52574d27]{margin:0 auto;width:100%}.aside[data-v-52574d27]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-52574d27]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-52574d27]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-52574d27]::-webkit-scrollbar{display:none}.aside-curtain[data-v-52574d27]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-52574d27]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-52574d27]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-52574d27]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-52574d27]{order:1;margin:0;min-width:640px}}.content-container[data-v-52574d27]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-52574d27]{max-width:688px}.VPButton[data-v-7c3d5c3e]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-7c3d5c3e]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-7c3d5c3e]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-7c3d5c3e]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-7c3d5c3e]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-7c3d5c3e]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-7c3d5c3e]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-7c3d5c3e]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-7c3d5c3e]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-7c3d5c3e]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-7c3d5c3e]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-7c3d5c3e]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-7c3d5c3e]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-5b34c2b4]{display:none}.dark .VPImage.light[data-v-5b34c2b4]{display:none}.VPHero[data-v-3a4eac35]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-3a4eac35]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-3a4eac35]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-3a4eac35]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-3a4eac35]{flex-direction:row}}.main[data-v-3a4eac35]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-3a4eac35]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-3a4eac35]{text-align:left}}@media (min-width: 960px){.main[data-v-3a4eac35]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-3a4eac35]{max-width:592px}}.name[data-v-3a4eac35],.text[data-v-3a4eac35]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-3a4eac35],.VPHero.has-image .text[data-v-3a4eac35]{margin:0 auto}.name[data-v-3a4eac35]{color:var(--vp-home-hero-name-color)}.clip[data-v-3a4eac35]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-3a4eac35],.text[data-v-3a4eac35]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-3a4eac35],.text[data-v-3a4eac35]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-3a4eac35],.VPHero.has-image .text[data-v-3a4eac35]{margin:0}}.tagline[data-v-3a4eac35]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-3a4eac35]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-3a4eac35]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-3a4eac35]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-3a4eac35]{margin:0}}.actions[data-v-3a4eac35]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-3a4eac35]{justify-content:center}@media (min-width: 640px){.actions[data-v-3a4eac35]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-3a4eac35]{justify-content:flex-start}}.action[data-v-3a4eac35]{flex-shrink:0;padding:6px}.image[data-v-3a4eac35]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-3a4eac35]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-3a4eac35]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-3a4eac35]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-3a4eac35]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-3a4eac35]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-3a4eac35]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-3a4eac35]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-3a4eac35]{width:320px;height:320px}}[data-v-3a4eac35] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-3a4eac35] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-3a4eac35] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-8d841ca9]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-8d841ca9]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-8d841ca9]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-8d841ca9]>.VPImage{margin-bottom:20px}.icon[data-v-8d841ca9]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-8d841ca9]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-8d841ca9]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-8d841ca9]{padding-top:8px}.link-text-value[data-v-8d841ca9]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-8d841ca9]{margin-left:6px}.VPFeatures[data-v-052a171e]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-052a171e]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-052a171e]{padding:0 64px}}.container[data-v-052a171e]{margin:0 auto;max-width:1152px}.items[data-v-052a171e]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-052a171e]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-052a171e],.item.grid-4[data-v-052a171e],.item.grid-6[data-v-052a171e]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-052a171e],.item.grid-4[data-v-052a171e]{width:50%}.item.grid-3[data-v-052a171e],.item.grid-6[data-v-052a171e]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-052a171e]{width:25%}}.container[data-v-e7738246]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-e7738246]{padding:0 48px}}@media (min-width: 960px){.container[data-v-e7738246]{width:100%;padding:0 64px}}.vp-doc[data-v-e7738246] .VPHomeSponsors,.vp-doc[data-v-e7738246] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-e7738246] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-e7738246] .VPHomeSponsors a,.vp-doc[data-v-e7738246] .VPTeamPage a{text-decoration:none}.VPHome[data-v-7fa14d2c]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-7fa14d2c]{margin-bottom:128px}}.VPContent[data-v-4cd34923]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-4cd34923]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-4cd34923]{margin:0}@media (min-width: 960px){.VPContent[data-v-4cd34923]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-4cd34923]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-4cd34923]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-b496b83f]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-b496b83f]{display:none}.VPFooter[data-v-b496b83f] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-b496b83f] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-b496b83f]{padding:32px}}.container[data-v-b496b83f]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-b496b83f],.copyright[data-v-b496b83f]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-9d69baf6]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-9d69baf6]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-9d69baf6]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-9d69baf6]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-9d69baf6]{color:var(--vp-c-text-1)}.icon[data-v-9d69baf6]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-9d69baf6]{font-size:14px}.icon[data-v-9d69baf6]{font-size:16px}}.open>.icon[data-v-9d69baf6]{transform:rotate(90deg)}.items[data-v-9d69baf6]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-9d69baf6]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-9d69baf6]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-9d69baf6]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-9d69baf6]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-9d69baf6]{transition:all .2s ease-out}.flyout-leave-active[data-v-9d69baf6]{transition:all .15s ease-in}.flyout-enter-from[data-v-9d69baf6],.flyout-leave-to[data-v-9d69baf6]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-a9a50499]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-a9a50499]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-a9a50499]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-a9a50499]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-a9a50499]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-a9a50499]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-a9a50499]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-a9a50499]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-a9a50499]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-a9a50499]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-a9a50499]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-a9a50499]{display:none}}.menu-icon[data-v-a9a50499]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-a9a50499]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-a9a50499]{padding:12px 32px 11px}}.VPSwitch[data-v-5ab7c8f3]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-5ab7c8f3]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-5ab7c8f3]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-5ab7c8f3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-5ab7c8f3] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-5ab7c8f3] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-d0596168]{opacity:1}.moon[data-v-d0596168],.dark .sun[data-v-d0596168]{opacity:0}.dark .moon[data-v-d0596168]{opacity:1}.dark .VPSwitchAppearance[data-v-d0596168] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-86f775dc]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-86f775dc]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-3ec6a25f]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-3ec6a25f]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-3ec6a25f]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-3ec6a25f]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-5d03f77f]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-5d03f77f]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-5d03f77f]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-5d03f77f]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-dc051c19]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-dc051c19] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-dc051c19] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-dc051c19] .group:last-child{padding-bottom:0}.VPMenu[data-v-dc051c19] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-dc051c19] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-dc051c19] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-dc051c19] .action{padding-left:24px}.VPFlyout[data-v-4f75aef5]{position:relative}.VPFlyout[data-v-4f75aef5]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-4f75aef5]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-4f75aef5]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-4f75aef5]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-4f75aef5]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-4f75aef5]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-4f75aef5],.button[aria-expanded=true]+.menu[data-v-4f75aef5]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-4f75aef5]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-4f75aef5]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-4f75aef5]{margin-right:0;font-size:16px}.text-icon[data-v-4f75aef5]{margin-left:4px;font-size:14px}.icon[data-v-4f75aef5]{font-size:20px;transition:fill .25s}.menu[data-v-4f75aef5]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-7db98690]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-7db98690]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-7db98690]>svg,.VPSocialLink[data-v-7db98690]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7b9e441c]{display:flex;justify-content:center}.VPNavBarExtra[data-v-b86a5348]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-b86a5348]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-b86a5348]{display:none}}.trans-title[data-v-b86a5348]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-b86a5348],.item.social-links[data-v-b86a5348]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-b86a5348]{min-width:176px}.appearance-action[data-v-b86a5348]{margin-right:-2px}.social-links-list[data-v-b86a5348]{margin:-4px -8px}.VPNavBarHamburger[data-v-9fa400a2]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-9fa400a2]{display:none}}.container[data-v-9fa400a2]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-9fa400a2]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-9fa400a2]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-9fa400a2]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-9fa400a2]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-9fa400a2]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-9fa400a2]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-9fa400a2],.VPNavBarHamburger.active:hover .middle[data-v-9fa400a2],.VPNavBarHamburger.active:hover .bottom[data-v-9fa400a2]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-9fa400a2],.middle[data-v-9fa400a2],.bottom[data-v-9fa400a2]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-9fa400a2]{top:0;left:0;transform:translate(0)}.middle[data-v-9fa400a2]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-9fa400a2]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-8c15372d]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-8c15372d],.VPNavBarMenuLink[data-v-8c15372d]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-44639ed0]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-44639ed0]{display:flex}}/*! @docsearch/css 3.8.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-c3ba6796]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-c3ba6796]{display:flex;align-items:center}}.title[data-v-0c3e78d8]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-0c3e78d8]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-0c3e78d8]{border-bottom-color:var(--vp-c-divider)}}[data-v-0c3e78d8] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-c134d1c9]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-c134d1c9]{display:flex;align-items:center}}.title[data-v-c134d1c9]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-317c9d8e]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-317c9d8e]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-317c9d8e]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-317c9d8e]:not(.home){background-color:transparent}.VPNavBar[data-v-317c9d8e]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-317c9d8e]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-317c9d8e]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-317c9d8e]{padding:0}}.container[data-v-317c9d8e]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-317c9d8e],.container>.content[data-v-317c9d8e]{pointer-events:none}.container[data-v-317c9d8e] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-317c9d8e]{max-width:100%}}.title[data-v-317c9d8e]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-317c9d8e]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-317c9d8e]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-317c9d8e]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-317c9d8e]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-317c9d8e]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-317c9d8e]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-317c9d8e]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-317c9d8e]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-317c9d8e]{column-gap:.5rem}}.menu+.translations[data-v-317c9d8e]:before,.menu+.appearance[data-v-317c9d8e]:before,.menu+.social-links[data-v-317c9d8e]:before,.translations+.appearance[data-v-317c9d8e]:before,.appearance+.social-links[data-v-317c9d8e]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-317c9d8e]:before,.translations+.appearance[data-v-317c9d8e]:before{margin-right:16px}.appearance+.social-links[data-v-317c9d8e]:before{margin-left:16px}.social-links[data-v-317c9d8e]{margin-right:-8px}.divider[data-v-317c9d8e]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-317c9d8e]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-317c9d8e]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-317c9d8e]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-317c9d8e]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-317c9d8e]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-317c9d8e]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-1b128341]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-1b128341]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-43bcb093]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-43bcb093]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-f55d6f2b]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-f55d6f2b]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-e1165598]{display:block}.title[data-v-e1165598]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-3c5f0adf]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-3c5f0adf]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-3c5f0adf]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-3c5f0adf]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-3c5f0adf]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-3c5f0adf]{transform:rotate(45deg)}.button[data-v-3c5f0adf]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-3c5f0adf]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-3c5f0adf]{transition:transform .25s}.group[data-v-3c5f0adf]:first-child{padding-top:0}.group+.group[data-v-3c5f0adf],.group+.item[data-v-3c5f0adf]{padding-top:4px}.VPNavScreenTranslations[data-v-d9db7cd9]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-d9db7cd9]{height:auto}.title[data-v-d9db7cd9]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-d9db7cd9]{font-size:16px}.icon.lang[data-v-d9db7cd9]{margin-right:8px}.icon.chevron[data-v-d9db7cd9]{margin-left:4px}.list[data-v-d9db7cd9]{padding:4px 0 0 24px}.link[data-v-d9db7cd9]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-07944e28]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-07944e28],.VPNavScreen.fade-leave-active[data-v-07944e28]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-07944e28],.VPNavScreen.fade-leave-active .container[data-v-07944e28]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-07944e28],.VPNavScreen.fade-leave-to[data-v-07944e28]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-07944e28],.VPNavScreen.fade-leave-to .container[data-v-07944e28]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-07944e28]{display:none}}.container[data-v-07944e28]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-07944e28],.menu+.appearance[data-v-07944e28],.translations+.appearance[data-v-07944e28]{margin-top:24px}.menu+.social-links[data-v-07944e28]{margin-top:16px}.appearance+.social-links[data-v-07944e28]{margin-top:16px}.VPNav[data-v-e5ed4446]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-e5ed4446]{position:fixed}}.VPSidebarItem.level-0[data-v-fe865a8c]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-fe865a8c]{padding-bottom:10px}.item[data-v-fe865a8c]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-fe865a8c]{cursor:pointer}.indicator[data-v-fe865a8c]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-fe865a8c],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-fe865a8c],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-fe865a8c],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-fe865a8c]{background-color:var(--vp-c-brand-1)}.link[data-v-fe865a8c]{display:flex;align-items:center;flex-grow:1}.text[data-v-fe865a8c]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-fe865a8c]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-fe865a8c],.VPSidebarItem.level-2 .text[data-v-fe865a8c],.VPSidebarItem.level-3 .text[data-v-fe865a8c],.VPSidebarItem.level-4 .text[data-v-fe865a8c],.VPSidebarItem.level-5 .text[data-v-fe865a8c]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-fe865a8c],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-fe865a8c],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-fe865a8c],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-fe865a8c],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-fe865a8c],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-fe865a8c]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-fe865a8c],.VPSidebarItem.level-1.has-active>.item>.text[data-v-fe865a8c],.VPSidebarItem.level-2.has-active>.item>.text[data-v-fe865a8c],.VPSidebarItem.level-3.has-active>.item>.text[data-v-fe865a8c],.VPSidebarItem.level-4.has-active>.item>.text[data-v-fe865a8c],.VPSidebarItem.level-5.has-active>.item>.text[data-v-fe865a8c],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-fe865a8c],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-fe865a8c],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-fe865a8c],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-fe865a8c],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-fe865a8c],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-fe865a8c]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-fe865a8c],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-fe865a8c],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-fe865a8c],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-fe865a8c],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-fe865a8c],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-fe865a8c]{color:var(--vp-c-brand-1)}.caret[data-v-fe865a8c]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-fe865a8c]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-fe865a8c]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-fe865a8c]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-fe865a8c]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-fe865a8c],.VPSidebarItem.level-2 .items[data-v-fe865a8c],.VPSidebarItem.level-3 .items[data-v-fe865a8c],.VPSidebarItem.level-4 .items[data-v-fe865a8c],.VPSidebarItem.level-5 .items[data-v-fe865a8c]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-fe865a8c]{display:none}.no-transition[data-v-60f8ce21] .caret-icon{transition:none}.group+.group[data-v-60f8ce21]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-60f8ce21]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-bb8a5fb0]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-bb8a5fb0]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-bb8a5fb0]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-bb8a5fb0]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-bb8a5fb0]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-bb8a5fb0]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-bb8a5fb0]{outline:0}.VPSkipLink[data-v-b41cbf02]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-b41cbf02]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-b41cbf02]{top:14px;left:16px}}.Layout[data-v-63ade785]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-7a8b1755]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-7a8b1755]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-7a8b1755]{margin:128px 0}}.VPHomeSponsors[data-v-7a8b1755]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-7a8b1755]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-7a8b1755]{padding:0 64px}}.container[data-v-7a8b1755]{margin:0 auto;max-width:1152px}.love[data-v-7a8b1755]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-7a8b1755]{display:inline-block}.message[data-v-7a8b1755]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-7a8b1755]{padding-top:32px}.action[data-v-7a8b1755]{padding-top:40px;text-align:center}.VPTeamPage[data-v-301361af]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-301361af]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-301361af-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-301361af-s],.VPTeamMembers+.VPTeamPageSection[data-v-301361af-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-301361af-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-301361af-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-301361af-s],.VPTeamMembers+.VPTeamPageSection[data-v-301361af-s]{margin-top:96px}}.VPTeamMembers[data-v-301361af-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-301361af-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-301361af-s]{padding:0 64px}}.VPTeamPageTitle[data-v-08c805fa]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-08c805fa]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-08c805fa]{padding:80px 64px 48px}}.title[data-v-08c805fa]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-08c805fa]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-08c805fa]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-08c805fa]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-67819b7a]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-67819b7a]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-67819b7a]{padding:0 64px}}.title[data-v-67819b7a]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-67819b7a]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-67819b7a]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-67819b7a]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-67819b7a]{padding-top:40px}.VPTeamMembersItem[data-v-7c91cbc3]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-7c91cbc3]{padding:32px}.VPTeamMembersItem.small .data[data-v-7c91cbc3]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-7c91cbc3]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-7c91cbc3]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-7c91cbc3]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-7c91cbc3]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-7c91cbc3]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-7c91cbc3]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-7c91cbc3]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-7c91cbc3]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-7c91cbc3]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-7c91cbc3]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-7c91cbc3]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-7c91cbc3]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-7c91cbc3]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-7c91cbc3]{text-align:center}.avatar[data-v-7c91cbc3]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-7c91cbc3]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-7c91cbc3]{margin:0;font-weight:600}.affiliation[data-v-7c91cbc3]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-7c91cbc3]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-7c91cbc3]:hover{color:var(--vp-c-brand-1)}.desc[data-v-7c91cbc3]{margin:0 auto}.desc[data-v-7c91cbc3] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-7c91cbc3]{display:flex;justify-content:center;height:56px}.sp-link[data-v-7c91cbc3]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-7c91cbc3]:hover,.sp .sp-link.link[data-v-7c91cbc3]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-7c91cbc3]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-0a2b0064]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-0a2b0064]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-0a2b0064]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-0a2b0064]{max-width:876px}.VPTeamMembers.medium .container[data-v-0a2b0064]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-0a2b0064]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-0a2b0064]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-0a2b0064]{max-width:760px}.container[data-v-0a2b0064]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-c-brand-1: #149ef8;--vp-c-brand-2: #0434ad;--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #34a3fe 30%, #8d44ff);--vp-home-hero-image-background-image: linear-gradient(-45deg, #d0e9ff 50%, #a2d8f4 50%);--vp-home-hero-image-filter: blur(44px);--vp-c-gray-1: #eee;--vp-c-gray-2: #aaa;--border-radius-1: 10px;--border-radius-2: 20px;--border-radius-3: 40px;--vp-font-family-base: "Poppins", "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: "Cousine", monospace;--red: #ef4444;--liteyuki-color: #149ef8;--button-radius: 6px}.dark{--vp-home-hero-image-background-image: linear-gradient(-45deg, #004785 50%, #0374ad 50%);--vp-c-gray-1: #333;--vp-c-gray-2: #666}.tab-buttons{padding:7px;flex:1;display:flex;justify-content:flex-start;height:60%;align-items:center}.tab-title{text-align:center;justify-content:center;flex:1}.item-search-box{border-radius:100px;width:80%;padding:10px;margin:10px 0;border:1px solid #ccc}.search-box-div{display:flex;justify-content:space-around;margin:10px 0}.item-search-box{width:80%}.item-card{position:relative;border-radius:15px;background-color:var(--vp-c-gray-1);height:160px;padding:16px;margin:10px;box-sizing:border-box;transition:background .3s ease}.item-name{font-size:20px;margin-bottom:10px}.item-description{color:var(--vp-c-gray-2);font-size:13px;white-space:pre-wrap}.author-info{display:flex;justify-content:left;align-items:center}.author-name{font-size:15px;font-weight:400}.avatar{border-radius:50%;margin:0 10px}.store-tabs{display:flex;justify-content:flex-end;margin:10px 0}.publish-button{right:10px;bottom:10px;padding:5px 10px;border-radius:10px;background-color:var(--vp-c-brand-1);color:#fff;font-size:15px;cursor:pointer}.pub-window input{width:100%;padding:10px;margin:10px 0;border-radius:10px;border:1px solid #ccc}.pub-option{margin:10px;padding:5px;border:2px solid var(--vp-c-gray-1);border-radius:var(--button-radius);background-color:var(--vp-c-gray-1)}.pub-option.submit{background-color:var(--vp-c-brand-1)}.stats-bar-content[data-v-2391887b]{display:flex;justify-content:center;align-items:center;flex-direction:column}.gamma[data-v-2391887b]{filter:brightness(1.8)}.dark .gamma[data-v-2391887b]{filter:brightness(1)}.stats-bar[data-v-2391887b]{width:80%;max-width:1150px;display:flex;justify-content:space-between;padding:20px;margin:10px;border-radius:var(--border-radius-2);background-color:var(--vp-c-gray-1);flex-direction:column}.stats-info[data-v-2391887b]{margin-bottom:20px}.stats-title[data-v-2391887b]{font-size:20px;font-weight:700;margin-bottom:20px;text-align:center}.sections[data-v-2391887b]{height:100%;width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:15px;margin:10px}.section[data-v-2391887b]{display:flex;flex-direction:column;position:relative;border-radius:var(--border-radius-2)}.section[data-v-2391887b]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:0 solid transparent;transition:border .1s ease-in-out;border-radius:var(--border-radius-2);pointer-events:none}.section[data-v-2391887b]:hover:before{border:1px solid #00a6ff;border-radius:var(--border-radius-2)}.section-tab[data-v-2391887b]{margin-left:15px;display:flex;justify-content:flex-start;align-items:center}.dot[data-v-2391887b]{width:10px;height:10px;border-radius:50%;margin-right:5px}.text[data-v-2391887b]{font-size:14px;white-space:nowrap;align-items:center}.number[data-v-2391887b]{font-size:27px;font-weight:700;margin-top:5px;margin-left:15px}.starmap[data-v-2391887b]{position:relative;width:100%;height:200px;overflow:hidden;border-radius:var(--border-radius-2)}.starmap iframe[data-v-2391887b]{position:absolute;top:-150px;left:-40px;width:calc(100% + 80px);height:calc(100% + 300px)}@media (min-width: 768px){.stats-bar[data-v-2391887b]{flex-direction:row;margin:30px}.stats-info[data-v-2391887b]{width:40%;margin:10px 30px 30px}.starmap[data-v-2391887b]{width:60%;height:400px}.starmap iframe[data-v-2391887b]{position:absolute;top:-130px;left:-60px;width:calc(100% + 120px);height:calc(100% + 280px)}}.btn[data-v-a8e3f329]{margin-right:15px}button[data-v-a8e3f329]{background-color:#0000;border:none}.copy-btn[data-v-a8e3f329]{cursor:pointer;color:#666}.icon[data-v-a8e3f329]{width:20px;height:20px}.item-bar[data-v-a8e3f329]{position:absolute;bottom:0;height:50px;display:flex;align-items:center;box-sizing:border-box;justify-content:space-between;color:#0005}.tag[data-v-a8e3f329]{display:inline-block;padding:0 5px;margin-right:5px;border-radius:5px;font-size:12px}.switch[data-v-b3db11d1]{position:relative;display:inline-block;width:60px;height:34px}.switch input[data-v-b3db11d1]{opacity:0;width:0;height:0}.slider[data-v-b3db11d1]{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;transition:.4s;border-radius:34px}.slider[data-v-b3db11d1]:before{position:absolute;content:"";height:26px;width:26px;left:4px;bottom:4px;background-color:#fff;transition:.4s;border-radius:50%}input:checked+.slider[data-v-b3db11d1]{background-color:#2196f3}input:checked+.slider[data-v-b3db11d1]:before{transform:translate(26px)}h1[data-v-671446c8]{color:#00a6ff;text-align:center;font-weight:700}.items[data-v-671446c8]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.search-box-div[data-v-671446c8]{display:flex;justify-content:center;align-items:center;margin-bottom:10px}.search-box-div input[data-v-671446c8]{margin-right:10px}.icon[data-v-22cbd1fa]{width:20px;height:20px;color:$themeColor}.item-bar[data-v-22cbd1fa]{position:absolute;bottom:0;height:50px;display:flex;align-items:center;box-sizing:border-box;justify-content:space-between;color:#0005}.floating-window[data-v-8b5829b6]{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.window-content[data-v-8b5829b6]{background:var(--vp-c-gray-1);padding:20px;border-radius:5px;max-width:60%;box-shadow:0 2px 10px #0000001a}h1[data-v-83d58003]{color:#00a6ff;text-align:center;font-weight:700}.items[data-v-83d58003]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.contributor-bar[data-v-bc374713]{display:flex;flex-direction:column;align-items:center}.VPLocalSearchBox[data-v-f617de87]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-f617de87]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-f617de87]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-f617de87]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-f617de87]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-f617de87]{padding:0 8px}}.search-bar[data-v-f617de87]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-f617de87]{display:block;font-size:18px}.navigate-icon[data-v-f617de87]{display:block;font-size:14px}.search-icon[data-v-f617de87]{margin:8px}@media (max-width: 767px){.search-icon[data-v-f617de87]{display:none}}.search-input[data-v-f617de87]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-f617de87]{padding:6px 4px}}.search-actions[data-v-f617de87]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-f617de87]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-f617de87]{display:none}}.search-actions button[data-v-f617de87]{padding:8px}.search-actions button[data-v-f617de87]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-f617de87]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-f617de87]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-f617de87]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-f617de87]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-f617de87]{display:none}}.search-keyboard-shortcuts kbd[data-v-f617de87]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-f617de87]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-f617de87]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-f617de87]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-f617de87]{margin:8px}}.titles[data-v-f617de87]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-f617de87]{display:flex;align-items:center;gap:4px}.title.main[data-v-f617de87]{font-weight:500}.title-icon[data-v-f617de87]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-f617de87]{opacity:.5}.result.selected[data-v-f617de87]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-f617de87]{position:relative}.excerpt[data-v-f617de87]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-f617de87]{opacity:1}.excerpt[data-v-f617de87] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-f617de87] mark,.excerpt[data-v-f617de87] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-f617de87] .vp-code-group .tabs{display:none}.excerpt[data-v-f617de87] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-f617de87]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-f617de87]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-f617de87],.result.selected .title-icon[data-v-f617de87]{color:var(--vp-c-brand-1)!important}.no-results[data-v-f617de87]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-f617de87]{flex:none} diff --git a/assets/usage_agreement.md.BXBhbxWS.js b/assets/usage_agreement.md.BXBhbxWS.js deleted file mode 100644 index e18432e1..00000000 --- a/assets/usage_agreement.md.BXBhbxWS.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,a7 as o,o as l}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"用户协议","description":"","frontmatter":{"title":"用户协议","order":3},"headers":[],"relativePath":"usage/agreement.md","filePath":"zh/usage/agreement.md","lastUpdated":1734116271000}'),r={name:"usage/agreement.md"};function i(d,e,n,s,c,m){return l(),a("div",null,e[0]||(e[0]=[o('

用户协议

  1. 本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息
  2. 你可以选择开启auto_report(默认开启),轻雪会收集以下内容
    • 运行环境的设备信息:CPU,内存,系统信息及Python信息
    • 插件信息(不含插件数据)
    • 部分异常信息,
    • 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务器,若你不希望提供这些信息,可以在配置文件中把auto_report设定为false
  3. 本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性
  4. 使用此项目代表你已经同意以上协议
',2)]))}const _=t(r,[["render",i]]);export{u as __pageData,_ as default}; diff --git a/assets/usage_agreement.md.BXBhbxWS.lean.js b/assets/usage_agreement.md.BXBhbxWS.lean.js deleted file mode 100644 index e18432e1..00000000 --- a/assets/usage_agreement.md.BXBhbxWS.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,a7 as o,o as l}from"./chunks/framework.v7PlT0Wt.js";const u=JSON.parse('{"title":"用户协议","description":"","frontmatter":{"title":"用户协议","order":3},"headers":[],"relativePath":"usage/agreement.md","filePath":"zh/usage/agreement.md","lastUpdated":1734116271000}'),r={name:"usage/agreement.md"};function i(d,e,n,s,c,m){return l(),a("div",null,e[0]||(e[0]=[o('

用户协议

  1. 本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息
  2. 你可以选择开启auto_report(默认开启),轻雪会收集以下内容
    • 运行环境的设备信息:CPU,内存,系统信息及Python信息
    • 插件信息(不含插件数据)
    • 部分异常信息,
    • 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务器,若你不希望提供这些信息,可以在配置文件中把auto_report设定为false
  3. 本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性
  4. 使用此项目代表你已经同意以上协议
',2)]))}const _=t(r,[["render",i]]);export{u as __pageData,_ as default}; diff --git a/assets/usage_agreement.md.DkkU90yR.js b/assets/usage_agreement.md.DkkU90yR.js new file mode 100644 index 00000000..824518a4 --- /dev/null +++ b/assets/usage_agreement.md.DkkU90yR.js @@ -0,0 +1 @@ +import{_ as t,c as a,o,al as l}from"./chunks/framework.BUxnStXl.js";const p=JSON.parse('{"title":"用户协议","description":"","frontmatter":{"title":"用户协议","order":3},"headers":[],"relativePath":"usage/agreement.md","filePath":"zh/usage/agreement.md","lastUpdated":1734116271000}'),r={name:"usage/agreement.md"};function i(d,e,n,s,c,_){return o(),a("div",null,e[0]||(e[0]=[l('

用户协议

  1. 本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息
  2. 你可以选择开启auto_report(默认开启),轻雪会收集以下内容
    • 运行环境的设备信息:CPU,内存,系统信息及Python信息
    • 插件信息(不含插件数据)
    • 部分异常信息,
    • 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务器,若你不希望提供这些信息,可以在配置文件中把auto_report设定为false
  3. 本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性
  4. 使用此项目代表你已经同意以上协议
',2)]))}const u=t(r,[["render",i]]);export{p as __pageData,u as default}; diff --git a/assets/usage_agreement.md.DkkU90yR.lean.js b/assets/usage_agreement.md.DkkU90yR.lean.js new file mode 100644 index 00000000..e298f43a --- /dev/null +++ b/assets/usage_agreement.md.DkkU90yR.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o,al as l}from"./chunks/framework.BUxnStXl.js";const p=JSON.parse('{"title":"用户协议","description":"","frontmatter":{"title":"用户协议","order":3},"headers":[],"relativePath":"usage/agreement.md","filePath":"zh/usage/agreement.md","lastUpdated":1734116271000}'),r={name:"usage/agreement.md"};function i(d,e,n,s,c,_){return o(),a("div",null,e[0]||(e[0]=[l("",2)]))}const u=t(r,[["render",i]]);export{p as __pageData,u as default}; diff --git a/assets/usage_basic.md.B7eQy5eg.lean.js b/assets/usage_basic.md.B7eQy5eg.lean.js deleted file mode 100644 index bff1fd37..00000000 --- a/assets/usage_basic.md.B7eQy5eg.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as d,a7 as l,o as n}from"./chunks/framework.v7PlT0Wt.js";const x=JSON.parse('{"title":"基础插件","description":"","frontmatter":{"title":"基础插件","order":1},"headers":[],"relativePath":"usage/basic.md","filePath":"zh/usage/basic.md","lastUpdated":1734116271000}'),r={name:"usage/basic.md"};function a(c,t,i,s,o,g){return n(),d("div",null,t[0]||(t[0]=[l('

基础插件


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查询
',22)]))}const h=e(r,[["render",a]]);export{x as __pageData,h as default}; diff --git a/assets/usage_basic.md.B7eQy5eg.js b/assets/usage_basic.md.Dpx_Yj4l.js similarity index 98% rename from assets/usage_basic.md.B7eQy5eg.js rename to assets/usage_basic.md.Dpx_Yj4l.js index bff1fd37..aa797f70 100644 --- a/assets/usage_basic.md.B7eQy5eg.js +++ b/assets/usage_basic.md.Dpx_Yj4l.js @@ -1 +1 @@ -import{_ as e,c as d,a7 as l,o as n}from"./chunks/framework.v7PlT0Wt.js";const x=JSON.parse('{"title":"基础插件","description":"","frontmatter":{"title":"基础插件","order":1},"headers":[],"relativePath":"usage/basic.md","filePath":"zh/usage/basic.md","lastUpdated":1734116271000}'),r={name:"usage/basic.md"};function a(c,t,i,s,o,g){return n(),d("div",null,t[0]||(t[0]=[l('

基础插件


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查询
',22)]))}const h=e(r,[["render",a]]);export{x as __pageData,h as default}; +import{_ as e,c as d,o as l,al as n}from"./chunks/framework.BUxnStXl.js";const x=JSON.parse('{"title":"基础插件","description":"","frontmatter":{"title":"基础插件","order":1},"headers":[],"relativePath":"usage/basic.md","filePath":"zh/usage/basic.md","lastUpdated":1734116271000}'),r={name:"usage/basic.md"};function a(c,t,i,s,o,g){return l(),d("div",null,t[0]||(t[0]=[n('

基础插件


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查询
',22)]))}const h=e(r,[["render",a]]);export{x as __pageData,h as default}; diff --git a/assets/usage_basic.md.Dpx_Yj4l.lean.js b/assets/usage_basic.md.Dpx_Yj4l.lean.js new file mode 100644 index 00000000..ccf9f90d --- /dev/null +++ b/assets/usage_basic.md.Dpx_Yj4l.lean.js @@ -0,0 +1 @@ +import{_ as e,c as d,o as l,al as n}from"./chunks/framework.BUxnStXl.js";const x=JSON.parse('{"title":"基础插件","description":"","frontmatter":{"title":"基础插件","order":1},"headers":[],"relativePath":"usage/basic.md","filePath":"zh/usage/basic.md","lastUpdated":1734116271000}'),r={name:"usage/basic.md"};function a(c,t,i,s,o,g){return l(),d("div",null,t[0]||(t[0]=[n("",22)]))}const h=e(r,[["render",a]]);export{x as __pageData,h as default}; diff --git a/assets/usage_extra.md.CrZ5PgMV.lean.js b/assets/usage_extra.md.CrZ5PgMV.lean.js deleted file mode 100644 index ab41ae9a..00000000 --- a/assets/usage_extra.md.CrZ5PgMV.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as s,a7 as i,o as a}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"功能命令","description":"","frontmatter":{"title":"功能命令","order":2},"headers":[],"relativePath":"usage/extra.md","filePath":"zh/usage/extra.md","lastUpdated":1734116271000}'),l={name:"usage/extra.md"};function d(n,t,r,h,o,p){return a(),s("div",null,t[0]||(t[0]=[i('

功能插件命令

轻雪天气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
',20)]))}const g=e(l,[["render",d]]);export{k as __pageData,g as default}; diff --git a/assets/usage_extra.md.CrZ5PgMV.js b/assets/usage_extra.md.DTJrnruE.js similarity index 97% rename from assets/usage_extra.md.CrZ5PgMV.js rename to assets/usage_extra.md.DTJrnruE.js index ab41ae9a..35156316 100644 --- a/assets/usage_extra.md.CrZ5PgMV.js +++ b/assets/usage_extra.md.DTJrnruE.js @@ -1 +1 @@ -import{_ as e,c as s,a7 as i,o as a}from"./chunks/framework.v7PlT0Wt.js";const k=JSON.parse('{"title":"功能命令","description":"","frontmatter":{"title":"功能命令","order":2},"headers":[],"relativePath":"usage/extra.md","filePath":"zh/usage/extra.md","lastUpdated":1734116271000}'),l={name:"usage/extra.md"};function d(n,t,r,h,o,p){return a(),s("div",null,t[0]||(t[0]=[i('

功能插件命令

轻雪天气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
',20)]))}const g=e(l,[["render",d]]);export{k as __pageData,g as default}; +import{_ as e,c as s,o as i,al as a}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"功能命令","description":"","frontmatter":{"title":"功能命令","order":2},"headers":[],"relativePath":"usage/extra.md","filePath":"zh/usage/extra.md","lastUpdated":1734116271000}'),l={name:"usage/extra.md"};function d(n,t,r,h,o,p){return i(),s("div",null,t[0]||(t[0]=[a('

功能插件命令

轻雪天气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
',20)]))}const g=e(l,[["render",d]]);export{k as __pageData,g as default}; diff --git a/assets/usage_extra.md.DTJrnruE.lean.js b/assets/usage_extra.md.DTJrnruE.lean.js new file mode 100644 index 00000000..a3ed5c0f --- /dev/null +++ b/assets/usage_extra.md.DTJrnruE.lean.js @@ -0,0 +1 @@ +import{_ as e,c as s,o as i,al as a}from"./chunks/framework.BUxnStXl.js";const k=JSON.parse('{"title":"功能命令","description":"","frontmatter":{"title":"功能命令","order":2},"headers":[],"relativePath":"usage/extra.md","filePath":"zh/usage/extra.md","lastUpdated":1734116271000}'),l={name:"usage/extra.md"};function d(n,t,r,h,o,p){return i(),s("div",null,t[0]||(t[0]=[a("",20)]))}const g=e(l,[["render",d]]);export{k as __pageData,g as default}; diff --git a/deploy/config.html b/deploy/config.html index 414310f4..c1ae8938 100644 --- a/deploy/config.html +++ b/deploy/config.html @@ -5,22 +5,22 @@ 配置 | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

配置

轻雪支持yamljsontoml作为配置文件,取决于你个人的喜好

首次运行后生成config.ymlconfig目录,你可修改配置项后重启轻雪,绝大多数情况下,你只需要修改superusersnickname字段即可

启动时会加载项目目录下config.yml/yaml/json/tomlconfig目录下的所有配置文件,你可在config目录下创建多个配置文件,轻雪会自动合并这些配置文件

基础配置项

yaml
nonebot:
+    
Skip to content

配置

轻雪支持yamljsontoml作为配置文件,取决于你个人的喜好

首次运行后生成config.ymlconfig目录,你可修改配置项后重启轻雪,绝大多数情况下,你只需要修改superusersnickname字段即可

启动时会加载项目目录下config.yml/yaml/json/tomlconfig目录下的所有配置文件,你可在config目录下创建多个配置文件,轻雪会自动合并这些配置文件

基础配置项

yaml
nonebot:
   # Nonebot机器人的配置,6.3.10版本后,NoneBot下配置已迁移至nonebot键下,不再使用外层配置,但是部分内容会被覆盖,请尽快迁移
   command_start: [ "/", "" ] # 指令前缀,若没有""空命令头,请开启alconna_use_command_start保证alconna解析正常
   host: 127.0.0.1 # 监听地址,默认为本机,若要接收外部请求请填写0.0.0.0
@@ -50,8 +50,8 @@
   debug: false  # 轻雪调试,开启会自动重载Bot或者资源,其他插件自带的调试功能也将开启
   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 生成

- +...

示例:与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 bae33593..6540d644 100644 --- a/deploy/fandq.html +++ b/deploy/fandq.html @@ -5,25 +5,25 @@ 答疑 | 轻雪机器人 - - + + - + - - - + + + -
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的可执行文件
  • 更新轻雪失败,报错InvalidGitRepositoryError

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

    • Bot部分插件提供了对接特定平台的能力,例如使用NoneBot插件可对接支持的适配器平台
  • Playwright安装失败

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

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

其他问题

-
+    
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的可执行文件
  • 更新轻雪失败,报错InvalidGitRepositoryError

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

    • Bot部分插件提供了对接特定平台的能力,例如使用NoneBot插件可对接支持的适配器平台
  • Playwright安装失败

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

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

其他问题

-
 加入QQ群[775840726](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=SzmDYbfR6jY94o9KFNon7AwelRyI6M_u&authKey=ygeBdEmdFNyCWuNR4w0M1M8%2B5oDg7k%2FDfN0tzBkYcnbB%2FGHNnlVEnCIGbdftsnn7&noverify=0&group_code=775840726)
-

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

- +

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

+ \ No newline at end of file diff --git a/deploy/install.html b/deploy/install.html index 757554d7..0206bda4 100644 --- a/deploy/install.html +++ b/deploy/install.html @@ -5,22 +5,22 @@ 安装 | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

安装

常规部署

  1. 安装 GitPython3.10+ 环境
bash
# 克隆项目到本地,轻雪使用Git进行版本管理,该步骤为必要项
+    
Skip to content

安装

常规部署

  1. 安装 GitPython3.10+ 环境
bash
# 克隆项目到本地,轻雪使用Git进行版本管理,该步骤为必要项
 git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1 # 若你不能访问Github,可以使用Liteyuki镜像:https://git.liteyuki.icu/bot/app
 
 # 切换到Bot目录下
@@ -37,8 +37,8 @@
 pip install -r requirements.txt
 
 # 启动Bot
-python main.py

使用Docker构建

bash
docker pull git.liteyuki.icu/bot/app:latest  # 每夜版镜像

TIP

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

装置要求

  • 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 生成

- +python main.py

使用Docker构建

bash
docker pull git.liteyuki.icu/bot/app:latest  # 每夜版镜像

TIP

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

装置要求

  • 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/bot/index.html b/dev/api/bot/index.html index 5f0a69ed..e705086e 100644 --- a/dev/api/bot/index.html +++ b/dev/api/bot/index.html @@ -5,22 +5,22 @@ liteyuki.bot | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.bot

class LiteyukiBot


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

说明: 初始化轻雪实例

参数:

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

模块 liteyuki.bot

class LiteyukiBot


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

说明: 初始化轻雪实例

参数:

  • **kwargs: 配置
源代码在GitHub上查看
python
def __init__(self, **kwargs) -> None:
     """总通道"""
     self.i_chan = Chan[Any]()
     self.o_chan = Chan[Any]()
@@ -97,8 +97,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

文档由 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 32e22042..f982f1aa 100644 --- a/dev/api/bot/lifespan.html +++ b/dev/api/bot/lifespan.html @@ -5,22 +5,22 @@ liteyuki.bot.lifespan | 轻雪机器人 - - + + - + - - - + + + -
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


func __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


func __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] = []
@@ -54,8 +54,8 @@
     logger.debug('Running before_restart functions')
     await self.run_funcs(self._before_process_restart_funcs, *args, **kwargs)

async func after_restart(self) -> None

说明: 重启后钩子 未实现

源代码在GitHub上查看
python
async def after_restart(self) -> None:
     logger.debug('Running after_restart functions')
-    await self.run_funcs(self._after_restart_funcs)

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

- + 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 0859a04f..43ad6757 100644 --- a/dev/api/comm/channel.html +++ b/dev/api/comm/channel.html @@ -5,22 +5,22 @@ liteyuki.comm.channel | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.comm.channel

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

var SYNC_ON_RECEIVE_FUNC

  • 说明: 同步接收函数

  • 类型: TypeAlias

  • 默认值: Callable[[T], 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])


func __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 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])


func __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):
     self.conn_send, self.conn_recv = Pipe()
     self._conn_send_inner, self._conn_recv_inner = Pipe()
     self._closed = False
@@ -110,8 +110,8 @@
     recv_chan.send(get_channel(name))

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

func 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 生成

- + recv_chan.send(get_channels())

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

+ \ No newline at end of file diff --git a/dev/api/comm/event.html b/dev/api/comm/event.html index db9ad7a7..e0941dcf 100644 --- a/dev/api/comm/event.html +++ b/dev/api/comm/event.html @@ -5,25 +5,25 @@ liteyuki.comm.event | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.comm.event

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

class Event


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

源代码在GitHub上查看
python
def __init__(self, name: str, data: dict[str, Any]):
+    
-    
+    self.data = data

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

+ \ No newline at end of file diff --git a/dev/api/comm/index.html b/dev/api/comm/index.html index 3f0df5ff..a354399e 100644 --- a/dev/api/comm/index.html +++ b/dev/api/comm/index.html @@ -5,23 +5,23 @@ liteyuki.comm | 轻雪机器人 - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/dev/api/comm/storage.html b/dev/api/comm/storage.html index 1290e1b2..b1666614 100644 --- a/dev/api/comm/storage.html +++ b/dev/api/comm/storage.html @@ -5,22 +5,22 @@ liteyuki.comm.storage | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.comm.storage

共享内存模块。类似于redis,但是更加轻量级并且线程安全

var _on_main_subscriber_receive_funcs

  • 说明: 主进程订阅者接收函数

  • 类型: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • 默认值: {}

var _on_sub_subscriber_receive_funcs

  • 说明: 子进程订阅者接收函数

  • 类型: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • 默认值: {}

class KeyValueStore


func __init__(self)

源代码在GitHub上查看
python
def __init__(self):
+    
Skip to content

模块 liteyuki.comm.storage

共享内存模块。类似于redis,但是更加轻量级并且线程安全

var _on_main_subscriber_receive_funcs

  • 说明: 主进程订阅者接收函数

  • 类型: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • 默认值: {}

var _on_sub_subscriber_receive_funcs

  • 说明: 子进程订阅者接收函数

  • 类型: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • 默认值: {}

class KeyValueStore


func __init__(self)

源代码在GitHub上查看
python
def __init__(self):
     self._store = {}
     self.active_chan = Channel[tuple[str, Optional[dict[str, Any]]]](name='shared_memory-active')
     self.passive_chan = Channel[tuple[str, Optional[dict[str, Any]]]](name='shared_memory-passive')
@@ -109,8 +109,8 @@
     shared_memory.delete(key)

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

func 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())

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

- + 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 678bb3b1..792e7572 100644 --- a/dev/api/config.html +++ b/dev/api/config.html @@ -5,22 +5,22 @@ liteyuki.config | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.config

该模块用于常用配置文件的加载 多配置文件编写原则:

  1. 尽量不要冲突: 一个键不要多次出现
  2. 分工明确: 每个配置文件给一个或一类服务提供配置
  3. 扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套
  4. 注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件
  5. 请不要将需要动态加载的内容写入配置文件,你应该使用其他储存方式

func flat_config(config: dict[str, Any]) -> dict[str, Any]

说明: 扁平化配置文件

{a:{b:{c:1}}} ->

参数:

  • config: 配置项目

返回: 扁平化后的配置文件,但也包含原有的键值对

源代码在GitHub上查看
python
def flat_config(config: dict[str, Any]) -> dict[str, Any]:
+    
Skip to content

模块 liteyuki.config

该模块用于常用配置文件的加载 多配置文件编写原则:

  1. 尽量不要冲突: 一个键不要多次出现
  2. 分工明确: 每个配置文件给一个或一类服务提供配置
  3. 扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套
  4. 注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件
  5. 请不要将需要动态加载的内容写入配置文件,你应该使用其他储存方式

func flat_config(config: dict[str, Any]) -> dict[str, Any]

说明: 扁平化配置文件

{a:{b:{c:1}}} ->

参数:

  • config: 配置项目

返回: 扁平化后的配置文件,但也包含原有的键值对

源代码在GitHub上查看
python
def flat_config(config: dict[str, Any]) -> dict[str, Any]:
     new_config = copy.deepcopy(config)
     for key, value in config.items():
         if isinstance(value, dict):
@@ -79,8 +79,8 @@
     return self

func merge(self, loader: Loader) -> Loader

说明: 合并两个Loader键值对树

源代码在GitHub上查看
python
def merge(self, loader: 'Loader') -> 'Loader':
     self.config.update(loader.config)
     return self

func get(self, key: str, default: Any = None) -> Any

说明: 获取配置值

源代码在GitHub上查看
python
def get(self, key: str, default: Any=None) -> Any:
-    return self.config.get(key, default)

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

- + return self.config.get(key, default)

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

+ \ No newline at end of file diff --git a/dev/api/core/index.html b/dev/api/core/index.html index bf0c9954..f9b33000 100644 --- a/dev/api/core/index.html +++ b/dev/api/core/index.html @@ -5,23 +5,23 @@ liteyuki.core | 轻雪机器人 - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/dev/api/core/manager.html b/dev/api/core/manager.html index 1663929f..d5666d96 100644 --- a/dev/api/core/manager.html +++ b/dev/api/core/manager.html @@ -5,22 +5,22 @@ liteyuki.core.manager | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 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


func __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]]):
+    
Skip to content

模块 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


func __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
@@ -68,8 +68,8 @@
     for name, process in self.processes.items():
         process.terminate()
         logger.debug(f'Terminating process {name}')

func get_process(self, name: str) -> SubProcess | None

说明: 获取指定子进程

参数:

  • name: 子进程名称
源代码在GitHub上查看
python
def get_process(self, name: str) -> SubProcess | None:
-    return self.processes.get(name, None)

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

- + return self.processes.get(name, None)

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

+ \ No newline at end of file diff --git a/dev/api/dev/index.html b/dev/api/dev/index.html index f85866ef..59de266a 100644 --- a/dev/api/dev/index.html +++ b/dev/api/dev/index.html @@ -5,23 +5,23 @@ liteyuki.dev | 轻雪机器人 - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/dev/api/dev/observer.html b/dev/api/dev/observer.html index 680916c0..20e5c3c0 100644 --- a/dev/api/dev/observer.html +++ b/dev/api/dev/observer.html @@ -5,22 +5,22 @@ liteyuki.dev.observer | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.dev.observer

此模块用于注册观察者函数,使用watchdog监控文件变化并重启bot 启用该模块需要在配置文件中设置dev_mode为True

var CALLBACK_FUNC

  • 说明: 位置1为FileSystemEvent

  • 类型: TypeAlias

  • 默认值: Callable[[FileSystemEvent], None]

var FILTER_FUNC

  • 说明: 位置1为FileSystemEvent

  • 类型: TypeAlias

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


func debounce(wait)

说明: 防抖函数

源代码在GitHub上查看
python
def debounce(wait):
+    
Skip to content

模块 liteyuki.dev.observer

此模块用于注册观察者函数,使用watchdog监控文件变化并重启bot 启用该模块需要在配置文件中设置dev_mode为True

var CALLBACK_FUNC

  • 说明: 位置1为FileSystemEvent

  • 类型: TypeAlias

  • 默认值: Callable[[FileSystemEvent], None]

var FILTER_FUNC

  • 说明: 位置1为FileSystemEvent

  • 类型: TypeAlias

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


func debounce(wait)

说明: 防抖函数

源代码在GitHub上查看
python
def debounce(wait):
 
     def decorator(func):
 
@@ -51,8 +51,8 @@
         for directory in directories:
             observer.schedule(code_modified_handler, directory, recursive=recursive)
         return func
-    return decorator

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

- + 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 5da18a11..67ef2de7 100644 --- a/dev/api/dev/plugin.html +++ b/dev/api/dev/plugin.html @@ -5,29 +5,29 @@ liteyuki.dev.plugin | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.dev.plugin

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

@Time : 2024/8/18 上午5:04 @Author : snowykami @Email : snowykami@outlook.com @File : plugin.py @Software: PyCharm


func run_plugins(*module_path: str | Path)

说明: 运行插件,无需手动初始化bot

参数:

  • module_path: 插件路径,参考liteyuki.load_plugin的函数签名
源代码在GitHub上查看
python
def run_plugins(*module_path: str | Path):
+    
Skip to content

模块 liteyuki.dev.plugin

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

@Time : 2024/8/18 上午5:04 @Author : snowykami @Email : snowykami@outlook.com @File : plugin.py @Software: PyCharm


func run_plugins(*module_path: str | Path)

说明: 运行插件,无需手动初始化bot

参数:

  • module_path: 插件路径,参考liteyuki.load_plugin的函数签名
源代码在GitHub上查看
python
def run_plugins(*module_path: str | Path):
     cfg = load_config_in_default()
     plugins = cfg.get('liteyuki.plugins', [])
     plugins.extend(module_path)
     cfg['liteyuki.plugins'] = plugins
     bot = LiteyukiBot(**cfg)
-    bot.run()

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

- + bot.run()

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

+ \ No newline at end of file diff --git a/dev/api/exception.html b/dev/api/exception.html index 6b181b3e..636b3724 100644 --- a/dev/api/exception.html +++ b/dev/api/exception.html @@ -5,23 +5,23 @@ liteyuki.exception | 轻雪机器人 - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/dev/api/index.html b/dev/api/index.html index 5f38ffbe..c75f3a03 100644 --- a/dev/api/index.html +++ b/dev/api/index.html @@ -5,23 +5,23 @@ liteyuki API | 轻雪机器人 - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/dev/api/log.html b/dev/api/log.html index 067214f0..9d6d798f 100644 --- a/dev/api/log.html +++ b/dev/api/log.html @@ -5,22 +5,22 @@ liteyuki.log | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.log

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

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


func get_format(level: str) -> str

说明: 获取日志格式

参数:

  • level: 日志等级
源代码在GitHub上查看
python
def get_format(level: str) -> str:
+    
Skip to content

模块 liteyuki.log

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

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


func get_format(level: str) -> str

说明: 获取日志格式

参数:

  • level: 日志等级
源代码在GitHub上查看
python
def get_format(level: str) -> str:
     if level == 'DEBUG':
         return debug_format
     else:
@@ -37,8 +37,8 @@
     logger.level('ERROR', color='<red>', icon=f"{('⭕' if show_icon else '')}")
     logger.level('CRITICAL', color='<red>', icon=f"{('❌' if show_icon else '')}")
     logger.level('TRACE', color='<cyan>', icon=f"{('🔍' if show_icon else '')}")
-    logger.bind()

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

- + logger.bind()

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

+ \ No newline at end of file diff --git a/dev/api/plugin/index.html b/dev/api/plugin/index.html index d0c4bdf6..3216d780 100644 --- a/dev/api/plugin/index.html +++ b/dev/api/plugin/index.html @@ -5,24 +5,24 @@ liteyuki.plugin | 轻雪机器人 - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/dev/api/plugin/load.html b/dev/api/plugin/load.html index 3e7d06a6..9f2b7f40 100644 --- a/dev/api/plugin/load.html +++ b/dev/api/plugin/load.html @@ -5,22 +5,22 @@ liteyuki.plugin.load | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.plugin.load

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

@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py @Software: PyCharm


func load_plugin(module_path: str | Path) -> Optional[Plugin]

说明: 加载单个插件,可以是本地插件或是通过 pip 安装的插件。

参数:

  • module_path: 插件名称 path.to.your.plugin
  • 或插件路径 pathlib.Path(path/to/your/plugin):
源代码在GitHub上查看
python
def load_plugin(module_path: str | Path) -> Optional[Plugin]:
+    
Skip to content

模块 liteyuki.plugin.load

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

@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py @Software: PyCharm


func load_plugin(module_path: str | Path) -> Optional[Plugin]

说明: 加载单个插件,可以是本地插件或是通过 pip 安装的插件。

参数:

  • module_path: 插件名称 path.to.your.plugin
  • 或插件路径 pathlib.Path(path/to/your/plugin):
源代码在GitHub上查看
python
def load_plugin(module_path: str | Path) -> Optional[Plugin]:
     module_path = path_to_module_name(Path(module_path)) if isinstance(module_path, Path) else module_path
     try:
         module = import_module(module_path)
@@ -81,8 +81,8 @@
             color = 'e'
         case PluginType.SERVICE:
             color = 'c'
-    return f'<{color}>{display_name} [{plugin_type.name}]</{color}>'

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

- + 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 d964a198..9c3893f6 100644 --- a/dev/api/plugin/manager.html +++ b/dev/api/plugin/manager.html @@ -5,23 +5,23 @@ liteyuki.plugin.manager | 轻雪机器人 - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/dev/api/plugin/model.html b/dev/api/plugin/model.html index 67660814..9fadaf67 100644 --- a/dev/api/plugin/model.html +++ b/dev/api/plugin/model.html @@ -5,24 +5,24 @@ liteyuki.plugin.model | 轻雪机器人 - - + + - + - - - + + + -
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)


func 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 生成

- +
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)


func 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/plugins/index.html b/dev/api/plugins/index.html index 74055379..46b71add 100644 --- a/dev/api/plugins/index.html +++ b/dev/api/plugins/index.html @@ -5,23 +5,23 @@ liteyuki.plugins | 轻雪机器人 - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/dev/api/plugins/liteecho.html b/dev/api/plugins/liteecho.html index df6d8bad..0f3ad016 100644 --- a/dev/api/plugins/liteecho.html +++ b/dev/api/plugins/liteecho.html @@ -5,25 +5,25 @@ liteyuki.plugins.liteecho | 轻雪机器人 - - + + - + - - - + + + -
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 func liteecho(event: MessageEvent)

源代码在GitHub上查看
python
@on_startswith(['liteecho'], rule=is_su_rule).handle()
+    
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 func 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 生成

- + 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 07f8f6d9..e4cf7359 100644 --- a/dev/api/plugins/plugin_loader/index.html +++ b/dev/api/plugins/plugin_loader/index.html @@ -5,27 +5,27 @@ liteyuki.plugins.plugin_loader | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.plugins.plugin_loader

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

@Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File : init.py.py @Software: PyCharm


func default_plugins_loader()

说明: 默认插件加载器,应在初始化时调用

源代码在GitHub上查看
python
def default_plugins_loader():
+    
Skip to content

模块 liteyuki.plugins.plugin_loader

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

@Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File : init.py.py @Software: PyCharm


func default_plugins_loader()

说明: 默认插件加载器,应在初始化时调用

源代码在GitHub上查看
python
def default_plugins_loader():
     for plugin in get_config('liteyuki.plugins', []):
         load_plugin(plugin)
     for plugin_dir in get_config('liteyuki.plugin_dirs', ['src/liteyuki_plugins']):
-        load_plugins(plugin_dir)

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

- + load_plugins(plugin_dir)

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

+ \ No newline at end of file diff --git a/dev/api/session/event.html b/dev/api/session/event.html index 49d5c2d0..b8e0d76d 100644 --- a/dev/api/session/event.html +++ b/dev/api/session/event.html @@ -5,22 +5,22 @@ liteyuki.session.event | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.session.event

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

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

class MessageEvent


func __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)

说明: 轻雪抽象消息事件

源代码在GitHub上查看
python
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):
+    
Skip to content

模块 liteyuki.session.event

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

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

class MessageEvent


func __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)

说明: 轻雪抽象消息事件

源代码在GitHub上查看
python
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):
     if data is None:
         data = {}
     self.message_type = message_type
@@ -34,8 +34,8 @@
     self.receive_channel = receive_channel

func reply(self, message: str | dict[str, Any])

说明: 回复消息

参数:

  • message:
源代码在GitHub上查看
python
def reply(self, message: str | dict[str, Any]):
     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 生成

- + self.receive_channel.send(reply_event)

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

+ \ No newline at end of file diff --git a/dev/api/session/index.html b/dev/api/session/index.html index 5fa23be7..eb2b0339 100644 --- a/dev/api/session/index.html +++ b/dev/api/session/index.html @@ -5,27 +5,27 @@ liteyuki.session | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.session

该模块参考并引用了nonebot-plugin-alconna的消息段定义


func message_handler_thread(i_chans: Iterable[Chan[Any]])

参数:

  • i_chans: 多路输入管道组
源代码在GitHub上查看
python
def message_handler_thread(i_chans: Iterable[Chan[Any]]):
+    
Skip to content

模块 liteyuki.session

该模块参考并引用了nonebot-plugin-alconna的消息段定义


func message_handler_thread(i_chans: Iterable[Chan[Any]])

参数:

  • i_chans: 多路输入管道组
源代码在GitHub上查看
python
def message_handler_thread(i_chans: Iterable[Chan[Any]]):
     for msg in select(*i_chans):
         logger.debug(f'Recv from anybot {msg}')
         logger.info(f'Recv from anybot {msg}')
-    pass

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

- + pass

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

+ \ No newline at end of file diff --git a/dev/api/session/matcher.html b/dev/api/session/matcher.html index 69f3997b..b61886e5 100644 --- a/dev/api/session/matcher.html +++ b/dev/api/session/matcher.html @@ -5,22 +5,22 @@ liteyuki.session.matcher | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.session.matcher

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

@Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : matcher.py @Software: PyCharm

class Matcher


func __init__(self, rule: Rule, priority: int, block: bool)

说明: 匹配器

参数:

  • rule: 规则
  • priority: 优先级 >= 0
  • block: 是否阻断后续优先级更低的匹配器
源代码在GitHub上查看
python
def __init__(self, rule: Rule, priority: int, block: bool):
+    
Skip to content

模块 liteyuki.session.matcher

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

@Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : matcher.py @Software: PyCharm

class Matcher


func __init__(self, rule: Rule, priority: int, block: bool)

说明: 匹配器

参数:

  • rule: 规则
  • priority: 优先级 >= 0
  • block: 是否阻断后续优先级更低的匹配器
源代码在GitHub上查看
python
def __init__(self, rule: Rule, priority: int, block: bool):
     self.rule = rule
     self.priority = priority
     self.block = block
@@ -36,8 +36,8 @@
         try:
             await handler(event)
         except Exception:
-            traceback.print_exc()

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

- + traceback.print_exc()

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

+ \ No newline at end of file diff --git a/dev/api/session/message/segments.html b/dev/api/session/message/segments.html index ee72eb87..011c3680 100644 --- a/dev/api/session/message/segments.html +++ b/dev/api/session/message/segments.html @@ -5,23 +5,23 @@ liteyuki.session.message.segments | 轻雪机器人 - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/dev/api/session/models.html b/dev/api/session/models.html index 34c9edf5..4941a61c 100644 --- a/dev/api/session/models.html +++ b/dev/api/session/models.html @@ -5,22 +5,22 @@ liteyuki.session.models | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.session.models

本模块使用了nonebot-plugin-uninfo的部分模型定义 MIT License

Copyright (c) 2024 RF-Tar-Railt

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

class SceneType(int, Enum)

attr PRIVATE = 0

attr GROUP = 1

attr GUILD = 2

attr CHANNEL_TEXT = 3

attr CHANNEL_CATEGORY = 4

attr CHANNEL_VOICE = 5

class User(BaseModel)

attr id: str = NO_DEFAULT

attr name: str | None = None

attr nick: str | None = None

attr avatar: str | None = None

attr gender: str | None = None

class Scene(BaseModel)

attr id: str = NO_DEFAULT

attr type: SceneType = NO_DEFAULT

attr name: str | None = None

attr avatar: str | None = None

attr parent: 'Scene | None' = None

class Role(BaseModel)

attr id: str = NO_DEFAULT

attr level: int | None = None

attr name: str | None = None

class Member(BaseModel)

attr user: User = NO_DEFAULT

attr nickname: str | None = None

attr role: Role | None = None

attr mute: bool | None = None

attr joined_at: datetime | None = None

class Session(BaseModel)


@property

func session_id(self)

源代码在GitHub上查看
python
@property
+    
Skip to content

模块 liteyuki.session.models

本模块使用了nonebot-plugin-uninfo的部分模型定义 MIT License

Copyright (c) 2024 RF-Tar-Railt

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

class SceneType(int, Enum)

attr PRIVATE = 0

attr GROUP = 1

attr GUILD = 2

attr CHANNEL_TEXT = 3

attr CHANNEL_CATEGORY = 4

attr CHANNEL_VOICE = 5

class User(BaseModel)

attr id: str = NO_DEFAULT

attr name: str | None = None

attr nick: str | None = None

attr avatar: str | None = None

attr gender: str | None = None

class Scene(BaseModel)

attr id: str = NO_DEFAULT

attr type: SceneType = NO_DEFAULT

attr name: str | None = None

attr avatar: str | None = None

attr parent: 'Scene | None' = None

class Role(BaseModel)

attr id: str = NO_DEFAULT

attr level: int | None = None

attr name: str | None = None

class Member(BaseModel)

attr user: User = NO_DEFAULT

attr nickname: str | None = None

attr role: Role | None = None

attr mute: bool | None = None

attr joined_at: datetime | None = None

class Session(BaseModel)


@property

func session_id(self)

源代码在GitHub上查看
python
@property
 def session_id(self):
     if self.scope == SceneType.PRIVATE:
         return f'{self.scope}:{self.user.id}'
@@ -32,8 +32,8 @@
     if self.scope == SceneType.PRIVATE:
         return f'{self.scope}:{self.user.id}'
     elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):
-        return f'{self.scope}:{self.scene.id}:{self.user.id}'

attr self_id: str = NO_DEFAULT

attr adapter: str = NO_DEFAULT

attr scope: str = NO_DEFAULT

attr scene: Scene = NO_DEFAULT

attr user: User = NO_DEFAULT

attr member: 'Member | None' = None

attr operator: 'Member | None' = None

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

- + return f'{self.scope}:{self.scene.id}:{self.user.id}'

attr self_id: str = NO_DEFAULT

attr adapter: str = NO_DEFAULT

attr scope: str = NO_DEFAULT

attr scene: Scene = NO_DEFAULT

attr user: User = NO_DEFAULT

attr member: 'Member | None' = None

attr operator: 'Member | None' = None

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

+ \ No newline at end of file diff --git a/dev/api/session/on.html b/dev/api/session/on.html index 8b6e376f..c5393838 100644 --- a/dev/api/session/on.html +++ b/dev/api/session/on.html @@ -5,22 +5,22 @@ liteyuki.session.on | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.session.on

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

@Time : 2024/8/19 下午10:52 @Author : snowykami @Email : snowykami@outlook.com @File : on.py @Software: PyCharm


func add_matcher(matcher: Matcher)

源代码在GitHub上查看
python
def add_matcher(matcher: Matcher):
+    
Skip to content

模块 liteyuki.session.on

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

@Time : 2024/8/19 下午10:52 @Author : snowykami @Email : snowykami@outlook.com @File : on.py @Software: PyCharm


func add_matcher(matcher: Matcher)

源代码在GitHub上查看
python
def add_matcher(matcher: Matcher):
     for i, m in enumerate(_matcher_list):
         if m.priority < matcher.priority:
             _matcher_list.insert(i, matcher)
@@ -34,8 +34,8 @@
     @Rule
     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 生成

- + return on_message(on_keywords_rule & rule, priority, block)

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

+ \ No newline at end of file diff --git a/dev/api/session/rule.html b/dev/api/session/rule.html index dff84d03..fe01abae 100644 --- a/dev/api/session/rule.html +++ b/dev/api/session/rule.html @@ -5,22 +5,22 @@ liteyuki.session.rule | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.session.rule

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

@Time : 2024/8/19 下午10:55 @Author : snowykami @Email : snowykami@outlook.com @File : rule.py @Software: PyCharm

var RuleHandlerFunc

  • 说明: 规则函数签名

  • 类型: TypeAlias

  • 默认值: Callable[[MessageEvent], Coroutine[None, None, bool]]

class Rule


func __init__(self, handler: RuleHandlerFunc)

源代码在GitHub上查看
python
def __init__(self, handler: RuleHandlerFunc):
+    
Skip to content

模块 liteyuki.session.rule

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

@Time : 2024/8/19 下午10:55 @Author : snowykami @Email : snowykami@outlook.com @File : rule.py @Software: PyCharm

var RuleHandlerFunc

  • 说明: 规则函数签名

  • 类型: TypeAlias

  • 默认值: Callable[[MessageEvent], Coroutine[None, None, bool]]

class Rule


func __init__(self, handler: RuleHandlerFunc)

源代码在GitHub上查看
python
def __init__(self, handler: RuleHandlerFunc):
     self.handler = handler

func self | other: Rule => Rule

源代码在GitHub上查看
python
def __or__(self, other: 'Rule') -> 'Rule':
 
     async def combined_handler(event: MessageEvent) -> bool:
@@ -36,8 +36,8 @@
 async def empty_rule(event: MessageEvent) -> bool:
     return True

@Rule

async func 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 生成

- + return str(event.user_id) in _superusers

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

+ \ No newline at end of file diff --git a/dev/api/utils.html b/dev/api/utils.html index e3ed9a7f..5a078991 100644 --- a/dev/api/utils.html +++ b/dev/api/utils.html @@ -5,22 +5,22 @@ liteyuki.utils | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

模块 liteyuki.utils

一些常用的工具类,部分来源于 nonebot 并遵循其许可进行修改


func is_coroutine_callable(call: Callable[..., Any]) -> bool

说明: 判断是否为协程可调用对象

参数:

  • call: 可调用对象

返回: bool: 是否为协程可调用对象

源代码在GitHub上查看
python
def is_coroutine_callable(call: Callable[..., Any]) -> bool:
+    
Skip to content

模块 liteyuki.utils

一些常用的工具类,部分来源于 nonebot 并遵循其许可进行修改


func is_coroutine_callable(call: Callable[..., Any]) -> bool

说明: 判断是否为协程可调用对象

参数:

  • call: 可调用对象

返回: bool: 是否为协程可调用对象

源代码在GitHub上查看
python
def is_coroutine_callable(call: Callable[..., Any]) -> bool:
     if inspect.isroutine(call):
         return inspect.iscoroutinefunction(call)
     if inspect.isclass(call):
@@ -52,8 +52,8 @@
     async def wrapper(*args, **kwargs):
         return func(*args, **kwargs)
     wrapper.__signature__ = inspect.signature(func)
-    return wrapper

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

- + return wrapper

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

+ \ No newline at end of file diff --git a/dev/best_practices.html b/dev/best_practices.html index b71aeb79..79261629 100644 --- a/dev/best_practices.html +++ b/dev/best_practices.html @@ -5,23 +5,23 @@ 最佳实践 | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

最佳实践

机器人应用

插件

其他

  • liteyuki starmap:轻雪官方星图,展示轻雪的所有实例及其位置分布
  • TRSS_Liteyuki:TRSS LiteyukiBot 管理脚本
  • litedoc:轻雪API文档生成器
  • liteyukibot-api (闭源):轻雪机器人统计接口

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

- +
Skip to content

最佳实践

机器人应用

插件

其他

  • liteyuki starmap:轻雪官方星图,展示轻雪的所有实例及其位置分布
  • TRSS_Liteyuki:TRSS LiteyukiBot 管理脚本
  • litedoc:轻雪API文档生成器
  • liteyukibot-api (闭源):轻雪机器人统计接口

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

+ \ No newline at end of file diff --git a/dev/comm.html b/dev/comm.html index ce5e38b1..c08a05db 100644 --- a/dev/comm.html +++ b/dev/comm.html @@ -5,22 +5,22 @@ 进程通信 | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

通道通信

简介

轻雪运行在主进程 MainProcess 里,有部分实现插件为了一些功能在子进程中运行,这样两个进程上下文是不会互相干扰的,因此无法通过共享内存和直接对象传递进行通信。

例如子进程接收到用户信息需要重启机器人,这时可以通过通道对主进程发送消息,主进程接收到消息后重启对应子进程。

示例

通道是全双工的,有两种接收模式,但一个通道只能使用一种,即被动模式和主动模式,被动模式由chan.on_receive()装饰回调函数实现,主动模式需调用chan.receive()实现

  • 创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为{process_name}-active{process_name}-passive
  • 主进程中通过get_channel函数获取通道对象
  • 子进程中导入单例active_channelpassive_channel即可

在轻雪插件中(主进程中)

python
import asyncio
+    
Skip to content

通道通信

简介

轻雪运行在主进程 MainProcess 里,有部分实现插件为了一些功能在子进程中运行,这样两个进程上下文是不会互相干扰的,因此无法通过共享内存和直接对象传递进行通信。

例如子进程接收到用户信息需要重启机器人,这时可以通过通道对主进程发送消息,主进程接收到消息后重启对应子进程。

示例

通道是全双工的,有两种接收模式,但一个通道只能使用一种,即被动模式和主动模式,被动模式由chan.on_receive()装饰回调函数实现,主动模式需调用chan.receive()实现

  • 创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为{process_name}-active{process_name}-passive
  • 主进程中通过get_channel函数获取通道对象
  • 子进程中导入单例active_channelpassive_channel即可

在轻雪插件中(主进程中)

python
import asyncio
 
 from liteyuki.comm import get_channel, Channel
 from liteyuki import get_bot
@@ -62,8 +62,8 @@
 ...

共享内存通信

简介

  • 相比于普通进程通信,内存共享使得代码编写更加简洁,轻雪框架提供了一个内存共享通信的接口,你可以通过storage模块实现内存共享通信,该模块封装通道实现
  • 内存共享是线程安全的,你可以在多个线程中读写共享内存,线程锁会自动保护共享内存的读写操作

示例

在任意进程中均可使用

python
from liteyuki.comm.storage import shared_memory
 
 shared_memory.set("key", "value")  # 设置共享内存
-value = shared_memory.get("key")  # 获取共享内存

源代码:liteyuki/comm/storage.py

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

- +value = shared_memory.get("key") # 获取共享内存

源代码:liteyuki/comm/storage.py

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

+ \ No newline at end of file diff --git a/dev/guide.html b/dev/guide.html index 7da4ca93..aaa5136b 100644 --- a/dev/guide.html +++ b/dev/guide.html @@ -5,24 +5,24 @@ 开发指南 | 轻雪机器人 - - + + - + - - - - + + + + -
Skip to content

开发指南

如何开发

插件开发无需阅读本文档,请阅读插件开发文档API 引用

如需往轻雪仓库提交代码,请阅读以下内容:

  1. 首先fork一份轻雪仓库到你的个人/组织账户下。
  2. 在你的仓库中进行开发。
  3. 在你的仓库中创建一个新的分支,将你的代码提交到这个分支。
  4. 在你的仓库中创建一个Pull Request,将你的分支合并到轻雪仓库的main分支。

参与开发默认你已经了解Python语言和轻雪框架的基本使用方法,如果是文档相关的开发,请确保你了解Markdown语法和基本前端知识。 出现冲突请与仓库维护者联系。

建议

  • 开发过程中可以使用mypy, flake8, black等工具进行代码检查和格式化。
  • 启用开发者模式,可以在config.yml中设置dev_mode: true,这样可以在控制台看到更多的调试信息。

项目结构

  • main.py: 机器人入口文件
  • liteyuki: 框架目录(liteyukibot)
  • src: 机器人源码目录
    • liteyuki_plugins: 轻雪插件目录
    • nonebot_plugins: Nonebot插件目录
    • resources: 内置资源包目录
    • utils: 工具目录
  • tests: 单元测试目录
  • docs: 文档目录
    • en: 英文文档
    • zh: 中文文档
  • docker: Docker相关内容目录

其中,liteyuki框架是包含在LiteyukiBot应用中的,所以此项目既是LiteyukiBot应用仓库,同时也是liteyuki框架的仓库

src目录下为应用程序部分,业务逻辑请在此目录下进行开发,liteyuki_pluginsnonebot_plugins目录下为插件目录,插件开发请在此目录下进行开发。

规范化

  • 代码请遵循PEP8Google Python Style Guide
  • 提交到轻雪仓库的代码,请遵循以下规范:
    • 请确保代码是可运行的,没有危害的。
    • 请确保代码的类型提示是正确的。
    • 请确保注释风格为Google DocstringLiteyuki Docstring(推荐)以保证Litedoc能够正确解析并生成文档。
    • 字符串请使用双引号",尽量避免使用单引号',但在嵌套字符串时可以使用单引号。
    • 若有面向普通用户部分,请确保文档是完善的(每种语言都有对应的文档)。
  • commit message请遵循以下规范:
    • 应在每次完成一个功能或修复一个bug后提交代码,不要将多个功能或多个bug的代码混在一起提交。
    • 我们使用gitmoji来标记commit的类型,如:sparkles:表示引入新功能,:bug:表示修复bug等,具体请参考gitmoji
    • commit message的格式为<emoji> [type:] <message>,如:sparkles: feat: 给event添加新字段, 其中type字段为commit类型且可选,message字段为简短的描述,总结来说就是你干了什么。
    • 不限制commit message的语言,有条件可以使用中英双语。
  • 文档请遵循Markdown语法,并且支持vitepress相关内容:
    • 修订文档时,每个语言的文档都要修订。
    • 请确保文档内的链接是正确的,不要出现无法访问的死链接。
    • 请确保用户文档是通俗易懂的,开发文档是详细的。

最后

  • 本项目是一个非盈利的开源项目,我们欢迎任何人参与开发,你的贡献将会使轻雪变得更好。

感谢以下贡献者!

Contributors

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

- +
Skip to content

开发指南

如何开发

插件开发无需阅读本文档,请阅读插件开发文档API 引用

如需往轻雪仓库提交代码,请阅读以下内容:

  1. 首先fork一份轻雪仓库到你的个人/组织账户下。
  2. 在你的仓库中进行开发。
  3. 在你的仓库中创建一个新的分支,将你的代码提交到这个分支。
  4. 在你的仓库中创建一个Pull Request,将你的分支合并到轻雪仓库的main分支。

参与开发默认你已经了解Python语言和轻雪框架的基本使用方法,如果是文档相关的开发,请确保你了解Markdown语法和基本前端知识。 出现冲突请与仓库维护者联系。

建议

  • 开发过程中可以使用mypy, flake8, black等工具进行代码检查和格式化。
  • 启用开发者模式,可以在config.yml中设置dev_mode: true,这样可以在控制台看到更多的调试信息。

项目结构

  • main.py: 机器人入口文件
  • liteyuki: 框架目录(liteyukibot)
  • src: 机器人源码目录
    • liteyuki_plugins: 轻雪插件目录
    • nonebot_plugins: Nonebot插件目录
    • resources: 内置资源包目录
    • utils: 工具目录
  • tests: 单元测试目录
  • docs: 文档目录
    • en: 英文文档
    • zh: 中文文档
  • docker: Docker相关内容目录

其中,liteyuki框架是包含在LiteyukiBot应用中的,所以此项目既是LiteyukiBot应用仓库,同时也是liteyuki框架的仓库

src目录下为应用程序部分,业务逻辑请在此目录下进行开发,liteyuki_pluginsnonebot_plugins目录下为插件目录,插件开发请在此目录下进行开发。

规范化

  • 代码请遵循PEP8Google Python Style Guide
  • 提交到轻雪仓库的代码,请遵循以下规范:
    • 请确保代码是可运行的,没有危害的。
    • 请确保代码的类型提示是正确的。
    • 请确保注释风格为Google DocstringLiteyuki Docstring(推荐)以保证Litedoc能够正确解析并生成文档。
    • 字符串请使用双引号",尽量避免使用单引号',但在嵌套字符串时可以使用单引号。
    • 若有面向普通用户部分,请确保文档是完善的(每种语言都有对应的文档)。
  • commit message请遵循以下规范:
    • 应在每次完成一个功能或修复一个bug后提交代码,不要将多个功能或多个bug的代码混在一起提交。
    • 我们使用gitmoji来标记commit的类型,如:sparkles:表示引入新功能,:bug:表示修复bug等,具体请参考gitmoji
    • commit message的格式为<emoji> [type:] <message>,如:sparkles: feat: 给event添加新字段, 其中type字段为commit类型且可选,message字段为简短的描述,总结来说就是你干了什么。
    • 不限制commit message的语言,有条件可以使用中英双语。
  • 文档请遵循Markdown语法,并且支持vitepress相关内容:
    • 修订文档时,每个语言的文档都要修订。
    • 请确保文档内的链接是正确的,不要出现无法访问的死链接。
    • 请确保用户文档是通俗易懂的,开发文档是详细的。

最后

  • 本项目是一个非盈利的开源项目,我们欢迎任何人参与开发,你的贡献将会使轻雪变得更好。

感谢以下贡献者!

Contributors

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

+ \ No newline at end of file diff --git a/dev/lyfunc.html b/dev/lyfunc.html index 6ff6fc74..88195c30 100644 --- a/dev/lyfunc.html +++ b/dev/lyfunc.html @@ -5,22 +5,22 @@ 轻雪函数 | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

轻雪函数

轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.

函数文件

函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mcfunction,文件内容为一系列的命令,每行一个命令,支持单行注释#(编辑时的语法高亮可采取shell格式),例如:

shell
# 在发信器输出"hello world"
+    
Skip to content

轻雪函数

轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.

函数文件

函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mcfunction,文件内容为一系列的命令,每行一个命令,支持单行注释#(编辑时的语法高亮可采取shell格式),例如:

shell
# 在发信器输出"hello world"
 cmd echo hello world
 
 # 如果你想同时输出多行内容可以尝试换行符(Python格式)
@@ -39,8 +39,8 @@
 api friend_poke user_id=user_id
 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 生成

- +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 dcca0ead..c5d7371b 100644 --- a/dev/plugin.html +++ b/dev/plugin.html @@ -5,22 +5,22 @@ 插件开发 | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

简介

轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能

插件大致可分为应用(Application)、实现(Implementation)及服务(Service)等几种类型,大部分情况下一个插件通常承担着多个责任,可按需调整

应用:从总线通道接收到消息后进行处理,响应,以实现某些功能,例如echo

实现:对接特定平台,把平台的消息转换为轻雪消息格式传入总线通道

服务:提供一系列对外的ipc/rpc/http等服务,供其他插件调用

我们鼓励使用magicoca进行对象传递来进行插件间通信而不是依赖关系,这样可以避免很多潜在的问题。

开始

创建插件

一个.py文件或一个包含__init__.py的文件夹即可被识别为插件

首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件

__init__.py

python
from liteyuki.plugin import PluginMetadata, PluginType
+    
Skip to content

简介

轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能

插件大致可分为应用(Application)、实现(Implementation)及服务(Service)等几种类型,大部分情况下一个插件通常承担着多个责任,可按需调整

应用:从总线通道接收到消息后进行处理,响应,以实现某些功能,例如echo

实现:对接特定平台,把平台的消息转换为轻雪消息格式传入总线通道

服务:提供一系列对外的ipc/rpc/http等服务,供其他插件调用

我们鼓励使用magicoca进行对象传递来进行插件间通信而不是依赖关系,这样可以避免很多潜在的问题。

开始

创建插件

一个.py文件或一个包含__init__.py的文件夹即可被识别为插件

首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件

__init__.py

python
from liteyuki.plugin import PluginMetadata, PluginType
 from .watch_dog import *    # 导入逻辑部分
 
 # 定义插件元数据
@@ -51,8 +51,8 @@
     logger.debug(f"File {event.src_path} changed, reloading nonebot...")
     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 生成

- +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 311b6cd6..291e6baa 100644 --- a/dev/resource.html +++ b/dev/resource.html @@ -5,22 +5,22 @@ 资源包开发 | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

简介

资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码

  • 资源/主题商店提供了一些资源包供你选择,你也可以自己制作资源包
  • 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。
  • 部分内容制作需要一点点前端基础,例如htmlcss
  • 轻雪原版资源包请查看LiteyukiBot/liteyuki/resources,可以在此基础上进行修改
  • 欢迎各位投稿资源包到轻雪资源商店

请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。


加载资源包

  • 资源包通常是以.zip格式压缩的,只需要将其解压到根目录resources目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的
shell
main.py
+    
Skip to content

简介

资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码

  • 资源/主题商店提供了一些资源包供你选择,你也可以自己制作资源包
  • 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。
  • 部分内容制作需要一点点前端基础,例如htmlcss
  • 轻雪原版资源包请查看LiteyukiBot/liteyuki/resources,可以在此基础上进行修改
  • 欢迎各位投稿资源包到轻雪资源商店

请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。


加载资源包

  • 资源包通常是以.zip格式压缩的,只需要将其解压到根目录resources目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的
shell
main.py
 resources
 └─resource_pack_1
     ├─metadata.yml
@@ -32,8 +32,8 @@
 version: "1.0.0"
 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 生成

- +...
  • 资源包加载遵循一个优先级,即后加载的资源包会覆盖前面的资源包,例如,你在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 d7f5cf4d..44e3b070 100644 --- a/en/deploy/config.html +++ b/en/deploy/config.html @@ -5,22 +5,22 @@ Configurations | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Configurations

LiteyukiBot supports yaml, json, and toml as configuration files, depending on your personal preference.

When you first run LiteyukiBot, it will generate config.yml and the config directory. You can modify the configuration items and restart LiteyukiBot. In most cases, you only need to modify the superusers and nickname fields.

When starting, LiteyukiBot will load all configuration files in the project directory config.yml/yaml/json/toml and the config directory. You can create multiple configuration files in the config directory, and LiteyukiBot will automatically merge these configuration files.

Basic Configuration

yaml
# NoneBot configuration
+    
Skip to content

Configurations

LiteyukiBot supports yaml, json, and toml as configuration files, depending on your personal preference.

When you first run LiteyukiBot, it will generate config.yml and the config directory. You can modify the configuration items and restart LiteyukiBot. In most cases, you only need to modify the superusers and nickname fields.

When starting, LiteyukiBot will load all configuration files in the project directory config.yml/yaml/json/toml and the config directory. You can create multiple configuration files in the config directory, and LiteyukiBot will automatically merge these configuration files.

Basic Configuration

yaml
# NoneBot configuration
 nonebot:
   command_start: [ "/", "" ] # Command prefix, if there is no "" empty command header, please enable alconna_use_command_start to ensure alconna parsing is normal
   host: 127.0.0.1 # Listening address, default is local, if you want to receive external requests, please fill in
@@ -48,8 +48,8 @@
   allow_update: true # Whether to allow Liteyuki to update
   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

- +...
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 ba27c06e..6df92815 100644 --- a/en/deploy/fandq.html +++ b/en/deploy/fandq.html @@ -5,23 +5,23 @@ FAQ | LiteyukiBot - - + + - + - - - + + + -
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
  • 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?

    • Some plugins provide the ability to log in to specific platforms, for example, using the NoneBot plugin to log in to supported adapter platforms
  • 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

Documentation built with VitePress | API references generated by litedoc

- +
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
  • 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?

    • Some plugins provide the ability to log in to specific platforms, for example, using the NoneBot plugin to log in to supported adapter platforms
  • 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

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 7c69f184..825dc4fd 100644 --- a/en/deploy/install.html +++ b/en/deploy/install.html @@ -5,22 +5,22 @@ Install | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Install

Normal Installation

  1. Install Git and Python3.10+ Environment.
bash
# Clone Repo
+    
Skip to content

Install

Normal Installation

  1. Install Git and Python3.10+ Environment.
bash
# Clone Repo
 git clone https://github.com/LiteyukiStudio/LiteyukiBot --depth=1
 
 # Change directory
@@ -37,8 +37,8 @@
 pip install -r requirements.txt
 
 # Run Liteyuki
-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

bash
docker pull git.liteyuki.icu/bot/app:latest  # Nightly build

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

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

- +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

bash
docker pull git.liteyuki.icu/bot/app:latest  # Nightly build

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

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/bot/index.html b/en/dev/api/bot/index.html index 062a6d2f..edf59b10 100644 --- a/en/dev/api/bot/index.html +++ b/en/dev/api/bot/index.html @@ -5,22 +5,22 @@ liteyuki.bot | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.bot

class LiteyukiBot


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

Description: 初始化轻雪实例

Arguments:

  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, **kwargs) -> None:
+    
Skip to content

Module liteyuki.bot

class LiteyukiBot


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

Description: 初始化轻雪实例

Arguments:

  • **kwargs: 配置
Source code or View on GitHub
python
def __init__(self, **kwargs) -> None:
     """总通道"""
     self.i_chan = Chan[Any]()
     self.o_chan = Chan[Any]()
@@ -97,8 +97,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

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 d3718058..9d30564b 100644 --- a/en/dev/api/bot/lifespan.html +++ b/en/dev/api/bot/lifespan.html @@ -5,22 +5,22 @@ liteyuki.bot.lifespan | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module 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

  • 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


func __init__(self) -> None

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

Source code or View on GitHub
python
def __init__(self) -> None:
+    
Skip to content

Module 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

  • 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


func __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] = []
@@ -54,8 +54,8 @@
     logger.debug('Running before_restart functions')
     await self.run_funcs(self._before_process_restart_funcs, *args, **kwargs)

async func after_restart(self) -> None

Description: 重启后钩子 未实现

Source code or View on GitHub
python
async def after_restart(self) -> None:
     logger.debug('Running after_restart functions')
-    await self.run_funcs(self._after_restart_funcs)

Documentation built with VitePress | API references generated by litedoc

- + 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 4d8ffb4e..16ef950a 100644 --- a/en/dev/api/comm/channel.html +++ b/en/dev/api/comm/channel.html @@ -5,22 +5,22 @@ liteyuki.comm.channel | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.comm.channel

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

var SYNC_ON_RECEIVE_FUNC

  • Description: 同步接收函数

  • Type: TypeAlias

  • Default: Callable[[T], 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])


func __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

Module liteyuki.comm.channel

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

var SYNC_ON_RECEIVE_FUNC

  • Description: 同步接收函数

  • Type: TypeAlias

  • Default: Callable[[T], 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])


func __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):
     self.conn_send, self.conn_recv = Pipe()
     self._conn_send_inner, self._conn_recv_inner = Pipe()
     self._closed = False
@@ -110,8 +110,8 @@
     recv_chan.send(get_channel(name))

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

func 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

- + 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/event.html b/en/dev/api/comm/event.html index 46dc9c0e..91e7734a 100644 --- a/en/dev/api/comm/event.html +++ b/en/dev/api/comm/event.html @@ -5,25 +5,25 @@ liteyuki.comm.event | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.comm.event

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

class Event


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

Source code or View on GitHub
python
def __init__(self, name: str, data: dict[str, Any]):
+    
Skip to content

Module liteyuki.comm.event

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

class Event


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

Source code or View on GitHub
python
def __init__(self, name: str, data: dict[str, Any]):
     self.name = name
-    self.data = data

Documentation built with VitePress | API references generated by litedoc

- + self.data = data

Documentation built with VitePress | API references generated by litedoc

+ \ No newline at end of file diff --git a/en/dev/api/comm/index.html b/en/dev/api/comm/index.html index f26c9dc4..e76e20d5 100644 --- a/en/dev/api/comm/index.html +++ b/en/dev/api/comm/index.html @@ -5,23 +5,23 @@ liteyuki.comm | LiteyukiBot - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/en/dev/api/comm/storage.html b/en/dev/api/comm/storage.html index 3ba2a60d..743bb785 100644 --- a/en/dev/api/comm/storage.html +++ b/en/dev/api/comm/storage.html @@ -5,22 +5,22 @@ liteyuki.comm.storage | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.comm.storage

共享内存模块。类似于redis,但是更加轻量级并且线程安全

var _on_main_subscriber_receive_funcs

  • Description: 主进程订阅者接收函数

  • Type: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • Default: {}

var _on_sub_subscriber_receive_funcs

  • Description: 子进程订阅者接收函数

  • Type: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • Default: {}

class KeyValueStore


func __init__(self)

Source code or View on GitHub
python
def __init__(self):
+    
Skip to content

Module liteyuki.comm.storage

共享内存模块。类似于redis,但是更加轻量级并且线程安全

var _on_main_subscriber_receive_funcs

  • Description: 主进程订阅者接收函数

  • Type: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • Default: {}

var _on_sub_subscriber_receive_funcs

  • Description: 子进程订阅者接收函数

  • Type: dict[str, list[ASYNC_ON_RECEIVE_FUNC]]

  • Default: {}

class KeyValueStore


func __init__(self)

Source code or View on GitHub
python
def __init__(self):
     self._store = {}
     self.active_chan = Channel[tuple[str, Optional[dict[str, Any]]]](name='shared_memory-active')
     self.passive_chan = Channel[tuple[str, Optional[dict[str, Any]]]](name='shared_memory-passive')
@@ -109,8 +109,8 @@
     shared_memory.delete(key)

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

func 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())

Documentation built with VitePress | API references generated by litedoc

- + 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 5970bca9..ecec3839 100644 --- a/en/dev/api/config.html +++ b/en/dev/api/config.html @@ -5,22 +5,22 @@ liteyuki.config | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.config

该模块用于常用配置文件的加载 多配置文件编写原则:

  1. 尽量不要冲突: 一个键不要多次出现
  2. 分工明确: 每个配置文件给一个或一类服务提供配置
  3. 扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套
  4. 注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件
  5. 请不要将需要动态加载的内容写入配置文件,你应该使用其他储存方式

func flat_config(config: dict[str, Any]) -> dict[str, Any]

Description: 扁平化配置文件

{a:{b:{c:1}}} ->

Arguments:

  • config: 配置项目

Return: 扁平化后的配置文件,但也包含原有的键值对

Source code or View on GitHub
python
def flat_config(config: dict[str, Any]) -> dict[str, Any]:
+    
Skip to content

Module liteyuki.config

该模块用于常用配置文件的加载 多配置文件编写原则:

  1. 尽量不要冲突: 一个键不要多次出现
  2. 分工明确: 每个配置文件给一个或一类服务提供配置
  3. 扁平化编写: 配置文件尽量扁平化,不要出现过多的嵌套
  4. 注意冲突时的优先级: 项目目录下的配置文件优先级高于config目录下的配置文件
  5. 请不要将需要动态加载的内容写入配置文件,你应该使用其他储存方式

func flat_config(config: dict[str, Any]) -> dict[str, Any]

Description: 扁平化配置文件

{a:{b:{c:1}}} ->

Arguments:

  • config: 配置项目

Return: 扁平化后的配置文件,但也包含原有的键值对

Source code or View on GitHub
python
def flat_config(config: dict[str, Any]) -> dict[str, Any]:
     new_config = copy.deepcopy(config)
     for key, value in config.items():
         if isinstance(value, dict):
@@ -79,8 +79,8 @@
     return self

func merge(self, loader: Loader) -> Loader

Description: 合并两个Loader键值对树

Source code or View on GitHub
python
def merge(self, loader: 'Loader') -> 'Loader':
     self.config.update(loader.config)
     return self

func get(self, key: str, default: Any = None) -> Any

Description: 获取配置值

Source code or View on GitHub
python
def get(self, key: str, default: Any=None) -> Any:
-    return self.config.get(key, default)

Documentation built with VitePress | API references generated by litedoc

- + return self.config.get(key, default)

Documentation built with VitePress | API references generated by litedoc

+ \ No newline at end of file diff --git a/en/dev/api/core/index.html b/en/dev/api/core/index.html index dcf71fc2..5e0ec14d 100644 --- a/en/dev/api/core/index.html +++ b/en/dev/api/core/index.html @@ -5,23 +5,23 @@ liteyuki.core | LiteyukiBot - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/en/dev/api/core/manager.html b/en/dev/api/core/manager.html index ab241bc2..8a0ff4db 100644 --- a/en/dev/api/core/manager.html +++ b/en/dev/api/core/manager.html @@ -5,22 +5,22 @@ liteyuki.core.manager | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module 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


func __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]]):
+    
Skip to content

Module 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


func __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
@@ -68,8 +68,8 @@
     for name, process in self.processes.items():
         process.terminate()
         logger.debug(f'Terminating process {name}')

func get_process(self, name: str) -> SubProcess | None

Description: 获取指定子进程

Arguments:

  • name: 子进程名称
Source code or View on GitHub
python
def get_process(self, name: str) -> SubProcess | None:
-    return self.processes.get(name, None)

Documentation built with VitePress | API references generated by litedoc

- + return self.processes.get(name, None)

Documentation built with VitePress | API references generated by litedoc

+ \ No newline at end of file diff --git a/en/dev/api/dev/index.html b/en/dev/api/dev/index.html index 11ad726a..ab727b30 100644 --- a/en/dev/api/dev/index.html +++ b/en/dev/api/dev/index.html @@ -5,23 +5,23 @@ liteyuki.dev | LiteyukiBot - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/en/dev/api/dev/observer.html b/en/dev/api/dev/observer.html index 896c07da..67c69dd4 100644 --- a/en/dev/api/dev/observer.html +++ b/en/dev/api/dev/observer.html @@ -5,22 +5,22 @@ liteyuki.dev.observer | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.dev.observer

此模块用于注册观察者函数,使用watchdog监控文件变化并重启bot 启用该模块需要在配置文件中设置dev_mode为True

var CALLBACK_FUNC

  • Description: 位置1为FileSystemEvent

  • Type: TypeAlias

  • Default: Callable[[FileSystemEvent], None]

var FILTER_FUNC

  • Description: 位置1为FileSystemEvent

  • Type: TypeAlias

  • Default: Callable[[FileSystemEvent], bool]


func debounce(wait)

Description: 防抖函数

Source code or View on GitHub
python
def debounce(wait):
+    
Skip to content

Module liteyuki.dev.observer

此模块用于注册观察者函数,使用watchdog监控文件变化并重启bot 启用该模块需要在配置文件中设置dev_mode为True

var CALLBACK_FUNC

  • Description: 位置1为FileSystemEvent

  • Type: TypeAlias

  • Default: Callable[[FileSystemEvent], None]

var FILTER_FUNC

  • Description: 位置1为FileSystemEvent

  • Type: TypeAlias

  • Default: Callable[[FileSystemEvent], bool]


func debounce(wait)

Description: 防抖函数

Source code or View on GitHub
python
def debounce(wait):
 
     def decorator(func):
 
@@ -51,8 +51,8 @@
         for directory in directories:
             observer.schedule(code_modified_handler, directory, recursive=recursive)
         return func
-    return decorator

Documentation built with VitePress | API references generated by litedoc

- + 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 71b0fa2d..2411fb16 100644 --- a/en/dev/api/dev/plugin.html +++ b/en/dev/api/dev/plugin.html @@ -5,29 +5,29 @@ liteyuki.dev.plugin | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.dev.plugin

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

@Time : 2024/8/18 上午5:04 @Author : snowykami @Email : snowykami@outlook.com @File : plugin.py @Software: PyCharm


func run_plugins(*module_path: str | Path)

Description: 运行插件,无需手动初始化bot

Arguments:

  • module_path: 插件路径,参考liteyuki.load_plugin的函数签名
Source code or View on GitHub
python
def run_plugins(*module_path: str | Path):
+    
Skip to content

Module liteyuki.dev.plugin

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

@Time : 2024/8/18 上午5:04 @Author : snowykami @Email : snowykami@outlook.com @File : plugin.py @Software: PyCharm


func run_plugins(*module_path: str | Path)

Description: 运行插件,无需手动初始化bot

Arguments:

  • module_path: 插件路径,参考liteyuki.load_plugin的函数签名
Source code or View on GitHub
python
def run_plugins(*module_path: str | Path):
     cfg = load_config_in_default()
     plugins = cfg.get('liteyuki.plugins', [])
     plugins.extend(module_path)
     cfg['liteyuki.plugins'] = plugins
     bot = LiteyukiBot(**cfg)
-    bot.run()

Documentation built with VitePress | API references generated by litedoc

- + 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 1c7f5455..8d31ef58 100644 --- a/en/dev/api/exception.html +++ b/en/dev/api/exception.html @@ -5,23 +5,23 @@ liteyuki.exception | LiteyukiBot - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/en/dev/api/index.html b/en/dev/api/index.html index 7b5d4cdd..44b0eab1 100644 --- a/en/dev/api/index.html +++ b/en/dev/api/index.html @@ -5,23 +5,23 @@ liteyuki API | LiteyukiBot - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/en/dev/api/log.html b/en/dev/api/log.html index f0262356..857d828a 100644 --- a/en/dev/api/log.html +++ b/en/dev/api/log.html @@ -5,22 +5,22 @@ liteyuki.log | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.log

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

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


func get_format(level: str) -> str

Description: 获取日志格式

Arguments:

  • level: 日志等级
Source code or View on GitHub
python
def get_format(level: str) -> str:
+    
Skip to content

Module liteyuki.log

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

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


func get_format(level: str) -> str

Description: 获取日志格式

Arguments:

  • level: 日志等级
Source code or View on GitHub
python
def get_format(level: str) -> str:
     if level == 'DEBUG':
         return debug_format
     else:
@@ -37,8 +37,8 @@
     logger.level('ERROR', color='<red>', icon=f"{('⭕' if show_icon else '')}")
     logger.level('CRITICAL', color='<red>', icon=f"{('❌' if show_icon else '')}")
     logger.level('TRACE', color='<cyan>', icon=f"{('🔍' if show_icon else '')}")
-    logger.bind()

Documentation built with VitePress | API references generated by litedoc

- + logger.bind()

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 ddf9970d..e5c1ecee 100644 --- a/en/dev/api/plugin/index.html +++ b/en/dev/api/plugin/index.html @@ -5,24 +5,24 @@ liteyuki.plugin | LiteyukiBot - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/en/dev/api/plugin/load.html b/en/dev/api/plugin/load.html index ed95a4c4..36dde8b8 100644 --- a/en/dev/api/plugin/load.html +++ b/en/dev/api/plugin/load.html @@ -5,22 +5,22 @@ liteyuki.plugin.load | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.plugin.load

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

@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py @Software: PyCharm


func load_plugin(module_path: str | Path) -> Optional[Plugin]

Description: 加载单个插件,可以是本地插件或是通过 pip 安装的插件。

Arguments:

  • module_path: 插件名称 path.to.your.plugin
  • 或插件路径 pathlib.Path(path/to/your/plugin):
Source code or View on GitHub
python
def load_plugin(module_path: str | Path) -> Optional[Plugin]:
+    
Skip to content

Module liteyuki.plugin.load

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

@Time : 2024/7/23 下午11:59 @Author : snowykami @Email : snowykami@outlook.com @File : load.py @Software: PyCharm


func load_plugin(module_path: str | Path) -> Optional[Plugin]

Description: 加载单个插件,可以是本地插件或是通过 pip 安装的插件。

Arguments:

  • module_path: 插件名称 path.to.your.plugin
  • 或插件路径 pathlib.Path(path/to/your/plugin):
Source code or View on GitHub
python
def load_plugin(module_path: str | Path) -> Optional[Plugin]:
     module_path = path_to_module_name(Path(module_path)) if isinstance(module_path, Path) else module_path
     try:
         module = import_module(module_path)
@@ -81,8 +81,8 @@
             color = 'e'
         case PluginType.SERVICE:
             color = 'c'
-    return f'<{color}>{display_name} [{plugin_type.name}]</{color}>'

Documentation built with VitePress | API references generated by litedoc

- + 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 697a20be..77744406 100644 --- a/en/dev/api/plugin/manager.html +++ b/en/dev/api/plugin/manager.html @@ -5,23 +5,23 @@ liteyuki.plugin.manager | LiteyukiBot - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/en/dev/api/plugin/model.html b/en/dev/api/plugin/model.html index a82d3497..a0a9f5d1 100644 --- a/en/dev/api/plugin/model.html +++ b/en/dev/api/plugin/model.html @@ -5,24 +5,24 @@ liteyuki.plugin.model | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module 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)


func 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

- +
Skip to content

Module 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)


func 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/plugins/index.html b/en/dev/api/plugins/index.html index 5a8cc6d2..0c9caed1 100644 --- a/en/dev/api/plugins/index.html +++ b/en/dev/api/plugins/index.html @@ -5,23 +5,23 @@ liteyuki.plugins | LiteyukiBot - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/en/dev/api/plugins/liteecho.html b/en/dev/api/plugins/liteecho.html index 80e93c82..451641f1 100644 --- a/en/dev/api/plugins/liteecho.html +++ b/en/dev/api/plugins/liteecho.html @@ -5,25 +5,25 @@ liteyuki.plugins.liteecho | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module 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 func liteecho(event: MessageEvent)

Source code or View on GitHub
python
@on_startswith(['liteecho'], rule=is_su_rule).handle()
+    
Skip to content

Module 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 func 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

- + 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 36fa838d..da15ba5b 100644 --- a/en/dev/api/plugins/plugin_loader/index.html +++ b/en/dev/api/plugins/plugin_loader/index.html @@ -5,27 +5,27 @@ liteyuki.plugins.plugin_loader | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.plugins.plugin_loader

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

@Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File : init.py.py @Software: PyCharm


func default_plugins_loader()

Description: 默认插件加载器,应在初始化时调用

Source code or View on GitHub
python
def default_plugins_loader():
+    
Skip to content

Module liteyuki.plugins.plugin_loader

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

@Time : 2024/8/11 下午10:02 @Author : snowykami @Email : snowykami@outlook.com @File : init.py.py @Software: PyCharm


func default_plugins_loader()

Description: 默认插件加载器,应在初始化时调用

Source code or View on GitHub
python
def default_plugins_loader():
     for plugin in get_config('liteyuki.plugins', []):
         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

- + 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/session/event.html b/en/dev/api/session/event.html index 696fec65..9ada826e 100644 --- a/en/dev/api/session/event.html +++ b/en/dev/api/session/event.html @@ -5,22 +5,22 @@ liteyuki.session.event | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.session.event

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

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

class MessageEvent


func __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)

Description: 轻雪抽象消息事件

Source code or View on GitHub
python
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):
+    
Skip to content

Module liteyuki.session.event

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

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

class MessageEvent


func __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)

Description: 轻雪抽象消息事件

Source code or View on GitHub
python
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):
     if data is None:
         data = {}
     self.message_type = message_type
@@ -34,8 +34,8 @@
     self.receive_channel = receive_channel

func reply(self, message: str | dict[str, Any])

Description: 回复消息

Arguments:

  • message:
Source code or View on GitHub
python
def reply(self, message: str | dict[str, Any]):
     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

- + 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/session/index.html b/en/dev/api/session/index.html index 64c789ba..80723b06 100644 --- a/en/dev/api/session/index.html +++ b/en/dev/api/session/index.html @@ -5,27 +5,27 @@ liteyuki.session | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.session

该模块参考并引用了nonebot-plugin-alconna的消息段定义


func message_handler_thread(i_chans: Iterable[Chan[Any]])

Arguments:

  • i_chans: 多路输入管道组
Source code or View on GitHub
python
def message_handler_thread(i_chans: Iterable[Chan[Any]]):
+    
Skip to content

Module liteyuki.session

该模块参考并引用了nonebot-plugin-alconna的消息段定义


func message_handler_thread(i_chans: Iterable[Chan[Any]])

Arguments:

  • i_chans: 多路输入管道组
Source code or View on GitHub
python
def message_handler_thread(i_chans: Iterable[Chan[Any]]):
     for msg in select(*i_chans):
         logger.debug(f'Recv from anybot {msg}')
         logger.info(f'Recv from anybot {msg}')
-    pass

Documentation built with VitePress | API references generated by litedoc

- + pass

Documentation built with VitePress | API references generated by litedoc

+ \ No newline at end of file diff --git a/en/dev/api/session/matcher.html b/en/dev/api/session/matcher.html index 26902556..921d7f95 100644 --- a/en/dev/api/session/matcher.html +++ b/en/dev/api/session/matcher.html @@ -5,22 +5,22 @@ liteyuki.session.matcher | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.session.matcher

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

@Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : matcher.py @Software: PyCharm

class Matcher


func __init__(self, rule: Rule, priority: int, block: bool)

Description: 匹配器

Arguments:

  • rule: 规则
  • priority: 优先级 >= 0
  • block: 是否阻断后续优先级更低的匹配器
Source code or View on GitHub
python
def __init__(self, rule: Rule, priority: int, block: bool):
+    
Skip to content

Module liteyuki.session.matcher

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

@Time : 2024/8/19 下午10:51 @Author : snowykami @Email : snowykami@outlook.com @File : matcher.py @Software: PyCharm

class Matcher


func __init__(self, rule: Rule, priority: int, block: bool)

Description: 匹配器

Arguments:

  • rule: 规则
  • priority: 优先级 >= 0
  • block: 是否阻断后续优先级更低的匹配器
Source code or View on GitHub
python
def __init__(self, rule: Rule, priority: int, block: bool):
     self.rule = rule
     self.priority = priority
     self.block = block
@@ -36,8 +36,8 @@
         try:
             await handler(event)
         except Exception:
-            traceback.print_exc()

Documentation built with VitePress | API references generated by litedoc

- + traceback.print_exc()

Documentation built with VitePress | API references generated by litedoc

+ \ No newline at end of file diff --git a/en/dev/api/session/message/segments.html b/en/dev/api/session/message/segments.html index e7e0b919..afb7e6e4 100644 --- a/en/dev/api/session/message/segments.html +++ b/en/dev/api/session/message/segments.html @@ -5,23 +5,23 @@ liteyuki.session.message.segments | LiteyukiBot - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/en/dev/api/session/models.html b/en/dev/api/session/models.html index 2352cfbb..99beacea 100644 --- a/en/dev/api/session/models.html +++ b/en/dev/api/session/models.html @@ -5,22 +5,22 @@ liteyuki.session.models | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.session.models

本模块使用了nonebot-plugin-uninfo的部分模型定义 MIT License

Copyright (c) 2024 RF-Tar-Railt

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

class SceneType(int, Enum)

attr PRIVATE = 0

attr GROUP = 1

attr GUILD = 2

attr CHANNEL_TEXT = 3

attr CHANNEL_CATEGORY = 4

attr CHANNEL_VOICE = 5

class User(BaseModel)

attr id: str = NO_DEFAULT

attr name: str | None = None

attr nick: str | None = None

attr avatar: str | None = None

attr gender: str | None = None

class Scene(BaseModel)

attr id: str = NO_DEFAULT

attr type: SceneType = NO_DEFAULT

attr name: str | None = None

attr avatar: str | None = None

attr parent: 'Scene | None' = None

class Role(BaseModel)

attr id: str = NO_DEFAULT

attr level: int | None = None

attr name: str | None = None

class Member(BaseModel)

attr user: User = NO_DEFAULT

attr nickname: str | None = None

attr role: Role | None = None

attr mute: bool | None = None

attr joined_at: datetime | None = None

class Session(BaseModel)


@property

func session_id(self)

Source code or View on GitHub
python
@property
+    
Skip to content

Module liteyuki.session.models

本模块使用了nonebot-plugin-uninfo的部分模型定义 MIT License

Copyright (c) 2024 RF-Tar-Railt

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

class SceneType(int, Enum)

attr PRIVATE = 0

attr GROUP = 1

attr GUILD = 2

attr CHANNEL_TEXT = 3

attr CHANNEL_CATEGORY = 4

attr CHANNEL_VOICE = 5

class User(BaseModel)

attr id: str = NO_DEFAULT

attr name: str | None = None

attr nick: str | None = None

attr avatar: str | None = None

attr gender: str | None = None

class Scene(BaseModel)

attr id: str = NO_DEFAULT

attr type: SceneType = NO_DEFAULT

attr name: str | None = None

attr avatar: str | None = None

attr parent: 'Scene | None' = None

class Role(BaseModel)

attr id: str = NO_DEFAULT

attr level: int | None = None

attr name: str | None = None

class Member(BaseModel)

attr user: User = NO_DEFAULT

attr nickname: str | None = None

attr role: Role | None = None

attr mute: bool | None = None

attr joined_at: datetime | None = None

class Session(BaseModel)


@property

func session_id(self)

Source code or View on GitHub
python
@property
 def session_id(self):
     if self.scope == SceneType.PRIVATE:
         return f'{self.scope}:{self.user.id}'
@@ -32,8 +32,8 @@
     if self.scope == SceneType.PRIVATE:
         return f'{self.scope}:{self.user.id}'
     elif self.scope in (SceneType.GROUP, SceneType.GUILD, SceneType.CHANNEL_TEXT, SceneType.CHANNEL_VOICE, SceneType.CHANNEL_CATEGORY):
-        return f'{self.scope}:{self.scene.id}:{self.user.id}'

attr self_id: str = NO_DEFAULT

attr adapter: str = NO_DEFAULT

attr scope: str = NO_DEFAULT

attr scene: Scene = NO_DEFAULT

attr user: User = NO_DEFAULT

attr member: 'Member | None' = None

attr operator: 'Member | None' = None

Documentation built with VitePress | API references generated by litedoc

- + return f'{self.scope}:{self.scene.id}:{self.user.id}'

attr self_id: str = NO_DEFAULT

attr adapter: str = NO_DEFAULT

attr scope: str = NO_DEFAULT

attr scene: Scene = NO_DEFAULT

attr user: User = NO_DEFAULT

attr member: 'Member | None' = None

attr operator: 'Member | None' = None

Documentation built with VitePress | API references generated by litedoc

+ \ No newline at end of file diff --git a/en/dev/api/session/on.html b/en/dev/api/session/on.html index 575c7acb..ffc6abe8 100644 --- a/en/dev/api/session/on.html +++ b/en/dev/api/session/on.html @@ -5,22 +5,22 @@ liteyuki.session.on | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.session.on

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

@Time : 2024/8/19 下午10:52 @Author : snowykami @Email : snowykami@outlook.com @File : on.py @Software: PyCharm


func add_matcher(matcher: Matcher)

Source code or View on GitHub
python
def add_matcher(matcher: Matcher):
+    
Skip to content

Module liteyuki.session.on

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

@Time : 2024/8/19 下午10:52 @Author : snowykami @Email : snowykami@outlook.com @File : on.py @Software: PyCharm


func add_matcher(matcher: Matcher)

Source code or View on GitHub
python
def add_matcher(matcher: Matcher):
     for i, m in enumerate(_matcher_list):
         if m.priority < matcher.priority:
             _matcher_list.insert(i, matcher)
@@ -34,8 +34,8 @@
     @Rule
     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

- + 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/session/rule.html b/en/dev/api/session/rule.html index 369a8738..80696a1d 100644 --- a/en/dev/api/session/rule.html +++ b/en/dev/api/session/rule.html @@ -5,22 +5,22 @@ liteyuki.session.rule | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.session.rule

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

@Time : 2024/8/19 下午10:55 @Author : snowykami @Email : snowykami@outlook.com @File : rule.py @Software: PyCharm

var RuleHandlerFunc

  • Description: 规则函数签名

  • Type: TypeAlias

  • Default: Callable[[MessageEvent], Coroutine[None, None, bool]]

class Rule


func __init__(self, handler: RuleHandlerFunc)

Source code or View on GitHub
python
def __init__(self, handler: RuleHandlerFunc):
+    
Skip to content

Module liteyuki.session.rule

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

@Time : 2024/8/19 下午10:55 @Author : snowykami @Email : snowykami@outlook.com @File : rule.py @Software: PyCharm

var RuleHandlerFunc

  • Description: 规则函数签名

  • Type: TypeAlias

  • Default: Callable[[MessageEvent], Coroutine[None, None, bool]]

class Rule


func __init__(self, handler: RuleHandlerFunc)

Source code or View on GitHub
python
def __init__(self, handler: RuleHandlerFunc):
     self.handler = handler

func self | other: Rule => Rule

Source code or View on GitHub
python
def __or__(self, other: 'Rule') -> 'Rule':
 
     async def combined_handler(event: MessageEvent) -> bool:
@@ -36,8 +36,8 @@
 async def empty_rule(event: MessageEvent) -> bool:
     return True

@Rule

async func 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

- + 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/utils.html b/en/dev/api/utils.html index e51c339e..96a42aaf 100644 --- a/en/dev/api/utils.html +++ b/en/dev/api/utils.html @@ -5,22 +5,22 @@ liteyuki.utils | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Module liteyuki.utils

一些常用的工具类,部分来源于 nonebot 并遵循其许可进行修改


func is_coroutine_callable(call: Callable[..., Any]) -> bool

Description: 判断是否为协程可调用对象

Arguments:

  • call: 可调用对象

Return: bool: 是否为协程可调用对象

Source code or View on GitHub
python
def is_coroutine_callable(call: Callable[..., Any]) -> bool:
+    
Skip to content

Module liteyuki.utils

一些常用的工具类,部分来源于 nonebot 并遵循其许可进行修改


func is_coroutine_callable(call: Callable[..., Any]) -> bool

Description: 判断是否为协程可调用对象

Arguments:

  • call: 可调用对象

Return: bool: 是否为协程可调用对象

Source code or View on GitHub
python
def is_coroutine_callable(call: Callable[..., Any]) -> bool:
     if inspect.isroutine(call):
         return inspect.iscoroutinefunction(call)
     if inspect.isclass(call):
@@ -52,8 +52,8 @@
     async def wrapper(*args, **kwargs):
         return func(*args, **kwargs)
     wrapper.__signature__ = inspect.signature(func)
-    return wrapper

Documentation built with VitePress | API references generated by litedoc

- + return wrapper

Documentation built with VitePress | API references generated by litedoc

+ \ No newline at end of file diff --git a/en/dev/best_practices.html b/en/dev/best_practices.html index 3dcedad5..969a0b82 100644 --- a/en/dev/best_practices.html +++ b/en/dev/best_practices.html @@ -5,23 +5,23 @@ Best Practices | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Best Practices

Bot applications

plugins

Others

  • liteyuki starmap: Liteyuki official star map, showing all instances of Liteyuki and their location distribution
  • TRSS_Liteyuki: LiteyukiBot management script
  • litedoc: Liteyuki API documentation generator
  • liteyukibot-api (closed source): Liteyuki Bot stat interface

Documentation built with VitePress | API references generated by litedoc

- +
Skip to content

Best Practices

Bot applications

plugins

Others

  • liteyuki starmap: Liteyuki official star map, showing all instances of Liteyuki and their location distribution
  • TRSS_Liteyuki: LiteyukiBot management script
  • litedoc: Liteyuki API documentation generator
  • liteyukibot-api (closed source): Liteyuki Bot stat interface

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 d85d77f8..65a6ce70 100644 --- a/en/dev/comm.html +++ b/en/dev/comm.html @@ -5,22 +5,22 @@ Process Communication | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Channel Communication

Introduction

LiteyukiBot is running in the main process MainProcess, and other plugin framework processes are child processes that come with it. Therefore, it is impossible to communicate through shared memory and direct object transfer. Liteyuki provides a channel Channel for inter-process communication like go. You can send messages to other processes through Channel and listen to messages from other processes.

Example

The channel is full-duplex, with two receiving modes, but only one mode can be used for a channel, that is, passive mode and active mode, passive mode is implemented by the chan.on_receive() decorator callback function, and active mode needs to call chan.receive() to implement

  • 创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为{process_name}-active{process_name}-passive
  • 主进程中通过get_channel函数获取通道对象
  • 子进程中导入单例active_channelpassive_channel即可

在轻雪插件中(主进程中)

python
import asyncio
+    
Skip to content

Channel Communication

Introduction

LiteyukiBot is running in the main process MainProcess, and other plugin framework processes are child processes that come with it. Therefore, it is impossible to communicate through shared memory and direct object transfer. Liteyuki provides a channel Channel for inter-process communication like go. You can send messages to other processes through Channel and listen to messages from other processes.

Example

The channel is full-duplex, with two receiving modes, but only one mode can be used for a channel, that is, passive mode and active mode, passive mode is implemented by the chan.on_receive() decorator callback function, and active mode needs to call chan.receive() to implement

  • 创建子进程的同时会初始化一个被动通道和一个主动通道,且通道标识为{process_name}-active{process_name}-passive
  • 主进程中通过get_channel函数获取通道对象
  • 子进程中导入单例active_channelpassive_channel即可

在轻雪插件中(主进程中)

python
import asyncio
 
 from liteyuki.comm import get_channel, Channel
 from liteyuki import get_bot
@@ -62,8 +62,8 @@
 ...

共享内存通信

简介

  • 相比于普通进程通信,内存共享使得代码编写更加简洁,轻雪框架提供了一个内存共享通信的接口,你可以通过storage模块实现内存共享通信,该模块封装通道实现
  • 内存共享是线程安全的,你可以在多个线程中读写共享内存,线程锁会自动保护共享内存的读写操作

示例

在任意进程中均可使用

python
from liteyuki.comm.storage import shared_memory
 
 shared_memory.set("key", "value")  # 设置共享内存
-value = shared_memory.get("key")  # 获取共享内存

源代码:liteyuki/comm/storage.py

Documentation built with VitePress | API references generated by litedoc

- +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/guide.html b/en/dev/guide.html index 34cbcffc..37ca10a1 100644 --- a/en/dev/guide.html +++ b/en/dev/guide.html @@ -5,24 +5,24 @@ Development Guide | LiteyukiBot - - + + - + - - - - + + + + -
Skip to content

Development Guide

How to Develop

Please read the Plugin Development and API Reference documents if you are developing a plugin.

If you need to submit code to the Liteyuki repository, please read the following:

  1. First fork a copy of the Liteyuki repository to your personal/organization account.
  2. Develop in your repository.
  3. Create a new branch in your repository and submit your code to this branch.
  4. Create a Pull Request in your repository to merge your branch into the main branch of the Liteyuki repository.
  • Participation in development assumes that you are already familiar with the basic usage of the Python language and the Liteyuki framework.
  • If you are developing documentation, please ensure that you are familiar with Markdown syntax and basic front-end knowledge.
  • Contact the repository maintainer in case of conflicts.

Suggestions

  • During development, you can use tools such as mypy, flake8, and black for code checking and formatting.
  • Enable developer mode by setting dev_mode: true in config.yml to see more debugging information in the console.

Project Structure

  • main.py: Bot entry file
  • liteyuki: Framework directory (liteyukibot)
  • src: Bot application source code directory
    • liteyuki_plugins: Liteyuki plugin directory
    • nonebot_plugins: Nonebot plugin directory
    • resources: Built-in resource packs directory
    • utils: Utility directory
  • tests: Unit test directory
  • docs: Documentation directory
    • en: English documentation
    • zh: Chinese documentation
  • docker: Docker related content directory

The liteyuki framework is included in the LiteyukiBot application, so this project is both the LiteyukiBot application repository and the liteyuki framework repository.

The src directory is the application part, please develop business logic in this directory. liteyuki_plugins and nonebot_plugins directories are plugin directories, please develop plugins in these directories.

Standardization

  • Code should follow PEP8 and Google Python Style Guide.
  • In addition, code submitted to the Liteyuki repository should follow the following guidelines:
    • Ensure that the code is runnable and harmless.
    • Ensure that the type hints in the code are correct.
    • Ensure that the comment style is Google Docstring or Liteyuki Docstring(recommended) to ensure that Litedoc can parse and generate documentation correctly.
    • Strings should be enclosed in double quotes " as much as possible, and single quotes ' should be used when nesting strings.
    • If there is a part for ordinary users, ensure that the documentation is complete (each language has corresponding documentation).
  • commit message should follow the following guidelines:
    • You should commit the code after completing a feature or fixing a bug, and not mix the code of multiple features or bugs together.
    • We use gitmoji to mark the type of commit, such as :sparkles: for introducing new features, :bug: for fixing bugs, etc., please refer to gitmoji for details.
    • The format of the commit message is <emoji> [type:] <message>, such as :sparkles: feat: add new field to event, where the type field is the type of commit, not much is required, but please fill in as much as possible; the message field is a brief description, in summary, what you did.
    • There is no restriction on the language of the commit message, and bilingual use is possible if conditions permit.
  • The documentation should follow Markdown syntax and support vitepress-related content:
    • Revise the documentation for each language when editing.
    • Ensure that the links in the document are correct and do not lead to inaccessible links.
    • Ensure that the User Documentation is easy to understand and the Development Documentation is detailed.

Finally

  • This project is a non-profit open-source project, and we welcome anyone to participate in development. Your contributions will make Liteyuki better.

Thanks the following contributors!

Contributors

Documentation built with VitePress | API references generated by litedoc

- +
Skip to content

Development Guide

How to Develop

Please read the Plugin Development and API Reference documents if you are developing a plugin.

If you need to submit code to the Liteyuki repository, please read the following:

  1. First fork a copy of the Liteyuki repository to your personal/organization account.
  2. Develop in your repository.
  3. Create a new branch in your repository and submit your code to this branch.
  4. Create a Pull Request in your repository to merge your branch into the main branch of the Liteyuki repository.
  • Participation in development assumes that you are already familiar with the basic usage of the Python language and the Liteyuki framework.
  • If you are developing documentation, please ensure that you are familiar with Markdown syntax and basic front-end knowledge.
  • Contact the repository maintainer in case of conflicts.

Suggestions

  • During development, you can use tools such as mypy, flake8, and black for code checking and formatting.
  • Enable developer mode by setting dev_mode: true in config.yml to see more debugging information in the console.

Project Structure

  • main.py: Bot entry file
  • liteyuki: Framework directory (liteyukibot)
  • src: Bot application source code directory
    • liteyuki_plugins: Liteyuki plugin directory
    • nonebot_plugins: Nonebot plugin directory
    • resources: Built-in resource packs directory
    • utils: Utility directory
  • tests: Unit test directory
  • docs: Documentation directory
    • en: English documentation
    • zh: Chinese documentation
  • docker: Docker related content directory

The liteyuki framework is included in the LiteyukiBot application, so this project is both the LiteyukiBot application repository and the liteyuki framework repository.

The src directory is the application part, please develop business logic in this directory. liteyuki_plugins and nonebot_plugins directories are plugin directories, please develop plugins in these directories.

Standardization

  • Code should follow PEP8 and Google Python Style Guide.
  • In addition, code submitted to the Liteyuki repository should follow the following guidelines:
    • Ensure that the code is runnable and harmless.
    • Ensure that the type hints in the code are correct.
    • Ensure that the comment style is Google Docstring or Liteyuki Docstring(recommended) to ensure that Litedoc can parse and generate documentation correctly.
    • Strings should be enclosed in double quotes " as much as possible, and single quotes ' should be used when nesting strings.
    • If there is a part for ordinary users, ensure that the documentation is complete (each language has corresponding documentation).
  • commit message should follow the following guidelines:
    • You should commit the code after completing a feature or fixing a bug, and not mix the code of multiple features or bugs together.
    • We use gitmoji to mark the type of commit, such as :sparkles: for introducing new features, :bug: for fixing bugs, etc., please refer to gitmoji for details.
    • The format of the commit message is <emoji> [type:] <message>, such as :sparkles: feat: add new field to event, where the type field is the type of commit, not much is required, but please fill in as much as possible; the message field is a brief description, in summary, what you did.
    • There is no restriction on the language of the commit message, and bilingual use is possible if conditions permit.
  • The documentation should follow Markdown syntax and support vitepress-related content:
    • Revise the documentation for each language when editing.
    • Ensure that the links in the document are correct and do not lead to inaccessible links.
    • Ensure that the User Documentation is easy to understand and the Development Documentation is detailed.

Finally

  • This project is a non-profit open-source project, and we welcome anyone to participate in development. Your contributions will make Liteyuki better.

Thanks the following contributors!

Contributors

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 90f0369b..abbe50fb 100644 --- a/en/dev/lyfunc.html +++ b/en/dev/lyfunc.html @@ -5,22 +5,22 @@ Liteyuki Function | LiteyukiBot - - + + - + - - - + + + -
Skip to content

轻雪函数

轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.

函数文件

函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mcfunction,文件内容为一系列的命令,每行一个命令,支持单行注释#(编辑时的语法高亮可采取shell格式),例如:

shell
# 在发信器输出"hello world"
+    
Skip to content

轻雪函数

轻雪函数 Liteyuki Function 是轻雪的一个功能,它允许你在轻雪中运行一些自定义的由数据驱动的命令,类似于Minecraft的mcfunction,属于资源包的一部分,但需单独起篇幅.

函数文件

函数文件放在资源包的functions目录下,文件名以.mcfunction .lyfunction .lyf结尾,例如test.mcfunction,文件内容为一系列的命令,每行一个命令,支持单行注释#(编辑时的语法高亮可采取shell格式),例如:

shell
# 在发信器输出"hello world"
 cmd echo hello world
 
 # 如果你想同时输出多行内容可以尝试换行符(Python格式)
@@ -39,8 +39,8 @@
 api friend_poke user_id=user_id
 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

- +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 36974da4..eb1cf797 100644 --- a/en/dev/plugin.html +++ b/en/dev/plugin.html @@ -5,22 +5,22 @@ Plugin | LiteyukiBot - - + + - + - - - + + + -
Skip to content

简介

轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能。

开始

创建插件

一个.py文件或一个包含__init__.py的文件夹即可被识别为插件

首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件

__init__.py

python
from liteyuki.plugin import PluginMetadata, PluginType
+    
Skip to content

简介

轻雪插件是轻雪内置的一部分功能,运行在主进程中,可以很高程度地扩展轻雪的功能。

开始

创建插件

一个.py文件或一个包含__init__.py的文件夹即可被识别为插件

首先创建一个文件夹,例如watchdog_plugin,并在其中创建一个__init__.py文件,即可创建一个插件

__init__.py

python
from liteyuki.plugin import PluginMetadata, PluginType
 from .watch_dog import *    # 导入逻辑部分
 
 # 定义插件元数据
@@ -51,8 +51,8 @@
     logger.debug(f"File {event.src_path} changed, reloading nonebot...")
     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

- +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 c3507d8e..db8e016f 100644 --- a/en/dev/resource.html +++ b/en/dev/resource.html @@ -5,22 +5,22 @@ Resource Pack | LiteyukiBot - - + + - + - - - + + + -
Skip to content

简介

资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码

  • 资源/主题商店提供了一些资源包供你选择,你也可以自己制作资源包
  • 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。
  • 部分内容制作需要一点点前端基础,例如htmlcss
  • 轻雪原版资源包请查看LiteyukiBot/liteyuki/resources,可以在此基础上进行修改
  • 欢迎各位投稿资源包到轻雪资源商店

请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。


加载资源包

  • 资源包通常是以.zip格式压缩的,只需要将其解压到根目录resources目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的
shell
main.py
+    
Skip to content

简介

资源包,亦可根据用途称为主题包、字体包、语言包等,它允许你一定程度上自定义轻雪的外观,并且不用修改源代码

  • 资源/主题商店提供了一些资源包供你选择,你也可以自己制作资源包
  • 资源包的制作很简单,如果你接触过Minecraft的资源包,那么你能够很快就上手,仅需按照原有路径进行文件替换即可,讲起打包成一个新的资源包。
  • 部分内容制作需要一点点前端基础,例如htmlcss
  • 轻雪原版资源包请查看LiteyukiBot/liteyuki/resources,可以在此基础上进行修改
  • 欢迎各位投稿资源包到轻雪资源商店

请注意,主题包中的html渲染使用Js来规定数据的渲染位置,请确保您所编写的html代码能被Bot解析,否则会导致渲染失败或渲染结果不理想/异常/错位等无法预料的事情发生。推荐在编写html时同时更改对应Js代码,以避免出现无法预料的问题。


加载资源包

  • 资源包通常是以.zip格式压缩的,只需要将其解压到根目录resources目录下即可,注意不要嵌套文件夹,正常的路径应该是这样的
shell
main.py
 resources
 └─resource_pack_1
     ├─metadata.yml
@@ -32,8 +32,8 @@
 version: "1.0.0"
 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

- +...
  • 资源包加载遵循一个优先级,即后加载的资源包会覆盖前面的资源包,例如,你在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 b521b844..5b761827 100644 --- a/en/index.html +++ b/en/index.html @@ -5,23 +5,23 @@ LiteyukiBot - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/en/store/plugin.html b/en/store/plugin.html index ebd57bdf..f95fc691 100644 --- a/en/store/plugin.html +++ b/en/store/plugin.html @@ -5,23 +5,23 @@ Plugin Store | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Plugin Store

Content from the LightSnow Plugin Store, LightSnow supports NoneBot through the lpnonebot plugin, and references some NoneBot plugins

Liteyuki Only
NoneBot插件
在轻雪中使用NoneBot,内置轻雪--NoneBot会话控制器插件,为NoneBot开发者提供了更多便捷功能(已内置)
app
防断联插件
防止你的群友断联化
appdislink
LagrangePlugin
在轻雪中使用lagrange-python!
applagrange
htmlrender
使用系统中的浏览器对网页进行渲染,便于其他插件使用
chromium

Documentation built with VitePress | API references generated by litedoc

- +
Skip to content

Plugin Store

Content from the LightSnow Plugin Store, LightSnow supports NoneBot through the lpnonebot plugin, and references some NoneBot plugins

Liteyuki Only
NoneBot插件
在轻雪中使用NoneBot,内置轻雪--NoneBot会话控制器插件,为NoneBot开发者提供了更多便捷功能(已内置)
app
防断联插件
防止你的群友断联化
appdislink
LagrangePlugin
在轻雪中使用lagrange-python!
applagrange
htmlrender
使用系统中的浏览器对网页进行渲染,便于其他插件使用
chromium

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 dc1d0540..186561ce 100644 --- a/en/store/resource.html +++ b/en/store/resource.html @@ -5,23 +5,23 @@ Resource Store | LiteyukiBot - - + + - + - - - + + + -
Skip to content

Resources Store

测试资源包2
test
轻雪Kakyo语言包 稳定版
Liteyuki Bot的语言包,用于提供多种语言的翻译。
测试资源包
更多背景模板包
自定义各种卡片的背景
轻雪Kakyo语言包
Liteyuki Bot的语言包,用于提供多种语言的翻译。
轻雪可爱系词库
使用https://github.com/Kyomotoi/AnimeThesaurus的词库
轻雪傲娇系词库
使用https://github.com/Kyomotoi/AnimeThesaurus的词库
自定义设备信息
自定义服务端的设备信息,自行修改使用
野兽先辈主题HomoTheme
野兽先辈主题包,114514!
MapleMono字体包
适用于字母的字体包
MiSans字体包
小米官方字体MiSans
KawaiiStatus
可爱的状态卡片,仿照koishi的制作

Documentation built with VitePress | API references generated by litedoc

- +
Skip to content

Resources Store

测试资源包2
test
轻雪Kakyo语言包 稳定版
Liteyuki Bot的语言包,用于提供多种语言的翻译。
测试资源包
更多背景模板包
自定义各种卡片的背景
轻雪Kakyo语言包
Liteyuki Bot的语言包,用于提供多种语言的翻译。
轻雪可爱系词库
使用https://github.com/Kyomotoi/AnimeThesaurus的词库
轻雪傲娇系词库
使用https://github.com/Kyomotoi/AnimeThesaurus的词库
自定义设备信息
自定义服务端的设备信息,自行修改使用
野兽先辈主题HomoTheme
野兽先辈主题包,114514!
MapleMono字体包
适用于字母的字体包
MiSans字体包
小米官方字体MiSans
KawaiiStatus
可爱的状态卡片,仿照koishi的制作

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 bd3f3849..5eed0066 100644 --- a/en/usage/agreement.html +++ b/en/usage/agreement.html @@ -5,23 +5,23 @@ 用户协议 | LiteyukiBot - - + + - + - - - + + + -
Skip to content

用户协议

  1. 本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息
  2. 你可以选择开启auto_report(默认开启),轻雪会收集以下内容
    • 运行环境的设备信息:CPU,内存,系统信息及Python信息
    • 插件信息(不含插件数据)
    • 部分异常信息,
    • 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务器,若你不希望提供这些信息,可以在配置文件中把auto_report设定为false
  3. 本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性
  4. 使用此项目代表你已经同意以上协议

Documentation built with VitePress | API references generated by litedoc

- +
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 e10381e0..c058b0d4 100644 --- a/en/usage/basic.html +++ b/en/usage/basic.html @@ -5,23 +5,23 @@ 基础插件 | LiteyukiBot - - + + - + - - - + + + -
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

- +
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 788b70e6..aa9e11b3 100644 --- a/en/usage/extra.html +++ b/en/usage/extra.html @@ -5,23 +5,23 @@ 功能命令 | LiteyukiBot - - + + - + - - - + + + -
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

- +
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 d1bc9420..ea332762 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"deploy_config.md":"kGYrTELl","deploy_fandq.md":"2fl_Ypjk","deploy_install.md":"c-fJcXz8","dev_api_bot_index.md":"Df_BdheA","dev_api_bot_lifespan.md":"QwkSyd4_","dev_api_comm_channel.md":"BJ51vfDY","dev_api_comm_event.md":"BjGFyCyy","dev_api_comm_index.md":"BFFUol4Q","dev_api_comm_storage.md":"C4GYMY_x","dev_api_config.md":"CQFvBqcK","dev_api_core_index.md":"SLqcvS5w","dev_api_core_manager.md":"CvJAObrs","dev_api_dev_index.md":"BOIXWKHc","dev_api_dev_observer.md":"C9FG6EHy","dev_api_dev_plugin.md":"DaD0588E","dev_api_exception.md":"D3YlD-fL","dev_api_index.md":"BMzmnGkf","dev_api_log.md":"BQCmlUGd","dev_api_plugin_index.md":"DmA7SgX7","dev_api_plugin_load.md":"CGZBTpK5","dev_api_plugin_manager.md":"bQiuqZoy","dev_api_plugin_model.md":"DAxgz8GX","dev_api_plugins_index.md":"Upe_Wimu","dev_api_plugins_liteecho.md":"DBpO6gRP","dev_api_plugins_plugin_loader_index.md":"DKMgHA3A","dev_api_session_event.md":"CKmLyT0n","dev_api_session_index.md":"CFALBYZK","dev_api_session_matcher.md":"B5yMvU4D","dev_api_session_message_segments.md":"CREZ0kMU","dev_api_session_models.md":"ChyQE0cI","dev_api_session_on.md":"DAHZ1Mfh","dev_api_session_rule.md":"DMa6RDEX","dev_api_utils.md":"DdxcDH2V","dev_best_practices.md":"4fD5nTaf","dev_comm.md":"C0QAxeah","dev_guide.md":"Gx0rbrqP","dev_lyfunc.md":"CZ1MrXwp","dev_plugin.md":"Cu9RFJSc","dev_resource.md":"Vz1Qqb9X","en_deploy_config.md":"WUiVAoWa","en_deploy_fandq.md":"D9-ETg2E","en_deploy_install.md":"BKgEviaQ","en_dev_api_bot_index.md":"eKUrYXBP","en_dev_api_bot_lifespan.md":"IGcJ9jb_","en_dev_api_comm_channel.md":"BliZgU7O","en_dev_api_comm_event.md":"BfkzHdR4","en_dev_api_comm_index.md":"BesCS7WV","en_dev_api_comm_storage.md":"Ds5KWd_O","en_dev_api_config.md":"BS-UkXWI","en_dev_api_core_index.md":"CXc5eQIT","en_dev_api_core_manager.md":"DlLZB3d5","en_dev_api_dev_index.md":"CEZedfLv","en_dev_api_dev_observer.md":"B3H3Iuyc","en_dev_api_dev_plugin.md":"CqTdN1FN","en_dev_api_exception.md":"CFRRxHBG","en_dev_api_index.md":"DjQyfBIN","en_dev_api_log.md":"WqQqRTM2","en_dev_api_plugin_index.md":"C5QZdPTH","en_dev_api_plugin_load.md":"CUVhydQs","en_dev_api_plugin_manager.md":"7EwFZ4RG","en_dev_api_plugin_model.md":"DdvvcqBN","en_dev_api_plugins_index.md":"D2Tiy6ZF","en_dev_api_plugins_liteecho.md":"B8CO7WbT","en_dev_api_plugins_plugin_loader_index.md":"DvH6ajsD","en_dev_api_session_event.md":"D3Th-LcY","en_dev_api_session_index.md":"DeXIcJ0I","en_dev_api_session_matcher.md":"dQLmtmza","en_dev_api_session_message_segments.md":"Ds5UV5yu","en_dev_api_session_models.md":"DBZyv5gt","en_dev_api_session_on.md":"CFv3Q2g4","en_dev_api_session_rule.md":"UNaf14Gk","en_dev_api_utils.md":"QHC7sHGv","en_dev_best_practices.md":"oHVAAUps","en_dev_comm.md":"DJzbE7ud","en_dev_guide.md":"CYFLz8NF","en_dev_lyfunc.md":"C95UXHu-","en_dev_plugin.md":"BSEjcgQm","en_dev_resource.md":"LROtNDtb","en_index.md":"wjzMjZdd","en_store_plugin.md":"DyVVfnXg","en_store_resource.md":"ClNfFpQd","en_usage_agreement.md":"BAeUOi9b","en_usage_basic.md":"bPKzNgL6","en_usage_extra.md":"0jxEAWnx","index.md":"Di9XkcId","store_plugin.md":"20BP8Xz5","store_resource.md":"DN5P0drK","usage_agreement.md":"BXBhbxWS","usage_basic.md":"B7eQy5eg","usage_extra.md":"CrZ5PgMV"} +{"deploy_config.md":"fpf-x4oF","deploy_fandq.md":"Cy8gyJaY","deploy_install.md":"BKGuxzeN","dev_api_bot_index.md":"960PcKQi","dev_api_bot_lifespan.md":"BDitEzkK","dev_api_comm_channel.md":"DEuJMgaR","dev_api_comm_event.md":"C8x_KhiZ","dev_api_comm_index.md":"DpZuXB4y","dev_api_comm_storage.md":"CAq3N5ZQ","dev_api_config.md":"DWW7CpGb","dev_api_core_index.md":"BkWargRp","dev_api_core_manager.md":"CppxG0bb","dev_api_dev_index.md":"D1AkW7NO","dev_api_dev_observer.md":"C7yKDmOq","dev_api_dev_plugin.md":"BHG9egtN","dev_api_exception.md":"CDDNIVPy","dev_api_index.md":"BHlKQdO1","dev_api_log.md":"DZftM0hz","dev_api_plugin_index.md":"DHABZfdI","dev_api_plugin_load.md":"1Dz_ezge","dev_api_plugin_manager.md":"TWTXnW7t","dev_api_plugin_model.md":"TQv7nVxA","dev_api_plugins_index.md":"hrT7rK25","dev_api_plugins_liteecho.md":"B8syLDLV","dev_api_plugins_plugin_loader_index.md":"BdRu1FeG","dev_api_session_event.md":"B6MK29_S","dev_api_session_index.md":"ZEoJ9e0W","dev_api_session_matcher.md":"DSvh-SVh","dev_api_session_message_segments.md":"COoexy54","dev_api_session_models.md":"DW1qGehT","dev_api_session_on.md":"BCUmbb7c","dev_api_session_rule.md":"DNlFf93W","dev_api_utils.md":"CT-KVtuC","dev_best_practices.md":"DdVeSj3v","dev_comm.md":"DqHPEgmD","dev_guide.md":"CmdhXyNq","dev_lyfunc.md":"DJB4jOoE","dev_plugin.md":"C0nKWwk2","dev_resource.md":"BMo61atA","en_deploy_config.md":"Bn6meDsx","en_deploy_fandq.md":"BmuhdVWC","en_deploy_install.md":"BC4wsBsE","en_dev_api_bot_index.md":"DdGmgfBu","en_dev_api_bot_lifespan.md":"ODF4Dl0l","en_dev_api_comm_channel.md":"DN1tFluf","en_dev_api_comm_event.md":"C4C8DN0Q","en_dev_api_comm_index.md":"C-Qbduar","en_dev_api_comm_storage.md":"EioevEYA","en_dev_api_config.md":"CjW8NwT2","en_dev_api_core_index.md":"CiLPSzAu","en_dev_api_core_manager.md":"BJ9nRG8V","en_dev_api_dev_index.md":"HYeoPza5","en_dev_api_dev_observer.md":"BPkoTdDW","en_dev_api_dev_plugin.md":"D7InLJN7","en_dev_api_exception.md":"Kd_X7tPn","en_dev_api_index.md":"D0QqgH5J","en_dev_api_log.md":"CvWACGo4","en_dev_api_plugin_index.md":"CzkAgSLI","en_dev_api_plugin_load.md":"lnuEXY4W","en_dev_api_plugin_manager.md":"aR11rqTj","en_dev_api_plugin_model.md":"BtKMMEeQ","en_dev_api_plugins_index.md":"mKXV75h2","en_dev_api_plugins_liteecho.md":"CbFj5eaD","en_dev_api_plugins_plugin_loader_index.md":"Aahbq4rp","en_dev_api_session_event.md":"Cijk-LGh","en_dev_api_session_index.md":"B0FePOxH","en_dev_api_session_matcher.md":"BCKobbx7","en_dev_api_session_message_segments.md":"B9GxysTy","en_dev_api_session_models.md":"YkoyxVnZ","en_dev_api_session_on.md":"BkoUd1nY","en_dev_api_session_rule.md":"BLGxPo-M","en_dev_api_utils.md":"CL2uJQsZ","en_dev_best_practices.md":"DrgXHNx1","en_dev_comm.md":"y7M-uNn5","en_dev_guide.md":"CEI7UF-O","en_dev_lyfunc.md":"DVKdEQk1","en_dev_plugin.md":"CxsGn5di","en_dev_resource.md":"D9Lv8e2n","en_index.md":"C6RIk4Q2","en_store_plugin.md":"CZ_WhmmD","en_store_resource.md":"DizNjwji","en_usage_agreement.md":"BX7O0VXK","en_usage_basic.md":"C4neBE65","en_usage_extra.md":"DPI6MdLC","index.md":"B3BfLzof","store_plugin.md":"C6Kpa2EC","store_resource.md":"gIoXHMek","usage_agreement.md":"DkkU90yR","usage_basic.md":"Dpx_Yj4l","usage_extra.md":"DTJrnruE"} diff --git a/index.html b/index.html index d1c30a9c..68e5be7a 100644 --- a/index.html +++ b/index.html @@ -5,23 +5,23 @@ 轻雪机器人 - - + + - + - - - + + + - - + + \ No newline at end of file diff --git a/store/plugin.html b/store/plugin.html index 2bc26cc8..dd514ce2 100644 --- a/store/plugin.html +++ b/store/plugin.html @@ -5,23 +5,23 @@ 插件商店 | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

插件商店

内容来自轻雪插件商店,轻雪通过lpnonebot插件对NoneBot实现支持,引用了部分NoneBot插件

仅轻雪
NoneBot插件
在轻雪中使用NoneBot,内置轻雪--NoneBot会话控制器插件,为NoneBot开发者提供了更多便捷功能(已内置)
app
防断联插件
防止你的群友断联化
appdislink
LagrangePlugin
在轻雪中使用lagrange-python!
applagrange
htmlrender
使用系统中的浏览器对网页进行渲染,便于其他插件使用
chromium

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

- +
Skip to content

插件商店

内容来自轻雪插件商店,轻雪通过lpnonebot插件对NoneBot实现支持,引用了部分NoneBot插件

仅轻雪
NoneBot插件
在轻雪中使用NoneBot,内置轻雪--NoneBot会话控制器插件,为NoneBot开发者提供了更多便捷功能(已内置)
app
防断联插件
防止你的群友断联化
appdislink
LagrangePlugin
在轻雪中使用lagrange-python!
applagrange
htmlrender
使用系统中的浏览器对网页进行渲染,便于其他插件使用
chromium

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

+ \ No newline at end of file diff --git a/store/resource.html b/store/resource.html index 7a79bf09..a6c33986 100644 --- a/store/resource.html +++ b/store/resource.html @@ -5,23 +5,23 @@ 资源商店 | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

资源商店

KawaiiStatus
可爱的状态卡片,仿照koishi的制作
MiSans字体包
小米官方字体MiSans
MapleMono字体包
适用于字母的字体包
野兽先辈主题HomoTheme
野兽先辈主题包,114514!
自定义设备信息
自定义服务端的设备信息,自行修改使用
轻雪傲娇系词库
使用https://github.com/Kyomotoi/AnimeThesaurus的词库
轻雪可爱系词库
使用https://github.com/Kyomotoi/AnimeThesaurus的词库
轻雪Kakyo语言包
Liteyuki Bot的语言包,用于提供多种语言的翻译。
更多背景模板包
自定义各种卡片的背景
测试资源包
轻雪Kakyo语言包 稳定版
Liteyuki Bot的语言包,用于提供多种语言的翻译。
测试资源包2
test

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

- +
Skip to content

资源商店

KawaiiStatus
可爱的状态卡片,仿照koishi的制作
MiSans字体包
小米官方字体MiSans
MapleMono字体包
适用于字母的字体包
野兽先辈主题HomoTheme
野兽先辈主题包,114514!
自定义设备信息
自定义服务端的设备信息,自行修改使用
轻雪傲娇系词库
使用https://github.com/Kyomotoi/AnimeThesaurus的词库
轻雪可爱系词库
使用https://github.com/Kyomotoi/AnimeThesaurus的词库
轻雪Kakyo语言包
Liteyuki Bot的语言包,用于提供多种语言的翻译。
更多背景模板包
自定义各种卡片的背景
测试资源包
轻雪Kakyo语言包 稳定版
Liteyuki Bot的语言包,用于提供多种语言的翻译。
测试资源包2
test

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

+ \ No newline at end of file diff --git a/usage/agreement.html b/usage/agreement.html index e616566c..6724668d 100644 --- a/usage/agreement.html +++ b/usage/agreement.html @@ -5,23 +5,23 @@ 用户协议 | 轻雪机器人 - - + + - + - - - + + + -
Skip to content

用户协议

  1. 本项目遵循MIT协议,你可以自由使用,修改,分发,但是请保留原作者信息
  2. 你可以选择开启auto_report(默认开启),轻雪会收集以下内容
    • 运行环境的设备信息:CPU,内存,系统信息及Python信息
    • 插件信息(不含插件数据)
    • 部分异常信息,
    • 会话负载信息(不含隐私部分) 以上内容仅用于项目的优化,不包含任何隐私信息,且通过安全的方式传输到轻雪的服务器,若你不希望提供这些信息,可以在配置文件中把auto_report设定为false
  3. 本项目不会收集用户的任何隐私信息,但请注意甄别第三方插件的安全性
  4. 使用此项目代表你已经同意以上协议

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

- +
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 677bfc56..0e2c4bd5 100644 --- a/usage/basic.html +++ b/usage/basic.html @@ -5,23 +5,23 @@ 基础插件 | 轻雪机器人 - - + + - + - - - + + + -
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 生成

- +
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 81f4654b..125616dc 100644 --- a/usage/extra.html +++ b/usage/extra.html @@ -5,23 +5,23 @@ 功能命令 | 轻雪机器人 - - + + - + - - - + + + -
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 生成

- +
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