mirror of
https://github.com/zhamao-robot/zhamao-framework.git
synced 2026-03-19 13:44:52 +08:00
155 lines
80 KiB
HTML
155 lines
80 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-US">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||
<title>OneBot 机器人上下文 | 炸毛框架 v3</title>
|
||
<meta name="description" content="">
|
||
<meta name="generator" content="VuePress 1.9.10">
|
||
<link rel="icon" href="/logo_trans.png">
|
||
<script>
|
||
var _hmt = _hmt || [];
|
||
(function () {
|
||
var hm = document.createElement("script");
|
||
hm.src = "https://hm.baidu.com/hm.js?f0f276cefa10aa31a20ae3815a50b795";
|
||
var s = document.getElementsByTagName("script")[0];
|
||
s.parentNode.insertBefore(hm, s);
|
||
})();
|
||
</script>
|
||
<meta name="description" content="一个高性能聊天机器人 + Web 框架">
|
||
<link rel="preload" href="/assets/css/0.styles.de075592.css" as="style"><link rel="preload" href="/assets/js/app.cf958133.js" as="script"><link rel="preload" href="/assets/js/2.4c04991c.js" as="script"><link rel="preload" href="/assets/js/1.d8755a39.js" as="script"><link rel="preload" href="/assets/js/29.5427ad45.js" as="script"><link rel="preload" href="/assets/js/18.26c46c49.js" as="script"><link rel="prefetch" href="/assets/js/10.960912c3.js"><link rel="prefetch" href="/assets/js/11.cd171694.js"><link rel="prefetch" href="/assets/js/12.ff9ca1d1.js"><link rel="prefetch" href="/assets/js/13.a56deac8.js"><link rel="prefetch" href="/assets/js/14.b222a011.js"><link rel="prefetch" href="/assets/js/15.31489867.js"><link rel="prefetch" href="/assets/js/16.e921dbc4.js"><link rel="prefetch" href="/assets/js/17.58f730d3.js"><link rel="prefetch" href="/assets/js/19.ee0bfd3b.js"><link rel="prefetch" href="/assets/js/20.bb3578b8.js"><link rel="prefetch" href="/assets/js/21.e66f7fe5.js"><link rel="prefetch" href="/assets/js/22.cba8ca48.js"><link rel="prefetch" href="/assets/js/23.cb49f41c.js"><link rel="prefetch" href="/assets/js/24.d95b175a.js"><link rel="prefetch" href="/assets/js/25.b0d69869.js"><link rel="prefetch" href="/assets/js/26.8e7089c0.js"><link rel="prefetch" href="/assets/js/27.333a53a1.js"><link rel="prefetch" href="/assets/js/28.df4b871c.js"><link rel="prefetch" href="/assets/js/3.07fc018e.js"><link rel="prefetch" href="/assets/js/30.7cb7445a.js"><link rel="prefetch" href="/assets/js/31.5c4bb546.js"><link rel="prefetch" href="/assets/js/32.7fc05474.js"><link rel="prefetch" href="/assets/js/33.9684a4f8.js"><link rel="prefetch" href="/assets/js/34.83e32a28.js"><link rel="prefetch" href="/assets/js/35.95d03df6.js"><link rel="prefetch" href="/assets/js/36.80aace42.js"><link rel="prefetch" href="/assets/js/37.1eaed2ee.js"><link rel="prefetch" href="/assets/js/38.75fa7a1c.js"><link rel="prefetch" href="/assets/js/39.117f5802.js"><link rel="prefetch" href="/assets/js/4.6623271b.js"><link rel="prefetch" href="/assets/js/40.57eba153.js"><link rel="prefetch" href="/assets/js/41.89c4a7c8.js"><link rel="prefetch" href="/assets/js/42.d8f92f99.js"><link rel="prefetch" href="/assets/js/43.5ee83631.js"><link rel="prefetch" href="/assets/js/44.c09b5b0c.js"><link rel="prefetch" href="/assets/js/45.bd850606.js"><link rel="prefetch" href="/assets/js/46.732b1cef.js"><link rel="prefetch" href="/assets/js/47.2a872d0d.js"><link rel="prefetch" href="/assets/js/48.959e18f4.js"><link rel="prefetch" href="/assets/js/49.a9bb32f7.js"><link rel="prefetch" href="/assets/js/5.073233e8.js"><link rel="prefetch" href="/assets/js/50.ca90a854.js"><link rel="prefetch" href="/assets/js/51.79142530.js"><link rel="prefetch" href="/assets/js/52.fe63ad16.js"><link rel="prefetch" href="/assets/js/53.ed84845a.js"><link rel="prefetch" href="/assets/js/54.3ab7e492.js"><link rel="prefetch" href="/assets/js/55.9028e407.js"><link rel="prefetch" href="/assets/js/56.8173f798.js"><link rel="prefetch" href="/assets/js/57.2166b068.js"><link rel="prefetch" href="/assets/js/58.7c52b6bf.js"><link rel="prefetch" href="/assets/js/59.e9965a7b.js"><link rel="prefetch" href="/assets/js/60.f277436c.js"><link rel="prefetch" href="/assets/js/61.3712f8fe.js"><link rel="prefetch" href="/assets/js/8.899a0731.js"><link rel="prefetch" href="/assets/js/9.e2e8da12.js"><link rel="prefetch" href="/assets/js/vendors~docsearch.303532f0.js">
|
||
<link rel="stylesheet" href="/assets/css/0.styles.de075592.css">
|
||
</head>
|
||
<body>
|
||
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="ant-row"><div class="nav-button"><i aria-label="icon: bars" class="anticon anticon-bars"><svg viewBox="0 0 1024 1024" focusable="false" data-icon="bars" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0z"></path></svg></i> <span></span></div> <div class="ant-col ant-col-xs-24 ant-col-sm-24 ant-col-md-6 ant-col-lg-6 ant-col-xl-5 ant-col-xxl-4"><a href="/" class="router-link-active home-link"><img src="/logo_trans.png" alt="炸毛框架 v3" class="logo"> <span class="site-name">炸毛框架 v3</span></a> <div class="search-box mobile-search"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div></div> <div class="nav-space-between ant-col ant-col-xs-0 ant-col-sm-0 ant-col-md-18 ant-col-lg-18 ant-col-xl-19 ant-col-xxl-20"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><ul role="menu" id="nav" class="ant-menu ant-menu-horizontal ant-menu-root ant-menu-light"><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="/guide/">
|
||
指南
|
||
</a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="/event/">
|
||
事件
|
||
</a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item ant-menu-item-selected"><a href="/components/bot/bot-context.html" aria-current="page" class="router-link-exact-active router-link-active">
|
||
组件
|
||
</a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="/plugins/management.html">
|
||
插件
|
||
</a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="/advanced/">
|
||
进阶
|
||
</a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="/update/v3.html">
|
||
更新日志
|
||
</a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="/doxy/" target="_blank">
|
||
API 文档
|
||
<i aria-label="icon: link" class="anticon anticon-link"><svg viewBox="64 64 896 896" focusable="false" data-icon="link" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M574 665.4a8.03 8.03 0 0 0-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 0 0-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 0 0 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 0 0 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 0 0-11.3 0L372.3 598.7a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z"></path></svg></i></a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="https://docs-v2.zhamao.xin/" target="_blank">
|
||
炸毛框架 v2
|
||
<i aria-label="icon: link" class="anticon anticon-link"><svg viewBox="64 64 896 896" focusable="false" data-icon="link" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M574 665.4a8.03 8.03 0 0 0-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 0 0-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 0 0 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 0 0 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 0 0-11.3 0L372.3 598.7a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z"></path></svg></i></a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="visibility:hidden;position:absolute;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li></ul> <ul class="extra-group"><li><a href="https://github.com/zhamao-robot/zhamao-framework" target="_blank" rel="noopener noreferrer" class="repo-link"><i aria-label="icon: github" class="anticon anticon-github"><svg viewBox="64 64 896 896" focusable="false" data-icon="github" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0 1 38.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z"></path></svg></i></a></li> <!----></ul></nav></div></div> <!----></header> <aside class="sidebar"><!----> <ul class="sidebar-links"><li><a href="/components/" aria-current="page" title="组件" class="sidebar-link">组件</a></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>机器人组件</span> <span class="arrow down"><i aria-label="icon: down" class="anticon anticon-down"><svg viewBox="64 64 896 896" focusable="false" data-icon="down" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"></path></svg></i></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/components/bot/bot-context.html" aria-current="page" title="OneBot 机器人上下文" class="active sidebar-link">OneBot 机器人上下文</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/components/bot/bot-context.html#reply-快速回复消息" title="reply() - 快速回复消息" class="sidebar-link">reply() - 快速回复消息</a></li><li class="sidebar-sub-header"><a href="/components/bot/bot-context.html#sendmessage-发送一条机器人消息" title="sendMessage() - 发送一条机器人消息" class="sidebar-link">sendMessage() - 发送一条机器人消息</a></li><li class="sidebar-sub-header"><a href="/components/bot/bot-context.html#sendaction-发送一个机器人动作" title="sendAction() - 发送一个机器人动作" class="sidebar-link">sendAction() - 发送一个机器人动作</a></li><li class="sidebar-sub-header"><a href="/components/bot/bot-context.html#prompt-等待一条消息回复" title="prompt() - 等待一条消息回复" class="sidebar-link">prompt() - 等待一条消息回复</a></li><li class="sidebar-sub-header"><a href="/components/bot/bot-context.html#promptstring-等待一条消息回复并以字符串格式返回" title="promptString() - 等待一条消息回复并以字符串格式返回" class="sidebar-link">promptString() - 等待一条消息回复并以字符串格式返回</a></li><li class="sidebar-sub-header"><a href="/components/bot/bot-context.html#hasreplied-检查是否已回复" title="hasReplied() - 检查是否已回复" class="sidebar-link">hasReplied() - 检查是否已回复</a></li><li class="sidebar-sub-header"><a href="/components/bot/bot-context.html#getbot-获取其他机器人上下文对象" title="getBot() - 获取其他机器人上下文对象" class="sidebar-link">getBot() - 获取其他机器人上下文对象</a></li><li class="sidebar-sub-header"><a href="/components/bot/bot-context.html#getparam-获取-botcommand-注解解析出来的参数" title="getParam() - 获取 BotCommand 注解解析出来的参数" class="sidebar-link">getParam() - 获取 BotCommand 注解解析出来的参数</a></li><li class="sidebar-sub-header"><a href="/components/bot/bot-context.html#getparamstring-获取-botcommand-注解解析出来的参数字符串" title="getParamString() - 获取 BotCommand 注解解析出来的参数字符串" class="sidebar-link">getParamString() - 获取 BotCommand 注解解析出来的参数字符串</a></li><li class="sidebar-sub-header"><a href="/components/bot/bot-context.html#getparams-获取-botcommand-注解解析出来的所有参数" title="getParams() - 获取 BotCommand 注解解析出来的所有参数" class="sidebar-link">getParams() - 获取 BotCommand 注解解析出来的所有参数</a></li><li class="sidebar-sub-header"><a href="/components/bot/bot-context.html#getself-获取当前上下文的机器人信息" title="getSelf() - 获取当前上下文的机器人信息" class="sidebar-link">getSelf() - 获取当前上下文的机器人信息</a></li></ul></li><li><a href="/components/bot/message-segment.html" title="机器人消息段格式" class="sidebar-link">机器人消息段格式</a></li><li><a href="/components/bot/authorization.html" title="机器人接入鉴权" class="sidebar-link">机器人接入鉴权</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>HTTP 组件</span> <span class="arrow right"><i aria-label="icon: down" class="anticon anticon-down"><svg viewBox="64 64 896 896" focusable="false" data-icon="down" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"></path></svg></i></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>框架通用组件</span> <span class="arrow right"><i aria-label="icon: down" class="anticon anticon-down"><svg viewBox="64 64 896 896" focusable="false" data-icon="down" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"></path></svg></i></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>存储组件</span> <span class="arrow right"><i aria-label="icon: down" class="anticon anticon-down"><svg viewBox="64 64 896 896" focusable="false" data-icon="down" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"></path></svg></i></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>依赖注入组件</span> <span class="arrow right"><i aria-label="icon: down" class="anticon anticon-down"><svg viewBox="64 64 896 896" focusable="false" data-icon="down" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"></path></svg></i></span></p> <!----></section></li></ul> </aside> <main class="page has-page-anchor"> <div class="theme-antdocs-content content__default"><h1 id="onebot-机器人上下文"><a href="#onebot-机器人上下文" class="header-anchor">#</a> OneBot 机器人上下文</h1> <p>在你使用炸毛框架为你的机器人编写逻辑和使用插件时,围绕机器人的核心处理方式为机器人上下文。
|
||
机器人上下文可获取当前机器人事件的其他参数、发起机器人动作请求、互动询问消息等。</p> <p>BotContext 为上下文对象,例如下方的 <code>#[\BotCommand]</code> 事件:</p> <div class="language-php line-numbers-mode"><pre class="language-php"><code><span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content">\<span class="token attribute-class-name class-name">BotCommand</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">match</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'SOS'</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">sos</span><span class="token punctuation">(</span><span class="token class-name class-name-fully-qualified type-declaration"><span class="token punctuation">\</span>BotContext</span> <span class="token variable">$ctx</span><span class="token punctuation">)</span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">reply</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'不许求救!'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><p>关于 BotContext 机器人上下文,如果你不喜欢上方通过参数绑定的依赖注入(DI)形式获取,还可以在相关事件内使用全局函数 <code>bot()</code> 获取:</p> <div class="language-php line-numbers-mode"><pre class="language-php"><code><span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content">\<span class="token attribute-class-name class-name">BotCommand</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">match</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'SOS'</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">sos</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token function">bot</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-></span><span class="token function">reply</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'不许求救!'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><h2 id="reply-快速回复消息"><a href="#reply-快速回复消息" class="header-anchor">#</a> reply() - 快速回复消息</h2> <p>可能是你在编写插件时最常用的方法,用于快速回复消息。</p> <ul><li>定义:<code>reply($message, int $reply_mode = ZM_REPLY_NONE)</code></li> <li>返回:<code>ActionResponse|bool</code></li></ul> <p>参数说明:</p> <ul><li><code>$message</code>:消息内容,可以是字符串或数组,如果是数组,会验证是否为标准的消息段格式。有关消息段格式的说明,见 <a href="/components/bot/message-segment.html">消息段</a>。</li> <li><code>$reply_mode</code>:回复模式,可选值为 <code>ZM_REPLY_NONE</code>、<code>ZM_REPLY_MENTION</code>、<code>ZM_REPLY_QUOTE</code>,默认为 <code>ZM_REPLY_NONE</code>。</li></ul> <p>回复模式说明:</p> <ul><li><code>ZM_REPLY_NONE</code>:仅回复文本本身,直接发送消息。</li> <li><code>ZM_REPLY_MENTION</code>:回复并 @ 消息发送者。</li> <li><code>ZM_REPLY_QUOTE</code>:回复并引用消息。</li></ul> <p>其中 <code>$message</code> 和下方的 <code>sendMessage()</code> 内的 <code>$message</code> 参数格式一致,可参考下方。
|
||
<code>$reply_mode</code> 可以通过 <code>ZM_REPLY_MENTION</code> 和 <code>ZM_REPLY_QUOTE</code> 两个常量来设置,例如:</p> <div class="language-php line-numbers-mode"><pre class="language-php"><code><span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content"><span class="token attribute-class-name class-name">BotCommand</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">match</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'测试at'</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">testAt</span><span class="token punctuation">(</span><span class="token class-name class-name-fully-qualified type-declaration"><span class="token punctuation">\</span>BotContext</span> <span class="token variable">$ctx</span><span class="token punctuation">)</span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">reply</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'测试at回复完成'</span><span class="token punctuation">,</span> <span class="token constant">ZM_REPLY_MENTION</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content"><span class="token attribute-class-name class-name">BotCommand</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">match</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'测试引用'</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">testDefault</span><span class="token punctuation">(</span><span class="token class-name class-name-fully-qualified type-declaration"><span class="token punctuation">\</span>BotContext</span> <span class="token variable">$ctx</span><span class="token punctuation">)</span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">reply</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'测试引用回复完成'</span><span class="token punctuation">,</span> <span class="token constant">ZM_REPLY_QUOTE</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div><div class="doc-chat-container" data-v-76085dc2><div class="doc-chat-content" data-v-76085dc2><div type="0" content="测试at" data-v-76085dc2><div class="doc-chat-row" data-v-76085dc2><div class="doc-chat-box" data-v-76085dc2>测试at</div> <img src="https://zhamao.xin/images/customer_avatar.png" alt class="doc-chat-avatar" data-v-76085dc2></div></div><div type="1" content="@123456 测试at回复完成" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>@123456 测试at回复完成<br data-v-76085dc2></span></div></div></div><div type="0" content="测试引用" data-v-76085dc2><div class="doc-chat-row" data-v-76085dc2><div class="doc-chat-box" data-v-76085dc2>测试引用</div> <img src="https://zhamao.xin/images/customer_avatar.png" alt class="doc-chat-avatar" data-v-76085dc2></div></div><div type="4" quote="测试引用" content="测试引用回复完成" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><div class="doc-chat-box-quote" data-v-76085dc2>测试引用</div> <span data-v-76085dc2>测试引用回复完成<br data-v-76085dc2></span></div></div></div></div></div> <div class="custom-block warning"><p class="custom-block-title">注意</p> <p><code>reply()</code> 只能运用在 <code>BotCommand</code>、<code>BotEvent</code> 的回调事件中,如果你想在其他事件中使用,可以使用 <code>sendMessage()</code> 方法。</p></div> <h2 id="sendmessage-发送一条机器人消息"><a href="#sendmessage-发送一条机器人消息" class="header-anchor">#</a> sendMessage() - 发送一条机器人消息</h2> <p>作为聊天机器人的最主要功能,<code>sendMessage()</code> 方法可以发送一条消息。</p> <ul><li>定义:<code>sendMessage($message, string $detail_type, array $params = [])</code></li> <li>返回:<code>ActionResponse|bool</code></li></ul> <p>参数说明:</p> <ul><li><code>$message</code>:消息内容,可以是字符串或数组,如果是数组,会验证是否为标准的消息段格式。有关消息段格式的说明,见 <a href="/components/bot/message-segment.html">消息段</a>。</li> <li><code>$detail_type</code>:消息类型,可选值为 <code>private</code>、<code>group</code>、<code>channel</code>,分别表示私聊、群聊、频道。如果你的机器人实现端有扩展,也可以使用自定义的消息类型。</li> <li><code>$params</code>:可选参数,用于指定消息的其他参数,例如 <code>group_id</code>、<code>user_id</code> 等。</li> <li><code>ActionResponse|false</code>:如果发送成功,返回一个 <code>ActionResponse</code> 对象,否则返回 <code>false</code>。</li></ul> <div class="custom-block tip"><p class="custom-block-title">提示</p> <p>如果你的 PHP 没有安装 Swoole 扩展且 PHP 版本低于 8.1,那么将无法返回 ActionResponse,只能返回 <code>true</code> 或 <code>false</code>。</p></div> <p>示例:</p> <div class="language-php line-numbers-mode"><pre class="language-php"><code><span class="token comment">// 发送一条私聊消息</span>
|
||
<span class="token variable">$response</span> <span class="token operator">=</span> <span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">sendMessage</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'你好'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'private'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string single-quoted-string">'user_id'</span> <span class="token operator">=></span> <span class="token string single-quoted-string">'123456'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$response</span> <span class="token keyword">instanceof</span> <span class="token class-name class-name-fully-qualified"><span class="token punctuation">\</span>ActionResponse</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
<span class="token comment">// 发送成功</span>
|
||
<span class="token variable">$response</span><span class="token operator">-></span><span class="token property">data</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'message_id'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token comment">// 获取发送的消息 ID</span>
|
||
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
|
||
<span class="token comment">// 发送失败</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token comment">// 发送一条多媒体消息,例如图片</span>
|
||
<span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">sendMessage</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token class-name static-context">MessageSegment</span><span class="token operator">::</span><span class="token function">image</span><span class="token punctuation">(</span><span class="token argument-name">file_id</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'7815696ecbf1c96e6894b779456d330e'</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div><h2 id="sendaction-发送一个机器人动作"><a href="#sendaction-发送一个机器人动作" class="header-anchor">#</a> sendAction() - 发送一个机器人动作</h2> <p><code>sendAction()</code> 方法可以发送一个机器人动作,动作的格式和支持的动作列表详见 <a href="https://12.onebot.dev/interface/" target="_blank" rel="noopener noreferrer">OneBot12 - 接口定义<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>。</p> <ul><li>定义:<code>sendAction(string $action, array $params = [], ?array $self = null)</code></li> <li>返回:<code>ActionResponse|bool</code></li></ul> <p>参数说明:</p> <ul><li><code>$action</code>:动作名称,例如 <code>send_message</code>、<code>get_status</code> 等。</li> <li><code>$params</code>:动作参数,例如 <code>message</code>、<code>user_id</code> 等。</li> <li><code>$self</code>:可选参数,用于指定动作的机器人平台和对应机器人自身 ID,如果不指定,将使用当前上下文机器人的 ID。</li></ul> <p><code>$self</code> 参数仅在连接到炸毛框架的 OneBot 12 实现端需要时有效,例如部分机器人实现端支持多机器人占用一个连接,这时必须指定 <code>self.user_id</code> 和 <code>self.platform</code> 参数。</p> <p>示例:</p> <div class="language-php line-numbers-mode"><pre class="language-php"><code><span class="token comment">// 从实现端获取机器人状态,写入终端日志</span>
|
||
<span class="token variable">$response</span> <span class="token operator">=</span> <span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">sendAction</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'get_status'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$response</span> <span class="token keyword">instanceof</span> <span class="token class-name class-name-fully-qualified"><span class="token punctuation">\</span>ActionResponse</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
<span class="token comment">// 获取成功</span>
|
||
<span class="token variable">$good</span> <span class="token operator">=</span> <span class="token variable">$response</span><span class="token operator">-></span><span class="token property">data</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'good'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token comment">// 获取机器人在线状态</span>
|
||
<span class="token function">logger</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-></span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'机器人状态:'</span> <span class="token operator">.</span> <span class="token punctuation">(</span><span class="token variable">$good</span> <span class="token operator">?</span> <span class="token string single-quoted-string">'在线'</span> <span class="token punctuation">:</span> <span class="token string single-quoted-string">'离线'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
|
||
<span class="token function">logger</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-></span><span class="token function">error</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'获取机器人状态失败'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><div class="custom-block tip"><p class="custom-block-title">提示</p> <p>部分 OneBot 12 实现端支持了较多 OneBot 12 标准以外的扩展动作,这里也可以使用 <code>sendAction()</code> 方法发送这些扩展动作。
|
||
但动作列表需要自行寻找对应实现端的文档进行查询。</p></div> <h2 id="prompt-等待一条消息回复"><a href="#prompt-等待一条消息回复" class="header-anchor">#</a> prompt() - 等待一条消息回复</h2> <p><code>prompt()</code> 方法用处是等待一条用户的回复消息,它会阻塞当前协程,直到用户回复消息或超时。</p> <blockquote><p>此方法仅在 <code>BotCommand</code> 或 <code>BotEvent</code> 内 <code>type</code> 为 <code>message</code> 的上下文中有效,且仅可在协程环境可用时使用。</p></blockquote> <ul><li>定义:<code>prompt($prompt = '', int $timeout = 600, string $timeout_prompt = '', int $option = ZM_PROMPT_NONE)</code></li> <li>返回:<code>MessageSegment[]|string|OneBotEvent</code></li></ul> <p>参数说明:</p> <ul><li><code>$prompt</code>:可选参数,用于指定等待回复时发送的提示消息,如果不指定,将不发送提示消息。</li> <li><code>$timeout</code>:可选参数,用于指定等待回复的超时时间,单位为秒,如果不指定,将使用默认的 600 秒。</li> <li><code>$timeout_prompt</code>:可选参数,用于指定等待回复超时时发送的提示消息,如果不指定,将不发送提示消息。</li> <li><code>$option</code>:可选参数,用于设置 prompt 等待回复提示语句和超时语句的额外选项</li></ul> <p>该函数只会在成功时候返回,如果超时,会抛出一个 <code>WaitTimeoutException</code> 异常,但会被 OneBot 处理器捕获并回复超时消息,使用此功能的开发者无需捕获此异常。</p> <p>额外选项 <code>$option</code> 说明:</p> <ul><li><code>ZM_PROMPT_NONE</code>:不附加任何特性,直接回复原内容(默认)。</li> <li><code>ZM_PROMPT_MENTION_USER</code>:在发送 <code>$prompt</code> 消息时,在消息前添加一个 at 该用户。(如果 <code>$prompt</code> 为空则该参数无效)</li> <li><code>ZM_PROMPT_QUOTE_USER</code>:在发送 <code>$prompt</code> 消息时,引用当前上下文绑定的那条用户消息。(如果 <code>$prompt</code> 为空则该参数无效)</li> <li><code>ZM_PROMPT_TIMEOUT_MENTION_USER</code>:在询问参数超时时,如果超时的消息不为空则在超时的消息前添加一个 at 该用户。</li> <li><code>ZM_PROMPT_TIMEOUT_QUOTE_SELF</code>:在询问参数超时时,如果 <code>$timeout_prompt</code> 和 <code>$prompt</code> 均不为空,则在发送超时提示语时引用自己发送的 <code>$prompt</code> 提示语。</li> <li><code>ZM_PROMPT_TIMEOUT_QUOTE_USER</code>:在询问参数超时时,如果超时的消息不为空则引用用户最开始触发该注解的消息。</li> <li><code>ZM_PROMPT_RETURN_STRING</code>:在获取到询问回复时,该函数返回消息的字符串格式。</li> <li><code>ZM_PROMPT_RETURN_ARRAY</code>:在获取到询问回复时,该函数返回消息的消息段格式(默认)。</li> <li><code>ZM_PROMPT_RETURN_EVENT</code>:在获取到询问回复时,该函数返回消息对应的 OneBotEvent 对象格式。</li></ul> <p>示例:</p> <div class="language-php line-numbers-mode"><pre class="language-php"><code><span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content">\<span class="token attribute-class-name class-name">BotCommand</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">match</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'测试段'</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">testSegment</span><span class="token punctuation">(</span><span class="token class-name class-name-fully-qualified type-declaration"><span class="token punctuation">\</span>BotContext</span> <span class="token variable">$ctx</span><span class="token punctuation">)</span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token comment">// 等待用户回复一条消息</span>
|
||
<span class="token variable">$reply</span> <span class="token operator">=</span> <span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">prompt</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'请回复一条消息'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token comment">// 如果用户回复了消息,那么 reply 将是一个消息段数组</span>
|
||
<span class="token comment">// 如果用户没有回复消息,超时了,那下方的代码不会被执行,此处的事件流程将强制中断</span>
|
||
<span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">reply</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'你回复了:'</span><span class="token punctuation">,</span> <span class="token operator">...</span><span class="token variable">$reply</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
<span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content">\<span class="token attribute-class-name class-name">BotCommand</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">match</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'测试字符串'</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">testString</span><span class="token punctuation">(</span><span class="token class-name class-name-fully-qualified type-declaration"><span class="token punctuation">\</span>BotContext</span> <span class="token variable">$ctx</span><span class="token punctuation">)</span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token comment">// 等待用户回复一条消息</span>
|
||
<span class="token variable">$reply</span> <span class="token operator">=</span> <span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">promptString</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'请回复一条消息'</span><span class="token punctuation">,</span> <span class="token number">600</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'你超时了'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token comment">// 如果用户回复了消息,那么 reply 将是一个字符串</span>
|
||
<span class="token comment">// 如果用户没有回复消息,超时了,那下方的代码不会被执行,此处的事件流程将强制中断</span>
|
||
<span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">reply</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'你回复了:'</span> <span class="token operator">.</span> <span class="token variable">$reply</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token variable">$reply2</span> <span class="token operator">=</span> <span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">prompt</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'请再回复一条消息'</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'你又超时了'</span><span class="token punctuation">,</span> <span class="token class-name">ZM_PROMPT_RETURN_STRING</span> <span class="token operator">|</span> <span class="token class-name">ZM_PROMPT_TIMEOUT_QUOTE_SELF</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br></div></div><div class="doc-chat-container" data-v-76085dc2><div class="doc-chat-content" data-v-76085dc2><div type="0" content="测试段" data-v-76085dc2><div class="doc-chat-row" data-v-76085dc2><div class="doc-chat-box" data-v-76085dc2>测试段</div> <img src="https://zhamao.xin/images/customer_avatar.png" alt class="doc-chat-avatar" data-v-76085dc2></div></div><div type="1" content="请回复一条消息" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>请回复一条消息<br data-v-76085dc2></span></div></div></div><div type="0" content="test" data-v-76085dc2><div class="doc-chat-row" data-v-76085dc2><div class="doc-chat-box" data-v-76085dc2>test</div> <img src="https://zhamao.xin/images/customer_avatar.png" alt class="doc-chat-avatar" data-v-76085dc2></div></div><div type="1" content="你回复了:test" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>你回复了:test<br data-v-76085dc2></span></div></div></div><div type="0" content="测试字符串" data-v-76085dc2><div class="doc-chat-row" data-v-76085dc2><div class="doc-chat-box" data-v-76085dc2>测试字符串</div> <img src="https://zhamao.xin/images/customer_avatar.png" alt class="doc-chat-avatar" data-v-76085dc2></div></div><div type="1" content="请回复一条消息" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>请回复一条消息<br data-v-76085dc2></span></div></div></div><div type="2" content="等待 600 秒以上" data-v-76085dc2><div class="doc-chat-row doc-chat-banner" data-v-76085dc2>
|
||
等待 600 秒以上
|
||
</div></div><div type="1" content="你超时了" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>你超时了<br data-v-76085dc2></span></div></div></div><div type="0" content="测试字符串" data-v-76085dc2><div class="doc-chat-row" data-v-76085dc2><div class="doc-chat-box" data-v-76085dc2>测试字符串</div> <img src="https://zhamao.xin/images/customer_avatar.png" alt class="doc-chat-avatar" data-v-76085dc2></div></div><div type="1" content="请回复一条消息" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>请回复一条消息<br data-v-76085dc2></span></div></div></div><div type="0" content="abab" data-v-76085dc2><div class="doc-chat-row" data-v-76085dc2><div class="doc-chat-box" data-v-76085dc2>abab</div> <img src="https://zhamao.xin/images/customer_avatar.png" alt class="doc-chat-avatar" data-v-76085dc2></div></div><div type="1" content="你回复了:abab" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>你回复了:abab<br data-v-76085dc2></span></div></div></div><div type="1" content="请再回复一条消息" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>请再回复一条消息<br data-v-76085dc2></span></div></div></div><div type="2" content="等待 30 秒以上" data-v-76085dc2><div class="doc-chat-row doc-chat-banner" data-v-76085dc2>
|
||
等待 30 秒以上
|
||
</div></div><div type="4" quote="请再回复一条消息" content="你又超时了" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><div class="doc-chat-box-quote" data-v-76085dc2>请再回复一条消息</div> <span data-v-76085dc2>你又超时了<br data-v-76085dc2></span></div></div></div></div></div> <h2 id="promptstring-等待一条消息回复并以字符串格式返回"><a href="#promptstring-等待一条消息回复并以字符串格式返回" class="header-anchor">#</a> promptString() - 等待一条消息回复并以字符串格式返回</h2> <p>该方法参数完全等同 <code>prompt()</code>,只是在返回的值方面,此方法会返回 string 类型,等同于 <code>$option</code> 参数设置了 <code>ZM_PROMPT_RETURN_STRING</code> 参数。</p> <h2 id="hasreplied-检查是否已回复"><a href="#hasreplied-检查是否已回复" class="header-anchor">#</a> hasReplied() - 检查是否已回复</h2> <p><code>hasReplied()</code> 方法用处是检查当前事件是否已经回复过消息,如果已经回复过消息(即调用过 <code>reply()</code>),那么这里将返回 <code>true</code>,否则返回 <code>false</code>。</p> <ul><li>定义:<code>hasReplied()</code></li> <li>返回:<code>bool</code></li></ul> <p>示例:</p> <div class="language-php line-numbers-mode"><pre class="language-php"><code><span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content">\<span class="token attribute-class-name class-name">BotCommand</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">match</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'测试消息'</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">testMsg</span><span class="token punctuation">(</span><span class="token class-name class-name-fully-qualified type-declaration"><span class="token punctuation">\</span>BotContext</span> <span class="token variable">$ctx</span><span class="token punctuation">)</span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">reply</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'这是一条消息'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token comment">// 检查是否已经回复过消息</span>
|
||
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">hasReplied</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||
<span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">reply</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'已经回复过消息了'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
|
||
<span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">reply</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'还没有回复过消息'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div><div class="doc-chat-container" data-v-76085dc2><div class="doc-chat-content" data-v-76085dc2><div type="0" content="测试消息" data-v-76085dc2><div class="doc-chat-row" data-v-76085dc2><div class="doc-chat-box" data-v-76085dc2>测试消息</div> <img src="https://zhamao.xin/images/customer_avatar.png" alt class="doc-chat-avatar" data-v-76085dc2></div></div><div type="1" content="这是一条消息" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>这是一条消息<br data-v-76085dc2></span></div></div></div><div type="1" content="已经回复过消息了" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>已经回复过消息了<br data-v-76085dc2></span></div></div></div></div></div> <h2 id="getbot-获取其他机器人上下文对象"><a href="#getbot-获取其他机器人上下文对象" class="header-anchor">#</a> getBot() - 获取其他机器人上下文对象</h2> <p><code>getBot()</code> 方法用处是获取其他机器人的上下文,这里的“其他机器人”是指同时连接到框架的其他 OneBot 12 实现端的上下文。</p> <p>例如你使用了两个 Walle-Q 连接到框架,机器人 QQ 号分别为 123 和 456,你在 123 机器人的上下文中要获取 456 机器人的上下文:</p> <div class="language-php line-numbers-mode"><pre class="language-php"><code><span class="token variable">$another_ctx</span> <span class="token operator">=</span> <span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">getBot</span><span class="token punctuation">(</span><span class="token argument-name">bot_id</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'456'</span><span class="token punctuation">,</span> <span class="token argument-name">platform</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'qq'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><ul><li>定义:<code>getBot(string $bot_id, string $platform = '')</code></li> <li>返回:<code>\BotContext</code></li></ul> <h2 id="getparam-获取-botcommand-注解解析出来的参数"><a href="#getparam-获取-botcommand-注解解析出来的参数" class="header-anchor">#</a> getParam() - 获取 BotCommand 注解解析出来的参数</h2> <p><code>getParam()</code> 方法用处是获取 BotCommand 和 CommandArgument 注解解析出来的参数,这里的“参数”是指 BotCommand 注解的 <code>param</code> 属性。</p> <ul><li>定义:<code>getParam(string $name)</code></li> <li>返回:<code>MessageSegment[]|string|null</code></li></ul> <p>参数 <code>$name</code> 是参数名,如果参数不存在,将返回 <code>null</code>。</p> <p>由 CommandArgument 注解解析出来的参数,且 <code>required</code> 为 <code>true</code>,则对应名字的 param 必定会存在,可以通过对应 CommandArgument 绑定的名字来获取,例如:</p> <div class="language-php line-numbers-mode"><pre class="language-php"><code><span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content">\<span class="token attribute-class-name class-name">BotCommand</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">match</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'测试参数'</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content">\<span class="token attribute-class-name class-name">CommandArgument</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">name</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'param1'</span><span class="token punctuation">,</span> <span class="token attribute-class-name class-name">type</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'string'</span><span class="token punctuation">,</span> <span class="token attribute-class-name class-name">required</span><span class="token punctuation">:</span> <span class="token attribute-class-name class-name">true</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">testParam</span><span class="token punctuation">(</span><span class="token class-name class-name-fully-qualified type-declaration"><span class="token punctuation">\</span>BotContext</span> <span class="token variable">$ctx</span><span class="token punctuation">)</span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">reply</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'参数1:'</span><span class="token punctuation">,</span> <span class="token operator">...</span><span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">getParam</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'param1'</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><div class="doc-chat-container" data-v-76085dc2><div class="doc-chat-content" data-v-76085dc2><div type="0" content="测试参数" data-v-76085dc2><div class="doc-chat-row" data-v-76085dc2><div class="doc-chat-box" data-v-76085dc2>测试参数</div> <img src="https://zhamao.xin/images/customer_avatar.png" alt class="doc-chat-avatar" data-v-76085dc2></div></div><div type="1" content="请输入param1" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>请输入param1<br data-v-76085dc2></span></div></div></div><div type="0" content="test" data-v-76085dc2><div class="doc-chat-row" data-v-76085dc2><div class="doc-chat-box" data-v-76085dc2>test</div> <img src="https://zhamao.xin/images/customer_avatar.png" alt class="doc-chat-avatar" data-v-76085dc2></div></div><div type="1" content="参数1:test" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>参数1:test<br data-v-76085dc2></span></div></div></div><div type="0" content="测试参数 test123" data-v-76085dc2><div class="doc-chat-row" data-v-76085dc2><div class="doc-chat-box" data-v-76085dc2>测试参数 test123</div> <img src="https://zhamao.xin/images/customer_avatar.png" alt class="doc-chat-avatar" data-v-76085dc2></div></div><div type="1" content="参数1:test123" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>参数1:test123<br data-v-76085dc2></span></div></div></div></div></div> <p>如果你没有使用 CommandArgument 绑定参数或想获取更多参数,可以使用 <code>getParam('.unnamed')</code> 方法,这样会返回所有未绑定的参数:</p> <div class="language-php line-numbers-mode"><pre class="language-php"><code><span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content">\<span class="token attribute-class-name class-name">BotCommand</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">match</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'测试参数'</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content">\<span class="token attribute-class-name class-name">CommandArgument</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">name</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'param1'</span><span class="token punctuation">,</span> <span class="token attribute-class-name class-name">type</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'string'</span><span class="token punctuation">,</span> <span class="token attribute-class-name class-name">required</span><span class="token punctuation">:</span> <span class="token attribute-class-name class-name">true</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">testParam</span><span class="token punctuation">(</span><span class="token class-name class-name-fully-qualified type-declaration"><span class="token punctuation">\</span>BotContext</span> <span class="token variable">$ctx</span><span class="token punctuation">)</span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">reply</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'参数1:'</span><span class="token punctuation">,</span> <span class="token operator">...</span><span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">getParam</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'param1'</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">reply</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'未命名参数列表:['</span> <span class="token operator">.</span> <span class="token function">implode</span><span class="token punctuation">(</span><span class="token string single-quoted-string">', '</span><span class="token punctuation">,</span> <span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">getParam</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'.unnamed'</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">.</span> <span class="token string single-quoted-string">']'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><div class="doc-chat-container" data-v-76085dc2><div class="doc-chat-content" data-v-76085dc2><div type="0" content="测试参数 abc def ghhaha 你好" data-v-76085dc2><div class="doc-chat-row" data-v-76085dc2><div class="doc-chat-box" data-v-76085dc2>测试参数 abc def ghhaha 你好</div> <img src="https://zhamao.xin/images/customer_avatar.png" alt class="doc-chat-avatar" data-v-76085dc2></div></div><div type="1" content="参数1:abc" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>参数1:abc<br data-v-76085dc2></span></div></div></div><div type="1" content="未命名参数列表:[def, ghhaha, 你好]" data-v-76085dc2><div class="doc-chat-row doc-chat-row-robot" data-v-76085dc2><img src="https://docs-v1.zhamao.xin/logo.png" alt class="doc-chat-avatar" data-v-76085dc2> <div class="doc-chat-box doc-chat-box-robot" data-v-76085dc2><span data-v-76085dc2>未命名参数列表:[def, ghhaha, 你好]<br data-v-76085dc2></span></div></div></div></div></div> <h2 id="getparamstring-获取-botcommand-注解解析出来的参数字符串"><a href="#getparamstring-获取-botcommand-注解解析出来的参数字符串" class="header-anchor">#</a> getParamString() - 获取 BotCommand 注解解析出来的参数字符串</h2> <p><code>getParamString()</code> 功能和 <code>getParam()</code> 完全一样,参数也一模一样,不一样的地方在于这个方法返回的参数都是字符串,而 <code>getParam()</code> 返回的是 MessageSegment 数组。</p> <p>一般用于不在意用户返回的其他富文本参数,只需要字符串参数的情况。</p> <ul><li>定义:<code>getParamString(string $name)</code></li> <li>返回:<code>string|null</code></li></ul> <h2 id="getparams-获取-botcommand-注解解析出来的所有参数"><a href="#getparams-获取-botcommand-注解解析出来的所有参数" class="header-anchor">#</a> getParams() - 获取 BotCommand 注解解析出来的所有参数</h2> <p><code>getParams()</code> 方法用处是获取 BotCommand 注解解析出来的所有参数,这里的“参数”是指 BotCommand 注解的 <code>param</code> 属性。</p> <ul><li>定义:<code>getParams()</code></li> <li>返回:<code>array</code></li></ul> <div class="language-php line-numbers-mode"><pre class="language-php"><code><span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content">\<span class="token attribute-class-name class-name">BotCommand</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">match</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'测试参数'</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token attribute"><span class="token delimiter punctuation">#[</span><span class="token attribute-content">\<span class="token attribute-class-name class-name">CommandArgument</span><span class="token punctuation">(</span><span class="token attribute-class-name class-name">name</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'param1'</span><span class="token punctuation">,</span> <span class="token attribute-class-name class-name">type</span><span class="token punctuation">:</span> <span class="token string single-quoted-string">'string'</span><span class="token punctuation">,</span> <span class="token attribute-class-name class-name">required</span><span class="token punctuation">:</span> <span class="token attribute-class-name class-name">true</span><span class="token punctuation">)</span></span><span class="token delimiter punctuation">]</span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">testParam</span><span class="token punctuation">(</span><span class="token class-name class-name-fully-qualified type-declaration"><span class="token punctuation">\</span>BotContext</span> <span class="token variable">$ctx</span><span class="token punctuation">)</span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token function">logger</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-></span><span class="token function">info</span><span class="token punctuation">(</span><span class="token function">json_encode</span><span class="token punctuation">(</span><span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">getParams</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token constant">JSON_PRETTY_PRINT</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token comment">// 假设询问内容为“测试参数 abc def”,返回结果:</span>
|
||
<span class="token comment">/*
|
||
{
|
||
"param1":[{"type":"text","data":{"text":"abc"}}],
|
||
".unnamed":[{"type":"text","data":{"text":"def"}}]
|
||
}
|
||
*/</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div><h2 id="getself-获取当前上下文的机器人信息"><a href="#getself-获取当前上下文的机器人信息" class="header-anchor">#</a> getSelf() - 获取当前上下文的机器人信息</h2> <ul><li>定义:<code>getSelf()</code></li> <li>返回:<code>array</code></li></ul> <div class="language-php line-numbers-mode"><pre class="language-php"><code><span class="token variable">$self</span> <span class="token operator">=</span> <span class="token variable">$ctx</span><span class="token operator">-></span><span class="token function">getSelf</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token comment">// 返回:["user_id" => "123456", "platform" => "qq"]</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div></div> <footer class="page-edit"><div class="edit-link"><a href="https://github.com/zhamao-robot/zhamao-framework/edit/main/docs/components/bot/bot-context.md" target="_blank" rel="noopener noreferrer">Edit this page</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev"><a href="/components/" class="prev router-link-active"><i aria-label="icon: left" class="anticon anticon-left"><svg viewBox="64 64 896 896" focusable="false" data-icon="left" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 0 0 0 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z"></path></svg></i>
|
||
组件
|
||
</a></span> <span class="next"><a href="/components/bot/message-segment.html">
|
||
机器人消息段格式
|
||
<i aria-label="icon: right" class="anticon anticon-right"><svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 0 0 302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 0 0 0-50.4z"></path></svg></i></a></span></p></div> <div class="page-anchor"><div class="ant-space ant-space-vertical" style="width:100%;"><div class="ant-space-item"><div class="page-anchor-offset"><div><div class="ant-anchor-wrapper" style="max-height:100vh;"><div class="ant-anchor"><div class="ant-anchor-ink"><span class="ant-anchor-ink-ball"></span></div><div class="ant-anchor-link"><a href="#reply-快速回复消息" title="reply() - 快速回复消息" class="ant-anchor-link-title">reply() - 快速回复消息</a></div><div class="ant-anchor-link"><a href="#sendmessage-发送一条机器人消息" title="sendMessage() - 发送一条机器人消息" class="ant-anchor-link-title">sendMessage() - 发送一条机器人消息</a></div><div class="ant-anchor-link"><a href="#sendaction-发送一个机器人动作" title="sendAction() - 发送一个机器人动作" class="ant-anchor-link-title">sendAction() - 发送一个机器人动作</a></div><div class="ant-anchor-link"><a href="#prompt-等待一条消息回复" title="prompt() - 等待一条消息回复" class="ant-anchor-link-title">prompt() - 等待一条消息回复</a></div><div class="ant-anchor-link"><a href="#promptstring-等待一条消息回复并以字符串格式返回" title="promptString() - 等待一条消息回复并以字符串格式返回" class="ant-anchor-link-title">promptString() - 等待一条消息回复并以字符串格式返回</a></div><div class="ant-anchor-link"><a href="#hasreplied-检查是否已回复" title="hasReplied() - 检查是否已回复" class="ant-anchor-link-title">hasReplied() - 检查是否已回复</a></div><div class="ant-anchor-link"><a href="#getbot-获取其他机器人上下文对象" title="getBot() - 获取其他机器人上下文对象" class="ant-anchor-link-title">getBot() - 获取其他机器人上下文对象</a></div><div class="ant-anchor-link"><a href="#getparam-获取-botcommand-注解解析出来的参数" title="getParam() - 获取 BotCommand 注解解析出来的参数" class="ant-anchor-link-title">getParam() - 获取 BotCommand 注解解析出来的参数</a></div><div class="ant-anchor-link"><a href="#getparamstring-获取-botcommand-注解解析出来的参数字符串" title="getParamString() - 获取 BotCommand 注解解析出来的参数字符串" class="ant-anchor-link-title">getParamString() - 获取 BotCommand 注解解析出来的参数字符串</a></div><div class="ant-anchor-link"><a href="#getparams-获取-botcommand-注解解析出来的所有参数" title="getParams() - 获取 BotCommand 注解解析出来的所有参数" class="ant-anchor-link-title">getParams() - 获取 BotCommand 注解解析出来的所有参数</a></div><div class="ant-anchor-link"><a href="#getself-获取当前上下文的机器人信息" title="getSelf() - 获取当前上下文的机器人信息" class="ant-anchor-link-title">getSelf() - 获取当前上下文的机器人信息</a></div></div></div></div></div></div></div></div> </main> <!----></div><div class="global-ui"></div></div>
|
||
<script src="/assets/js/app.cf958133.js" defer></script><script src="/assets/js/2.4c04991c.js" defer></script><script src="/assets/js/1.d8755a39.js" defer></script><script src="/assets/js/29.5427ad45.js" defer></script><script src="/assets/js/18.26c46c49.js" defer></script>
|
||
</body>
|
||
</html> |