2025-01-26 11:07:43 +00:00
<!DOCTYPE html>
< html lang = "en-US" dir = "ltr" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
< title > observer | Marsho AI< / title >
< meta name = "description" content = "Kawaii, Intelligent and Easy to Extend" >
< meta name = "generator" content = "VitePress v1.6.3" >
2025-02-12 10:04:34 +00:00
< link rel = "preload stylesheet" href = "/assets/style.BUX0sJO8.css" as = "style" >
2025-01-26 11:07:43 +00:00
< link rel = "preload stylesheet" href = "/vp-icons.css" as = "style" >
2025-02-12 10:04:34 +00:00
< script type = "module" src = "/assets/app.1yXGHHgl.js" > < / script >
2025-01-26 11:07:43 +00:00
< link rel = "preload" href = "/assets/inter-roman-latin.Di8DUHzh.woff2" as = "font" type = "font/woff2" crossorigin = "" >
2025-02-12 10:04:34 +00:00
< link rel = "modulepreload" href = "/assets/chunks/theme.RcKEpCgK.js" >
2025-02-08 15:30:40 +00:00
< link rel = "modulepreload" href = "/assets/chunks/framework.CTVYQtO4.js" >
< link rel = "modulepreload" href = "/assets/en_dev_api_observer.md.BwAsqPFr.lean.js" >
2025-01-26 11:07:43 +00:00
< link rel = "icon" type = "image/x-icon" href = "/favicon.ico" >
< 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 >
2025-02-12 10:04:34 +00:00
< div id = "app" > < div class = "Layout" data-v-23d7ee04 > <!-- [ --> <!-- ] --> <!-- [ --> < span tabindex = "-1" data-v-21500cc4 > < / span > < a href = "#VPContent" class = "VPSkipLink visually-hidden" data-v-21500cc4 > Skip to content< / a > <!-- ] --> <!-- --> < header class = "VPNav" data-v-23d7ee04 data-v-fbfa125b > < div class = "VPNavBar" data-v-fbfa125b data-v-6aee6108 > < div class = "wrapper" data-v-6aee6108 > < div class = "container" data-v-6aee6108 > < div class = "title" data-v-6aee6108 > < div class = "VPNavBarTitle has-sidebar" data-v-6aee6108 data-v-05d55397 > < a class = "title" href = "/en/" data-v-05d55397 > <!-- [ --> <!-- ] --> <!-- [ --> <!-- [ --> <!-- [ --> < img class = "VPImage dark logo" src = "/marsho-full.svg" alt = "Marsho Logo" data-v-9ebe201e > <!-- ] --> <!-- [ --> < img class = "VPImage light logo" src = "/marsho-full.svg" alt = "Marsho Logo" data-v-9ebe201e > <!-- ] --> <!-- ] --> <!-- ] --> < span data-v-05d55397 > Marsho AI< / span > <!-- [ --> <!-- ] --> < / a > < / div > < / div > < div class = "content" data-v-6aee6108 > < div class = "content-body" data-v-6aee6108 > <!-- [ --> <!-- ] --> < div class = "VPNavBarSearch search" data-v-6aee6108 > <!-- --> < / div > < nav aria-labelledby = "main-nav-aria-label" class = "VPNavBarMenu menu" data-v-6aee6108 data-v-30adaf87 > < span id = "main-nav-aria-label" class = "visually-hidden" data-v-30adaf87 > Main Navigation < / span > <!-- [ --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/en" tabindex = "0" data-v-30adaf87 data-v-bae6b1fb > <!-- [ --> < span data-v-bae6b1fb > Home< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/en/start/install" tabindex = "0" data-v-30adaf87 data-v-bae6b1fb > <!-- [ --> < span data-v-bae6b1fb > Usage< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/en/dev/extension" tabindex = "0" data-v-30adaf87 data-v-bae6b1fb > <!-- [ --> < span data-v-bae6b1fb > Develop< / span > <!-- ] --> < / a > <!-- ] --> <!-- ] --> < / nav > < div class = "VPFlyout VPNavBarTranslations translations" data-v-6aee6108 data-v-ef89c5a6 data-v-361e1e3d > < button type = "button" class = "button" aria-haspopup = "true" aria-expanded = "false" aria-label = "Language" data-v-361e1e3d > < span class = "text" data-v-361e1e3d > < span class = "vpi-languages option-icon" data-v-361e1e3d > < / span > <!-- --> < span class = "vpi-chevron-down text-icon" data-v-361e1e3d > < / span > < / span > < / button > < div class = "menu" data-v-361e1e3d > < div class = "VPMenu" data-v-361e1e3d data-v-3cb383e8 > <!-- --> <!-- [ --> <!-- [ --> < div class = "items" data-v-ef89c5a6 > < p class = "title" data-v-ef89c5a6 > English< / p > <!-- [ --> < div class = "VPMenuLink" data-v-ef89c5a6 data-v-e719711c > < a class = "VPLink link" href = "/dev/api/observer" data-v-e719711c > <!-- [ --> < span data-v-e719711c > 简体中文< / span > <!-- ] --> < / a > < / div > < div class = "VPMenuLink" data-v-ef89c5a6 data-v-e719711c > < a class = "VPLink link" href = "/ja/dev/api/observer" data-v-e719711c > <!-- [ --> < span data-v-e719711c > 日本語< / span > <!-- ] --> < / a > < / div > <!-- ] --> < / div > <!-- ] --> <!-- ] --> < / div > < / div > < / div > < div class = "VPNavBarAppearance appearance" data-v-6aee6108 data-v-696d2565 > < button class = "VPSwitch VPSwitchAppearance" type = "button" role = "switch" title aria-checked = "false" data-v-696d2565 data-v-a2db82bb data-v-34d58b3a > < span class = "check" data-v-34d58b3a > < span class = "icon" data-v-34d58b3a > <!-- [ --> < span class = "vpi-sun sun" data-v-a2db82bb > < / span > < span class = "vpi-moon moon" data-v-a2db82bb > < / span > <!-- ] --> < / span > < / span > < / button > < / div > < div class = "VPSocialLinks VPNavBarSocialLinks social-links" data-v-6aee6108 data-v-8a15bdfe data-v-4736dec0 > <!-- [ --> < a class = "VPSocialLink no-icon" href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai" aria-label = "github" target = "_blank" rel = "noopener" data-v-4736dec0 data-v-2c86eb22 > < span class = "vpi-social-github" > < / span > < / a > < a class = "VPSocialLink no-icon" href = "https://git.liteyuki.icu/LiteyukiStudio/nonebot-plugin-marshoai" aria-label target = "_blank" rel = "noopener" data-v-4736dec0 data-v-2c86eb22 > < svg t = "1725391346807" class = "icon" viewBox = "0 0 1025 1024" version = "1.1" xmlns = "http://www.w3.org/2000/svg" p-id = "5067" width = "256" height = "256" > < path d = "M1004.692673 466 . 396616l-447 . 094409-447 . 073929c-25 . 743103-25 . 763582-67 . 501405-25 . 763582-93 . 264987 0l-103 . 873521 103 . 873521 78 . 171378 78 . 171378c12 . 533635-6 . 00058 26 . 5622
2025-01-26 11:07:43 +00:00
< 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;" > > < / 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 > < hr > < p > < code > @driver.on_startup< / code > < / p > < h3 id = "async-func-check-for-reloader" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > check_for_reloader()< / code > < a class = "header-anchor" href = "#async-func-check-for-reloader" aria-label = "Permalink to "***async func*** `check_for_reloader()`"" > < / a > < / h3 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/observer.py#L43" 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;" > @driver.on_startup< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > check_for_reloader< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ():< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_devmode:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > logger.debug(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' Marsho Reload enabled, watching for file changes...' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > observer.start()< / 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 "***class*** `CodeModifiedHandler(FileSystemEventHandler)`"" > < / a > < / h3 > < hr > < 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 "***func*** `on_modified(self, event)`"" > < / a > < / h4 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/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:#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;" > ' on_modified must be implemented' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < 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 "***func*** `on_created(self, event)`"" > < / a > < / h4 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/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_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 > < hr > < 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 "***func*** `on_deleted(self, event)`"" > < / a > < / h4 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/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_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 > < hr > < 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 "***func*** `on_moved(self, event)`"" > < / a > < / h4 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/observer.py#L64" 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 > < hr > < 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 "***func*** `on_any_event(self, event)`"" > < / a > < / h4 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/observer.py#L67" 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 > < hr > < h3 id = "func-on-file-system-event-directories-tuple-str-recursive-bool-true-event-filter-filter-func-none-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 = None) -> 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-none-callable-callback-func-callback-func" aria-label = "Permalink to "***func*** `on_file_system_event(directories: tuple[str, ...], recursive: bool = True, event_filter: FILTER_FUNC | None = None) -> Callable[[CALLBACK_FUNC], CALLBACK_FUNC]`"" > < / 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/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/observer.py#L71" 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;" > , < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > ...< / 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:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) -> 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 >
< 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;" > ) -> < / 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 >
2025-02-12 10:04:34 +00:00
< 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-32bb7f8a data-v-44e7d4c7 > <!-- [ --> <!-- ] --> < div class = "edit-info" data-v-44e7d4c7 > < div class = "edit-link" data-v-44e7d4c7 > < a class = "VPLink link vp-external-link-icon no-icon edit-link-button" href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai//observer.py" target = "_blank" rel = "noreferrer" data-v-44e7d4c7 > <!-- [ --> < span class = "vpi-square-pen edit-link-icon" data-v-44e7d4c7 > < / span > Edit this page<!-- ] --> < / a > < / div > <!-- --> < / div > < nav class = "prev-next" aria-labelledby = "doc-footer-aria-label" data-v-44e7d4c7 > < span class = "visually-hidden" id = "doc-footer-aria-label" data-v-44e7d4c7 > Pager< / span > < div class = "pager" data-v-44e7d4c7 > < a class = "VPLink link pager-link prev" href = "/en/dev/api/models" data-v-44e7d4c7 > <!-- [ --> < span class = "desc" data-v-44e7d4c7 > Prev< / span > < span class = "title" data-v-44e7d4c7 > models< / span > <!-- ] --> < / a > < / div > < div class = "pager" data-v-44e7d4c7 > < a class = "VPLink link pager-link next" href = "/en/dev/api/plugin/index" data-v-44e7d4c7 > <!-- [ --> < span class = "desc" data-v-44e7d4c7 > Next< / span > < span class = "title" data-v-44e7d4c7 > plugin< / span > <!-- ] --> < / a > < / div > < / nav > < / footer > <!-- [ --> <!-- ] --> < / div > < / div > < / div > <!-- [ --> <!-- ] --> < / div > < / div > < footer class = "VPFooter has-sidebar" data-v-23d7ee04 data-v-d6b1477e > < div class = "container" data-v-d6b1477e > < p class = "message" data-v-d6b1477e > The document is being improved. Suggestions are welcome.< / p > < p class = "copyright" data-v-d6b1477e > © 2024 < a href = "https://liteyuki.icu" target = "_blank" > Liteyuki Studio< / a > < / p > < / div > < / footer > <!-- [ --> <!-- ] --> < / div > < / div >
< script > w i n d o w . _ _ V P _ H A S H _ M A P _ _ = J S O N . p a r s e ( " { \ " d e v _ a p i _ a z u r e . m d \ " : \ " B 8 - f 9 F U H \ " , \ " d e v _ a p i _ a z u r e _ o n e b o t . m d \ " : \ " A F 0 8 d y d V \ " , \ " d e v _ a p i _ c o n f i g . m d \ " : \ " C f e 3 T 7 7 C \ " , \ " d e v _ a p i _ c o n s t a n t s . m d \ " : \ " C z o d S z E x \ " , \ " d e v _ a p i _ d e a l _ l a t e x . m d \ " : \ " T C 9 a c X C k \ " , \ " d e v _ a p i _ d e v . m d \ " : \ " x t Z B f v C K \ " , \ " d e v _ a p i _ h o o k s . m d \ " : \ " O e x 5 O s b q \ " , \ " d e v _ a p i _ h u n y u a n . m d \ " : \ " c w j z N k K 4 \ " , \ " d e v _ a p i _ i n d e x . m d \ " : \ " C m - - m - d j \ " , \ " d e v _ a p i _ i n s t a n c e s . m d \ " : \ " D W I b F 7 z d \ " , \ " d e v _ a p i _ m a r s h o . m d \ " : \ " D o 6 p v H E t \ " , \ " d e v _ a p i _ m a r s h o _ o n e b o t . m d \ " : \ " C K X l p K 6 h \ " , \ " d e v _ a p i _ m e t a d a t a . m d \ " : \ " g X V Q s f b 6 \ " , \ " d e v _ a p i _ m o d e l s . m d \ " : \ " C b w 0 S n o S \ " , \ " d e v _ a p i _ o b s e r v e r . m d \ " : \ " D J a 7 E Q I J \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ c a l l e r . m d \ " : \ " C h d L I n 4 2 \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ i n d e x . m d \ " : \ " B Y a O 0 Y M f \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ m o d e l s . m d \ " : \ " B q D L H q 4 8 \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ p a r a m s . m d \ " : \ " 5 f F v 6 5 N o \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ u t i l s . m d \ " : \ " C c 0 6 p g c e \ " , \ " d e v _ a p i _ p l u g i n _ i n d e x . m d \ " : \ " D 1 c v 5 B d t \ " , \ " d e v _ a p i _ p l u g i n _ l o a d . m d \ " : \ " B T h u u e 9 - \ " , \ " d e v _ a p i _ p l u g i n _ m o d e l s . m d \ " : \ " C M G e D M N V \ " , \ " d e v _ a p i _ p l u g i n _ r e g i s t e r . m d \ " : \ " B c H W k y _ t \ " , \ " d e v _ a p i _ p l u g i n _ t y p i n g . m d \ " : \ " B v z c c 0 i 7 \ " , \ " d e v _ a p i _ p l u g i n _ u t i l s . m d \ " : \ " C 8 C 6 0 o h 0 \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ c h a t . m d \ " : \ " E Y z B k M 7 q \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ f i l e _ i o . m d \ " : \ " D 8 s t O 3 5 2 \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ i n d e x . m d \ " : \ " B Z H Q 5 N N H \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ l i t e y u k i . m d \ " : \ " D i K m n k x A \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ m a n a g e r . m d \ " : \ " W 6 8 6 7 J U V \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ n e t w o r k . m d \ " : \ " C N U P u s y d \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ u t i l s . m d \ " : \ " D D n R S z z R \ " , \ " d e v _ a p i _ p l u g i n s _ m a r s h o a i _ b a n g u m i _ i n d e x . m d \ " : \ " B L o o t i n Z \ " , \ " d e v _ a p i _ p l u g i n s _ m a r s h o a i _ b a s i c _ i n d e x . m d \ " : \ " m H S C u j g c \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ m a r s h o a i _ b a s i c _ i n d e x . m d \ " : \ " B i 6 J 7 R _ z \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ m a r s h o a i _ m e m o r y _ c o m m a n d . m d \ " : \ " C w 7 G m c D 9 \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ m a r s h o a i _ m e m o r y _ c o n f i g . m d \ " : \ " D v F L a x 4 1 \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ m a r s h o a i _ m e m o r y _ i n d e x . m d \ " : \ " j u 9 E 5 a 1 x \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ r a n d o m _ n u m b e r _ g e n e r a t o r . m d \ " : \ " C z K w N N 4 y \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ s n o w y k a m i _ t e s t p l u g i n _ i n d e x . m d \ " : \ " U D P C - U c 5 \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ w e a t h e r _ d e m o . m d \ " : \ " - 1 K D L 3 o N \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ m e g a k i t s _ i n d e x . m d \ " : \ " S J w j K 6 i r \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ m e g a k i t s _ m k _ m o r s e _ c o d e . m d \ " : \ " B i g B H 9 6 X \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ m e g a k i t s _ m k _ n y a _ c o d e . m d \ " : \ " C 6 N 9 g A 9 1 \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ i n d e x . m d \ " : \ " C y r V K k 9 d \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ p c _ c a t . m d \ " : \ " C w 1 - J a s b \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ p c _ i n f o . m d \ " : \ " H i n y s 1 n W \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ p c _ s h o p . m d \ " : \ " B 1 e 0 Z S x F \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ p c _ t o k e n . m d \ " : \ " i G 6 4 f H 2 l \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ b a n g u m i _ i n d e x . m d \ " : \ " D u z e 3 T V P \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ b a s i c _ i n d e x . m d \ " : \ " B M k A 9 a f b \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ i n d e x . m d \ " : \ " D 4 8 x E W t 6 \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ m k _ c o m m o n . m d \ " : \ " o R u E Y C j m \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ m k _ i n f o . m d \ " : \ " D W 5 E c 5 c n \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ m k _ m o r s e _ c o d e . m d \ " : \ " C m k x A t 5 6 \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ m k _ n y a _ c o d e . m d \ " : \ " B Q A d - _ l 9 \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e m o r y _ i n d e x . m d \ " : \ " 9 y O j T t r q \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e o g i r l _ i n d e x . m d \ " : \ " B l c R o 3 X U \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e o g i r l _ m g _ i n f o . m d \ " : \ " C a y 9 k O B k \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e o g i r l _ m g _ i n t r o d u c e . m d \ " : \ " d L 8 Y u _ O 0 \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e o g i r l _ m g _ s e a r c h . m d \ " : \ " D r 7 z V 1 4 D \ " , \ " d e v _ a p i _ t o o l s _ w i p _ m a r s h o a i _ m e m o r y _ i n d e x . m d \ " : \ " C 1 s n 4 q Q D \ " , \ " d e v _ a p i _ u t i l . m d \ " : \ " b Y 3 K - Z 4 6 \ " , \ " d e v _ a p i _ u t i l _ h u n y u a n . m d \ " : \ " B c Y u 4 B N L \ " , \ " d e v _ e x t e n s i o n . m d \ " : \ " D f I b M 0 K e \ " , \ " d e v _ i n d e x . m d \ " : \ " B b Z 4 w G t m \ " , \ " d e v _ p r o j e c t . m d \ " : \ " C I 3 g Y p Y z \ " , \ " e n _ d e v _ a p i _ a z u r e . m d \ " : \ " D T 1 u z Y n u \ " , \ " e n _ d e v _ a p i _ a z u r e _ o n e b o t . m d \ " : \ " C I a 2 e H T t \ " , \ " e n _ d e v _ a p i _ c o n f i g . m d \ " : \ " D G p Q D 4 5 h \ " , \ " e n _ d e v _ a p i _ c o n s t a n t s . m d \ " : \ " s X F t r M z 7 \ " , \ " e n _ d e v _ a p i _ d e a l _ l a t e x . m d \ " : \ " B U 7 z m m Q G \ " , \ " e n _ d e v _ a p i _ d e v . m d \ " : \ " C I c P V 2 3 r \ " , \ " e n _ d e v _ a p i _ h o o k s . m d \ " : \ " 9 n K s u t J k \ " , \ " e n _ d e v _ a p i _ h u n y u a n . m d \ " : \ " B V j Q M b d k \ " , \ " e n _ d e v _ a p i _ i n d e x . m d \ " : \ " D I B c H O 1 C \ " , \ " e n _ d e v _ a p i _ i n s t a n c e s . m d \ " : \ " U v 5 r I R O F \ " , \ " e n _ d e v _ a p i _ m a r s h o . m d \ " : \ " D v W U j t Q S \ " , \ " e n _ d e v _ a p i _ m a r s h o _ o n e b o t . m d \ " : \ " C v _ 1 b x x 2 \ " , \ " e n _ d e v _ a p i _ m e t a d a t a . m d \ " : \ " 8 d 7 R n g M Y \ " , \ " e n _ d e v _ a p i _ m o d e l s . m d \ " : \ " C M I k 6 d n q \ " , \ " e n _ d e v _ a p i _ o b s e r v e r . m d \ " : \ " B w A s q P F r \ " , \ " e n _ d e v _ a
2025-01-26 11:07:43 +00:00
< / body >
< / html >