mirror of
https://github.com/zhamao-robot/zhamao-framework.git
synced 2026-03-17 20:54:52 +08:00
1 line
34 KiB
JavaScript
1 line
34 KiB
JavaScript
(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{758:function(t,s,a){"use strict";a.r(s);var n=a(84),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"机器人事件"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#机器人事件"}},[t._v("#")]),t._v(" 机器人事件")]),t._v(" "),s("aside",[t._v("\n🛰️ 此页面下的所有注解命名空间为 `ZM\\Annotation\\OneBot`\n")]),t._v(" "),s("blockquote",[s("p",[t._v("在使用注解绑定事件时,如果不存在 "),s("strong",[t._v("必需")]),t._v(" 参数,可一个参数都不写,效果就是此事件在任何情况下都会调用此方法,例如 "),s("code",[t._v("#[BotEvent()]")]),t._v(" 会在收到任意机器人事件时调用。")])]),t._v(" "),s("h2",{attrs:{id:"botaction"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#botaction"}},[t._v("#")]),t._v(" BotAction")]),t._v(" "),s("p",[t._v("BotAction 注解将在 OneBot 12 标准的动作发送前会触发,体现在代码层面就是在使用机器人上下文 "),s("code",[t._v("ctx()->sendAction()")]),t._v(" 方法时会触发。")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("参数名称")]),t._v(" "),s("th",[t._v("允许值")]),t._v(" "),s("th",[t._v("用途")]),t._v(" "),s("th",[t._v("默认")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("action")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("动作名称")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("need_response")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("动作是否需要响应")]),t._v(" "),s("td",[t._v("false")])]),t._v(" "),s("tr",[s("td",[t._v("level")]),t._v(" "),s("td",[t._v("int")]),t._v(" "),s("td",[t._v("事件优先级(越大越先执行)")]),t._v(" "),s("td",[t._v("20")])])])]),t._v(" "),s("p",[t._v("举例一,你可以通过设置一个 BotAction 注解事件,来收集和统计所有机器人发出的消息、执行的动作:")]),t._v(" "),s("div",{staticClass:"language-php line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-php"}},[s("code",[s("span",{pre:!0,attrs:{class:"token attribute"}},[s("span",{pre:!0,attrs:{class:"token delimiter punctuation"}},[t._v("#[")]),s("span",{pre:!0,attrs:{class:"token attribute-content"}},[s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("BotAction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])]),s("span",{pre:!0,attrs:{class:"token delimiter punctuation"}},[t._v("]")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function-definition function"}},[t._v("onBotAction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name class-name-fully-qualified type-declaration"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("OneBot"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("V12"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("Action")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$action")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("logger")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("info")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'机器人执行了动作:'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$action")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("action")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br")])]),s("p",[t._v("举例二,你可以通过设置 BotAction 注解的限定参数来限定捕获触发的动作事件:")]),t._v(" "),s("div",{staticClass:"language-php line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-php"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 限定只获取 send_message 动作的触发")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token attribute"}},[s("span",{pre:!0,attrs:{class:"token delimiter punctuation"}},[t._v("#[")]),s("span",{pre:!0,attrs:{class:"token attribute-content"}},[s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("BotAction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("action")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'send_message'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])]),s("span",{pre:!0,attrs:{class:"token delimiter punctuation"}},[t._v("]")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function-definition function"}},[t._v("onSendMessage")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name class-name-fully-qualified type-declaration"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("OneBot"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("V12"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("Action")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$action")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("logger")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("info")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'机器人发送了消息:'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name class-name-fully-qualified static-context"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("ZM"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("Utils"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("MessageUtil")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("::")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAltMessage")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$action")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("params")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'message'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br")])]),s("p",[t._v("举例三,你可以通过 "),s("code",[t._v("need_response")]),t._v(" 参数来限定 BotAction 触发的时机。默认情况下,BotAction 在调用 "),s("code",[t._v("ctx()->sendAction()")]),t._v(" 后立刻触发,\n如果限定 "),s("code",[t._v("need_response: true")]),t._v(",该事件将会在动作收到响应后再触发,届时你可以通过依赖注入的方式,获取 ActionResponse 对象:")]),t._v(" "),s("div",{staticClass:"language-php line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-php"}},[s("code",[s("span",{pre:!0,attrs:{class:"token attribute"}},[s("span",{pre:!0,attrs:{class:"token delimiter punctuation"}},[t._v("#[")]),s("span",{pre:!0,attrs:{class:"token attribute-content"}},[s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("BotAction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("need_response")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])]),s("span",{pre:!0,attrs:{class:"token delimiter punctuation"}},[t._v("]")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function-definition function"}},[t._v("onActionWithResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name class-name-fully-qualified type-declaration"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("OneBot"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("V12"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("Action")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$action")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name class-name-fully-qualified type-declaration"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("OneBot"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("V12"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("ActionResponse")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$response")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("logger")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("info")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'机器人发送了动作:'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$action")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("action")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("',并且返回状态码为 '")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$response")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("retcode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br")])]),s("h2",{attrs:{id:"botactionresponse"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#botactionresponse"}},[t._v("#")]),t._v(" BotActionResponse")]),t._v(" "),s("p",[t._v("BoActionResponse 注解将在 OneBot 12 标准的动作发出,并收到了合法的响应内容时触发。")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("参数名称")]),t._v(" "),s("th",[t._v("允许值")]),t._v(" "),s("th",[t._v("用途")]),t._v(" "),s("th",[t._v("默认")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("status")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("用于限定成功与否的状态")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("retcode")]),t._v(" "),s("td",[t._v("int")]),t._v(" "),s("td",[t._v("响应码")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("level")]),t._v(" "),s("td",[t._v("int")]),t._v(" "),s("td",[t._v("事件优先级(越大越先执行)")]),t._v(" "),s("td",[t._v("20")])])])]),t._v(" "),s("p",[t._v("举例一,你需要获取所有响应不成功的动作,则只需设置 status 为 failed 即可:")]),t._v(" "),s("div",{staticClass:"language-php line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-php"}},[s("code",[s("span",{pre:!0,attrs:{class:"token attribute"}},[s("span",{pre:!0,attrs:{class:"token delimiter punctuation"}},[t._v("#[")]),s("span",{pre:!0,attrs:{class:"token attribute-content"}},[s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("BotActionResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("status")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'failed'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])]),s("span",{pre:!0,attrs:{class:"token delimiter punctuation"}},[t._v("]")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function-definition function"}},[t._v("onFailedResponse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name class-name-fully-qualified type-declaration"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("OneBot"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("V12"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("Object"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("ActionResponse")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$response")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("logger")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'动作请求失败,错误码:'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$response")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("retcode")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("',错误消息:'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$response")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("message")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br")])]),s("p",[t._v("如果你的机器日代码逻辑更偏向于关注单个动作请求的成功与否,\n这里其实更推荐使用上方的 "),s("code",[t._v("BotAction")]),t._v(" 注解,并采用 "),s("code",[t._v("need_response: true")]),t._v(" 参数,这样可以同时使用 Action 和 ActionResponse 对象。")]),t._v(" "),s("h2",{attrs:{id:"botevent"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#botevent"}},[t._v("#")]),t._v(" BotEvent")]),t._v(" "),s("p",[t._v("用于处理所有的机器人事件,具体的参数含义可以参见 "),s("a",{attrs:{href:"https://12.onebot.dev/connect/data-protocol/event/",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://12.onebot.dev/connect/data-protocol/event/"),s("OutboundLink")],1),t._v("。")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("参数名称")]),t._v(" "),s("th",[t._v("允许值")]),t._v(" "),s("th",[t._v("用途")]),t._v(" "),s("th",[t._v("默认")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("type")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("对应标准中的事件类型")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("detail_type")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("对应标准中的事件详细类型")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("sub_type")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("对应标准中的事件子类型")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("level")]),t._v(" "),s("td",[t._v("int")]),t._v(" "),s("td",[t._v("事件优先级(越大越先执行)")]),t._v(" "),s("td",[t._v("20")])])])]),t._v(" "),s("p",[t._v("除了 level 外的参数,均可做限定事件内容的参数。")]),t._v(" "),s("p",[t._v("举例一,你想写一个事件注解绑定的方法,但只获取 "),s("code",[t._v("type")]),t._v(" 为 "),s("code",[t._v("notice")]),t._v(" 消息类的事件:")]),t._v(" "),s("div",{staticClass:"language-php line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-php"}},[s("code",[s("span",{pre:!0,attrs:{class:"token attribute"}},[s("span",{pre:!0,attrs:{class:"token delimiter punctuation"}},[t._v("#[")]),s("span",{pre:!0,attrs:{class:"token attribute-content"}},[s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("BotEvent")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'notice'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])]),s("span",{pre:!0,attrs:{class:"token delimiter punctuation"}},[t._v("]")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function-definition function"}},[t._v("onNotice")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name type-declaration"}},[t._v("BotContext")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$ctx")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name type-declaration"}},[t._v("OneBotEvent")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$event")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("logger")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("info")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'收到了机器人 '")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$event")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("self")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'user_id'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("' 的通知事件,子类型为 '")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$event")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v("detail_type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br")])]),s("p",[t._v("举例二,你想限定获取群所有群消息,通过设置 "),s("code",[t._v("type")]),t._v("、"),s("code",[t._v("detail_type")]),t._v(" 两个参数组合来获取:")]),t._v(" "),s("div",{staticClass:"language-php line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-php"}},[s("code",[s("span",{pre:!0,attrs:{class:"token attribute"}},[s("span",{pre:!0,attrs:{class:"token delimiter punctuation"}},[t._v("#[")]),s("span",{pre:!0,attrs:{class:"token attribute-content"}},[s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("BotEvent")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'message'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token attribute-class-name class-name"}},[t._v("detail_type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'group'")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")])]),s("span",{pre:!0,attrs:{class:"token delimiter punctuation"}},[t._v("]")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("public")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function-definition function"}},[t._v("onGroupMessage")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name type-declaration"}},[t._v("OneBotEvent")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$event")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// getAltMessage() 为返回一个终端可读的展示型文本,非消息原文")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("logger")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("info")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("'来自群组 '")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$event")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getGroupId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("':'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$event")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getUserId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string single-quoted-string"}},[t._v("' 的消息:'")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(".")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$event")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("->")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAltMessage")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br"),s("span",{staticClass:"line-number"},[t._v("6")]),s("br")])]),s("h2",{attrs:{id:"botcommand"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#botcommand"}},[t._v("#")]),t._v(" BotCommand")]),t._v(" "),s("p",[t._v("对于 "),s("code",[t._v("BotEvent")]),t._v(" 的封装,用于支持常用的命令式调用(如:”天气 深圳”)。")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("参数名称")]),t._v(" "),s("th",[t._v("允许值")]),t._v(" "),s("th",[t._v("用途")]),t._v(" "),s("th",[t._v("默认")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("name")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("命令名称,应全局唯一")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("match")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("匹配第一个词的命令式消息,如 天气 北京 中的 天气")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("pattern")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("根据 * 号通配符进行模式匹配用户消息,如 查询*天气")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("regex")]),t._v(" "),s("td",[t._v("string 合法的正则表达式")]),t._v(" "),s("td",[t._v("匹配正则表达式匹配到的用户消息")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("start_with")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("匹配消息开头相匹配的消息,如 我叫炸毛,这里写 我叫")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("end_with")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("匹配消息结尾相匹配的消息,以 start_with 类推")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("keyword")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("匹配消息中有相关关键词的消息")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("alias")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("match 匹配到命令的别名,数组形式")]),t._v(" "),s("td",[t._v("[]")])]),t._v(" "),s("tr",[s("td",[t._v("detail_type")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("限定消息事件的详细类型,见 BotEvent")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("prefix")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td"),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("level")]),t._v(" "),s("td",[t._v("int")]),t._v(" "),s("td",[t._v("事件优先级(越大越先执行)")]),t._v(" "),s("td",[t._v("20")])])])]),t._v(" "),s("blockquote",[s("p",[t._v("机器人命令注册的实例可参见【一堆例子链接】")])]),t._v(" "),s("h2",{attrs:{id:"commandargument"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#commandargument"}},[t._v("#")]),t._v(" CommandArgument")]),t._v(" "),s("p",[t._v("与 BotCommand 搭配使用,可以自动识别参数及生成帮助。")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("参数名称")]),t._v(" "),s("th",[t._v("允许值")]),t._v(" "),s("th",[t._v("用途")]),t._v(" "),s("th",[t._v("默认")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("name")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("参数名称")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("description")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("参数描述")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("required")]),t._v(" "),s("td",[t._v("bool")]),t._v(" "),s("td",[t._v("参数是否必需")]),t._v(" "),s("td",[t._v("false")])]),t._v(" "),s("tr",[s("td",[t._v("prompt")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("当参数缺失时请求用户输入时提示的消息(需要参数设为必需)")]),t._v(" "),s("td",[t._v("“请输入{$name}”")])]),t._v(" "),s("tr",[s("td",[t._v("default")]),t._v(" "),s("td",[t._v("mixed")]),t._v(" "),s("td",[t._v("当参数非必需且未填入时的默认值")]),t._v(" "),s("td",[t._v("null")])]),t._v(" "),s("tr",[s("td",[t._v("timeout")]),t._v(" "),s("td",[t._v("int 单位秒")]),t._v(" "),s("td",[t._v("请求输入超时时间")]),t._v(" "),s("td",[t._v("60")])])])]),t._v(" "),s("h2",{attrs:{id:"commandhelp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#commandhelp"}},[t._v("#")]),t._v(" CommandHelp")]),t._v(" "),s("p",[t._v("与 BotCommand 搭配使用,可以补充生成的帮助信息。")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("参数名称")]),t._v(" "),s("th",[t._v("允许值")]),t._v(" "),s("th",[t._v("用途")]),t._v(" "),s("th",[t._v("默认")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("description")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("命令描述")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("usage")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("命令用法")]),t._v(" "),s("td",[t._v("“”")])]),t._v(" "),s("tr",[s("td",[t._v("example")]),t._v(" "),s("td",[t._v("string")]),t._v(" "),s("td",[t._v("命令示例")]),t._v(" "),s("td",[t._v("“”")])])])]),t._v(" "),s("blockquote",[s("p",[t._v("关于自动帮助生成的更多信息,请参见 【这里链接】")])])])}),[],!1,null,null,null);s.default=e.exports}}]); |