1
0
forked from bot/app
LiteyukiBot/en/dev/api/dev/observer.html

69 lines
64 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>liteyuki.dev.observer | LiteyukiBot</title>
<meta name="description" content="A high-performance, easy-to-use chatbot framework and application">
<meta name="generator" content="VitePress v1.3.4">
<link rel="preload stylesheet" href="/assets/style.Bw6n8tBu.css" as="style">
<script type="module" src="/assets/app.m1fOSwVD.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/theme.BVb93Nz8.js">
<link rel="modulepreload" href="/assets/chunks/framework.BZiUP1E-.js">
<link rel="modulepreload" href="/assets/en_dev_api_dev_observer.md.DK289dDP.lean.js">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="https://fonts.font.im/css?family=Cousine:400,400i,700,700i|Poppins:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-7e3343f7><!--[--><!--]--><!--[--><span tabindex="-1" data-v-a977b129></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-a977b129> Skip to content </a><!--]--><!----><header class="VPNav" data-v-7e3343f7 data-v-d52d372b><div class="VPNavBar has-sidebar top" data-v-d52d372b data-v-37a6b570><div class="wrapper" data-v-37a6b570><div class="container" data-v-37a6b570><div class="title" data-v-37a6b570><div class="VPNavBarTitle has-sidebar" data-v-37a6b570 data-v-de953605><a class="title" href="/en/" data-v-de953605><!--[--><!--]--><!--[--><!--[--><!--[--><img class="VPImage dark logo" src="/liteyuki-dark.svg" alt="LiteyukiBot Logo" data-v-6e911b93><!--]--><!--[--><img class="VPImage light logo" src="/liteyuki.svg" alt="LiteyukiBot Logo" data-v-6e911b93><!--]--><!--]--><!--]--><span data-v-de953605>LiteyukiBot</span><!--[--><!--]--></a></div></div><div class="content" data-v-37a6b570><div class="content-body" data-v-37a6b570><!--[--><!--]--><div class="VPNavBarSearch search" data-v-37a6b570><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-37a6b570 data-v-71183eee><span id="main-nav-aria-label" class="visually-hidden" data-v-71183eee> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en/deploy/install.html" tabindex="0" data-v-71183eee data-v-c423e9f4><!--[--><span data-v-c423e9f4>Deploy</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en/usage/basic.html" tabindex="0" data-v-71183eee data-v-c423e9f4><!--[--><span data-v-c423e9f4>Usage</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en/store/resource.html" tabindex="0" data-v-71183eee data-v-c423e9f4><!--[--><span data-v-c423e9f4>Extension</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en/dev/api.html" tabindex="0" data-v-71183eee data-v-c423e9f4><!--[--><span data-v-c423e9f4>Develop</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-37a6b570 data-v-d3047050 data-v-12ec5ee2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-12ec5ee2><span class="text" data-v-12ec5ee2><span class="vpi-languages option-icon" data-v-12ec5ee2></span><!----><span class="vpi-chevron-down text-icon" data-v-12ec5ee2></span></span></button><div class="menu" data-v-12ec5ee2><div class="VPMenu" data-v-12ec5ee2 data-v-0e22c6c5><!----><!--[--><!--[--><div class="items" data-v-d3047050><p class="title" data-v-d3047050>English</p><!--[--><div class="VPMenuLink" data-v-d3047050 data-v-19363427><a class="VPLink link" href="/dev/api/dev/observer.html" data-v-19363427><!--[-->简体中文<!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-37a6b570 data-v-0a1958c9><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-0a1958c9 data-v-0f382965 data-v-b19619af><span class="check" data-v-b19619af><span class="icon" data-v-b19619af><!--[--><span class="vpi-sun sun" data-v-0f382965></span><span class="vpi-moon moon" data-v-0f382965></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-37a6b570 data-v-edaebeb1 data-v-52782a78><!--[--><a class="VPSocialLink no-icon" href="https://github.com/LiteyukiStudio/LiteyukiBot" aria-label="github" target="_blank" rel="noopener" data-v-52782a78 data-v-974e0aed><span class="vpi-social-github" /></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-37a6b570 data-v-c34ef5aa data-v-12ec5ee2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-12ec5ee2><span class="vpi-more-horizontal icon" data-v-12ec5ee2></span></button><div class="menu" data-v-12ec5ee2><div class="VPMenu" data-v-12ec5ee2 data-v-0e22c6c5><!----><!--[--><!--[--><div class="group translations" data-v-c34ef5aa><p class="trans-title" data-v-c34ef5aa>English</p><!--[--><div class="VPMenuLink" data-v-c34ef5aa data-v-19363427><a class="VPLink link" href="/dev/api/dev/observer.html" data-v-19363427><!--[-->简体中文<!--]--></a></div><!--]--></div><div class="group" data-v-c34ef5aa><div class="item appearance" data-v-c34ef5aa><p class="label" data-v-c34ef5aa>Appearance</p><div class="appearance-action" data-v-c34ef5aa><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-c34ef5aa data-v-0f382965 data-v-b19619af><span class="check" data-v-b19619af><span class="icon" data-v-b19619af><!--[--><span class="vpi-sun sun" data-v-0f382965></span><span class="vpi-moon moon" data-v-0f382965></span><!--]--></span></span></button></div></div></div><div class="group" data-v-c34ef5aa><div class="item social-links" data-v-c34ef5aa><div class="VPSocialLinks social-links-list" data-v-c34ef5aa data-v-52782a78><!--[--><a class="VPSocialLink no-icon" href="https://github.com/LiteyukiStudio/LiteyukiBot" aria-label="github" target="_blank" rel="noopener" data-v-52782a78 data-v-974e0aed><span class="vpi-social-github" /></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-37a6b570 data-v-6a2ed68b><span class="container" data-v-6a2ed68b><span class="top" data-v-6a2ed68b></span><span class="middle" data-v-6a2ed68b></span><span class="bottom" data-v-6a2ed68b></span></span></button></div></div></div></div><div class="divider" data-v-37a6b570><div class="divider-line" data-v-37a6b570></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-7e3343f7 data-v-b8036a12><div class="container" data-v-b8036a12><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-b8036a12><span class="vpi-align-left menu-icon" data-v-b8036a12></span><span class="menu-text" data-v-b8036a12>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-b8036a12 data-v-5e8cf508><button data-v-5e8cf508>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-7e3343f7 data-v-f2245985><div class="curtain" data-v-f2245985></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-f2245985><span class="visually-hidden" id="sidebar-aria-label" data-v-f2245985> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-e3ecf1ec><section class="VPSidebarItem level-0 has-active" data-v-e3ecf1ec data-v-b74067ae><div class="item" role="button" tabindex="0" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><h2 class="text" data-v-b74067ae>LITEYUKIBOT</h2><!----></div><div class="items" data-v-b74067ae><!--[--><section class="VPSidebarItem level-1 collapsible is-link has-active" data-v-b74067ae data-v-b74067ae><div class="item" tabindex="0" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/api.html" data-v-b74067ae><!--[--><h3 class="text" data-v-b74067ae>liteyuki</h3><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b74067ae><span class="vpi-chevron-right caret-icon" data-v-b74067ae></span></div></div><div class="items" data-v-b74067ae><!--[--><section class="VPSidebarItem level-2 collapsible collapsed is-link" data-v-b74067ae data-v-b74067ae><div class="item" tabindex="0" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/bot/bot.html" data-v-b74067ae><!--[--><h4 class="text" data-v-b74067ae>liteyuki.bot</h4><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b74067ae><span class="vpi-chevron-right caret-icon" data-v-b74067ae></span></div></div><div class="items" data-v-b74067ae><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/bot/" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.bot</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/bot/lifespan.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.bot.lifespan</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2 collapsible collapsed is-link" data-v-b74067ae data-v-b74067ae><div class="item" tabindex="0" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/comm/comm.html" data-v-b74067ae><!--[--><h4 class="text" data-v-b74067ae>liteyuki.comm</h4><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b74067ae><span class="vpi-chevron-right caret-icon" data-v-b74067ae></span></div></div><div class="items" data-v-b74067ae><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/comm/channel.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.comm.channel</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/comm/event.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.comm.event</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/comm/" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.comm</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/comm/rpc.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.comm.rpc</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/comm/socks_channel.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.comm.socks_channel</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/comm/storage.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.comm.storage</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/config.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.config</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 collapsible collapsed is-link" data-v-b74067ae data-v-b74067ae><div class="item" tabindex="0" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/core/core.html" data-v-b74067ae><!--[--><h4 class="text" data-v-b74067ae>liteyuki.core</h4><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b74067ae><span class="vpi-chevron-right caret-icon" data-v-b74067ae></span></div></div><div class="items" data-v-b74067ae><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/core/" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.core</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/core/manager.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.core.manager</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2 collapsible is-link has-active" data-v-b74067ae data-v-b74067ae><div class="item" tabindex="0" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/dev/dev.html" data-v-b74067ae><!--[--><h4 class="text" data-v-b74067ae>liteyuki.dev</h4><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b74067ae><span class="vpi-chevron-right caret-icon" data-v-b74067ae></span></div></div><div class="items" data-v-b74067ae><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/dev/" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.dev</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/dev/observer.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.dev.observer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/dev/plugin.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.dev.plugin</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/exception.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.exception</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/log.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.log</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 collapsible collapsed is-link" data-v-b74067ae data-v-b74067ae><div class="item" tabindex="0" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/message/message.html" data-v-b74067ae><!--[--><h4 class="text" data-v-b74067ae>liteyuki.message</h4><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b74067ae><span class="vpi-chevron-right caret-icon" data-v-b74067ae></span></div></div><div class="items" data-v-b74067ae><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/message/event.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.message.event</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/message/" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.message</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/message/matcher.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.message.matcher</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/message/on.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.message.on</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/message/rule.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.message.rule</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/message/session.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.message.session</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/mkdoc.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.mkdoc</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 collapsible collapsed is-link" data-v-b74067ae data-v-b74067ae><div class="item" tabindex="0" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/plugin/plugin.html" data-v-b74067ae><!--[--><h4 class="text" data-v-b74067ae>liteyuki.plugin</h4><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b74067ae><span class="vpi-chevron-right caret-icon" data-v-b74067ae></span></div></div><div class="items" data-v-b74067ae><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/plugin/" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.plugin</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/plugin/load.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.plugin.load</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/plugin/manager.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.plugin.manager</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/plugin/model.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.plugin.model</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2 collapsible collapsed" data-v-b74067ae data-v-b74067ae><div class="item" role="button" tabindex="0" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><h4 class="text" data-v-b74067ae>plugins</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b74067ae><span class="vpi-chevron-right caret-icon" data-v-b74067ae></span></div></div><div class="items" data-v-b74067ae><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/plugins/liteecho.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.plugins.liteecho</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b74067ae data-v-b74067ae><div class="item" tabindex="0" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/plugins/plugin_loader/plugin_loader.html" data-v-b74067ae><!--[--><h5 class="text" data-v-b74067ae>liteyuki.plugins.plugin_loader</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b74067ae><span class="vpi-chevron-right caret-icon" data-v-b74067ae></span></div></div><div class="items" data-v-b74067ae><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/plugins/plugin_loader/" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.plugins.plugin_loader</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/api/utils.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>liteyuki.utils</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-1 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/guide.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>Development Guide</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/resource.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>资源包开发</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/lyfunc.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>轻雪函数</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/plugin.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>轻雪插件开发</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b74067ae data-v-b74067ae><div class="item" data-v-b74067ae><div class="indicator" data-v-b74067ae></div><a class="VPLink link link" href="/en/dev/comm.html" data-v-b74067ae><!--[--><p class="text" data-v-b74067ae>进程通信</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-7e3343f7 data-v-4e31bbd2><div class="VPDoc has-sidebar has-aside" data-v-4e31bbd2 data-v-4981c415><!--[--><!--]--><div class="container" data-v-4981c415><div class="aside" data-v-4981c415><div class="aside-curtain" data-v-4981c415></div><div class="aside-container" data-v-4981c415><div class="aside-content" data-v-4981c415><div class="VPDocAside" data-v-4981c415 data-v-65ef6f81><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-65ef6f81 data-v-be1126ba><div class="content" data-v-be1126ba><div class="outline-marker" data-v-be1126ba></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-be1126ba>Page Content</div><ul class="VPDocOutlineItem root" data-v-be1126ba data-v-75b86f7a><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-65ef6f81></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-4981c415><div class="content-container" data-v-4981c415><!--[--><!--]--><main class="main" data-v-4981c415><div style="position:relative;" class="vp-doc _en_dev_api_dev_observer" data-v-4981c415><div><h1 id="liteyuki-dev-observer" tabindex="-1">liteyuki.dev.observer <a class="header-anchor" href="#liteyuki-dev-observer" aria-label="Permalink to &quot;liteyuki.dev.observer&quot;"></a></h1><p><strong>Description</strong>: 此模块用于注册观察者函数使用watchdog监控文件变化并重启bot 启用该模块需要在配置文件中设置<code>dev_mode</code>为True</p><h3 id="var-callback-func" tabindex="-1">var <code>CALLBACK_FUNC</code> <a class="header-anchor" href="#var-callback-func" aria-label="Permalink to &quot;var `CALLBACK_FUNC`&quot;"></a></h3><ul><li><p><strong>Description</strong>: 位置1为FileSystemEvent</p></li><li><p><strong>Type</strong>: <code>TypeAlias</code></p></li><li><p><strong>Default</strong>: <code>Callable[[FileSystemEvent], None]</code></p></li></ul><h3 id="var-filter-func" tabindex="-1">var <code>FILTER_FUNC</code> <a class="header-anchor" href="#var-filter-func" aria-label="Permalink to &quot;var `FILTER_FUNC`&quot;"></a></h3><ul><li><p><strong>Description</strong>: 位置1为FileSystemEvent</p></li><li><p><strong>Type</strong>: <code>TypeAlias</code></p></li><li><p><strong>Default</strong>: <code>Callable[[FileSystemEvent], bool]</code></p></li></ul><h3 id="func-debounce-wait" tabindex="-1"><em><strong>func</strong></em> <code>debounce(wait)</code> <a class="header-anchor" href="#func-debounce-wait" aria-label="Permalink to &quot;***func*** `debounce(wait)`&quot;"></a></h3><p><strong>Description</strong>: 防抖函数</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/dev/observer.py#L20" target="_blank">View on GitHub</a></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> debounce</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(wait):</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 防抖函数</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> decorator</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(func):</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> wrapper</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">args, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">kwargs):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> nonlocal</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> last_call_time</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> current_time </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> time.time()</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> current_time </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> last_call_time </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> wait:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> last_call_time </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> current_time</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> func(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">args, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">kwargs)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> last_call_time </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> None</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> wrapper</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> decorator</span></span></code></pre></div></details><h3 id="class-codemodifiedhandler-filesystemeventhandler" tabindex="-1"><em><strong>class</strong></em> <code>CodeModifiedHandler(FileSystemEventHandler)</code> <a class="header-anchor" href="#class-codemodifiedhandler-filesystemeventhandler" aria-label="Permalink to &quot;***class*** `CodeModifiedHandler(FileSystemEventHandler)`&quot;"></a></h3><p><code>@debounce(1)</code></p><h4 id="func-on-modified-self-event" tabindex="-1"><em><strong>func</strong></em> <code>on_modified(self, event)</code> <a class="header-anchor" href="#func-on-modified-self-event" aria-label="Permalink to &quot;***func*** `on_modified(self, event)`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/dev/observer.py#L49" target="_blank">View on GitHub</a></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">@debounce</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> on_modified</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, event):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> raise</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> NotImplementedError</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;on_modified must be implemented&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><h4 id="func-on-created-self-event" tabindex="-1"><em><strong>func</strong></em> <code>on_created(self, event)</code> <a class="header-anchor" href="#func-on-created-self-event" aria-label="Permalink to &quot;***func*** `on_created(self, event)`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/dev/observer.py#L52" target="_blank">View on GitHub</a></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> on_created</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, event):</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.on_modified(event)</span></span></code></pre></div></details><h4 id="func-on-deleted-self-event" tabindex="-1"><em><strong>func</strong></em> <code>on_deleted(self, event)</code> <a class="header-anchor" href="#func-on-deleted-self-event" aria-label="Permalink to &quot;***func*** `on_deleted(self, event)`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/dev/observer.py#L55" target="_blank">View on GitHub</a></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> on_deleted</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, event):</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.on_modified(event)</span></span></code></pre></div></details><h4 id="func-on-moved-self-event" tabindex="-1"><em><strong>func</strong></em> <code>on_moved(self, event)</code> <a class="header-anchor" href="#func-on-moved-self-event" aria-label="Permalink to &quot;***func*** `on_moved(self, event)`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/dev/observer.py#L58" target="_blank">View on GitHub</a></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> on_moved</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, event):</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.on_modified(event)</span></span></code></pre></div></details><h4 id="func-on-any-event-self-event" tabindex="-1"><em><strong>func</strong></em> <code>on_any_event(self, event)</code> <a class="header-anchor" href="#func-on-any-event-self-event" aria-label="Permalink to &quot;***func*** `on_any_event(self, event)`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/dev/observer.py#L61" target="_blank">View on GitHub</a></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> on_any_event</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, event):</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.on_modified(event)</span></span></code></pre></div></details><h3 id="func-on-file-system-event-directories-tuple-str-recursive-bool-true-event-filter-filter-func-none-callable-callback-func-callback-func" tabindex="-1"><em><strong>func</strong></em> <code>on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -&gt; Callable[[CALLBACK_FUNC], CALLBACK_FUNC]</code> <a class="header-anchor" href="#func-on-file-system-event-directories-tuple-str-recursive-bool-true-event-filter-filter-func-none-callable-callback-func-callback-func" aria-label="Permalink to &quot;***func*** `on_file_system_event(directories: tuple[str], recursive: bool = True, event_filter: FILTER_FUNC = None) -&gt; Callable[[CALLBACK_FUNC], CALLBACK_FUNC]`&quot;"></a></h3><p><strong>Description</strong>: 注册文件系统变化监听器</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>directories: 监听目录们</li><li>recursive: 是否递归监听子目录</li><li>event_filter: 事件过滤器, 返回True则执行回调函数</li></ul></blockquote><p><strong>Return</strong>: 装饰器,装饰一个函数在接收到数据后执行</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/dev/observer.py#L65" target="_blank">View on GitHub</a></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> on_file_system_event</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(directories: tuple[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], recursive: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bool</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">True</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, event_filter: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">FILTER_FUNC</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">None</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; Callable[[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">CALLBACK_FUNC</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">CALLBACK_FUNC</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 注册文件系统变化监听器</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Args:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> directories: 监听目录们</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> recursive: 是否递归监听子目录</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> event_filter: 事件过滤器, 返回True则执行回调函数</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Returns:</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 装饰器,装饰一个函数在接收到数据后执行</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;&quot;&quot;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> decorator</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(func: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">CALLBACK_FUNC</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">CALLBACK_FUNC</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> wrapper</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(event: FileSystemEvent):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> event_filter </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">is</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> not</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> None</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> event_filter(event)):</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> func(event)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> code_modified_handler </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CodeModifiedHandler()</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> code_modified_handler.on_modified </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> wrapper</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> directory </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> directories:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> observer.schedule(code_modified_handler, directory, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">recursive</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">recursive)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> func</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> decorator</span></span></code></pre></div></details></div></div></main><footer class="VPDocFooter" data-v-4981c415 data-v-e27a0cf7><!--[--><!--]--><div class="edit-info" data-v-e27a0cf7><div class="edit-link" data-v-e27a0cf7><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki/dev/observer.py" target="_blank" rel="noreferrer" data-v-e27a0cf7><!--[--><span class="vpi-square-pen edit-link-icon" data-v-e27a0cf7></span> Edit this page on GitHub<!--]--></a></div><div class="last-updated" data-v-e27a0cf7><p class="VPLastUpdated" data-v-e27a0cf7 data-v-243e2690>Last updated: <time datetime="2024-08-31T10:57:48.000Z" data-v-243e2690></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e27a0cf7><span class="visually-hidden" id="doc-footer-aria-label" data-v-e27a0cf7>Pager</span><div class="pager" data-v-e27a0cf7><a class="VPLink link pager-link prev" href="/en/dev/api/dev/" data-v-e27a0cf7><!--[--><span class="desc" data-v-e27a0cf7>Prev Page</span><span class="title" data-v-e27a0cf7>liteyuki.dev</span><!--]--></a></div><div class="pager" data-v-e27a0cf7><a class="VPLink link pager-link next" href="/en/dev/api/dev/plugin.html" data-v-e27a0cf7><!--[--><span class="desc" data-v-e27a0cf7>Next Page</span><span class="title" data-v-e27a0cf7>liteyuki.dev.plugin</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-7e3343f7 data-v-098a46ae><div class="container" data-v-098a46ae><p class="message" data-v-098a46ae>Documentation built with <a href="https://vitepress.dev/">VitePress</a> | API references generated by <a href="https://github.com/LiteyukiStudio/litedoc">litedoc</a></p><p class="copyright" data-v-098a46ae>Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"deploy_config.md\":\"Dy6_9kmq\",\"deploy_fandq.md\":\"VsSAquiP\",\"deploy_install.md\":\"NeWgtF9u\",\"dev_api_api.md\":\"DPs8mI8t\",\"dev_api_bot_bot.md\":\"CBIiHq8H\",\"dev_api_bot_index.md\":\"Bl6nIuaM\",\"dev_api_bot_lifespan.md\":\"DdoH9JM4\",\"dev_api_comm_channel.md\":\"B_L2aXqa\",\"dev_api_comm_comm.md\":\"MC2PsCEE\",\"dev_api_comm_event.md\":\"DeJ-7lZQ\",\"dev_api_comm_index.md\":\"Dg7KBxRc\",\"dev_api_comm_rpc.md\":\"C-p70yzH\",\"dev_api_comm_socks_channel.md\":\"CtdgdN3h\",\"dev_api_comm_storage.md\":\"C4H9RVGS\",\"dev_api_config.md\":\"BONV_uho\",\"dev_api_core_core.md\":\"DenztKVd\",\"dev_api_core_index.md\":\"Cj5HY8K6\",\"dev_api_core_manager.md\":\"RG9w3FVM\",\"dev_api_dev_dev.md\":\"DLAG7EOq\",\"dev_api_dev_index.md\":\"DE09NGxu\",\"dev_api_dev_observer.md\":\"Dollxton\",\"dev_api_dev_plugin.md\":\"Bqe23FQJ\",\"dev_api_exception.md\":\"4hYkD3mG\",\"dev_api_index.md\":\"Bu0DPbVe\",\"dev_api_log.md\":\"CVRp952s\",\"dev_api_message_event.md\":\"bb5VMS3p\",\"dev_api_message_index.md\":\"D_xir93Q\",\"dev_api_message_matcher.md\":\"CvWgSVV5\",\"dev_api_message_message.md\":\"BdTOLo-y\",\"dev_api_message_on.md\":\"OqFDctVE\",\"dev_api_message_rule.md\":\"Cj1u8V4L\",\"dev_api_message_session.md\":\"CsS1DbiY\",\"dev_api_mkdoc.md\":\"DDGwldFM\",\"dev_api_plugin_index.md\":\"ByOK_FZZ\",\"dev_api_plugin_load.md\":\"BBrIzjCL\",\"dev_api_plugin_manager.md\":\"DqSxbeMw\",\"dev_api_plugin_model.md\":\"BWz-c3Xf\",\"dev_api_plugin_plugin.md\":\"CW0bAXwc\",\"dev_api_plugins_liteecho.md\":\"DifIk3un\",\"dev_api_plugins_plugin_loader_index.md\":\"Cz5nNRDl\",\"dev_api_plugins_plugin_loader_plugin_loader.md\":\"yNM6qh7H\",\"dev_api_utils.md\":\"BN4756Kd\",\"dev_comm.md\":\"hNmUCoCo\",\"dev_guide.md\":\"CX13bHpF\",\"dev_lyfunc.md\":\"B04ffqeB\",\"dev_plugin.md\":\"zxhuyKqr\",\"dev_resource.md\":\"L6rbb6Y2\",\"en_deploy_config.md\":\"p5tbfiF7\",\"en_deploy_fandq.md\":\"DfaR54zS\",\"en_deploy_install.md\":\"CnE88-VD\",\"en_dev_api_api.md\":\"D5qljt5j\",\"en_dev_api_bot_bot.md\":\"B7o1M6_A\",\"en_dev_api_bot_index.md\":\"DGMss_In\",\"en_dev_api_bot_lifespan.md\":\"0JFrXvUK\",\"en_dev_api_comm_channel.md\":\"Cd00SJ4l\",\"en_dev_api_comm_comm.md\":\"BTfgaU4G\",\"en_dev_api_comm_event.md\":\"D13s8Jfa\",\"en_dev_api_comm_index.md\":\"DwDV0c2d\",\"en_dev_api_comm_rpc.md\":\"C6yLouuf\",\"en_dev_api_comm_socks_channel.md\":\"tHaZS-Rw\",\"en_dev_api_comm_storage.md\":\"DhG5k0Pc\",\"en_dev_api_config.md\":\"p_guTQUs\",\"en_dev_api_core_core.md\":\"DxgLgqTW\",\"en_dev_api_core_index.md\":\"Bzq1VJCU\",\"en_dev_api_core_manager.md\":\"HTCBKdrq\",\"en_dev_api_dev_dev.md\":\"B_2gN8Nu\",\"en_dev_api_dev_index.md\":\"B8Uq0Bla\",\"en_dev_api_dev_observer.md\":\"DK289dDP\",\"en_dev_api_dev_plugin.md\":\"C8isfQ5D\",\"en_dev_api_exception.md\":\"BYqNg4_T\",\"en_dev_api_index.md\":\"Cr-xqgzn\",\"en_dev_api_log.md\":\"CBBz94rw\",\"en_dev_api_message_event.md\":\"XbwPSj2U\",\"en_dev_api_message_index.md\":\"GpeK4Ece\",\"en_dev_api_message_matcher.md\":\"te2Kc5Br\",\"en_dev_api_message_message.md\":\"RxZdJBkW\",\"en_dev_api_message_on.md\":\"DMAbpY4X\",\"en_dev_api_message_rule.md\":\"BwrLDTjs\",\"en_dev_api_message_session.md\":\"K5XIcW80\",\"en_dev_api_mkdoc.md\":\"BTuFn2-l\",\"en_dev_api_plugin_index.md\":\"A3t3g3Ty\",\"en_dev_api_plugin_load.md\":\"Cj31GMGd\",\"en_dev_api_plugin_manager.md\":\"C77x1vDi\",\"en_dev_api_plugin_model.md\":\"CG6qD_sR\",\"en_dev_api_plugin_plugin.md\":\"Bb1peRHC\",\"en_dev_api_plugins_liteecho.md\":\"DPTEU6kB\",\"en_dev_api_plugins_plugin_loader_index.md\":\"BQeLai1c\",\"en_dev_api_plugins_plugin_loader_plugin_loader.md\":\"BJTAHyf3\",\"en_dev_api_utils.md\":\"Bm2p6RYo\",\"en_dev_comm.md\":\"Ccs3e7bM\",\"en_dev_guide.md\":\"B9IsCbUV\",\"en_dev_lyfunc.md\":\"DGFU9eBL\",\"en_dev_plugin.md\":\"Dl12_-0c\",\"en_dev_resource.md\":\"CewWlnYW\",\"en_index.md\":\"UzsNQotP\",\"en_store_plugin.md\":\"B76RUv0A\",\"en_store_resource.md\":\"DbGZuvFU\",\"en_usage_agreement.md\":\"DJ986YHY\",\"en_usage_basic.md\":\"B0-m1uZW\",\"en_usage_extra.md\":\"DL2YdpET\",\"index.md\":\"CJA4F_UQ\",\"store_plugin.md\":\"KuPOQXrE\",\"store_resource.md\":\"Dw9MA0Y4\",\"usage_agreement.md\":\"CZ-GyP0y\",\"usage_basic.md\":\"DngXZ7-Z\",\"usage_extra.md\":\"sdLWNk-d\"}");function deserializeFunctions(r){return Array.isArray(r)?r.map(deserializeFunctions):typeof r=="object"&&r!==null?Object.keys(r).reduce((t,n)=>(t[n]=deserializeFunctions(r[n]),t),{}):typeof r=="string"&&r.startsWith("_vp-fn_")?new Function(`return ${r.slice(7)}`)():r};window.__VP_SITE_DATA__=deserializeFunctions(JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":{\"light\":\"/liteyuki.svg\",\"dark\":\"/liteyuki-dark.svg\",\"alt\":\"LiteyukiBot Logo\"},\"sidebar\":{\"/dev/\":{\"base\":\"/dev/\",\"items\":[{\"text\":\"LITEYUKIBOT\",\"items\":[{\"text\":\"liteyuki\",\"link\":\"api/api\",\"items\":[{\"text\":\"liteyuki.bot\",\"link\":\"api/bot/bot\",\"items\":[{\"text\":\"liteyuki.bot\",\"link\":\"api/bot/\"},{\"text\":\"liteyuki.bot.lifespan\",\"link\":\"api/bot/lifespan\"}],\"collapsed\":true},{\"text\":\"liteyuki.comm\",\"link\":\"api/comm/comm\",\"items\":[{\"text\":\"liteyuki.comm.channel\",\"link\":\"api/comm/channel\"},{\"text\":\"liteyuki.comm.event\",\"link\":\"api/comm/event\"},{\"text\":\"liteyuki.comm\",\"link\":\"api/comm/\"},{\"text\":\"liteyuki.comm.rpc\",\"link\":\"api/comm/rpc\"},{\"text\":\"liteyuki.comm.socks_channel\",\"link\":\"api/comm/socks_channel\"},{\"text\":\"liteyuki.comm.storage\",\"link\":\"api/comm/storage\"}],\"collapsed\":true},{\"text\":\"liteyuki.config\",\"link\":\"api/config\"},{\"text\":\"liteyuki.core\",\"link\":\"api/core/core\",\"items\":[{\"text\":\"liteyuki.core\",\"link\":\"api/core/\"},{\"text\":\"liteyuki.core.manager\",\"link\":\"api/core/manager\"}],\"collapsed\":true},{\"text\":\"liteyuki.dev\",\"link\":\"api/dev/dev\",\"items\":[{\"text\":\"liteyuki.dev\",\"link\":\"api/dev/\"},{\"text\":\"liteyuki.dev.observer\",\"link\":\"api/dev/observer\"},{\"text\":\"liteyuki.dev.plugin\",\"link\":\"api/dev/plugin\"}],\"collapsed\":true},{\"text\":\"liteyuki.exception\",\"link\":\"api/exception\"},{\"text\":\"liteyuki\",\"link\":\"api/\"},{\"text\":\"liteyuki.log\",\"link\":\"api/log\"},{\"text\":\"liteyuki.message\",\"link\":\"api/message/message\",\"items\":[{\"text\":\"liteyuki.message.event\",\"link\":\"api/message/event\"},{\"text\":\"liteyuki.message\",\"link\":\"api/message/\"},{\"text\":\"liteyuki.message.matcher\",\"link\":\"api/message/matcher\"},{\"text\":\"liteyuki.message.on\",\"link\":\"api/message/on\"},{\"text\":\"liteyuki.message.rule\",\"link\":\"api/message/rule\"},{\"text\":\"liteyuki.message.session\",\"link\":\"api/message/session\"}],\"collapsed\":true},{\"text\":\"liteyuki.mkdoc\",\"link\":\"api/mkdoc\"},{\"text\":\"liteyuki.plugin\",\"link\":\"api/plugin/plugin\",\"items\":[{\"text\":\"liteyuki.plugin\",\"link\":\"api/plugin/\"},{\"text\":\"liteyuki.plugin.load\",\"link\":\"api/plugin/load\"},{\"text\":\"liteyuki.plugin.manager\",\"link\":\"api/plugin/manager\"},{\"text\":\"liteyuki.plugin.model\",\"link\":\"api/plugin/model\"}],\"collapsed\":true},{\"text\":\"plugins\",\"items\":[{\"text\":\"liteyuki.plugins.liteecho\",\"link\":\"api/plugins/liteecho\"},{\"text\":\"liteyuki.plugins.plugin_loader\",\"link\":\"api/plugins/plugin_loader/plugin_loader\",\"items\":[{\"text\":\"liteyuki.plugins.plugin_loader\",\"link\":\"api/plugins/plugin_loader/\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"liteyuki.utils\",\"link\":\"api/utils\"}],\"collapsed\":true},{\"text\":\"开发指南\",\"link\":\"guide\"},{\"text\":\"资源包开发\",\"link\":\"resource\"},{\"text\":\"轻雪函数\",\"link\":\"lyfunc\"},{\"text\":\"轻雪插件开发\",\"link\":\"plugin\"},{\"text\":\"进程通信\",\"link\":\"comm\"}]}]},\"/store/\":{\"base\":\"/store/\",\"items\":[{\"text\":\"LITEYUKIBOT\",\"items\":[{\"text\":\"资源商店\",\"link\":\"resource\"},{\"text\":\"插件商店\",\"link\":\"plugin\"}]}]},\"/usage/\":{\"base\":\"/usage/\",\"items\":[{\"text\":\"LITEYUKIBOT\",\"items\":[{\"text\":\"基础插件\",\"link\":\"basic\"},{\"text\":\"功能命令\",\"link\":\"extra\"},{\"text\":\"用户协议\",\"link\":\"agreement\"}]}]},\"/deploy/\":{\"base\":\"/deploy/\",\"items\":[{\"text\":\"LITEYUKIBOT\",\"items\":[{\"text\":\"安装\",\"link\":\"install\"},{\"text\":\"配置\",\"link\":\"config\"},{\"text\":\"答疑\",\"link\":\"fandq\"}]}]},\"/en/dev/\":{\"base\":\"/en/dev/\",\"items\":[{\"text\":\"LITEYUKIBOT\",\"items\":[{\"text\":\"liteyuki\",\"link\":\"api/api\",\"items\":[{\"text\":\"liteyuki.bot\",\"link\":\"api/bot/bot\",\"items\":[{\"text\":\"liteyuki.bot\",\"link\":\"api/bot/\"},{\"text\":\"liteyuki.bot.lifespan\",\"link\":\"api/bot/lifespan\"}],\"collapsed\":true},{\"text\":\"liteyuki.comm\",\"link\":\"api/comm/comm\",\"items\":[{\"text\":\"liteyuki.comm.channel\",\"link\":\"api/comm/channel\"},{\"text\":\"liteyuki.comm.event\",\"link\":\"api/comm/event\"},{\"text\":\"liteyuki.comm\",\"link\":\"api/comm/\"},{\"text\":\"liteyuki.comm.rpc\",\"link\":\"api/comm/rpc\"},{\"text\":\"liteyuki.comm.socks_channel\",\"link\":\"api/comm/socks_channel\"},{\"text\":\"liteyuki.comm.storage\",\"link\":\"api/comm/storage\"}],\"collapsed\":true},{\"text\":\"liteyuki.config\",\"link\":\"api/config\"},{\"text\":\"liteyuki.core\",\"link\":\"api/core/core\",\"items\":[{\"text\":\"liteyuki.core\",\"link\":\"api/core/\"},{\"text\":\"liteyuki.core.manager\",\"link\":\"api/core/manager\"}],\"collapsed\":true},{\"text\":\"liteyuki.dev\",\"link\":\"api/dev/dev\",\"items\":[{\"text\":\"liteyuki.dev\",\"link\":\"api/dev/\"},{\"text\":\"liteyuki.dev.observer\",\"link\":\"api/dev/observer\"},{\"text\":\"liteyuki.dev.plugin\",\"link\":\"api/dev/plugin\"}],\"collapsed\":true},{\"text\":\"liteyuki.exception\",\"link\":\"api/exception\"},{\"text\":\"liteyuki\",\"link\":\"api/\"},{\"text\":\"liteyuki.log\",\"link\":\"api/log\"},{\"text\":\"liteyuki.message\",\"link\":\"api/message/message\",\"items\":[{\"text\":\"liteyuki.message.event\",\"link\":\"api/message/event\"},{\"text\":\"liteyuki.message\",\"link\":\"api/message/\"},{\"text\":\"liteyuki.message.matcher\",\"link\":\"api/message/matcher\"},{\"text\":\"liteyuki.message.on\",\"link\":\"api/message/on\"},{\"text\":\"liteyuki.message.rule\",\"link\":\"api/message/rule\"},{\"text\":\"liteyuki.message.session\",\"link\":\"api/message/session\"}],\"collapsed\":true},{\"text\":\"liteyuki.mkdoc\",\"link\":\"api/mkdoc\"},{\"text\":\"liteyuki.plugin\",\"link\":\"api/plugin/plugin\",\"items\":[{\"text\":\"liteyuki.plugin\",\"link\":\"api/plugin/\"},{\"text\":\"liteyuki.plugin.load\",\"link\":\"api/plugin/load\"},{\"text\":\"liteyuki.plugin.manager\",\"link\":\"api/plugin/manager\"},{\"text\":\"liteyuki.plugin.model\",\"link\":\"api/plugin/model\"}],\"collapsed\":true},{\"text\":\"plugins\",\"items\":[{\"text\":\"liteyuki.plugins.liteecho\",\"link\":\"api/plugins/liteecho\"},{\"text\":\"liteyuki.plugins.plugin_loader\",\"link\":\"api/plugins/plugin_loader/plugin_loader\",\"items\":[{\"text\":\"liteyuki.plugins.plugin_loader\",\"link\":\"api/plugins/plugin_loader/\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"liteyuki.utils\",\"link\":\"api/utils\"}],\"collapsed\":true},{\"text\":\"Development Guide\",\"link\":\"guide\"},{\"text\":\"资源包开发\",\"link\":\"resource\"},{\"text\":\"轻雪函数\",\"link\":\"lyfunc\"},{\"text\":\"轻雪插件开发\",\"link\":\"plugin\"},{\"text\":\"进程通信\",\"link\":\"comm\"}]}]},\"/en/store/\":{\"base\":\"/en/store/\",\"items\":[{\"text\":\"LITEYUKIBOT\",\"items\":[{\"text\":\"资源商店\",\"link\":\"resource\"},{\"text\":\"插件商店\",\"link\":\"plugin\"}]}]},\"/en/usage/\":{\"base\":\"/en/usage/\",\"items\":[{\"text\":\"LITEYUKIBOT\",\"items\":[{\"text\":\"基础插件\",\"link\":\"basic\"},{\"text\":\"功能命令\",\"link\":\"extra\"},{\"text\":\"用户协议\",\"link\":\"agreement\"}]}]},\"/en/deploy/\":{\"base\":\"/en/deploy/\",\"items\":[{\"text\":\"LITEYUKIBOT\",\"items\":[{\"text\":\"Install\",\"link\":\"install\"},{\"text\":\"Configurations\",\"link\":\"config\"},{\"text\":\"FAQ\",\"link\":\"fandq\"}]}]}},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/LiteyukiStudio/LiteyukiBot\"}],\"search\":{\"provider\":\"local\",\"options\":{\"locales\":{\"root\":{\"translations\":{\"button\":{\"buttonText\":\"搜索文档\",\"buttonAriaLabel\":\"打开搜索框\"},\"modal\":{\"noResultsText\":\"没有找到搜索结果\",\"resetButtonTitle\":\"清除查询条件\",\"footer\":{\"selectText\":\"选择\",\"navigateText\":\"切换\"}}}},\"en\":{\"translations\":{\"button\":{\"buttonText\":\"Search\",\"buttonAriaLabel\":\"Search\"},\"modal\":{\"noResultsText\":\"No results found\",\"resetButtonTitle\":\"Reset search query\",\"footer\":{\"selectText\":\"Select\",\"navigateText\":\"Navigate\"}}}}}}}},\"locales\":{\"root\":{\"label\":\"简体中文\",\"lang\":\"zh-Hans\",\"title\":\"轻雪机器人\",\"description\":\"一个综合性的机器人应用及管理框架\",\"themeConfig\":{\"nav\":[{\"text\":\"部署\",\"link\":\"/deploy/install\"},{\"text\":\"使用\",\"link\":\"/usage/basic\"},{\"text\":\"扩展\",\"link\":\"/store/resource\"},{\"text\":\"开发\",\"link\":\"/dev/api\"}],\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"editLink\":{\"pattern\":\"_vp-fn_({ filePath }) => {\\n const regex = /^[^\\\\/]+\\\\/dev\\\\/api/;\\n console.log(filePath);\\n if (regex.test(filePath)) {\\n filePath = filePath.replace(regex, \\\"\\\").replace(\\\"index.md\\\", \\\"__init__.py\\\").replace(\\\".md\\\", \\\".py\\\");\\n if (filePath.split(\\\"/\\\").pop().split(\\\".\\\")[0] === filePath.split(\\\"/\\\").slice(-2, -1)[0]) {\\n filePath = filePath.split(\\\"/\\\").slice(0, -1).join(\\\"/\\\") + \\\"/__init__.py\\\";\\n }\\n return `https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki${filePath}`;\\n } else {\\n return `https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/docs/${filePath}`;\\n }\\n }\",\"text\":\"在 GitHub 上编辑此页\"},\"footer\":{\"message\":\"文档由 <a href=\\\"https://vitepress.dev/\\\">VitePress</a> 构建 | API引用由 <a href=\\\"https://github.com/LiteyukiStudio/litedoc\\\">litedoc</a> 生成\",\"copyright\":\"Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved\"},\"outline\":{\"label\":\"页面内容\",\"level\":[2,6]}}},\"en\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"LiteyukiBot\",\"description\":\"A high-performance, easy-to-use chatbot framework and application\",\"themeConfig\":{\"nav\":[{\"text\":\"Deploy\",\"link\":\"/en/deploy/install\"},{\"text\":\"Usage\",\"link\":\"/en/usage/basic\"},{\"text\":\"Extension\",\"link\":\"/en/store/resource\"},{\"text\":\"Develop\",\"link\":\"/en/dev/api\"}],\"docFooter\":{\"prev\":\"Prev Page\",\"next\":\"Next Page\"},\"editLink\":{\"pattern\":\"_vp-fn_({ filePath }) => {\\n const regex = /^[^\\\\/]+\\\\/dev\\\\/api/;\\n console.log(filePath);\\n if (regex.test(filePath)) {\\n filePath = filePath.replace(regex, \\\"\\\").replace(\\\"index.md\\\", \\\"__init__.py\\\").replace(\\\".md\\\", \\\".py\\\");\\n if (filePath.split(\\\"/\\\").pop().split(\\\".\\\")[0] === filePath.split(\\\"/\\\").slice(-2, -1)[0]) {\\n filePath = filePath.split(\\\"/\\\").slice(0, -1).join(\\\"/\\\") + \\\"/__init__.py\\\";\\n }\\n return `https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/liteyuki${filePath}`;\\n } else {\\n return `https://github.com/LiteyukiStudio/LiteyukiBot/tree/main/docs/${filePath}`;\\n }\\n }\",\"text\":\"Edit this page on GitHub\"},\"footer\":{\"message\":\"Documentation built with <a href=\\\"https://vitepress.dev/\\\">VitePress</a> | API references generated by <a href=\\\"https://github.com/LiteyukiStudio/litedoc\\\">litedoc</a>\",\"copyright\":\"Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved\"},\"outline\":{\"label\":\"Page Content\",\"level\":[2,6]}}}},\"scrollOffset\":134,\"cleanUrls\":false}"));</script>
</body>
</html>