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 > util | Marsho AI< / title >
< meta name = "description" content = "Kawaii, Intelligent and Easy to Extend" >
< meta name = "generator" content = "VitePress v1.6.3" >
< link rel = "preload stylesheet" href = "/assets/style.DvoidLlL.css" as = "style" >
< link rel = "preload stylesheet" href = "/vp-icons.css" as = "style" >
2025-02-01 14:50:52 +00:00
< script type = "module" src = "/assets/app.DEVd50K1.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-01 14:50:52 +00:00
< link rel = "modulepreload" href = "/assets/chunks/theme.0_0tl2Go.js" >
< link rel = "modulepreload" href = "/assets/chunks/framework.AELpvxz7.js" >
2025-02-02 13:50:10 +00:00
< link rel = "modulepreload" href = "/assets/en_dev_api_util.md.DJBRZ231.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-01-31 10:24:30 +00:00
< div id = "app" > < div class = "Layout" data-v-46cada41 > <!-- [ --> <!-- ] --> <!-- [ --> < span tabindex = "-1" data-v-82af304d > < / span > < a href = "#VPContent" class = "VPSkipLink visually-hidden" data-v-82af304d > Skip to content< / a > <!-- ] --> <!-- --> < header class = "VPNav" data-v-46cada41 data-v-0ec1cc98 > < div class = "VPNavBar" data-v-0ec1cc98 data-v-97e37718 > < div class = "wrapper" data-v-97e37718 > < div class = "container" data-v-97e37718 > < div class = "title" data-v-97e37718 > < div class = "VPNavBarTitle has-sidebar" data-v-97e37718 data-v-9620ba61 > < a class = "title" href = "/en/" data-v-9620ba61 > <!-- [ --> <!-- ] --> <!-- [ --> <!-- [ --> <!-- [ --> < img class = "VPImage dark logo" src = "/marsho-full.svg" alt = "Marsho Logo" data-v-ce14eec4 > <!-- ] --> <!-- [ --> < img class = "VPImage light logo" src = "/marsho-full.svg" alt = "Marsho Logo" data-v-ce14eec4 > <!-- ] --> <!-- ] --> <!-- ] --> < span data-v-9620ba61 > Marsho AI< / span > <!-- [ --> <!-- ] --> < / a > < / div > < / div > < div class = "content" data-v-97e37718 > < div class = "content-body" data-v-97e37718 > <!-- [ --> <!-- ] --> < div class = "VPNavBarSearch search" data-v-97e37718 > <!-- --> < / div > < nav aria-labelledby = "main-nav-aria-label" class = "VPNavBarMenu menu" data-v-97e37718 data-v-fd0d02da > < span id = "main-nav-aria-label" class = "visually-hidden" data-v-fd0d02da > Main Navigation < / span > <!-- [ --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/en" tabindex = "0" data-v-fd0d02da data-v-c7cdc412 > <!-- [ --> < span data-v-c7cdc412 > Home< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/en/start/install" tabindex = "0" data-v-fd0d02da data-v-c7cdc412 > <!-- [ --> < span data-v-c7cdc412 > Usage< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/en/dev/extension" tabindex = "0" data-v-fd0d02da data-v-c7cdc412 > <!-- [ --> < span data-v-c7cdc412 > Develop< / span > <!-- ] --> < / a > <!-- ] --> <!-- ] --> < / nav > < div class = "VPFlyout VPNavBarTranslations translations" data-v-97e37718 data-v-da60b316 data-v-3174d294 > < button type = "button" class = "button" aria-haspopup = "true" aria-expanded = "false" aria-label = "Language" data-v-3174d294 > < span class = "text" data-v-3174d294 > < span class = "vpi-languages option-icon" data-v-3174d294 > < / span > <!-- --> < span class = "vpi-chevron-down text-icon" data-v-3174d294 > < / span > < / span > < / button > < div class = "menu" data-v-3174d294 > < div class = "VPMenu" data-v-3174d294 data-v-90ca5f1b > <!-- --> <!-- [ --> <!-- [ --> < div class = "items" data-v-da60b316 > < p class = "title" data-v-da60b316 > English< / p > <!-- [ --> < div class = "VPMenuLink" data-v-da60b316 data-v-5a3b110a > < a class = "VPLink link" href = "/dev/api/util" data-v-5a3b110a > <!-- [ --> < span data-v-5a3b110a > 简体中文< / span > <!-- ] --> < / a > < / div > < div class = "VPMenuLink" data-v-da60b316 data-v-5a3b110a > < a class = "VPLink link" href = "/ja/dev/api/util" data-v-5a3b110a > <!-- [ --> < span data-v-5a3b110a > 日本語< / span > <!-- ] --> < / a > < / div > <!-- ] --> < / div > <!-- ] --> <!-- ] --> < / div > < / div > < / div > < div class = "VPNavBarAppearance appearance" data-v-97e37718 data-v-b569c26a > < button class = "VPSwitch VPSwitchAppearance" type = "button" role = "switch" title aria-checked = "false" data-v-b569c26a data-v-a8d11977 data-v-d4fb1d40 > < span class = "check" data-v-d4fb1d40 > < span class = "icon" data-v-d4fb1d40 > <!-- [ --> < span class = "vpi-sun sun" data-v-a8d11977 > < / span > < span class = "vpi-moon moon" data-v-a8d11977 > < / span > <!-- ] --> < / span > < / span > < / button > < / div > < div class = "VPSocialLinks VPNavBarSocialLinks social-links" data-v-97e37718 data-v-25e71cd1 data-v-93344165 > <!-- [ --> < a class = "VPSocialLink no-icon" href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai" aria-label = "github" target = "_blank" rel = "noopener" data-v-93344165 data-v-b8870a62 > < 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-93344165 data-v-b8870a62 > < 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 . 562294-9 . 359
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > with< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > httpx.AsyncClient() < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > client:< / span > < / span >
2025-01-31 10:24:30 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > client.get(url, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > headers< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > _browser_headers, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > timeout< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > timeout)< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response.status_code < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ==< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 200< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > content_type < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response.headers.get(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' Content-Type' < / 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:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > content_type:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > content_type < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > mimetypes.guess_type(url)[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 0< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (response.content, < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (content_type))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
2025-01-31 10:24:30 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "async-func-get-image-b64-url-str-timeout-int-10-optional-str" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > get_image_b64(url: str, timeout: int = 10) -> Optional[str]< / code > < a class = "header-anchor" href = "#async-func-get-image-b64-url-str-timeout-int-10-optional-str" aria-label = "Permalink to "***async func*** `get_image_b64(url: str, timeout: int = 10) -> Optional[str]`"" > < / a > < / h3 > < p > < strong > Description< / strong > : 获取图片的base64编码< / p > < p > < strong > Arguments< / strong > :< / p > < blockquote > < ul > < li > url: 图片链接< / li > < li > timeout: 超时时间 秒< / li > < / ul > < / blockquote > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L88" 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;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > get_image_b64< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (url: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , timeout: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > int< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 10< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) -> Optional[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]:< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (data_type < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > :=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_image_raw_and_type(url.replace(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' https://' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' http://' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ), timeout))):< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > base64_image < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > base64.b64encode(data_type[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 0< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]).decode(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' utf-8' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > data_url < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' data:< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {}< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ;base64,< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {}< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .format(data_type[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 1< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ], base64_image)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > data_url< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "async-func-make-chat-client-chatcompletionsclient-msg-list-model-name-str-tools-optional-list-none" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list] = None)< / code > < a class = "header-anchor" href = "#async-func-make-chat-client-chatcompletionsclient-msg-list-model-name-str-tools-optional-list-none" aria-label = "Permalink to "***async func*** `make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list] = None)`"" > < / a > < / h3 > < p > < strong > Description< / strong > : 调用ai获取回复< / p > < p > < strong > Arguments< / strong > :< / p > < blockquote > < ul > < li > client: 用于与AI模型进行通信< / li > < li > msg: 消息内容< / li > < li > model_name: 指定AI模型名< / li > < li > tools: 工具列表< / li > < / ul > < / blockquote > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L110" 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;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > make_chat< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (client: ChatCompletionsClient, msg: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , model_name: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , tools: Optional[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / 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;" > ):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > client.complete(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > messages< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > msg, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > model< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > tools< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tools, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > temperature< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_temperature, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > max_tokens< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_max_tokens, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > top_p< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_top_p)< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "async-func-make-chat-openai-client-asyncopenai-msg-list-model-name-str-tools-optional-list-none" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list] = None)< / code > < a class = "header-anchor" href = "#async-func-make-chat-openai-client-asyncopenai-msg-list-model-name-str-tools-optional-list-none" aria-label = "Permalink to "***async func*** `make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list] = None)`"" > < / a > < / h3 > < p > < strong > Description< / strong > : 使用 Openai SDK 调用ai获取回复< / p > < p > < strong > Arguments< / strong > :< / p > < blockquote > < ul > < li > client: 用于与AI模型进行通信< / li > < li > msg: 消息内容< / li > < li > model_name: 指定AI模型名< / li > < li > tools: 工具列表< / li > < / ul > < / blockquote > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L135" 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;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > make_chat_openai< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (client: AsyncOpenAI, msg: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , model_name: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , tools: Optional[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / 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;" > ):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > client.chat.completions.create(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > messages< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > msg, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > model< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > tools< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tools < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > or< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > NOT_GIVEN< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > temperature< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_temperature < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > or< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > NOT_GIVEN< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > max_tokens< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_max_tokens < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > or< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > NOT_GIVEN< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > top_p< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_top_p < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > or< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > NOT_GIVEN< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > timeout< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_timeout)< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "func-get-praises" tabindex = "-1" > < em > < strong > func< / strong > < / em > < code > get_praises()< / code > < a class = "header-anchor" href = "#func-get-praises" aria-label = "Permalink to "***func*** `get_praises()`"" > < / a > < / h3 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L161" 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;" > get_praises< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ():< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > global< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_json< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_json < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > is< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_file < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > store.get_plugin_data_file(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' praises.json' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
2025-01-28 16:54:21 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_file.exists():< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > with< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > open< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (praises_file, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' w' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > encoding< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' utf-8' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > f:< / span > < / span >
2025-01-28 16:54:21 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.dump(_praises_init_data, f, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > ensure_ascii< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > False< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > indent< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 4< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > with< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > open< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (praises_file, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' r' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > encoding< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' utf-8' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > f:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > data < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.load(f)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_json < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > data< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_json< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "async-func-refresh-praises-json" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > refresh_praises_json()< / code > < a class = "header-anchor" href = "#async-func-refresh-praises-json" aria-label = "Permalink to "***async func*** `refresh_praises_json()`"" > < / a > < / h3 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L176" 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;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > refresh_praises_json< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ():< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > global< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_json< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_file < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > store.get_plugin_data_file(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' praises.json' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
2025-01-28 16:54:21 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_file.exists():< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > with< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > open< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (praises_file, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' w' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > encoding< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' utf-8' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > f:< / span > < / span >
2025-01-28 16:54:21 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.dump(_praises_init_data, f, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > ensure_ascii< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > False< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > indent< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 4< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > with< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > aiofiles.open(praises_file, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' r' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > encoding< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' utf-8' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > f:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > data < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.loads(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > f.read())< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_json < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > data< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "func-build-praises-str" tabindex = "-1" > < em > < strong > func< / strong > < / em > < code > build_praises() -> str< / code > < a class = "header-anchor" href = "#func-build-praises-str" aria-label = "Permalink to "***func*** `build_praises() -> str`"" > < / a > < / h3 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L187" 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;" > build_praises< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > () -> < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_praises()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 你喜欢以下几个人物,他们有各自的优点:' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > item < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' like' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result.append(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " 名字:< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > item[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' name' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ,优点:< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > item[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' advantages' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \n< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .join(result)< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "async-func-save-context-to-json-name-str-context-any-path-str" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > save_context_to_json(name: str, context: Any, path: str)< / code > < a class = "header-anchor" href = "#async-func-save-context-to-json-name-str-context-any-path-str" aria-label = "Permalink to "***async func*** `save_context_to_json(name: str, context: Any, path: str)`"" > < / a > < / h3 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L195" 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;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > save_context_to_json< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (name: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , context: Any, path: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ):< / span > < / span >
2025-01-28 16:54:21 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (context_dir < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > :=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (store.get_plugin_data_dir() < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > /< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > path)).mkdir(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > parents< / 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;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > exist_ok< / 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;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > with< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > open< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (context_dir < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > /< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > name< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > .json' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' w' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > encoding< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' utf-8' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json_file:< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.dump(context, json_file, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > ensure_ascii< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > False< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > indent< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 4< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "async-func-load-context-from-json-name-str-path-str-list" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > load_context_from_json(name: str, path: str) -> list< / code > < a class = "header-anchor" href = "#async-func-load-context-from-json-name-str-path-str-list" aria-label = "Permalink to "***async func*** `load_context_from_json(name: str, path: str) -> list`"" > < / a > < / h3 > < p > < strong > Description< / strong > : 从指定路径加载历史记录< / p > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L204" 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;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > load_context_from_json< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (name: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , path: < / 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;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
2025-01-28 16:54:21 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (context_dir < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > :=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (store.get_plugin_data_dir() < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > /< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > path)).mkdir(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > parents< / 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;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > exist_ok< / 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;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (file_path < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > :=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (context_dir < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > /< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > name< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > .json' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )).exists():< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > with< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > aiofiles.open(file_path, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' r' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > encoding< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' utf-8' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json_file:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.loads(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json_file.read())< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > []< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "async-func-get-nicknames" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > get_nicknames()< / code > < a class = "header-anchor" href = "#async-func-get-nicknames" aria-label = "Permalink to "***async func*** `get_nicknames()`"" > < / a > < / h3 > < p > < strong > Description< / strong > : 获取nickname_json, 优先来源于全局变量< / p > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L216" 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;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > get_nicknames< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ():< / span > < / span >
2025-01-28 16:54:21 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > global< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_json< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_json < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > is< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > filename < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > store.get_plugin_data_file(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' nickname.json' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > try< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > with< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > aiofiles.open(filename, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' r' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > encoding< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' utf-8' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > f:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_json < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.loads(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > f.read())< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > except< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > Exception< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_json < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > {}< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_json< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "async-func-set-nickname-user-id-str-name-str" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > set_nickname(user_id: str, name: str)< / code > < a class = "header-anchor" href = "#async-func-set-nickname-user-id-str-name-str" aria-label = "Permalink to "***async func*** `set_nickname(user_id: str, name: str)`"" > < / a > < / h3 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L230" 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;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > set_nickname< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (user_id: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , name: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ):< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > global< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_json< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > filename < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > store.get_plugin_data_file(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' nickname.json' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
2025-01-28 16:54:21 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > filename.exists():< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > data < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > {}< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
2025-01-28 16:54:21 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > with< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > aiofiles.open(filename, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' r' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > encoding< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' utf-8' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > f:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > data < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.loads(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > f.read())< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > data[user_id] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > name< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > name < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ==< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > and< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_id < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > data:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > del< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > data[user_id]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > with< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > open< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (filename, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' w' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > encoding< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' utf-8' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > f:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.dump(data, f, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > ensure_ascii< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > False< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > indent< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 4< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_json < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > data< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "async-func-refresh-nickname-json" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > refresh_nickname_json()< / code > < a class = "header-anchor" href = "#async-func-refresh-nickname-json" aria-label = "Permalink to "***async func*** `refresh_nickname_json()`"" > < / a > < / h3 > < p > < strong > Description< / strong > : 强制刷新nickname_json, 刷新全局变量< / p > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L246" 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;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > refresh_nickname_json< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ():< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > global< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_json< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > try< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
2025-01-28 16:54:21 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > with< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > aiofiles.open(store.get_plugin_data_file(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' nickname.json' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ), < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' r' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > encoding< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' utf-8' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > f:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_json < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.loads(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > f.read())< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > except< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > Exception< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > logger.error(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 刷新 nickname_json 表错误:无法载入 nickname.json 文件' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "func-get-prompt" tabindex = "-1" > < em > < strong > func< / strong > < / em > < code > get_prompt()< / code > < a class = "header-anchor" href = "#func-get-prompt" aria-label = "Permalink to "***func*** `get_prompt()`"" > < / a > < / h3 > < p > < strong > Description< / strong > : 获取系统提示词< / p > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L259" 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;" > get_prompt< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ():< / span > < / span >
2025-01-31 08:11:43 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > prompts < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_additional_prompt< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_enable_praises:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_prompt < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > build_praises()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > prompts < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_prompt< / 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_enable_time_prompt:< / span > < / span >
2025-01-31 10:42:29 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > prompts < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > _time_prompt.format(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > date_time< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / 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;" > DateTime.now()).strftime(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' %Y年%m月< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > %d< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > 日 %H:%M:%S' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ), < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > weekday_name< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > _weekdays[current_time.weekday()], < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > lunar_date< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > current_time.chinesize.date_hanzify(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 农历< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {干支年}{生肖}< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > 年< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {月份}< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > 月< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {数序日}< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ))< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > marsho_prompt < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_prompt< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > spell < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > SystemMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > content< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > marsho_prompt < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > prompts).as_dict()< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > spell< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "func-suggest-solution-errinfo-str-str" tabindex = "-1" > < em > < strong > func< / strong > < / em > < code > suggest_solution(errinfo: str) -> str< / code > < a class = "header-anchor" href = "#func-suggest-solution-errinfo-str-str" aria-label = "Permalink to "***func*** `suggest_solution(errinfo: str) -> str`"" > < / a > < / h3 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L282" 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;" > suggest_solution< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (errinfo: < / 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;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > suggestions < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > {< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' content_filter' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > : < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 消息已被内容过滤器过滤。请调整聊天内容后重试。' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' RateLimitReached' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > : < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 模型达到调用速率限制。请稍等一段时间或联系Bot管理员。' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' tokens_limit_reached' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > : < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 请求token达到上限。请重置上下文。' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' content_length_limit' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > : < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 请求体过大。请重置上下文。' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' unauthorized' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > : < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 访问token无效。请联系Bot管理员。' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' invalid type: parameter messages.content is of type array but should be of type string.' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > : < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 聊天请求体包含此模型不支持的数据类型。请重置上下文。' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' At most 1 image(s) may be provided in one request.' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > : < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 此模型只能在上下文中包含1张图片。如果此前的聊天已经发送过图片, 请重置上下文。' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > }< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > key, suggestion < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > suggestions.items():< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > key < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > errinfo:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \n{< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > suggestion< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "async-func-get-backup-context-target-id-str-target-private-bool-list" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > get_backup_context(target_id: str, target_private: bool) -> list< / code > < a class = "header-anchor" href = "#async-func-get-backup-context-target-id-str-target-private-bool-list" aria-label = "Permalink to "***async func*** `get_backup_context(target_id: str, target_private: bool) -> list`"" > < / a > < / h3 > < p > < strong > Description< / strong > : 获取历史上下文< / p > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L301" 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;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > get_backup_context< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (target_id: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , target_private: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > bool< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) -> < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > global< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > loaded_target_list< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_private:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_uid < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' private_< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_id< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_uid < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' group_< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_id< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_uid < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > loaded_target_list:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > loaded_target_list.append(target_uid)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > load_context_from_json(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' back_up_context_< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_uid< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' contexts/backup' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > []< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "func-extract-content-and-think-message-chatcompletionmessage-tuple-str-str-none-chatcompletionmessage" tabindex = "-1" > < em > < strong > func< / strong > < / em > < code > extract_content_and_think(message: ChatCompletionMessage) -> tuple[str, str | None, ChatCompletionMessage]< / code > < a class = "header-anchor" href = "#func-extract-content-and-think-message-chatcompletionmessage-tuple-str-str-none-chatcompletionmessage" aria-label = "Permalink to "***func*** `extract_content_and_think(message: ChatCompletionMessage) -> tuple[str, str | None, ChatCompletionMessage]`"" > < / a > < / h3 > < p > < strong > Description< / strong > : 处理 API 返回的消息对象,提取其中的内容和思维链,并返回处理后的消息,思维链,消息对象。< / p > < p > < strong > Arguments< / strong > :< / p > < blockquote > < ul > < li > message (ChatCompletionMessage): API 返回的消息对象。< / li > < / ul > < / blockquote > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L470" 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;" > extract_content_and_think< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (message: ChatCompletionMessage) -> 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;" > str< / 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;" > , ChatCompletionMessage]:< / span > < / span >
2025-01-31 10:24:30 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > try< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > thinking < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > message.reasoning_content< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > except< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > AttributeError< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > thinking < / 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;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > thinking:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > delattr< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (message, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' reasoning_content' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > think_blocks < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > re.findall(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < think> (.*?)< /think> ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , message.content < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > or< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > flags< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > re.< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > DOTALL< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > thinking < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \n< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .join([block.strip() < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > block < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > think_blocks < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > block.strip()])< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > content < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > re.sub(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < think> .*?< /think> ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , message.content < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > or< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > flags< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > re.< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > DOTALL< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ).strip()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > message.content < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > content< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (content, thinking, message)< / span > < / span > < / code > < / pre > < / div > < / details > < h3 id = "var-latex-convert" tabindex = "-1" > var < code > latex_convert< / code > < a class = "header-anchor" href = "#var-latex-convert" aria-label = "Permalink to "var `latex_convert`"" > < / a > < / h3 > < ul > < li > < p > < strong > Description< / strong > : 开启一个转换实例< / p > < / li > < li > < p > < strong > Default< / strong > : < code > ConvertLatex()< / code > < / p > < / li > < / ul > < hr > < p > < code > @get_driver().on_bot_connect< / code > < / p > < h3 id = "async-func-load-latex-convert" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > load_latex_convert()< / code > < a class = "header-anchor" href = "#async-func-load-latex-convert" aria-label = "Permalink to "***async func*** `load_latex_convert()`"" > < / a > < / h3 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L339" 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;" > @get_driver< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < span style = "--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic;" > .on_bot_connect< / span > < / span >
2025-01-26 11:07:43 +00:00
< 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;" > load_latex_convert< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ():< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > latex_convert.load_channel(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "async-func-get-uuid-back2codeblock-msg-str-code-blank-uuid-map-list-tuple-str-str" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]])< / code > < a class = "header-anchor" href = "#async-func-get-uuid-back2codeblock-msg-str-code-blank-uuid-map-list-tuple-str-str" aria-label = "Permalink to "***async func*** `get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]])`"" > < / a > < / h3 > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L342" 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;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > get_uuid_back2codeblock< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (msg: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , code_blank_uuid_map: list[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;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]]):< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > torep, rep < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > code_blank_uuid_map:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > msg.replace(torep, rep)< / span > < / span >
2025-02-02 13:50:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > msg< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h3 id = "async-func-parse-richtext-msg-str-unimessage" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > parse_richtext(msg: str) -> UniMessage< / code > < a class = "header-anchor" href = "#async-func-parse-richtext-msg-str-unimessage" aria-label = "Permalink to "***async func*** `parse_richtext(msg: str) -> UniMessage`"" > < / a > < / h3 > < p > < strong > Description< / strong > : 人工智能给出的回答一般不会包含 HTML 嵌入其中,但是包含图片或者 LaTeX 公式、代码块,都很正常。 这个函数会把这些都以图片形式嵌入消息体。< / p > < details > < summary > < b > Source code< / b > or < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/util.py#L351" 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;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > parse_richtext< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (msg: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) -> UniMessage:< / span > < / span >
2025-01-26 11:07:43 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > IMG_LATEX_PATTERN< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .search(msg):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(msg)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result_msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > code_blank_uuid_map < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [(uuid.uuid4().hex, cbp.group()) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > cbp < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > CODE_BLOCK_PATTERN< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .finditer(msg)]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > last_tag_index < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 0< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > rep, torep < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > code_blank_uuid_map:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > msg.replace(torep, rep)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > each_find_tag < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > IMG_LATEX_PATTERN< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .finditer(msg):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tag_found < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_uuid_back2codeblock(each_find_tag.group(), code_blank_uuid_map)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result_msg.append(TextMsg(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_uuid_back2codeblock(msg[last_tag_index:msg.find(tag_found)], code_blank_uuid_map)))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > last_tag_index < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > msg.find(tag_found) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > len< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (tag_found)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > each_find_tag.group(< / 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:#24292E;--shiki-dark:#E1E4E8;" > image_description < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tag_found[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 2< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :tag_found.find(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ]' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > image_url < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tag_found[tag_found.find(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' (' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 1< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > -< / 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;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (image_ < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > :=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_image_raw_and_type(image_url))):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result_msg.append(ImageMsg(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > raw< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > image_[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 0< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ], < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > mimetype< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > image_[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 1< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ], < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > name< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > image_description < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' .png' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result_msg.append(TextMsg(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ( < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {}< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ) ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .format(image_description)))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result_msg.append(TextMsg(tag_found))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > elif< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > each_find_tag.group(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 2< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > latex_exp < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_uuid_back2codeblock(each_find_tag.group().replace(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' $' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ).replace(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \\< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > (' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ).replace(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \\< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > )' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ).replace(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \\< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > [' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ).replace(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \\< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ]' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ), code_blank_uuid_map)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > latex_generate_ok, latex_generate_result < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > latex_convert.generate_png(latex_exp, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > dpi< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 300< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > foreground_colour< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_main_colour)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > latex_generate_ok:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result_msg.append(ImageMsg(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > raw< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > latex_generate_result, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > mimetype< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' image/png' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > name< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' latex.png' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result_msg.append(TextMsg(latex_exp < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' (公式解析失败)' < / 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:#005CC5;--shiki-dark:#79B8FF;" > isinstance< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (latex_generate_result, < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result_msg.append(TextMsg(latex_generate_result))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result_msg.append(ImageMsg(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > raw< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > latex_generate_result, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > mimetype< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' image/png' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > name< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' latex_error.png' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result_msg.append(TextMsg(tag_found < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' (未知内容解析失败)' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result_msg.append(TextMsg(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_uuid_back2codeblock(msg[last_tag_index:], code_blank_uuid_map)))< / span > < / span >
2025-01-31 10:24:30 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > result_msg< / span > < / span > < / code > < / pre > < / div > < / details > < h3 id = "var-thinking" tabindex = "-1" > var < code > thinking< / code > < a class = "header-anchor" href = "#var-thinking" aria-label = "Permalink to "var `thinking`"" > < / a > < / h3 > < ul > < li > < p > < strong > Description< / strong > : type: ignore< / p > < / li > < li > < p > < strong > Default< / strong > : < code > message.reasoning_content< / code > < / p > < / li > < / ul > < / div > < / div > < / main > < footer class = "VPDocFooter" data-v-03864d9f data-v-79bc013e > <!-- [ --> <!-- ] --> < div class = "edit-info" data-v-79bc013e > < div class = "edit-link" data-v-79bc013e > < 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//util.py" target = "_blank" rel = "noreferrer" data-v-79bc013e > <!-- [ --> < span class = "vpi-square-pen edit-link-icon" data-v-79bc013e > < / span > Edit this page<!-- ] --> < / a > < / div > < div class = "last-updated" data-v-79bc013e > < p class = "VPLastUpdated" data-v-79bc013e data-v-dc3d54fe > Last updated: < time datetime = "2024-12-14T11:16:59.000Z" data-v-dc3d54fe > < / time > < / p > < / div > < / div > < nav class = "prev-next" aria-labelledby = "doc-footer-aria-label" data-v-79bc013e > < span class = "visually-hidden" id = "doc-footer-aria-label" data-v-79bc013e > Pager< / span > < div class = "pager" data-v-79bc013e > < a class = "VPLink link pager-link prev" href = "/en/dev/api/plugin/utils" data-v-79bc013e > <!-- [ --> < span class = "desc" data-v-79bc013e > Prev< / span > < span class = "title" data-v-79bc013e > utils< / span > <!-- ] --> < / a > < / div > < div class = "pager" data-v-79bc013e > < a class = "VPLink link pager-link next" href = "/en/dev/api/util_hunyuan" data-v-79bc013e > <!-- [ --> < span class = "desc" data-v-79bc013e > Next< / span > < span class = "title" data-v-79bc013e > util_hunyuan< / span > <!-- ] --> < / a > < / div > < / nav > < / footer > <!-- [ --> <!-- ] --> < / div > < / div > < / div > <!-- [ --> <!-- ] --> < / div > < / div > < footer class = "VPFooter has-sidebar" data-v-46cada41 data-v-5dbe423c > < div class = "container" data-v-5dbe423c > < p class = "message" data-v-5dbe423c > The document is being improved. Suggestions are welcome.< / p > < p class = "copyright" data-v-5dbe423c > © 2024 < a href = "https://liteyuki.icu" target = "_blank" > Liteyuki Studio< / a > < / p > < / div > < / footer > <!-- [ --> <!-- ] --> < / div > < / div >
2025-02-02 13:50:10 +00:00
< 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 W x H k w h T \ " , \ " d e v _ a p i _ a z u r e _ o n e b o t . m d \ " : \ " B s J h g z t q \ " , \ " d e v _ a p i _ c o n f i g . m d \ " : \ " B Z Q y g K Z M \ " , \ " d e v _ a p i _ c o n s t a n t s . m d \ " : \ " B Q X k H k c u \ " , \ " d e v _ a p i _ d e a l _ l a t e x . m d \ " : \ " C c b P s z x u \ " , \ " d e v _ a p i _ d e v . m d \ " : \ " D 3 b R 8 y U w \ " , \ " d e v _ a p i _ h o o k s . m d \ " : \ " D x 3 J i N Y l \ " , \ " d e v _ a p i _ h u n y u a n . m d \ " : \ " 8 4 Z O S 2 d B \ " , \ " d e v _ a p i _ i n d e x . m d \ " : \ " C K z 7 r 0 x O \ " , \ " d e v _ a p i _ i n s t a n c e s . m d \ " : \ " D 0 E G V k F U \ " , \ " d e v _ a p i _ m a r s h o . m d \ " : \ " B f l l R q H b \ " , \ " d e v _ a p i _ m a r s h o _ o n e b o t . m d \ " : \ " D V P r H w s F \ " , \ " d e v _ a p i _ m e t a d a t a . m d \ " : \ " D c W s j A z N \ " , \ " d e v _ a p i _ m o d e l s . m d \ " : \ " - P F e 3 x V 6 \ " , \ " d e v _ a p i _ o b s e r v e r . m d \ " : \ " B x J v d 7 G M \ " , \ " 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 \ " : \ " B - A f o f a _ \ " , \ " 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 \ " : \ " D J q a E a l q \ " , \ " 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 z V X 8 d e r \ " , \ " 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 \ " : \ " G s A h b A n t \ " , \ " 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 v 6 v s u i A \ " , \ " d e v _ a p i _ p l u g i n _ i n d e x . m d \ " : \ " C 9 m f k 9 H L \ " , \ " d e v _ a p i _ p l u g i n _ l o a d . m d \ " : \ " B a K Q u U H B \ " , \ " d e v _ a p i _ p l u g i n _ m o d e l s . m d \ " : \ " T m 7 t - i k W \ " , \ " d e v _ a p i _ p l u g i n _ r e g i s t e r . m d \ " : \ " D S L 2 E G T F \ " , \ " d e v _ a p i _ p l u g i n _ t y p i n g . m d \ " : \ " C B P W U M V A \ " , \ " d e v _ a p i _ p l u g i n _ u t i l s . m d \ " : \ " B T f S K G u 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 _ c h a t . m d \ " : \ " a F a l 8 G o w \ " , \ " 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 \ " : \ " B K z 6 h g 1 O \ " , \ " 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 \ " : \ " - V V 3 V 6 2 O \ " , \ " 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 z K H _ V l 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 _ m a n a g e r . m d \ " : \ " B u e n S v B P \ " , \ " 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 \ " : \ " d F 5 t b L p w \ " , \ " 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 \ " : \ " C A z q H 2 x 9 \ " , \ " 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 \ " : \ " 1 7 V F _ f L c \ " , \ " 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 \ " : \ " T T N g R 0 h 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 R O 5 v i i M \ " , \ " 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 \ " : \ " B w e a v y s v \ " , \ " 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 \ " : \ " 1 M j w o s s B \ " , \ " 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 \ " : \ " D T 7 8 Y G q o \ " , \ " 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 M x d t M H P \ " , \ " 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 \ " : \ " C X b i H E Y p \ " , \ " 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 \ " : \ " D q U _ u n W p \ " , \ " 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 \ " : \ " - w o i 3 N l a \ " , \ " 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 \ " : \ " D c F U I H k A \ " , \ " 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 3 b f 8 s j 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 _ i n d e x . m d \ " : \ " D r B G E x m 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 _ c a t . m d \ " : \ " C H i Y X - s A \ " , \ " 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 \ " : \ " B f 0 k h 5 d 7 \ " , \ " 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 \ " : \ " D j O u x - B u \ " , \ " 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 \ " : \ " C U o n l Z E g \ " , \ " 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 \ " : \ " A g X 3 p x X S \ " , \ " 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 \ " : \ " C h _ S i i r r \ " , \ " 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 \ " : \ " C 7 W r e w v p \ " , \ " 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 \ " : \ " B M 5 e S R u V \ " , \ " 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 \ " : \ " C 1 k l e N H U \ " , \ " 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 k 4 f c Y 8 0 \ " , \ " 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 D - g e e Z X \ " , \ " 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 \ " : \ " D 1 2 A T f Z V \ " , \ " 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 \ " : \ " D 3 2 9 U t l F \ " , \ " 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 \ " : \ " B G x 2 x H o 4 \ " , \ " 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 F m M Y 7 u c \ " , \ " 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 Q c D O b 4 9 \ " , \ " 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 V H 4 X m i E \ " , \ " d e v _ a p i _ u t i l . m d \ " : \ " D E e R U I e 8 \ " , \ " d e v _ a p i _ u t i l _ h u n y u a n . m d \ " : \ " B K S F 1 J N E \ " , \ " d e v _ e x t e n s i o n . m d \ " : \ " M e X 5 S X J C \ " , \ " d e v _ i n d e x . m d \ " : \ " Z M O Y Q W T r \ " , \ " d e v _ p r o j e c t . m d \ " : \ " C T 7 W i 5 S p \ " , \ " e n _ d e v _ a p i _ a z u r e . m d \ " : \ " D 2 N k L S s 5 \ " , \ " e n _ d e v _ a p i _ a z u r e _ o n e b o t . m d \ " : \ " C k p s H N A 3 \ " , \ " e n _ d e v _ a p i _ c o n f i g . m d \ " : \ " D e Z 7 D e Z C \ " , \ " e n _ d e v _ a p i _ c o n s t a n t s . m d \ " : \ " 9 c K - 2 R n d \ " , \ " e n _ d e v _ a p i _ d e a l _ l a t e x . m d \ " : \ " C D N h g y q b \ " , \ " e n _ d e v _ a p i _ d e v . m d \ " : \ " D w Q w A Q 2 O \ " , \ " e n _ d e v _ a p i _ h o o k s . m d \ " : \ " B 8 f u Q m I t \ " , \ " e n _ d e v _ a p i _ h u n y u a n . m d \ " : \ " B R E w 4 B H 2 \ " , \ " e n _ d e v _ a p i _ i n d e x . m d \ " : \ " D 6 w q E 3 G o \ " , \ " e n _ d e v _ a p i _ i n s t a n c e s . m d \ " : \ " C - r Z E p V a \ " , \ " e n _ d e v _ a p i _ m a r s h o . m d \ " : \ " D 5 4 Y j S T 5 \ " , \ " e n _ d e v _ a p i _ m a r s h o _ o n e b o t . m d \ " : \ " D n S Z O f p 1 \ " , \ " e n _ d e v _ a p i _ m e t a d a t a . m d \ " : \ " D 7 O E Y a k w \ " , \ " e n _ d e v _ a p i _ m o d e l s . m d \ " : \ " u d 2 _ n M f y \ " , \ " e n _ d e v _ a p i _ o b s e r v e r . m d \ " : \ " B u a v w l t n \ " , \ " e n _ d e v _ a
2025-01-26 11:07:43 +00:00
< / body >
< / html >