zhamao-framework/assets/js/46.732b1cef.js
2024-09-19 08:29:13 +00:00

1 line
34 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

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

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(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}}]);