mirror of
https://github.com/LiteyukiStudio/nonebot-plugin-marshoai.git
synced 2025-02-07 18:36:09 +08:00
221 lines
172 KiB
HTML
221 lines
172 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-US" dir="ltr">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>marsho | 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.DEVd50K1.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.0_0tl2Go.js">
|
||
<link rel="modulepreload" href="/assets/chunks/framework.AELpvxz7.js">
|
||
<link rel="modulepreload" href="/assets/en_dev_api_marsho.md.DsXdR6yD.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/marsho" 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/marsho" 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/marsho" 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/marsho" 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_marsho" data-v-03864d9f><div><h1 id="module-nonebot-plugin-marshoai-marsho" tabindex="-1"><strong>Module</strong> <code>nonebot_plugin_marshoai.marsho</code> <a class="header-anchor" href="#module-nonebot-plugin-marshoai-marsho" aria-label="Permalink to "**Module** `nonebot_plugin_marshoai.marsho`""></a></h1><hr><h3 id="async-func-at-enable" tabindex="-1"><em><strong>async func</strong></em> <code>at_enable()</code> <a class="header-anchor" href="#async-func-at-enable" aria-label="Permalink to "***async func*** `at_enable()`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L33" 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;"> at_enable</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;"> config.marshoai_at</span></span></code></pre></div></details><hr><p><code>@add_usermsg_cmd.handle()</code></p><h3 id="async-func-add-usermsg-target-msgtarget-arg-message-commandarg" tabindex="-1"><em><strong>async func</strong></em> <code>add_usermsg(target: MsgTarget, arg: Message = CommandArg())</code> <a class="header-anchor" href="#async-func-add-usermsg-target-msgtarget-arg-message-commandarg" aria-label="Permalink to "***async func*** `add_usermsg(target: MsgTarget, arg: Message = CommandArg())`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L93" 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;">@add_usermsg_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> add_usermsg</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(target: MsgTarget, arg: Message</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">CommandArg()):</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><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;"> arg.extract_plain_text()):</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.append(UserMessage(</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;">msg).as_dict(), target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> add_usermsg_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'已添加用户消息'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><p><code>@add_assistantmsg_cmd.handle()</code></p><h3 id="async-func-add-assistantmsg-target-msgtarget-arg-message-commandarg" tabindex="-1"><em><strong>async func</strong></em> <code>add_assistantmsg(target: MsgTarget, arg: Message = CommandArg())</code> <a class="header-anchor" href="#async-func-add-assistantmsg-target-msgtarget-arg-message-commandarg" aria-label="Permalink to "***async func*** `add_assistantmsg(target: MsgTarget, arg: Message = CommandArg())`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L100" 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;">@add_assistantmsg_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> add_assistantmsg</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(target: MsgTarget, arg: Message</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">CommandArg()):</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><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;"> arg.extract_plain_text()):</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.append(AssistantMessage(</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;">msg).as_dict(), target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> add_assistantmsg_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'已添加助手消息'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><p><code>@praises_cmd.handle()</code></p><h3 id="async-func-praises" tabindex="-1"><em><strong>async func</strong></em> <code>praises()</code> <a class="header-anchor" href="#async-func-praises" aria-label="Permalink to "***async func*** `praises()`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L109" 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;">@praises_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> praises</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;"> praises_cmd.finish(build_praises())</span></span></code></pre></div></details><hr><p><code>@contexts_cmd.handle()</code></p><h3 id="async-func-contexts-target-msgtarget" tabindex="-1"><em><strong>async func</strong></em> <code>contexts(target: MsgTarget)</code> <a class="header-anchor" href="#async-func-contexts-target-msgtarget" aria-label="Permalink to "***async func*** `contexts(target: MsgTarget)`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L115" 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;">@contexts_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> contexts</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(target: MsgTarget):</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backup_context </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_backup_context(target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backup_context:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.set_context(backup_context, target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> contexts_cmd.finish(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(context.build(target.id, target.private)))</span></span></code></pre></div></details><hr><p><code>@save_context_cmd.handle()</code></p><h3 id="async-func-save-context-target-msgtarget-arg-message-commandarg" tabindex="-1"><em><strong>async func</strong></em> <code>save_context(target: MsgTarget, arg: Message = CommandArg())</code> <a class="header-anchor" href="#async-func-save-context-target-msgtarget-arg-message-commandarg" aria-label="Permalink to "***async func*** `save_context(target: MsgTarget, arg: Message = CommandArg())`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L123" 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;">@save_context_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> save_context</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(target: MsgTarget, arg: Message</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">CommandArg()):</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> contexts_data </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.build(target.id, target.private)</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;"> context:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> save_context_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'暂无上下文可以保存'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (msg </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> arg.extract_plain_text()):</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> save_context_to_json(msg, contexts_data, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'contexts'</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;"> save_context_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'已保存上下文'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><p><code>@load_context_cmd.handle()</code></p><h3 id="async-func-load-context-target-msgtarget-arg-message-commandarg" tabindex="-1"><em><strong>async func</strong></em> <code>load_context(target: MsgTarget, arg: Message = CommandArg())</code> <a class="header-anchor" href="#async-func-load-context-target-msgtarget-arg-message-commandarg" aria-label="Permalink to "***async func*** `load_context(target: MsgTarget, arg: Message = CommandArg())`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L133" 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;">@load_context_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> load_context</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(target: MsgTarget, arg: Message</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">CommandArg()):</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><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;"> arg.extract_plain_text()):</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> get_backup_context(target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.set_context(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> load_context_from_json(msg, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'contexts'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">), target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> load_context_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'已加载并覆盖上下文'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><p><code>@resetmem_cmd.handle()</code></p><h3 id="async-func-resetmem-target-msgtarget" tabindex="-1"><em><strong>async func</strong></em> <code>resetmem(target: MsgTarget)</code> <a class="header-anchor" href="#async-func-resetmem-target-msgtarget" aria-label="Permalink to "***async func*** `resetmem(target: MsgTarget)`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L145" 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;">@resetmem_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> resetmem</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(target: MsgTarget):</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [target.id, target.private] </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;"> target_list:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> target_list.append([target.id, target.private])</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backup_context </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_backup_context(target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backup_context:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.set_context(backup_context, target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.reset(target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> resetmem_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'上下文已重置'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><p><code>@changemodel_cmd.handle()</code></p><h3 id="async-func-changemodel-arg-message-commandarg" tabindex="-1"><em><strong>async func</strong></em> <code>changemodel(arg: Message = CommandArg())</code> <a class="header-anchor" href="#async-func-changemodel-arg-message-commandarg" aria-label="Permalink to "***async func*** `changemodel(arg: Message = CommandArg())`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L156" 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;">@changemodel_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> changemodel</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(arg: Message</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">CommandArg()):</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> global</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> model_name</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (model </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> arg.extract_plain_text()):</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> model_name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> model</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> changemodel_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'已切换'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><p><code>@nickname_cmd.handle()</code></p><h3 id="async-func-nickname-event-event-name-none" tabindex="-1"><em><strong>async func</strong></em> <code>nickname(event: Event, name = None)</code> <a class="header-anchor" href="#async-func-nickname-event-event-name-none" aria-label="Permalink to "***async func*** `nickname(event: Event, name = None)`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L164" 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;">@nickname_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> nickname</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(event: Event, name</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:#24292E;--shiki-dark:#E1E4E8;"> nicknames </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_nicknames()</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> user_id </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> event.get_user_id()</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;"> name:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> user_id </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;"> nicknames:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nickname_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'你未设置昵称'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nickname_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'你的昵称为:'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(nicknames[user_id]))</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;"> 'reset'</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;"> set_nickname(user_id, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">''</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nickname_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'已重置昵称'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</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;"> len</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(name) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config.marshoai_nickname_limit:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nickname_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'昵称超出长度限制:'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(config.marshoai_nickname_limit))</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> set_nickname(user_id, name)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nickname_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'已设置昵称为:'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name)</span></span></code></pre></div></details><hr><p><code>@refresh_data_cmd.handle()</code></p><h3 id="async-func-refresh-data" tabindex="-1"><em><strong>async func</strong></em> <code>refresh_data()</code> <a class="header-anchor" href="#async-func-refresh-data" aria-label="Permalink to "***async func*** `refresh_data()`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L184" 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;">@refresh_data_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> refresh_data</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;"> refresh_nickname_json()</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> refresh_praises_json()</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> refresh_data_cmd.finish(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'已刷新数据'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><p><code>@marsho_help_cmd.handle()</code></p><h3 id="async-func-marsho-help" tabindex="-1"><em><strong>async func</strong></em> <code>marsho_help()</code> <a class="header-anchor" href="#async-func-marsho-help" aria-label="Permalink to "***async func*** `marsho_help()`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L191" 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;">@marsho_help_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> marsho_help</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;"> marsho_help_cmd.finish(metadata.usage)</span></span></code></pre></div></details><hr><p><code>@marsho_status_cmd.handle()</code></p><h3 id="async-func-marsho-status-bot-bot" tabindex="-1"><em><strong>async func</strong></em> <code>marsho_status(bot: Bot)</code> <a class="header-anchor" href="#async-func-marsho-status-bot-bot" aria-label="Permalink to "***async func*** `marsho_status(bot: Bot)`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L196" 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;">@marsho_status_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> marsho_status</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(bot: Bot):</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> marsho_status_cmd.finish(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'当前适配器:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">bot.adapter.get_name()</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}\n</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;">model_name</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}\n</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">当前支持图片的模型:</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;">SUPPORT_IMAGE_MODELS</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config.marshoai_additional_image_models)</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><p><code>@marsho_at.handle()</code><code>@marsho_cmd.handle()</code></p><h3 id="async-func-marsho-target-msgtarget-event-event-bot-bot-state-t-state-matcher-matcher-text-optional-unimsg-none" tabindex="-1"><em><strong>async func</strong></em> <code>marsho(target: MsgTarget, event: Event, bot: Bot, state: T_State, matcher: Matcher, text: Optional[UniMsg] = None)</code> <a class="header-anchor" href="#async-func-marsho-target-msgtarget-event-event-bot-bot-state-t-state-matcher-matcher-text-optional-unimsg-none" aria-label="Permalink to "***async func*** `marsho(target: MsgTarget, event: Event, bot: Bot, state: T_State, matcher: Matcher, text: Optional[UniMsg] = None)`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L208" 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;">@marsho_at.handle</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">()</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">@marsho_cmd.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> marsho</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(target: MsgTarget, event: Event, bot: Bot, state: T_State, matcher: Matcher, text: Optional[UniMsg]</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;"> global</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> 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;"> event.get_message().extract_plain_text() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> text </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> event.get_message().extract_plain_text() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config.marshoai_default_name):</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> text </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> event.get_message()</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;"> text:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> marsho_cmd.finish(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">INTRODUCTION</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:#24292E;--shiki-dark:#E1E4E8;"> user_id </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> event.get_user_id()</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nicknames </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_nicknames()</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> user_nickname </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nicknames.get(user_id, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">''</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> user_nickname </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ''</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nickname_prompt </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\n</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">*此消息的说话者id为:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">user_id</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;">user_nickname</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">*'</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nickname_prompt </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ''</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config.marshoai_enforce_nickname:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> UniMessage(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'※你未设置自己的昵称。你**必须**使用「nickname [昵称]」命令设置昵称后才能进行对话。'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">).send()</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</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_nickname_tip:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> UniMessage(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'※你未设置自己的昵称。推荐使用「nickname [昵称]」命令设置昵称来获得个性化(可能)回答。'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">).send()</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> is_support_image_model </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> model_name.lower() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> SUPPORT_IMAGE_MODELS</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config.marshoai_additional_image_models</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> is_reasoning_model </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> model_name.lower() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> NO_SYSPROMPT_MODELS</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> usermsg </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;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> is_support_image_model </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">else</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ''</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> i </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> text:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> i.type </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'text'</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;"> is_support_image_model:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> usermsg </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [TextContentItem(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">text</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">i.data[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'text'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nickname_prompt).as_dict()]</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;"> usermsg </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(i.data[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'text'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nickname_prompt)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> elif</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> i.type </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'image'</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;"> is_support_image_model:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> usermsg.append(ImageContentItem(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">image_url</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">ImageUrl(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">url</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</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_b64(i.data[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'url'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">])))).as_dict())</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> elif</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config.marshoai_enable_support_image_tip:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> UniMessage(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'*此模型不支持图片处理或管理员未启用此模型的图片支持。图片将被忽略。'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">).send()</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backup_context </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_backup_context(target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> backup_context:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.set_context(backup_context, target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> logger.info(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'已恢复会话 </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">target.id</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 的上下文备份~'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context_msg </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.build(target.id, target.private)</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;"> is_reasoning_model:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context_msg </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [get_prompt()] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context_msg</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tools_lists </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tools.tools_list </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> list</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">map</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">lambda</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> v: v.data(), get_function_calls().values()))</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> logger.info(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'正在获取回答,模型:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">model_name</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<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;"> make_chat_openai(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">client</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">client, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">model_name</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;">msg</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">context_msg </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [UserMessage(</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;">usermsg).as_dict()], </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_lists </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tools_lists </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">else</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;"> choice </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.choices[</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;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice.message.tool_calls </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> None</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config.marshoai_fix_toolcalls:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice.finish_reason </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CompletionsFinishReason.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">TOOL_CALLS</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> logger.info(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'完成原因:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">choice.finish_reason</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice.finish_reason </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CompletionsFinishReason.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">STOPPED</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.append(UserMessage(</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;">usermsg).as_dict(), target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice_msg_content, choice_msg_thinking, choice_msg_after </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extract_content_and_think(choice.message)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice_msg_thinking </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">and</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config.marshoai_send_thinking:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> UniMessage(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'思维链:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\n</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice_msg_thinking).send()</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.append(choice_msg_after.to_dict(), target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [target.id, target.private] </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;"> target_list:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> target_list.append([target.id, target.private])</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_richtext_parse:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</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;"> parse_richtext(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(choice_msg_content))).send(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">reply_to</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;"> else</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;"> UniMessage(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(choice_msg_content)).send(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">reply_to</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;"> elif</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice.finish_reason </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CompletionsFinishReason.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">CONTENT_FILTERED</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;"> UniMessage(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'*已被内容过滤器过滤。请调整聊天内容后重试。'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">).send(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">reply_to</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;"> return</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> elif</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice.finish_reason </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CompletionsFinishReason.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">TOOL_CALLS</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tool_msg </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;"> while</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice.message.tool_calls </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:#24292E;--shiki-dark:#E1E4E8;"> tool_calls </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice.message.tool_calls</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;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tool_calls[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'function'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">].startswith(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'$'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">):</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice.message.tool_calls[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'type'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'builtin_function'</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> except</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> pass</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tool_msg.append(choice.message)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tool_call </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tool_calls:</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:#24292E;--shiki-dark:#E1E4E8;"> function_args </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> json.loads(tool_call.function.arguments)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> except</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> json.JSONDecodeError:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> function_args </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> json.loads(tool_call.function.arguments.replace(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"'"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'"'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">))</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'placeholder'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> function_args:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> del</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> function_args[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'placeholder'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> logger.info(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"调用函数 </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">tool_call.function.name.replace(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'-'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'.'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}\n</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">参数:"</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> '</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\n</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.join([</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">k</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;">v</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k, v </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> function_args.items()]))</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> UniMessage(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"调用函数 </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">tool_call.function.name.replace(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'-'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'.'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}\n</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">参数:"</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> '</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\n</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.join([</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">k</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;">v</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> k, v </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> function_args.items()])).send()</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tools.has_function(tool_call.function.name):</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> logger.debug(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'调用工具函数 </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">tool_call.function.name</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> func_return </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;"> tools.call(tool_call.function.name, function_args)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> elif</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (caller </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> get_function_calls().get(tool_call.function.name)):</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> logger.debug(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'调用插件函数 </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">caller.full_name</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> func_return </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;"> caller.with_ctx(SessionContext(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">bot</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">bot, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">event</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">event, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">state</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">state, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">matcher</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">matcher)).call(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">**</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">function_args)</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;"> logger.error(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"未找到函数 </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">tool_call.function.name.replace(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'-'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'.'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> func_return </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"未找到函数 </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">tool_call.function.name.replace(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'-'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'.'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tool_msg.append(ToolMessage(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">tool_call_id</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">tool_call.id, </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;">func_return).as_dict())</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> request_msg </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context_msg </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [UserMessage(</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;">usermsg).as_dict()] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tool_msg</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;"> make_chat_openai(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">client</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">client, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">model_name</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;">msg</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">request_msg, </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_lists </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tools_lists </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">else</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;"> choice </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.choices[</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;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice.message.tool_calls </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:#24292E;--shiki-dark:#E1E4E8;"> choice.finish_reason </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CompletionsFinishReason.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">TOOL_CALLS</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice.finish_reason </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CompletionsFinishReason.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">STOPPED</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.append(UserMessage(</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;">usermsg).as_dict(), target.id, target.private)</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice_msg_dict </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice.message.to_dict()</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'reasoning_content'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice_msg_dict:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> del</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice_msg_dict[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'reasoning_content'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> context.append(choice_msg_dict, target.id, target.private)</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_richtext_parse:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</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;"> parse_richtext(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(choice.message.content))).send(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">reply_to</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;"> else</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;"> UniMessage(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(choice.message.content)).send(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">reply_to</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;"> else</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;"> marsho_cmd.finish(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'意外的完成原因:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">choice.finish_reason</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<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;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> marsho_cmd.finish(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'意外的完成原因:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">choice.finish_reason</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<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:#D73A49;--shiki-dark:#F97583;"> as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> e:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> UniMessage(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(e) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> suggest_solution(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(e))).send()</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> traceback.print_exc()</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span></span></code></pre></div></details><hr><p><code>@poke_notify.handle()</code></p><h3 id="async-func-poke-event-event" tabindex="-1"><em><strong>async func</strong></em> <code>poke(event: Event)</code> <a class="header-anchor" href="#async-func-poke-event-event" aria-label="Permalink to "***async func*** `poke(event: Event)`""></a></h3><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/marsho.py#L445" 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;">@poke_notify.handle</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;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> poke</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(event: Event):</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> user_id </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> event.get_user_id()</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nicknames </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_nicknames()</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> user_nickname </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> nicknames.get(user_id, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">''</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> config.marshoai_poke_suffix </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ''</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> logger.info(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'收到戳一戳,用户昵称:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">user_nickname</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">,用户ID:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">user_id</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<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;"> make_chat_openai(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">client</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">client, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">model_name</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;">msg</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[get_prompt() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> model_name.lower() </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:#005CC5;--shiki-dark:#79B8FF;"> NO_SYSPROMPT_MODELS</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> None</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, UserMessage(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">content</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'*</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">user_nickname</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">config.marshoai_poke_suffix</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)])</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.choices[</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;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> choice.finish_reason </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> CompletionsFinishReason.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">STOPPED</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> extract_content_and_think(choice.message)[</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;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> UniMessage(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">' '</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(content)).send(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">at_sender</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;"> except</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Exception</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> e:</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> UniMessage(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(e) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> suggest_solution(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(e))).send()</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> traceback.print_exc()</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span></span></code></pre></div></details><h3 id="var-text" tabindex="-1">var <code>text</code> <a class="header-anchor" href="#var-text" aria-label="Permalink to "var `text`""></a></h3><ul><li><p><strong>Description</strong>: type: ignore</p></li><li><p><strong>Default</strong>: <code>event.get_message()</code></p></li></ul><h3 id="var-request-msg" tabindex="-1">var <code>request_msg</code> <a class="header-anchor" href="#var-request-msg" aria-label="Permalink to "var `request_msg`""></a></h3><ul><li><p><strong>Description</strong>: type: ignore</p></li><li><p><strong>Default</strong>: <code>context_msg + [UserMessage(content=usermsg).as_dict()] + tool_msg</code></p></li></ul></div></div></main><footer class="VPDocFooter" data-v-03864d9f data-v-79bc013e><!--[--><!--]--><div class="edit-info" data-v-79bc013e><div class="edit-link" data-v-79bc013e><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai//marsho.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><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/instances" data-v-79bc013e><!--[--><span class="desc" data-v-79bc013e>Prev</span><span class="title" data-v-79bc013e>instances</span><!--]--></a></div><div class="pager" data-v-79bc013e><a class="VPLink link pager-link next" href="/en/dev/api/marsho_onebot" data-v-79bc013e><!--[--><span class="desc" data-v-79bc013e>Next</span><span class="title" data-v-79bc013e>marsho_onebot</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\":\"BWxHkwhT\",\"dev_api_azure_onebot.md\":\"BsJhgztq\",\"dev_api_config.md\":\"BZQygKZM\",\"dev_api_constants.md\":\"BQXkHkcu\",\"dev_api_deal_latex.md\":\"CcbPszxu\",\"dev_api_dev.md\":\"D3bR8yUw\",\"dev_api_hooks.md\":\"Dx3JiNYl\",\"dev_api_hunyuan.md\":\"84ZOS2dB\",\"dev_api_index.md\":\"CKz7r0xO\",\"dev_api_instances.md\":\"D0EGVkFU\",\"dev_api_marsho.md\":\"CbYMY9tT\",\"dev_api_marsho_onebot.md\":\"DVPrHwsF\",\"dev_api_metadata.md\":\"DcWsjAzN\",\"dev_api_models.md\":\"-PFe3xV6\",\"dev_api_observer.md\":\"BxJvd7GM\",\"dev_api_plugin_func_call_caller.md\":\"B-Afofa_\",\"dev_api_plugin_func_call_index.md\":\"DJqaEalq\",\"dev_api_plugin_func_call_models.md\":\"BzVX8der\",\"dev_api_plugin_func_call_params.md\":\"GsAhbAnt\",\"dev_api_plugin_func_call_utils.md\":\"Cv6vsuiA\",\"dev_api_plugin_index.md\":\"C9mfk9HL\",\"dev_api_plugin_load.md\":\"BaKQuUHB\",\"dev_api_plugin_models.md\":\"Tm7t-ikW\",\"dev_api_plugin_register.md\":\"DSL2EGTF\",\"dev_api_plugin_typing.md\":\"CBPWUMVA\",\"dev_api_plugin_utils.md\":\"BTfSKGuq\",\"dev_api_plugins_builtin_tools_chat.md\":\"aFal8Gow\",\"dev_api_plugins_builtin_tools_file_io.md\":\"BKz6hg1O\",\"dev_api_plugins_builtin_tools_index.md\":\"-VV3V62O\",\"dev_api_plugins_builtin_tools_liteyuki.md\":\"DzKH_VlV\",\"dev_api_plugins_builtin_tools_manager.md\":\"BuenSvBP\",\"dev_api_plugins_builtin_tools_network.md\":\"dF5tbLpw\",\"dev_api_plugins_builtin_tools_utils.md\":\"CAzqH2x9\",\"dev_api_plugins_marshoai_bangumi_index.md\":\"17VF_fLc\",\"dev_api_plugins_marshoai_basic_index.md\":\"TTNgR0hC\",\"dev_api_plugins_test_marshoai_basic_index.md\":\"BRO5viiM\",\"dev_api_plugins_test_marshoai_memory_command.md\":\"Bweavysv\",\"dev_api_plugins_test_marshoai_memory_config.md\":\"1MjwossB\",\"dev_api_plugins_test_marshoai_memory_index.md\":\"DT78YGqo\",\"dev_api_plugins_test_random_number_generator.md\":\"CMxdtMHP\",\"dev_api_plugins_test_snowykami_testplugin_index.md\":\"CXbiHEYp\",\"dev_api_plugins_test_weather_demo.md\":\"DqU_unWp\",\"dev_api_plugins_twisuki_megakits_index.md\":\"-woi3Nla\",\"dev_api_plugins_twisuki_megakits_mk_morse_code.md\":\"DcFUIHkA\",\"dev_api_plugins_twisuki_megakits_mk_nya_code.md\":\"C3bf8sjb\",\"dev_api_plugins_twisuki_petcat_index.md\":\"DrBGExmf\",\"dev_api_plugins_twisuki_petcat_pc_cat.md\":\"CHiYX-sA\",\"dev_api_plugins_twisuki_petcat_pc_info.md\":\"Bf0kh5d7\",\"dev_api_plugins_twisuki_petcat_pc_shop.md\":\"DjOux-Bu\",\"dev_api_plugins_twisuki_petcat_pc_token.md\":\"CUonlZEg\",\"dev_api_tools_marshoai_bangumi_index.md\":\"AgX3pxXS\",\"dev_api_tools_marshoai_basic_index.md\":\"Ch_Siirr\",\"dev_api_tools_marshoai_megakits_index.md\":\"C7Wrewvp\",\"dev_api_tools_marshoai_megakits_mk_common.md\":\"BM5eSRuV\",\"dev_api_tools_marshoai_megakits_mk_info.md\":\"C1kleNHU\",\"dev_api_tools_marshoai_megakits_mk_morse_code.md\":\"Ck4fcY80\",\"dev_api_tools_marshoai_megakits_mk_nya_code.md\":\"BD-geeZX\",\"dev_api_tools_marshoai_memory_index.md\":\"D12ATfZV\",\"dev_api_tools_marshoai_meogirl_index.md\":\"D329UtlF\",\"dev_api_tools_marshoai_meogirl_mg_info.md\":\"BGx2xHo4\",\"dev_api_tools_marshoai_meogirl_mg_introduce.md\":\"DFmMY7uc\",\"dev_api_tools_marshoai_meogirl_mg_search.md\":\"DQcDOb49\",\"dev_api_tools_wip_marshoai_memory_index.md\":\"CVH4XmiE\",\"dev_api_util.md\":\"ChLZxy2z\",\"dev_api_util_hunyuan.md\":\"BKSF1JNE\",\"dev_extension.md\":\"MeX5SXJC\",\"dev_index.md\":\"ZMOYQWTr\",\"dev_project.md\":\"CT7Wi5Sp\",\"en_dev_api_azure.md\":\"D2NkLSs5\",\"en_dev_api_azure_onebot.md\":\"CkpsHNA3\",\"en_dev_api_config.md\":\"DeZ7DeZC\",\"en_dev_api_constants.md\":\"9cK-2Rnd\",\"en_dev_api_deal_latex.md\":\"CDNhgyqb\",\"en_dev_api_dev.md\":\"DwQwAQ2O\",\"en_dev_api_hooks.md\":\"B8fuQmIt\",\"en_dev_api_hunyuan.md\":\"BREw4BH2\",\"en_dev_api_index.md\":\"D6wqE3Go\",\"en_dev_api_instances.md\":\"C-rZEpVa\",\"en_dev_api_marsho.md\":\"DsXdR6yD\",\"en_dev_api_marsho_onebot.md\":\"DnSZOfp1\",\"en_dev_api_metadata.md\":\"D7OEYakw\",\"en_dev_api_models.md\":\"ud2_nMfy\",\"en_dev_api_observer.md\":\"Buavwltn\",\"en_dev_api_plugin_func_call_caller.md\":\"CmmMyc7F\",\"en_dev_api_plugin_func_call_index.md\":\"DHzPv4Ru\",\"en_dev_api_plugin_func_call_models.md\":\"DEU3e-ya\",\"en_dev_api_plugin_func_call_params.md\":\"DRLswz-P\",\"en_dev_api_plugin_func_call_utils.md\":\"DsqMXz_K\",\"en_dev_api_plugin_index.md\":\"BkRnWH4_\",\"en_dev_api_plugin_load.md\":\"BqI5wsjI\",\"en_dev_api_plugin_models.md\":\"oxy5gRRp\",\"en_dev_api_plugin_register.md\":\"DX9dpKIB\",\"en_dev_api_plugin_typing.md\":\"BkmgBa4M\",\"en_dev_api_plugin_utils.md\":\"DU4V8pmV\",\"en_dev_api_plugins_builtin_tools_chat.md\":\"NZM89geB\",\"en_dev_api_plugins_builtin_tools_file_io.md\":\"tW4VmItn\",\"en_dev_api_plugins_builtin_tools_index.md\":\"C-XkxGtY\",\"en_dev_api_plugins_builtin_tools_liteyuki.md\":\"RQry7oYv\",\"en_dev_api_plugins_builtin_tools_manager.md\":\"0b459wxY\",\"en_dev_api_plugins_builtin_tools_network.md\":\"-ABGsH5V\",\"en_dev_api_plugins_builtin_tools_utils.md\":\"YU2iLw8W\",\"en_dev_api_plugins_marshoai_bangumi_index.md\":\"BybXEg8m\",\"en_dev_api_plugins_marshoai_basic_index.md\":\"DeeLIVrI\",\"en_dev_api_plugins_test_marshoai_basic_index.md\":\"wMr4Ve9L\",\"en_dev_api_plugins_test_marshoai_memory_command.md\":\"C6E66iFg\",\"en_dev_api_plugins_test_marshoai_memory_config.md\":\"INuymK3L\",\"en_dev_api_plugins_test_marshoai_memory_index.md\":\"D6RlqtVH\",\"en_dev_api_plugins_test_random_number_generator.md\":\"BX4GQvB8\",\"en_dev_api_plugins_test_snowykami_testplugin_index.md\":\"BayHCb8s\",\"en_dev_api_plugins_test_weather_demo.md\":\"CSDh9TgV\",\"en_dev_api_plugins_twisuki_megakits_index.md\":\"ONfKcuRP\",\"en_dev_api_plugins_twisuki_megakits_mk_morse_code.md\":\"YkyuSz4X\",\"en_dev_api_plugins_twisuki_megakits_mk_nya_code.md\":\"C5O4Xv8O\",\"en_dev_api_plugins_twisuki_petcat_index.md\":\"C7CHQqy2\",\"en_dev_api_plugins_twisuki_petcat_pc_cat.md\":\"CRx4SeFR\",\"en_dev_api_plugins_twisuki_petcat_pc_info.md\":\"DmAZ17n9\",\"en_dev_api_plugins_twisuki_petcat_pc_shop.md\":\"tvO7JKea\",\"en_dev_api_plugins_twisuki_petcat_pc_token.md\":\"Bs6TDv2w\",\"en_dev_api_tools_marshoai_bangumi_index.md\":\"CQOz1f3Y\",\"en_dev_api_tools_marshoai_basic_index.md\":\"DdtXVLj-\",\"en_dev_api_tools_marshoai_megakits_index.md\":\"BD0eqLf4\",\"en_dev_api_tools_marshoai_megakits_mk_common.md\":\"B2t_B3CF\",\"en_dev_api_tools_marshoai_megakits_mk_info.md\":\"BJ4oiY1p\",\"en_dev_api_tools_marshoai_megakits_mk_morse_code.md\":\"D9jpqguN\",\"en_dev_api_tools_marshoai_megakits_mk_nya_code.md\":\"BFEjDzeJ\",\"en_dev_api_tools_marshoai_memory_index.md\":\"CFtluJuC\",\"en_dev_api_tools_marshoai_meogirl_index.md\":\"Bz7f_dXk\",\"en_dev_api_tools_marshoai_meogirl_mg_info.md\":\"XSL809yZ\",\"en_dev_api_tools_marshoai_meogirl_mg_introduce.md\":\"B9C0fcLo\",\"en_dev_api_tools_marshoai_meogirl_mg_search.md\":\"CnuveyHi\",\"en_dev_api_tools_wip_marshoai_memory_index.md\":\"Dof0UKI9\",\"en_dev_api_util.md\":\"C3Ix0w8f\",\"en_dev_api_util_hunyuan.md\":\"BCpNZGK5\",\"en_dev_index.md\":\"DG35zGMQ\",\"en_index.md\":\"fR4OoA7a\",\"en_start_index.md\":\"DCunCG6I\",\"en_start_install.md\":\"DdHi3Ttu\",\"index.md\":\"C0OrEz4R\",\"ja_index.md\":\"DFz97jLH\",\"start_index.md\":\"CHwPvREK\",\"start_install-old.md\":\"Ca7nPfgk\",\"start_install.md\":\"BLebC2pi\",\"start_use.md\":\"DeU3oXMj\"}");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> |