166 lines
167 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

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

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

<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>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">
<script type="module" src="/assets/app.B_RH-Usd.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/theme.NEjmdO-F.js">
<link rel="modulepreload" href="/assets/chunks/framework.BzDBnRMZ.js">
<link rel="modulepreload" href="/assets/en_dev_api_util.md.DZ2bLrc-.lean.js">
<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>
<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.359266 41.389666-9.359266 53.02219 0 96.00928 42.98709 96.00928 96.00928 0 14.827372-3.358686 28.856031-9.359266 41.389666l127.97824 127.97824c12.533635-6.00058 26.562294-9.359266 41.389666-9.359266 53.02219 0 96.00928 42.98709 96.00928 96.00928s-42.98709 96.00928-96.00928 96.00928-96.00928-42.98709-96.00928-96.00928c0-14.827372 3.358686-28.856031 9.359266-41.389666l-127.97824-127.97824c-3.051489 1.454065-6.184898 2.744293-9.379746 3.870681l0 266.97461c37.273227 13.188988 63.99936 48.721433 63.99936 90.520695 0 53.02219-42.98709 96.00928-96.00928 96.00928s-96.00928-42.98709-96.00928-96.00928c0-41.799262 26.726133-77.331707 63.99936-90.520695l0-266.97461c-37.273227-13.188988-63.99936-48.721433-63.99936-90.520695 0-14.827372 3.358686-28.856031 9.359266-41.389666l-78.171378-78.171378-295.892081 295.871601c-25.743103 25.784062-25.743103 67.542365 0 93.285467l447.114889 447.073929c25.743103 25.743103 67.480925 25.743103 93.264987 0l445.00547-445.00547c25.763582-25.763582 25.763582-67.542365 0-93.285467z" fill="#a2d8f4" p-id="5068"></path></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-97e37718 data-v-7f49392e data-v-3174d294><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-3174d294><span class="vpi-more-horizontal icon" data-v-3174d294></span></button><div class="menu" data-v-3174d294><div class="VPMenu" data-v-3174d294 data-v-90ca5f1b><!----><!--[--><!--[--><div class="group translations" data-v-7f49392e><p class="trans-title" data-v-7f49392e>English</p><!--[--><div class="VPMenuLink" data-v-7f49392e 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-7f49392e data-v-5a3b110a><a class="VPLink link" href="/ja/dev/api/util" data-v-5a3b110a><!--[--><span data-v-5a3b110a>日本語</span><!--]--></a></div><!--]--></div><div class="group" data-v-7f49392e><div class="item appearance" data-v-7f49392e><p class="label" data-v-7f49392e>Theme</p><div class="appearance-action" data-v-7f49392e><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-7f49392e 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></div><div class="group" data-v-7f49392e><div class="item social-links" data-v-7f49392e><div class="VPSocialLinks social-links-list" data-v-7f49392e 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.359266 41.389666-9.359266 53.02219 0 96.00928 42.98709 96.00928 96.00928 0 14.827372-3.358686 28.856031-9.359266 41.389666l127.97824 127.97824c12.533635-6.00058 26.562294-9.359266 41.389666-9.359266 53.02219 0 96.00928 42.98709 96.00928 96.00928s-42.98709 96.00928-96.00928 96.00928-96.00928-42.98709-96.00928-96.00928c0-14.827372 3.358686-28.856031 9.359266-41.389666l-127.97824-127.97824c-3.051489 1.454065-6.184898 2.744293-9.379746 3.870681l0 266.97461c37.273227 13.188988 63.99936 48.721433 63.99936 90.520695 0 53.02219-42.98709 96.00928-96.00928 96.00928s-96.00928-42.98709-96.00928-96.00928c0-41.799262 26.726133-77.331707 63.99936-90.520695l0-266.97461c-37.273227-13.188988-63.99936-48.721433-63.99936-90.520695 0-14.827372 3.358686-28.856031 9.359266-41.389666l-78.171378-78.171378-295.892081 295.871601c-25.743103 25.784062-25.743103 67.542365 0 93.285467l447.114889 447.073929c25.743103 25.743103 67.480925 25.743103 93.264987 0l445.00547-445.00547c25.763582-25.763582 25.763582-67.542365 0-93.285467z" fill="#a2d8f4" p-id="5068"></path></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-97e37718 data-v-3c8ac357><span class="container" data-v-3c8ac357><span class="top" data-v-3c8ac357></span><span class="middle" data-v-3c8ac357></span><span class="bottom" data-v-3c8ac357></span></span></button></div></div></div></div><div class="divider" data-v-97e37718><div class="divider-line" data-v-97e37718></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-46cada41 data-v-2dee1f17><div class="container" data-v-2dee1f17><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-2dee1f17><span class="vpi-align-left menu-icon" data-v-2dee1f17></span><span class="menu-text" data-v-2dee1f17>Option</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-2dee1f17 data-v-706d3217><button data-v-706d3217>To top</button><!----></div></div></div><aside class="VPSidebar" data-v-46cada41 data-v-2a145dbd><div class="curtain" data-v-2a145dbd></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-2a145dbd><span class="visually-hidden" id="sidebar-aria-label" data-v-2a145dbd> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-45128375><section class="VPSidebarItem level-0 has-active" data-v-45128375 data-v-4cd12723><div class="item" role="button" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><h2 class="text" data-v-4cd12723>MARSHOAI</h2><!----></div><div class="items" data-v-4cd12723><!--[--><section class="VPSidebarItem level-1 collapsible collapsed is-link has-active" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/index" data-v-4cd12723><!--[--><h3 class="text" data-v-4cd12723>api</h3><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/azure" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>azure</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/azure_onebot" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>azure_onebot</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 collapsible collapsed" data-v-4cd12723 data-v-4cd12723><div class="item" role="button" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><h4 class="text" data-v-4cd12723>plugins</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/marshoai_basic/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>marshoai_basic</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/marshoai_basic/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>builtin_tools</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/chat" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>chat</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/file_io" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>file_io</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/liteyuki" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>liteyuki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/manager" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>manager</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/network" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>network</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/utils" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>utils</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/marshoai_bangumi/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>marshoai_bangumi</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/marshoai_bangumi/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_megakits/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>twisuki_megakits</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_megakits/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_megakits/mk_morse_code" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>mk_morse_code</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_megakits/mk_nya_code" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>mk_nya_code</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_petcat/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>twisuki_petcat</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_petcat/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_petcat/pc_cat" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>pc_cat</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_petcat/pc_info" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>pc_info</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_petcat/pc_shop" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>pc_shop</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_petcat/pc_token" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>pc_token</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-2 collapsible collapsed" data-v-4cd12723 data-v-4cd12723><div class="item" role="button" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><h4 class="text" data-v-4cd12723>plugins_test</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins_test/marshoai_basic/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>marshoai_basic</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins_test/marshoai_basic/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins_test/marshoai_memory/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>marshoai_memory</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins_test/marshoai_memory/command" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>command</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins_test/marshoai_memory/config" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins_test/marshoai_memory/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-3 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins_test/random_number_generator" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>random_number_generator</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins_test/snowykami_testplugin/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>snowykami_testplugin</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins_test/snowykami_testplugin/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-3 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugins_test/weather_demo" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>weather_demo</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2 collapsible collapsed" data-v-4cd12723 data-v-4cd12723><div class="item" role="button" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><h4 class="text" data-v-4cd12723>tools</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_bangumi/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>marshoai_bangumi</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_bangumi/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_basic/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>marshoai_basic</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_basic/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_megakits/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>marshoai_megakits</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_megakits/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_megakits/mk_common" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>mk_common</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_megakits/mk_info" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>mk_info</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_megakits/mk_morse_code" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>mk_morse_code</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_megakits/mk_nya_code" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>mk_nya_code</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_memory/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>marshoai_memory</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_memory/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_meogirl/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>marshoai_meogirl</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_meogirl/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_meogirl/mg_info" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>mg_info</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_meogirl/mg_introduce" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>mg_introduce</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_meogirl/mg_search" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>mg_search</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-2 collapsible collapsed" data-v-4cd12723 data-v-4cd12723><div class="item" role="button" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><h4 class="text" data-v-4cd12723>tools_wip</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools_wip/marshoai_memory/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>marshoai_memory</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/tools_wip/marshoai_memory/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/config" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/constants" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>constants</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/deal_latex" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>deal_latex</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/dev" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>dev</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/hooks" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/hunyuan" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>hunyuan</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/instances" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>instances</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/marsho" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>marsho</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/marsho_onebot" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>marsho_onebot</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/metadata" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>metadata</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/models" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>models</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/observer" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>observer</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/index" data-v-4cd12723><!--[--><h4 class="text" data-v-4cd12723>plugin</h4><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-3 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/register" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>register</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-4cd12723 data-v-4cd12723><div class="item" tabindex="0" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/func_call/index" data-v-4cd12723><!--[--><h5 class="text" data-v-4cd12723>func_call</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-4cd12723><span class="vpi-chevron-right caret-icon" data-v-4cd12723></span></div></div><div class="items" data-v-4cd12723><!--[--><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/func_call/caller" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>caller</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/func_call/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/func_call/models" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>models</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/func_call/params" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>params</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/func_call/utils" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>utils</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-3 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/load" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>load</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/models" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>models</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/typing" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>typing</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/plugin/utils" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>utils</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/util" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>util</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-4cd12723 data-v-4cd12723><div class="item" data-v-4cd12723><div class="indicator" data-v-4cd12723></div><a class="VPLink link link" href="/en/dev/api/util_hunyuan" data-v-4cd12723><!--[--><p class="text" data-v-4cd12723>util_hunyuan</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-46cada41 data-v-d4bdad33><div class="VPDoc has-sidebar has-aside" data-v-d4bdad33 data-v-03864d9f><!--[--><!--]--><div class="container" data-v-03864d9f><div class="aside" data-v-03864d9f><div class="aside-curtain" data-v-03864d9f></div><div class="aside-container" data-v-03864d9f><div class="aside-content" data-v-03864d9f><div class="VPDocAside" data-v-03864d9f data-v-b9132f9a><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-b9132f9a data-v-2d71a95a><div class="content" data-v-2d71a95a><div class="outline-marker" data-v-2d71a95a></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-2d71a95a>On this page</div><ul class="VPDocOutlineItem root" data-v-2d71a95a data-v-0332be60><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-b9132f9a></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-03864d9f><div class="content-container" data-v-03864d9f><!--[--><!--]--><main class="main" data-v-03864d9f><div style="position:relative;" class="vp-doc _en_dev_api_util" data-v-03864d9f><div><h1 id="module-nonebot-plugin-marshoai-util" tabindex="-1"><strong>Module</strong> <code>nonebot_plugin_marshoai.util</code> <a class="header-anchor" href="#module-nonebot-plugin-marshoai-util" aria-label="Permalink to &quot;**Module** `nonebot_plugin_marshoai.util`&quot;"></a></h1><h3 id="var-nickname-json" tabindex="-1">var <code>nickname_json</code> <a class="header-anchor" href="#var-nickname-json" aria-label="Permalink to &quot;var `nickname_json`&quot;"></a></h3><ul><li><p><strong>Description</strong>: 记录昵称</p></li><li><p><strong>Default</strong>: <code>None</code></p></li></ul><h3 id="var-praises-json" tabindex="-1">var <code>praises_json</code> <a class="header-anchor" href="#var-praises-json" aria-label="Permalink to &quot;var `praises_json`&quot;"></a></h3><ul><li><p><strong>Description</strong>: 记录夸赞名单</p></li><li><p><strong>Default</strong>: <code>None</code></p></li></ul><h3 id="var-loaded-target-list" tabindex="-1">var <code>loaded_target_list</code> <a class="header-anchor" href="#var-loaded-target-list" aria-label="Permalink to &quot;var `loaded_target_list`&quot;"></a></h3><ul><li><p><strong>Description</strong>: 记录已恢复备份的上下文的列表</p></li><li><p><strong>Default</strong>: <code>[]</code></p></li></ul><hr><h3 id="async-func-get-image-raw-and-type-url-str-timeout-int-10-optional-tuple-bytes-str" tabindex="-1"><em><strong>async func</strong></em> <code>get_image_raw_and_type(url: str, timeout: int = 10) -&gt; Optional[tuple[bytes, str]]</code> <a class="header-anchor" href="#async-func-get-image-raw-and-type-url-str-timeout-int-10-optional-tuple-bytes-str" aria-label="Permalink to &quot;***async func*** `get_image_raw_and_type(url: str, timeout: int = 10) -&gt; Optional[tuple[bytes, str]]`&quot;"></a></h3><p><strong>Description</strong>: 获取图片的二进制数据</p><p><strong>Arguments</strong>:</p><blockquote><ul><li>url: str 图片链接</li><li>timeout: int 超时时间 秒</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#L57" 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_raw_and_type</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;">) -&gt; Optional[tuple[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bytes</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>
<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>
<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;">_chromium_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>
<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;">&#39;Content-Type&#39;</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>
<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) -&gt; Optional[str]</code> <a class="header-anchor" href="#async-func-get-image-b64-url-str-timeout-int-10-optional-str" aria-label="Permalink to &quot;***async func*** `get_image_b64(url: str, timeout: int = 10) -&gt; Optional[str]`&quot;"></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#L84" 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;">) -&gt; Optional[</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:#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, timeout))):</span></span>
<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;">&#39;utf-8&#39;</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;"> &#39;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;">&#39;</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>
<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 &quot;***async func*** `make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list] = None)`&quot;"></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#L104" 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 &quot;***async func*** `make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list] = None)`&quot;"></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#L129" 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:#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 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 &quot;***func*** `get_praises()`&quot;"></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#L155" 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>
<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;">&#39;praises.json&#39;</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;"> praises_file.exists():</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;">(praises_file, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;w&#39;</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;">&#39;utf-8&#39;</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(_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;"> 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;">&#39;r&#39;</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;">&#39;utf-8&#39;</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>
<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 &quot;***async func*** `refresh_praises_json()`&quot;"></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#L170" 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>
<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;">&#39;praises.json&#39;</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;"> praises_file.exists():</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;">(praises_file, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;w&#39;</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;">&#39;utf-8&#39;</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(_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;">&#39;r&#39;</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;">&#39;utf-8&#39;</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>
<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" tabindex="-1"><em><strong>func</strong></em> <code>build_praises()</code> <a class="header-anchor" href="#func-build-praises" aria-label="Permalink to &quot;***func*** `build_praises()`&quot;"></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#L181" 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>
<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;">&#39;你喜欢以下几个人物,他们有各自的优点:&#39;</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;">&#39;like&#39;</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;">&quot;名字:</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;">&#39;name&#39;</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;">&#39;advantages&#39;</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;">&quot;</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:#032F62;--shiki-dark:#9ECBFF;"> &#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\n</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</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 &quot;***async func*** `save_context_to_json(name: str, context: Any, path: str)`&quot;"></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#L189" 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>
<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;">&#39;</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&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;w&#39;</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;">&#39;utf-8&#39;</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:#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) -&gt; list</code> <a class="header-anchor" href="#async-func-load-context-from-json-name-str-path-str-list" aria-label="Permalink to &quot;***async func*** `load_context_from_json(name: str, path: str) -&gt; list`&quot;"></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#L198" 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;">) -&gt; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">list</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<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;">&#39;</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&#39;</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;">&#39;r&#39;</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;">&#39;utf-8&#39;</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>
<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 &quot;***async func*** `get_nicknames()`&quot;"></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#L210" 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>
<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;">&#39;nickname.json&#39;</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;">&#39;r&#39;</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;">&#39;utf-8&#39;</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>
<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 &quot;***async func*** `set_nickname(user_id: str, name: str)`&quot;"></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#L224" 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>
<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;">&#39;nickname.json&#39;</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;"> filename.exists():</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;"> {}</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:#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;">&#39;r&#39;</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;">&#39;utf-8&#39;</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>
<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;"> &#39;&#39;</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;">&#39;w&#39;</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;">&#39;utf-8&#39;</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>
<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 &quot;***async func*** `refresh_nickname_json()`&quot;"></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#L240" 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>
<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>
<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;">&#39;nickname.json&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">), </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;r&#39;</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;">&#39;utf-8&#39;</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;"> logger.error(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;刷新 nickname_json 表错误:无法载入 nickname.json 文件&#39;</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 &quot;***func*** `get_prompt()`&quot;"></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#L253" 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>
<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:#032F62;--shiki-dark:#9ECBFF;"> &#39;&#39;</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;"> config.marshoai_additional_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_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>
<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;">&#39;%Y年%m月</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">%d</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">日 %H:%M:%S&#39;</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.to_lunar().date_hanzify(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</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;">&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">))</span></span>
<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>
<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) -&gt; str</code> <a class="header-anchor" href="#func-suggest-solution-errinfo-str-str" aria-label="Permalink to &quot;***func*** `suggest_solution(errinfo: str) -&gt; str`&quot;"></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#L277" 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;">) -&gt; </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;"> 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;">&#39;content_filter&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;消息已被内容过滤器过滤。请调整聊天内容后重试。&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;RateLimitReached&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;模型达到调用速率限制。请稍等一段时间或联系Bot管理员。&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;tokens_limit_reached&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;请求token达到上限。请重置上下文。&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;content_length_limit&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;请求体过大。请重置上下文。&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;unauthorized&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;访问token无效。请联系Bot管理员。&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;invalid type: parameter messages.content is of type array but should be of type string.&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;聊天请求体包含此模型不支持的数据类型。请重置上下文。&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;At most 1 image(s) may be provided in one request.&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;此模型只能在上下文中包含1张图片。如果此前的聊天已经发送过图片请重置上下文。&#39;</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;">&#39;</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;">&#39;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;&#39;</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) -&gt; list</code> <a class="header-anchor" href="#async-func-get-backup-context-target-id-str-target-private-bool-list" aria-label="Permalink to &quot;***async func*** `get_backup_context(target_id: str, target_private: bool) -&gt; list`&quot;"></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#L296" 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;">) -&gt; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">list</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<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;">&#39;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;">&#39;</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;">&#39;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;">&#39;</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;">&#39;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;">&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;contexts/backup&#39;</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;"> []</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 &quot;var `latex_convert`&quot;"></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 &quot;***async func*** `load_latex_convert()`&quot;"></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#L334" 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>
<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>
<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 &quot;***async func*** `get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]])`&quot;"></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#L337" 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>
<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>
<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) -&gt; UniMessage</code> <a class="header-anchor" href="#async-func-parse-richtext-msg-str-unimessage" aria-label="Permalink to &quot;***async func*** `parse_richtext(msg: str) -&gt; UniMessage`&quot;"></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#L346" 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;">) -&gt; UniMessage:</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:#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;">&#39;]&#39;</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;">&#39;(&#39;</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;"> &#39;.png&#39;</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;">&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</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;">&#39;$&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">).replace(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">(&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">).replace(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">).replace(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">[&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">).replace(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">]&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;&#39;</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;">&#39;image/png&#39;</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;">&#39;latex.png&#39;</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;"> &#39;(公式解析失败)&#39;</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;">&#39;image/png&#39;</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;">&#39;latex_error.png&#39;</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;"> &#39;(未知内容解析失败)&#39;</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>
<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></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>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"dev_api_azure.md\":\"By3DQZ1H\",\"dev_api_azure_onebot.md\":\"BSzQi5NB\",\"dev_api_config.md\":\"DVQSYsBc\",\"dev_api_constants.md\":\"CeyS-dgb\",\"dev_api_deal_latex.md\":\"CliIHVQx\",\"dev_api_dev.md\":\"CR8NfY8m\",\"dev_api_hooks.md\":\"DpJrlEUX\",\"dev_api_hunyuan.md\":\"DTtTdru3\",\"dev_api_index.md\":\"LG7oRavz\",\"dev_api_instances.md\":\"VkCkhorR\",\"dev_api_marsho.md\":\"DEHEMRnq\",\"dev_api_marsho_onebot.md\":\"BaELa_5s\",\"dev_api_metadata.md\":\"BvJb0wDC\",\"dev_api_models.md\":\"CzLGyN0e\",\"dev_api_observer.md\":\"CKxQ8rNr\",\"dev_api_plugin_func_call_caller.md\":\"CzrTsykV\",\"dev_api_plugin_func_call_index.md\":\"DSbV-DHP\",\"dev_api_plugin_func_call_models.md\":\"CYOWq9i6\",\"dev_api_plugin_func_call_params.md\":\"DIr0Wfuh\",\"dev_api_plugin_func_call_utils.md\":\"CBpuIEsL\",\"dev_api_plugin_index.md\":\"BpLPZBto\",\"dev_api_plugin_load.md\":\"Z1_AJpA-\",\"dev_api_plugin_models.md\":\"XO9ZgJTV\",\"dev_api_plugin_register.md\":\"wxtxwL1q\",\"dev_api_plugin_typing.md\":\"B_OdqvYr\",\"dev_api_plugin_utils.md\":\"CKZ8uSFc\",\"dev_api_plugins_builtin_tools_chat.md\":\"CX5fWmLQ\",\"dev_api_plugins_builtin_tools_file_io.md\":\"B4WB3kMa\",\"dev_api_plugins_builtin_tools_index.md\":\"CdVyaR56\",\"dev_api_plugins_builtin_tools_liteyuki.md\":\"C2jQUuMC\",\"dev_api_plugins_builtin_tools_manager.md\":\"CSx6-DqR\",\"dev_api_plugins_builtin_tools_network.md\":\"qwTduvJA\",\"dev_api_plugins_builtin_tools_utils.md\":\"BQ_zIszy\",\"dev_api_plugins_marshoai_bangumi_index.md\":\"DI0wDzaI\",\"dev_api_plugins_marshoai_basic_index.md\":\"CdMZUtoa\",\"dev_api_plugins_test_marshoai_basic_index.md\":\"ChCsmGGV\",\"dev_api_plugins_test_marshoai_memory_command.md\":\"CeJIbyf1\",\"dev_api_plugins_test_marshoai_memory_config.md\":\"CtBtnl-b\",\"dev_api_plugins_test_marshoai_memory_index.md\":\"wgRBaFEj\",\"dev_api_plugins_test_random_number_generator.md\":\"CP2ZOHnt\",\"dev_api_plugins_test_snowykami_testplugin_index.md\":\"DGUrAa-4\",\"dev_api_plugins_test_weather_demo.md\":\"BhjRtDMw\",\"dev_api_plugins_twisuki_megakits_index.md\":\"Dhj0Q_rd\",\"dev_api_plugins_twisuki_megakits_mk_morse_code.md\":\"BPtKSrvY\",\"dev_api_plugins_twisuki_megakits_mk_nya_code.md\":\"BDLuQWQj\",\"dev_api_plugins_twisuki_petcat_index.md\":\"Db-1fmpK\",\"dev_api_plugins_twisuki_petcat_pc_cat.md\":\"F2sC91-N\",\"dev_api_plugins_twisuki_petcat_pc_info.md\":\"CvN9sngp\",\"dev_api_plugins_twisuki_petcat_pc_shop.md\":\"DD4ahNPm\",\"dev_api_plugins_twisuki_petcat_pc_token.md\":\"DA_UlEtw\",\"dev_api_tools_marshoai_bangumi_index.md\":\"DBTSrMfh\",\"dev_api_tools_marshoai_basic_index.md\":\"DzBLEWLC\",\"dev_api_tools_marshoai_megakits_index.md\":\"REZMb3dg\",\"dev_api_tools_marshoai_megakits_mk_common.md\":\"7APNTo8M\",\"dev_api_tools_marshoai_megakits_mk_info.md\":\"ChkkoB5W\",\"dev_api_tools_marshoai_megakits_mk_morse_code.md\":\"0M_XvS3m\",\"dev_api_tools_marshoai_megakits_mk_nya_code.md\":\"c9sb8PmU\",\"dev_api_tools_marshoai_memory_index.md\":\"CIRx5tJY\",\"dev_api_tools_marshoai_meogirl_index.md\":\"XEkcu-t2\",\"dev_api_tools_marshoai_meogirl_mg_info.md\":\"DPN0C8WV\",\"dev_api_tools_marshoai_meogirl_mg_introduce.md\":\"BlzX94DI\",\"dev_api_tools_marshoai_meogirl_mg_search.md\":\"BBTMELq_\",\"dev_api_tools_wip_marshoai_memory_index.md\":\"Dm4TJCvU\",\"dev_api_util.md\":\"BPz0f3NG\",\"dev_api_util_hunyuan.md\":\"Dw50YpRa\",\"dev_extension.md\":\"sCH8l0Kd\",\"dev_index.md\":\"DmkkcOvS\",\"dev_project.md\":\"si_Q_Qol\",\"en_dev_api_azure.md\":\"Cto4HxOQ\",\"en_dev_api_azure_onebot.md\":\"Nh5j0O6E\",\"en_dev_api_config.md\":\"B9MbThdQ\",\"en_dev_api_constants.md\":\"0iXpq-Ec\",\"en_dev_api_deal_latex.md\":\"CoDpC8c1\",\"en_dev_api_dev.md\":\"ZX87ppE0\",\"en_dev_api_hooks.md\":\"BCTjt9JT\",\"en_dev_api_hunyuan.md\":\"CAln-sCp\",\"en_dev_api_index.md\":\"CaKH-82W\",\"en_dev_api_instances.md\":\"qxOeS8ME\",\"en_dev_api_marsho.md\":\"Ca8NCLt_\",\"en_dev_api_marsho_onebot.md\":\"Bp39oSfi\",\"en_dev_api_metadata.md\":\"BMq5AAe8\",\"en_dev_api_models.md\":\"BPby54j6\",\"en_dev_api_observer.md\":\"oTjjwmjn\",\"en_dev_api_plugin_func_call_caller.md\":\"Bye_Nxpk\",\"en_dev_api_plugin_func_call_index.md\":\"DWsorYJh\",\"en_dev_api_plugin_func_call_models.md\":\"B-qnd7cH\",\"en_dev_api_plugin_func_call_params.md\":\"u__hMe93\",\"en_dev_api_plugin_func_call_utils.md\":\"iU5-nBge\",\"en_dev_api_plugin_index.md\":\"BZIGSQUL\",\"en_dev_api_plugin_load.md\":\"XwjzFCnp\",\"en_dev_api_plugin_models.md\":\"KoVIfTB6\",\"en_dev_api_plugin_register.md\":\"Duq9hOxH\",\"en_dev_api_plugin_typing.md\":\"C2zfOXEp\",\"en_dev_api_plugin_utils.md\":\"e5Btmrql\",\"en_dev_api_plugins_builtin_tools_chat.md\":\"C23GjQBb\",\"en_dev_api_plugins_builtin_tools_file_io.md\":\"C08lWCZX\",\"en_dev_api_plugins_builtin_tools_index.md\":\"DbJ5EqSA\",\"en_dev_api_plugins_builtin_tools_liteyuki.md\":\"x_VmenLc\",\"en_dev_api_plugins_builtin_tools_manager.md\":\"u-0hfdOm\",\"en_dev_api_plugins_builtin_tools_network.md\":\"CnxMIDLE\",\"en_dev_api_plugins_builtin_tools_utils.md\":\"wCwWvzS9\",\"en_dev_api_plugins_marshoai_bangumi_index.md\":\"DBU2Zi62\",\"en_dev_api_plugins_marshoai_basic_index.md\":\"DyXm3jCh\",\"en_dev_api_plugins_test_marshoai_basic_index.md\":\"bDJDh-CJ\",\"en_dev_api_plugins_test_marshoai_memory_command.md\":\"u25QWY_i\",\"en_dev_api_plugins_test_marshoai_memory_config.md\":\"fO2hq1Zg\",\"en_dev_api_plugins_test_marshoai_memory_index.md\":\"C45XsXpP\",\"en_dev_api_plugins_test_random_number_generator.md\":\"BbS1YDsu\",\"en_dev_api_plugins_test_snowykami_testplugin_index.md\":\"QqX2hUew\",\"en_dev_api_plugins_test_weather_demo.md\":\"CkQsPcOc\",\"en_dev_api_plugins_twisuki_megakits_index.md\":\"DI9uZZaT\",\"en_dev_api_plugins_twisuki_megakits_mk_morse_code.md\":\"CR7E4O63\",\"en_dev_api_plugins_twisuki_megakits_mk_nya_code.md\":\"nvZAi5el\",\"en_dev_api_plugins_twisuki_petcat_index.md\":\"Df3A8uE4\",\"en_dev_api_plugins_twisuki_petcat_pc_cat.md\":\"CwByAWa2\",\"en_dev_api_plugins_twisuki_petcat_pc_info.md\":\"C3tuga99\",\"en_dev_api_plugins_twisuki_petcat_pc_shop.md\":\"CUZ6lawY\",\"en_dev_api_plugins_twisuki_petcat_pc_token.md\":\"B1O2CkQG\",\"en_dev_api_tools_marshoai_bangumi_index.md\":\"DWnmN-I6\",\"en_dev_api_tools_marshoai_basic_index.md\":\"D9JkVPMg\",\"en_dev_api_tools_marshoai_megakits_index.md\":\"CgWeHxOT\",\"en_dev_api_tools_marshoai_megakits_mk_common.md\":\"P8V5KFZ7\",\"en_dev_api_tools_marshoai_megakits_mk_info.md\":\"tcfMikuj\",\"en_dev_api_tools_marshoai_megakits_mk_morse_code.md\":\"xggXCxLJ\",\"en_dev_api_tools_marshoai_megakits_mk_nya_code.md\":\"G9HPWVtZ\",\"en_dev_api_tools_marshoai_memory_index.md\":\"BoTJbgVx\",\"en_dev_api_tools_marshoai_meogirl_index.md\":\"CAicnthU\",\"en_dev_api_tools_marshoai_meogirl_mg_info.md\":\"BFLggEu0\",\"en_dev_api_tools_marshoai_meogirl_mg_introduce.md\":\"lyFmddfe\",\"en_dev_api_tools_marshoai_meogirl_mg_search.md\":\"CuklbRju\",\"en_dev_api_tools_wip_marshoai_memory_index.md\":\"cAEFdFDP\",\"en_dev_api_util.md\":\"DZ2bLrc-\",\"en_dev_api_util_hunyuan.md\":\"Dn5jgbGF\",\"en_dev_index.md\":\"DJJ0NGhU\",\"en_index.md\":\"DAKoBz1C\",\"en_start_index.md\":\"BwdTMIWE\",\"en_start_install.md\":\"BCSbBsV8\",\"index.md\":\"DlqxtZr8\",\"ja_index.md\":\"CcT0fxo3\",\"start_index.md\":\"ByEtL58Q\",\"start_install-old.md\":\"F642ZtXe\",\"start_install.md\":\"fkcgPqqp\",\"start_use.md\":\"BiCxERjA\"}");function deserializeFunctions(r){return Array.isArray(r)?r.map(deserializeFunctions):typeof r=="object"&&r!==null?Object.keys(r).reduce((t,n)=>(t[n]=deserializeFunctions(r[n]),t),{}):typeof r=="string"&&r.startsWith("_vp-fn_")?new Function(`return ${r.slice(7)}`)():r};window.__VP_SITE_DATA__=deserializeFunctions(JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":{\"light\":\"/marsho-full.svg\",\"dark\":\"/marsho-full.svg\",\"alt\":\"Marsho Logo\"},\"sidebar\":{\"/dev/\":{\"base\":\"/dev/\",\"items\":[{\"text\":\"MARSHOAI\",\"items\":[{\"text\":\"项目开发\",\"link\":\"project\"},{\"text\":\"扩展开发\",\"link\":\"extension\"},{\"text\":\"api\",\"link\":\"api/index.md\",\"items\":[{\"text\":\"azure\",\"link\":\"api/azure\"},{\"text\":\"azure_onebot\",\"link\":\"api/azure_onebot\"},{\"text\":\"plugins\",\"items\":[{\"text\":\"marshoai_basic\",\"link\":\"api/plugins/marshoai_basic/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/plugins/marshoai_basic/\"}],\"collapsed\":true},{\"text\":\"builtin_tools\",\"link\":\"api/plugins/builtin_tools/index.md\",\"items\":[{\"text\":\"chat\",\"link\":\"api/plugins/builtin_tools/chat\"},{\"text\":\"file_io\",\"link\":\"api/plugins/builtin_tools/file_io\"},{\"text\":\"index\",\"link\":\"api/plugins/builtin_tools/\"},{\"text\":\"liteyuki\",\"link\":\"api/plugins/builtin_tools/liteyuki\"},{\"text\":\"manager\",\"link\":\"api/plugins/builtin_tools/manager\"},{\"text\":\"network\",\"link\":\"api/plugins/builtin_tools/network\"},{\"text\":\"utils\",\"link\":\"api/plugins/builtin_tools/utils\"}],\"collapsed\":true},{\"text\":\"marshoai_bangumi\",\"link\":\"api/plugins/marshoai_bangumi/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/plugins/marshoai_bangumi/\"}],\"collapsed\":true},{\"text\":\"twisuki_megakits\",\"link\":\"api/plugins/twisuki_megakits/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/plugins/twisuki_megakits/\"},{\"text\":\"mk_morse_code\",\"link\":\"api/plugins/twisuki_megakits/mk_morse_code\"},{\"text\":\"mk_nya_code\",\"link\":\"api/plugins/twisuki_megakits/mk_nya_code\"}],\"collapsed\":true},{\"text\":\"twisuki_petcat\",\"link\":\"api/plugins/twisuki_petcat/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/plugins/twisuki_petcat/\"},{\"text\":\"pc_cat\",\"link\":\"api/plugins/twisuki_petcat/pc_cat\"},{\"text\":\"pc_info\",\"link\":\"api/plugins/twisuki_petcat/pc_info\"},{\"text\":\"pc_shop\",\"link\":\"api/plugins/twisuki_petcat/pc_shop\"},{\"text\":\"pc_token\",\"link\":\"api/plugins/twisuki_petcat/pc_token\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"plugins_test\",\"items\":[{\"text\":\"marshoai_basic\",\"link\":\"api/plugins_test/marshoai_basic/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/plugins_test/marshoai_basic/\"}],\"collapsed\":true},{\"text\":\"marshoai_memory\",\"link\":\"api/plugins_test/marshoai_memory/index.md\",\"items\":[{\"text\":\"command\",\"link\":\"api/plugins_test/marshoai_memory/command\"},{\"text\":\"config\",\"link\":\"api/plugins_test/marshoai_memory/config\"},{\"text\":\"index\",\"link\":\"api/plugins_test/marshoai_memory/\"}],\"collapsed\":true},{\"text\":\"random_number_generator\",\"link\":\"api/plugins_test/random_number_generator\"},{\"text\":\"snowykami_testplugin\",\"link\":\"api/plugins_test/snowykami_testplugin/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/plugins_test/snowykami_testplugin/\"}],\"collapsed\":true},{\"text\":\"weather_demo\",\"link\":\"api/plugins_test/weather_demo\"}],\"collapsed\":true},{\"text\":\"tools\",\"items\":[{\"text\":\"marshoai_bangumi\",\"link\":\"api/tools/marshoai_bangumi/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/tools/marshoai_bangumi/\"}],\"collapsed\":true},{\"text\":\"marshoai_basic\",\"link\":\"api/tools/marshoai_basic/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/tools/marshoai_basic/\"}],\"collapsed\":true},{\"text\":\"marshoai_megakits\",\"link\":\"api/tools/marshoai_megakits/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/tools/marshoai_megakits/\"},{\"text\":\"mk_common\",\"link\":\"api/tools/marshoai_megakits/mk_common\"},{\"text\":\"mk_info\",\"link\":\"api/tools/marshoai_megakits/mk_info\"},{\"text\":\"mk_morse_code\",\"link\":\"api/tools/marshoai_megakits/mk_morse_code\"},{\"text\":\"mk_nya_code\",\"link\":\"api/tools/marshoai_megakits/mk_nya_code\"}],\"collapsed\":true},{\"text\":\"marshoai_memory\",\"link\":\"api/tools/marshoai_memory/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/tools/marshoai_memory/\"}],\"collapsed\":true},{\"text\":\"marshoai_meogirl\",\"link\":\"api/tools/marshoai_meogirl/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/tools/marshoai_meogirl/\"},{\"text\":\"mg_info\",\"link\":\"api/tools/marshoai_meogirl/mg_info\"},{\"text\":\"mg_introduce\",\"link\":\"api/tools/marshoai_meogirl/mg_introduce\"},{\"text\":\"mg_search\",\"link\":\"api/tools/marshoai_meogirl/mg_search\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"tools_wip\",\"items\":[{\"text\":\"marshoai_memory\",\"link\":\"api/tools_wip/marshoai_memory/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/tools_wip/marshoai_memory/\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"config\",\"link\":\"api/config\"},{\"text\":\"constants\",\"link\":\"api/constants\"},{\"text\":\"deal_latex\",\"link\":\"api/deal_latex\"},{\"text\":\"dev\",\"link\":\"api/dev\"},{\"text\":\"hooks\",\"link\":\"api/hooks\"},{\"text\":\"hunyuan\",\"link\":\"api/hunyuan\"},{\"text\":\"index\",\"link\":\"api/\"},{\"text\":\"instances\",\"link\":\"api/instances\"},{\"text\":\"marsho\",\"link\":\"api/marsho\"},{\"text\":\"marsho_onebot\",\"link\":\"api/marsho_onebot\"},{\"text\":\"metadata\",\"link\":\"api/metadata\"},{\"text\":\"models\",\"link\":\"api/models\"},{\"text\":\"observer\",\"link\":\"api/observer\"},{\"text\":\"plugin\",\"link\":\"api/plugin/index.md\",\"items\":[{\"text\":\"register\",\"link\":\"api/plugin/register\"},{\"text\":\"func_call\",\"link\":\"api/plugin/func_call/index.md\",\"items\":[{\"text\":\"caller\",\"link\":\"api/plugin/func_call/caller\"},{\"text\":\"index\",\"link\":\"api/plugin/func_call/\"},{\"text\":\"models\",\"link\":\"api/plugin/func_call/models\"},{\"text\":\"params\",\"link\":\"api/plugin/func_call/params\"},{\"text\":\"utils\",\"link\":\"api/plugin/func_call/utils\"}],\"collapsed\":true},{\"text\":\"index\",\"link\":\"api/plugin/\"},{\"text\":\"load\",\"link\":\"api/plugin/load\"},{\"text\":\"models\",\"link\":\"api/plugin/models\"},{\"text\":\"typing\",\"link\":\"api/plugin/typing\"},{\"text\":\"utils\",\"link\":\"api/plugin/utils\"}],\"collapsed\":true},{\"text\":\"util\",\"link\":\"api/util\"},{\"text\":\"util_hunyuan\",\"link\":\"api/util_hunyuan\"}],\"collapsed\":true}]}]},\"/start/\":{\"base\":\"/start/\",\"items\":[{\"text\":\"MARSHOAI\",\"items\":[{\"text\":\"安装\",\"link\":\"install-old\"},{\"text\":\"安装\",\"link\":\"install\"},{\"text\":\"使用\",\"link\":\"use\"}]}]},\"/en/dev/\":{\"base\":\"/en/dev/\",\"items\":[{\"text\":\"MARSHOAI\",\"items\":[{\"text\":\"api\",\"link\":\"api/index.md\",\"items\":[{\"text\":\"azure\",\"link\":\"api/azure\"},{\"text\":\"azure_onebot\",\"link\":\"api/azure_onebot\"},{\"text\":\"plugins\",\"items\":[{\"text\":\"marshoai_basic\",\"link\":\"api/plugins/marshoai_basic/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/plugins/marshoai_basic/\"}],\"collapsed\":true},{\"text\":\"builtin_tools\",\"link\":\"api/plugins/builtin_tools/index.md\",\"items\":[{\"text\":\"chat\",\"link\":\"api/plugins/builtin_tools/chat\"},{\"text\":\"file_io\",\"link\":\"api/plugins/builtin_tools/file_io\"},{\"text\":\"index\",\"link\":\"api/plugins/builtin_tools/\"},{\"text\":\"liteyuki\",\"link\":\"api/plugins/builtin_tools/liteyuki\"},{\"text\":\"manager\",\"link\":\"api/plugins/builtin_tools/manager\"},{\"text\":\"network\",\"link\":\"api/plugins/builtin_tools/network\"},{\"text\":\"utils\",\"link\":\"api/plugins/builtin_tools/utils\"}],\"collapsed\":true},{\"text\":\"marshoai_bangumi\",\"link\":\"api/plugins/marshoai_bangumi/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/plugins/marshoai_bangumi/\"}],\"collapsed\":true},{\"text\":\"twisuki_megakits\",\"link\":\"api/plugins/twisuki_megakits/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/plugins/twisuki_megakits/\"},{\"text\":\"mk_morse_code\",\"link\":\"api/plugins/twisuki_megakits/mk_morse_code\"},{\"text\":\"mk_nya_code\",\"link\":\"api/plugins/twisuki_megakits/mk_nya_code\"}],\"collapsed\":true},{\"text\":\"twisuki_petcat\",\"link\":\"api/plugins/twisuki_petcat/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/plugins/twisuki_petcat/\"},{\"text\":\"pc_cat\",\"link\":\"api/plugins/twisuki_petcat/pc_cat\"},{\"text\":\"pc_info\",\"link\":\"api/plugins/twisuki_petcat/pc_info\"},{\"text\":\"pc_shop\",\"link\":\"api/plugins/twisuki_petcat/pc_shop\"},{\"text\":\"pc_token\",\"link\":\"api/plugins/twisuki_petcat/pc_token\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"plugins_test\",\"items\":[{\"text\":\"marshoai_basic\",\"link\":\"api/plugins_test/marshoai_basic/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/plugins_test/marshoai_basic/\"}],\"collapsed\":true},{\"text\":\"marshoai_memory\",\"link\":\"api/plugins_test/marshoai_memory/index.md\",\"items\":[{\"text\":\"command\",\"link\":\"api/plugins_test/marshoai_memory/command\"},{\"text\":\"config\",\"link\":\"api/plugins_test/marshoai_memory/config\"},{\"text\":\"index\",\"link\":\"api/plugins_test/marshoai_memory/\"}],\"collapsed\":true},{\"text\":\"random_number_generator\",\"link\":\"api/plugins_test/random_number_generator\"},{\"text\":\"snowykami_testplugin\",\"link\":\"api/plugins_test/snowykami_testplugin/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/plugins_test/snowykami_testplugin/\"}],\"collapsed\":true},{\"text\":\"weather_demo\",\"link\":\"api/plugins_test/weather_demo\"}],\"collapsed\":true},{\"text\":\"tools\",\"items\":[{\"text\":\"marshoai_bangumi\",\"link\":\"api/tools/marshoai_bangumi/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/tools/marshoai_bangumi/\"}],\"collapsed\":true},{\"text\":\"marshoai_basic\",\"link\":\"api/tools/marshoai_basic/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/tools/marshoai_basic/\"}],\"collapsed\":true},{\"text\":\"marshoai_megakits\",\"link\":\"api/tools/marshoai_megakits/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/tools/marshoai_megakits/\"},{\"text\":\"mk_common\",\"link\":\"api/tools/marshoai_megakits/mk_common\"},{\"text\":\"mk_info\",\"link\":\"api/tools/marshoai_megakits/mk_info\"},{\"text\":\"mk_morse_code\",\"link\":\"api/tools/marshoai_megakits/mk_morse_code\"},{\"text\":\"mk_nya_code\",\"link\":\"api/tools/marshoai_megakits/mk_nya_code\"}],\"collapsed\":true},{\"text\":\"marshoai_memory\",\"link\":\"api/tools/marshoai_memory/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/tools/marshoai_memory/\"}],\"collapsed\":true},{\"text\":\"marshoai_meogirl\",\"link\":\"api/tools/marshoai_meogirl/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/tools/marshoai_meogirl/\"},{\"text\":\"mg_info\",\"link\":\"api/tools/marshoai_meogirl/mg_info\"},{\"text\":\"mg_introduce\",\"link\":\"api/tools/marshoai_meogirl/mg_introduce\"},{\"text\":\"mg_search\",\"link\":\"api/tools/marshoai_meogirl/mg_search\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"tools_wip\",\"items\":[{\"text\":\"marshoai_memory\",\"link\":\"api/tools_wip/marshoai_memory/index.md\",\"items\":[{\"text\":\"index\",\"link\":\"api/tools_wip/marshoai_memory/\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"config\",\"link\":\"api/config\"},{\"text\":\"constants\",\"link\":\"api/constants\"},{\"text\":\"deal_latex\",\"link\":\"api/deal_latex\"},{\"text\":\"dev\",\"link\":\"api/dev\"},{\"text\":\"hooks\",\"link\":\"api/hooks\"},{\"text\":\"hunyuan\",\"link\":\"api/hunyuan\"},{\"text\":\"index\",\"link\":\"api/\"},{\"text\":\"instances\",\"link\":\"api/instances\"},{\"text\":\"marsho\",\"link\":\"api/marsho\"},{\"text\":\"marsho_onebot\",\"link\":\"api/marsho_onebot\"},{\"text\":\"metadata\",\"link\":\"api/metadata\"},{\"text\":\"models\",\"link\":\"api/models\"},{\"text\":\"observer\",\"link\":\"api/observer\"},{\"text\":\"plugin\",\"link\":\"api/plugin/index.md\",\"items\":[{\"text\":\"register\",\"link\":\"api/plugin/register\"},{\"text\":\"func_call\",\"link\":\"api/plugin/func_call/index.md\",\"items\":[{\"text\":\"caller\",\"link\":\"api/plugin/func_call/caller\"},{\"text\":\"index\",\"link\":\"api/plugin/func_call/\"},{\"text\":\"models\",\"link\":\"api/plugin/func_call/models\"},{\"text\":\"params\",\"link\":\"api/plugin/func_call/params\"},{\"text\":\"utils\",\"link\":\"api/plugin/func_call/utils\"}],\"collapsed\":true},{\"text\":\"index\",\"link\":\"api/plugin/\"},{\"text\":\"load\",\"link\":\"api/plugin/load\"},{\"text\":\"models\",\"link\":\"api/plugin/models\"},{\"text\":\"typing\",\"link\":\"api/plugin/typing\"},{\"text\":\"utils\",\"link\":\"api/plugin/utils\"}],\"collapsed\":true},{\"text\":\"util\",\"link\":\"api/util\"},{\"text\":\"util_hunyuan\",\"link\":\"api/util_hunyuan\"}],\"collapsed\":true}]}]},\"/en/start/\":{\"base\":\"/en/start/\",\"items\":[{\"text\":\"MARSHOAI\",\"items\":[{\"text\":\"install\",\"link\":\"install\"}]}]}},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/LiteyukiStudio/nonebot-plugin-marshoai\"},{\"icon\":{\"svg\":\"<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.359266 41.389666-9.359266 53.02219 0 96.00928 42.98709 96.00928 96.00928 0 14.827372-3.358686 28.856031-9.359266 41.389666l127.97824 127.97824c12.533635-6.00058 26.562294-9.359266 41.389666-9.359266 53.02219 0 96.00928 42.98709 96.00928 96.00928s-42.98709 96.00928-96.00928 96.00928-96.00928-42.98709-96.00928-96.00928c0-14.827372 3.358686-28.856031 9.359266-41.389666l-127.97824-127.97824c-3.051489 1.454065-6.184898 2.744293-9.379746 3.870681l0 266.97461c37.273227 13.188988 63.99936 48.721433 63.99936 90.520695 0 53.02219-42.98709 96.00928-96.00928 96.00928s-96.00928-42.98709-96.00928-96.00928c0-41.799262 26.726133-77.331707 63.99936-90.520695l0-266.97461c-37.273227-13.188988-63.99936-48.721433-63.99936-90.520695 0-14.827372 3.358686-28.856031 9.359266-41.389666l-78.171378-78.171378-295.892081 295.871601c-25.743103 25.784062-25.743103 67.542365 0 93.285467l447.114889 447.073929c25.743103 25.743103 67.480925 25.743103 93.264987 0l445.00547-445.00547c25.763582-25.763582 25.763582-67.542365 0-93.285467z\\\" fill=\\\"#a2d8f4\\\" p-id=\\\"5068\\\"></path></svg>\"},\"link\":\"https://git.liteyuki.icu/LiteyukiStudio/nonebot-plugin-marshoai\"}]},\"locales\":{\"root\":{\"label\":\"简体中文\",\"lang\":\"zh-Hans\",\"title\":\"小棉智能\",\"description\":\"可爱,智能且易扩展\",\"themeConfig\":{\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"nav\":[{\"text\":\"家\",\"link\":\"/\"},{\"text\":\"使用\",\"link\":\"/start/use\"},{\"text\":\"开发\",\"link\":\"/dev/extension\"}],\"editLink\":{\"pattern\":\"_vp-fn_({ filePath }) => {\\n if (!filePath) {\\n throw new Error(\\\"filePath is undefined\\\");\\n }\\n const regex = /^(dev\\\\/api|[^\\\\/]+\\\\/dev\\\\/api)/;\\n if (regex.test(filePath)) {\\n filePath = filePath.replace(regex, \\\"\\\").replace(\\\"index.md\\\", \\\"__init__.py\\\").replace(\\\".md\\\", \\\".py\\\");\\n const fileName = filePath.split(\\\"/\\\").pop();\\n const parentFolder = filePath.split(\\\"/\\\").slice(-2, -1)[0];\\n if (fileName && parentFolder && fileName.split(\\\".\\\")[0] === parentFolder) {\\n filePath = filePath.split(\\\"/\\\").slice(0, -1).join(\\\"/\\\") + \\\"/__init__.py\\\";\\n }\\n return `https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/${filePath}`;\\n } else {\\n return `https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/docs/${filePath}`;\\n }\\n }\",\"text\":\"编辑此页面\"},\"langMenuLabel\":\"语言\",\"returnToTopLabel\":\"返回顶部\",\"sidebarMenuLabel\":\"菜单\",\"darkModeSwitchLabel\":\"主题\",\"lightModeSwitchTitle\":\"轻色模式\",\"darkModeSwitchTitle\":\"深色模式\",\"footer\":{\"message\":\"文档完善中,欢迎提出建议或帮助我们完善。\",\"copyright\":\"© 2024 <a href=\\\"https://liteyuki.icu\\\" target=\\\"_blank\\\">Liteyuki Studio</a>\"}}},\"en\":{\"label\":\"English\",\"lang\":\"en-US\",\"title\":\"Marsho AI\",\"description\":\"Kawaii, Intelligent and Easy to Extend\",\"themeConfig\":{\"docFooter\":{\"prev\":\"Prev\",\"next\":\"Next\"},\"nav\":[{\"text\":\"Home\",\"link\":\"/en\"},{\"text\":\"Usage\",\"link\":\"/en/start/install\"},{\"text\":\"Develop\",\"link\":\"/en/dev/extension\"}],\"editLink\":{\"pattern\":\"_vp-fn_({ filePath }) => {\\n if (!filePath) {\\n throw new Error(\\\"filePath is undefined\\\");\\n }\\n const regex = /^(dev\\\\/api|[^\\\\/]+\\\\/dev\\\\/api)/;\\n if (regex.test(filePath)) {\\n filePath = filePath.replace(regex, \\\"\\\").replace(\\\"index.md\\\", \\\"__init__.py\\\").replace(\\\".md\\\", \\\".py\\\");\\n const fileName = filePath.split(\\\"/\\\").pop();\\n const parentFolder = filePath.split(\\\"/\\\").slice(-2, -1)[0];\\n if (fileName && parentFolder && fileName.split(\\\".\\\")[0] === parentFolder) {\\n filePath = filePath.split(\\\"/\\\").slice(0, -1).join(\\\"/\\\") + \\\"/__init__.py\\\";\\n }\\n return `https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/${filePath}`;\\n } else {\\n return `https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/docs/${filePath}`;\\n }\\n }\",\"text\":\"Edit this page\"},\"langMenuLabel\":\"Language\",\"returnToTopLabel\":\"To top\",\"sidebarMenuLabel\":\"Option\",\"darkModeSwitchLabel\":\"Theme\",\"lightModeSwitchTitle\":\"Light\",\"darkModeSwitchTitle\":\"Dark\",\"footer\":{\"message\":\"The document is being improved. Suggestions are welcome.\",\"copyright\":\"© 2024 <a href=\\\"https://liteyuki.icu\\\" target=\\\"_blank\\\">Liteyuki Studio</a>\"}}},\"ja\":{\"label\":\"日本語\",\"lang\":\"ja-JP\",\"title\":\"Marsho AI\",\"description\":\"かわいくて、賢くて、拡張しやすい\",\"themeConfig\":{\"docFooter\":{\"prev\":\"前へ\",\"next\":\"次へ\"},\"nav\":[{\"text\":\"ホーム\",\"link\":\"/ja\"},{\"text\":\"使用方法\",\"link\":\"/ja/start/install\"},{\"text\":\"開発\",\"link\":\"/ja/dev/extension\"}],\"editLink\":{\"pattern\":\"_vp-fn_({ filePath }) => {\\n if (!filePath) {\\n throw new Error(\\\"filePath is undefined\\\");\\n }\\n const regex = /^(dev\\\\/api|[^\\\\/]+\\\\/dev\\\\/api)/;\\n if (regex.test(filePath)) {\\n filePath = filePath.replace(regex, \\\"\\\").replace(\\\"index.md\\\", \\\"__init__.py\\\").replace(\\\".md\\\", \\\".py\\\");\\n const fileName = filePath.split(\\\"/\\\").pop();\\n const parentFolder = filePath.split(\\\"/\\\").slice(-2, -1)[0];\\n if (fileName && parentFolder && fileName.split(\\\".\\\")[0] === parentFolder) {\\n filePath = filePath.split(\\\"/\\\").slice(0, -1).join(\\\"/\\\") + \\\"/__init__.py\\\";\\n }\\n return `https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/${filePath}`;\\n } else {\\n return `https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/docs/${filePath}`;\\n }\\n }\",\"text\":\"このページを編集\"},\"langMenuLabel\":\"言語\",\"returnToTopLabel\":\"トップへ戻る\",\"sidebarMenuLabel\":\"オプション\",\"darkModeSwitchLabel\":\"テーマ\",\"lightModeSwitchTitle\":\"ライト\",\"darkModeSwitchTitle\":\"ダーク\",\"footer\":{\"message\":\"ドキュメントは改善中です。ご意見をお待ちしております。\",\"copyright\":\"© 2024 <a href=\\\"https://liteyuki.icu\\\" target=\\\"_blank\\\">Liteyuki Studio</a>\"}}}},\"scrollOffset\":134,\"cleanUrls\":true}"));</script>
</body>
</html>