2025-01-26 11:07:43 +00:00
<!DOCTYPE html>
< html lang = "zh-Hans" dir = "ltr" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
< title > azure | 小棉智能< / title >
< meta name = "description" content = "可爱,智能且易扩展" >
< meta name = "generator" content = "VitePress v1.6.3" >
< link rel = "preload stylesheet" href = "/assets/style.DvoidLlL.css" as = "style" >
< link rel = "preload stylesheet" href = "/vp-icons.css" as = "style" >
2025-02-01 14:50:52 +00:00
< script type = "module" src = "/assets/app.DEVd50K1.js" > < / script >
2025-01-26 11:07:43 +00:00
< link rel = "preload" href = "/assets/inter-roman-latin.Di8DUHzh.woff2" as = "font" type = "font/woff2" crossorigin = "" >
2025-02-01 14:50:52 +00:00
< link rel = "modulepreload" href = "/assets/chunks/theme.0_0tl2Go.js" >
< link rel = "modulepreload" href = "/assets/chunks/framework.AELpvxz7.js" >
< link rel = "modulepreload" href = "/assets/dev_api_azure.md.BWxHkwhT.lean.js" >
2025-01-26 11:07:43 +00:00
< link rel = "icon" type = "image/x-icon" href = "/favicon.ico" >
< script id = "check-dark-mode" > ( ( ) => { const e = localStorage . getItem ( "vitepress-theme-appearance" ) || "auto" , a = window . matchMedia ( "(prefers-color-scheme: dark)" ) . matches ; ( ! e || e === "auto" ? a : e === "dark" ) && document . documentElement . classList . add ( "dark" ) } ) ( ) ; < / script >
< script id = "check-mac-os" > document . documentElement . classList . toggle ( "mac" , /Mac|iPhone|iPod|iPad/i . test ( navigator . platform ) ) ; < / script >
< / head >
< body >
< div id = "app" > < div class = "Layout" data-v-46cada41 > <!-- [ --> <!-- ] --> <!-- [ --> < span tabindex = "-1" data-v-82af304d > < / span > < a href = "#VPContent" class = "VPSkipLink visually-hidden" data-v-82af304d > Skip to content< / a > <!-- ] --> <!-- --> < header class = "VPNav" data-v-46cada41 data-v-0ec1cc98 > < div class = "VPNavBar" data-v-0ec1cc98 data-v-97e37718 > < div class = "wrapper" data-v-97e37718 > < div class = "container" data-v-97e37718 > < div class = "title" data-v-97e37718 > < div class = "VPNavBarTitle has-sidebar" data-v-97e37718 data-v-9620ba61 > < a class = "title" href = "/" data-v-9620ba61 > <!-- [ --> <!-- ] --> <!-- [ --> <!-- [ --> <!-- [ --> < img class = "VPImage dark logo" src = "/marsho-full.svg" alt = "Marsho Logo" data-v-ce14eec4 > <!-- ] --> <!-- [ --> < img class = "VPImage light logo" src = "/marsho-full.svg" alt = "Marsho Logo" data-v-ce14eec4 > <!-- ] --> <!-- ] --> <!-- ] --> < span data-v-9620ba61 > 小棉智能< / span > <!-- [ --> <!-- ] --> < / a > < / div > < / div > < div class = "content" data-v-97e37718 > < div class = "content-body" data-v-97e37718 > <!-- [ --> <!-- ] --> < div class = "VPNavBarSearch search" data-v-97e37718 > <!-- --> < / div > < nav aria-labelledby = "main-nav-aria-label" class = "VPNavBarMenu menu" data-v-97e37718 data-v-fd0d02da > < span id = "main-nav-aria-label" class = "visually-hidden" data-v-fd0d02da > Main Navigation < / span > <!-- [ --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/" tabindex = "0" data-v-fd0d02da data-v-c7cdc412 > <!-- [ --> < span data-v-c7cdc412 > 家< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/start/use" tabindex = "0" data-v-fd0d02da data-v-c7cdc412 > <!-- [ --> < span data-v-c7cdc412 > 使用< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/dev/extension" tabindex = "0" data-v-fd0d02da data-v-c7cdc412 > <!-- [ --> < span data-v-c7cdc412 > 开发< / span > <!-- ] --> < / a > <!-- ] --> <!-- ] --> < / nav > < div class = "VPFlyout VPNavBarTranslations translations" data-v-97e37718 data-v-da60b316 data-v-3174d294 > < button type = "button" class = "button" aria-haspopup = "true" aria-expanded = "false" aria-label = "语言" data-v-3174d294 > < span class = "text" data-v-3174d294 > < span class = "vpi-languages option-icon" data-v-3174d294 > < / span > <!-- --> < span class = "vpi-chevron-down text-icon" data-v-3174d294 > < / span > < / span > < / button > < div class = "menu" data-v-3174d294 > < div class = "VPMenu" data-v-3174d294 data-v-90ca5f1b > <!-- --> <!-- [ --> <!-- [ --> < div class = "items" data-v-da60b316 > < p class = "title" data-v-da60b316 > 简体中文< / p > <!-- [ --> < div class = "VPMenuLink" data-v-da60b316 data-v-5a3b110a > < a class = "VPLink link" href = "/en/dev/api/azure" data-v-5a3b110a > <!-- [ --> < span data-v-5a3b110a > English< / span > <!-- ] --> < / a > < / div > < div class = "VPMenuLink" data-v-da60b316 data-v-5a3b110a > < a class = "VPLink link" href = "/ja/dev/api/azure" data-v-5a3b110a > <!-- [ --> < span data-v-5a3b110a > 日本語< / span > <!-- ] --> < / a > < / div > <!-- ] --> < / div > <!-- ] --> <!-- ] --> < / div > < / div > < / div > < div class = "VPNavBarAppearance appearance" data-v-97e37718 data-v-b569c26a > < button class = "VPSwitch VPSwitchAppearance" type = "button" role = "switch" title aria-checked = "false" data-v-b569c26a data-v-a8d11977 data-v-d4fb1d40 > < span class = "check" data-v-d4fb1d40 > < span class = "icon" data-v-d4fb1d40 > <!-- [ --> < span class = "vpi-sun sun" data-v-a8d11977 > < / span > < span class = "vpi-moon moon" data-v-a8d11977 > < / span > <!-- ] --> < / span > < / span > < / button > < / div > < div class = "VPSocialLinks VPNavBarSocialLinks social-links" data-v-97e37718 data-v-25e71cd1 data-v-93344165 > <!-- [ --> < a class = "VPSocialLink no-icon" href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai" aria-label = "github" target = "_blank" rel = "noopener" data-v-93344165 data-v-b8870a62 > < span class = "vpi-social-github" > < / span > < / a > < a class = "VPSocialLink no-icon" href = "https://git.liteyuki.icu/LiteyukiStudio/nonebot-plugin-marshoai" aria-label target = "_blank" rel = "noopener" data-v-93344165 data-v-b8870a62 > < svg t = "1725391346807" class = "icon" viewBox = "0 0 1025 1024" version = "1.1" xmlns = "http://www.w3.org/2000/svg" p-id = "5067" width = "256" height = "256" > < path d = "M1004.692673 466 . 396616l-447 . 094409-447 . 073929c-25 . 743103-25 . 763582-67 . 501405-25 . 763582-93 . 264987 0l-103 . 873521 103 . 873521 78 . 171378 78 . 171378c12 . 533635-6 . 00058 26 . 562294-9 . 359266 41 . 389
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_at< / span > < / span > < / code > < / pre > < / div > < / details > < h3 id = "var-target-list" tabindex = "-1" > var < code > target_list< / code > < a class = "header-anchor" href = "#var-target-list" aria-label = "Permalink to "var `target_list`"" > < / a > < / h3 > < ul > < li > < p > < strong > 说明< / strong > : 记录需保存历史上下文的列表< / p > < / li > < li > < p > < strong > 默认值< / strong > : < code > []< / code > < / p > < / li > < / ul > < hr > < p > < code > @add_usermsg_cmd.handle()< / code > < / p > < h3 id = "async-func-add-usermsg-target-msgtarget-arg-message-commandarg" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > add_usermsg(target: MsgTarget, arg: Message = CommandArg())< / code > < a class = "header-anchor" href = "#async-func-add-usermsg-target-msgtarget-arg-message-commandarg" aria-label = "Permalink to "***async func*** `add_usermsg(target: MsgTarget, arg: Message = CommandArg())`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L113" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @add_usermsg_cmd.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > add_usermsg< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (target: MsgTarget, arg: Message< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > CommandArg()):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > :=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > arg.extract_plain_text()):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.append(UserMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > content< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > msg).as_dict(), target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > add_usermsg_cmd.finish(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 已添加用户消息' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < p > < code > @add_assistantmsg_cmd.handle()< / code > < / p > < h3 id = "async-func-add-assistantmsg-target-msgtarget-arg-message-commandarg" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > add_assistantmsg(target: MsgTarget, arg: Message = CommandArg())< / code > < a class = "header-anchor" href = "#async-func-add-assistantmsg-target-msgtarget-arg-message-commandarg" aria-label = "Permalink to "***async func*** `add_assistantmsg(target: MsgTarget, arg: Message = CommandArg())`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L120" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @add_assistantmsg_cmd.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > add_assistantmsg< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (target: MsgTarget, arg: Message< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > CommandArg()):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > :=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > arg.extract_plain_text()):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.append(AssistantMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > content< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > msg).as_dict(), target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > add_assistantmsg_cmd.finish(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 已添加助手消息' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < p > < code > @praises_cmd.handle()< / code > < / p > < h3 id = "async-func-praises" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > praises()< / code > < a class = "header-anchor" href = "#async-func-praises" aria-label = "Permalink to "***async func*** `praises()`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L129" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @praises_cmd.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > praises< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ():< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > praises_cmd.finish(build_praises())< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < p > < code > @contexts_cmd.handle()< / code > < / p > < h3 id = "async-func-contexts-target-msgtarget" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > contexts(target: MsgTarget)< / code > < a class = "header-anchor" href = "#async-func-contexts-target-msgtarget" aria-label = "Permalink to "***async func*** `contexts(target: MsgTarget)`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L135" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @contexts_cmd.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > contexts< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (target: MsgTarget):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > backup_context < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_backup_context(target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > backup_context:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.set_context(backup_context, target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > contexts_cmd.finish(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (context.build(target.id, target.private)))< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < p > < code > @save_context_cmd.handle()< / code > < / p > < h3 id = "async-func-save-context-target-msgtarget-arg-message-commandarg" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > save_context(target: MsgTarget, arg: Message = CommandArg())< / code > < a class = "header-anchor" href = "#async-func-save-context-target-msgtarget-arg-message-commandarg" aria-label = "Permalink to "***async func*** `save_context(target: MsgTarget, arg: Message = CommandArg())`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L143" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @save_context_cmd.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > save_context< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (target: MsgTarget, arg: Message< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > CommandArg()):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > contexts_data < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.build(target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > save_context_cmd.finish(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 暂无上下文可以保存' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > :=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > arg.extract_plain_text()):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > save_context_to_json(msg, contexts_data, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' contexts' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > save_context_cmd.finish(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 已保存上下文' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < p > < code > @load_context_cmd.handle()< / code > < / p > < h3 id = "async-func-load-context-target-msgtarget-arg-message-commandarg" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > load_context(target: MsgTarget, arg: Message = CommandArg())< / code > < a class = "header-anchor" href = "#async-func-load-context-target-msgtarget-arg-message-commandarg" aria-label = "Permalink to "***async func*** `load_context(target: MsgTarget, arg: Message = CommandArg())`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L153" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @load_context_cmd.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > load_context< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (target: MsgTarget, arg: Message< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > CommandArg()):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > :=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > arg.extract_plain_text()):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_backup_context(target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.set_context(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > load_context_from_json(msg, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' contexts' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ), target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > load_context_cmd.finish(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 已加载并覆盖上下文' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < p > < code > @resetmem_cmd.handle()< / code > < / p > < h3 id = "async-func-resetmem-target-msgtarget" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > resetmem(target: MsgTarget)< / code > < a class = "header-anchor" href = "#async-func-resetmem-target-msgtarget" aria-label = "Permalink to "***async func*** `resetmem(target: MsgTarget)`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L165" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @resetmem_cmd.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > resetmem< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (target: MsgTarget):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [target.id, target.private] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_list:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_list.append([target.id, target.private])< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.reset(target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > resetmem_cmd.finish(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 上下文已重置' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < p > < code > @changemodel_cmd.handle()< / code > < / p > < h3 id = "async-func-changemodel-arg-message-commandarg" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > changemodel(arg: Message = CommandArg())< / code > < a class = "header-anchor" href = "#async-func-changemodel-arg-message-commandarg" aria-label = "Permalink to "***async func*** `changemodel(arg: Message = CommandArg())`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L173" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @changemodel_cmd.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > changemodel< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (arg: Message< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > CommandArg()):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > global< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (model < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > :=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > arg.extract_plain_text()):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > changemodel_cmd.finish(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 已切换' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < p > < code > @nickname_cmd.handle()< / code > < / p > < h3 id = "async-func-nickname-event-event-name-none" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > nickname(event: Event, name = None)< / code > < a class = "header-anchor" href = "#async-func-nickname-event-event-name-none" aria-label = "Permalink to "***async func*** `nickname(event: Event, name = None)`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L181" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @nickname_cmd.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > nickname< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (event: Event, name< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nicknames < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_nicknames()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_id < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > event.get_user_id()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > name:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_id < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nicknames:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_cmd.finish(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 你未设置昵称' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_cmd.finish(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 你的昵称为:' < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (nicknames[user_id]))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > name < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ==< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' reset' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > set_nickname(user_id, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_cmd.finish(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 已重置昵称' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > set_nickname(user_id, name)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_cmd.finish(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 已设置昵称为:' < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > name)< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < p > < code > @refresh_data_cmd.handle()< / code > < / p > < h3 id = "async-func-refresh-data" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > refresh_data()< / code > < a class = "header-anchor" href = "#async-func-refresh-data" aria-label = "Permalink to "***async func*** `refresh_data()`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L197" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @refresh_data_cmd.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > refresh_data< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ():< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > refresh_nickname_json()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > refresh_praises_json()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > refresh_data_cmd.finish(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 已刷新数据' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < p > < code > @marsho_at.handle()< / code > < code > @marsho_cmd.handle()< / code > < / p > < h3 id = "async-func-marsho-target-msgtarget-event-event-text-optional-unimsg-none" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > marsho(target: MsgTarget, event: Event, text: Optional[UniMsg] = None)< / code > < a class = "header-anchor" href = "#async-func-marsho-target-msgtarget-event-event-text-optional-unimsg-none" aria-label = "Permalink to "***async func*** `marsho(target: MsgTarget, event: Event, text: Optional[UniMsg] = None)`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L205" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @marsho_at.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @marsho_cmd.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > marsho< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (target: MsgTarget, event: Event, text: Optional[UniMsg]< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > global< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_list< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > event.get_message().extract_plain_text() < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > and< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > text < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > and< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > event.get_message().extract_plain_text() < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > !=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_default_name):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > text < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > event.get_message()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > text:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(metadata.usage < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \n< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > 当前使用的模型:' < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name).send()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > marsho_cmd.finish(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > INTRODUCTION< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > try< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_id < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > event.get_user_id()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nicknames < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_nicknames()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_nickname < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nicknames.get(user_id, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_nickname < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > !=< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_prompt < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \n< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > *此消息的说话者:< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_nickname< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > *' < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_prompt < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_enable_nickname_tip:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " *你未设置自己的昵称。推荐使用' nickname [昵称]' 命令设置昵称来获得个性化(可能)回答。" < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ).send()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > is_support_image_model < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name.lower() < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > SUPPORT_IMAGE_MODELS< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_additional_image_models< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > is_reasoning_model < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name.lower() < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > REASONING_MODELS< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > is_support_image_model < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > i < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > text:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > i.type < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ==< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' text' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > is_support_image_model:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [TextContentItem(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > text< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > i.data[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' text' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_prompt)]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +=< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (i.data[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' text' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_prompt)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > elif< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > i.type < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ==< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' image' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > is_support_image_model:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg.append(ImageContentItem(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > image_url< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ImageUrl(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > url< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_image_b64(i.data[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' url' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ])))))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > elif< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_enable_support_image_tip:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' *此模型不支持图片处理。' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ).send()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > backup_context < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_backup_context(target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > backup_context:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.set_context(backup_context, target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > logger.info(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 已恢复会话 < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target.id< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > 的上下文备份~' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context_msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.build(target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > is_reasoning_model:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context_msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [get_prompt()] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context_msg< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > make_chat(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > client< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > client, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > model_name< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > msg< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context_msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [UserMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > content< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg)], < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > tools< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tools.get_tools_list())< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response.choices[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 0< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' finish_reason' < / 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;" > CompletionsFinishReason.< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > STOPPED< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.append(UserMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > content< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg).as_dict(), target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.append(choice.message.as_dict(), target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [target.id, target.private] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_list:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_list.append([target.id, target.private])< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_enable_richtext_parse:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > parse_richtext(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (choice.message.content))).send(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > reply_to< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > True< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (choice.message.content)).send(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > reply_to< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > True< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > elif< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' finish_reason' < / 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;" > CompletionsFinishReason.< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > CONTENT_FILTERED< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' *已被内容过滤器过滤。请调整聊天内容后重试。' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ).send(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > reply_to< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > True< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > elif< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' finish_reason' < / 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;" > CompletionsFinishReason.< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > TOOL_CALLS< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > []< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > while< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice.message.tool_calls < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > !=< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_msg.append(AssistantMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > tool_calls< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response.choices[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 0< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ].message.tool_calls))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_call < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice.message.tool_calls:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > isinstance< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (tool_call, ChatCompletionsToolCall):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > function_args < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.loads(tool_call.function.arguments.replace(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " ' " < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' " ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > logger.info(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 调用函数 < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_call.function.name< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ,参数为 < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > function_args< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 调用函数 < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_call.function.name< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ,参数为 < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > function_args< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ).send()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > func_return < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tools.call(tool_call.function.name, function_args)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_msg.append(ToolMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > tool_call_id< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_call.id, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > content< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > func_return))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > make_chat(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > client< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > client, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > model_name< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > msg< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context_msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [UserMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > content< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg)] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_msg, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > tools< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tools.get_tools_list())< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response.choices[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 0< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' finish_reason' < / 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;" > CompletionsFinishReason.< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > STOPPED< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.append(UserMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > content< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg).as_dict(), target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.append(choice.message.as_dict(), target.id, target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_enable_richtext_parse:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > parse_richtext(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (choice.message.content))).send(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > reply_to< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > True< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (choice.message.content)).send(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > reply_to< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > True< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > marsho_cmd.finish(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 意外的完成原因:< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' finish_reason' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > marsho_cmd.finish(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 意外的完成原因:< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' finish_reason' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > except< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > Exception< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > e:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (e) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > suggest_solution(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (e))).send()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > traceback.print_exc()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < p > < code > @driver.on_shutdown< / code > < / p > < h3 id = "async-func-auto-backup-context" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > auto_backup_context()< / code > < a class = "header-anchor" href = "#async-func-auto-backup-context" aria-label = "Permalink to "***async func*** `auto_backup_context()`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L392" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @driver.on_shutdown< / 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_backup_context< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ():< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_info < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_list:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_id, target_private < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_info< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > contexts_data < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context.build(target_id, target_private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_private:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_uid < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' private_' < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_id< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_uid < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' group_' < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_id< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > save_context_to_json(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' back_up_context_< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_uid< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , contexts_data, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' contexts/backup' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > logger.info(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 已保存会话 < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_id< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > 的上下文备份,将在下次对话时恢复~' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < p > < code > @poke_notify.handle()< / code > < / p > < h3 id = "async-func-poke-event-event" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > poke(event: Event)< / code > < a class = "header-anchor" href = "#async-func-poke-event-event" aria-label = "Permalink to "***async func*** `poke(event: Event)`"" > < / a > < / h3 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/azure.py#L363" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > @poke_notify.handle< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > poke< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (event: Event):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_id < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > event.get_user_id()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nicknames < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_nicknames()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_nickname < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nicknames.get(user_id, < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > try< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_poke_suffix < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > !=< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > make_chat(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > client< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > client, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > model_name< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > msg< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [get_prompt(), UserMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > content< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' *< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_nickname< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }{< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_poke_suffix< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )])< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response.choices[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 0< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' finish_reason' < / 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;" > CompletionsFinishReason.< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > STOPPED< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (choice.message.content)).send(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > at_sender< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > True< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > except< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > Exception< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > as< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > e:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (e) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > suggest_solution(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (e))).send()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > traceback.print_exc()< / span > < / span >
2025-01-27 11:53:33 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < / span > < / code > < / pre > < / div > < / details > < h3 id = "var-text" tabindex = "-1" > var < code > text< / code > < a class = "header-anchor" href = "#var-text" aria-label = "Permalink to "var `text`"" > < / a > < / h3 > < ul > < li > < p > < strong > 说明< / strong > : type: ignore< / p > < / li > < li > < p > < strong > 默认值< / strong > : < code > event.get_message()< / code > < / p > < / li > < / ul > < / div > < / div > < / main > < footer class = "VPDocFooter" data-v-03864d9f data-v-79bc013e > <!-- [ --> <!-- ] --> < div class = "edit-info" data-v-79bc013e > < div class = "edit-link" data-v-79bc013e > < a class = "VPLink link vp-external-link-icon no-icon edit-link-button" href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai//azure.py" target = "_blank" rel = "noreferrer" data-v-79bc013e > <!-- [ --> < span class = "vpi-square-pen edit-link-icon" data-v-79bc013e > < / span > 编辑此页面<!-- ] --> < / a > < / div > < div class = "last-updated" data-v-79bc013e > < p class = "VPLastUpdated" data-v-79bc013e data-v-dc3d54fe > Last updated: < time datetime = "2024-12-14T11:16:59.000Z" data-v-dc3d54fe > < / time > < / p > < / div > < / div > < nav class = "prev-next" aria-labelledby = "doc-footer-aria-label" data-v-79bc013e > < span class = "visually-hidden" id = "doc-footer-aria-label" data-v-79bc013e > Pager< / span > < div class = "pager" data-v-79bc013e > < a class = "VPLink link pager-link prev" href = "/dev/api/index" data-v-79bc013e > <!-- [ --> < span class = "desc" data-v-79bc013e > 上一页< / span > < span class = "title" data-v-79bc013e > api< / span > <!-- ] --> < / a > < / div > < div class = "pager" data-v-79bc013e > < a class = "VPLink link pager-link next" href = "/dev/api/azure_onebot" data-v-79bc013e > <!-- [ --> < span class = "desc" data-v-79bc013e > 下一页< / span > < span class = "title" data-v-79bc013e > azure_onebot< / span > <!-- ] --> < / a > < / div > < / nav > < / footer > <!-- [ --> <!-- ] --> < / div > < / div > < / div > <!-- [ --> <!-- ] --> < / div > < / div > < footer class = "VPFooter has-sidebar" data-v-46cada41 data-v-5dbe423c > < div class = "container" data-v-5dbe423c > < p class = "message" data-v-5dbe423c > 文档完善中,欢迎提出建议或帮助我们完善。< / p > < p class = "copyright" data-v-5dbe423c > © 2024 < a href = "https://liteyuki.icu" target = "_blank" > Liteyuki Studio< / a > < / p > < / div > < / footer > <!-- [ --> <!-- ] --> < / div > < / div >
2025-02-01 14:50:52 +00:00
< script > w i n d o w . _ _ V P _ H A S H _ M A P _ _ = J S O N . p a r s e ( " { \ " d e v _ a p i _ a z u r e . m d \ " : \ " B W x H k w h T \ " , \ " d e v _ a p i _ a z u r e _ o n e b o t . m d \ " : \ " B s J h g z t q \ " , \ " d e v _ a p i _ c o n f i g . m d \ " : \ " B Z Q y g K Z M \ " , \ " d e v _ a p i _ c o n s t a n t s . m d \ " : \ " B Q X k H k c u \ " , \ " d e v _ a p i _ d e a l _ l a t e x . m d \ " : \ " C c b P s z x u \ " , \ " d e v _ a p i _ d e v . m d \ " : \ " D 3 b R 8 y U w \ " , \ " d e v _ a p i _ h o o k s . m d \ " : \ " D x 3 J i N Y l \ " , \ " d e v _ a p i _ h u n y u a n . m d \ " : \ " 8 4 Z O S 2 d B \ " , \ " d e v _ a p i _ i n d e x . m d \ " : \ " C K z 7 r 0 x O \ " , \ " d e v _ a p i _ i n s t a n c e s . m d \ " : \ " D 0 E G V k F U \ " , \ " d e v _ a p i _ m a r s h o . m d \ " : \ " C b Y M Y 9 t T \ " , \ " d e v _ a p i _ m a r s h o _ o n e b o t . m d \ " : \ " D V P r H w s F \ " , \ " d e v _ a p i _ m e t a d a t a . m d \ " : \ " D c W s j A z N \ " , \ " d e v _ a p i _ m o d e l s . m d \ " : \ " - P F e 3 x V 6 \ " , \ " d e v _ a p i _ o b s e r v e r . m d \ " : \ " B x J v d 7 G M \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ c a l l e r . m d \ " : \ " B - A f o f a _ \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ i n d e x . m d \ " : \ " D J q a E a l q \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ m o d e l s . m d \ " : \ " B z V X 8 d e r \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ p a r a m s . m d \ " : \ " G s A h b A n t \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ u t i l s . m d \ " : \ " C v 6 v s u i A \ " , \ " d e v _ a p i _ p l u g i n _ i n d e x . m d \ " : \ " C 9 m f k 9 H L \ " , \ " d e v _ a p i _ p l u g i n _ l o a d . m d \ " : \ " B a K Q u U H B \ " , \ " d e v _ a p i _ p l u g i n _ m o d e l s . m d \ " : \ " T m 7 t - i k W \ " , \ " d e v _ a p i _ p l u g i n _ r e g i s t e r . m d \ " : \ " D S L 2 E G T F \ " , \ " d e v _ a p i _ p l u g i n _ t y p i n g . m d \ " : \ " C B P W U M V A \ " , \ " d e v _ a p i _ p l u g i n _ u t i l s . m d \ " : \ " B T f S K G u q \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ c h a t . m d \ " : \ " a F a l 8 G o w \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ f i l e _ i o . m d \ " : \ " B K z 6 h g 1 O \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ i n d e x . m d \ " : \ " - V V 3 V 6 2 O \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ l i t e y u k i . m d \ " : \ " D z K H _ V l V \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ m a n a g e r . m d \ " : \ " B u e n S v B P \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ n e t w o r k . m d \ " : \ " d F 5 t b L p w \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ u t i l s . m d \ " : \ " C A z q H 2 x 9 \ " , \ " d e v _ a p i _ p l u g i n s _ m a r s h o a i _ b a n g u m i _ i n d e x . m d \ " : \ " 1 7 V F _ f L c \ " , \ " d e v _ a p i _ p l u g i n s _ m a r s h o a i _ b a s i c _ i n d e x . m d \ " : \ " T T N g R 0 h C \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ m a r s h o a i _ b a s i c _ i n d e x . m d \ " : \ " B R O 5 v i i M \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ m a r s h o a i _ m e m o r y _ c o m m a n d . m d \ " : \ " B w e a v y s v \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ m a r s h o a i _ m e m o r y _ c o n f i g . m d \ " : \ " 1 M j w o s s B \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ m a r s h o a i _ m e m o r y _ i n d e x . m d \ " : \ " D T 7 8 Y G q o \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ r a n d o m _ n u m b e r _ g e n e r a t o r . m d \ " : \ " C M x d t M H P \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ s n o w y k a m i _ t e s t p l u g i n _ i n d e x . m d \ " : \ " C X b i H E Y p \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ w e a t h e r _ d e m o . m d \ " : \ " D q U _ u n W p \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ m e g a k i t s _ i n d e x . m d \ " : \ " - w o i 3 N l a \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ m e g a k i t s _ m k _ m o r s e _ c o d e . m d \ " : \ " D c F U I H k A \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ m e g a k i t s _ m k _ n y a _ c o d e . m d \ " : \ " C 3 b f 8 s j b \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ i n d e x . m d \ " : \ " D r B G E x m f \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ p c _ c a t . m d \ " : \ " C H i Y X - s A \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ p c _ i n f o . m d \ " : \ " B f 0 k h 5 d 7 \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ p c _ s h o p . m d \ " : \ " D j O u x - B u \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ p c _ t o k e n . m d \ " : \ " C U o n l Z E g \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ b a n g u m i _ i n d e x . m d \ " : \ " A g X 3 p x X S \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ b a s i c _ i n d e x . m d \ " : \ " C h _ S i i r r \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ i n d e x . m d \ " : \ " C 7 W r e w v p \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ m k _ c o m m o n . m d \ " : \ " B M 5 e S R u V \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ m k _ i n f o . m d \ " : \ " C 1 k l e N H U \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ m k _ m o r s e _ c o d e . m d \ " : \ " C k 4 f c Y 8 0 \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ m k _ n y a _ c o d e . m d \ " : \ " B D - g e e Z X \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e m o r y _ i n d e x . m d \ " : \ " D 1 2 A T f Z V \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e o g i r l _ i n d e x . m d \ " : \ " D 3 2 9 U t l F \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e o g i r l _ m g _ i n f o . m d \ " : \ " B G x 2 x H o 4 \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e o g i r l _ m g _ i n t r o d u c e . m d \ " : \ " D F m M Y 7 u c \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e o g i r l _ m g _ s e a r c h . m d \ " : \ " D Q c D O b 4 9 \ " , \ " d e v _ a p i _ t o o l s _ w i p _ m a r s h o a i _ m e m o r y _ i n d e x . m d \ " : \ " C V H 4 X m i E \ " , \ " d e v _ a p i _ u t i l . m d \ " : \ " C h L Z x y 2 z \ " , \ " d e v _ a p i _ u t i l _ h u n y u a n . m d \ " : \ " B K S F 1 J N E \ " , \ " d e v _ e x t e n s i o n . m d \ " : \ " M e X 5 S X J C \ " , \ " d e v _ i n d e x . m d \ " : \ " Z M O Y Q W T r \ " , \ " d e v _ p r o j e c t . m d \ " : \ " C T 7 W i 5 S p \ " , \ " e n _ d e v _ a p i _ a z u r e . m d \ " : \ " D 2 N k L S s 5 \ " , \ " e n _ d e v _ a p i _ a z u r e _ o n e b o t . m d \ " : \ " C k p s H N A 3 \ " , \ " e n _ d e v _ a p i _ c o n f i g . m d \ " : \ " D e Z 7 D e Z C \ " , \ " e n _ d e v _ a p i _ c o n s t a n t s . m d \ " : \ " 9 c K - 2 R n d \ " , \ " e n _ d e v _ a p i _ d e a l _ l a t e x . m d \ " : \ " C D N h g y q b \ " , \ " e n _ d e v _ a p i _ d e v . m d \ " : \ " D w Q w A Q 2 O \ " , \ " e n _ d e v _ a p i _ h o o k s . m d \ " : \ " B 8 f u Q m I t \ " , \ " e n _ d e v _ a p i _ h u n y u a n . m d \ " : \ " B R E w 4 B H 2 \ " , \ " e n _ d e v _ a p i _ i n d e x . m d \ " : \ " D 6 w q E 3 G o \ " , \ " e n _ d e v _ a p i _ i n s t a n c e s . m d \ " : \ " C - r Z E p V a \ " , \ " e n _ d e v _ a p i _ m a r s h o . m d \ " : \ " D s X d R 6 y D \ " , \ " e n _ d e v _ a p i _ m a r s h o _ o n e b o t . m d \ " : \ " D n S Z O f p 1 \ " , \ " e n _ d e v _ a p i _ m e t a d a t a . m d \ " : \ " D 7 O E Y a k w \ " , \ " e n _ d e v _ a p i _ m o d e l s . m d \ " : \ " u d 2 _ n M f y \ " , \ " e n _ d e v _ a p i _ o b s e r v e r . m d \ " : \ " B u a v w l t n \ " , \ " e n _ d e v _ a
2025-01-26 11:07:43 +00:00
< / body >
< / html >