nonebot-plugin-marshoai/en/dev/api/deal_latex.html

120 lines
153 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

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

<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>deal_latex | 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.3fMz-wjd.css" as="style">
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
<script type="module" src="/assets/app.DB2-4pOg.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.B1VGcao-.js">
<link rel="modulepreload" href="/assets/chunks/framework.CTVYQtO4.js">
<link rel="modulepreload" href="/assets/en_dev_api_deal_latex.md.BU7zmmQG.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-f2ef7826><!--[--><!--]--><!--[--><span tabindex="-1" data-v-81e21773></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-81e21773>Skip to content</a><!--]--><!----><header class="VPNav" data-v-f2ef7826 data-v-438f8bce><div class="VPNavBar" data-v-438f8bce data-v-7997f19d><div class="wrapper" data-v-7997f19d><div class="container" data-v-7997f19d><div class="title" data-v-7997f19d><div class="VPNavBarTitle has-sidebar" data-v-7997f19d data-v-8f2b86e4><a class="title" href="/en/" data-v-8f2b86e4><!--[--><!--]--><!--[--><!--[--><!--[--><img class="VPImage dark logo" src="/marsho-full.svg" alt="Marsho Logo" data-v-b5ae02ee><!--]--><!--[--><img class="VPImage light logo" src="/marsho-full.svg" alt="Marsho Logo" data-v-b5ae02ee><!--]--><!--]--><!--]--><span data-v-8f2b86e4>Marsho AI</span><!--[--><!--]--></a></div></div><div class="content" data-v-7997f19d><div class="content-body" data-v-7997f19d><!--[--><!--]--><div class="VPNavBarSearch search" data-v-7997f19d><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-7997f19d data-v-ec41fe23><span id="main-nav-aria-label" class="visually-hidden" data-v-ec41fe23> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en" tabindex="0" data-v-ec41fe23 data-v-711b3800><!--[--><span data-v-711b3800>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en/start/install" tabindex="0" data-v-ec41fe23 data-v-711b3800><!--[--><span data-v-711b3800>Usage</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en/dev/extension" tabindex="0" data-v-ec41fe23 data-v-711b3800><!--[--><span data-v-711b3800>Develop</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-7997f19d data-v-e4f4561d data-v-7089f475><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Language" data-v-7089f475><span class="text" data-v-7089f475><span class="vpi-languages option-icon" data-v-7089f475></span><!----><span class="vpi-chevron-down text-icon" data-v-7089f475></span></span></button><div class="menu" data-v-7089f475><div class="VPMenu" data-v-7089f475 data-v-30cc7172><!----><!--[--><!--[--><div class="items" data-v-e4f4561d><p class="title" data-v-e4f4561d>English</p><!--[--><div class="VPMenuLink" data-v-e4f4561d data-v-acd6ccb4><a class="VPLink link" href="/dev/api/deal_latex" data-v-acd6ccb4><!--[--><span data-v-acd6ccb4>简体中文</span><!--]--></a></div><div class="VPMenuLink" data-v-e4f4561d data-v-acd6ccb4><a class="VPLink link" href="/ja/dev/api/deal_latex" data-v-acd6ccb4><!--[--><span data-v-acd6ccb4>日本語</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-7997f19d data-v-7f088f89><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-7f088f89 data-v-aedb97ac data-v-4cf15231><span class="check" data-v-4cf15231><span class="icon" data-v-4cf15231><!--[--><span class="vpi-sun sun" data-v-aedb97ac></span><span class="vpi-moon moon" data-v-aedb97ac></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-7997f19d data-v-b364c366 data-v-605e17f0><!--[--><a class="VPSocialLink no-icon" href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai" aria-label="github" target="_blank" rel="noopener" data-v-605e17f0 data-v-bff34bab><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-605e17f0 data-v-bff34bab><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-7997f19d data-v-d5ffb00e data-v-7089f475><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-7089f475><span class="vpi-more-horizontal icon" data-v-7089f475></span></button><div class="menu" data-v-7089f475><div class="VPMenu" data-v-7089f475 data-v-30cc7172><!----><!--[--><!--[--><div class="group translations" data-v-d5ffb00e><p class="trans-title" data-v-d5ffb00e>English</p><!--[--><div class="VPMenuLink" data-v-d5ffb00e data-v-acd6ccb4><a class="VPLink link" href="/dev/api/deal_latex" data-v-acd6ccb4><!--[--><span data-v-acd6ccb4>简体中文</span><!--]--></a></div><div class="VPMenuLink" data-v-d5ffb00e data-v-acd6ccb4><a class="VPLink link" href="/ja/dev/api/deal_latex" data-v-acd6ccb4><!--[--><span data-v-acd6ccb4>日本語</span><!--]--></a></div><!--]--></div><div class="group" data-v-d5ffb00e><div class="item appearance" data-v-d5ffb00e><p class="label" data-v-d5ffb00e>Theme</p><div class="appearance-action" data-v-d5ffb00e><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-d5ffb00e data-v-aedb97ac data-v-4cf15231><span class="check" data-v-4cf15231><span class="icon" data-v-4cf15231><!--[--><span class="vpi-sun sun" data-v-aedb97ac></span><span class="vpi-moon moon" data-v-aedb97ac></span><!--]--></span></span></button></div></div></div><div class="group" data-v-d5ffb00e><div class="item social-links" data-v-d5ffb00e><div class="VPSocialLinks social-links-list" data-v-d5ffb00e data-v-605e17f0><!--[--><a class="VPSocialLink no-icon" href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai" aria-label="github" target="_blank" rel="noopener" data-v-605e17f0 data-v-bff34bab><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-605e17f0 data-v-bff34bab><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-7997f19d data-v-33c7d1f6><span class="container" data-v-33c7d1f6><span class="top" data-v-33c7d1f6></span><span class="middle" data-v-33c7d1f6></span><span class="bottom" data-v-33c7d1f6></span></span></button></div></div></div></div><div class="divider" data-v-7997f19d><div class="divider-line" data-v-7997f19d></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-f2ef7826 data-v-ee4234fc><div class="container" data-v-ee4234fc><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-ee4234fc><span class="vpi-align-left menu-icon" data-v-ee4234fc></span><span class="menu-text" data-v-ee4234fc>Option</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-ee4234fc data-v-185f1b97><button data-v-185f1b97>To top</button><!----></div></div></div><aside class="VPSidebar" data-v-f2ef7826 data-v-605e2465><div class="curtain" data-v-605e2465></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-605e2465><span class="visually-hidden" id="sidebar-aria-label" data-v-605e2465> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-8ab86a08><section class="VPSidebarItem level-0 has-active" data-v-8ab86a08 data-v-b0d7bb51><div class="item" role="button" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><h2 class="text" data-v-b0d7bb51>MARSHOAI</h2><!----></div><div class="items" data-v-b0d7bb51><!--[--><section class="VPSidebarItem level-1 collapsible collapsed is-link has-active" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/index" data-v-b0d7bb51><!--[--><h3 class="text" data-v-b0d7bb51>api</h3><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/azure" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>azure</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/azure_onebot" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>azure_onebot</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 collapsible collapsed" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" role="button" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><h4 class="text" data-v-b0d7bb51>plugins</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/marshoai_basic/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>marshoai_basic</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/marshoai_basic/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>builtin_tools</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/chat" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>chat</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/file_io" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>file_io</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/liteyuki" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>liteyuki</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/manager" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>manager</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/network" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>network</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/builtin_tools/utils" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>utils</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/marshoai_bangumi/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>marshoai_bangumi</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/marshoai_bangumi/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_megakits/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>twisuki_megakits</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_megakits/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_megakits/mk_morse_code" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>mk_morse_code</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_megakits/mk_nya_code" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>mk_nya_code</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_petcat/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>twisuki_petcat</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_petcat/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_petcat/pc_cat" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>pc_cat</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_petcat/pc_info" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>pc_info</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_petcat/pc_shop" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>pc_shop</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins/twisuki_petcat/pc_token" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>pc_token</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-2 collapsible collapsed" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" role="button" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><h4 class="text" data-v-b0d7bb51>plugins_test</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins_test/marshoai_basic/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>marshoai_basic</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins_test/marshoai_basic/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins_test/marshoai_memory/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>marshoai_memory</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins_test/marshoai_memory/command" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>command</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins_test/marshoai_memory/config" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins_test/marshoai_memory/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-3 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins_test/random_number_generator" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>random_number_generator</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins_test/snowykami_testplugin/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>snowykami_testplugin</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins_test/snowykami_testplugin/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-3 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugins_test/weather_demo" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>weather_demo</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2 collapsible collapsed" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" role="button" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><h4 class="text" data-v-b0d7bb51>tools</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_bangumi/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>marshoai_bangumi</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_bangumi/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_basic/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>marshoai_basic</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_basic/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_megakits/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>marshoai_megakits</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_megakits/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_megakits/mk_common" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>mk_common</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_megakits/mk_info" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>mk_info</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_megakits/mk_morse_code" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>mk_morse_code</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_megakits/mk_nya_code" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>mk_nya_code</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_memory/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>marshoai_memory</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_memory/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_meogirl/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>marshoai_meogirl</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_meogirl/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_meogirl/mg_info" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>mg_info</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_meogirl/mg_introduce" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>mg_introduce</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools/marshoai_meogirl/mg_search" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>mg_search</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-2 collapsible collapsed" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" role="button" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><h4 class="text" data-v-b0d7bb51>tools_wip</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools_wip/marshoai_memory/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>marshoai_memory</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/tools_wip/marshoai_memory/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/config" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>config</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/constants" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>constants</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/deal_latex" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>deal_latex</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/dev" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>dev</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/hooks" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>hooks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/hunyuan" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>hunyuan</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/instances" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>instances</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/marsho" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>marsho</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/marsho_onebot" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>marsho_onebot</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/metadata" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>metadata</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/models" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>models</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/observer" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>observer</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/index" data-v-b0d7bb51><!--[--><h4 class="text" data-v-b0d7bb51>plugin</h4><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/register" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>register</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-3 collapsible collapsed is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" tabindex="0" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/func_call/index" data-v-b0d7bb51><!--[--><h5 class="text" data-v-b0d7bb51>func_call</h5><!--]--></a><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b0d7bb51><span class="vpi-chevron-right caret-icon" data-v-b0d7bb51></span></div></div><div class="items" data-v-b0d7bb51><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/func_call/caller" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>caller</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/func_call/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/func_call/models" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>models</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/func_call/params" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>params</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-4 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/func_call/utils" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>utils</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-3 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>index</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/load" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>load</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/models" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>models</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/typing" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>typing</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/plugin/utils" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>utils</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/util" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>util</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b0d7bb51 data-v-b0d7bb51><div class="item" data-v-b0d7bb51><div class="indicator" data-v-b0d7bb51></div><a class="VPLink link link" href="/en/dev/api/util_hunyuan" data-v-b0d7bb51><!--[--><p class="text" data-v-b0d7bb51>util_hunyuan</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-f2ef7826 data-v-9f26b714><div class="VPDoc has-sidebar has-aside" data-v-9f26b714 data-v-d9ad38ba><!--[--><!--]--><div class="container" data-v-d9ad38ba><div class="aside" data-v-d9ad38ba><div class="aside-curtain" data-v-d9ad38ba></div><div class="aside-container" data-v-d9ad38ba><div class="aside-content" data-v-d9ad38ba><div class="VPDocAside" data-v-d9ad38ba data-v-9a346169><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-9a346169 data-v-a3cfa410><div class="content" data-v-a3cfa410><div class="outline-marker" data-v-a3cfa410></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a3cfa410>On this page</div><ul class="VPDocOutlineItem root" data-v-a3cfa410 data-v-4a54aa69><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-9a346169></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-d9ad38ba><div class="content-container" data-v-d9ad38ba><!--[--><!--]--><main class="main" data-v-d9ad38ba><div style="position:relative;" class="vp-doc _en_dev_api_deal_latex" data-v-d9ad38ba><div><h1 id="module-nonebot-plugin-marshoai-deal-latex" tabindex="-1"><strong>Module</strong> <code>nonebot_plugin_marshoai.deal_latex</code> <a class="header-anchor" href="#module-nonebot-plugin-marshoai-deal-latex" aria-label="Permalink to &quot;**Module** `nonebot_plugin_marshoai.deal_latex`&quot;"></a></h1><p>此文件援引并改编自 nonebot-plugin-latex 数据类 源项目地址: <a href="https://github.com/EillesWan/nonebot-plugin-latex" target="_blank" rel="noreferrer">https://github.com/EillesWan/nonebot-plugin-latex</a></p><p>Copyright (c) 2024 金羿Eilles nonebot-plugin-latex is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: <a href="http://license.coscl.org.cn/MulanPSL2" target="_blank" rel="noreferrer">http://license.coscl.org.cn/MulanPSL2</a> THIS SOFTWARE IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details.</p><h3 id="class-convertchannel" tabindex="-1"><em><strong>class</strong></em> <code>ConvertChannel</code> <a class="header-anchor" href="#class-convertchannel" aria-label="Permalink to &quot;***class*** `ConvertChannel`&quot;"></a></h3><hr><h4 id="async-func-get-to-convert-self-latex-code-str-dpi-int-600-fgcolour-str-000000-timeout-int-5-retry-int-3-tuple-literal-true-bytes-tuple-literal-false-bytes-str" tabindex="-1"><em><strong>async func</strong></em> <code>get_to_convert(self, latex_code: str, dpi: int = 600, fgcolour: str = &#39;000000&#39;, timeout: int = 5, retry: int = 3) -&gt; Tuple[Literal[True], bytes] | Tuple[Literal[False], bytes | str]</code> <a class="header-anchor" href="#async-func-get-to-convert-self-latex-code-str-dpi-int-600-fgcolour-str-000000-timeout-int-5-retry-int-3-tuple-literal-true-bytes-tuple-literal-false-bytes-str" aria-label="Permalink to &quot;***async func*** `get_to_convert(self, latex_code: str, dpi: int = 600, fgcolour: str = &#39;000000&#39;, timeout: int = 5, retry: int = 3) -&gt; Tuple[Literal[True], bytes] | Tuple[Literal[False], bytes | str]`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/deal_latex.py#L28" target="_blank">View on GitHub</a></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> get_to_convert</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, latex_code: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, dpi: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">600</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, fgcolour: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;000000&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, timeout: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, retry: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; Tuple[Literal[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">True</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bytes</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;"> Tuple[Literal[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bytes</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>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;请勿直接调用母类&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><p><a href="https://docs.python.org/3/library/functions.html#staticmethod" target="_blank" rel="noreferrer"><code>@staticmethod</code></a></p><h4 id="async-func-channel-test-int" tabindex="-1"><em><strong>async func</strong></em> <code>channel_test() -&gt; int</code> <a class="header-anchor" href="#async-func-channel-test-int" aria-label="Permalink to &quot;***async func*** `channel_test() -&gt; int`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/deal_latex.py#L39" 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;">@</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">staticmethod</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;"> channel_test</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() -&gt; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> -</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span></span></code></pre></div></details><h4 id="attr-url-str-no-default" tabindex="-1"><em><strong>attr</strong></em> <code>URL: str = NO_DEFAULT</code> <a class="header-anchor" href="#attr-url-str-no-default" aria-label="Permalink to &quot;***attr*** `URL: str = NO_DEFAULT`&quot;"></a></h4><h3 id="class-l2pchannel-convertchannel" tabindex="-1"><em><strong>class</strong></em> <code>L2PChannel(ConvertChannel)</code> <a class="header-anchor" href="#class-l2pchannel-convertchannel" aria-label="Permalink to &quot;***class*** `L2PChannel(ConvertChannel)`&quot;"></a></h3><hr><h4 id="async-func-get-to-convert-self-latex-code-str-dpi-int-600-fgcolour-str-000000-timeout-int-5-retry-int-3-tuple-literal-true-bytes-tuple-literal-false-bytes-str-1" tabindex="-1"><em><strong>async func</strong></em> <code>get_to_convert(self, latex_code: str, dpi: int = 600, fgcolour: str = &#39;000000&#39;, timeout: int = 5, retry: int = 3) -&gt; Tuple[Literal[True], bytes] | Tuple[Literal[False], bytes | str]</code> <a class="header-anchor" href="#async-func-get-to-convert-self-latex-code-str-dpi-int-600-fgcolour-str-000000-timeout-int-5-retry-int-3-tuple-literal-true-bytes-tuple-literal-false-bytes-str-1" aria-label="Permalink to &quot;***async func*** `get_to_convert(self, latex_code: str, dpi: int = 600, fgcolour: str = &#39;000000&#39;, timeout: int = 5, retry: int = 3) -&gt; Tuple[Literal[True], bytes] | Tuple[Literal[False], bytes | str]`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/deal_latex.py#L47" target="_blank">View on GitHub</a></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> get_to_convert</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, latex_code: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, dpi: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">600</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, fgcolour: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;000000&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, timeout: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, retry: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; Tuple[Literal[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">True</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bytes</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;"> Tuple[Literal[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bytes</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>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> with</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> httpx.AsyncClient(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">timeout, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">verify</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> while</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> retry </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</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;"> try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> post_response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client.post(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">URL</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;/api/convert&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">json</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;auth&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;user&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;guest&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;password&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;guest&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;latex&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: latex_code, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;resolution&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: dpi, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;color&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: fgcolour})</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> post_response.status_code </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 200</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (json_response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> post_response.json())[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;result-message&#39;</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;"> &#39;success&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (get_response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client.get(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">URL</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> json_response[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;url&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]))).status_code </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 200</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">True</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, get_response.content)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, json_response[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;result-message&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">])</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> retry </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> except</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> httpx.TimeoutException:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> retry </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> raise</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> ConnectionError</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;服务不可用&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;未知错误&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><p><a href="https://docs.python.org/3/library/functions.html#staticmethod" target="_blank" rel="noreferrer"><code>@staticmethod</code></a></p><h4 id="async-func-channel-test-int-1" tabindex="-1"><em><strong>async func</strong></em> <code>channel_test() -&gt; int</code> <a class="header-anchor" href="#async-func-channel-test-int-1" aria-label="Permalink to &quot;***async func*** `channel_test() -&gt; int`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/deal_latex.py#L94" 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;">@</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">staticmethod</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;"> channel_test</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() -&gt; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> with</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> httpx.AsyncClient(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">verify</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client:</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;"> start_time </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> time.time_ns()</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> latex2png </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client.get(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;http://www.latex2png.com</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client.post(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;http://www.latex2png.com/api/convert&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">json</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;auth&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;user&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;guest&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;password&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;guest&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;latex&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">int_</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{a}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">^</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{b}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> x^2 </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">, dx = </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">frac{b^3}{3} - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">frac{a^3}{5}</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\n</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;resolution&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">600</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;color&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;000000&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})).json()[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;url&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]), time.time_ns() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> start_time)</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;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 99999</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> latex2png[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">].status_code </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 200</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> latex2png[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 99999</span></span></code></pre></div></details><h4 id="attr-url-http-www-latex2png-com" tabindex="-1"><em><strong>attr</strong></em> <code>URL = &#39;http://www.latex2png.com&#39;</code> <a class="header-anchor" href="#attr-url-http-www-latex2png-com" aria-label="Permalink to &quot;***attr*** `URL = &#39;http://www.latex2png.com&#39;`&quot;"></a></h4><h3 id="class-cdcchannel-convertchannel" tabindex="-1"><em><strong>class</strong></em> <code>CDCChannel(ConvertChannel)</code> <a class="header-anchor" href="#class-cdcchannel-convertchannel" aria-label="Permalink to &quot;***class*** `CDCChannel(ConvertChannel)`&quot;"></a></h3><hr><h4 id="async-func-get-to-convert-self-latex-code-str-dpi-int-600-fgcolour-str-000000-timeout-int-5-retry-int-3-tuple-literal-true-bytes-tuple-literal-false-bytes-str-2" tabindex="-1"><em><strong>async func</strong></em> <code>get_to_convert(self, latex_code: str, dpi: int = 600, fgcolour: str = &#39;000000&#39;, timeout: int = 5, retry: int = 3) -&gt; Tuple[Literal[True], bytes] | Tuple[Literal[False], bytes | str]</code> <a class="header-anchor" href="#async-func-get-to-convert-self-latex-code-str-dpi-int-600-fgcolour-str-000000-timeout-int-5-retry-int-3-tuple-literal-true-bytes-tuple-literal-false-bytes-str-2" aria-label="Permalink to &quot;***async func*** `get_to_convert(self, latex_code: str, dpi: int = 600, fgcolour: str = &#39;000000&#39;, timeout: int = 5, retry: int = 3) -&gt; Tuple[Literal[True], bytes] | Tuple[Literal[False], bytes | str]`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/deal_latex.py#L127" target="_blank">View on GitHub</a></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> get_to_convert</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, latex_code: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, dpi: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">600</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, fgcolour: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;000000&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, timeout: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, retry: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; Tuple[Literal[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">True</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bytes</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;"> Tuple[Literal[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bytes</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>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> with</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> httpx.AsyncClient(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">timeout, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">verify</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> while</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> retry </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</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;"> try</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;"> client.get(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">URL</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;/png.image?</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">huge&amp;space;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">dpi{&#39;</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;">(dpi) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;}</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">fg{&#39;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> fgcolour </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;}&#39;</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> latex_code)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.status_code </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 200</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">True</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, response.content)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, response.content)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> retry </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> except</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> httpx.TimeoutException:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> retry </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;未知错误&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><p><a href="https://docs.python.org/3/library/functions.html#staticmethod" target="_blank" rel="noreferrer"><code>@staticmethod</code></a></p><h4 id="async-func-channel-test-int-2" tabindex="-1"><em><strong>async func</strong></em> <code>channel_test() -&gt; int</code> <a class="header-anchor" href="#async-func-channel-test-int-2" aria-label="Permalink to &quot;***async func*** `channel_test() -&gt; int`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/deal_latex.py#L162" 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;">@</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">staticmethod</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;"> channel_test</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() -&gt; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> with</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> httpx.AsyncClient(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">verify</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client:</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;"> start_time </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> time.time_ns()</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> codecogs </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client.get(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;https://latex.codecogs.com/png.image?</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">huge%20</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">dpi</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{600}\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">int_</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{a}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">^</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{b}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">x^2</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">,dx=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">frac{b^3}{3}-</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">frac{a^3}{5}&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">), time.time_ns() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> start_time)</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;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 99999</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> codecogs[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">].status_code </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 200</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> codecogs[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 99999</span></span></code></pre></div></details><h4 id="attr-url-https-latex-codecogs-com" tabindex="-1"><em><strong>attr</strong></em> <code>URL = &#39;https://latex.codecogs.com&#39;</code> <a class="header-anchor" href="#attr-url-https-latex-codecogs-com" aria-label="Permalink to &quot;***attr*** `URL = &#39;https://latex.codecogs.com&#39;`&quot;"></a></h4><h3 id="class-jrtchannel-convertchannel" tabindex="-1"><em><strong>class</strong></em> <code>JRTChannel(ConvertChannel)</code> <a class="header-anchor" href="#class-jrtchannel-convertchannel" aria-label="Permalink to &quot;***class*** `JRTChannel(ConvertChannel)`&quot;"></a></h3><hr><h4 id="async-func-get-to-convert-self-latex-code-str-dpi-int-600-fgcolour-str-000000-timeout-int-5-retry-int-3-tuple-literal-true-bytes-tuple-literal-false-bytes-str-3" tabindex="-1"><em><strong>async func</strong></em> <code>get_to_convert(self, latex_code: str, dpi: int = 600, fgcolour: str = &#39;000000&#39;, timeout: int = 5, retry: int = 3) -&gt; Tuple[Literal[True], bytes] | Tuple[Literal[False], bytes | str]</code> <a class="header-anchor" href="#async-func-get-to-convert-self-latex-code-str-dpi-int-600-fgcolour-str-000000-timeout-int-5-retry-int-3-tuple-literal-true-bytes-tuple-literal-false-bytes-str-3" aria-label="Permalink to &quot;***async func*** `get_to_convert(self, latex_code: str, dpi: int = 600, fgcolour: str = &#39;000000&#39;, timeout: int = 5, retry: int = 3) -&gt; Tuple[Literal[True], bytes] | Tuple[Literal[False], bytes | str]`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/deal_latex.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:#D73A49;--shiki-dark:#F97583;">async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> get_to_convert</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, latex_code: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, dpi: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">600</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, fgcolour: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;000000&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, timeout: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, retry: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; Tuple[Literal[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">True</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bytes</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;"> Tuple[Literal[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bytes</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>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> with</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> httpx.AsyncClient(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">timeout, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">verify</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> while</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> retry </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</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;"> try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> post_response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client.post(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">URL</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> +</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;/default/latex2image&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">json</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;latexInput&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: latex_code, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;outputFormat&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PNG&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;outputScale&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">%&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.format(dpi </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">/</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 3</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> *</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 5</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;"> post_response.status_code </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 200</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (json_response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> post_response.json())[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;error&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (get_response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client.get(json_response[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;imageUrl&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]))).status_code </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 200</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">True</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, get_response.content)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, json_response[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;error&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">])</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> retry </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> except</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> httpx.TimeoutException:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> retry </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> raise</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> ConnectionError</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;服务不可用&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;未知错误&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><p><a href="https://docs.python.org/3/library/functions.html#staticmethod" target="_blank" rel="noreferrer"><code>@staticmethod</code></a></p><h4 id="async-func-channel-test-int-3" tabindex="-1"><em><strong>async func</strong></em> <code>channel_test() -&gt; int</code> <a class="header-anchor" href="#async-func-channel-test-int-3" aria-label="Permalink to &quot;***async func*** `channel_test() -&gt; int`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/deal_latex.py#L228" 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;">@</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">staticmethod</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;"> channel_test</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() -&gt; </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> with</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> httpx.AsyncClient(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">verify</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client:</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;"> start_time </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> time.time_ns()</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> joeraut </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client.get((</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> client.post(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;http://www.latex2png.com/api/convert&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">json</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;latexInput&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">int_</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{a}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">^</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{b}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> x^2 </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">, dx = </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">frac{b^3}{3} - </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\\\</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">frac{a^3}{5}&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;outputFormat&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;PNG&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;outputScale&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;1000%&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">})).json()[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;imageUrl&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]), time.time_ns() </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> start_time)</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;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 99999</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> joeraut[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">].status_code </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">==</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 200</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> joeraut[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 99999</span></span></code></pre></div></details><h4 id="attr-url-https-latex2image-joeraut-com" tabindex="-1"><em><strong>attr</strong></em> <code>URL = &#39;https://latex2image.joeraut.com&#39;</code> <a class="header-anchor" href="#attr-url-https-latex2image-joeraut-com" aria-label="Permalink to &quot;***attr*** `URL = &#39;https://latex2image.joeraut.com&#39;`&quot;"></a></h4><h3 id="class-convertlatex" tabindex="-1"><em><strong>class</strong></em> <code>ConvertLatex</code> <a class="header-anchor" href="#class-convertlatex" aria-label="Permalink to &quot;***class*** `ConvertLatex`&quot;"></a></h3><hr><h4 id="func-init-self-channel-optional-convertchannel-none" tabindex="-1"><em><strong>func</strong></em> <code>__init__(self, channel: Optional[ConvertChannel] = None)</code> <a class="header-anchor" href="#func-init-self-channel-optional-convertchannel-none" aria-label="Permalink to &quot;***func*** `__init__(self, channel: Optional[ConvertChannel] = None)`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/deal_latex.py#L262" target="_blank">View on GitHub</a></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">def</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> __init__</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, channel: Optional[ConvertChannel]</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;"> logger.info(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;LaTeX 转换服务将在 Bot 连接时异步加载&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div></details><hr><h4 id="async-func-load-channel-self-channel-convertchannel-none-none-none" tabindex="-1"><em><strong>async func</strong></em> <code>load_channel(self, channel: ConvertChannel | None = None) -&gt; None</code> <a class="header-anchor" href="#async-func-load-channel-self-channel-convertchannel-none-none-none" aria-label="Permalink to &quot;***async func*** `load_channel(self, channel: ConvertChannel | None = None) -&gt; None`&quot;"></a></h4><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/deal_latex.py#L265" target="_blank">View on GitHub</a></summary><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> load_channel</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, channel: ConvertChannel </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> None</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">None</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; </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;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> channel </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">is</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> None</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> logger.info(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;正在选择 LaTeX 转换服务频道,请稍等...&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.channel </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.auto_choose_channel()</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;">&#39;已选择 </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.channel.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">__class__</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">__name__}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 服务频道&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.channel </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> channel</span></span></code></pre></div></details><hr><h4 id="async-func-generate-png-self-latex-str-dpi-int-600-foreground-colour-str-000000-timeout-int-5-retry-int-3-tuple-literal-true-bytes-tuple-literal-false-bytes-str" tabindex="-1"><em><strong>async func</strong></em> <code>generate_png(self, latex: str, dpi: int = 600, foreground_colour: str = &#39;000000&#39;, timeout_: int = 5, retry_: int = 3) -&gt; Tuple[Literal[True], bytes] | Tuple[Literal[False], bytes | str]</code> <a class="header-anchor" href="#async-func-generate-png-self-latex-str-dpi-int-600-foreground-colour-str-000000-timeout-int-5-retry-int-3-tuple-literal-true-bytes-tuple-literal-false-bytes-str" aria-label="Permalink to &quot;***async func*** `generate_png(self, latex: str, dpi: int = 600, foreground_colour: str = &#39;000000&#39;, timeout_: int = 5, retry_: int = 3) -&gt; Tuple[Literal[True], bytes] | Tuple[Literal[False], bytes | str]`&quot;"></a></h4><p><strong>Description</strong>: LaTeX 在线渲染</p><p><strong>Return</strong>: bytes</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/deal_latex.py#L273" 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;"> generate_png</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(self, latex: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, dpi: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">600</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, foreground_colour: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&#39;000000&#39;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, timeout_: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, retry_: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) -&gt; Tuple[Literal[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">True</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bytes</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;"> Tuple[Literal[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">], </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bytes</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>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> self</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.channel.get_to_convert(latex, dpi, foreground_colour, timeout_, retry_)</span></span></code></pre></div></details><hr><p><a href="https://docs.python.org/3/library/functions.html#staticmethod" target="_blank" rel="noreferrer"><code>@staticmethod</code></a></p><h4 id="async-func-auto-choose-channel-convertchannel" tabindex="-1"><em><strong>async func</strong></em> <code>auto_choose_channel() -&gt; ConvertChannel</code> <a class="header-anchor" href="#async-func-auto-choose-channel-convertchannel" aria-label="Permalink to &quot;***async func*** `auto_choose_channel() -&gt; ConvertChannel`&quot;"></a></h4><p><strong>Description</strong>: 依据访问延迟,自动选择 LaTeX 转换服务频道</p><details><summary><b>Source code</b> or <a href="https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/deal_latex.py#L305" 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;">@</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">staticmethod</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;"> auto_choose_channel</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() -&gt; ConvertChannel:</span></span>
<span class="line"></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;"> channel_test_wrapper</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(channel: type[ConvertChannel]) -&gt; Tuple[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">int</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, type[ConvertChannel]]:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> score </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;"> channel.channel_test()</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (score, channel)</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> results </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;"> asyncio.gather(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(channel_test_wrapper(channel) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> channel </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> channel_list))</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> best_channel </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> min</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(results, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">key</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=lambda</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> x: x[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">])[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> best_channel()</span></span></code></pre></div></details><h4 id="attr-channel-convertchannel-no-default" tabindex="-1"><em><strong>attr</strong></em> <code>channel: ConvertChannel = NO_DEFAULT</code> <a class="header-anchor" href="#attr-channel-convertchannel-no-default" aria-label="Permalink to &quot;***attr*** `channel: ConvertChannel = NO_DEFAULT`&quot;"></a></h4></div></div></main><footer class="VPDocFooter" data-v-d9ad38ba data-v-abb507f0><!--[--><!--]--><div class="edit-info" data-v-abb507f0><div class="edit-link" data-v-abb507f0><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//deal_latex.py" target="_blank" rel="noreferrer" data-v-abb507f0><!--[--><span class="vpi-square-pen edit-link-icon" data-v-abb507f0></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-abb507f0><p class="VPLastUpdated" data-v-abb507f0 data-v-0a31532b>Last updated: <time datetime="2024-12-14T11:16:59.000Z" data-v-0a31532b></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-abb507f0><span class="visually-hidden" id="doc-footer-aria-label" data-v-abb507f0>Pager</span><div class="pager" data-v-abb507f0><a class="VPLink link pager-link prev" href="/en/dev/api/constants" data-v-abb507f0><!--[--><span class="desc" data-v-abb507f0>Prev</span><span class="title" data-v-abb507f0>constants</span><!--]--></a></div><div class="pager" data-v-abb507f0><a class="VPLink link pager-link next" href="/en/dev/api/dev" data-v-abb507f0><!--[--><span class="desc" data-v-abb507f0>Next</span><span class="title" data-v-abb507f0>dev</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-f2ef7826 data-v-1f3d8ce5><div class="container" data-v-1f3d8ce5><p class="message" data-v-1f3d8ce5>The document is being improved. Suggestions are welcome.</p><p class="copyright" data-v-1f3d8ce5>© 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\":\"B8-f9FUH\",\"dev_api_azure_onebot.md\":\"AF08dydV\",\"dev_api_config.md\":\"Cfe3T77C\",\"dev_api_constants.md\":\"CzodSzEx\",\"dev_api_deal_latex.md\":\"TC9acXCk\",\"dev_api_dev.md\":\"xtZBfvCK\",\"dev_api_hooks.md\":\"Oex5Osbq\",\"dev_api_hunyuan.md\":\"cwjzNkK4\",\"dev_api_index.md\":\"Cm--m-dj\",\"dev_api_instances.md\":\"DWIbF7zd\",\"dev_api_marsho.md\":\"DJniAOYm\",\"dev_api_marsho_onebot.md\":\"CKXlpK6h\",\"dev_api_metadata.md\":\"gXVQsfb6\",\"dev_api_models.md\":\"Cbw0SnoS\",\"dev_api_observer.md\":\"DJa7EQIJ\",\"dev_api_plugin_func_call_caller.md\":\"ChdLIn42\",\"dev_api_plugin_func_call_index.md\":\"BYaO0YMf\",\"dev_api_plugin_func_call_models.md\":\"BqDLHq48\",\"dev_api_plugin_func_call_params.md\":\"5fFv65No\",\"dev_api_plugin_func_call_utils.md\":\"Cc06pgce\",\"dev_api_plugin_index.md\":\"D1cv5Bdt\",\"dev_api_plugin_load.md\":\"BThuue9-\",\"dev_api_plugin_models.md\":\"CMGeDMNV\",\"dev_api_plugin_register.md\":\"BcHWky_t\",\"dev_api_plugin_typing.md\":\"Bvzcc0i7\",\"dev_api_plugin_utils.md\":\"C8C60oh0\",\"dev_api_plugins_builtin_tools_chat.md\":\"EYzBkM7q\",\"dev_api_plugins_builtin_tools_file_io.md\":\"D8stO352\",\"dev_api_plugins_builtin_tools_index.md\":\"BZHQ5NNH\",\"dev_api_plugins_builtin_tools_liteyuki.md\":\"DiKmnkxA\",\"dev_api_plugins_builtin_tools_manager.md\":\"W6867JUV\",\"dev_api_plugins_builtin_tools_network.md\":\"CNUPusyd\",\"dev_api_plugins_builtin_tools_utils.md\":\"DDnRSzzR\",\"dev_api_plugins_marshoai_bangumi_index.md\":\"BLootinZ\",\"dev_api_plugins_marshoai_basic_index.md\":\"mHSCujgc\",\"dev_api_plugins_test_marshoai_basic_index.md\":\"Bi6J7R_z\",\"dev_api_plugins_test_marshoai_memory_command.md\":\"Cw7GmcD9\",\"dev_api_plugins_test_marshoai_memory_config.md\":\"DvFLax41\",\"dev_api_plugins_test_marshoai_memory_index.md\":\"ju9E5a1x\",\"dev_api_plugins_test_random_number_generator.md\":\"CzKwNN4y\",\"dev_api_plugins_test_snowykami_testplugin_index.md\":\"UDPC-Uc5\",\"dev_api_plugins_test_weather_demo.md\":\"-1KDL3oN\",\"dev_api_plugins_twisuki_megakits_index.md\":\"SJwjK6ir\",\"dev_api_plugins_twisuki_megakits_mk_morse_code.md\":\"BigBH96X\",\"dev_api_plugins_twisuki_megakits_mk_nya_code.md\":\"C6N9gA91\",\"dev_api_plugins_twisuki_petcat_index.md\":\"CyrVKk9d\",\"dev_api_plugins_twisuki_petcat_pc_cat.md\":\"Cw1-Jasb\",\"dev_api_plugins_twisuki_petcat_pc_info.md\":\"Hinys1nW\",\"dev_api_plugins_twisuki_petcat_pc_shop.md\":\"B1e0ZSxF\",\"dev_api_plugins_twisuki_petcat_pc_token.md\":\"iG64fH2l\",\"dev_api_tools_marshoai_bangumi_index.md\":\"Duze3TVP\",\"dev_api_tools_marshoai_basic_index.md\":\"BMkA9afb\",\"dev_api_tools_marshoai_megakits_index.md\":\"D48xEWt6\",\"dev_api_tools_marshoai_megakits_mk_common.md\":\"oRuEYCjm\",\"dev_api_tools_marshoai_megakits_mk_info.md\":\"DW5Ec5cn\",\"dev_api_tools_marshoai_megakits_mk_morse_code.md\":\"CmkxAt56\",\"dev_api_tools_marshoai_megakits_mk_nya_code.md\":\"BQAd-_l9\",\"dev_api_tools_marshoai_memory_index.md\":\"9yOjTtrq\",\"dev_api_tools_marshoai_meogirl_index.md\":\"BlcRo3XU\",\"dev_api_tools_marshoai_meogirl_mg_info.md\":\"Cay9kOBk\",\"dev_api_tools_marshoai_meogirl_mg_introduce.md\":\"dL8Yu_O0\",\"dev_api_tools_marshoai_meogirl_mg_search.md\":\"Dr7zV14D\",\"dev_api_tools_wip_marshoai_memory_index.md\":\"C1sn4qQD\",\"dev_api_util.md\":\"bY3K-Z46\",\"dev_api_util_hunyuan.md\":\"BcYu4BNL\",\"dev_extension.md\":\"DfIbM0Ke\",\"dev_index.md\":\"BbZ4wGtm\",\"dev_project.md\":\"CI3gYpYz\",\"en_dev_api_azure.md\":\"DT1uzYnu\",\"en_dev_api_azure_onebot.md\":\"CIa2eHTt\",\"en_dev_api_config.md\":\"DGpQD45h\",\"en_dev_api_constants.md\":\"sXFtrMz7\",\"en_dev_api_deal_latex.md\":\"BU7zmmQG\",\"en_dev_api_dev.md\":\"CIcPV23r\",\"en_dev_api_hooks.md\":\"9nKsutJk\",\"en_dev_api_hunyuan.md\":\"BVjQMbdk\",\"en_dev_api_index.md\":\"DIBcHO1C\",\"en_dev_api_instances.md\":\"Uv5rIROF\",\"en_dev_api_marsho.md\":\"HOpLNnBx\",\"en_dev_api_marsho_onebot.md\":\"Cv_1bxx2\",\"en_dev_api_metadata.md\":\"8d7RngMY\",\"en_dev_api_models.md\":\"CMIk6dnq\",\"en_dev_api_observer.md\":\"BwAsqPFr\",\"en_dev_api_plugin_func_call_caller.md\":\"D1KaE3UC\",\"en_dev_api_plugin_func_call_index.md\":\"CmTTjQrG\",\"en_dev_api_plugin_func_call_models.md\":\"Dnwx-XmI\",\"en_dev_api_plugin_func_call_params.md\":\"BL-ziAPI\",\"en_dev_api_plugin_func_call_utils.md\":\"DuAz8SQZ\",\"en_dev_api_plugin_index.md\":\"BAN2fSFL\",\"en_dev_api_plugin_load.md\":\"YI3IFDft\",\"en_dev_api_plugin_models.md\":\"CeUuFWL0\",\"en_dev_api_plugin_register.md\":\"CVhuYwtG\",\"en_dev_api_plugin_typing.md\":\"DAp7dLkh\",\"en_dev_api_plugin_utils.md\":\"BDIdQYrj\",\"en_dev_api_plugins_builtin_tools_chat.md\":\"QouqJGQV\",\"en_dev_api_plugins_builtin_tools_file_io.md\":\"CCeh5NmU\",\"en_dev_api_plugins_builtin_tools_index.md\":\"xlbKSHJ9\",\"en_dev_api_plugins_builtin_tools_liteyuki.md\":\"kig_vkcu\",\"en_dev_api_plugins_builtin_tools_manager.md\":\"CZHHLH84\",\"en_dev_api_plugins_builtin_tools_network.md\":\"CXnNVNQ9\",\"en_dev_api_plugins_builtin_tools_utils.md\":\"Bu_v2fAs\",\"en_dev_api_plugins_marshoai_bangumi_index.md\":\"BR4raixn\",\"en_dev_api_plugins_marshoai_basic_index.md\":\"BHDhYF6r\",\"en_dev_api_plugins_test_marshoai_basic_index.md\":\"CNf_cHwv\",\"en_dev_api_plugins_test_marshoai_memory_command.md\":\"DJp6ESfj\",\"en_dev_api_plugins_test_marshoai_memory_config.md\":\"BecBzvU1\",\"en_dev_api_plugins_test_marshoai_memory_index.md\":\"CWVQytvx\",\"en_dev_api_plugins_test_random_number_generator.md\":\"l4KwKr8L\",\"en_dev_api_plugins_test_snowykami_testplugin_index.md\":\"CMzYsA_L\",\"en_dev_api_plugins_test_weather_demo.md\":\"DOTNnU0K\",\"en_dev_api_plugins_twisuki_megakits_index.md\":\"BBZkPudD\",\"en_dev_api_plugins_twisuki_megakits_mk_morse_code.md\":\"Ctjy9eC6\",\"en_dev_api_plugins_twisuki_megakits_mk_nya_code.md\":\"D71eipr-\",\"en_dev_api_plugins_twisuki_petcat_index.md\":\"BIpL_9Jh\",\"en_dev_api_plugins_twisuki_petcat_pc_cat.md\":\"D0m52CV-\",\"en_dev_api_plugins_twisuki_petcat_pc_info.md\":\"Czl9u8_T\",\"en_dev_api_plugins_twisuki_petcat_pc_shop.md\":\"2qzvX9GG\",\"en_dev_api_plugins_twisuki_petcat_pc_token.md\":\"D_LPS-7c\",\"en_dev_api_tools_marshoai_bangumi_index.md\":\"BK2-XjPA\",\"en_dev_api_tools_marshoai_basic_index.md\":\"D0a7zECz\",\"en_dev_api_tools_marshoai_megakits_index.md\":\"Cwig9I0H\",\"en_dev_api_tools_marshoai_megakits_mk_common.md\":\"CYkF2Uxs\",\"en_dev_api_tools_marshoai_megakits_mk_info.md\":\"rPslsRfQ\",\"en_dev_api_tools_marshoai_megakits_mk_morse_code.md\":\"C95Z6FoT\",\"en_dev_api_tools_marshoai_megakits_mk_nya_code.md\":\"CVIfxCBs\",\"en_dev_api_tools_marshoai_memory_index.md\":\"1g_Xas0k\",\"en_dev_api_tools_marshoai_meogirl_index.md\":\"BvI4oQU-\",\"en_dev_api_tools_marshoai_meogirl_mg_info.md\":\"CuQ0tfy_\",\"en_dev_api_tools_marshoai_meogirl_mg_introduce.md\":\"DMtMdC8y\",\"en_dev_api_tools_marshoai_meogirl_mg_search.md\":\"FJOGG33D\",\"en_dev_api_tools_wip_marshoai_memory_index.md\":\"sjOBGGEt\",\"en_dev_api_util.md\":\"DR5PlfqD\",\"en_dev_api_util_hunyuan.md\":\"CAViCeqk\",\"en_dev_index.md\":\"CIa6awQX\",\"en_index.md\":\"7aTFsCP9\",\"en_start_index.md\":\"Dmsf-u4s\",\"en_start_install.md\":\"BSTaYxbk\",\"index.md\":\"C6IiGKJ9\",\"ja_index.md\":\"C2iyoUqN\",\"start_index.md\":\"DCdaSwFT\",\"start_install-old.md\":\"DPQpdH9A\",\"start_install.md\":\"DZ--LmKB\",\"start_use.md\":\"CKjLHXNX\"}");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\":\"安装 (old)\",\"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>